From 756ab9cd6e56671ae169dd42d8f0f462cbc1488a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20G=C3=A1lvez?= Date: Mon, 3 Jan 2011 08:10:50 +0000 Subject: [PATCH] Moved source_fa into trunk --- .../FireBee/Flash/BaS_15_12_10.S19 | 362 + .../FireBee/Flash/BaS_15_12_10.zip | Bin 0 -> 7354 bytes BaS_codewarrior/FireBee/Flash/emutos2.s19 | 23921 ++++++++ .../FireBee/Flash/firebee_fpga_15_12_10.rbf | Bin 0 -> 428953 bytes .../FireBee/Flash/firebee_fpga_15_12_10.zip | Bin 0 -> 192203 bytes .../FireBee/Flash/firetos_firebee.hex | 45217 ++++++++++++++++ .../FireBee/MLAB/firebee1/Makefile | 19 + .../FireBee/MLAB/firebee1/NMakefile | 19 + .../FireBee/MLAB/firebee1/PS2Atari_v1_4.asm | 619 + .../FireBee/MLAB/firebee1/Thumbs.db | Bin 0 -> 22528 bytes .../FireBee/MLAB/firebee1/circuit.bmp | Bin 0 -> 32062 bytes .../FireBee/MLAB/firebee1/firebee1.asm | 845 + .../FireBee/MLAB/firebee1/firebee1.cof | Bin 0 -> 13640 bytes .../FireBee/MLAB/firebee1/firebee1.err | 0 .../FireBee/MLAB/firebee1/firebee1.hex | 82 + .../FireBee/MLAB/firebee1/firebee1.lst | 1979 + .../FireBee/MLAB/firebee1/firebee1.map | 188 + .../FireBee/MLAB/firebee1/firebee1.mcp | 53 + .../FireBee/MLAB/firebee1/firebee1.mcs | 71 + .../FireBee/MLAB/firebee1/firebee1.mcw | Bin 0 -> 33280 bytes .../FireBee/MLAB/firebee1/firebeei1.map | 156 + .../FireBee/MLAB/firebee1/readme.txt | 125 + .../trunk/usb/store/asm-m68k/byteorder.h | 107 + .../usb/store/asm-m68k/byteorder/big_endian.h | 69 + .../usb/store/asm-m68k/byteorder/generic.h | 180 + .../store/asm-m68k/byteorder/little_endian.h | 69 + .../trunk/usb/store/asm-m68k/byteorder/swab.h | 158 + .../FireBee/trunk/usb/store/asm-m68k/io.h | 263 + .../FireBee/trunk/usb/store/asm-m68k/types.h | 53 + .../FireBee/trunk/usb/store/bios.S | 1378 + .../FireBee/trunk/usb/store/cmd_usb.c | 731 + .../FireBee/trunk/usb/store/compile.txt | 6 + .../FireBee/trunk/usb/store/config.h | 54 + .../FireBee/trunk/usb/store/debug.c | 64 + .../FireBee/trunk/usb/store/debug.h | 97 + .../FireBee/trunk/usb/store/debug2.S | 840 + .../trunk/usb/store/host/aranym/aranym-hcd.c | 150 + .../trunk/usb/store/host/aranym/natfeat.c | 118 + .../trunk/usb/store/host/aranym/natfeat_asm.S | 76 + .../trunk/usb/store/host/aranym/nf_ops.h | 63 + .../usb/store/host/aranym/usbhost_nfapi.h | 40 + .../usb/store/host/ethernat/isp116x-hcd.c | 1583 + .../trunk/usb/store/host/ethernat/isp116x.h | 542 + .../usb/store/host/netusbee/isp116x-hcd.c | 1561 + .../trunk/usb/store/host/netusbee/isp116x.h | 596 + .../trunk/usb/store/host/ohci-pci/ltoa.c | 38 + .../usb/store/host/ohci-pci/mod_devicetable.h | 165 + .../trunk/usb/store/host/ohci-pci/ohci-hcd.c | 1953 + .../trunk/usb/store/host/ohci-pci/ohci.h | 457 + .../trunk/usb/store/host/ohci-pci/pci_ids.h | 2613 + .../trunk/usb/store/host/ohci-pci/pcixbios.h | 342 + .../FireBee/trunk/usb/store/main.c | 206 + .../FireBee/trunk/usb/store/makefile | 85 + .../FireBee/trunk/usb/store/part.h | 88 + .../FireBee/trunk/usb/store/readme.txt | 68 + .../FireBee/trunk/usb/store/scsi.h | 209 + .../FireBee/trunk/usb/store/super.h | 58 + .../FireBee/trunk/usb/store/udelay.c | 39 + BaS_codewarrior/FireBee/trunk/usb/store/usb.c | 1422 + BaS_codewarrior/FireBee/trunk/usb/store/usb.h | 470 + .../FireBee/trunk/usb/store/usb_defs.h | 251 + .../FireBee/trunk/usb/store/usb_mem.c | 220 + .../FireBee/trunk/usb/store/usb_storage.c | 1632 + .../FireBee/trunk/usb/store/vars.h | 83 + .../FireBee/trunk/usb/store/xhdi.c | 391 + .../FireBee/trunk/usb/store/xhdi.h | 101 + .../FireBee/trunk/vhdl/dsp56k/asm/asm.sh | 6 + .../trunk/vhdl/dsp56k/asm/test_agu/test.asm | 13 + .../vhdl/dsp56k/asm/test_alu/test_abs.asm | 12 + .../vhdl/dsp56k/asm/test_alu/test_adc.asm | 11 + .../vhdl/dsp56k/asm/test_alu/test_add.asm | 11 + .../vhdl/dsp56k/asm/test_alu/test_addl.asm | 9 + .../vhdl/dsp56k/asm/test_alu/test_addr.asm | 9 + .../vhdl/dsp56k/asm/test_alu/test_and.asm | 12 + .../vhdl/dsp56k/asm/test_alu/test_asl.asm | 8 + .../vhdl/dsp56k/asm/test_alu/test_asr.asm | 8 + .../vhdl/dsp56k/asm/test_alu/test_carry.asm | 20 + .../vhdl/dsp56k/asm/test_alu/test_clr.asm | 9 + .../vhdl/dsp56k/asm/test_alu/test_cmp.asm | 20 + .../vhdl/dsp56k/asm/test_alu/test_cmpm.asm | 20 + .../vhdl/dsp56k/asm/test_alu/test_eor.asm | 8 + .../vhdl/dsp56k/asm/test_alu/test_lsl.asm | 7 + .../vhdl/dsp56k/asm/test_alu/test_lsr.asm | 7 + .../vhdl/dsp56k/asm/test_alu/test_mac.asm | 17 + .../vhdl/dsp56k/asm/test_alu/test_macr.asm | 17 + .../vhdl/dsp56k/asm/test_alu/test_mpy.asm | 15 + .../vhdl/dsp56k/asm/test_alu/test_mpyr.asm | 5 + .../vhdl/dsp56k/asm/test_alu/test_neg.asm | 10 + .../vhdl/dsp56k/asm/test_alu/test_norm.asm | 14 + .../vhdl/dsp56k/asm/test_alu/test_not.asm | 8 + .../vhdl/dsp56k/asm/test_alu/test_or.asm | 8 + .../vhdl/dsp56k/asm/test_alu/test_rnd.asm | 11 + .../vhdl/dsp56k/asm/test_alu/test_rol.asm | 6 + .../vhdl/dsp56k/asm/test_alu/test_ror.asm | 6 + .../vhdl/dsp56k/asm/test_alu/test_sbc.asm | 15 + .../vhdl/dsp56k/asm/test_alu/test_sub.asm | 15 + .../vhdl/dsp56k/asm/test_alu/test_subl.asm | 15 + .../vhdl/dsp56k/asm/test_alu/test_subr.asm | 15 + .../vhdl/dsp56k/asm/test_alu/test_tcc.asm | 10 + .../vhdl/dsp56k/asm/test_alu/test_tfr.asm | 7 + .../vhdl/dsp56k/asm/test_alu/test_tst.asm | 9 + .../trunk/vhdl/dsp56k/asm/test_mem/test.asm | 8 + .../trunk/vhdl/dsp56k/asm/test_pm_l/test.asm | 21 + .../FireBee/trunk/vhdl/dsp56k/doc/Change.log | 185 + .../trunk/vhdl/dsp56k/src/adgen_stage.vhd | 291 + .../trunk/vhdl/dsp56k/src/constants_pkg.vhd | 74 + .../trunk/vhdl/dsp56k/src/decode_stage.vhd | 1226 + .../FireBee/trunk/vhdl/dsp56k/src/dsp56k.vhd | 117 + .../trunk/vhdl/dsp56k/src/exec_stage_alu.vhd | 611 + .../vhdl/dsp56k/src/exec_stage_bit_modify.vhd | 86 + .../vhdl/dsp56k/src/exec_stage_branch.vhd | 124 + .../dsp56k/src/exec_stage_cc_flag_calc.vhd | 82 + .../vhdl/dsp56k/src/exec_stage_cr_mod.vhd | 79 + .../vhdl/dsp56k/src/exec_stage_loops.vhd | 207 + .../trunk/vhdl/dsp56k/src/fetch_stage.vhd | 67 + .../trunk/vhdl/dsp56k/src/mem_control.vhd | 1543 + .../vhdl/dsp56k/src/memory_management.vhd | 223 + .../trunk/vhdl/dsp56k/src/parameter_pkg.vhd | 18 + .../trunk/vhdl/dsp56k/src/pipeline.vhd | 1007 + .../trunk/vhdl/dsp56k/src/reg_file.vhd | 686 + .../trunk/vhdl/dsp56k/src/types_pkg.vhd | 182 + .../vhdl/dsp56k/testbench/tb_pipeline.vhd | 49 + BaS_codewarrior/firebeeV1/bin/DDRAM.elf | Bin 0 -> 18923 bytes BaS_codewarrior/firebeeV1/bin/DDRAM.elf.S19 | 289 + BaS_codewarrior/firebeeV1/bin/DDRAM.elf.xMAP | 80 + BaS_codewarrior/firebeeV1/bin/FLASH.elf | Bin 0 -> 24264 bytes BaS_codewarrior/firebeeV1/bin/FLASH.elf.S19 | 362 + BaS_codewarrior/firebeeV1/bin/FLASH.elf.xMAP | 87 + BaS_codewarrior/firebeeV1/cfg/DDRAM.cfg | 57 + BaS_codewarrior/firebeeV1/cfg/DDRAM.mem | 47 + BaS_codewarrior/firebeeV1/cfg/flash.cfg | 11 + BaS_codewarrior/firebeeV1/cfg/mem.cfg | 48 + BaS_codewarrior/firebeeV1/cfg/mem.mem | 38 + BaS_codewarrior/firebeeV1/firebeeV1.mcp | Bin 0 -> 110530 bytes .../firebeeV1_Data/CWSettingsWindows.stg | Bin 0 -> 4712 bytes .../DDRAM/TargetDataWindows.tdt | Bin 0 -> 1076498 bytes .../FLASH/TargetDataWindows.tdt | Bin 0 -> 430883 bytes BaS_codewarrior/firebeeV1/flash_config.xml | 47 + .../firebeeV1/hardware_diagnostic.xml | 40 + BaS_codewarrior/firebeeV1/headers/MCF5475.h | 93 + .../firebeeV1/headers/MCF5475_CLOCK.h | 47 + .../firebeeV1/headers/MCF5475_CTM.h | 76 + .../firebeeV1/headers/MCF5475_DMA.h | 202 + .../firebeeV1/headers/MCF5475_DSPI.h | 150 + .../firebeeV1/headers/MCF5475_EPORT.h | 123 + .../firebeeV1/headers/MCF5475_FBCS.h | 100 + .../firebeeV1/headers/MCF5475_FEC.h | 680 + .../firebeeV1/headers/MCF5475_GPIO.h | 543 + .../firebeeV1/headers/MCF5475_GPT.h | 100 + .../firebeeV1/headers/MCF5475_I2C.h | 69 + .../firebeeV1/headers/MCF5475_INTC.h | 331 + .../firebeeV1/headers/MCF5475_MMU.h | 77 + .../firebeeV1/headers/MCF5475_PAD.h | 233 + .../firebeeV1/headers/MCF5475_PCI.h | 376 + .../firebeeV1/headers/MCF5475_PCIARB.h | 43 + .../firebeeV1/headers/MCF5475_PSC.h | 527 + .../firebeeV1/headers/MCF5475_SDRAMC.h | 106 + .../firebeeV1/headers/MCF5475_SEC.h | 398 + .../firebeeV1/headers/MCF5475_SIU.h | 52 + .../firebeeV1/headers/MCF5475_SLT.h | 59 + .../firebeeV1/headers/MCF5475_SRAM.h | 62 + .../firebeeV1/headers/MCF5475_USB.h | 554 + .../firebeeV1/headers/MCF5475_XLB.h | 101 + BaS_codewarrior/firebeeV1/lcf/DDRAM.lcf | 88 + BaS_codewarrior/firebeeV1/lcf/FLASH.lcf | 88 + BaS_codewarrior/firebeeV1/sources/BaS.c | 287 + BaS_codewarrior/firebeeV1/sources/div.s | 1326 + BaS_codewarrior/firebeeV1/sources/ewf.s | 1565 + .../firebeeV1/sources/exceptions.s | 799 + BaS_codewarrior/firebeeV1/sources/ii_add.h | 581 + BaS_codewarrior/firebeeV1/sources/ii_and.h | 441 + BaS_codewarrior/firebeeV1/sources/ii_dbcc.h | 117 + BaS_codewarrior/firebeeV1/sources/ii_ewf.h | 181 + BaS_codewarrior/firebeeV1/sources/ii_exg.h | 120 + BaS_codewarrior/firebeeV1/sources/ii_func.h | 945 + BaS_codewarrior/firebeeV1/sources/ii_jmp.h | 59 + BaS_codewarrior/firebeeV1/sources/ii_lea.h | 105 + BaS_codewarrior/firebeeV1/sources/ii_macro.h | 144 + BaS_codewarrior/firebeeV1/sources/ii_move.h | 1271 + BaS_codewarrior/firebeeV1/sources/ii_movem.h | 374 + BaS_codewarrior/firebeeV1/sources/ii_movep.h | 179 + BaS_codewarrior/firebeeV1/sources/ii_op.h | 661 + BaS_codewarrior/firebeeV1/sources/ii_opc.h | 263 + BaS_codewarrior/firebeeV1/sources/ii_or.h | 442 + BaS_codewarrior/firebeeV1/sources/ii_pea.h | 74 + BaS_codewarrior/firebeeV1/sources/ii_shd.h | 247 + BaS_codewarrior/firebeeV1/sources/ii_shift.h | 687 + BaS_codewarrior/firebeeV1/sources/ii_sub.h | 584 + .../firebeeV1/sources/illegal_instruction.s | 328 + BaS_codewarrior/firebeeV1/sources/last.c | 11 + BaS_codewarrior/firebeeV1/sources/last.s | 10 + BaS_codewarrior/firebeeV1/sources/macro.h | 10 + BaS_codewarrior/firebeeV1/sources/mmu.s | 196 + BaS_codewarrior/firebeeV1/sources/movem.h | 256 + BaS_codewarrior/firebeeV1/sources/sd_card.c | 605 + BaS_codewarrior/firebeeV1/sources/sd_card.s | 406 + BaS_codewarrior/firebeeV1/sources/sd_ide.c | 543 + BaS_codewarrior/firebeeV1/sources/sd_ide.s | 458 + BaS_codewarrior/firebeeV1/sources/startcf.c | 83 + BaS_codewarrior/firebeeV1/sources/startcf.h | 47 + .../firebeeV1/sources/supervisor.s | 585 + BaS_codewarrior/firebeeV1/sources/sysinit.c | 833 + BaS_codewarrior/firebeeV1/sources/sysinit.h | 87 + BaS_codewarrior/workspace.cww | 413 + FPGA_quartus/Coldari1.qsf | 44 + FPGA_quartus/DSP/DSP.vhd | 79 + FPGA_quartus/DSP/DSP.vhd.bak | 79 + FPGA_quartus/DSP/dsp56k.zip | Bin 0 -> 39208 bytes FPGA_quartus/DSP/src/adgen_stage.vhd | 216 + FPGA_quartus/DSP/src/constants_pkg.vhd | 62 + FPGA_quartus/DSP/src/decode_stage.vhd | 1221 + FPGA_quartus/DSP/src/exec_stage_alu.vhd | 603 + .../DSP/src/exec_stage_bit_modify.vhd | 79 + FPGA_quartus/DSP/src/exec_stage_branch.vhd | 117 + .../DSP/src/exec_stage_cc_flag_calc.vhd | 75 + FPGA_quartus/DSP/src/exec_stage_cr_mod.vhd | 72 + FPGA_quartus/DSP/src/exec_stage_loops.vhd | 200 + FPGA_quartus/DSP/src/fetch_stage.vhd | 60 + FPGA_quartus/DSP/src/mem_control.vhd | 1519 + FPGA_quartus/DSP/src/memory_management.vhd | 206 + FPGA_quartus/DSP/src/parameter_pkg.vhd | 10 + FPGA_quartus/DSP/src/pipeline.vhd | 968 + FPGA_quartus/DSP/src/reg_file.vhd | 679 + FPGA_quartus/DSP/src/types_pkg.vhd | 167 + .../FalconIO_SDCard_IDE_CF.vhd | 971 + .../FalconIO_SDCard_IDE_CF.vhd.bak | 971 + .../FalconIO_SDCard_IDE_CF_pgk.vhd | 406 + .../FalconIO_SDCard_IDE_CF_pgk.vhd.bak | 406 + .../WF5380/wf5380_control.vhd | 631 + .../WF5380/wf5380_pkg.vhd | 139 + .../WF5380/wf5380_registers.vhd | 265 + .../WF5380/wf5380_soc_top.vhd | 300 + .../WF5380/wf5380_top.vhd | 275 + .../WF_FDC1772_IP/wf1772ip_am_detector.vhd | 253 + .../WF_FDC1772_IP/wf1772ip_control.vhd | 1463 + .../WF_FDC1772_IP/wf1772ip_crc_logic.vhd | 162 + .../WF_FDC1772_IP/wf1772ip_digital_pll.vhd | 426 + .../WF_FDC1772_IP/wf1772ip_pkg.vhd | 232 + .../WF_FDC1772_IP/wf1772ip_registers.vhd | 264 + .../WF_FDC1772_IP/wf1772ip_top.vhd | 154 + .../WF_FDC1772_IP/wf1772ip_top_soc.vhd | 333 + .../WF_FDC1772_IP/wf1772ip_transceiver.vhd | 517 + .../WF_MFP68901_IP/wf68901ip_gpio.vhd | 141 + .../WF_MFP68901_IP/wf68901ip_interrupts.vhd | 391 + .../WF_MFP68901_IP/wf68901ip_pkg.vhd | 263 + .../WF_MFP68901_IP/wf68901ip_timers.vhd | 533 + .../WF_MFP68901_IP/wf68901ip_top.vhd | 213 + .../WF_MFP68901_IP/wf68901ip_top_soc.vhd | 309 + .../WF_MFP68901_IP/wf68901ip_usart_ctrl.vhd | 191 + .../WF_MFP68901_IP/wf68901ip_usart_rx.vhd | 590 + .../WF_MFP68901_IP/wf68901ip_usart_top.vhd | 238 + .../WF_MFP68901_IP/wf68901ip_usart_tx.vhd | 387 + .../WF_SDC_IF/sd-card-interface.vhd | 228 + .../WF_SDC_IF/sd-card-interface_soc.vhd | 240 + .../WF_SDC_IF/sd-card-interface_soc.vhd.bak | 239 + .../WF_SND2149_IP/wf2149ip_pkg.vhd | 84 + .../WF_SND2149_IP/wf2149ip_top.vhd | 170 + .../WF_SND2149_IP/wf2149ip_top_soc.vhd | 229 + .../WF_SND2149_IP/wf2149ip_wave.vhd | 533 + .../WF_UART6850_IP/wf6850ip_ctrl_status.vhd | 244 + .../wf6850ip_ctrl_status.vhd.bak | 244 + .../WF_UART6850_IP/wf6850ip_receive.vhd | 415 + .../WF_UART6850_IP/wf6850ip_receive.vhd.bak | 415 + .../WF_UART6850_IP/wf6850ip_top.vhd | 135 + .../WF_UART6850_IP/wf6850ip_top_soc.vhd | 255 + .../WF_UART6850_IP/wf6850ip_top_soc.vhd.bak | 252 + .../WF_UART6850_IP/wf6850ip_transmit.vhd | 339 + .../WF_UART6850_IP/wf6850ip_transmit.vhd.bak | 339 + .../FalconIO_SDCard_IDE_CF/dcfifo0.bsf | 95 + .../FalconIO_SDCard_IDE_CF/dcfifo0.cmp | 28 + .../FalconIO_SDCard_IDE_CF/dcfifo0.qip | 5 + .../FalconIO_SDCard_IDE_CF/dcfifo0.vhd | 202 + .../FalconIO_SDCard_IDE_CF/dcfifo0.vhd.bak | 202 + .../FalconIO_SDCard_IDE_CF/dcfifo1.bsf | 95 + .../FalconIO_SDCard_IDE_CF/dcfifo1.cmp | 28 + .../FalconIO_SDCard_IDE_CF/dcfifo1.qip | 5 + .../FalconIO_SDCard_IDE_CF/dcfifo1.vhd | 202 + .../FalconIO_SDCard_IDE_CF/dcfifo1.vhd.bak | 202 + .../Interrupt_Handler/interrupt_handler.tdf | 478 + .../interrupt_handler.tdf.bak | 478 + FPGA_quartus/UNUSED | 27 + FPGA_quartus/Video/BLITTER/BLITTER.vhd | 75 + FPGA_quartus/Video/BLITTER/BLITTER.vhd.bak | 75 + FPGA_quartus/Video/DDR_CTR.tdf | 659 + FPGA_quartus/Video/DDR_CTR.tdf.bak | 660 + FPGA_quartus/Video/DDR_CTR_BLITTER.tdf.bak | 352 + FPGA_quartus/Video/UNUSED | 267 + FPGA_quartus/Video/VIDEO_MOD_MUX_CLUTCTR.tdf | 675 + .../Video/VIDEO_MOD_MUX_CLUTCTR.tdf.bak | 675 + FPGA_quartus/Video/Video.bdf | 10651 ++++ FPGA_quartus/Video/altddio_bidir0.bsf | 99 + FPGA_quartus/Video/altddio_bidir0.cmp | 29 + FPGA_quartus/Video/altddio_bidir0.inc | 30 + FPGA_quartus/Video/altddio_bidir0.ppf | 16 + FPGA_quartus/Video/altddio_bidir0.qip | 7 + FPGA_quartus/Video/altddio_bidir0.vhd | 172 + FPGA_quartus/Video/altddio_out0.bsf | 64 + FPGA_quartus/Video/altddio_out0.cmp | 24 + FPGA_quartus/Video/altddio_out0.inc | 25 + FPGA_quartus/Video/altddio_out0.ppf | 11 + FPGA_quartus/Video/altddio_out0.qip | 7 + FPGA_quartus/Video/altddio_out0.vhd | 136 + FPGA_quartus/Video/altddio_out1.bsf | 64 + FPGA_quartus/Video/altddio_out1.cmp | 24 + FPGA_quartus/Video/altddio_out1.inc | 25 + FPGA_quartus/Video/altddio_out1.ppf | 11 + FPGA_quartus/Video/altddio_out1.qip | 7 + FPGA_quartus/Video/altddio_out1.vhd | 146 + FPGA_quartus/Video/altddio_out2.bsf | 64 + FPGA_quartus/Video/altddio_out2.cmp | 24 + FPGA_quartus/Video/altddio_out2.inc | 25 + FPGA_quartus/Video/altddio_out2.ppf | 11 + FPGA_quartus/Video/altddio_out2.qip | 7 + FPGA_quartus/Video/altddio_out2.vhd | 136 + FPGA_quartus/Video/altdpram0.bsf | 173 + FPGA_quartus/Video/altdpram0.cmp | 30 + FPGA_quartus/Video/altdpram0.inc | 31 + FPGA_quartus/Video/altdpram0.qip | 6 + FPGA_quartus/Video/altdpram0.vhd | 273 + FPGA_quartus/Video/altdpram0_wave0.jpg | Bin 0 -> 125146 bytes FPGA_quartus/Video/altdpram0_wave1.jpg | Bin 0 -> 171723 bytes FPGA_quartus/Video/altdpram0_waveforms.html | 16 + FPGA_quartus/Video/altdpram1.bsf | 173 + FPGA_quartus/Video/altdpram1.cmp | 30 + FPGA_quartus/Video/altdpram1.inc | 31 + FPGA_quartus/Video/altdpram1.qip | 6 + FPGA_quartus/Video/altdpram1.vhd | 273 + FPGA_quartus/Video/altdpram1_wave0.jpg | Bin 0 -> 151954 bytes FPGA_quartus/Video/altdpram1_wave1.jpg | Bin 0 -> 203609 bytes FPGA_quartus/Video/altdpram1_waveforms.html | 16 + FPGA_quartus/Video/altdpram2.bsf | 173 + FPGA_quartus/Video/altdpram2.cmp | 30 + FPGA_quartus/Video/altdpram2.inc | 31 + FPGA_quartus/Video/altdpram2.qip | 6 + FPGA_quartus/Video/altdpram2.vhd | 273 + FPGA_quartus/Video/altdpram2_wave0.jpg | Bin 0 -> 152433 bytes FPGA_quartus/Video/altdpram2_wave1.jpg | Bin 0 -> 204342 bytes FPGA_quartus/Video/altdpram2_waveforms.html | 16 + FPGA_quartus/Video/lpm_bustri0.bsf | 56 + FPGA_quartus/Video/lpm_bustri0.cmp | 23 + FPGA_quartus/Video/lpm_bustri0.inc | 24 + FPGA_quartus/Video/lpm_bustri0.qip | 6 + FPGA_quartus/Video/lpm_bustri0.vhd | 107 + FPGA_quartus/Video/lpm_bustri1.bsf | 56 + FPGA_quartus/Video/lpm_bustri1.cmp | 23 + FPGA_quartus/Video/lpm_bustri1.qip | 5 + FPGA_quartus/Video/lpm_bustri1.vhd | 107 + FPGA_quartus/Video/lpm_bustri2.bsf | 56 + FPGA_quartus/Video/lpm_bustri2.cmp | 23 + FPGA_quartus/Video/lpm_bustri2.qip | 5 + FPGA_quartus/Video/lpm_bustri2.vhd | 107 + FPGA_quartus/Video/lpm_bustri3.bsf | 56 + FPGA_quartus/Video/lpm_bustri3.cmp | 23 + FPGA_quartus/Video/lpm_bustri3.qip | 5 + FPGA_quartus/Video/lpm_bustri3.vhd | 107 + FPGA_quartus/Video/lpm_bustri4.bsf | 56 + FPGA_quartus/Video/lpm_bustri4.cmp | 23 + FPGA_quartus/Video/lpm_bustri4.qip | 5 + FPGA_quartus/Video/lpm_bustri4.vhd | 107 + FPGA_quartus/Video/lpm_bustri5.bsf | 56 + FPGA_quartus/Video/lpm_bustri5.cmp | 23 + FPGA_quartus/Video/lpm_bustri5.inc | 24 + FPGA_quartus/Video/lpm_bustri5.qip | 6 + FPGA_quartus/Video/lpm_bustri5.vhd | 107 + FPGA_quartus/Video/lpm_bustri6.bsf | 56 + FPGA_quartus/Video/lpm_bustri6.cmp | 23 + FPGA_quartus/Video/lpm_bustri6.qip | 5 + FPGA_quartus/Video/lpm_bustri6.vhd | 107 + FPGA_quartus/Video/lpm_bustri7.bsf | 56 + FPGA_quartus/Video/lpm_bustri7.cmp | 23 + FPGA_quartus/Video/lpm_bustri7.qip | 5 + FPGA_quartus/Video/lpm_bustri7.vhd | 107 + FPGA_quartus/Video/lpm_compare1.bsf | 54 + FPGA_quartus/Video/lpm_compare1.cmp | 23 + FPGA_quartus/Video/lpm_compare1.inc | 24 + FPGA_quartus/Video/lpm_compare1.qip | 6 + FPGA_quartus/Video/lpm_compare1.vhd | 127 + FPGA_quartus/Video/lpm_compare1_wave0.jpg | Bin 0 -> 30655 bytes .../Video/lpm_compare1_waveforms.html | 13 + FPGA_quartus/Video/lpm_constant0.bsf | 42 + FPGA_quartus/Video/lpm_constant0.cmp | 21 + FPGA_quartus/Video/lpm_constant0.qip | 5 + FPGA_quartus/Video/lpm_constant0.vhd | 108 + FPGA_quartus/Video/lpm_constant1.bsf | 42 + FPGA_quartus/Video/lpm_constant1.cmp | 21 + FPGA_quartus/Video/lpm_constant1.inc | 23 + FPGA_quartus/Video/lpm_constant1.qip | 6 + FPGA_quartus/Video/lpm_constant1.vhd | 108 + FPGA_quartus/Video/lpm_constant2.bsf | 42 + FPGA_quartus/Video/lpm_constant2.cmp | 21 + FPGA_quartus/Video/lpm_constant2.qip | 5 + FPGA_quartus/Video/lpm_constant2.vhd | 108 + FPGA_quartus/Video/lpm_constant3.bsf | 42 + FPGA_quartus/Video/lpm_constant3.cmp | 21 + FPGA_quartus/Video/lpm_constant3.qip | 5 + FPGA_quartus/Video/lpm_constant3.vhd | 108 + FPGA_quartus/Video/lpm_constant4.bsf | 42 + FPGA_quartus/Video/lpm_constant4.cmp | 21 + FPGA_quartus/Video/lpm_constant4.inc | 23 + FPGA_quartus/Video/lpm_constant4.qip | 6 + FPGA_quartus/Video/lpm_constant4.vhd | 108 + FPGA_quartus/Video/lpm_ff0.bsf | 63 + FPGA_quartus/Video/lpm_ff0.cmp | 24 + FPGA_quartus/Video/lpm_ff0.qip | 5 + FPGA_quartus/Video/lpm_ff0.vhd | 127 + FPGA_quartus/Video/lpm_ff1.bsf | 56 + FPGA_quartus/Video/lpm_ff1.cmp | 23 + FPGA_quartus/Video/lpm_ff1.qip | 5 + FPGA_quartus/Video/lpm_ff1.vhd | 122 + FPGA_quartus/Video/lpm_ff2.bsf | 56 + FPGA_quartus/Video/lpm_ff2.cmp | 23 + FPGA_quartus/Video/lpm_ff2.qip | 5 + FPGA_quartus/Video/lpm_ff2.vhd | 122 + FPGA_quartus/Video/lpm_ff3.bsf | 56 + FPGA_quartus/Video/lpm_ff3.cmp | 23 + FPGA_quartus/Video/lpm_ff3.qip | 5 + FPGA_quartus/Video/lpm_ff3.vhd | 122 + FPGA_quartus/Video/lpm_ff4.bsf | 56 + FPGA_quartus/Video/lpm_ff4.cmp | 23 + FPGA_quartus/Video/lpm_ff4.inc | 24 + FPGA_quartus/Video/lpm_ff4.qip | 6 + FPGA_quartus/Video/lpm_ff4.vhd | 122 + FPGA_quartus/Video/lpm_ff5.bsf | 56 + FPGA_quartus/Video/lpm_ff5.cmp | 23 + FPGA_quartus/Video/lpm_ff5.inc | 24 + FPGA_quartus/Video/lpm_ff5.qip | 6 + FPGA_quartus/Video/lpm_ff5.vhd | 122 + FPGA_quartus/Video/lpm_ff6.bsf | 63 + FPGA_quartus/Video/lpm_ff6.cmp | 24 + FPGA_quartus/Video/lpm_ff6.inc | 25 + FPGA_quartus/Video/lpm_ff6.qip | 6 + FPGA_quartus/Video/lpm_ff6.vhd | 127 + FPGA_quartus/Video/lpm_fifoDZ.bsf | 79 + FPGA_quartus/Video/lpm_fifoDZ.cmp | 26 + FPGA_quartus/Video/lpm_fifoDZ.qip | 5 + FPGA_quartus/Video/lpm_fifoDZ.vhd | 178 + FPGA_quartus/Video/lpm_fifoDZ_wave0.jpg | Bin 0 -> 86257 bytes FPGA_quartus/Video/lpm_fifoDZ_waveforms.html | 13 + FPGA_quartus/Video/lpm_fifo_dc0.bsf | 102 + FPGA_quartus/Video/lpm_fifo_dc0.cmp | 29 + FPGA_quartus/Video/lpm_fifo_dc0.inc | 30 + FPGA_quartus/Video/lpm_fifo_dc0.qip | 6 + FPGA_quartus/Video/lpm_fifo_dc0.vhd | 203 + FPGA_quartus/Video/lpm_fifo_dc0_wave0.jpg | Bin 0 -> 121926 bytes .../Video/lpm_fifo_dc0_waveforms.html | 13 + FPGA_quartus/Video/lpm_latch1.bsf | 53 + FPGA_quartus/Video/lpm_latch1.cmp | 23 + FPGA_quartus/Video/lpm_latch1.qip | 5 + FPGA_quartus/Video/lpm_latch1.vhd | 110 + FPGA_quartus/Video/lpm_mux0.bsf | 83 + FPGA_quartus/Video/lpm_mux0.cmp | 27 + FPGA_quartus/Video/lpm_mux0.inc | 28 + FPGA_quartus/Video/lpm_mux0.qip | 6 + FPGA_quartus/Video/lpm_mux0.vhd | 251 + FPGA_quartus/Video/lpm_mux1.bsf | 111 + FPGA_quartus/Video/lpm_mux1.cmp | 31 + FPGA_quartus/Video/lpm_mux1.inc | 32 + FPGA_quartus/Video/lpm_mux1.qip | 6 + FPGA_quartus/Video/lpm_mux1.vhd | 271 + FPGA_quartus/Video/lpm_mux2.bsf | 167 + FPGA_quartus/Video/lpm_mux2.cmp | 39 + FPGA_quartus/Video/lpm_mux2.inc | 40 + FPGA_quartus/Video/lpm_mux2.qip | 6 + FPGA_quartus/Video/lpm_mux2.vhd | 311 + FPGA_quartus/Video/lpm_mux3.bsf | 60 + FPGA_quartus/Video/lpm_mux3.cmp | 24 + FPGA_quartus/Video/lpm_mux3.qip | 5 + FPGA_quartus/Video/lpm_mux3.vhd | 115 + FPGA_quartus/Video/lpm_mux4.bsf | 60 + FPGA_quartus/Video/lpm_mux4.cmp | 24 + FPGA_quartus/Video/lpm_mux4.qip | 5 + FPGA_quartus/Video/lpm_mux4.vhd | 125 + FPGA_quartus/Video/lpm_mux5.bsf | 74 + FPGA_quartus/Video/lpm_mux5.cmp | 26 + FPGA_quartus/Video/lpm_mux5.inc | 27 + FPGA_quartus/Video/lpm_mux5.qip | 6 + FPGA_quartus/Video/lpm_mux5.vhd | 373 + FPGA_quartus/Video/lpm_mux6.bsf | 111 + FPGA_quartus/Video/lpm_mux6.cmp | 31 + FPGA_quartus/Video/lpm_mux6.inc | 32 + FPGA_quartus/Video/lpm_mux6.qip | 6 + FPGA_quartus/Video/lpm_mux6.vhd | 335 + FPGA_quartus/Video/lpm_muxDZ.bsf | 76 + FPGA_quartus/Video/lpm_muxDZ.cmp | 26 + FPGA_quartus/Video/lpm_muxDZ.qip | 5 + FPGA_quartus/Video/lpm_muxDZ.vhd | 377 + FPGA_quartus/Video/lpm_muxDZ2.bsf | 60 + FPGA_quartus/Video/lpm_muxDZ2.cmp | 24 + FPGA_quartus/Video/lpm_muxDZ2.qip | 5 + FPGA_quartus/Video/lpm_muxDZ2.vhd | 115 + FPGA_quartus/Video/lpm_muxVDM.bsf | 158 + FPGA_quartus/Video/lpm_muxVDM.cmp | 38 + FPGA_quartus/Video/lpm_muxVDM.qip | 5 + FPGA_quartus/Video/lpm_muxVDM.vhd | 2225 + FPGA_quartus/Video/lpm_shiftreg0.bsf | 70 + FPGA_quartus/Video/lpm_shiftreg0.cmp | 25 + FPGA_quartus/Video/lpm_shiftreg0.inc | 26 + FPGA_quartus/Video/lpm_shiftreg0.qip | 6 + FPGA_quartus/Video/lpm_shiftreg0.vhd | 135 + FPGA_quartus/Video/lpm_shiftreg1.bsf | 56 + FPGA_quartus/Video/lpm_shiftreg1.cmp | 23 + FPGA_quartus/Video/lpm_shiftreg1.qip | 5 + FPGA_quartus/Video/lpm_shiftreg1.vhd | 125 + FPGA_quartus/Video/lpm_shiftreg2.bsf | 56 + FPGA_quartus/Video/lpm_shiftreg2.cmp | 23 + FPGA_quartus/Video/lpm_shiftreg2.qip | 5 + FPGA_quartus/Video/lpm_shiftreg2.vhd | 125 + FPGA_quartus/Video/lpm_shiftreg3.bsf | 56 + FPGA_quartus/Video/lpm_shiftreg3.cmp | 23 + FPGA_quartus/Video/lpm_shiftreg3.inc | 24 + FPGA_quartus/Video/lpm_shiftreg3.qip | 6 + FPGA_quartus/Video/lpm_shiftreg3.vhd | 125 + FPGA_quartus/Video/lpm_shiftreg4.bsf | 56 + FPGA_quartus/Video/lpm_shiftreg4.cmp | 23 + FPGA_quartus/Video/lpm_shiftreg4.inc | 24 + FPGA_quartus/Video/lpm_shiftreg4.qip | 6 + FPGA_quartus/Video/lpm_shiftreg4.vhd | 125 + FPGA_quartus/Video/lpm_shiftreg5.bsf | 56 + FPGA_quartus/Video/lpm_shiftreg5.cmp | 23 + FPGA_quartus/Video/lpm_shiftreg5.inc | 24 + FPGA_quartus/Video/lpm_shiftreg5.qip | 6 + FPGA_quartus/Video/lpm_shiftreg5.vhd | 125 + FPGA_quartus/Video/lpm_shiftreg6.bsf | 56 + FPGA_quartus/Video/lpm_shiftreg6.cmp | 23 + FPGA_quartus/Video/lpm_shiftreg6.inc | 24 + FPGA_quartus/Video/lpm_shiftreg6.qip | 6 + FPGA_quartus/Video/lpm_shiftreg6.vhd | 125 + FPGA_quartus/altddio_out0.bsf | 64 + FPGA_quartus/altddio_out0.cmp | 24 + FPGA_quartus/altddio_out0.inc | 25 + FPGA_quartus/altddio_out0.ppf | 11 + FPGA_quartus/altddio_out0.qip | 7 + FPGA_quartus/altddio_out0.vhd | 146 + FPGA_quartus/altddio_out3.bsf | 64 + FPGA_quartus/altddio_out3.cmp | 24 + FPGA_quartus/altddio_out3.inc | 25 + FPGA_quartus/altddio_out3.ppf | 11 + FPGA_quartus/altddio_out3.qip | 7 + FPGA_quartus/altddio_out3.vhd | 146 + FPGA_quartus/altpll0.bsf | 117 + FPGA_quartus/altpll0.cmp | 26 + FPGA_quartus/altpll0.inc | 27 + FPGA_quartus/altpll0.ppf | 13 + FPGA_quartus/altpll0.qip | 7 + FPGA_quartus/altpll0.vhd | 477 + FPGA_quartus/altpll0_waveforms.html | 10 + FPGA_quartus/altpll1.bsf | 100 + FPGA_quartus/altpll1.cmp | 25 + FPGA_quartus/altpll1.inc | 26 + FPGA_quartus/altpll1.ppf | 12 + FPGA_quartus/altpll1.qip | 7 + FPGA_quartus/altpll1.vhd | 423 + FPGA_quartus/altpll1_waveforms.html | 10 + FPGA_quartus/altpll2.bsf | 117 + FPGA_quartus/altpll2.cmp | 26 + FPGA_quartus/altpll2.inc | 27 + FPGA_quartus/altpll2.ppf | 13 + FPGA_quartus/altpll2.qip | 7 + FPGA_quartus/altpll2.vhd | 477 + FPGA_quartus/altpll2_waveforms.html | 10 + FPGA_quartus/altpll3.bsf | 105 + FPGA_quartus/altpll3.cmp | 25 + FPGA_quartus/altpll3.inc | 26 + FPGA_quartus/altpll3.ppf | 12 + FPGA_quartus/altpll3.qip | 7 + FPGA_quartus/altpll3.vhd | 445 + FPGA_quartus/altpll3_waveforms.html | 10 + FPGA_quartus/altpll4.bsf | 125 + FPGA_quartus/altpll4.cmp | 30 + FPGA_quartus/altpll4.inc | 31 + FPGA_quartus/altpll4.mif | 174 + FPGA_quartus/altpll4.ppf | 17 + FPGA_quartus/altpll4.qip | 7 + FPGA_quartus/altpll4.tdf | 298 + FPGA_quartus/altpll_reconfig0.bsf | 162 + FPGA_quartus/altpll_reconfig0.qip | 5 + FPGA_quartus/altpll_reconfig1.bsf | 162 + FPGA_quartus/altpll_reconfig1.cmp | 38 + FPGA_quartus/altpll_reconfig1.inc | 39 + FPGA_quartus/altpll_reconfig1.qip | 6 + FPGA_quartus/altpll_reconfig1.tdf | 144 + FPGA_quartus/altpll_reconfig1_pllrcfg_bju.tdf | 583 + FPGA_quartus/altpll_reconfig1_pllrcfg_t4q.tdf | 582 + FPGA_quartus/firebee1.asm.rpt | 128 + FPGA_quartus/firebee1.bdf | 5837 ++ FPGA_quartus/firebee1.done | 1 + FPGA_quartus/firebee1.dpf | 12 + FPGA_quartus/firebee1.fit.rpt | 6866 +++ FPGA_quartus/firebee1.fit.summary | 16 + FPGA_quartus/firebee1.flow.rpt | 380 + FPGA_quartus/firebee1.map.rpt | 8590 +++ FPGA_quartus/firebee1.map.summary | 14 + FPGA_quartus/firebee1.pin | 557 + FPGA_quartus/firebee1.qsf | 740 + FPGA_quartus/firebee1.qws | 4 + FPGA_quartus/firebee1.rbf | Bin 0 -> 428953 bytes FPGA_quartus/firebee1.sof | Bin 0 -> 1171297 bytes FPGA_quartus/firebee1.tan.rpt | 6936 +++ FPGA_quartus/firebee1.tan.summary | 296 + FPGA_quartus/firebee1_assignment_defaults.qdf | 687 + FPGA_quartus/firebeei1.qpf | 23 + FPGA_quartus/firebeei1.qws | 27 + FPGA_quartus/lpm_bustri_BYT.bsf | 56 + FPGA_quartus/lpm_bustri_BYT.cmp | 23 + FPGA_quartus/lpm_bustri_BYT.inc | 24 + FPGA_quartus/lpm_bustri_BYT.qip | 6 + FPGA_quartus/lpm_bustri_BYT.vhd | 107 + FPGA_quartus/lpm_bustri_LONG.bsf | 56 + FPGA_quartus/lpm_bustri_LONG.cmp | 23 + FPGA_quartus/lpm_bustri_LONG.inc | 24 + FPGA_quartus/lpm_bustri_LONG.qip | 6 + FPGA_quartus/lpm_bustri_LONG.vhd | 107 + FPGA_quartus/lpm_bustri_WORD.bsf | 56 + FPGA_quartus/lpm_bustri_WORD.cmp | 23 + FPGA_quartus/lpm_bustri_WORD.inc | 24 + FPGA_quartus/lpm_bustri_WORD.qip | 6 + FPGA_quartus/lpm_bustri_WORD.vhd | 107 + FPGA_quartus/lpm_counter0.bsf | 49 + FPGA_quartus/lpm_counter0.cmp | 22 + FPGA_quartus/lpm_counter0.qip | 5 + FPGA_quartus/lpm_counter0.vhd | 126 + FPGA_quartus/lpm_counter0_wave0.jpg | Bin 0 -> 56372 bytes FPGA_quartus/lpm_counter0_waveforms.html | 13 + FPGA_quartus/lpm_counter1_waveforms.html | 16 + FPGA_quartus/lpm_fifo_dc0_waveforms.html | 16 + FPGA_quartus/lpm_latch0.bsf | 53 + FPGA_quartus/lpm_latch0.cmp | 23 + FPGA_quartus/lpm_latch0.qip | 5 + FPGA_quartus/lpm_latch0.vhd | 110 + FPGA_quartus/serv_req_info.txt | 115 + FPGA_quartus/undo_redo.txt | 0 Flash/BaS_15_12_10.S19 | 362 + Flash/BaS_15_12_10.zip | Bin 0 -> 7354 bytes Flash/emutos2.s19 | 23921 ++++++++ Flash/firebee_fpga_15_12_10.rbf | Bin 0 -> 428953 bytes Flash/firebee_fpga_15_12_10.zip | Bin 0 -> 192203 bytes Flash/firetos_firebee.hex | 45217 ++++++++++++++++ MLAB/firebee1/Makefile | 19 + MLAB/firebee1/NMakefile | 19 + MLAB/firebee1/PS2Atari_v1_4.asm | 619 + MLAB/firebee1/Thumbs.db | Bin 0 -> 22528 bytes MLAB/firebee1/circuit.bmp | Bin 0 -> 32062 bytes MLAB/firebee1/firebee1.asm | 845 + MLAB/firebee1/firebee1.cof | Bin 0 -> 13640 bytes MLAB/firebee1/firebee1.err | 0 MLAB/firebee1/firebee1.hex | 82 + MLAB/firebee1/firebee1.lst | 1979 + MLAB/firebee1/firebee1.map | 188 + MLAB/firebee1/firebee1.mcp | 53 + MLAB/firebee1/firebee1.mcs | 71 + MLAB/firebee1/firebee1.mcw | Bin 0 -> 33280 bytes MLAB/firebee1/firebeei1.map | 156 + MLAB/firebee1/readme.txt | 125 + usb/store/config.h | 4 +- usb/store/main.c | 1 + usb/store/makefile | 2 +- usb/store/usb_storage.c | 8 +- 657 files changed, 288732 insertions(+), 7 deletions(-) create mode 100644 BaS_codewarrior/FireBee/Flash/BaS_15_12_10.S19 create mode 100644 BaS_codewarrior/FireBee/Flash/BaS_15_12_10.zip create mode 100644 BaS_codewarrior/FireBee/Flash/emutos2.s19 create mode 100644 BaS_codewarrior/FireBee/Flash/firebee_fpga_15_12_10.rbf create mode 100644 BaS_codewarrior/FireBee/Flash/firebee_fpga_15_12_10.zip create mode 100644 BaS_codewarrior/FireBee/Flash/firetos_firebee.hex create mode 100644 BaS_codewarrior/FireBee/MLAB/firebee1/Makefile create mode 100644 BaS_codewarrior/FireBee/MLAB/firebee1/NMakefile create mode 100644 BaS_codewarrior/FireBee/MLAB/firebee1/PS2Atari_v1_4.asm create mode 100644 BaS_codewarrior/FireBee/MLAB/firebee1/Thumbs.db create mode 100644 BaS_codewarrior/FireBee/MLAB/firebee1/circuit.bmp create mode 100644 BaS_codewarrior/FireBee/MLAB/firebee1/firebee1.asm create mode 100644 BaS_codewarrior/FireBee/MLAB/firebee1/firebee1.cof create mode 100644 BaS_codewarrior/FireBee/MLAB/firebee1/firebee1.err create mode 100644 BaS_codewarrior/FireBee/MLAB/firebee1/firebee1.hex create mode 100644 BaS_codewarrior/FireBee/MLAB/firebee1/firebee1.lst create mode 100644 BaS_codewarrior/FireBee/MLAB/firebee1/firebee1.map create mode 100644 BaS_codewarrior/FireBee/MLAB/firebee1/firebee1.mcp create mode 100644 BaS_codewarrior/FireBee/MLAB/firebee1/firebee1.mcs create mode 100644 BaS_codewarrior/FireBee/MLAB/firebee1/firebee1.mcw create mode 100644 BaS_codewarrior/FireBee/MLAB/firebee1/firebeei1.map create mode 100644 BaS_codewarrior/FireBee/MLAB/firebee1/readme.txt create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/asm-m68k/byteorder.h create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/asm-m68k/byteorder/big_endian.h create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/asm-m68k/byteorder/generic.h create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/asm-m68k/byteorder/little_endian.h create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/asm-m68k/byteorder/swab.h create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/asm-m68k/io.h create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/asm-m68k/types.h create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/bios.S create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/cmd_usb.c create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/compile.txt create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/config.h create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/debug.c create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/debug.h create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/debug2.S create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/host/aranym/aranym-hcd.c create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/host/aranym/natfeat.c create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/host/aranym/natfeat_asm.S create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/host/aranym/nf_ops.h create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/host/aranym/usbhost_nfapi.h create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/host/ethernat/isp116x-hcd.c create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/host/ethernat/isp116x.h create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/host/netusbee/isp116x-hcd.c create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/host/netusbee/isp116x.h create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/host/ohci-pci/ltoa.c create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/host/ohci-pci/mod_devicetable.h create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/host/ohci-pci/ohci-hcd.c create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/host/ohci-pci/ohci.h create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/host/ohci-pci/pci_ids.h create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/host/ohci-pci/pcixbios.h create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/main.c create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/makefile create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/part.h create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/readme.txt create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/scsi.h create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/super.h create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/udelay.c create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/usb.c create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/usb.h create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/usb_defs.h create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/usb_mem.c create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/usb_storage.c create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/vars.h create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/xhdi.c create mode 100644 BaS_codewarrior/FireBee/trunk/usb/store/xhdi.h create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/asm.sh create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_agu/test.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_abs.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_adc.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_add.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_addl.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_addr.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_and.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_asl.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_asr.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_carry.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_clr.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_cmp.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_cmpm.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_eor.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_lsl.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_lsr.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_mac.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_macr.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_mpy.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_mpyr.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_neg.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_norm.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_not.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_or.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_rnd.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_rol.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_ror.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_sbc.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_sub.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_subl.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_subr.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_tcc.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_tfr.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_tst.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_mem/test.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_pm_l/test.asm create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/doc/Change.log create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/adgen_stage.vhd create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/constants_pkg.vhd create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/decode_stage.vhd create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/dsp56k.vhd create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/exec_stage_alu.vhd create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/exec_stage_bit_modify.vhd create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/exec_stage_branch.vhd create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/exec_stage_cc_flag_calc.vhd create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/exec_stage_cr_mod.vhd create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/exec_stage_loops.vhd create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/fetch_stage.vhd create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/mem_control.vhd create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/memory_management.vhd create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/parameter_pkg.vhd create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/pipeline.vhd create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/reg_file.vhd create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/types_pkg.vhd create mode 100644 BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/testbench/tb_pipeline.vhd create mode 100644 BaS_codewarrior/firebeeV1/bin/DDRAM.elf create mode 100644 BaS_codewarrior/firebeeV1/bin/DDRAM.elf.S19 create mode 100644 BaS_codewarrior/firebeeV1/bin/DDRAM.elf.xMAP create mode 100644 BaS_codewarrior/firebeeV1/bin/FLASH.elf create mode 100644 BaS_codewarrior/firebeeV1/bin/FLASH.elf.S19 create mode 100644 BaS_codewarrior/firebeeV1/bin/FLASH.elf.xMAP create mode 100644 BaS_codewarrior/firebeeV1/cfg/DDRAM.cfg create mode 100644 BaS_codewarrior/firebeeV1/cfg/DDRAM.mem create mode 100644 BaS_codewarrior/firebeeV1/cfg/flash.cfg create mode 100644 BaS_codewarrior/firebeeV1/cfg/mem.cfg create mode 100644 BaS_codewarrior/firebeeV1/cfg/mem.mem create mode 100644 BaS_codewarrior/firebeeV1/firebeeV1.mcp create mode 100644 BaS_codewarrior/firebeeV1/firebeeV1_Data/CWSettingsWindows.stg create mode 100644 BaS_codewarrior/firebeeV1/firebeeV1_Data/DDRAM/TargetDataWindows.tdt create mode 100644 BaS_codewarrior/firebeeV1/firebeeV1_Data/FLASH/TargetDataWindows.tdt create mode 100644 BaS_codewarrior/firebeeV1/flash_config.xml create mode 100644 BaS_codewarrior/firebeeV1/hardware_diagnostic.xml create mode 100644 BaS_codewarrior/firebeeV1/headers/MCF5475.h create mode 100644 BaS_codewarrior/firebeeV1/headers/MCF5475_CLOCK.h create mode 100644 BaS_codewarrior/firebeeV1/headers/MCF5475_CTM.h create mode 100644 BaS_codewarrior/firebeeV1/headers/MCF5475_DMA.h create mode 100644 BaS_codewarrior/firebeeV1/headers/MCF5475_DSPI.h create mode 100644 BaS_codewarrior/firebeeV1/headers/MCF5475_EPORT.h create mode 100644 BaS_codewarrior/firebeeV1/headers/MCF5475_FBCS.h create mode 100644 BaS_codewarrior/firebeeV1/headers/MCF5475_FEC.h create mode 100644 BaS_codewarrior/firebeeV1/headers/MCF5475_GPIO.h create mode 100644 BaS_codewarrior/firebeeV1/headers/MCF5475_GPT.h create mode 100644 BaS_codewarrior/firebeeV1/headers/MCF5475_I2C.h create mode 100644 BaS_codewarrior/firebeeV1/headers/MCF5475_INTC.h create mode 100644 BaS_codewarrior/firebeeV1/headers/MCF5475_MMU.h create mode 100644 BaS_codewarrior/firebeeV1/headers/MCF5475_PAD.h create mode 100644 BaS_codewarrior/firebeeV1/headers/MCF5475_PCI.h create mode 100644 BaS_codewarrior/firebeeV1/headers/MCF5475_PCIARB.h create mode 100644 BaS_codewarrior/firebeeV1/headers/MCF5475_PSC.h create mode 100644 BaS_codewarrior/firebeeV1/headers/MCF5475_SDRAMC.h create mode 100644 BaS_codewarrior/firebeeV1/headers/MCF5475_SEC.h create mode 100644 BaS_codewarrior/firebeeV1/headers/MCF5475_SIU.h create mode 100644 BaS_codewarrior/firebeeV1/headers/MCF5475_SLT.h create mode 100644 BaS_codewarrior/firebeeV1/headers/MCF5475_SRAM.h create mode 100644 BaS_codewarrior/firebeeV1/headers/MCF5475_USB.h create mode 100644 BaS_codewarrior/firebeeV1/headers/MCF5475_XLB.h create mode 100644 BaS_codewarrior/firebeeV1/lcf/DDRAM.lcf create mode 100644 BaS_codewarrior/firebeeV1/lcf/FLASH.lcf create mode 100644 BaS_codewarrior/firebeeV1/sources/BaS.c create mode 100644 BaS_codewarrior/firebeeV1/sources/div.s create mode 100644 BaS_codewarrior/firebeeV1/sources/ewf.s create mode 100644 BaS_codewarrior/firebeeV1/sources/exceptions.s create mode 100644 BaS_codewarrior/firebeeV1/sources/ii_add.h create mode 100644 BaS_codewarrior/firebeeV1/sources/ii_and.h create mode 100644 BaS_codewarrior/firebeeV1/sources/ii_dbcc.h create mode 100644 BaS_codewarrior/firebeeV1/sources/ii_ewf.h create mode 100644 BaS_codewarrior/firebeeV1/sources/ii_exg.h create mode 100644 BaS_codewarrior/firebeeV1/sources/ii_func.h create mode 100644 BaS_codewarrior/firebeeV1/sources/ii_jmp.h create mode 100644 BaS_codewarrior/firebeeV1/sources/ii_lea.h create mode 100644 BaS_codewarrior/firebeeV1/sources/ii_macro.h create mode 100644 BaS_codewarrior/firebeeV1/sources/ii_move.h create mode 100644 BaS_codewarrior/firebeeV1/sources/ii_movem.h create mode 100644 BaS_codewarrior/firebeeV1/sources/ii_movep.h create mode 100644 BaS_codewarrior/firebeeV1/sources/ii_op.h create mode 100644 BaS_codewarrior/firebeeV1/sources/ii_opc.h create mode 100644 BaS_codewarrior/firebeeV1/sources/ii_or.h create mode 100644 BaS_codewarrior/firebeeV1/sources/ii_pea.h create mode 100644 BaS_codewarrior/firebeeV1/sources/ii_shd.h create mode 100644 BaS_codewarrior/firebeeV1/sources/ii_shift.h create mode 100644 BaS_codewarrior/firebeeV1/sources/ii_sub.h create mode 100644 BaS_codewarrior/firebeeV1/sources/illegal_instruction.s create mode 100644 BaS_codewarrior/firebeeV1/sources/last.c create mode 100644 BaS_codewarrior/firebeeV1/sources/last.s create mode 100644 BaS_codewarrior/firebeeV1/sources/macro.h create mode 100644 BaS_codewarrior/firebeeV1/sources/mmu.s create mode 100644 BaS_codewarrior/firebeeV1/sources/movem.h create mode 100644 BaS_codewarrior/firebeeV1/sources/sd_card.c create mode 100644 BaS_codewarrior/firebeeV1/sources/sd_card.s create mode 100644 BaS_codewarrior/firebeeV1/sources/sd_ide.c create mode 100644 BaS_codewarrior/firebeeV1/sources/sd_ide.s create mode 100644 BaS_codewarrior/firebeeV1/sources/startcf.c create mode 100644 BaS_codewarrior/firebeeV1/sources/startcf.h create mode 100644 BaS_codewarrior/firebeeV1/sources/supervisor.s create mode 100644 BaS_codewarrior/firebeeV1/sources/sysinit.c create mode 100644 BaS_codewarrior/firebeeV1/sources/sysinit.h create mode 100644 BaS_codewarrior/workspace.cww create mode 100644 FPGA_quartus/Coldari1.qsf create mode 100644 FPGA_quartus/DSP/DSP.vhd create mode 100644 FPGA_quartus/DSP/DSP.vhd.bak create mode 100644 FPGA_quartus/DSP/dsp56k.zip create mode 100644 FPGA_quartus/DSP/src/adgen_stage.vhd create mode 100644 FPGA_quartus/DSP/src/constants_pkg.vhd create mode 100644 FPGA_quartus/DSP/src/decode_stage.vhd create mode 100644 FPGA_quartus/DSP/src/exec_stage_alu.vhd create mode 100644 FPGA_quartus/DSP/src/exec_stage_bit_modify.vhd create mode 100644 FPGA_quartus/DSP/src/exec_stage_branch.vhd create mode 100644 FPGA_quartus/DSP/src/exec_stage_cc_flag_calc.vhd create mode 100644 FPGA_quartus/DSP/src/exec_stage_cr_mod.vhd create mode 100644 FPGA_quartus/DSP/src/exec_stage_loops.vhd create mode 100644 FPGA_quartus/DSP/src/fetch_stage.vhd create mode 100644 FPGA_quartus/DSP/src/mem_control.vhd create mode 100644 FPGA_quartus/DSP/src/memory_management.vhd create mode 100644 FPGA_quartus/DSP/src/parameter_pkg.vhd create mode 100644 FPGA_quartus/DSP/src/pipeline.vhd create mode 100644 FPGA_quartus/DSP/src/reg_file.vhd create mode 100644 FPGA_quartus/DSP/src/types_pkg.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF.vhd.bak create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF_pgk.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF_pgk.vhd.bak create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF5380/wf5380_control.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF5380/wf5380_pkg.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF5380/wf5380_registers.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF5380/wf5380_soc_top.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF5380/wf5380_top.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_am_detector.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_control.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_crc_logic.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_digital_pll.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_pkg.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_registers.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_top.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_top_soc.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_transceiver.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_gpio.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_interrupts.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_pkg.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_timers.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_top.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_top_soc.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_ctrl.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_rx.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_top.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_tx.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_SDC_IF/sd-card-interface.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_SDC_IF/sd-card-interface_soc.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_SDC_IF/sd-card-interface_soc.vhd.bak create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_pkg.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_top.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_top_soc.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_wave.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_ctrl_status.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_ctrl_status.vhd.bak create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_receive.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_receive.vhd.bak create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top_soc.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top_soc.vhd.bak create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_transmit.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_transmit.vhd.bak create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo0.bsf create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo0.cmp create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo0.qip create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo0.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo0.vhd.bak create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo1.bsf create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo1.cmp create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo1.qip create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo1.vhd create mode 100644 FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo1.vhd.bak create mode 100644 FPGA_quartus/Interrupt_Handler/interrupt_handler.tdf create mode 100644 FPGA_quartus/Interrupt_Handler/interrupt_handler.tdf.bak create mode 100644 FPGA_quartus/UNUSED create mode 100644 FPGA_quartus/Video/BLITTER/BLITTER.vhd create mode 100644 FPGA_quartus/Video/BLITTER/BLITTER.vhd.bak create mode 100644 FPGA_quartus/Video/DDR_CTR.tdf create mode 100644 FPGA_quartus/Video/DDR_CTR.tdf.bak create mode 100644 FPGA_quartus/Video/DDR_CTR_BLITTER.tdf.bak create mode 100644 FPGA_quartus/Video/UNUSED create mode 100644 FPGA_quartus/Video/VIDEO_MOD_MUX_CLUTCTR.tdf create mode 100644 FPGA_quartus/Video/VIDEO_MOD_MUX_CLUTCTR.tdf.bak create mode 100644 FPGA_quartus/Video/Video.bdf create mode 100644 FPGA_quartus/Video/altddio_bidir0.bsf create mode 100644 FPGA_quartus/Video/altddio_bidir0.cmp create mode 100644 FPGA_quartus/Video/altddio_bidir0.inc create mode 100644 FPGA_quartus/Video/altddio_bidir0.ppf create mode 100644 FPGA_quartus/Video/altddio_bidir0.qip create mode 100644 FPGA_quartus/Video/altddio_bidir0.vhd create mode 100644 FPGA_quartus/Video/altddio_out0.bsf create mode 100644 FPGA_quartus/Video/altddio_out0.cmp create mode 100644 FPGA_quartus/Video/altddio_out0.inc create mode 100644 FPGA_quartus/Video/altddio_out0.ppf create mode 100644 FPGA_quartus/Video/altddio_out0.qip create mode 100644 FPGA_quartus/Video/altddio_out0.vhd create mode 100644 FPGA_quartus/Video/altddio_out1.bsf create mode 100644 FPGA_quartus/Video/altddio_out1.cmp create mode 100644 FPGA_quartus/Video/altddio_out1.inc create mode 100644 FPGA_quartus/Video/altddio_out1.ppf create mode 100644 FPGA_quartus/Video/altddio_out1.qip create mode 100644 FPGA_quartus/Video/altddio_out1.vhd create mode 100644 FPGA_quartus/Video/altddio_out2.bsf create mode 100644 FPGA_quartus/Video/altddio_out2.cmp create mode 100644 FPGA_quartus/Video/altddio_out2.inc create mode 100644 FPGA_quartus/Video/altddio_out2.ppf create mode 100644 FPGA_quartus/Video/altddio_out2.qip create mode 100644 FPGA_quartus/Video/altddio_out2.vhd create mode 100644 FPGA_quartus/Video/altdpram0.bsf create mode 100644 FPGA_quartus/Video/altdpram0.cmp create mode 100644 FPGA_quartus/Video/altdpram0.inc create mode 100644 FPGA_quartus/Video/altdpram0.qip create mode 100644 FPGA_quartus/Video/altdpram0.vhd create mode 100644 FPGA_quartus/Video/altdpram0_wave0.jpg create mode 100644 FPGA_quartus/Video/altdpram0_wave1.jpg create mode 100644 FPGA_quartus/Video/altdpram0_waveforms.html create mode 100644 FPGA_quartus/Video/altdpram1.bsf create mode 100644 FPGA_quartus/Video/altdpram1.cmp create mode 100644 FPGA_quartus/Video/altdpram1.inc create mode 100644 FPGA_quartus/Video/altdpram1.qip create mode 100644 FPGA_quartus/Video/altdpram1.vhd create mode 100644 FPGA_quartus/Video/altdpram1_wave0.jpg create mode 100644 FPGA_quartus/Video/altdpram1_wave1.jpg create mode 100644 FPGA_quartus/Video/altdpram1_waveforms.html create mode 100644 FPGA_quartus/Video/altdpram2.bsf create mode 100644 FPGA_quartus/Video/altdpram2.cmp create mode 100644 FPGA_quartus/Video/altdpram2.inc create mode 100644 FPGA_quartus/Video/altdpram2.qip create mode 100644 FPGA_quartus/Video/altdpram2.vhd create mode 100644 FPGA_quartus/Video/altdpram2_wave0.jpg create mode 100644 FPGA_quartus/Video/altdpram2_wave1.jpg create mode 100644 FPGA_quartus/Video/altdpram2_waveforms.html create mode 100644 FPGA_quartus/Video/lpm_bustri0.bsf create mode 100644 FPGA_quartus/Video/lpm_bustri0.cmp create mode 100644 FPGA_quartus/Video/lpm_bustri0.inc create mode 100644 FPGA_quartus/Video/lpm_bustri0.qip create mode 100644 FPGA_quartus/Video/lpm_bustri0.vhd create mode 100644 FPGA_quartus/Video/lpm_bustri1.bsf create mode 100644 FPGA_quartus/Video/lpm_bustri1.cmp create mode 100644 FPGA_quartus/Video/lpm_bustri1.qip create mode 100644 FPGA_quartus/Video/lpm_bustri1.vhd create mode 100644 FPGA_quartus/Video/lpm_bustri2.bsf create mode 100644 FPGA_quartus/Video/lpm_bustri2.cmp create mode 100644 FPGA_quartus/Video/lpm_bustri2.qip create mode 100644 FPGA_quartus/Video/lpm_bustri2.vhd create mode 100644 FPGA_quartus/Video/lpm_bustri3.bsf create mode 100644 FPGA_quartus/Video/lpm_bustri3.cmp create mode 100644 FPGA_quartus/Video/lpm_bustri3.qip create mode 100644 FPGA_quartus/Video/lpm_bustri3.vhd create mode 100644 FPGA_quartus/Video/lpm_bustri4.bsf create mode 100644 FPGA_quartus/Video/lpm_bustri4.cmp create mode 100644 FPGA_quartus/Video/lpm_bustri4.qip create mode 100644 FPGA_quartus/Video/lpm_bustri4.vhd create mode 100644 FPGA_quartus/Video/lpm_bustri5.bsf create mode 100644 FPGA_quartus/Video/lpm_bustri5.cmp create mode 100644 FPGA_quartus/Video/lpm_bustri5.inc create mode 100644 FPGA_quartus/Video/lpm_bustri5.qip create mode 100644 FPGA_quartus/Video/lpm_bustri5.vhd create mode 100644 FPGA_quartus/Video/lpm_bustri6.bsf create mode 100644 FPGA_quartus/Video/lpm_bustri6.cmp create mode 100644 FPGA_quartus/Video/lpm_bustri6.qip create mode 100644 FPGA_quartus/Video/lpm_bustri6.vhd create mode 100644 FPGA_quartus/Video/lpm_bustri7.bsf create mode 100644 FPGA_quartus/Video/lpm_bustri7.cmp create mode 100644 FPGA_quartus/Video/lpm_bustri7.qip create mode 100644 FPGA_quartus/Video/lpm_bustri7.vhd create mode 100644 FPGA_quartus/Video/lpm_compare1.bsf create mode 100644 FPGA_quartus/Video/lpm_compare1.cmp create mode 100644 FPGA_quartus/Video/lpm_compare1.inc create mode 100644 FPGA_quartus/Video/lpm_compare1.qip create mode 100644 FPGA_quartus/Video/lpm_compare1.vhd create mode 100644 FPGA_quartus/Video/lpm_compare1_wave0.jpg create mode 100644 FPGA_quartus/Video/lpm_compare1_waveforms.html create mode 100644 FPGA_quartus/Video/lpm_constant0.bsf create mode 100644 FPGA_quartus/Video/lpm_constant0.cmp create mode 100644 FPGA_quartus/Video/lpm_constant0.qip create mode 100644 FPGA_quartus/Video/lpm_constant0.vhd create mode 100644 FPGA_quartus/Video/lpm_constant1.bsf create mode 100644 FPGA_quartus/Video/lpm_constant1.cmp create mode 100644 FPGA_quartus/Video/lpm_constant1.inc create mode 100644 FPGA_quartus/Video/lpm_constant1.qip create mode 100644 FPGA_quartus/Video/lpm_constant1.vhd create mode 100644 FPGA_quartus/Video/lpm_constant2.bsf create mode 100644 FPGA_quartus/Video/lpm_constant2.cmp create mode 100644 FPGA_quartus/Video/lpm_constant2.qip create mode 100644 FPGA_quartus/Video/lpm_constant2.vhd create mode 100644 FPGA_quartus/Video/lpm_constant3.bsf create mode 100644 FPGA_quartus/Video/lpm_constant3.cmp create mode 100644 FPGA_quartus/Video/lpm_constant3.qip create mode 100644 FPGA_quartus/Video/lpm_constant3.vhd create mode 100644 FPGA_quartus/Video/lpm_constant4.bsf create mode 100644 FPGA_quartus/Video/lpm_constant4.cmp create mode 100644 FPGA_quartus/Video/lpm_constant4.inc create mode 100644 FPGA_quartus/Video/lpm_constant4.qip create mode 100644 FPGA_quartus/Video/lpm_constant4.vhd create mode 100644 FPGA_quartus/Video/lpm_ff0.bsf create mode 100644 FPGA_quartus/Video/lpm_ff0.cmp create mode 100644 FPGA_quartus/Video/lpm_ff0.qip create mode 100644 FPGA_quartus/Video/lpm_ff0.vhd create mode 100644 FPGA_quartus/Video/lpm_ff1.bsf create mode 100644 FPGA_quartus/Video/lpm_ff1.cmp create mode 100644 FPGA_quartus/Video/lpm_ff1.qip create mode 100644 FPGA_quartus/Video/lpm_ff1.vhd create mode 100644 FPGA_quartus/Video/lpm_ff2.bsf create mode 100644 FPGA_quartus/Video/lpm_ff2.cmp create mode 100644 FPGA_quartus/Video/lpm_ff2.qip create mode 100644 FPGA_quartus/Video/lpm_ff2.vhd create mode 100644 FPGA_quartus/Video/lpm_ff3.bsf create mode 100644 FPGA_quartus/Video/lpm_ff3.cmp create mode 100644 FPGA_quartus/Video/lpm_ff3.qip create mode 100644 FPGA_quartus/Video/lpm_ff3.vhd create mode 100644 FPGA_quartus/Video/lpm_ff4.bsf create mode 100644 FPGA_quartus/Video/lpm_ff4.cmp create mode 100644 FPGA_quartus/Video/lpm_ff4.inc create mode 100644 FPGA_quartus/Video/lpm_ff4.qip create mode 100644 FPGA_quartus/Video/lpm_ff4.vhd create mode 100644 FPGA_quartus/Video/lpm_ff5.bsf create mode 100644 FPGA_quartus/Video/lpm_ff5.cmp create mode 100644 FPGA_quartus/Video/lpm_ff5.inc create mode 100644 FPGA_quartus/Video/lpm_ff5.qip create mode 100644 FPGA_quartus/Video/lpm_ff5.vhd create mode 100644 FPGA_quartus/Video/lpm_ff6.bsf create mode 100644 FPGA_quartus/Video/lpm_ff6.cmp create mode 100644 FPGA_quartus/Video/lpm_ff6.inc create mode 100644 FPGA_quartus/Video/lpm_ff6.qip create mode 100644 FPGA_quartus/Video/lpm_ff6.vhd create mode 100644 FPGA_quartus/Video/lpm_fifoDZ.bsf create mode 100644 FPGA_quartus/Video/lpm_fifoDZ.cmp create mode 100644 FPGA_quartus/Video/lpm_fifoDZ.qip create mode 100644 FPGA_quartus/Video/lpm_fifoDZ.vhd create mode 100644 FPGA_quartus/Video/lpm_fifoDZ_wave0.jpg create mode 100644 FPGA_quartus/Video/lpm_fifoDZ_waveforms.html create mode 100644 FPGA_quartus/Video/lpm_fifo_dc0.bsf create mode 100644 FPGA_quartus/Video/lpm_fifo_dc0.cmp create mode 100644 FPGA_quartus/Video/lpm_fifo_dc0.inc create mode 100644 FPGA_quartus/Video/lpm_fifo_dc0.qip create mode 100644 FPGA_quartus/Video/lpm_fifo_dc0.vhd create mode 100644 FPGA_quartus/Video/lpm_fifo_dc0_wave0.jpg create mode 100644 FPGA_quartus/Video/lpm_fifo_dc0_waveforms.html create mode 100644 FPGA_quartus/Video/lpm_latch1.bsf create mode 100644 FPGA_quartus/Video/lpm_latch1.cmp create mode 100644 FPGA_quartus/Video/lpm_latch1.qip create mode 100644 FPGA_quartus/Video/lpm_latch1.vhd create mode 100644 FPGA_quartus/Video/lpm_mux0.bsf create mode 100644 FPGA_quartus/Video/lpm_mux0.cmp create mode 100644 FPGA_quartus/Video/lpm_mux0.inc create mode 100644 FPGA_quartus/Video/lpm_mux0.qip create mode 100644 FPGA_quartus/Video/lpm_mux0.vhd create mode 100644 FPGA_quartus/Video/lpm_mux1.bsf create mode 100644 FPGA_quartus/Video/lpm_mux1.cmp create mode 100644 FPGA_quartus/Video/lpm_mux1.inc create mode 100644 FPGA_quartus/Video/lpm_mux1.qip create mode 100644 FPGA_quartus/Video/lpm_mux1.vhd create mode 100644 FPGA_quartus/Video/lpm_mux2.bsf create mode 100644 FPGA_quartus/Video/lpm_mux2.cmp create mode 100644 FPGA_quartus/Video/lpm_mux2.inc create mode 100644 FPGA_quartus/Video/lpm_mux2.qip create mode 100644 FPGA_quartus/Video/lpm_mux2.vhd create mode 100644 FPGA_quartus/Video/lpm_mux3.bsf create mode 100644 FPGA_quartus/Video/lpm_mux3.cmp create mode 100644 FPGA_quartus/Video/lpm_mux3.qip create mode 100644 FPGA_quartus/Video/lpm_mux3.vhd create mode 100644 FPGA_quartus/Video/lpm_mux4.bsf create mode 100644 FPGA_quartus/Video/lpm_mux4.cmp create mode 100644 FPGA_quartus/Video/lpm_mux4.qip create mode 100644 FPGA_quartus/Video/lpm_mux4.vhd create mode 100644 FPGA_quartus/Video/lpm_mux5.bsf create mode 100644 FPGA_quartus/Video/lpm_mux5.cmp create mode 100644 FPGA_quartus/Video/lpm_mux5.inc create mode 100644 FPGA_quartus/Video/lpm_mux5.qip create mode 100644 FPGA_quartus/Video/lpm_mux5.vhd create mode 100644 FPGA_quartus/Video/lpm_mux6.bsf create mode 100644 FPGA_quartus/Video/lpm_mux6.cmp create mode 100644 FPGA_quartus/Video/lpm_mux6.inc create mode 100644 FPGA_quartus/Video/lpm_mux6.qip create mode 100644 FPGA_quartus/Video/lpm_mux6.vhd create mode 100644 FPGA_quartus/Video/lpm_muxDZ.bsf create mode 100644 FPGA_quartus/Video/lpm_muxDZ.cmp create mode 100644 FPGA_quartus/Video/lpm_muxDZ.qip create mode 100644 FPGA_quartus/Video/lpm_muxDZ.vhd create mode 100644 FPGA_quartus/Video/lpm_muxDZ2.bsf create mode 100644 FPGA_quartus/Video/lpm_muxDZ2.cmp create mode 100644 FPGA_quartus/Video/lpm_muxDZ2.qip create mode 100644 FPGA_quartus/Video/lpm_muxDZ2.vhd create mode 100644 FPGA_quartus/Video/lpm_muxVDM.bsf create mode 100644 FPGA_quartus/Video/lpm_muxVDM.cmp create mode 100644 FPGA_quartus/Video/lpm_muxVDM.qip create mode 100644 FPGA_quartus/Video/lpm_muxVDM.vhd create mode 100644 FPGA_quartus/Video/lpm_shiftreg0.bsf create mode 100644 FPGA_quartus/Video/lpm_shiftreg0.cmp create mode 100644 FPGA_quartus/Video/lpm_shiftreg0.inc create mode 100644 FPGA_quartus/Video/lpm_shiftreg0.qip create mode 100644 FPGA_quartus/Video/lpm_shiftreg0.vhd create mode 100644 FPGA_quartus/Video/lpm_shiftreg1.bsf create mode 100644 FPGA_quartus/Video/lpm_shiftreg1.cmp create mode 100644 FPGA_quartus/Video/lpm_shiftreg1.qip create mode 100644 FPGA_quartus/Video/lpm_shiftreg1.vhd create mode 100644 FPGA_quartus/Video/lpm_shiftreg2.bsf create mode 100644 FPGA_quartus/Video/lpm_shiftreg2.cmp create mode 100644 FPGA_quartus/Video/lpm_shiftreg2.qip create mode 100644 FPGA_quartus/Video/lpm_shiftreg2.vhd create mode 100644 FPGA_quartus/Video/lpm_shiftreg3.bsf create mode 100644 FPGA_quartus/Video/lpm_shiftreg3.cmp create mode 100644 FPGA_quartus/Video/lpm_shiftreg3.inc create mode 100644 FPGA_quartus/Video/lpm_shiftreg3.qip create mode 100644 FPGA_quartus/Video/lpm_shiftreg3.vhd create mode 100644 FPGA_quartus/Video/lpm_shiftreg4.bsf create mode 100644 FPGA_quartus/Video/lpm_shiftreg4.cmp create mode 100644 FPGA_quartus/Video/lpm_shiftreg4.inc create mode 100644 FPGA_quartus/Video/lpm_shiftreg4.qip create mode 100644 FPGA_quartus/Video/lpm_shiftreg4.vhd create mode 100644 FPGA_quartus/Video/lpm_shiftreg5.bsf create mode 100644 FPGA_quartus/Video/lpm_shiftreg5.cmp create mode 100644 FPGA_quartus/Video/lpm_shiftreg5.inc create mode 100644 FPGA_quartus/Video/lpm_shiftreg5.qip create mode 100644 FPGA_quartus/Video/lpm_shiftreg5.vhd create mode 100644 FPGA_quartus/Video/lpm_shiftreg6.bsf create mode 100644 FPGA_quartus/Video/lpm_shiftreg6.cmp create mode 100644 FPGA_quartus/Video/lpm_shiftreg6.inc create mode 100644 FPGA_quartus/Video/lpm_shiftreg6.qip create mode 100644 FPGA_quartus/Video/lpm_shiftreg6.vhd create mode 100644 FPGA_quartus/altddio_out0.bsf create mode 100644 FPGA_quartus/altddio_out0.cmp create mode 100644 FPGA_quartus/altddio_out0.inc create mode 100644 FPGA_quartus/altddio_out0.ppf create mode 100644 FPGA_quartus/altddio_out0.qip create mode 100644 FPGA_quartus/altddio_out0.vhd create mode 100644 FPGA_quartus/altddio_out3.bsf create mode 100644 FPGA_quartus/altddio_out3.cmp create mode 100644 FPGA_quartus/altddio_out3.inc create mode 100644 FPGA_quartus/altddio_out3.ppf create mode 100644 FPGA_quartus/altddio_out3.qip create mode 100644 FPGA_quartus/altddio_out3.vhd create mode 100644 FPGA_quartus/altpll0.bsf create mode 100644 FPGA_quartus/altpll0.cmp create mode 100644 FPGA_quartus/altpll0.inc create mode 100644 FPGA_quartus/altpll0.ppf create mode 100644 FPGA_quartus/altpll0.qip create mode 100644 FPGA_quartus/altpll0.vhd create mode 100644 FPGA_quartus/altpll0_waveforms.html create mode 100644 FPGA_quartus/altpll1.bsf create mode 100644 FPGA_quartus/altpll1.cmp create mode 100644 FPGA_quartus/altpll1.inc create mode 100644 FPGA_quartus/altpll1.ppf create mode 100644 FPGA_quartus/altpll1.qip create mode 100644 FPGA_quartus/altpll1.vhd create mode 100644 FPGA_quartus/altpll1_waveforms.html create mode 100644 FPGA_quartus/altpll2.bsf create mode 100644 FPGA_quartus/altpll2.cmp create mode 100644 FPGA_quartus/altpll2.inc create mode 100644 FPGA_quartus/altpll2.ppf create mode 100644 FPGA_quartus/altpll2.qip create mode 100644 FPGA_quartus/altpll2.vhd create mode 100644 FPGA_quartus/altpll2_waveforms.html create mode 100644 FPGA_quartus/altpll3.bsf create mode 100644 FPGA_quartus/altpll3.cmp create mode 100644 FPGA_quartus/altpll3.inc create mode 100644 FPGA_quartus/altpll3.ppf create mode 100644 FPGA_quartus/altpll3.qip create mode 100644 FPGA_quartus/altpll3.vhd create mode 100644 FPGA_quartus/altpll3_waveforms.html create mode 100644 FPGA_quartus/altpll4.bsf create mode 100644 FPGA_quartus/altpll4.cmp create mode 100644 FPGA_quartus/altpll4.inc create mode 100644 FPGA_quartus/altpll4.mif create mode 100644 FPGA_quartus/altpll4.ppf create mode 100644 FPGA_quartus/altpll4.qip create mode 100644 FPGA_quartus/altpll4.tdf create mode 100644 FPGA_quartus/altpll_reconfig0.bsf create mode 100644 FPGA_quartus/altpll_reconfig0.qip create mode 100644 FPGA_quartus/altpll_reconfig1.bsf create mode 100644 FPGA_quartus/altpll_reconfig1.cmp create mode 100644 FPGA_quartus/altpll_reconfig1.inc create mode 100644 FPGA_quartus/altpll_reconfig1.qip create mode 100644 FPGA_quartus/altpll_reconfig1.tdf create mode 100644 FPGA_quartus/altpll_reconfig1_pllrcfg_bju.tdf create mode 100644 FPGA_quartus/altpll_reconfig1_pllrcfg_t4q.tdf create mode 100644 FPGA_quartus/firebee1.asm.rpt create mode 100644 FPGA_quartus/firebee1.bdf create mode 100644 FPGA_quartus/firebee1.done create mode 100644 FPGA_quartus/firebee1.dpf create mode 100644 FPGA_quartus/firebee1.fit.rpt create mode 100644 FPGA_quartus/firebee1.fit.summary create mode 100644 FPGA_quartus/firebee1.flow.rpt create mode 100644 FPGA_quartus/firebee1.map.rpt create mode 100644 FPGA_quartus/firebee1.map.summary create mode 100644 FPGA_quartus/firebee1.pin create mode 100644 FPGA_quartus/firebee1.qsf create mode 100644 FPGA_quartus/firebee1.qws create mode 100644 FPGA_quartus/firebee1.rbf create mode 100644 FPGA_quartus/firebee1.sof create mode 100644 FPGA_quartus/firebee1.tan.rpt create mode 100644 FPGA_quartus/firebee1.tan.summary create mode 100644 FPGA_quartus/firebee1_assignment_defaults.qdf create mode 100644 FPGA_quartus/firebeei1.qpf create mode 100644 FPGA_quartus/firebeei1.qws create mode 100644 FPGA_quartus/lpm_bustri_BYT.bsf create mode 100644 FPGA_quartus/lpm_bustri_BYT.cmp create mode 100644 FPGA_quartus/lpm_bustri_BYT.inc create mode 100644 FPGA_quartus/lpm_bustri_BYT.qip create mode 100644 FPGA_quartus/lpm_bustri_BYT.vhd create mode 100644 FPGA_quartus/lpm_bustri_LONG.bsf create mode 100644 FPGA_quartus/lpm_bustri_LONG.cmp create mode 100644 FPGA_quartus/lpm_bustri_LONG.inc create mode 100644 FPGA_quartus/lpm_bustri_LONG.qip create mode 100644 FPGA_quartus/lpm_bustri_LONG.vhd create mode 100644 FPGA_quartus/lpm_bustri_WORD.bsf create mode 100644 FPGA_quartus/lpm_bustri_WORD.cmp create mode 100644 FPGA_quartus/lpm_bustri_WORD.inc create mode 100644 FPGA_quartus/lpm_bustri_WORD.qip create mode 100644 FPGA_quartus/lpm_bustri_WORD.vhd create mode 100644 FPGA_quartus/lpm_counter0.bsf create mode 100644 FPGA_quartus/lpm_counter0.cmp create mode 100644 FPGA_quartus/lpm_counter0.qip create mode 100644 FPGA_quartus/lpm_counter0.vhd create mode 100644 FPGA_quartus/lpm_counter0_wave0.jpg create mode 100644 FPGA_quartus/lpm_counter0_waveforms.html create mode 100644 FPGA_quartus/lpm_counter1_waveforms.html create mode 100644 FPGA_quartus/lpm_fifo_dc0_waveforms.html create mode 100644 FPGA_quartus/lpm_latch0.bsf create mode 100644 FPGA_quartus/lpm_latch0.cmp create mode 100644 FPGA_quartus/lpm_latch0.qip create mode 100644 FPGA_quartus/lpm_latch0.vhd create mode 100644 FPGA_quartus/serv_req_info.txt create mode 100644 FPGA_quartus/undo_redo.txt create mode 100644 Flash/BaS_15_12_10.S19 create mode 100644 Flash/BaS_15_12_10.zip create mode 100644 Flash/emutos2.s19 create mode 100644 Flash/firebee_fpga_15_12_10.rbf create mode 100644 Flash/firebee_fpga_15_12_10.zip create mode 100644 Flash/firetos_firebee.hex create mode 100644 MLAB/firebee1/Makefile create mode 100644 MLAB/firebee1/NMakefile create mode 100644 MLAB/firebee1/PS2Atari_v1_4.asm create mode 100644 MLAB/firebee1/Thumbs.db create mode 100644 MLAB/firebee1/circuit.bmp create mode 100644 MLAB/firebee1/firebee1.asm create mode 100644 MLAB/firebee1/firebee1.cof create mode 100644 MLAB/firebee1/firebee1.err create mode 100644 MLAB/firebee1/firebee1.hex create mode 100644 MLAB/firebee1/firebee1.lst create mode 100644 MLAB/firebee1/firebee1.map create mode 100644 MLAB/firebee1/firebee1.mcp create mode 100644 MLAB/firebee1/firebee1.mcs create mode 100644 MLAB/firebee1/firebee1.mcw create mode 100644 MLAB/firebee1/firebeei1.map create mode 100644 MLAB/firebee1/readme.txt diff --git a/BaS_codewarrior/FireBee/Flash/BaS_15_12_10.S19 b/BaS_codewarrior/FireBee/Flash/BaS_15_12_10.S19 new file mode 100644 index 0000000..27a561c --- /dev/null +++ b/BaS_codewarrior/FireBee/Flash/BaS_15_12_10.S19 @@ -0,0 +1,362 @@ +S0030000FC +S321E000000060064EF9E000000846FC2700203CFF0000004E7B0C0F23C0FF10084483 +S321E000001C203CFF0400014E7B0008428023C0FF040000203CFF1000074E7B0C04BE +S321E0000038203CFF1010014E7B0C054FF9FF100FFC203C000C81004E7B00024E719B +S321E000005460FF00000D0E4E7541F9FF00090020BCFFFFFFFF41F9FF00090410BC41 +S321E0000070000541F9FF00860C20BC534C542041F9FF00860C20BC4F4B212041F913 +S321E000008CFF00860C20BC00000A0D4E7541F9FF000A4310BC00FF41F9FF000A4453 +S321E00000A830BCF3CF41F9FF000A4830BC023F41F9FF000A4A30BC023F41F9FF00FD +S321E00000C40A4C10BC000C41F9FF000A4E10BC00FC41F9FF000A4F10BC00FC41F91F +S321E00000E0FF000A5030BC1FFF41F9FF000A5210BC002D41F9FF000A1710BC001EE9 +S321E00000FC4E7551FC41F9FF008640421041F9FF00860410BC00DD41F9FF0086185E +S321E0000118421041F9FF00861C10BC002441F9FF00860810BC002041F9FF0086084E +S321E000013410BC003041F9FF00860810BC004041F9FF00860810BC005041F9FF00DE +S321E0000150860810BC001041F9FF00861430BC870041F9FF00861010BC000341F925 +S321E000016CFF00860010BC00B341F9FF00860010BC000741F9FF00866820BC0000F8 +S321E0000188000F41F9FF00868820BC0000000F41F9FF00866E30BC00F041F9FF00F2 +S321E00001A4868E30BC00F041F9FF00863810BC000141F9FF00860810BC000541F9D3 +S321E00001C0FF008940421041F9FF00890410BC00DD41F9FF008918421041F9FF004F +S321E00001DC891C10BC002441F9FF00890810BC002041F9FF00890810BC003041F9D6 +S321E00001F8FF00890810BC004041F9FF00890810BC005041F9FF00890810BC0010DD +S321E000021441F9FF00891430BC020041F9FF00891010BC000341F9FF00890010BCF5 +S321E000023000B341F9FF00890010BC000741F9FF00896820BC0000000F41F9FF0036 +S321E000024C898820BC0000000F41F9FF00896E30BC00F041F9FF00898E30BC00F07C +S321E000026841F9FF00893810BC000141F9FF00890810BC000541F9FF00076010BCC6 +S321E0000284003F41F9FF00860C20BC00000A0D41F9FF00860C20BC5345524941F967 +S321E00002A0FF00860C20BC414C204F41F9FF00860C20BC4B21202041F9FF00860CD5 +S321E00002BC20BC00000A0D4E7541F9FF00860C20BC444452412039FF000104080063 +S321E00002D8001C660000B641F9FF00000420BC000002AA41F9FF00002020BC0000F2 +S321E00002F4001A41F9FF00002420BC0800001A41F9FF00002820BC1000001A41F9F2 +S321E0000310FF00002C20BC1800001A41F9FF00010820BC7362283041F9FF00010C21 +S321E000032C20BC4677000041F9FF00010420BCE10D000241F9FF00010020BC4001D5 +S321E0000348000041F9FF00010020BC048D000041F9FF00010420BCE10D000241F9C8 +S321E0000364FF00010420BCE10D000441F9FF00010420BCE10D000441F9FF0001007F +S321E000038020BC008D000041F9FF00010420BC710D0F0041F9FF00860C20BC4D2057 +S321E000039C4F4B41F9FF00860C20BC2120202041F9FF00860C20BC00000A0D4E751C +S321E00003B841F9FF00860C20BC4642435341F9FF00050020BCE000000041F9FF004B +S321E00003D4050820BC0004118041F9FF00050420BC007F000141F9FF00050C20BCE5 +S321E00003F0FFF0000041F9FF00051420BC0004218041F9FF00051020BC000F00010F +S321E000040C41F9FF00051820BCF000000041F9FF00052020BC0004210041F9FF0034 +S321E0000428051C20BC07FF000141F9FF00052420BCF800000041F9FF00052C20BC52 +S321E00004440004018041F9FF00052820BC03FF000141F9FF00053020BC4000000062 +S321E000046041F9FF00053820BC0000001841F9FF00053420BC3FFF000141F9FF006A +S321E000047C860C20BC204F4B2141F9FF00860C20BC00000A0D4E7551FC41F9FF002E +S321E0000498860C20BC4650474143F9FF000A0745F9FF000A270891000108910002E7 +S321E00004B40812000066FA0812000566F461FF000009AA08D1000261FF000009A05C +S321E00004D00812000067FA61FF0000099441F9E0700000B1FCE08000006E5610182F +S321E00004EC7208E288650608910003600408D1000308D1000108910001538166E64F +S321E00005080812000567D4223C00000FA008D100014E7108910001538166F26028A3 +S321E000052447F9FF00090820132C3C000186A04A516A0822139280D2866AF44E75F6 +S321E000054041F9FF00860C20BC204E4F5441F9FF00860C20BC204F4B2141F9FF0046 +S321E000055C860C20BC00000A0D41F9FF00860C20BC504C4C2041F9F000060043F9FD +S321E0000578F000080061A6317C001B0048619E317C000100086196317C000C00000D +S321E0000594618E317C000C00406186317C000101146100FF7E317C000101186100CD +S321E00005B0FF74317C0001011C6100FF6A317C000100106100FF60317C00010050C5 +S321E00005CC6100FF56317C000101446100FF4C317C000100446100FF42317C00A5F2 +S321E00005E800046100FF38421141F9FF00860C20BC5345542141F9FF00860C20BCC7 +S321E000060400000A0D4E7551FC700B33C0F00004004E7141F9600000004E7120BC77 +S321E0000620000504004E7120BC000720004E7120BC000701224E7120BC00050400A4 +S321E000063C4E7120BC000600004E7120BC000600004E7120BC000070124E71203C42 +S321E00006580107000223C0F00004004E7541F9FF00860C20BC50434920203C003FBE +S321E0000674003F23C0FF000C00203C0000200423C0FF000B0C203C1010000023C07F +S321E0000690FF000B3C203C0700002023C0FF000B84203C0000100081B9FF000B601E +S321E00006AC203C803FFFFF424023C0FF000B70203CD00FFFFF424023C0FF000B7438 +S321E00006C842B9FF000B78203C0309000023C0FF000B80203CFFFFFFFEC1B9FF000E +S321E00006E40B6041F9FF00860C20BC4F4B212041F9FF00860C20BC00000A0D4E75A6 +S321E000070041F9FF00860C20BC4E454320203C8000880023C0FF000BF841F9D00007 +S321E000071C00002210203C33103500B280670E41F9FF00860C20BC4E4F5420601006 +S321E0000738203C800088E423C0FF000BF810BC0020203C000088E423C0FF000BF8F9 +S321E000075441F9FF00860C20BC4F4B212041F9FF00860C20BC00000A0D4E7551FC53 +S321E00007702F0741F9FF00860C20BC4456492041F9FF008F0410BC003442872007EB +S321E000078C2E0052870C800000000A6E00035241F9FF008F20421041F9FF008F0801 +S321E00007A8421041F9FF008F0810BC000A1239FF008F1041F9FF008F0C421041F90E +S321E00007C4FF008F08421041F9FF008F2010BC000141F9FF008F0810BC00B041F910 +S321E00007E0FF008F1010BC007A61FF0000064A70A241F9FF008F0CB010669070B0C7 +S321E00007FC41F9FF008F08B010668441F9FF008F0C10100280000000FD108041F944 +S321E0000818FF008F10421041F9FF008F0C0810000167F441F9FF008F0C1010028030 +S321E0000834000000FD1080A54001F9FF008F0841F9FF008F1010BC007B61FF000041 +S321E000085005E670A641F9FF008F0CB0106600FF2C70B041F9FF008F08B01066006A +S321E000086CFF1E41F9FF008F0C10100280000000FD108041F9FF008F0810100280F8 +S321E0000888000000EF10801039FF008F1041F9FF008F0C0810000167F441F9FF0087 +S321E00008A48F0C10100280000000FD1080A74001F9FF008F0861FF0000057A1239E7 +S321E00008C0FF008F1041F9FF008F0C0810000167F441F9FF008F0C101002800000DA +S321E00008DC00FD108041F9FF008F0842101039FF008F100C01004C6600FE9641F9F7 +S321E00008F8FF008F08421041F9FF008F0C421041F9FF008F0C0810000566F441F96B +S321E0000914FF008F0810BC00B041F9FF008F1010BC007A61FF0000052870A241F9D8 +S321E0000930FF008F0CB0106600FE5270B041F9FF008F08B0106600FE4441F9FF0024 +S321E000094C8F0C10100280000000FD108041F9FF008F1010BC000841F9FF008F0C5F +S321E00009680810000167F441F9FF008F0C10100280000000FD108041F9FF008F103E +S321E000098410BC00BF41F9FF008F0C0810000167F441F9FF008F0C10100280000028 +S321E00009A000FD108041F9FF008F08421041F9FF008F0C421041F9FF008F0C081094 +S321E00009BC000566F441F9FF008F0810BC00B041F9FF008F1010BC007A61FF000010 +S321E00009D8047A70A241F9FF008F0CB0106600FDA470B041F9FF008F08B0106600DC +S321E00009F4FD9641F9FF008F0C10100280000000FD108041F9FF008F1010BC0008BF +S321E0000A1041F9FF008F0C0810000167F441F9FF008F0C10100280000000FD108099 +S321E0000A2CA54001F9FF008F0841F9FF008F1010BC007B61FF0000041070A641F970 +S321E0000A48FF008F0CB0106600FD3A70B041F9FF008F08B0106600FD2C41F9FF003D +S321E0000A648F0C10100280000000FD108041F9FF008F0810100280000000EF1080D5 +S321E0000A801039FF008F1041F9FF008F0C0810000167F441F9FF008F0C10100280CF +S321E0000A9C000000FD1080A74001F9FF008F0861FF000003A41239FF008F1041F92A +S321E0000AB8FF008F0C0810000167F441F9FF008F0C10100280000000FD108041F9F1 +S321E0000AD4FF008F0842101039FF008F100C0100BF6600FCA4601441F9FF008F083B +S321E0000AF0421041F9FF00860C20BC4E4F542041F9FF00860C20BC4F4B212041F93E +S321E0000B0CFF00860C20BC00000A0D2E1F4E7551FC2F0741F9FF00860C20BC4143A5 +S321E0000B28393741F9FF000A4D10BC00BC41F9FF008800421041F9FF00880042101D +S321E0000B4441F9FF00881430BC030041F9FF00884010BC000341F9FF00886820BC16 +S321E0000B600F00000041F9FF00888820BC0F00000041F9FF00886E30BC00F041F90B +S321E0000B7CFF00888E30BC00F04287600000C841F9FF00880810BC002041F9FF00A7 +S321E0000B98880810BC003041F9FF00880810BC004041F9FF00880810BC000541F926 +S321E0000BB4FF00880C20BCE000000041F9FF00880C20BC02000000A540600A41F9BC +S321E0000BD0FF00880C429052800C800000000D6DEE41F9FF00880C20BCC00000008F +S321E0000BEC41F9FF00880C20BC82000000A540600A41F9FF00880C429052800C8090 +S321E0000C080000000D6DEE61FF000002402239FF00880C2001028080000FFF0C8035 +S321E0000C248000080066242039FF00880C4AB9FF00880C66160281E0000FFF0C81C0 +S321E0000C40E000080066080C8002000000671852870C87000186A06D00FF3241F9E4 +S321E0000C5CFF00860C20BC204E4F5441F9FF00880C20BCE000000041F9FF00880CC2 +S321E0000C7820BC1600000041F9FF00880C20BC06060000A740600A41F9FF00880CB5 +S321E0000C94429052800C800000000D6DEE41F9FF00880C20BCE000000041F9FF0004 +S321E0000CB0880C20BC10000000A540600A41F9FF00880C429052800C800000000D69 +S321E0000CCC6DEE41F9FF00880C20BCE000000041F9FF00880C20BC12000000A540A2 +S321E0000CE8600A41F9FF00880C429052800C800000000D6DEE41F9FF00880C20BC92 +S321E0000D04E000000041F9FF00880C20BC0600000041F9FF00880C4290A740600A6E +S321E0000D2041F9FF00880C429052800C800000000D6DEE41F9FF008888201008C02B +S321E0000D3C001D208041F9FF00880C429041F9FF00860C20BC204F4B2141F9FF009E +S321E0000D58860C20BC00000A0D2E1F4E75203C000C812023C0FF1008104E7B000226 +S321E0000D744E7161FFFFFFF32061FFFFFFF38261FFFFFFF2D861FFFFFFF62E61FF70 +S321E0000D90FFFFF5341039FF000A2C08000006670661FFFFFFF8C261FFFFFFF6ECE9 +S321E0000DAC61FFFFFFF85E61FFFFFFF9BC1039FF000A2C08000006670661FFFFFF27 +S321E0000DC8F93A61FFFFFFFD5041FA002843F9E0000E8893C8247C1FE00000264ACC +S321E0000DE4D7C949F9E000274824D824D824D824D8B1CC6DF44ED34E752F002039A2 +S321E0000E00FF000908048000142440B0B9FF00090865F8201F4E7551FC2F00203937 +S321E0000E1CFF0009080480000203A0B0B9FF00090865F8201F4E7551FC2F002039EE +S321E0000E38FF000908048000003390B0B9FF00090865F8201F4E7551FC2F002039B4 +S321E0000E54FF0009080480000019C8B0B9FF00090865F8201F4E7551FC2F0020397A +S321E0000E70FF000908048000000528B0B9FF00090865F8201F4E7551FC61FF00003A +S321E0000E8C02C24A806F0661FF000002581039FF000A2C08000006675E4DF9FF0011 +S321E0000EA8860C47F9FF00890C49F9FF00890C4BF9FF00895826BC4143504661FF8C +S321E0000EC4FFFFFF382CBC5049432010141C8012141C8114141C822CBC00000A0DCB +S321E0000EE016BC000141F900E0000043F9E060000045F9E07000001039FF000A2C9B +S321E0000EFC08000006661241F900E0000043F9E040000045F9E050000020D9B3CA14 +S321E0000F186DFA1039FF000A2C08000006670000C641F889614281744010140C00ED +S321E0000F340081661C10141081114000025281B40166F210BC003F102800025280B9 +S321E0000F501140000261FF0000069661FF0000084061FF000017E242B9F00100045F +S321E0000F6C41F9FF000F0030BCAAA8203C0001010123C0FF000800703F13C0FF0033 +S321E0000F88077E103C00FE13C0F00100044E7141F9FF000F0510BC00FE4E7141F901 +S321E0000FA4FF000F0C10BC00FF4E7141F9FF00070C20BCFFFFFF0041F9FF0007083A +S321E0000FC020BCBFFFFFFE203C0000000123C0FF0400004E714E7141F88802117C87 +S321E0000FDC000EFFFE10BC008061FFFFFFFE32421041F9F000041020FC032002BAA3 +S321E0000FF820FC020C020A20FC0190015D20FC020C020A41E8FFE020BC0107000292 +S321E000101441F8040043F808004298429842984298B3C86EF4704811C08007203CA9 +S321E000103000E0000021C0042E203C752019F321C00420203C237698AA21C0043A73 +S321E000104C203C5555AAAA21C0051A203C1FE0000021C005A4203C1357BD1321C0EC +S321E000106805A81039FF000A2C08000007670446FC07004EF900E000304E7551FC31 +S321E00010842F002039FF000908048000142440B0B9FF00090865F8201F4E7551FCB1 +S321E00010A02144003408280007002C67F82A280038A168002C4E7551FC183C00FFD1 +S321E00010BC61FFFFFFFFE20C0500FF67F04E7551FC7612183C00FF61FFFFFFFFE460 +S321E00010D80C0500FE66F461FFFFFFFFC014C5538366F44E75283C082000FF41F9FF +S321E00010F4FF008A00203C385588972140000C183C00FF61FFFFFFFF98183C004020 +S321E000111061FFFFFFFF8E183C000061FFFFFFFF84183C000061FFFFFFFF7A183C3E +S321E000112C000061FFFFFFFF70183C000061FFFFFFFF66183C009561FFFFFFFF5C3B +S321E00011484E7551FC598F43F9FF00860C22BC53442D4322BC617264202A7A045AC4 +S321E0001164203C1FFFFFFF23C0FF000A5041F9FF008A0020BC802D3C00203C385564 +S321E000118088972140000C283C082000FF21C40034A168002C20BCC00D3C0061FFC3 +S321E000119CFFFFFEE820BC802D3C0061FFFFFFFEF861FFFFFFFEF261FFFFFFFEECBE +S321E00011B861FFFFFFFEE661FFFFFFFEE061FFFFFFFEDA61FFFFFFFED461FFFFFFF3 +S321E00011D4FECE61FFFFFFFEC861FFFFFFFEC220BC800D3C0061FFFFFFFEB661FFF4 +S321E00011F0FFFFFEB020BC802D3C0061FFFFFFFEA461FFFFFFFE9E61FFFFFFFE7CBA +S321E000120C2C3C00000064263C0000000A61FFFFFFFED22E3C0000000A183C00FFB3 +S321E000122861FFFFFFFE760C050001670C538766F053866700037260D8183C00FFFD +S321E000124461FFFFFFFE5A183C004861FFFFFFFE50183C000061FFFFFFFE46183C60 +S321E0001260000061FFFFFFFE3C183C000161FFFFFFFE32183C00AA61FFFFFFFE288F +S321E000127C183C008761FFFFFFFE1E61FFFFFFFE300C05000567300C05000166A8C2 +S321E000129861FFFFFFFE0661FFFFFFFE0061FFFFFFFDFA61FFFFFFFDF40C0500AA37 +S321E00012B46600013622BC5344484312BC0020183C00FF61FFFFFFFDD8183C007A59 +S321E00012D061FFFFFFFDCE183C000061FFFFFFFDC4183C000061FFFFFFFDBA183CC3 +S321E00012EC000061FFFFFFFDB0183C000061FFFFFFFDA6183C000161FFFFFFFD9C54 +S321E000130861FFFFFFFDAE2C3C566572310C05000567A80C05000166A261FFFFFF77 +S321E0001324FD7E61FFFFFFFD7861FFFFFFFD7261FFFFFFFD6C2C3C00004E20183CBB +S321E000134000FF61FFFFFFFD5C183C007761FFFFFFFD52183C000061FFFFFFFD4886 +S321E000135C183C000061FFFFFFFD3E183C000061FFFFFFFD34183C000061FFFFFF0D +S321E0001378FD2A183C009561FFFFFFFD2061FFFFFFFD320C05000567AE183C00FFDD +S321E000139461FFFFFFFD0A183C006961FFFFFFFD00183C004061FFFFFFFCF6183CA2 +S321E00013B0000061FFFFFFFCEC183C000061FFFFFFFCE2183C000061FFFFFFFCD8DF +S321E00013CC183C009561FFFFFFFCCE61FFFFFFFCE04A0567160C05000567AA538608 +S321E00013E86600FF5453836600FE28600001A6203C385511202140000C183C00FF07 +S321E000140461FFFFFFFC9A183C004A61FFFFFFFC90183C000061FFFFFFFC86183CE2 +S321E0001420000061FFFFFFFC7C183C000061FFFFFFFC72183C000061FFFFFFFC68BE +S321E000143C183C009561FFFFFFFC5E244D61FFFFFFFC8245ED00017E07129A538782 +S321E000145866FA12BC0020183C00FF61FFFFFFFC3C183C004961FFFFFFFC32183CDE +S321E0001474000061FFFFFFFC28183C000061FFFFFFFC1E183C000061FFFFFFFC1466 +S321E0001490183C000061FFFFFFFC0A183C000161FFFFFFFC00244D61FFFFFFFC2404 +S321E00014AC7195EC886624222D0006700EE0A9028100000FFF528171ED0009EE889D +S321E00014C802800000000774089480E4A9600673ED0008528148412601EC8B2E8303 +S321E00014E4E389640A22BC333247426000009CE389640A22BC313647426000008ECE +S321E0001500E389640A22BC2038474260000080E389640822BC203447426072E3899F +S321E000151C640822BC203247426066E389640822BC20314742605AE389640C12BCEE +S321E0001538003522BC31324D42604AE389640C12BC003222BC35364D42603AE38948 +S321E0001554640C12BC003122BC32384D42602AE389640822BC36344D42601EE3892C +S321E0001570640822BC33324D426012E389640822BC31364D42600622BC3C394D42D5 +S321E000158C22BC204F4B2122BC00000A0D604222BC4572726F22BC0000722122BC48 +S321E00015A800000A0D603622BC6E6F6E2122BC00000A0D60240000000000000000D1 +S321E00015C40000000000000000000000000000000000000000000000002017600688 +S321E00015E070FE6002A140588F4E7551FC42804E7B000323C0FF1008144E7B0002FA +S321E00015FC23C0FF1008104E71203CC03FC0404E7B000423C0FF100818203C601F0F +S321E0001618C0004E7B000523C0FF10081C203CE007C4004E7B000623C0FF1008203C +S321E000163442804E7B000723C0FF100824203CFF0400014E7B000823C0FF100828B1 +S321E00016504E71203C0000008023C0FF0400044E717003725E7403761323C0FF042B +S321E000166C001423C1FF04001823C2FF04000423C3FF040004203C00D0001B223CEB +S321E000168860D0001E23C0FF04001423C1FF04001823C2FF040004203C00D00003FE +S321E00016A423C3FF040004203C0000200023C0FF10083842B9FF10083C203C00E01F +S321E00016C00003223C00E0005E23C0FF04001423C1FF04001823C2FF04000423C3BE +S321E00016DCFF040004203C00F00003223CFFF0009E23C0FF04001423C1FF040018D2 +S321E00016F823C2FF04000423C3FF040004203C1FE00003223C1FE0005E23C0FF0418 +S321E0001714001423C1FF04001823C2FF04000423C3FF040004203C1FF00003223C1B +S321E00017301FF0005E23C0FF04001423C1FF04001823C2FF04000423C3FF04000478 +S321E000174C203CA10CA12023C0FF1008104E7B00024E714E7561000F900280FFF009 +S321E0001768000000800000000323C0FF0400140280FFF0000000800000005C23C0D2 +S321E0001784FF040018700323C0FF040004701323C0FF040004201F4E73A179FF1055 +S321E00017A0080042B9FF10080442B9FF10080842B9FF10080C203CFF1000004E7BBD +S321E00017BC080120402448203C0000010043FA00EE24C9538066FA20BCFF100FFCB8 +S321E00017D843FA01922149000443FA01A4214900081039FF000A2C08000007670089 +S321E00017F4007A43FA0F4C2149000C43FA0F442149001043FA01E22149001443FA86 +S321E000181009602149002043FA02242149002843FA02262149002C43FA0228214922 +S321E000182C003843FA022A214900C043FA0222214900C443FA021A214900C843FA98 +S321E00018480212214900CC43FA020A214900D043FA0202214900D443FA01FA2149B0 +S321E000186400D843FA01F2214900DC43FA01F42149010443FA02782149010843FA2C +S321E000188002FC2149010C43FA03802149011043FA04042149011443FA04882149BF +S321E000189C011843FA07102149011C43FA073E2149018043FA079C214901F84E75E3 +S321E00018B846FC2700518F48D720011039FF000A2C080000076600002C302F00081F +S321E00018D40280000003FCD0B9FF10080C2A4020152A6F00042F400004302F000ACD +S321E00018F008C0000D46C0201F4E754E6D4A39FF1008006600003CA179FF100800F1 +S321E000190C23CDFF1008082A79FF1008042B2F000C202F00082B0048404E65028067 +S321E0001928000003FCD0B9FF10080C2A402F55000C4CD72001508F4E732B2F000CCE +S321E0001944202F000808C0000D2B0048404E650280000003FCD0B9FF10080C2A4078 +S321E00019602F55000C4CD72001508F4E7346FC2700203C31415926B0B900000426C8 +S321E000197C6700FF3A4EF9E000000046FC27002F00302F0004028000000C030C808A +S321E000199800000401670000240C80000004026700001A0C8000000802670000109D +S321E00019B40C8000000C0267000006600000242039FF0400080800000166000016BD +S321E00019D02039FF0400100C801FE000006C0000066000FD7E201F6000FED046FC22 +S321E00019EC27002F082F00206F000C301808000007670000045488C0B90000003F7B +S321E0001A080C4000086F00002454880C400039660000085488600000140C40003C4E +S321E0001A246600000C080000076700000454882F48000C201F205F4E7346FC27008D +S321E0001A404AC84E714E7146FC27004AC84E714E7146FC27004AC84E714E7146FCE0 +S321E0001A5C27004AC84E714E7146FC2700518F48D720014BF9FF000F0C1ABC000212 +S321E0001A781039FF000A2C08000007660000144CD72001508F2F390000006446FC34 +S321E0001A9421004E754E6D4A39FF10080066000020A179FF10080023CDFF10080851 +S321E0001AB02A79FF1008042B2F000C2B2F0008600000102B2F000C2B2F000808ED81 +S321E0001ACC000500024E654BF900000064DBF9FF10080C2F55000C1F7C0001000A89 +S321E0001AE84CD72001508F4E7346FC2700518F48D720014BF9FF000F0C1ABC000457 +S321E0001B041039FF000A2C08000007660000144CD72001508F2F390000006846FCA3 +S321E0001B2022004E754E6D4A39FF10080066000020A179FF10080023CDFF100808C3 +S321E0001B3C2A79FF1008042B2F000C2B2F0008600000102B2F000C2B2F000808EDF4 +S321E0001B58000500024E654BF900000068DBF9FF10080C2F55000C1F7C0002000AF7 +S321E0001B744CD72001508F4E7346FC2700518F48D720014BF9FF000F0C1ABC0008C6 +S321E0001B901039FF000A2C08000007660000144CD72001508F2F390000006C46FC13 +S321E0001BAC23004E754E6D4A39FF10080066000020A179FF10080023CDFF10080836 +S321E0001BC82A79FF1008042B2F000C2B2F0008600000102B2F000C2B2F000808ED68 +S321E0001BE4000500024E654BF90000006CDBF9FF10080C2F55000C1F7C0003000A66 +S321E0001C004CD72001508F4E7346FC2700518F48D720014BF9FF000F0C1ABC001031 +S321E0001C1C1039FF000A2C08000007660000144CD72001508F2F390000007046FC82 +S321E0001C3824004E754E6D4A39FF10080066000020A179FF10080023CDFF100808A8 +S321E0001C542A79FF1008042B2F000C2B2F0008600000102B2F000C2B2F000808EDDB +S321E0001C70000500024E654BF900000070DBF9FF10080C2F55000C1F7C0004000AD4 +S321E0001C8C4CD72001508F4E7346FC2700518F48D720014BF9FF000F0C1ABC002095 +S321E0001CA81039FF000A2C08000007660000144CD72001508F2F390000007446FCF2 +S321E0001CC425004E754E6D4A39FF10080066000020A179FF10080023CDFF1008081B +S321E0001CE02A79FF1008042B2F000C2B2F0008600000102B2F000C2B2F000808ED4F +S321E0001CFC000500024E654BF900000074DBF9FF10080C2F55000C1F7C0005000A43 +S321E0001D184CD72001508F4E7346FC2700518F48D720014BF9FF000F0C1ABC0040E8 +S321E0001D342039FF10083C670000E00480700000004BF9FF000908B0956F0000CEF0 +S321E0001D504FEFFFE448D7031F428361000996200323C0FF040010283C00000106E6 +S321E0001D6C23C4FF0400044E712839FF0400044244484423C4FF04001079FC010ED0 +S321E0001D8823C4FF0400044E712839FF040014E48C0C44000666000054068000002E +S321E0001DA4000322036700000C06810000005C6000000806810000001E75FC010B35 +S321E0001DC023C0FF04001423C1FF04001823C2FF0400044E712043D1FC60000000ED +S321E0001DDC2243283C0001000022D822D822D822D8538466F44E71068300100000CA +S321E0001DF80C8300D000006D00FF5E203C0000200023C0FF10083842B9FF10083CC4 +S321E0001E144CD7031F4FEF001C4BF9FFFFFA0B08ED0007FFFC08150007670000065E +S321E0001E30610000DA4A15660000124A2D00026600000A4CD72001508F4E734BF98D +S321E0001E4CFF000A07089500044BFA00B2529520150280000000806600000C4BF918 +S321E0001E68FF000A0708D500041039FF000A2C08000007660000202A79F0020000DF +S321E0001E84DBF9FF10080C20152A6F00042F400004201F46FC26004E754E6D4A3978 +S321E0001EA0FF1008006600003CA179FF10080023CDFF1008082A79FF1008042B2F2F +S321E0001EBC000C2B2F00084E652A79F0020000DBF9FF10080C2F55000C4CD72001A3 +S321E0001ED8508F1F7C000600024E732B2F000C2B2F000808ED000500024E652A79AB +S321E0001EF4F0020000DBF9FF10080C2F55000C4CD720014E75000000002F092F0104 +S321E0001F1043F9FF00860C22BC444D412022BC494E54214BF9F0020110226DFFF47F +S321E0001F2C202DFFF86F000058082D0000FFF0660000264A2DFFFC6A00003E22D5E7 +S321E0001F4822D522D522D5722E13C1FF00860C0480000000106AE0600000224A2DD6 +S321E0001F64FFFC6A00001A2A992A992A992A99722E13C1FF00860C04800000001057 +S321E0001F806AE02B49FFF42B40FFF84A2DFFFC6B984BF9FFFFFA0B08AD00070004D0 +S321E0001F9C08950007323C0D0A33C1FF00860C221F225F4E754FEFFFF448D70101BE +S321E0001FB82079FF1000082F480008302F000C02800000F0000080000000083F4014 +S321E0001FD4000C41F9FF000F0C10BC0080201F205F4E7546FC27004FEFFFEC48D72D +S321E0001FF0090747F9FF00890C12130C0100026600004241F9FF00860C20BC5049EF +S321E000200C432020BC494E542020BC5254432120BC00000D0A41F9FFFF896147F94D +S321E0002028FF00890C4281744016BC008210811028000216805281B40166F24CD7F3 +S321E000204409074FEF00144E7346FC27004FEFFFE448D7031F71B9FFFF82010C40B5 +S321E000206000026D0000EE0C4000D06D00001041F9FF000908281023C4FF10083CCC +S321E000207CE1881039FFFF8203E1881039FFFF820D260078142400E8AA2839FF1016 +S321E0002098083805C46600007E23C4FF1008386100064A23C4FF100838028000F0CA +S321E00020B4000020402248D3FC60000000283C0001000022D822D822D822D853840D +S321E00020D066F423C0FF040010283C0000010623C4FF0400044E712839FF0400043E +S321E00020EC4244484423C4FF040010220006800000001B06816000001E75FC010BA1 +S321E000210823C0FF04001423C1FF04001823C2FF0400044E71200379F9FFFF82100C +S321E000212475F9FFFF82AA73F9FFFF82A89481C8C2D0840C8000E000006C000014AE +S321E000214078142400E8AA2839FF10083805C46700FF5A41F9FF00080008A8000031 +S321E000215C00034E7108E8000000034CD7031F4FEF001C4E7346FC27004FEFFFF4D2 +S321E000217848D7210141F9FF1008004A1066000034A1504E6D214D00082A68000427 +S321E00021942B2F00102B2F000C08ED000500024E652A68000C4BED00182F55001048 +S321E00021B04CD721014FEF000C4E732A6F001010150C00004E670000280C000046D4 +S321E00021CC670002F20C000040670003900C0000F46700041E0C0000F36700049AE3 +S321E00021E84E714AC84E71102D00010C0000736700011A0C0000726700013C0C00F8 +S321E0002204007B670001C008000003660000400C0000606700007E0C00006167005F +S321E0002220007E0C0000626700007C0C0000636700007A0C000064670000780C0042 +S321E000223C0065670000760C000066670000764AC8600000762A6800080C00006819 +S321E0002258670000800C000069670000800C00006A6700007E0C00006B6700007C8C +S321E00022740C00006C6700007A0C00006D670000780C00006E67000078214D0004EC +S321E00022904E65600000702A6F00046000002C2A49600000262A4A600000202A4B3E +S321E00022AC6000001A2A4C600000142A6F00086000000C2A4E600000062A6800044B +S321E00022C8214D000854AF00104CD721014FEF000C4E732F4D000460000024224DC8 +S321E00022E46000001E244D60000018264D60000012284D6000000C2F4D00086000E7 +S321E000230000042C4D54AF00104CD721014FEF000C4E734E6D2F5D000C2F5D00100C +S321E000231C08AF0005000E6600000C4290214D00042A6800084E654CD721014FEF6F +S321E0002338000C4E73102D00020280000007000C4007006700006A0C400600670031 +S321E0002354005A0C4005006700004A0C4004006700003A0C4003006700002A0C400E +S321E000237002006700001A0C4001006700000A4E722000600000364E722100600073 +S321E000238C002E4E722200600000264E7223006000001E4E722400600000164E723E +S321E00023A825006000000E4E722600600000064E72270058AF00104CD721014FEFD3 +S321E00023C4000C4E73302D000202800000F0000800000F660000684A40660000089C +S321E00023E02F17600000C60C401000660000082F01600000B80C40200066000008A3 +S321E00023FC2F02600000AA0C403000660000082F036000009C0C4040006600000892 +S321E00024182F046000008E0C405000660000082F05600000800C4060006600000869 +S321E00024342F06600000722F076000006C0C4080006600000A2F2F00046000005C43 +S321E00024500C409000660000082F096000004E0C40A000660000082F0A6000004027 +S321E000246C0C40B000660000082F0B600000320C40C000660000082F0C60000024FF +S321E00024880C40D0006600000A2F2F0008600000140C40E000660000082F0E6000B5 +S321E00024A400062F2F0004302D000202800000000F219F0C084EB9E00026F24E734A +S321E00024C0102D00010C0000FC670000700C0000C06600000A302F000260000058A8 +S321E00024DC0C0000C16600000830016000004A0C0000C26600000830026000003CDE +S321E00024F80C0000C36600000830036000002E0C0000C466000008300460000020F2 +S321E00025140C0000C5660000083005600000120C0000C66600000830066000000405 +S321E0002530300754AF00106000000A58AF0010302D00020880000D660000104290A2 +S321E000254C4E6D214D00042A6800084E653F40000E4CD721014FEF000C4E73102DF9 +S321E000256800010C0000E7670000862A6F000C4A10670000064BED20000C0000C000 +S321E00025846600000A3F4D00026000005A0C0000C166000008320D6000004C0C006B +S321E00025A000C266000008340D6000003E0C0000C366000008360D600000300C000E +S321E00025BC00C466000008380D600000220C0000C5660000083A0D600000140C001E +S321E00025D800C6660000083C0D600000063E0D4AC854AF00104CD721014FEF000C1F +S321E00025F44E734E714AC84E7154AF0010102D000161000026102D00010C00003042 +S321E00026106500000EF4E84CD721014FEF000C4E73F4284CD721014FEF000C4E73BD +S321E000262C02800000000753806B00002A53806B00002A53806B00002853806B00AF +S321E0002648002653806B00002453806B00002253806B000022204F4E75206F00087F +S321E00026644E7520494E75204A4E75204B4E75204C4E75206F000C4E75204E4E756C +S321E000268054AF0010102D00010C0000406E00002C4EB9E000262C102D00010C009E +S321E000269C00206D00000E54AF0010428030280002D1C0F3104CD721014FEF000C4F +S321E00026B84E730C00007A6700002C4EB9E000262C102D00010C0000606D00000EE8 +S321E00026D454AF0010428030280002D1C0F3504CD721014FEF000C4E73206F001012 +S321E00026F060E24FEFFFF048D7010740C24E7146FC2700428042812040F4E841E83E +S321E000270C001052810C41020066F24281528020400C40000466E64E712039FF1089 +S321E000272808104E7B000246C24CD701074FEF00104E7500004E714AC84E714E7139 +S30DE00027444E7500004E714E7562 +S705E00000001A diff --git a/BaS_codewarrior/FireBee/Flash/BaS_15_12_10.zip b/BaS_codewarrior/FireBee/Flash/BaS_15_12_10.zip new file mode 100644 index 0000000000000000000000000000000000000000..63bf8a3c639765889fec7562fa2e3c9d6b2bb97e GIT binary patch literal 7354 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%0A_W= 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 literal 0 HcmV?d00001 diff --git a/BaS_codewarrior/FireBee/Flash/emutos2.s19 b/BaS_codewarrior/FireBee/Flash/emutos2.s19 new file mode 100644 index 0000000..c8db8ed --- /dev/null +++ b/BaS_codewarrior/FireBee/Flash/emutos2.s19 @@ -0,0 +1,23921 @@ +S00E0000656D75746F73322E73313917 +S315E0600000602E020600E0003000E000000002514C85 +S315E060001000E0003000E424142010112700003D7B4E +S315E0600020000133D800011B7C0001344C45544F532A +S315E060003046FC2700203900FA00000C80FA52235F64 +S315E06000406600000C4DFA00084EF900FA000420390B +S315E0600050000004260C8031415926661620390000DE +S315E0600060042A670E08000000660820404DFAFFE0AB +S315E06000704ED04EF900E007284FF900004A684EB9C5 +S315E060008000E00B784EF900E0493C302F000441F97E +S315E060009000FA0000223CABCDEF42B2986600002841 +S315E06000A001280004670000184FEFFFC448D77FFFC0 +S315E06000B0206800044E904CD77FFF4FEF003C4A909B +S315E06000C020506600FFDC4E7541F900E0067E43F99C +S315E06000D000004E24203C00E001D82340FFFC203C99 +S315E06000E000E001A622802348000423480008234854 +S315E06000F0000C23480010203C00E05012234000141E +S315E060010023480018203C00E001902340001C203C7E +S315E060011000E001EA23400020487900000038487991 +S315E060012000E423B4487900004DE84EB900E00EC41F +S315E06001304FEF000C700013C000004E4813C0000083 +S315E06001404E5513C000004E56487A00103F3C0006FC +S315E06001504EB900E056605C8F4E754FEFFFE048D7D2 +S315E06001600F0F207900004E404E90207900004E44FB +S315E06001704E9043F8FA000829000400016700FFE4A6 +S315E060018008A9000600114CD70F0F4FEF00204E7301 +S315E06001901038FC046A00000E1038FC062079000076 +S315E06001A04E244ED04E757200323900004E1A52819E +S315E06001B0B27900004E166D0000047200B27900005C +S315E06001C04E186700001241F900004D681180180072 +S315E06001D033C100004E1A4E750280000000FF3F00FA +S315E06001E04EB900E05EA4548F4E7570001238FC0084 +S315E06001F010016A00FFF41038FC024A3900004E48EC +S315E0600200660000520C4000F66400000A20790000A7 +S315E06002104E204ED013C000004E4C41F900004E4ACD +S315E060022030BC00010480000000F641F900004E4851 +S315E060023010BB080E41F900004E4910BB080E4E7522 +S315E0600240010203030303040506070705020202022F +S315E0600250060201017200323900004E4A41F900009F +S315E06002604E4C118018007000103900004E495380E2 +S315E060027013C000004E49670000147000303900007A +S315E06002804E4A528033C000004E4A4E7570001039B7 +S315E060029000004E48E580227B080641F900004E4C9E +S315E06002A04ED100E002BE00E002CA00E002CC00E00F +S315E06002B002D600E002E200E002F400E003045288C5 +S315E06002C0227900004E3060000050528822790000AA +S315E06002D04E34600000445288227900004E38600057 +S315E06002E0003843F900004E5412D812D8129055895E +S315E06002F06000001E43F900004E541298135000014E +S315E06003006000000E43F900004E541298135000024C +S315E06003102049227900004E3C2F084E91588F423991 +S315E060032000004E484E75000042B90000038041FA75 +S315E0600330002843F80008703D22C8548853806AF864 +S315E06003404E7541FA009043F80100203C000000BF82 +S315E060035022C853806AFA4E75617E617C617A617803 +S315E06003606176617461726170616E616C616A6168C7 +S315E06003706166616461626160615E615C615A615837 +S315E06003806156615461526150614E614C614A6148A7 +S315E06003906146614461426140613E613C613A613817 +S315E06003A06136613461326130612E612C612A612887 +S315E06003B06126612461226120611E611C611A6118F7 +S315E06003C06116611461126110610E610C610A610867 +S315E06003D061066104487AFF8246FC270023C8000074 +S315E06003E003A441F90000038448D000FF48E87E009A +S315E06003F000244E6823C8000003C8201F23CF0000F6 +S315E060040003C041FAFF549088E288528023C000001E +S315E060041003C44CD700FF41F9000003CC48D000FF8D +S315E060042041F90000038020BC123456784FF9000091 +S315E06004304A684EF900E039E40C4000736600000A51 +S315E06004404EB900E0132C4E730C40FFFE6700000CC3 +S315E06004500C40FFFF670000084E7370FE4E73203C51 +S315E060046000E0132C4E732F007000302F00040280E2 +S315E06004700000070066000010302F000400800000D6 +S315E060048003003F400004201F4E7352B9000004662B +S315E06004902F007000303900000452538033C00000F2 +S315E06004A004526B00009A4FEFFFC848D77FFE52B9FF +S315E06004B0000004624EB900E0A5B020390000045A9D +S315E06004C06700001642B90000045A204043F88240B3 +S315E06004D0700F32D853806AFA20390000045E6700F4 +S315E06004E0002223C00000044E4A7900012B98670081 +S315E06004F0000611C0820DE08811C08203E08811C059 +S315E060050082014EB900E0677A700030390000045429 +S315E06005106700002453802079000004562258B3FC1B +S315E0600520000000006700000C2F082F004E91201F8E +S315E0600530205F53806AE64CD77FFE4FEF003870004D +S315E0600540303900000452528033C000000452201F4C +S315E06005504E7352B9000004BA2F002F0830390001FB +S315E06005601B7A4840303900011B7AE388484033C043 +S315E060057000011B7A6A00002E4FEFFFCC48D77EFE63 +S315E06005804EB900E05E444EB900E063863F39000054 +S315E060059004422079000004004E90548F4CD77EFED2 +S315E06005A04FEF003441F8FA1108900005205F201FF4 +S315E06005B04E732F3AFFFE70FF4E75323900E04EFC07 +S315E06005C041F900E04ECC600C323900E03DE841F99B +S315E06005D000E03C802279000004A2301F0280000027 +S315E06005E03000670A301F3300231F548F6006301FC8 +S315E06005F03300231F43E9FFD848D1F8F823C9000048 +S315E060060004A20800000D660000044E6F7000301F03 +S315E0600610B0416C00000E2200D281D281D1C120505F +S315E06006204E902279000004A24CD1F8F843E9002804 +S315E06006302F193F193F3C40B423C9000004A24E7312 +S315E06006403F014EB900E04EC8548F4E753F014EB93A +S315E060065000E03C7C548F4E75220F2278000841FA08 +S315E0600660001421C8000842804E71206F00044A10D1 +S315E06006704E71700121C900082E414E714E754E755E +S315E06006804E73206F00042F0A2F024E90241F245FC2 +S315E06006904E75206F0004302F00082F0A2F023F00AE +S315E06006A04E90548F241F245F4E75206F0004202FD8 +S315E06006B000082F0A2F022F004E90588F241F245FC8 +S315E06006C04E754CEF030300082F0A2F024FEFFFF041 +S315E06006D048D70303206F001C4E904FEF0010241F95 +S315E06006E0245F4E75302F00042F0A2F022079000018 +S315E06006F005B04E90241F245F4E7500004E754E7116 +S315E0600700700072002040F4E8D1FC000000105281D5 +S315E06007100C810000020066EE7200528020400C8080 +S315E06007200000000466E04E7541F90000080043F9F8 +S315E06007300002514B20099088E488429853806AFA17 +S315E06007404FF900004A68487882826100FF0C4A40AF +S315E06007506700000E41F8800708D000066700004891 +S315E0600760223C752019F3B2B9000004206600003817 +S315E0600770223C237698AAB2B90000043A66000028C3 +S315E0600780223C5555AAAAB2B90000051A66000018BF +S315E06007904A406600000C41F8800110B9000004246C +S315E06007A04EF900E000784A40660000CA91C8117CC4 +S315E06007B0000A8001307C000843F9002000087000E0 +S315E06007C030C032C006800000FA54B1FC000002007E +S315E06007D066EE223C0020000042854286E48E42843A +S315E06007E0207C000400084BFA000C283C0004000062 +S315E06007F06000004A6732207C000800084BFA000C73 +S315E0600800283C0008000060000034671A207C000085 +S315E060081000084BFA0008780060000022660A283C6F +S315E06008200020000058865886DA84048100200000A3 +S315E060083067AA91C8114680016000001CD1C17000B2 +S315E060084043E801F8B0586600000C06800000FA54F0 +S315E0600850B3C866F04ED549F804004DFA000660006C +S315E060086000DE13C60000042423C50000042E4EF902 +S315E060087000E00078700030388006E088E288220088 +S315E0600880028100000001E4880280000000068280A8 +S315E0600890203C00080000E3A00C0100056606203C51 +S315E06008A000E000002A0049F804004DFA0006600006 +S315E06008B0008E23C50000042E7C0048790100040008 +S315E06008C06100FD964A406700004441F8040047F93C +S315E06008D001000400203C1234567820804293B090A8 +S315E06008E06600002A429047F901000000263C0010AD +S315E06008F0000041F338FF48506100FD5E4A40670CF6 +S315E06009005286D7C30C86000008006DE64A8666020A +S315E060091097CB23CB000005A449F9000005A828BCC5 +S315E06009201357BD1349F9010000002A0B6700000A5E +S315E06009304DFA0006600000084EF900E000782805F0 +S315E0600940988CE08C53844BF8010070002040720074 +S315E06009502241740024427600264349EC010048ECCB +S315E06009600F0FFFE048EC0F0FFFC048EC0F0FFFA042 +S315E060097048EC0F0FFF8048EC0F0FFF6048EC0F0F5D +S315E0600980FF4048EC0F0FFF2048EC0F0FFF00D9CD7A +S315E060099053846ACA4ED60000206F00042248428023 +S315E06009A030182F48000402800000000F4A406B00B8 +S315E06009B00018B07A01706A00001041FA0128E588F3 +S315E06009C0207008004E904E733F0055882F08487A95 +S315E06009D0000E4EB900E038144FEF000A4E737063B4 +S315E06009E03D30782530386C783A204C696E652D411B +S315E06009F02063616C6C206E756D626572203078255F +S315E0600A00303378206F7574206F6620626F756E6420 +S315E0600A10730A00004C696E652D41202325780A0033 +S315E0600A2041F900005276200843F900012C2445FA8A +S315E0600A3000B44E75303C00016046303C00026040D8 +S315E0600A40303C0003603A303C00046034303C0005E2 +S315E0600A50602E303C00066028303C00076022303C67 +S315E0600A600008601C303C000B6016303C000C6010E7 +S315E0600A70303C000D600A303C000E6004303C000FF4 +S315E0600A802217048100E009C6028100FFFFFF6600CD +S315E0600A90000820496000000420573F002F08487A8C +S315E0600AA0000E4EB900E038144FEF000A4E757063E1 +S315E0600AB03D30782530386C783A20756E696D706CAB +S315E0600AC0656D656E746564204C696E652D41206365 +S315E0600AD0616C6C206E756D6265722030782530339E +S315E0600AE0780A000000E00A2000E00A3400E00A3AF2 +S315E0600AF000E00A4000E00A4600E00A4C00E00A52E4 +S315E0600B0000E00A5800E00A5E00E20B0C00E20C56D8 +S315E0600B1000E00A6400E00A6A00E00A7000E00A7633 +S315E0600B2000E00A7C0010000046FC270023C80000B5 +S315E0600B3003A441F90000038448D000FF48E8FE00C2 +S315E0600B4000244E6823C8000003C842B9000003C40D +S315E0600B504CD700FF41F9000003CC48D000FF41F9D3 +S315E0600B600000038020BC123456784EF900E039E488 +S315E0600B7046FC27006000FFFE42790001141C4E75BA +S315E0600B800000A0FF000000004E7523DF0000530068 +S315E0600B9023C0000052F023C1000052F423C80000D5 +S315E0600BA052F823C9000052FC4EB900E038142039EF +S315E0600BB0000052F02239000052F42079000052F829 +S315E0600BC02279000052FC2F39000053004E75000078 +S315E0600BD042804E754E465F56455253494F4E000031 +S315E0600BE02002102100E00BEC00E00BF073004E7584 +S315E0600BF073014E75270119924FEFFFF448D7030250 +S315E0600C00486F00104EB900E09534588F4CD7030218 +S315E0600C104FEF000C4E7500004A406700000A2F391E +S315E0600C20000053044E752E7C00005AD842674EB9D8 +S315E0600C3000E0DBAA4E7361000164081700056600F8 +S315E0600C4000124E6830100C400020670000C460005F +S315E0600C50000E302F00060C400020670000DA2F0EF1 +S315E0600C602C790001344C48EE380100682D5F00783D +S315E0600C70301F285F0800000D660000264E6D4BEDC4 +S315E0600C80FFD848D507FE2B0C3B00204F2B082D4D97 +S315E0600C90007C2E7C00005AD841ED003260000020D6 +S315E0600CA04FEFFFD848D707FE2F0C3F004E682F085E +S315E0600CB02D4F007C41EF00322E7C00005AD82F0881 +S315E0600CC04EB900E0C1B4588F2A790001344C2B400C +S315E0600CD000682C6D007C285E301E265E4CD607FED2 +S315E0600CE04DEE00280800000D660000142E4C4E669E +S315E0600CF02F0B3F004CED78010068600000D42E4E6B +S315E0600D004E646000FFEC2A790001344C6000FFC459 +S315E0600D10222800026700000C5381670000562068B5 +S315E0600D200002301F211F0080000020003100200FEC +S315E0600D302E486000009C222F00086700002853813F +S315E0600D4067000030226F0008301F231F33004E68B3 +S315E0600D50BFC86700000A211F2E496000000C2E49BB +S315E0600D6060000008204F5C884E60089700056000D0 +S315E0600D70006070000817000567000004538060009B +S315E0600D8000504E5600002F0841EE00082F084EB97D +S315E0600D9000E0C1B4588F205F4E5E4E75302F000480 +S315E0600DA0028000003000671A3F6F000A000C3F6F58 +S315E0600DB00008000A3F6F000600082F570004588FAE +S315E0600DC04E753F6F000200043F570002548F4E7528 +S315E0600DD03F3C40844E730000206F0004202F0008E3 +S315E0600DE02F077E0060000020206F00042F07302F61 +S315E0600DF0000C1E00E18F1E00300748473E00202FA2 +S315E0600E00000E6F0000B6220808010000670410C7F4 +S315E0600E105380723FB0816F0000864FEFFFDC48D7AA +S315E0600E203C7C2407260728072A072C072247244705 +S315E0600E30264728472A471200E088602841E80100F3 +S315E0600E4048E83EFCFFD448E83EFCFFA848E83EFCA4 +S315E0600E50FF7C48E83EFCFF5048E83EFCFF2448E85B +S315E0600E600EFCFF0053806AD420016700000C02810B +S315E0600E700000003FEC8860184CD73C7C4FEF0024C4 +S315E0600E80603848D030FC48E830FC002041E800405B +S315E0600E9053806AEE4CD73C7C4FEF00242001120071 +S315E0600EA0028100000003E488600220C753806AFA8A +S315E0600EB02001600210C753806AFA2E1F202F0004BB +S315E0600EC04E750000206F0008226F0004B1C96E0005 +S315E0600ED00154670000F220082209B3800800000090 +S315E0600EE0660000E6202F000C670000DCD1C0D3C0AE +S315E0600EF02208080100006700000A1320538067009B +S315E0600F0000C6723FB0816F00009E4FEFFFD448D7B6 +S315E0600F107CFC1200E0886000004E41E8FF0043E997 +S315E0600F20FF004CD07CFC48D17CFC4CE87CFC002C7F +S315E0600F3048E97CFC002C4CE87CFC005848E97CFCE9 +S315E0600F4000584CE87CFC008448E97CFC00844CE872 +S315E0600F507CFC00B048E97CFC00B04CE81CFC00DCA2 +S315E0600F6048E91CFC00DC53806AB02001670001524E +S315E0600F7002810000003FEC886000001E41E8FFC08F +S315E0600F8043E9FFC04CD030FC48D130FC4CE830FC43 +S315E0600F90002048E930FC002053806AE04CD77CFCB6 +S315E0600FA04FEF002C20011200028100000003E4886C +S315E0600FB060000004232053806AFA20016000000488 +S315E0600FC0132053806AFA4E75202F000C6700FFF8F5 +S315E0600FD0D1C0D3C07210B0816D00FFE8120002810B +S315E0600FE00000000FE8886000003241E8FFF043E966 +S315E0600FF0FFF012D812D812D812D812D812D812D856 +S315E060100012D812D812D812D812D812D812D812D84A +S315E060101012D841E8FFF043E9FFF053806ACC200143 +S315E06010206000FFA020082209B38008000000660087 +S315E060103000E8202F000C6700FF8E080100006700C3 +S315E0601040000612D85380723FB0816F0000AA4FEF5E +S315E0601050FFD448D77CFC1200E0886000004E4CD09C +S315E06010607CFC48D17CFC4CE87CFC002C48E97CFCB0 +S315E0601070002C4CE87CFC005848E97CFC00584CE8C5 +S315E06010807CFC008448E97CFC00844CE87CFC00B095 +S315E060109048E97CFC00B04CE81CFC00DC48E91CFC40 +S315E06010A000DC41E8010043E9010053806AB02001B9 +S315E06010B06700000E02810000003FEC886000002AB5 +S315E06010C04CD77CFC4FEF002C6000FEFC4CD030FC33 +S315E06010D048D130FC4CE830FC002048E930FC002088 +S315E06010E041E8004043E9004053806AE04CD77CFC2D +S315E06010F04FEF002C20011200028100000003E4881B +S315E06011006000000422D853806AFA2001600000047F +S315E060111012D853806AFA4E75202F000C7210B08197 +S315E06011206D00FFF0120002810000000FE8886000A9 +S315E0601130002212D812D812D812D812D812D812D8E1 +S315E060114012D812D812D812D812D812D812D812D809 +S315E060115012D853806ADC20016000FFB82F3C0000A3 +S315E060116020504267487900005ADC4EB900E00DE84D +S315E06011704FEF000A4E754AB900013EA466000008CA +S315E0601180202F00044E75206F00044A1066000006AA +S315E060119020084E75202F00042240E7882200ED8962 +S315E06011A04841D081028000001FF841F900005ADC16 +S315E06011B0D1C0700A221867000016B3C16700000C40 +S315E06011C0588853806AEE6000000620184E75206FDE +S315E06011D00004700022006000000E32404840300992 +S315E06011E0E3884840D08112186600FFF03200324151 +S315E06011F048413209ED89484102810000003FB380F1 +S315E06012000280000003FFE588207900013EA420709B +S315E06012100800B1FC000000006600000A202F000410 +S315E06012204EFA003022186700FFF422482041220976 +S315E0601230226F0004101867000010B0196700FFF60F +S315E0601240204158886000FFDE4A116600FFF42041C5 +S315E060125020102240E7882200ED894841D081028053 +S315E060126000001FF841F900005ADCD1C0700A4A90CC +S315E06012706700000C508853806AF46000000820EF35 +S315E06012800004208920094E75206F000420D748D0DD +S315E0601290FCFC70004E75206F0004302F000867007C +S315E06012A00004700122184CD0FCFC2E814E750000C3 +S315E06012B023DF00007B2C23C200007B3023CA0000C2 +S315E06012C07B344E41243900007B30247900007B3446 +S315E06012D02F3900007B2C4E752F0A2F022F2F001618 +S315E06012E02F2F00162F2F00163F2F00183F3C004B84 +S315E06012F04E414FEF0010241F245F4E75206F0008AB +S315E0601300226F00044280528012D866FA53804E758E +S315E0601310206F0004322F00081018670AB00166F8E3 +S315E0601320538820084E7570004E7500004FEFFFC879 +S315E060133048D77FFE244143F90000527A205A22C8FA +S315E060134022DA47F900007B3822CB285A22DA229249 +S315E0601350700030280002322800063F00671E6A06E9 +S315E06013604268000260160C4001006F08303C0100E4 +S315E060137031400002538026DC53806AFA3F016A04FA +S315E0601380426800064EB900E1C64820790000527A0C +S315E0601390315F0006315F00024CD77FFE4FEF0038C9 +S315E06013A042803039000140B84E7541F900004FC2C5 +S315E06013B04A406C00000842406000000AB0506F008E +S315E06013C0000430104A416C00000642414E75B26836 +S315E06013D000026F000006322800024E754A390000AE +S315E06013E05123660000DC4FEFFFC448D77FFF101043 +S315E06013F012000281000000F80C0100F8660000BAF5 +S315E0601400028000000003E2886400000608C0000174 +S315E060141012390000511A028100000003B001670032 +S315E0601420002C3F0122790000523C4E91321F33C0BE +S315E06014300000502202800000FFFF02810000FFFFF3 +S315E0601440B181ED89808113C00000511A4A280001FC +S315E060145066144A280002660E43F90000511A0891A4 +S315E060146000056000005443F90000511A08D10005F8 +S315E060147030390000501C48C012280001488148C13C +S315E0601480D08132390000501E48C1162800024883D8 +S315E060149048C3D2836100FF142279000052444E9122 +S315E06014A06100FF0833C00000501C33C10000501ECD +S315E06014B02279000052404E914CD77FFF4FEF003CBF +S315E06014C04E754FEFFFF048D7030343FA00687000AC +S315E06014D072051018B019664C53816A00FFF6700009 +S315E06014E010180480000000596B00003A0C000003FD +S315E06014F0620000323200E288028100000001D2819F +S315E060150053814FEFFFD448D77CFC227900014970C4 +S315E06015104E914CD77CFC4FEF002C4CD703034FEF3A +S315E060152000104E754CD703034FEF00102F390001C2 +S315E060153049744E750500000000004A7900005020AD +S315E06015406600002C2F032F0240C2360200830000A3 +S315E0601550070046C333C00000511E33C1000051206E +S315E0601560760007F90000512246C2241F261F4E75F9 +S315E06015704E56FF824FEFFFD848D73CFC426EFFA243 +S315E06015803D7C0000FFFA43EEFFA032B9000052D086 +S315E060159033390000529A3339000052D433390000AF +S315E06015A052C63339000052C23339000052C833396B +S315E06015B0000052C43339000052DE3079000052E652 +S315E06015C0362EFF964A79000052DC6608322EFF9A84 +S315E06015D06000008E4FEFFFF848D703003F032F2EE1 +S315E06015E000084EB900E21BEE5C8F4CD703004FEF6C +S315E06015F0000836003D43FFA4342EFF9A38390000D8 +S315E060160052B63039000052B87200603E4FEFFFF8D4 +S315E060161048EF000C000075C036040083FFFF000051 +S315E0601620D68242C5380344C564063401528232022A +S315E06016304CEF000C00004FEF00087A000B39000019 +S315E060164052BB67063A01528532054A4267045382C5 +S315E060165060BA3D41FFA64A6EFF926604307C0000A8 +S315E06016603D48FFFE342EFF94302EFF983C39000053 +S315E060167052DA3E39000052D8426EFFB6082E0000BC +S315E0601680FFA167243839000052D6660E3A2EFFA0D5 +S315E060169002850000FFFE3D45FFA04A79000052BC8E +S315E06016A066063A01DA843205082E0002FFA1670871 +S315E06016B03A01DA86DA873205382EFF9267383D7C62 +S315E06016C00000FFFC3A0404850000070838053D4445 +S315E06016D0FF8267106E1A94813D42FF942A012203CD +S315E06016E0260560123A009A813D45FF98300560060E +S315E06016F02A01220326057A003339000052AC6700DE +S315E060170000BE3339000052AE3339000052B033398F +S315E0601710000052B23339000052B4B46EFF8C6C0CE8 +S315E0601720D483B46EFF8C6E5E6000048EB46EFF8808 +S315E06017306E0004864FEFFFFC48EF00010000D483A3 +S315E0601740538248C2716EFF8894804CEF00010000BE +S315E06017504FEF00046F300282000000016728082E18 +S315E06017600004FFA166204FEFFFFC48EF0001000098 +S315E06017704282302EFF9C3400E388E08AEE8A8082E3 +S315E06017803D40FF9C201FB06EFF8E6C163400D48106 +S315E06017903002340546823A02B06EFF8E6E206000FB +S315E06017A00418B06EFF8A6E0004103400D481538250 +S315E06017B03002B06EFF8A6F06340546823A02426EA8 +S315E06017C0FFE43439000052CE3D42FFF02439000098 +S315E06017D052CA2D42FFF6322EFFA00281FFFF0015AE +S315E06017E04A41670001FC4A6EFF92661208010002F8 +S315E06017F067044A45660808010004670001E44FEFA4 +S315E0601800FFFC48EF001000003039000052BE3400A3 +S315E060181002820000000F3D42FFE802800000FFFF09 +S315E0601820E888E3883439000052C03D6EFF96FFEAEF +S315E0601830362EFFEAD4835382C4EEFFF0382EFFF0F3 +S315E060184044843D44FFF03802D880206EFFF63404CD +S315E06018503A4241F0D800302EFF9A3239000052D633 +S315E0601860DE864A79000052DC671879C1E28C42C3B1 +S315E0601870320444C366045284320402870000FFFFE8 +S315E0601880E28F082E0000FFA16706D0813D41FFB6DA +S315E0601890426EFFE6322EFF96342EFFA00802000469 +S315E06018A067244A79000052DC661C5680382EFFE6D3 +S315E06018B052843D44FFE6382EFF9654843D44FF96BD +S315E06018C03801568432043D40FFECD0873D40FF9AB4 +S315E06018D002800000FFFFE888E388548044803D4052 +S315E06018E0FFEE448038015384C0C42279000052E29E +S315E06018F0776EFFFED3C32D49FFF608020004660645 +S315E060190008020002674C24493600322EFFEE9681CB +S315E060191002830000FFFFE28B5383720034C14A43C7 +S315E06019206704538360F60802000467264A7900007C +S315E060193052DC661E382EFFEC57843D44FFEC382EB1 +S315E0601940FF9A53843D44FF9A3800362EFFEED883E3 +S315E060195030047740D3C33D6EFFA0FF86426EFF9EA4 +S315E06019603D7C0001FFAC426EFFB43D7C0001FFAA06 +S315E06019703D7C0002FFA8382EFFA00284000000052F +S315E06019803D44FFA0281F610002C43D6EFF86FFA0B4 +S315E060199034390000529A3D42FF9E3E2EFFEE3407F8 +S315E06019A044823D42FFF03E02082E0004FFA1671626 +S315E06019B04A79000052DC660E206EFFF648C7DFAE5D +S315E06019C0FFF6610014644279000052BE427900007D +S315E06019D052C0342EFFA002820000FFFA3D42FFA013 +S315E06019E04A6EFF92670461000D364A79000052DC68 +S315E06019F067046100105C082E0000FFA1671C3039A7 +S315E0601A00000052D64A79000052BC660A342EFF9A2C +S315E0601A10D4803D42FF9A3D40FFB64A6EFF90670034 +S315E0601A2000E4302EFF94B06EFF8C6C3A3E00342EAC +S315E0601A30FF96DE823007B06EFF8C6F00017C342E3D +S315E0601A40FF8C9E82322EFF963D47FF963401948747 +S315E0601A503E39000052C0DE8233C7000052C0302EED +S315E0601A60FF8C3D40FF94B06EFF886E00014C3E00F7 +S315E0601A70342EFF96DE8253873007B06EFF886F1094 +S315E0601A80342EFF889E82342EFF9694873D42FF96E1 +S315E0601A90302EFF98B06EFF8E6C3A3E00342EFF9A81 +S315E0601AA0DE823007B06EFF8E6F00010E342EFF8E41 +S315E0601AB09E82322EFF9A3D47FF9A340194873E39E3 +S315E0601AC0000052BEDE8233C7000052BE302EFF8E6B +S315E0601AD03D40FF98B06EFF8A6E0000DE3400322E25 +S315E0601AE0FF9AD48153823002B06EFF8A6F16322E2F +S315E0601AF0FF8A9481322EFF9A92823D41FF9A60047A +S315E0601B00020400083239000052E03D41FFAC3D6E10 +S315E0601B10FFFAFFB43039000052763D40FFAA3A4002 +S315E0601B20207C00E01AFF1030D8003D40FFA8303935 +S315E0601B30000052BE340002820000000F3D42FFE822 +S315E0601B4073C0E68902810000FFFE3439000052C0AE +S315E0601B503D6EFF96FFEA362EFFEAD4835382C4EEEB +S315E0601B60FFF0362EFFF044833D43FFF03602D68128 +S315E0601B70206EFFF648C3D1C32D48FFF63D6EFF9A4F +S315E0601B80FFEC322EFF94362EFF96D2835381302EB1 +S315E0601B90FF984EBA13D222790000044ED3C12D4984 +S315E0601BA0FFF23D40FFE6303900005278360044836C +S315E0601BB03D43FFEE610000963239000052C64A7935 +S315E0601BC0000052DC6714322EFFA6362EFFA44A6E62 +S315E0601BD0FFA267062401220326027400053900008D +S315E0601BE052D167104A79000052BC66083439000069 +S315E0601BF052D6D2824A6EFF926E103439000052C2DB +S315E0601C00D48133C2000052C260364A6EFF826712E8 +S315E0601C106E203439000052C4948133C2000052C44D +S315E0601C20601E3439000052C2948133C2000052C251 +S315E0601C30600E3439000052C4D48133C2000052C40D +S315E0601C404CD73CFC4FEF00284E5E4E754FEFFFFCE5 +S315E0601C5048EF00200000322EFFE63A01362EFFE81C +S315E0601C609A83320530016A144485320500810000AA +S315E0601C7080003A0006850000001030053D41FFD641 +S315E0601C803A00E38D45F900E423F030053A4030321E +S315E0601C90D8003A0046853D45FFD8302EFFE63A004B +S315E0601CA0E38D30053A403632D8003D43FFDA0285AF +S315E0601CB00000FFFFE28D362EFFECDA833405300557 +S315E0601CC03A02362EFFB69A8302850000000FE38D56 +S315E0601CD034053A423432D8003A0246853D45FFDE65 +S315E0601CE042443D7C8000FFB076FF34050C40001036 +S315E0601CF062203A00E38D30053A403232D8003A014C +S315E0601D0046853E2EFFDACE853D47FFDA7EFC32051C +S315E0601D10605632007BC1E88D538532053601661820 +S315E0601D20322EFFE83A013E2EFFECDA8732050C41AF +S315E0601D30002064047E00600C4A6EFFD66D047E046B +S315E0601D4060027E080280FFFF000F4A4066083A03A1 +S315E0601D505385701036053A00E38D30053A403832E7 +S315E0601D60D8003A04468538053D47FF843D43FFE4A5 +S315E0601D703D44FFDC3A0354853605B8426504528536 +S315E0601D8036053D43FFE03D43FFE22A1F6048000021 +S315E0601D90040408080C0C101010101414181800E055 +S315E0601DA021FA00E0224200E0225A00E0228800E0C8 +S315E0601DB0227200E0221C00E0229E00E022B600E0F3 +S315E0601DC022CE00E022D000E022FA00E022E600E047 +S315E0601DD022BA00E0230C4FEFFFF448EF0106000063 +S315E0601DE0302EFF9E73EEFFACE2893D41FFAC3200E0 +S315E0601DF0D38175EEFFB4E28A3D42FFB4D381300110 +S315E0601E003A40207C00E01D8E1030D8003A40207CBD +S315E0601E1000E01D9E2470D800264A2A4A3840207C7D +S315E0601E2000E01DBA2870C800302EFFA06700008A67 +S315E0601E300800000167223239000052D23D41FFB20C +S315E0601E402D4DFFCC4BFA06BA2D4AFFC045FA07186E +S315E0601E502D4CFFB849FA06EC08000000671C426E9C +S315E0601E60FFAE2D4DFFD04BFA04BA2D4AFFC445FABA +S315E0601E7005A22D4CFFBC49FA054808000002673808 +S315E0601E803D6EFF9CFFB02D4DFFC84BFA06FE4A6ED5 +S315E0601E90FF846E246708426EFFE47E006016322E91 +S315E0601EA0FFEC0C41001063104A6EFFD66D047E04B1 +S315E0601EB060027E083D47FF843E2EFF846F062A4A15 +S315E0601EC03A2EFFEE362EFFEA320353813447207C0A +S315E0601ED000E01F362470A80036014CEF01060000D2 +S315E0601EE04FEF000C4ED24FEFFFF848EF00030000D3 +S315E0601EF0716EFFAA538042C13D40FFAA44C16F267E +S315E0601F00206EFFF6226EFFF254892D49FFF24CEF08 +S315E0601F10000300004FEF0008082E0002FFA16700F3 +S315E0601F20FEB66000FD284CEF000300004FEF0008AE +S315E0601F304E7500E01F4200E01F8200E0213600E0BF +S315E0601F402042342EFFDA3C2EFFF03E2EFFEE47FABB +S315E0601F50002460087146D1C07147D3C038112010A3 +S315E0601F60322EFFD66B04E2A86002E3A84840320056 +S315E0601F7048404ED532814A436704538360D6600059 +S315E0601F80FF66284B3C2EFFF03E2EFFEE45FA0062E0 +S315E0601F902A0A47FA002E600E7146D1C07147D3C057 +S315E0601FA0200B26452A0038112010322EFFD66B040E +S315E0601FB0E2A86002E3A8484032004840342EFFDAE7 +S315E0601FC04ED54FEFFFF848EF010100003281320055 +S315E0601FD0346EFFA8304A38318800342EFFDC200B9F +S315E0601FE026452A004CEF010100004FEF00084ED471 +S315E0601FF04FEFFFFC48EF01000000346EFFA8304A67 +S315E060200033818800205F4A4367045383608A6000B7 +S315E0602010FED6204622477D6EFFF0D1C67D45D3C60B +S315E0602020426EFFAE42873C2EFFB23E06E38EE08F05 +S315E0602030EE8F8C873D46FFB2082E0002FFA1660058 +S315E060204005E82C082E093D6EFFE4FFD42018381110 +S315E0602050322EFFD6E3A8484032004840342EFFDAFD +S315E060206047FA00044ED54FEFFFFC48EF0001000051 +S315E06020703281716EFFA8D3C0342EFFD847FA00587C +S315E0602080201F4FEFFFF848EF0028000038003604C5 +S315E0602090C6823018484030014840322EFFD6E3A869 +S315E06020A04840320048403A02468538033601C685E4 +S315E06020B04685B983381132033405776EFFD453838E +S315E06020C042C53D43FFD444C54CEF002800004FEFC6 +S315E06020D000086D184ED44FEFFFFC48EF000100009A +S315E06020E03281716EFFA8D3C0201F6096342EFFDC6C +S315E06020F047FA00044ED532814A436706538360004F +S315E0602100FF126000FDE2204622477D6EFFF0D1C6F9 +S315E06021107D45D3C6426EFFAE42873C2EFFB23E0699 +S315E0602120E38EE08FEE8F8C873D46FFB2082E00028D +S315E0602130FFA1660004F42C082E093D6EFFE4FFD48F +S315E0602140301848403811322EFFD6E2A848403200B7 +S315E06021504840342EFFDA47FA00044ED54FEFFFFCD5 +S315E060216048EF000100003281716EFFA8D3C0342EC3 +S315E0602170FFD847FA0056201F4FEFFFF848EF0028D8 +S315E0602180000038003604C682484030184840322E97 +S315E0602190FFD6E2A84840320048403A024685380316 +S315E06021A03601C6854685B983381132033405776EC4 +S315E06021B0FFD4538342C53D43FFD444C54CEF00286A +S315E06021C000004FEF00086D184ED44FEFFFFC48EF6C +S315E06021D0000100003281716EFFA8D3C0201F6098B5 +S315E06021E0342EFFDC47FA00044ED532814A43670657 +S315E06021F053836000FF126000FCEE4FEFFFFC48EF98 +S315E0602200000100003002468034003004C0823800AD +S315E06022103002468032043400201F4ED34FEFFFFC7D +S315E060222048EF000100003002468034000280000082 +S315E0602230FFFF8280468034003001C0843200201F78 +S315E06022404ED34FEFFFFC48EF000100003001B9804C +S315E0602250C082B9803200201F4ED34FEFFFFC48EFBB +S315E0602260000100003001C0824680C0843200201F39 +S315E06022704ED34FEFFFFC48EF000100003001C08213 +S315E0602280B9803200201F4ED34FEFFFFC48EF0001CC +S315E060229000003001C08280843200201F4ED34FEFB1 +S315E06022A0FFFC48EF0001000030014680C082808478 +S315E06022B03200201F4ED372004ED34FEFFFFC48EF43 +S315E06022C0000100003001C0843200201F4ED34ED39F +S315E06022D04FEFFFFC48EF0001000030014680C0840C +S315E06022E03200201F4ED34FEFFFFC48EF00010000A5 +S315E06022F03001B9803200201F4ED34FEFFFFC48EF2C +S315E06023000001000071C48280201F4ED34FEFFFFCB6 +S315E060231048EF000100003001468080843200201FD3 +S315E06023204ED34FEFFFFC48EF000400004FEFFFF4A1 +S315E060233048D700E03C01CC8232063C2EFFDE082E18 +S315E06023400000FFB1671E42C200820000001044C276 +S315E06023503406DD8648463C02E28E64043C3C8000FE +S315E06023603D46FFDE4A6EFFE46B0ABC6EFFDC64044A +S315E0602370C086600842403E01CE8632073C2EFFB6FC +S315E06023803A0248453A2EFFDCEDAD48453E05484504 +S315E06023903401C487C0853202484132005386200149 +S315E06023A0E28882804A466704538660F2300148419B +S315E06023B04CD700E04FEF000C246EFFD0241F4ED2C6 +S315E06023C04FEFFFF848D700603A2EFFE253853D4570 +S315E06023D0FFE2660A3C013A2EFFDECC8532063C2EF1 +S315E06023E0FFB6484142412A015386E28D82854A46DC +S315E06023F06704538660F43A0148417DEEFFAE82861B +S315E06024003D45FFAE4CD700604FEF0008246EFFBC41 +S315E06024104ED24FEFFFF448D700E03C2EFFDE3A2E77 +S315E0602420FFE253853D45FFE26B2067223A2EFFE2ED +S315E060243053853D45FFE266063A01CA8632053C01B0 +S315E06024403A2EFFDACC853206607C424160063A017C +S315E0602450CA8632054FEFFFFC48EF000100004A6E86 +S315E0602460FFB06B5A3A2EFFE454853E2EFFDC42C045 +S315E060247000800000001044C03007DF8748473E0018 +S315E0602480E28F64063E3C80005285302EFFDA0C40D7 +S315E060249000016602538542C000800000001044C01F +S315E06024A03006DD8648463C00E28E64043C3C8000B3 +S315E06024B0BE46650252853D46FFDE3D45FFE03D6E28 +S315E06024C0FFE0FFE2201F3C2EFFB6484142412A0171 +S315E06024D05386E28D82854A466704538660F43A0104 +S315E06024E048417DEEFFAE82863D45FFAE3A01CA8247 +S315E06024F032054CD700E04FEF000C246EFFC44ED29D +S315E06025004FEFFFF848EF000C00003601342EFFB2C3 +S315E0602510C68232033600342EFFB2C682300342836F +S315E0602520342EFFB23602E38AE08BEE8B84833D4243 +S315E0602530FFB2246EFFCC4CEF000C00004FEF0008BA +S315E06025404ED24FEFFFF848EF000500003401302E21 +S315E0602550FFB2C480246EFFB832024CEF0005000083 +S315E06025604FEF00084ED24FEFFFF848EF000500004E +S315E06025703401302EFFB2C480246EFFC032024CEFCD +S315E0602580000500004FEF00084ED24FEFFFF848EF2E +S315E0602590002800004285362EFFB03A03E38BE08DDB +S315E06025A0EE8D8685E28D42C53D43FFB044C5642E1F +S315E06025B048413200E2894842342EFFDCE28A3D42FD +S315E06025C0FFDC48423D42FFDA6734302EFFD66B1EB1 +S315E06025D03600528330033D40FFD630014841246ED9 +S315E06025E0FFC84CEF002800004FEF00084ED24A00CB +S315E06025F0670836005383300360DC424060D23D4278 +S315E0602600FFDC48423D42FFDA716EFFA8D3C0381165 +S315E0602610700F3A00362EFFD69A83300500800000B0 +S315E060262080003D40FFD660B642873C2EFFB03E0656 +S315E0602630E38EE08FEE8F8C87E28F42C73D46FFB038 +S315E060264044C7640C4A6EFFD66B00F9F86000FAE89E +S315E060265042C600860000001044C642873C2EFFD882 +S315E06026609F873E062C07E2863D46FFD8302EFFDC8C +S315E06026700C40FFFF676A42C600860000001044C651 +S315E06026803C003E06DD8648463C07E28E3D46FFDC82 +S315E0602690302EFFD64A0066063D7C8000FFD8322E9B +S315E06026A0FFDA7DC1E28E42C7320644C767443D41E8 +S315E06026B0FFDA4A406B0E3C2EFFD652863D46FFD689 +S315E06026C06000FA744A00670E302EFFD653803D40B4 +S315E06026D0FFD66000F96E3D7C0001FFD66000FA58D7 +S315E06026E03C2EFFE452863D46FFE43D7C8000FFDC05 +S315E06026F0609E3D7CFFFFFFDA342EFFE453823D426D +S315E0602700FFE4756EFFA8D3C2740F3C029C8034066A +S315E06027100082000080003D42FFD66000F9264FEF60 +S315E0602720FFE448EF0010000C48EF00C000143239B7 +S315E0602730000052BE340102820000000F3D42FFE815 +S315E060274079C1E88C7A0148EF00200010EBAC206E8E +S315E0602750FFF648C4D1C43D6EFF9AFFEC3039000005 +S315E060276052C0322EFF963D41FFEA342EFFF04A6EAC +S315E0602770FF82670001B66D16382EFFF044843D4453 +S315E0602780FFF038015384D084C0C248C0D1C0302E37 +S315E0602790FF9602800000FFFFE888EBA854803D408A +S315E06027A0FFEE2279000052E2796EFFFCD3C44A6EF6 +S315E06027B0FF826E18382EFFEE44843D44FFEE322EE3 +S315E06027C0FF9A38015384C0C448C0D3C0342EFFE8B2 +S315E06027D0363C80004CEF0010000C380338437BC376 +S315E06027E0E4AD7000342EFFEC4CEF004000143C2E5C +S315E06027F0FFF02448264936054CEF002000104CEFE8 +S315E0602800008000184FEF001C6000009648EF00045F +S315E06028100000322EFFEA4CEF0008000460363E10FE +S315E06028203407C4834A426702808414054A02671407 +S315E060283002820000000F3C0448463C04E4AE3806E1 +S315E06028404846E38E4CEF00400008640432C07000F6 +S315E06028507546D1C248EF004000084A41670453819B +S315E060286060BC32807000756EFFEED7C2224B380CCA +S315E060287014054A02671402820000000F3C034846D2 +S315E06028803C03E4AE36064846E38E6402548A204A48 +S315E06028904CEF000400004CEF004000084FEF000CE6 +S315E06028A04FEFFFF448EF000800044A4267065382A0 +S315E06028B06000FF5A302EFF9A322EFF963D41FFECC4 +S315E06028C03D41FF9A3D40FFEA3D40FF96302EFFA432 +S315E06028D03D6EFFA6FFA43D40FFA63D7C0001FFA242 +S315E06028E0302EFFEE4A6EFF826E063600448330037A +S315E06028F03D40FFF0302EFFFC4CEF000800044FEF48 +S315E0602900000C4279000052BE4FEFFFFC48EF000238 +S315E060291000002479000052E27340D5C12D4AFFF6EB +S315E06029204279000052C0221F4E75302EFF9A382E33 +S315E0602930FFE8D084538002800000FFFFE888EBA8C0 +S315E060294054803D40FFEE3400EAAA5382C0C13C00A9 +S315E060295079EEFFFC0086FFFF0000DC842279000050 +S315E060296052E248C6D3C64CEF0010000C4CEF004074 +S315E06029700014607E48EF000200002448360248EF0B +S315E0602980000C0004301A7C00780F48EF0010000C51 +S315E060299073C0EAA93001120534067810028100009E +S315E06029A0001F67103602D582484234033E3C001170 +S315E06029B09E81EEAAD78348433602E9AB3C024CEFF0 +S315E06029C00010000C42C14A446704538460BC44C1B1 +S315E06029D033024CEF000C000442C14A43670653835E +S315E06029E044C1609A44C1736EFFF0D1C14CEF0002FE +S315E06029F0000042C74A416708538144C76000FF76DA +S315E0602A00323CFFFF44C73D6EFFEEFFF022790000E7 +S315E0602A1052E27B6EFFFCD3C52D49FFF630390000EC +S315E0602A2052BE3E003A2EFF9ADE854487028700005A +S315E0602A30000F33C7000052BE4279000052C04CEF2F +S315E0602A40002000104CEF008000184FEF001C4E7520 +S315E0602A504FEFFFF048EF00C000083039000052BE8B +S315E0602A60380002800000000F3D40FFE87DC4E88E3C +S315E0602A70E38E3039000052C0C0EEFFF03E00DE86E5 +S315E0602A80300748EF00010000206EFFF67740D1C3C3 +S315E0602A90342EFFE8363C8000380348EF001000042F +S315E0602AA002830000FFFFE4AB342EFF96322EFF9ADE +S315E0602AB03D42FFEA3D41FFEC2279000052E2717946 +S315E0602AC0000052E6D3C0082E0004FFA16772302EE4 +S315E0602AD0FF9652803D40FF96302EFF9A52803D40F1 +S315E0602AE0FF9A3001E388568002800000FFFFE888A5 +S315E0602AF0E38854803A004CEF004000087C003200E6 +S315E0602B0032C64A456704538560F645E9FFFE3A02F8 +S315E0602B103005E3883A007141D5C034864A4567049A +S315E0602B20538560F23A0071C5E28853803A00350613 +S315E0602B3042C04A456706538544C060F244C06016A9 +S315E0602B4071C1E688E3880080FFFF000054803200B0 +S315E0602B504CEF004000083D41FFEE4CEF0080000C7A +S315E0602B603E39000052BA2007D180781FE9A8E28F8B +S315E0602B708E807E002007D180781FE9A8E28F8E8064 +S315E0602B803E2EFFF03439000052B83A2EFFEA3005A7 +S315E0602B9053803C3C7FFF3A004CEF001100004FEF62 +S315E0602BA000104A876B644FEFFFF448EF00070000C0 +S315E0602BB071C232060081FFFF0000D2804FEFFFF85E +S315E0602BC048EF0001000442C02E80202F00043C0143 +S315E0602BD02F400004201744C04CEF000100044FEF83 +S315E0602BE000084CEF0003000064046100015475477F +S315E0602BF0D1C24CEF000400084FEF000C4A45670471 +S315E0602C00538560A23A3CFFFF60664FEFFFF848EFFE +S315E0602C100006000071C232060081FFFF0000D2802C +S315E0602C204FEFFFF848EF0001000442C02E80202FEE +S315E0602C3000043C012F400004201744C04CEF000123 +S315E0602C4000044FEF00084CEF0002000064046100EE +S315E0602C5000F0610000EC7547D1C24CEF000400045F +S315E0602C604FEF00084A4567045385609E3A3CFFFF94 +S315E0602C704FEFFFF448EF00700000342EFF9A3239D0 +S315E0602C80000052B63039000052B8760079C03A0199 +S315E0602C900085FFFF0000DA8442C6320544C664065A +S315E0602CA03803528436044A876A0638035284360407 +S315E0602CB04A426704538260D433C1000052B63D4352 +S315E0602CC0FF9A3D6EFFA4FF96322EFFEE3D41FFF088 +S315E0602CD0082E0004FFA167542079000052E2717962 +S315E0602CE0000052E6D1C03E0148C743F078024CEF9F +S315E0602CF0007000004FEF000C610001344FEFFFF809 +S315E0602D0048EF000600003039000052E63400322E0B +S315E0602D10FFEED481720F33C1000052BE30024CEF39 +S315E0602D20000600004FEF00086000FBDE303900006F +S315E0602D3052E64CEF007000004FEF000C6000FBC401 +S315E0602D404FEFFFFC48EF000200004FEFFFF448D77B +S315E0602D500058264828492A473D45FFD470003A2E58 +S315E0602D60FFEC53853E39000052B6600A32034843B1 +S315E0602D703601E28B640234583C0ACC834A466646A6 +S315E0602D804A876B1A02820000FFFF32070081FFFF6D +S315E0602D900000D28242C63E0144C664666056028244 +S315E0602DA00000FFFF32070081FFFF0000D28242C6CB +S315E0602DB03E0144C6643E320448443801E28C6434E1 +S315E0602DC032C07000602E02820000FFFF3207008191 +S315E0602DD0FFFF0000D28242C63E0144C66410808492 +S315E0602DE0320448443801E28C640432C070004A8799 +S315E0602DF06A108084320448443801E28C640432C04C +S315E0602E0070004A45670653856000FF6232804CD7A2 +S315E0602E1000584FEF000C204B224C221F48C1D3C113 +S315E0602E202E0D3A2EFFD44E753A4743F0D8003A4716 +S315E0602E3045F1D80071C7E28853803D40FFD43C2E0F +S315E0602E40FF962A4853863E003846264A7A007C003A +S315E0602E502212E2894FEFFFF048EF0002000448EFEC +S315E0602E600080000C201010052200E288741FE5A99E +S315E0602E7080812411140626022203E28B781FE9A9D9 +S315E0602E80868128032204E28C7A1FEBA988812A00D6 +S315E0602E902C00B580B785B9864281E38DDB81220659 +S315E0602EA0E58E7E1EEEA98C81808580864CEF0002E1 +S315E0602EB0000448EF000100002A012C01B581B785C6 +S315E0602EC0B9864280E38DDB802006E58E7E1EEEA825 +S315E0602ED08C804CEF00010000808180858086B7821F +S315E0602EE0B78448EF000800082204E58C761EE6A960 +S315E0602EF088818082808448403C113A063605B183F9 +S315E0602F00C680548A2212122AFFFF3A032601E2891A +S315E0602F107E1FEFAB828332C53A1030C64CEF008835 +S315E0602F2000084FEF00104A47670653876000FF26A8 +S315E0602F304FEFFFFC48EF000100003E2EFFD4204D2E +S315E0602F403C0C244B224A716EFFF0D5C0201F0C4624 +S315E0602F500001660224494A46670653866000FEEA37 +S315E0602F603C3CFFFF4E754FEFFFF848D7000CC2F9C7 +S315E0602F700000527834000280FFFF000F02820000FA +S315E0602F80FFF0163900012B80E6AA48C2D2824CD700 +S315E0602F90000C4FEF00084E752A4F2A6D00042E7C18 +S315E0602FA00000814C200D06800000008023C00001F7 +S315E0602FB08908202D000CD0AD0014D0AD001C068031 +S315E0602FC0000001002F002F0D42673F3C004A4E4152 +S315E0602FD04FEF000C42A73F3C00204E4123C000006B +S315E0602FE0804441F900014F4C20AD002C4EB900E21F +S315E0602FF07DF4207C00014F5C42816000000430C1BA +S315E06030004A806704538060F641F900E0332E23C8B6 +S315E06030100000815E41F900E0333023C80000816240 +S315E06030202C7C00014F5C2A4EDDFC0000074A2B4EEB +S315E0603030003E2E4E4EB900E27FFC30390001890435 +S315E06030404A406600FFA82F39000080443F3C0020DC +S315E06030504E415C8F2F3C000000004E4123DF0000B4 +S315E0603060804823C20000814C23CA00008150427927 +S315E060307000018E64427900018E664E410C8000004C +S315E060308000006C26720133C100018E6433C000011A +S315E06030908E660C40FFE06E12320048C146810481C4 +S315E06030A00000001E33C100018E6624390000814CA9 +S315E06030B02479000081502F39000080484E75220F38 +S315E06030C02F0A2F026100006A207900014DA820686E +S315E06030D000082F28003E224F93FC00000050214953 +S315E06030E0003E6100006222412F29000E2F29000A6E +S315E06030F02F2900063F2900043F3C004B4E414FEF2D +S315E060310000106100002C207900014DA820680008BD +S315E0603110215F003E61000030241F245F720133C1ED +S315E060312000018E644A806B06427900018E644E75BA +S315E06031302F0040C033C000008154008000000700CB +S315E060314046C0201F4E752F0030390000815446C0BE +S315E0603150201F4E752F0040C000800000070046C06B +S315E0603160201F4E752F0040C002800000F8FF46C069 +S315E0603170201F4E7541F8008820BC00E03216203CE6 +S315E060318000E031B42F003F3C01013F3C00054E4D6D +S315E0603190508F4E752039000081566000FFE870FF61 +S315E06031A06100FFE223C000008156203C00E031B4BC +S315E06031B06000FFD2302F0004322F00064FEFFFDCB5 +S315E06031C048D778F8227C00E424203F006600000AB5 +S315E06031D0307C000060000012468030400C400011F8 +S315E06031E06F000006307C0000103098003F013F0021 +S315E06031F04EB900E24F78588F321F48C10C4000004C +S315E060320067000008223C0001000020014CD778F8F6 +S315E06032104FEF00244E754A4067140C4000C86716AD +S315E06032200C4000C967102F390000815A4E7542671D +S315E06032303F3C004C4E416100FEF84E6841E8FFC8F5 +S315E060324048D07FFE4E602C7900014DA82C6E0008B8 +S315E06032503CBC00012D4800422D4F00462E6E003EDC +S315E06032606100FEE42F013F004EB900E2CA3A5C8F8E +S315E06032706100FEBE207900014DA82068000842503A +S315E0603280214F003E2E680046206800424CD07FFE0B +S315E060329041E800384E606100FEAE4E7341F800884A +S315E06032A020B90000815A4E7541F8008823D00000AD +S315E06032B0815A20BC00E032164E7523CF000081664D +S315E06032C04FF9000081FA4FEFFFE848D707073F0064 +S315E06032D04EB900E28974548F4CD707074FEF001858 +S315E06032E02E79000081664E7523CF000081664FF926 +S315E06032F0000081FA4FEFFFE848D707073F013F003C +S315E06033002F3C00E28C964EB900E23CF0508F4CD7F1 +S315E060331007074FEF00182E79000081664E75302F53 +S315E06033200004322F00062F390000815E4E754E751F +S315E060333023CF0000816A4FF90000827A4AB9000023 +S315E060334081766700002652B90000817253B90000A9 +S315E06033508176660000162F39000081722F3C00E20C +S315E060336043A84EB900E23CF0508F3F3C00014EB9B5 +S315E060337000E289F8548F2E790000816A2F390000C7 +S315E0603380816E4E7540C033C00000828200800000CE +S315E0603390070046C0206F0004202F00082068000860 +S315E06033A02268003E23002149003E303900008282D7 +S315E06033B046C04E75207900014DA824680008206853 +S315E06033C0001822680018D3E8001C2308233C00E0BC +S315E06033D0322E4E61200F51802540003E40C008806D +S315E06033E0000D46C0226800084ED14A3900014F58A8 +S315E06033F0670000044E75103900014F58528013C0C3 +S315E060340000014F5840C033C0000082800080000059 +S315E0603410070046C02F0E2C7900014DA82C6E0008DF +S315E06034202D5F003A48EE3FFF00024E6D2D4D0042A3 +S315E06034302D4F003E4FF90000850430390000828050 +S315E060344046C04EF900E23F1640C033C000008280BD +S315E060345000800000070046C02E6F00044CEF3FFF7F +S315E060346000022C6F00424E662C6F003A2E6F003ED3 +S315E0603470423900014F5830390000828046C04E75AF +S315E060348041F90000850820BC00014B60223C000049 +S315E0603490850870734E424E7541F90000850C20AF89 +S315E06034A000044E7541F90000851020AF00044E75AA +S315E06034B041F90000851420AF00044E7541F9000023 +S315E06034C0851820AF00044E7541F900014B6E20AFC0 +S315E06034D000044E7541F900014B7220AF00044E7551 +S315E06034E0206F000420B900014B724E75206F000812 +S315E06034F0226F00044280424112186700000A32C11E +S315E060350052806000FFF44E7541EF0004200A2258B5 +S315E06035102458349924583499245834992450349151 +S315E060352024404E7541EF0004225822D822904E7511 +S315E0603530206F0004322F0008101867000008B00101 +S315E06035406600FFF6538820084E7500002A4F2E7CF1 +S315E060355000008D1C2A6D0004202D000CD0AD0014F7 +S315E0603560D0AD001C0680000001002F002F0D4267E1 +S315E06035703F3C004A4E414FEF000C203C00E0359066 +S315E060358023C0000238BC4EB900E3810642674E4173 +S315E0603590202F000423CF00008D1C2E7C000091209C +S315E06035A02F004EB900E3574C2E7900008D1C4E7506 +S315E06035B0222F0004303C00C84E424E752A6F00044C +S315E06035C02E7C0000A1342F0D202D000CD0AD001410 +S315E06035D0D0AD001C0680000001002F002F0D3F3C9F +S315E06035E000003F3C004A4E414FEF000C2F3C00E0AC +S315E06035F036843F3C01013F3C00054E4D508F23C071 +S315E0603600000091206100002A4EB900E41FD0588F77 +S315E06036106100000642A74E412F39000091203F3CF1 +S315E060362001013F3C00054E4D508F4EBA001E4E756F +S315E06036302F3C00E0365E3F3C01023F3C00054E4DCC +S315E0603640508F23C0000091244E752F3900009124DD +S315E06036503F3C01023F3C00054E4D508F4E754A7926 +S315E060366000025114670000044E7540C002800000FD +S315E06036705FFF46C03F3C00012F3C000251184EB947 +S315E060368000E01296207C00E424344EBA00403F3CD1 +S315E060369000023F3C00024E4D588F02800000005F02 +S315E06036A00C000041670000160C000052670000162F +S315E06036B00C0000496600FFCE42804E75302F000454 +S315E06036C048C04E75303C000148404E754280101847 +S315E06036D00C000000670000182F083F003F3C000226 +S315E06036E03F3C00034E4D5C8F205F4EFAFFE04E7527 +S315E06036F023DF000091284E4D2F39000091284E754A +S315E060370023DF0000912C4E4E2F390000912C4E7530 +S315E06037104E560000202E000880FC000A48404240D9 +S315E060372048404E5E4E754E560000202E000880FCE6 +S315E0603730000A424048404E5E4E7523DF00009130FD +S315E06037404E412F39000091304E7500004FEFFFF487 +S315E060375048D7040C242F0010262F001445F900E00A +S315E0603760F66C4A7900012CEC671A2F032F02487A2F +S315E0603770005C4E922F032F02487A00224E924FEF62 +S315E06037800018600E2F032F02487A00424E924FEFE8 +S315E0603790000C4CD7040C4FEF000C4E752F02720AEA +S315E06037A0342F00087142B28066103F3C000D3F3C0A +S315E06037B000024EB900E03E68588F3F023F3C00028F +S315E06037C04EB900E03E68588F241F4E752F02720A8C +S315E06037D0342F00087142B280660E558F3F3C000D73 +S315E06037E04EB900E0A888588F48823F420008241FFF +S315E06037F060FF000070964E560000486E000C2F2E5B +S315E06038000008487AFF984EB900E0F66C4FEF000C7E +S315E06038104E5E4E754E560000486E000C2F2E000828 +S315E0603820487AFFAA4EB900E0F66C4FEF000C4E5EA8 +S315E06038304E754E560000486E000C2F2E00084EBAAC +S315E0603840FF0C508F4E5E4E756173736572742066C1 +S315E060385061696C656420696E2025733A256C642025 +S315E06038602866756E6374696F6E202573293A202524 +S315E0603870730A00002F2F00102F2F00102F2F00103B +S315E06038802F2F0010487AFFC24EBAFF8A4FEF00141E +S315E06038904E751B760D0A004E6F2073617665642067 +S315E06038A0696E666F20696E20646F70616E69633BF6 +S315E06038B02068616C7465642E0A0050616E69633AD3 +S315E06038C02025732E206676203D20307825303478AA +S315E06038D02C207372203D203078253034782C20708F +S315E06038E063203D2030782530386C780A0050616E70 +S315E06038F069633A20457863657074696F6E206E75AA +S315E06039006D6265722025642E206676203D203078D3 +S315E0603910253034782C207372203D20307825303481 +S315E0603920782C207063203D2030782530386C780A1A +S315E06039300020202020202020666F726D6174203D7B +S315E06039402025642C20766563746F72203D202564A3 +S315E06039502C206661756C74203D2025640A004172F6 +S315E06039606567733A202530386C78202530386C7876 +S315E0603970202530386C78202530386C78202025304A +S315E0603980386C78202530386C78202530386C782093 +S315E06039902530386C780A0044726567733A202530C2 +S315E06039A0386C78202530386C78202530386C782073 +S315E06039B02530386C7820202530386C7820253038F2 +S315E06039C06C78202530386C78202530386C780A00A1 +S315E06039D050726F636573736F722068616C7465644F +S315E06039E02E0A00004E5600002F0A2F02487AFEA4E7 +S315E06039F04EBAFE04588F203C12345678B0B90000B7 +S315E0603A000380670C487AFE914EBAFE28600001207A +S315E0603A102239000003C46612486E000C2F2E00089F +S315E0603A204EBAFD2A508F60000086200174095580E9 +S315E0603A3041FAFE00B48065202F39000003D03F399B +S315E0603A40000003CE43FA01823F39000003CC2F31F8 +S315E0603A501C00487AFE66601A558F2F39000003D045 +S315E0603A603F39000003CE3F39000003CC3F01487A7E +S315E0603A70FE7D4E9073F9000003CCA5424FEF000E39 +S315E0603A802001028000000C00C481E08080823F005B +S315E0603A9020010280000003FCE4803F00700CE0A996 +S315E0603AA03F01487AFE8D4EBAFD8A4FEF000C2F3902 +S315E0603AB0000003C02F39000003BC2F39000003B8B3 +S315E0603AC02F39000003B445FAFD6A2F39000003B0D0 +S315E0603AD02F39000003AC2F39000003A82F3900000E +S315E0603AE003A4487AFE7A4E924FEF00202EB900008A +S315E0603AF003A02F390000039C2F39000003982F396B +S315E0603B00000003942F39000003902F390000038CE6 +S315E0603B102F39000003882F3900000384487AFE7944 +S315E0603B204E924FEF00202EBC00E039D04E924EB957 +S315E0603B3000E00B7000616363657373206572726F9A +S315E0603B40720061646472657373206572726F72008D +S315E0603B50696C6C6567616C20657863657074696FC4 +S315E0603B606E00646976696465206279207A65726F51 +S315E0603B70006461746174797065206F766572666CF5 +S315E0603B806F77202843484B29007472617076206F06 +S315E0603B90766572666C6F7720626974206572726FA3 +S315E0603BA0720070726976696C6567652076696F6CBC +S315E0603BB06174696F6E005472616365004C696E652D +S315E0603BC041004C696E65460000E03B3400E03B3402 +S315E0603BD000E03B3500E03B4200E03B5000E03B620A +S315E0603BE000E03B7100E03B8900E03BA200E03BB6D1 +S315E0603BF000E03BBC00E03BC22F03203C00004E04EB +S315E0603C002F02322F000CA3437541B682671A163C29 +S315E0603C100002203C00004E12B682670C203C000099 +S315E0603C204DE84A416702A140241F261F4E754AB9F6 +S315E0603C300000A13866182039000004BA2079000037 +S315E0603C4004BA48404240D08823C00000A1382039F9 +S315E0603C500000A138223CBB40E62D4C0108005280B2 +S315E0603C6023C00000A138E0884E75203C00004E2459 +S315E0603C704E75206F00044ED0702C4E7542804E75A6 +S315E0603C8000E081A400E0064C00E0799400E079B2BF +S315E0603C9000E07A8000E07E1400E079BA00E07AE243 +S315E0603CA000E06E1000E06DE800E06B5E00E0064C60 +S315E0603CB000E05C6E00E0566000E03BF800E0552016 +S315E0603CC000E05D0200E03C2E00E065C200E06AE0F4 +S315E0603CD000E0064C00E0A61200E0507000E05210F2 +S315E0603CE000E05D3E00E061BA00E0559C00E05616FB +S315E0603CF000E062D000E0632A00E0630400E05694EE +S315E0603D0000E0635000E0064C00E03C6A00E05E06DE +S315E0603D1000E0064C00E079C600E03C7200E0064C4C +S315E0603D2000E0064C00E0673A00E072D000E07942DD +S315E0603D3000E03C7800E0064C00E08E8200E0064C55 +S315E0603D4000E0064C00E0064C00E0064C00E0064C65 +S315E0603D5000E0064C00E0064C00E0064C00E0064C55 +S315E0603D6000E0064C00E0064C00E0064C00E0064C45 +S315E0603D7000E0064C00E0064C00E0064C00E0064C35 +S315E0603D8000E0064C00E0064C00E0064C00E0064C25 +S315E0603D9000E0064C00E0064C00E0064C00E0064C15 +S315E0603DA000E0064C00E0064C00E0064C00E0064C05 +S315E0603DB000E0064C00E0064C00E0064C00E0064CF5 +S315E0603DC000E079E200E079FC00E0064C00E0064CB9 +S315E0603DD000E0064C00E0064C00E0064C00E0064CD5 +S315E0603DE000E07C1C00E07FF2005A00001038FA2BFD +S315E0603DF05DC071004E7542804E7542804E75428060 +S315E0603E004E7542804E754EBAFFE44A8067081038B8 +S315E0603E10FA2F71804E7560FE42804E7542804E7517 +S315E0603E2042804E7542804E754E754E751038FA2D4D +S315E0603E305DC071004E754EBAFFF44A80670A41EF85 +S315E0603E40000711D0FA2F4E7560FEA1404E75A14075 +S315E0603E504E75A1404E75A1404E754E753F6F00069A +S315E0603E60000460FF00005EC43F6F0006000460FF70 +S315E0603E7000006730203C00E057C823C00000051E04 +S315E0603E80203C00E03DEC23C000000522203C00E041 +S315E0603E905D9223C000000526203C00E03DF623C08D +S315E0603EA00000052A203C00E05BD423C00000052E1C +S315E0603EB0203C00E03DFA23C000000532203C00E0F3 +S315E0603EC03DFE23C000000536203C00E03E0223C0F4 +S315E0603ED00000053A203C00E057CC23C00000053ED8 +S315E0603EE0203C00E03E0623C000000542203C00E0A6 +S315E0603EF05DAA23C000000546203C00E05BEC23C0E1 +S315E0603F000000054A203C00E03E1823C00000054E54 +S315E0603F10203C00E03E1C23C000000552203C00E04F +S315E0603F203E2023C000000556203C00E03E2423C02E +S315E0603F300000055A203C00E057DE23C00000057E05 +S315E0603F40203C00E03E3623C000000582203C00E0D5 +S315E0603F503E6823C000000586203C00E05C5623C036 +S315E0603F600000058A203C00E061A223C00000058EC7 +S315E0603F70203C00E03E5C23C000000592203C00E06F +S315E0603F803E2823C000000596203C00E03E2A23C080 +S315E0603F900000059A203C00E057D023C00000055E93 +S315E0603FA0203C00E03E2C23C000000562203C00E09F +S315E0603FB03E4A23C000000566203C00E05C4623C024 +S315E0603FC00000056A203C00E0619223C00000056EB7 +S315E0603FD0203C00E03E4E23C000000572203C00E03D +S315E0603FE03E5223C000000576203C00E03E5623C0EA +S315E0603FF00000057A203C00E03E5A23C00000050E32 +S315E060400023C00000051223C00000050623C000009F +S315E0604010050A23C0000005024E7500004FEFFFD091 +S315E0604020322F003C48D77CFC346F0034302F003EA2 +S315E0604030756F003AA1462A2F0036262F0040794157 +S315E0604040BC84670277C178082E0AC88773C04A4481 +S315E0604050666A781FB881650001383C00CDFC002AAD +S315E06040602046D1FC000114C04A68000C67000122BA +S315E0604070382800287D68000E73442E01DE87E989C2 +S315E06040809287068100011A0A22414C5160067D46FC +S315E06040904C0638006B0000FE4C062800222800081B +S315E06040A0670A2043D1C2B288630000EAC1FC002AF5 +S315E06040B00680000114C42040D690603E7819B8812D +S315E06040C0650000CE734041F900011A042801D884E6 +S315E06040D0E98992844A701800670000B64A836D00E9 +S315E06040E000B4068100011A0620412210670A2043C7 +S315E06040F0D1C2B2886300009E3800220AA340C08124 +S315E06041007D442E0455874DF900E0794247F900E099 +S315E06041106E362440702A4C0608000680000114C002 +S315E06041202A4028404BED002249EC002020020C8218 +S315E060413000007FFF6F0471FC7FFF3F40002E068228 +S315E0604140FFFF8001A341B2866D18558F3F043F158E +S315E06041503F142F033F002F053F0A4E934FEF0014A5 +S315E06041606022320A670C3F072F053F002F034E9609 +S315E0604170600E3F072F053F002F034EB900E072D077 +S315E06041804FEF000C4A826F0E716F002EDA80609CF2 +S315E060419070F1600270F84CD77CFC4FEF00304E75E2 +S315E06041A04FEFFFF4302F001048D7040C741F73C034 +S315E06041B0B481650000B27140143C002A4C002800CE +S315E06041C02042D1FC000114C04A68000C67000098E8 +S315E06041D0A341B2806D000094322800282279000065 +S315E06041E004BA71412600D683E9889083068000018F +S315E06041F01A0E24402012068000000064B0896E6AC0 +S315E06042002F2800043F012479000004C63F3CFFFFED +S315E06042103F3C00012F0A3F3C00084EBAFE004FEFDC +S315E060422000104A4067047140604641F9000114E4B9 +S315E060423071B0280073AA0008B081663241F90001C6 +S315E060424014E571B0280073AA0009B081662041F9CF +S315E0604250000114E671B0280073AA000AB08157C065 +S315E060426071005480600A70F1600642806002A54089 +S315E06042704CD7040C4FEF000C4E754FEFFFE8721F02 +S315E060428048D73C0C342F001C71C2B28065000148EF +S315E06042903602C7FC002A2643D7FC000114C04A6BED +S315E06042A0000C670001322F2B00043F2B00283F3CB7 +S315E06042B0FFFF3F3C00012F39000004C63F3C000889 +S315E06042C04EBAFD5A4FEF00104A406600010A247963 +S315E06042D0000004C64BF900E0672A49EB000E486A25 +S315E06042E0000B4E9573AA000D3880C1C137410010AE +S315E06042F037400012486A00114E953214508F670EAF +S315E060430071C07341EB884C41080037400014486A3D +S315E060431000164BF900E0672A4E953202588FC3FCCF +S315E0604320002A2641D7FC000114C0306B001422003D +S315E06043305281374000163741001849EB001AD088A1 +S315E0604340D28038814A2A000D671A486A00134E9572 +S315E06043503214588F9081360073AA000D77C386C1F8 +S315E06043603743001CC5FC002AA34149F900E0672AEF +S315E06043702642D7FC000114C0716B001C0C80000063 +S315E060438005A05EC04880C0813740001E486A001ABA +S315E06043904E9437400022486A00184E94508F43EAA4 +S315E06043A000083740002041F9000114E4200206804D +S315E06043B0000114CE1191280041F9000114E543EAA9 +S315E06043C0000945EA000A1191280041F9000114E666 +S315E06043D011922800600242804CD73C0C4FEF0018E7 +S315E06043E04E75558F3F3CFFFF4EB900E05D68588FD4 +S315E06043F044C06B16A940C0B9000004C2670C7002E5 +S315E060440033C00000044642804E75424033C000002F +S315E0604410044660FF00002B624201303C02004FEF31 +S315E0604420FFEC48D71C0C41F900011A0033D00001BB +S315E06044301420740242B90001143242B90001143604 +S315E060444047F90001142413C10001142245F9000163 +S315E0604450143A49FAFE2633C00001147C13C1000108 +S315E06044601423558F3F02421B429A4E94588F4A80DE +S315E060447067162040301073790001147C7740B28370 +S315E06044806C0633C00001147C528271427210B280B5 +S315E060449066D0323C0300207C4148444923C8000191 +S315E06044A01472203C0001147241F9000114204CD7CB +S315E06044B01C0C23C00001147623C8000005164FEFDC +S315E06044C0001433C10001147A4E754EB900E070EA0B +S315E06044D0700233C000011A00A740C1B9000004C2EF +S315E06044E04EB900E0787A6000FF30203C0000A13CE5 +S315E06044F023C0000004C6203C00E043E223C0000085 +S315E0604500047A203C00E0427A23C000000472203C3A +S315E060451000E0401C23C000000476203C00E041A09F +S315E060452023C00000047E42B90000046A4EB900E090 +S315E060453065A460964D6178696D756D206E756D6286 +S315E06045406572206F6620706172746974696F6E73EC +S315E06045502072656163686564210A00003279000152 +S315E06045601A004FEFFFF4702048D70C04206F00125A +S315E06045707349B0816610487AFFBC4EB900E03814E2 +S315E0604580588F70FF607E702A52894C01080045F9A9 +S315E0604590000114C047E8000142021590080045F9A1 +S315E06045A0000114C154881593080045F9000114C24E +S315E06045B01590080041F9000114C3118208002040FB +S315E06045C0D1FC000114C045EF001F33C900011A0099 +S315E06045D0342F0010216F00160004216F001A0008C6 +S315E06045E054823142002874013142000C41F90001E5 +S315E06045F014E611920801A340E3A8714081B9000076 +S315E060460004C242404CD70C044FEF000C4E75203983 +S315E0604610000004C24E75736F0004A340E3A8C0B9FE +S315E0604620000004C24E7542412F02206F000843E845 +S315E06046300200719075A800015488E188D082D0812B +S315E06046403200B3C866EC241F4E7500002F02736F0C +S315E06046500008A142206F000AE58922412011B48852 +S315E060466067022288241F4E7570144E7560FFFFFF47 +S315E0604670FFA0558F3F2F00062F390000047E4EB90C +S315E060468000E00692508F4E75558F3F2F00062F390A +S315E0604690000004724EB900E00692508F4E75716F5D +S315E06046A00004AF41B2806D1441F90000055E2F3021 +S315E06046B00C004EB900E00682588F4E7542804E750A +S315E06046C0302F0004AF4141F90000053EC0812F3034 +S315E06046D00C004EB900E00682588F4E75302F00040C +S315E06046E0AF4141F90000051EC0812F300C004EB984 +S315E06046F000E00682588F4E752F2F00103F2F001274 +S315E06047003F2F00123F2F00122F2F00103F2F001275 +S315E06047102F39000004764EB900E006C24FEF001470 +S315E06047204E75302F00043F2F0006AF4141F900007F +S315E0604730057E3F00C0812F300C004EB900E006AA2E +S315E0604740508F4E7562696F735F696E697428290A66 +S315E06047500073637265656E5F696E697428290A0025 +S315E0604760626D656D5F696E697428290A0070726FA3 +S315E0604770636573736F725F696E697428290A006393 +S315E06047806F6F6B69655F696E697428290A006D6190 +S315E06047906368696E655F696E697428290A00766583 +S315E06047A063735F696E697428290A006D66705F6974 +S315E06047B06E697428290A00736E645F696E6974288D +S315E06047C0290A006B62645F696E697428290A006D64 +S315E06047D06964695F696E697428290A00696E69743B +S315E06047E05F616369615F7665637328290A00616664 +S315E06047F074657220696E69745F616369615F76652D +S315E0604800637328290A00616674657220626C6B6462 +S315E060481065765F696E697428290A006166746572F7 +S315E060482020767435325F696E697428290A0061669C +S315E060483074657220636C6F636B5F696E6974282957 +S315E06048400A006166746572206E6C735F696E697486 +S315E060485028290A006166746572206E6C735F736501 +S315E0604860745F6C616E6728290A0061667465722000 +S315E06048706F73696E697428290A00616674657220CF +S315E06048807365745F737228307832333030290A008A +S315E0604890616674657220636172747363616E282900 +S315E06048A00A00616674657220786D616464616C7437 +S315E06048B028290A0062696F735F696E697428292026 +S315E06048C0656E640A00506C6561736520656A656350 +S315E06048D0742074686520666C6F70707920616E64B0 +S315E06048E0206869742052455455524E00006D696ED9 +S315E06048F0742E707267005C4155544F5C2A2E50529C +S315E060490047004C6F6164696E67202573202E2E2EFA +S315E06049100A005B4F4B5D0A005C4155544F5C0043B7 +S315E06049204F4D4D414E442E50524700537973746556 +S315E06049306D2068616C746564210A00004FEFFF18B2 +S315E060494048D77C0C487AFDFE45F900E038144E9273 +S315E06049504EB900E096444EB900E08A78487AFDF3B5 +S315E06049604E924EB900E07E9E487AFDF64E924EB982 +S315E060497000E05838487AFDF74E924EB900E006FC02 +S315E0604980487AFDFD4E924EB900E0894C487AFE00C9 +S315E06049904E924EB900E08BB6487AFE044E924EB91E +S315E06049A000E003284EB900E0034242B9000004CEBD +S315E06049B042B9000004D242B9000004D6203C00E0CF +S315E06049C0046621C00068203C00E0043821C000880D +S315E06049D0203C00E005C821C000B8203C00E006802D +S315E06049E021C0001421C0006421C0006C21C00074A5 +S315E06049F021C0007821C0007C43F900E0048A21C927 +S315E0604A00007043F900E005BA21C900B470FF43F9CC +S315E0604A1000E0099821C9002843F900E0000023C9B5 +S315E0604A20000004F243F900E0067E23C900000400BA +S315E0604A3023C90000040843F9000004CE23C900003E +S315E0604A400456487AFD6742B9000004DA33C00000D4 +S315E0604A5004EE203C00004EE823C0000004A2203CA7 +S315E0604A6000E005B623C000000404700842B9000007 +S315E0604A7004DE42B9000004E242B9000004E642B94D +S315E0604A80000004EA33C0000004544E924FEF002069 +S315E0604A904EB900E056E6487AFD1F4E924EB900E008 +S315E0604AA06298487AFD1F4E924EB900E06234487AC9 +S315E0604AB0FD1F4E924EB900E05C9E487AFD204E9214 +S315E0604AC04EB900E000C8487AFD264E9240C046FCEA +S315E0604AD025004EB900E044EA487AFD2C4E924EB984 +S315E0604AE000E080CA4EB900E0986C4EB900E0991AD1 +S315E0604AF04EB900E0A678487AFD234E92700133C045 +S315E0604B00000004524EB900E03E744EB900E057B87A +S315E0604B104EB900E05032487AFD164E924FEF0020D3 +S315E0604B204EB900E0F9AC487AFD1A4E924EB900E013 +S315E0604B3090862F004EB900E0F9DC487AFD184E9277 +S315E0604B4043F900E02F9823C9000004FE4EB900E067 +S315E0604B50C102487AFD164E9240C046FC2300487A70 +S315E0604B60FD1A4E924FEF00123F3C00034EB900E053 +S315E0604B70008A487AFD1C4E92508F2039000005A4C9 +S315E0604B800C80010000006F160680FF0000002F0019 +S315E0604B902F3C010000004EB900E0BF5C508F487AC0 +S315E0604BA0FD0245F900E038144E92487AFD084E92CF +S315E0604BB0508F203C752019F3B0B900000420661CC4 +S315E0604BC0227C237698AAB3F90000043A660E203C6C +S315E0604BD05555AAAAB0B90000051A6724227C75204B +S315E0604BE019F323C900000420203C237698AA227C8E +S315E0604BF05555AAAA23C00000043A23C90000051A45 +S315E0604C00558F3F3C003045F900E012B04E92588F28 +S315E0604C104A7900011B7466164A7900012BBC660E60 +S315E0604C203F3900E0001E3F3C002B4E92588F4A7998 +S315E0604C3000011B706728203C1234ABCDB0B900E0B0 +S315E0604C400014661A487AFC7F4EB900E011762F00B0 +S315E0604C504EB900E037F64EB900E05DAA508F4EB926 +S315E0604C6000E0848C4EB900E086844EB900E043E211 +S315E0604C703039000004463F0033C00000A53C3F3CAD +S315E0604C80000E4EB900E012B0588F4A7900012B90C1 +S315E0604C90674C558F487A0268487AFC52487AFC4EEF +S315E0604CA03F3C000545F900E012D84E924FEF000A0E +S315E0604CB043F900E035BC20402149000842A8001CC9 +S315E0604CC042A8001442A8000C2EBC00E048EC2F007D +S315E0604CD0487AFC1A3F3C00044E924FEF0010558F25 +S315E0604CE03F3CFFFF4EB900E05D68588F44C0670007 +S315E0604CF00154420047F900E012D81F40001E487890 +S315E0604D00008045EF00222F0A4EB900E09820548FCC +S315E0604D102EBC00E04EFE2F0A487AFBD33F3C0005EE +S315E0604D204E9324402052202A000490882F00486841 +S315E0604D3001004EB900E0979A4FEF00184A806F3C49 +S315E0604D40558F487AFBA82F0A2F003F3C00324E93DE +S315E0604D504FEF0010B5C066244EB900E097E0558F7E +S315E0604D60487AFB8A2F0A487AFB8448803F3C0004F5 +S315E0604D7033C0000004464E934FEF0010558F2F2A44 +S315E0604D80002C3F3C004947F900E012B04E93548F47 +S315E0604D902E8A3F3C00494E935C8F3F3900000446C3 +S315E0604DA04EB900E04616588F4A8067000098558FE6 +S315E0604DB049EF00A02F0C3F3C001A260C49F900E0B1 +S315E0604DC038144BF900E012D84E933F3C0007487A1E +S315E0604DD0FB263F3C004E4E934FEF0010240F0682B9 +S315E0604DE0000000BC45EF00CA4DF900E1C4B660487A +S315E0604DF0101910C066FA1F4000C82F022F0A4E969F +S315E0604E002F0A487AFAFE4E944FEF000A2EBC00E075 +S315E0604E104EFE487AFAD82F0A42674E95487AFAF4F7 +S315E0604E204E944FEF000E2E833F3C001A4E935C8FFC +S315E0604E303F3C004F4E93588F4A40660843FAFADA91 +S315E0604E40204A60AC45F900E012D84A790000048255 +S315E0604E506712558F487A00A8487AFA92487AFAC17A +S315E0604E6042676040558F487A0096487AFA80487A79 +S315E0604E70FA7C3F3C00054E924FEF000A43F9000092 +S315E0604E8004FE20402151000842A8001C42A80014FC +S315E0604E9042A8000C2EBC00E048EC2F00487AFA4E9F +S315E0604EA03F3C00044E924FEF00104EB900E0973859 +S315E0604EB0487AFA794EB900E011762F004EB900E0F3 +S315E0604EC038324EB900E00B7042804E7500E0592AE8 +S315E0604ED000E046DC00E046C000E0472200E046F83D +S315E0604EE000E0464C00E0466800E0468800E0469E0A +S315E0604EF000E0467200E0466C00E05D68000C000091 +S315E0604F002F027013342F00083202C2FCCCCDE0A928 +S315E0604F102001E988C3FC000A9481D082241F4E7583 +S315E0604F202F02740F73AF00092001E888C282241F44 +S315E0604F30C1FC000AD0814E754FEFFFF4720948D785 +S315E0604F40040C242F001026024243484345FAFFB280 +S315E0604F502003E2A80680000000503F004E92720FE8 +S315E0604F6013C00000A5692003EA88C0813E804E92A6 +S315E0604F7013C00000A56A701FC6803E833602D482E5 +S315E0604F804E92723F13C00000A56BC4813E824E9282 +S315E0604F9075C3723F13C00000A56E2002EA88C08127 +S315E0604FA03E804E9213C00000A56D700BE0AA3E8273 +S315E0604FB04E9241F90000A5682F083F3C000613C0F9 +S315E0604FC00000A56C10BC001B4EB900E061BA4CEF66 +S315E0604FD0040C00084FEF00144E7542404878FC21FF +S315E0604FE033C000011B744EB900E00658588F4A8002 +S315E0604FF0671E1038FC21A1417100B280671210383B +S315E0605000FC237100B2806708700133C000011B7435 +S315E06050104E75AD672F2F000848790000A5694EB937 +S315E060502000E00EC44FEF000C700133C00000A566CF +S315E06050304E754A7900012BBC671A70024840B0B9D8 +S315E060504000012BB06D0470F6600270F433C00000AE +S315E0605050A5404E754A7900011B74661271F900E04D +S315E0605060001E484042402F004EBAFECE588F4E7525 +S315E06050704FEFFFF048D7041C202F00144A79000157 +S315E06050802BBC6744721F762F3400C08145F900E07F +S315E06050908E5C780B75C2D0803F0042674E922002EC +S315E06050A0EA88E8AAC0833F003F3C00024E92700463 +S315E06050B03F42001E4CEF041C00083F40001C4FEFCF +S315E06050C0001860FF00003D984A7900011B74670094 +S315E06050D001062600741F4243484373FCCCCD781327 +S315E06050E0307CFC2143F90000A548C4834C021800DB +S315E06050F0E8A9380113C10000A5502203EA89C9FC7A +S315E0605100000A948413C20000A54F740F7813C2821C +S315E0605110343CCCCD4C012800E8AAC5FC000A92825A +S315E060512013C10000A55113C10000A5527209240302 +S315E0605130E2AA323CCCCD4C021800E8A9360113C194 +S315E06051400000A554C7FC000A948313C20000A5536F +S315E06051502400762FD4823202C2FCCCCDE8A9C3FC0F +S315E0605160000A9481721FC28071C013C20000A54814 +S315E06051707412C2FCCCCDE4A92400EA8A13C1000013 +S315E0605180A549C48373FCCCCD4C021800E8A9183C51 +S315E0605190000BE8A8360113C10000A54B73FCCCCD2B +S315E06051A04C001800C7FC000A948313C20000A54AAD +S315E06051B07413E4A9340113C10000A54DC5FC000ACF +S315E06051C0908213C00000A54C10995488B1FCFFFF93 +S315E06051D0FC3B66F460102F4000144CD7041C4FEF84 +S315E06051E000106000FD544CD7041C4FEF00104E7564 +S315E06051F069636C6B6275663A2079656172203D2001 +S315E060520025782C206D6F6E7468203D2025780A0025 +S315E06052104FEFFFE848D7047C4A7900012BBC676C06 +S315E0605220558F3F3C000745F900E08E3478097A1FD8 +S315E06052304E923EBC000816004E923EBC0009C68502 +S315E060524014004E924257720FC48132390000A54075 +S315E06052507180EB8AD081E9A884804E923EBC0002E0 +S315E0605260848316004E923EBC0004180048424242D7 +S315E060527077834E92588F73847180780BEB89E9A8B7 +S315E06052808280828373C18282600001F64A7900017E +S315E06052901B7467000124600812D054885280600C49 +S315E06052A04240307CFC2143F90000A54873407A0C0B +S315E06052B0BA816CE44240307CFC2145F90000A55897 +S315E06052C043F90000A548731014C17519B48166D01E +S315E06052D05280B1FCFFFFFC396704548860E8714096 +S315E06052E0720DB28066BA14390000A552103900001A +S315E06052F0A551760F780F7A0948824880C483C083C7 +S315E060530016390000A554C5FC000A4883C68422020B +S315E0605310D28014390000A553EB89C7FC000A4882A5 +S315E0605320C484200316390000A550D08214390000E9 +S315E0605330A54F4883EBA81A3C000FC684488282805A +S315E0605340C484C7FC000A200316390000A54BD0824E +S315E060535014390000A54A8280488348824841424128 +S315E0605360C684C48418390000A54DC7FC000A488489 +S315E06053702003D08216390000A54C740FC882EB88F2 +S315E06053804883C9FC000AC682240418390000A5498E +S315E0605390D483760BE7AA16390000A5484884C88509 +S315E06053A080824883C685C9FC000A2404D48380824F +S315E06053B071C08280600000CA4240558F4879000023 +S315E06053C0A568721C3F0033C00000A56613C10000EB +S315E06053D0A5684EB900E061BA508F203C007A1200B1 +S315E06053E06002538032390000A56666044A8066F240 +S315E06053F071B90000A56A45FAFB283F0071B9000063 +S315E0605400A5693F00487AFDEA4EB900E0381471B903 +S315E06054100000A5695C8F3F004E92380071B90000CC +S315E0605420A56A3E800684FFFFFFB04E923C0071B9EC +S315E06054300000A56B3E804E923A0071B90000A56E01 +S315E06054403E804E92360071B90000A56D3E8077C30E +S315E0605450E28B4E92340071B90000A56C3E80EB8A17 +S315E06054604E92588F2206EB898483760BE7A8828575 +S315E06054707A09EBAC8480828475C24841424182827B +S315E06054804CD7047C20014FEF00184E754FEFFFF4C8 +S315E060549048D7001C362F0010302F0012322F001430 +S315E06054A0A3447543B88267266D064A436710606613 +S315E06054B0A543B6826728A744B882665A603A420234 +S315E06054C011C2FA1911C1FA1F11C0FA1960484203F4 +S315E06054D011C3FA1B11C1FA2111C0FA1B60381438E6 +S315E06054E0FA1D780FC48411C2FA1D11C1FA2374F053 +S315E06054F0C0821238FA1D60181438FA1D76F0780FFB +S315E0605500C084C48311C2FA1D11C1FA251238FA1D8E +S315E0605510808111C0FA1D4CD7001C4FEF000C4E7510 +S315E06055204FEFFFE8302F001C48D700FC3C2F001EF1 +S315E06055303A2F0020382F0022362F0024342F002601 +S315E06055407E0F73C0BE816520714041FA024A123017 +S315E06055500A0110300A00488148803F013F003F3C25 +S315E060556000034EBAFF285C8F4A466D0633C60001DB +S315E06055701B784A456D0411C5FA294A446D0411C485 +S315E0605580FA2B4A436D0411C3FA2D4A426D0411C2E7 +S315E0605590FA274CD700FC4FEF00184E752F02720FBA +S315E06055A0302F0008AF42C0812200B4806C34240002 +S315E06055B0A3405182E5A81238FA134680C28011C131 +S315E06055C0FA131238FA07C28011C1FA071238FA0BD9 +S315E06055D0C28011C1FA0B1238FA0FC08111C0FA0FFE +S315E06055E06030A340E3A81438FA1546802200C282F0 +S315E06055F011C1FA151238FA09C28011C1FA091238D6 +S315E0605600FA0DC28011C1FA0D1238FA11C08111C0CB +S315E0605610FA11241F4E752F02720F302F0008AF4229 +S315E0605620C0812200B4806C1C5181A340E3A812388B +S315E0605630FA07828011C1FA071238FA13808111C025 +S315E0605640FA136018A340E3A81238FA09828011C100 +S315E0605650FA091238FA15808111C0FA15241F4E75C1 +S315E06056604FEFFFF4700F48D7001C342F0010262F41 +S315E06056700012C4803F024EBAFF247142E5882040A2 +S315E0605680214301003F4200124CEF001C00024FEF45 +S315E0605690000E60824FEFFFF048D7003C342F0014D5 +S315E06056A0302F0016322F0018A745262F001A79C230 +S315E06056B0BA8465283F013F003F0275424EBAFDCE8F +S315E06056C02F43001C41FA00C841F02A004CEF003C31 +S315E06056D000063F50001A4FEF001660844CD7003C3E +S315E06056E04FEF00104E75424011C0FA0111C0FA0347 +S315E06056F011C0FA0511C0FA0711C0FA0911C0FA0B18 +S315E060570011C0FA0D11C0FA0F11C0FA1111C0FA13E7 +S315E060571011C0FA1511C0FA1711C0FA1911C0FA1BB7 +S315E060572011C0FA1D11C0FA1F11C0FA2111C0FA2387 +S315E060573011C0FA2511C0FA2B11C0FA2D33C0000151 +S315E06057401B78704811C0FA17303C1111487900E0B7 +S315E060575005523F3C00C033C000011B7A70143F3CE9 +S315E0605760005033C0000004423F3C00024EBAFF26C0 +S315E060577042673F3C00013F3C00013F3C0088426796 +S315E06057803F3C00014EBAFD9A4FEF00164E75000D94 +S315E06057900008000500040101010201040105010899 +S315E06057A0010A010B01100120014001600180018FB7 +S315E06057B001AF024002600000558F3F3C00204EB9C9 +S315E06057C000E06304588F4E7542804E7542804E7598 +S315E06057D01038FA010800000057C071004E752F0AB4 +S315E06057E02F024EBAFFEC4A80674840C246FC27006B +S315E06057F03F3C000745F900E062D042674E923F3C8D +S315E0605800008708C000073F004E923F3C008F3F2F65 +S315E060581000184E924FEF000A3F3CFFDF4EB900E0C2 +S315E0605820632A3EBC00204EB900E0630440C046C235 +S315E0605830588F241F245F4E75203C00E000000C80EA +S315E060584000E0000067080C80DFFFFFFF630A42406C +S315E060585033C000011B706014700133C000011B701F +S315E0605860203C00E5D6EC23C000E0000C22390000C5 +S315E0605870044E203900E0000C42B90000048E23C1DA +S315E060588000000436928023C0000004FA23C00000C2 +S315E0605890043223C000000492700123C10000049624 +S315E06058A042B90000049A33C00000A5704E7562618B +S315E06058B06C6C6F6328256C64292061742077726F45 +S315E06058C06E672074696D650A0062616C6C6F63284F +S315E06058D0256C64293A206E6F206D656D6F72790A6A +S315E06058E00000222F00044A790000A57066082F01A7 +S315E06058F0487AFFBC6016568170FCC2802079000051 +S315E06059000496B2886F0C2F01487AFFBF4EB900E06B +S315E06059100B2891C1203900000492D28023C8000090 +S315E0605920049623C1000004924E754240206F000445 +S315E060593042A8000433C00000A570203C0000048E3D +S315E06059402140000820804E756D697373696E67202B +S315E0605950465242206275666665720041435349204D +S315E06059602D3E2025640A00004FEFFFB4720A302F07 +S315E0605970005C48D77CFC386F00502E2F00523C2FDD +S315E06059800056282F00589BCD347C860047F900E00E +S315E060599067E4EB8882803F41002E720882803F4157 +S315E06059A000326000021C7146727F343C0080B28037 +S315E06059B06D0234060C84010000006F1A263900017E +S315E06059C02BB46E16487AFF824EB900E03814588FD1 +S315E06059D0A140600001F4260460043A7C0001300CCA +S315E06059E0671A320D671671427209E3A82F002F0419 +S315E06059F02F034EB900E00EC44FEF000C2003E088A1 +S315E0605A002203424148419DCE1F400037200748406F +S315E0605A1048C01F41003B721FC2802007E08871804A +S315E0605A203F41003E73823F40004271872F4100480C +S315E0605A302F400044300C6706302F002E6004302F74 +S315E0605A40003272FF33C10000043E1543000D122F91 +S315E0605A5000371541000B122F003B15410009320C4F +S315E0605A606716323C019835410006323C0098354174 +S315E0605A700006323C01986014323C009835410006DD +S315E0605A80323C019835410006323C009835410006CB +S315E0605A90323C00887180354200043541000635406D +S315E0605AA00004487800644E93588F4A40660000B020 +S315E0605AB0322F003E103CFF8A354000063541000437 +S315E0605AC0487800644E93588F4A4066000092322FC1 +S315E0605AD00042103CFF8A35400006354100044878B4 +S315E0605AE000644E93588F4A406674322F0046103CED +S315E0605AF0FF8A3540000635410004487800644E93DD +S315E0605B00588F4A406658322F004A103CFF8A35402B +S315E0605B10000635410004487800644E93588F4A4049 +S315E0605B20663C4241103C000A3540000635410004BF +S315E0605B30487803E84E93588F4A406622103CFF8AC5 +S315E0605B40323C00803540000642003A3886043541F2 +S315E0605B50000633C00000043E4A456614601E323CCF +S315E0605B60008042407AFF3541000633C00000043EC3 +S315E0605B70528E714EA541B2806600FEBA300C661A4E +S315E0605B80320D671671427209E3A82F002F032F04C6 +S315E0605B904EB900E00EC44FEF000C4A456714558FCE +S315E0605BA03F05487AFDB74EB900E038147145508F2D +S315E0605BB060169C82754272092002DE82E3A8D88074 +S315E0605BC04A466E00FDE242804CD77CFC4FEF004CCB +S315E0605BD04E750000323900004E18303900004E1A1A +S315E0605BE073417140B08156C071004E752F0A2F0225 +S315E0605BF045FAFFE24E924A8067FA40C146FC2700CA +S315E0605C00303900004E18528033C000004E183439E7 +S315E0605C1000004E18303900004E1675427140B08271 +S315E0605C206E08424033C000004E18207900004E12E4 +S315E0605C30303900004E18714071B0080040C246C16C +S315E0605C40241F245F4E751038FC04A541C0814A408C +S315E0605C5056C071004E752F0A45FAFFEC4E924A80A7 +S315E0605C6067FA41EF000B11D0FC06245F4E754FEFEB +S315E0605C70FFF448D70C04246F0012342F001047FA63 +S315E0605C80FFD6600C719A53823F0042674E93588FFD +S315E0605C904A426CF04CD70C044FEF000C4E75307CEA +S315E0605CA0FC0410BC000310BC00154E7530390000D2 +S315E0605CB04E0C588033C000004E0C323900004E0C5A +S315E0605CC0303900004E0873417140B0816E08424041 +S315E0605CD033C000004E0C323900004E0C3039000003 +S315E0605CE04E0873417140B0816716207900004E041A +S315E0605CF0303900004E0C43EF0004714021910800FA +S315E0605D004E752F02A142206F0008222F000C202F33 +S315E0605D100010B488670623C80000A584A142B48158 +S315E0605D20670623C10000A588A141B280670623C04B +S315E0605D300000A58C203C0000A584241F4E754E56BD +S315E0605D40FFFC486EFFFC4EB900E090AA4878001C64 +S315E0605D502F2EFFFC48790000A5844EB900E00EC402 +S315E0605D604FEF00104E5E4E752F02322F0008A142B3 +S315E0605D707141B4806608713900011B7C601010398E +S315E0605D8000011B7C13C100011B7C48807140241F0D +S315E0605D904E75323900004E0A303900004E0C7341C0 +S315E0605DA07140B08156C071004E752F0A2F0240C215 +S315E0605DB045FAFFE04E924A8067FA40C046FC27000B +S315E0605DC0303900004E0A588033C000004E0A32393E +S315E0605DD000004E0A303900004E0873417140B081D0 +S315E0605DE06E08424033C000004E0A207900004E043F +S315E0605DF0303900004E0A71402030080040C146C28A +S315E0605E00241F245F4E7530390000A5762F032F02DC +S315E0605E10306F000C75B90000A579A343322F000EF0 +S315E0605E20E18880827548B6826C0633C80000A57644 +S315E0605E307541A343B6826C0633C10000A578241F82 +S315E0605E40261F4E75103900000484A5414880C28043 +S315E0605E504A41674232390000A5746F3A538133C1D3 +S315E0605E600000A574663008000000671271B9000092 +S315E0605E70A5A1558F3F004EB900E006E4588F2F3953 +S315E0605E800000A5A04EBAFE26588F41F90000A5781D +S315E0605E9033D00000A5744E750708090405060102B3 +S315E0605EA0030000002F0372532F02342F000C71425F +S315E0605EB0B2806626103900011B7C123C000E760C1F +S315E0605EC04880C280B681661208000000670642B963 +S315E0605ED0000004204EB900E00000200202800000CD +S315E0605EE000804A4067000086424002820000FF7FF1 +S315E0605EF0722A33C00000A5747142B28067266D0ACB +S315E0605F00761DB68066000286602E7236B280670ABB +S315E0605F107638B68066000276602A103900011B7C0E +S315E0605F2072FE601C103900011B7C76FDC08313C0D5 +S315E0605F3000011B7C60000256103900011B7C72FB7D +S315E0605F40C08160EA103900011B7C76F7C083363980 +S315E0605F500000A57C13C000011B7C4A436D00022E45 +S315E0605F6070FF33C00000A57C600001C671427236E6 +S315E0605F70B28067206D10761DB680672C123C002AD1 +S315E0605F80B280666A60187638B680672A723AB280FE +S315E0605F90665C6030103900011B7CA34360121039E7 +S315E0605FA000011B7CA5416016103900011B7CA943EA +S315E0605FB080836000FF7A103900011B7C7208808163 +S315E0605FC06000FF6C1039000004844880080000001F +S315E0605FD0670E558F3F3C003A4EB900E006E4588FB5 +S315E0605FE0103900011B7C7610B7806000FF421039E3 +S315E0605FF000011B7C72084880C2804A416700008AC3 +S315E060600022020681FFFFFF9973C17609B681653882 +S315E06060104A790000A57C6C08424033C00000A57C4C +S315E06060200682FFFFFF99754230390000A57C41FA90 +S315E0606030FE6812302800C1FC000A4881D08133C076 +S315E06060400000A57C60000146A741C2804A4167081E +S315E060605020790000A594601C7210C2804A416708EE +S315E060606020790000A598600C20790000A590600476 +S315E06060705488600277421210675A48817341B6814C +S315E060608066EE16280001604EA741C2804A41672647 +S315E060609022020681FFFFFFC573C17609B681650CF2 +S315E06060A00682000000194203600000867342207990 +S315E06060B00000A58860187610C68073424A43670878 +S315E06060C020790000A58C600620790000A584163052 +S315E06060D0180060024203A941C0814A406706701F0A +S315E06060E0C680604C30390000A57A6D2C714020790D +S315E06060F00000A59C738320700C0060025488101029 +S315E0606100670C48807140B28066F21628000172FF23 +S315E060611033C10000A57A6018200353807180AD41D9 +S315E0606120B280650C7783538333C30000A57A605CE5 +S315E0606130103900000484488008000000670C558F21 +S315E06061403F024EB900E006E4588F1039000004843F +S315E0606150758272087783484242424880C081D6821F +S315E06061604A40670E713900011B7C123C0018E3A8B7 +S315E0606170D6802F034EBAFB3623C30000A5A0588F06 +S315E060618041F90000A57633D00000A574241F261FD0 +S315E06061904E751038FC00A541C0814A4056C071007A +S315E06061A04E752F0A45FAFFEC4E924A8067FA41EF48 +S315E06061B0000B11D0FC02245F4E754FEFFFF448D719 +S315E06061C00C04246F0012342F001047FAFFD6600CDF +S315E06061D0719A53823F0042674E93588F4A426CF001 +S315E06061E04CD70C044FEF000C4E752F0A2F02142F7C +S315E06061F0000D45FAFF9E4E924A8067FA11C2FC0294 +S315E0606200241F245F4E752F0A2F02342F000C45FAA7 +S315E0606210FF824E924A8067FA7142E08045FAFF74E7 +S315E060622011C0FC024E924A8067FA11C2FC02241F3A +S315E0606230245F4E75307CFC002F0A45FAFFAE10BC39 +S315E0606240000310BCFF963F3CFF804E923F3C00014E +S315E06062504E923F3C001A4E923F3C00124E924240B4 +S315E0606260508F245F33C00000A574103C001933C022 +S315E06062700000A576103C000533C00000A57870FFED +S315E060628033C00000A57A33C00000A57C700F13C050 +S315E0606290000004846000FAA870C0307C880010BCFE +S315E06062A0000711C08802700710BC000E11C088029A +S315E06062B0203C00E0637A23C0000005AC203C00E0AF +S315E06062C0636E23C0000005B042B90000A5A44E7518 +S315E06062D02F02302F000A40C146FC2700740FC480AD +S315E06062E002800000008011C288004A40670841EFE2 +S315E06062F0000911D088021038880040C246C171801A +S315E0606300241F4E752F0240C046FC2700307C880073 +S315E060631010BC000E1210342F00087381828211C106 +S315E0606320880240C146C0241F4E752F0240C046FC1D +S315E06063302700307C880010BC000E1210342F000855 +S315E06063407381C28211C1880240C146C0241F4E7566 +S315E0606350222F000420390000A5A44A816D0E23C1D6 +S315E06063600000A5A4420113C10000A5A84E75487AB5 +S315E060637000E44EBAFFDC588F4E75487A00F24EBAAA +S315E0606380FFD0588F4E752F0A2F0224790000A5A4FE +S315E06063904A8A670000AA10390000A5A8660643EAA3 +S315E06063A000016036538013C00000A5A8600000902D +S315E06063B011C088007300AF421011B48166141238C0 +S315E06063C0880074C0C282743FC082828011C1880234 +S315E06063D0600411C08802548A54891012204A6CD035 +S315E06063E073800C8100000080670C10110C81000046 +S315E06063F000816634600A204913D80000A5AA603897 +S315E060640011C08800528910390000A5AA1219D081FE +S315E060641013C00000A5AA11C08802718012114881DC +S315E06064207341B2806612600813C00000A5A86706D3 +S315E060643041E90001600291C823C80000A5A4241FB9 +S315E0606440245F4E752F39000005AC4EB900E0068238 +S315E0606450588F4E75003B0100020003000400050002 +S315E0606460060007FE08100D030B800C01FF000034E8 +S315E060647001000200030004000500060007FE0810A4 +S315E060648009000A000B000C100D09FF002F02716F66 +S315E060649000082239000004BA2400D482E988908298 +S315E06064A0068000011A0E204042402081241F33C03E +S315E06064B00000043E4E752F0240C146FC2700700E78 +S315E06064C074F811C0880010388800C0824A6F0008EE +S315E06064D06604A9426002A54280824A6F000A6604A9 +S315E06064E0A342808211C08802420013C00000A5ACBE +S315E06064F040C046C1241F4E75202F00042200E0896B +S315E060650011C0860D4240484011C1860B11C0860914 +S315E06065104E75303C03E860024E7153804A4066F83F +S315E06065204E752F02342F000A41EF000831D08606FF +S315E06065304EBAFFE031C28604241F60D670012F0296 +S315E0606540322F000833C00000043E71790000A5C018 +S315E06065507541B082674AA142B48067182400D4824C +S315E0606560E78841F90000A5B443F90000A5C290822E +S315E060657031910800714133C10000A5C041F90000C6 +S315E0606580A5B42200D281E7889081303008003F00D0 +S315E060659033C00000A5C23F3C00824EBAFF86588FEA +S315E06065A0241F4E75303C00FF33C000000444103CAD +S315E06065B0000333C000000440700113C00000A5ACC6 +S315E06065C04E754FEFFFE848D70C3C266F001C242F32 +S315E06065D000203A2F0024362F00262F0B4EB900E01C +S315E06065E04626588F38004A826D280C8200FFFFFFEE +S315E06065F06F0A3F3C00114E4E548F24002002484003 +S315E060660048C01742000A174000082002E0801740A1 +S315E0606610000971C5A741B280650000A0CBFC0016F9 +S315E060662041FA0B2A43FA0B2C3030580041FA0B2022 +S315E0606630D3C5D1C51750000D2045D1FC00E0714CA3 +S315E06066401751001043FA0B12D3C5175100151740C6 +S315E0606650000BE0881740000C302800041740000E5D +S315E0606660E0881740000F3028000817400011E088E6 +S315E0606670174000123028000A17400013E0881740E0 +S315E060668000143028000E17400016E0881740001707 +S315E06066903028001017400018E088174000193028AD +S315E06066A000121740001AE0881740001B30280014DB +S315E06066B01740001CE0881740001D4A436C0E0A84B0 +S315E06066C0000012344A4457C3488344834A43670A06 +S315E06066D07743A340B083664860202F0B4EB900E055 +S315E06066E04626588F71C00C80000012346632102B3B +S315E06066F001FF5280174001FF60264201174101FE0B +S315E0606700174101FF2F0B4EB900E0462673FC1234A9 +S315E0606710588F92802001E088174101FE174001FF03 +S315E06067204CD70C3C4FEF00184E75206F000471A8F3 +S315E060673000017390E188D0814E752F032F02302FD0 +S315E0606740000C322F000EA34375C0B68265247140FB +S315E0606750163C00032400D482E788204091C275C1CC +S315E0606760D1FC0000A5B63010B6826502308171407A +S315E0606770600270F1241F261F4E752F0A2F024A7998 +S315E06067800000043E6658203900000466AF41C081CF +S315E0606790664C4A390000A5AC6644343C008045FA54 +S315E06067A0FD7231C286064E92343886044E922002DD +S315E06067B00280000000804A40662440C046FC270014 +S315E06067C0720EAD4211C1880012388800828211C112 +S315E06067D08802720113C10000A5AC40C146C0241F07 +S315E06067E0245F4E752F032F02222F000CAB43203916 +S315E06067F0000004BA4C431801D081600C1238FA01EB +S315E06068007420C2824A41670E2239000004BAB08120 +S315E06068106EEA700160024240241F261F4E754FEFFC +S315E0606820FFF448D7040C342F001071790000A5C23C +S315E06068307342B0816754362F0012A74045FAFCE4F4 +S315E0606840C6804A42660C3F033F3C00804E92588FBA +S315E060685060163F023F3C00864E92701086803F0392 +S315E06068603F3C00804E92508F487809C44EBAFF761E +S315E0606870588F4A40670E70FF33C00000A5C2103CD7 +S315E0606880FFFA600833C20000A5C242404CD7040C50 +S315E06068904FEF000C4E75666C6F7072772829206238 +S315E06068A07566203D2030782530386C782C207277FC +S315E06068B0203D2025642C20646576203D2025642CCF +S315E06068C02073656374203D2025642C2074726163B7 +S315E06068D06B203D2025642C2073696465203D20256E +S315E06068E0642C20636F756E74203D2025640A007207 +S315E06068F065747279203D2025640A0074696D656F60 +S315E060690075740A00444D41206572726F720A0066C2 +S315E06069106C6F707277282920657272203D2025643D +S315E06069200A004FEFFFD448D77CFC3C2F003E362F61 +S315E060693000362E2F00303A2F00343A6F0038342F6D +S315E0606940003A382F003C49F900E038143F063F042E +S315E06069503F023F0D3F033F052F07487AFF3A4E94CB +S315E060696071C34FEF0014A341B28065000166558F95 +S315E06069703F034EBAFBC83F043F034EBAFB3A71434E +S315E06069802200D281E788908106800000A5B620408B +S315E06069903F103F024EBAFE884FEF000C3400670EA0 +S315E06069A0558F3F034EBAFAE6588F6000012842449D +S315E06069B0714545FAFB6E47FAFB5A2C40558F3F040A +S315E06069C0487AFF2D4E943F0D3F3C00844E922F0750 +S315E06069D04EBAFB264FEF00104A456622323C0090E5 +S315E06069E0307C019031C1860631C8860631C18606A3 +S315E06069F031C686043F3C00803F3C00806020303CEE +S315E0606A000190323C009031C0860631C1860631C0C5 +S315E0606A10860631C686043F3C00A03F3C01804E922C +S315E0606A202EBC000009C44EBAFDBC588F4A406718B8 +S315E0606A30487AFEC94EB900E038143E834EBAFA4E43 +S315E0606A40588F74FE6000008E307C009031C88606F8 +S315E0606A503038860608000000660C487AFEA84E9438 +S315E0606A60588F74F46040303C008031C086064E93A7 +S315E0606A70343886044E93A341B28E66087040C08275 +S315E0606A804A4066307010C0824A4066147008C08220 +S315E0606A904A406610A940C4804A42671C74FE60069C +S315E0606AA074F8600274FC52847144A541B280670A4E +S315E0606AB06000FF0A74F360024242558F3F034EBAAC +S315E0606AC0F9CC3E82487AFE494EB900E03814508FE0 +S315E0606AD0600274F130024CD77CFC4FEF002C4E75AF +S315E0606AE04FEFFFDC48D71CFC3C2F00383A2F0030D4 +S315E0606AF0342F00323E2F0034386F00364A466F4EF0 +S315E0606B0071C5A341B280654A424342447D46246FE3 +S315E0606B10002847FAFE0E3F3C00013F0C3F073F026C +S315E0606B203F0542672F39000004C64E934FEF0010D1 +S315E0606B304A40670634C2360060025282528471442B +S315E0606B40BC806ED24A43670242527143600642801D +S315E0606B50600270F14CD71CFC4FEF00244E754FEF8E +S315E0606B60FFC448D77CFC262F0040223C8765432142 +S315E0606B70342F0048382F004A3A2F004C3C2F004E05 +S315E0606B80302F0056B2AF00526600024A73C2A34786 +S315E0606B90BE81650002442A44538D73CD1E3C0009D4 +S315E0606BA0BE81650002387340E0891F40003749F9CD +S315E0606BB000E00DE81E3C00011F410035558F487826 +S315E0606BC0003C3F3C004E244345EA02772F034E9457 +S315E0606BD071442C434FEF000C4DEE003C2F400038E3 +S315E0606BE0558F4878000C426747EAFE00486AFDC563 +S315E0606BF04E945C8FA7573F3C00F5486AFDD14E94B2 +S315E0606C0072FE70024FEF000A1545FDD51546FDD6BA +S315E0606C101547FDD71541FDD472F71540FDD81541EE +S315E0606C20FDD9487800163F3C004E486AFDDA4E943E +S315E0606C304FEF000A4878000C4267486AFDF04E94D0 +S315E0606C405C8FA7573F3C00F5486AFDFC4E9470FBAD +S315E0606C504FEF000C1540FDFF16AF0035122F0037E1 +S315E0606C6017410001548BB5CB66EE204B558F10FC77 +S315E0606C70FFF745EB0264487800283F3C004E2F085A +S315E0606C804E944FEF000C200752803E0053807140D7 +S315E0606C90B0AF00386D00FF4A3004558F7FFC026468 +S315E0606CA0C1FCFD9A06800000182E71402F0071CD60 +S315E0606CB03F3C004E52804C070800487608004EB9CB +S315E0606CC000E00DE84FEF000A3F024EBAF8703F066B +S315E0606CD03F024EBAF7E271422200D281E7889081A4 +S315E0606CE006800000A5B620403F103F054EBAFB3057 +S315E0606CF04FEF000C3E00660000AC95CA4DFAF7FA1D +S315E0606D004BFAF82049FAFADE47FAF8082F034E966E +S315E0606D10303C0190323C009031C0860631C1860637 +S315E0606D2031C08606700D31C086043F3C00F03F3CC2 +S315E0606D3001804E95487809C44E944FEF000C4A4066 +S315E0606D40670E558F3F027EFE4EBAF742588F605E01 +S315E0606D50323C009031C18606303886060800000075 +S315E0606D60672C307C008031C886064E9330388604C6 +S315E0606D702F40002E4E93202F002E7240C2804A4153 +S315E0606D806620A941C0814A40671A70FE600270F4CD +S315E0606D90528A734A2041A541B2886600FF703E0080 +S315E0606DA060027EF3558F3F024EBAF6E2588F714726 +S315E0606DB0662C558F3F043F063F053F3C00013F028E +S315E0606DC042A72F034EBAFD1A4FEF00144A80670EB2 +S315E0606DD070F0600A4280600670F1600270F44CD731 +S315E0606DE07CFC4FEF003C4E753F2F00143F2F0014A4 +S315E0606DF03F2F00143F2F00143F2F00143F3C00014B +S315E0606E002F2F00104EBAFB1C4FEF001071404E75ED +S315E0606E103F2F00143F2F00143F2F00143F2F001424 +S315E0606E203F2F001442672F2F00104EBAFAF64FEF4D +S315E0606E30001071404E754FEFFFC8A34148D77CFC08 +S315E0606E403A2F004C362F003C3C2F0042242F003E68 +S315E0606E50282F004471C5B28065000110600000E231 +S315E0606E602E2F002C20044C4708014C4708003C407C +S315E0606E705281A340B08D6720714E02808000000190 +S315E0606E806C0853807EFE808752807F4E2E076A02B2 +S315E0606E905287E28F2C47600242400C82010000007C +S315E0606EA06F74207900012BB44A886F00008E3E0C27 +S315E0606EB06736487802002F022F082F40003C2F41AA +S315E0606EC000404E933F3C0001202F003E3F003F0EC6 +S315E0606ED0222F00463F013F053F032F3900012BB4C7 +S315E0606EE04E924FEF001C60443F3C00013F003F0E76 +S315E0606EF03F013F053F032F084E92487802002F3945 +S315E0606F0000012BB42F022F40004C4E934FEF001C34 +S315E0606F10202F003060163F3C00013F003F0E3F01EE +S315E0606F203F053F032F024E924FEF00104A40660C3A +S315E0606F300682000002005284602470FF7140602C7B +S315E0606F40A347CE83716F0048736F004A45FAF9D460 +S315E0606F5047F900E00EC42F40002C2A4128475386AB +S315E0606F604A466C00FEFC4280600270F14CD77CFCC5 +S315E0606F704FEF00384E753239000004A62F032F021A +S315E0606F802439000004C64A416744303900000446AB +S315E0606F9073417740B2836F363F3C00014267426798 +S315E0606FA03F3C00013F0042672F024EBAF9764FEF51 +S315E0606FB000104A40661C2F024EB900E04626588F04 +S315E0606FC071C00C80000012346710A9406006A540CD +S315E0606FD06002A740241F261F4E754FEFFFC448D7B7 +S315E0606FE07FFF2079000004C64E904CD77FFF4FEFBD +S315E0606FF0003C428060DE4FEFFFE048D73C3C342FF8 +S315E0607000002447F900011A04794220042604D0805E +S315E0607010E98B9680424037803800702A4C0408003D +S315E06070202440D5FC000114C049EA000C42543F02FA +S315E06070304EBAF50A426770FF3F0233C00000A5C250 +S315E06070404EBAF47442673F3C00804EBAF4D6487854 +S315E060705009C44EBAF7904FEF000E4A40667C303C6A +S315E060706000804BFAF4AE31C086064E953A38860417 +S315E06070704E95A940C0854A40676042402043D1FCB6 +S315E060708000011A0433C00000A5C23039000004A62E +S315E0607090528033C0000004A6A340E9A8714081B9DC +S315E06070A0000004C2700238BC00013542002842AAE2 +S315E06070B0000442AA000835400022103C0009354031 +S315E06070C00020103C00013780380071FC020042A8C5 +S315E06070D000022140000642A8000A3F4200244CD745 +S315E06070E03C3C4FEF00206000F3A4303C00FF2F0AE9 +S315E06070F0426745FAFF0233C000000444103C0003D7 +S315E060710033C000000440420033C0000004A670FFB4 +S315E060711033C00000A5C0700113C00000A5AC70FFCD +S315E060712033C00000A5B4700333C00000A5B670FF9D +S315E060713033C00000A5BA700333C00000A5BC4E9210 +S315E06071403F3C00014E92588F245F4E75020001006D +S315E06071500001020000400168FC0000020009000135 +S315E060716000000200020000010200007002D0FD0093 +S315E060717000020009000200000200020000010200B5 +S315E0607180007002D0F800000500090001000002006E +S315E0607190020000010200007005A0F9000005000988 +S315E06071A000020000206F0004202F000873900801A1 +S315E06071B00000671622280004B0816512D2A8000894 +S315E06071C0B08154C0488044804E7542404E7542401E +S315E06071D04E7547454D0042474D004C4E580053575B +S315E06071E050004D495800554E5800515741004D41A9 +S315E06071F0430046333200524157002F0A2F02242FB4 +S315E0607200000CA767487AFFCC2F0245F900E1C50874 +S315E06072104E924FEF000C4A40670000AEA767487A8F +S315E0607220FFB62F024E924FEF000C4A406700009A7D +S315E0607230A767487AFFA62F024E924FEF000C4A40AE +S315E060724067000086A767487AFF962F024E924FEF57 +S315E0607250000C4A406772A767487AFF882F024E9211 +S315E06072604FEF000C4A406760A767487AFF7A2F02C3 +S315E06072704E924FEF000C4A40674EA767487AFF6C24 +S315E06072802F024E924FEF000C4A40673CA767487A60 +S315E0607290FF5E2F024E924FEF000C4A40672AA767C7 +S315E06072A0487AFF502F024E924FEF000C4A40671823 +S315E06072B0A767487AFF422F024E924FEF000C4A4092 +S315E06072C057C04880448060027001241F245F4E7579 +S315E06072D02F2F000A3F2F000C2F2F000A42674267CC +S315E06072E03F2F001C4EB900E094604FEF00104E75E2 +S315E06072F025636425633A0020657874656E64656429 +S315E060730020706172746974696F6E7320756E7375DF +S315E060731070706F727465642079657420002024252E +S315E0607320303278000A00204E6F6E2D41544152494A +S315E060733020726F6F7420736563746F720A005847CA +S315E06073404D0020256325632563002058474D3C00AA +S315E060735020626C6F636B20256C64207265616420CB +S315E06073606661696C65640A000A46697273742073C3 +S315E060737075622D706172746974696F6E20696E20D2 +S315E0607380657874656E646564207061727469746949 +S315E06073906F6E206973206E6F742076616C6964210C +S315E06073A00A000A4944206F6620657874656E6465F4 +S315E06073B06420706172746974696F6E206973206E9F +S315E06073C06F742058474D210A00203E00204943440F +S315E06073D03C004FEFFFC448D77CFC342F0040487830 +S315E06073E00800487900011B804EB900E00DD83F02E5 +S315E06073F0487900011B803F3C000142A74EBAFED2AD +S315E06074004FEF00144A8066000466AF41C282714263 +S315E0607410E6880681000000614A40670C7140A5433A +S315E0607420B6806608706860067061600270733F01DE +S315E06074303F00487AFEBC4EB900E0381471B90001ED +S315E06074401D7E508F0C80000000AA662E71B9000187 +S315E06074501D7F7255B280662A41F900011B801010CB +S315E060746010A80001114000015488B1FC00011D80A4 +S315E060747066EC76013F43002E600E91C83F48002ED1 +S315E0607480600642403F40002E71B900011D7E725594 +S315E0607490B2806600014E71B900011D7F0C8000006C +S315E06074A000AA6600013E76043F42002C2E3C0001B5 +S315E06074B01D422C3C00011D492A3C00011D48283C28 +S315E06074C000011D474DF900011D464BF900011D4DB8 +S315E06074D049F900011D4C47F900011D4B3F4300325D +S315E06074E045F900011D4A74442047121042002046C7 +S315E06074F016131F50003420451F50003520441F42AC +S315E0607500003A14141F5000361F4000391F41003BFB +S315E06075101F56003710153043324214124A01670095 +S315E0607520008471803609E188778380833608E18854 +S315E0607530778380837782E188808367687781AB41F0 +S315E0607540B283670E740FB48367080C83000000850E +S315E0607550660E487AFDA34EB900E03814588F604451 +S315E060756073AF003475AF0035E189828275AF00365E +S315E06075703F2F002EE1892F0071AF003D8282E189C5 +S315E060758082802F01486F00433F2F003A4EB900E0FA +S315E0607590455C4FEF000E3F03487AFD834EB900E04D +S315E06075A03814508F362F00320687000000100686AA +S315E06075B00000001006850000001006840000001040 +S315E06075C04DEE001049EC001047EB001045EA001064 +S315E06075D053833F430032670002864BED0010600044 +S315E06075E0FF06263900011D4245F900011D4647FAAE +S315E06075F0FBB42F032F0A4E93508F4A4067224243D3 +S315E06076004BF900E1C50847F900E038142A3C00E090 +S315E06076100DD84DFAFCBC49F900E0455C6000019686 +S315E06076202F03487900011D524E93508F4A4066CE33 +S315E06076302F03487900011D5E4E93508F4A4066BE27 +S315E06076402F03487900011D6A4E93508F4A4066AE1B +S315E0607650487AFCD44EB900E03814588F600000A632 +S315E060766071920800000067000148A767487AFCD07D +S315E0607670280A52842F044E954FEF000C4A40674229 +S315E060768042672F2A00082F2A00042F043F024E94F7 +S315E06076904FEF00104A4066000126102A0003122AC6 +S315E06076A00002558F488048813F00102A00013F0163 +S315E06076B048803F00487AFC8C4E934FEF000C6000A8 +S315E06076C000F0487AFC864E93282A0004588F2604F8 +S315E06076D04878080048790001238020454E903F02B3 +S315E06076E04879000123803F3C00012F034E964FEF1F +S315E06076F000144A8067142F03487AFC564EB900E0BE +S315E06077003814508F42406000016871B90001254627 +S315E0607710080000006608487AFC504E93607842673D +S315E0607720D6B90001254A2F390001254E2F03487945 +S315E0607730000125473F024E944FEF00104A406666CF +S315E0607740103900012549123900012548558F16394F +S315E0607750000125474880488148833F003F013F0359 +S315E0607760487AFBE04E9371B9000125524FEF000C69 +S315E0607770080000006730A767487AFBC448790001D3 +S315E060778025534E954FEF000C4A40670E487AFC143D +S315E06077904EB900E03814588F600C2604D6B9000163 +S315E06077A025566000FF2C7601487AFC1F4E93588F71 +S315E06077B045EA000CB5FC00011D766600FEA44A436E +S315E06077C06600009C487900011CD749FAFA2E4E946F +S315E06077D0588F4A4067000088487AFBF247F900E034 +S315E06077E038144E9345F900011CD6588F4BF900E0EA +S315E06077F0455C6056719208000000674A260A52832B +S315E06078002F034E94588F4A40673C42672F2A000800 +S315E06078102F2A00042F033F024E954FEF00104A4097 +S315E06078206630102A0003122A0002558F162A0001DC +S315E06078304880488148833F003F013F03487AFB0424 +S315E06078404E934FEF000C45EA000CB5FC00011D3687 +S315E060785066A2487AFB754EB900E03814588F487ACC +S315E0607860FAC44EB900E03814588F7001600270FFB8 +S315E06078704CD77CFC4FEF003C4E754FEFFFA048D7EE +S315E06078807C7C45EF0028487800302A3C00E093ECA9 +S315E0607890487A00D22F0A4EB900E00EC4260F06835E +S315E06078A0000000644FEF000C2C0F280306860000F2 +S315E06078B0005C47F900011A044DF900E094104BFAB8 +S315E06078C0FB126070341A42A742A72F064267204532 +S315E06078D02842548C3F024E90734C4FEF00104A8022 +S315E06078E066442001D080E98992802841D9FC000174 +S315E06078F01A04296F005C000642A72F0442677001F4 +S315E06079003F02378018004E964FEF000C41EC0002C4 +S315E06079104A80660620AF005860024290558F3F026B +S315E06079204E95588F600E2001D080E9899280424062 +S315E060793037801800B68A668C4CD77C7C4FEF006047 +S315E06079404E752F2F000A3F2F000C2F2F000A3F3C69 +S315E0607950000142673F2F001C4EB900E094604FEF94 +S315E060796000104E750010001200110013001400168E +S315E06079700015001700080009000A000B000C000D56 +S315E0607980000E000F00000001000200030004000585 +S315E06079900006000771B8820173B88203E188D0817E +S315E06079A0E1884A7900012B98670673B8820DD08129 +S315E06079B04E7520390000044E4E7541EF000423D029 +S315E06079C00000045A4E7540C046FC23002239000090 +S315E06079D00466207900000466B28867F640C146C056 +S315E06079E04E754A7900012BA0670E3038826241EF0E +S315E06079F0000431D082624E7570E04E754A790001BE +S315E0607A002BA06706303882624E7570E04E7530386E +S315E0607A1082662F021238826024000282000004002F +S315E0607A204A42662624000282000001004A42661E3F +S315E0607A307410C0824A40661A4A01671A7381A3408D +S315E0607A40B08156C048805480600E7001600A701044 +S315E0607A506006700860027004241F4E7550726F6293 +S315E0607A606C656D202D20756E737570706F727465C0 +S315E0607A706420636F6C6F722064657074680A0000DE +S315E0607A804A7900012BB867404EBAFF84A541714040 +S315E0607A90B280674A6D0A123C0001B280661A6010D5 +S315E0607AA0A941B280671E123C0008B280660A600493 +S315E0607AB070024E7570074E75487AFFA24EB900E0C7 +S315E0607AC03814588F42404E7571B882604A79000129 +S315E0607AD02BA06704AF416002A741C0814E7570017B +S315E0607AE04E754FEFFFF448D7001C362F0010342F49 +S315E0607AF000124EBAFF8CA54473C0B881650C714024 +S315E0607B0041FA05AA32300A0060024241303C07770A +S315E0607B104A7900012B986704303C0FFF4A436D2297 +S315E0607B2077437341B2836D1AD68373422043A14390 +S315E0607B30B681660634288240600431428240C08263 +S315E0607B40600242404CD7001C4FEF000C4E752F028E +S315E0607B504EBAFEBC32388210E989340175C284C0FF +S315E0607B603002241F4E75323882C22F02307882A8E6 +S315E0607B70303882AAA542C48190884A42660471C0C0 +S315E0607B80E28808010000670471C0E288241F4E7530 +S315E0607B90566964656F52414D20636F7665727320F6 +S315E0607BA0524F4D206172656121210A004FEFFFF06F +S315E0607BB048D7003C242F001426390000042E71FCBF +S315E0607BC07D004A7900012BB8671A4EBAFF82380009 +S315E0607BD04EBAFF943A004EBAFE3679C4E68CC0C51A +S315E0607BE04C0408009680B682640A487AFFA44EB9CF +S315E0607BF000E00B2820024240484011C0820120028A +S315E0607C00E08811C082034A7900012B98670411C2AB +S315E0607C10820D4CD7003C4FEF00104E754E56FFACD0 +S315E0607C2048D7040C342E00084A7900012BB8670067 +S315E0607C3001D87142A141B280660A30390000A5C41C +S315E0607C40600001C87010C0824A40660408420008BD +S315E0607C504878000A7608487A03EA486EFFF645F9FE +S315E0607C6000E00EC44E924878000A487A03CC486E2B +S315E0607C70FFEC4E924878000A487A03B4486EFFE219 +S315E0607C804E924FEF00244878000A487A0398486E8F +S315E0607C90FFD84E924878000A487A0380486EFFCE55 +S315E0607CA04E924878000A487A0368486EFFC44E925E +S315E0607CB04FEF00244878000A487A034C486EFFBAD2 +S315E0607CC04E924FEF000C7002AF41C282C68211C085 +S315E0607CD0820A420011C0828270C611C0828342006D +S315E0607CE011C08284708D11C08285420011C0828687 +S315E0607CF0701511C08287700211C0828871414A4353 +S315E0607D00670641F60AED600441F60AF7420011D0D3 +S315E0607D10828911C0828A71414A43670641F60AD96F +S315E0607D20600441F60AE3420011D0828B11C0828C76 +S315E0607D30709611C0828D700411C082A2701911C054 +S315E0607D4082A3700311C082A450C011C082A5420014 +S315E0607D5011C082A6703F11C082A7420011C082A8FE +S315E0607D60703F11C082A9700311C082AA50C011C0D1 +S315E0607D7082AB700411C082AC701511C082AD420056 +S315E0607D8011C0820E11C0820F71414A43670A41F603 +S315E0607D900ACE31D08210601071760ACE20006A0277 +S315E0607DA05280E28031C08210260202830000010028 +S315E0607DB071414A43670C30360ABA528031C082C29A +S315E0607DC0600841F60ABA31D082C27001734111C0CF +S315E0607DD082C0708611C082C1420011C0826611C045 +S315E0607DE0826730361AC42600E08B11C08267A340F2 +S315E0607DF011C38266B0816606720111C1826033C2C8 +S315E0607E000000A5C43002600270E04CEE040CFFACEA +S315E0607E104E5E4E752F032F02342F0014362F001658 +S315E0607E20222F000C202F00104A816D0623C100002E +S315E0607E30044E4A806D082F004EBAFD72588F71C2AB +S315E0607E40AF41B28065527142123C0002B2806D0C65 +S315E0607E5013C20000044C11C2826060264A790001B8 +S315E0607E602BA0670611C2826260184A7900012BB8BE +S315E0607E706710A741B280660A558F3F034EBAFD9EF2 +S315E0607E80588F4EB900E080CA4EB900E0991A241FB7 +S315E0607E90261F60FF000027E4241F261F4E754E56FE +S315E0607EA0FFEC48D7003C4A7900012BB8673C2F3C91 +S315E0607EB0000100004EBAFCF6548F486EFFFE3F3C70 +S315E0607EC000023F3C000E42674EB900E08E824FEF03 +S315E0607ED0000C4A406706703A3D40FFFE558F3F2EE4 +S315E0607EE0FFFE4EBAFD38588F6006720211C1820AF3 +S315E0607EF0307C824043FA0156301930C0B1FCFFFF56 +S315E0607F00826066F44EBAFB7A4A7900012BB8672242 +S315E0607F104241307C980043FA0154740FC481528127 +S315E0607F2024312C0020C275410C820000010066EA13 +S315E0607F3060221438FA0173404A026C0CA542B4819F +S315E0607F4056C14881C0816008A342B4816D02700267 +S315E0607F5011C0826013C00000044C7140A341B2803E +S315E0607F60661A3038825E31C082464A7900012BB8A3 +S315E0607F7067282038983C21C0980C601EA542B480E2 +S315E0607F8066183038825E31C082424A7900012BB889 +S315E0607F9067082038983C21C09804343900012BB832 +S315E0607FA026390000042E71FC7D004A42671A4EBAFB +S315E0607FB0FB9E38004EBAFBB03A004EBAFA5279C42C +S315E0607FC0E68CC0C54C0408009680028300FFFF0083 +S315E0607FD04A4266060683FFFFFD002F0323C30000C7 +S315E0607FE0044E4EBAFBC8588F4CEE003CFFEC4E5E3A +S315E0607FF04E754A7900012BB8670871B88006EC883F +S315E06080004E7570E04E750008000400080008000434 +S315E0608010040000000000001001000028005000A0ED +S315E0608020014002800050000D007C00840091005009 +S315E06080300009006B007B00910073000E00A300ABAB +S315E060804000AC0073000A008A009A00AC077707006C +S315E0608050007007700007070700770555033307339D +S315E0608060037307730337073703770000FFFF00FFEB +S315E0608070FF00000000FF0000FFFF0000000000FFBF +S315E0608080FF0000FF00FF00FFBBBB00BB88880088E5 +S315E0608090AA00000000AA0000AAAA0000000000AA48 +S315E06080A0AA0000AA00AA00AA00000000000F0003D0 +S315E06080B000010000766964656F206D6F6465207706 +S315E06080C061733A20256420210A0010390000044CCF +S315E06080D0A7412F02A7424880C0817340B4816614ED +S315E06080E0558F3F3C0003487AFFCC4EB900E0381428 +S315E06080F07002508F4A7900012BB867264EB900E0CE +S315E06081007A0E33C0000052764EB900E07B4E33C043 +S315E06081100000526A4EB900E07B6633C000005272DE +S315E06081206032714041FA00662200D281E788908130 +S315E060813073B008002040D1FC00E0818C43E8000287 +S315E0608140588833D10000526A33C10000527633D08A +S315E06081500000527230390000527673F90000526ABC +S315E0608160A942E689C3C033C10000527833C100003A +S315E0608170527473C0B4816510538071C041FA0020B7 +S315E0608180D1C013D000012B80241F4E75040001403E +S315E060819000C80200028000C801000280019003026C +S315E06081A0000100004FEFFFEC322F001848D71C0C9F +S315E06081B0A343246F001A242F001E7141B680672EF8 +S315E06081C06D084A41671660000126A541B280674C9A +S315E06081D0A943B680660001186000009A558F3F3C5F +S315E06081E000124EB900E061EA588F600001024A8AE7 +S315E06081F0670000F0558F3F3C000847F900E061EA10 +S315E06082004E933EBC000B4E93102A000248803E809F +S315E06082104E93122A000348813E81607C4A8A670059 +S315E060822000C2558F3F3C000947F900E061EA49F931 +S315E060823000E062064E933EAA00044E943EAA000613 +S315E06082404E943EBC000C4E93162A000248833E8351 +S315E06082504E93102A000348803E804E933EBC000E4B +S315E06082604E9342574E933EAA00084E943EAA000AA9 +S315E06082704E9460264A8A676A558F3F3C000A47F902 +S315E060828000E061EA4E93122A000248813E814E93F5 +S315E0608290162A000348833E834E93588F4A8A674284 +S315E06082A07112A341B280660E558F3F3C000F4EB906 +S315E06082B000E061EA588F4A12660E558F3F3C001027 +S315E06082C04EB900E061EA588F558F3F3C000747F9A9 +S315E06082D000E061EA4E93162A000148833E834E939E +S315E06082E0588F4A82671423C200004E34600C203CEB +S315E06082F000E0067E23C000004E344CD71C0C4FEFE6 +S315E060830000144E751B622F200D0A0000487AFFF6B6 +S315E06083104EB900E037F6588F4E750D202020005F8D +S315E0608320000D0A004FEFFFF448D7040C3639000021 +S315E0608330524A487AFFE645F900E037F64E92588FA2 +S315E060834042425D837743600A487AFFD54E92528215 +S315E0608350588F7142B6806CF0487AFFC74EB900E03C +S315E060836037F64CEF040C00044FEF00104E750D002D +S315E060837020004FEFFFF448D7040C36390000524A2C +S315E06083804242487AFFEA45F900E037F64E92588F66 +S315E06083900683FFFFFFDE77C3E28B7743487AFFD23F +S315E06083A04E9252827142588FB6806CF04CD7040C74 +S315E06083B04FEF000C4E751B632563001B63200000C6 +S315E06083C04FEFFFF048D70C0C266F00144EBAFFA4AF +S315E06083D074FF45F900E037F66028700FC680714299 +S315E06083E0B0836716558F20030680000000203F00AB +S315E06083F03403487AFFC24E92508F487AFF744E92A9 +S315E0608400588F161B66D44A42670C487AFFAF4EB95E +S315E060841000E037F6588F203C00E083212F400014BF +S315E06084204CD70C0C4FEF001060FFFFFFB3CC3A2047 +S315E0608430001B622100002F0A2F02242F000C4EBA87 +S315E0608440FF3245F900E037F62F024E92487AFFE0B8 +S315E060845034004E92508F600A487AFF164E925282EE +S315E0608460588F7142720DB2806CEE203C00E0843130 +S315E06084702F40000C241F245F60FFFFFFB37C1B4589 +S315E06084801B661B6225631B63256300003F3C00207F +S315E06084903F3C002F487AFFE84EB900E037F6508F50 +S315E06084A04E7531313131313131313131312037371A +S315E06084B03737373737373737202037373720202079 +S315E06084C03737373700312020202020202020202019 +S315E06084D02020202020202020372020203720202028 +S315E06084E037203720202020003131313120202031E3 +S315E06084F020312020312020203120203720202037D5 +S315E060850020202037202037373720003120202020D8 +S315E060851020312031203120312020203120203720A9 +S315E060852020203720202037202020202037003131BE +S315E0608530313131203120202031202031313120206D +S315E0608540203720202020373737202037373737202D +S315E0608550000A0D00456D75544F5320566572736978 +S315E06085606F6E002573004350552074797065004343 +S315E06085706F6C644669726520563465004D61636868 +S315E0608580696E6500467265652053542D52414D0013 +S315E0608590256C64206B4200467265652046617374A3 +S315E06085A052414D0053637265656E207374617274F7 +S315E06085B00025700047454D444F53206472697665E7 +S315E06085C07300256300426F6F742074696D650025E2 +S315E06085D03034642F253032642F25303264202530E4 +S315E06085E032643A253032643A2530326400486F6C42 +S315E06085F064203C436F6E74726F6C3E20746F2073C0 +S315E06086006B6970204155544F2F41434300486F6C6E +S315E060861064203C416C7465726E6174653E20746F73 +S315E060862020736B69702048444420626F6F74005019 +S315E0608630726573732027432720746F2072756E20EE +S315E0608640616E206561726C7920636F6E736F6C65C5 +S315E0608650001B700020486F6C64203C536869667448 +S315E06086603E20746F2070617573652074686973204D +S315E060867073637265656E20001B71000D1B4B0D0AFE +S315E06086800D0A00004FEFFFDC48D77C3C487AFC934C +S315E0608690760A45F900E037F647FAFD264BFAFD988B +S315E06086A049FAFC6A4E92487AFDFA4E93487AFE178A +S315E06086B04E93487AFE344E93487AFE514E93487A0A +S315E06086C0FE6E4E934EBAFC5E487AFE874E9247F94E +S315E06086D000E01176487AFE7E4E934FEF001C2E80C6 +S315E06086E04E95487900E5D6D8487AFE794E924E9412 +S315E06086F0487AFE744E932F004E95487AFE734E92FA +S315E06087004E94487AFE784E932F004E954FEF0020B8 +S315E06087104EB900E08DE02F004E924E94487AFE66A8 +S315E06087204E932F004E954FEF000A42674DF900E0F9 +S315E0608730BE1CA1674E96487AFE5824004E932202EC +S315E0608740E6A12F012F004E924E944FEF00123F3C70 +S315E06087500001A1674E96508F24006F1E487AFE395D +S315E06087604E93E6A22F004E95487AFE264E932F0250 +S315E06087702F004E924E944FEF0014487AFE2849F946 +S315E060878000E011764E9445FAFCAE47F900E037F624 +S315E060879074012F004E922F390000044E487AFE1382 +S315E06087A04E934EBAFB68487AFE0C4E942F004E927A +S315E06087B0347C00414FEF00187142C0B9000004C23A +S315E06087C0670C558F3F0A487AFDFA4E93508F528A6E +S315E06087D071CA785BB8806704D48260DC49FAFB2EA4 +S315E06087E078154E94487AFDDF47F900E011764E93AE +S315E06087F045F900E037F62F004EBAFC3C4EB900E092 +S315E06088005210720B2A00E2AD2200E8A9183C001F64 +S315E06088102600EA8B2405EA8AC880D8843F04783F3C +S315E0608820C684183C000FC2843F03761FCA83C483A4 +S315E06088303F053F023F017219E2A80680000007BCCF +S315E06088403F00487AFD8B4E924E944EBAFAD8487AFB +S315E0608850FD014E9249FAFB1C4E94487AFD914E9387 +S315E06088604FEF001C2E804E92487AFAB74E924E94A5 +S315E0608870487AFD9B4E932F004E92487AFAA54E9227 +S315E06088804E94487AFDAB4E932F004E92487AFA9317 +S315E06088904E924FEF001C2EBC00E083214E92487A48 +S315E06088A0FA814E924E94487AFDA94E92487AFDA698 +S315E06088B04E9347F900E05D682F004E92487AFDBA24 +S315E06088C04E924FEF00182439000004BA0682000089 +S315E06088D007D045F900E05D92602A558F3F3CFFFF87 +S315E06088E0A7434E93588FC08366F0558F3F3CFFFF9A +S315E06088F0780C4EB900E05D68588FC08466104E9281 +S315E06089004A80660A2039000004BAB4806ECC4EB95B +S315E060891000E05D924A80671C4EB900E05DAA726332 +S315E06089207180B28067067443B4806608760133C3AB +S315E060893000012B90487AFD454EB900E037F64CEFE2 +S315E06089407C3C00044FEF00284E75000041F90000C2 +S315E0608950A5C87014429023C00000A5CC21C805A02C +S315E06089604E756A617220213D204E554C4C0062691D +S315E06089706F732F636F6F6B69652E63006A61722D2B +S315E06089803E74616720213D20746167006E20213D61 +S315E0608990203000004FEFFFEC48D70C1C282F001862 +S315E06089A0247805A04A8A661A487AFFB8487A00822F +S315E06089B048780024487AFFB84EB900E038744FEF43 +S315E06089C00010428347F900E03874601EB88066168E +S315E06089D0487AFFAA487A005A48780028487AFF9091 +S315E06089E04E934FEF00105283508A201266DE242A9F +S315E06089F00004661A487AFF96487A00364878002D71 +S315E0608A00487AFF6C4EB900E038744FEF00102002F0 +S315E0608A105380B0836F102484256F001C0004508A55 +S315E0608A204292254200044CD70C1C4FEF00144E7561 +S315E0608A30636F6F6B69655F61646400006861735F53 +S315E0608A407374655F73686966746572203D2025643A +S315E0608A500A006861735F74745F73686966746572EF +S315E0608A60203D2025640A006861735F766964656C01 +S315E0608A70203D2025640A00004240598F2F0A48783D +S315E0608A80820D33C000012B984EB900E00658588F2E +S315E0608A904A80670000AE725A11C1820D725A103870 +S315E0608AA0820348803F4000061038820D7100B28034 +S315E0608AB0661E420011C0820D303882403F4000069B +S315E0608AC01038820D660A123C000133C100012B9812 +S315E0608AD042404878840033C000012BA04EB900E0E4 +S315E0608AE00658588F4A806708720133C100012BA08F +S315E0608AF042404878828233C000012BB84EB900E02C +S315E0608B000658588F4A806708720133C100012BB856 +S315E0608B10558F3F3900012B9845F900E03814487AC3 +S315E0608B20FF1C4E925C8F3F3900012BA0487AFF24F0 +S315E0608B304E925C8F3F3900012BB8487AFF2B4E92FC +S315E0608B40508F48788E094EB900E00658588F4A80B3 +S315E0608B5067167040721411C08E0D700111C18E01DE +S315E0608B6033C000012BA86008424133C100012BA845 +S315E0608B704EB900E04FDA245F588F60FF0000028C48 +S315E0608B806172616E796D0046697265426565007312 +S315E0608B90657476616C75655F73776928290A00612B +S315E0608BA0667465722073657476616C75655F7377FC +S315E0608BB06928290A00002F0A42A72F3C5F43465FD7 +S315E0608BC04EB900E08994508F700348404A790001BD +S315E0608BD02BB8660C4A7900012BA0670C70024840FE +S315E0608BE023C000012B946012700148404A7900016D +S315E0608BF02B9866EC42B900012B942F3900012B9437 +S315E0608C002F3C5F56444F4EB900E08994487AFF7234 +S315E0608C104EB900E1C4A42F00487AFF66487AFF693E +S315E0608C204EB900E1C55A4FEF00184A406606700536 +S315E0608C304840600C4A7900012BB8670C70034840E5 +S315E0608C4023C000012BB0602E700248404A790001D3 +S315E0608C502BA066EC4A7900012B986714203C000152 +S315E0608C6000104A7900012BA866D67001484060D0B2 +S315E0608C7042B900012BB02F3900012BB02F3C5F4D7C +S315E0608C8043484EB900E08994508F203900012BB0FB +S315E0608C900C800001001067100C800002000067087D +S315E0608CA00C80000300006652487AFEE54EB900E0AB +S315E0608CB0381448789201707F23C000012BA44EB926 +S315E0608CC000E00658508F4A80671030389200714055 +S315E0608CD0E080714023C000012BA4487AFEC34EB900 +S315E0608CE000E038142F3900012BA42F3C5F5357491D +S315E0608CF04EB900E089944FEF000C48788903A37978 +S315E0608D0000012B9C4EB900E00658588F4A806708F0 +S315E0608D10A54081B900012B9C2F3900012B9C2F3C8B +S315E0608D205F534E4445F900E089944E92508F4AB9BC +S315E0608D30000005A46F222F3C000100004EB900E060 +S315E0608D4058E22F002F3C5F46524223C000012BB40D +S315E0608D504E924FEF000C600642B900012BB44EB95B +S315E0608D6000E08FEE2F3900012BC02F3C5F49445461 +S315E0608D7045F900E089944E922F3900012BC42F3CCF +S315E0608D805F414B504E924FEF00107040C0B900010A +S315E0608D902BA46708203C014154436006203C004117 +S315E0608DA0544323C000012BAC2F3900012BAC2F3C80 +S315E0608DB05F46444345F900E089944E924EB900E03F +S315E0608DC096A2508F4A406710487900E00BE02F3C4E +S315E0608DD05F5F4E464E92508F245F60FF000005FA5B +S315E0608DE0203C00E08B874E75420041F90000A668A2 +S315E0608DF01218D081B1FC0000A69866F4718022005A +S315E0608E004681E18980814E75487889614EB900E096 +S315E0608E100658588F4A806712700133C000012BBC38 +S315E0608E20420033C00000A69A4E75424033C000014E +S315E0608E302BBC4E752F02302F00084A7900012BBCFF +S315E0608E40671473C0740DB481650C11C08961103804 +S315E0608E508963718060024240241F4E752F02302F75 +S315E0608E6000084A7900012BBC671473C0740DB481A5 +S315E0608E70650C11C0896141EF000B11D08963241F35 +S315E0608E804E754FEFFFF048D7003C362F0014342F75 +S315E0608E900016382F00184A7900012BBC67000110D4 +S315E0608EA07143A541B280662C700E41F90000A66858 +S315E0608EB0420211C08961528073807A4011C289632F +S315E0608EC010C2BA8166EA700133C00000A69A420019 +S315E0608ED0600000E64A790000A69A6640700E41F9A5 +S315E0608EE00000A66811C0896152807A4012388963B1 +S315E0608EF010C17380BA8166EC700133C00000A69A37 +S315E0608F004EBAFEE673B90000A6987BB90000A69952 +S315E0608F10E18971C08285B28066000098206F001A90 +S315E0608F204A88670000924A426D00008C4A446F00AE +S315E0608F300086D88279447231B2846D7A43F9000052 +S315E0608F40A6684A4367167743A34543F90000A668D7 +S315E0608F50BA836662602610F1080052827142B88078 +S315E0608F606EF46046220206810000000E11C189613E +S315E0608F70528212181381080011C189637142B88068 +S315E0608F806EE24EBAFE64723E743F13C00000A6996C +S315E0608F9011C1896173C0E08911C1896311C28961B8 +S315E0608FA013C10000A69811C089634240600A702E22 +S315E0608FB0600670F4600270FB4CD7003C4FEF001027 +S315E0608FC04E75000042402F032F02736F000C41FA8A +S315E0608FD0020A755041E8000CB282670C5280754017 +S315E0608FE07609B68266EC4240241F261F4E754E56C1 +S315E0608FF0FFFC558F486EFFFC3F3C00043F3C00069B +S315E060900042674EB900E08E824FEF000C4A406742FD +S315E0609010717900E0001C558FE2803F004EBAFFA6F2 +S315E0609020588F41FA01B671402200E589E98890815E +S315E0609030323008002040D1FC00E091DA30280006AA +S315E0609040E18982807168000A734123C100012BC403 +S315E0609050602A102EFFFC122EFFFD48804881E188D1 +S315E06090608081122EFFFF7140488123C000012BC42E +S315E0609070102EFFFE4880E1888081714023C00001A8 +S315E06090802BC04E5E4E7571B900012BC63F004EBADD +S315E0609090FF34548F71402200E589E988908106802B +S315E06090A000E091DC204020104E75424073B900012B +S315E06090B02BC72F032F0241FA018E75505C88B2826E +S315E06090C0670C528075407608B68266EE4240714023 +S315E06090D0206F000C241F2200D281E788261F908132 +S315E06090E0068000E09248224020914E7571B90001F9 +S315E06090F02BC62F02A5423F004EBAFECA548F71407E +S315E06091002200E589E9889081068000E091E22040CE +S315E060911032107141B4806734143C0001B480671A40 +S315E0609120143C0003B4806718143C0004B4806716EE +S315E06091304A416618307C00046014307C0001600EA1 +S315E0609140307C00026008307C0003600291C87148A0 +S315E0609150226F00082200D281E988204091C1D1FCCB +S315E060916000E0917C22A80002226F000C22A8000693 +S315E0609170226F0010241F22A8000A4E75000200E448 +S315E060918022A000E422FC00E42358000100E4218CE4 +S315E060919000E421E800E42244000300E58FB000E546 +S315E06091A0968C00E5A0E8000400E5B34400E5BA204B +S315E06091B000E5C47C000000E5270400E52DE000E55D +S315E06091C0383C7573006465006672006373006772AD +S315E06091D000657300666900727500000000E091C288 +S315E06091E000000000002F000100E091C500010000D2 +S315E06091F0112F000200E091C800020000112F000F5D +S315E060920000E091CB00030001112F001200E091CE47 +S315E060921000040003112F000400E091D10000000279 +S315E0609220112F000A00E091D400050000112F00081C +S315E060923000E091C500060000112F001300E091D711 +S315E060924000070004112F000300E42458000100E445 +S315E060925025F4000500E427A6000200E4295E000488 +S315E060926000E42B42000700E42E5E000600E4317A5B +S315E0609270000000E433300000456D75544F532044E0 +S315E060928069736B004FEFFFEC48D77C00286F001CDA +S315E0609290266F0020246F00244BF900E097084E9576 +S315E06092A04A80673E2C7900E00BE84E953F2F002818 +S315E06092B006800000000B42672F0A2F0B2F0C3F2F12 +S315E06092C0002A42673F2F002C42672F004E964FEFF1 +S315E06092D0001C72E07140B2806708123CFFF1B28018 +S315E06092E066204A8C670628BC000002004A8B67024B +S315E06092F042934A8A670A41FAFF80101814C066FAF8 +S315E060930042804CD77C004FEF00144E754FEFFFE87C +S315E060931048D77C04342F001C2C6F001E2A6F002275 +S315E0609320226F0026266F002A286F002E246F0032F7 +S315E06093303002C0FC002A2040D1FC000114C0202885 +S315E060934000044A8E67083228002855813C814A8DA0 +S315E0609350670242554A8B670242534A8067684A8988 +S315E060936067022280558F3F024EB900E0427A588FFD +S315E06093704A8B6712487800122F002F0B4EB900E037 +S315E06093800EC44FEF000C4A8C67103002C0FC002A16 +S315E06093900680000114C8204028904A8A672CC4FCE5 +S315E06093A0002A41F9000114C014B0280041F9000117 +S315E06093B014C1D1C21550000141F9000114C2D1C2F5 +S315E06093C015500002600470FE600242804CD77C0457 +S315E06093D04FEF00184E75487900E00BF82F3C58487F +S315E06093E044494EB900E08994508F4E75558F3F3CA5 +S315E06093F000212F2F00142F2F00142F2F00143F2F42 +S315E060940000163F2F00164EBAFE7C4FEF00144E75E5 +S315E06094102F0B2F0A45F900E097084E924A8067388D +S315E0609420267900E00BE84E922F2F00142F2F0014C0 +S315E06094303F2F001606800000000E42673F2F00189F +S315E060944042672F004E934FEF001472E0B280670AD6 +S315E0609450123CFFF1B280660270E0245F265F4E75D3 +S315E06094604FEFFFE048D70CFC342F00243E2F002658 +S315E0609470362F0028282F002A3A2F002E2C2F003076 +S315E060948045F900E097084E924A806736267900E013 +S315E06094900BE84E922F063F05734206800000000AF5 +S315E06094A042672F043F03426742A72F012F004E9386 +S315E06094B04FEF001C72E0B2806708123CFFF1B280A9 +S315E06094C066684A47666271C2AF41B28065223F42D2 +S315E06094D000302F46002C3F45002A2F4400263F43AC +S315E06094E000244CD70CFC4FEF002060FFFFFFC47CEC +S315E06094F07142720FB2806C30123C0017B2806D28F8 +S315E06095000682FFFFFFF03F4200302F46002C3F45CA +S315E0609510002A2F4400263F4300244CD70CFC4FEF33 +S315E0609520002060FF0000125870F14CD70CFC4FEF42 +S315E060953000204E75206F0004720E71D0B280650017 +S315E060954000E6303B0A0848C04EFB0802001E0024D5 +S315E060955000DA00DA00DA00DA003E004A00DA00DA21 +S315E060956000520074009800DA00C071FC01304E755C +S315E06095702F28000E2F28000A2F2800063F28000417 +S315E06095803F2800024EBAFE6660304EB900E0460EF5 +S315E060959072FCC0814E75558F42A742A760502F2856 +S315E06095A0000E3F28000C2F2800083F2800063F28C1 +S315E06095B000043F2800024EBAFEA84FEF00104E7539 +S315E06095C0558F3F2800122F28000E2F28000A2F28DB +S315E06095D000063F2800043F2800024EBAFCA84FEF81 +S315E06095E000144E75558F2F2800182F2800142F2849 +S315E06095F000102F28000C2F2800082F2800043F2891 +S315E060960000024EBAFD084FEF001C4E752F28000A87 +S315E06096102F2800063F2800043F2800024EBAFDF2DC +S315E06096204FEF000C4E7570E04E7500004E465F4E93 +S315E0609630414D45004E465F535444455252005848AA +S315E0609640444900004EB900E00BD033C00000A6A844 +S315E0609650673C207900E00BE4487AFFD24E90487A86 +S315E0609660FFD4207900E00BE423C00000A6B44E905E +S315E0609670487AFFCC207900E00BE423C00000A6B076 +S315E06096804E904FEF000C23C00000A6AC4E7542B979 +S315E06096900000A6B442B90000A6B042B90000A6AC8C +S315E06096A04E7530390000A6A84E75206F0004202F55 +S315E06096B0000822390000A6B467142F002F0820792D +S315E06096C000E00BE82F014E904FEF000C4E754A809C +S315E06096D06D06421042804E7542804E754AB9000072 +S315E06096E0A6B05EC0488044804E7520390000A6B0C2 +S315E06096F06712207900E00BE82F2F00042F004E90D0 +S315E0609700508F4E7542804E7520390000A6AC4E757E +S315E06097104E465F53485554444F574E004E465F534E +S315E0609720485554444F574E206E6F74206176616998 +S315E06097306C61626C650A00004A790000A6A8672C35 +S315E0609740207900E00BE4487AFFC84E90588F4A8053 +S315E0609750670E207900E00BE82F004E90588F4E752B +S315E0609760487AFFBA4EB900E03814588F4E75424FCA +S315E06097704F54535452415000424F4F545354524108 +S315E060978050206E617466656174206E6F74206176D8 +S315E060979061696C61626C650A00004A790000A6A89E +S315E06097A0673A207900E00BE4487AFFC44E90588F20 +S315E06097B04A8067182F2F0008207900E00BE82F2FEA +S315E06097C000082F004E904FEF000C4E75487AFFAAC6 +S315E06097D04EB900E03814588F42804E7542804E751F +S315E06097E04A790000A6A86734207900E00BE4487A5D +S315E06097F0FF7E4E90588F4A806712A341828020791F +S315E060980000E00BE82F014E90588F4E75487AFF6A5C +S315E06098104EB900E03814588F42004E7542004E75DE +S315E06098204A790000A6A8673E207900E00BE4487A12 +S315E0609830FF3E4E90588F4A80671CA54182802F2F4D +S315E06098400008207900E00BE82F2F00082F014E90EA +S315E06098504FEF000C4E75487AFF204EB900E03814A1 +S315E0609860588F42804E7542804E7500004E56FFF42A +S315E06098702F0A486EFFF4486EFFF8486EFFFC4EB95B +S315E060988000E090EC4878005A45F900E00EC42F2ECF +S315E0609890FFFC487900012C904E924878005A2F2EB2 +S315E06098A0FFF8487900012BC84E924FEF00244878C4 +S315E06098B0005A2F2EFFF4487900012C344E924FEF78 +S315E06098C0000C42B900012C8842B900012C30203CE2 +S315E06098D000012BC823C000012CE4203C00012C349D +S315E06098E023C000012C1C203C00012C9023C0000109 +S315E06098F02C24203C00012BC823C000012C28203CEE +S315E060990000012C3423C000012C2C7003246EFFF080 +S315E06099104E5E33C0000050BE4E7532390000527262 +S315E06099202F032F0241F900012C3471C10C80000035 +S315E0609930018F620641F900012BC8302800523439A4 +S315E06099400000527833C000005248C5C073C182C07F +S315E060995033C20000524E34390000526A538133C13B +S315E06099600000524C75C284E800342242538933C900 +S315E06099700000524A43E8005033D10000526843E8A1 +S315E0609980002433D10000526643E8002633D100005C +S315E06099905264241F43E8004C41E8004823D10000AC +S315E06099A0526023D00000526C261F4E752F032F02A3 +S315E06099B0322F000C30390000524A306F000E77C10A +S315E06099C075C0B4836202320030390000524C77C809 +S315E06099D075C0B4836202304070FEC08175F90000E4 +S315E06099E0527671404C02080008010000670252801E +S315E06099F075F90000524E73484C0218007579000004 +S315E0609A005258D282241FD081D0B90000044E261F5E +S315E0609A104E751039000052704FEFFFF448D7001CC6 +S315E0609A207640222F0010343900005248808313C0FC +S315E0609A3000005270303900005276601A1610468384 +S315E0609A40108377F900005278D1C353897749A144EE +S315E0609A50B88366E8548153807740A144B88367064B +S315E0609A602041324260E410390000527072BF4CD738 +S315E0609A70001C4FEF000CC08113C0000052704E75A1 +S315E0609A804FEFFFE8A54048D700FC326F001C3A2F45 +S315E0609A90002077F900005276322F001E306F0022E8 +S315E0609AA03E39000052782803A346D8849A897B45DC +S315E0609AB09C81DC88CDF9000052482A056A0252850D +S315E0609AC02043E2855285C9C534059E843839000055 +S315E0609AD05250B08367000092103C0001A943C084F5 +S315E0609AE0B688660000D6263CFFFF00004A80660224 +S315E0609AF0428379C4E28C3044080400006706008340 +S315E0609B000000FFFF79C8E28C304408040000670873 +S315E0609B10283CFFFF00006002428420080800000144 +S315E0609B20670600840000FFFF3F017F477BC53F0972 +S315E0609B304EBAFE7A588F72FCCE81204743F05E00C3 +S315E0609B406014208321440004508853817B41A147FF +S315E0609B50BE8566EED08953867346A145BA816700B5 +S315E0609B60009C2040320260E2263CFFFF00000804D1 +S315E0609B700000660242830804000167060083000075 +S315E0609B80FFFF3F017F477BC53F094EBAFE20588FF6 +S315E0609B9072FCCE81204743F05C00600E20C35381A7 +S315E0609BA07941A145BA8466F4D08953867346A14764 +S315E0609BB0BE8167482040320260E477FCFFFF4A805E +S315E0609BC0660242833F017F477BC53F094EBAFDDEB1 +S315E0609BD0588F72FECE81204743F05A00600E30C344 +S315E0609BE053817941A145BA8466F4D0895386734638 +S315E0609BF0A147BE8167062040320260E44CD700FC94 +S315E0609C004FEF00184E754FEFFFF048D7041C342F26 +S315E0609C10001430390000524A362F001679C273C0FC +S315E0609C20B2846402340030390000524C79C373C0A8 +S315E0609C30B2846402360010390000527033C200000C +S315E0609C40525A33C30000525C1200488144C0662217 +S315E0609C5008010000672E72FBC081A541C28013C077 +S315E0609C60000052704A41661CA941808113C0000021 +S315E0609C7052703F033F024EBAFD34588F23C0000056 +S315E0609C80525460302F390000525445FAFD864E92A8 +S315E0609C903F033F024EBAFD162E8023C000005254A9 +S315E0609CA04E92103900005270508FA941808113C0E6 +S315E0609CB0000052704CD7041C4FEF00104E753F39D0 +S315E0609CC00000525C3F390000525A4EBAFCE0588FB1 +S315E0609CD02F4000046000FD3C326F000471F9000023 +S315E0609CE0524E20790000044E73494C001800D1C1F1 +S315E0609CF032390000524C928973C14C0018002F0132 +S315E0609D00487008002F084EB900E00EC430390000F4 +S315E0609D10524C3F003F390000524A3F0042674EBA1C +S315E0609D20FD604FEF00144E754FEFFFDC302F0028DB +S315E0609D3048D71CFC75F90000526673C0B4816200B6 +S315E0609D4001EE75F900005264B481650001E271408C +S315E0609D5020790000526C7BF00A00E68DDAB90000EB +S315E0609D605260670001CA1C3900005270A94024792C +S315E0609D7000005254240A4886C08628404A40671844 +S315E0609D802F0A76FB4EBAFC8C103900005270588F61 +S315E0609D90C08313C0000052701839000052707C1006 +S315E0609DA03E3900005268323900005278303900009E +S315E0609DB052503639000052524884C8864A44670495 +S315E0609DC0380060043803360071F90000527673415A +S315E0609DD07F4745F20A0060000094A340C0842040BB +S315E0609DE00803000067443039000052484A88671823 +S315E0609DF02042600610BCFFFFD1C153807D40224601 +S315E0609E00A146BC8966EE605A22422045600E1C106F +S315E0609E10D1C736462C0B46861286D3C153807D4029 +S315E0609E202646A146BC8B66E660383039000052486B +S315E0609E304A88671A2242204560061290D3C1D1C78C +S315E0609E4053807D402646A146BC8B66EE6014204278 +S315E0609E5060044210D1C153807D402246A146BC8950 +S315E0609E6066F077C379C4E28BE28C5482B5C2660051 +S315E0609E70FF6A30390000525A73F90000524A75C0E1 +S315E0609E80B282661210390000527072084880C08152 +S315E0609E904A40674A606A528033C00000525A0800FE +S315E0609EA00000670852B90000525460323039000051 +S315E0609EB05276D080538071C0D1B900005254601E92 +S315E0609EC073C1528033C00000525CD481600A558F02 +S315E0609ED042674EBAFE04588F23C200005254360CD5 +S315E0609EE0674C2F39000052544EBAFB2810390000F7 +S315E0609EF05270AD46588F808613C000005270602E57 +S315E0609F0030390000525C424332390000524E340030 +S315E0609F1033C30000525A79C077F90000524CC5C18C +S315E0609F2075C2D4B90000044EB684629460A04CD782 +S315E0609F301CFC4FEF00244E752F02342F000871F998 +S315E0609F400000524E20790000044E73424C00180027 +S315E0609F50D1C132390000524C928273C14C00180074 +S315E0609F602F012F08487008004EB900E00EC43F028A +S315E0609F703F390000524A3F0242674EBAFB044FEF58 +S315E0609F800014241F4E7500004E752F02203C00E041 +S315E0609F90A33C322F000823C000012CF0200106808C +S315E0609FA0FFFFFFBF4A406D427140740C41F900E427 +S315E0609FB034CCB4806C207418B480672220010680AB +S315E0609FC0FFFFFF9E73C0143C0015B481651C7140B1 +S315E0609FD041F900E4350020700C00241F4ED0203C8F +S315E0609FE000E09FEE23C000012CF0241F4E75302F59 +S315E0609FF000040680FFFFFFE033C0000004AC203CB5 +S315E060A00000E0A14023C000012CF04E75302F000423 +S315E060A010720FC08133C000005252203C00E0A33C86 +S315E060A02023C000012CF04E75302F0004720FC08102 +S315E060A03033C000005250203C00E0A33C23C0000146 +S315E060A0402CF04E75203C00E0A00C23C000012CF003 +S315E060A0504E75203C00E0A02823C000012CF04E7530 +S315E060A0601039000052707210808113C00000527087 +S315E060A0704E7510390000527072EFC08113C0000057 +S315E060A08052704E75103900005270722041F900002E +S315E060A090525A33D00000512441F90000525C33D06B +S315E060A0A000005126808113C0000052704E75103951 +S315E060A0B0000052707208808113C0000052704E75C5 +S315E060A0C010390000527072F7C08113C00000527000 +S315E060A0D04E753F390000525C42674EB900E09C061F +S315E060A0E0588F4E7530390000525A72F83F39000089 +S315E060A0F0525CC08150803F004EB900E09C06588FAC +S315E060A1004E75103900005270722041F900E09C06ED +S315E060A1104880C0814A40670E3F39000051263F398A +S315E060A120000051246004426742674E901039000097 +S315E060A1305270588F72DFC08113C0000052704E7546 +S315E060A1403F39000004AC302F00060680FFFFFFE0D9 +S315E060A1503F004EB900E09C06588F203C00E0A33CEF +S315E060A16023C000012CF04E75426742674EB900E0AD +S315E060A1709C06588F4E7530390000525A67123F3947 +S315E060A1800000525C53803F004EB900E09C06588F59 +S315E060A1904E7530390000525A2F0273F90000524A68 +S315E060A1A075C0B28267123F390000525C52803F0050 +S315E060A1B04EB900E09C06588F241F4E75303900007A +S315E060A1C0525C2F0273F90000524C75C0B28267127E +S315E060A1D052803F003F390000525A4EB900E09C067B +S315E060A1E0588F241F4E7530390000525C67125380D9 +S315E060A1F03F003F390000525A4EB900E09C06588F46 +S315E060A2004E7510390000527041F900E09CBE0800BE +S315E060A210000067203F390000525C3F390000525A27 +S315E060A2204E90103900005270AD41808113C000003D +S315E060A230527060183F390000525CA94180813F3915 +S315E060A2400000525A13C0000052704E90588F4E75FF +S315E060A25030390000511C670C538033C00000511C3C +S315E060A2606602609E4E754A790000511C670A42405C +S315E060A27033C00000511C608A4E7530390000511CB5 +S315E060A280A9412F02528033C00000511C10390000F2 +S315E060A2905270C2804A41673A74FBC480120213C2AC +S315E060A2A0000052704881080100006712A542C28230 +S315E060A2B04A41671E72F9C08113C0000052703F398F +S315E060A2C00000525C3F390000525A4EB900E09CBE35 +S315E060A2D0588F241F4E7573F90000525C71F90000C7 +S315E060A2E0524CB08167046000FED44EBAFF8E558F43 +S315E060A2F042674EB900E09CD8588F6000FF544EBA72 +S315E060A300FF7A558F3F390000525C4EB900E09CD829 +S315E060A3103F390000525C42674EB900E09C06508FC0 +S315E060A3206000FF2E103900000484A9414880C08196 +S315E060A3304A40670660FFFFFFC10E4E752F02741F2D +S315E060A340302F00087340B4816C08241F60FFFFFF64 +S315E060A350F9DA741BB481660E203C00E09F8A23C064 +S315E060A36000012CF0601CAD42B4816C165F807140D8 +S315E060A370B4806D0E41F900E4355820700C00241F5E +S315E060A3804ED0241F4E752F0A4EBAFEF04EBAFCF63A +S315E060A39030390000525A6610558F3F3C00204EB966 +S315E060A3A000E09D28588F604845F900E09A800800F3 +S315E060A3B00000672A558F3F3C00204EB900E09D289B +S315E060A3C030390000525C32390000525A3F00558104 +S315E060A3D03F013F0042674E924FEF000C6012323908 +S315E060A3E00000525C3F013F003F0142674E92508F52 +S315E060A3F04EBAFD10245F6000FE584EBAFE7E3039DC +S315E060A4000000525C3F003F390000524A3F0042671D +S315E060A4104EB900E09A803F390000525C42674EB91F +S315E060A42000E09C064FEF000C6000FE264EBAFF5837 +S315E060A43030390000525C671653803F003F390000B8 +S315E060A440524A426742674EB900E09A80508F4E7535 +S315E060A4501039000052702F0372F72F027408C4801F +S315E060A460C08113C0000052704EBAFE104EBAFC16A0 +S315E060A47030390000525A73F90000524A77C0B2830D +S315E060A4806610558F3F3C00204EB900E09D28588FFE +S315E060A490603208000000670E558F3F3C00204EB9E1 +S315E060A4A000E09D28588F30390000525C3F003F390C +S315E060A4B00000524A3F003F390000525A4EB900E070 +S315E060A4C09A80508F4A4267101039000052707208C5 +S315E060A4D0808113C0000052704EBAFC28241F261FEC +S315E060A4E06000FD6E2F032F024EBAFF663039000022 +S315E060A4F0525C32390000524C77C075C1B48367163E +S315E060A5003F0152803F390000524A3F0042674EB9F0 +S315E060A51000E09A80508F241F261F4E75426742677F +S315E060A5204EB900E09C063F390000524C3F390000CE +S315E060A530524A426742674EB900E09A804FEF000C9C +S315E060A5404E754EBAFD36558F3F390000525C4EB9B6 +S315E060A55000E09F383F390000525C42674EB900E048 +S315E060A5609C06508F6000FCEA30390000525C2F0A8E +S315E060A5702F0245F900E09C064A40670C53803F0095 +S315E060A5803F390000525A600E34390000525A4EBAD2 +S315E060A590FFB242673F024E92588F241F245F4E758A +S315E060A5A071AF0005207900012CF03F4000044ED0E9 +S315E060A5B01039000052702F021200488144C0664E86 +S315E060A5C008010000674814390000525F538213C2E5 +S315E060A5D00000525F6638A542C28241F90000525ED1 +S315E060A5E013D00000525F4A41670672FDC081600485 +S315E060A5F0A54280823F390000525C13C00000527071 +S315E060A6003F390000525A4EB900E09CBE588F241F75 +S315E060A6104E7571EF0004AB41B2806558303B0A0875 +S315E060A62048C04EFB0802000C0012001A00260038F3 +S315E060A63000444EBAFC4660044EBAFC2C42404E756D +S315E060A64010390000527072FEC081600A1039000055 +S315E060A6505270A341808113C00000527060DE41EF0A +S315E060A660000713D00000525E60D210390000525EDF +S315E060A67048804E7542404E75424041F90000044EB6 +S315E060A68023D0000052543F3C001E33C00000525AB3 +S315E060A69033C00000525C33C00000525870013F3C4A +S315E060A6A0000413C0000052704EBAFF687001588F04 +S315E060A6B041F90000525EA34113D00000525F33C0FF +S315E060A6C00000511C71F900005276B280670A123CB4 +S315E060A6D00002B280661060047001600C720333C1E0 +S315E060A6E0000052526008700F33C00000525242417F +S315E060A6F0700141FAFC4823C800012CF033C1000028 +S315E060A700525033C000012CEC4E7500002F027440AD +S315E060A710222F000A2001E08813C1FFF0000D13C06C +S315E060A720FFF0001120014240484013C0FFF00015E1 +S315E060A730102F0009E9888082143C0018E4A9143CD3 +S315E060A740000FC282808113C0FFF00019241F4E758E +S315E060A7501039FFF0001D671C71800C80000000EA74 +S315E060A76067120800000066107208C0814A4067E020 +S315E060A77042404E7570F14E7570FF4E754FEFFFDCDF +S315E060A78048D71CFC3C2F0034282F002A3A2F002E95 +S315E060A7904A466E0000D4600000B24A6F00286762E5 +S315E060A7A02F043F067E304E94700113C0FFF000091F +S315E060A7B013C7FFF0001D4E935C8F4A406D00008822 +S315E060A7C0204273FC0101601271A800017F905488F9 +S315E060A7D0E188808733C0FFF00000538166EA103974 +S315E060A7E0FFF0001D73800C81000000EA670C080131 +S315E060A7F00000660A4A006DE6607A70F1604870FFB4 +S315E060A80060442F043F067E2024424E94700113C0BC +S315E060A810FFF0000913C7FFF0001D4E935C8F4A40BE +S315E060A8206C0A60223039FFF0000034C0B68A66F404 +S315E060A8302042600C101010A80001114000015488FD +S315E060A840B68866F0602E71406020242F00302602C4 +S315E060A85049FAFEBA06830000020047FAFEF44A456A +S315E060A8606E00FF384280600270F14CD71CFC4FEFFF +S315E060A87000244E75068200000200528453850683EA +S315E060A8800000020060D800002F02102F0009123984 +S315E060A890FF008604A942C2824A4167F213C0FF0004 +S315E060A8A0860C241F4E751039FF008604A341C081D3 +S315E060A8B04E751039FF0086040800000067F4103911 +S315E060A8C0FF00860C4E752F0B2F0A246F000C47FA9B +S315E060A8D0FFB8600848803F004E93548F101A66F4C4 +S315E060A8E0245F265F4E7500004FEFFFF448D7040CF7 +S315E060A8F0362F0012302F00103F033F004E4D588F29 +S315E060A9004CD7040C4FEF000C4E752F0A2F02302FF8 +S315E060A910000CA5427340B4816D2641F90001330411 +S315E060A92075701A0041F9000132FC73701A00B28248 +S315E060A9306D123F003F3C00014E4D588F71406006FE +S315E060A94042806002A140241F245F4E754FEFFFF006 +S315E060A950302F001448D7041C41F9000132FC43F95A +S315E060A96000013304734034301A0077711A0079427B +S315E060A970B8836C2C707F2801C082EF8C5282318262 +S315E060A9801A00754245F900012CF4D08420320C009F +S315E060A990B4836618424231821A0033821A00600C30 +S315E060A9A03F003F3C00024EBAFF40588F4CD7041C34 +S315E060A9B04FEF00104E754FEFFFD448D77CFC382F31 +S315E060A9C000303F043F3C00014E4D588F4A406700DF +S315E060A9D000CA7744700942454DFAFF0E2E032C03F8 +S315E060A9E047F9000132FC49F900013304EF8F4BF976 +S315E060A9F000012CF4E1AE60027A013F04A7423F3CDD +S315E060AA0000024E96588F7380B48166244240794442 +S315E060AA1041F9000132FC558F31804A0041F900016D +S315E060AA20330431804A003F3CFFE04EB900E0DBAAE8 +S315E060AA307413B48167C2143C0011B481675C143C42 +S315E060AA400018B48166144241143C00012B80680012 +S315E060AA5039823A0037813A00603A34333A00323428 +S315E060AA603A002242754143E9007F20427549B48845 +S315E060AA706D14747FC4812047528139813A00D1C216 +S315E060AA802B808C00600E3F3C00073F043F3C000398 +S315E060AA904E4D5C8F4A456600FF604CD77CFC4FEFBD +S315E060AAA0002C4E754FEFFFEE48EF041C0002362F88 +S315E060AAB00016382F00183F034EBAFEFC3F043F03F2 +S315E060AAC03F3C00034E4D5C8F7944588F701FB084D5 +S315E060AAD06C10774341F9000132F430303A0052802D +S315E060AAE06026700DB084660C774341F9000132F45C +S315E060AAF0420060147008B0846612774341F9000141 +S315E060AB0032F430303A00538031803A004CD7041C3E +S315E060AB104FEF00104E754FEFFFE848D70C3C342FEF +S315E060AB200022362F001C322F00244A4267025382ED +S315E060AB30206F001E3002601C79187A09BA846608B4 +S315E060AB40508178F8C284600C7A1FBA846D045481AF +S315E060AB506002528153807940A145BA8466DA601E0C +S315E060AB603F3C00083F034E923F3C00203F034E923D +S315E060AB703F3C00083F034E924FEF000C600E7B4374 +S315E060AB80794147F9000132F445FAFF1A71735A00C8 +S315E060AB90B8806DCC30024CD70C3C4FEF00184E7548 +S315E060ABA04FEFFFF448D7040C342F0010362F001215 +S315E060ABB03F3C000D45FAFEEE3F024E923F3C000AF6 +S315E060ABC03F024E92508F600C3F3C002053833F0221 +S315E060ABD04E92588F4A4366F04CD7040C4FEF000C08 +S315E060ABE04E7520790001344C10280030488056803C +S315E060ABF03F004EBAFD16548F4E7520790001344CF5 +S315E060AC0010280031488056803F003F3C00084EBA2D +S315E060AC10FCD8588F4E7520790001344C10280034EA +S315E060AC20488056803F003F3C00084EBAFCBC588FD7 +S315E060AC304E7520790001344C1028003348805680E8 +S315E060AC403F004EBAFCC6548F4E7520790001344CF5 +S315E060AC5010280033488056803F003F3C00084EBADB +S315E060AC60FC88588F4E754FEFFFF0302F001648D7AF +S315E060AC700C0C342F001476097340B6816624774253 +S315E060AC8047FAFE2245F9000132F43F3C00203F02DC +S315E060AC904E9330323A00588FAF41C0814A4066EAFF +S315E060ACA060143F4200143F4000164CD70C0C4FEF47 +S315E060ACB000106000FDF04CD70C0C4FEF00104E75A5 +S315E060ACC02F0372092F02342F000E362F000C7142CB +S315E060ACD0B280660C70093F40000E241F261F608616 +S315E060ACE0721FB2806D103F3C005E3F034EBAFDB608 +S315E060ACF0588F704084803F42000E3F43000C241F13 +S315E060AD00261F6000FDA03F2F000420790001344C2F +S315E060AD1010280031488056803F004EBAFF4A588F6F +S315E060AD20A3404E754FEFFFF448D7040C207900013D +S315E060AD30344C362F001010280033488056803F038D +S315E060AD403F003F3C00034E4D5C8F4CD7040C4FEF09 +S315E060AD50000C4E754FEFFFF448D7040C20790001E4 +S315E060AD60344C362F001010280034488056803F035C +S315E060AD703F003F3C00034E4D5C8F4CD7040C4FEFD9 +S315E060AD80000C4E7520790001344C10280030488064 +S315E060AD9056803F004EBAFBB6548F4E75598F2F02E0 +S315E060ADA0342F000C3F024EBAFBA473803E813F0213 +S315E060ADB02F4000084EBAFCEE588F202F0004241F67 +S315E060ADC0588F4E7520790001344C2F02558F142828 +S315E060ADD00030488256823F024EBAFBDC3E824EBA73 +S315E060ADE0FFBC588F241F4E7520790001344C2F022A +S315E060ADF0558F14280030488256823F024EBAFBB81F +S315E060AE003E824EBAFB48588FA7427380B481660C87 +S315E060AE10558F3F3CFFE04EB900E0DBAA241F4E753C +S315E060AE2020790001344C10280033488056803F007A +S315E060AE303F3C00024EBAFAB2588F4E754FEFFFF4C0 +S315E060AE40302F001048D7040C20790001344C734051 +S315E060AE500C81000000FF6624162800304883568384 +S315E060AE603F034EBAFAA6548F4A8067243F430010E8 +S315E060AE704CD7040C4FEF000C6000FAD21628003174 +S315E060AE80488356833F003F033F3C00034E4D5C8F53 +S315E060AE904CD7040C42804FEF000C4E754FEFFFF439 +S315E060AEA048D70C0420790001344C246F001047FA2F +S315E060AEB0FDB61428003148825682600A71803F00F0 +S315E060AEC03F024E93588F101A66F24CD70C044FEF40 +S315E060AED0000C4E754FEFFFCC48D77CFC362F003820 +S315E060AEE041F9000132F4246F003C42427F6F003A40 +S315E060AEF04DFAFDCE4BFAFC2049FAFBAA47FAFCA2D2 +S315E060AF00714338300A00600000FA3F037C0D4EBAA8 +S315E060AF10FA3C548F7300BC8167406D1A7A08BA8137 +S315E060AF2067481C3C000ABC8167301A3C0003BA8162 +S315E060AF30660000BE604A7C15BC8167666D0C1C3C91 +S315E060AF400012BC81660000AA606C7A18BA81673C20 +S315E060AF507C7FBC816600009A60103F3C000D3F0339 +S315E060AF604EBAFB42588F600000A2558F3F043F0205 +S315E060AF702F0A3F034E954FEF000C340060000084CB +S315E060AF80558F3F3CFFE04EB900E0DBAA558F3F04AA +S315E060AF903F022F0A3F034E954FEF000C340066ECFC +S315E060AFA060603F3C002342423F034E943F043F03D0 +S315E060AFB04E93508F604C3F3C00233F034E943F04DA +S315E060AFC03F034E93508F4240204A601C73983F0186 +S315E060AFD03F032F4000342F4800304E96202F003438 +S315E060AFE0588F206F002C52807340BA816EDE6012FB +S315E060AFF0734252821580180071803F003F034E967F +S315E060B000588F7B42BE856E00FF0230024CD77CFCD7 +S315E060B0104FEF00344E752F0A246F00082079000147 +S315E060B020344C486A000271923F0010280030488034 +S315E060B03056803F004EBAFE9E508F15400001245F59 +S315E060B0404E750000222F000442406004E28952807F +S315E060B0504A8166F853804E754FEFFFF248EF1C0069 +S315E060B06000023F3C000347F900E0BC344E9341F9EF +S315E060B07000013C502440716F0014588F218A0C0007 +S315E060B080675A558F3F3C00044E93588F2540002405 +S315E060B0902840673C558F3F3C00044E93588F2940CB +S315E060B0A000146720558F3F3C00044E93588F25402F +S315E060B0B0001C6628206A00242F2800144EB900E0A0 +S315E060B0C0BCD8588F2F2A00244EB900E0BCD8588FE0 +S315E060B0D02F0A4EB900E0BCD8588F95CA200A4CD7E3 +S315E060B0E01C004FEF000C4E754FEFFFCA48EF7CFC3B +S315E060B0F000023C2F003E266F003A3C53362B00029E +S315E060B1003E2B00063A2B00083F064EBAFF4C588F9E +S315E060B11024404A8067000112286A0024A34135452D +S315E060B120000871452A6C00143546000675432F40C9 +S315E060B130002C794E7F472B4A00104214294A00249E +S315E060B140302B00103C2B0004356B000E00103543AD +S315E060B150000A354E000E4DFAFEECC0813546000C15 +S315E060B160354000282F024E96A341354000127140CB +S315E060B1702C01E1AE20065380354000142F410034A7 +S315E060B1802E844E96588F222F00303540001671403F +S315E060B190E1A95381354100183F2B000442674E9682 +S315E060B1A0588F226F002C20423540001A41F078FF1C +S315E060B1B020074C04080043F128FF2B40000C2008D0 +S315E060B1C04C420000206A001C22094C421001468075 +S315E060B1D024003B40000A3940000EC1C39481322B03 +S315E060B1E0000A3142000AC5C3C7FCFFFE214A0010CF +S315E060B1F0DA819A80302B000C224193C2222F002CF8 +S315E060B2003489354500024C041800D6807003354316 +S315E060B210000431400028A76800202141000C4A6BF9 +S315E060B2200008660870D2600670D9600242804CD72A +S315E060B2307CFC4FEF00344E754FEFFFF048D7041CAF +S315E060B240362F0014A3447143E1AC3039000133D4A6 +S315E060B250C0844A4066343F033F3C00074E4D588FFA +S315E060B2604A80670000946D000096558F3F032F007B +S315E060B2704EBAFE76508F4A80660000823039000111 +S315E060B28033D4888033C4000133D47143207900011C +S315E060B290344C103008406710488043F9000133347D +S315E060B2A071404AB10C00664C700143F90001330D00 +S315E060B2B04A196632734043F90001330C18311800BD +S315E060B2C0528413841800794343F900013C50247199 +S315E060B2D04C0043F90001333445EA002423921C0014 +S315E060B2E011804840600E528073407428B48166C015 +S315E060B2F070BF600A71436006A140600270D94CD7A6 +S315E060B300041C4FEF00104E754FEFFFF4AB4148D78A +S315E060B310040C362F0010342F0012246F001471C312 +S315E060B320B280656071434A3208306F0C558F3F03D7 +S315E060B3304EB900E0B760588F4A426C087743158291 +S315E060B3403830603C7142AB41B2806C3820025D803F +S315E060B350714077432200E789224141F10A0043F9CF +S315E060B36000013D0C203098006C0615803830601086 +S315E060B37015823830D1FC00013D14301052803080A7 +S315E060B3804280600270DB4CD7040C4FEF000C4E75C8 +S315E060B3902F390001344C3F2F000A3F2F000A4EBA86 +S315E060B3A0FF68508F4E752F02302F0008AB42734016 +S315E060B3B0B4816D0E20790001344C1030183048802D +S315E060B3C06F025D80241F4E75302F0006736F000498 +S315E060B3D0206F000811801840714041F90001330C7C +S315E060B3E0123008005281118108004E754FEFFFF070 +S315E060B3F0AB4048D70C0C222F0014B081657C42002C +S315E060B40041F900013D104A90662A754024790001B1 +S315E060B410344C41F900013D0C2602E78B224343F1AF +S315E060B4202A002649D7FC00013D10268A733218307F +S315E060B4306E14602652807540762841E8000AB6822E +S315E060B44066C470DD60365D812401E78A264245F395 +S315E060B4501A00D5C82392880060042381880073406F +S315E060B4605C8071402401E78A204241F01A00D1FCF9 +S315E060B47000013D1430BC0001600270DB4CD70C0C5F +S315E060B4804FEF00104E7500004FEFFFE848D73C0CD9 +S315E060B4904242266F001C246F002041F900013D10F6 +S315E060B4A04A906640714243F90001344C558F262A32 +S315E060B4B000242200E789204149F00A007001204C0F +S315E060B4C0D1FC00013D0C21510004314000083F3CB5 +S315E060B4D000044EB900E0BC34588F2A404A806618B2 +S315E060B4E0600000D052827142722841E8000AB28060 +S315E060B4F066AE70DD600000BE3B6F0024003041F94F +S315E060B50000013D0C2B430010298088004240206AF0 +S315E060B51000142B4A0014222800200681FFFFFFE07A +S315E060B5202B4800182B41001C3B40002A3B4000247E +S315E060B5303B400028202A003428406008B2AC001C5A +S315E060B540670628544A8C66F42A80254D00344A8C76 +S315E060B550671C4878000C486C0006486D00064EB9DA +S315E060B56000E00EC4294D002C4FEF000C603E302BFE +S315E060B570001A3200E188E08910012B6B001C000C98 +S315E060B5803B40000A41ED000C101010A8000311408A +S315E060B590000310280001116800020001114000025A +S315E060B5A03B6B001800083B6B001600065C8271423C +S315E060B5B0600270D94CD73C0C4FEF00184E754E5672 +S315E060B5C0FFF82F032F02558F4267362E000C486E28 +S315E060B5D0FFFC2F2E00084EB900E0E68C4FEF000C22 +S315E060B5E024006D506748558F486EFFF83F3C002752 +S315E060B5F042AEFFF82F2EFFFC2F004EB900E0E4AA22 +S315E060B6004FEF00104A80672620401228000B4881E1 +S315E060B6100801000067044A436618558F3F032F020E +S315E060B6202F004EBAFE644FEF000C2400600674DF14 +S315E060B630600274DC2002242EFFF0262EFFF44E5EBC +S315E060B6404E754FEFFFEC48D71C0C246F0018342F73 +S315E060B650001C302A000408000000670000A8206A89 +S315E060B660001C41E800162F082F2A00184EB900E0AA +S315E060B670D21E302A000A3200E188E089100147EAEA +S315E060B680000C3540000A101316AB000317400003A8 +S315E060B690102B0001176B0002000117400002A54164 +S315E060B6A0C282200A508F5C8041F900E0D3E44A41CF +S315E060B6B0671A262A000C42AA000C2F004878000A76 +S315E060B6C02F2A00184E902543000C600C2F00487816 +S315E060B6D0000A2F2A00184E90302A000A4FEF000C1D +S315E060B6E03200E188E08910013540000A101316AB9C +S315E060B6F0000317400003102B0001176B00020001E6 +S315E060B700174000024A426708A940C4804A4267205F +S315E060B710206A001443E80034206800346008B5C845 +S315E060B720670C224820504A8866F470BF60282290F1 +S315E060B73047F9000004B249F900E0C828245B6008D4 +S315E060B7402F0A4E942452588F4A8A66F4B7FC00005A +S315E060B75004BA66E842804CD71C0C4FEF00144E7575 +S315E060B7604FEFFFEC48D70C0C342F00186D0000E863 +S315E060B7707142722DB2806D0000E2AB43B6806D1807 +S315E060B78020790001344C42011430083011810830D0 +S315E060B79048826F0000C2603A20025D80714045F9E0 +S315E060B7A000013D0C2200E789224141F10A004AB0DE +S315E060B7B0A8006C1E2248D3CA47E9000830135380BC +S315E060B7C036806600009242B0A80042A9000460009C +S315E060B7D00086558F3F024EB900E0EF90588F4A8061 +S315E060B7E06778558F42672F004EBAFE58508F220217 +S315E060B7F05D8173412601E78B204341F01A00D1FC5D +S315E060B80000013D143210538130816650C5FC000A58 +S315E060B8102042D1FC00013CD042422210429042A834 +S315E060B82000043142000841F900013D0C600CB1FCB6 +S315E060B83000013E92670C41E8000AB29066F04A88E1 +S315E060B840661A2F012F4000144EB900E0BCD8588F1D +S315E060B850202F001060064280600270DB4CD70C0C33 +S315E060B8604FEF00144E754FEFFFE048D77C0C286F22 +S315E060B8700024262F002C4BFAFDCA246C0034603677 +S315E060B880B6AA001C662E47F900013D0CB5D36618D2 +S315E060B89020390001344CB0AB00046600009A558F45 +S315E060B8A042672F0A4E95508F47EB000AB7FC0001BE +S315E060B8B03E9C66D824524A8A66C6206F0028246C6D +S315E060B8C000243428001A3002E18AE08814004BF93B +S315E060B8D000E0CBD847F900E0CB066018558F2F0A19 +S315E060B8E03F024E952F0A42673C403F02340E4E932C +S315E060B8F04FEF00102002528071C0A341B28065DC38 +S315E060B900242C00142F032F024EB900E0D21E4DEF17 +S315E060B91000281D3CFFE52F0EA3672F024EB900E01D +S315E060B920D3E44FEF00123F3C00022F024EBAFD1403 +S315E060B930508F4280600270DC4CD77C0C4FEF002069 +S315E060B9404E754E56FFF82F02558F4267486EFFFCE4 +S315E060B9502F2E00084EB900E0E68C4FEF000C240075 +S315E060B9606D586750558F486EFFF83F3C002742AEF2 +S315E060B970FFF82F2EFFFC2F004EB900E0E4AA4FEF50 +S315E060B98000104A80672E20401228000B488108018B +S315E060B99000006624222EFFF80681FFFFFFE02F01FC +S315E060B9A02F002F022D41FFF84EBAFEBC4FEF000C80 +S315E060B9B02400600674DF600274DC2002242EFFF44B +S315E060B9C04E5E4E75202A2B2C3A3B3C3D3E3F5B5DFE +S315E060B9D07C004E56FFC470E548D73C7C558F426785 +S315E060B9E04201142E000D1D40FFFE486EFFFA2F2E19 +S315E060B9F000081D41FFFF4EB900E0E68C4FEF000CFA +S315E060BA0024404A8A6D000204670001F6226EFFFA5E +S315E060BA101011670001EC7100762E41FAFFA8B6803E +S315E060BA20670001DE600C7301B081670001DC121B08 +S315E060BA3066F41018670001DE2649710060F02F0A8F +S315E060BA404EB900E0EF3C588F254000142640670071 +S315E060BA5001B4558F486EFFF63F3CFFFF42AEFFF6FE +S315E060BA602F2EFFFA2F0A4EB900E0E4AA4FEF00103E +S315E060BA704A80673C204076111228000B4881C283D9 +S315E060BA804A41660001847302163C0010B681670085 +S315E060BA900178222EFFF60681FFFFFFE02F012F00DF +S315E060BAA02F0A2D41FFF64EBAFDBE4FEF000C602E19 +S315E060BAB042AEFFF660284A6B00246D00014C558F5C +S315E060BAC03F3C000120462F0B4E90508F4A40660067 +S315E060BAD001382F0A4E9542AEFFF6588F601E2A0E49 +S315E060BAE0280E0685FFFFFFF65584263C00E0E4AAB3 +S315E060BAF02C3C00E0CC8A4BF900E0E1D8558F2F056D +S315E060BB003F3CFFFF20432F042F0A4E904FEF00107B +S315E060BB1028404A8067A0486EFFEB2F2EFFFA4EB9A9 +S315E060BB2000E0E0401942000B508F70E0D1AEFFF6C6 +S315E060BB30200C06800000001641EC000C4218B0882C +S315E060BB4066FA303900013D0A3200E188E089100189 +S315E060BB5039400016303900013CD03200E188E08996 +S315E060BB60100142413940001842AC001C4BF900E03C +S315E060BB70D21E3941001A2F2EFFF62F0B4E95486ED6 +S315E060BB80FFEB4878000B2F0B4EB900E0D3E44FEFA4 +S315E060BB9000123F3C00022F0B4EBAFAA82F2EFFF69A +S315E060BBA02F0B4E9542A7487800202F0B4EB900E048 +S315E060BBB0D3744FEF001C122C000B2D40FFFA488126 +S315E060BBC0080100006704424160027202558F3F013E +S315E060BBD02F0A2F004EBAF8B24FEF000C4A806D2A5A +S315E060BBE0558F3F003400A3434EB900E0EF90588F85 +S315E060BBF02040302800048083314000047142600AAE +S315E060BC0070DE600670D9600270DC4CEE3C7CFFC48E +S315E060BC104E5E4E75266A00144A8B6600FE366000FC +S315E060BC20FE1E102F000972EFC08148803F40000879 +S315E060BC306000FDA04FEFFFF47013322F001048D77D +S315E060BC40001C7541B0826C0A52B90000A6C442007D +S315E060BC50607C2601E78B41F9000133D820302C0067 +S315E060BC6038034A806708224021912C00604A307987 +S315E060BC700000A6B82003528077407548B4836C080C +S315E060BC8052B90000A6C0604432790000A6C891C0EF +S315E060BC9033C80000A6B841F90000A6D0754943F163 +S315E060BCA0080033C90000A6C82002D08031812A008E +S315E060BCB006800000A6D267142040424175446004C5 +S315E060BCC0425852817741B4836EF6600242804CD727 +S315E060BCD0001C4FEF000C4E752F027413206F0008A6 +S315E060BCE03028FFFE73C0B481640852B90000A6BC78 +S315E060BCF06010714043F9000133D820B10C0023880D +S315E060BD000C00241F4E75303C0FA042B90000A6BC63 +S315E060BD1042B90000A6C042B90000A6C433C0000024 +S315E060BD20A6B84E752F0A202F0008B0B90001342856 +S315E060BD306D0E43F900013434B0B9000134306F0E52 +S315E060BD404A790001342C673243F90001344045E911 +S315E060BD50000420690004600AB0A80004670A244869 +S315E060BD6020504A8866F2601224902F092F084EB957 +S315E060BD7000E0D504508F4280600270D8245F4E7533 +S315E060BD804FEFFFF448D70C04202F0012B0B9000142 +S315E060BD9034286D0E47F900013434B0B9000134300F +S315E060BDA06F0E4A790001342C676247F9000134402E +S315E060BDB0246B00046008B0AA0004670824524A8A2B +S315E060BDC066F46048242F001670FC5682C480B4AADC +S315E060BDD000086E3C558F3F3C00014EB900E0BC3434 +S315E060BDE02202D2AA0004204021410004222A00084F +S315E060BDF0928221410008254200082F0B2F004EB9A0 +S315E060BE0000E0D5044FEF000C4280600670D8600217 +S315E060BE1070BD4CD70C044FEF000C4E754FEFFFF43E +S315E060BE20A14048D7040C322F0014242F0010B082B2 +S315E060BE3066647141A342B480671C6D084A41670E2F +S315E060BE40600000DCA743B6806D0000D4601C4879D2 +S315E060BE50000134346006487900013440A1674EB988 +S315E060BE6000E0D43C508F600000B84879000134347B +S315E060BE70A16745F900E0D43C4E9248790001344030 +S315E060BE80A16724004E924FEF0010B0826C000092E2 +S315E060BE9020026000008C4A826F0000847141A343F7 +S315E060BEA0B680671E6D064A4167106072A541B28032 +S315E060BEB06720A743B6806666603648790001343409 +S315E060BEC060064879000134402F024EB900E0D43C68 +S315E060BED0603E4879000134342F0245F900E0D43CF5 +S315E060BEE04E92508F4A80662E487900013440601C3D +S315E060BEF04879000134402F0245F900E0D43C4E9287 +S315E060BF00508F4A8066104879000134342F024E9291 +S315E060BF10508F4A80670820402028000460024280F3 +S315E060BF204CD7040C4FEF000C4E7520790001344C71 +S315E060BF302F02A94232280028202F000841FAFEDEAF +S315E060BF40C2824A416708558F3F3C00036004558FC3 +S315E060BF5042672F004E90508F241F4E752F032F029D +S315E060BF60A340262F000C242F0010B0826C000094B2 +S315E060BF700802000067025382203900013428B0834A +S315E060BF806D082202D283B0816F78203900013430A7 +S315E060BF90B0836D082202D283B0816F66558F3F3CD5 +S315E060BFA000014EB900E0BC34588F20404A806756A5 +S315E060BFB0214300042142000842A8000C4A790001AE +S315E060BFC0342C671E20390001344023C80001344018 +S315E060BFD0B0B900013448660623C8000134482080C1 +S315E060BFE0601C429023C00001344023C00001344805 +S315E060BFF0700142B90001344433C00001342C428000 +S315E060C0006006A140600270D9241F261F4E752F0A74 +S315E060C0102F022F3C000134343F3C00004E4D5C8FD4 +S315E060C02020790001343420280004241F23C0000155 +S315E060C0303428D0A80008245F23C000013430424091 +S315E060C04033C00001342C4E7571FC20004E7570E0F3 +S315E060C0504E752F0A246F0008202A001C67082F00FF +S315E060C0604EBAFFF0588F202A002067082F004EBA9C +S315E060C070FFE2588F202A0014670A2F004EB900E0CD +S315E060C080BCD8588F41F90001333443F90001330CD1 +S315E060C090B5D86606421142A8FFFC5289B1FC0001A0 +S315E060C0A033D466EC2F4A0008245F60FFFFFFFC2C68 +S315E060C0B04FEFFFEC48D71C0C286F0018266F001C6A +S315E060C0C0740545F900E0EEC4601E101C558F48808B +S315E060C0D03F004E92121B160048813E814E927303DA +S315E060C0E0588F7100B081660E53827142A141B28071 +S315E060C0F066D87001600242404CD71C0C4FEF0014CA +S315E060C1004E752F0A2F022F3C00E00C363F3C002193 +S315E060C1103F3C00054E4D508F2F3C00E00C183F3CF5 +S315E060C12000223F3C00054E4D508F23C00000530473 +S315E060C1304EB900E0C7B84EB900E0BD064EB900E0C2 +S315E060C140C00E4EB900E0F552558F3F3C00104EB937 +S315E060C15000E0BC34588F204023C00001344C50C00E +S315E060C16011400030114000311140003270FE114044 +S315E060C170003370FD114000344240241F33C000019B +S315E060C180330033C00001330833C0000132FE33C0F0 +S315E060C1900001330633C0000132FC33C000013304D2 +S315E060C1A0245F4E75434F4E3A004155583A0050521F +S315E060C1B04E3A00004E56FFD848D73C3C206E000809 +S315E060C1C072573D50FFFA716EFFFAB2806D0005C49A +S315E060C1D0487900013CD44EB900E01288588F4A4055 +S315E060C1E06700015074F2263900013E9CB483660014 +S315E060C1F0010E717900013D0841F900013C5045F9B5 +S315E060C20000013D0C26700C00282B002420524A8841 +S315E060C2106F1CB7E8001066162F084EB900E0BCD870 +S315E060C2204240429242AA0004588F3540000845EAEF +S315E060C230000AB5FC00013E9C66D2717900013D08BA +S315E060C24041F900013C502F300C004EB900E0BCD8FB +S315E060C250717900013D08588F43F900013C5042B1C5 +S315E060C2600C004A8467082F044EBAFDE8588F71794E +S315E060C27000013D0843F9000004B22059601073687C +S315E060C2800004B081660672FF3141000420504A889E +S315E060C29066ECB3FC000004BA66E0303900013D08A4 +S315E060C2A03F003F3C00074E4D588F22006E2679795D +S315E060C2B000013D08A340E9A83839000133D446803F +S315E060C2C0C08433C0000133D44A81660004DE2203B1 +S315E060C2D0600004D8558F3F3900013D082F004EB904 +S315E060C2E000E0B0E8508F4A80660004AC424242B952 +S315E060C2F000013EA033C200013D086000FEC07179D6 +S315E060C30000013D082203263C000004BA43F9000020 +S315E060C31004B22059601079680004B084660674FF40 +S315E060C3203142000420504A8866ECB68966E46000D3 +S315E060C330047A776EFFFA41F900E435782203200348 +S315E060C340D281E788908173B00800300167000160B0 +S315E060C3504A6EFFFA67000158740BB4836C16382E88 +S315E060C360FFFA143C00030684FFFFFFF079C4B4844F +S315E060C3706500013C707FC28020790001344C183042 +S315E060C380183048846F000126302EFFFA721253800F +S315E060C39071C0B28065000116303B0A0848C04EFBAA +S315E060C3A008020036004E0036004E004E002600368B +S315E060C3B00036006A009203F8010A010A010A010ADE +S315E060C3C003F803F803F803F8206E000871680002CA +S315E060C3D00C80000000FF6618558F486EFFFFA3676C +S315E060C3E03F044EB900E0D3BA732EFFFF60000360EE +S315E060C3F0226E0008558F48690003A3673F044EB973 +S315E060C40000E0D4044FEF000C6000039A206E000851 +S315E060C41045F900E0D40426680002600E558F2F00CF +S315E060C420A3673F044E924FEF000C200B4A1B66EC6D +S315E060C43060000372226E0008424349F900E0D3BA15 +S315E060C440266900024BF900E00D821A1345EB000104 +S315E060C450548B488553856044558F2F0BA3673F0403 +S315E060C4604E944FEF000CA341B280663A2F0B740DE9 +S315E060C470A3673F3C000153853F3C00404E95711BEE +S315E060C4804FEF000CB4806612558F486EFFFFA367CE +S315E060C4903F044E944FEF000C600C528371C50C80E4 +S315E060C4A00000FFFF66B21483600002FA4240220099 +S315E060C4B00281000000804A416700013271400C80D1 +S315E060C4C000000081660A206E0008302800066008D9 +S315E060C4D0226E0008302900027940AB41B2846C10CC +S315E060C4E05D8071402200E789204143F00A006020C8 +S315E060C4F04A406D3420790001344C18304830488425 +S315E060C5006F1A5D8479442004E788204043F04A004E +S315E060C51041F900013D0C28318800600279444A8483 +S315E060C5206700027E6C0000C67B4470FDB0856E00DD +S315E060C5300270716EFFFA206E0008723F5088B2801A +S315E060C5406644226E00084A69000466000258302993 +S315E060C5500006A3427340B48166182650558F568410 +S315E060C5603F044EB900E0AD9C588FA3411680600051 +S315E060C570023A2F103F0056843F044EB900E0AED435 +S315E060C5807340600001947240B28066000218226EC9 +S315E060C59000084A6900046600020C26505684528BF5 +S315E060C5A0424349F900E0AC666030A140B085661070 +S315E060C5B071ABFFFF3F003F3C00024E94588F601620 +S315E060C5C071ABFFFF3F003F043F3C00034E4D5C8F85 +S315E060C5D022006D0001D65283528B206E00087143B3 +S315E060C5E073680006B2806EC2600001C0302EFFFA4A +S315E060C5F0A3410680FFFFFFC471C0B2806548206E2C +S315E060C600000847FAFAAC28280002487AFB982F041B +S315E060C6104E93508F73FCFFFF4A406600018E487A66 +S315E060C620FB892F044E93508F73FCFFFE4A406600F1 +S315E060C630017A487AFB7A2F044E93508F73FCFFFDA4 +S315E060C6404A406600016622032003D281E78841F909 +S315E060C65000E435789081AF4171B00801B280650041 +S315E060C6600148303B0A0848C04EFB08020010002A29 +S315E060C670003E0066008200B2013C00E82003D08004 +S315E060C680E78B41F900E435749680207038004E906F +S315E060C6902200600001162003558FD080E78B206E64 +S315E060C6A000083F28000296806014226E000820038E +S315E060C6B0D080E78B3F29000496803F29000241F94C +S315E060C6C000E43574207038004E90588F2200600088 +S315E060C6D000DA206E0008558F2003D0803F280006E0 +S315E060C6E0E78B3F28000496803F280002601C226E9C +S315E060C6F000082003D080E78B3F29000896803F2919 +S315E060C70000063F2900043F29000241F900E4357440 +S315E060C710207038004E902200508F6000008E206EB0 +S315E060C7200008558F2003D0803F28000AE78B3F281A +S315E060C730000896803F2800063F2800043F28000254 +S315E060C74041F900E43574207038004E9022004FEFD6 +S315E060C750000C6056226E0008558F2003D0803F297A +S315E060C760000EE78B41F900E435743F29000C9680B2 +S315E060C7703F29000A3F2900083F2900063F290004B7 +S315E060C7803F290002207038004E904FEF00102200E3 +S315E060C790601872E0601472D9601073FC00FF600A82 +S315E060C7A072DB60064281600272BF4CEE3C3CFFD8B1 +S315E060C7B020014E5E4E75000070FF43F90000C61022 +S315E060C7C041F90000C63822BC0000C62420BC000047 +S315E060C7D0C64C23C9000004B223C8000004B633C0C7 +S315E060C7E00000C61433C00000C62833C00000C63C53 +S315E060C7F033C00000C650203C0000C66023C0000085 +S315E060C800C620203C0000D66023C00000C634203C31 +S315E060C8100000E66023C00000C648203C0000F660E9 +S315E060C82023C00000C65C4E754FEFFFE4A14148D7D8 +S315E060C8301C3C266F0020362B00047143B2806706ED +S315E060C8404A6B000A660A70FF37400004600000AA7F +S315E060C85072FF382B0006286B000C2A2B001037413C +S315E060C8600004714432340A00302B0008D0812F3C3A +S315E060C870000000003F033F003F3C00012F053F3CC6 +S315E060C88000013F3C00044E4D4FEF001223C0000113 +S315E060C8903EA0663C4A4466563214302B0008282B8C +S315E060C8A00010D081322C000890812F3C00000000FF +S315E060C8B03F033F003F3C00012F043F3C00013F3C0B +S315E060C8C000044E4D4FEF001223C000013EA0671EEC +S315E060C8D0558F3F3C000133C300013D0823C0000192 +S315E060C8E03E9C487900013CD44EB900E01296424045 +S315E060C8F0374300043740000A4CD71C3C4FEF001C1E +S315E060C9004E754FEFFFD448D77CFC382F00302A6F46 +S315E060C910003271440C80FFFFFF386D08736D0012C2 +S315E060C920E2A0600873ED001271C4E2A8206D0024F5 +S315E060C93071407368000EB2806E28200406800000A5 +S315E060C94000C871C02679000004B64DF9000004B64F +S315E060C9500C80000000C752C3A34048839083260042 +S315E060C960600E42432679000004B24DF9000004B23D +S315E060C9702A0E42817D446024302B0004756D0006EA +S315E060C9807F40B4876608756B0008BC8267187140A3 +S315E060C990A142B4806602220B2A0B26534A8B66D8E4 +S315E060C9A04A81661460143F003F3C00094E4D588F43 +S315E060C9B04A40667C600000B0264128562A0E600830 +S315E060C9C0B9CB67082A0C2840201466F42F0C4EBABF +S315E060C9D0FE5871432C2C001036750A00302D000687 +S315E060C9E0D7C42F3C000000003F003F0B3F3C0001F6 +S315E060C9F02F063F3C00003F3C00044E4D4FEF0012D7 +S315E060CA0023C000013EA0588F670A5C8D33D50001D4 +S315E060CA103D08603A4240396D00060004394400083A +S315E060CA2039430006294D000C264C3940000A603631 +S315E060CA307140A341B2806782A542B4806628588B74 +S315E060CA4033D300013D0870F223C000013EA0558F4C +S315E060CA503F3C000123C000013E9C487900013CD484 +S315E060CA604EB900E012962045209326962C8B4A6FAD +S315E060CA700036670670013740000A202B00104CD75D +S315E060CA807CFC4FEF002C4E754FEFFFF048D70C0C57 +S315E060CA90246F0014206F00184A12674E264A224817 +S315E060CAA07008600A12C1538020494A40670E121B23 +S315E060CAB02049670875017620B68266E87112722EA3 +S315E060CAC0B2806726508A71127420B480671C204950 +S315E060CAD0588910FC002E600610C0B3C8670C101AA7 +S315E060CAE0670873007620B68166EE421020084CD760 +S315E060CAF00C0C4FEF00104E75302F0004206F0006CF +S315E060CB00C1E8000A4E754E56FFE8322E000848D757 +S315E060CB100C1C246E000C302E000A77414A6A00280D +S315E060CB2067303200E188E0891001D6833D40000A33 +S315E060CB302F032F2A001C4EB900E0D21E486E000A71 +S315E060CB40A5672F2A001C4EB900E0D3E44FEF00142E +S315E060CB50607C028000000FFFE283383CF000D68103 +S315E060CB6077433D40000A080100006708E988780FCE +S315E060CB703D40000A2F032F2A001C47F900E0D21E31 +S315E060CB804E93240E55822F02A5672F2A001C4EB9BC +S315E060CB9000E0D374302EFFFE3200E188E0891001B8 +S315E060CBA0322E000AC88088813004E18CE088180063 +S315E060CBB02F032F2A001C3D44FFFE4E932F02A567EC +S315E060CBC02F2A001C4EB900E0D3E44FEF00284CEE6C +S315E060CBD00C1CFFE84E5E4E754FEFFFEC48D70C0C31 +S315E060CBE0342F0018246F001A6C082002528060000F +S315E060CBF00090260F068300000012714241F900E0C2 +S315E060CC00D21E47F900E0D3744A6A00286726D080CE +S315E060CC102F002F2A001C4E902F03A5672F2A001C99 +S315E060CC204E93302F00263200E188E08910014FEF05 +S315E060CC300014604CE280D08271402F002F2A001CE5 +S315E060CC404E902F03A5672F2A001C4E93302F0026A7 +S315E060CC503200E188E08910013F4000264FEF001482 +S315E060CC6008020000670871EF0012E888600602803B +S315E060CC7000000FFF73400C8100000FFF660270FF3B +S315E060CC804CD70C0C4FEF00144E754FEFFFE848D7CA +S315E060CC901C1C246F001C362A0024266A00106C08CF +S315E060CCA020035280600000AE4A43670E558F2F0B1B +S315E060CCB03F034EBAFF24508F6008302A000A6602AE +S315E060CCC070FF4A6F0020670000847340A142B48120 +S315E060CCD0660000823403780249FAFEFE60287142FB +S315E060CCE0A341B2806D027402558F2F0B3F024E94C2 +S315E060CCF0508F4A40671A52823002528448C081EBB4 +S315E060CD000010240048427344716B0010B0816ECE0F +S315E060CD107944716B0010B0846F4E2F0B3F3CFFFF80 +S315E060CD2049FAFDE43F024E94508F4A43670C2F0B5D +S315E060CD303F023F034E94508F6010302A0004A341B7 +S315E060CD403542000A80813540000430027340A142DA +S315E060CD50B481671435400024C1EB000A35400026F3 +S315E060CD60424035400028600270FF4CD71C1C4FEFF4 +S315E060CD7000184E754FEFFFF0302F001848D70C0CB7 +S315E060CD804A4067045380600C20790001344C1028D7 +S315E060CD9000374880558F3F004EB900E0B238588F73 +S315E060CDA04A406D4E714041F900013C504243740285 +S315E060CDB024700C0047FAFE226012558F2F0A3F025C +S315E060CDC04E93508F4A406602528352827342716A32 +S315E060CDD00010B0816EE47743206F001420C320C05A +S315E060CDE0716A000E2080716A000A21400004428068 +S315E060CDF06002A1404CD70C0C4FEF00104E7500005E +S315E060CE002F02302F0008226F000E206F000A6002AA +S315E060CE1012D853807340A142B48166F4241F4E75E4 +S315E060CE202F02302F0008226F000A206F000E60028A +S315E060CE3012D853807340A142B48166F4241F4E75C4 +S315E060CE404FEFFFE048D71C7C362F0026242F0028C2 +S315E060CE503C2F0024282F002C266F00302479000018 +S315E060CE6004B649F900E0C8287B43DA826020736A39 +S315E060CE700004716B0006B0816612716A0008B480C6 +S315E060CE806E0ABA806F062F0A4E94588F24524A8AE9 +S315E060CE9066DC322B0004302B00067B41DA820C859F +S315E060CEA000007FFF6E202A02DA812F3C000000003E +S315E060CEB03F003F053F032F043F063F3C00044E4DD5 +S315E060CEC04FEF001260182F053F003F3CFFFF3F0326 +S315E060CED02F043F063F3C00044E4D4FEF001223C047 +S315E060CEE000013EA067205C8B33D300013D08558F7F +S315E060CEF03F3C000123C000013E9C487900013CD4E0 +S315E060CF004EB900E012964CD71C7C4FEF00204E7570 +S315E060CF104FEFFFC448D77CFC246F0042362F0040B9 +S315E060CF20282F0046266A0010202A00207D6A002805 +S315E060CF307B6B00162F400038A3402E06EBA8EAA6CE +S315E060CF40242F004A4C407801302A00263A41DC80A2 +S315E060CF5038464A4167783A2B000E9A817B45B88518 +S315E060CF606C022A043F032F0B3F0C4EB900E0C90266 +S315E060CF70326A00287345508F2041D2AA002043F1DF +S315E060CF8058003549002825410020B2AA000C6F12EE +S315E060CF90326A00042541000CA3412E098E81354793 +S315E060CFA000047F4D4A826606D08760000268558F2E +S315E060CFB098882F022040284648707800528C3F05BA +S315E060CFC07B45D485206F005A4E904FEF000C3E2B88 +S315E060CFD00018CE8471472F4000329880670001A622 +S315E060CFE0302B0014220CC0814A4067603A2B000A5D +S315E060CFF022049A80716B0016E0A120017345B0812E +S315E060D0006C023A00714C2F0B2F022F003F053F0355 +S315E060D0104EBAFE2E716B0016322A00284FEF0010D2 +S315E060D020E1AD7145DA8135450028D4809880D0AA93 +S315E060D030002025400020B0AA000C6F102540000CAF +S315E060D040302A0004A341808135400004716B0016EC +S315E060D05042869DCE9BCDE0A428442A0C382B001254 +S315E060D06071443F440036E0A54244600000A2558F1B +S315E060D0703F0353852F0A4EB900E0CC8A508F71404A +S315E060D0806622736A002643F5480020417349B288F8 +S315E060D0906612322B000AD88173EB000CDC814A45BC +S315E060D0A0670E606A4A4566083C7C000160029DCE78 +S315E060D0B04A44671C734D2F0B2F022F013F043F0339 +S315E060D0C02F40003E4EBAFD7A4FEF0010202F002E23 +S315E060D0D02206D2AA002025410020B2AA000C6F10D9 +S315E060D0E02541000C322A0004A344828435410004C1 +S315E060D0F04A8066000118D4863A6A0026382B000A10 +S315E060D1007DEB000C4A456606320E66A260064A452D +S315E060D1106600FF5C736F0036A340280CE3A84C40C2 +S315E060D12048053805675E558F3F032F0A4EB900E024 +S315E060D130CC8A508F4A40660000D4716B0016322A62 +S315E060D1400028E1ADD285714535410028D0AA00209E +S315E060D15025400020B0AA000C6F102540000C302A54 +S315E060D1600004A3418081354000042F0B2F02716AD1 +S315E060D17000267B452F003F04D4853F034EBAFCC2B0 +S315E060D1804FEF00104A4767000084716A0028736BAE +S315E060D1900016E2A04A40670A7940736B000AB284DF +S315E060D1A06612558F3F032F0A4EB900E0CC8A508F46 +S315E060D1B04A4066583F032F0B322A0026D0813F0053 +S315E060D1C04EB900E0C902306A0028222F003A508F3B +S315E060D1D0D2AA00202541002041F078003548002899 +S315E060D1E0B2AA000C6F102541000C322A0004A3435A +S315E060D1F08283354100044A82671A558F2F022F00D9 +S315E060D2003F07206F005A4E904FEF000C202A002017 +S315E060D21090AF00384CD77CFC4FEF003C4E754FEF3B +S315E060D220FFE048D71C7C246F0024242F0028B4AA92 +S315E060D230000C6E0000C64A826D0000C0266A0010CF +S315E060D240660A42403540002860000094302A002893 +S315E060D250670A71C073EB000CB280660C4AAA0020C4 +S315E060D26056C44884448460024244736B001AA34007 +S315E060D2702A02E3A84C405803302A00242A02E2A599 +S315E060D2803543002836054A4067122C2A0020BC82C6 +S315E060D2906E0AE2A69A862605D6846004302A000ADB +S315E060D2A078017B4349F900E0CBD86014558F2F0BAA +S315E060D2B03F00A1464E94508F7340BC8167405284D4 +S315E060D2C07344BA816EE64A6A002867124A43670E7B +S315E060D2D0558F2F0B3F004EB900E0CBD8508F3540CD +S315E060D2E00024558F2F0B3F004EB900E0CAF8254267 +S315E060D2F00020508F35400026600674C06002A1426F +S315E060D30020024CD71C7C4FEF00204E754FEFFFF2AA +S315E060D31048EF001C0002242F0012362F00183F2F22 +S315E060D32000164EB900E0EF90588F4A806736734337 +S315E060D330A544B88166082040D4A8000C6012A344D6 +S315E060D340B88166082040D4A8002060044A43661885 +S315E060D3502F4200142F4000104CD7001C4FEF000CFA +S315E060D3606000FEBC70DB600270E04CD7001C4FEFE3 +S315E060D370000C4E75206F0004A34171680030B280E6 +S315E060D38067302228000C202F000892A80020B28087 +S315E060D3906C0220014A806F1E558F487AFA642F2FFF +S315E060D3A000122F002F0842674EBAFB664FEF00145B +S315E060D3B04E7570DC4E7542804E75558F3F2F000678 +S315E060D3C04EB900E0EF90588F4A8067142F2F000A1D +S315E060D3D02F2F000A2F004EBAFF9C4FEF000C4E75C0 +S315E060D3E070DB4E75558F487AFA382F2F00122F2F43 +S315E060D3F000122F2F00123F3C00014EBAFB144FEF94 +S315E060D40000144E75558F3F2F00064EB900E0EF9041 +S315E060D410588F4A80671C20404A68003067182F2F73 +S315E060D420000A2F2F000A2F004EBAFFBA4FEF000C0A +S315E060D4304E7570DB4E7570DC4E7500004FEFFFF099 +S315E060D44048D71C04286F0018242F0014206C0008AD +S315E060D4504A88670000A2A140B08257C048804480F5 +S315E060D4604A406606568272FCC48124502648428150 +S315E060D4706004264A24494A8A66042454264C4A4073 +S315E060D480665C226A0008B4896E546604269260304F +S315E060D490558F3F3C00014EB900E0BC34588F2040C8 +S315E060D4A04A8067522202D2AA0004202A00089082AB +S315E060D4B02140000820922141000425420008268888 +S315E060D4C024AC0004294A000441F90001344C25509B +S315E060D4D0000CB9CB66022653294B0008601A226A13 +S315E060D4E00008B3C16F0222092252B1CA66844A407B +S315E060D4F067042441600295CA200A4CD71C044FEFAA +S315E060D50000104E754FEFFFF448D71C00286F0014EB +S315E060D51097CB246F00102054600E20280004B0AA38 +S315E060D52000046C08264820504A8866EE24884A8BB8 +S315E060D5306704268A6002288A4AAC00086604294A9B +S315E060D54000084A88672E202A00082200D2AA000432 +S315E060D550B2A80004661ED0A8000824902540000802 +S315E060D560B1EC00086604294A00082F084EB900E0CD +S315E060D570BCD8588F4A8B6736202B00082200D2AB86 +S315E060D5800004B2AA00046626D0AA000826922740C4 +S315E060D5900008B5EC00086604294B00082F4A001025 +S315E060D5A04CD71C004FEF000C60FFFFFFE72E4CD717 +S315E060D5B01C004FEF000C4E75222F0004B2B900013B +S315E060D5C034286D0E203C00013434B2B900013430A9 +S315E060D5D06F14203C000134344A790001342C67062C +S315E060D5E0203C000134404E754FEFFFF048D71C04F5 +S315E060D5F0246F0018242F001449F900E0D50447EAA7 +S315E060D6000004206A00046016B4A8000C660C26903C +S315E060D6102F0A2F084E94508F6002264820534A887E +S315E060D62066E64CD71C044FEF00104E754FEFFFF4E3 +S315E060D63048D7040C242F0010660A20790001344C88 +S315E060D6402428002C20424243600252834A1866FA3C +S315E060D6504A1066F670FE5683C68048790001343417 +S315E060D66077432F034EB900E0D43C508F24404A8084 +S315E060D67067122F032F022F2A00044EB900E00EC472 +S315E060D6804FEF000C200A4CD7040C4FEF000C4E75A0 +S315E060D6904FEFFFF048D71C044242246F001449F96B +S315E060D6A000E0B30847EA0030714220790001344C6B +S315E060D6B010300830120048816F0C2F0A3F013F029C +S315E060D6C04E94508F6002168052827142528BAD4109 +S315E060D6D0B28066D4424247F900E0B3C8714220792D +S315E060D6E00001344C2F0A1030084048803F003F026A +S315E060D6F052824E937142508F7210B28066DE20790C +S315E060D7000001344C1568003700374CD71C044FEFE6 +S315E060D71000104E754572726F7220616E64206C6F98 +S315E060D7206E676A6D7020696E207865786563282912 +S315E060D73021004E56FFCC716E000848D73C0CA941DB +S315E060D740242E000A266E000E262E0012B280670096 +S315E060D75001486D164A6E000867000198123C0003A6 +S315E060D760B2806600042A6000018AAD41B28067003B +S315E060D77000DE6E34123C0032B280660004122F0284 +S315E060D7802F0B4EB900E0F1F0508F24404A806600DE +S315E060D790040E2F2B000C486B01004EB900E006FE2C +S315E060D7A0244B508F600003F82F034EBAFE80588FEB +S315E060D7B028404A80670003E4487900013434A16771 +S315E060D7C045F900E0D43C4E92508F24000C80000076 +S315E060D7D000FF636E4879000134342F004E9222399F +S315E060D7E00001344C204024680004D48A2941000CAE +S315E060D7F02141000C487801002F0A4EB900E00DD8AF +S315E060D800260A248A2542000441EA00802548002051 +S315E060D8104FEF0010256C0004002C4240601010C1F0 +S315E060D8205280734022480C81000000806706121B1C +S315E060D830224866EA42112F034EBAFE56588F6000C0 +S315E060D840035E4879000134342F0C600001702F0BC1 +S315E060D8504EBAFD66240B588F224020690004600EA4 +S315E060D860B4A800046606214B000C600620504A8886 +S315E060D87066EE242B002C2F024EBAFD3E588F2240D6 +S315E060D88020690004600EB4A800046606214B000C13 +S315E060D890600620504A8866EE327C030041F900015A +S315E060D8A0344C27500024206B0004424041E8FFC618 +S315E060D8B0216B00080006214B003620BC00013C507D +S315E060D8C03149000443E8000A2748007C52807340EF +S315E060D8D04299740BB48166F427480078276B001090 +S315E060D8E00074276B0018007023CB0001344C600095 +S315E060D8F00290558F42A742672F024EB900E0EB08CF +S315E060D9004FEF000C4A806600028C486EFFFE486E60 +S315E060D910FFE42F024EB900E0F00E4FEF000C24401A +S315E060D9204A806600027A2F034EBAFD02588F244081 +S315E060D9304A8067000266262EFFE8D6AEFFE4D6AEE2 +S315E060D940FFEC0683000001004A790001342C67365B +S315E060D950A540C0AEFFF8672E487900013440A16764 +S315E060D96049F900E0D43C4E94508F2400B6806E16A0 +S315E060D9704879000134402F004E94508F2A40286D3C +S315E060D98000044A8C6642487900013434A16749F95B +S315E060D99000E0D43C4E94508F2400B6806E164879F1 +S315E060D9A0000134342F004E94508F2A40286D0004D5 +S315E060D9B04A8C66144879000134342F0A4EB900E087 +S315E060D9C0D504508F600001D44A6E0008660A254C83 +S315E060D9D0000C2B4C000C600E20390001344C2540C5 +S315E060D9E0000C2B40000C487801002F0C4EB900E08B +S315E060D9F00DD8D48C288C2942000441EC0080508FED +S315E060DA0029480020296A0004002C303C0080600A26 +S315E060DA1010C1538022484A406706121B224866F0CE +S315E060DA20421123CC00010660396EFFFA002823CD4F +S315E060DA300001066423CA0001066848780034487924 +S315E060DA4000013CD44879000106704EB900E00EC48E +S315E060DA50487900013CD44EB900E012884FEF0010DF +S315E060DA604A406746487AFCAE4EB900E038144879D9 +S315E060DA70000134342F390001066845F900E0D50429 +S315E060DA804E922679000106642F2B00044EBAFB2ADB +S315E060DA902E802F0B4E924FEF00123F3C00014879EB +S315E060DAA0000106704EB900E01296558F486EFFE4AD +S315E060DAB03F2EFFFE2F39000106604EB900E0F070A0 +S315E060DAC04FEF000C24404A806730487900013434D7 +S315E060DAD02F390001066847F900E0D5044E932879AE +S315E060DAE0000106642F2C00044EBAFACE2E802F0C6D +S315E060DAF04E934FEF0010600000A62F3900010660DC +S315E060DB004EBAFB8E2F2EFFE420790001066041E8D5 +S315E060DB1001002F084EB900E006FE716E00084FEF77 +S315E060DB20000CA741B280675E303C030020790001BB +S315E060DB30066043F90001344C215100242268000458 +S315E060DB4043E9FFC623680008000633400004700B13 +S315E060DB502348003622BC00013C5045E9000A2149D1 +S315E060DB60007C429A53804A4066F8214900782168F1 +S315E060DB700010007421680018007023C80001344C5E +S315E060DB804EB900E00CC82479000106606010347C70 +S315E060DB90FFE0600A347CFFDF6004347CFFD9200A52 +S315E060DBA04CEE3C0CFFCC4E5E4E754FEFFFF048D727 +S315E060DBB00C0C26390001344C2F3CFFFFFFFF3F3C45 +S315E060DBC001023F3C00054E4D508F20402443240324 +S315E060DBD006820000003645EA003047F900E0B760AB +S315E060DBE04E9020790001344C41E8002423D00001B6 +S315E060DBF0344C101A48806F08558F3F004E93588F0B +S315E060DC00B48A66EE740645F900013D1047F900E016 +S315E060DC10B760B6926608558F3F024E93588F528230 +S315E060DC2071C2722E45EA000AB28066E6204322039C +S315E060DC3041E8004006810000005043F90001330CE2 +S315E060DC4010184880670C71401431080053821382C3 +S315E060DC500800B28866EA4879000134342F0345FA51 +S315E060DC60F9884E92508F4A790001342C670C4879D6 +S315E060DC70000134402F034E92508F71EF00142079EB +S315E060DC800001344C214000684EB900E00D06558F26 +S315E060DC9042674EBAFF162F0B2F0A558F2F2F000EB5 +S315E060DCA047F900E0BCD82F390001344C42674EB9E1 +S315E060DCB000E0BD802F390001344C4EBAF8FC4FEFDE +S315E060DCC000102240244020690004588A601A2039F6 +S315E060DCD00001344CB0A8000C660A24902F084E93DD +S315E060DCE0588F6002244820524A8866E2558F3F2F5B +S315E060DCF000124EBAFEB60000700172012F032F02C9 +S315E060DD00206F000C1418671C75027620B6826714C3 +S315E060DD107541163C0009224052893009B682660494 +S315E060DD202009528052817541760CB68266D6241FF0 +S315E060DD30261F4E754FEFFFEC48D71C0C740B286F0F +S315E060DD400018266F001C45F900E0EEC4101C558FE4 +S315E060DD5048803F004E921600101B48803E804E92EF +S315E060DD607303588F7100B081660A53824A4266DC5B +S315E060DD707001600242404CD71C0C4FEF00144E75A8 +S315E060DD802F0B2F0A246F000C202A0014670A2F003D +S315E060DD904EB900E0BCD8588F206A001843E8001CF2 +S315E060DDA02068001C600843E8002020680020B5C8B1 +S315E060DDB066F422AA002047FAFFC860062F004E9359 +S315E060DDC0588F202A001C66F42F4A000C245F265FD9 +S315E060DDD060FFFFFFDF064FEFFFF048D73C00246FA0 +S315E060DDE00014266F0018286A00142A6A001C604C2A +S315E060DDF04AAD001C664243F90001330D41F900016A +S315E060DE0033384A196704BBD0672E5888B3FC0001E3 +S315E060DE10333466EE6000008E424042AD003042AD83 +S315E060DE2000343B40000C202D001467242F004EB9CF +S315E060DE3000E0BCD8588F60182A6D00204A8D66B025 +S315E060DE40606C2B6A001C0020254D001C2B4A0018D4 +S315E060DE50302B001A42AD00143200E188E0891001EF +S315E060DE602B4C0028286C00203B6B0016001049EC18 +S315E060DE70FFE03B40000E3B6B001800122B6A00246B +S315E060DE8000242B4C002C4878000B2F0B2F0D4EB93D +S315E060DE9000E00EC44FEF000C200D4CD73C004FEF76 +S315E060DEA000104E754AAD0034668E6000FF6C558F8B +S315E060DEB03F3C00044EB900E0BC34588F2A404A80AB +S315E060DEC0668060D44FEFFFE048D71C04286F0024DB +S315E060DED0246F0028266F002C202C001867102F0B6B +S315E060DEE02F0A2F004EBAFFDE4FEF000C2440240FBE +S315E060DEF00682000000122F022F0C4EB900E0CA889D +S315E060DF00508F20429082601C53813681220A528172 +S315E060DF104A806708149853802441600814BC005C0A +S315E060DF2024416004321366E0200A4CD71C044FEFAC +S315E060DF3000204E752F0A206F0008246F000C1568CC +S315E060DF40000B0015302800163200E188E0891001E8 +S315E060DF5035400016302800183200E188E08910016B +S315E060DF60354000182568001C001A43EA001A1011B3 +S315E060DF7012A900031340000310290001136900028F +S315E060DF8000011340000272081028000B4880C0812F +S315E060DF904A40671E4878000B2F08486A001E4EB953 +S315E060DFA000E00EC44FEF000C420015400029245FEC +S315E060DFB04E7545EA001E2F4A000C2F480008245F84 +S315E060DFC060FFFFFFEAC62F0A2F02342F0012246F8C +S315E060DFD0000C558F3F2F00124EB900E0EF90588F3E +S315E060DFE022404A42660A34A9000635690008000202 +S315E060DFF030123200E188E0891001204A30C03010EA +S315E060E0003200E188E089100130804A42672C30298D +S315E060E010000433520006A341808133500008334048 +S315E060E020000430123200E188E0891001348030105B +S315E060E0303200E188E08910013080241F245F4E754C +S315E060E0404FEFFFE848D73C0C286F001C202F0020DC +S315E060E05042424BF900E0EEC460184881558F528227 +S315E060E06076083F014E957342588F14C0200AB681F8 +S315E060E070672A264C2440121C67367101762AB680E0 +S315E060E080672E163C005CB6806726163C002EB6808E +S315E060E090671E163C0020B68066C06014264C101CD5 +S315E060E0A0670E7100722EB2806706765CB68066ECAB +S315E060E0B07113722AB2806606528B703F60027020DE +S315E060E0C07313762EB6816608528B600414C0528252 +S315E060E0D07342AF43B6816CF442424BF900E0EEC462 +S315E060E0E0601A4881558F5282284B3F014E95588F72 +S315E060E0F0A74114C07142204AB2806728284B204A63 +S315E060E100121B67207101762AB6806718163C005CA0 +S315E060E110B6806710163C002EB6806708163C002075 +S315E060E120B68066BE7114722AB2806604703F60087B +S315E060E1307020600410C052827342A543B6816CF4CD +S315E060E1404CD73C0C4FEF00184E754FEFFFE848D7C1 +S315E060E1504C0C362F0020266F001C660E20790001DD +S315E060E160344C162800374883600253833F3C000AEC +S315E060E1704E4D548F7543A341E5A97341C280671044 +S315E060E180558F3F034EB900E0B238588F4A806C062F +S315E060E190421370D2603820790001344C4DEF00189C +S315E060E1A0103028403D3C004041F90001333448805E +S315E060E1B0714020300C002F0E2F0B2F004EBAFD065B +S315E060E1C04FEF000C4201204042801141FFFF4CD7E7 +S315E060E1D04C0C4FEF00184E754FEFFFE048D77C0CC4 +S315E060E1E0266F002474014DF900E0C902246B001427 +S315E060E1F04BF900E00DD8286A0010776C000E601EBF +S315E060E2003F3C00012F2B0024302A0026D0823F00BD +S315E060E21052824E962F032F004E954FEF00107342B9 +S315E060E220716C000AB0816ED83F3C00012F2B002450 +S315E060E2303F2A00264EB900E0C9022F032F002F4087 +S315E060E240002C4EB900E00DD84CEF7C0C0010202F6E +S315E060E250002C4FEF00304E754FEFFFE248EF3C1C6D +S315E060E26000023F3C00102F2F00244EB900E0B9D2E7 +S315E060E270508F38006D00022A558F3F004BFAFA7ACC +S315E060E2804EB900E0EF902440242A00182F2A001CA3 +S315E060E2902F024EB900E0D21E42A7487800202F0236 +S315E060E2A04EB900E0D3742F0024004E95286A00141E +S315E060E2B0264C4FEF001C3600600C2F0B4E95266BFC +S315E060E2C00018588FD6804A8B66F07743703FB083EC +S315E060E2D06C162F2A001C2F022F0C4EB900E0B86690 +S315E060E2E04FEF000C6000009A2F022F0C4EBAFAE84E +S315E060E2F0508F26404A8066162F2A001C2F022F2A4E +S315E060E30000144EB900E0B8664FEF000C60362F009F +S315E060E3104EB900E0EF3C588F274000142840662A4B +S315E060E3202F2A001C2F022F2A00144EB900E0B8668F +S315E060E330206A001442A8001C2F0B4EB900E0BCD83E +S315E060E3404FEF001070D960000158558F3F3C0001D7 +S315E060E3502F004EB900E0CC8A508F4A4067282F2ABA +S315E060E360001C2F022F2A00144EB900E0B866206A1E +S315E060E370001442A8001C2F0B4EBAFA064FEF0010AD +S315E060E38070DC6000011C2F0B4EBAFE4E487800161A +S315E060E390487900E437884BF900E00EC426402F0048 +S315E060E3A04E9572101741000B303900013D0A32007C +S315E060E3B0E188E089100137400016303900013CD031 +S315E060E3C03200E188E089100137400018302C000AFD +S315E060E3D03200E188E08910013740001A42AB001C48 +S315E060E3E047EB002048780016487900E437882F0B21 +S315E060E3F04E95702E7210174000011741000B3039B0 +S315E060E40000013D0A3200E188E089100137400016DC +S315E060E410303900013CD03200E188E0891001206AA1 +S315E060E4200018374000184FEF001C3028000A220021 +S315E060E43046817341D2819381C0813200E188E0896F +S315E060E44010013740001A42AB001C5D84794448787D +S315E060E45000322F0C2F0A4E954FEF000A302A000447 +S315E060E460A3418081354000043F3C00062F0A4EB947 +S315E060E47000E0B6422F0A4EB900E0BCD84FEF000C80 +S315E060E4802004E7882240428041F14A002248D3FCDA +S315E060E49000013D10429143F900013D0C42B0980005 +S315E060E4A04CD73C1C4FEF001C4E754E56FFC448D708 +S315E060E4B03CFC486EFFF42A6E00082F2E000C242EDA +S315E060E4C000124EBAFB7C508F1D6E0011FFFF266D69 +S315E060E4D000144A8B66142F0D4EB900E0EF3C588F5E +S315E060E4E02B40001426406700017E2042A1412010A7 +S315E060E4F0B28056C12A0E99CC2E3C00E0DD345385BD +S315E060E5002C3C00E0DDD6283C00E0EEC47301C0811F +S315E060E5102F002F0B4EB900E0D21E508F600000DE58 +S315E060E520122A000B76104881C2834A41672E710039 +S315E060E530722EB280672676E5B6806720286D001C6D +S315E060E54060122F0C2F0A20474E90508F4A40660C7F +S315E060E550286C00204A8C66EA6000011E712A000B76 +S315E060E560720F224AB28067000094711276E5B68037 +S315E060E570670A260E0683FFFFFFF46014712EFFF430 +S315E060E580723FB280677676E5B68066E6600000E662 +S315E060E59020435283101873002041723FB28867347B +S315E060E5A04880558F2D49FFEC20443F004E90226E07 +S315E060E5B0FFEC2044120010112D41FFF048803E80B0 +S315E060E5C04E90588F222EFFF0226EFFEC73017100A1 +S315E060E5D0B08166285289BA8366B6204576081010FF +S315E060E5E07300B681670E163C0010B68167064A1165 +S315E060E5F0670000821211C0814A00667842A74878B7 +S315E060E60000202F0B4EB900E0D3744FEF000C24408E +S315E060E6104A80670610126600FF084240A141204228 +S315E060E620B290670420AB00204A40661A4A8A67388F +S315E060E630206E000C72E5260A7110B28057C0710038 +S315E060E640C68024436022A1402042B090661A206BC7 +S315E060E6500020244C41E8FFE02F082F0B4EB900E084 +S315E060E660D21E508F600295CA200A4CEE3CFCFFC475 +S315E060E6704E5E4E75700160A42F0A2F0D20464E90B7 +S315E060E680508F28404A806600FED460DA4FEFFFD0B4 +S315E060E690723A48D77C3C286F00343A2F003C712CA4 +S315E060E6A00001B28066201014558F45EC0002488068 +S315E060E6B03F004EB900E0EEC4588F488024000682E1 +S315E060E6C0FFFFFFBF600E20790001344C244C142814 +S315E060E6D000374882558F3F024EB900E0B238588F16 +S315E060E6E04A806C062640244C603471127542725C36 +S315E060E6F0B280661241F900013C50528A20702C00CB +S315E060E70026680024601820790001344C10302840D7 +S315E060E71041F9000133344880714026700C004A8B21 +S315E060E7206F0000E4260F283C00E0E040068300002E +S315E060E73000254DFAF6004BFAFD72204A424260022D +S315E060E74052821018670A7100725CB28066F26006E7 +S315E060E7504A45670000AC7112722EB2806616712A65 +S315E060E7600001B28057C272FE488253827142B28023 +S315E060E770661E60184A42670000882F032F0A20440D +S315E060E7804E90508F202B001C66246008266B001884 +S315E060E79044826054558F487900E437843F3C0010EA +S315E060E7A02F0A2F0B4E954FEF00104A806750284096 +S315E060E7B06024286C00204A8C661C558F487900E4FA +S315E060E7C037843F3C00102F0A2F0B4E954FEF001019 +S315E060E7D028404A8067102F0C2F034E96508F4A4090 +S315E060E7E067D0264C600297CB7142D5C04A1267105B +S315E060E7F0528A4A8B670A4A426600FF40600297CBBC +S315E060E800206F0038208A200B4CD77C3C4FEF0030DD +S315E060E8104E754E56FFE448D70C3C740147F900E06C +S315E060E820EEC44243246E0008712A0001723AB28057 +S315E060E83066161812558F48843F044E93588F488069 +S315E060E8400680FFFFFFBF600C20790001344C102882 +S315E060E850003748804A426714732A0002743DB481E7 +S315E060E8606608568A3600420260BE3600558F3F0023 +S315E060E8704EB900E0B238588F4A806D0000AE714301 +S315E060E88020790001344C143008404882671A71429E +S315E060E89041F90001330C1230080053811181080000 +S315E060E8A06C06420411840800424041F90001330CD1 +S315E060E8B073427828B88156C14881C48179424A302A +S315E060E8C048006626700141F90001330C558F1180CE +S315E060E8D048003F3C0001486EFFFC2F0A4EBAFDAE91 +S315E060E8E04FEF000C4A806D42600E52807340528258 +S315E060E8F07828B88166BA60304A80672C7743A3414E +S315E060E9003A39000133D441F900013334E7A9218073 +S315E060E9104C0020790001344C4280828533C100018D +S315E060E92033D411823840600270DE4CEE0C3CFFE47A +S315E060E9304E5E4E754E56FFEC48D71C04558F3F3CF5 +S315E060E9400001486EFFFC2F2E00084EBAFD404FEFE7 +S315E060E950000C24404A80670000F24AAA001867006B +S315E060E96000F643F90001330D41F9000133384A19E5 +S315E060E9706706B5D0670000E05888B3FC0001333520 +S315E060E98066EC266A00144A8B66122F0A4EB900E0DE +S315E060E990EF3C588F26404A80670000B448780040D4 +S315E060E9A02F0B4EB900E0D21E508F49F900E0D374C8 +S315E060E9B042A7487800202F0B4E944FEF000C4A8018 +S315E060E9C06710204074E510107300B48167E2600060 +S315E060E9D00092206A001843E8001C2068001C60086A +S315E060E9E043E8002020680020B5C866F44AAA0034EF +S315E060E9F066604AAA001C665A22AA0020202A0014F1 +S315E060EA00670A2F004EB900E0BCD8588F242A001858 +S315E060EA102F0A4EB900E0BCD8246B001C266B0018A8 +S315E060EA202F0A2F0B4EB900E0D21E42A7487800208D +S315E060EA302F0B4EB900E0D3742F0A2F002F024EB988 +S315E060EA4000E0B8664FEF0024600E70DE600A70D9B1 +S315E060EA50600670BF600270DC4CEE1C04FFEC4E5E3C +S315E060EA604E754A0066F06000FF6A20790001344C1A +S315E060EA702F0A2F0224680020202A001067000082F7 +S315E060EA80558F486A000C122A001448813F012F0A0C +S315E060EA902F004EBAFA164FEF00104A80664C103CD3 +S315E060EAA0000143F90001330D41F9000133384A1999 +S315E060EAB0671E242A0010B4906616714041F9000181 +S315E060EAC0330C123008005381118108006632600E03 +S315E060EAD05280734058887428B48166D2602241F9C6 +S315E060EAE00001333442B00C00601620790001344CEA +S315E060EAF02F2800202F004EBAF43C508F42806002EF +S315E060EB0070CF241F245F4E754E56FFE8720848D7D3 +S315E060EB10041C362E000C246E000E7143B28067042E +S315E060EB2070218680558F4267486EFFFC2F2E000865 +S315E060EB304EBAFB5A4FEF000C24006D56674E558F68 +S315E060EB40486EFFF83F0342AEFFF82F2EFFFC2F0022 +S315E060EB504EBAF9584FEF0010280067304A8A67309E +S315E060EB604878000C2F2EFFFC2F0A4EB900E00EC449 +S315E060EB702542001015430014256EFFF8000C2F0A9D +S315E060EB802F044EBAF3B04FEF0014600474DF6002F6 +S315E060EB90428220024CEE041CFFE84E5E4E754E56F5 +S315E060EBA0FFC448D73CFC558F42A74267282E000E2B +S315E060EBB0242E000A2F044EBAFF504FEF000C4A8015 +S315E060EBC067000170558F426745FAFAC2486EFFFCEE +S315E060EBD02F024E924FEF000C2E006D00015C670035 +S315E060EBE00156558F4267486EFFF82F044E924FEFFD +S315E060EBF0000C2C006D0001426700013C558F3F3CE4 +S315E060EC0000022F024EB900E0B5BE508F4A806D001B +S315E060EC100128558F3F003A004BF900E0EF9047F945 +S315E060EC2000E0D21E260E0683FFFFFFED49F900E005 +S315E060EC30D3E44E95244070E5242A00181D40FFED8C +S315E060EC402F2A001C2F024E934FEF000CBC87670003 +S315E060EC5000A842A72E3C00E0D374487800202F023B +S315E060EC6020474E9020401C28000B2F2A001C2F02C4 +S315E060EC704E932F03A3672F024E944FEF00204886F2 +S315E060EC80246A001C45EA00162F0A2F024E932F03D2 +S315E060EC904878000A2F0220474E904FEF00123F0659 +S315E060ECA02F044EB900E0BC225C8F3F0028004E95F1 +S315E060ECB02440206A001C41E800162F082F2A00181D +S315E060ECC04E932F034878000A2F2A00184E944FEF90 +S315E060ECD00016302A000472FEC081354000043F040D +S315E060ECE04EB900E0B7603EBC00022F2A00184EB96C +S315E060ECF000E0B642508F60182F032F2EFFF84EBA11 +S315E060ED00F3402F034878000B2F024E944FEF001428 +S315E060ED10558F3F054EB900E0B760588F4A806D1851 +S315E060ED20558F3F3C00022F024EB900E0B642508F4D +S315E060ED30600670DC600270DE4CEE3CFCFFC44E5E4A +S315E060ED404E754FEFFFEE48EF0C0C000220790001A4 +S315E060ED50344C2468002042AA00102F0A3F2F001E80 +S315E060ED602F2F001C4EBAFDA24FEF000C204A43EA5B +S315E060ED70000B7318742AB481670E763FB681670814 +S315E060ED80B3C866EE4241600272014A806D6C4A41E8 +S315E060ED906768720141F90001330D43F900013338C8 +S315E060EDA026484A1B6712242A0010B491660A754108 +S315E060EDB07628B68266206040528175415889762809 +S315E060EDC0B68266DE72014A18670C52817541762812 +S315E060EDD0B68266F26022734141F90001330C45EA7E +S315E060EDE000101430180052821182180041F90001B7 +S315E060EDF0333421921C00600270D94CD70C0C4FEF73 +S315E060EE0000104E754E56FFF41D6E000FFFF62F0A8A +S315E060EE102F02558F4267486EFFFC2F2E00084EBAD0 +S315E060EE20F86C4FEF000C24404A8067000084558FF1 +S315E060EE30486EFFF83F3C002742AEFFF82F2EFFFCFE +S315E060EE402F004EBAF6664FEF00104A806766242AB6 +S315E060EE500014202EFFF80680FFFFFFEB2F002F0245 +S315E060EE602D40FFF84EB900E0D21E508F200E06808E +S315E060EE70FFFFFFF64A6E000C66122F00A3672F02B3 +S315E060EE804EB900E0D3744FEF000C601E2F00A3670D +S315E060EE902F024EB900E0D3E44FEF000A3F3C000298 +S315E060EEA02F024EB900E0B642508F712EFFF6600633 +S315E060EEB070DE600270DF242EFFEC246EFFF04E5EA3 +S315E060EEC04E7500002F027419102F0009220006818A +S315E060EED0FFFFFF9F7381B4816504725FC081241F69 +S315E060EEE04E7520790001344C202800204E7520793B +S315E060EEF00001344C216F000400204E754FEFFFF4A3 +S315E060EF0048D7040C362F00103F3C000A4E4D548F14 +S315E060EF107543A341E5A97341C280670A2079000180 +S315E060EF20344C114300374CD7040C4FEF000C4E7550 +S315E060EF3020790001344C712800374E752F0A246F12 +S315E060EF400008558F3F3C00044EB900E0BC34588F52 +S315E060EF5020404A806734316A000E000A216A002840 +S315E060EF600018216A00180014216A002C001C316A1E +S315E060EF7000120008203C7FFFFFFF2140000C316A51 +S315E060EF8000100006216A002400102008245F4E75F8 +S315E060EF90558F3F2F00064EB900E0B3A6588F7140FB +S315E060EFA02200E789224141F10A0043F900013D0C64 +S315E060EFB0203188004E7500004FEFFFF4226F001895 +S315E060EFC048D7001C206F001022290014262900046F +S315E060EFD02241202F001460187582A344B882660629 +S315E060EFE041E800FE6008D1C2B2886316D7905380CC +S315E060EFF04A806704141966E04A8057C0710044800D +S315E060F000600270BE4CD7001C4FEF000C4E754E563A +S315E060F010FFFC2F0B2F0A558F4267266E00102F2EAE +S315E060F02000084EB900E0B5BE508F4A806D36368036 +S315E060F030558F45F900E0D3BA486EFFFEA5673F00FD +S315E060F0404E924FEF000C4A806D1A558F2F2E000CB2 +S315E060F0504878001A3F134E924FEF000C4A805FC12A +S315E060F0607301C081246EFFF4266EFFF84E5E4E7526 +S315E060F0704E56FFB848D73C7C246E000842AEFFFC93 +S315E060F080266E000E202A000441EA01002D48FFE0CA +S315E060F090286B0004909222132D4CFFEC226B000843 +S315E060F0A0D9C14BF0C8000680FFFFFF00D1C12D41FA +S315E060F0B0FFE4362E000C2D49FFF42D6B000CFFF8B3 +S315E060F0C02D40FFDC2D4DFFF02D48FFE8B08C6D0044 +S315E060F0D000FE908CB3C06E0000F648780018486E6B +S315E060F0E0FFE0486A00084EB900E00EC45C8F4BF959 +S315E060F0F000E0D3BA2EAEFFE02F0C3F034E954FEF04 +S315E060F100000C24006D0000D24A6B0018660000C84F +S315E060F1104267206EFFF841E8001C3F034870C80074 +S315E060F1204EB900E0D30C508F24006D0000AC558FD3 +S315E060F130486EFFFCA9673F034E954FEF000C240035 +S315E060F1406D000096286EFFFC4A8C6756202EFFE025 +S315E060F15049F40800B08C627A2A2EFFF0BA8C6372AA +S315E060F160D194202A00049085280E2A000684FFFFA9 +S315E060F170FFDC2C3C00E0EFB8558F2F2EFFF02F051B +S315E060F1803F034E954FEF000C24006F122F042F00C3 +S315E060F1902F0C20464E904FEF000C24006EDA4A8228 +S315E060F1A06636A340C0AB00144A406706202EFFF4E3 +S315E060F1B06008202A000490AEFFF04A806F182F00A6 +S315E060F1C02F2EFFF04EB900E00DD8508F600874D94D +S315E060F1D0600674BE60024282558F3F034EB900E01E +S315E060F1E0B760588F20024CEE3C7CFFB84E5E4E75A1 +S315E060F1F04E56FFD048D71C04246E000849F900E05B +S315E060F2000EC4202A000441EA0102266800049092B6 +S315E060F21022102D4BFFF0342800180680FFFFFF0018 +S315E060F2202D680008FFF8D7C12D68000CFFFC2D4063 +S315E060F230FFE02F0B2D41FFE8200A06800000010069 +S315E060F24041F30800D280486A011C2F002D40FFE49C +S315E060F2502D48FFF42D41FFEC4E944FEF000C202E2D +S315E060F260FFE0B08B6D00008E908BB0AEFFF86D0066 +S315E060F270008448780018486EFFE4486A00084EB992 +S315E060F28000E00EC44FEF000C4A426670206EFFFC51 +S315E060F290202EFFE441E8001CD1CB41F00800265067 +S315E060F2A04A8B673447F30800B08B624C222EFFF43A +S315E060F2B0B28B6344D19324005888D4AE000C948812 +S315E060F2C02F022F082F014E94486EFFE02F022F0B7E +S315E060F2D04EBAFCE64FEF0018202EFFF4222A000417 +S315E060F2E092804A816F162F012F004EB900E00DD84B +S315E060F2F0508F600870D9600670BE600242804CEE46 +S315E060F3001C04FFD04E5E4E754FEFFFF030390001C2 +S315E060F31006A8322F001448D7003CD08133C00001E4 +S315E060F32006A873400C81000007CF6F0001080680D5 +S315E060F330FFFFF83033C0000106A8303900013D0A0E +S315E060F340721F741E5280C28033C000013D0AB481D0 +S315E060F350660000E278E0C0840680000000202200BB +S315E060F3600281000007E033C000013D0A0C81000025 +S315E060F3700780660000C00280FFFFF81F068000007D +S315E060F380080033C000013D0A02800000F8000C80EE +S315E060F3900000C0006600009E303900013CD0323C7F +S315E060F3A0001F4245143C001FC28033C500013D0A80 +S315E060F3B0B48167485280721F781CC28033C00001F6 +S315E060F3C03CD034007741B8836C6AEA8A7A0FC485A8 +S315E060F3D01A3C00027942BA84661202800000060096 +S315E060F3E04A406608701DB08366126048754241FA0D +S315E060F3F00184734171702A00B0816C383039000144 +S315E060F4003CD072E0C08106800000002122000281CB +S315E060F410000001E033C000013CD00C8100000180B7 +S315E060F4206F120280FFFFFE0006800000022133C0FB +S315E060F43000013CD04CD7003C4FEF00104E752F0AD0 +S315E060F4402F023F3C00174E4E548F42404840241FE7 +S315E060F450245F33C000013CD071404E754FEFFFF042 +S315E060F460720F48D7041C362F0014780C7143EA807B +S315E060F470C0817540B8826D50123C001F183C000296 +S315E060F480C283B882661224030282000006004A4202 +S315E060F49066067341701D600C714041FA00D8734195 +S315E060F4A071700A00B0816D2033C300013CD04843DF +S315E060F4B04243717900013D0A86802F033F3C001686 +S315E060F4C04E4E5C8F42806002A1404CD7041C4FEFE9 +S315E060F4D000104E752F0A2F023F3C00174E4E548F98 +S315E060F4E0241F33C000013D0A7140245F4E754FEF23 +S315E060F4F0FFF4701F48D7040C362F0010721DC083CE +S315E060F500B2806D4220030280000007E00C800000BC +S315E060F510077F6E32200302800000F8000C80000056 +S315E060F520BFFF6222717900013CD033C300013D0A1E +S315E060F53077434840424086802F033F3C00164E4E5C +S315E060F5405C8F42806002A1404CD7040C4FEF000C08 +S315E060F5504E754EBAFEEA33C000013CD04EBAFF7635 +S315E060F56033C000013D0A203C00E0F30823C0000000 +S315E060F57004004E750000001F001C001F001E001FE7 +S315E060F580001E001F001F001E001F001E001F00005F +S315E060F5904FEFFFEC302F001C322F001E206F00185B +S315E060F5A048D70C1C45E80020224A3600780977C324 +S315E060F5B086C1240348427742B8836C08068200001D +S315E060F5C000576006068200000030130271C080C1F9 +S315E060F5D066D8200A90892200538173C1244847F097 +S315E060F5E0180114D9B7CA66FA538071C04CD70C1C9F +S315E060F5F04FEF001441F0080120084E754FEFFFEC25 +S315E060F600206F0018736F002048D70C1C202F001C59 +S315E060F61045E80020224A260078094C4130027742CC +S315E060F620B8836C0806820000005760060682000018 +S315E060F630003013024C41000066DC200A908922000B +S315E060F640538173C1244847F0180114D9B7CA66FAE2 +S315E060F650538071C04CD70C1C4FEF001441F0080189 +S315E060F66020084E75286E756C6C2900004FEFFF44DC +S315E060F67048D77CFC260F2A0F246F00C00683000063 +S315E060F680003C266F00C406850000003D2C6F00C874 +S315E060F69042424BFAFF6849FAFEF8600A558F3F002E +S315E060F6A052824E92588F101B4880671673407825B9 +S315E060F6B0204BB88166E671137C2DBC80660002D66D +S315E060F6C0600C30024CD77CFC4FEF00BC4E757E017F +S315E060F6D052883F47003471107230B28066065288B5 +S315E060F6E078306002782042463F46002E10187E0948 +S315E060F6F04880264822000681FFFFFFD07DC1BE8696 +S315E060F70065043001600C73407C2ABC816616301655 +S315E060F710548E3C2F002ECDFC000A2E06DE803F473D +S315E060F720002E60C87C2EBC81662A424110187E0994 +S315E060F73048802648224043E9FFD07DC9BE86640CF6 +S315E060F7407D407E2ABE86660E3256548EC3FC000A23 +S315E060F750D28960D842417D407E6CBE8667081E3C99 +S315E060F760004CBE86660C1E13670C1007528B4880F1 +S315E060F770600491C86004307C00017F407C67BC8790 +S315E060F7806D427265B2876F00010E1C3C0055BC8706 +S315E060F7906700020C6D18123C0044B287670000AE49 +S315E060F7A01C3C004FBC8766000134600001F8726360 +S315E060F7B0B287670000EC6D0000907C58BC876600FD +S315E060F7C0011C60547C70BC8767346D127269B287C5 +S315E060F7D067761C3C006FBC8766000102603E7C7504 +S315E060F7E0BC8767161C3C0078BC8767341C3C00739A +S315E060F7F0BC87660000E8600000BA700A6024558F36 +S315E060F8003F3C00307E08783054824E923EBC0078B1 +S315E060F8104E92588F3F47002E7010600A7008600263 +S315E060F82070103208670E558F3F002E0E58872F16E0 +S315E060F8302F0360383F002E0E54873F162F034E94F9 +S315E060F840508F2C43600000AC3C0867282E0E58872A +S315E060F85020166C0C722D44801F41003C220560022C +S315E060F8602203558F3F3C000A2F002F014E954FEF44 +S315E060F870000C60CE30162E0E54874A406C0C7C2D00 +S315E060F880448022051F46003C600222033F3C000A9A +S315E060F8903F002F0160A87E3F1F47003C2E0E600EA2 +S315E060F8A030162E0E54874A40673E1F40003C782053 +S315E060F8B060302E0E58872C564A8E66044DFAFDA6A9 +S315E060F8C04A416604323C7FFF204E18102008528879 +S315E060F8D04A04671C53814A416CF060141F40003C47 +S315E060F8E02E0E2C432005600A78202C43200360020C +S315E060F8F078203C2F002E908E3F40003A9C80220676 +S315E060F90046817341D2819381CC814A6F0034665ED1 +S315E060F910220644812F4100343C0167527316204130 +S315E060F920722DB2886626734420417230B288661CB6 +S315E060F930558F3F3C002D528E52822F4000344E92BE +S315E060F940202F003453803F40003E588F558F3F0450 +S315E060F95052864E92588F4A4666F294AF0034600EF5 +S315E060F960101E558F528248803F004E92588F322F3C +S315E060F970003A53813F41003A6CE63C46600A558F57 +S315E060F9803F044E92538E588F300E66F2D4862C47E3 +S315E060F9906000FD1442413F4100346000FD3A700A68 +S315E060F9A06000FE8470086000FE7E000070FF42B971 +S315E060F9B000013EA433C0000106AE4EB900E0115C22 +S315E060F9C0424041F900E437A06002528073404AB099 +S315E060F9D01C0066F633C0000106AC4E754FEFFFECD7 +S315E060F9E048D70C1C282F0018424247F900E437A09C +S315E060F9F045F900E1C4D4603820733C002F102F0431 +S315E060FA004E92508F4A40662641F900E437A0207056 +S315E060FA103C0033C2000106AE58884CD70C1C23D09C +S315E060FA2000013EA44FEF001460FFFFFF17325282E1 +S315E060FA3077427179000106ACB0836EBC42404CD728 +S315E060FA400C1C4FEF001433C0000106AE4E75716FAB +S315E060FA50000441F900E437A020700C0020104E75D8 +S315E060FA603039000106AC4E75667200646500666901 +S315E060FA700063730065730067720072750050726FA1 +S315E060FA806A6563742D49642D56657273696F6E3A63 +S315E060FA9020454D55544F5320626574610A504F546A +S315E060FAA02D4372656174696F6E2D446174653A20A9 +S315E060FAB0323030342D30312D32372031343A3337ED +S315E060FAC02B303130300A504F2D5265766973696F4D +S315E060FAD06E2D446174653A20323030342D30312DEC +S315E060FAE032372031343A34312B303130300A4C61A0 +S315E060FAF073742D5472616E736C61746F723A204CDC +S315E060FB00617572656E7420566F67656C203C6C76C5 +S315E060FB106C40636C75622D696E7465726E65742E89 +S315E060FB2066723E0A4C616E67756167652D54656104 +S315E060FB306D3A204672656E6368203C6672406C6919 +S315E060FB402E6F72673E0A4D494D452D566572736953 +S315E060FB506F6E3A20312E300A436F6E74656E742D87 +S315E060FB60547970653A20746578742F706C61696E4B +S315E060FB703B20636861727365743D49534F2D383835 +S315E060FB8035392D310A436F6E74656E742D5472612A +S315E060FB906E736665722D456E636F64696E673A2053 +S315E060FBA0386269740A005B315D5B43657474652035 +S315E060FBB06170706C69636174696F6E206E27612035 +S315E060FBC070617320617373657A2064657C706C61C3 +S315E060FBD0636520706F7572206F75767269722075D5 +S315E060FBE06E20617574726520646F63756D656E74A1 +S315E060FBF02E7C4665726D657A2064657320646F63FA +S315E060FC00756D656E747320696E7574696C697382FF +S315E060FC107320706F75727C6C696282726572206443 +S315E060FC2065206C6120706C6163652E5D5B20204FA2 +S315E060FC304B20205D0020204E6F75766561752064EF +S315E060FC406F73736965722E2E2E004E6F6D2064653C +S315E060FC5020646F73736965723A205F5F5F5F5F5FB1 +S315E060FC605F5F2E5F5F5F00256C64206B4200656EB0 +S315E060FC707472657A206C65732076616C65757273F3 +S315E060FC8020646520706172616D8A7472657320713B +S315E060FC90756900537973748A6D652073746F7070DB +S315E060FCA082210A005B335D5B4482736F6C822C2039 +S315E060FCB06D61697320766F7573206E6520706F7500 +S315E060FCC076657A20706C7573206C6F6765727C649C +S315E060FCD06520646F737369657220737570706C828A +S315E060FCE06D656E74616972652064616E73206C65C2 +S315E060FCF07C646F737369657220656E20636F75727D +S315E060FD00732E20436F6E73756C74657A206C617CBC +S315E060FD10646F63756D656E746174696F6E20706F24 +S315E060FD207572206C6573206C696D69746573207398 +S315E060FD3075727C6C27696D627269636174696F6EF6 +S315E060FD402064657320646F7373696572732E5D5B9F +S315E060FD50416E6E756C65725D0043728282206C6581 +S315E060FD603A20205F5F2D5F5F2D5F5F2020002020BF +S315E060FD70747269657220706172207461696C6C6519 +S315E060FD8000434F4E464C4954204445204E4F4D204B +S315E060FD904C4F5253204445204C4120434F504945F7 +S315E060FDA0004D6F6469666982206C653A20205F5F0A +S315E060FDB02F5F5F2F5F5F0028706C7573206465202E +S315E060FDC064827461696C732064616E7320646F63CE +S315E060FDD02F6C6963656E63652E74787429006C6553 +S315E060FDE0206E6F6D20647520646F73736965722031 +S315E060FDF0852063728265722E004C6972652F82631C +S315E060FE007269726500505245464552454E434553C8 +S315E060FE10005669746573736520646F75626C652DF1 +S315E060FE20636C69633A002020507282668272656E06 +S315E060FE306365732E2E2E00506172616D8A747265F1 +S315E060FE40733A20205F5F5F5F5F5F5F5F5F5F5F5F0B +S315E060FE505F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F6C +S315E060FE605F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5C +S315E060FE705F5F5F5F5F5F5F5F0048657572652064C7 +S315E060FE80652064826D61727261676500434F5049B7 +S315E060FE9045522044455320444F53534945525300FD +S315E060FEA02020536175766572206C65206275726597 +S315E060FEB06175002020566F697220636F6D6D6520F5 +S315E060FEC074657874650044826275742082637261D9 +S315E060FED06E00496E7382726572206C652064697328 +S315E060FEE07175652064652064826D617272616765B3 +S315E060FEF02047454D00494E464F524D4154494F4E7D +S315E060FF005320444953515545006C276963936E65A8 +S315E060FF10206E6F757665617520646F73736965725F +S315E060FF202065742072656D706C6972206C65730013 +S315E060FF304F6374657473207574696C697382733A20 +S315E060FF4020205F5F5F5F5F5F5F5F5F5F005B325D8B +S315E060FF505B4365747465206170706C696361746934 +S315E060FF606F6E206E652070657574206C69726520B1 +S315E060FF706C65737C646F6E6E8265732064752064F5 +S315E060FF8069737175652064616E73206C65206C655C +S315E060FF9063746575722025633A2E7C4C65206469CE +S315E060FFA07371756520646F69742088747265206604 +S315E060FFB06F726D6174822C206C65206C656374650C +S315E060FFC075727C646F6974208874726520616C698F +S315E060FFD06D656E748220656E20636F7572616E7496 +S315E060FFE02065747C636F6E6E656374822085206CB9 +S315E060FFF0276F7264696E61746575722E5D5B416EC2 +S315E06100006E756C65727C456E636F72655D0020200E +S315E0610010496E666F73206275726561752E2E2E006C +S315E0610020416E6E756C65720066656E887472652088 +S315E0610030656E20636F7572732C20646F75626C6593 +S315E061004020636C697175657220737572005B315DF1 +S315E06100505B496D706F737369626C65206465206777 +S315E06100606C697373657220646973717565732C204D +S315E0610070646F63752D7C6D656E74732C20646F633C +S315E0610080756D656E7473206F752070706C696361F0 +S315E061009074696F6E73207375727C6C6520627572BC +S315E06100A06561752E20456E20726576616E63686561 +S315E06100B020696C732070657576656E747C88747280 +S315E06100C06520676C69737382732076657273206CE1 +S315E06100D06120636F726265696C6C652E5D5B202081 +S315E06100E04F4B20205D005B315D5B496C206E27796B +S315E06100F0206120706C757320617373657A20642763 +S315E061010065737061636520646973706F6E69626C53 +S315E0610110657C706F757220636F6E6669677572650F +S315E061012072206365747465206170706C6963617473 +S315E0610130696F6E2E20506F75727C6C696282726532 +S315E061014072206465206C2765737061636520766FE4 +S315E0610150757320646576657A207265746972657215 +S315E06101607C756E65206170706C69636174696F6ED0 +S315E06101702064826A8520636F6E66696775728265DF +S315E06101802E5D5B20204F4B20205D002020496E7361 +S315E061019074616C6C657220756E206C6563746575EF +S315E06101A0722E2E2E00506F757220637282657220F8 +S315E06101B0756E206E6F757665617520646F737369B0 +S315E06101C065722064616E73206C61005B335D5B45D3 +S315E06101D0727265757220444F53202325642E5D5BF0 +S315E06101E0416E6E756C65725D004F4B004E6F6D3A98 +S315E06101F020205F5F5F5F5F5F5F5F2E5F5F5F0043F2 +S315E06102006F6E6669726D6572206C6120636F70698D +S315E0610210653F00456D75544F532056657273696F3E +S315E06102206E005479706520646520435055005B31FA +S315E06102305D5B4C6120636F726265696C6C65206EB3 +S315E061024065207065757420706173208874726520AD +S315E0610250676C69737382657C64616E7320756E65C4 +S315E06102602066656E887472652E5D5B20204F4B203B +S315E0610270205D005B315D5B4C65206C656374657523 +S315E061028072207370826369666982206E2765786918 +S315E0610290737465207061732E7C56827269666965D6 +S315E06102A07A206C61206C6574747265206465206C7B +S315E06102B0656374657572207175657C766F7573209B +S315E06102C06176657A207361697369652E5D5B416EFE +S315E06102D06E756C65725D004E6F6E004F6E00442EFA +S315E06102E0206475720045666665747320736F6E6F20 +S315E06102F07265733A004174747269627574733A0037 +S315E06103004C6574747265206465206C6563746575AB +S315E0610310723A20205F3A004F757665727475726540 +S315E061032020646573206D656E75733A004C61626534 +S315E06103306C206465206469737175653A20205F5F3E +S315E06103405F5F5F5F5F5F5F5F5F005B335D5B556E06 +S315E061035065206572726575722073276573742070A6 +S315E0610360726F647569746520617665637C6C276517 +S315E06103706E7669726F6E6E656D656E7420677261B9 +S315E06103807068697175652047454D2E7C4D65726370 +S315E06103906920646520706F7274657220636520629E +S315E06103A06F6775652085206C617C636F6E6E6169D0 +S315E06103B07373616E6365206465206C27827175690C +S315E06103C070652064657C648276656C6F7070656D5E +S315E06103D0656E74206427456D75544F532E5D5B41A0 +S315E06103E06E6E756C65725D00456C826D656E74737B +S315E06103F0208520656666616365723A20205F5F5F8E +S315E06104005F005461696C6C6520656E206F6374652D +S315E061041074733A20205F5F5F5F5F5F5F5F5F5F007E +S315E06104204C656374657572733A005B315D5B566FFB +S315E0610430747265206F7264696E6174657572206E3F +S315E061044027612070617320737566666973616D6D8E +S315E0610450656E747C6465206D826D6F69726520700E +S315E06104606F757220666169726520746F75726E650B +S315E0610470727C6C276170706C69636174696F6E2000 +S315E06104807370826369666982652E5D5B20204F4B7E +S315E061049020205D002020436F6E6669677572652076 +S315E06104A0756E65206170706C69636174696F6E2EDB +S315E06104B02E2E006170706C69636174696F6E005BAA +S315E06104C0335D5B4D617576616973206E756D8272C0 +S315E06104D06F20646520666F6E6374696F6E5D5B4104 +S315E06104E06E6E756C65725D005B335D5B566F7472E3 +S315E06104F065206F7264696E6174657572206E2761DD +S315E06105002070617320737566666973616D6D656E82 +S315E0610510747C6465206D826D6F69726520706F753C +S315E06105207220666169726520746F75726E6572209C +S315E06105306C657C6275726561752047454D2E5D5BC4 +S315E06105404482736F6C825D00454646414345522065 +S315E061055044455320444F53534945525300494E460F +S315E06105604F524D4154494F4E5320444F53534945A1 +S315E061057052004A4A2D4D4D2D4141004E6F6D20642A +S315E061058065206C6120636F7069653A205F5F5F5FCC +S315E06105905F5F5F5F2E5F5F5F00496E7374616C6C76 +S315E06105A0657200436F6E6669726D65722082637211 +S315E06105B06173656D656E743F004661737452414D5A +S315E06105C0206C6962726500466F726D617420646168 +S315E06105D074653A004F555652495220554E45204171 +S315E06105E050504C49434154494F4E005B325D5B4349 +S315E06105F065747465206170706C69636174696F6E4E +S315E0610600206E6520706575742074726F757665729B +S315E06106107C6C6520646F7373696572206F75206C9D +S315E06106206520646F63756D656E742071756520769E +S315E06106306F75737C74656E74657A2064276F757601 +S315E06106407269722E20568272696669657A206C6576 +S315E0610650206E6F6D7C71756520766F75732061763E +S315E0610660657A2073616973692E5D5B20204F4B204B +S315E0610670205D0053746F70004C656374757265201C +S315E06106807365756C65004E6F6D2061637475656C3D +S315E06106903A20205F5F5F5F5F5F5F5F2E5F5F5F0056 +S315E06106A05B335D5B566F7573206E6520706F757633 +S315E06106B0657A2070617320636F7069657220756E0B +S315E06106C020646F73736965727C85206C27696E74CB +S315E06106D0827269657572206427756E20646F7373C3 +S315E06106E069657220636F6E74656E75207061727C88 +S315E06106F063656C75692D63692E5D5B20204F4B20C8 +S315E0610700205D005B335D5B4C65206E6F6D206465DB +S315E061071020646F7373696572206482706173736557 +S315E0610720206C65206E6F6D6272657C6D6178696D56 +S315E0610730756D206465206361726163748A72657345 +S315E06107402E20436F6E73756C74657A206C617C6480 +S315E06107506F63756D656E746174696F6E20706F75C8 +S315E061076072206C6573206C696D697465732073754D +S315E061077072206C657C6E6F6D627265206465206364 +S315E061078061726163748A7265732E5D5B20204F4B83 +S315E061079020205D004963936E653A003132206865D9 +S315E06107A075726573005B315D5B4C65206275726580 +S315E06107B061752047454D206E276120706C75732009 +S315E06107C064652066656E887472657C646973706F52 +S315E06107D06E69626C652E204665726D657220756E16 +S315E06107E0652066656E887472657C696E7574696C20 +S315E06107F069738265206176616E742064276F7576B0 +S315E061080072697220756E206469737175652E5D5BC0 +S315E061081020204F4B20205D004469737175657474C7 +S315E061082065002042757265617520004C278271759D +S315E061083069706520646520648276656C6F70656D4C +S315E0610840656E74206427456D75544F5300456C821F +S315E06108506D656E7473208520636F706965723A2089 +S315E0610860205F5F5F5F0020466963686965722000AB +S315E0610870256C64206F6374657473207574696C6943 +S315E06108807382732070617220256420826C826D654B +S315E06108906E74732E004E6F6D2064276170706C69A3 +S315E06108A0636174696F6E3A20205F5F5F5F5F5F5F70 +S315E06108B05F2E5F5F5F004E6F757620446F7373697D +S315E06108C0657200546F75636865204354524C203DF0 +S315E06108D03E207061732064274155544F2F41434355 +S315E06108E0002020496E666F2F52656E6F6D6D657281 +S315E06108F02E2E2E00426173822073757220646573B9 +S315E061090020736F75726365732047504C2D697382EE +S315E06109106573005B315D5B496C206578697374650D +S315E06109202064826A8520756E20826C826D656E7444 +S315E0610930206465206D886D65206E6F6D7C64616E87 +S315E061094073206C6520646F73736965722C206F75B3 +S315E0610950206C27826C826D656E7420657374206588 +S315E06109606E7C6C656374757265207365756C652EF6 +S315E0610970205574696C6973657A206C6120636F6D6B +S315E06109806D616E64657C22496E666F2F52656E6F2E +S315E06109906D6D65722220706F7572206368616E6736 +S315E06109A06572206C27827461747C6465206C278231 +S315E06109B06C826D656E742E5D5B20204F4B20205DF1 +S315E06109C0006368616D7073206475206469616C6F42 +S315E06109D067756520717569206170706172618C748B +S315E06109E020617665630032342068657572657300EF +S315E06109F02020747269657220706172207479706505 +S315E0610A0000547970652064276170706C6963617404 +S315E0610A10696F6E3A00436C6963005479706573205F +S315E0610A20646520646F63756D656E743A00546170D8 +S315E0610A3065722027432720706F7572206C616E6343 +S315E0610A406572206C6120636F6E736F6C65004C65D7 +S315E0610A5074747265206465206C6563746575723A59 +S315E0610A6020205F004F6666004E4F555620444F5337 +S315E0610A7053494552002020436F6E736F6C652020A9 +S315E0610A80202020202020205E5A00434F4E464947D1 +S315E0610A905552455220554E45204150504C494341AF +S315E0610AA054494F4E0020204368616E676572206C41 +S315E0610AB061207282736F6C7574696F6E202020207D +S315E0610AC02007430053542D52414D206C6962726593 +S315E0610AD0002020466F726D617465722E2E2E0020A5 +S315E0610AE020456666616365722E2E2E00202046657E +S315E0610AF0726D657200746F757465206C61206D82CC +S315E0610B006D6F6972653F004F7569002020566F69A8 +S315E0610B107220636F6D6D65206963936E65730043E3 +S315E0610B206F7079726967687420286329004C656320 +S315E0610B3074657572732047454D444F5300494E467F +S315E0610B404F204E4F555645415520444F53534945E5 +S315E0610B505200446F737369657273208520636F70A9 +S315E0610B606965723A20205F5F5F5F00494E464F528A +S315E0610B704D4154494F4E53202F2052454E4F4D4DD6 +S315E0610B804552005B335D5B4C6520666F726D6174E7 +S315E0610B90616765207661204546464143455220744A +S315E0610BA06F75746573206C65737C646F6E6E826558 +S315E0610BB073207175692073652074726F7576656EE1 +S315E0610BC07420737572206C65206C656374657572EB +S315E0610BD07C25633A2E20436C697175657A2073755D +S315E0610BE07220416E6E756C657220736920766F75E1 +S315E0610BF073206E657C766F756C657A2070617320A3 +S315E0610C007065726472652063657320646F6E6E826F +S315E0610C1065732E5D5B20204F4B20207C416E6E75A7 +S315E0610C206C65725D00204F7074696F6E7320004E63 +S315E0610C306F6D62726520646520646F737369657256 +S315E0610C40733A2020205F5F5F5F5F0053454C454309 +S315E0610C5054455552005B325D5B4C65206C6563744F +S315E0610C606575722025633A206E65207282706F6EBB +S315E0610C7064207061732E20496E738272657A7C6C32 +S315E0610C806520626F6E2074797065206465206469A1 +S315E0610C90737175652064616E73206C65206C656344 +S315E0610CA0746575722E7C5369206C652070726F6213 +S315E0610CB06C8A6D65206573742073757220756E201C +S315E0610CC0646973717565206475722C7C768272696C +S315E0610CD06669657A206C657320636F6E6E657869A7 +S315E0610CE06F6E73206475206469737175652E5D5BE3 +S315E0610CF0416E6E756C65727C456E636F72655D00A3 +S315E0610D005B335D5B436C697175657A2073757220DF +S315E0610D104F4B20736920766F7573208874657320F5 +S315E0610D20739672207175657C766F757320766F75D3 +S315E0610D306C657A206566666163657220544F5554C9 +S315E0610D404553206C657320646F6E6E8265737C704B +S315E0610D50728273656E74657320737572206C65203B +S315E0610D606469737175652025633A2E7C53696E6F8C +S315E0610D706E20636C697175657A2073757220416E58 +S315E0610D806E756C65722E5D5B20204F4B20207C4139 +S315E0610D906E6E756C65725D005B315D5B4C27696398 +S315E0610DA0936E65206465206C6120636F726265692C +S315E0610DB06C6C65207065757420887472657C64827C +S315E0610DC0706C6163826520737572206C65206275F3 +S315E0610DD0726561752C206D61697320706173206144 +S315E0610DE0757C646573737573206427756E652061C0 +S315E0610DF075747265206963936E652E5D5B20204F25 +S315E0610E004B20205D0052657469726572005B315DED +S315E0610E105B4C6520646F63756D656E742073826C7F +S315E0610E20656374696F6E6E82206E27657374207078 +S315E0610E3061737C636F6E66696775728220706F75C8 +S315E0610E407220756E65206170706C69636174696F3B +S315E0610E506E7C706172746963756C698A72652E20E5 +S315E0610E605574696C69736572206C6120636F6D6D31 +S315E0610E70616E64657C22436F6E6669677572652033 +S315E0610E806170706C69636174696F6E2220706F75F1 +S315E0610E9072206173736F636965727C6365207479CF +S315E0610EA0706520646520646F63756D656E74208519 +S315E0610EB020756E65206170706C69636174696F6ECF +S315E0610EC02E5D5B20204F4B20205D0053826C656375 +S315E0610ED074696F6E3A20205F5F5F5F5F5F5F5F2E71 +S315E0610EE05F5F5F0054797065206465206C6563744B +S315E0610EF06575723A005B325D5B4C65207082726942 +S315E0610F00706882726971756520646520736F727449 +S315E0610F106965206E65207265876F6974207061739B +S315E0610F207C646520646F6E6E8265732E20417661A6 +S315E0610F306E74206465207282657373617965722C63 +S315E0610F4020768272696669657A7C717565206C6501 +S315E0610F5020708272697068827269717565206573E5 +S315E0610F607420616C696D656E74822C7C636F6E6EE4 +S315E0610F70656374822085206C276F7264696E617423 +S315E0610F806575722065742063686172678220656E3B +S315E0610F907C706170696572206F7520656E20666927 +S315E0610FA06C6D2E5D5B416E6E756C65727C456E63D4 +S315E0610FB06F72655D005B315D5B566F757A206E655C +S315E0610FC020706F7576657A207061732064827472C1 +S315E0610FD0756972657C6C6520646F7373696572208F +S315E0610FE0636F7572616E742E5D5B20204F4B2020BE +S315E0610FF05D005B335D5B506F75722073617576651D +S315E061100072206C65206275726561752C20696E73FC +S315E061101082726572206C657C646973717565204264 +S315E061102055524541552047454D2064616E73206CAC +S315E061103065206C65637465757220413A2065747CE0 +S315E0611040636C697175657220737572204F4B2E20E2 +S315E0611050436C697175657A2073757220416E6E7540 +S315E06110606C65722073697C766F7573206E65207628 +S315E06110706F756C657A2070617320736175766572E0 +S315E0611080206C65206275726561752E5D5B20204F0F +S315E06110904B20207C416E6E756C65725D005B315DE7 +S315E06110A05B496D706F737369626C6520646520740A +S315E06110B0726F75766572206C652070726F677261AA +S315E06110C06D6D657C464F524D41542E2053692076B5 +S315E06110D06F7573207574696C6973657A20756E20B6 +S315E06110E0737973748A6D6520857C64657578206C27 +S315E06110F0656374657572732064652064697371757F +S315E061110065747465732C20766F7573206465766596 +S315E06111107A7C666F726D61746572206465707569FB +S315E061112073206C61206469737175657474652044BC +S315E06111304F532E2053697C766F7573206176657A9D +S315E061114020756E20646973717565206475722C20F3 +S315E0611150636F7069657A20464F524D41547C737571 +S315E061116072206C6120726163696E652064752064CA +S315E06111706973717565206475722E5D5B20204F4BD6 +S315E061118020205D0050617320646520636C696300B3 +S315E06111905B315D5B4C6120636F726265696C6C6546 +S315E06111A020657374206C27656E64726F697420764E +S315E06111B06572737C6C657175656C20676C69737358 +S315E06111C0657220646973717565732C20646F7373DE +S315E06111D0696572732C7C646F63756D656E7473207B +S315E06111E06574206170706C69636174696F6E732098 +S315E06111F0857C648274727569726520444546494EA0 +S315E061120049544956454D454E54215D5B20204F4B2F +S315E061121020205D00203C53686966743E20706F75DE +S315E061122072206D61696E74656E69722063657420A2 +S315E0611230826372616E2000494E5354414C4C455273 +S315E061124020554E204C45435445555200446F7373C7 +S315E061125069657273208520656666616365723A20A9 +S315E0611260205F5F5F5F005B325D5B4C657320646F3F +S315E06112706E6E82657320647520646973717565202D +S315E061128025633A2070657576656E7420887472653B +S315E06112907C616C7482728265732E205574696C69A7 +S315E06112A073657A206C6520626F6E20747970652053 +S315E06112B064657C646973717565747465206F7520A6 +S315E06112C0768272696669657A206C657320636F6E92 +S315E06112D06E656374696F6E737C647520646973713E +S315E06112E07565206475722E5D5B416E6E756C6572B7 +S315E06112F07C456E636F72655D0020204665726D6543 +S315E061130072206C612066656E88747265005B335D20 +S315E06113105B4C65206275726561752047454D206E4F +S315E06113206520706575742074726F757665727C443C +S315E061133045534B4C4F2E49434E2C204445534B4825 +S315E0611340492E49434E2C206F75204445534B544FEB +S315E0611350502E494E467C64616E73206C65206368ED +S315E0611360656D696E20646520726563686572636840 +S315E06113706520444F532E204365737C6669636869D3 +S315E061138065727320736F6E74206E826365737361C9 +S315E06113906972657320706F7572206C616E636572D8 +S315E06113A07C6C65206275726561752047454D2E5D81 +S315E06113B05B416E6E756C65725D004E6F6D627265F6 +S315E06113C0206427826C826D656E74733A20205F5F5C +S315E06113D05F5F5F00456D75544F532065737420649C +S315E06113E0697374726962758220736F7573206C6953 +S315E06113F063656E63652047504C005B315D5B4365B9 +S315E061140020646973717565206E2761207061732050 +S315E0611410617373657A2064276573706163652070B3 +S315E06114206F75727C6C657320646F6E6E8265732016 +S315E061143071756520766F75732074656E74657A2053 +S315E0611440646520636F706965722E7C4E82616E6D34 +S315E06114506F696E73206365727461696E7320826C05 +S315E0611460826D656E74732070657576656E747C6188 +S315E0611470766F69722082748220636F7069827320ED +S315E0611480737572206C65206469737175652E5D5B39 +S315E061149020204F4B20205D002052616E67656D65AF +S315E06114A06E742000546F7563686520414C54203D2D +S315E06114B03E2070617320646520646973717565208F +S315E06114C064757200202074726965722070617220A1 +S315E06114D064617465004D4D2D4A4A2D4141002020DD +S315E06114E04F757672697200466F726D6174206865D8 +S315E06114F07572653A00202054726965722070617276 +S315E0611500206E6F6D002020417272887465722020B2 +S315E0611510202020202020205E51004D616368696EA5 +S315E0611520650056657273696F6E00456E7472657AB1 +S315E0611530206C65206E6F6D20647520646F63756DD8 +S315E0611540656E74208520636861726765722C206FB1 +S315E06115507500636F6E7669656E6E656E7420706F29 +S315E06115607572206365747465206170706C6963611E +S315E061157074696F6E2E005B335D5B506F7572206CC4 +S315E0611580616E636572206C65206275726561752056 +S315E061159047454D2C20696E738272657A206C617C59 +S315E06115A06469737175657474652042555245415538 +S315E06115B02047454D2064616E73206C65206C6563E0 +S315E06115C07465757220417C657420636C69717565BB +S315E06115D07A20737572204F4B206F7520617070753C +S315E06115E0796572207375727C456E747282652E20A0 +S315E06115F0506F757220726576656E697220617520CD +S315E0611600444F5320636C6971756572207375727CA2 +S315E0611610416E6E756C65722E5D5B20204F4B2020AE +S315E06116207C416E6E756C65725D00646F63756D6548 +S315E06116306E7473004F637465747320646973706F5D +S315E06116406E69626C65733A20205F5F5F5F5F5F5FC3 +S315E06116505F5F5F005B325D5B566F7573206E652021 +S315E0611660706F7576657A20826372697265207375CB +S315E061167072206C65206469737175652064757C6C34 +S315E06116806563746575722025633A206361722069CA +S315E06116906C206573742070726F748267827C706887 +S315E06116A07973697175656D656E7420656E208263A7 +S315E06116B07269747572652E205265746972657A20F5 +S315E06116C06C617C70726F74656374696F6E2061764C +S315E06116D0616E742064652072826573736179657287 +S315E06116E02E5D5B416E6E756C65727C456E636F7285 +S315E06116F0655D005B315D5B496D706F737369626CEB +S315E0611700652064276F7576726972206C27696393C9 +S315E06117106E65206465206C617C636F726265696C7D +S315E06117206C652E20506F75722065666661636572C1 +S315E061173020646973717565732C7C646F7373696515 +S315E061174072732C206669636869657273206F7520B0 +S315E06117506170706C69636174696F6E732C7C6C65C2 +S315E06117607320666169726520676C6973736572205F +S315E0611770737572206C6120636F726265696C6C650A +S315E06117802E5D5B20204F4B20205D005B325D5B551B +S315E06117906E20646F7373696572206465206D886D10 +S315E06117A065206E6F6D206578697374652064826A01 +S315E06117B0857C6F75206C65206469737175652065DC +S315E06117C0737420706C65696E2E205265636F6D6D02 +S315E06117D0656E63657A7C6176656320756E20617599 +S315E06117E0747265206E6F6D206F7520616E6E756CBB +S315E06117F0657A2065747C768272696669657A206C41 +S315E06118006120706C616365206469737175652064DC +S315E06118106973706F6E69626C652E5D5B416E6E7544 +S315E06118206C65727C456E636F72655D00436F6E6673 +S315E061183069726D6572206566666163656D656E7414 +S315E06118403F004C6162656C2064276963936E653A1B +S315E061185020205F5F5F5F5F5F5F5F5F5F5F5F005637 +S315E06118606575696C6C657A20826A656374657220F8 +S315E06118706C61206469737175657474652065742043 +S315E0611880746170657220454E545245450050726FE1 +S315E06118906A6563742D49642D56657273696F6E3A34 +S315E06118A020454D55544F5320626574610A504F543B +S315E06118B02D4372656174696F6E2D446174653A207A +S315E06118C0323030332D30382D32382032323A3431BD +S315E06118D02B303230300A504F2D5265766973696F1D +S315E06118E06E2D446174653A20323030352D30342DB9 +S315E06118F031312031353A30342B303230300A4C6177 +S315E061190073742D5472616E736C61746F723A2054A4 +S315E0611910686F6D61732048757468203C74686F7494 +S315E061192068794075736572732E736F7572636566F8 +S315E06119306F7267652E6E65743E0A4C616E6775619E +S315E061194067652D5465616D3A204765726D616E20FC +S315E06119503C6465406C692E6F72673E0A4D494D4540 +S315E06119602D56657273696F6E3A20312E300A436F78 +S315E06119706E74656E742D547970653A207465787409 +S315E06119802F706C61696E3B20636861727365743D4B +S315E061199049534F2D383835392D310A436F6E7465A9 +S315E06119A06E742D5472616E736665722D456E636FEA +S315E06119B064696E673A20386269740A005B315D5B1F +S315E06119C0446965736520416E77656E64756E6720FF +S315E06119D0686174206B65696E656E20506C61747ABE +S315E06119E020756D206E6F63687C65696E20776569C9 +S315E06119F0746572657320446F6B756D656E74207A7C +S315E0611A0075209466666E656E2E7C42697474652097 +S315E0611A106D6F6D656E74616E20756E62656E9474E0 +S315E0611A206967746520446F6B756D656E74657C730B +S315E0611A3063686C69659E656E20756D20506C617436 +S315E0611A407A207A7520736368616666656E2E5D5B82 +S315E0611A5020204F4B20205D0020204E657565722069 +S315E0611A604F72646E65722E2E2E004F72646E6572D1 +S315E0611A706E616D653A20205F5F5F5F5F5F5F5F2EDE +S315E0611A805F5F5F00616E206F6465722067696220E7 +S315E0611A9070617373656E646520506172616D6574C2 +S315E0611AA06572206681722064696500537973746535 +S315E0611AB06D20616E676568616C74656E210A005BB5 +S315E0611AC0335D5B4C65696465722070617373656EE5 +S315E0611AD0206B65696E65204F72646E6572206D6517 +S315E0611AE0687220696E206461737C616B7475656C84 +S315E0611AF06C65205665727A656963686E69732E20D6 +S315E0611B00496E666F726D6174696F6E656E20816232 +S315E0611B1065727C646965206D61782E20416E7A61BB +S315E0611B20686C20766F6E2076657273636861636850 +S315E0611B3074656C74656E204F72642D7C6E65726E31 +S315E0611B402062697474652064657220446F6B756D9B +S315E0611B50656E746174696F6E20656E746E65686DCD +S315E0611B60656E2E5D5B416262727563685D004572AA +S315E0611B707A657567743A20205F5F2D5F5F2D5F5FE1 +S315E0611B8020200020206E616368204772949E652064 +S315E0611B9020202020075A004E414D454E534B4F4E73 +S315E0611BA0464C494B54204245494D204B4F5049459F +S315E0611BB052454E005A756C65747A74206765846E19 +S315E0611BC0646572743A20205F5F2F5F5F2F5F5F000D +S315E0611BD0536965686520646F632F6C6963656E73CD +S315E0611BE0652E74787420668172206D656872006610 +S315E0611BF081722064656E206E6575656E204F7264D4 +S315E0611C006E657220616E676562656E2E004C657306 +S315E0611C102F5363687265696200564F5245494E5368 +S315E0611C2054454C4C554E47454E00446F7070656C5B +S315E0611C306B6C69636B726174653A002020566F72F2 +S315E0611C4065696E7374656C6C756E67656E2E2E2E46 +S315E0611C5000506172616D657465723A20205F5F5F05 +S315E0611C605F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F3D +S315E0611C705F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F2D +S315E0611C805F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F1D +S315E0611C905F00426F6F742D5A656974004B4F50490E +S315E0611CA0455245204F52444E4552202F20444154DF +S315E0611CB04549454E00202053696368657265204455 +S315E0611CC065736B746F7020202020202020202020F7 +S315E0611CD0200756002020416C7320546578742020DB +S315E0611CE02007530042696C6473636869726D2061B1 +S315E0611CF0620047454D2053746172742D4469736B7C +S315E0611D00657474652065696E6C6567656E004C41E6 +S315E0611D1055465745524B532D494E464F524D4154C8 +S315E0611D20494F4E006B6C69636B656E20756E64201E +S315E0611D3064616E6E2064656E206E616368666F6C69 +S315E0611D4067656E64656E0042797465732062656C81 +S315E0611D506567743A20205F5F5F5F5F5F5F5F5F5FCC +S315E0611D60005B325D5B446965736520416E77656EE4 +S315E0611D7064756E67206B616E6E206B65696E65205A +S315E0611D80446174656E20766F6E7C4C6175667765CD +S315E0611D90726B2025633A206C6573656E2E20204454 +S315E0611DA06173204D656469756D206D7573737C66CD +S315E0611DB06F726D617469657274207365696E2C20EA +S315E0611DC0646173204C6175667765726B206D7573BE +S315E0611DD073205374726F6D7C686162656E20756E97 +S315E0611DE064206573206D75737320616E2064656E22 +S315E0611DF020436F6D70757465727C616E6765736340 +S315E0611E00686C6F7373656E207365696E2E5D5B4199 +S315E0611E106262727563687C4E6F63686D616C5D006A +S315E0611E2020204465736B746F702D496E666F2E2E3C +S315E0611E302E202020004162627275636800626974D7 +S315E0611E40746520617566204E6575656E204F7264B6 +S315E0611E506E6572206F646572206461732049636F99 +S315E0611E606E005B315D5B4F72646E65722C20446F10 +S315E0611E706B756D656E746520756E642050726F6703 +S315E0611E8072616D6D65206B946E6E656E7C6E696375 +S315E0611E906874206175662064656D204465736B7452 +S315E0611EA06F7020616267656C6567742077657264DF +S315E0611EB0656E2E7C53746174742064657373656EAC +S315E0611EC0206B946E6E656E20736965206175662020 +S315E0611ED065696E204C6175662D7C7765726B206BEA +S315E0611EE06F7069657274206F64657220696E2064D3 +S315E0611EF0656E204D816C6C65696D65727C67657731 +S315E0611F006F7266656E2077657264656E2E5D5B20C5 +S315E0611F10204F4B20205D005B315D5B45732069732B +S315E0611F2074206E6963682067656E756720667265A1 +S315E0611F306965722053706569636865727C766572FE +S315E0611F406681676261722C20756D2064696573656F +S315E0611F5020416E77656E64756E67207A757C6B6F0E +S315E0611F606E6669677572696572656E2E20556D205C +S315E0611F70506C61747A207A75207363686166666510 +S315E0611F806E2C7C6D7573732065696E6520766F72F4 +S315E0611F9068616E64656E6520416E77656E64756EC7 +S315E0611FA067207769656465727C656E746665726E75 +S315E0611FB0742077657264656E2E5D5B20204F4B20E1 +S315E0611FC0205D002020496E7374616C6C6965726591 +S315E0611FD0204C6175667765726B2E2E2E00556D20ED +S315E0611FE065696E656E206E6575656E204F72646EAD +S315E0611FF0657220616E7A756C6567656E2C20005B33 +S315E0612000335D5B444F532D4665686C6572202325CD +S315E0612010642E5D5B416262727563685D004E616DFF +S315E0612020653A20205F5F5F5F5F5F5F5F2E5F5F5F47 +S315E0612030004B6F7069657262657374847469677504 +S315E06120406E673F004350552D547970005B315D5B9F +S315E0612050446572204D816C6C65696D6572206B615A +S315E06120606E6E206E6963687420696E7C65696E6503 +S315E06120706D2046656E7374657220616267656C6535 +S315E061208067742077657264656E2E5D5B20204F4BC9 +S315E061209020205D005B315D5B446173206175736730 +S315E06120A0657784686C7465204C6175667765726B7B +S315E06120B0206578697374696572747C6E6963687446 +S315E06120C02E204269747465204C6175667765726B22 +S315E06120D0736275636873746162656E7C6E6F636803 +S315E06120E06D616C208162657270728166656E2E5D6E +S315E06120F05B416262727563685D004E65696E00415F +S315E06121006E00506C6174746500536F756E642D4535 +S315E06121106666656B74653A0041747472696275747A +S315E0612120653A004C6175667765726B736B656E6E69 +S315E0612130756E673A20205F3A004D656E8173206166 +S315E06121406E7A656967656E206265693A005B335DE3 +S315E06121505B496D2047454D206973742065696E2042 +S315E06121604665686C657220617566676574726574EB +S315E0612170656E2E7C42697474652065696E656E2054 +S315E06121804665686C65722D426572696368747C61E7 +S315E06121906E2064617320456D75544F5320546561BB +S315E06121A06D2073636869636B656E2E5D5B41626228 +S315E06121B0727563685D004D656469656E2D4C61623B +S315E06121C0656C3A20205F5F5F5F5F5F5F5F5F5F5F68 +S315E06121D0005A75206C94736368656E64652044612A +S315E06121E0746569656E3A205F5F5F5F004772949ED2 +S315E06121F06520696E2042797465733A20205F5F5F7E +S315E06122005F5F5F5F5F5F5F004C6175667765726BAD +S315E061221065005B315D5B44657220526563686E653E +S315E06122207220686174206E696368742067656E7593 +S315E0612230672053706569636865727C756D20646952 +S315E0612240652067657784686C746520416E77656E35 +S315E061225064756E67207A75207374617274656E2E2B +S315E06122605D5B20204F4B20205D0020204B6F6E662A +S315E0612270696775726965726520416E77656E6475C9 +S315E06122806E672E2E2E20074100416E77656E64756E +S315E06122906E67005B335D5B46616C736368652046C0 +S315E06122A0756E6B74696F6E736E756D6D6572202395 +S315E06122B05D5B416262727563685D005B335D5B4481 +S315E06122C0696573657220526563686E6572206861DF +S315E06122D074206E696368742067656E7567205370F4 +S315E06122E06569636865727C756D2064656E204745D6 +S315E06122F04D2D4465736B746F70207A7520737461CC +S315E06123007274656E2E5D5B204162627275636820F0 +S315E06123105D004C9953434845204F52444E45522007 +S315E06123202F204441544549454E004F52444E455253 +S315E06123302D494E464F524D4154494F4E0044442D2E +S315E06123404D4D2D5959004E616D6520646572204B86 +S315E06123506F7069653A20205F5F5F5F5F5F5F5F2EE9 +S315E06123605F5F5F00496E7374616C6C696572656E1F +S315E0612370009A6265727363687265696262657374B5 +S315E061238084746967756E673F004672656965732037 +S315E06123904661737452414D00446174756D73666F45 +S315E06123A0726D61743A009946464E4520414E5745F5 +S315E06123B04E44554E47005B325D5B44696520416E34 +S315E06123C077656E64756E67206B616E6E20646173AE +S315E06123D020676577816E73636874657C446F6B753E +S315E06123E06D656E74206F6465722064656E204F72F0 +S315E06123F0646E6572206E696368747C66696E646535 +S315E06124006E2E2042697474652064656E204E616D3E +S315E0612410656E208162657270728166656E2E5D5B46 +S315E061242020204F4B20205D004E7572204C65736510 +S315E06124306E00416B7475656C6C6572204E616D659D +S315E06124403A20205F5F5F5F5F5F5F5F2E5F5F5F0088 +S315E06124505B335D5B4D616E206B616E6E206E6963B1 +S315E061246068742065696E656E208162657267656F05 +S315E061247072646E6574656E7C4F72646E65722069B6 +S315E06124806E2065696E656E207365696E657220752D +S315E06124906E74657267656F72646E6574656E7C4F46 +S315E06124A072646E6572206B6F70696572656E2E5DC2 +S315E06124B05B20204F4B20205D005B335D5B4C6569A3 +S315E06124C06465722069737420646572204E616D651E +S315E06124D02064657320616B7475656C6C656E7C56A2 +S315E06124E065727A656963686E6973736573207A7517 +S315E06124F0206C616E672E2020496E666F726D617425 +S315E0612500696F6E656E7C8162657220646965206D56 +S315E06125106178696D616C65204C846E676520766F64 +S315E06125206E2044617465696E616D656E7C62697425 +S315E061253074652064657220446F6B756D656E746158 +S315E061254074696F6E20656E746E65686D656E2E5D1D +S315E06125505B2020204F4B2020205D0049636F6E2D6C +S315E06125605479703A003132205374642E005B315DE8 +S315E06125705B4465722047454D2D4465736B746F709E +S315E061258020686174206B65696E652077656974653D +S315E061259072656E7C46656E73746572206D65687290 +S315E06125A0207A757220566572668167756E672E2030 +S315E06125B04265766F722065696E7C7765697465726E +S315E06125C06573204C6175667765726B2062656E75C1 +S315E06125D0747A742077657264656E206B616E6E2CB9 +S315E06125E07C6D7573732065696E206F6666656E6571 +S315E06125F0732046656E737465722067657363686C94 +S315E06126006F7373656E7C77657264656E2E5D5B2054 +S315E0612610204F4B20205D004469736B6574746500DF +S315E0612620204465736B2000456D75544F5320456EAC +S315E0612630747769636B6C65722D5465616D005A756B +S315E0612640206B6F70696572656E646520446174655F +S315E061265069656E3A20205F5F5F5F00204461746563 +S315E0612660692000256C6420427974657320696E2067 +S315E06126702564204461746569656E2E00416E7765F7 +S315E06126806E64756E67736E616D653A20205F5F5F3C +S315E06126905F5F5F5F5F2E5F5F5F004E6575657220AE +S315E06126A04F72646E65720048616C7465203C537468 +S315E06126B072673E203D206F686E65204155544F2F0D +S315E06126C0414343002020496E666F2F8E6E646572CA +S315E06126D06E2E2E2E20200749004261736965726570 +S315E06126E06E6420617566205175656C6C656E2076E9 +S315E06126F06F6E005B315D5B45696E65204461746553 +S315E061270069206D69742064696573656D204E616DDC +S315E0612710656E206578697374696572747C736368E4 +S315E06127206F6E20696E2064696573656D204F7264B2 +S315E06127306E6572206F6465722064696520446174B8 +S315E061274065697C697374206E696368742062657318 +S315E06127506368726569626261722E2042656E757444 +S315E06127607A65206461737C22496E666F2F556D626E +S315E0612770656E656E6E656E22204B6F6D6D616E6422 +S315E06127806F20756D2064656E7C44617465692D5357 +S315E06127907461747573207A7520846E6465726E2EC9 +S315E06127A05D5B20204F4B20205D004469616C6F6763 +S315E06127B02061757366816C6C656E20756E642065EB +S315E06127C0696E656E204E616D656E003234205374BC +S315E06127D0642E0020206E6163682054797020202089 +S315E06127E020202020075000416E77656E64756E6724 +S315E06127F0732D547970656E3A004B6C69636B004476 +S315E06128006F6B756D656E742D547970656E3A0044C3 +S315E06128107281636B65202743272066817220646934 +S315E061282065204B6F6E736F6C65004C61756677659D +S315E0612830726B736B656E6E756E673A20205F0041F1 +S315E06128407573004E45554552204F52444E455200F0 +S315E0612850202053746172746520456D75434F4E2037 +S315E061286020205E5A004B4F4E4649475552494552E4 +S315E06128704520414E57454E44554E4700202041750F +S315E0612880666C9473756E6720846E6465726E2020E3 +S315E061289020202020202020200743004672656965BC +S315E06128A0732053542D52414D002020466F726D6165 +S315E06128B074696572656E2E2E2E0020204C947363CA +S315E06128C068656E2E2E2E20202020202007440020D1 +S315E06128D0205363686C69659E65004D6178696D61D9 +S315E06128E06C65722053706569636865723F004A6121 +S315E06128F0002020416C732049636F6E732020202095 +S315E0612900202007530047454D444F532D4C61756672 +S315E06129107765726B65004E455545204F52444E458D +S315E0612920522D494E464F524D4154494F4E005A75CC +S315E0612930206B6F70696572656E6465204F72646E57 +S315E061294065723A20205F5F5F5F0044415445492DDF +S315E0612950494E464F524D4154494F4E202F20554DD9 +S315E061296042454E454E4E454E005B335D5B466F726A +S315E06129706D6174696572656E206C947363687420C9 +S315E0612980616C6C6520496E666F726D6174696F6EBC +S315E0612990656E7C6175662064656D204D65646975FB +S315E06129A06D20696E204C6175667765726B20256373 +S315E06129B03A2E7C447281636B65204F4B206E757253 +S315E06129C02064616E6E2C2077656E6E20616C6C653D +S315E06129D073206175667C64696573656D204D6564B8 +S315E06129E069756D2067656C94736368742077657249 +S315E06129F064656E20646172662E5D5B20204F4B20BC +S315E0612A00207C416262727563685D00204F70746913 +S315E0612A106F6E656E2000416E7A61686C20646572E6 +S315E0612A20204F72646E65723A20202020205F5F5FDE +S315E0612A305F5F004155535741484C005B325D5B4CEB +S315E0612A406175667765726B2025633A20616E74778E +S315E0612A506F72746574206E696368742E20204573A5 +S315E0612A60206D7573737C64657220726963687469DD +S315E0612A706765204D656469656E7479702076657207 +S315E0612A8077656E6465742077657264656E2E7C57D2 +S315E0612A90656E6E206573207369636820756D206568 +S315E0612AA0696E656E2046657374706C617474656E8B +S315E0612AB02D4665686C65727C68616E64656C742CC4 +S315E0612AC020626974746520646965204B6162656C36 +S315E0612AD02070728166656E2E5D5B416262727563BE +S315E0612AE0687C4E6F63686D616C5D005B335D5B4214 +S315E0612AF065696D20447281636B656E20766F6E20C9 +S315E0612B004F4B2077657264656E20616C6C6520441D +S315E0612B106174656E7C6175662064656D204D656482 +S315E0612B2069756D20696E204C6175667765726B209B +S315E0612B3025633A2067656C94736368742E7C536F82 +S315E0612B406E73742062697474652041626272756342 +S315E0612B506820647281636B656E2E5D5B20204F4BEE +S315E0612B6020207C416262727563685D005B315D5B0A +S315E0612B70446572204D816C6C65696D6572206B612F +S315E0612B806E6E207A776172206175662064656D7C10 +S315E0612B904465736B746F7020756D68657267657394 +S315E0612BA063686F62656E2077657264656E2C20611D +S315E0612BB06265727C6572206B616E6E206E696368B8 +S315E0612BC074206175662065696E656D20616E646508 +S315E0612BD072656E20496B6F6E7C616267656C656775 +S315E0612BE0742077657264656E2E5D5B20204F4B20A5 +S315E0612BF0205D00456E746665726E656E0041757343 +S315E0612C007761686C3A202020205F5F5F5F5F5F5F7E +S315E0612C105F2E5F5F5F005B315D5B44617320617571 +S315E0612C207367657784686C746520446F6B756D65F1 +S315E0612C306E7420697374206B65696E65727C416E32 +S315E0612C4077656E64756E6720766F6D205479702056 +S315E0612C50686572207A7567656F72646E65742E7CDD +S315E0612C6042656E75747A6520646173204B6F6D6D34 +S315E0612C70616E646F20224B6F6E6669677572696516 +S315E0612C8072657C416E77656E64756E672220756DDF +S315E0612C902064656E20446F6B756D656E74656E2D2F +S315E0612CA05479702065696E65727C416E77656E6494 +S315E0612CB0756E67207A757A756F72646E656E2E5D74 +S315E0612CC05B20204F4B20205D004D656469656E2D6C +S315E0612CD05479703A005B325D5B4461732041757390 +S315E0612CE0676162652D476572847420656D7066847F +S315E0612CF06E6774206B65696E6520446174656E2EDE +S315E0612D007C566F722065726E657574656D20566569 +S315E0612D107273756368206269747465207369636848 +S315E0612D2065722D7C7374656C6C656E2C2064617361 +S315E0612D3073206573205374726F6D206861742C2003 +S315E0612D40616E6765736368616C7465747C6973747D +S315E0612D5020756E6420506170696572206861742EB9 +S315E0612D605D5B416262727563687C4E6F63686D61DB +S315E0612D706C5D005B315D5B4475206B616E6E737497 +S315E0612D80206E696368742064656E204F72646E6557 +S315E0612D9072206C94736368656E2C7C696E206465E1 +S315E0612DA06D20447520676572616465206172626554 +S315E0612DB069746573742E5D5B20204F4B20205D0046 +S315E0612DC05B335D5B556D20646965204465736B7447 +S315E0612DD06F702D45696E7374656C6C756E67656E43 +S315E0612DE0207A75207369636865726E2C7C6C6567A1 +S315E0612DF06520646965204465736B746F702D446901 +S315E0612E00736B2065696E20696E204C6175667765C6 +S315E0612E10726B20413A7C65696E20756E64206B6CDD +S315E0612E2069636B6520617566204F4B2E7C4B6C69DF +S315E0612E30636B652061756620416262727563682CB9 +S315E0612E4020756D206469652045696E7374656C6C87 +S315E0612E50756E67656E7C6E69636874207A752073DA +S315E0612E606F636865726E2E5D5B20204F4B20207C20 +S315E0612E70416262727563685D005B315D5B4B616E99 +S315E0612E806E2064617320464F524D41542D50726FEE +S315E0612E906772616D6D206E696368742066696E64E0 +S315E0612EA0656E2E7C426569207A77656920466C6F2E +S315E0612EB07070792D4C6175667765726B656E2062AF +S315E0612EC06974746520766F6E206465727C444F53D5 +S315E0612ED02D4469736B657474652061757320666FE3 +S315E0612EE0726D6174696572656E2E204973742065D1 +S315E0612EF0696E657C46657374706C61747465207621 +S315E0612F006F7268616E64656E2C20626974746520A7 +S315E0612F10464F524D41542E5052477C696E20646152 +S315E0612F2073206F626572737465205665727A65693E +S315E0612F3063686E6973206B6F70696572656E2E5D2D +S315E0612F405B4F4B5D004B65696E204B6C69636B0053 +S315E0612F505B315D5B496E2064656E204D816C6C65AD +S315E0612F60696D6572206B946E6E656E204C617566F7 +S315E0612F707765726B652C7C4F72646E65722C20444A +S315E0612F806F6B756D656E7465206F646572205072E6 +S315E0612F906F6772616D6D657C7665727363686F622A +S315E0612FA0656E2077657264656E2C20756D20736938 +S315E0612FB06520454E44479A4C5449477C7A75206C66 +S315E0612FC094736368656E215D5B20204F4B20205DC5 +S315E0612FD000494E5354414C4C49455245204C41556C +S315E0612FE0465745524B005A75206C94736368656E1B +S315E0612FF06465204F72646E65723A20205F5F5F5F41 +S315E0613000005B325D5B44696520446174656E206195 +S315E06130107566204C6175667765726B2025633A202B +S315E061302073696E64206576746C2E7C646566656B27 +S315E0613030742E204573206D75737320646965207203 +S315E0613040696368746967652041727420766F6E7C26 +S315E06130504469736B657474652076657277656E64D1 +S315E061306065742077657264656E20627A772E206476 +S315E061307069657C46657374706C61747465206D75A1 +S315E06130807373207269636874696720616E676573DB +S315E061309063686C6F7373656E7C7365696E2E5D5B79 +S315E06130A0416262727563687C4E6F63686D616C5D87 +S315E06130B00020205363686C69659E652046656E7382 +S315E06130C0746572005B335D5B4465722047454D20F4 +S315E06130D04465736B746F70206B616E6E20646965B5 +S315E06130E0204461746569656E7C4445534B4C4F2E53 +S315E06130F049434E2C204445534B48492E49434E2C77 +S315E0613100206F646572204445534B544F502E494EAF +S315E0613110467C6E6963687420696D20537563682DBA +S315E0613120506661642066696E64656E2E7C4469658D +S315E06131307365204461746569656E2077657264655F +S315E06131406E20756E626564696E67742062656E9401 +S315E0613150746967747C756D2064656E2047454D20A2 +S315E06131604465736B746F70207A752062656E7574F1 +S315E06131707A656E2E5D5B416262727563685D004180 +S315E06131806E7A61686C206465722044617465696514 +S315E06131906E3A20205F5F5F5F5F00456D75544F5308 +S315E06131A020697374206C697A656E736965727420DF +S315E06131B0756E746572206465722047504C005B31B0 +S315E06131C05D5B446965736573204D656469756D2002 +S315E06131D0686174206E696368742067656E756720DF +S315E06131E0506C61747A7C66817220616C6C65207A60 +S315E06131F075206B6F70696572656E64656E2044619A +S315E061320074656E2E7C45696E6967652073696E6467 +S315E06132102061626572206576656E7475656C6C2099 +S315E0613220617566206461737C4D656469756D206B5B +S315E06132306F706965727420776F7264656E2E5D5B1F +S315E061324020204F4B20205D0020416E7A65696765DD +S315E0613250200048616C7465203C416C743E203D20E1 +S315E06132606B65696E6520486172646469736B0020A1 +S315E0613270206E61636820446174756D202020202092 +S315E06132800754004D4D2D44442D595900202099662F +S315E0613290666E656E005A6569742D466F726D61740E +S315E06132A03A0020206E616368204E616D656E202074 +S315E06132B0202020074E00202053746F7070652053E4 +S315E06132C0797374656D2020205E5100526563686E86 +S315E06132D06572004769622064656E204E616D656E58 +S315E06132E020646573207A75209466666E656E6465A2 +S315E06132F06E20446F6B756D656E74657300416E77B4 +S315E0613300656E64756E6720616E2E005B335D5B553D +S315E06133106D2064656E204465736B746F70207A7599 +S315E0613320207374617274656E206269747465206479 +S315E061333069657C47454D204445534B544F50204485 +S315E061334069736B657474652065696E6C6567656ED6 +S315E061335020756E642064616E6E7C4F4B206F646590 +S315E06133607220456E74657220647281636B656E2E40 +S315E0613370204162627275636820647281636B656E17 +S315E06133802C7C756D207A7520444F53207A75728155 +S315E0613390636B7A756B656872656E2E5D5B20204F37 +S315E06133A04B20207C416262727563685D00446F6B9D +S315E06133B0756D656E746500427974657320667265D4 +S315E06133C0693A20205F5F5F5F5F5F5F5F5F5F005BC2 +S315E06133D0325D5B4D656469756D20696E204C617522 +S315E06133E0667765726B2025633A206B616E6E206E3F +S315E06133F0696368747C626573636872696562656EE8 +S315E06134002077657264656E2120566F722064656D02 +S315E06134107C6E8463687374656E20566572737563DA +S315E06134206820626974746520536368726569627362 +S315E0613430636875747A7C656E746665726E656E20B6 +S315E06134406F646572204D656469756D207765636843 +S315E061345073656C6E2E5D5B416262727563687C4E0C +S315E06134606F63686D616C5D005B315D5B44657220C5 +S315E06134704D816C6C65696D6572206B616E6E206EF7 +S315E0613480696368742067659466666E65747C776562 +S315E06134907264656E2E20556D2065696E656E204F8E +S315E06134A072646E6572206F6465722065696E657CB3 +S315E06134B04461746569207A75206C94736368656E9E +S315E06134C02C2065696E666163682064617320656E50 +S315E06134D0742D7C737072656368656E64652053797B +S315E06134E06D626F6C206175662064656E204D816CDE +S315E06134F06C65696D65727C7A696568656E2E5D5B22 +S315E061350020204F4B20205D005B325D5B4573206779 +S315E061351069627420626572656974732065696E6556 +S315E06135206E204F72646E6572206D69747C64696544 +S315E061353073656D204E616D656E206F6465722064A2 +S315E06135406173204D656469756D2069737420766F6A +S315E06135506C6C2E7C56657273756368652065696E01 +S315E0613560656E20616E646572656E204E616D656E35 +S315E0613570206F64657220647281636B657C4162620F +S315E06135807275636820756E64207072816665206409 +S315E0613590656E2066726569656E20506C61747A2E1F +S315E06135A05D5B2041626272756368207C204E6F6369 +S315E06135B0686D616C205D004C9473636862657374D9 +S315E06135C084746967756E673F0049636F6E2D4C6100 +S315E06135D062656C3A20205F5F5F5F5F5F5F5F5F5F41 +S315E06135E05F5F00426974746520466C6F7070792024 +S315E06135F0656E746E65686D656E2C2064616E6E20B5 +S315E061360052455455524E20647281636B656E00502B +S315E0613610726F6A6563742D49642D56657273696F5D +S315E06136206E3A2066690A504F542D4372656174693A +S315E06136306F6E2D446174653A20323030332D303807 +S315E06136402D32382032323A34312B303230300A5032 +S315E06136504F2D5265766973696F6E2D446174653A73 +S315E061366020323030352D31302D30322032333A311F +S315E0613670342B303330300A4C6173742D5472616E81 +S315E0613680736C61746F723A204565726F2054616D37 +S315E06136906D696E656E203C6565726F744073663EFA +S315E06136A00A4C616E67756167652D5465616D3A2097 +S315E06136B053756F6D690A4D494D452D56657273694E +S315E06136C06F6E3A20312E300A436F6E74656E742DDB +S315E06136D0547970653A20746578742F706C61696E9F +S315E06136E03B20636861727365743D49534F2D383889 +S315E06136F035392D310A436F6E74656E742D5472617E +S315E06137006E736665722D456E636F64696E673A20A6 +S315E0613710386269740A582D47656E657261746F72B5 +S315E06137203A204B426162656C20312E332E310A506C +S315E06137306C7572616C2D466F726D733A20206E7096 +S315E06137406C7572616C733D323B20706C7572616C45 +S315E06137503D286E20213D2031293B0A005B315D5BCE +S315E0613760536F76656C6C756B73656C6C61206569BE +S315E0613770206F6C6520726969747484768473746988 +S315E06137807C74696C616120757564656C6C652064D7 +S315E06137906F6B756D656E74696C6C652E2020546512 +S315E06137A0657C74696C61612073756C6B656D616C68 +S315E06137B06C6120646F6B756D656E7469742C7C6A7F +S315E06137C06F6974612065742074617276697473657A +S315E06137D02E5D5B20204F4B20205D002020557573C8 +S315E06137E069206B616E73696F2E2E2E004B616E736D +S315E06137F0696F6E206E696D693A20205F5F5F5F5F1A +S315E06138005F5F5F2E5F5F5F0061766174612C20743C +S315E0613810616920616E6E6120706172616D6574725D +S315E0613820656A612C005379737465656D6920707999 +S315E06138307384797465747479210A005B335D5B56D0 +S315E0613840616C6974657474617661737469206574B9 +S315E061385020766F69206C69738474847C75736561A5 +S315E06138606D706961206B616E73696F697461206EF9 +S315E0613870796B796973656E2073697384846E2E7C66 +S315E0613880446F6B756D656E74616174696F207365A4 +S315E06138906C69747484842072616A6F6974756B7320 +S315E06138A065747C6B616E73696F696C6C65206B6165 +S315E06138B06E73696F6964656E20736973846C6C8419 +S315E06138C02E5D5B4B756D6F615D004C756F74753A1E +S315E06138D020205F5F2D5F5F2D5F5F200020204B6FB3 +S315E06138E06B6F2020202020202020202020075A00F6 +S315E06138F04E494D494B4F4E464C494B5449204B4FEF +S315E061390050494F494E4E494E2041494B414E410047 +S315E06139105669696D656B7369206D757574657474E7 +S315E0613920753A20205F5F2F5F5F2F5F5F004C6973A1 +S315E061393084746965646F742C206B6174736F206441 +S315E06139406F632F6C6963656E73652E747874006A54 +S315E06139506F6E6B612068616C756174206C756F6404 +S315E0613960612E004C75652F4B69726A2E004D8E8E05 +S315E06139705249548E2041534554554B534554005456 +S315E061398075706C616B6C696B6B6175736E6F70652D +S315E061399075733A0020204D84847269748420617362 +S315E06139A06574756B7365742E2E2E00506172616D50 +S315E06139B065747269743A20205F5F5F5F5F5F5F5F26 +S315E06139C05F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5FC0 +S315E06139D05F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5FB0 +S315E06139E05F5F5F5F5F5F5F5F5F5F5F5F004B8479D4 +S315E06139F06E6E697374797361696B61004B4F50499F +S315E0613A004F494E204B414E53494F54202F20544944 +S315E0613A1045444F53544F5400202054616C6C657497 +S315E0613A206120747994709479748420202020202018 +S315E0613A302020202007560020204E8479748420744B +S315E0613A40656B7374696E842020202007530052757C +S315E0613A507564756E20616C6B75005379947484201E +S315E0613A6047454D20616C6F697475732D6C65767928 +S315E0613A706B65004C4556594E20544945444F5400B8 +S315E0613A80696B6F6E69696E206A612074847974848A +S315E0613A9020696C6D657374797684206469616C6F95 +S315E0613AA067690054617675613A205F5F5F5F5F5F6A +S315E0613AB05F5F5F5F005B325D5B536F76656C6C7514 +S315E0613AC073206569207079737479206C756B656DA7 +S315E0613AD061616E206173656D617373617C25633AC3 +S315E0613AE0206F6C6576696120746965746F6A612EB1 +S315E0613AF020204C6576796B6B65656E7C7069748444 +S315E0613B0084206F6C6C6120666F726D61746F69742D +S315E0613B10752C206173656D616E2070697484847C37 +S315E0613B206F6C6C61207084846C6C84206A61206641 +S315E0613B30797973697365737469206C69697465749D +S315E0613B4074797C746965746F6B6F6E656573656551 +S315E0613B5073692E5D5B4B756D6F617C557564656CE4 +S315E0613B606C65656E5D0020204F686A656C6D61739A +S315E0613B7074612E2E2E202020004B756D6F610069D9 +S315E0613B806B6B756E61616E2C207475706C612D6BFB +S315E0613B906C696B6B61612055757369204B616E73FE +S315E0613BA0696F005B315D5B457420766F6920766590 +S315E0613BB0748484206B616E73696F6974612C20749F +S315E0613BC06965646F73746F6A617C74616920736F30 +S315E0613BD076656C6C756B73696120747994709479B0 +S315E0613BE064846C6C652E2020566F69747C6B756994 +S315E0613BF074656E6B696E206B6F70696F6964612065 +S315E0613C006E69697484206C657679696C6C657C74BF +S315E0613C106169207665748484206E6520726F736B4A +S315E0613C20616B6F7269696E2E5D5B20204F4B202060 +S315E0613C305D005B315D5B54846D846E20736F766588 +S315E0613C406C6C756B73656E206D8484726974796B67 +S315E0613C507365656E206569206F6C657C72696974F0 +S315E0613C60748476847374692074696C61612E202032 +S315E0613C705661706175747461616B736573697C7447 +S315E0613C80696C61612C2073696E756E2070697484EC +S315E0613C908420706F6973746161206A6F6B696E7C91 +S315E0613CA074846C6C84206865746B656C6C84206D5F +S315E0613CB08484726974657479697374847C736F766C +S315E0613CC0656C6C756B73697374612E5D5B20204FF7 +S315E0613CD04B20205D0020204D848472697484206CC1 +S315E0613CE06576796173656D612E2E2E004C756F6414 +S315E0613CF0616B7365736920757564656E206B616E62 +S315E0613D0073696F6E206E796B79697365656E005B59 +S315E0613D10335D5B444F532D76697268652023256474 +S315E0613D202E5D5B4B756D6F615D004E696D693A2025 +S315E0613D30205F5F5F5F5F5F5F5F2E5F5F5F00566122 +S315E0613D40687669737461206B6F70696F696E7469A7 +S315E0613D503A00456D75544F532076657273696F000D +S315E0613D604350552D747979707069005B315D5B45BF +S315E0613D707420766F6920766574848420726F736BC4 +S315E0613D80616B6F7269617C696B6B756E61616E2E79 +S315E0613D905D5B20204F4B20205D005B315D5B416EBA +S315E0613DA074616D61617369206173656D61612065DF +S315E0613DB069206F6C652E20205461726B6973746142 +S315E0613DC07C616E74616D617369206173656D616E4D +S315E0613DD02074756E6E75732E5D5B4B756D6F615D8F +S315E0613DE0004569005084846C6C84004B6F76616C2D +S315E0613DF0657679008E846E696566656B7469743A19 +S315E0613E00004F6D696E61697375756465743A0041F9 +S315E0613E1073656D616E2074756E6E75733A20205FA1 +S315E0613E203A004D656E756A656E2061756B616973A1 +S315E0613E30753A005B335D5B47454D2D766972686522 +S315E0613E402E20204F74612079687465797474847C5E +S315E0613E50456D75544F532D6B6568697474846A69F1 +S315E0613E60696E206A6120616E6E617C7669726865F1 +S315E0613E707261706F727474692E5D5B4B756D6F61A3 +S315E0613E805D004C6576796E206E696D693A20205FDA +S315E0613E905F5F5F5F5F5F5F5F5F5F00546965646F30 +S315E0613EA073746F6A6120706F697374657474617637 +S315E0613EB0616E613A205F5F5F5F004B6F6B6F20748D +S315E0613EC0617675697373613A20205F5F5F5F5F5FFB +S315E0613ED05F5F5F5F004C6576796173656D61743ACA +S315E0613EE0005B315D5B4B6F6E656573736173692012 +S315E0613EF06569206F6C652072696974748476847310 +S315E0613F0074697C6D7569737469612076616C6974D5 +S315E0613F1073656D61736920736F76656C6C756B73D0 +S315E0613F20656E7C6B84796E6E697374796B73656546 +S315E0613F306E2E5D5B20204F4B20205D0020204D845E +S315E0613F40847269748420736F76656C6C75732E2EDA +S315E0613F502E20202020202020074100736F76656C9B +S315E0613F606C7573005B335D5B54756E74656D61741E +S315E0613F706F6E2066756E6B74696F6E756D65726F67 +S315E0613F8020235D5B4B756D6F615D005B335D5B4B04 +S315E0613F906F6E65657373617369206569206F6C65C2 +S315E0613FA02072696974748476847374697C6D7569E9 +S315E0613FB0737469612047454D2D7479947094796481 +S315E0613FC0846E7C6B84796E6E697374846D69736576 +S315E0613FD0656E2E5D5B2056616C6974616E205D0075 +S315E0613FE0504F495354414E204B414E53494F542013 +S315E0613FF02F20544945444F53544F54004B414E533F +S315E0614000494F4E20544945444F540050502D4B4B37 +S315E06140102D5656004B6F70696F6E206E696D693A09 +S315E061402020205F5F5F5F5F5F5F5F2E5F5F5F004185 +S315E061403073656E6E61005661687669737461207945 +S315E06140406C696B69726A6F697475733A005661700F +S315E06140506161204661737452414D00508469768492 +S315E061406079733A004156414120534F56454C4C5580 +S315E061407053005B325D5B536F76656C6C757320657F +S315E061408069206C947964842068616B656D69737489 +S315E06140906F61207461697C746965646F73746F6163 +S315E06140A02C206A6F746120797269748474206175F9 +S315E06140B06B61697374612E7C5461726B697374614F +S315E06140C020616E74616D617369206E696D692E5DE3 +S315E06140D05B20204F4B20205D005079738479748496 +S315E06140E0005661696E206C756B75004E796B796906 +S315E06140F06E656E206E696D693A20205F5F5F5F5F16 +S315E06141005F5F5F2E5F5F5F005B335D5B457420766B +S315E06141106F69206B6F70696F696461206B616E7343 +S315E0614120696F74612073656E7C6F6D69696E20611C +S315E06141306C696B616E73696F6968696E2E5D5B2030 +S315E0614140204F4B20205D005B335D5B416E74616D9A +S315E0614150617369206B616E73696F6E206E696D69FB +S315E061416020796C69747484847C73616C6C69747530 +S315E06141706E206D65726B6B696D848472846E2E7C64 +S315E0614180446F6B756D656E74616174696F2073659B +S315E06141906C69747484842072616A6F6974756B7317 +S315E06141A065747C6B616E73696F6964656E206E6957 +S315E06141B06D696C6C652E5D5B4F4B5D00496B6F6E37 +S315E06141C0697479797070693A0031322074756E7408 +S315E06141D06961005B315D5B47454D2074799470940C +S315E06141E07964846C6C6520656920766F6920617598 +S315E06141F06B61697374617C757365616D706961200A +S315E0614200696B6B756E6F6974612E2020456E6E65A4 +S315E06142106E206C6576796E7C61696B6169737561D7 +S315E06142202C2073756C6A65206A6F6B696E20696BA9 +S315E06142306B756E612C7C6A6F7461206574206B842A +S315E06142407974842E5D5B20204F4B20205D004C65A8 +S315E061425076796B650020456D75544F5320002020BB +S315E061426020456D75544F532D6B6568697474846A26 +S315E0614270847400546965646F73746F6A61206B6FEF +S315E061428070696F69746176616E613A20205F5F5F24 +S315E06142905F002041726B6973746F2000256C642046 +S315E06142A07461767561206B8479746574747920259F +S315E06142B06420746965646F73746F6F6E2E00536FFB +S315E06142C076656C6C756B73656E206E696D693A20A7 +S315E06142D0205F5F5F5F5F5F5F5F2E5F5F5F0055756A +S315E06142E07369206B616E73696F003C436E74726CC7 +S315E06142F03E20706F686A61737361203D206F686903 +S315E06143007461204155544F2F4143430020204E8430 +S315E061431079748420746965646F742E2E2E2020076B +S315E06143204900506F686A61757475752047504C2D08 +S315E06143306C846864656B6F6F6469696E3A005B3162 +S315E06143405D5B4B616E73696F737361206F6E206A3B +S315E06143506F20746965646F73746F20616E6E6574E6 +S315E0614360756C6C617C6E696D656C6C842074616979 +S315E0614370207365206F6E206B69726A6F69747573FD +S315E06143802D7C73756F6A617474752E204B847974B4 +S315E0614390842022546965646F742F4E696D65842249 +S315E06143A02D7C6B6F6D656E746F6120766169687483 +S315E06143B061616B736573692073656E2074696C61A5 +S315E06143C0612E5D5B20204F4B20205D00616E746144 +S315E06143D06D616C6C61206E696D69206B616E73698C +S315E06143E06F6C6C652C0032342074756E7469610093 +S315E06143F020205479797070692020202020202020A7 +S315E061440020075000536F76656C6C757374797970BB +S315E061441070693A004B6C696B6B6161005469656404 +S315E06144206F73746F7479797069743A005061696E0B +S315E06144306120274327207084847374846B7365736A +S315E061444069206B6F6E736F6C69696E004173656D40 +S315E0614450616E2074756E6E75733A20205F00506FE1 +S315E061446069730055555349204B414E53494F0020DE +S315E0614470204B84796E6E6973748420456D75434F04 +S315E06144804E205E5A004D8E8E5249548E20534F56C1 +S315E0614490454C4C5553002020566169686461207231 +S315E06144A065736F6C757574696F7461202020202067 +S315E06144B0202007430056617061612053542D5241BB +S315E06144C04D002020416C757374612E2E2E002020E4 +S315E06144D0506F697374612E2E2E20202020202020BB +S315E06144E020074400202053756C6A6500566172614D +S315E06144F061206B6F6B6F206D75697374693F004BFB +S315E0614500796C6C840020204E8479748420696B6FA9 +S315E06145106E65696E612007530047454D444F532DE3 +S315E06145206173656D617400555544454E204B414E4E +S315E061453053494F4E20544945444F54004B616E7385 +S315E0614540696F697461206B6F70696F6974617661B7 +S315E06145506E613A20205F5F5F5F00544945444F5486 +S315E0614560202F20555544454C4C45454E4E494D45C9 +S315E06145708E4D494E454E005B335D5B416C757374A0 +S315E0614580757320706F6973746161204B41494B4B60 +S315E06145904920746965646F747C6173656D61737478 +S315E06145A0612025633A2E20204B6C696B6B6161203B +S315E06145B04F4B3A74617C7661696E206A6F732074E1 +S315E06145C06965746F736920766F696461616E7C6831 +S315E06145D0847669747484842074846C7484206C65D4 +S315E06145E076796C74842E5D5B20204F4B20207C4B6A +S315E06145F0756D6F615D002041736574756B7365748C +S315E0614600200048616B656D6973746F6A613A202059 +S315E06146102020205F5F5F5F5F00544945444F5354FC +S315E06146204F4E2056414C494E5441005B325D5B41F1 +S315E061463073656D612025633A2065692076617374DF +S315E061464061612E202053696E756E20706974848471 +S315E06146507C6B847974748484206F696B65616E7434 +S315E06146607979707069737484206C6576796B657439 +S315E061467074847C6A61206C616974746161207365BC +S315E0614680206173656D61616E206F696B65696E2E20 +S315E061469020204A6F737C6F6E67656C6D61206B6F0E +S315E06146A0736B6565206B6F76616C657679842C20BA +S315E06146B07461726B697374617C73656E206C696930 +S315E06146C074846E6E84742E5D5B4B756D6F617C5523 +S315E06146D0756465737461616E5D005B335D5B4A6FE2 +S315E06146E073206F6C6574207661726D612C206574E0 +S315E06146F074842068616C7561747C706F69737461D0 +S315E061470061204B41494B4B4920746965646F742064 +S315E06147106C6576796C74847C6173656D6173736164 +S315E06147202025633A2C206B6C696B6B6161204F4B82 +S315E06147302E7C4D7575746F696E206B6C696B6B6100 +S315E061474061204B756D6F612E5D5B20204F4B2020A4 +S315E06147507C4B756D6F615D005B315D5B566F697456 +S315E0614760207369697274848420726F736B616B6F95 +S315E061477072696E206D7575616C6C657C47454D201F +S315E061478074799470947964846C6C8473692C206D0B +S315E0614790757474657420746F6973656E7C696B6F2B +S315E06147A06E696E207084846C6C652E5D5B20204F33 +S315E06147B04B20205D00506F697374610056616C69CE +S315E06147C06E74613A202020205F5F5F5F5F5F5F5FAD +S315E06147D02E5F5F5F005B315D5B56616C697473652B +S315E06147E06D61736920746965646F73746F747979E7 +S315E06147F0707069206569206F6C657C61736574654D +S315E0614800747475206D696C6C656B84846E20736FEE +S315E061481076656C6C756B73656C6C652E7C4B8479B7 +S315E0614820748420224D84847269748420736F766502 +S315E06148306C6C757322206B6F6D656E746F617C6CE9 +S315E06148406969747484846B736573692074846D8437 +S315E06148506E20746965646F73746F74797970696E6B +S315E06148607C6A6F686F6E6B696E20736F76656C6C70 +S315E0614870756B7365656E2E5D5B20204F4B20205D09 +S315E0614880005479797070693A005B325D5B205475EA +S315E06148906C6F737475736C61697474656573692043 +S315E06148A06569207661737461616E6F74617C746948 +S315E06148B065746F6A612E205661726D697374612CDD +S315E06148C02065747484206C61697465206F6E7C7098 +S315E06148D084846C6C84206A612C2065747484207392 +S315E06148E069696E84206F6E20706170657269617C42 +S315E06148F0656E6E656E207575747461207972697422 +S315E0614900797374842E5D5B4B756D6F617C557564EF +S315E0614910656C6C65656E5D005B315D5B45742076EB +S315E06149206F6920706F6973746161206B616E736921 +S315E06149306F74612C7C6A6F7461206B8479748474A2 +S315E06149402E5D5B20204F4B20205D005B335D5B5429 +S315E0614950616C6C656E7461616B73657369207479A2 +S315E06149609470947964846E2C206C616974617C477F +S315E0614970454D204445534B544F50202D6C65767917 +S315E06149806B65206173656D61616E20412C206A61A2 +S315E06149907C6B6C696B6B6161204F4B2E20204B6C9D +S315E06149A0696B6B6161204B756D6F612C206A6F730A +S315E06149B07C65742068616C75612074616C6C656E90 +S315E06149C0746161207479947094797484842E5D5BEA +S315E06149D020204F4B20207C4B756D6F615D005B3114 +S315E06149E05D5B464F524D41542D736F76656C6C75C8 +S315E06149F0737461206569206C947964792E20204A0C +S315E0614A006F73206B84797484747C6B6168746120E4 +S315E0614A106C6576796B656173656D61612C2073692F +S315E0614A206E756E2070697484847C616C7573746173 +S315E0614A30617C206C6576796B6B65657420444F5358 +S315E0614A402D6C6576796B6B65656C748473692E7CA8 +S315E0614A504A6F73206B84797484747C206B6F7661A2 +S315E0614A606C657679842C206B6F70696F6920464F2F +S315E0614A70524D41547C73656E206A75757265656EDB +S315E0614A802E5D5B4F4B5D00536969727279005B31F4 +S315E0614A905D5B566F697420766574848420726F738A +S315E0614AA06B616B6F7269696E206C6576796B6B654C +S315E0614AB065742C7C6B616E73696F742C20746965A7 +S315E0614AC0646F73746F74206A6120736F76656C6C62 +S315E0614AD0756B7365742C7C6A6F746B612068616C4D +S315E0614AE075617420706F69737461612050595359AF +S315E0614AF0568E535449215D5B20204F4B20205D004B +S315E0614B004D8E8E5249548E204C4556594153454DF2 +S315E0614B1041004B616E73696F69746120706F69738F +S315E0614B20746574746176616E613A20205F5F5F5F80 +S315E0614B30005B325D5B546965646F74206173656DBA +S315E0614B40617373612025633A206F6C6576616C6C85 +S315E0614B5061206C6576796C6C847C73616174746177 +S315E0614B60766174206F6C6C61207669616C6C6973D7 +S315E0614B7069612E202053696E756E7C7069748484D8 +S315E0614B80206B847974748484206F696B65616E20AF +S315E0614B907479797070697374847C6C6576796B65A8 +S315E0614BA0747484206A61206B6F76616C6576796E68 +S315E0614BB02074617061756B73657373617C6B696930 +S315E0614BC06E6E69747484842073656E206C69697431 +S315E0614BD074696D6574206F696B65696E2E5D5B4B9B +S315E0614BE0756D6F617C557564656C6C65656E5D0050 +S315E0614BF0202053756C6A6520696B6B756E61005B2D +S315E0614C00335D5B47454D206569206C94796484200A +S315E0614C1068616B75706F6C75737461616E7C4445C8 +S315E0614C20534B4C4F2E49434E2C204445534B4849F8 +S315E0614C302E49434E2C207461697C4445534B544F55 +S315E0614C40502E494E4620746965646F73746F6A616C +S315E0614C502E20204E846974847C74617276697461F5 +S315E0614C60616E2047454D2D74799470947964846EB4 +S315E0614C707C6B84796E6E697374846D697365656ED8 +S315E0614C802E5D5B4B756D6F615D00546965646F7335 +S315E0614C90746F6A613A20205F5F5F5F5F00456D75A3 +S315E0614CA0544F536961206C65766974657484846E6A +S315E0614CB02047504C2D6C6973656E7373696C6C84B7 +S315E0614CC0005B315D5B54846C6C84206C6576796CD9 +S315E0614CD06C84206569206F6C65207269697474847F +S315E0614CE076847374697C74696C6161206B61696BEC +S315E0614CF0696C6C6520746965646F696C6C652C20A0 +S315E0614D006A6F6974617C797269748474206B6F709F +S315E0614D10696F6964612E20204A6F6974616B696E9F +S315E0614D207C746965646F73746F69737461207361B0 +S315E0614D30617465747469696E2073696C74697C6B9E +S315E0614D406F70696F6964612E5D5B20204F4B202037 +S315E0614D505D00204A84726A6573748420003C416C0C +S315E0614D60743E20706F686A61737361203D206F687D +S315E0614D70697461206B6F76616C657679002020508D +S315E0614D8084697684797320202020202020200754AE +S315E0614D90004B4B2D50502D565600202041766161D7 +S315E0614DA000416A616E6E84797474943A0020204E93 +S315E0614DB0696D692020202020202020202020074EB8 +S315E0614DC000202050797384797484207379737465D3 +S315E0614DD0656D69205E51004B6F6E65005665727355 +S315E0614DE0696F00416E6E6120646F6B756D656E749F +S315E0614DF0696E206E696D692C206A6F6E6B612068E1 +S315E0614E00616C756174006A6F746B612074846D8422 +S315E0614E1020736F76656C6C757320687976846B73D5 +S315E0614E2079792E005B335D5B4B84796E6E69737461 +S315E0614E3084846B736573692047454D2074799470FA +S315E0614E40947964846E2C7C6C616974612047454D0C +S315E0614E50204445534B544F50202D6C6576796B65F4 +S315E0614E60206173656D61616E7C41206A61206B6C66 +S315E0614E70696B6B6161204F4B207461692070616978 +S315E0614E806E6120456E7465722E7C50616C617461F1 +S315E0614E906B73657369206B6F6D656E746F7269763E +S315E0614EA0696C6C652C7C6B6C696B6B6161204B75B5 +S315E0614EB06D6F612E5D5B20204F4B20207C4B756DC5 +S315E0614EC06F615D00646F6B756D656E7469740054D6 +S315E0614ED06176756A612076617061616E613A202002 +S315E0614EE05F5F5F5F5F5F5F5F5F5F005B325D5B453B +S315E0614EF07420766F69206B69726A6F697474616137 +S315E0614F002025633A206173656D616C6C652C7C6B01 +S315E0614F106F736B61207365206F6E206B69726A6F68 +S315E0614F206974757373756F6A61747475217C506F9A +S315E0614F3069737461206B69726A6F6974757373758D +S315E0614F406F6A61757320656E6E656E7C6B75696E91 +S315E0614F502079726974847420757564656C6C6565B5 +S315E0614F606E2E5D5B4B756D6F617C557564657374B3 +S315E0614F7061616E5D005B315D5B457420766F6920D2 +S315E0614F8061756B616973746120726F736B616B6F6D +S315E0614F9072692D696B6F6E69612E7C506F6973748E +S315E0614FA061616B73657369206C6576796B6B656559 +S315E0614FB06E2C206B616E73696F6E2C7C74696564AF +S315E0614FC06F73746F6E2074616920736F76656C6C54 +S315E0614FD0756B73656E2C20766564847C736520726F +S315E0614FE06F736B616B6F7269696E2E5D5B20204FCB +S315E0614FF04B20205D005B325D5B416E6E6574756E64 +S315E0615000206E696D696E656E206B616E73696F2086 +S315E06150106F6E206A6F7C6F6C656D617373612C2056 +S315E0615020746169206C657679206F6E20748479731A +S315E0615030692E7C5972697484207575747461206E09 +S315E0615040696D65842C20746169204B756D6F617C37 +S315E06150506A61207461726B697374612076617061F3 +S315E061506061206C65767974696C612E5D5B204B7548 +S315E06150706D6F61207C20557564656C6C65656E202D +S315E06150805D00566168766973746120706F697374E7 +S315E06150906F3A00496B6F6E696E206E696D693A2091 +S315E06150A0205F5F5F5F5F5F5F5F5F5F5F5F00506F66 +S315E06150B069737461206C6576796B65206A612070CD +S315E06150C061696E612052455455524E0050726F6A65 +S315E06150D06563742D49642D56657273696F6E3A2006 +S315E06150E0456D75544F5320302E32610A504F542D21 +S315E06150F04372656174696F6E2D446174653A2032FD +S315E06151003030342D30382D30322031333A32302B55 +S315E0615110303230300A504F2D5265766973696F6E61 +S315E06151202D446174653A20323030342D30382D307B +S315E0615130322031333A33312B303230300A4C6173BD +S315E0615140742D5472616E736C61746F723A20426F42 +S315E06151506864616E204D696C6172203C6D696C6159 +S315E0615160726240766F6C6E792E637A3E0A4C616E3E +S315E061517067756167652D5465616D3A20437A65634C +S315E061518068203C6373406C692E6F72673E0A4D49D5 +S315E06151904D452D56657273696F6E3A20312E300A30 +S315E06151A0436F6E74656E742D547970653A207465DB +S315E06151B078742F706C61696E3B20636861727365A8 +S315E06151C0743D49534F2D383835392D320A436F6E68 +S315E06151D074656E742D5472616E736665722D456E7B +S315E06151E0636F64696E673A20386269740A582D475D +S315E06151F0656E657261746F723A204B426162656C8D +S315E061520020302E392E350A005B315D5B5461746F57 +S315E06152102061706C696B616365206E656DE1206428 +S315E06152206F73746174656B2070616DEC7469207085 +S315E0615230726F7C6F746576F8656EED2064616CB94A +S315E0615240ED686F20736F75626F72752E20204B204B +S315E061525075766F6C6EEC6EED2070616DEC74697CE9 +S315E06152607A6176F865746520736F75626F72792C11 +S315E0615270206B746572E9207072E176EC206E657080 +S315E06152806F74F86562756A6574652E5D5B20204FA3 +S315E06152904B20205D0020204E6F76FD2061647265B3 +S315E06152A073E1F82E2E2E004A6DE96E6F206164720D +S315E06152B06573E1F8653A20205F5F5F5F5F5F5F5F1F +S315E06152C02E5F5F5F006E61E874656E206B207A61C8 +S315E06152D064E16EED20706172616D657472F92070E2 +S315E06152E0F8696A6174656C6EFD636800537973741D +S315E06152F0E96D207A6173746176656E210A005B33CC +S315E06153005D5B4C6974756A692C20616C6520646FBC +S315E061531020746F686F746F206164726573E1F8651C +S315E0615320206E656EED7C6D6FBE6EE920756DED7319 +S315E06153307469742076ED636520706F64616472658B +S315E061534073E1F8F92E7C50F865E874EC74652073C6 +S315E06153506920646F6B756D656E74616369206F203A +S315E06153606C696D69746563682070726F7C756D696F +S315E061537073BB6F76E16EED20706F64616472657325 +S315E0615380E1F8F92076206164726573E1F8ED6368AE +S315E06153902E5D5B5A7275B969745D00567974766F84 +S315E06153A0F8656E6F3A20205F5F2D5F5F2D5F5F204E +S315E06153B020002020506F646C6520627974F92020AA +S315E06153C0202020075A004B4F4E464C494B54204A09 +S315E06153D04D454E2042CC48454D204B4F50CD524F26 +S315E06153E056C14ECD00506F736C65646EED207A6D7B +S315E06153F0EC6E613A20205F5F2F5F5F2F5F5F004455 +S315E0615400657461696C792076697A20646F632F6C63 +S315E06154106963656E73652E7478740073652063687D +S315E0615420797374E1746520767974766FF869742EB0 +S315E061543000C874656EED2F7AE1706973004E415371 +S315E0615440544156454ECD00527963686C6F73742052 +S315E061545064766F6A6B6C696B753A0020204E617396 +S315E0615460746176656EED2E2E2E00506172616D650A +S315E06154707472793A20205F5F5F5F5F5F5F5F5F5F56 +S315E06154805F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5FE5 +S315E06154905F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5FD5 +S315E06154A05F5F5F5F5F5F5F5F5F5F00C861732073D0 +S315E06154B07461727475004B4F50CD524F56C14ECDEB +S315E06154C0204144524553C1D8D9202F20504F4C4FEB +S315E06154D0AE454B002020556C6FBE6974206E6173DA +S315E06154E0746176656EED202020202020202020202A +S315E06154F007560020204A616B6F207465787420201E +S315E0615500202020200753005A61E8E174656B206F23 +S315E06155106272617A7500566C6FBE746520737461F0 +S315E061552072746F766163ED206469736B657475207F +S315E061553047454D00494E464F524D414345204F2028 +S315E06155404449534B55004E6F76FD20616472657335 +S315E0615550E1F8206120646F206469616C6F67752C86 +S315E0615560206B746572FD20736500506F75BE69745A +S315E06155706F20627974F93A20205F5F5F5F5F5F5FFA +S315E06155805F5F5F005B325D5B41706C696B61636558 +S315E0615590206E656DF9BE6520E8ED73742064617413 +S315E06155A061207A206469736B757C76206A65646EC6 +S315E06155B06F7463652025633A2E20205A6B6F6E7493 +S315E06155C0726F6C756A74652C207A6461206A657C99 +S315E06155D06469736B206E61666F726DE1746F76E11B +S315E06155E06E2C206A65646E6F746B612070F8697009 +S315E06155F06F6A656E617C6B65207A64726F6A692039 +S315E0615600656E657267696520612066797A69636B43 +S315E0615610792070F869706F6A656E617C6B20706F76 +S315E0615620E8ED7461E8692E5D5B5A7275B969747CFF +S315E06156305A6E6F76755D002020496E666F206F2029 +S315E06156406465736B746F70752E2E2E005A7275B920 +S315E0615650697400E16C6EED6D206F6B6EEC206476C3 +S315E0615660616B72E174206B6C696B6EEC7465206ED4 +S315E06156706120696B6F6E75005B315D5B4E656DF9DF +S315E0615680BE65B92070F86573756E6F757420616477 +S315E0615690726573E1F8652C20646F6B756D656E7488 +S315E06156A0797C6E65626F2061706C696B61636520A0 +S315E06156B06E61204465736B746F702E20416C65205A +S315E06156C06DF9BE65B97C6A65206B6F70ED726F7658 +S315E06156D06174206E61206469736B7920616E6562C5 +S315E06156E06F20686F64697420646F7C6F6470616455 +S315E06156F06B6F76E9686F206B6FB9652E5D5B202015 +S315E06157004F4B20205D005B315D5B4E656EED206445 +S315E06157106F73746174656B2070616DEC7469206B95 +S315E0615720206E6173746176656EED7C74E9746F20E9 +S315E061573061706C696B6163652E20204B2075766FB5 +S315E06157406C6EEC6EED7C6EEC6A616BE9686F206D98 +S315E0615750ED737461206A652074F8656261206F6437 +S315E0615760737472616E69747C6A65646E75207A20A1 +S315E061577064F8ED7665206E6173746176656EFD63DE +S315E0615780687C61706C696B6163ED2E5D5B20204FB7 +S315E06157904B20205D00202050F869686CE1736974E4 +S315E06157A0206469736B2E2E2E004B20767974766FAA +S315E06157B0F8656EED206E6F76E9686F2061647265FB +S315E06157C073E1F865207620616B74752D005B335D5E +S315E06157D05B444F53206368796261202325642E5DC3 +S315E06157E05B5A7275B969745D004A6DE96E6F3A200C +S315E06157F0205F5F5F5F5F5F5F5F2E5F5F5F00506F40 +S315E0615800747672646974206B6F70ED726F76E16EB7 +S315E0615810ED3F00456D75544F53207665727A6500AC +S315E061582054797020435055005B315D5B4E656DF98F +S315E0615830BE65B92070F86573756E6F7574206F64B7 +S315E06158407061646B6F76FD7C6B6FB920646F206FFE +S315E06158506B6E612E5D5B20204F4B20205D005B31DE +S315E06158605D5B506FBE61646F76616EFD20646973E6 +S315E06158706B206E656578697374756A652E7C5A6BA3 +S315E06158806F6E74726F6C756A7465207A6164616E4D +S315E0615890E92070ED736D656E6F7C6F7A6E61E875A8 +S315E06158A06AED63ED206A65646E6F746B752E5D5BA0 +S315E06158B05A7275B969745D004E6500416E6F004854 +S315E06158C06172646469736B005A76756B6F76E92011 +S315E06158D06566656B74793A0041747269627574796B +S315E06158E03A004F7A6E61E8656EED206469736B75B7 +S315E06158F03A20205F3A00446F207061646163ED682D +S315E06159006F206D656E753A005B335D5B4F626A650C +S315E061591076696C61207365206368796261207620BF +S315E06159204D616E61BE6572757C6772616669636B56 +S315E0615930E9686F2070726F7374F86564ED202847CB +S315E0615940454D292E20204B6F6E74616B74756A74B8 +S315E0615950657C70726F73ED6D2076FD766F6A6F763A +S315E0615960FD2074FD6D20456D75544F5375206120A2 +S315E0615970706F64656A74657C7A7072E17675206FC2 +S315E06159802063687962EC2E5D5B5A7275B969745D04 +S315E0615990004A6D656E6F766B613A20205F5F5F5F8F +S315E06159A05F5F5F5F5F5F5F00506F6C6FBE6B7920BB +S315E06159B06B6520736D617AE16EED3A20205F5F5F22 +S315E06159C05F0056656C696B6F737420627974F93A3E +S315E06159D020205F5F5F5F5F5F5F5F5F5F004A656477 +S315E06159E06E6F746B793A005B315D5B506FE8ED74B5 +S315E06159F061E8206E656DE120646F73746174656B57 +S315E0615A007C766F6C6EE92070616DEC7469206B6514 +S315E0615A1020737075B974EC6EED7C7A766F6C656E39 +S315E0615A20E92061706C696B6163652E5D5B20204F77 +S315E0615A304B20205D002020496E7374616C6F766146 +S315E0615A40742061706C696B6163692E2E2E20202053 +S315E0615A502007410061706C696B616365005B335D72 +S315E0615A605B436879626EE12066756E6B63652023E0 +S315E0615A705D5B5A7275B969745D005B335D5B506FEE +S315E0615A80E8ED7461E8206E656DE120646F737461C1 +S315E0615A9074656B2070616DEC7469206B657C737005 +S315E0615AA075B974EC6EED2047454D204465736B74B2 +S315E0615AB06F70752E5D5B204C6974756A69205D0057 +S315E0615AC04D415AC14ECD204144524553C1D8D920AA +S315E0615AD02F20504F4C4FAE454B00494E464F524DED +S315E0615AE0414345204F204F44524553C1D849004474 +S315E0615AF0442D4D4D2D5252004A6DE96E6F206B6F0C +S315E0615B007069653A20205F5F5F5F5F5F5F5F2E5F11 +S315E0615B105F5F00496E7374616C6F76617400506F9C +S315E0615B207476726469742070F8657069733F0056C3 +S315E0615B306F6C6EE1204661737452414D00466F723F +S315E0615B406DE17420646174613A0053505553544970 +S315E0615B50542041504C494B414349005B325D5B41C6 +S315E0615B60706C696B616365206E656DF9BE65206E0B +S315E0615B70616AED74206164726573E1F8206E656255 +S315E0615B806F7C646F6B756D656E742C206B7465727A +S315E0615B90FD20736520736E61BEED7465206F74657B +S315E0615BA076F8ED742E7C5A6B6F6E74726F6C756AF3 +S315E0615BB07465207A6164616EE9206A6DE96E6F2EC3 +S315E0615BC05D5B20204F4B20205D005A6173746176E6 +S315E0615BD06974004A656E20E874656EED00416B7428 +S315E0615BE075E16C6EED206A6DE96E6F3A20205F5F5C +S315E0615BF05F5F5F5F5F5F2E5F5F5F005B335D5B4E45 +S315E0615C00656EED206D6FBE6EE9207A6B6F70ED7239 +S315E0615C106F766174206E6164F8617A656EFD7C61B0 +S315E0615C2064726573E1F820646F206A65686F20705D +S315E0615C306F646164726573E1F8652E5D5B20204F88 +S315E0615C404B20205D005B335D5B4C6974756A692C42 +S315E0615C5020616C65207A6164616EE9206A6DE96E46 +S315E0615C606F206164726573E1F8657C70F8656B72EB +S315E0615C7061E8756A65206D6178696DE16C6EED204C +S315E0615C80706F766F6C656E6F752064E96C6B752EFF +S315E0615C907C50F865B974EC746520736920646F6B48 +S315E0615CA0756D656E74616369206F206C696D697489 +S315E0615CB06563687C706FE87475207A6E616BF92C48 +S315E0615CC0206B746572E9206A65206D6FBE6EE920AE +S315E0615CD0706F75BEED747C70726F206A6DE96E618E +S315E0615CE02E5D5B2020204F4B2020205D0054797093 +S315E0615CF020696B6F6E793A00313220686F64696E44 +S315E0615D00005B315D5B47454D204465736B746F7035 +S315E0615D10206A69BE206E656DF9BE65206F74657631 +S315E0615D20F8ED742076ED63657C6F6B656E2E2020F1 +S315E0615D3050F86564206F746576F8656EED6D206484 +S315E0615D4069736B75207A6176F86574657C6F6B6EE5 +S315E0615D506F2C206B746572E9206E65706F75BEEDB0 +S315E0615D6076E174652E5D5B20204F4B20205D00441B +S315E0615D7069736B6574610056FD766F6A6F76FD20B7 +S315E0615D8074FD6D20456D75544F5375004B6F70ED25 +S315E0615D90726F76616EE920706F6C6FBE6B793A20D7 +S315E0615DA0205F5F5F5F0020536F75626F7220002531 +S315E0615DB06C6420627974F9207620256420706F6CBA +S315E0615DC06FBE6BE163682E004A6DE96E6F206170AC +S315E0615DD06C696B6163653A20205F5F5F5F5F5F5F00 +S315E0615DE05F2E5F5F5F004E6F76FD20616472657363 +S315E0615DF0E1F800506F6472BE203C4374726C3E20E1 +S315E0615E00612070F865736B6FE8204155544F2F41FF +S315E0615E104343002020496E666F2F4A6DE96E6F2E0F +S315E0615E202E2E2020200749005A616C6FBE656E6F89 +S315E0615E30206E61202747504C27207A64726F6AEDA5 +S315E0615E406368005B315D5B506F6C6FBE6B61207444 +S315E0615E506F686F746F206A6DE96E612076206461A8 +S315E0615E606EE96D206164726573E1F8697C657869F4 +S315E0615E707374756A65206E65626F206A6520706FFE +S315E0615E80757A65206B6520E874656EED2E7C506FE2 +S315E0615E9075BE696A74652070F8ED6B617A20224996 +S315E0615EA06E666F2F4A6DE96E6F22206B65207A6DA3 +S315E0615EB0EC6EEC7C737461747573752074E9746F60 +S315E0615EC020706F6C6FBE6B792E5D5B20204F4B202F +S315E0615ED0205D006F626A6576ED2C207A6164656AA1 +S315E0615EE07465206A6DE96E6F206164726573E1F8CD +S315E0615EF0652C206B746572FD00323420686F6469CD +S315E0615F006E002020506F646C652074797075202076 +S315E0615F102020200750005479702061706C696B61B4 +S315E0615F2063653A004B6C696B6E7574ED005479701C +S315E0615F307920646F6B756D656E74F93A00537469B7 +S315E0615F40736B6E69202743272070726F20737075BB +S315E0615F50B974EC6EED206B6F6E7A6F6C79004F7A87 +S315E0615F606E61E8656EED206469736B753A20205F5A +S315E0615F70004E4F56DD204144524553C1D8002020A2 +S315E0615F805370757374697420456D75434F4E202067 +S315E0615F905E5A004E4153544156454ECD2041504CD8 +S315E0615FA0494B4143450020205A6DEC6E6120726F8A +S315E0615FB07A6C69B9656EED202020202020202020B2 +S315E0615FC02020074300566F6C6EE12053542D5241F9 +S315E0615FD04D002020466F726DE1746F7661742E2EEE +S315E0615FE02E002020536D617A61742E2E2E202020A2 +S315E0615FF02020202007440020205A6176F8ED7400C5 +S315E0616000506F74F86562756A652063656C6F7520BB +S315E061601070616DECBB3F0020204A616B6F20696B5C +S315E06160206F6E7920202020200753004469736B79D5 +S315E06160302047454D444F537500494E464F524D41B9 +S315E06160404345204F204E4F56C94D2041445245535A +S315E0616050C1D849004B6F70ED726F76616EE9206170 +S315E061606064726573E1F8653A20205F5F5F5F0049BE +S315E06160704E464F524D414345202F2050D8454A4D1B +S315E0616080454E4F56C14ECD005B335D5B466F726DDB +S315E0616090E1746F76E16EED20534D41AE452076B900 +S315E06160A06563686E617C64617461206E61206469B8 +S315E06160B0736B6574EC2076206A65646E6F746365F4 +S315E06160C07C25633A2E20204B6C696B6EEC746520FF +S315E06160D06E61204F4B20706F757A6520706F6B75BE +S315E06160E0647C76E16D206E65766164ED207A74722A +S315E06160F0E174612076B9656368206461747C6E6180 +S315E061610020746F6D746F206469736B752E5D5B20AF +S315E0616110204F4B20207C5A7275B969745D00205618 +S315E06161206F6C62792000506FE86574206164726516 +S315E061613073E1F8F93A20202020205F5F5F5F5F001E +S315E061614056DD42CC5220504F4C4FAE454B005B3250 +S315E06161505D5B4A65646E6F746B612025633A206EA0 +S315E06161606572656167756A652E20204A652074F8F7 +S315E06161706562617C706F75BEED7420737072E176F5 +S315E06161806EFD20747970206469736B752C20766C72 +S315E06161906FBE6974206A656A7C737072E1766EECD3 +S315E06161A020646F206D656368616E696B792C207020 +S315E06161B0F8ED702E207A6176F8ED742E7C4A652DC5 +S315E06161C06C692070726F626CE96D20732068617230 +S315E06161D0646469736B656D2C2070726F76ECF8742C +S315E06161E0657C70F869706F6A656EED206469736BE2 +S315E06161F0752E5D5B5A7275B969747C5A6E6F767588 +S315E06162005D005B335D5B506F6B7564206A737465CB +S315E0616210207369206A697374FD2C20BE652063680A +S315E0616220636574657C736D617A61742056A94543D3 +S315E0616230484E5920696E666F726D616365207A209A +S315E06162406469736B757C76206A65646E6F74636589 +S315E06162502025633A2C206B6C696B6EEC7465206E5D +S315E061626061204F4B2E7C4A696E616B206B6C696B6A +S315E06162706EEC7465206E61205A7275B969742E5D33 +S315E06162805B20204F4B20207C5A7275B969745D00A2 +S315E06162905B315D5B4F647061646B6F76FD206B6F44 +S315E06162A0B9206DF9BE65B92070F86573756E6F7565 +S315E06162B074206E61206A696EE97C6DED73746F209E +S315E06162C06E6120706C6FB9652047454D20446573FA +S315E06162D06B746F70752C20616C65206E656DF9BEAF +S315E06162E065B97C686F20756DED73746974206E6154 +S315E06162F0206A696E6F7520696B6F6E752E2E5D5BB8 +S315E061630020204F4B20205D004F64737472616E698B +S315E0616310740056FD62EC723A20205F5F5F5F5F5FFB +S315E06163205F5F2E5F5F5F005B315D5B5A766F6C65C9 +S315E06163306EFD2074797020646F6B756D656E747532 +S315E0616340206E656EED206E6173746176656E7C704C +S315E0616350726F20706F75BE6974ED20BEE1646E6F19 +S315E0616360752061706C696B6163ED2E2020506F75ED +S315E0616370BE696A74657C70F8ED6B617A20224E6164 +S315E061638073746176656EED2061706C696B616365EE +S315E0616390227C6B2061736F63696F76E16EED2074C9 +S315E06163A06F686F746F207479707520736F75626F43 +S315E06163B072757C73206EEC6A616B6F752061706CCF +S315E06163C0696B6163ED2E5D5B20204F4B20205D00A4 +S315E06163D0547970206469736B753A005B325D5B5624 +S315E06163E0FD737475706EED207A61F8ED7A656EED28 +S315E06163F0206E6570F8696AED6DE120646174612E05 +S315E06164007C646174612E2050F86564207A766F6CE5 +S315E0616410656EED6D205A6E6F767520736520756ACF +S315E0616420697374EC74652C7CBE65206A65207A615B +S315E0616430F8ED7A656EED206E6170E16A656E6F2CDE +S315E0616440206A652076207265BE696D757C6F6E2DFA +S315E06164506C696E652061207A6461206DE12070610E +S315E061646070ED72206E65626F2066696C6D2E5D5BA4 +S315E06164705A7275B969747C5A6E6F76755D005B3177 +S315E06164805D5B4E656EED206D6FBE6EE920736D618D +S315E06164907A6174206164726573E1F82C206B7465CE +S315E06164A072FD7C6A65207072E176EC206E617374D0 +S315E06164B06176656E206A616B6F20707261636F767B +S315E06164C06EED2E5D5B20204F4B20205D005B335DE2 +S315E06164D05B4B20756C6FBE656EED206E61737461AA +S315E06164E076656EED20766C6FBE7465206469736B5C +S315E06164F06574757C47454D204445534B544F502058 +S315E0616500646F206A65646E6F746B7920413A2C2002 +S315E06165107A6176F86574657C6476EDF86B61206125 +S315E0616520206B6C696B6EEC7465206E61204F4B2E4F +S315E0616530204E61205A7275B969747C6B6C696B6EB9 +S315E0616540EC746520762070F8ED706164EC2C20BE09 +S315E061655065206E6173746176656EED7C756C6FBE98 +S315E06165606974206E656368636574652E5D5B202082 +S315E06165704F4B20207C5A7275B969745D005B315D61 +S315E06165805B4E656EED206D6FBE6EE9206E616AED04 +S315E0616590742070726F6772616D20464F524D41543F +S315E06165A02E2020506F6B75647C706F75BEED76E161 +S315E06165B07465206476EC206469736B65746F76E963 +S315E06165C0206A65646E6F746B792C206A657C74F8F9 +S315E06165D065626120666F726DE1746F766174207ACF +S315E06165E0206469736B657479207320444F53656DDC +S315E06165F02E7C506F6B7564206DE174652068617205 +S315E0616600646469736B2C207A6B6F70ED72756A7472 +S315E06166106520464F524D41547C646F206B6FF8653F +S315E06166206E6F76E9686F206164657273E1F8652E75 +S315E06166305D5B4F4B5D0042657A206B6C696B6E7595 +S315E061664074ED005B315D5B4F647061646B6F76FD29 +S315E0616650206B6FB9206A65206DED73746F2C206BCA +S315E0616660616D2070F865736F7576E1B97C64697305 +S315E06166706B792C206164726573E1F8652C20646F37 +S315E06166806B756D656E7479206E65626F7C61706C39 +S315E0616690696B6163652C206B746572E9206368637D +S315E06166A065B92076796D617A6174206E6176BE64D2 +S315E06166B079215D5B20204F4B20205D0050D8494811 +S315E06166C04CC1534954204449534B0041647265734C +S315E06166D0E1F865206B6520736D617AE16EED3A20D4 +S315E06166E0205F5F5F5F005B325D5B44617461206E7A +S315E06166F061206469736B752025633A206A736F75EF +S315E0616700206D6FBE6EE17C706FB96B6F7A656E619D +S315E06167102E20204A652074F865626120706F75BE2F +S315E0616720ED7420737072E1766EFD7C74797020642D +S315E061673069736B6574793B20686172646469736BD4 +S315E0616740206D7573ED2062FD747C737072E1766E17 +S315E0616750EC2070F869706F6A656E2E5D5B5A7275D2 +S315E0616760B969747C5A6E6F76755D0020205A6176E0 +S315E0616770F8ED74206F6B6E6F005B335D5B47454D83 +S315E0616780204465736B746F70206E656DF9BE65202C +S315E06167906E616AED7420736F75626F72797C4445E0 +S315E06167A0534B4C4F2E49434E2C204445534B48495D +S315E06167B02E49434E206E65626F7C4445534B544F80 +S315E06167C0502E494E4620762063657374EC207A6ECE +S315E06167D0E16DE920444F53752E7C5479746F2073D3 +S315E06167E06F75626F7279206A736F75207679BE61B3 +S315E06167F0646F76E16E797C70726F20737075B974CF +S315E0616800EC6EED2047454D204465736B746F707592 +S315E06168102E5D5B5A7275B969745D00506FE8657497 +S315E061682020706F6C6FBE656B3A20202020205F5F21 +S315E06168305F5F5F00456D75544F53206A6520B9ED22 +S315E0616840F8656E20706F64206C6963656E63ED2038 +S315E061685047504C005B315D5B4E61206469736B75DB +S315E0616860206E656EED20646F73746174656B206D87 +S315E0616870ED7374612070726F7C696E666F726D61C3 +S315E061688063692C206B7465726F7520736520736E16 +S315E061689061BEED7465206B6F70ED726F7661742E1B +S315E06168A07C4E69636DE96EEC206EEC6B746572E942 +S315E06168B020706F6C6FBE6B79206D6F686C79206A42 +S315E06168C069BE2062FD747C6E61206469736B206EC3 +S315E06168D0616B6F70ED726F76E16E792E5D5B202094 +S315E06168E04F4B20205D00205573706FF8E164E16ED7 +S315E06168F0ED2000506F6472BE203C416C743E206BAB +S315E06169002070F865736B6FE8656EED20484444006E +S315E06169102020506F646C65206461746120202020C2 +S315E0616920200754004D4D2D44442D52520020204FF6 +S315E0616930746576F8ED7400466F726DE17420E86116 +S315E061694073753A002020506F646C65206A6DE96E5C +S315E06169506120202020074E0020205679706E6F75E9 +S315E0616960742020202020202020205E5100506FE8F6 +S315E0616970ED7461E8005665727A65005A6164656A2C +S315E06169807465206A6DE96E6F20646F6B756D656E17 +S315E061699074752C206B746572FD206DE12062FD7467 +S315E06169A00070726F207475746F2061706C696B61D1 +S315E06169B063692E005B335D5B50726F20737075B9EE +S315E06169C074EC6EED2047454D204465736B746F70D2 +S315E06169D07520766C6FBE7465206469736B657475DA +S315E06169E07C47454D204445534B544F5020646F20BE +S315E06169F06A65646E6F746B7920412061206B6C69A6 +S315E0616A006B6EEC74657C6E61204F4B206E65626FD8 +S315E0616A1020737469736B6EEC74652052657475727C +S315E0616A206E2E2050726F206EE17672617420646F13 +S315E0616A307C444F5375206B6C696B6EEC7465206EAC +S315E0616A4061205A7275B969742E5D5B20204F4B20C7 +S315E0616A50207C5A7275B969745D00646F6B756D659A +S315E0616A606E747900566F6C6EFD636820627974F9B5 +S315E0616A703A20205F5F5F5F5F5F5F5F5F5F005B3212 +S315E0616A805D5B4E656EED206D6FBE6EE9207A61707D +S315E0616A9069736F766174206E61206469736B657486 +S315E0616AA0757C76206A65646E6F7463652025633AEA +S315E0616AB02C2070726F746FBE65206A652066797A84 +S315E0616AC069636B797C636872E16EEC6E612070720A +S315E0616AD06F7469207AE1706973752E202050F865CC +S315E0616AE064207A766F6C656EED6D7C205A6E6F769A +S315E0616AF075206F6473747261F27465206EE16C6522 +S315E0616B00706B75206E65626F207A616B72796A74FB +S315E0616B10657C6F74766F72206E61206469736B65F4 +S315E0616B2074EC2E5D5B5A7275B969747C5A6E6F76D8 +S315E0616B30755D005B315D5B4E656DF9BE65B9206F74 +S315E0616B40746576F8ED74206F647061646B6F76FDE1 +S315E0616B50206B6FB97C646F206F6B6E612E204B6426 +S315E0616B6079BE2063686365B920736D617A6174206B +S315E0616B706469736B2C7C6164726573E1F82C2064E3 +S315E0616B806F6B756D656E74206E65626F2061706C9A +S315E0616B90696B6163692C7C70F8657375F220746F5B +S315E0616BA020646F206F647061646B6F76E9686F2053 +S315E0616BB06B6FB9652E5D5B20204F4B20205D005BDE +S315E0616BC0325D5B4164726573E1F820746F686F747E +S315E0616BD06F206A6DE96E61206A69BE2065786973C6 +S315E0616BE074756A657C6E65626F206A652064697337 +S315E0616BF06B20706C6EFD2E205A6B75737465206A1E +S315E0616C00696EE96A6DE96E6F206E65626F206B6C25 +S315E0616C10696B6EEC7465206E61205A7275B9697440 +S315E0616C207C612070726F76ECF8746520766F6C6EBD +S315E0616C30E9206DED73746F206E61206469736B7525 +S315E0616C402E5D5B205A7275B96974207C205A6E6F2D +S315E0616C507675205D00506F747672646974206D613B +S315E0616C607AE16EED3F004A6DE96E6F20696B6F6E9A +S315E0616C70793A20205F5F5F5F5F5F5F5F5F5F5F5F66 +S315E0616C800056797375F274652070726F73ED6D20DD +S315E0616C906469736B657475206120737469736B6E77 +S315E0616CA0EC74652052455455524E0050726F6A65D8 +S315E0616CB063742D49642D56657273696F6E3A20452A +S315E0616CC04D55544F5320626574610A504F542D43BC +S315E0616CD072656174696F6E2D446174653A20323014 +S315E0616CE030352D30342D31312031373A31382B3052 +S315E0616CF03230300A504F2D5265766973696F6E2D69 +S315E0616D00446174653A20323030352D30342D31347A +S315E0616D102031333A33302B303230300A4C61737480 +S315E0616D202D5472616E736C61746F723A2047616261 +S315E0616D307269656C2048756572746173203C676140 +S315E0616D40627269656C687565727461734074657267 +S315E0616D5072612E65733E0A4C616E67756167652D7A +S315E0616D605465616D3A2045737061F16F6C203C64E6 +S315E0616D70722E776F7273744074657272612E657389 +S315E0616D803E0A4D494D452D56657273696F6E3A20DF +S315E0616D90312E300A436F6E74656E742D5479706569 +S315E0616DA03A20746578742F706C61696E3B20636814 +S315E0616DB061727365743D49534F2D383835392D31DC +S315E0616DC0350A436F6E74656E742D5472616E7366C7 +S315E0616DD065722D456E636F64696E673A20386269E4 +S315E0616DE0740A005B315D5B457374612061706C6947 +S315E0616DF063616369F36E20636172656365206465EF +S315E0616E002065706163696F207C7061726120616287 +S315E0616E10726972206F74726F20646F63756D656EEF +S315E0616E20746F2E204369657272657C616C67756EFD +S315E0616E306F20717565206E6F206E65636573697429 +S315E0616E40652E5D5B20204F4B20205D0020204E7536 +S315E0616E5065766120436172706574612E2E2E004EF7 +S315E0616E606F6D627265206465206C6120636172702A +S315E0616E706574613A20205F5F5F5F5F5F5F5F2E5F92 +S315E0616E805F5F0061206C6565722C206F2076616CB6 +S315E0616E906F72657320646520706172E16D6574720D +S315E0616EA06F7300A153697374656D61206465746580 +S315E0616EB06E69646F210A005B335D5B4C6F207369B9 +S315E0616EC0656E746F2C207065726F206E6F207075C1 +S315E0616ED0656465206372656172206DE173207C6330 +S315E0616EE0617270657461732064656E74726F20643B +S315E0616EF065206C612061637475616C2E20526576E4 +S315E0616F00697365207C6C6120646F63756D656E7411 +S315E0616F10616369F36E20736F627265206CED6D6912 +S315E0616F2074657320656E7C6375616E746F20612034 +S315E0616F3063617270657461732064656E74726F20EB +S315E0616F406465206F747261732E5D5B43616E636528 +S315E0616F506C61725D0043726561646F3A20205F5FC8 +S315E0616F602D5F5F2D5F5F20200020204F7264656E8C +S315E0616F70617220706F722074616D61F16F2020071C +S315E0616F805A004E4F4D42524520434F4E464C49437F +S315E0616F905449564F2000DA6C74696D61206D6F64F7 +S315E0616FA069666963616369F36E3A20205F5F2F5FAB +S315E0616FB05F2F5F5F004C6561206C6963656E636935 +S315E0616FC0612E7478742070617261206DE173206462 +S315E0616FD06574616C6C650063617270657461207182 +S315E0616FE07565207175696572652063726561722E7A +S315E0616FF0004C6563747572612F457363726974756C +S315E061700072610045535441424C45434552205052CA +S315E061701045464552454E434941530056656C6F635B +S315E06170206964616420646520636C69636B3A00201E +S315E06170302045737461626C65636572207072656622 +S315E06170406572656E636961732E2E2E00506172E121 +S315E06170506D6574726F733A20205F5F5F5F5F5F5F3C +S315E06170605F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5FE9 +S315E06170705F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5FD9 +S315E06170805F5F5F5F5F5F5F5F5F5F5F5F5F00546929 +S315E0617090656D706F20646520617272616E71756590 +S315E06170A000434F5049415220434152504554415368 +S315E06170B0202F20454C454D454E544F5300202053DB +S315E06170C0616C766172204465736B746F7020202009 +S315E06170D020202020202020202007560020204D6FF0 +S315E06170E0737472617220636F6D6F20746578746F0B +S315E06170F02007530050616E74616C6C6120696E6942 +S315E06171006369616C00496E736572746520656C20B4 +S315E0617110646973636F20646520617272616E717513 +S315E0617120652064656C2047454D00494E464F524D9A +S315E0617130414349D34E2044454C20444953434F0093 +S315E06171404E7565766F20792073696761206C61732E +S315E061715020696E737472756363696F6E65730042FD +S315E06171607974657320757361646F733A20205F5F2C +S315E06171705F5F5F5F5F5F5F5F005B325D5B4573745F +S315E0617180612061706C6963616369F36E206E6F2083 +S315E06171907075656465206C656572206C6F732064DB +S315E06171A061746F737C64656C20646973636F206579 +S315E06171B06E206C6120756E696461642025633A2096 +S315E06171C02E20436F6D7072756562657C71756520A1 +S315E06171D0657374E120666F726D61746561646F2CCD +S315E06171E020717565206C6120756E696461642065E6 +S315E06171F07374E17C616C696D656E7461646120795B +S315E061720020636F6E65637461646120616C206F7287 +S315E061721064656E61646F722E5D5B43616E63656C1E +S315E061722061727C5265696E74656E7461725D00202F +S315E061723020496E666F726D616369F36E2064656C99 +S315E0617240204465736B746F702E2E2E2020200043D0 +S315E0617250414E43454C41520061637475616C2C202B +S315E061726070756C736520646F7320766563657320F2 +S315E0617270656E20656C2069636F6E6F206465005B87 +S315E0617280315D5B4E6F2073652070756564656E2058 +S315E06172906C6C657661722063617270657461732C82 +S315E06172A0206669636865726F737C6F2061706C6973 +S315E06172B0636163696F6E657320616C206573637288 +S315E06172C069746F72696F2C2061756E7175652C7C5E +S315E06172D07369206120646973636F732070617261A1 +S315E06172E020636F70696172206F20612070617065E3 +S315E06172F06C6572617C7061726120626F72726172DB +S315E06173002E5D5B20204F4B20205D005B315D5B4E47 +S315E06173106F20686179206573706163696F2020739E +S315E06173207566696369656E74657C706172612063B7 +S315E06173306F6E6669677572617220657374612061EB +S315E0617340706C6963616369F36E2E7C507565646523 +S315E0617350206F6274656E6572206573706163696FD3 +S315E061736020656C696D696E616E646F7C756E6120B6 +S315E06173706465206C61732020636F6E666967757200 +S315E0617380616461732E5D5B20204F4B20205D0020A0 +S315E061739020496E7374616C617220756E69646164B3 +S315E06173A020646520646973636F2E2E2E00506172CE +S315E06173B06120637265617220756E612063617270CE +S315E06173C065746120656E206C612076656E74616EB0 +S315E06173D06120005B335D5B444F532D6572726F7262 +S315E06173E0202325642E5D5B43616E63656C61725D2E +S315E06173F0004E6F6D6272653A20205F5F5F5F5F5F2F +S315E06174005F5F2E5F5F5F00BF436F6E6669726D613E +S315E061741020636F706961723F00456D75544F53200B +S315E06174205665727369F36E007469706F20646520E6 +S315E0617430435055005B315D5B4E6F20657320706F25 +S315E06174407369626C6520736974756172206C612021 +S315E0617450706170656C6572617C64656E74726F2073 +S315E0617460646520756E612076656E74616E612E5D10 +S315E06174705B20204F4B20205D005B315D5B4C6120E2 +S315E0617480756E6964616420696E64696361646120D3 +S315E06174906E6F206578697374652E7C436F6D70726B +S315E06174A075656265206C6120756E696461642073DF +S315E06174B0656C656363696F6E6164612E5D5B436193 +S315E06174C06E63656C61725D004E6F004475726F004C +S315E06174D045666563746F20736F6E6F726F3A0041D4 +S315E06174E07472696275746F733A004C657472612087 +S315E06174F0646520756E696461643A20205F3A005084 +S315E061750061726120646573706C65676172206D6537 +S315E06175106EFA73005B335D5B53652070726F647501 +S315E06175206A6F20756E206572726F7220656E206576 +S315E06175306C206D616E656A61646F727C64652065FD +S315E06175406E746F726E6F206772E16669636F202891 +S315E061755047454D292E7C506F72206661766F722C9D +S315E061756020636F6E746163746520616C206571750B +S315E061757069706F20456D75544F53207C7920726533 +S315E0617580706F72746520656C206572726F725D5B97 +S315E061759043616E63656C61725D00457469717565C1 +S315E06175A0746120646973636F3A20205F5F5F5F5F38 +S315E06175B05F5F5F5F5F5F00456C656D656E746F739E +S315E06175C0206120626F727261723A20205F5F5F5F55 +S315E06175D00054616D61F16F20656E20627974657347 +S315E06175E03A20205F5F5F5F5F5F5F5F5F5F00556E61 +S315E06175F069646164657320646520446973636F00DF +S315E06176005B315D5B4D656D6F72696120696E737546 +S315E061761066696369656E7465207061726120636F26 +S315E0617620727265727C657374612061706C696361A5 +S315E06176306369F36E2E5D5B20204F4B20205D002059 +S315E061764020436F6E666967757261722061706C69FD +S315E061765063616369F36E2E2E2E202007410061700F +S315E06176606C6963616369F36E005B335D5B46756E9E +S315E06176706369F36E20657272F36E656120235D5B0B +S315E061768043616E63656C61725D005B335D5B4E6F3A +S315E061769020686179206D656D6F72696120737566C9 +S315E06176A0696369656E746520706172617C696E6932 +S315E06176B06369617220656C2047454D2D4465736B46 +S315E06176C0746F702E205D5B4C6F207369656E746FAD +S315E06176D05D00424F5252415220434152504554411E +S315E06176E053202F20454C454D454E544F5300494E4E +S315E06176F0464F524D414349D34E204445204C4120AB +S315E0617700434152504554410044442D4D4D2D414134 +S315E0617710004E6F6D627265206465206C6120636FF7 +S315E06177207069613A20205F5F5F5F5F5F5F5F2E5FD9 +S315E06177305F5F00496E7374616C617200BF436F6E27 +S315E06177406669726D6120736F627265657363726992 +S315E06177506269723F0054542F4661737452414D2001 +S315E0617760646973706F6E69626C6500466F726D61B4 +S315E0617770746F2066656368613A00414252495220FE +S315E061778041504C4943414349D34E005B325D5B4CCA +S315E0617790612061706C6963616369F36E206E6F206D +S315E06177A0707565646520656E636F6E747261722073 +S315E06177B06C617C63617270657461206F20646F6374 +S315E06177C0756D656E746F2071756520696E74656E31 +S315E06177D074617C61627269722E2043686571756558 +S315E06177E06520656C206E6F6D6272655D5B20204F12 +S315E06177F04B20205D0053F36C6F206C65637475728A +S315E061780061004E6F6D6272652061637475616C3A99 +S315E061781020205F5F5F5F5F5F5F5F2E5F5F5F005B43 +S315E0617820335D5B4E6F20707565646520636F70696B +S315E0617830617220756E612063617270657461206446 +S315E061784065207C6E6976656C207375706572696FAB +S315E06178507220656E20756E6120646520696E66656D +S315E061786072696F722E5D5B20204F4B20205D005B5D +S315E0617870335D5B4C6F207369656E746F2C20706548 +S315E0617880726F20656C206E6F6D6272652064652033 +S315E061789063617270657461207C6578636564652097 +S315E06178A0656C206EFA6D65726F206DE178696D6F5A +S315E06178B020646520636172616374652D7C726573B2 +S315E06178C0207065726D697469646F732E20457861A5 +S315E06178D06D696E65206C6120646F63756D656E2D93 +S315E06178E07C74616369F36E20736F627265206573A0 +S315E06178F06F73206CED6D697465732E5D5B2020207E +S315E06179004F4B2020205D005469706F2064652069CB +S315E0617910636F6E6F3A00313220486F726173005B5C +S315E0617920315D5B456C2047454D204465736B746FF3 +S315E061793070206E6F20707565646520616272697230 +S315E0617940206DE1737C76656E74616E61732E2043A2 +S315E0617950696572726520616C67756E61206E6F2014 +S315E0617960757361646120616E2D7C746573206465F5 +S315E061797020616272697220756E20646973636F2E2D +S315E06179805D5B20204F4B20205D00466C6F70707907 +S315E061799000656C2065717569706F2064652064654A +S315E06179A0736172726F6C6C6F20456D75544F5300E5 +S315E06179B0456C656D656E746F73206120636F706988 +S315E06179C061723A20205F5F5F5F00204669636865A8 +S315E06179D0726F2000256C6420427974657320656E50 +S315E06179E020256420656C656D656E746F732E004E3F +S315E06179F06F6D627265206465206C612061706C698F +S315E0617A0063616369F36E3A20205F5F5F5F5F5F5F2B +S315E0617A105F2E5F5F5F004E756576612043617270D0 +S315E0617A20657461003C436F6E74726F6C3E20706189 +S315E0617A3072612073616C746172204155544F2F41BC +S315E0617A404343002020496E666F2F52656E6F6D620B +S315E0617A507261722E2E2E2007490042617361646F56 +S315E0617A6020656E206675656E7465732047504C00BF +S315E0617A705B315D5B59612065786973746520756E0C +S315E0617A8020656C656D656E746F20636F6E206573DE +S315E0617A907465206E6F6D6272657C6F20656C2065C2 +S315E0617AA06C656D656E746F2065732064652073F334 +S315E0617AB06C6F206C6563747572612E2050756564B8 +S315E0617AC0657C757361722022496E666F726D616362 +S315E0617AD069F36E2F52656E6F6D62726172227C70B0 +S315E0617AE06172612063616D62696172206C6F73209E +S315E0617AF0617472696275746F732E5D5B20204F4BA2 +S315E0617B0020205D00696E74726F64756369656E6489 +S315E0617B106F20656C206E6F6D627265206465206CA6 +S315E0617B20612000323420486F7261730020204F7209 +S315E0617B3064656E617220706F72207469706F202067 +S315E0617B4020200750005469706F2064652061706C75 +S315E0617B506963616369F36E3A00436C69636B005410 +S315E0617B6069706F7320646520646F63756D656E74AB +S315E0617B706F3A0050756C73652027432720706172F8 +S315E0617B806120636F7272657220656E20756E612029 +S315E0617B9063F36E736F6C61207072696D6974697697 +S315E0617BA061004964656E746966696361646F7220D8 +S315E0617BB0646520756E696461643A20205F004E55A4 +S315E0617BC04556412043415250455441002020456A83 +S315E0617BD065637574617220456D75434F4E20202053 +S315E0617BE05E5A00434F4E46494755524152204150F5 +S315E0617BF04C4943414349D34E00202043616D62695C +S315E0617C006172207265736F6C756369F36E20202013 +S315E0617C10202020202007430053542052414D206408 +S315E0617C206973706F6E69626C65002020466F726D74 +S315E0617C3061746561722E2E2E002020426F72726130 +S315E0617C40722E2E2E20202020202020202007440086 +S315E0617C50202043657272617200BF4E656365736928 +S315E0617C60746120746F6461206C61206D656D6F7203 +S315E0617C7069613F0053690020204D6F7374726172D0 +S315E0617C8020636F6D6F2069636F6E6F7320075300BA +S315E0617C90556E6964616465732047454D444F530091 +S315E0617CA0494E464F524D414349D34E20434152508E +S315E0617CB0455441204E5545564100436172706574A5 +S315E0617CC06173206120636F706961723A20205F5F42 +S315E0617CD05F5F00494E464F524D414349D34E204482 +S315E0617CE0454C20454C454D454E544F2F2052454E0F +S315E0617CF04F4D42524152005B335D5B466F726D613F +S315E0617D0074656172206465737472756972E1207479 +S315E0617D106F646120696E666F726D616369F36E7C33 +S315E0617D2064656C20646973636F20656E206C6120A5 +S315E0617D30756E696461642025633A2E7C50756C7357 +S315E0617D4065204F4B2073F36C6F207369206E6F2053 +S315E0617D506C6520696D706F727461207065722D7CDF +S315E0617D6064657220746F646F73206C6F73206461F5 +S315E0617D70746F732E5D5B20204F4B20207C43616ED8 +S315E0617D8063656C61725D00204F7063696F6E6573E8 +S315E0617D9020004EFA6D65726F2064652063617270D2 +S315E0617DA0657461733A20202020205F5F5F5F5F002A +S315E0617DB053454C4543544F5220444520454C454D2F +S315E0617DC0454E544F53005B325D5B4C6120756E6985 +S315E0617DD06461642025633A206E6F20726573706F0B +S315E0617DE06E64652E20496E736572746520756E20CA +S315E0617DF07C6D6564696F20616465637561646F2C30 +S315E0617E0020636965727265206C6120707565727454 +S315E0617E10612C207369207C736520747261746120C2 +S315E0617E20646520756E20646973636F206475726F33 +S315E0617E302C20636F6D707275656265206C61737C11 +S315E0617E40636F6E6578696F6E65732E5D5B43616EB8 +S315E0617E5063656C61727C5265696E74656E7461723C +S315E0617E605D005B335D5B5369207265616C6D656E68 +S315E0617E7074652071756965726520626F727261728F +S315E0617E8020746F64617C696E666F726D616369F3BC +S315E0617E906E206465206C6120756E6964616420257D +S315E0617EA0633A2070756C73657C4F4B2C2073692047 +S315E0617EB06E6F2C2043616E63656C61725D5B202041 +S315E0617EC04F4B20207C43616E63656C61725D005B44 +S315E0617ED0315D5B5075656465206D6F766572206CAA +S315E0617EE06120706170656C6572612064656E747243 +S315E0617EF06F2064656C207C6573637269746F726907 +S315E0617F006F2047454D2C207065726F206E6F206340 +S315E0617F106F6C6F6361726C617C656E63696D6120C4 +S315E0617F206465206F74726F2069636F6E6F2E5D5B3F +S315E0617F3020204F4B20205D00456C696D696E617252 +S315E0617F400053656C65636369F36E3A202020205FB8 +S315E0617F505F5F5F5F5F5F5F2E5F5F5F005B315D5BB2 +S315E0617F60456C20646F63756D656E746F2073656CC7 +S315E0617F70656363696F6E61646F206E6F20657374AC +S315E0617F80E12061736F2D7C636961646F2061206EAE +S315E0617F90696E67756E612061706C6963616369F3CF +S315E0617FA06E2E205574696C696365207C22436F6E21 +S315E0617FB0666967757261722061706C696361636934 +S315E0617FC0F36E2220706172612061736F6369617221 +S315E0617FD020657374657C7469706F20646520646F75 +S315E0617FE063756D656E746F206120756E6120617079 +S315E0617FF06C6963616369F36E7C6573706563ED6695 +S315E06180006963612E5D5B20204F4B20205D005469E2 +S315E0618010706F20646973636F3A005B325D5B456CD8 +S315E0618020207065726966E97269636F2064652073C1 +S315E0618030616C696461206E6F207265636962652057 +S315E06180406461746F737C616E7465732064652072BC +S315E061805065696E74656E7461722061736567FA72E3 +S315E06180606573652064652071756520657374E17C6F +S315E0618070636F6E65637461646F2C206F6E6C696E9D +S315E0618080652079207469656E6520706170656C2024 +S315E06180906F2066696C6D5D5B43616E63656C617291 +S315E06180A07C5265696E74656E7461725D005B315DAB +S315E06180B05B4E6F20707565646520656C696D696E90 +S315E06180C06172206C6120636172706574617C6D6957 +S315E06180D0736D6120656E2071756520657374E1204D +S315E06180E074726162616A616E646F2E5D5B20204FBE +S315E06180F04B20205D005B335D5B5061726120736193 +S315E06181006C76617220656C204465736B746F702068 +S315E0618110696E736572746520656C7C646973636F9F +S315E06181202047454D20656E206C6120756E696461FE +S315E06181306420413A2C20636965727265206C617CCA +S315E061814070756572746120792070756C7365204F06 +S315E06181504B2E7C53656C656363696F6E6520436125 +S315E06181606E63656C6172207369206E6F20717569EB +S315E06181706572652073616C2D7C76617220656C2019 +S315E06181804465736B746F702E5D5B20204F4B2020CE +S315E06181907C43616E63656C61725D005B315D5B4E14 +S315E06181A06F20736520656E6375656E7472612065B7 +S315E06181B06C2070726F6772616D6120464F524D41FE +S315E06181C0542E2053697C646973706F6E65206465B3 +S315E06181D020646F7320666C6F70707965732C2061B3 +S315E06181E0637469766520464F524D54207C646573AD +S315E06181F0646520656C20646973636F20444F532C1A +S315E06182002073692075736120756E20646973636F8D +S315E0618210206475726F7C636F70696520464F524D5D +S315E0618220415420616C206469726563746F72696F31 +S315E0618230207261ED7A2064656C207C6D69736D6F87 +S315E06182402E5D5B4F4B5D004E6F20436C69636B0047 +S315E06182505B315D5B546F646F206C6F207175652077 +S315E06182606576ED652061206C6120706170656C6595 +S315E061827072612C7C646973636F732C2063617270C5 +S315E0618280657461732C206669636865726F732065D6 +S315E061829074632C207C736572E120626F7272616433 +S315E06182A06F20646520666F726D61205045524D4165 +S315E06182B04E454E54457CA153454120435549444181 +S315E06182C0444F534F215D5B20204F4B20205D004999 +S315E06182D04E5354414C415220554E49444144204409 +S315E06182E04520444953434F0043617270657461733D +S315E06182F0206120626F727261723A20205F5F5F5F18 +S315E0618300005B325D5B4C6F73206461746F732064F4 +S315E061831065206C6120756E69646164202025633A2D +S315E06183202070756564656E7C6573746172206461E5 +S315E0618330F161646F732E20446562657320757361C4 +S315E06183407220656C206D6564696F7C6164656375D7 +S315E061835061646F206F20636F6E656374617220651F +S315E06183606C20646973636F206475726F7C636F728E +S315E061837072656374616D656E74652E5D5B43616E96 +S315E061838063656C61727C5265696E74656E74617207 +S315E06183905D0020204365727261722076656E74615C +S315E06183A06E61005B335D5B456C2047454D204465FE +S315E06183B0736B746F70206E6F20707565646520688D +S315E06183C0616C6C6172206C6F737C666963686572FF +S315E06183D06F73204445534B4C4F2E49434E2C2044FA +S315E06183E045534B48492E49434E2C7C6F20444553B7 +S315E06183F04B544F502E494E4620656E206C6F73206C +S315E0618400656E6F74726E6F732064657C706174689B +S315E06184102064656C20444F532E20204573746F733E +S315E0618420206669636865726F7320736F6E206E652F +S315E06184302D7C6365736172696F732070617261200F +S315E0618440636F7272657220656C2047454D2E5D5B88 +S315E061845043616E63656C61725D004EFA6D65726F64 +S315E061846020646520656C656D656E746F733A202076 +S315E06184702020205F5F5F5F5F00456D75544F53203D +S315E06184807365206469737472696275796520626186 +S315E06184906A6F2047504C005B315D5B4E6F206861CF +S315E06184A07920737566696369656E74652065737055 +S315E06184B06163696F20656E20656C20646973636FC3 +S315E06184C07C7061726120746F646F206C6F2071756E +S315E06184D0652073652071756965726520636F706982 +S315E06184E061722E7C4E6F206F627374616E652C20B3 +S315E06184F0616C67756E6F7320656C656D656E746FC3 +S315E0618500732070756564656E7C68616265727365BA +S315E061851020636F706961646F2E5D5B20204F4B2035 +S315E0618520205D00204F7264656E20003C416C743EB4 +S315E0618530206E6F20696E6963696172206469736335 +S315E06185406F206475726F0020204F7264656E617290 +S315E061855020706F7220666563686120202007540091 +S315E06185604D4D2D44442D4141002020416272697296 +S315E061857000466F726D61746F2074656D706F7261C4 +S315E06185806C3A0020204F7264656E617220706F7282 +S315E0618590206E6F6D6272652020074E002020436574 +S315E06185A0727261722073697374656D612020202037 +S315E06185B05E51004DE17175696E6100566572736970 +S315E06185C0F36E00496E74726F64757A636120656CEF +S315E06185D0206E6F6D627265206465736561646F209C +S315E06185E064656C20646F63756D656E746F0061635D +S315E06185F065707461626C657320706F722065737407 +S315E0618600652070726F6772616D612E005B335D5BD1 +S315E06186105061726120636F7272657220656C20478A +S315E0618620454D204465736B746F7020696E73657236 +S315E061863074657C737520646973636F20656E206C05 +S315E06186406120756E69646164204120792070756C82 +S315E06186507365204F4B206F20456E7465727C506167 +S315E0618660726120766F6C76657220616C20444F533F +S315E06186702F544F5320656C696A612043616E63656F +S315E06186806C61725D5B20204F4B20207C43616E63A1 +S315E0618690656C61725D00446F63756D656E746F7371 +S315E06186A0004279746573206C69627265733A202061 +S315E06186B05F5F5F5F5F5F5F5F5F5F005B325D5B4E2A +S315E06186C06F20736520707565646520657363726993 +S315E06186D062697220656E20656C20646973636F20E0 +S315E06186E06465206C6120756E696461647C25633ABA +S315E06186F0202C20657374E12070726F74656769641C +S315E06187006F20636F6E7472612065736372697475ED +S315E061871072612E7C416E7465732064652072656951 +S315E06187206E74656E7461722064657370726F74E9FC +S315E06187306A616C6F7C6F2063616D62696520656CEF +S315E061874020646973636F2E5D5B43616E63656C6123 +S315E0618750727C5265696E74656E7461725D005B31DF +S315E06187605D5B4E6F2073652070756564652061623F +S315E0618770726972206C6120706170656C6572617C92 +S315E06187807061726120626F7272617220756E2064CF +S315E06187906973636F2C63617270657461207C646F69 +S315E06187A063756D656E746F206F2061706C6963616E +S315E06187B06369F36E2C207C617272E1737472656C2D +S315E06187C06F206861636961206C6120706170656CBE +S315E06187D06572612E5D5B20204F4B20205D005B3230 +S315E06187E05D5B59612065786973746520756E61209A +S315E06187F06361727065746120636F6E206573657C19 +S315E06188006E6F6D627265206F20656C20646973635B +S315E06188106F20657374E1206C6C656E6F2E7C436FBF +S315E06188206D70727565626520656C206E6F6D6272E2 +S315E061883065207920656C206573706163696F7C6C16 +S315E061884069627265206F2063616E63656C652E5D3A +S315E06188505B2043616E63656C6172207C2052656961 +S315E06188606E74656E746172205D00BF436F6E66699A +S315E0618870726D6120626F727261723F0045746971F7 +S315E0618880756574612064656C2069636F6E6F3A200B +S315E0618890205F5F5F5F5F5F5F5F5F5F5F5F00506F3E +S315E06188A072206661766F722C20657870756C73657F +S315E06188B020656C20666C6F70707920792070756CBC +S315E06188C073652052455455524E0050726F6A656326 +S315E06188D0742D49642D56657273696F6E3A20504105 +S315E06188E0434B4147452056455253494F4E0A504FF7 +S315E06188F0542D4372656174696F6E2D446174653A96 +S315E061890020323030332D30372D32392032313A341E +S315E0618910322B303230300A504F2D526576697369A9 +S315E06189206F6E2D446174653A20323030352D3034C6 +S315E06189302D32392031353A34302B303230300A4CF1 +S315E06189406173742D5472616E736C61746F723A20E7 +S315E061895047656F726765204E616B6F73203C676731 +S315E06189606E4061746172692E6F72673E0A4C616E28 +S315E061897067756167652D5465616D3A204E6F6E6509 +S315E06189800A4D494D452D56657273696F6E3A2031D0 +S315E06189902E300A436F6E74656E742D547970653A44 +S315E06189A020746578742F706C61696E3B20636861D1 +S315E06189B0727365743D49534F2D383835392D310A17 +S315E06189C0436F6E74656E742D5472616E7366657213 +S315E06189D02D456E636F64696E673A20386269740A21 +S315E06189E0005B315D5B92A620A7A8E69AA898A3A34F +S315E06189F098209B9CA420E2AE9CA02098A8A19CAB69 +S315E0618A00E620AEE0A8A6209AA0987CA4982098A437 +S315E0618A10A6E5A59CA020E1A2A2A62098A8AE9CE529 +S315E0618A20A62E2082A09820A49820A1E1A49CAB9CCC +S315E0618A307CAEE9A8A62C20A1A29CE5A9AB9C20E688 +S315E0618A40A7A6A0982098A8AE9CE598209B9CA47CBC +S315E0618A50AEA89CA0E19D9CA9AB9C2E5D5B20204FBE +S315E0618A604B20205D0020204EE2A6AA2094E1A1AA37 +S315E0618A70A2A6AA2E2E2E00EEA4A6A39820AD98A1BA +S315E0618A80E2A2A6AC3A20205F5F5F5F5F5F5F5F2E29 +S315E0618A905F5F5F0092A620A9E7A9AB9EA39820A796 +S315E0618AA0E19AE0A99C2100A49820ADA6A8ABE9A92A +S315E0618AB09CAB9C2C20E3209AA8E1AFAB9C20A798C5 +S315E0618AC0A898A3E2ABA8A6ACAA20A7A6AC005B33A4 +S315E0618AD05D5B8AACA7A6E7A398A9AB9C2C2098A27C +S315E0618AE0A2E1209B9CA420A3A7A6A89CE5AB9C2021 +S315E0618AF0A4982099E1A29CAB9C7CA798A898A7E151 +S315E0618B00A4E020ADE1A19CA2A6ACAA20A3E2A9982B +S315E0618B1020A9ABA6A420ABA8E2AEA6A4AB982E7C16 +S315E0618B20839CE5AB9C20ABA620646F63756D656E37 +S315E0618B30746174696F6E209AA09820AB9820E6A85C +S315E0618B40A09820A9ABA6ACAA7CADE1A19CA2A6ACFB +S315E0618B50AA20A3E2A99820A99C20E1A2A2A6ACAA98 +S315E0618B6020ADE1A19CA2A6ACAA2E5D5BEAA1ACA870 +S315E0618B70A65D00839EA3A0A6ACA89AE5983A2020BC +S315E0618B805F5F2D5F5F2D5F5F20200020209298A5BB +S315E0618B90A0A4E6A39EA99E20A198ABE120A3E29AB8 +S315E0618BA09C9FA6AA20202020075A008E8B8E888E55 +S315E0618BB0208E8C8E8B8020898092802092868C207C +S315E0618BC0808C9288829080948600929CA29CACABC9 +S315E0618BD098E5982098A2A2989AE33A20205F5F2FC1 +S315E0618BE05F5F2F5F5F00839CE5AB9C20ABA6206453 +S315E0618BF06F632F6C6963656E63652E74787400AB21 +S315E0618C00A6AC20AD98A1E2A2A6AC20A7A6AC209F17 +S315E0618C10E2A29CAB9C20A498209B9EA3A0A6ACA8B4 +S315E0618C209AE3A99CAB9C2E0083A0E19998A9A398AD +S315E0618C302F82A8E1AFA0A3A6008F908E92888B8643 +S315E0618C4091848891009298AEE7AB9EAB98209BA009 +S315E0618C50A7A2A6E720A1A2E5A13A0020208FA8A6B7 +S315E0618C60ABA0A3E3A99CA0AA2E2E2E008F98A8E123 +S315E0618C70A39CABA8A6A03A20205F5F5F5F5F5F5FC2 +S315E0618C805F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5FAD +S315E0618C905F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F9D +S315E0618CA05F5F5F5F5F5F5F5F5F5F5F5F5F00F0A812 +S315E0618CB09820ABA6AC20626F6F7400808C9288823C +S315E0618CC09080948620948089848A978C202F208056 +S315E0618CD090958488978C00202091E9A9A0A3A6208D +S315E0618CE06465736B746F7020202020202020202023 +S315E0618CF0202020075600202084A3ADE1A4A0A99EF0 +S315E0618D0020E0AA20A19CE5A39CA4A6202020200720 +S315E0618D10530080A8AEE320A69FE6A49EAA0081E167 +S315E0618D20A2AB9C20AB9E2053544152545550209B9C +S315E0618D30A0A9A1E2AB9820ABA6AC2047454D008F38 +S315E0618D408A86908E948E9088849120838891898E8C +S315E0618D5093009CA0A1A6A4E59BA0A6208CE2A6AA6E +S315E0618D602094E1A19CA2A6AA20A198A020A9ACA3E7 +S315E0618D70A7A29EA8E9A9AB9C004279746573209C81 +S315E0618D80A420AEA8E3A99E3A20205F5F5F5F5F5FA4 +S315E0618D905F5F5F5F005B325D5B92A620A7A8E69AA4 +S315E0618DA0A898A3A398209B9CA420A3A7A6A89CE52A +S315E0618DB020A498209BA09899E1A99CA07C9B9C9B70 +S315E0618DC0A6A3E2A49820A9ABA62064726976652081 +S315E0618DD025633A2E2086209BA0A9A1E2AB9820A725 +S315E0618DE0A8E2A79CA020A4987C9CE5A498A020ADCD +S315E0618DF0A6A8A398A8A0A9A3E2A49E2C20A198A0C6 +S315E0618E0020ABA620647269766520A7A8E2A79CA03C +S315E0618E1020A4987C9CE5A498A020A9ACA49B9C9BEB +S315E0618E209CA3E2A4A620A9ABA6A420ACA7A6A2A671 +S315E0618E309AA0A9ABE320A998AA2E5D5BEAA1ACA8AA +S315E0618E40A67C8D98A4E15D0020208FA29EA8A6ADA8 +S315E0618E50A6A8E59CAA2044656B746F702E2E2E2021 +S315E0618E60202000EAA1ACA8A600ABA8E2AEA6A420A9 +S315E0618E70A798A8E19FACA8A62C20A1E1A4AB9C2071 +S315E0618E809BA0A7A2E620A1A2A0A120A9ABA6005B18 +S315E0618E90315D5B839CA420A3A7A6A89CE5AB9C203F +S315E0618EA0A4982099E1A29CAB9C20AD98A1E2A2A6F0 +S315E0618EB0ACAA2C2098A8AE9CE59820E37C9CAD9862 +S315E0618EC0A8A3A69AE2AA20A9AB9EA4209CA7A0ADDE +S315E0618ED0E1A49CA098209CA89A98A9E598AA2E203E +S315E0618EE020EEA3E0AA2C7CA3A7A6A89CE5AB9C20D8 +S315E0618EF0A49820AB982098A4ABA09AA8E1AF9CABCC +S315E0618F009C20A99C209BE5A9A1A6ACAA20E37CA410 +S315E0618F109820AB982099E1A29CAB9C20A9ABA6A432 +S315E0618F2020A1E19BA62098A7A6A8A8A0A3E1ABE013 +S315E0618F30A42E5D5B20204F4B20205D005B315D5BA5 +S315E0618F40839CA420ACA7E1A8AE9CA02098A8A19C94 +S315E0618F50ABE6AA209CA29CE79F9CA8A6AA20AEE9C4 +S315E0618F60A8A6AA7C9AA09820A49820A9ACA4ABA6AE +S315E0618F70A4E5A99CAB9C20AB9EA4209CAD98A8A33C +S315E0618F80A69AE32E2082A09820A4987C9CA29CAC11 +S315E0618F909F9CA8E9A99CAB9C20AEE9A8A62C209F42 +S315E0618FA09820A7A8E2A79CA020A4987C98AD98A059 +S315E0618FB0A8E2A99CAB9C20A3E5982098A7E620AB04 +S315E0618FC0A0AA20E39B9E20A9ACA4ABA6A4A0A9A3DA +S315E0618FD0E2A49CAA7C9CAD98A8A3A69AE2AA2E5D7F +S315E0618FE05B20204F4B20205D002020849AA198AB26 +S315E0618FF0E1A9AB98A99E206469736B206472697676 +S315E0619000652E2E2E0082A09820A498209B9EA3A078 +S315E0619010A6ACA89AE3A99CAB9C20E2A49820A4E222 +S315E0619020A620ADE1A19CA2A620A9ABA6005B335D1B +S315E06190305B444F53206572726F72202325642E5D07 +S315E06190405BEAA1ACA8A65D008E89002020EEA4A60D +S315E0619050A3983A205F5F5F5F5F5F5F5F2E5F5F5FF1 +S315E06190600084A7A0999C9998E5E0A99E2098A4AB75 +S315E0619070A09AA898ADE9A43B0092E7A7A6AA2043E7 +S315E06190805055005B315D5B839CA420A3A7A6A89C99 +S315E0619090E5AB9C20A4982099E1A29CAB9C20ABA671 +S315E06190A0A420A1E19BA67C98A7A6A8A8A0A3E1AB72 +S315E06190B0E0A420A99C20E2A49820A798A8E19FAC0F +S315E06190C0A8A62E5D5B20204F4B20205D005B315DC5 +S315E06190D05B92A620647269766520A7A6AC209B9E0A +S315E06190E0A2E9A998AB9C209B9CA420ACA7E1A8AE81 +S315E06190F09CA02E7C84A2E29AA5AB9C20ABA6209A8A +S315E0619100A8E1A3A39820A7A6AC209CA0A9E19A9880 +S315E0619110AB9C2E5D5BEAA1ACA8A65D00EEAEA000BD +S315E06191208C98A00091A1A29EA8E6AA0086AE9EAB0D +S315E0619130A0A1E1209CADE23A00889BA0E6AB9EABA4 +S315E06191409CAA3A0082A8E1A3A39820647269766535 +S315E06191503A20205F3A0082A09820ABA620A39CA487 +S315E0619160A6E73A005B335D5BEBA49820A9ADE1A28B +S315E0619170A39820A9ACA4E2999E20A39C20ABA67CEF +S315E0619180477261706869637320456E7669726F6E66 +S315E06191906D656E74204D616E616765722028474525 +S315E06191A04D292E7C8F98A898A198A2A6E7A39C202A +S315E06191B0A498209CA7A0A1A6A0A4E0A4E3A99CAB47 +S315E06191C09C20A39C20AB9EA47C8EA3E19B982080EF +S315E06191D0A4E1A7ABACA59EAA20ABA6AC20456D7574 +S315E06191E0544F5320A198A020A4987CACA7A699E1FE +S315E06191F0A2A29CAB9C20E2A498206275672072656E +S315E0619200706F72742E5D5BEAA1ACA8A65D00EEA4F8 +S315E0619210A6A398209BA0A9A1E2AB98AA3A20205FD9 +S315E06192205F5F5F5F5F5F5F5F5F5F0080A8AE9CE5EA +S315E061923098209AA09820A999E3A9A0A3A63A20200C +S315E06192405F5F5F5F008BE29A9C9FA6AA20A99C2044 +S315E061925062797465733A20205F5F5F5F5F5F5F5F2E +S315E06192605F5F004472697665733A005B315D5B8E80 +S315E061927020ACA7A6A2A69AA0A9ABE3AA20A998AA20 +S315E0619280209B9CA420E2AE9CA02098A8A19CABE385 +S315E06192907CA3A4E3A39E209AA09820A49820ABA8DF +S315E06192A0E2A59CA020AB9EA4209CAD98A8A3A69A1B +S315E06192B0E37CA7A6AC209CA7A0A2E2A598AB9C2ED6 +S315E06192C05D5B20204F4B20205D00202091ACA4AB5C +S315E06192D0A6A4A0A9A3E6AA209C9A98A8A3A69AE325 +S315E06192E0AA2E2E2E20200741009CAD98A8A3A69A0F +S315E06192F0E3005B335D5B8AE19FA6AA2091ACA4E1C2 +S315E0619300A8AB9EA99E20235D5BEAA1ACA8A65D0001 +S315E06193105B335D5B8E20ACA7A6A2A69AA0A9ABE360 +S315E0619320AA20A998AA209B9CA420E2AE9CA02098A2 +S315E0619330A8A19CABE37CA3A4E3A39E209AA098207A +S315E0619340A49820ABA8E2A59CA020ABA62047454DFA +S315E0619350204465736B746F702E5D5B20536F727220 +S315E061936079205D0091818691888B8E2094808984B5 +S315E06193708A978C202F208090958488978C008F8A9D +S315E061938086908E948E9088849120948089848A8E4A +S315E061939093008B8B2D86862D959500EEA4A6A398DA +S315E06193A02098A4ABE59AA898ADA6AC3A20205F5F79 +S315E06193B05F5F5F5F5F5F2E5F5F5F00849AA198ABDF +S315E06193C0E1A9AB98A99E0084A7A0999C9998E5E04C +S315E06193D0A99E206F76657277726974653B0084A297 +S315E06193E09CE79F9CA89E204661737452414D009212 +S315E06193F0E7A7A6AA209EA39CA8A6A39EA4E598AAF1 +S315E06194003A00808C8E88828B8020849480908B8ECB +S315E0619410828691005B325D5B92A620A7A8E69AA858 +S315E061942098A3A398209B9CA420A3A7A6A89CE5202B +S315E0619430A4982099A89CE520ABA67CADE1A19CA26D +S315E0619440A620E320ABA62098A8AE9CE5A620A7A619 +S315E0619450AC20A7A8A6A9A7989F9CE5AB9C20A49859 +S315E06194607C98A4A6E5A59CAB9C2E2084A2E29AA555 +S315E0619470AB9C20ABA620E6A4A6A39820A7A6AC2029 +S315E06194809CA0A9E19A98AB9C2E5D5B20204F4B2076 +S315E0619490205D0091ABA6A7008BE6A4A6209AA098D2 +S315E06194A02083A0E19998A9A3980092A8E2AEA6A428 +S315E06194B020E6A4A6A3983A20205F5F5F5F5F5F5FC7 +S315E06194C05F2E5F5F5F005B335D5B839CA420A3A738 +S315E06194D0A6A89CE5AB9C20A4982098A4ABA09AA8EA +S315E06194E0E1AF9CAB9C20E2A49820ADE1A19CA2A651 +S315E06194F07CA99C20E2A49820ACA7A6ADE1A19CA2A0 +S315E0619500E620ABA6AC2E5D5B20204F4B20205D00B4 +S315E06195105B335D5B8AACA7A6E7A398A9AB9C2C20DD +S315E061952098A2A2E120ABA620E6A4A6A398209498EF +S315E0619530A1E2A2A6AC20A7A6AC7C9BE9A998AB9CCC +S315E061954020ACA79CA89998E5A49CA020ABA620A3F3 +S315E0619550E29AA0A9ABA62098A8A09FA3E67CAE98C4 +S315E0619560A898A1ABE3A8E0A42E20839CE5AB9C2060 +S315E0619570ABA620646F63756D656E746174696F6EB9 +S315E0619580209AA0987CAB9820E6A8A09820A9ABA6E3 +S315E0619590A42098A8A09FA3E620AE98A898A1ABE3E3 +S315E06195A0A8E0A420A7A6AC7CA3A7A6A89CE5AB9C53 +S315E06195B020A498209CA0A9E19A9CAB9C2E5D5B209F +S315E06195C020204F4B2020205D0092E7A7A6AA209C91 +S315E06195D0A0A1A6A4A09BE5A6AC3A003132E0A8A67C +S315E06195E0005B315D5B92A62047454D204465736B18 +S315E06195F0746F70209B9CA420E2AE9CA020E1A2A2A5 +S315E061960098209BA0989FE2A9A0A3987CA798A8E13F +S315E06196109FACA8982E208FA8E5A42098A4A6E5A5DE +S315E06196209CAB9C20E2A498209BE5A9A1A62C7CA1F9 +S315E0619630A29CE5A9AB9C20E2A49820A798A8E19F0B +S315E0619640ACA8A620A7A6AC209B9CA47CAEA89EA9AC +S315E0619650A0A3A6A7A6A0E2AB9C2E5D5B20204F4B04 +S315E061966020205D00929EA420A6A3E19B982098A469 +S315E0619670E1A7ABACA59EAA20ABA6AC20456D75541F +S315E06196804F530080A8AE9CE598209AA0982098A4B4 +S315E0619690ABA09AA898ADE33A20205F5F5F5F0020B8 +S315E06196A080A8AE9CE5A62000256C6420627974658D +S315E06196B07320AEA89EA9A0A3A6A7A6A0A6E7A4AB81 +S315E06196C098A020A99C2025642098A8AE9CE5982EB8 +S315E06196D000EEA4A6A39820A7A8A69AA8E1A3A398BA +S315E06196E0ABA6AA3A20205F5F5F5F5F5F5F5F2E5F39 +S315E06196F05F008CE2A6AA20ADE1A19CA2A6AA008F9A +S315E061970098ABE3A9AB9C203C436F6E74726F6C3E81 +S315E0619710209AA09820A49820A798A898A1E1A3AF41 +S315E06197209CAB9C204155544F2F4143430020208FF1 +S315E0619730A29EA8A6ADA6A8E59CAA2F8B9CABA6A4E3 +S315E0619740A6A398A9E598200749008198A9A0A9A3AD +S315E0619750E2A4A6A020A99C2047504C20736F7572A5 +S315E06197606365005B315D5BEBA4982098A8AE9CE5F0 +S315E0619770A620A39C2098ACABE620ABA620E6A4A6E7 +S315E0619780A39820ACA7E1A8AE9CA020E39B9E7CA910 +S315E06197909C2098ACABE620ABA620ADE1A19CA2A64D +S315E06197A02C20E320ABA62098A8AE9CE5A620E2A0FB +S315E06197B0A498A07C526561642D4F6E6C792E2095DC +S315E06197C0A89EA9A0A3A6A7A6A0E3A9AB9C20AB9E51 +S315E06197D0A4209CA4ABA6A2E37C22496E666F2F52BD +S315E06197E0656E616D6522209AA09820A4982098A262 +S315E06197F0A2E1A59CAB9C20AB9EA47CA198ABE1A920 +S315E0619800AB98A99E20ABA6AC2098A8AE9CE5A6AC89 +S315E06198102E5D5B20204F4B20205D00A9AB9E20ADE5 +S315E0619820E6A8A39820A7A6AC209CA398AD98A4E54A +S315E06198309D9CAB98A020ABA620E6A4A6A398003297 +S315E061984034E0A8A60020209298A5A0A4E6A39EA94C +S315E06198509E20A198ABE120ABE7A7A620202020209F +S315E0619860202007500092E7A7A6AA209CAD98A8A35E +S315E0619870A69AE3AA3A0089A2E5A1008F98ABE3A98B +S315E0619880AB9C20274327209AA09820A49820ABA8D8 +S315E0619890E2A59CAB9C20A7A8E9A0A39820A3E598A4 +S315E06198A020A1A6A4A9E6A2980092E7A7A6A020987F +S315E06198B0A8AE9CE5E0A43A0082A8E1A3A39820645F +S315E06198C0726976653A20205F008C848E912094805F +S315E06198D089848A8E9100202084A1ABE2A29CA99E14 +S315E06198E020456D75434F4E202020202020202020EA +S315E06198F05E5A0091938C928E8C88918B8E912084A6 +S315E06199009480908B8E82869100202080A2A2989A84 +S315E0619910E32098A4E1A2ACA99EAA202020202020E1 +S315E0619920202020202007430084A29CE79F9CA89EDC +S315E06199302053542D52414D002020466F726D617463 +S315E06199402E2E2E0020209199E3A9A0A3A62E2E2EDD +S315E061995020202020202020202020202020200744B5 +S315E061996000202089A29CE5A9A0A3A60095A89CA0B9 +S315E0619970E19D9CAB98A020A7A2E3A89E20A3A4E3C7 +S315E0619980A39E3B00202084A3ADE1A4A0A99E20E094 +S315E0619990AA209CA0A1A6A4E59BA098202020202037 +S315E06199A020075300436F7079726967687420286392 +S315E06199B0292098A7E60044726976657320ABA6AC68 +S315E06199C02047454D444F53008F8A86908E948E9002 +S315E06199D0888491208C848E9320948089848A8E9366 +S315E06199E00094E1A19CA2A6A0209AA0982098A4AB9D +S315E06199F0A09AA898ADE33A20205F5F5F5F008F8A07 +S315E0619A0086908E948E908884912080909584888EBD +S315E0619A1093202F208B84928E8C8E8B809188800010 +S315E0619A205B335D5B92A620ADA6A8A3E1A8A0A9A33E +S315E0619A3098209F982091818691848820E6A298203B +S315E0619A40AB98209B9C9BA6A3E2A4987CA9ABA6209D +S315E0619A5064726976652025633A2E208F98ABE3A917 +S315E0619A60AB9C204F4B20A3E6A4A62098A4209B9C08 +S315E0619A70A47CA998AA209CA49BA098ADE2A8A6ACD8 +S315E0619A80A420AB98209B9C9BA6A3E2A49820A9ABBB +S315E0619A909E209BA0A9A1E2AB982E5D5B20208E89DA +S315E0619AA020207CEAA1ACA8A65D002084A7A0A2A69E +S315E0619AB09AE2AA200080A8A09FA3E6AA20AD98A179 +S315E0619AC0E2A2E0A43A202020202020205F5F5F5FB1 +S315E0619AD05F00848F888A8E828480912080909584CD +S315E0619AE088978C005B325D5B92A6206472697665CD +S315E0619AF0202563209B9CA42098A4AB98A7A6A1A847 +S315E0619B00E5A49CAB98A02E208FA8E2A79CA07CA49C +S315E0619B109820AEA89EA9A0A3A6A7A6A09CE5AB9C0B +S315E0619B2020ABA620A9E0A9ABE6209CE59BA6AA7C92 +S315E0619B309BA0A9A1E2AB98AA2C20A198A020A49809 +S315E0619B4020A1A29CE5A99CAB9C20ABA620A7A6A8D8 +S315E0619B50ABE1A1A02E7C80A420ABA620A7A8E699C4 +S315E0619B60A29EA398209CE5A498A020A39C20A9A1ED +S315E0619B70A29EA8E6209BE5A9A1A62C7C9CA2E29ADE +S315E0619B80A5AB9C20AB9E20A9ACA49B9CA9A3A6A255 +S315E0619B90A69AE59820ABA6AC2E5D5BEAA1ACA8A639 +S315E0619BA07C8D98A4E15D005B335D5B80A4209CE5E0 +S315E0619BB0A9AB9C20A9E59AA6ACA8A6AA20E6A8A08E +S315E0619BC0209FE2A29CAB9C20A49820A999E3A99C42 +S315E0619BD0AB9C7C8E8A8020AB98209B9C9BA6A3E263 +S315E0619BE0A49820A9ABA62064726976652025633ABC +S315E0619BF02C20A1E1A4AB9C7CA1A2E5A120A9ABA606 +S315E0619C00204F4B2E2080A2A2A0E9AA2C20A1E1A49C +S315E0619C10AB9C20A1A2A0A120A9ABA67CEAA1ACA89D +S315E0619C20A62E5D5B20204F4B20207CEAA1ACA8A646 +S315E0619C305D005B315D5B8BA7A6A89CE5AB9C20A430 +S315E0619C40982099E1A29CAB9C20ABA6A420A1E19BC4 +S315E0619C50A67C98A7A6A8A8A0A3E1ABE0A420A99CAE +S315E0619C6020E1A2A29E20ABA6A7A69F9CA9E598208B +S315E0619C70A9ABA67C47454D204465736B746F702C28 +S315E0619C802098A2A2E1209B9CA420A3A7A6A89CE57C +S315E0619C90AB9C20A4987CABA6A420ABA6A7A69F9C70 +S315E0619CA0ABE3A99CAB9C20A7E1A4E020A99C20E1C1 +S315E0619CB0A2A2A6209CA0A1A6A4E59BA0A62E5D5B80 +S315E0619CC020204F4B20205D0080AD98E5A89CA99EA1 +S315E0619CD00084A7A0A2A69AE33A20205F5F5F5F5F58 +S315E0619CE05F5F5F2E5F5F5F005B315D5B92A6209C8D +S315E0619CF0E59BA6AA2098A8AE9CE5A6AC20A7A6AC53 +S315E0619D00209CA7A0A2E2A598AB9C209B9CA4209C4A +S315E0619D10E5A498A07CA9ACA4ABA6A4A0A9A3E2A45F +S315E0619D20A620A498209BA6ACA29CE79CA020A39C1D +S315E0619D3020A3E5987CA9AC9AA19CA1A8A0A3E2A4E2 +S315E0619D409E209CAD98A8A3A69AE32E2095A89EA9ED +S315E0619D50A0A3A6A7A6A0E3A9AB9C20ABA67C91ACE9 +S315E0619D60A4ABA6A4A0A9A3E62084AD98A8A3A69ACD +S315E0619D70E3AA209AA09820A49820A9ACAEA99CABAE +S315E0619D80E5A99CAB9C7C98ACABE620ABA6209CE5B8 +S315E0619D909BA6AA2098A8AE9CE5A6AC20A39C20A38E +S315E0619DA0E598209CAD98A8A3A69AE32E5D5B20205A +S315E0619DB04F4B20205D0092E7A7A6AA209BE5A9A1CB +S315E0619DC0A6AC3A005B325D5B92A620A79CA8A0ADEB +S315E0619DD09CA8A098A1E620A998AA209B9CA420A271 +S315E0619DE098A399E1A49CA07C9B9C9BA6A3E2A498E2 +S315E0619DF02E208FA8A0A420A598A498A7A8A6A9A775 +S315E0619E00989FE3A99CAB9C2C7CA9A09AA6ACA89C44 +S315E0619E10ACAB9CE5AB9C20E6ABA0209E20A9ACA9AF +S315E0619E20A19CACE320E2AE9CA020A89CE7A3982C81 +S315E0619E307C9CE5A498A0206F6E2D6C696E652C20E4 +S315E0619E40A198A020E2AE9CA020AE98A8ABE520E365 +S315E0619E5020ADE5A2A32E5D5BEAA1ACA8A67C8D98B8 +S315E0619E60A4E15D005B315D5B839CA420A3A7A6A80A +S315E0619E709CE5AB9C20A49820A999E3A99CAB9C2086 +S315E0619E80ABA620ADE1A19CA2A620A9ABA6A47CA627 +S315E0619E90A7A6E5A6209BA6ACA29CE79CAB9C2098D6 +S315E0619EA0ACABE320AB9E20A9ABA09AA3E32E5D5BAE +S315E0619EB020204F4B20205D005B335D5B82A09820C4 +S315E0619EC0A49820A9E9A99CAB9C20ABA62064657304 +S315E0619ED06B746F702C2099E1A2AB9C20AB9E7C9B4E +S315E0619EE0A0A9A1E2AB9820ABA6AC2047454D2044A2 +S315E0619EF045534B544F5020A9ABA6206472697665F1 +S315E0619F0020413A2CA1A29CE5A9AB9C20ABA620A757 +S315E0619F10A6A8ABE1A1A02C20A198A020A1E1A4ABC9 +S315E0619F209C20A1A2E5A120A9ABA67C4F4B2E208F58 +S315E0619F3098ABE3A9AB9C20EAA1ACA8A62098A420A3 +S315E0619F409B9CA4209FE2A29CAB9C20A4987CA9E95F +S315E0619F50A99CAB9C20ABA6206465736B746F702E75 +S315E0619F605D5B20204F4B20207CEAA1ACA8A65D007A +S315E0619F705B315D5B839CA420A3A7A6A8E920A49896 +S315E0619F802099A8E920ABA620A7A8E69AA898A3A35A +S315E0619F909820464F524D41542E2080A47CAEA89E17 +S315E0619FA0A9A0A3A6A7A6A09CE5AB9C209BE7A620BB +S315E0619FB064726976652C20A7A8E2A79CA020A49884 +S315E0619FC07CADA6A8A3E1A89CAB9C209BA0A9A1E23D +S315E0619FD0AB9CAA2098A7E620ABA620444F532E203F +S315E0619FE080A420E2AE9CAB9C7CA9A1A29EA8E620BF +S315E0619FF09BE5A9A1A62C2098A4ABA09AA8E1AFAB5A +S315E061A0009C20ABA620464F524D415420A9AB9E7C85 +S315E061A010726F6F74206469726563746F72792E5DB5 +S315E061A0205B4F4B5D0095E0A8E5AA20A1A2E5A10002 +S315E061A0305B315D5B8E20A1E19BA6AA2098A7A6A8CD +S315E061A040A8A0A3E1ABE0A4209CE5A498A020ABA6E0 +S315E061A050209CA0A1A6A4E59BA0A67CA9ABA620A670 +S315E061A060A7A6E5A62099E19D9CAB9C209BA0A9A112 +S315E061A070E2AB9CAA2C20ADE1A19CA2A6ACAA2C7C69 +S315E061A08098A8AE9CE5982C20E3209CAD98A8A3A661 +S315E061A0909AE2AA20A7A6AC209FE2A29CAB9C20A450 +S315E061A0A0987CA999E3A99CAB9C208B8E8C888B804C +S315E061A0B0215D5B20204F4B20205D00848289809268 +S315E061A0C08091928091862044524956450094E1A15F +S315E061A0D09CA2A6A0209AA09820A999E3A9A0A3A6EC +S315E061A0E03A20205F5F5F5F005B325D5B839C9BA68E +S315E061A0F0A3E2A49820A9ABA62064726976652025BF +S315E061A100633A20A3A7A6A89CE520A4987C98A2A27E +S315E061A110A6A0E99F9EA198A42E208FA8E2A79CA065 +S315E061A12020A49820AEA89EA9A0A3A6A7A6A09CE578 +S315E061A130AB9C20ABA67CA9E0A9ABE6209CE59BA6FF +S315E061A140AA209BA0A9A1E2AB98AA2E208FA8E2A79C +S315E061A1509CA020A4987CA9ACA49BE2A99CAB9C2082 +S315E061A160ABA620A9A19EA8E620A998AA209BE5A96D +S315E061A170A1A620A9E0A9ABE12E5D5BEAA1ACA8A608 +S315E061A1807C8D98A4E15D00202089A29CE5A9A0A32D +S315E061A190A620A798A8989FE7A8A6AC005B335D5B6D +S315E061A1A092A62047454D204465736B746F70209B82 +S315E061A1B09CA420A3A7A6A89CE520A4982099A89C86 +S315E061A1C0E520AB987C98A8AE9CE598204445534B36 +S315E061A1D04C4F2E49434E2C204445534B48492E491A +S315E061A1E0434E2C20E37C4445534B544F502E494E0D +S315E061A1F04620A9ABA62073656172636820706174BD +S315E061A2006820ABA6AC20444F532E7C80ACABE120FA +S315E061A210AB982098A8AE9CE59820AEA89CA0E19D5D +S315E061A220A6A4AB98A0209AA09820A4987CA29CA012 +S315E061A230ABA6ACA89AE3A99CA020ABA62047454D66 +S315E061A240204465736B746F702E5D5BEAA1ACA8A662 +S315E061A2505D0080A8A09FA3E6AA2098A8AE9CE5E051 +S315E061A260A43A20202020205F5F5F5F5F0092A620F6 +S315E061A270456D75544F53209BA098A4E2A39CAB987F +S315E061A280A020ACA7E620ABA62047504C005B315D31 +S315E061A2905B8E209BE5A9A1A6AA209B9CA420E2AEA9 +S315E061A2A09CA02098A8A19CABE620AEE9A8A6209A3E +S315E061A2B0A09820AB987C9B9C9BA6A3E2A49820A740 +S315E061A2C0A6AC20A7A8A6A9A7989F9CE5AB9C20A4CD +S315E061A2D0982098A4ABA09AA8E1AF9CAB9C2E7CEEAB +S315E061A2E0A3E0AA2C20A39CA8A0A1E12098A8AE9CFB +S315E061A2F0E59820A3A7A6A89CE520A49820E2AEA6AF +S315E061A300ACA47C98A4ABA09AA898AD9CE520E39B0D +S315E061A3109E2E5D5B20204F4B20205D002083A09C1C +S315E061A320AC9FE2AB9EA99E20008F98ABE3A9AB9C64 +S315E061A330203C416C7465726E6174653E209AA098AA +S315E061A34020A49820A798A898A1E1A3AF9CAB9C20F4 +S315E061A3504844440020209298A5A0A4E6A39EA99E25 +S315E061A36020A198ABE1209EA39CA8A6A39EA4E59814 +S315E061A3702007540086862D8B8B2D9595002020EA4B +S315E061A380A4A6A09AA3980092E7A7A6AA20AEA8E6FB +S315E061A390A4A6AC3A0020209298A5A0A4E6A39EA923 +S315E061A3A09E20A198ABE120E6A4A6A39820202020D8 +S315E061A3B02020074E00202053687574646F776E2005 +S315E061A3C02020202020202020202020202020205E08 +S315E061A3D0510093A7A6A2A69AA0A9ABE3AA00EBA116 +S315E061A3E09BA6A99E0082A8E1AFAB9C20ABA620E626 +S315E061A3F0A4A6A39820ABA6AC2098A8AE9CE5A6AC93 +S315E061A40020A7A6AC209FE2A29CAB9C009BE2AE9CFF +S315E061A410AB98A02098ACABE3209E209CAD98A8A316 +S315E061A420A69AE32E005B335D5B82A09820A4982018 +S315E061A430ABA8E2A59CAB9C20ABA62047454D20444A +S315E061A44065736B746F702C2099E1A2AB9C20AB9E17 +S315E061A4507C9BA0A9A1E2AB9820ABA6AC2047454D79 +S315E061A460204445534B544F5020A9ABA620647269F2 +S315E061A4707665208020A198A07CA1E1A4AB9C20A177 +S315E061A480A2A0A120A9ABA6208E8920E320A798AB44 +S315E061A490E3A9AB9C2052657475726E2E2082A098FA +S315E061A4A07C9CA7A0A9ABA6A8ADE320A9ABA6204456 +S315E061A4B04F532C20A1E1A4AB9C20A1A2A0A120A98D +S315E061A4C0ABA620EAA1ACA8A62E5D5B20208E8920F2 +S315E061A4D0207CEAA1ACA8A65D0098A8AE9CE59800B0 +S315E061A4E084A29CE79F9CA8982062797465733A2060 +S315E061A4F020205F5F5F5F5F5F5F5F5F5F005B325D35 +S315E061A5005B839CA420A3A7A6A89CE5AB9C20A4980A +S315E061A510209AA8E1AF9CAB9C20A9ABA620647269A6 +S315E061A52076657C25633A209AA098ABE5209CE5A404 +S315E061A53098A020A39EAE98A4A0A1E1207772697449 +S315E061A540652D7C70726F7465637465642E208FA867 +S315E061A550A0A420A598A498A7A8A6A9A7989FE3A9CF +S315E061A5609CAB9C2C7C999AE1A2AB9C20ABA6207714 +S315E061A570726974652D70726F74656374207461625B +S315E061A58020E37CABA8ACA7E3A9AB9C20AB9E209B68 +S315E061A590A0A9A1E2AB982E5D5BEAA1ACA8A67C8DF1 +S315E061A5A098A4E15D005B315D5B839CA420A3A7A6D3 +S315E061A5B0A89CE5AB9C20A4982098A4A6E5A59CABB5 +S315E061A5C09C20ABA6209CA0A1A6A4E59BA0A67CAB03 +S315E061A5D0E0A420A9A1A6ACA7A09BA0E9A420A99C80 +S315E061A5E020A798A8E19FACA8A62E2082A09820A4D7 +S315E061A5F0987CA999E3A99CAB9C20E2A49820ADE163 +S315E061A600A19CA2A62C2098A8AE9CE5A620E3209C5E +S315E061A610AD98A8A3A69AE32C7CA9E7A8AB9C20AB4E +S315E061A620A620A9ABA6A420A1E19BA62098A7A6A8EF +S315E061A630A8A0A3E1ABE0A42E5D5B20204F4B2020D8 +S315E061A6405D005B325D5BEBA498AA20ADE1A19CA2C3 +S315E061A650A6AA20A39C2098ACABE620ABA620E6A4F4 +S315E061A660A6A39820E39B9E7CACA7E1A8AE9CA02024 +S315E061A670E320A6209BE5A9A1A6AA20A998AA209CE9 +S315E061A680E5A498A0209A9CA3E1ABA6AA2E7C8FA80C +S315E061A690A6A9A7989FE3A9AB9C20A39C20E2A498D6 +S315E061A6A020A4E2A620E6A4A6A3982C20E32098A104 +S315E061A6B0ACA8E9A9AB9C7CA198A0209CA2E29AA552 +S315E061A6C0AB9C20ABA6A4209CA29CE79F9CA8A6205D +S315E061A6D0AEE9A8A62E5D5B20EAA1ACA8A6207C2007 +S315E061A6E08D98A4E1205D0084A7A0999C9998E5E006 +S315E061A6F0A99E209BA0989AA898ADE9A43B00EEA4F8 +S315E061A700A6A398209CA0A1A6A4A09BE5A6AC3A200E +S315E061A710205F5F5F5F5F5F5F5F5F5F5F5F008F9837 +S315E061A720A898A198A2E920999AE1A2AB9C20AB9E58 +S315E061A730209BA0A9A1E2AB9820A198A020A798AB05 +S315E061A740E3A9AB9C2052455455524E0050726F6A54 +S315E061A7506563742D49642D56657273696F6E3A202F +S315E061A760454D55544F5320626574610A504F542DDF +S315E061A7704372656174696F6E2D446174653A203226 +S315E061A7803031302D30392D31322030383A33332B78 +S315E061A790303430300A504F2D5265766973696F6E89 +S315E061A7A02D446174653A20323031302D30392D31A6 +S315E061A7B0322031313A35302B303430300A4C6173E6 +S315E061A7C0742D5472616E736C61746F723A20446970 +S315E061A7D06D6120536F626F6C6576203C6176746162 +S315E061A7E06E64696C333340676D61696C2E636F6D5E +S315E061A7F03E0A4C616E67756167652D5465616D3AB8 +S315E061A800205275737369616E0A4D494D452D5665E2 +S315E061A8107273696F6E3A20312E300A436F6E7465DA +S315E061A8206E742D547970653A20746578742F706C06 +S315E061A83061696E3B20636861727365743D727573BD +S315E061A8407369616E2D617461726973740A436F6EC7 +S315E061A85074656E742D5472616E736665722D456EA4 +S315E061A860636F64696E673A20386269740A005B31C6 +S315E061A8705D5BCFF0EEE3F0E0ECECE020EDE520E8C7 +S315E061A880ECE5E5F220E2EEE7ECEEE6EDEEF1F2E89C +S315E061A8907CEEF2EAF0FBF2FC20E5F9E520EEE4E895 +S315E061A8A0ED20E4EEEAF3ECE5EDF22E7CC7E0EAF0CA +S315E061A8B0EEE9F2E520E2F1E520EDE5EDF3E6EDFB2B +S315E061A8C0E520E4EEEAF3ECE5EDF2FB2C7CF7F2EE63 +S315E061A8D0E1FB20EEF1E2EEE1EEE4E8F2FC20F0E508 +S315E061A8E0F1F3F0F1FB2E5D5B2020CECA20205D0006 +S315E061A8F02020CDEEE2E0FF20EFE0EFEAE02E2E2E23 +S315E061A90000C8ECFF20EFE0EFEAE83A20205F5F5F06 +S315E061A9105F5F5F5F5F2E5F5F5F00256C6420CAC12A +S315E061A92000F5EEF2E8F2E520E7E0E3F0F3E7E8F2DE +S315E061A930FC20E8EBE820E2E2E5E4E8F2E520EFE09E +S315E061A940F0E0ECE5F2F0FB2C00D1E8F1F2E5ECE0C9 +S315E061A95020EEF1F2E0EDEEE2EBE5EDE0210A005BFF +S315E061A960335D5BCA20F1EEE6E0EBE5EDE8FE20E281 +S315E061A970FB20EDE520ECEEE6E5F2E520EFEEECE539 +S315E061A980F1F2E8F2FC20E5F9E57CEEE4EDF320EFA7 +S315E061A990E0EFEAF320E2EDF3F2F0E820F2E5EAF344 +S315E061A9A0F9E5E92E7CD7E8F2E0E9F2E520E4EEEAC2 +S315E061A9B0F3ECE5EDF2E0F6E8FE20EEE120EEE3F021 +S315E061A9C0E0EDE8F7E5EDE8FFF57CE220F1EEE7E4BE +S315E061A9D0E0EDE8E820EFE0EFEEEA20E2EDF3F2F019 +S315E061A9E0E820E4F0F3E3EEE920EFE0EFEAE82E5D5C +S315E061A9F05BCEF2ECE5EDE05D00D1EEE7E4E0EDEEB5 +S315E061AA003A205F5F2D5F5F2D5F5F20202020002071 +S315E061AA1020D1EEF0F2E8F0EEE2E0F2FC20EFEE209B +S315E061AA20F0E0E7ECE5F0F320075A00CACECDD4CBEF +S315E061AA30C8CAD220C8CCC5CD20CFD0C820CACECF17 +S315E061AA40C8D0CEC2C0CDC8C800C8E7ECE5EDE5ED3B +S315E061AA50EE3A20202020205F5F2F5F5F2F5F5F004F +S315E061AA60D1ECEEF2F0E820646F632F6C6963656E9A +S315E061AA7073652E74787420E4EBFF20E4E5F2E0EB95 +S315E061AA80E5E900F1EEE7E4E0E2E0E5ECEEE920EFAE +S315E061AA90E0EFEAE82E00D7F22E2FC7E0EF2E00CDE9 +S315E061AAA0C0D1D2D0CEC9CAC800D1EAEEF0EEF1F299 +S315E061AAB0FC20E4E22E20EDE0E6E0F2E8FF3A002059 +S315E061AAC020CDE0F1F2F0EEE9EAE82E2E2E00CFE0BD +S315E061AAD0F0E0ECE5F2F0FB3A20205F5F5F5F5F5FFD +S315E061AAE05F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F2F +S315E061AAF05F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F1F +S315E061AB005F5F5F5F5F5F5F5F5F5F5F5F5F5F00C20A +S315E061AB10F0E5ECFF20E7E0E3F0F3E7EAE800CACE30 +S315E061AB20CFC8D0CEC2C0D2DC20CFC0CFCAC8202F1A +S315E061AB3020D4C0C9CBDB002020D1EEF5F0E0EDE812 +S315E061AB40F2FC20EDE0F1F2F0EEE9EAE820202020E7 +S315E061AB5020200756002020CFEEEAE0E7E0F2FC2075 +S315E061AB60EAE0EA20F2E5EAF1F2202020202007532C +S315E061AB7000C7E0EFF3F1EA20F1E8F1F2E5ECFB0082 +S315E061AB80C2F1F2E0E2FCF2E520E2E0F820E7E0E3A0 +S315E061AB90F0F3E7EEF7EDFBE920E4E8F1EA2047457B +S315E061ABA04D00C8CDD4CED0CCC0D6C8DF20CE20C42F +S315E061ABB0C8D1CAC500CDEEE2E0FF20EFE0EFEAE002 +S315E061ABC020E820F1EBE5E4F3E9F2E520F3EAE0E7FA +S315E061ABD0E0EDE8FFEC20EEEAEDE02C00C1E0E9F221 +S315E061ABE020E8F1EFEEEBFCE7F3E5F2F1FF3A5F5FC8 +S315E061ABF05F5F5F5F5F5F5F5F005B325D5BCFF0EE24 +S315E061AC00E3F0E0ECECE020EDE520ECEEE6E5F220C9 +S315E061AC10EFF0EEF7E8F2E0F2FC20E4E0EDEDFBE5E3 +S315E061AC207CF120E4E8F1EAE02025633A202E202059 +S315E061AC30C4E8F1EA20E4EEEBE6E5ED7CE1FBF2FC6B +S315E061AC4020EEF2F4EEF0ECE0F2E8F0EEE2E0ED2C8C +S315E061AC5020E8ECE5F2FC20EFE8F2E0EDE8E57CE8FF +S315E061AC6020E1FBF2FC20EFF0E0E2E8EBFCEDEE2028 +S315E061AC70EFEEE4EAEBFEF7E5ED20EA7CE2E0F8E50B +S315E061AC80ECF320EAEEECEFFCFEF2E5F0F32E5D5B31 +S315E061AC90CEF2ECE5EDE07CCFEEE2F2EEF05D0020A7 +S315E061ACA020C8EDF4EEF0ECE0F6E8FF20EE20E4E516 +S315E061ACB0F1EAF2EEEFE52E2E2E20202000CEF2EC28 +S315E061ACC0E5EDE000EFEEE6E0EBF3E9F1F2E020E45A +S315E061ACD0E2E0E6E4FB20EAEBE8EAEDE8F2E520ED26 +S315E061ACE0E020E8EAEEEDEAE5005B315D5BC2FB2080 +S315E061ACF0EDE520ECEEE6E5F2E520EFE5F0E5F2E004 +S315E061AD00F9E8F2FC20E8EAEEEDEAE820EFE0EFEEC2 +S315E061AD10EA2C7CE4EEEAF3ECE5EDF2EEE220E8EB38 +S315E061AD20E820EFF0EEE3F0E0ECEC20EDE020E4E5A6 +S315E061AD30F1EAF2EEEF2E7CCEE4EDE0EAEE20E2FB24 +S315E061AD4020ECEEE6E5F2E520F1EAEEEFE8F0EEE2A0 +S315E061AD50E0F2FC20E8F520EDE020E4E8F1EAE87CC9 +S315E061AD60E8EBE820EFE5F0E5F2E0F9E8F2FC20E275 +S315E061AD7020CAEEF0E7E8EDF32E5D5B2020CECA2037 +S315E061AD80205D005B315D5BCDE5E4EEF1F2E0F2EE94 +S315E061AD90F7EDEE20EFE0ECFFF2E820E4EBFF207C5C +S315E061ADA0EAEEEDF4E8E3F3F0E0F6E8E820E4E0ED7E +S315E061ADB0EDEEE920EFF0EEE3F0E0ECECFB2E7CD794 +S315E061ADC0F2EEE1FB20EEF1E2EEE1EEE4E8F2FC2008 +S315E061ADD0EFE0ECFFF2FC2C7CE2FB20E4EEEBE6ED4F +S315E061ADE0FB20F3E4E0EBE8F2FC20EEE4EDF320E8AF +S315E061ADF0E77CEAEEEDF4E8E3F3F0E8F0F3E5ECFBAB +S315E061AE00F520E220E4E0EDEDEEE57CE2F0E5ECFF55 +S315E061AE1020EFF0EEE3F0E0ECEC2E5D5B2020CECAB5 +S315E061AE2020205D002020D3F1F2E0EDEEE2E8F2FCD5 +S315E061AE3020E4E8F1EA2E2E2E00D7F2EEE1FB20F1D6 +S315E061AE40EEE7E4E0F2FC20EDEEE2F3FE20EFE0EF88 +S315E061AE50EAF320E2EDF3F2F0E820F2E5EAF3F9E570 +S315E061AE60E92C20005B335D5BCEF8E8E1EAE0204463 +S315E061AE704F53202325642E5D5BCEF2ECE5EDE05D7C +S315E061AE8000CECA00C8ECFF3A20205F5F5F5F5F5F7C +S315E061AE905F5F2E5F5F5F00CFEEE4F2E2E5F0E6E44E +S315E061AEA0E0F2FC20EAEEEFE8F0EEE2E0EDE8E53F25 +S315E061AEB000C2E5F0F1E8FF20456D75544F5300D2CD +S315E061AEC0E8EF20435055005B315D5BC2FB20EDE569 +S315E061AED020ECEEE6E5F2E520EFE5F0E5F2E0F9E813 +S315E061AEE0F2FC20E8EAEEEDEAF37CCAEEF0E7E8EDA3 +S315E061AEF0FB20E220EEEAEDEE2E5D5B20204F4B205B +S315E061AF00205D005B315D5BC2FBE1F0E0EDEDFBE90D +S315E061AF1020E2E0ECE820E4E8F1EA20EDE520F1F377 +S315E061AF20F9E5F1F2E2F3E5F22E7CCFEEE6E0EBF362 +S315E061AF30E9F1F2E020EFF0EEE2E5F0FCF2E520E89F +S315E061AF40E4E5EDF2E8F4E8EAE0F2EEF07CE4E8F17B +S315E061AF50EAE020E5F9E520F0E0E72E5D5BCEF2EC94 +S315E061AF60E5EDE05D00CDE5F200C2EAEB00D5E0F0AB +S315E061AF70E400C7E2F3EAEEE2FBE520FDF4F4E5EA9C +S315E061AF80F2FB3A002020C0F2F0E8E1F3F2FB3A008E +S315E061AF90C1F3EAE2E020E4E8F1EAE03A20205F3A50 +S315E061AFA000CA20E2FBEFE0E4E0FEF9E8EC20ECE544 +S315E061AFB0EDFE3A005B335D5BCEF8E8E1EAE020471F +S315E061AFC07261706869637320456E7669726F6E6DE2 +S315E061AFD0656E74204D616E61676572202847454DE7 +S315E061AFE0292E7CCFEEE6E0EBF3E9F1F2E020F1E247 +S315E061AFF0FFE6E8F2E5F1FC20F120EAEEECE0EDE4D3 +S315E061B000EEE97CF0E0E7F0E0E1EEF2F7E8EAEEE2C5 +S315E061B01020456D75544F5320E820EFEEF8EBE8F2EA +S315E061B020E520E8EC7CF1EEEEE1F9E5EDE8E520EE30 +S315E061B030E120EEF8E8E1EAE52E5D5BCEF2ECE5EDE6 +S315E061B040E05D00202020CCE5F2EAE020E4E8F1EAE8 +S315E061B050E03A202020205F5F5F5F5F5F5F5F5F5F59 +S315E061B0605F00D3E4E0EBE8F2FC20F4E0E9EBEEE24A +S315E061B0703A205F5F5F5F0020D0E0E7ECE5F020E239 +S315E061B08020C1E0E9F2E0F53A20205F5F5F5F5F5F54 +S315E061B0905F5F5F5F00C4E8F1EAE83A005B315D5B00 +S315E061B0A0CDE020E2E0F8E5EC20EAEEECEFFCFEF242 +S315E061B0B0E5F0E520EDE5E4EEF1F2E0F2EEF7EDEE56 +S315E061B0C020EFE0ECFFF2E87CE4EBFF20E7E0EFF372 +S315E061B0D0F1EAE020E2FBE1F0E0EDEDEEE920EFF010 +S315E061B0E0EEE3F0E0ECECFB2E5D5B2020CECA2020A7 +S315E061B0F05D002020CDE0F1F2F0EEE8F2FC20EFF029 +S315E061B100EEE3F0E0ECECF32E2E2E2020200741005A +S315E061B110EFF0EEE3F0E0ECECE0005B335D5BCEF8A4 +S315E061B120E8E1EAE020F4F3EDEAF6E8E820235D5BA6 +S315E061B130CEF2ECE5EDE05D005B335D5BCDE020E218 +S315E061B140E0F8E5EC20EAEEECEFFCFEF2E5F0E52076 +S315E061B150EDE5E4EEF1F2E0F2EEF7EDEE20EFE0ECB4 +S315E061B160FFF2E87CE4EBFF20E7E0EFF3F1EAE020D1 +S315E061B17047454D2DC4E5F1EAF2EEEFE02E5D5B2049 +S315E061B180C8E7E2E8EDE8F2E5205D00D3C4C0CBC8EC +S315E061B190D2DC20CFC0CFCAC8202F20D4C0C9CBDB38 +S315E061B1A000C8CDD4CED0CCC0D6C8DF20CE20CFC0AB +S315E061B1B0CFCAC500C4C42DCCCC2DC3C300C8ECFF37 +S315E061B1C020EAEEEFE8E83A20205F5F5F5F5F5F5F6E +S315E061B1D05F2E5F5F5F00D3F1F2E0EDEEE2E8F2FC55 +S315E061B1E000CFEEE4F2E2E5F0E6E4E0F2FC20EFE542 +S315E061B1F0F0E5E7E0EFE8F1FC3F0046617374524148 +S315E061B2004D20F1E2EEE1EEE4EDEE00D4EEF0ECE0BD +S315E061B210F220E4E0F2FB3A00CED2CAD0DBD2DC2007 +S315E061B220CFD0CEC3D0C0CCCCD3005B325D5BCFF0A8 +S315E061B230EEE3F0E0ECECE020EDE520ECEEE6E5F2C5 +S315E061B24020EDE0E9F2E820EFE0EFEAF37CE8EBE815 +S315E061B25020E4EEEAF3ECE5EDF22C20EAEEF2EEF034 +S315E061B260FBE920E2FB20F5EEF2E8F2E57CEEF2EABC +S315E061B270F0FBF2FC2E20CFF0EEE2E5F0FCF2E52009 +S315E061B280EFF0E0E2E8EBFCEDEEF1F2FC20E8ECE574 +S315E061B290EDE82E5D5B2020CECA20205D00D1F2EE86 +S315E061B2A0EF00D2EBEAD7F2E5EDE8E500D2E5EAF3C5 +S315E061B2B0F9E5E520E8ECFF3A20205F5F5F5F5F5FDD +S315E061B2C05F5F2E5F5F5F005B335D5BC2FB20EDE539 +S315E061B2D020ECEEE6E5F2E520F1EAEEEFE8F0EEE20B +S315E061B2E0E0F2FC20EFE0EFEAF37CE220E5E520EF37 +S315E061B2F0EEE4EFE0EFEAF32E5D5B2020CECA20209C +S315E061B3005D005B335D5BCA20F1EEE6E0EBE5EDE81F +S315E061B310FE20E8ECFF20E4EBFF20EFE0EFEAE82C2B +S315E061B32020EAEEF2EEF0EEE520E2FB20E2E2E5EB8A +S315E061B330E82C7CF1EEE4E5F0E6E8F220F1EBE8F802 +S315E061B340EAEEEC20ECEDEEE3EE20E7EDE0EAEEE2AC +S315E061B3502E7CD7E8F2E0E9F2E520E4EEEAF3ECE50B +S315E061B360EDF2E0F6E8FE20EE20EBE8ECE8F2E5202F +S315E061B370EAEEEBE8F7E5F1F2E2E020E7EDE0EAEEAE +S315E061B380E22C7CEAEEF2EEF0EEE520E2FB20ECEE7A +S315E061B390E6E5F2E520E2E2E5F1F2E82E5D5B20200A +S315E061B3A0204F4B2020205D00D2E8EF20E8EAEEED69 +S315E061B3B0EAE83A0031322DF7E0F12E005B315D5B70 +S315E061B3C047454D2DE4E5F1EAF2EEEF20EDE520ECBF +S315E061B3D0EEE6E5F220EEF2EAF0FBF2FC7CE5F9E579 +S315E061B3E020EEE4EDEE20EEEAEDEE2E20CFE5F0E59F +S315E061B3F0E420EFEEE2F2EEF0EDEEE920EFEEEFFBC8 +S315E061B400F2EAEEE97CEEF2EAF0FBF2E8FF20E4E84C +S315E061B410F1EAE020E7E0EAF0EEE9F2E520E2F1E5E3 +S315E061B4207CEDE5E8F1EFEEEBFCE7F3E5ECFBE5203F +S315E061B430EEF2EAF0FBF2FBE520EEEAEDE02E5D5B93 +S315E061B4402020CECA20205D00C4E8F1EAE5F2E00002 +S315E061B45020CFE0EDE5EBFC2000CAEEECE0EDE4E0C8 +S315E061B46020F0E0E7F0E0E1EEF2F7E8EAEEE220452F +S315E061B4706D75544F5300D1EAEEEFE8F0EEE2E0F29B +S315E061B480FC20F4E0E9EBEEE23A20205F5F5F5F00EB +S315E061B49020D4E0E9EB2000256C6420E1E0E9F220CC +S315E061B4A0E8F1EFEEEBFCE7F3E5F2F1FF20E22025D0 +S315E061B4B06420EEE1FAE5EAF2E0F52E00C8ECFF2061 +S315E061B4C0EFF0EEE3F0E0ECECFB3A20205F5F5F5FEC +S315E061B4D05F5F5F5F2E5F5F5F00CDEEE2E0FF20EFD3 +S315E061B4E0E0EFEAE000D3E4E5F0E62EEDE0E6E0F257 +S315E061B4F0EEE9203C4374726C3E2DE1E5E72041556F +S315E061B500544F2F414343002020C8EDF4EE2FCFE5A1 +S315E061B510F0E5E8ECE5EDEEE2E0F2FC2E2E2E20071A +S315E061B5204900CEF1EDEEE2E0ED20EDE020E8F1F567 +S315E061B530EEE4EDE8EAE0F5202747504C27005B3181 +S315E061B5405D5BCEE1FAE5EAF220F120F3EAE0E7E0DD +S315E061B550EDEDFBEC20E8ECE5EDE5EC20F3E6E5204E +S315E061B560F1F3F9E5F1F2E2F3E5F27CE220E4E0ED14 +S315E061B570EDEEE920EFE0EFEAE520E8EBE820E8EC44 +S315E061B580E5E5F220F1F2E0F2F3F17CD2EEEBFCEAF2 +S315E061B590EE20D7F2E5EDE8E52E20C4EBFF20E8E703 +S315E061B5A0ECE5EDE5EDE8FF7CF1F2E0F2F3F1E020C8 +S315E061B5B0E8F1EFEEEBFCE7F3E9F2E520EAEEECE049 +S315E061B5C0EDE4F37C22C8EDF4EE2FCFE5F0E5E8ECAF +S315E061B5D0E5EDEEE2E0F2FC202E5D5B2020CECA20B6 +S315E061B5E0205D00EAEEF2EEF0EEE520EFEEFFE2E856 +S315E061B5F0F2F1FF20EFF0E820E2E2E5E4E5EDE8E8EC +S315E061B60020E8ECE5EDE80032342DF7E0F12E00209C +S315E061B61020D1EEF0F2E8F0EEE2E0F2FC20EFEE208F +S315E061B620F2E8EFF320202020075000D2E8EFFB207C +S315E061B630EFF0EEE3F0E0ECEC3A00CDE0E6E0F2E8E4 +S315E061B640E500D2E8EFFB20E4EEEAF3ECE5EDF2EEBD +S315E061B650E23A00CDE0E6ECE8F2E52027432720E494 +S315E061B660EBFF20E7E0EFF3F1EAE020EAEEEDF1EE61 +S315E061B670EBE800C1F3EAE2E020E4E8F1EAE03A204F +S315E061B6802020202020205F00C2FBEAEB00CDCEC265 +S315E061B690C0DF20CFC0CFCAC0002020C7E0EFF3F102 +S315E061B6A0F2E8F2FC20456D75434F4E2020202020C4 +S315E061B6B0205E5A00CDC0D1D2D0CEC8D2DC20CFD068 +S315E061B6C0CEC3D0C0CCCCD3002020C8E7ECE5EDE812 +S315E061B6D0F2FC20F0E0E7F0E5F8E5EDE8E520202092 +S315E061B6E0202020074300535452414D20F1E2EEE120 +S315E061B6F0EEE4EDEE002020D4EEF0ECE0F2E8F0EEE0 +S315E061B700E2E0F2FC2E2E2E002020D3E4E0EBE8F21C +S315E061B710FC2E2E2E202020202020202020202020DC +S315E061B7200744002020CDE020F8E0E320E2E2E5F006 +S315E061B730F500C2F1FF20E4EEF1F2F3EFEDE0FF2078 +S315E061B740EFE0ECFFF2FC3F00C4E0002020CFEEEA40 +S315E061B750E0E7E0F2FC20EAE0EA20E8EAEEEDEAE89A +S315E061B760202020200753002020436F70797269679B +S315E061B77068742028632900C4E8F1EAE82047454D6A +S315E061B780444F5300C8CDD4CED0CCC0D6C8DF20CE8E +S315E061B79020CDCEC2CEC920CFC0CFCAC500D1EAEE98 +S315E061B7A0EFE8F0EEE2E0F2FC20EFE0EFEEEA3A20DD +S315E061B7B020205F5F5F5F00C8CDD4CED0CCC0D6C855 +S315E061B7C0DF20CE20D4C0C9CBC5202F20CFC5D0C5C0 +S315E061B7D0C8CCC5CDCEC2C0D2DC005B335D5BD4EEF6 +S315E061B7E0F0ECE0F2E8F0EEE2E0EDE8E520D3C4C0AB +S315E061B7F0CBC8D220C2D1DE20E8EDF4EEF0ECE0F683 +S315E061B800E8FE7CF120E4E8F1EAE02025633A2E7C6B +S315E061B810CDE0E6ECE8F2E520CECA20F2EEEBFCEA1A +S315E061B820EE20E5F1EBE820E2FB20EDE520E1EEE854 +S315E061B830F2E5F1FC7CEFEEF2E5F0E820E8EDF4EE1E +S315E061B840F0ECE0F6E8E820EDE020FDF2EEEC20E455 +S315E061B850E8F1EAE52E5D5B2020CECA20207CCEF2BF +S315E061B860ECE5EDE05D0020CEEFF6E8E82000CAEE1B +S315E061B870EBE8F7E5F1F2E2EE20EFE0EFEEEA3A200F +S315E061B88020202020205F5F5F5F5F00C2FBE1EEF07A +S315E061B89020F3F1F2F0EEE9F1F2E2005B325D5BC4D6 +S315E061B8A0E8F1EA2025633A20EDE520EEF2E2E5F7FC +S315E061B8B0E0E5F22E2020C2FB20E4EEEBE6EDFB7C38 +S315E061B8C0E8F1EFEEEBFCE7EEE2E0F2FC20EFF0E030 +S315E061B8D0E2E8EBFCEDFBE920F2E8EF20E4E8F1EAEF +S315E061B8E0E02C7CEFF0E0E2E8EBFCEDEE20E2F1F259 +S315E061B8F0E0E2FCF2E520E5E3EE20E820E7E0EAF0CD +S315E061B900EEE9F2E520E4E2E5F0F6F32E7CC5F1EB53 +S315E061B910E820F320E2E0F120EFF0EEE1EBE5ECFB8D +S315E061B92020F120F5E0F0E42DE4E8F1EAEEEC2C7CA0 +S315E061B930EFF0EEE2E5F0FCF2E520F1EEE5E4E8EDCC +S315E061B940E8F2E5EBFCEDFBE920EAE0E1E5EBFC2E74 +S315E061B9505D5BCEF2ECE5EDE07CCFEEE2F2EEF05D42 +S315E061B960005B335D5BC5F1EBE820E2FB20F3E2E5EA +S315E061B970F0E5EDFB2C20F7F2EE20F5EEF2E8F2E5EC +S315E061B98020F3E4E0EBE8F2FC20C2D1DE7CE8EDF402 +S315E061B990EEF0ECE0F6E8FE20F120E4E8F1EAE02002 +S315E061B9A025633A202C20EDE0E6ECE8F2E520CECA0C +S315E061B9B02E7CC5F1EBE820EDE5F22C20EDE0E6EC3E +S315E061B9C0E8F2E520EDE020CEF2ECE5EDE02E5D5B20 +S315E061B9D02020CECA20207CCEF2ECE5EDE05D005B76 +S315E061B9E0315D5BC2FB20ECEEE6E5F2E520EFE5F0EA +S315E061B9F0E5F2E0F9E8F2FC20E8EAEEEDEAF320CAE6 +S315E061BA00EEF0E7E8EDFB7CEDE020E4F0F3E3EEE574 +S315E061BA1020ECE5F1F2EE20E4E5F1EAF2EEEFE02C7E +S315E061BA2020EEE4EDE0EAEE7CE2FB20CDC520CCCE73 +S315E061BA30C6C5D2C520EFEEECE5F1F2E8F2FC20E511 +S315E061BA40E520EDE020E4F0F3E3EEE520EEEAEDEE6D +S315E061BA502E5D5B2020CECA20205D00C8E7E2EBE5E3 +S315E061BA60F7FC00C2FBE1EEF03A202020205F5F5F49 +S315E061BA705F5F5F5F5F2E5F5F5F005B315D5BC2FB58 +S315E061BA80E1F0E0EDEDFBE920E2E0ECE820E4EEEA6E +S315E061BA90F3ECE5EDF220EDE520EDE0F1F2F0EEE537 +S315E061BAA0ED7CE4EBFF20F0E0E1EEF2FB20F120E457 +S315E061BAB0E0EDEDEEE920EFF0EEE3F0E0ECECEEE95F +S315E061BAC02E7CC8F1EFEEEBFCE7F3E9F2E520EFF36C +S315E061BAD0EDEAF220ECE5EDFE2022CDE0F1F2F0EECA +S315E061BAE0E8F2FC7CEFF0EEE3F0E0ECECF32220E44C +S315E061BAF0EBFF20EFF0E8E2FFE7EAE87CE4EEEAF369 +S315E061BB00ECE5EDF2E020EA20EFF0EEE3F0E0ECECDC +S315E061BB10E52E5D5B20204F4B20205D00D2E8EF20D3 +S315E061BB20E4E8F1EAE03A005B325D5BC2E0F8E52029 +S315E061BB30E2FBF5EEE4EDEEE520F3F1F2F0EEE9F1AC +S315E061BB40F2E2EE20EDE520EFEEEBF3F7E0E5F22051 +S315E061BB50E4E0EDEDFBF52E7CCFE5F0E5E420EFEEFC +S315E061BB60E2F2EEF0EEEC20F3E1E5E4E8F2E5F1FC99 +S315E061BB702C20F7F2EE20EDE020F3F1F2F0EEE9F1C0 +S315E061BB80F2E2EE7CEFEEE4E0E5F2F1FF20EFE8F2DF +S315E061BB90E0EDE8E52C20EEEDEE20E2EAEBFEF7E5FE +S315E061BBA0EDEE2C7CE820E220EDE5E3EE20E7E0E354 +S315E061BBB0F0F3E6E5EDE020E1F3ECE0E3E02E5D5B5A +S315E061BBC0CEF2ECE5EDE07CCFEEE2F2EEF05D005B2D +S315E061BBD0315D5BC2FB20EDE520ECEEE6E5F2E520CA +S315E061BBE0F3E4E0EBE8F2FC20EFE0EFEAF32C7CE251 +S315E061BBF020EAEEF2EEF0EEE920F1E5E9F7E0F12098 +S315E061BC00F0E0E1EEF2E0E5F2E52E5D5B2020CECA02 +S315E061BC1020205D005B335D5BC4EBFF20F1EEF5F068 +S315E061BC20E0EDE5EDE8FF20EDE0F1F2F0EEE5EA20AA +S315E061BC30E4E5F1EAF2EEEFE02C7CE2F1F2E0E2FC3F +S315E061BC40F2E520E2E0F820F1E8F1F2E5ECEDFBE97E +S315E061BC5020E4E8F1EA20E220E4E8F1EAEEE2EEE46B +S315E061BC6020413A7CE7E0EAF0EEE9F2E520E4E2E55C +S315E061BC70F0F6F320E4E8F1EAEEE2EEE4E020E82033 +S315E061BC80EDE0E6ECE8F2E520CECA2E7CCDE0E6EC2E +S315E061BC90E8F2E520EDE020CEF2ECE5EDE02C20E502 +S315E061BCA0F1EBE820E2FB20EDE520F5EEF2E8F2E5E6 +S315E061BCB020F1EEF5F0E0EDFFF2FC7CEDE0F1F2F083 +S315E061BCC0EEE9EAE820E4E5F1EAF2EEEFE02E5D5B2B +S315E061BCD02020CECA20207CCEF2ECE5EDE05D005B73 +S315E061BCE0315D5BCFF0EEE3F0E0ECECE020464F5205 +S315E061BCF04D415420EDE520EDE0E9E4E5EDE02E7C13 +S315E061BD00C5F1EBE820F320E2E0F8E5E3EE20EAEEC8 +S315E061BD10ECEFFCFEF2E5F0E020E4E2E020E4E8F1BD +S315E061BD20EAEEE2EEE4E02C7CF4EEF0ECE0F2E8F050 +S315E061BD30F3E9F2E520F120444F532DE4E8F1EAE539 +S315E061BD40F2FB2E20C5F1EBE87CF320E2E0F120E5A1 +S315E061BD50F1F2FC20F5E0F0E42DE4E8F1EA2C20F1E3 +S315E061BD60EAEEEFE8F0F3E9F2E520464F524D415451 +S315E061BD702E5052477CE220E5E3EE20EAEEF0EDE577 +S315E061BD80E2F3FE20E4E8F0E5EAF2EEF0E8FE2E5DAD +S315E061BD905B4F4B5D00CDE5EDE0E6E0F2E8E5005BAB +S315E061BDA0315D5BCAEEF0E7E8EDE0202D20FDF2EED5 +S315E061BDB020ECE5F1F2EE2C20EAF3E4E020E2FB2070 +S315E061BDC0ECEEE6E5F2E57CEFE5F0E5F2E0F9E8F2E6 +S315E061BDD0FC20EFE0EFEAE82C20E4EEEAF3ECE5EDB7 +S315E061BDE0F2FB20E8EBE820EFF0EEE3F0E0ECECFBD1 +S315E061BDF02C7CEAEEF2EEF0FBE520E2FB20F5EEF2DA +S315E061BE00E8F2E520F3E4E0EBE8F2FC20CDC0D1CE48 +S315E061BE10C2D1C5CC215D5B2020CECA20205D00D396 +S315E061BE20E4E5F0E62EEDE0E6E0F2EEE9203C53688B +S315E061BE306966743E20E4EBFF20EFE0F3E7FB00D3B5 +S315E061BE40D1D2C0CDCEC2C8D2DC20C4C8D1CA00D35B +S315E061BE50E4E0EBE8F2FC20EFE0EFEEEA3A20205F87 +S315E061BE605F5F5F005B325D5BC2EEE7ECEEE6EDEEF7 +S315E061BE7020E4E0EDEDFBE520EDE020E4E8F1EAE544 +S315E061BE802025633A20E8F1EFEEF0F7E5EDFB2E7C55 +S315E061BE90C2FB20E4EEEBE6EDFB20E8F1EFEEEBFC36 +S315E061BEA0E7EEE2E0F2FC20EFF0E0E2E8EBFCEDFB4E +S315E061BEB0E920F2E8EF20E4E8F1EAE5F2FB3B7CE237 +S315E061BEC0FB20E4EEEBE6EDFB20EFF0E0E2E8EBFCF5 +S315E061BED0EDEE20EFEEE4F1EEE5E4E8EDE8F2FC7C90 +S315E061BEE0E2E0F820F5E0F0E42DE4E8F1EA2E5D5BCE +S315E061BEF0CEF2ECE5EDE07CCFEEE2F2EEF05D002035 +S315E061BF0020C7E0EAF0FBF2FC20EEEAEDEE005B33FF +S315E061BF105D5B47454D2DE4E5EAF1F2EEEF20EDE5B7 +S315E061BF2020ECEEE6E5F220EDE0E9F2E820F4E0E986 +S315E061BF30EBFB7C4445534B4C4F2E49434E2C2044FE +S315E061BF4045534B48492E49434E2C20E8EBE82044C3 +S315E061BF5045534B544F502E494E467CE220EDF3E675 +S315E061BF60EDEEEC20ECE5F1F2E52E7CDDF2E820F495 +S315E061BF70E0E9EBFB20EDE5EEE1F5EEE4E8ECFB2054 +S315E061BF80E4EBFF20E7E0EFF3F1EAE07C47454D2D96 +S315E061BF90E4E5EAF1F2EEEFE02E5D5BCEF2ECE5EDA3 +S315E061BFA0E05D00CAEEEBE8F7E5F1F2E2EE20F4E0FF +S315E061BFB0E9EBEEE23A20202020205F5F5F5F5F00E1 +S315E061BFC02020D0E0F1EFF0EEF1F2F0E0EDFFE5F206 +S315E061BFD0F1FF20EFEE20EFF0E0E2E8EBE0EC204766 +S315E061BFE0504C005B315D5BCDE020E4E8F1EAE520B1 +S315E061BFF0EDE5E4EEF1F2E0F2EEF7EDEE20ECE5F1FF +S315E061C000F2E020E4EBFF7CEAEEEFE8F0EEE2E0ED71 +S315E061C010E8FF20E2F1E5E920E2E0F8E5E920E8ED94 +S315E061C020F4EEF0ECE0F6E8E82E7CCEE4EDE0EAEE64 +S315E061C0302C20E2EEE7ECEEE6EDEE20EDE5EAEEF25F +S315E061C040EEF0FBE520F4E0E9EBFB7CE1FBEBE820DD +S315E061C050F1EAEEEFE8F0EEE2E0EDFB20EDE020E480 +S315E061C060E8F1EA2E5D5B2020CECA20205D0020CF7C +S315E061C070EEEAE0E7E0F2FC2000D3E4E5F0E62EED5F +S315E061C080E0E6E0F2EEE9203C416C743E2DE1E5E765 +S315E061C0902048444420E7E0E3F0F3E7EAE8002020C3 +S315E061C0A0D1EEF0F2E8F0EEE2E0F2FC20EFEE20E431 +S315E061C0B0E0F2E520202020075400CCCC2DC4C42D2D +S315E061C0C0C3C3002020CEF2EAF0FBF2FC00D4EEF02E +S315E061C0D0ECE0F220E2F0E5ECE5EDE83A002020D193 +S315E061C0E0EEF0F2E8F0EEE2E0F2FC20EFEE20E8ECD2 +S315E061C0F0E5EDE8202020074E002020C2FBEAEBFEBA +S315E061C100F7E8F2FC2020202020202020202020209B +S315E061C110205E5100CAEEECEFFCFEF2E5F000C2E50E +S315E061C120F0F1E8FF00C2E2E5E4E8F2E520E8ECFFE1 +S315E061C13020E4EEEAF3ECE5EDF2E02C20EAEEF2EE55 +S315E061C140F0FBE920E2FB00E2EEF1EFF0E8EDE8EC8E +S315E061C150E0E5ECFBE520E4E0EDEDEEE920EFF0EE85 +S315E061C160E3F0E0ECECEEE92E005B335D5BC4EBFF04 +S315E061C17020E7E0EFF3F1EAE02047454D2DC4E5F134 +S315E061C180EAF2EEEFE020EFEEE6E0EBF3E9F1F2E082 +S315E061C1907CE2F1F2E0E2FCF2E520E4E8F1EAE5F2E4 +S315E061C1A0F32047454D204445534B544F5020E22000 +S315E061C1B0E4E8F1EAEEE2EEE420C07CE820F9E5EBC2 +S315E061C1C0EAEDE8F2E5204F4B20E8EBE820456E74B6 +S315E061C1D065722E20D7F2EEE1FB20E2E5F0EDF3F2B7 +S315E061C1E0FCF1FF20E220444F532C7CEDE0E6ECE8E5 +S315E061C1F0F2E520CEF2ECE5EDE02E5D5B2020CECAE5 +S315E061C20020207CCEF2ECE5EDE05D00E4EEEAF3ECD5 +S315E061C210E5EDF2FB00C1E0E9F220F1E2EEE1EEE408 +S315E061C220EDEE3A202020205F5F5F5F5F5F5F5F5FDB +S315E061C2305F005B325D5BC2FB20EDE520ECEEE6E59F +S315E061C240F2E520E7E0EFE8F1E0F2FC20E4E0EDED95 +S315E061C250FBE520EDE020E4E8F1EA7C25633A20EFB6 +S315E061C260EEF2EEECF320F7F2EE20EEED20F4E8E705 +S315E061C270E8F7E5F1EAE820E7E0F9E8F9E5ED7CEEF3 +S315E061C280F220E7E0EFE8F1E82E2020CFE5F0E5E403 +S315E061C29020F2E5EC20EAE0EA20EFEEE2F2EEF0E809 +S315E061C2A0F2FC2C7CF1EDE8ECE8F2E520E7E0F9E878 +S315E061C2B0F2F320E7E0EFE8F1E820E8EBE820EFEEE3 +S315E061C2C0ECE5EDFFE9F2E57CE4E8F1EA2E5D5BCED3 +S315E061C2D0F2ECE5EDE07CCFEEE2F2EEF05D005B31B3 +S315E061C2E05D5BC2FB20EDE520ECEEE6E5F2E520F0F4 +S315E061C2F0E0E7E2E5F0EDF3F2FC20CAEEF0E7E8ED27 +S315E061C300F320EAE0EA20EEEAEDEE2E7CD7F2EEE10A +S315E061C310FB20F3E4E0EBE8F2FC20E4E8F1EA2C2030 +S315E061C320EFE0EFEAF32C20E4EEEAF3ECE5EDF22060 +S315E061C330E8EBE87CEFF0EEE3F0E0ECECF320EFF035 +S315E061C340EEF1F2EE20EFE5F0E5F2E0F9E8F2E52074 +S315E061C350E5E57CEDE020E8EAEEEDEAF320CAEEF011 +S315E061C360E7E8EDFB2E5D5B20204F4B20205D005B17 +S315E061C370325D5BCFE0EFEAE020F120F2E0EAE8EC63 +S315E061C38020E8ECE5EDE5EC20F3E6E520F1F3F9E50F +S315E061C390F1F2E2F3E5F27CEDE020E4E8F1EAE520B2 +S315E061C3A0E8EBE820E4E8F1EA20EFEEEBEEED2E7C57 +S315E061C3B0CFEEEFF0EEE1F3E9F2E520E4F0F3E3EE60 +S315E061C3C0E520E8ECFF20E8EBE820EDE0E6ECE8F2DA +S315E061C3D0E57CCEF2ECE5EDE020E820EFF0EEE2E59B +S315E061C3E0F0FCF2E520EAEEEBE8F7E5F1F2E2EE7C6D +S315E061C3F0E4EEF1F2F3EFEDEEE3EE20ECE5F1F2E0FF +S315E061C40020EDE020E4E8F1EAE52E5D5B20CEF2EC9A +S315E061C410E5EDE0207C20CFEEE2F2EEF0205D00CFAC +S315E061C420EEE4F2E2E5F0E6E4E0F2FC20F3E4E0EBF0 +S315E061C430E5EDE8E53F00CCE5F2EAE020E8EAEEED9D +S315E061C440EAE83A20205F5F5F5F5F5F5F5F5F5F5F44 +S315E061C4505F00CFEEE6E0EBF3E9F1F2E020E8E7E258 +S315E061C460EBE5EAE8F2E520E4E8F1EAE5F2F320E873 +S315E061C470E720E4E8F1EAEEE2EEE4E020E820EDE050 +S315E061C480E6ECE8F2E52052455455524E00000000D4 +S315E061C4902079000106B410AF0005528823C8000177 +S315E061C4A006B44E75206F00044240600252804A181D +S315E061C4B066FA71404E75202F0004204060022041EB +S315E061C4C0220852814A1066F6226F0008121910C1DD +S315E061C4D066FA4E752F0A2F02226F000C206F00104C +S315E061C4E010192448670875007318B28267F2710003 +S315E061C4F07312B280670A5EC0A341488080816002A0 +S315E061C5004240241F245F4E752F02202F0010226FB8 +S315E061C5100008206F000C600253804A80670A7599B3 +S315E061C5207398B28267F260064240241F4E75B2820A +S315E061C53052C0A3414880808160F02F027419302F88 +S315E061C540000822000681FFFFFF9F73C1B481650683 +S315E061C5500680FFFFFFE0241F4E754FEFFFE448D7EB +S315E061C5603C1C262F0028246F0024286F002047FA00 +S315E061C570FFCA600253832A4A4A83672E141C6736D0 +S315E061C580100248803F004E93121A380048813E817E +S315E061C5904E937344548F7140B08167D86018B0810F +S315E061C5A05EC0A34148808081600242404CD73C1C1A +S315E061C5B04FEF001C4E75488245FAFF803F024E926E +S315E061C5C03400101548803E804E927342548F71401C +S315E061C5D0B08167D660C84E5600003039000106B0BA +S315E061C5E02F0A2F02486E0010246E000823CA00014C +S315E061C5F006B42F2E000C487AFE985280420233C070 +S315E061C600000106B04EB900E0F66C4FEF000C7340E6 +S315E061C610158218003239000106B0242EFFF8246E27 +S315E061C620FFFC4E5E538133C1000106B04E750000DA +S315E061C6302F02302F000A736F000CC1EF00084C41E6 +S315E061C6400800241F4E750000424020790000527AAE +S315E061C6504FEFFFF448D7001C3228000CA34331406A +S315E061C66000043140000833C0000140B83410714223 +S315E061C670B680672C7864B8806726558F3F014EB9DE +S315E061C68000E1CCA6588F4A80675420407368002445 +S315E061C690163C0004B681670A42043144000A60022E +S315E061C6A042802202538177C17826B883651073414F +S315E061C6B02F0041F900E4F7B020701C00601C06828F +S315E061C6C0FFFFFF9C73C27622B681651275422F0029 +S315E061C6D041F900E4F84C20702C004E90588F4CD70D +S315E061C6E0001C4FEF000C4E752F027414302F0008BA +S315E061C6F0C1FC000332007140C3FC147BE4A1143C2D +S315E061C700000FE4A0241F9280A340C081E281E78804 +S315E061C71080814E754FEFFFF048D7041C4A790001DE +S315E061C7202BB8664C4A7900012BA066443F2F001670 +S315E061C73045FAFFB64E92548F3F2F001836004E925F +S315E061C740548F3F2F001AE18B34004E92548F736FF2 +S315E061C750001441F9000140DC38301A002202E9890F +S315E061C760868186803F033F043F3C00074E4E5C8FE7 +S315E061C7704CD7041C4FEF00104E752F02302F000886 +S315E061C780AF41A342C280E688C082241FD281808104 +S315E061C790C1FC00C8C1FC5556424048404E754FEF5A +S315E061C7A0FFE848D71C1C26790000527E30136D00E5 +S315E061C7B0008C7340757900004FDCB4816F7E240193 +S315E061C7C02601D482E78B49EB0002244C204391C2D7 +S315E061C7D024000682FFFFFFF07542D1FC0000502481 +S315E061C7E02602E78AD6832242340093C3D3FC000152 +S315E061C7F040FCC5FC000606820000502A36127943E9 +S315E061C8000C84000003E86F0634BC03E860064A4323 +S315E061C8106C024252760FB6816D04309260023292BA +S315E061C820548A54885489B48866D23F2B00063F2BDC +S315E061C83000043F143F004EBAFEDC508F4CD71C1CFF +S315E061C8404FEF00184E754FEFFFF448D70C04487868 +S315E061C8500060487A021248790000502445F900E008 +S315E061C8600EC44E9271F9000052764FEF000CA94169 +S315E061C870B280663448780020487900E4F8D848798F +S315E061C880000140DC4E9248780020487900E4F900E6 +S315E061C8904879000140BC4E924FEF001845FA01CC51 +S315E061C8A0424247FAFE706042A541B280661E487810 +S315E061C8B00008487900E4F8F84879000140DC4E92D6 +S315E061C8C048780008487900E4F92060C4700133C013 +S315E061C8D0000140DE60C63F123F2AFFFE3F2AFFFCB1 +S315E061C8E05C8A3F0252824E93508F734271790000A7 +S315E061C8F04FDCB0816EE04CD70C044FEF000C4E7507 +S315E061C9004FEFFFEC48D71C0C28790000527E207966 +S315E061C91000005286321443E80006425145E80004BD +S315E061C92047E80002425242534A416D0C71417579C2 +S315E061C93000004FDCB4806E0830BCFFFF6000011E72 +S315E061C9404A6C00026652740FB4806D1C2200D2817B +S315E061C950E78841F900005024908136B00800204014 +S315E061C960D1FC00005024602420010680FFFFFFF027 +S315E061C970714041F9000140FC2200D281E788908153 +S315E061C98036B008002040D1FC000140FC34A800022A +S315E061C99032A80004600000BE4A7900012BB8660047 +S315E061C9A000B44A7900012BA0660000AA41F90001B2 +S315E061C9B040DC4A7900012B98674230300A003F3CFF +S315E061C9C0FFFF3F003F3C00074E4E5C8F77402400FF +S315E061C9D047FAFDA82479000052862003E080E883C7 +S315E061C9E03F004E93354000023E834E93354000044E +S315E061C9F03E824E93548F35400006605830300A00CF +S315E061CA003F3CFFFF3F003F3C00074E4E5C8F73406B +S315E061CA10AF432079000052862401E082E881C48335 +S315E061CA20163C0011C5FC03E8C5FC4925E6AA31427E +S315E061CA300002AF42C282C082C3FC03E8C1FC03E8E4 +S315E061CA40C3FC4925C1FC4925E6A9E6A831410004B4 +S315E061CA503140000620790000528642504CD71C0CCA +S315E061CA604FEF00144E7503E803E803E800000000A9 +S315E061CA70000003E800000000000003E80000000099 +S315E061CA80000003E8000003E803E803E803E80000C8 +S315E061CA9003E8000003E802DD02DD02DD02150215AE +S315E061CAA00215029B000000000000029B00000000EE +S315E061CAB00000029B0000029B029B029B029B00001E +S315E061CAC0029B0000029B000020790000527E5488A0 +S315E061CAD030184FEFFFF448D7040CAF42246F0010D3 +S315E061CAE073C0B481650453806002424035400030D2 +S315E061CAF03018323900004FDC77407541B4836F04FA +S315E061CB004A406C027001714043F9000140DCAB437D +S315E061CB1043F10A003551002C3018538075C0B68256 +S315E061CB20640270023540003C754130187740B48349 +S315E061CB306F044A406C027001714043F9000140DCC8 +S315E061CB405488754143F10A00355100383018774011 +S315E061CB50B4836F044A406C027001714043F900018D +S315E061CB6040DCAB4343F10A007001355100A243F961 +S315E061CB70000050963551003A3540003E301875C098 +S315E061CB80B68252C2163C00024882C4803542002415 +S315E061CB907542301822405389B682660875C9163CDB +S315E061CBA00017600475C9760BB68264027001354080 +S315E061CBB00020734130187540B2826F044A406C02BE +S315E061CBC07001714043F9000140DC424243F10A00E1 +S315E061CBD03551001E3550012A2F0A4EB900E1D8249D +S315E061CBE0424041F90000508C43F900004FC43540A2 +S315E061CBF00128355000323540002A3540002E103C80 +S315E061CC0000013542012C3542013041F900004FC245 +S315E061CC10354000223550012E355101323542000250 +S315E061CC202F0A4EB900E21A66508F43EA00A641F92F +S315E061CC3000E4F97A32D8B1FC00E4F99A66F642404A +S315E061CC40742D41F900E4FC042279000052863540F6 +S315E061CC50000A103C0006355000A420790000527AA3 +S315E061CC60314000043142000841F900004FC232D838 +S315E061CC70B1FC0000501C66F622790000528A41F947 +S315E061CC800000508432D8B1FC0000509C66F676070D +S315E061CC907001354301344CD7040C33C0000140B810 +S315E061CCA04FEF000C4E752F02203C0001469C736FDE +S315E061CCB00008204075680028B48167062028004096 +S315E061CCC066F0241F4E7520790000527E4FEFFFF02B +S315E061CCD048D70C0C3010246F0014354000026768A9 +S315E061CCE02679000052822F0B4EB900E204803013A0 +S315E061CCF0588F220046817341D2819381C08135404C +S315E061CD00012C302B0002220046817341D28193814E +S315E061CD10C081322B00043540013075413039000065 +S315E061CD204FC27740B4836C0230013540012E322B1D +S315E061CD300006303900004FC475417740B4836C0218 +S315E061CD40300135400132601E424041F900004FC278 +S315E061CD503540012C354001303550012E41F9000056 +S315E061CD604FC4355001324CD70C0C4FEF00104E7565 +S315E061CD70700120790000527A2F02A9423140000801 +S315E061CD8020790000527E3210206F0008538171C114 +S315E061CD90B48052C0241F4880C08131400128207987 +S315E061CDA000005286528030804E752F032F02558FD8 +S315E061CDB0487801363F3C00484EB900E012B0508FEA +S315E061CDC04A80661E20790000527A241F3140000CA9 +S315E061CDD0261F4E755281226800404A8967162049AE +S315E061CDE06008720141F90001469C77417568002847 +S315E061CDF0B48367E022680040214000402040214939 +S315E061CE00004020790000527A3141000C20403141E6 +S315E061CE1000282F40000C241F261F6000FCAC2F0A5F +S315E061CE20206F0008A34143F90001469C7168002820 +S315E061CE30B28066046024224A24690040736A00284D +S315E061CE40B28066F2558F2368004000402F083F3C70 +S315E061CE5000494EB900E012B0508F245F4E754FEF36 +S315E061CE60FFF448D70C0441FA01EE43F9000050841F +S315E061CE7032D8B1FC00E1D06E66F641FA01F247F9CB +S315E061CE8000004FC245FA024243F900004F6836D8C6 +S315E061CE9032DAB1FC00E1D0C866F430390000526A9A +S315E061CEA0AF42538033C000004FC230390000527246 +S315E061CEB0538033C000004FC430390000527633C02E +S315E061CEC000004F707340B4816D0A53807340A54092 +S315E061CED0E3A86004303C0100740120790000527AD5 +S315E061CEE033C000004FDC70FF41E8000C33C2000143 +S315E061CEF046C43082243C0001469C33C0000050C0E9 +S315E061CF0042B9000146DC4EB900E1C8464879000104 +S315E061CF10469C4EB900E21ABC48790001469C4EBA7D +S315E061CF20FBA848790001469C4EB900E20574487950 +S315E061CF300001469C4EB900E207822F4200204CEF89 +S315E061CF400C0400104FEF001C60FF0000041E2F0A66 +S315E061CF502F02242F000C2079000146DC45F900E020 +S315E061CF6012B04A88660460162042558F2428004034 +S315E061CF702F083F3C00494E92508F4A8266EA2F0263 +S315E061CF804EB900E205BC2F024EB900E20872508F3D +S315E061CF902F42000C241F245F60FF000003D032396A +S315E061CFA000004FC471F900005278558F5281734188 +S315E061CFB04C0018002F0142672F390000044E4EB92C +S315E061CFC000E00DE84FEF000C4E7570062279000027 +S315E061CFD0527A2F0A206F000824790000528A334082 +S315E061CFE00004103C002D33400008103C000122791A +S315E061CFF00000527E33C0000140B84A51661841F9DB +S315E061D0000000508434D8B1FC0000509C66F641F9CA +S315E061D01000004FC2602A224A32E8012C45EA001834 +S315E061D02032E8013032E8012E32E801324259B5C9BF +S315E061D03066FA548833D000004F8E41F900004F689C +S315E061D040702D22790000528632D853804A4066F8C4 +S315E061D050245F4E754E750000000700000007000171 +S315E061D060000000280000000F000B00780058027FE6 +S315E061D070018F0000017401740001000700000006E1 +S315E061D080000800010018000C0002000A000100021D +S315E061D0900003000400050006000700080009000A15 +S315E061D0A0000300000003000300030000000300002A +S315E061D0B0000300020000000100010000000200021E +S315E061D0C0000100010001000200010001001F0000F3 +S315E061D0D000010000003200010001000400020001CD +S315E061D0E0000000000100FFFF0001000000000000F9 +S315E061D0F000000000000000000000000000000000E9 +S315E061D10000000000000000000000000000000000D8 +S315E061D11000000000000000000000000000000000C8 +S315E061D120000000004E75700220790000527A3140AD +S315E061D1300008103C005020790000528630BC00198E +S315E061D140314000024E75700220790000527A31401A +S315E061D15000084200207900005286425031400002C8 +S315E061D1604E75700120790000527A314000082079CD +S315E061D1700000528630804E754E7560FF00003ADAE7 +S315E061D18020790000527E425060FF000039821B71B7 +S315E061D1900000558F487AFFF83F3C00094EB900E040 +S315E061D1A012B0508F4E751B700000558F487AFFF8AC +S315E061D1B03F3C00094EB900E012B0508F4E752079C0 +S315E061D1C00000527A4FEFFFF448D7040C2039000093 +S315E061D1D0527E3428000645F900E012B06014558F9E +S315E061D1E02F003F3C00062600528353824E92508FB9 +S315E061D1F020034A4266E84CD7040C4FEF000C4E75AB +S315E061D200701B4E56FFF820790000527E558F1D4007 +S315E061D210FFFB70591D40FFFC1028000106800000ED +S315E061D22000201D40FFFD10280003486EFFFB3F3CD8 +S315E061D23000090680000000201D40FFFE42001D40FF +S315E061D240FFFF4EB900E012B0508F4E5E4E751B4B3C +S315E061D2500000558F487AFFF83F3C00094EB900E07F +S315E061D26012B0508F4E751B4A0000558F487AFFF811 +S315E061D2703F3C00094EB900E012B0508F4E751B4835 +S315E061D2800000558F487AFFF83F3C00094EB900E04F +S315E061D29012B0508F4E751B440000558F487AFFF8E7 +S315E061D2A03F3C00094EB900E012B0508F4E751B430A +S315E061D2B00000558F487AFFF83F3C00094EB900E01F +S315E061D2C012B0508F4E751B420000558F487AFFF8B9 +S315E061D2D03F3C00094EB900E012B0508F4E751B41DC +S315E061D2E00000558F487AFFF83F3C00094EB900E0EF +S315E061D2F012B0508F4E751B451B6500002F2F000441 +S315E061D3004EB900E1CF9E548F487AFFEC3F3C00096D +S315E061D3104EB900E012B0508F4E751B661B4500009A +S315E061D3202F02242F0008558F487AFFF03F3C000911 +S315E061D3304EB900E012B0508F2F420008241F60FF03 +S315E061D340FFFFFC5E20790000527A2F02741371E8C8 +S315E061D350000AB480650E41F900E4F92820700C00FA +S315E061D360241F4ED0241F4E7560B6609030390000A0 +S315E061D37052762F032F02206F000E2248342F000CC5 +S315E061D380538071C0D08093C04240220955813620D6 +S315E061D390C6824A436704A3438083B2886704D08028 +S315E061D3A060EC241F261F4E754FEFFFCC302F003EF9 +S315E061D3B048D77CFC246F0038382F003C342F004876 +S315E061D3C0776A01307340B6816E0000E6776A0132B2 +S315E061D3D0B6816D0000DC3F007BFC80003E043F04CB +S315E061D3E04EB900E205EC73F900005276548F4DFABE +S315E061D3F0FF7C2600700FC084D281E0ADD6812F0319 +S315E061D40026412A433F053C054E96508F3840716A66 +S315E061D410012E2F40003073CC2C41602471C5720F10 +S315E061D420E288E3AD8A804A456C02DBCB558F2F0DEE +S315E061D4303F0552874EBAFF36508F71C0B08E660C8B +S315E061D4403F47002E7147B0AF00306DD0206F00448A +S315E061D4507FCC30AF002E716A012C45FAFF10264071 +S315E061D460602E71C6DC86720FE2A880863C000800F9 +S315E061D4700000670A71F900005276D0809680558F78 +S315E061D4802F033F0653844E92508F71C0B087660872 +S315E061D49071443A04B7C06DCA206F004073CC3085E1 +S315E061D4A071F90001496EB0816708A340B1826002FB +S315E061D4B0424230024CD77CFC4FEF00344E754FEF61 +S315E061D4C0FDCC48D77CFC382F0242246F0238206FAE +S315E061D4D0023C342F0240424043EF002C5384605AB1 +S315E061D4E0322800023C1058883A2800023650260558 +S315E061D4F096814A436742284299C57B4C2E029E81BA +S315E061D50073472845B3856C302A4B9BC63A0D7F4DF0 +S315E061D51077434DE900024A456C0E220C4C07180030 +S315E061D5204C431801D28B600A4C0718004C43180132 +S315E061D530D2863281224E528053844A446CA24A405A +S315E061D540670001207340A347BE81673822002A0F36 +S315E061D550538106850000002C6022361838107F431F +S315E061D56026477F44BE8B6C063144FFFE3083528989 +S315E061D5707749BC836EE453814A41670893C9204584 +S315E061D5807D4160D647EF002C77404A6A0002677CAE +S315E061D590E283280F06840000022C4BF900E2048046 +S315E061D5A049F900E1EB0A5383605C3053322B0002A8 +S315E061D5B0588B528853817F487D41BC876D46302ABE +S315E061D5C0012C7B40BA876F06BA866E383040302AC6 +S315E061D5D0012E7D417B40BA866C087348BA816D2421 +S315E061D5E032003F48022C3F4102303F42022E3F4229 +S315E061D5F002322F044E953EAA001E2F042F0A4E9446 +S315E061D6004FEF000C53834A436CA06056E283280FC8 +S315E061D61006840000022C4BF900E2048049F900E13E +S315E061D620EB0A538360383213302B0002588B5281F8 +S315E061D63053807D417B40BA866D223F41022C3F405B +S315E061D64002303F42022E3F4202322F044E953EAAFD +S315E061D650001E2F042F0A4E944FEF000C53834A436A +S315E061D6606CC44CD77CFC4FEF02344E7522790000D6 +S315E061D670527A2F027410206F000832290006714138 +S315E061D680B480660842403140000A601434390000D3 +S315E061D6904F70E98A7542B480662074013142000AAE +S315E061D6A041E800A622790000527E4240734160045F +S315E061D6B030D952807540B2826EF6241F4E75700184 +S315E061D6C020790000527A2F0231400008207900006B +S315E061D6D0527E3010737900004FDC7540B2826F0480 +S315E061D6E04A406C02700120790000528643F90001DC +S315E061D6F040DC30807140206F0008241F43F10A004E +S315E061D7003151001E4E752F0A24790000527E206F3A +S315E061D71000082279000052864A526606425142402A +S315E061D720600632BC0001700131400022700120794F +S315E061D7300000527A245F314000084E754FEFFFECEE +S315E061D74048D70C1C266F00182479000052824A6B78 +S315E061D750000267643252302B012C306A0002342AAF +S315E061D7600004322A000679497740B6846F08794227 +S315E061D770B6846E5E3480302B012E77427540B48379 +S315E061D7806C0A7749B4836D4A35400004302B013029 +S315E061D79077487540B4836F0A7741B4836E34354018 +S315E061D7A00002302B013275417340B2826C0A7548D2 +S315E061D7B0B2826D1E354000062F0A4EB900E2048042 +S315E061D7C03EAB001E2F0A2F0B4EB900E1EB0A4FEF7D +S315E061D7D0000C4CD70C1C4FEF00144E754E754E7510 +S315E061D7E02F0A206F000822790000528645F9000170 +S315E061D7F040BC32E800247168001E32F20A00245F00 +S315E061D80030280020528032C0302801285280328090 +S315E061D810700533680022000220790000527A3140B7 +S315E061D82000084E752F02206F0008A94171E80024B7 +S315E061D83034280020B2806514303B0A0848C04EFBAC +S315E061D8400802009A0010001A0054008E42806000BF +S315E061D8500092203C00E4FC02600000887142AF4126 +S315E061D860B2806D18323900E4FA9C20015280C5C05D +S315E061D8707142D080068000E4FA9E6068323900E445 +S315E061D880F99A518220015280C1C27140D0800680EE +S315E061D89000E4F99C604E7142AB41B2806D18323959 +S315E061D8A000E4FADE20015280C5C07142D080068074 +S315E061D8B000E4FAE0602E323900E4FB405D8220014B +S315E061D8C05280C1C27140D080068000E4FB426014A0 +S315E061D8D020080680000000A6720F6008203C000167 +S315E061D8E006B842412140000E3141000C241F4E75BD +S315E061D8F070012F0322790000527AA5432F02206F2F +S315E061D900000C3340000822790000527E30117568C0 +S315E061D910002422005381B682660A73C17417B4810A +S315E061D920650A600A73C1760BB68164027001227979 +S315E061D9300000528632805380314000202F48000C2F +S315E061D940241F261F6000FEDE700122790000527AF4 +S315E061D9502F02206F0008AB423340000822790000B5 +S315E061D960527E321122790000528671C1B48052C072 +S315E061D970241F4880C0813140002432806000FEA6C9 +S315E061D9804FEFFFE048D71C7C266F00284240342FDA +S315E061D990002C306B0002246F002443EB000633C099 +S315E061D9A0000052962602538330083208601C381113 +S315E061D9B07D407B44BC856E087D41BC856D06600615 +S315E061D9C0300460023204538358894A436EE04A6AFE +S315E061D9D000026730326A013079407749B6846F1068 +S315E061D9E07141B6806E78200953804A406E027001BB +S315E061D9F0326A013279417749B6846C087340B681FF +S315E061DA006D5C32097742794049FAFAB443F33C00F6 +S315E061DA10360132933348000260103F023F0353837D +S315E061DA202F0B2F0A4E944FEF000C7143B8806DEACD +S315E061DA30716A0022A341B280662470FF52823F423E +S315E061DA40002C2F4B00282F4A00244CD71C7C4FEF2B +S315E061DA50002033C00000529860FF000026424CD798 +S315E061DA601C7C4FEF00204E7520790000527A558F6D +S315E061DA703F2800022F39000052822F2F000C4EBA48 +S315E061DA80FF004FEF000C4E754FEFFFF448D7001CD7 +S315E061DA9030390001496841F9000147D875790001DB +S315E061DAA047D460023001220057817741A144777003 +S315E061DAB03A00B88366067740B4836DE833C0000107 +S315E061DAC049687379000147D67140B0816E0C41F9BE +S315E061DAD0000147D433D0000147D64CD7001C4FEF45 +S315E061DAE0000C4E754FEFFFD248EF1CFC0002342F5D +S315E061DAF00038286F0032266F003A246F003E3F2FD0 +S315E061DB0000422002028000007FFF2F0A2F0B3F00B8 +S315E061DB1036003F2F00422F0C4EBAF88E4FEF0014BD +S315E061DB204A406700015070FF32390001496841F9A6 +S315E061DB30000147D433D00001496C43F9000147D86D +S315E061DB407BC233C00001496A7D41600000AC7971F6 +S315E061DB504A002E0420440A87FFFF80007FC7BE8506 +S315E061DB606676A144B8886776305328005284794452 +S315E061DB707F714A007948B88766763F4800243F431B +S315E061DB800026240F0682000000247EFF3F52002813 +S315E061DB903F43002A2F024EB900E204803EAC001EEC +S315E061DBA02F022F0C4EB900E1EB0A30390001496CC6 +S315E061DBB04FEF000C41F9000147D873405680714040 +S315E061DBC031871A00737900014968B081660000A661 +S315E061DBD04EBAFEB66000009EA144B88866127979B5 +S315E061DBE00001496AA147BE84660633C00001496AFD +S315E061DBF0568033C00001496C30390001496C794087 +S315E061DC00BC846E00FF4A30390001496AA14477401D +S315E061DC10B88366282001568033C0000149687140A7 +S315E061DC200C80000000C76F1A41F9000147D433D078 +S315E061DC300001496C33C100014968600633C00001E7 +S315E061DC40496C30390001496C41F9000147D87340AC +S315E061DC50528033C00001496C31821A0073405280B0 +S315E061DC6031931A0033C00001496C714031920A0068 +S315E061DC707001600242404CD71CFC4FEF002C4E75A0 +S315E061DC804E56FFB420790000528248D73CFC246EA0 +S315E061DC9000083010776A012C3D40FFF67340342866 +S315E061DCA00002B6816E000296776A012EB6816D003A +S315E061DCB0028C7342776A0130B6816E000280776AC0 +S315E061DCC00132B6816D00027620790000527E77F9E5 +S315E061DCD000004FDC73D033C10001496EB681630049 +S315E061DCE0025C76017E03383900004F7041F900012C +S315E061DCF040DC558F3D43FFEC3D47FFEE163C0007A8 +S315E061DD001E3C000F538479443D43FFF03D47FFF2EB +S315E061DD1036301A001E3C000332364AECC283424377 +S315E061DD2033C10001496E42413F0133C10000529661 +S315E061DD30486EFFF8486EFFFA3F023F002F0A4EBA7F +S315E061DD40F66833C3000147D433C3000147D64FEFCA +S315E061DD50001422020081FFFF800041EEFFFA43EEEC +S315E061DD60FFF833C70001496833D0000147DA33D1A0 +S315E061DD70000147DC33C1000147D84A40670001BE74 +S315E061DD802C0E260E2A0E0686FFFFFFF447FAFD5695 +S315E061DD900683FFFFFFF64BF9000147D80685FFFFD3 +S315E061DDA0FFE449FAFCE4200246807140558F426700 +S315E061DDB0A341D0809180486EFFFC486EFFFE808172 +S315E061DDC0D0823F003D40FFDE3F2EFFFA2F0A4E93A1 +S315E061DDD07F6EFFFE4FEF00143800302EFFFA2240CF +S315E061DDE053897349B2876F5C4A4467587F7C800088 +S315E061DDF03D40FFF6B587601A558F426753803D40D7 +S315E061DE00FFF62F062F033F073F002F0A4E934FEF92 +S315E061DE100014302EFFF673402041736EFFFEB28828 +S315E061DE206DD66020558F426752883D48FFFC486E4B +S315E061DE30FFFC2F033F2EFFDE3F082F0A4E934FEF85 +S315E061DE4000143800306EFFFC302EFFF873487F40D7 +S315E061DE50BE816ED0204052887F48BE816C384A448C +S315E061DE6067343D40FFF40A82FFFF8000601A558FF8 +S315E061DE70426752803D40FFF42F062F033F023F0089 +S315E061DE802F0A4E934FEF0014302EFFF4736EFFFCB2 +S315E061DE907940B2846ED83279000147D47379000152 +S315E061DEA049687149B081670000943039000147D60D +S315E061DEB0600A56807540B28266023009794041F95E +S315E061DEC0000147D834354A007F422D47FFE0A1473C +S315E061DED0BEAEFFE067DC31874A005280794052800E +S315E061DEE043F04A007940528033C0000147D6714021 +S315E061DEF041F04A003D51FFFA3D50FFF8B2806602BB +S315E061DF004E942002028000007FFF2F053D6EFFFAEE +S315E061DF10FFE43D6EFFF8FFE83D40FFE63D40FFEA86 +S315E061DF204EB900E204803EAA001E2F052F0A4EB9C3 +S315E061DF3000E1EB0A4FEF000C6000FE6C4CEE3CFC3E +S315E061DF40FFB44E5E4E752079000052822F02341086 +S315E061DF503F2800023F024EB900E205EC73F900008A +S315E061DF605276548F2040700FC480303C8000D2815D +S315E061DF70E4A848701800A3423F004EBAF3F0508F10 +S315E061DF8020790000528630C0737900004F70B48109 +S315E061DF9066064A4066126012A542B481660C734019 +S315E061DFA0143C0003B4816602700F714043F90001CD +S315E061DFB040BC241F30B10A00700220790000527A19 +S315E061DFC0314000084E7500004FEFFFF448D7001C62 +S315E061DFD0302F001060060680FFFFF1F075400C827D +S315E061DFE000000E106EF032007609780FE8A2C3FCED +S315E061DFF091A342414841D2807341E6A126019682CE +S315E061E0007343A542B48167246D0A183C0001B88167 +S315E061E0106632600EA742B481671AA944B881662464 +S315E061E020601C73FC07089280200160180680FFFF80 +S315E061E030F8F8601075FC0E10948020026006068088 +S315E061E040FFFFF1F032007812754041FA086EC3FCC9 +S315E061E0506667E8A1183C000FE8A2280092823401C5 +S315E061E06030301A00C5FC000A98824A44671E343093 +S315E061E0701A029480C5C4781232027542C3FC66679F +S315E061E080E8A1183C000FE8A29282D0817743A341D0 +S315E061E090B2836C0244804CD7001C4FEF000C4E7586 +S315E061E0A02F02322F000820010680000003847540AC +S315E061E0B00C8200000E106F060680FFFFF1F03F4014 +S315E061E0C00008241F6000FF024FEFFFF048D70C0CF9 +S315E061E0D03F39000140B024790000528247F900E1FE +S315E061E0E0C6304EBAFFBC3F3C7FFF3F39000140AED0 +S315E061E0F03F004E933239000140B6756F001C5C8F6C +S315E061E100D08135802A003F39000140B036390001BF +S315E061E1103EA84EBAFEB43EBC7FFF3F3900013EAA3F +S315E061E1203F004E93968035832A024CEF0C0C000833 +S315E061E1304FEF00184E754FEFFFDC48D71CFC246F9C +S315E061E1400028342F002C4A6A0002675432390001F4 +S315E061E15040B63039000140AE796A012C2600D6819D +S315E061E1607743B6846D0001289280716A012E73410E +S315E061E170B2806E00011A323900013EA830390001E1 +S315E061E1803EAA796A01302600D6817743B6846D006E +S315E061E19000FE9280716A01327341B2806E0000F0D6 +S315E061E1A03C39000140AC558F426749FAFF1C424554 +S315E061E1B076017F4247F900E1C63033C6000140B0DF +S315E061E1C04E94588F6022558F3F023A043F03528343 +S315E061E1D03F39000140B24E935C8F3F04D08633C035 +S315E061E1E0000140B04E94588F714328055484BE8037 +S315E061E1F06ED441F9000140B4558F33D0000140B08F +S315E061E2003F044EBAFEC4588F22790000527A2079D3 +S315E061E21000005282A74143E9000A7151B280670664 +S315E061E220AF43B68066185282714249F900013EA851 +S315E061E23047F00C0036B9000140B63754000273511D +S315E061E24052823002A543B6816708163C0006B68164 +S315E061E250662A736A0032A342B4816610558F3F0025 +S315E061E2602F082F0A4EB900E2009C601E558F3F00D1 +S315E061E2702F082F0A4EB900E1F67C600E558F3F02FA +S315E061E2802F082F0A4EB900E1D9804FEF000C4CD729 +S315E061E2901CFC4FEF00244E754FEFFFD848D77C7CCE +S315E061E2A0267900005282246F002C2F0B4EB900E2D2 +S315E061E2B004BA3813342B0004588F3A2B0002362BFC +S315E061E2C00006737900004FC2EC81200290847140B0 +S315E061E2D02C059C837D4620006A02528033C1000191 +S315E061E2E040AE2C066A025286E280E28EB0816C060E +S315E061E2F033C0000140AE558F3F3900004FCA3F3908 +S315E061E30000004FC83F39000140AE4EB900E1C6306A +S315E061E3107346508F33C000013EAA7140B2806C06ED +S315E061E32033C600013EAA287900005282558F4DFA24 +S315E061E330FD7047F900E1C630425C4BFAFC8C38F976 +S315E061E34000013EAA3F3C02A34E963EBC7FFF3F39A9 +S315E061E350000140AE3F004E935C8F38C03F3C02A364 +S315E061E3604E953EBC7FFF3F3900013EAA3F004E938A +S315E061E3705C8F38C03F3C01C24E963EBC7FFF3F3961 +S315E061E380000140AE3F004E935C8F38C03F3C01C216 +S315E061E3904E953EBC7FFF3F3900013EAA3F004E935A +S315E061E3A05C8F38C03F3C00E14E963EBC7FFF3F3913 +S315E061E3B0000140AE3F004E935C8F38C03F3C00E1C8 +S315E061E3C04E953EBC7FFF3F3900013EAA3F004E932A +S315E061E3D0508F204C220230C0424030B9000140AE3D +S315E061E3E03140000220790000528249E8001247E894 +S315E061E3F00016224C3039000140AE9280303900017E +S315E061E4003EAA33C1000140B69A8033C500013EA8F9 +S315E061E410700A3A11323900013EA85480D2853681BC +S315E061E4203A29FFFE3239000140B65989D285374132 +S315E061E430FFFE7340588B7A14BA8166D63039000193 +S315E061E44040AE220822480681000000142648D880A2 +S315E061E45033C4000140B638133039000140B69084C8 +S315E061E46037400028382B0002303900013EA8D084BD +S315E061E4703740002A588BB28B66DC303900013EAA00 +S315E061E48047E8003ED68033C300013EA8701E3814CB +S315E061E490363900013EA8548096843683382CFFFED7 +S315E061E4A03639000140B6598C96843743FFFE774092 +S315E061E4B0588B7828B88366D63039000140AE9480AF +S315E061E4C033C2000140B634113039000140B6D08222 +S315E061E4D0328034290002303900013EA8908233400F +S315E061E4E000025889B28966DE315000503168000217 +S315E061E4F0005222790000527A7A087169000ABA807C +S315E061E500664E716A0030AB41B2806D0C43F900E44E +S315E061E510FC0430310A006004302A00A433C00000F4 +S315E061E5205298716A0032A344B8806612558F3F3CB7 +S315E061E53000152F082F0A4EB900E2009C6022558F24 +S315E061E5403F3C00152F082F0A4EB900E1F67C6010BA +S315E061E550558F3F3C00152F082F0A4EB900E1D9804F +S315E061E5604CEF7C7C000C4FEF00344E753239000184 +S315E061E57040AE303900013EAA2F032F027541774044 +S315E061E580B4836F0230017140E480740FB4806C0C27 +S315E061E590143C0046B4806C06704660027010241F1D +S315E061E5A0261F4E7520790000527E2F0B2F0A3210FE +S315E061E5B033C1000140AC3028000233C0000140B4F1 +S315E061E5C0908133C0000140B26C0C068000000E10F1 +S315E061E5D033C0000140B2247900005282558F47F979 +S315E061E5E000E1C630302A000C3F3900004FCA33C023 +S315E061E5F0000140AE3F3900004FC83F004E9333C043 +S315E061E60000013EAA4EBAFF665C8F3F3C0E103F00AA +S315E061E6103F39000140B24E93508F4A40671C33D276 +S315E061E620000140B6548A558F33D200013EA83F00BF +S315E061E6302F2F00104EBAFB00508F245F265F4E7578 +S315E061E64020790000527E2F0A2F023210246F000CCF +S315E061E65033C1000140AC3028000233C0000140B450 +S315E061E660908133C0000140B26C0C068000000E1050 +S315E061E67033C0000140B2207900005282A342736A3E +S315E061E680012A33D8000140B633D800013EA833D021 +S315E061E690000140AE3028000233C000013EAAB481D9 +S315E061E6A06D10323900004FC42401948033C20001F9 +S315E061E6B03EAA4EBAFEB8558F3F3C0E103F003F3939 +S315E061E6C0000140B24EB900E1C630508F4A40670C56 +S315E061E6D0558F3F002F0A4EBAFA5E508F241F245F92 +S315E061E6E04E7522790000527A72094FEFFFF448D7EE +S315E061E6F0040C3029000A246F001020790000528250 +S315E061E700538071C0B280650001A8303B0A0848C0F9 +S315E061E7104EFB0802001400780078008800DE0146AE +S315E061E72001460156017A018A2F0A4EB900E1D73CCA +S315E061E730716A0022588FA342B4806600017470FF4B +S315E061E740207900005282558F43E8000633C000000D +S315E061E750529830113140000E3140000A30280002F3 +S315E061E76031400012328030103168000400083140D7 +S315E061E77000103140000C3F3C00052F082F0A4EB9CE +S315E061E78000E2009C4FEF000C600001262F4A00106A +S315E061E7904CD7040C4FEF000C6000FE0A33D0000149 +S315E061E7A040B643E80002558F33D100013EA83028D8 +S315E061E7B000083F3900004FCA33C0000140AE3F391F +S315E061E7C000004FC83F004EB900E1C630424133C058 +S315E061E7D000013EAA303C0E1033C1000140AC33C0AB +S315E061E7E0000140B233C0000140B44EBAFD805C8F97 +S315E061E7F0605C33D0000140B643E80002A342736A2D +S315E061E800012A33D100013EA843E8000433D1000177 +S315E061E81040AE3028000633C000013EAAB4816D10D7 +S315E061E820323900004FC42401948033C200013EAA0C +S315E061E8304240327C0E1033C0000140AC33C9000166 +S315E061E84040B233C0000140B44EBAFD22558F3F005D +S315E061E8502F0A4EBAF8E2508F60562F4A00104CD715 +S315E061E860040C4FEF000C6000FDD84241362A002AC5 +S315E061E870342A002E3541002A3541002E2F0A4EBA40 +S315E061E880FA183543002A3542002E588F60222F4A06 +S315E061E89000104CD7040C4FEF000C6000F9FC2F4AD6 +S315E061E8A000104CD7040C4FEF000C60FF0000412EC6 +S315E061E8B04CD7040C4FEF000C4E750000023C047817 +S315E061E8C006B408EE0B280D610F9911D01406163ABD +S315E061E8D0186C1A9D1CCB1EF721212348256C278EC7 +S315E061E8E029AC2BC72DDF2FF3320334103618381CD1 +S315E061E8F03A1C3C173E0E3FFF41EC43D445B6479385 +S315E061E900496A4B3C4D084ECD508D524653F955A55B +S315E061E910574B58EA5A825C135D9C5F1F609A620DA1 +S315E061E920637964DD6639678D68D96A1D6B596C8C6C +S315E061E9306DB76ED96FF37104720C730B740174EE7B +S315E061E94075D276AD777F7847790679BB7A677B0A48 +S315E061E9507BA27C327CB77D337DA57E0D7E6C7EC0ED +S315E061E9607F0B7F4B7F827FAF7FD27FEB7FFA7FFF2B +S315E061E9707FFF000022790000527E206F0004315152 +S315E061E98000A44E75700120790000527A2F02AF42E1 +S315E061E9903140000820790000527E3210206F000875 +S315E061E9A0538171C1B48052C0241F4880C081314017 +S315E061E9B00030207900005286528030804E75207991 +S315E061E9C0000052822F032F0230106F12323900009D +S315E061E9D0509077407541B4836C06300160027001F6 +S315E061E9E05380714072FE20790000527A226F000CEA +S315E061E9F020006A025280241F261FC0817201528064 +S315E061EA003141000420790000528A3340003230807F +S315E061EA104240314000024E7570022F0320790000BA +S315E061EA20527AA7432F02226F000CA74231400008B9 +S315E061EA3020790000527E301873C0B48152C134101F +S315E061EA402079000052864881C28071C2B68052C088 +S315E061EA503341002A30814880C082241F261F33401B +S315E061EA60002E314000024E75700120790000527A25 +S315E061EA702F023140000820790000527E3010737910 +S315E061EA8000004FDC7540B2826F044A406C0270014F +S315E061EA9020790000528643F9000140DC3080714004 +S315E061EAA0206F0008241F43F10A003151002C4E7596 +S315E061EAB02F0A206F000822790000528645F900018D +S315E061EAC040BC30280030528032807168002C45F2BB +S315E061EAD00A0033520002245F302801285280334015 +S315E061EAE00004424022790000528A32A80032334063 +S315E061EAF00002103C000120790000527A31400004A6 +S315E061EB00103C0003314000084E754FEFFFB048D727 +S315E061EB107CFC246F0058266F00543639000052762B +S315E061EB203012382A00043F2A00020684FFFFFFF014 +S315E061EB303F00988034044EB900E205EC3F6B000C6F +S315E061EB40003E588F20404A6B000A67063A7C001007 +S315E061EB5060029BCD3A123C2A0004700F720F7FF976 +S315E061EB6000005278E28FCA80303CFFFFCC81323CB4 +S315E061EB707FFF9E83D885EAA8ECA13C2B01283F4024 +S315E061EB80003E46804A446C0001C07D46A542B4869B +S315E061EB9067000086A744B8866714143C00013A2AE8 +S315E061EBA000027F47B4866600013A600000C47D4D8D +S315E061EBB080817F4722435389DC863A2A0002DE87D9 +S315E061EBC028462C006044322F003A3809362F005C23 +S315E061EBD0C2857341D281602A2A6B000E34103035CA +S315E061EBE01800080300006706468080826002C082E2 +S315E061EBF0B18277C3E28B5384D28CC486B182308290 +S315E061EC0054884A446CD2D1C752857345716A00060D +S315E061EC10B0816CB2600004FE7B4D224353897F472D +S315E061EC20382A000226054485D683DE87DA85808127 +S315E061EC302843602E322F003A3409C2847341D2816F +S315E061EC4060162A6B000EDBC1363558003C105382E4 +S315E061EC50B786C680BD8330C3D28C4A426CE4D1C7E5 +S315E061EC6052847544736A0006B2826CC8600004A679 +S315E061EC70808122435389774DDE87D6832800468497 +S315E061EC802A442F40002C604C322F003A38493C2F01 +S315E061EC90005CC2857341D28160322C6B000E341008 +S315E061ECA03836180008060000670A8882200DB982A6 +S315E061ECB0C480600A4684C882B982C4AF002CB98236 +S315E061ECC07DC6E28E538CD28330825488340C6CCA12 +S315E061ECD0D1C752857545736A0006B2826CAA600037 +S315E061ECE004347D4D224326018680DE87DC865389A6 +S315E061ECF028432F46002C6042302F003A3609342FE4 +S315E061ED00005CC0857140D080602808020000670A17 +S315E061ED102A6B000E383508006002424432102C0C32 +S315E061ED20538375C2E28AD0AF002CB981C286B981BC +S315E061ED3030C14A436CD4D1C752857345716A0006C6 +S315E061ED40B0816CB4600003CE327C00107D46A54490 +S315E061ED5093C5B88667000140183C0003B88667161C +S315E061ED6079433A2A00027F472844A344B88666007D +S315E061ED7002FC600001CC79432C0353867F47774DD3 +S315E061ED802F4600442C029C89DE87D6832F46003CC1 +S315E061ED903A2A0002D8843F4200302A4728433E019E +S315E061EDA0600000E4362F003A322F0046342F005CD3 +S315E061EDB0C6853F41002E3F4200367743D6836000E9 +S315E061EDC000BA322F0036226B000E3C313800080162 +S315E061EDD00000674A46863F4600424A40671A3C5011 +S315E061EDE043F04800240E220E84863C6F003EB581D6 +S315E061EDF0C280B581308160063C6F00302248734E37 +S315E061EE00E8892C41600C342F0042538E8282328134 +S315E061EE10D3C4340E32114A426CEC8C81603C4A4078 +S315E061EE2067183210240643F048003C6F003EC48107 +S315E061EE30B581C280B581308160063C6F0030224881 +S315E061EE40734EE8892C416008C286538E3281D3C401 +S315E061EE50340E32114A426CF0CC81BD815488D68C35 +S315E061EE60C287BD813C2F002E328173EF0036538617 +S315E061EE703F46002EE2893F4100364A6F002E6C0024 +S315E061EE80FF42D1CD52857745736A0006B2836C0045 +S315E061EE90FF14600002807F477B433C2A00023C41CD +S315E061EEA02807D8847F4D3A42DA85DE8728442803ED +S315E061EEB02602538496892F44002C2F430034340074 +S315E061EEC06070362F003A382F002EC6863F440032F6 +S315E061EED07743D6836052226B000E383138004A425E +S315E061EEE0671632102004C08243F05800B981B380BE +S315E061EEF03080302F00366004300D22487140E8885A +S315E061EF006008B98153803281D3C532114A406CF2CF +S315E061EF10B981200E5488C880D687B384322F0032F7 +S315E061EF20328453813F4100324A6F00326CA8D1CCC2 +S315E061EF3052867346716A0006B0816C86600001D6BE +S315E061EF40DE872C035386280C26022F4600482C01C7 +S315E061EF509689468638412F430034D8842F46004C43 +S315E061EF602F4700447F4D3200DE87600000F0362F88 +S315E061EF70003A302F004A3C42C6853F40002E302F92 +S315E061EF80005C7743D6832A433601600000BE226B7C +S315E061EF90000E3231D80008000000674A4A43672014 +S315E061EFA034102C018C822246BD823C2F003EC48601 +S315E061EFB02C0943F04800BD823C2F00363082600464 +S315E061EFC03C0E22487D46E88E600884815386328213 +S315E061EFD0D3C434114A466CF28282B382C4AF004C28 +S315E061EFE0B3823282605246813F4100424A436718AA +S315E061EFF034102C0143F04800CC82BD82C483BD82CB +S315E061F0003082342F00366004340E22487542E88A35 +S315E061F0103F400030600C302F00425382CC80328614 +S315E061F020D3C43C114A426CEEC286240C302F0030C8 +S315E061F030B386CC82B38632863C2F002E71C0E288DD +S315E061F0405488DBC753863F46002E4A6F002E6C001C +S315E061F050FF3E340E3203D1EF004452857745716A43 +S315E061F0600006B0836C00FF08600000AA2C0353869B +S315E061F070774DDE872F460034280C2C02D6839C8997 +S315E061F0802F46003C3C41D8843F4200302F47002C5C +S315E061F09032002A4360743C2F003A386F0036302FD5 +S315E061F0A0005CCC857D46DC86605608000000670A18 +S315E061F0B0226B000E36316800600242434A416714B2 +S315E061F0C03E1043F04800B787CE81B78730873E2F41 +S315E061F0D0003E60063E2F003022487F47E88F60069B +S315E061F0E03283D3C453874A476CF63E11240E548863 +S315E061F0F071C0E288538CDC8DB787CE82B787328761 +S315E061F100360C6CA6D1EF002C52857745716A000604 +S315E061F110B0836C824CD77CFC4FEF00504E752F0A62 +S315E061F1202F02242F0010246F000C2F024EB900E24B +S315E061F13004BA3EAA002C2F022F0A4EBAF9CE4FEF3F +S315E061F140000C241F245F4E754FEFFFCC48D77CFC43 +S315E061F150266F003C2A0B246F003858854DF900E193 +S315E061F160C63041EB00062F48002C41EB00022F48E8 +S315E061F1700030600000A22801C8804A446600011E92 +S315E061F1804A4067082A4B286F003060083001286FD3 +S315E061F190002C2A459E839C82080000006716558FE5 +S315E061F1A03F0791C33F083F064E96D08238803AAA20 +S315E061F1B0012C6060A541C2804A41671A558F3F07BD +S315E061F1C0302A012E90833F003F064E96D0823880EA +S315E061F1D03AAA012E603EA941C2804A416716558F1F +S315E061F1E03F0693C23F093F074E96D0833A8038AADD +S315E061F1F0013060207208C0814A40671A558F3F0628 +S315E061F200302A013290823F003F074E96D0833A80A2 +S315E061F21038AA0132508F3613306A012C342B000242 +S315E061F22071437348B2806E0C736A012EB2806D08C9 +S315E061F23042406006700160027002326A01307342D8 +S315E061F2407D49BC816F045880600A7D6A0132BC8168 +S315E061F2506C0250803E2B000479483C2B00067347D4 +S315E061F260B8816E0C796A012EB8816D0842416006FB +S315E061F270720160027202794628447949B88C6F045A +S315E061F2805881600A796A0132B88C6C025081280132 +S315E061F29088804A446600FEE07001600242404CD7D5 +S315E061F2A07CFC4FEF00344E754FEFFFE048D73C3CB6 +S315E061F2B0242F0024362F00283A2F002A4A790000AD +S315E061F2C051146F0000B63039000106C4247900009C +S315E061F2D05282220335450002354500069280D0838D +S315E061F2E03481354000042F0A2F024EBAFE5C508FFE +S315E061F2F04A40670A2F0A2F024EBAFE24508F47F919 +S315E061F300000106C678014BFAFE4049FAFE12605EDC +S315E061F310301322039280D083354000042005908427 +S315E061F320348135400002354000062F0A2F024E95A2 +S315E061F330508F4A4067082F0A2F024E94508F301B38 +S315E061F34022039280D083354000042004D085348145 +S315E061F35035400002354000062F0A2F024E95508F48 +S315E061F3604A4067082F0A2F024E94508F52847344A5 +S315E061F370717900005114B0816E964CD73C3C4FEFE9 +S315E061F38000204E75206F0004424043F900E4FC041E +S315E061F39033D10000529843E8001E33D100010714CF +S315E061F3A043E8002233D10001071643E8002A33D14E +S315E061F3B0000106BC43E8002E33D1000106BE3140B0 +S315E061F3C0002A3140002E103C000143F900E4FC02C2 +S315E061F3D03168002C001E2149000E314000224200B6 +S315E061F3E03140000C4E75206F000443F900010714AB +S315E061F3F03151001E43F9000107163151002243F9EC +S315E061F400000106BC3151002A43F9000106BE3151C3 +S315E061F410002E4E75322F0006302F0004C3C1C1C0E5 +S315E061F420D08171402F40000460FF000010CA4E5643 +S315E061F430FFB4206E0008A34148D73CFC246E000C63 +S315E061F4403A2800327145B2806708CBFC00035385E8 +S315E061F45060027A08756E001020790000527A2E0AF1 +S315E061F4607345387C0001E58A716800024244424690 +S315E061F47042432D40FFDC2A4147F2280060523013B7 +S315E061F4803612558F3F3900004FC8DE8296803C03C5 +S315E061F4903F3900004FCA302A0002322B00029081C8 +S315E061F4A03F004EB900E1C63038006C042004448068 +S315E061F4B03F0030066C04200344803F00D7C24EBA59 +S315E061F4C0FF544FEF000C36007140BBC06F14528C95 +S315E061F4D0714CB0AEFFDC6DA673437145B0816E00D1 +S315E061F4E00126558F3F03714547F900E1C63020009B +S315E061F4F06A0252803F3C03E8E28028403F064E9331 +S315E061F5005C8F3F3C03E83F003F054E935C8F3F03D2 +S315E061F5103A403F3C03E83F044E935C8F3F3C03E84F +S315E061F5203F003F054E935C8F3F033D40FFDC3F3C30 +S315E061F530FC183F044E935C8F3F3C03E83F003F0C71 +S315E061F5404E935C8F3F0338003F3C03E83F064E93A2 +S315E061F5505C8F3F3C03E83F003F0C4E935C8F3F3945 +S315E061F56000004FCA3A003F3900004FC83F2EFFDC2A +S315E061F5704E935C8F3F3900004FCA36003F39000039 +S315E061F5804FC83F054E9330525C8F22042240D288A9 +S315E061F590928D3D41FFE0322A00023F3C00033D4847 +S315E061F5A0FFE8D3C193C33D49FFE2224893C42801F2 +S315E061F5B09880486EFFE093CD200490833D40FFE65E +S315E061F5C02F2E00083D49FFE43D41FFEA4EB900E1D7 +S315E061F5D0D9804FEF000C30122047908D3480302A6D +S315E061F5E0000290833540000220024480D1C0600C65 +S315E061F5F043EA00023192280031912802D1C02248C3 +S315E061F60093C0B3CA66EA4CEE3CFCFFB44E5E4E75FF +S315E061F6104FEFFFF448D7040C242F0010246F001439 +S315E061F620362F00182F024EBAFD5C3039000106BC58 +S315E061F630588F080000006712558F3F3C00012F0A82 +S315E061F6402F024EBAFDEA4FEF000C3039000106BEDB +S315E061F650080000006716558F3F3CFFFF7143487213 +S315E061F6600CFC2F024EBAFDC84FEF000C2F42001082 +S315E061F6704CD7040C4FEF000C6000FD6C4FEFFFA41C +S315E061F680A34148D77CFC382F0068246F0060266F61 +S315E061F69000647144B2806C000394362A0032717959 +S315E061F6A0000050C07343B081670001083A39000039 +S315E061F6B04FC8343900004FCA33C3000050C049F91E +S315E061F6C0000106C430053A42C1C35283774326033B +S315E061F6D06A02528348C081C2E28B71407343200063 +S315E061F6E06A025280D281E2800681000106C45280BC +S315E061F6F03E0033C0000051143003C1FCFFFE2040E0 +S315E061F70056884240602634082241328038C34A42F4 +S315E061F7106C0A2C00E58E41F06806600E2C009C8335 +S315E061F720E58E5581538341F0680A528075437D4089 +S315E061F7302242B4866ED0340DB3C6660A41F9000141 +S315E061F74006C431806A002602D68391C849F9000170 +S315E061F75006C493C97F473F4500342A43604E32026F +S315E061F7603C08424348C183EF003471487341D0801D +S315E061F77022016A0252810680000106C4E2812F41BC +S315E061F7800030600A2C4052863A1E5480D6857B460C +S315E061F790BAAF00306FEEA34E9DC8200ED08148C34C +S315E061F7A087C0204152895288D48D38C37149BE8061 +S315E061F7B06EAC322A002E302A002A808108000000D1 +S315E061F7C06710558F3F042F0B2F0A4EBAFE444FEF59 +S315E061F7D0000C2F0A4EBAFBAE3413362B0002588F5B +S315E061F7E04A79000106BC670C3F033F022F0A4EBA15 +S315E061F7F0FAB8508F70013F40003220045380714067 +S315E061F80079442F4000402F440044588B38133A2BFB +S315E061F81000022E049E82200590834A4766124A4082 +S315E061F820670001EE3C39000106C4424160000172A5 +S315E061F8304A40660E323900005114424653816000F7 +S315E061F8400160558F3F3900004FC844803F39000061 +S315E061F8504FCA3F004EB900E1C6305C8F3F390000C8 +S315E061F8604FCA3C003F3900004FC83F074EB900E13F +S315E061F870C630508F32404A466D0A4A406D1E307C32 +S315E061F8800001601C4A405DC0A54C488030402006BE +S315E061F89044803F40003A99C8204C6008307C0004BF +S315E061F8A03F46003A2008578071C0A341B2806506A1 +S315E061F8B02C09448622463E39000106C438790000A7 +S315E061F8C051143C7C7FFF424142463A423F47002E1B +S315E061F8D0538C714C3F4E003442473C432F40003CD1 +S315E061F8E03841302F002E600E360738473C003F41E5 +S315E061F8F000343E0330023409322F003AC5C0C3C733 +S315E061F900948132026C04220244817741756F00343E +S315E061F910B4836E2A666A2406948C36026C042602E7 +S315E061F9204483240094872F420034342F00366C06DA +S315E061F930242F0034448277437542B4836C4277471F +S315E061F940B6AF003C660E7540A343B68267282400D5 +S315E061F9505382609449F9000106C47D743A02240039 +S315E061F96053827742B6866E80260752837543343476 +S315E061F9702A006000FF76340D360E32073C006006E1 +S315E061F980340D360E320C2008558071C0A347BE8017 +S315E061F99065024486578871C8A347BE806502448183 +S315E061F9A02006D0823F4000482001D0833F40004A94 +S315E061F9B0200490863F400050948696812005908190 +S315E061F9C0D285DC843F4000523F42004C3F43004ECB +S315E061F9D03F4600543F410056558F3F3C0004486F17 +S315E061F9E0004C2F0A4EB900E1D9804FEF000C716FE0 +S315E061F9F00032B0AF00406D084A79000106BE670C7F +S315E061FA003F053F042F0A4EBAF8A0508F36053404FD +S315E061FA10326F003252893F4900327149B0AF0044DA +S315E061FA206D00FDE82F0A4EBAF9BE588F4CD77CFCC3 +S315E061FA304FEF005C4E754FEFFFB4206F005448D72F +S315E061FA407CFC322800043E10326800063068000211 +S315E061FA5075417147B0826F08380130093208600834 +S315E061FA6038073E01300832099E8492803F47002E76 +S315E061FA703F4100323C39000052784A416C0844818A +S315E061FA803F41003244863F003A3900005276DE87D4 +S315E061FA907D463F04DA854EB900E205EC342F003647 +S315E061FAA0206F00547B45720F3468002C307900007A +S315E061FAB05276C881323C8000D48253883F48003E0A +S315E061FAC0588F776F002EE8A92042342F0032796F84 +S315E061FAD0003222413239000052982F43003C362FE2 +S315E061FAE0002E2F44004044822F42004444832F433A +S315E061FAF0004860000590286F0050242F004032399D +S315E061FB0000005298366C0128B4AF003C6E0002C02A +S315E061FB10774B382F004AA3422843B483670001300C +S315E061FB206D0A360B670001E460000548A542B483BF +S315E061FB30670000C6A743B68C66000538240A08024A +S315E061FB400000675A38493A6F002E26402601740F45 +S315E061FB50D68373C1E4A98681320308030000670A8C +S315E061FB603413260C4683C4833682260C740FE5ABC8 +S315E061FB702C43240E77CCE28B848328424A426C0282 +S315E061FB80D7C54DF04800380E6D06280ED7C6988762 +S315E061FB90538D754DA143B68266B2600004D638498D +S315E061FBA03C6F002E26402401760FD48273C1E6A90C +S315E061FBB08481320208020000670A3A53260C240D5A +S315E061FBC084833682240C760FE7AA2A42260D75CC09 +S315E061FBD0E28A868228434A436C02D7C54BF04800E5 +S315E061FBE0380D6D06280DD7C69887538E774EA1429C +S315E061FBF0B48366B26000047C38493C6F002E2640CF +S315E061FC002601740FD68373C1E4A9868132030803A2 +S315E061FC100000670A3A53240C260DB5833683260C19 +S315E061FC20740FE5AB2A43240D77CCE28B84832842BB +S315E061FC304A426C02D7C54BF04800380D6D06280D77 +S315E061FC40D7C69887538E340E6CB660000426260AB2 +S315E061FC5008030000675A38493C6F002E26402401AC +S315E061FC60760FD48273C1E6A984813202080200006C +S315E061FC70670A3A53260C240D84833682240C760F68 +S315E061FC80E7AA2A42260D75CCE28A868228434A4350 +S315E061FC906C02D7C54BF04800380D6D06280DD7C606 +S315E061FCA09887538E774EA142B48366B2600003C4EF +S315E061FCB038493A6F002E26402601740FD68373C108 +S315E061FCC0E4A98681320308030000670A3413260C2F +S315E061FCD04683C4833682260C740FE5AB2C43240E2F +S315E061FCE077CCE28B848328424A426C02D7C54DF0D9 +S315E061FCF04800380E6D06280ED7C69887538D754D28 +S315E061FD00A143B68266B26000036A240A0802000073 +S315E061FD10676A38493C6F002E26402601740FD68308 +S315E061FD2073C1E4A93F5300368681320308030000BC +S315E061FD30670A362F0036240C8682600A342F003635 +S315E061FD40260C4683C6823683260C740FE5AB2A43BE +S315E061FD50240D77CCE28B848328424A426C02D7C574 +S315E061FD604BF04800380D6D06280DD7C69887538E3F +S315E061FD70754EA143B68266A2600002F838493A6FD1 +S315E061FD80002E26402401760FD48273C1E6A936138C +S315E061FD908282240C4682C682240C3683760FE7AAD9 +S315E061FDA02C42260E75CCE28A868228434A436C024F +S315E061FDB0D7C54DF04800380E6D06280ED7C6988730 +S315E061FDC0538D774DA142B48366BA600002A6774B44 +S315E061FDD0382F0046A3422843B483670001286D0AA1 +S315E061FDE0360B670001D46000028AA542B4836700DE +S315E061FDF000BEA743B68C6600027A240A08020000B8 +S315E061FE00675638493A6F003226402601740FD68329 +S315E061FE1073C1E4A98681320308030000670A3413DB +S315E061FE20260C4683C48336822C44DDC7380ED7C69A +S315E061FE306D1C260C740FE5AB280E98882C43240EB6 +S315E061FE4077CCE28B848328424A426C02D7C5538DD4 +S315E061FE50340D6CB66000021C38493C6F00322640B6 +S315E061FE602601740FD68373C1E4A986813203080340 +S315E061FE700000670A3A53240C260D868236832A44AB +S315E061FE80DBC7380DD7C66D1C260C740FE5AB280DA4 +S315E061FE9098882A43240D77CCE28B848328424A42B0 +S315E061FEA06C02D7C5538E340E6CB6600001C6384914 +S315E061FEB03C6F003226402601740FD68373C1E4A9F4 +S315E061FEC08681320308030000670A3A53240C260D43 +S315E061FED0B58336832A44DBC7380DD7C66D1C260C3D +S315E061FEE0740FE5AB280D98882A43240D77CCE28B15 +S315E061FEF0848328424A426C02D7C5538E340E6CB66F +S315E061FF0060000170260A08030000675638493C6FB5 +S315E061FF10003226402401760FD48273C1E6A984813A +S315E061FF20320208020000670A3A53260C240D8483E4 +S315E061FF3036822A44DBC7380DD7C66D1C240C760F92 +S315E061FF40E7AA280D98882A42260D75CCE28A868230 +S315E061FF5028434A436C02D7C5538E360E6CB66000B1 +S315E061FF60011238493A6F003226402401760FD48275 +S315E061FF7073C1E6A98481320208020000670A36137A +S315E061FF80240C4682C68236832C44DDC7380ED7C63A +S315E061FF906D1C240C760FE7AA280E98882C42260E53 +S315E061FFA075CCE28A868228434A436C02D7C5538D73 +S315E061FFB0360D6CB6600000BC240A08020000676674 +S315E061FFC038493C6F003226402601740FD68373C1EF +S315E061FFD0E4A93F5300368681320308030000670ACD +S315E061FFE0362F0036240C8682600A342F0036260CC2 +S315E061FFF04683C6822A44DBC7380D3683D7C64A4470 +S315E06200006D1C260C740FE5AB280D98882A43240DE7 +S315E062001077CCE28B848328424A426C02D7C5538E00 +S315E0620020340E6CA4604C38493A6F003226402601A1 +S315E0620030740FD68373C1E4A934132C44DDC7380E3A +S315E06200408283260C4683C4833682D7C64A446D1CB5 +S315E0620050260C740FE5AB280E98882C43240E77CCD9 +S315E0620060E28B848328424A426C02D7C5538D340DB3 +S315E06200706CBC362F003A79CAE28C548024445383AE +S315E06200803F43003A4A6F003A6C00FA6C4CD77CFC0C +S315E062009033C1000052984FEF004C4E754FEFFFE0D0 +S315E06200A048D73C0C342F002C260F0683000000183C +S315E06200B0266F0024246F00284BFAF97C49FAF08A0D +S315E06200C0538260323F5200183F6A0002001A588A31 +S315E06200D03F52001C3F6A0002001E4A6B0002670C38 +S315E06200E02F032F0B4E94508F4A4067082F032F0B36 +S315E06200F04E95508F53824A426ECA4CD73C0C4FEFB4 +S315E062010000204E754FEFFFF4AB4148D7040C246FE5 +S315E0620110001020790000527A243900005282716A16 +S315E0620120003036280002B2806D0C41F900E4FC042E +S315E062013030300A006004302A00A433C000005298CE +S315E0620140716A0032A341B280662E558F3F032F0259 +S315E06201502F0A4EBAFF48322A002E4FEF000C302AA1 +S315E0620160002A808108000000671E558F3F032F0238 +S315E06201702F0A4EBAF49C600C558F3F032F022F0A6A +S315E06201804EBAF4FA4FEF000C4CD7040C4FEF000C6A +S315E06201904E75000022790000528230390000509696 +S315E06201A02F03322900022F02206F000C774075413F +S315E06201B0B6826E1032790000509A7749B6826C0642 +S315E06201C032096002320075403141003A24026A0225 +S315E06201D05282E282D28248C183C07001241F261F06 +S315E06201E03141003E20790000527A3140000430010C +S315E06201F020790000528AC1F9000050943080700183 +S315E0620200C3F9000050963141000233C0000140B8A4 +S315E06202104E7520790000527E2F02AB423010538039 +S315E062022073C0B48164027002206F0008241F3140FB +S315E0620230003C20790000528652803080700120793D +S315E06202400000527A314000084E7520790000527EF5 +S315E06202502F02737900004FDC30107540B2826F0472 +S315E06202604A406C02700120790000528643F900012F +S315E062027040DC30807140206F0008241F43F10A00A1 +S315E062028070013151003820790000527A314000081D +S315E06202904E754FEFFFA448D77CFC246F00602C0FAD +S315E06202A02839000052820686000000484242302A1F +S315E06202B00030322A002C306A0032356A0038002C6F +S315E06202C03A2A003E4BFA016649F900E201043F40F0 +S315E06202D000323F410034302A002A322A002E3F485B +S315E06202E0003620790000527A3F4000383F41003ABA +S315E06202F04240720135400030354100323540002AD5 +S315E06203003540002E354100027168000241EF005C23 +S315E062031041E8FFEC23C80000528220442F400044AB +S315E06203206072302800023C5058882F4800404243B1 +S315E06203303F40003E716A003C26750C007F5B604878 +S315E0620340735B20790000527A4240314100022046D6 +S315E06203502F41002E602232055280C3D332413205EC +S315E0620360D3CE3089C3EB0002588B3241322F003E46 +S315E0620370D3C13149000258887340B2AF002E6DD6C0 +S315E06203802F0A4E945283588F7143BE806EB2206FAD +S315E0620390004052827142B0AF00446D86306F0032E7 +S315E06203A0302F0034322F003623C4000052823548A3 +S315E06203B000303540002C306F0038302F003A35413E +S315E06203C000323548002A3540002E4CD77CFC4FEF90 +S315E06203D0005C4E752F0A206F000822790000528673 +S315E06203E045F9000140BC32A8003C7168003845F22C +S315E06203F00A0033520002245F3028012852803340DB +S315E0620400000422790000528A700342513368003A4E +S315E0620410000220790000527A31400008103C000167 +S315E06204203140000433C0000140B84E7500E4FC1070 +S315E062043000E4FC1C00E4FC3200E4FC5200E4FC6AEA +S315E062044000E4FC802F02342F00084A790001071C81 +S315E062045066167001558F3F0220790000523433C030 +S315E06204600001071C4E90588F42403F4200082079B7 +S315E062047000005238241F33C00001071C4ED04E756F +S315E06204802F032F02206F000C3010322800047740D1 +S315E06204907541B4836C063081314000043028000235 +S315E06204A03228000677407541B4836C083141000218 +S315E06204B031400006241F261F4E752F032F02206F40 +S315E06204C0000C30103228000477407541B4836C0624 +S315E06204D0308131400004302800023228000677403D +S315E06204E07541B4836F083141000231400006241F32 +S315E06204F0261F4E752F032F02A340222F000CB081D8 +S315E06205006504300160242401A540D080E28AB0828D +S315E062051065F8E288D082E2886002200224014C40DB +S315E06205202002D480E28AB48065F0241F261F4E75CD +S315E06205304FEFFFF448D70C0420790000527A41E885 +S315E0620540001240C046FC270020B9000052345988A8 +S315E062055023D00000523440C146C02679000052865C +S315E06205603F3C00064E4D548F36804CD70C044FEF1D +S315E0620570000C4E7542404FEFFFF448D7040C33C08F +S315E06205800001071C203C00E2047E23C000005234D6 +S315E062059040C346FC27002F3C00E204443F3C010096 +S315E06205A03F3C00054E4D508F23C00000523840C09C +S315E06205B046C34CD7040C4FEF000C4E754FEFFFF479 +S315E06205C048D7040C40C346FC270020390000523865 +S315E06205D02F003F3C01003F3C00054E4D508F40C02E +S315E06205E046C34CD7040C4FEF000C4E752F02302FEA +S315E06205F00008123900012B8075F9000052780280FA +S315E06206000000FFF0488173C1E2A822390000044E7F +S315E062061071C0D280716F000A4C020800241FD0813B +S315E06206204E7500004E751039000051234FEFFFF40E +S315E0620630206F001048D7040C740F2200528113C158 +S315E062064000005123321077680006C28233C100008F +S315E06206504F1E32280002C28233C100004F20323977 +S315E062066000004FDC7541B4836E06740131420006C8 +S315E06206707568000643F9000140DC734143F12A00E4 +S315E06206807568000833D100004F24B2826E067201AB +S315E0620690314100087368000843F9000140DC45E82F +S315E06206A0000A41E8002A43F11A0033D100004F26DE +S315E06206B043F900004F28329A335800025889B3FC56 +S315E06206C000004F6866F04CD7040C13C0000051235B +S315E06206D04FEF000C4E75700120790000528643F9A7 +S315E06206E00000501E30B90000502220790000527A94 +S315E06206F0314000083140000420790000528A30B966 +S315E06207000000501C315100024E754E752079000092 +S315E0620710527A41E8001220B90000523C598823D04F +S315E06207200000523C4E7520790000527A41E8001290 +S315E062073020B900005244598823D0000052444E75D5 +S315E062074020790000527A41E8001220B90000524056 +S315E0620750598823D0000052404E7520790000527AC3 +S315E062076041E8001220B900014970598823D000019E +S315E062077049704E7541F90000527E2F5000046000C8 +S315E0620780FEA6424072012F0A41FAFE9A2F0223C860 +S315E06207900000523C23C80000524423C8000149705D +S315E06207A0487900E4FC9833C0000050C233C00000D0 +S315E06207B0511833C0000050A433C00000511671795D +S315E06207C000004FC233C10000502020006A0252800E +S315E06207D0E28033C00000501C717900004FC42000F3 +S315E06207E06A025280E28033C00000501E203C00E084 +S315E06207F0153A23C0000052404EBAFE2C42414200F6 +S315E062080020790000045633C10000502213C0000074 +S315E0620810511A13C00000512313C00000512233C1A4 +S315E06208200000511E33C10000512020BC00E20BD60D +S315E06208302F3C00E013DC2F3C00E20DD83F3C000188 +S315E06208403F3C00004E4E4FEF000C3F3C00224E4EC6 +S315E0620850548F588F2040223C00E014C241E8000CDD +S315E0620860241F23D00001497420402141000C245FFB +S315E06208704E75207900000456203C00E206242F0AD9 +S315E06208802F0223C00000523C23C00000524423C022 +S315E06208900000524023C00001497020BC00E20BD642 +S315E06208A02F3C000000002F3C000000003F3C0000AF +S315E06208B03F3C00004E4E4FEF000C3F3C00224E4E56 +S315E06208C0548F43F9000149742040241F2151000CE2 +S315E06208D0245F4E754FEFFFBC303900004F1E322F5A +S315E06208E0004848D77CFC4204342F004A9280303973 +S315E06208F000004F2013C4000051323601948030026A +S315E06209004A416C0C260106830000001078016022E1 +S315E0620910323900004FC279430681FFFFFFF173412E +S315E0620920B2846F0C7E02424413C700005132600209 +S315E062093078024A406C1A2442203C00004F28D48256 +S315E062094045EA00107542D482908224004240602CCF +S315E0620950347900004FC47B40220A0681FFFFFFF232 +S315E06209607341B2856E0C528A95C2243C00004F28D0 +S315E0620970600A347C0010243C00004F283F00A34705 +S315E062098047F90000513479443F034EB900E205EC81 +S315E06209901239000051327B79000052767DF900000F +S315E06209A0527833CA0000512C538A23C00000512E7C +S315E06209B03A7900004F24387900004F26028600001B +S315E06209C0FFFE224B82871E3C000FCE8313C10000DE +S315E06209D05132220553813F410032588FDA852F4AE0 +S315E06209E000402F470030600000BC220054812F4156 +S315E06209F0003420402E0DA340220C2442CE80C280D9 +S315E0620A003C6F00423F47003A3F41003E6078A34771 +S315E0620A10BE846716A540B084671673D071F058003D +S315E0620A2048414241828026C1600E32D073D060086E +S315E0620A3032D073D04841424177D271EA00022E2F1A +S315E0620A400030588A4843424348404240EEABEEA803 +S315E0620A504A6F003A6704868160044683C6814A6FBC +S315E0620A60003E6704868060044680C680A340B08408 +S315E0620A70670EA541B2846704318358004243484316 +S315E0620A803083D1C6538E3E0E6C8471CDE2882A40A5 +S315E0620A9071CCE2882840302F002E53803F40002EF2 +S315E0620AA0202F00344A6F002E6C00FF404CD77CFC4E +S315E0620AB04FEF00444E751039000051233239000081 +S315E0620AC050205280538113C00000512333C100008D +S315E0620AD05020661C3F390000501E3F390000501C12 +S315E0620AE04EBAFDF24200588F13C000005122600CEC +S315E0620AF04A416C08424033C0000050201039000081 +S315E0620B005123538013C0000051234E7520790000B3 +S315E0620B10527E4A5066104A7900005020670870019A +S315E0620B2033C000005020608E4FEFFFF048D7003CA4 +S315E0620B301439000051324882080200006700008ED4 +S315E0620B40363900005276A544C88273F900005278BD +S315E0620B5020390000512EE289240353824A44673CDD +S315E0620B60774343F900005134D281D683602838391D +S315E0620B700000512C2A0020405485538460102019CD +S315E0620B80538431803800424048403080D1C14A4483 +S315E0620B906CEC538220054A426CD46030D28143F9D0 +S315E0620BA000005134602236390000512C2800204979 +S315E0620BB0548453836008224053833298D08122481A +S315E0620BC04A436CF2538220044A426CDA4CD7003CC8 +S315E0620BD04FEF00104E7540C046FC27004A390000D0 +S315E0620BE05122672C420113C10000512240C146C026 +S315E0620BF04A3900005123661C4EBAFF2E3F39000087 +S315E0620C0051203F390000511E4EBAFCCA588F4E75CC +S315E0620C1040C146C04E75103900005123A34152804F +S315E0620C2013C000005123303900005020528033C097 +S315E0620C30000050207140B280660C4EBAFEEC420073 +S315E0620C4013C000005122103900005123538013C0B3 +S315E0620C50000051234E7560BE20790000527E4FEF50 +S315E0620C60FFF048D73C0024790000528230BC000194 +S315E0620C7041EA000233D20000501C33D00000501E1D +S315E0620C804A79000050C2666E47FAFE2C4E934BF9E3 +S315E0620C9000E2199249FAFF80601AA941B2806614AD +S315E0620CA04E9433D20000501C41EA000233D0000079 +S315E0620CB0501E4E934E95A3417140B28066DC71B987 +S315E0620CC0000050A3207900005286308070012079BE +S315E0620CD00000527A31400008314000042079000079 +S315E0620CE0528A3092316A000200024CD73C004FEFE2 +S315E0620CF000106000FF227201424020790000527AC1 +S315E0620D0031410008314000044EB900E21992A9412E +S315E0620D1071C0B280650000B8303B0A0848C04EFB3D +S315E0620D200802000A001A0048003C00584240207956 +S315E0620D300000527A31400004600000947001424142 +S315E0620D4020790000527A314000083141000420796E +S315E0620D500000528671B9000050A330806070720163 +S315E0620D6020790000527A3141000820790000528AE7 +S315E0620D703092316A0002000260544A7900005020E3 +S315E0620D80662E4EBAFE92301220790000528A33C045 +S315E0620D900000501C3080302A00024CD73C004FEFF6 +S315E0620DA0001033C00000501E314000026000FD08B2 +S315E0620DB0301220790000528A33C00000501C308025 +S315E0620DC0302A000233C00000501E314000024CD788 +S315E0620DD03C004FEF00104E75000001014FEFFFF04F +S315E0620DE020790000527A48D7041C226F00142468E6 +S315E0620DF0000E206800122012672023C00001498A93 +S315E0620E00302A000C322A0008D080C3C033C0000109 +S315E0620E10498E33C10001499060263039000052762E +S315E0620E2045F90000044E23D20001498A45F90000E3 +S315E0620E30527833D200014990D08033C00001498EA6 +S315E0620E402010672623C0000149983028000C32281A +S315E0620E50000833C00001497CD080C3C033C00001C2 +S315E0620E60499C33C10001499E6034303900005276B4 +S315E0620E7045F90000527833D20001499E41F90000FB +S315E0620E80044E23D00001499833C00001497CD080EA +S315E0620E9033C00001499C4A69000266000136207946 +S315E0620EA000005282325045E8000A33C900014986A1 +S315E0620EB03228000233C1000149883428000433C273 +S315E0620EC0000149B29489528243E80008302800065C +S315E0620ED033C20001497833C0000149B4528090813F +S315E0620EE033C00001497A33D10001499443E8000CEA +S315E0620EF041E8000E33D20001499633D1000149BA86 +S315E0620F0033D0000149BC600000A4D28292803002F4 +S315E0620F1033C10001498633C0000149943469012E28 +S315E0620F2034280004774AD48094817942B6846C028C +S315E0620F30340A33C2000149BA94804A426D0000889D +S315E0620F402002D481528033C2000149B233C000012B +S315E0620F504978342901303028000A77423228000283 +S315E0620F607940B6846F06D2829280300233C1000144 +S315E0620F70498833C000014996342800063069013257 +S315E0620F80D480948179427748B6846C02340833C25D +S315E0620F90000149BC94804A426D2C2002D481528081 +S315E0620FA033C00001497A33C2000149B4700272F873 +S315E0620FB033C00001499233C0000149A030390001D3 +S315E0620FC0497CC081600270014CD7041C4FEF00106F +S315E0620FD04E752079000052823429012C30280008AF +S315E0620FE0321077427940B6846E00FF206000FF22BD +S315E0620FF04FEFFFD848D73CFC20790000527A22684E +S315E0621000000E2068001238290006362900083429C5 +S315E0621010000C3229000A20112050B1C0676A4A41A9 +S315E0621020673422045382C9C353815383D884601ED2 +S315E06210303A0360143C022240600630D1D3C4538640 +S315E06210404A466CF6548053854A456CE853814A4178 +S315E06210506CDE6000009022025384754253815383B2 +S315E0621060D482601E3A04224060103C03600630D1AE +S315E0621070D3C253864A466CF653854A456CEC548035 +S315E062108053814A416CDE605C4A41665853827342E0 +S315E0621090284322405384538C5281D28160422A0291 +S315E06210A0528541F118003004602E3C0C602426051E +S315E06210B0538377C33A502E0855872448D68347E848 +S315E06210C000029E833722BE8A66FA32CDD1C1DA82C7 +S315E06210D053864A466CD853804A406CCE53825581D9 +S315E06210E04A426CBA4CD73CFC4FEF00284E757040D2 +S315E06210F03079000149863279000149784FEFFF98ED +S315E062110048D77CFC76C0420272801F40006030396C +S315E06211100001499445F098FF1F4300631F42006255 +S315E06211201F4200641F4200661F4200671F41006162 +S315E06211303F40003043F108FF71C87DCAE888E88E17 +S315E06211401F4100652F4A00363600284699C071EF86 +S315E0621150003075C9E88A3F46003AE8883F42004077 +S315E06211603F40003C9480714C3A42B0826704424010 +S315E062117060027002322F003052823F42004A740FA0 +S315E06211807BFCFFFF2C0979FC7FFFC481E4AD740F21 +S315E0621190CC823F45005EECA43C0D46843E044A4662 +S315E06211A0660AC885A94180813F44005E38390001FC +S315E06211B0498E3C39000149903A39000149882C79D7 +S315E06211C00001498A73447546CBC62F410044320317 +S315E06211D02F42004C243900014998DA8E24453A3987 +S315E06211E00001499E2F420032343900014996C3C458 +S315E06211F07745D5C132390001499CC5C52F430054B4 +S315E06212002642242F0032D48B77412F430050362F6B +S315E0621210003CC7C12643D7C2340C360DC5C4C7C12C +S315E062122038423A43B7CA636A7579000149B4262FF0 +S315E0621230004C99C6206F00322C0D9C854C03280029 +S315E0621240262F0044448444812A063A6F005E45F6BE +S315E06212502800756F003A4C032800262F0054D5C249 +S315E06212607579000149BC4C032800262F0050D1C293 +S315E0621270756F00404C032800260947F02800740F7A +S315E0621280C682C4AF003696824A436D2CA3468086F8 +S315E06212906026362F00302246740F2C0893CCCC821F +S315E06212A028499A8DC68296864A436C06143C0001AA +S315E06212B080823A473E2F005E71407C0F7440C6865C +S315E06212C07341103708607B457D442F410058220DFB +S315E06212D046812F4500542F41005C3C44868030397C +S315E06212E00001497C1F43003F204053881003760F7C +S315E06212F03F4800344880C480C680714C2F4000501D +S315E06213003F4200462F43004C600001D275EF003445 +S315E062131071F90001497EA34373F90001498041F9FD +S315E0621320000149827A0FE4A838390001497AE4A9D2 +S315E0621330C083C283D080808110300800C0854A6F46 +S315E0621340004A660672FF3F41004A4A44660278FFF7 +S315E06213504880224B204A538071C02F400040600093 +S315E0621360015C7601342F004A3F44002E3F43003A47 +S315E06213703F42003842836000012E382F0038300E3B +S315E062138053844A4457C53F440038488544854A40B9 +S315E06213906D224A6F003A670A4A2F003F6C0477D0A3 +S315E06213A0D1C6484342434A4567064A6F00466624C9 +S315E06213B071D0602A4A6F003A670C4A2F003F6C068A +S315E06213C077D0D1C66004424348434A45670A4A6FCA +S315E06213D00046670491C6600E71D0484042408680FE +S315E06213E04A456602D1C6222F004C2403E2AA321194 +S315E06213F0780E3002B8AF0040652A282F0040387B6D +S315E06214004A064EFBC802002200260072002E003613 +S315E0621410003A003E0042004800500054005C006022 +S315E062142000680070424060502002600C20014680F5 +S315E0621430C082604420024680C081603C30016038F0 +S315E06214402002600E20026022200280816024200257 +S315E06214504680B38060222001601820014680808247 +S315E062146060162002600C200246808081600A2002BB +S315E0621470C0814680600270FF4A6F003A670A2407BD +S315E06214804682C087C282600C4A45670A240DC082E2 +S315E0621490C2AF005C808132804A456604D3EF005871 +S315E06214A042443F44003A4A6F00386E00FECE382F1F +S315E06214B0002ED1EF0050D3EF005453844A446E00BD +S315E06214C0FEA23A2F0034717900014992D5C0717952 +S315E06214D0000149A053853F450034D7C04A6F0034C6 +S315E06214E06C00FE2A4CD77CFC4FEF00684E754FEFDE +S315E06214F0FFF448D70C04246F00102F3900005282A3 +S315E062150047F900E204804E9320790000528241E876 +S315E062151000202F084E93508F20790000527E70E0B3 +S315E06215203410C0824A40660000847010C08242B9BC +S315E0621530000149A24A40673870EFC480424033C036 +S315E0621540000149A84A6A000A670A103C002033C0D3 +S315E0621550000149A8700241EA000E23D0000149A2C7 +S315E062156033C0000149A6103C000F33C0000149AA0E +S315E06215702F0A4EBAF868588F4A406630737900018E +S315E0621580498E71790001499CB0816620424013C25E +S315E0621590000149824CD70C044FEF000C33C00001C6 +S315E06215A0498033C00001497E6000FB444CD70C049D +S315E06215B04FEF000C4E754FEFFFEC48D70C1C246FD3 +S315E06215C000182F390000528247F900E204804E93F8 +S315E06215D020790000528241E800202F084E93508F16 +S315E06215E020790000527E70E03410C0824A40660084 +S315E06215F001607010C08242B9000149A24A40673474 +S315E0621600424170EFC48033C1000149A84A6A000AC8 +S315E06216106708762033C3000149A87002720F41EA77 +S315E0621620000E23D0000149A233C0000149A633C1AE +S315E0621630000149AA2F0A4EBAF7A4588F4A406600BB +S315E0621640011071790001498EA543B68066000102F8 +S315E0621650424022790000527E307900004FDC33C08E +S315E0621660000149927348302900027740B2836F04E1 +S315E06216704A406C027001714045F9000140DC7748EE +S315E062168032320A00302900047940B6846F044A4057 +S315E06216906C0270017140754241F9000140DCA5437C +S315E06216A030300A00B682671E6D0C163C0001B682C7 +S315E06216B06600009E6030A741B2826752A943B68255 +S315E06216C06600008E606070047407424333C10001B5 +S315E06216D0497E13C00001498213C20001498433C3C3 +S315E06216E000014980605E4202760C33C000014980A7 +S315E06216F013C20001498213C3000149837403760F62 +S315E062170013C20001498413C3000149856010700663 +S315E0621710424113C00001498233C10001498033C1AD +S315E06217200001497E601E7401760D424133C00001BC +S315E0621730498013C20001498213C30001498333C160 +S315E06217400001497E4CD70C1C4FEF00146000F9A0F3 +S315E06217504CD70C1C4FEF00144E7500002279000046 +S315E0621760527A2079000052864A79000050A4660EC9 +S315E062177070013340000833C0000050A2601270016D +S315E062178033C0000050A23340000871B9000050A394 +S315E062179030804E75700120790000527A2F022279EC +S315E06217A000005286A5423140000820790000527E50 +S315E06217B032280002328153817150B48067246D0A07 +S315E06217C0143C0001B48066306010A742B480671AA8 +S315E06217D0143C0004B4806620601833C1000050C235 +S315E06217E0601633C100005118600E33C1000050A488 +S315E06217F0600633C100005116241F4E7570012079D0 +S315E06218000000527AA54122790000527E31400008FA +S315E06218102079000052867151B28067246D0A123CCB +S315E06218200001B28066306010A741B280671A123C4E +S315E06218300004B2806620601830B9000050C24E756E +S315E062184030B9000051184E7530B9000050A44E759B +S315E062185030B9000051164E752F0A2F023F3CFFFF4A +S315E06218603F3C000B4E4D588F241F720FC081245FA0 +S315E06218704E75700120790000527A2F0A24790000B1 +S315E06218805286314000084EBAFFD03480245F4E75EE +S315E0621890700133C0000050A24E752F0A2F023F3C02 +S315E06218A000023F3C00014E4D588F4A40671E3F3C66 +S315E06218B000023F3C00024E4D588F2200E088738161 +S315E06218C08280700133C1000050A260024240241F50 +S315E06218D0245F4E7520790000527E4FEFFFEC48D7C9 +S315E06218E0043C3A10383C00FF4A456C0478FF448574 +S315E06218F04A7900005116670C4283424245FAFF9CE0 +S315E06219007B45606E4240428342427B4545FAFF8CAC +S315E062191033C0000050A260224E924A4067FA3039E4 +S315E0621920000050A2207900005286D1C352825483CD +S315E0621930C08433C0000050A230807142BA806F0C1E +S315E062194071B9000050A3720DB28066CC71B9000025 +S315E062195050A3720DB280662653826022303900004F +S315E062196050A22079000052865282C08431803800CB +S315E062197054834E924A4067067142BA806EDE20799F +S315E06219800000527A314200084CD7043C4FEF001413 +S315E06219904E7510390000511A2F0A2F021200488143 +S315E06219A024010282000000C04A4267227440C28279 +S315E06219B04A4157C1488106810000002133C10000D7 +S315E06219C050A27223C08113C00000511A602A3F3CC4 +S315E06219D000023F3C00014E4D588F4A40671E3F3C35 +S315E06219E000023F3C00024E4D588F2200E088738130 +S315E06219F0828033C1000050A2700160341039000069 +S315E0621A00511A7220C2804A41672474DF808220794B +S315E0621A100000528243F90000501E3151000213C0A9 +S315E0621A200000511A30B90000501C70026002424058 +S315E0621A30241F245F4E7500003039000052C82F0221 +S315E0621A402079000052CAC1F9000052CED080600C03 +S315E0621A5075D02202E08AE1898282308153804A40EF +S315E0621A606CEE241F4E75206F0004203C00007F3828 +S315E0621A70424143F9000050AA214000143039000087 +S315E0621A8050BE2151000443F900E423EC42A800343D +S315E0621A90315100183141001A31410046314000446B +S315E0621AA0314100263141012630813141001233C095 +S315E0621AB000004FD642B9000050B64E75303C7FFF0B +S315E0621AC042414FEFFFDC48D71CFC41F900012C9004 +S315E0621AD023C8000050AE42B9000050B642B90000D9 +S315E0621AE050BA383900012C9047F9000050AE49FAF5 +S315E0621AF0FF4833C00000508433C000005086203C6B +S315E0621B0000012BC833C10000508833C10000508AFF +S315E0621B1023C0000050B242424243600000AC3A2A1F +S315E0621B20004208050000670623CA000050AA301288 +S315E0621B3079447340B8816702528238007140A341AA +S315E0621B40B2806652322A00327DF90000508471C159 +S315E0621B50B086640633C100005084302A00287FF9DB +S315E0621B60000050867DC0BC87640633C000005086A4 +S315E0621B707FF9000050887DC1BC87630633C10000EF +S315E0621B8050887DF90000508A73C0B286630633C01E +S315E0621B900000508A5283A940CA804A45662041EADB +S315E0621BA0004C23D0000052CA41EA005033D0000014 +S315E0621BB052CE41EA005233D0000052C84E94246AB3 +S315E0621BC000544A8A6600FF58245B4A8A6600FF50E0 +S315E0621BD0528233C300004FCC33C200004FD633C2C9 +S315E0621BE0000050BE4CD71CFC4FEF00244E754FEF01 +S315E0621BF0FFF4206F001048D7001C342F00143228FF +S315E0621C000008A1437141B68066062002D08060502A +S315E0621C10224143E97FFF4A68001C660A91C8424056 +S315E0621C2075C277C1602C91C8424075C277C1600EB9 +S315E0621C3079C9B6846302528052805288D3C179C828 +S315E0621C40B48462EC601A79C9B684630252805288BF +S315E0621C50D3C179C8B48462EE4A406604103C00019E +S315E0621C604CD7001C4FEF000C4E754FEFFFF048D794 +S315E0621C701C04246F0014240A068200000048266AC7 +S315E0621C80000443EA004C302B00023553004841EB36 +S315E0621C900004D0803540004A702012D853804A4012 +S315E0621CA066F8356B0024006C356B0026006E716A4F +S315E0621CB00008A141B2806674302B0028D080528041 +S315E0621CC035400070302B002AD08052803540007259 +S315E0621CD0302B002CD080528035400074302B002EA1 +S315E0621CE0D08035400076302B0030D08035400078A9 +S315E0621CF0302B0032D0803540007A302B0034D080F1 +S315E0621D003540007C302B0036D0803540007E302B6B +S315E0621D100038D08035400080302B003AD0803540A4 +S315E0621D200082302B003CD0806000009C3F2B002874 +S315E0621D3049FAFEBC2F0A4E945C8F354000703F2B09 +S315E0621D40002A2F0A4E945C8F354000723F2B002C9E +S315E0621D502F0A4E945C8F354000743F2B002E2F0A7B +S315E0621D604E945C8F354000763F2B00302F0A4E94BE +S315E0621D705C8F354000783F2B00322F0A4E945C8FA1 +S315E0621D803540007A3F2B00342F0A4E945C8F354003 +S315E0621D90007C3F2B00362F0A4E945C8F3540007EE6 +S315E0621DA03F2B00382F0A4E945C8F354000803F2BE4 +S315E0621DB0003A2F0A4E945C8F354000823F2B003CFE +S315E0621DC02F0A4E945C8F354000847001356B003E7D +S315E0621DD00086356B00400088356B0042008A256BD1 +S315E0621DE00044008C256B00480090256B004C009403 +S315E0621DF0356B00500098356B0052009A35400046CC +S315E0621E00254200044CD71C044FEF00104E754FEF8D +S315E0621E10FFE848D71C1C246F001C720143F90000DE +S315E0621E2050AE206A00043010354100127340600EF5 +S315E0621E307550B2826710206800544A8866F220596B +S315E0621E4028494A8866EA22790000527E2648794025 +S315E0621E503211224875416014D6837743B6826E02A8 +S315E0621E602648202800546716224820403628000279 +S315E0621E707143B4806D0A7150B880660460DA2248B4 +S315E0621E8020146704588C60E2424075690002254975 +S315E0621E900004354000467141B082672C322B000265 +S315E0621EA0D2817341B4816C20B0816D1C72FF700186 +S315E0621EB0254B0004354100083540001C2F0A4EBA16 +S315E0621EC0FDAA588F226A000472017002207900002E +S315E0621ED0527A31410008314000042079000052868E +S315E0621EE030A9000220790000528A30E90032346972 +S315E0621EF0002830CA30A900343269003043F29801D2 +S315E0621F004CD71C1C4FEF00183149000233C1000167 +S315E0621F1040B84E7520790000527E303900004F6C31 +S315E0621F203210206F0004C0813140001A207900002F +S315E0621F3052863080700120790000527A3140000882 +S315E0621F404E7522790000527E2F0A2F023219A7427D +S315E0621F50207900005286246F000C71C1B48052C0B1 +S315E0621F60143C00064880C08130C0354000263211FC +S315E0621F7071C1B48052C0241F4880C0813080354030 +S315E0621F800126700220790000527A245F314000080F +S315E0621F904E7520790000527E2F027409305041E876 +S315E0621FA001C230087348C1FC91A342404840D088E0 +S315E0621FB07140E4A0143C000FE4A1206F0008241FE6 +S315E0621FC09081C1FC038430802079000052863080A3 +S315E0621FD0700120790000527A314000084E7520790E +S315E0621FE00000527E2F02737900004FDC301075409C +S315E0621FF0B2826F044A406C0270017201207900007D +S315E0622000527A43F9000140DC314100082079000050 +S315E0622010528630807140206F0008241F43F10A0027 +S315E0622020315100A24E752F0B2F0A206F000C2479D6 +S315E06220300000528647F9000140BC2268000434D1B0 +S315E0622040716800A234F30A00700234D034E80026E4 +S315E062205034A8012635680128000220790000528AF8 +S315E062206030E900323469002830CA30A90034326976 +S315E0622070003043F29801245F265F314900022079FD +S315E06220800000527A31400004103C000631400008FC +S315E0622090103C000133C0000140B84E7542402279DF +S315E06220A00000527A4FEFFFE448D70C7C266F00209F +S315E06220B020790000527E4241246B000433C0000165 +S315E06220C007203A2A0024342900067942601A361833 +S315E06220D0226A00485281968577433C313A0236312C +S315E06220E03A00224693C3D0897741B8836EE033C023 +S315E06220F0000107204A6B0046671E736B0008A14326 +S315E0622100B6816604D080600A3F002F0B4EBAFAE0D1 +S315E06221105C8F33C000010720302B001A08000000F4 +S315E0622120671E322A00427608C2834A416612323913 +S315E062213000010720C5EA003AD48133C200010720D4 +S315E0622140A941C0814A406718322A0038302A0036EF +S315E0622150D081323900010720D08133C000010720E7 +S315E0622160326A0028306A0030760441F188012279C9 +S315E06221700000527A33C800010736334300042279FD +S315E06221800000528A321371410C800000038467308A +S315E06221906E064A41671460760C8000000708673C69 +S315E06221A00C8000000A8C6666604E425942593039AC +S315E06221B00001072032C0425932C032C84251604AF9 +S315E06221C032C8425932C830390001072032C042591A +S315E06221D032C042404251334000026032303900013F +S315E06221E00720424132C032C8425932C84259425946 +S315E06221F03280334100026016425932C8425942592E +S315E062220032C8425932B900010720334800027601EA +S315E062221033C3000140B84CD70C7C4FEF001C4E75BF +S315E06222204FEFFFC0720848D77CFC246F0044266AF1 +S315E0622230000441EA000833D0000052B8302B004275 +S315E062224041EA001C33D0000052BA41EA004633D07C +S315E0622250000052DC41EA012833D00000529A41EA9A +S315E0622260000233D0000052AC41EA012CC08133D087 +S315E0622270000052AE41EA013033D0000052B041EA8A +S315E0622280012E33D0000052B241EA013233D000006F +S315E062229052B441EA001833C0000052BC302A001A38 +S315E06222A033C0000052D033D2000052DE33D0000099 +S315E06222B052E641EA001423D0000052E2207900009F +S315E06222C0527A3C680006320E6F0005383210740BA3 +S315E06222D0B5814A4157C64886448608000000670AC7 +S315E06222E041EB003A33D0000052D6A541C2804A4162 +S315E06222F0670A41EB003E33D0000052D2A941C08169 +S315E06223004A40672041EB003633D0000052DA41EBB7 +S315E0622310003833D0000052D841EB004033D00000A1 +S315E062232052D4600E424033C0000052DA33C000003D +S315E062233052D841EB004CA34123D0000052CA41EB94 +S315E0622340005033D0000052CE716A0026B280670830 +S315E0622350A542B480667E60424A46662E41EF004000 +S315E062236024390000528A41E8FFF023C80000528A0D +S315E06223702F0A4EBAFD28424023C20000528A588F85 +S315E062238020790000527A3140000471790001072019 +S315E062239020006A025280E288603C4A46662E41EF3D +S315E06223A0004024390000528A41E8FFF023C8000069 +S315E06223B0528A2F0A4EBAFCE6424023C20000528A93 +S315E06223C0588F20790000527A31400004303900019A +S315E06223D0072060024240322A001AA942C2824A417A +S315E06223E0670A362B0036342B003860044242424399 +S315E06223F073EA0126AB44B8816562323B1A0848C18A +S315E06224004EFB1802000C0012001C0032003E005423 +S315E0622410322B0028603E362B0028382B002C6008D1 +S315E0622420362B0028382B002AC5C42203928475C253 +S315E062243084C3D0826028382B0030322B0028D284C5 +S315E0622440601C342B002E322B0028C7C2D28277C39F +S315E062245086EB0030D0836006D483D0824241361266 +S315E062246020790000528275430C8200000384674C37 +S315E06224706E084A43671A600000DA0C8200000708B9 +S315E062248067660C8200000A8C660000C86000008EF7 +S315E062249032503A280002306B003C76012E099E806B +S315E06224A0326B00289A8133C5000052C4380733C7BD +S315E06224B0000052C241F18801DA88605C3810326B02 +S315E06224C0002842437401988132280002306B003C56 +S315E06224D033C4000052C2D08141F188013A0033C070 +S315E06224E0000052C4D888607232503A280002306BDB +S315E06224F0002876FFD089380033C0000052C2302B04 +S315E062250000309A889A80D2853A2B003C33C100002B +S315E062251052C44685DA80DA814242603E3810326BD6 +S315E06225200030342B00283068000242439889988252 +S315E0622530D284382B003C240894803A0233C20000ED +S315E062254052C433C1000052C274FF4684D889D8812E +S315E062255060084243424242454244303C7FFF41EAA0 +S315E062256000A2428733D0000052E041EB005233D002 +S315E0622570000052C899CC734E33C0000052B62C416B +S315E062258020790000527E326B00243A70780071C97D +S315E062259073CDB081620871EB0026B08164043A7C47 +S315E06225A0003F9BC9734D206B0048424047EB0052A7 +S315E06225B032701A002A4133C9000052BE32301A0222 +S315E06225C033D3000052C82F0A33C0000052C092894A +S315E06225D033C1000052C64EB900E01570266A0004A7 +S315E06225E0588F4A46670000BE3039000052C23079E1 +S315E06225F00001072E323900010730D1C030390000C0 +S315E062260052C433C8000052C2D28030390001072C6E +S315E062261033C1000052C44A4067243279000107326E +S315E0622620538033C00001072CD1C933C8000052C2BF +S315E0622630307900010734D28833C1000052C4207970 +S315E06226400000527E722071707800B2806656303930 +S315E0622650000052C2307900010724323900010726B0 +S315E0622660D1C03039000052C433C8000052C2D280B1 +S315E062267030390001072233C1000052C44A40672460 +S315E0622680327900010728538033C000010722D1C99D +S315E062269033C8000052C230790001072AD28833C1BA +S315E06226A0000052C4302B0042A541C0814A40671601 +S315E06226B03039000052C2206B004473B0D800D0813A +S315E06226C033C0000052C2528C714C5487BDC06E005A +S315E06226D0FEB0302A001A7C08C0864A4067000124B0 +S315E06226E032127E0A2679000052823684374500022B +S315E06226F030017D41C1FC91A342404840D0817140A6 +S315E0622700EEA01E3C000FEEA69086C1FC0708928002 +S315E06227104A41661041F9000052C23750000437451B +S315E06227200006600E41F9000052C437440004375097 +S315E06227300006302A001AA541C0814A406710206A25 +S315E0622740000441E8003E33D000005298600878FF0A +S315E062275033C400005298206A0004424449F900E119 +S315E0622760FA367B68003C4BF900E1F1486000008C88 +S315E06227704A6A000267363F53002E3C6B00043E2BEA +S315E062278000023C2B00062F0B2F0A4E95508F4A40D3 +S315E062279067082F0B2F0A4E94508F36AF002E374EB6 +S315E06227A00004374700023746000660082F0B2F0AFF +S315E06227B04E94508F3013323900005298D082368070 +S315E06227C0302B0004D08237400004302B0002D083E5 +S315E06227D037400002302B0006D08337400006714155 +S315E06227E008010000670AE2800080FFFF8000600265 +S315E06227F0E28033C00000529852847144BA806E001F +S315E0622800FF704CD77CFC4FEF00404E754FEFFFE810 +S315E062281048D73C0C26790000528A206F001C227948 +S315E06228200000527E4BEB000424680004425549EBFB +S315E062283000084254341173EA002471C2B28062081D +S315E062284073EA0026B280640C20790000528630BCBE +S315E0622850FFFF60602279000052863282226A004877 +S315E0622860302A00249480734230311A0232311A00DF +S315E0622870908136804A680046671A73680008A14309 +S315E0622880B6816604D080600A3F002F084EBAF360D4 +S315E06228905C8F3680302A0042A541C0814A40671487 +S315E06228A0D482206A0044754271B028003A8071B0E1 +S315E06228B0280138807603700120790000527A31432C +S315E06228C00004314000084CD73C0C33C0000140B8EC +S315E06228D04FEF00184E7520790000527E2F0A2F02C4 +S315E06228E043F9000050AE424073506010528075402A +S315E06228F0B2826714206800544A8866F020594A8892 +S315E062290066EA41F900012C90227900005286700154 +S315E062291032D05888600252801218488132C1244906 +S315E062292066F46004425A528073407420B4816CF457 +S315E0622930702120790000527A241F245F314000081A +S315E06229404E752F0B2F0A266F000C227900005286F5 +S315E0622950206B000432A80024336800260002227944 +S315E06229600000528A32E8003432E80030302B001A36 +S315E062297045E9000208000000670632A8003A6002F4 +S315E0622980425134E8002EA941302B001A43EA000294 +S315E0622990C0814A40670E34A8003632E8002C32E83D +S315E06229A000386008425232E8002C425932E8002A86 +S315E06229B070057202245F265F425133680028000286 +S315E06229C020790000527A31400004103C0001314126 +S315E06229D0000833C0000140B84E754FEFFFC048D7DC +S315E06229E07CFC20790000527A5C883C10246F0044BB +S315E06229F02A390000527E20390000528A43EF0040B5 +S315E0622A0043E9FFF042422646558B308B2045384BF0 +S315E0622A10734B3E183A582F40002C23C90000528A65 +S315E0622A20424023C80000527E600C79587620B68414 +S315E0622A306602528252807940B2846EEE2F0A4EBAB4 +S315E0622A40F65C424020790000527A588F31400004A9 +S315E0622A50207900005282382800044A476700011A4A +S315E0622A604A42670001143079000107202204928805 +S315E0622A70360148C387C22203484133C100010722B7 +S315E0622A80324330034A416C0C448133C10001072270 +S315E0622A9072FF600272013E0D67422C6A00047F4952 +S315E0622AA077EE0034E28BB6876C0A424033C00001AF +S315E0622AB0072230037F404483B6876F0A424033C0C1 +S315E0622AC00001072230033601C5C0C7F900010722BB +S315E0622AD041F03800D48833C20001072036127543CC +S315E0622AE00C8200000384673A6E084A436718600006 +S315E0622AF0009C0C820000070867420C8200000A8C88 +S315E0622B006600008A6056424233C00001072433C140 +S315E0622B100001072833C20001072633C20001072AF3 +S315E0622B20606A4243448033C000010726448133C36E +S315E0622B300001072433C3000107286034424744801A +S315E0622B40448133C00001072433C10001072833C73B +S315E0622B500001072633C70001072A6030424233C0CC +S315E0622B600001072633C20001072433C200010728A9 +S315E0622B7033C10001072A6014424333C300010724CC +S315E0622B8033C30001072633C3000107223E0D670007 +S315E0622B9000D4714CA341B2806C0000CA30390001A6 +S315E0622BA0072022049280200B538048C183C0200113 +S315E0622BB0484033C00001072C6C0C448033C00001EE +S315E0622BC0072C70FF60027001361275430C820000BA +S315E0622BD00384673A6E084A4367186000009C0C8279 +S315E0622BE00000070867420C8200000A8C6600008AD1 +S315E0622BF06056424233C10001072E33C000010732FC +S315E0622C0033C20001073033C200010734606A4243CF +S315E0622C10448133C100010730448033C30001072E8B +S315E0622C2033C300010732603442474481448033C192 +S315E0622C300001072E33C00001073233C700010730B7 +S315E0622C4033C7000107346030424233C100010730C6 +S315E0622C5033C20001072E33C20001073233C00001DE +S315E0622C6007346014424333C30001072E33C30001C5 +S315E0622C70073033C30001072C2F0A33C40001072053 +S315E0622C804EBAF59E20790000527A3146000441EF51 +S315E0622C90003023C50000527E4CEF7CFC000423D05A +S315E0622CA00000528A4FEF00444E7570014FEFFFEC21 +S315E0622CB020790000527A48D71C0C266F0018314002 +S315E0622CC000084AAB0034670C207900005286425015 +S315E0622CD060000090246800143768001200182768C4 +S315E0622CE0000E0014274A0034424270FF49FAED4A68 +S315E0622CF060023003361271407343B08167025282DA +S315E0622D00302A0042A941C0814A40662C41EA004C21 +S315E0622D1023D0000052CA41EA005033D0000052CEBE +S315E0622D2041EA005233D0000052C84E94302A004243 +S315E0622D30A941B38035400042246A00544A8A66B2A9 +S315E0622D40302B004441EB003423D0000050B62079AA +S315E0622D5000005286D0823740004433C000004FD62E +S315E0622D6030824CD71C0C4FEF00144E75206F000476 +S315E0622D70203C00007F3843F900E423EC42A80034AB +S315E0622D8042B9000050B6214000143039000050BE0E +S315E0622D90315100183140004433C000004FD64E75C1 +S315E0622DA02F032F02322F0010302F0012206F000CFB +S315E0622DB075417740B6826D0C42423142001C4A4010 +S315E0622DC06E146010760190813143001C7740B483C3 +S315E0622DD06E04600E70014840424073414C4100000F +S315E0622DE0600270FF241F261F4E754FEFFFF048D733 +S315E0622DF00C0C246F0014424043F9000050AE206A86 +S315E0622E0000043210354000127141600E7550B08296 +S315E0622E106710206800544A8866F2205926494A8833 +S315E0622E2066EA227900005282302900024A6A012A61 +S315E0622E30660C327900004FC4528993C02009224859 +S315E0622E4077C07541600A22280054671422482041FF +S315E0622E5073E80028B681650A7350B481660460E659 +S315E0622E60224822136704588B60E4424175C02549C3 +S315E0622E700004354100463229002877C1B483671CD5 +S315E0622E803F003F012F0A4EBAFF18354000082F0A6D +S315E0622E904EBAEDD84FEF000C226A00047002207938 +S315E0622EA00000527A72013140000420790000528AB1 +S315E0622EB030E900323469002830CA30A90034326918 +S315E0622EC0003043F298014CD70C0C4FEF00103149B9 +S315E0622ED0000233C1000140B84E754FEFFFE448D7B8 +S315E0622EE00C0C246F002026790000527E43F9000024 +S315E0622EF050AE206A00043F680002001A3F6800286C +S315E0622F0000147153600E7350B081671420680054E8 +S315E0622F104A8866F220594A8866EC41F900012C90AB +S315E0622F2025480004701C41EF001CD08F41E8FFF693 +S315E0622F30558024390000528A23C80000528A41EF44 +S315E0622F40001C26390000528241E8FFF623C00000E9 +S315E0622F50527E23C8000052824A6A001267082F0A2C +S315E0622F604EBAEEAC60062F0A4EBAFE804240207937 +S315E0622F700000527A23CB0000527E23C300005282C5 +S315E0622F8023C20000528A226A00044CEF0C0C000451 +S315E0622F9031400004103C00014FEF00203140000850 +S315E0622FA020790000528630914E750000207900014A +S315E0622FB04DA84FEFFFE02F02227900E4FE18342895 +S315E0622FC0001C41EF0004101910C066FA41EF0004DC +S315E0622FD010B9000186502F084EB900E2BC70588FD6 +S315E0622FE03002241F4FEF00204E754E56FFE8302E1A +S315E0622FF0000848D7040C306E000E7610246E000A84 +S315E0623000222E00107540B682662C756A00367748C5 +S315E0623010B68266227610B682661C487800102F2A3F +S315E062302000322F014EB900E00EC44FEF000C424071 +S315E062303035400036601C558F486EFFF63F002D4ADC +S315E0623040FFF63D48FFFA2D41FFFC4EB900E240181B +S315E0623050508F4CEE040CFFE84E5E4E754E56FFF412 +S315E0623060226E000841EEFFF7101910C066FA558F1E +S315E06230704267486EFFF74EB900E2B31C508F4A8052 +S315E0623080670820403028001C600270FF4E5E4E7575 +S315E062309070014FEFFFD048D73CFC2A0F068500004F +S315E06230A00028262F003442427D6F00384BF900E05B +S315E06230B00EC4796F003A49F900E240A233C00001DA +S315E06230C049C447F900E23CF045F900E033EA6000C2 +S315E06230D0008A487800082F032F054E954FEF000CC3 +S315E06230E05083A341202F0028B280673A6D064A805A +S315E06230F067126048A541B2806724123C0003B28041 +S315E0623100663A602E202F002C72644C0108004C4413 +S315E062311008002F004E9442AF002C588F601E203C70 +S315E062312000E28C966012223C00E28D6E2F4100280E +S315E0623130600A203C00E28B5C2F400028202F0028AA +S315E06231406714222F002C2E01484748C73F073F01EC +S315E06231502F004E93508F4E9252827142BC806E0027 +S315E0623160FF7242414CD73CFC4FEF003033C1000165 +S315E062317049C44E754FEFFFF048D70C0C246F00142C +S315E06231804EB900E03130700123CA000149C847F9FF +S315E062319000E240A241EF001833D0000149CC33C0CF +S315E06231A0000149CE4EB900E03146600848780064D5 +S315E06231B04E93588F4A79000149CE66F04EB900E0E7 +S315E06231C0313042402439000149C8948A7542E68A20 +S315E06231D042B9000149C833C0000149CE33C000019B +S315E06231E049CC4EB900E0314672FF93C97142604202 +S315E06231F02052B1FC00E243A866147379000149F0FB +S315E0623200262A00044C013800424125430004B1FC01 +S315E062321000E28C9666027202B1FC00E28B5C6602A8 +S315E06232207203B1FC00E28D6E660272013481508AED +S315E062323052897749B0836EB830024CD70C0C4FEFA7 +S315E062324000104E75558F3F3C00014EB900E2EA60D0 +S315E06232504EB900E298DA588F207900014DA83028FD +S315E0623260003667162F3900014DA43F002F083F3C18 +S315E062327000104EBAFD764FEF000C2F3900018568DB +S315E06232804EB900E2777E42574EB900E2EA60588F65 +S315E062329060FF00004D3A000071F9000186F42F0AE2 +S315E06232A073EF000C206F000848404240227900012B +S315E06232B0856421490004828071F9000186DC484018 +S315E06232C042402141001873F9000186F08081214075 +S315E06232D000104A896704234800087202203C000114 +S315E06232E0856490B900014EC42268000C23C80001CF +S315E06232F0856445F90001857821400008302900247B +S315E062330031410014322800162079000185788081E7 +S315E062331033400024600424482050B3C867044A88D6 +S315E062332066F4B3F900014DA8672832290022C0810C +S315E06233304A40671E4A88671A3028001E72FE249049 +S315E062334020B900014F5423C800014F54C081314077 +S315E0623350001E245F4E752F0A226F000C244995F9F0 +S315E062336000014EC4206F0008225125480004214A1C +S315E0623370000821490004670423480008245F4E756B +S315E0623380207900014DA8302F000432280024314014 +S315E06233900022C0814A4066123028001EA341808125 +S315E06233A03140001E4EB900E033EA207900014DA8B3 +S315E06233B0302800244E754FEFFFF448D7040C362FC1 +S315E06233C00010242F0012247900014EBC4A8A671A43 +S315E06233D0558F23D200014EBC4878001C42672F0A03 +S315E06233E04EB900E00DE84FEF000C42402079000153 +S315E06233F04DA824A80026214A002635430016254812 +S315E0623400000C42AA00083540001430280020808370 +S315E06234107743314000207008B08367586D1C103CDA +S315E06234200002B0836742103C0004B0836746103CFA +S315E06234300001B0836600008260227020B083674A32 +S315E06234406D0A103C0010B083666E60347040B083E3 +S315E062345067440C8300000080665E60502F0A4EB9B6 +S315E062346000E28F32588F60502F022F0A4EB900E287 +S315E0623470900460422F022F0A4EB900E2908A6036CB +S315E0623480558F2F022F0A426760162F022F0A4EB916 +S315E062349000E28F6E6020558F2F022F0A3F3C0001BB +S315E06234A04EB900E2B5824FEF000C600C2F022F0A94 +S315E06234B04EB900E2445C508F302A00164CD7040CB9 +S315E06234C04FEF000C4E754FEFFFF0302F001422796C +S315E06234D000014DA848D71C0445E90026205273C076 +S315E06234E0600C75E80016B2826708244820504A8864 +S315E06234F066F028680008296800040004266800046B +S315E06235004A8B6704274C00083229002046802490C3 +S315E06235104CD71C044FEF0010C280334100203229A1 +S315E06235200022C2803341002232290024C081334026 +S315E062353000242028001820B900014EBC23C80001EF +S315E06235404EBC4E75227900014DA84FEFFFE448D795 +S315E06235501C3C45E90026382F002020522239000122 +S315E06235604EBC42406064342800162604C6824A4352 +S315E0623570675436280014A745CA834A4567048082A1 +S315E062358060442868000824902968000400042668DC +S315E062359000044A8B6714A945C685274C00084A434E +S315E06235A0670826280010D7AB001020813229002058 +S315E06235B04682C2823341002032290022C481220837 +S315E06235C0204A33420022244820504A8866984CD7E3 +S315E06235D01C3C23C100014EBC4FEF001C4E7500003F +S315E06235E04FEFFFF448D7040C342F0010362F001645 +S315E06235F04A42676C3F2F001E3F2F001E3F2F001E80 +S315E06236003F2F001E3F032F2F001C3F027542487971 +S315E0623610000149DC4EB900E2E1424FEF0014701856 +S315E0623620B082673C103C0016B0826734714345F95C +S315E062363000E033EA2200E789ED88908106800001A6 +S315E06236406894204030100280000010004A4067040F +S315E0623650600E4E923039000186F40800000066F290 +S315E06236604CD7040C4FEF000C4E752F02242F000846 +S315E06236702F2F000C4EB900E28A54588F4A79000126 +S315E062368049DA660C2F420008241F60FF00005844A6 +S315E0623690241F4E754A6F00046742558F3F3C000116 +S315E06236A04EB900E2EA60700141F900014DA823D00B +S315E06236B0000186E02F390001856833C0000149DAEE +S315E06236C04EB900E2777E303900014CF0508F33C05C +S315E06236D000010738674060FF00003F544A79000105 +S315E06236E0073867064EB900E2773441F900010738D8 +S315E06236F033D000014CF02F39000185744EB900E2F7 +S315E0623700777E4240588F33C0000149DA3F40000479 +S315E062371060FF0000B34E4E7542404FEFFFA448D7BC +S315E06237207CFC4879000149D2487900014B9833C064 +S315E0623730000149D04EB900E2FE52508F49EF004C8B +S315E06237404DEF00564BEF005447EF003C4EB900E2B6 +S315E0623750DB824A79000186F4672C740A45F900E057 +S315E062376033EA4E9253824A4266F8700241F90001A8 +S315E062377086DC3F50003041F9000186F03F5000326E +S315E06237803F40002E603A4AB90001885866047003E9 +S315E062379060027007558F486F003242A72F3C0001E6 +S315E06237A0FF0142A74879000149D04879000149D032 +S315E06237B03F004EB900E240C43F40004A4FEF001C72 +S315E06237C0558F3F3C00014EBAFECC588F302F002E0B +S315E06237D0A541C0814A40670004003F2F00323F2F77 +S315E06237E000324EB900E2EA40588F3A006F0003EACF +S315E06237F0323900018B7C7140342F00323C2F00302D +S315E06238007741B68067362800E78CED88908406803B +S315E06238100001688E204078083010C0844A40670014 +S315E062382003482003E788ED8B968006830001688E65 +S315E062383020433010C0844A406700032E558F3F050F +S315E06238407E104EB900E2DBCA3F02283900018C6481 +S315E06238503F063F3C000A42672F044EB900E2AE4C97 +S315E06238602F0C3F0536003F3C00014EB900E2D6928E +S315E06238702F0E2F0D486F0078486F007E2F0C4EB9E1 +S315E062388000E0350871454FEF002C2200E789ED88AC +S315E062389090812203558173C10680000168942040BD +S315E06238A03010BE81650002BE323B1A0848C14EFB4B +S315E06238B018020022007C002E02B202B202B200CCF2 +S315E06238C002B204200420014E01AE02B204200420BA +S315E06238D0014E01AE0280000010004A40660002829C +S315E06238E0558F42673F3C00013F032F3900018C64EC +S315E06238F04EB900E273C24FEF000C4A4067000266BF +S315E0623900558F3F3C00017143A5417816B28056C29D +S315E0623910426748823F03988224042F3900018C640F +S315E06239204EB900E2B1684FEF000C6000027C7E089F +S315E0623930C0874A406700022E3F3C2710741C3F3C1A +S315E062394027103F3900014A3E4267486F004C4EB944 +S315E062395000E03524486F0064486F006A486F00589B +S315E06239603F2F00703F2F00743F2F00723F2F00728F +S315E06239704EB900E270A84FEF00206000022C722080 +S315E0623980C0814A40670001DE2F0C3F053F3C0003E1 +S315E06239904EB900E2D692322F0054302F0062306F79 +S315E06239A00056326F0058343900014A3E363900011A +S315E06239B04B5C92803F410054322F0060C5FC0007A9 +S315E06239C0C7FC000791C13F480056306F005C93C860 +S315E06239D03F490058326F005A306F005E93C83F49E4 +S315E06239E0005A2F0E2F0D2F0C3F02741B3F033F012F +S315E06239F03F004EB900E26FCE4FEF001C600001AAB5 +S315E0623A00558F2F0B2E0352873F072F044EB900E2E4 +S315E0623A10A49C71434FEF000C721141F900E2FDE4A0 +S315E0623A20B280661E2F0B3F023F064E90508F4A4091 +S315E0623A3066367D46716F003CB0866F000294600028 +S315E0623A4002922F0B3F023F064E90508F4A40661E0F +S315E0623A507542716F003EB0826F000276600002745A +S315E0623A6071437412B4806608761274196004760D36 +S315E0623A70741A558F2F0B2C0353863F063E0645F983 +S315E0623A8000E2A1D02F044EB900E2A47471424FEF76 +S315E0623A90000C721AB28066223F3C00103F062F0489 +S315E0623AA04E92204030AF00443F3C00143F062F0464 +S315E0623AB04E92204030AF005060203F3C00123F06FD +S315E0623AC02F044E92204030AF00463F3C00163F0640 +S315E0623AD02F044E92204030AF0052700DB7804FEF08 +S315E0623AE0000E45F900E2A1D04A4057C048804480C2 +S315E0623AF03F003F033F072F3900018C644EB900E275 +S315E0623B007454721A3F40006671424FEF000CB28005 +S315E0623B1066263F3C00103F072F044E92204030AFAE +S315E0623B2000443F3C00143F072F044E92204030AFE2 +S315E0623B3000504FEF001060703F3C001274193F076F +S315E0623B402F044E92204030AF00463F3C00163F07BE +S315E0623B502F044E92204030AF00524FEF0010604883 +S315E0623B6074166044424260403F2F0056741545F930 +S315E0623B7000E033EA3F2F00563F2F005C3F2F0060A4 +S315E0623B803F0173412001E788ED8992800681000159 +S315E0623B90689020412F103F3C001E4EBAFA444E9286 +S315E0623BA04E924E924FEF00103F2F00563F2F005637 +S315E0623BB03F2F005C3F2F00603F057B452005E7888D +S315E0623BC0ED8D9A8006850001689020452F103F02B0 +S315E0623BD04EBAFA0E4FEF0010302F002EA941C08187 +S315E0623BE04A40670000DE4AB900018858670000D49F +S315E0623BF02F0D2F0E4EB900E294C2508F4A406700F5 +S315E0623C0000C2716F0056A743243900018828B68046 +S315E0623C1066000090302F0054A5447340B8816C76FC +S315E0623C2057803F400054714041F900018834558F16 +S315E0623C3024300C003F3C00013F3C000142673F3CC0 +S315E0623C4000013F3C00032F39000188584EB900E27B +S315E0623C5092E6303900018B7C4FEF00106D48426787 +S315E0623C6045F900E033EA4267426742673F007140E6 +S315E0623C702200E789ED889081068000016890204005 +S315E0623C802F103F3C001E4EBAF9584E924E924E921B +S315E0623C904FEF0010601032390001882CD0813F402E +S315E0623CA00054700A600270284267426742673F2F9B +S315E0623CB0005A3F2F005E2F023F004EBAF9244FEFC3 +S315E0623CC00010558F42674EBAF9CC588F6000FA7E83 +S315E0623CD036070683FFFFFFF6774341F900E4FCE42B +S315E0623CE0741841F03A003F50005A6000FEBC000092 +S315E0623CF030390001856C4FEFFFF448D7040C4A4037 +S315E0623D006610424133C100014F5033C100014D1C80 +S315E0623D1060087340741FB4816D4A307900014D1CAE +S315E0623D2076207348528833C800014D1C7548B682C6 +S315E0623D306608424233C200014D1C22415280E78945 +S315E0623D4033C00001856C41F900014F5C43E9023002 +S315E0623D5045EF001021929E0043EF0014D288204185 +S315E0623D60215111844CD7040C4FEF000C4E754FEF86 +S315E0623D70FFE048D71C1C263900014DA8280FA1791F +S315E0623D8000014DA849F900E03130068400000018D0 +S315E0623D9045F900E00EC447F900E03146600000DC18 +S315E0623DA04E9430390001856C48780008538033C000 +S315E0623DB00001856C303900014F507540528033C046 +S315E0623DC000014F50E78A0682000160DC2F022F0471 +S315E0623DD04E92717900014F504FEF000C7220B28023 +S315E0623DE06608424033C000014F504E934A79000163 +S315E0623DF049CE677A202F00180C8000E28B5C66164B +S315E0623E00222F001C73C10C8100002B1C6608424104 +S315E0623E1033C1000149CE4A79000149CE67500C8030 +S315E0623E2000E243A8661C2079000149C8203C00E212 +S315E0623E3043A8B0A8FFF8660A222F001CD3A8FFFCAD +S315E0623E40602C487800082F022F39000149C84E924B +S315E0623E504FEF000C3039000149CC50B9000149C836 +S315E0623E60538033C0000149CC33C0000149CE2F2FC5 +S315E0623E70001C206F001C4E90588F4A790001856CB9 +S315E0623E806600FF1E23C300014DA84CD71C1C4FEFF2 +S315E0623E9000204E752F032F024A79000149C46670ED +S315E0623EA04EB900E2771C34004EB900E277D03600B4 +S315E0623EB0672A2079000186E0AF41206800147168C4 +S315E0623EC00022B2806C24558F3F3C00023F3C037077 +S315E0623ED03F3C00014EB900E2F7EC508F73427179D4 +S315E0623EE000018704B08167284243484342437542F2 +S315E0623EF04EB900E0313086822F03487900E28B5C6E +S315E0623F004EBAFDEE508F241F261F60FFFFFDF23A88 +S315E0623F10241F261F4E75207900014DA84FEFFFF052 +S315E0623F2048D71C043028001E23D000014DA80800A3 +S315E0623F300000671C3428002432280022C2824A41EB +S315E0623F40660E20B90001857823C80001857860187D +S315E0623F5072FEC0813140001E487900014DA82F08EB +S315E0623F604EB900E2B43C508F49FAFE0447FAFF26A6 +S315E0623F7045F900E2B43C4A790001856C67024E94E9 +S315E0623F804E93601E3028001E72FE23D000014F540D +S315E0623F90C0813140001E487900014DA82F084E923B +S315E0623FA0508F207900014F544A8866D82079000103 +S315E0623FB04DA84A8866084A790001856C67C24A79E3 +S315E0623FC00001856C66B02F2800084EB900E03448DF +S315E0623FD0206F00044A79000186E4670E30B9000179 +S315E0623FE086E843F9000186F2600C30B9000186DCAE +S315E0623FF043F9000186F03151000243F9000186FA85 +S315E062400042403151000443F9000187043151000610 +S315E062401033C0000186E44E752F02342F0008558FB7 +S315E06240202F2F000C3F024EB900E233B65C8F3F00A1 +S315E06240304EB900E23380588F3F420008241F60FF8A +S315E0624040FFFFF4865D8F322F000C302F000EE18980 +S315E0624050828071EF000A4840424073C182802F013C +S315E06240603F3C00024EBAFFB22F2F00162F40000CE3 +S315E06240704EBAFF5E202F000C4FEF00104E755D8F3B +S315E06240802F2F000A3F3C00044EBAFF8E2F2F0014FA +S315E06240902F40000C4EBAFF3A202F000C4FEF001073 +S315E06240A04E752F02558F7179000149F0242F000A6F +S315E06240B04C4028022F023F3C00204EBAFF5C508FF4 +S315E06240C0241F4E754E56FFC848D73CFC362E000874 +S315E06240D02A6E000A286E000E282E00122A2E00167C +S315E06240E02E2E001A246E001E4EB900E23E944EB9A0 +S315E06240F000E23D6EA340C0833D40FFF26724207933 +S315E062410000014DA8206800144A68002267144868D6 +S315E0624110000E4EB900E28A88588F74013540000875 +S315E0624120600242422239000186E0B2B900014DA83E +S315E062413066000090A540C0834A40675271790001EB +S315E062414086E4A341B2806C22558F2F053F39000188 +S315E062415086FA4EB900E28B84508F4A40670CA540DE +S315E0624160848041F9000187066020558F2F053F392B +S315E0624170000186F44EB900E28B84508F4A40670EA6 +S315E0624180A540848041F9000186D43550000AA940F1 +S315E0624190C0834A4067122F0D4EB900E28948588FB4 +S315E06241A04A406704A94084807008C0834A40671227 +S315E06241B02F0C4EB900E28948588F4A40670472086C +S315E06241C084817C20CC834A4667084A8466047020F0 +S315E06241D084807210C28326414A41672A20790001AF +S315E06241E04DA84A6800366F1E2F073F3C00102F0825 +S315E06241F03F3C00104EB900E22FEA4FEF000C72101E +S315E06242008481600000C84A42660000C24A6EFFF2DC +S315E06242106710558F42A73F3C00014EB900E233B6C4 +S315E0624220508FA540C0834A406710558F2F053F3CAB +S315E062423000024EB900E233B6508FA940C0834A40CD +S315E06242406710558F2F0D3F3C00044EB900E233B63E +S315E0624250508F7008C0834A406710558F2F0C3F3CE1 +S315E062426000084EB900E233B6508F300B6724701007 +S315E062427041F900014DA8558F2D50FFF6486EFFF6C5 +S315E06242802D47FFFC3F003D40FFFA4EB900E233B6F0 +S315E0624290508F4A46671A7179000149F0558F4C4052 +S315E06242A048042F043F3C00204EB900E233B6508FFB +S315E06242B0558F3F034EB900E233803E8338004EB9F4 +S315E06242C000E23544588F26008684600242432F0A14 +S315E06242D04EBAFCFE588F4A426600008E34030803EB +S315E06242E000006712558F3F3C00014EB900E234C6CA +S315E06242F0588F35400008A540C0834A406712558F03 +S315E06243003F3C00024EB900E234C6588F3540000A9F +S315E0624310A940C0834A40670E558F3F3C00044EB9C0 +S315E062432000E234C6588F7008C0834A40670E558FE4 +S315E06243303F3C00084EB900E234C6588F7010C08325 +S315E06243404A40670E558F3F3C00104EB900E234C6D4 +S315E0624350588F7220C6814A43670E558F3F3C0020D4 +S315E06243604EB900E234C6588F30024CEE3CFCFFC8D0 +S315E06243704E5E4E75302F00044A6F0006672033C0EA +S315E0624380000149EC714041F900E4FCF832300A0080 +S315E062439048C183F9000149F033C1000149EE303981 +S315E06243A0000149EC4E7500004FEFFFF448D70C046C +S315E06243B0202F0010247900014D1847F900E28AE0C7 +S315E06243C0604E222A0010204191C0254800106E1CE2 +S315E06243D042AA0010558F4267240094812F0A4E93B9 +S315E06243E0247900014D18508F200260244EB900E016 +S315E06243F0313045EA001023D2000081764CD70C04B6 +S315E062440042B9000081724FEF000C60FFFFFDED3AAA +S315E06244104A8A66AE4CD70C044FEF000C4E752F03FA +S315E06244202F02206F000C321020015280308034005F +S315E0624430203900014DA8B0A80002670C7542A3437B +S315E0624440B68267043081600421400002B0A80002AF +S315E062445057C0241F261F488044804E752F032F02C3 +S315E0624460262F0010242F000C2F034EBAFFB2588F6E +S315E06244704A40671442402F42000C3F400010241F1E +S315E0624480261F60FFFFFFEE145C832F4300102F426E +S315E0624490000C241F261F60FFFFFFEEBE206F0004A4 +S315E06244A03010538030806630226800064A8967247D +S315E06244B02169000400062169000C0002558F30BCB8 +S315E06244C0000142672F094EB900E23298508F60FFD1 +S315E06244D0FFFDEF1A42A800024E7500004FEFFFD4CF +S315E06244E048D77CFC246F003A4244424534122E2F70 +S315E06244F00030266F00344BF900E2A1D049F900E2C0 +S315E0624500FE8C3F3C000C302F003AD0853F002F07EF +S315E06245104E954241508F2240205171422242528949 +S315E06245207749340910330800163338007D002C468B +S315E06245307C5DBC8E67081C3C007CBC8E66147D008C +S315E06245407703B6866608240952821600600416006E +S315E0624550420010C06704528160C03F0477033F01A6 +S315E06245604E94588F725D3800200552803A00B283CD +S315E06245706690206F003E34823080206F0042308445 +S315E06245804CD77CFC4FEF002C4E754E56FF9848D7C1 +S315E06245903CFC246E000A260E0683FFFFFFF62439F2 +S315E06245A000E4FDD42F3900018568366E00084EB905 +S315E06245B000E2777E7004548F7DAA0001486EFFFCAC +S315E06245C0486EFFFE2F033F3C000249FAFF10068663 +S315E06245D0FFFFFFD04A4656C43D40FFF62F0A2F0240 +S315E06245E048844E94302EFFF64FEF0016486EFFF881 +S315E06245F0486EFFFA2F033F3C0007448452803D40F9 +S315E0624600FFF62F0A2F024E944FEF00183F3C00014F +S315E0624610302EFFF83A2EFFFC49F900E03524362EBB +S315E0624620FFFA346EFFFE3F3C000152803D40FFF8E8 +S315E06246303E0042674267486EFFDE4E943F3C0001B1 +S315E06246403F053F3C00013F3C0001486EFFC64E9489 +S315E06246504FEF00184A4467463F3C00043F3C000483 +S315E06246603F3C00013F3C0001486EFFD64E94306EFF +S315E0624670FFDA326EFFE24FEF000C386EFFE443F191 +S315E062468088013D49FFE2326EFFDC43F498013D4921 +S315E0624690FFE4326EFFD641F098013D48FFC63F3CEB +S315E06246A000023F0A4EB900E2FE8C3F3C00015480B4 +S315E06246B03F073F003F3C0001486EFFCE4EB900E047 +S315E06246C035243207302EFFE24FEF00102243C3C398 +S315E06246D0DA80714541F118FF224049E80001714CE8 +S315E06246E0B0896C1EA34052859083D08590817140DB +S315E06246F03D45FFE220006A025280E2803D40FFCE05 +S315E0624700600654883D48FFE2200A58803F004245F1 +S315E06247104BF900E2A1D049F900E00EC43F2EFFE476 +S315E06247204EB900E2FE8C548F486EFFDE42673D4032 +S315E0624730FFE42F024EB900E2A4E64FEF000C223C02 +S315E062474000E4FD0423C1000149F4426720790001D7 +S315E062475049F42D48FFC03F0552852F024E95AD675D +S315E06247602F2EFFC02F004E9471454FEF0014720A50 +S315E0624770B28066D64A446724558F486EFFD63F3C80 +S315E062478000012F024EB900E2A4E63F3C0001426717 +S315E06247902F024EB900E2AF7E4FEF0014714A4244F7 +S315E06247A04BF900E2A4E649F900E2AF7E24406028D4 +S315E06247B0558F486EFFC62A0454853F0552842F0200 +S315E06247C04E953F05302EFFC8426752803D40FFC896 +S315E06247D02F024E944FEF00147144B5C06ED273430C +S315E06247E0424449F900E2A1D04BF900E2AF7E2D41A5 +S315E06247F0FFC0604E3F3C00082A045E8552843F0556 +S315E06248002F024E94204030BC00053F3C000A3F0533 +S315E06248102F024E944FEF000E22404251486EFFCE79 +S315E06248203F052F024EB900E2A4E6306EFFCE3F05A9 +S315E062483041F0780142673D48FFCE2F024E954FEF39 +S315E06248400014714445F900E2A1D0B0AEFFC06DA498 +S315E06248503F3C00085C833F032F024E92508F20401C +S315E0624860300B30BC00254A4067183F3C00085C8B41 +S315E06248703F0B2F024E92508FA5412040301080812F +S315E062488030804A4667283F3C000C7D4653863F3C73 +S315E062489000012F024EB900E2A1D0508F2206D281EA +S315E06248A0E98E20409C81068600E4FE7020864243C3 +S315E06248B045F900E2B80A558F3F0352832F024E92C2 +S315E06248C07143508F720AB28066EC3F3C000645F94E +S315E06248D000E2A1D0260E0683FFFFFFEE47F900E273 +S315E06248E0EA60280E0684FFFFFFE649F900E23694A5 +S315E06248F03F3C00012F024E92204030BC00173F3C05 +S315E062490000143F3C00012F024E9245F900E25E320E +S315E0624910224022BC002000202F032F024EB900E283 +S315E06249209B022F03487900014B904EB900E2F9B23F +S315E06249304FEF001E3F3C00014E932F044EB900E25A +S315E06249405EB62F034EB900E27C062F034E923F3CE1 +S315E0624950000842672F024EB900E2AD6E4FEF0016D5 +S315E06249603F3C00014E9442572F024EB900E24D5A47 +S315E06249705C8F426734004E942F034E922F034EB9FA +S315E062498000E27BCC2F044E924FEF000E42674E93CD +S315E0624990588F20025D804CEE3CFCFF984E5E4E7571 +S315E06249A04FEFFFDC302F002E48D70CFC3A2F002C5D +S315E06249B0A342266F00287340B4816714A547BE817F +S315E06249C067184A4066047601600876017808600EE8 +S315E06249D076FF2403D4857808604276017802424203 +S315E06249E0603A558F2F063F022F0B4E92322F002EE2 +S315E06249F04FEF000C2E010287000000804A476610E6 +S315E0624A007E08C0874A4066082004C0814A40662024 +S315E0624A107020C2804A416616D483600E2C0F0686E9 +S315E0624A200000002245F900E2B2AE4A426CB43405B7 +S315E0624A3030024CD70CFC4FEF00244E754A6F0004EF +S315E0624A406766558F3F3C00014EB900E2EA60588FD7 +S315E0624A504A79000149F8664041F90001885823D055 +S315E0624A600001073C48790001074442B900018858D1 +S315E0624A704EB900E28A6848790001074C4EB900E215 +S315E0624A808A7C487900014B902F3900014DA84EB9D6 +S315E0624A9000E2366A4FEF00103039000149F8528081 +S315E0624AA033C0000149F84E753039000149F8538048 +S315E0624AB033C0000149F866204879000107442F397E +S315E0624AC00001074C4EB900E2366A508F41F90001A7 +S315E0624AD0073C23D00001885842403F40000460FF13 +S315E0624AE000009F804FEFFFF448D7040C206F00165A +S315E0624AF0322F0014262F00107150246F001A0C809A +S315E0624B0000001C0D67726E120C8000000F00676E6B +S315E0624B100C8000000F096654601A0C800000500099 +S315E0624B2067120C800000720D674E0C800000480030 +S315E0624B30663A604A424260484A4067303F3C000A11 +S315E0624B403F002F034EB900E2A1D05C8F3F3C0001EB +S315E0624B50A3412040301080813F003F122F034EB9BF +S315E0624B6000E2B1684FEF000C4240600270014CD740 +S315E0624B70040C4FEF000C4E75740242416002740100 +S315E0624B8042503F0275423F012F034EBAFE14508FE8 +S315E0624B90A5413480B28266D4609E4E56FFBC48D749 +S315E0624BA03CFC362E000C558F486EFFFE2A2E00081E +S315E0624BB03F032F054EB900E2B2AE4FEF000C7240F2 +S315E0624BC03800302EFFFEC2804A416712736E000ED5 +S315E0624BD0A542B481671242023D42FFE66014424753 +S315E0624BE074013D47FFE6600A323C800042423D4145 +S315E0624BF0FFE6080000006700010A7208C2844A41C3 +S315E0624C00660001007E10C0874A40670000AE558F9D +S315E0624C10486EFFFC3F0345F900E2A1D04BF900E2A2 +S315E0624C20B2AE49F900E2B1682F054EB900E2A3AA35 +S315E0624C303F3C000236403F002F054E9273434FEFF2 +S315E0624C4000142040714B3C1026412D40FFE8605E27 +S315E0624C50558F486EFFFA3F062F054E95306EFFFA86 +S315E0624C604FEF000C72102E08CE814A47672E08007D +S315E0624C7000006606B7CA66246004B7CA6608A3443B +S315E0624C8088803004600472FEC081558F3F3C00012B +S315E0624C903F003F062F054E944FEF000C42673F06FA +S315E0624CA02F054EB900E2A1D0508F20403C107146EC +S315E0624CB02440B0AEFFE86698601E558FA3463F0477 +S315E0624CC0B9863F063F032F054EB900E273C24FEF46 +S315E0624CD0000C4A40670238064A426726302EFFFEDB +S315E0624CE07209C0814A40671A558F486EFFEE426785 +S315E0624CF03F3C00013F3C00014EB900E240444FEFC9 +S315E0624D00000C08040000670C302EFFFEA947C0873E +S315E0624D104A4066264A42672A302EFFFE2200028118 +S315E0624D20000000804A4166167208C8814A44660EEF +S315E0624D30C0814A40670874016008424260047401B7 +S315E0624D4042433E2EFFE6206E0010300286873083B5 +S315E0624D504CEE3CFCFFBC4E5E4E754FEFFFC248EF39 +S315E0624D607CFC0002242F0042362F00463F3C0001C5 +S315E0624D704EBAFCCA4EB900E28ABC487900014BA839 +S315E0624D804EB900E25E32508F4A43660E4267426730 +S315E0624D902F024EBAFC0C508F36003F43003A780140 +S315E0624DA042432C0F2E0F06860000003845F900E2DA +S315E0624DB09E8A06870000003A4DFAFD2A4BF900E228 +S315E0624DC0AE4C49FAFDD647F900E2F7EC3A2F003AE3 +S315E0624DD0672473437145B081671C424036053F40A4 +S315E0624DE0003A558F3F3C00012F063F003F052F02F8 +S315E0624DF04E924FEF0010558F486F002E42A72F3C20 +S315E0624E000002FF0142A742A742A73F3C00034EB918 +S315E0624E1000E240C44FEF001C3A0008050000672E2E +S315E0624E20558F2F07486F003A3F032F024E963800A0 +S315E0624E30302F00444FEF00106714558F3F3C00025D +S315E0624E402F063F003F032F024E924FEF0010A54020 +S315E0624E50CA804A45674E3F2F002EA1453F2F002E5E +S315E0624E603F3C000842672F024E953F400046734042 +S315E0624E704FEF000CBA81661A558F3F3C00023F3C09 +S315E0624E8001B83F3C00014E9342403F400042508FA2 +S315E0624E9060122F073F2F003A3F002F024E944FEFEA +S315E0624EA0000C38004A446712302F003A6700FF1E52 +S315E0624EB071407343B2806700FF14558F3F3C000335 +S315E0624EC02F0642673F032F024E924FEF00104A448D +S315E0624ED06600FEFA558F42674EBAFB62302F003E9D +S315E0624EE04CEF7CFC00044FEF00404E752F02242FFE +S315E0624EF0000A487900014B904EB900E25E32588F63 +S315E0624F00716F0008A741B280661C2F024EB900E2BB +S315E0624F10D8744267426742672F0242674EB900E23F +S315E0624F20E4464FEF00107001241F4E752F0A2F02E0 +S315E0624F30342F0012246F000E558F3F2F000E4EB9AC +S315E0624F4000E2BBF4588F4A8A671C558F3F122F00E6 +S315E0624F502F39000160C84EB900E1C5D64FEF000CAB +S315E0624F602039000160C82F40000E3F42000C241F2A +S315E0624F70245F60FFFFFFF616598F2F02322F000E75 +S315E0624F80302F000C41FA00AA0681000000413F4141 +S315E0624F900006734032301A002401758202810000F5 +S315E0624FA0FF0020424A416706220F5C81600242812D +S315E0624FB03F08714041FA00862F013F300A004EBA3F +S315E0624FC0FF6C508F241F588FA341B3804A4056C06E +S315E0624FD0488044804E752F02743F302F000873403C +S315E0624FE0B4816D46558073C0143C0010B48165147B +S315E0624FF0714041FA0054143C002230300A0073409A +S315E0625000B4816608220F50817022600242813F3C81 +S315E062501000012F013F004EBAFF14508FA341B380C7 +S315E06250204A4056C04880448060024240241F4E7522 +S315E062503001020102010201010002000100150016EF +S315E0625040001700180019001A001B001B001D001E45 +S315E062505000220022002100220021002100220022FB +S315E06250600022001F00200022001B0000226F0008C1 +S315E0625070202F00042040121910C166FA4E752F0ADD +S315E06250802F02346F000E203900014A1453802F003C +S315E0625090754A2002D0B900014A102F004EB900E0ED +S315E06250A012FC736F0014508F41F900014F5C45F2B8 +S315E06250B008020681000005E121821C00241F200A05 +S315E06250C0245F4E75302F00046722558F3F3C000106 +S315E06250D006800000000E3F2F000A3F002F390001D4 +S315E06250E04A344EB900E2B1684FEF000C4E754FEFAD +S315E06250F0FFC048D77CFC382F00483A2F004A242F5D +S315E0625100004442434BFAFF6649F900E2FA7A47F90C +S315E062511000E2FB1845F900E2A1D033C400014A1867 +S315E0625120200590843F003F3C00094EB900E2FE70E4 +S315E0625130588F2E0F2C0F4DF900014F5C0687000049 +S315E0625140003E06860000003A71402F40003471430B +S315E0625150B0AF00346C402003D0847140068000001A +S315E062516005E120360C00D0B900014A102F004879DB +S315E062517000014A004E95487900014A1D48790001CE +S315E06251804A014E944FEF001041F900014A0013D0F4 +S315E062519000014A1C60107020420113C000014A1CE3 +S315E06251A013C100014A1D200306800000000F3F4044 +S315E06251B00032558F2F072F06487900014A1C3F00BF +S315E06251C02F022F4000424E933F3C0006202F0044C0 +S315E06251D03F002F024E924FEF001C4A79000149FCD4 +S315E06251E0670472166002721E2040528330813F3C31 +S315E06251F0000A3F2F00342F024E92508F72092040F0 +S315E062520042507143B2806600FF463F3C00163F3C27 +S315E0625210000C2F024EB900E2A1D0508F72092040F5 +S315E062522071453610B2806C48558F3F0547F900E10B +S315E0625230C6300685FFFFFFF73F033F3C00094E930A +S315E06252403F00717900014A3E20006A025280E280A4 +S315E06252503F004EB900E2FE8C4FEF000A3F05344054 +S315E0625260968A3F03360A3F044E93508F38006002B7 +S315E062527042443F3C001245F900E2A1D03F3C000DBA +S315E06252802F024E92204030843F3C00163F3C000D98 +S315E06252902F024E92204030834CEF7CFC00104FEFA1 +S315E06252A000504E752F0A2F02222F000C246F001039 +S315E06252B06002538A7112743AB480661C558F3F3C21 +S315E06252C00040528A3F3C005C42672F0A4EB900E2D8 +S315E06252D0FD784FEF000C600A745CB4806704B28AB2 +S315E06252E066D0241F200A245F4E75413A5C2A2E2A34 +S315E06252F000002F0A2F02745C246F000C2F2F00101F +S315E06253002F0A4EBAFFA0508F20407310B481660414 +S315E06253105280601C487AFFD42F0A4EBAFD501412AE +S315E06253204EB900E2FF24508FD0821480200A568064 +S315E0625330241F245F4E7500202A2E2A20002A2E2A58 +S315E0625340000720413A004E56FF5448D73CFC4AAE2D +S315E0625350000867000A2A206E00084A1067000A20E1 +S315E0625360487806404EB900E301F2588F23C0000147 +S315E06253704A1067000A0A3F3C000C243900014A34AD +S315E062538045F900E2A1D03F3C00082F024E9222404E +S315E062539020512D50FF82487AFF9F2F2EFF824EBA10 +S315E06253A0FCCC3F3C000C3F3C00022F024E92224076 +S315E06253B020512F102F2E00084EB900E1C4D44FEFD2 +S315E06253C000204A4066083C3900014A1860024246BB +S315E06253D0558F4BEEFFF82F0D49EEFFF42F0C2F2E73 +S315E06253E0000845F900E2FB183F3C00027E014245B7 +S315E06253F04243367C000142442F024E922F2E000C2D +S315E0625400487900014A1C4EBAFC64487900014A00B8 +S315E0625410487900014A1C4EB900E2FA7A4FEF00225F +S315E0625420486EFFFA486EFFF0487900014A003F3C59 +S315E062543000032F024E92487900014A2C4EB900E2EF +S315E06254405E324FEF00122EBC00014A2C45EEFF9809 +S315E062545042674EB900E24EEC2079000160CC421020 +S315E06254603F3C000242672F024EB900E2AD6E424017 +S315E062547042414FEF0010206EFF8252882D48FF8630 +S315E062548033C0000149FC3D41FF8C601A300B661463 +S315E0625490558F3F3C00032F024EB900E24D5A508FC2 +S315E06254A0380060024244486EFFFC486EFFFE4EB929 +S315E06254B000E277062F2EFFF42F0A4EB900E012FCC7 +S315E06254C02F0A2F39000160CC3A404EB900E1C4D4CC +S315E06254D04FEF00184A406700039842673F054EBAAD +S315E06254E0FBE4588F2004598071C0A341B2806516EF +S315E06254F0558F3F3C000142673F042F024EB900E2FE +S315E0625500B1684FEF000C2F0A2F39000160CC47FAE1 +S315E0625510FB5C4E93774D49FAFDDA2079000160CC67 +S315E0625520487038002F084E944FEF000E486EFFF831 +S315E0625530486EFFF42F39000160CC3F3C00022D40FB +S315E0625540FF922F024EB900E2FB18487238002F0A2A +S315E06255504E94487AFDE92F004E934FEF00243F3C8C +S315E062556000083F3C00022F024EB900E2AD6E2F39D1 +S315E062557000014D204EB900E2777E4FEF000C4A798A +S315E0625580000149FC675A487AFDB94879000186719B +S315E06255904E937A50508F47FAFAE64240424342448B +S315E06255A0226EFF922842757900018B4A73440302A8 +S315E06255B067183F0013C5000186732D49FF7E3F03DE +S315E06255C052834E93588F226EFF7E52847344538584 +S315E06255D07410B48166D0240C2D49FF92600000A657 +S315E06255E02F390001890C4EB900E2FF343EBC00104F +S315E06255F0486EFF984EB900E2FF48508F424449F93F +S315E062560000E2FCA4424347F900E2FF666072713948 +S315E0625610000186727A2EBA80674410390001866983 +S315E062562072104880C0814A40670470076002702049 +S315E062563013C0000186717100AF45BA80671248797E +S315E0625640000186722F2EFF924E94508F4A40670E6B +S315E06256503F043F0352834EBAFA26588F38004E9380 +S315E062566073437A63BA816C18558F3F3C00043F3CC2 +S315E062567002943F3C00014EB900E2F7EC508F6004C1 +S315E06256804A40668A7143320D47F900014F5C2A420D +S315E06256902800E28C2D40FF8E3D43FF966000010CB0 +S315E06256A0340C3D41FF7C600000E471422A02DA84F8 +S315E06256B00680000005E120330C00D0B900014A10F3 +S315E06256C02F00487900014A1C4EBAF9A2714506805C +S315E06256D0000005E120330C00D0B900014A102F002A +S315E06256E0487900014A004EBAF984713900014A1CD0 +S315E06256F04FEF00107220B2806656713900014A009F +S315E0625700B280664C558F3F3C002E487900014A1CB8 +S315E06257104EB900E01310508F26006606263C00E282 +S315E06257205336558F3F3C002E487900014A004EB908 +S315E062573000E01310508F4A806606203C00E2533642 +S315E06257402F002F034EB900E1C4D4508F4A4066144D +S315E0625750487900014A00487900014A1C4EB900E1E5 +S315E0625760C4D4508F4A406F2A7B457142D4AEFF8AD9 +S315E06257700685000005E141F35C000680000005E174 +S315E062578022330C0027900C0027815C004A426C00B1 +S315E0625790FF1A322EFF7C528C200CD0847140B0AE60 +S315E06257A0FF8E6D00FEFC7944E28C4A446F0C200465 +S315E06257B0448099CC2D40FF8A60DE362EFF96240D1A +S315E06257C03A412F39000185684EB900E2777E588FFB +S315E06257D02006508071407343B0816D1620030680C7 +S315E06257E0FFFFFFF73F0042674EB900E2FE8C588F3B +S315E06257F0600230063F0378123F002F024EBAF8F09D +S315E06258002F2EFF924EB900E1C4A44FEF000C734015 +S315E0625810B8816C027012206EFF82794047F900E42B +S315E0625820FD0C10BC002049F900E2AD6E2F042F2E6C +S315E0625830FF922F2EFF864EB900E00EC44FEF000CAA +S315E06258404200206EFF86D1C410BC002011400001E8 +S315E0625850600E3F3C000848803F002F024E94508F16 +S315E0625860101B66EE3D46FF8C4245424697CB42446C +S315E06258702004028000007FFF2200598173C1384014 +S315E062588020417213B2886500029E323B8A0848C1A3 +S315E06258904EFB1802002800280292021604F60292D3 +S315E06258A0027A027A003000720292013001300130EF +S315E06258B0013001300130013001300130424042476F +S315E06258C060000266558F486EFFE83F3C000D2F028E +S315E06258D04EB900E2A49C486EFFE83F2EFFFC3F2EE5 +S315E06258E0FFFE4EB900E2FDE44FEF00144A40661651 +S315E06258F0736EFFFC716EFFEAB0816D000218424082 +S315E062590078096000021C558F3F3C00014BF900E2CA +S315E06259104A3C49F900E2A1D04E95548F486EFFE8C1 +S315E06259203F3C000C2F024EB900E2A4743F3C0010EB +S315E06259303F3C000C2F024E94204030AEFFE83F3CE5 +S315E062594000143F3C000C2F024E944FEF001A2240A7 +S315E062595032AEFFEC3F3C00013F3C000D3F3C000CA9 +S315E06259602F024EB900E274543F3C001038003F3CCF +S315E0625970000C2F024E94204030AEFFE83F3C00140C +S315E06259803F3C000C2F024E944FEF001A224032AE9B +S315E0625990FFEC42674E953EBC03E820030680FFFFBC +S315E06259A0FFF73F003F044EB900E1C630322EFF8C6E +S315E06259B0508F928038016C0001662801448442402F +S315E06259C0600001560680FFFFFFF273402241734397 +S315E06259D0B2896D0001524A45671A7345B3C1672EB3 +S315E06259E042672D40FF7E3F054EBAF6DA588F202E8B +S315E06259F0FF7E60044A4067163F3C00012D40FF7E11 +S315E0625A003F004EBAF6C0588F202EFF7E3A00558F81 +S315E0625A10487900014A1C3F0C2F024EB900E2FBA610 +S315E0625A20713900014A1C4FEF000C7220B2806608A1 +S315E0625A304A446D60700160684A79000149FC671604 +S315E0625A40712EFF99783AB880665041F900014A1E94 +S315E0625A501D50FF986044714D487208002F0A4EBA95 +S315E0625A60F8922640486BFFFF487900014A004EBA39 +S315E0625A70F5FC2F0B487900014A1D4EB900E2FAD2D5 +S315E0625A80487900014A002F0B4EB900E1C4B64FEFE8 +S315E0625A90002060067001424760064240367C0001A3 +S315E0625AA0424133C1000149FC607E714D283C00E20F +S315E0625AB052A42044487208002F0A4E90508F725CBE +S315E0625AC02A407115B280665E204D7120123C003A22 +S315E0625AD0B28067242F082F0A2044785C4E90508F5C +S315E0625AE022407311B881660002A22F0D2F004EBAD2 +S315E0625AF0F57C508F600002944A7900018B4A670018 +S315E0625B00028A700133C0000149FC6000027E4240B5 +S315E0625B107801601642407809387C000B600C42409E +S315E0625B20387C000A600442404244320B6730558F4B +S315E0625B30486EFFF8486EFFF4486EFF983F3C0002FD +S315E0625B402F024EB900E2FB1842002079000160CCD8 +S315E0625B504FEF0014421013C000014A1D60044A4030 +S315E0625B606740487900014A1D2F2EFFF04EBAF4FED7 +S315E0625B703F3C00083F3C00032F024EB900E2AD6EA7 +S315E0625B804FEF00104A47661A558F3F3C00013F3C93 +S315E0625B9000013F3C00042F024EB900E2B1684FEFCC +S315E0625BA0000C4A446700015C3A6EFF8C714C4241DC +S315E0625BB07944284071432D44FF8E3D4DFF8A204053 +S315E0625BC0780AB88C6606200D53806004200D5280F8 +S315E0625BD04A406C025280224393C079492244780853 +S315E0625BE0B8896D0253807809B8886C023A4052816E +S315E0625BF07141B0AEFF8E6DC8302EFF8A284D99C0D6 +S315E0625C00380C3D40FF8C4A44670000F842673F0526 +S315E0625C107BCC4EBAF4B03F033F0D2F024EBAF4D0BE +S315E0625C20486EFFE04EB900E25EB64FEF000E486E98 +S315E0625C30FFD83F3C000F2F024EB900E2A49C4FEF23 +S315E0625C40000C720FE2AD3D45FF8C6704280C44847C +S315E0625C5071447A08BA806D62326EFFDE302EFFDA08 +S315E0625C603209C3C4D28030414A6EFF8C6704304049 +S315E0625C703001387C00093A09558F99C4320CC3C5A4 +S315E0625C803F013F2EFFDC3F003F2EFFD83F083F2E0D +S315E0625C90FFD83F3C00034EB900E263C64FEF001007 +S315E0625CA04A6EFF8C6616300CC1EEFFDE3840302E4F +S315E0625CB0FFDAD9C03D4CFFDA60027809C9EEFFDE51 +S315E0625CC0486EFFD849F900E2AD6E42453D44FFDEDB +S315E0625CD0283C00E25E3220444E903F3C00083F3C66 +S315E0625CE0000E2F024E94486EFFE022444E913F3CF6 +S315E0625CF000083F3C000C2F024E943D4DFF8C4FEF67 +S315E0625D0000184A476600F7862F2EFFF42F2E00080A +S315E0625D1045FAF35A4E922F2EFFF0487900014A1C5B +S315E0625D204E92487900014A00487900014A1C4EB910 +S315E0625D3000E2FAD2487900014A002F2E000C4E9218 +S315E0625D404FEF001A2EBC00014A2C3F3C00034EB9CD +S315E0625D5000E24EEC3F3C00053F3C00042F024EB9A8 +S315E0625D6000E2FC52206E001030802F3900014A10AA +S315E0625D704EB900E302244FEF001470016002424024 +S315E0625D804CEE3CFCFF544E5E4E75367C000142445E +S315E0625D906000FD9C4FEFFFDC48D77C3C740145F91F +S315E0625DA000014BD07B6F0028283C00E26D3A4DFA49 +S315E0625DB00F824BF900E275FC49F900E279A2605282 +S315E0625DC0361247EA000471537343B0816614302B8E +S315E0625DD0FFFEA341C681C081D080808330360A004F +S315E0625DE06018B0816F04204A6002204B30280002BE +S315E0625DF0A3412044C08130300A003F0052823F3CDA +S315E0625E0000714E95548F2F0A3F3C0002244B4E940C +S315E0625E10508F7142BA806EA83F3CFFFF3F3C0071F3 +S315E0625E204EB900E275FC4CEF7C3C00044FEF002873 +S315E0625E304E75487900014BC2487900014BFE4879BC +S315E0625E4000014BCA487900014BB42F2F00144EB9BA +S315E0625E5000E03508323900014BFE4FEF001467422D +S315E0625E60303900014BC2673A327900014BB430797E +S315E0625E7000014BCA558F487900014BD03F3C000187 +S315E0625E8033C900014BD033C800014BD243F118FF4E +S315E0625E9041F008FF33C900014BD433C800014BD649 +S315E0625EA0600A558F487900014BD042674EB900E2ED +S315E0625EB079D2508F4E753F3900014BC23F390001AE +S315E0625EC04BFE3F3900014BCA3F3900014BB42F2FDD +S315E0625ED0000C4EB900E035244FEF000C4E753239B6 +S315E0625EE000014BFE4FEFFFEC48D7007C206F0018B5 +S315E0625EF04A416752363900014BC2674A342800028A +S315E0625F0030280006383900014BCAD0827B447140A2 +S315E0625F10B0856D3630103A280004327900014BB410 +S315E0625F20DA807D497B45BA866D20D68475427743B1 +S315E0625F30B6826F16D28973417140B2805EC0A34168 +S315E0625F404880C08160067001600242404CD7007CA6 +S315E0625F504FEF00144E754FEFFFF0322F001848D71F +S315E0625F60003C382F0014362F0016226F001A41F9D2 +S315E0625F7000014BD04240754160163A115280DA8494 +S315E0625F8030853A2900025889DA8331450002588819 +S315E0625F907B40B4856EE43F4100144CD7003C4FEF42 +S315E0625FA000106000FDF04E5600004EB900E2773414 +S315E0625FB0558F486E00083F3C00024EB900E279A276 +S315E0625FC04EB900E2775E508F4E5E4E7542414FEFBC +S315E0625FD0FFF4302F001241F900014BF848D7001C5C +S315E0625FE033D000014B6C342F0014363900014A5825 +S315E0625FF033C100014B62123C000179C033C100013A +S315E06260004B6673F900014BCCB284671A722033C0D7 +S315E062601000014BCC33C000014A5833C100014B60EA +S315E06260204EB900E03480424033C000014B6071C239 +S315E06260304A6F0010671A73F900014B5AB2806728FB +S315E0626040721633C200014B5A33C100014B606018CD +S315E062605073F900014BB2B280670E701133C2000170 +S315E06260604BB233C000014B604A7900014B60670C6A +S315E062607033C200014A584EB900E0348033C30001AE +S315E06260804A584CD7001C4FEF000C4E752F0B2F0A67 +S315E0626090246F000C70053252306A0002366A0004E0 +S315E06260A0346A00063F40000C33C900014BD033C866 +S315E06260B000014BD247F1B8FF45F0A8FF33C80001B3 +S315E06260C04BD633C900014BDC33C900014BE033C820 +S315E06260D000014BE233CB00014BD433CA00014BDA09 +S315E06260E033CA00014BDE245F33CB00014BD8265F17 +S315E06260F06000FCA24FEFFFD248EF7CFC000234392D +S315E062610000014A3E3A3900014B5C246F0032283C7A +S315E062611000014BD02044263C00014BD24DF90001F0 +S315E06261204BD43212302A000222432C3C00E25D94C8 +S315E06261304BF900014BD649F900014BD8D482DA8596 +S315E062614047F900014BDA30813C813A803680204261 +S315E0626150D1C03288D2853F3C0003388120464E90DA +S315E06261603012322A000422442043D28020019085F4 +S315E06261703280302A000253813C8138812246308067 +S315E06261803A80D08236803EBC00034E913012322A8B +S315E062619000042244D280204153883288326A000663 +S315E06261A0302A00023C88928538812046D089224393 +S315E06261B02E009E82328753803A8036803EBC000350 +S315E06261C04E903012306A0006322A00022244DA80A9 +S315E06261D03C80D2883880328520419282538870032F +S315E06261E022433A88368132884CEF7CFC00043F4099 +S315E06261F000344FEF00306000FB9C2F02342F00101A +S315E0626200206F0008222F000C6634303900014C0CF6 +S315E062621052803140000471406C0606800000000F37 +S315E0626220E88043F900014BA23151000C314000088D +S315E0626230303900014C0E52803140000660207142D6 +S315E0626240E78A316F0012000620006A02528031420C +S315E06262500004E2803140000870013140000C4240A7 +S315E06262602081241F3140000A4E754FEFFFD048D798 +S315E06262707CFC302F0046346F004A3C6F003A382F80 +S315E062628000383A6F0042366F0044386F0048362F66 +S315E0626290004E2E2F003E2A3C00E261FA342F004C7B +S315E06262A03F40002E3C2F00503F0A20453F2F003EE4 +S315E06262B02F2F0038487900014B784E903F0A2045EF +S315E06262C03F2F003C2F07487900014A444E904EB971 +S315E06262D000E2773471434FEF001841F448FF33C46C +S315E06262E000014BD033CE00014BD233CD00014BD807 +S315E06262F033CB00014BDAA14133C800014BD441F6FE +S315E0626300A8FF33C800014BD641F5C8FF33C8000188 +S315E06263104BDC41F3A8FF33C800014BDEB280662254 +S315E0626320558F487900014A44487900014B784879AB +S315E062633000014BD03F024EB900E27AA64FEF001061 +S315E06263406024558F3F063F03487900014A44487905 +S315E062635000014B78487900014BD03F024EB900E22A +S315E06263607C404FEF00144CD77CFC4FEF003060FF6F +S315E0626370000013EE206F0008558F737900014BC061 +S315E0626380302800043F2F00103F2F00103F3C0002F0 +S315E06263903F2800063F004A816C025E81E6817140D9 +S315E06263A03F013F2800023F1042A74A806C025E80AE +S315E06263B0E6803F00426742672F2F00204EBAFEAC6E +S315E06263C04FEF00204E75558F3F3CFFFF3F3CFFFF8E +S315E06263D03F2F000A3F2F00183F2F001842673F2FDA +S315E06263E0001A3F2F001A42A742673F2F00203F2F35 +S315E06263F0002042A74EBAFE744FEF00204E754FEF73 +S315E0626400FFF048D7041C342F0020262F001A382FBD +S315E0626410001E45FAFDE63F023F2F001A2F2F0018B5 +S315E0626420487900014B784E923F0270013F0433C0D7 +S315E062643000014B8233C000014B842F03487900018F +S315E06264404A444E924CEF041C0018203C00014A4438 +S315E06264502F400030203C00014B782F40002C4FEF5C +S315E0626460002860FF0000184A42404FEFFFF448D729 +S315E0626470040C323900014C2633C000014BB433C000 +S315E062648000014BCA303900014C0C528033C0000126 +S315E06264904BFE33C000014BC0303900014C0E5280D6 +S315E06264A033C000014BC233C000014B8C42406002F4 +S315E06264B0E289734130405280A342B48166F2558FDD +S315E06264C0487900014BFC487900014BC648790001E6 +S315E06264D04B58487900014BC43F3900014C6833C8D8 +S315E06264E000014BA24EB900E27A1A717900014C0EB4 +S315E06264F04FEF00140C800000017B6F083039000119 +S315E06265004C6C60027006558F487900014BA448795D +S315E062651000014BA0487900014A40487900014BC826 +S315E06265203F004EB900E27A1A323900014BA03639A1 +S315E062653000014BC04FEF001448C387C130390001F8 +S315E06265404BA433C300014C08363900014B8C48C377 +S315E062655087C0568033C000014A3EC1F900014C143F +S315E062656048C081F900014C1233C300014C7E24011C +S315E0626570568233C000014B5C71407542B4806D084F +S315E0626580588133C100014B5C3F3C000745F900E2AC +S315E062659075FC3F3C000F4E923EBC00014EB900E2F4 +S315E06265A07CE03F3CFFFF3F3C00714E923F39000189 +S315E06265B04B8C45F900E035243F3900014BC0426718 +S315E06265C04267487900014B904E92303900014A3E6B +S315E06265D0323900014B8C92803F013F3900014BC05A +S315E06265E03F004267487900014BA84E924FEF002088 +S315E06265F04267426742674267487900014BB84E920A +S315E0626600303900014A3E307900014B8C3239000163 +S315E06266104B5C3F00C1FCFFFED08871403F01200029 +S315E06266206A025280E2803F00303900014BC09081BD +S315E0626630714020006A025280E2803F0048790001A0 +S315E06266404C004E923F3900014A3E3F3900014BC051 +S315E062665042674267487900014B984E924CEF040CD0 +S315E062666000244FEF0030203C00014A5823C000016D +S315E06266704A384E754FEFFFE448D73C1C366F00262A +S315E0626680346F0028382F0020362F00223A6F002A16 +S315E0626690386F002C342F00244267426742A748795C +S315E06266A000014A444EBAFB544FEF000A3F390001FB +S315E06266B04B5A41F3D8FF33CB00014BD033CA0001CA +S315E06266C04BD23F0433C800014BD441F2C8FF3F3C92 +S315E06266D0000133C800014BD64EBAF8F273437179C2 +S315E06266E000014BFA508FB08167143F033F3C0017BD +S315E06266F04EB900E275FC33C300014BFA588F734220 +S315E0626700717900014A3CB08167143F023F3C001850 +S315E06267104EB900E275FC33C200014A3C588F203C18 +S315E062672000014A442F400024203C00014BD02F4018 +S315E062673000204CD73C1C4FEF001C60FF0000132C7E +S315E06267404FEFFFF4A74148D7001C716F0010382F56 +S315E06267500012342F0014362F0016B2806658717913 +S315E062676000014BB0B2806746717900014C0E0C8035 +S315E06267700000017B6F08303900014C6C60027006E4 +S315E0626780558F487900014BA4487900014BA04879BE +S315E062679000014A40487900014BC83F004EB900E229 +S315E06267A07A1A70034FEF001433C000014BB03039F0 +S315E06267B000014A406048AB41B280664471790001AB +S315E06267C04BB0B2806732558F487900014BFC48790D +S315E06267D000014BC6487900014B58487900014BC429 +S315E06267E03F3900014C684EB900E27A1A70054FEF04 +S315E06267F0001433C000014BB0303900014B58D480ED +S315E06268007208700133C400014BD033C200014BD22F +S315E062681033C300014B6641F900014BF84CD7001CCB +S315E062682033D000014B6C4FEF000C33C100014B607B +S315E062683033C000014B6260FFFFFDCC48206F00046D +S315E0626840302F00083210D280308132280002D280A6 +S315E06268503141000232280004C1FCFFFED2803141A0 +S315E0626860000432280006D081314000064E754FEFB3 +S315E0626870FFF448D7040C362F0012246F0014670E1B +S315E062688071C3AF41B28057C24882548260024242CB +S315E06268903F2F00103F3C00194EB900E275FC3EAA5C +S315E06268A000063F2A00043F2A00023F123F033F02EE +S315E06268B03F3C00014EBAFDBE4CEF040C00104FEFB8 +S315E06268C0001C4E754FEFFFE4A74148D70C7C3A2F88 +S315E06268D00022382F0020246F002C7145B2806608B2 +S315E06268E0343900014BA06010AB43B6806608343998 +S315E06268F000014BC6600242427145A746BC8066080B +S315E0626900363900014BA46010AB41B2806608363975 +S315E062691000014BFC600242432F2F00242F39000115 +S315E06269204A384EB900E034EC47F900E2FE703C00CA +S315E0626930C1C23F003F2A00044E93354000043F0344 +S315E06269403F2A00064E934FEF00103540000648C0DE +S315E062695081C36712302A000448C081C23F003F0605 +S315E06269604E93588F60024240306A0006322F002A08 +S315E062697092884A416F10306A000252817341E28125 +S315E0626980D28835410002306A0004322F00289288AC +S315E062699034016F627744A546BC83660852817341CF +S315E06269A0E2816006A346BC8366063052D2883481B1 +S315E06269B07B45A741B285663E75427610B6826C36F5 +S315E06269C03412123C0007C2823601672A4A446604E0 +S315E06269D05082601E7944A545BA8466107941A7461D +S315E06269E0BC846C042601518394836008A343B68415 +S315E06269F06604948134824CD70C7C4FEF001C4E7552 +S315E0626A00518F2F032F02342F0016260F50832F0348 +S315E0626A102F2F00204EB900E2FE522F033F2F001ABD +S315E0626A203F2F001A2F2F00283F023F2F002A4EBA2F +S315E0626A30FE944FEF00184A406F123F003F2F000C62 +S315E0626A403F2F000C3F024EBAFCF8508F241F261FE0 +S315E0626A50508F4E754FEFFFF4322F001048D7040C7B +S315E0626A60760C246F0012226F001A206F002271C129 +S315E0626A702400E6A8E08A3480700FC082246F001694 +S315E0626A80740F34807101E888C48032827408C480ED +S315E0626A904A42670CAF42C082328030BC0001600479 +S315E0626AA030BC0002760FC283206F001E4CD7040C06 +S315E0626AB04FEF000C30814E754FEFFFC848D77CFC34 +S315E0626AC0302F004C3A2F004A322F004E760C382F88 +S315E0626AD0003C2E2F003E286F00422C6F0046246F4A +S315E0626AE00050266F00543F40003271C5E6A83F4130 +S315E0626AF000362205E089163C000F7B853400C283AE +S315E0626B003A4536010804000067122A04028500004D +S315E0626B1000804A45670C3A003C01600E3A013C004F +S315E0626B2060083A003C01340136007040C0844A4055 +S315E0626B3067044A43671C3F023F032F0A2F072F4031 +S315E0626B4000384EBAF8304FEF000C202F002C4A4046 +S315E0626B5067044A4567144A6B0004670E2F0B3F3C95 +S315E0626B6000073F054EBAFD08508F3F0302840000DE +S315E0626B7000813F022F0A2F0C49FAF7FA4E944FEF43 +S315E0626B80000C0C8400000081664830125380348029 +S315E0626B90302A00025380354000023F033F022F0A4B +S315E0626BA02F074E94301254803480302A000254808B +S315E0626BB0354000023F033F022F0A2F074E94301200 +S315E0626BC04FEF001853803480302A000253803540FC +S315E0626BD00002558F3F023F3C00023F3C00014EBA45 +S315E0626BE0F3EC300D508F672A3F3C000133CD000154 +S315E0626BF04A58322F0038302A0002D0813F00362FC1 +S315E0626C0000363012D0833F003F3C00054EBAFB327D +S315E0626C10508F558F3F063F3C00023F3C00014EBA23 +S315E0626C20F3AC700572022F4B004C2F4E00484CEFCE +S315E0626C307CFC00083F4000463F4100444FEF004085 +S315E0626C406000FDBE4E56FFD448D73C1C3F2E000E78 +S315E0626C50342E00103F2E000C3F2E000A3F2E000815 +S315E0626C60486EFFF84EB900E035244FEF000C4A4219 +S315E0626C70670000B66C0253824EB900E27734260EA4 +S315E0626C80280E0683FFFFFFF051844BF900E2FE52C5 +S315E0626C9049FAFBAA47F900E279A24A425EC0A341F9 +S315E0626CA02F032F04488080812440D5C24E955C8FA5 +S315E0626CB03F0A340A2F034E94326EFFF0346EFFF4CD +S315E0626CC0548F306EFFF22EBC00014BD03F3C000584 +S315E0626CD033C900014BD045F1A8FF33C900014BDC53 +S315E0626CE033C800014BD233C800014BD633C9000129 +S315E0626CF04BE033C800014BE233CA00014BD433CADE +S315E0626D0000014BD8346EFFF645F0A8FF33CA0001A6 +S315E0626D104BDA33CA00014BDE4E93508F4A4266002D +S315E0626D20FF7A4EB900E2775E4CEE3C1CFFD44E5ED3 +S315E0626D304E755555AAAAAAAA55555555AAAA00004E +S315E0626D404E56FFE84EB900E033EA558F486EFFEAE9 +S315E0626D5042A72F3C0001FF0042A742A7486EFFF61A +S315E0626D603F3C00073D6E0008FFF63D6E000AFFF805 +S315E0626D703D6E000CFFFA3D6E000EFFFC3D6E0010AC +S315E0626D80FFFE4EB900E240C44FEF001C4E5EA541E5 +S315E0626D90C0814A4057C0488044804E754FEFFFE459 +S315E0626DA048D71C0C266F0024246F002049F900E2C4 +S315E0626DB0608C2F0B487900014BB84EB900E2FE3089 +S315E0626DC0508F4A4057C24EB900E277342F0A4E944A +S315E0626DD0588F488244824A426744322B0006302A00 +S315E0626DE00006D0813F00322B0004302A0004D081B5 +S315E0626DF03F00322B0002302A0002D0813F0032137C +S315E0626E003012D0813F00260F06830000001C2F035C +S315E0626E104EB900E035242F034E944FEF00104EB981 +S315E0626E2000E2775E558F3F3C000149F900E2608CF3 +S315E0626E303F3C00013F39000186F03F39000186DCC4 +S315E0626E403F3C00014EBAFEFA36004EB900E27734B4 +S315E0626E502F0A4E944FEF00104A426744322B0006E7 +S315E0626E60302A0006D0813F00322B0004302A00042B +S315E0626E70D0813F00322B0002302A0002D0813F00EF +S315E0626E8032133012D0813F00240F06820000001CCC +S315E0626E902F024EB900E035242F024E944FEF0010D8 +S315E0626EA04EB900E2775E30034CD71C0C4FEF001C04 +S315E0626EB04E75487900014B904EB900E25E323EBCB7 +S315E0626EC000013F3C000342674EB900E25FCC508F5F +S315E0626ED04E754FEFFFE848D71C1C382F001C362F43 +S315E0626EE0001E246F0024266F00284EBAFFC6424277 +S315E0626EF02003D084714020006A025280E288600CEE +S315E0626F007140528220006A025280E2884A4066F00C +S315E0626F10206F00203082672648C489C249F900E2C0 +S315E0626F20FE8C3F043F3C00014E9448C387C23480E6 +S315E0626F303F033F3C00014E94508F3680600836BC7A +S315E0626F40000134BC00014CD71C1C4FEF00184E7593 +S315E0626F504FEFFFF448D71C00246F0014736F0010E4 +S315E0626F60266F0018716A0004286F001C22016A020B +S315E0626F70528120006A025280E281E280908136800C +S315E0626F80736F0012716A000622016A025281200062 +S315E0626F906A025280E281E280908138802F2F002857 +S315E0626FA02F2F00282F2F00283F003F134EBAFF24D1 +S315E0626FB032133012D08136803214302A0002D08108 +S315E0626FC038804CEF1C0000104FEF001C4E754FEFFF +S315E0626FD0FFDA48EF0C7C00023A2F002E382F0030A1 +S315E0626FE0262F00323F3C000145F900E2FE8C47FA6B +S315E0626FF0FDAC4EB900E2EA604EBAFEB8426742675D +S315E06270003F2F00323F2F0032240F06820000002815 +S315E06270102F024EB900E035244FEF00103C2F001EE0 +S315E06270203F053039000186DC322F001E52809081A6 +S315E06270303F004E923F4000243039000186F03F0423 +S315E0627040528090863F004E923F40002A2F032F02E5 +S315E06270504E934FEF00104A4066C2206F003430AF65 +S315E06270600020206F003830AF0022558F42674EB95C +S315E062707000E2EA604CEF0C7C00044FEF00284E75AC +S315E06270802F2F00102F2F0010487900014BB83F2FA9 +S315E062709000163F2F00163F2F00163F2F00164EBAFE +S315E06270A0FF2E4FEF00144E754FEFFFDA48EF0C7C80 +S315E06270B00002342F002E362F00302C2F00323F3C58 +S315E06270C0000145F900E2FE8C47F900E2F8C44EB9E8 +S315E06270D000E2EA604EBAFDDC3039000186DC4267E6 +S315E06270E090823F004E9242673A003039000186F064 +S315E06270F090833F004E923F2F003645FAFCA038005F +S315E06271003F2F00363F033F02240F06820000003025 +S315E06271102F024EB900E035244FEF001830390001F6 +S315E062712086DC90853F40001C3039000186F0908411 +S315E06271303F40001E2F022F064E93487900014BB85E +S315E06271402F024E924FEF00104A4066D0206F003415 +S315E062715030AF001C206F003830AF001E558F42679B +S315E06271604EB900E2EA604CEF0C7C00044FEF002877 +S315E06271704E754FEFFFC448D77CFC382F0048362F58 +S315E0627180004A246F00444EB900E27734424247EF48 +S315E062719000344DF900E260F420042203D080D2810B +S315E06271A03F40002E3F410032200422034480448166 +S315E06271B02A4028413E2A00063C2A00043A2A000276 +S315E06271C03812362F00423F4400343F4500363F4690 +S315E06271D000383F47003A4A6F004067062F0B4E96EB +S315E06271E060082F0B4EB900E2608C588F4A6F004CF4 +S315E06271F0670C302F002E322F0032DC80DE814A436C +S315E06272006708D88DDA8C538360BC52827142A5419D +S315E0627210B28066A04EB900E2775E4CD77CFC4FEF57 +S315E0627220003C4E754E56FFD448D704FC3F2E000A0A +S315E06272302C0E0686FFFFFFF23A2E000E382E000C69 +S315E06272403E2E0010346E00123F2E00083F053F04CA +S315E06272502F064EB900E03524734471474FEF000CB8 +S315E06272609887486EFFFA486EFFFCB0815EC2A34023 +S315E062727073459A8A486EFFFE48828480714AB0817D +S315E06272805EC3A340488386803003C1C53F003002B7 +S315E0627290C1C43F004EBAFC3C4FEF000E4267C7EEF8 +S315E06272A0FFFAC5EEFFFC3F033F022F063F2EFFFECD +S315E06272B042674EBAFEBE4FEF00104CEE04FCFFD4BE +S315E06272C04E5E4E754E56FFF42F0A486EFFF6486ED6 +S315E06272D0FFF8486EFFFA486EFFFC486EFFFE246ECA +S315E06272E000082F2E000C3F2A00063F2A00044EBA01 +S315E06272F0FC603F2EFFFC3F2EFFFE3F2A00023F125C +S315E06273003F2A00063F2A00044EBAFF1A34AEFFFE59 +S315E0627310356EFFFC00024FEF00263F3C00013F2E38 +S315E0627320FFF63F2EFFF82F0A3F2EFFFA3F3C0001A1 +S315E06273304EBAFE404FEF0010246EFFF04E5E4E7581 +S315E06273404E56FFF42F0A2F02486EFFF6486EFFF89C +S315E0627350486EFFFA486EFFFC486EFFFE242E000C74 +S315E0627360246E00082F023F2A00063F2A00044EBA26 +S315E0627370FBE04FEF001A302EFFF63F3C00014480FF +S315E06273803F00302EFFF844803F002F023F2EFFFA87 +S315E06273903F3C00014EBAFDDC3F2A00023F123F2E1F +S315E06273A0FFFC3F2EFFFE3F2A00063F2A00044EBA4C +S315E06273B0FE744FEF001C242EFFEC246EFFF04E5E4F +S315E06273C04E754E56FFD848D70CFC3C2E000C4879D9 +S315E06273D000014B902A2E0008382E000E3E2E001039 +S315E06273E04EB900E25E32548F486EFFF8424347F987 +S315E06273F000E2B1683F0645FAF9482F054EB900E268 +S315E0627400A49C4FEF000C3004600A4A4366043004E1 +S315E062741060023007558F3F3C0001A342B7823F00CE +S315E062742036023F062F054E934FEF000A3F2EFFFED0 +S315E06274303F2EFFFC3F2EFFFA3F2EFFF83F024E92B1 +S315E06274404FEF000C4A4066C230024CEE0CFCFFD8AD +S315E06274504E5E4E754E56FFE448D7001C558F240E9D +S315E06274600682FFFFFFF02F023F2E000C282E000857 +S315E0627470260E51832F044EB900E2A49C4FEF000A18 +S315E06274802F033F2E000E2F044EB900E2A474322E73 +S315E0627490FFF2302EFFFA486EFFFA2F032F02D081F9 +S315E06274A03F00302EFFF8322EFFF0D0813F003F2EB4 +S315E06274B0FFFE3F2EFFFC4EBAFBF04FEF00204A6E16 +S315E06274C000106714302EFFF2322EFFFA306EFFFEA6 +S315E06274D09280302EFFF66012302EFFF0322EFFF8E9 +S315E06274E0306EFFFC9280302EFFF490884A4067143B +S315E06274F0558F3F003F3C03E83F014EB900E1C6309D +S315E0627500508F600242404CEE001CFFE44E5E4E75C8 +S315E0627510206F000430B9000186DC206F000830B9C4 +S315E0627520000186F0206F000C30B9000186F4206F0E +S315E0627530001030B9000187044E7500002F39000152 +S315E06275404CDC4EB900E30224588F4E75A141226F9E +S315E06275500004206F0008203900014CDCB280660628 +S315E0627560429142904E75228020B900014CF44E75EC +S315E062757041EF000433D000014B6041EF000633D0A7 +S315E062758000014B6241EF000833D000014B6641F9DE +S315E062759000014BF833D000014B6C60FFFFFDBEE4A7 +S315E06275A04FEFFFF448D71C00487900E032BA49F958 +S315E06275B000E034C84E94425747FAFFB6426745F94F +S315E06275C000E034E03F3C007D4E93487900014CF8A0 +S315E06275D04E92487900E032E84E944FEF000E4267F1 +S315E06275E042673F3C007E4E93487900014D144E92CD +S315E06275F04CEF1C00000C4FEF00184E7541EF000691 +S315E0627600558F33D000014A583F3C000142673F2F15 +S315E0627610000A4EBAFF5C508F4E75558F42674267DD +S315E06276203F3C00024EBAFF4A508F4E7542673F3C7E +S315E0627630007A4EBAFFC84240588F33C000014CF020 +S315E06276404E754FEFFFF4302F001048D70C04757972 +S315E062765000014CF27340B282677633C000014CF2AD +S315E062766045FAFF0E6722558F42677002426733C062 +S315E062767000014B6A3F3C00054E924CEF0C04000859 +S315E06276804FEF00146000FF1A558F4267700347F9A7 +S315E062769000E034C8426733C000014B6A3F3C0005F4 +S315E06276A04E922F3900014CF84E934FEF000A426733 +S315E06276B042673F3C007D4E922F3900014D144E9356 +S315E06276C04FEF000A426742673F3C007E4E92508F20 +S315E06276D04CD70C044FEF000C4E752F2F00044EB9B9 +S315E06276E000E034C8425742673F3C00764EBAFE82BB +S315E06276F02F2F00104EB900E034E04FEF000C303926 +S315E062770000014C804E75206F000430B9000186DCC2 +S315E0627710206F000830B9000186F04E75558F4267DA +S315E062772042673F3C00804EBAFE48508F30390001D6 +S315E06277304C804E754A7900014CF06610558F42676F +S315E062774042673F3C007B4EBAFE28508F30390001DB +S315E06277504CF0528033C000014CF04E7560D6303941 +S315E062776000014CF0538033C000014CF0660E3F3CA2 +S315E062777000013F3C007A4EBAFE84588F4E752F0266 +S315E0627780242F00084EBAFFAE4A79000149DA66163E +S315E06277904878004A2F022F39000185744EB900E01D +S315E06277A00EC44FEF000C4878004A2F022F390001D1 +S315E06277B04A384EB900E00EC44FEF000A3F3C00255E +S315E06277C042673F3C006F4EBAFDA8508F241F608E21 +S315E06277D070042F0A558F45FAFD9833C000014A5866 +S315E06277E0103C00023F0033C000014A5A42673F3C08 +S315E06277F000214E9270FF5C8F3F3C000233C0000175 +S315E06278004A5842403F0033C000014A5A3F3C001F9B +S315E06278104E92508F4A7900014B6867083039000111 +S315E06278204C8060024240245F4E753F3C00013F3C23 +S315E062783000664EBAFDC8588F203900014CB44E75C9 +S315E06278404267426742A7487900014CDC4EB900E2E2 +S315E062785061FA4EBAFFD64FEF000C23C000014CF43A +S315E06278606708A17900014CDC6022323900014BA045 +S315E0627870C3F900014BA42001ED8890817379000180 +S315E06278804BA24C01080023C000014CF420390001F0 +S315E06278904CF44E754EBAFFAAA141B2B900014CDC76 +S315E06278A067102F004EB900E301F2588F23C0000142 +S315E06278B04CDC4E754FEFFFF448D71C00246F00187E +S315E06278C0286F0014266F0010486A005A4EB900E02D +S315E06278D034BC2F0B47F900E034984E932F0A45F9F2 +S315E06278E000E034B04E924FEF000A3F3C000B426735 +S315E06278F03F3C00014EBAFC7A38B900014B6C4879DC +S315E062790000014A584E93487900014C804E9248797C +S315E062791000014BD04EB900E034A44CEF1C000014D9 +S315E0627920203C00014CFC2F4000244FEF002060FF1A +S315E0627930FFFDBB8C41F900014A5830FC0001B1FC05 +S315E062794000014A6C66F47002487900014C0C487991 +S315E062795000014BF8487900014A5833C000014A6C8D +S315E06279604EBAFF52700133C000014CF24EB900E2EA +S315E062797064684EBAFC2C4FEF000A426742673F3CAE +S315E0627980007C4EBAFBEC508F41F900014CFC33D0DF +S315E0627990000186DC41F900014CFE33D0000186F03D +S315E06279A04E752F02342F00082F2F000A4EB900E0E1 +S315E06279B034A442573F023F3C00064EBAFBB4508FB6 +S315E06279C0203C00014BD02F400008241F60FFFFFDE2 +S315E06279D0BAD62F032F02362F000C202F000E4A4311 +S315E06279E067047402600242422F004EB900E034A49A +S315E06279F03EBC00013F0233C300014A583F3C00816E +S315E0627A004EBAFB6E508F203C00014BD02F40000CEB +S315E0627A10241F261F60FFFFFDBA8E424041EF00043D +S315E0627A20558F33D000014BD23F0033C000014BD0BB +S315E0627A303F3C00013F3C000C4EBAFB36206F000E25 +S315E0627A4030B900014CFC206F001230B900014CFEE7 +S315E0627A50206F001630B900014D00206F001A508F7A +S315E0627A6030B900014D024E752F02242F00082F2FE8 +S315E0627A70000C4EB900E034C82F024EB900E034A4DF +S315E0627A805C8F3F3C00013F3C00023F3C00724EBAD5 +S315E0627A90FAE0508F203C00014BD02F400008241FB3 +S315E0627AA060FFFFFDBA022F032F0241EF000C242F85 +S315E0627AB0000E262F001633D000014A582F2F0012EF +S315E0627AC04EB900E034C82F034EB900E034D42F0239 +S315E0627AD04EB900E034A44FEF000A3F3C00013F3C60 +S315E0627AE000043F3C006D4EBAFA88508F203C00019C +S315E0627AF04BD02F40000C241F261F60FFFFFDB9A864 +S315E0627B004FEFFFD8306F002C48D73CFC3A6F002E1F +S315E0627B10326F0030386F0032266F0034246F0038DF +S315E0627B202C2F003C282F00402A2F004471486C0617 +S315E0627B3006800000000F76F0C68041F0980F3E03A3 +S315E0627B4091C371486C0606800000000FE8807201FE +S315E0627B5033CC00014CE22400E98A33C000014CE4F4 +S315E0627B6033C100014CE633C200014CE04EBAFBC6BB +S315E0627B7042403687374D0002224341F128FF538265 +S315E0627B803748000441F5C8FF538C37480006354054 +S315E0627B900002425235420004354C00063F003F0087 +S315E0627BA042A72F064EB900E261FA5C8F2E852F045A +S315E0627BB0487900014BD03F3C00034EBAFEEA4CEFF7 +S315E0627BC03CFC00104FEF00386000FB94206F00042D +S315E0627BD0487900014A44487900014CDC4879000161 +S315E0627BE04A44487900014BD0487900014BD83F2896 +S315E0627BF000063F2800043F2800023F104EBAFF020B +S315E0627C004FEF001C4E75206F0004487900014CDC92 +S315E0627C10487900014B78487900014B784879000150 +S315E0627C204BD8487900014BD03F2800063F28000434 +S315E0627C303F2800023F104EBAFEC84FEF001C4E7559 +S315E0627C402F032F0241EF000C33D000014A5841EF77 +S315E0627C50001A33D000014A5A41EF001C242F000E6D +S315E0627C60262F001633D000014A5C2F2F00124EB940 +S315E0627C7000E034C82F034EB900E034D42F024EB987 +S315E0627C8000E034A44FEF000A3F3C00033F3C0004AF +S315E0627C903F3C00794EBAF8DA508F203C00014BD077 +S315E0627CA02F40000C241F261F60FFFFFDB7FA2F024C +S315E0627CB0242F000C2F2F00084EB900E034C82F02A3 +S315E0627CC04EB900E034D4508F42403F40000C3F4012 +S315E0627CD0000A103C006E3F400008241F6000F892E4 +S315E0627CE0424041EF0004558F33D000014BD03F0054 +S315E0627CF033C000014BD23F3C00013F3C00104EBA1C +S315E0627D00F870508F4E750000226F0008202F000435 +S315E0627D102040121910C166FA4E752F032F022039E0 +S315E0627D2000014EBC206F000C4241756F0010600A84 +S315E0627D3020802008528141E8001C7741B4836EF0CE +S315E0627D40241F23C000014EBC261F4E752F02740904 +S315E0627D50102F0009488022000681FFFFFFD0738161 +S315E0627D60B48165080680FFFFFFD06028558F3F002B +S315E0627D70AB424EB900E1C53A588F22000681FFFF59 +S315E0627D80FFBF7381B481650A48800680FFFFFFC941 +S315E0627D9060024240241F4E754FEFFFF0722048D7D3 +S315E0627DA00C0C206F00147110B280660252881010BB +S315E0627DB0558F47E8000145FAFF94240B52824880CA +S315E0627DC03F004E921213360048813E814E92588FA2 +S315E0627DD02203E989808173C00C81000000FF66029C +S315E0627DE070FF206F0018308020024CD70C0C4FEFEA +S315E0627DF000104E7571FC1A844E753F3C000C3F2FA5 +S315E0627E0000062F39000185704EB900E2A1D0206FDD +S315E0627E10000E508F224020914E754FEFFF7C48D77F +S315E0627E207CFC2F3900E4FE28240F06820000003332 +S315E0627E302F024EBAFED42079000160D41F5000377B +S315E0627E405C8F42672F024EB900E2FF7E508F3400AC +S315E0627E50670001704A7900018E64660001662F3917 +S315E0627E6000018AE43F3C012C3F004EB900E2FFB0DC +S315E0627E705C8F3F0236004EB900E2FF9E588F4A7928 +S315E0627E8000018E646600013C42007743247900017A +S315E0627E908AE4280F2C0F2E3C00E2C520424206847B +S315E0627EA00000008049FAFEF20686000000824DF983 +S315E0627EB000E243744BF900E2F7EC7BFC800015804C +S315E0627EC038004243600000D67100722347EA00013F +S315E0627ED0B280660000C67113123C004DB280662C19 +S315E0627EE02F06486A00094E9447EA000F508F719355 +S315E0627EF022050680FFFFFFBF71C0E0A986814A6F57 +S315E0627F000082660000968481600000907245B280CD +S315E0627F10664E2F04486A00034E943F3C000147EAEE +S315E0627F200006AF41302F008AC0813F004E962F0493 +S315E0627F302F0B4E94302F00944FEF00127208426777 +S315E0627F40C2804A4156C14881448133C100018B46B1 +S315E0627F50A341C081B3803F0042674E95508F603A3D +S315E0627F60725AB28066345C8A204A264822481018E1 +S315E0627F70670871007240B28066F04211528B2F0A36 +S315E0627F804EB900E2C156420120401141FFFF20474F +S315E0627F902F0A2F004E904FEF000C244B1012660012 +S315E0627FA0FF2833C300018B4A33C200018B48207934 +S315E0627FB000018AE4200806800000012C4258B0885D +S315E0627FC066FA4CD77CFC4FEF00844E752F0A45F972 +S315E0627FD000E033EA4E924E924E92558F3F3C00015C +S315E0627FE045F900E2EA604E9242574E92588F245F1C +S315E0627FF04E75534352454E4D47520000424170051D +S315E06280004E56FF7C41F90001857C48D73CFC243C16 +S315E06280100001075443F90001663E23C200018AE487 +S315E0628020263C00016870283C00014DAC33C100017A +S315E062803049F833C000014F4823C800018574203CEB +S315E06280400001668F33C10001890423C900014DA492 +S315E0628050223C0001659C243C000165ED43F9000188 +S315E06280604EC823C30001864C263C000188CC23C45B +S315E062807000018C40283C000188EC23C0000188E8BE +S315E0628080203C00014D2423C1000188C8223C000146 +S315E06280904D7623C2000188FC243C00014DBC41F9C7 +S315E06280A00001889823C1000160D423C100014DB864 +S315E06280B023C0000160C023C00001890023C3000120 +S315E06280C088C4263C0001846423C4000188C0283C3D +S315E06280D0000185C823C8000188BC23C9000160D8B5 +S315E06280E023C900018ADC23C2000160C423C3000104 +S315E06280F060C841F90001865443F90001867223C8DB +S315E0628100000160D023C80001890C23C900014A142A +S315E062811023C4000160CC23C400018AEC4EB900E0BE +S315E062812031544EB900E032A8558F42B9000149C8D0 +S315E062813042403F3C000AA97900014EC442B90001BF +S315E06281404EBC45FAFBD633C0000149CE33C00001CE +S315E062815049CC487900015FA84E92717900014F4897 +S315E0628160508FA541B2806C10558F3F3C000F487925 +S315E062817000016A4E4E92508F424279FC074A42B9FA +S315E062818000014DAE42B900014DB242B900014F5411 +S315E062819042B90001857842B90001856442B90001BD +S315E06281A04D1849F900E2B2F047F900E00DE833C252 +S315E06281B000014DAC33C20001856C33C200014D1C37 +S315E06281C033C200014F50343900014F48538277423F +S315E06281D02003EB884C034800068400015D5E204084 +S315E06281E045F03CB8D5FC000183F8600000A6558FE7 +S315E06281F03F024E94588FA341204023C000014DA810 +S315E06282007142B2806D2A71FC074A4C03080006800F +S315E062821000014F5C214000082003EB88224043F1D5 +S315E06282203C002009068000015F602140001460087E +S315E062823021440008214A0014424043E80038558F41 +S315E06282402149003231400036487800083F3C002040 +S315E06282504868000C4E934FEF000C4A42671620794D +S315E062826000014DA820280008224043E90746204045 +S315E06282702149003E4240207900014DA8538306849D +S315E0628280FFFFF8B645EAFFDC3142001C538231401B +S315E0628290001E4A426C00FF58424174012079000197 +S315E06282A04DA8424345F900E2B3D43141001C33C2E2 +S315E06282B000014EC042904EB900E0316433C3000122 +S315E06282C0885C487900E23718487AFD28487900E206 +S315E06282D037184E9223C0000186EC23C0000186E087 +S315E06282E04EB900E3023841F900E4FE9A23D0000178 +S315E06282F0856843F900E4FEB623D100014D2033C31D +S315E0628300000186DE33C3000186EA33C3000186F8E4 +S315E062831033C3000186F64EB900E2FF240680000010 +S315E0628320004113C0000186504EB900E2793471799A +S315E062833000014F484FEF000CA541B2806D14760301 +S315E0628340424247F900E00EC445F900E263FE60008E +S315E062835001284EB900E3021247FAF9AE26004EB999 +S315E062836000E27840558F3F3C000324004EB900E2BC +S315E0628370BBF42F002F39000160CC4E932F390001F8 +S315E0628380890C4EB900E2FF344FEF000E3F3CFFFF2F +S315E06283904EB900E05D68588F44C0660000BE609EDC +S315E06283A042422A0B2E3C00E2FF662C3C00E2FF488A +S315E06283B047F900E2FF7E4BF900E2FEBC49F900E2D2 +S315E06283C0FF9E4A426616558F3F3C000120462F3992 +S315E06283D000018AEC4E90508F3600600622474E913D +S315E06283E036004A4367664879000186722F39000192 +S315E06283F060D820454E905C8F42672F3900018ADC57 +S315E06284004E93508F38004A7900018E64663E558FEE +S315E0628410486EFFFC2F39000160D83F004E954FEF62 +S315E0628420000A3F043D40FFA64E94716EFFA6588F48 +S315E0628430A141B28067162F2EFFFC48790001867251 +S315E0628440487900E033B44E924FEF000C52827142AB +S315E0628450A744B88066186000FEE696820683FFFC53 +S315E0628460C80FE88B4A436600FF386000FED24A4393 +S315E06284706600FF506000FEC871424878000E528284 +S315E062848053832200D281E9889081068000E4FE70FF +S315E06284902F002F39000188C04E934FEF000A3F3913 +S315E06284A0000188F23239000188F02039000188EC57 +S315E06284B03F012F003F012F004E924FEF00104A43DB +S315E06284C066B647F900E031304E934EB900E0319E30 +S315E06284D045F900E031464E924EB900E2C0524E9303 +S315E06284E048790000816E2F39000081624EB900E260 +S315E06284F076DA33C0000149F04E923F3C00013F3CE0 +S315E062850000034EB900E243744EB900E302A841F9B2 +S315E062851000E4FDD823D0000185704EB900E2E64062 +S315E0628520487900014A2C203900E4FDD02F0023C0AF +S315E062853000014A344EB900E29B022F3900014DB880 +S315E06285404EB900E2BD9A4EBAF8D24EB900E033EACD +S315E06285504EBAFA7A4FEF00122EBC00018AE83F3C2F +S315E062856000024EBAF896263900014F4C508F2D43E1 +S315E0628570FFFC600652892D49FFFC226EFFFC4A1120 +S315E062858066F241E900014A1066EAA5402F3900E445 +S315E0628590FE149083240E0682FFFFFFAB2F022D4866 +S315E06285A0FFFC2600D6884EBAF7602F024EB900E18C +S315E06285B0C4A42D42FFFC4FEF000C38006016730135 +S315E06285C0743AB481660A43F9000186501151FFFF9D +S315E06285D052AEFFFC206EFFFC121066E2558F4267D8 +S315E06285E0D08371C0247900018AE4D08A23C0000175 +S315E06285F08AE44EB900E2BBF42F00486EFFFC4EB946 +S315E062860000E2C18A4FEF000C202EFFFC673C2F0090 +S315E06286104EB900E1C4A42C2EFFFC223900014F4C76 +S315E06286209C81DC803A007F4634062F072F012F0AB1 +S315E06286304EB900E00EC44FEF00104A456710703B3A +S315E062864024065282158078006004424542427944AB +S315E0628650714247F900E00EC42F04486EFFAB49F25F +S315E062866008002F0C4E934FEF000C206EFFFC4A88F9 +S315E06286706716968277437B452F03487058004874A5 +S315E062868048004E934FEF000C720142422879000196 +S315E062869060CC487800802F39000189082F0C23CA04 +S315E06286A000014F4C33C10001891833C100018AE0F1 +S315E06286B033C10001891233C10001891033C200015E +S315E06286C089164EB900E00EC410144FEF000C4880D4 +S315E06286D0670001E2420371402A0C52852045220579 +S315E06286E01183080026417620101352817500B68206 +S315E06286F067F24A00670001BE2A4B200B2440528093 +S315E06287001212670C73017820B88166F074206002F9 +S315E0628710420242122F0B4EB900E2C1561482588FC2 +S315E06287202479000160D8B7C067000088732B000126 +S315E0628730743AB481671A14F900018650765C14FCC7 +S315E0628740003A7313B681670814FC005C600214DDBC +S315E0628750264DB08D62F82A4A785C7125B880670248 +S315E06287602A4A4215243C00E1C53A2479000160D8E0 +S315E0628770600E4880558F20423F004E90588F14C05D +S315E0628780101266EE2079000160D8558F244D1010E4 +S315E062879048800680FFFFFFBF3F004EB900E3005608 +S315E06287A02F3900018ADC4EB900E3000A14FC005C52 +S315E06287B0508F7001600C762EB68256C214C1488222 +S315E06287C0C0822A4B121B670875017820B88266E67A +S315E06287D04A40671A558F3F3C00024EB900E2BBF44D +S315E06287E02F002F0A4EBAF5224FEF000C60024212BA +S315E06287F02479000160D847F900E1C53A600C488007 +S315E0628800558F3F004E93588F14C0101266F0424067 +S315E0628810722033C0000189127115B2806602528DF0 +S315E0628820244D2645243C00E1C53A6026101D76209B +S315E06288307300B681660E1212780D7701B8836712FD +S315E06288404A01670E4880558F20423F004E90588F0E +S315E062885016C0260A101A672C7100720DB280672460 +S315E06288607809B880671E123C002FB28066BE181285 +S315E0628870558F204248843F044E90588F724471402F +S315E0628880B28066A842132F054EB900E1C4A4204324 +S315E062889018801628000148833E834EB900E1C53A46 +S315E06288A0588F7244B3804A4057C04880448033C090 +S315E06288B000018910487800802F0C2F390001890861 +S315E06288C04EB900E00EC44EB900E2C9824EB900E08C +S315E06288D0313048790000816E2F390000816E4EB9E1 +S315E06288E000E276DA33C0000149F04EB900E0314683 +S315E06288F04EB900E2761A3039000189044FEF00146E +S315E062890067287140A342B4806620363900018AF056 +S315E062891055833F032F3CFFFFFFFF2F3CFFFFFFFF27 +S315E06289203F3C00054E4E4FEF000C4EB900E0313051 +S315E06289304EB900E0329C4EB900E031464CEE3CFC6A +S315E0628940FF7C4E5E4E7500002F02206F00083418E1 +S315E06289502F083F39000186F03F39000186DC4EB9C7 +S315E062896000E2FDE4508FB580241F4A4056C048803D +S315E062897044804E752F032F02342F000C717900016B +S315E062898086DE7342B081676A3039000186F8672213 +S315E06289907779000186EAB68166523239000186F657 +S315E06289A0568033C0000186F8528133C1000186F6F3 +S315E06289B0603A4A79000186E667204A42671C70019E +S315E06289C041F9000149EE33C2000186EA33D0000183 +S315E06289D086F833C0000186F660123F3C00013F0232 +S315E06289E0487A038C4EB900E23CF0508F33C2000104 +S315E06289F086DE241F261F4E753039000186F82F0A5F +S315E0628A002F024A406748322F000C908133C0000142 +S315E0628A1086F8663A3F39000186F645F900E23CF0AF +S315E0628A203F39000186EA487A03464E9230390001C0 +S315E0628A3086DE7579000186EA508F7340B282670EF0 +S315E0628A403F3C00013F00487A03264E92508F241F36 +S315E0628A50245F4E754879000186FC2F2F00084EB9D7 +S315E0628A6000E2FE52508F4E752F2F000448790001C6 +S315E0628A7086FC4EB900E2FE52508F4E75206F0004BE +S315E0628A8020B9000186E04E752F027408206F000857 +S315E0628A903028001453803140001430280010220040 +S315E0628AA05281314100107341B481660642413141DF +S315E0628AB000107140241F30300A004E752F0A45FAC5 +S315E0628AC0FFC860084868000E4E92588F2079000110 +S315E0628AD04DA8206800144A68002266E8245F4E7555 +S315E0628AE02F0A206F0008302F000C246800082568E2 +S315E0628AF000040004226800044A896704234A0008E5 +S315E0628B003F40000C2F480008245F60FFFFFFA78C00 +S315E0628B102F02206F0008326F000C202800026708DF +S315E0628B202F400008241F60B830280022AF4273400D +S315E0628B30B4816D2432280020754152813141002092 +S315E0628B40734131892A0E7408B48166064241314125 +S315E0628B500020528031400022241F4E75302F0004DF +S315E0628B6041EF000633D0000187044A406714558F0F +S315E0628B703F002079000186E02F2800144EBAFF926A +S315E0628B80508F4E752F032F02222F000E2401362FAF +S315E0628B90000C2001E0807582B782C0827418E4A975 +S315E0628BA0241F261F4A0057C048804480B3804A404B +S315E0628BB056C0488044804E754FEFFFC848D77CFC6C +S315E0628BC0362F00442C0F0686000000303A2F004212 +S315E0628BD0246F003E4BFAFFAE47FAFF0649F900E220 +S315E0628BE0FDE47FC3600000A02C6A0004242A001022 +S315E0628BF04A6F003C6750302A001472083F420032E6 +S315E0628C00C0814A4056C44884200444803F40002ED6 +S315E0628C1038002002484048C079C43F400030202AEC +S315E0628C2000182200484148C13F4000363F410034C7 +S315E0628C302F063F033F054E94508F71C0B084674460 +S315E0628C40558F42676038558F2F023F054E95508F9C +S315E0628C504A40673042424842A341758271C2B2805D +S315E0628C60640E3039000186E6538033C0000186E641 +S315E0628C7073C2558F3003B287640230023F002F0A17 +S315E0628C804E93508F244E4A8A6600FF5E4CD77CFC38 +S315E0628C904FEF00384E753039000186F84FEFFFF43A +S315E0628CA048D7001C342F0010362F00124A40673432 +S315E0628CB03239000186DCA9449282548173C1B8815B +S315E0628CC065183239000186F0183C000292837341DE +S315E0628CD0B8816D0678FEB8816F0A558F3F004EBA4D +S315E0628CE0FD18588F33C2000186DC33C3000186F07B +S315E0628CF04A79000149C4670C3F033F024EB900E07E +S315E0628D00331E588F2079000186ECB1F9000186E0C6 +S315E0628D10672C4A79000186F466244AB900018858CC +S315E0628D20671C4879000149D04EBAFC1E588F4A400A +S315E0628D30670C41F9000186EC23D0000186E0558F8D +S315E0628D403F39000186F02079000186E03F39000173 +S315E0628D5086DC206800142F2800063F3C00014EBAEC +S315E0628D60FE584CEF001C000C4FEF00184E754FEFAB +S315E0628D70FFE848D7047C382F001C3A2F001E4A7958 +S315E0628D80000149DA660000C87144A341B280660018 +S315E0628D9000BE4A79000186F4660000B43639000105 +S315E0628DA086F04879000186FC3439000186DC45F9B3 +S315E0628DB000E2FDE43F033F024E92508F4A40667AFC +S315E0628DC0487900014B983F033F024E92508F4A40EA +S315E0628DD0660000EC3F033F024EB900E2EA40588F7C +S315E0628DE04A40670000E2737900018B7C2C01E78ED2 +S315E0628DF0ED89928606810001688E20417C083210F8 +S315E0628E00C2864A41670000B871402200E789ED8870 +S315E0628E1090812040D1FC0001688E3210C2864A41C0 +S315E0628E206700009C0680000168A62F003F033F02B0 +S315E0628E304E92508F4A406700008641F9000186D81B +S315E0628E4023D0000186E0600623C0000186E041F996 +S315E0628E50000186F4558F33D0000186FA41F90001AC +S315E0628E6086D433D00001870641F9000186DC33D02F +S315E0628E70000186E841F9000186F033D0000186F20E +S315E0628E803F052079000186E03039000186E433C48B +S315E0628E90000186F433C5000186D43F04528033C0B4 +S315E0628EA0000186E4206800142F28000A42674EBA61 +S315E0628EB0FD084CEF047C000C4FEF00244E75203920 +S315E0628EC0000186EC60822039000168906000FF7ADA +S315E0628ED02F0A206F00084A79000186F46650558FA2 +S315E0628EE03F39000186F023C8000186E023C800010D +S315E0628EF086D845FAFCC43F39000186DC2068001456 +S315E0628F002F2800063F3C00014E924FEF000A3F3C9D +S315E0628F1000012079000186E03F39000186F420688D +S315E0628F2000142F28000A42674E924FEF000C245F2E +S315E0628F304E75207900014DA82F02242F0008206883 +S315E0628F4000144A68002267144868000E4EBAFB3A7B +S315E0628F503E802F024EB900E23298600C4868000209 +S315E0628F602F024EB900E23356508F241F4E752F0AF8 +S315E0628F702F02246F000C242F00106604143C0001BB +S315E0628F804EB900E03130203900008176670CB0825C +S315E0628F906D1423C200008176600C23C200008176E4 +S315E0628FA042B900008172302A0014A94143F90001F6 +S315E0628FB04D1893F900014EC4207900014D18808165 +S315E0628FC035400014601020280010B0826C0C2248F4 +S315E0628FD09480206800044A8866EC234A00042549A6 +S315E0628FE000082542001025480004670E202800107C +S315E0628FF09082214A000821400010241F245F60FF0E +S315E0629000FFFDA1464FEFFFF448D70C042679000135 +S315E06290104DA8246F0010242F0014B7F9000186E0F2 +S315E0629020662A2F023F39000186F44EBAFB585C8FFE +S315E06290304A40671870012F4A00104CD70C043F4033 +S315E062904000144FEF000C60FFFFFFA2502002A34125 +S315E0629050484048C07180B2806C0E3039000186E6C5 +S315E0629060528033C0000186E6266B0014254200106A +S315E06290702F4A001047EB000A2F4B00144CD70C0422 +S315E06290804FEF000C60FFFFFFA2D04FEFFFF42F0A15 +S315E06290902F02246F00184878000A2F2F0020240F31 +S315E06290A00682000000122F024EB900E00EC44FEFB6 +S315E06290B0000C2039000186E0B0B900014DA8661ABD +S315E06290C02F024EBAF884588F4A40670E558F426730 +S315E06290D02F0A4EB900E232986052302A00144A6F83 +S315E06290E0000A670672088081600472F7C0813540C3 +S315E06290F0001471EF000C736F000E207900014DA829 +S315E062910048404240206800145C88D08125400010C7 +S315E062911071EF0010736F001248404240D0812540E3 +S315E062912000182F082F0A4EB900E23356508F241FDB +S315E0629130245F4FEF000C4E754FEFFFCC48D77CFCB7 +S315E062914026390001885867000194558F48790001F5 +S315E062915087083F3C000C45F900E2A1D04EB900E237 +S315E0629160D5683F3C000442672F034E923F3C0002C3 +S315E062917020403F102F034E924FEF0012223C000137 +S315E062918087082040301023C100018830207C00FF30 +S315E0629190110072142EBC0001871823C800018714DF +S315E06291A03F0033C00001882C33C10001870E4201C3 +S315E06291B033C10001871033C1000187122F034EB914 +S315E06291C000E2A49C3A390001885C4FEF000C670428 +S315E06291D0548560027A017001558F280F068400007B +S315E06291E0002E2F0433C50001870C45F9000187087C +S315E06291F07B454BF900E2A1D049F90001886047F965 +S315E062920000E2FE5233C00001870A30390001882C41 +S315E062921052803F002F034EB900E2A4744FEF000C78 +S315E062922070012C4A6000009A2C022202E78EEB89DA +S315E06292302040528892862441D5FC000187083D8809 +S315E06292401800721C3C0835410006420135410008AF +S315E06292503541000AA541B2826C2457806002528091 +S315E0629260734022341C0067F62E022002E78FEB88F9 +S315E0629270908706800001871420402081601A323987 +S315E06292800001882C3F3C000CD0813F002F034E95B5 +S315E0629290508F20402550000C2002E788EB8A9480AC +S315E06292A00682000187182F022F044E93302F003674 +S315E06292B0323900014BA4D0813F4000363006508FF0 +S315E06292C07540BA826C00FF62700841EF002E42522E +S315E06292D033D00001871E33C0000187424CD77CFC45 +S315E06292E04FEF00344E754FEFFFF048D7003C242F26 +S315E06292F00014362F00183A2F001A382F001E3F3C12 +S315E0629300000A3F032F024EB900E2A1D0508F2040FF +S315E062931030104A6F002067087208C2804A41663898 +S315E06293204A6F001C67048A8060044685CA804A44A4 +S315E0629330670E487900014BB84EB900E25E32588F4B +S315E0629340558F3F043F053F032F024EB900E2B168F5 +S315E06293504FEF000C7001600242404CD7003C4FEF89 +S315E062936000104E752F02302F000CA1427340B4817B +S315E0629370672A756F000EB4816722558F3F3C000104 +S315E06293803F3C00013F2F00163F3C00013F002F2F7C +S315E062939000144EBAFF524FEF001060024240241FA3 +S315E06293A04E75518F2F02487900014BB84EB900E2F3 +S315E06293B05E32548F240F5C822F023F2F001C2F2FC8 +S315E06293C0001A4EB900E2A49C302F001053803F4051 +S315E06293D00010302F001454803F400014302F0016E6 +S315E06293E054803F4000164FEF000C4A6F0010670A48 +S315E06293F02F024EB900E27C0660082F024EB900E207 +S315E06294007BCC588F241F508F4E754FEFFFEC48D7B9 +S315E0629410043C3A2F00183F3C000426390001885884 +S315E062942045F900E2A1D02805558442672F034E92A2 +S315E06294303F3C000220403F102F034E924FEF001058 +S315E0629440204034106010426753843F022F034E92ED +S315E0629450508F204034107144A341B2806DE873426C +S315E062946071790001882CB081660842422639000192 +S315E06294708830558F3F3C00013F3C00013F3C000194 +S315E06294803F3C00013F052F39000188584EBAFE582D +S315E06294904FEF00104A40671E3F022F033F3C000138 +S315E06294A04EBAFF003F3C00083F022F034EB900E28E +S315E06294B0AD6E4FEF001030024CD7043C4FEF001414 +S315E06294C04E754FEFFFB048D77CFC2A3900018858C9 +S315E06294D02A7C000101012C05347C000174FF76FFD1 +S315E06294E0367CFFFF4DFAFE7E600434043607714A2D +S315E06294F0A741B280671EA944B880670AA347BE80C7 +S315E06295006632600002BC300B663822390001883070 +S315E0629510600002B23039000186F408000000672E6E +S315E0629520300322062A7C00010100327C0001387C8D +S315E06295300007602C30022205327C0001387C00078D +S315E0629540601E300B220593C9387C000F601230032F +S315E0629550327C0001387C000722062A7C0001010188 +S315E06295607940A147BE846602700178082E0CC887EE +S315E06295704A446726558F486F00403F002F012F49C6 +S315E062958000384EB900E2A49C7002226F00382205D0 +S315E06295903F49004893C94FEF000C558F486F004A28 +S315E06295A03F0042472F012F4900384EB900E2A49CA2 +S315E06295B03F470046226F00383F4900524FEF000AAC +S315E06295C0486F003242A72F0D42A7486F004E486FA0 +S315E06295D0005C3F0C4EB900E240C44FEF001CA5416F +S315E06295E0C0814A406722714AB2806714280D080436 +S315E06295F000006600015A4A7900018B466600015016 +S315E06296002E0DA340B1872A473F2F00323F2F00320B +S315E06296103F3C00013F3C00022F054EB900E2AE4CF2 +S315E06296204FEF000CA14138007140B280671AA5473E +S315E0629630BE8067144A7900018B46675A716F003AB9 +S315E0629640A341B2806658604E714BA144B8806758B8 +S315E06296507142B88067603F2F00323F2F00323F3C55 +S315E062966000013F0B2F064EB900E2AE4C4FEF000C05 +S315E06296703E007140B88066483F3C000A3F022F05D3 +S315E06296804EB900E2A1D0508F720820403010C081FE +S315E06296904A4067346024347C00027EFF60303802E0 +S315E06296A03E03347C000260263E03347C000178FF90 +S315E06296B0387C0001601A38023E03347C000160F0B7 +S315E06296C03802347C000360063802347C000499CCAC +S315E06296D0558F42673F073F032F064E964FEF000ACC +S315E06296E042673F043F022F054E964FEF000C4A4019 +S315E06296F0670C3F0B2F0642674EBAFCA8508F558F18 +S315E06297003F3C00013F023F042F054E964FEF000CAF +S315E06297104A40671E558F3F044EBAFCF0588F36407A +S315E06297204A4066082C390001883060062C3900010F +S315E06297308858558F3F3C00013F033F072F064E9600 +S315E0629740300C4FEF000C6700FDA23404360771421D +S315E0629750A141B280675E3F0BA1442F0642674EBAD3 +S315E0629760FC427143508FB880672E558F3F3C0001B3 +S315E0629770426742673F3C00013F032F064EBAFB68F1 +S315E06297804FEF00104A406710206F0054700130823C +S315E0629790206F00583083601E558F3F3C00013F3C8E +S315E06297A0000142673F3C00013F022F054EBAFB389B +S315E06297B04FEF001042404CD77CFC4FEF00504E75A5 +S315E06297C0700122053240387C000F6000FD9E4FEF4B +S315E06297D0FFEA48EF0C1C0002776F0020242F001A84 +S315E06297E0382F001E3F0342A74EB900E2B31C508FEA +S315E06297F041F9000188844A44670000A221823C0064 +S315E062980023C00001882823C2000188584EBAF92A8B +S315E062981045F900E2A1D03F3C00143F3C00012F0233 +S315E06298204E923F3C0010363900014BC026403F3C29 +S315E062983000012F024E924FEF000A204030109680D0 +S315E062984036832EBC000149D23F3C00022F3900012B +S315E062985088584EB900E2A49C487900014BB84EB9EB +S315E062986000E25E323F3C00083F3C00012F390001D6 +S315E062987088584EB900E2AD6E303900014A3E32395F +S315E062988000014BC053803F0053813F013F00426776 +S315E06298904EB900E25FA64FEF0020601E42B03C0088 +S315E06298A04879000149D2487900014B9842B90001F2 +S315E06298B088584EB900E2FE52508F4240207900014C +S315E06298C086EC4CD70C1C3F40001C2F680014001835 +S315E06298D04FEF001460FFFFFFF23A4FEFFFF448D715 +S315E06298E00C04424245F90001883447F900E2E1425C +S315E06298F0201A671C42674267426742673F022F004F +S315E06299003F3C00294879000149DC4E934FEF001451 +S315E0629910528271427209B28066D64CD70C044FEF1E +S315E0629920000C4E7520004FEFFFF448D7040C4A6FE7 +S315E062993000106D00009230390001885C7408734053 +S315E0629940B4816D000082528033C00001885C41F9C7 +S315E0629950000188604202600252824A9866FA774261 +S315E062996045F900E4FD1041F90001883443F900014C +S315E06299704DA820323C0021913C0041F9000188600B +S315E062998021803C002F2F00122F004EB900E012FC1E +S315E0629990508F20723C007140D1C054886002421000 +S315E06299A071207220B28067F67142487AFF7841F997 +S315E06299B000E4FD102F300C004EB900E1C4B64EBA99 +S315E06299C0F778508F600274FF30024CD7040C4FEF89 +S315E06299D0000C4E754FEFFFE448D71C3C322F002057 +S315E06299E045F900E4FD1043F900018834602C7616EF +S315E06299F0424052817B412042794026728C00287235 +S315E0629A005C00D9C417944800528053834A4366E89F +S315E0629A10714141F10C0023902C0030790001885CA1 +S315E0629A20754153887148B0826EC433C80001885C60 +S315E0629A3041F90001883442B00C0041F900018860C6 +S315E0629A404CD71C3C42B00C004FEF001C6000F6EABB +S315E0629A50226F0008202F00042040121910C166FA16 +S315E0629A604E752F032F02322F000C41F9000165ED8E +S315E0629A704240600C7518765FB68266025381528008 +S315E0629A804A416EF073402041D1FC000165ED60020F +S315E0629A905280121867087301745FB48166F2241FFC +S315E0629AA0261F4E754FEFFFF048D7041C242F001493 +S315E0629AB0362F00183F3C000845F900E2A1D03F038B +S315E0629AC02F024E92204038103F3C000C0284000088 +S315E0629AD001003F032F024E924FEF001022402051C9 +S315E0629AE04A44670220504878001C2F082F2F002234 +S315E0629AF04EB900E00EC44CEF041C000C4FEF001CA4 +S315E0629B004E754FEFFFE048D70CFC2E2F00243F3C0A +S315E0629B10001047F900E2A1D042672F074E9334392D +S315E0629B2000014BC02440362A0004303900014BA0C4 +S315E0629B30382A00069483754224026A025282E282DD +S315E0629B4048C285C0C5C0303900014BA4C1FC0019CA +S315E0629B503F003F3900014B8C4EB900E2FE7032396C +S315E0629B6000014A3E3482908190847B402A056A02F3 +S315E0629B705285E285DA81354500023F3C000A3C05C2 +S315E0629B8042672F074E934FEF001472302040301039 +S315E0629B90C0814A40670A2C05578257865C835C849B +S315E0629BA03F043F033F063F022F2F00304EB900E0ED +S315E0629BB035244CEF0CFC000C4FEF002C4E75518FA8 +S315E0629BC02F0A2F02246F001C558F240F0682000095 +S315E0629BD0000A2F023F2F001E2F2F001C4EB900E213 +S315E0629BE0A49C2F023F2F001E3F2F001E2F3900013B +S315E0629BF088D03F39000188D83F39000188DC4EB908 +S315E0629C0000E268C4303900014BA0342F0036322FAF +S315E0629C100024356F002600024FEF001C41F9000177 +S315E0629C204BA43550000635400004C5C0D282241FDD +S315E0629C303481245F508F4E754E56FFE448D7001C40 +S315E0629C40486EFFF03F2E000E382E000C342E0010C8 +S315E0629C50262E00083F042F034EBAFF644FEF000C36 +S315E0629C604A426716322EFFF420025380C1F90001A0 +S315E0629C704BA0D0813D40FFF46028558F3F3C000108 +S315E0629C803F3C000342674EB900E25FCC302EFFF202 +S315E0629C90508F57803D40FFF2302EFFF65C803D40AC +S315E0629CA0FFF6486EFFF84EB900E25EB6486EFFF028 +S315E0629CB04EB900E25E32508F4A42670E42673F0417 +S315E0629CC02F034EB900E2AD6E601E306EFFF2326E69 +S315E0629CD0FFF6302EFFF043F098FF3F093F003F0862 +S315E0629CE03F004EB900E25FA6508F486EFFF84EB96C +S315E0629CF000E25E32588F4CEE001CFFE44E5E4E751B +S315E0629D002F032F02206F000E752F000D60285288F8 +S315E0629D107310762EB681661073280001B6816608E6 +S315E0629D20122800025688600212007100B0826E0646 +S315E0629D307301B2826C08101066D442406002700110 +S315E0629D40241F261F4E754FEFFFF4725848D7040C56 +S315E0629D50712F0015246F0010B2806700009E6D308F +S315E0629D60123C0046B280675E6D16123C0039B280E4 +S315E0629D7067000094123C0041B280667A6000008C13 +S315E0629D80724EB2806734123C0050B2806668602ED2 +S315E0629D90726EB280673C6D12123C0061B280672ED1 +S315E0629DA0123C0066B280664E60207270B2806712C4 +S315E0629DB0123C0078B280663E601E7006604E7007A6 +S315E0629DC0604A7008604670096042700A603E700BD5 +S315E0629DD06002700C424260361012558F48803F0036 +S315E0629DE060084A426714558F3F034EB900E1C53AAF +S315E0629DF0588F148060044240600270014CD7040CB4 +S315E0629E004FEF000C4E75700460CA70057401558F91 +S315E0629E103F004EB900E2BBF41612548F2F0048831E +S315E0629E203F034EBAFEDC508F4A4066B660CE2F0ADA +S315E0629E303F2F000845FAFC2C4E92548F206F000AA1 +S315E0629E40308048790001659C4EB900E1C4A43E8049 +S315E0629E504E92588F206F000E245F30804E75716F80 +S315E0629E60000441F90001659C4A3008006718220047 +S315E0629E7006810001659D2F01D0882F004EBAFBD284 +S315E0629E80508F42404E7570014E754E56FFD448D79C +S315E0629E900CFC342E00142A2E0008362E000C382EC6 +S315E0629EA0000E246E00104A426700031A4A436F00AE +S315E0629EB00314558F4879000188CC3F0347FAFB9239 +S315E0629EC02F054EBAFBE02F39000188D02F39000109 +S315E0629ED088FC4E932F39000188CC2F39000188C85F +S315E0629EE04E932F39000188D42F3900014DA44EB923 +S315E0629EF000E012FC4FEF00244A406F242C005386A8 +S315E0629F007F79000188E641F90001663E7D46600A96 +S315E0629F1043F068005280119118007340BE816EF082 +S315E0629F204201714041F90001663E558F7542A34692 +S315E0629F301181080048790001668F4879000165ED74 +S315E0629F4048790001659C3F39000188DC4EB900E240 +S315E0629F50A50E4FEF0010BC82670AA540B08266008C +S315E0629F60024C601448790001659C4EB900E1C4A4D4 +S315E0629F70588F348060000236558F486EFFFA486E1D +S315E0629F80FFFC3F124EBAFEA84FEF000A4267342E3C +S315E0629F90FFFC3F023F032F054EBAFC9E71444FEF32 +S315E0629FA0000C0C8000004B0067646E120C800000AF +S315E0629FB0011B67280C8000000E08667C60120C802C +S315E0629FC000004D0067520C8000005300666A601A1A +S315E0629FD030126F00014E5380348060224201425259 +S315E0629FE013C10001659C600001363239000188E4E4 +S315E0629FF03012538175407341B2826F000126558FEC +S315E062A0003F004EBAFE5A588F340060000118301293 +S315E062A0106F0001105380601A755248790001659CA1 +S315E062A0204EB900E1C4A4588FB082630000F63012E4 +S315E062A03052803480600000EC3239000188E43012EC +S315E062A04053817D407341B2866E12220253813D4155 +S315E062A050FFFC5380340134807C01600242461D4439 +S315E062A060FFFF670000BE715241F90001663E558FFF +S315E062A0701030080048803F00486EFFFF4EBAFCC8C9 +S315E062A080508F4A4067261C2EFFFF558F3F390001ED +S315E062A09088E448863F063F1248790001659C4EB9DE +S315E062A0A000E2FD78301252803480606E4A4667087C +S315E062A0B03012528252803480301275422042D1FC94 +S315E062A0C0000165ED752EFFFF380060087C5FBC819C +S315E062A0D066025284121867067301B48166EE3239FB +S315E062A0E0000188E4754455817341B2826F3422047B +S315E062A0F092807341558F71402F013F3C002006806C +S315E062A1000001659C2F004EB900E00DE8420041F97E +S315E062A1100001659C1180280034844FEF000C4242B6 +S315E062A120600274012F39000188C82F39000188CC9A +S315E062A1304EBAF91E508F4A426672558F48790001CF +S315E062A140668F4879000165ED48790001659C3F3983 +S315E062A150000188DC4EB900E2A50E4FEF000E486EB4 +S315E062A160FFF6486EFFF83F124EBAFCC43F2EFFF888 +S315E062A1703F2EFFFC4EB900E2FE703F2EFFF63D40F9 +S315E062A180FFFC3F2EFFFA4EB900E2FE8C322EFFFC58 +S315E062A1904FEF001490814A406712558F3F003F01AE +S315E062A1A03F032F054EBAFA924FEF000C558F3F12DE +S315E062A1B04EBAF8B042573F003F032F054EBAFA7ADD +S315E062A1C04FEF000C4CEE0CFCFFD470014E5E4E7508 +S315E062A1D0322F0008716F000AC3FC0018D081D0AF3D +S315E062A1E000044E754E56FFD8302E000C48D71C043C +S315E062A1F048780018286E001E246E000E266E001A3D +S315E062A200C1FC0018D0AE00082F00486EFFE84EB9D8 +S315E062A21000E00EC4302EFFF04FEF000C396EFFFC0B +S315E062A2200004396EFFFE0006206EFFF4368002807F +S315E062A2300000010024884A4067022490206E0012E2 +S315E062A240720C30AEFFF2206E001671AEFFEF308018 +S315E062A2500680FFFFFFEC71C0B2806574303B0A088E +S315E062A26048C04EFB0802002C001A001A006A006A17 +S315E062A270002C0034002C006A001A001A006A006E94 +S315E062A28020523028001673400C81000000806E2850 +S315E062A290602C102A0001488060243213A94074FEC3 +S315E062A2A0C0814A4057C0488094802002A542C2825B +S315E062A2B04A41670A538060060680FFFFFF00206E10 +S315E062A2C00022308010124CEE1C04FFD84E5E4E75B2 +S315E062A2D0424060EA700160E64FEFFFBC48D71CFC83 +S315E062A2E0246F0048342F004C286F00503F6F0054B3 +S315E062A2F000343F6F0056002476017B6F004E7D6F1F +S315E062A3000058600234007142BA80670000943002FD +S315E062A3102E0353877F477943C1FC00183232081017 +S315E062A320264030377A34D0813F804A3432377A24D5 +S315E062A330A1473072B812D2883F814A24558F3F01D5 +S315E062A3403F003F022F0A4E943032B8024FEF000CC4 +S315E062A3507340BE8167163232B8080281000000801F +S315E062A3604A416608BC846D04528360987342280150 +S315E062A3702001E78CEB889084303208007940BA8419 +S315E062A380671E4A42671A2E042404E78FEB8A948793 +S315E062A39075722804B2826600FF6C5383340060CC27 +S315E062A3A04CD71CFC4FEF00444E754FEFFFF448D795 +S315E062A3B0001C342F0014206F0010673472FF6002B5 +S315E062A3C0340030027741A144C1FC00183030080005 +S315E062A3D0B883660232004A406D1A774075422803B6 +S315E062A3E0E78CEB8B968477703804B48366D260042C +S315E062A3F072FF70FF206F00164CD7001C4FEF000C07 +S315E062A40030814E754FEFFFDC48D73C3C266F003219 +S315E062A410280F246F002E068400000022262F0028D3 +S315E062A420342F002C425342524BF900E2A1D049F953 +S315E062A43000E2A3AA3A123F3C00103F022F034E9578 +S315E062A440548F20403010DA8034853228000230138F +S315E062A450D08136802E843F022F034E944FEF000C5C +S315E062A460A14134007140B28066CA4CD73C3C4FEFA2 +S315E062A47000244E753F3C00103F2F000A2F2F000844 +S315E062A4804EB900E2A1D0487800082F002F2F001ABB +S315E062A4904EB900E00EC44FEF00144E754FEFFFF277 +S315E062A4A048EF040C0002362F0016246F0018242FA2 +S315E062A4B00012486A00022F0A3F032F024EBAFF4695 +S315E062A4C03F3C00143F032F024EB900E2A1D0204088 +S315E062A4D0355000045488355000064CEF040C0018E1 +S315E062A4E04FEF00244E753F3C00103F2F000A2F2F9E +S315E062A4F000084EB900E2A1D0487800082F2F001676 +S315E062A5002F004EB900E00EC44FEF00144E754FEFC8 +S315E062A510FFE0724048D71C7C246F0026242F002A75 +S315E062A520266F002E7112B280660242122F0249F93C +S315E062A53000E1C4A4A3454E9442042F0A36004E9429 +S315E062A540508F734317841800796F0024BA846610BB +S315E062A5505381D7C1D481734045F218FF72FF60021E +S315E062A5607201C7C1C1C1734177437140D682D08A55 +S315E062A570602220427C5F18107B04BC8567041684E7 +S315E062A580600EB08A67061692D5C1600416BC005F9B +S315E062A590D7C1D481B68266DA4CD71C7C4FEF0020F5 +S315E062A5A04E754E56FFE02D6E0008FFE22F0A486EAA +S315E062A5B0FFEC2F2E000E246E00123D6E000CFFE6BD +S315E062A5C03D6E0016FFE83D6E0018FFEA4EB900E206 +S315E062A5D0FE52486EFFF44EB900E25EB62D6A0004A2 +S315E062A5E0FFFC486EFFE220524E904FEF0010246E61 +S315E062A5F0FFDC4E5E4E754E56FFBC48D70C7C362E5F +S315E062A600000C558F486EFFF4280E0684FFFFFFE2CA +S315E062A6102F04486EFFEE486EFFF0486EFFF2486E1A +S315E062A620FFEA3F03242E00082F024EB900E2A1E4BE +S315E062A6304FEF00201A00302EFFEE0280000000800D +S315E062A6404A4066000720A140B0AEFFEA67000716FF +S315E062A6503D6E000EFFE23D6E0010FFE44A790001B6 +S315E062A6604BFE67644A7900014BC2675C2C0E068634 +S315E062A670FFFFFFDA2F062F044EB900E2FE52302EBC +S315E062A680FFF2508F7210C0814A40670A558F3F3C95 +S315E062A690FFFD2F066018302EFFF46C06C1FC000346 +S315E062A6A06004C1FCFFFD558F3F00486EFFDA4EB98C +S315E062A6B000E2683C508F486EFFDA4EB900E25EDE39 +S315E062A6C0588F4A406700069E302EFFF0781C734032 +S315E062A6D0B8816700038E382EFFF471C02C0446867B +S315E062A6E07D46DC869D86C8867C013D46FFF63D4614 +S315E062A6F0FFFC7C1EBC806548A340E3A802806060E4 +S315E062A7000000673C4878001C2F2EFFEA2F390001D3 +S315E062A71088C44EB900E00EC44FEF000A486EFFF6F9 +S315E062A720486EFFF8486EFFFA486EFFFC486EFFFE21 +S315E062A7303F39000188DE4EB900E26A544FEF0018F5 +S315E062A74071EEFFF0721EB280650000DE736EFFF09E +S315E062A750A340E3A8220002810A10000066142200E8 +S315E062A76002814040000066480800001A66286000E0 +S315E062A77000B8558F486EFFF6486EFFF8486EFFFAEE +S315E062A780486EFFFC486EFFFE3F2EFFEC4EB900E2DC +S315E062A7906A544FEF0018716EFFF07C1ABC80661047 +S315E062A7A0424170013D41FFFA3D40FFFE3D41FFF807 +S315E062A7B04A6EFFF46732558F3F2EFFFE3F3C000143 +S315E062A7C042674EB900E25FCC5C8F3F2EFFF43F2ECC +S315E062A7D0FFE83F2EFFE63F2EFFE43F2EFFE24EB953 +S315E062A7E000E26C444FEF000C716EFFF07C19BC80A6 +S315E062A7F06736558F3F042C0E0686FFFFFFE245F96A +S315E062A80000E2683C2F064E922F063F2EFFFA3F2E5D +S315E062A810FFF84EB900E2686E4FEF000E2004448006 +S315E062A8203F002F064E92508F558F3F2EFFFC3F2EF4 +S315E062A830FFF63F3C00014EB900E25FCC302EFFF0FE +S315E062A840508F720A0680FFFFFFEB71C0B28065002F +S315E062A8500212303B0A0848C04EFB080200900090A4 +S315E062A86000D201E402060206005C02060016001649 +S315E062A87001422279000188CC41F90001659C1019F8 +S315E062A88010C066FA2279000188D041F9000165EDCF +S315E062A890101910C066FA558F48790001668F4879BB +S315E062A8A0000165ED48790001659C3F39000188DC6D +S315E062A8B04EBAFC5C4FEF0010716EFFF041F9000199 +S315E062A8C088E8721B23D0000188CCB280661E420300 +S315E062A8D07C02700313C50001668F13C300016690A4 +S315E062A8E033C6000188DC33C0000188D8558F3F0447 +S315E062A8F0240E0682FFFFFFE245F900E2683C4484EB +S315E062A9002F024E922F022F39000188CC3F39000187 +S315E062A91088D83F39000188DC4EB900E26A004FEF21 +S315E062A92000123F042F024E92508F60000136487843 +S315E062A930000E2F2EFFEA2F39000188C04EB900E0E3 +S315E062A9400EC44FEF000A42673239000188F03F39A0 +S315E062A950000188F82001E7883F3C00023F390001A8 +S315E062A96088F23F00717900014BC06C025E80E6803E +S315E062A9703F003F2EFFE43F2EFFE242A73F013F3911 +S315E062A980000188F63F39000188F42F39000188EC2E +S315E062A9904EB900E2626A4FEF0020600000C6487876 +S315E062A9A000222F2EFFEA2F39000188BC4EB900E063 +S315E062A9B00EC44879000188B24879000188AA322E2D +S315E062A9C0FFE23039000188AA3F39000188A8307970 +S315E062A9D0000188ACD08133C0000188AA302EFFE442 +S315E062A9E03F39000188A641F0080033C8000188AC0F +S315E062A9F03079000188B23F39000188A4D2882F39C4 +S315E062AA00000188A033C1000188B23239000188B4FE +S315E062AA102F390001889C2F39000188983F2EFFF27A +S315E062AA20D08133C0000188B44EB900E26AB8302EF4 +S315E062AA30FFF24FEF002872FEC0813D40FFF26022D6 +S315E062AA40302EFFF2558F3F003F002F2EFFEA486E11 +S315E062AA50FFE23F032F024EBAFB4A4FEF00143D403E +S315E062AA60FFF2716EFFF0761CB680670E7820B880D2 +S315E062AA7067087C1ABC806600008A2F2EFFEA2F39AF +S315E062AA8000014A384EB900E034EC508F3400677208 +S315E062AA90558F3F3C0001761A3F3C00023F3C000185 +S315E062AAA04EB900E25FCC323900014BA4302EFFE8AA +S315E062AAB0306EFFE4508F90817140322EFFE22000CB +S315E062AAC06A025280E28041F00800716EFFF0B68061 +S315E062AAD0661C3602302EFFE6C7F900014BA0908372 +S315E062AAE0714020006A025280E280D08160023001C9 +S315E062AAF03F023F083F003F3C00034EB900E2674039 +S315E062AB00508F302EFFF26700025C7810C0844A40B4 +S315E062AB10677C558F3F3C000147F900E25FCC45F91F +S315E062AB2000E26C443F3C000142674E935C8F302EFC +S315E062AB30FFE83F3C00015C803F00302EFFE65C8030 +S315E062AB403F00302EFFE457803F00302EFFE2578011 +S315E062AB503F004E924FEF000A42673F3C0001426778 +S315E062AB604E935C8F302EFFE83F3C000258803F00F8 +S315E062AB70302EFFE658803F00302EFFE455803F00DE +S315E062AB80302EFFE255803F004E924FEF000C302EA2 +S315E062AB90FFF46F12558F3F00486EFFE24EB900E256 +S315E062ABA0683C508F600644803D40FFF4302EFFF2F1 +S315E062ABB07C20C0864A406700008C4A6EFFF46700DC +S315E062ABC000843F2EFFFE45F900E266743F3C0019C1 +S315E062ABD04EB900E275FC302EFFF42200D2813E814E +S315E062ABE0322EFFE6D2803F01322EFFE4D081322E52 +S315E062ABF0FFE8D0813F003F2EFFE242673F3C000123 +S315E062AC003F3C00014E92302EFFF4322EFFE84FEFCA +S315E062AC10000E3400C5FC0003D2823F012200D281DD +S315E062AC203F01322EFFE23F2EFFE4D081322EFFE675 +S315E062AC30D0813F0042673F3C00013F3C00014E92BB +S315E062AC404FEF0010302EFFF2A941C0814A40673AC9 +S315E062AC50558F3F3C000176083F3C00023F3C0001D5 +S315E062AC604EB900E25FCC3F3C0001302EFFE233C3D7 +S315E062AC7000014A583F2EFFE454803F003F3C000308 +S315E062AC804EB900E267404FEF0010302EFFF2A54466 +S315E062AC90C0844A40675E558F42673F3C0002426726 +S315E062ACA04EB900E25FCC326EFFE4346EFFE8306E9E +S315E062ACB0FFE245F1A8FF3F0A346EFFE645F0A8FFE2 +S315E062ACC03F0A45F900E25FA63F093F084E92326EBF +S315E062ACD0FFE4306EFFE2366EFFE63F0947F0B8FF0B +S315E062ACE03F0B366EFFE843F1B8FF3F093F084E92ED +S315E062ACF04FEF0018302EFFF27C08C0864A4067327A +S315E062AD0042673F3C00194EB900E275FC3EAEFFE891 +S315E062AD103F2EFFE63F2EFFE43F2EFFE23F3C00047C +S315E062AD203F3C00023F3C00024EB900E266744FEFE0 +S315E062AD300010302EFFF2080000006728558F3F2E84 +S315E062AD40FFE83F2EFFE63F2EFFE43F2EFFE23F3C69 +S315E062AD5000073F3C00013F3C00034EB900E26674E7 +S315E062AD604FEF00104CEE0C7CFFBC4E5E4E754E56BD +S315E062AD70FFEC48D7001C362E000C558F486EFFFE5E +S315E062AD80242E0008A1443F032F024EB900E2A3AA93 +S315E062AD904FEF000C7340B8816718558F486EFFFA23 +S315E062ADA0486EFFFC3F002F024EBAF65A4FEF001094 +S315E062ADB0600A42403D40FFFA3D40FFFC4EB900E288 +S315E062ADC07734558F3F2E000E3F2EFFFA3F2EFFFC63 +S315E062ADD0487AF8243F2EFFFE3F032F024EB900E287 +S315E062ADE0A2D84EB900E2775E4FEF00144CEE001C3B +S315E062ADF0FFEC4E5E4E754FEFFFF048D7041C262FF0 +S315E062AE0000143F3C000245F900E2A1D03F2F001A50 +S315E062AE102F034E92508F796F001A204034107142A0 +S315E062AE20B88066046018340042673F022F034E9290 +S315E062AE30508F204030107340B88166EA600274FF3A +S315E062AE4030024CD7041C4FEF00104E754E56FFC0D1 +S315E062AE5048D73CFC342E000C260E0683FFFFFFEE3D +S315E062AE60282E00083A2E000E366E0010386E00125A +S315E062AE704A42662C42674267426742672F034EB98F +S315E062AE8000E035242C0E0686FFFFFFF64FEF000C3E +S315E062AE90424776FF45F900E2A1D04BFAFF5A601EBF +S315E062AEA0558F486EFFFE3F022F044EB900E2A3AA19 +S315E062AEB05C8F2E833F002F044EBAF5E260C6558F53 +S315E062AEC02F063F022F044EBAF5AC302EFFF6322E35 +S315E062AED0FFEE3F3C0008D0813D40FFF6302EFFF8A2 +S315E062AEE0322EFFF03F02D0812F043D40FFF84E92B2 +S315E062AEF020403D50FFEA2F063F0C3F0B4EB900E281 +S315E062AF00FDE44FEF001C4A40673E302EFFEA0280C6 +S315E062AF10000000804A4066303F3C0004A1433F02A5 +S315E062AF202F044E92508F204030107340B681673ABC +S315E062AF304A456736360253853D6EFFF6FFEE3D6E55 +S315E062AF40FFF8FFF0340060304A4767207143A14161 +S315E062AF50B28067183F023F032F044E95508FA1419E +S315E062AF6034007140B28066106002360230034CEE05 +S315E062AF703CFCFFC04E5E4E757E016000FF424FEFC5 +S315E062AF80FFE8A14148D70C3C382F0020342F00223D +S315E062AF90262F001C7144B280674A7142B2806744D0 +S315E062AFA0426745F900E2A1D0A1453F022F034E92E6 +S315E062AFB0204030843F3C00043F042F034E924FEF23 +S315E062AFC00010264030137340BA8166083F3C0002A7 +S315E062AFD03F04600442673F002F034E92508F204049 +S315E062AFE0308236824CD70C3C4FEF00184E754E5687 +S315E062AFF0FFE048D70C7C382E000C242E00084A4429 +S315E062B00067000086558F486EFFFE3F0445F900E211 +S315E062B010A1D07B442F024EB900E2A3AA3F3C0002D4 +S315E062B02036003F002F024E924FEF001426407D53CA +S315E062B030BA8666223F3C00043F032F024E92508F4F +S315E062B04020407350BC81660872FF3D41FFFE30814D +S315E062B05036AEFFFE60323F043F032F024EBAFD98E2 +S315E062B060426738003F002F024E92204030AEFFFE2C +S315E062B0703F3C00043F032F024E924FEF0018204000 +S315E062B0807350BA81660230844CEE0C7CFFE04E5E11 +S315E062B0904E754E56FFDC48D71C7C362E000C242EAD +S315E062B0A000083C2E000E4A43670000B4558F486E96 +S315E062B0B0FFFE3F0345F900E2A1D02F024EB900E25E +S315E062B0C0A3AA4FEF000A3F033A002F024EBAFF20CF +S315E062B0D03F3C00023F052F024E92284038144267F9 +S315E062B0E03F032F024E924FEF001826404A4666060D +S315E062B0F036843883604A7146A141B28067067C0134 +S315E062B100284060223F3C00043F052F024E92508F5A +S315E062B110204038106016426752863F042F024E92F4 +S315E062B120508F204038107146B9C06EEA42673F04DC +S315E062B1302F024EB900E2A1D0508F20403690308384 +S315E062B14030137B457340BA8166143F3C00043F008E +S315E062B1502F024EB900E2A1D0508F204030834CEEF0 +S315E062B1601C7CFFDC4E5E4E754E56FFD848D7007C9F +S315E062B170362E000C558F486EFFFA2A0E0685FFFFC3 +S315E062B180FFEC2F05486EFFFE486EFFFC486EFFF847 +S315E062B190486EFFF43F03382E000E242E00082F027D +S315E062B1A04EB900E2A1E473EEFFF871C44FEF0020FE +S315E062B1B0B081670000F0A140B0AEFFF4670000E640 +S315E062B1C03F3C000A3F032F024EB900E2A1D0508F06 +S315E062B1D0204030844A6E0010670000CA558F486E80 +S315E062B1E0FFEE7C182F053F032F024EBAF2184EB9D6 +S315E062B1F000E27734302EFFFA4FEF001022004681EC +S315E062B2007341D2819381C2803D41FFFA3001736E10 +S315E062B210FFFCBC81661C558F3F043F2EFFF82F2E44 +S315E062B220FFF42F053F032F024EBAF3784FEF001477 +S315E062B23060527A1FBA816754322EFFF8B3840804EB +S315E062B240000067483200306EFFF2558FC3FCFFFEA6 +S315E062B25041F018003F08306EFFF0D2883F01322E8F +S315E062B260FFEED2803F01322EFFECD0813F003F3CC1 +S315E062B27000073F3C00013F3C00034EB900E26674C2 +S315E062B2804FEF00104EB900E2775E6018558F3F2EA1 +S315E062B290FFEE3F2EFFEC3F032F024EBAF35A4FEF1B +S315E062B2A0000C60E04CEE007CFFD84E5E4E754FEFD0 +S315E062B2B0FFF448D7040C242F0010362F00143F3CCD +S315E062B2C0000845F900E2A1D03F032F024E92206FBB +S315E062B2D0001E224030913F3C000A3F032F024E920D +S315E062B2E04CEF040C00104FEF001C204030104E75FE +S315E062B2F02F02302F0008A3427340B4816D1071FCB7 +S315E062B30000B84C010800068000015DF0600AC1FCED +S315E062B31000B8068000018060241F4E7542004FEF40 +S315E062B320FFD448D73C3C260F068300000023282F33 +S315E062B330003042424BFAFFBA7BEF003449F900E053 +S315E062B3400EC447F900E1C4D41F40002B60323F02CD +S315E062B3504E95548F24404A84671C48780008486AB0 +S315E062B360000C2F034E942F032F044E934FEF0014DD +S315E062B3704A40660A601871EA001CBA806710528217 +S315E062B3807342717900014F48B0816EC295CA200A54 +S315E062B3904CD73C3C4FEF002C4E752F02558F4878C8 +S315E062B3A000083F3C0020242F001006820000000CBB +S315E062B3B02F024EB900E00DE84FEF000A3F3C002E47 +S315E062B3C02F022F2F00144EB900E2FA524FEF000C13 +S315E062B3D0241F4E752F0A2F02343900014EC03F02F8 +S315E062B3E04EBAFF0E548F24403542001C206A000894 +S315E062B3F0528233C200014EC030BC0001256F001498 +S315E062B40000182F2F00102F004EBAFF902F2F001436 +S315E062B4102F0A4EB900E03384302A001E4FEF001047 +S315E062B42072FE241F24B900014F5423CA00014F540F +S315E062B430C0813540001E200A245F4E752F0A226FB6 +S315E062B440000C246F000820516004224820504A888C +S315E062B45066F84292228A245F4E7500004FEFFFDC67 +S315E062B460206F002E48D73C7C246F002A34280004E3 +S315E062B47047F900E00EC477424A6F0028670000CAC7 +S315E062B4802F032F280006716A0036280A0684000018 +S315E062B4900038D0AA00322F004E93716A00362644F5 +S315E062B4A04FEF000C7214D7C07153B280676E7C188E +S315E062B4B0BC806768123C0019B28067601C3C001A67 +S315E062B4C0BC80667860562044D1C071507214B280F6 +S315E062B4D06618736B000671680006B0816624486878 +S315E062B4E000082F054E94508F60147C18BC8066125B +S315E062B4F0487800102F0B2F084E954FEF000C424212 +S315E062B500602C30280004A1467340BC81670806803F +S315E062B5100000001060027010D680601242432A0B6F +S315E062B52050854BF900E00EC449F900E2F932714305 +S315E062B530736A0036B2806F044A42668A302A0036FF +S315E062B540D4803542003660302F032F2A00322F280E +S315E062B55000064E934FEF000C322A00369282354156 +S315E062B560003667147141206A00322F004870380055 +S315E062B5702F084E934FEF000C4CD73C7C4FEF0024E4 +S315E062B5804E754FEFFFEC48D71C0C342F0018206F36 +S315E062B590001E246F001A2650671E302B003673FC9D +S315E062B5A0008092802001736800047140B0815CC0C3 +S315E062B5B0A3414880C081600A4A6B00365EC048801B +S315E062B5C0448077427340B283670649EB002E60049B +S315E062B5D049EB002A4A406770558F2F082F0B3F02CE +S315E062B5E04EBAFE7A4FEF000A42672F0A4EB900E280 +S315E062B5F03298508F24544A8A6768302A0014A341ED +S315E062B60080813540001428AA0004206A00044A8832 +S315E062B6106706216A000800084A4257C0558F2F2AFA +S315E062B62000102F0B488044803F004EBAFE30424005 +S315E062B6302F4A00244CEF1C0C000C3F4000284FEFD1 +S315E062B640002060FFFFFF7C54254800102F4C001C51 +S315E062B6502F4A00184CD71C0C4FEF001460FFFFFF17 +S315E062B6607CF84CD71C0C4FEF00144E75302F000659 +S315E062B670322F00082079000110C8D080C3EF0004A1 +S315E062B68073C171C0D28871F00800D0814E752F0304 +S315E062B69072102F02342F000C362F000E71C2B28068 +S315E062B6A0650000D0303B0A0848C04EFB080200281D +S315E062B6B0002200AE003C0044007A008600D000AE74 +S315E062B6C0004C004C003C005E005E004400A000A618 +S315E062B6D04282600000ACE58B20790001109C206814 +S315E062B6E0000A77C3203038006060428272037022BB +S315E062B6F0607042827204700E60683F0375C23F3CBE +S315E062B70000024EBAFF8A588F720960103F0375C213 +S315E062B7103F3C00034EBAFF78588F720CB2826604E1 +S315E062B7205880602650806022558F3F3C00043F3C43 +S315E062B7300005600A558F3F3C00043F3C00083F032A +S315E062B7404EBAFF2A508F2040201042826028428201 +S315E062B7507205600472084282700460067202701CAE +S315E062B7604282558F3F003F013F034EBAFF00508F42 +S315E062B77060044282A140D082241F261F4E75740C5B +S315E062B7807201701860DC206F0004A1412010B28063 +S315E062B790670AD0B9000110C820804E7542804E75A6 +S315E062B7A04FEFFFF048D70C0C362F0016342F0014FB +S315E062B7B047FAFEDC45FAFFD0600E3F0253823F0352 +S315E062B7C04E932E804E92588F4A426CEE4CD70C0CBA +S315E062B7D04FEF00104E753F2F00063F2F00064EBA20 +S315E062B7E0FEAE2E804EBAFFA0588F4A8056C0488081 +S315E062B7F044804E75206F000423C80001109C41E826 +S315E062B800000E23D0000110C84E754FEFFFF448D703 +S315E062B810001C3F3C00103F2F00162F2F00144EB93C +S315E062B82000E2A1D091C8508F2240321177917548DB +S315E062B830A54430037381B8826712183C0003B8826C +S315E062B8406722183C0001B88266126028754178501A +S315E062B850B8826608323900014BC0601EC3F9000146 +S315E062B8604BA0601675417819B882660832390001D4 +S315E062B8704B8C6006C3F900014BA475400C82000054 +S315E062B88000806F0820030680FFFFFF00D28032C18E +S315E062B89052887148A941B28066904CD7001C4FEF3E +S315E062B8A0000C4E75206F000423C80001109C2F28FF +S315E062B8B0000E4EB900E302244A7900018E6457C055 +S315E062B8C0588F488044804E752F2F00044EBAFF266B +S315E062B8D03F2F000E3F2F000E4EBAFDB4206F0014CC +S315E062B8E0508FA1412080B28056C0488044804E7518 +S315E062B8F02F2F00044EBAFEFE3F2F000E3F2F000EA2 +S315E062B9004EBAFD8C508FA141B280670A204020AFCB +S315E062B910000C70014E7542404E754FEFFFEC48D712 +S315E062B9203C042F2F00184EBAFECC588F20790001C6 +S315E062B93010C849FAFD5A47FAFED23428001445FA8D +S315E062B940FE46538260363F023F3C00014E944257C8 +S315E062B9502F002A404E9371AD0007508F7214B28069 +S315E062B9606718123C0019B2806710123C001BB28065 +S315E062B9706708486D000C4E92588F53824A426CC6F5 +S315E062B9804CD73C044FEF00144E754FEFFFD448D7C7 +S315E062B9907CFC2A2F0030226F003441F90001101C32 +S315E062B9A0101910C066FA48790001101C4EB900E21F +S315E062B9B0C2CE588F4A4067000230558F426723C530 +S315E062B9C00001109C48790001101C4EB900E2FF7E2E +S315E062B9D0508F36004A7900018E6466144879000118 +S315E062B9E010A43F3C00243F004EB900E2FFB0508F06 +S315E062B9F04A7900018E64660001CE3439000110C6D0 +S315E062BA003F0242674EB900E301F2588F23C000015C +S315E062BA1010C84A7900018E64660001AC42A74267AB +S315E062BA203F034EB900E2FFEC2F39000110C83F0236 +S315E062BA303F034EB900E2FFB04FEF00104A790001D2 +S315E062BA408E646600018224790001109C558F267906 +S315E062BA50000110C82C3C00E2B78635420012254B45 +S315E062BA60000E3F3C00043F3C000942674EBAFBFED3 +S315E062BA70342B0016508F2540000A2C4045F900E22F +S315E062BA80A1D053823802E58A605071C22046487678 +S315E062BA9008004E903F3C000A264042672F004E92D5 +S315E062BAA04FEF000C721020407150B28066283F3C26 +S315E062BAB0000642672F0B4E92508F721420407150EF +S315E062BAC0B28066123F3C000A42672F0B4E92508F5D +S315E062BAD0204030BC0020538459824A446CAC2079C1 +S315E062BAE0000110C82E3C00E2B68E45FAFCEA2C3C18 +S315E062BAF000E1C4A434280018538260703F022047F4 +S315E062BB003F3C00024E90588F3F0228003F3C0008BF +S315E062BB104E92588F4A40670A2C442A444DEE0018EA +S315E062BB2060029DCE3F023F3C00094E92588F4A40EA +S315E062BB30670C2644284447EB001A588C600297CB80 +S315E062BB404A8E670C2F1520464E90588F52803C8065 +S315E062BB504A8B670C2F1420464E90588F528036805F +S315E062BB603F0253823F3C000A4E92588F4A426C8CA7 +S315E062BB702679000110C845FAFC28342B001A3F3CAE +S315E062BB80000B53823F024E923F3C000C3F024E92C4 +S315E062BB903F3C000D3F024E923F3C000E302B001CB4 +S315E062BBA053803F004E923F3C000F302B001E538085 +S315E062BBB03F004E923F3C0010302B002053803F0006 +S315E062BBC04E924FEF0018558F3F03343900018E6471 +S315E062BBD04EB900E2FF9E588F4A42660C2F054EBA76 +S315E062BBE0FD3A588F7001600242404CD77CFC4FEFC1 +S315E062BBF0002C4E7571EF000441F900E4FDDC2F3054 +S315E062BC000C004EB900E01176588F2079000160C4CD +S315E062BC1022405280121910C166F62039000160C4D2 +S315E062BC204E750000226F0008202F00042040121992 +S315E062BC3010C166FA4E755C002F0A2F02246F000C63 +S315E062BC402F39000189002F0A4EB900E012FC487ACA +S315E062BC50FFE634007140487208004EBAFFC84FEF03 +S315E062BC6000104A4256C0241F245F488044804E75C5 +S315E062BC702F2F00042F39000189004EB900E012FC33 +S315E062BC80508F725C538071402040D1F90001890087 +S315E062BC907110B280660242102F390001890C4EB9EA +S315E062BCA000E2FF343EBC00102F39000189004EB934 +S315E062BCB000E2FF48508F4E754FEFFFEC48D73C04E9 +S315E062BCC02079000189004A88670000824A10677C11 +S315E062BCD0240824425282101266F8487900E4FD3460 +S315E062BCE02F0A47FAFF404E934BF900E3016A49F99E +S315E062BCF000E2FF662F390001890C4EB900E2FF349B +S315E062BD004FEF000A3F3C00102F39000189004EB91F +S315E062BD1000E2FF48508F602820790001890C41E8F3 +S315E062BD20001E2F082F024E932F39000189004E958F +S315E062BD30487900E4FD342F0A4E934E944FEF001497 +S315E062BD404A4066D44212103C0001600242404CD73F +S315E062BD503C044FEF00144E75226F0008202F00045A +S315E062BD602040121910C166FA4E752F0A4878008093 +S315E062BD702F3900018ADC2F2F001045F900E00EC44E +S315E062BD804E92487800802F39000189082F2F0020D3 +S315E062BD904E924FEF0018245F4E754EB900E2FF24D3 +S315E062BDA0206F0004558F220006810000004110C119 +S315E062BDB0528010FC003A10FC005C2F083F004EB93E +S315E062BDC000E3001E508F4E754FEFFFE848D73C0CFC +S315E062BDD0266F0020222F001C20417620101052810F +S315E062BDE07500B68267F24A006700010E224824496E +S315E062BDF01019672C71007220B2806724743AB4809D +S315E062BE0066EC162AFFFF558F48833F034EB900E181 +S315E062BE10C53A588F41EA00010680FFFFFFC0600223 +S315E062BE20420016804A10670000D0240B284845EB92 +S315E062BE3000010682000000094BF900E1C53A600C98 +S315E062BE404880558F3F004E95588F14C0204C101C89 +S315E062BE50672E73007620B6816726163C002AB68185 +S315E062BE60671E163C002EB6816716B48A66D26010EB +S315E062BE70742AB4806604703F6002702014C0600465 +S315E062BE80220B50817110B28A64E6762AB680660227 +S315E062BE9052887110722EB280664C240B06820000C4 +S315E062BEA0000B49E800014BF900E1C53A600C4880B5 +S315E062BEB0558F3F004E95588F14C0204C101C672654 +S315E062BEC073007620B681671E163C002AB681671635 +S315E062BED0B48A64DA6010722AB2806604703F6002E5 +S315E062BEE0702014C0600447EB000B7110B7CA64E6B9 +S315E062BEF0742AB480660252884CD73C0C20084FEF15 +S315E062BF0000184E754E56FFCC48D70C1C382E0008EA +S315E062BF102479000160CC6720204A421874012279B4 +S315E062BF20000160D8600410C052821019670C730079 +S315E062BF30762EB68166F06002424271FC00807742FC +S315E062BF409082714047F238002F002F39000189084C +S315E062BF502F0B4EB900E00EC44FEF000C4A44671C4B +S315E062BF6010134880D48042007542158028014872D9 +S315E062BF7038012F0B4EBAFDE2508F607E558F4878BE +S315E062BF8000204267240E0682FFFFFFE047F900E0E9 +S315E062BF900DE82F024E934FEF000A4878000B3F3CC4 +S315E062BFA00020486EFFE14E934FEF000A4878000B9F +S315E062BFB03F3C0020486EFFF14E9310124FEF000CAB +S315E062BFC067384201488047FAFE0052807140158127 +S315E062BFD008002F02486A00014E93508F20404A10B3 +S315E062BFE0670A486EFFF02F004E93508F1012720D63 +S315E062BFF048805280714015810800487800802F0A97 +S315E062C0002F39000189084EB900E00EC44FEF000CEB +S315E062C0104CEE0C1CFFCC4E5E4E75716F00082F0025 +S315E062C0202F3900018AE42F2F000C4EB900E00EC4CE +S315E062C0304FEF000C4E75716F00082F002F2F00082E +S315E062C0402F3900018AE44EB900E00EC44FEF000CCE +S315E062C0504E754EB900E031304EB900E031744EB9FA +S315E062C06000E03146558F3F3C00014EB900E2764230 +S315E062C070487900014B904EB900E25E324EB900E279 +S315E062C08078944EB900E2762C2F3900014D204EB9F4 +S315E062C09000E2777E4FEF000C4E752F39000185681E +S315E062C0A04EB900E2777E4EB900E031304EB900E03B +S315E062C0B031944EB900E031464EB900E2775C4EB952 +S315E062C0C000E2753C42574EB900E27642588F4E75B1 +S315E062C0D04FEFFFF048D7003C2A2F0014362F0018A6 +S315E062C0E0382F001A4A7900018AE0673648790001FA +S315E062C0F04B902439000185704EB900E25E322079B8 +S315E062C10000018AE820853F44001E3F43001C2F421F +S315E062C11000184CEF003C00044FEF001460FFFFFF95 +S315E062C120EC504CD7003C4FEF00104E752F0A2F02B1 +S315E062C130242F000C426745FAFF983F3C00012F022C +S315E062C1404E9242673F3C00022F024E924FEF001042 +S315E062C150241F245F4E752F02242F00082F024EB94A +S315E062C16000E1C4A4588F2042D1C060025388B488EB +S315E062C17062107110725CB2806708123C003AB2805B +S315E062C18066EA20085280241F4E754E56FFCC48D789 +S315E062C1901C7C2F2E000C486EFFEC4EB900E012FCC0 +S315E062C1A02A0E2C0E508F0685FFFFFFF624790001DA +S315E062C1B04F4C0686FFFFFFED280053844200794428 +S315E062C1C0424349F900E00EC447F900E1C4D41D8058 +S315E062C1D048F6600650C242431002141A4A436704A4 +S315E062C1E04A0267F052807180A341B2806528730289 +S315E062C1F0712EFFECB081661E2F042F0A2F054E9436 +S315E062C2002F062F054E934FEF00144A40660A4A0204 +S315E062C210670AD5C4600876014A0266BC95CA206E92 +S315E062C2200008208A4CEE1C7CFFCC4E5E4E754E5664 +S315E062C230FFEC48D7041C558F4267342E0008246E03 +S315E062C240000A4EB900E2BBF42F00486EFFFC4EBA1C +S315E062C250FF3A4FEF000C4AAEFFFC67643202703B76 +S315E062C2606018770052882D48FFFC783BB8836708F0 +S315E062C270206EFFFC101066EA53814A4166F24A007C +S315E062C2806612603C7700783BB883671014C0120090 +S315E062C29052AEFFFC206EFFFC101066E87101725C24 +S315E062C2A0B280670A783AB880670414FC005C2F2E85 +S315E062C2B0000E2F0A4EBAFAA2508F20025280600216 +S315E062C2C042404CEE041CFFEC4E5E4E755C004E56F0 +S315E062C2D0FFA448D70C3C262E000845FAFA7C2F3993 +S315E062C2E00001890C4EB900E2FF342F032F390001B9 +S315E062C2F08AEC4E922F39000160CC4EBAFE5A4FEF6D +S315E062C3000010B0B9000160CC56C444844A04664267 +S315E062C3102F00486EFFBE4E922F3900018AEC4EBA6C +S315E062C320FA7A4FEF000C2079000160CC4A280003CC +S315E062C330670E487AFF982F084EB900E1C4B6508F6F +S315E062C340486EFFBE2F39000160CC4EB900E1C4B63B +S315E062C350508F42422A0E0685FFFFFFBE47F900E292 +S315E062C360FF4845FAFECA558F3F3C00052F3900016A +S315E062C3708AEC4E9371F900018E66508FA741B280C6 +S315E062C38067184A7900018E64672E123C0012B28009 +S315E062C3906708123C0002B280661E558F2F052F3960 +S315E062C3A000018AEC3F024E924FEF000C34007001BE +S315E062C3B033C000018E64600242424A04660C4A79E6 +S315E062C3C000018E6467044A42669C4A7900018E6483 +S315E062C3D0660E2F3900018AEC2F034EBAF97C508F34 +S315E062C3E04A7900018E6457C04CEE0C3CFFA44E5E67 +S315E062C3F0488044804E7500004FEFFFF0AB4148D76E +S315E062C4000C0C346F0014362F0016342F0018714A64 +S315E062C410B2806630528233C20001890433C30001BE +S315E062C4208AF0487AFFD22F3900018ADC45FAF92A86 +S315E062C4304E92487AFFC22F39000189084E924FEF39 +S315E062C44000106072487800802F2F001E2F3900019D +S315E062C4508ADC47F900E00EC44E93487800802F2FBD +S315E062C460002E2F39000189084E934FEF00184A4299 +S315E062C4706F48207900014DA853824A4356C130285D +S315E062C480001C43F9000189104881C1FC005C4481CB +S315E062C4902040D1FC00018910338A080042403141D4 +S315E062C4A000083142000631400002487900018AF410 +S315E062C4B04EBAF8E8588F7001601C558F42674EBAE3 +S315E062C4C0FA442F3900018ADC4EBAFE04508F4A40A4 +S315E062C4D056C0488044804CD70C0C4FEF00104E7526 +S315E062C4E0207900014DA82F032F023428001C262F45 +S315E062C4F00010C5FC005C200206800001891A2F004C +S315E062C5002F2F00104EBAF852508F0682000189280A +S315E062C5102F4200102F43000C241F261F6000F83ABA +S315E062C5202F032F02207900014DA8262F00102F2F0E +S315E062C530000C3428001CC5FC005C20020680000169 +S315E062C540891A2F004EBAF812508F068200018928A6 +S315E062C5502F4300102F42000C241F261F6000F7FABB +S315E062C5602F02206F0008737900018AE03028000804 +S315E062C5707540B282671433C000018AE06706241F01 +S315E062C5806000FAD0241F6000FB12241F4E75424001 +S315E062C5902F0A246F0008354000044A6A0002675099 +S315E062C5A0720135400006712A0019354100083541AD +S315E062C5B00004723AB2806618102A0018558F4880D5 +S315E062C5C00680FFFFFFBF3F004EB900E30056588F7B +S315E062C5D0486A00184EB900E3000A486A000A2F3931 +S315E062C5E0000160D84EBAF7724FEF000C245F4E75C9 +S315E062C5F0713900018AF5723AB280661A1039000121 +S315E062C6008AF4558F48800680FFFFFFBF3F004EB930 +S315E062C61000E30056588F203C00018AF42F40000860 +S315E062C620245F60FF000039E6454D55434F4E0000FA +S315E062C6304FEFFFD448D77CFC207900014DA8745CAB +S315E062C64045FAF7167768001C2F3900014DB848792C +S315E062C65000018AF44C0328004E92508F41F90001A2 +S315E062C660891A28020684000189104A302800662E5B +S315E062C670558F3F3C00014EB900E2BBF42F00200229 +S315E062C68006800001891A2F004E92068200018928EF +S315E062C6902F39000160D42F024E924FEF0014725C84 +S315E062C6A042424C0138002E3C00E2C58E4DFAFEB2A3 +S315E062C6B02443D5FC0001891049EA000247EA0006F4 +S315E062C6C0588A2C032A0306860001891A0685000128 +S315E062C6D089282F0420474E9038BC00012F044E96DD +S315E062C6E0508F4A7900018AE0670C4EB900E2E64073 +S315E062C6F04EB900E2762C3013A541558FB3804A409D +S315E062C70057C0488044803F004EBAF7FA42674267B4 +S315E062C7102F3900018ADC4EBAF9B84FEF000C207966 +S315E062C72000014DA87168001C41F900018E4042B0DB +S315E062C7300C004A42671A3F3C000142A73F0275423B +S315E062C7404EB900E24F2C508F701CB0826700022A0D +S315E062C7504BF900E1C4D4243C00E24F2C4A526764B0 +S315E062C760558F3F3C00014EB900E2BBF42F002F39F2 +S315E062C77000018ADC4E954FEF000C4A4066462F393F +S315E062C78000018ADC4EBAF9A62F39000160D84EBAAA +S315E062C790F9C62F002F3900014DA84EB900E2B39ACF +S315E062C7A04FEF000A4297487AFC4E42A73F3C0005AB +S315E062C7B04EB900E012D8223C00E0354C20402141DF +S315E062C7C000086032487AFE622F3900018ADC4E95B3 +S315E062C7D0508F4A406648558F42A7487AFC1A42A76C +S315E062C7E03F3C00054EB900E012D82040203C00E014 +S315E062C7F035BC214000084FEF000A42A8001C42A85F +S315E062C800001442A8000C42972F0842A73F3C00065C +S315E062C8104EB900E030BE4FEF00106000012C2F39B8 +S315E062C82000018ADC4EBAFAA8588F4A40670000E8EF +S315E062C8302F3900018ADC4EBAF8F42F39000160D84C +S315E062C8404EBAF9142F002F3900014DA84EB900E215 +S315E062C850B39A30134FEF0010664E558F2F390001B1 +S315E062C8604F4C2F39000189082F3900018ADC426773 +S315E062C8704EB900E030BE4FEF00104A5267644A5448 +S315E062C8806760558F3F3C00014BFAF4CE4EB900E249 +S315E062C890BBF42F002F064E952F39000160D42F0589 +S315E062C8A04E954FEF0014603A7140A341B280663212 +S315E062C8B0558F2F3900014F4C2F39000189082F39E6 +S315E062C8C000018ADC42674EB900E030BE42404FEF7B +S315E062C8D0001041F9000189103180380033C000014F +S315E062C8E08E644A7900018E6467084A526708741C4E +S315E062C8F06006424260027421223900014DA8B2B953 +S315E062C90000014DAE6648487900014DAC4EB900E291 +S315E062C910449C588F60384A7900018AE0672E4A5211 +S315E062C920672A3F3C0001204242A73F3C00244E90EA +S315E062C930508FA3417140B2806700FE22424041F9C6 +S315E062C940000189103180380042426002741B20790E +S315E062C95000014DA87168001C41F900018E4042B0A9 +S315E062C9600C0041F9000189104A703800670A4A7979 +S315E062C970000189046700FD5C4CD77CFC4FEF002C1C +S315E062C9804E754EBAFCAC4A7900018AE067046000F3 +S315E062C990F70A4E754145533A2025733A2025730AC4 +S315E062C9A000004E56FFF4227900014DA8220E2F03B5 +S315E062C9B02F0243E9000C538141EEFFF7600610C097 +S315E062C9C0B288670A101976207500B68266F0421060 +S315E062C9D02F2E0008486EFFF7487AFFBA4EB900E09C +S315E062C9E038144FEF000C242EFFEC262EFFF04E5E3D +S315E062C9F04E756170706C5F696E697428290061704A +S315E062CA00706C5F6578697428290065766E745F6D0F +S315E062CA106573616728290065766E745F6D756C74FF +S315E062CA2069282900426164204145532066756E6338 +S315E062CA3074696F6E2025640A00004E56FFA448D7DB +S315E062CA400C3C362E0008246E000A71430C8000000E +S315E062CA5000C866000AE0487800082F12486EFFF8C0 +S315E062CA6047F900E00EC44E934FEF000C302EFFFA0A +S315E062CA706718D08002800000FFFE2F002F2A000890 +S315E062CA80486EFFBE4E934FEF000C302EFFFE671CE2 +S315E062CA90E58802800000FFFC2F002F2A0010486E16 +S315E062CAA0FFEC4EB900E00EC44FEF000C342EFFF8F7 +S315E062CAB07279266A000420020680FFFFFFF671C0E3 +S315E062CAC0B28065000A08303B0A0848C04EFB08029D +S315E062CAD000F401580158019201A001B601CC01E4CB +S315E062CAE009FC01EE02000210022C023C0260027CAA +S315E062CAF002E409FC09FC09FC02F6034203520388DC +S315E062CB0003C60418042C045E09FC09FC0478048E4E +S315E062CB1004A204C204E004FC0512054209FC09FC15 +S315E062CB200566057A058E05A205B205C405F809FC17 +S315E062CB3009FC09FC09FC09FC09FC09FC09FC09FC85 +S315E062CB4009FC09FC09FC09FC061E0640066A069019 +S315E062CB5006A206B406D006EC071E078207A007AE59 +S315E062CB6007BC09FC09FC09FC09FC09FC09FC09FC97 +S315E062CB7007C607C609FC09FC09FC09FC09FC09FCB5 +S315E062CB8009FC09FC07DC07F00804081208200836ED +S315E062CB90084C085E087008A208AC08BC08C808E041 +S315E062CBA008FC09FC09FC09FC09FC09FC09100922DC +S315E062CBB009460958096A097A098A099A09FC09FC47 +S315E062CBC009AC09D87401487AFE2A4EBAFDD636BC5B +S315E062CBD00120207900014DA8548F37420002376860 +S315E062CBE0001C0004486B000642674EB900E27DFA1B +S315E062CBF041F900014BA23750001441F900018B4A1A +S315E062CC00203C00014F5C2740001642403750001A34 +S315E062CC1041F900018B483750001C33C0000110CC4B +S315E062CC204EB900E22FAC606E558F3F2EFFBE2A2EC4 +S315E062CC30FFEC382EFFC0754242A74EB900E2B31C44 +S315E062CC40508F720BB2826606123C0010600272402E +S315E062CC502F053F042F003F014EB900E22FEA600044 +S315E062CC6004F82F2EFFEC4EB900E2305C600007D686 +S315E062CC703F2EFFC03F2EFFBE2F2EFFEC4EB900E2E5 +S315E062CC803090600007F4558F3F2EFFBE2F2EFFECEB +S315E062CC904EB900E23174508F6000086041EEFFBE2B +S315E062CCA033D000018B4A41EEFFC033D000018B489E +S315E062CCB0600008424EB900E033EA60000838487A1C +S315E062CCC0FD3E4EBAFCDE4EB900E232446000066CCE +S315E062CCD0558F42A73F3C00014EB900E2401860B66C +S315E062CCE0558F486EFFE03F2EFFC23F2EFFC03F2EBC +S315E062CCF0FFBE4EB900E24044600006CA486EFFE0FD +S315E062CD00486EFFBE4EB900E2407E608A487AFCFC1D +S315E062CD104EBAFC902F2EFFEC3F3C00102F390001FB +S315E062CD204DA83F3C00104EB900E22FEA6000053A9A +S315E062CD3071EEFFC073EEFFBE48404240204048704D +S315E062CD4018004EB900E240A2600005F0487AFCC9DC +S315E062CD504EBAFC50322EFFBE588F7020C0814A40D8 +S315E062CD60671271EEFFDC75EEFFDA48404240204022 +S315E062CD70D1C2600291C8302EFFC2342EFFC4558FF5 +S315E062CD80486EFFE02F2EFFECE188808275C071EE7F +S315E062CD90FFC04840424084802F022F08486EFFD091 +S315E062CDA0486EFFC63F014EB900E240C44FEF001C39 +S315E062CDB0600007483F2EFFC03F2EFFBE4EB900E23D +S315E062CDC043746000068020390001882820790001DA +S315E062CDD04DA8B1C067044A8066163F28001C3F2E04 +S315E062CDE0FFBE2F2EFFEC4EB900E297CE6000068AB8 +S315E062CDF03228001C4A6EFFBE6706202EFFEC6002F8 +S315E062CE004280734141F90001888421801C00600000 +S315E062CE1006E4558F426742673F2EFFC03F3C0004FF +S315E062CE20606E322EFFBE558F4267740F71C1E4A801 +S315E062CE30028100007FFF3F004A6EFFC057C0488014 +S315E062CE4044803F003F3C00083F012F2EFFEC4EB985 +S315E062CE5000E292E660000412207900014DA8716852 +S315E062CE60001C41F90001888420700C00B1F90001D0 +S315E062CE70885866000680558F3F3C00014A6EFFC0C7 +S315E062CE8057C03F3C0001488044803F003F3C000180 +S315E062CE903F2EFFBE60B4202EFFEC242EFFF04A6EDA +S315E062CEA0FFEC67223F3C000C3F2EFFBE2F004EB9DF +S315E062CEB000E2A1D0508F204022502042101812C0CA +S315E062CEC066FA6000063071C041F900018B3C717010 +S315E062CED00A0041F90001886022700C0020421018B5 +S315E062CEE012C066FA6000060E558F2F2EFFEC3F2EBB +S315E062CEF0FFBE4EB900E299266000FD9C716EFFBEF0 +S315E062CF00A141B2806618207900014DA87168001CC3 +S315E062CF1041F900018B3C41F00A003D50FFBE558F5E +S315E062CF203F2EFFBE4EB900E299D46000040E4A6E0F +S315E062CF30FFC0670A41EEFFBE33D000018B4630394F +S315E062CF4000018B46600005B43F2EFFC03F2EFFBE58 +S315E062CF502F2EFFEC4EB900E2AF7E6000051C558FC6 +S315E062CF603F2EFFBE2F2EFFEC4EB900E2AFEE600021 +S315E062CF700508486EFFC24EB900E25E323F2EFFC040 +S315E062CF803F2EFFBE2F2EFFEC4EB900E2AD6E600083 +S315E062CF9001C83F2EFFC43F2EFFC23F2EFFC03F2E89 +S315E062CFA0FFBE2F2EFFEC4EB900E2AE4C60000416D7 +S315E062CFB0558F486EFFE2486EFFE03F2EFFBE2F2E92 +S315E062CFC0FFEC4EB900E2A4046000029E3F2EFFC071 +S315E062CFD03F2EFFBE2F2EFFEC4EB900E2B09260000C +S315E062CFE00498487900014BA84EB900E25E323EAE43 +S315E062CFF0FFC4486EFFE03F2EFFC03D6EFFC2FFE01A +S315E062D0003F2EFFBE2F2EFFEC4EB900E29E8A6000F5 +S315E062D01003FE486EFFC24EB900E25E323EAEFFCC20 +S315E062D0203F2EFFCA3F2EFFBE2F2EFFEC4EB900E227 +S315E062D030B16860000124558F3F2EFFBE2F2EFFECB4 +S315E062D0404EB900E24D5A6000FC4E558F486EFFC8FD +S315E062D0503F2EFFBE4EB900E24EEC6000FC3A558FC1 +S315E062D0602F2EFFEC3F2EFFBE4EB900E2458A6000EE +S315E062D070FC26558F3F2EFFBE4EB900E24FD66000CA +S315E062D08003C4486EFFE02F2EFFEC4EB900E29B022E +S315E062D090600003E6487900014BA84EB900E25E32D1 +S315E062D0A0548F486EFFE0486EFFE23F2EFFBE3D6E54 +S315E062D0B0FFC0FFE23D6EFFC2FFE02F2EFFEC4EB9EE +S315E062D0C000E24AE460000348487900014BA84EB9A1 +S315E062D0D000E25E32486EFFE03F2EFFC03F2EFFBEAB +S315E062D0E02F2EFFEC4EB900E24B9A60000322486EA7 +S315E062D0F0FFE2486EFFE03F2EFFC43F2EFFC23F2EA7 +S315E062D100FFC03F2EFFBE4EB900E270806000015A5A +S315E062D110486EFFE2486EFFE0486EFFC63F2EFFC4F0 +S315E062D1203F2EFFC23F2EFFC03F2EFFBE4EB900E24A +S315E062D13070A84FEF0014600003BC3F2EFFC83F2E7D +S315E062D140FFC63F2EFFC43F2EFFC23F2EFFC03F2EDB +S315E062D150FFBE4EB900E272244FEF000C6000039608 +S315E062D160486EFFC6486EFFBE4EB900E272C460000A +S315E062D1700308486EFFC6486EFFBE4EB900E27340D2 +S315E062D180600002F6558F3F2EFFC43F2EFFC23F2E50 +S315E062D190FFC02F2EFFEC4EB900E273C2600002269A +S315E062D1A0558F3F2EFFC23F2EFFC03F2EFFBE2F2E72 +S315E062D1B0FFEC4EB900E274546000020A41F90001E4 +S315E062D1C04BA03D50FFE041F900014BA43D50FFE228 +S315E062D1D041F900014B5C3D50FFE441F900014A3EF2 +S315E062D1E03D50FFE6303900014BF86000030E302E09 +S315E062D1F0FFBE73400C81000000FF6F260C810000C9 +S315E062D200010066064EB900E27734716EFFBE0C80AD +S315E062D21000000101660002DE4EB900E2775E600060 +S315E062D22002D40C81000000FF67185680714022002C +S315E062D230D281E9889081068000E4FE702040201069 +S315E062D2406004202EFFEC2F004EB900E2777E60008C +S315E062D25000EA486EFFE6486EFFE4486EFFE2486E1B +S315E062D260FFE04EB900E275104FEF001060000286F3 +S315E062D2702F2EFFEC4EB900E2BC38600001C82F2EBB +S315E062D280FFEC4EB900E2BC70600001BA4EB900E252 +S315E062D290BCB860000266486EFFE02F2EFFF02F2ECC +S315E062D2A0FFEC4EB900E253466000011A558F486EB4 +S315E062D2B0FFC03F2EFFBE4EB900E2E8106000F9D82B +S315E062D2C0558F486EFFC03F2EFFBE4EB900E2F410A6 +S315E062D2D0600001A6558F3F2EFFBE4EB900E2F3FC19 +S315E062D2E06058558F3F2EFFBE4EB900E2E886604A2F +S315E062D2F0486EFFE03F2EFFC03F2EFFBE4EB900E212 +S315E062D300E90060000174486EFFC23F2EFFC03F2E07 +S315E062D310FFBE4EB900E2EFB46000015E3F2EFFC091 +S315E062D3203F2EFFBE4EB900E2EA4060000118558F1B +S315E062D3303F2EFFBE4EB900E2EA60588F600001B64A +S315E062D340486EFFE6486EFFE4486EFFE2486EFFE035 +S315E062D3503F2EFFC83F2EFFC63F2EFFC43F2EFFC2C1 +S315E062D3603F2EFFC03F2EFFBE4EB900E2EABC600030 +S315E062D37001324EB900E2F4246000017A2F2EFFEC0E +S315E062D3802F0B4EB900E2B98A6000F90C2F0B4EB949 +S315E062D39000E2B8A4600000AE4879000110D03F2EEA +S315E062D3A0FFC03F2EFFBE2F0B4EB900E2B8C8601435 +S315E062D3B02F2EFFEC3F2EFFC03F2EFFBE2F0B4EB946 +S315E062D3C000E2B8F04FEF000C60000130558F3F2E5F +S315E062D3D0FFBE2F2EFFEC4EB900E2B80A6000009A5B +S315E062D3E02F2EFFF02F2EFFEC4EB900E2BD6A6000F1 +S315E062D3F00088558F2F2EFFF02F2EFFEC3F2EFFC2B7 +S315E062D4003F2EFFC03F2EFFBE4EB900E2C3F84FEF9C +S315E062D4100010600000E6558F3F2EFFBE2F2EFFEC18 +S315E062D4204EB900E2C01A6050558F3F2EFFBE2F2ED6 +S315E062D430FFEC4EB900E2C036603E2F2EFFEC4EB9ED +S315E062D44000E2C2CE588F600000B22F2EFFF02F2E80 +S315E062D450FFEC4EB900E2C18A601E2F2EFFF02F2E3E +S315E062D460FFEC4EB900E2C4E0600E2F2EFFF02F2EE5 +S315E062D470FFEC4EB900E2C520508F6078486EFFE857 +S315E062D480486EFFE6486EFFE4486EFFE2486EFFE0F4 +S315E062D490486EFFC23F2EFFC03F2EFFBE4EB900E28E +S315E062D4A06F504FEF001C604C558F3F2EFFC63F2EEC +S315E062D4B0FFC23F2EFFC0486EFFC83F2EFFBE3F2E23 +S315E062D4C0FFC44EB900E271726000FD9E558F3F0265 +S315E062D4D0487AF5524EB900E03814508F4A426718DE +S315E062D4E03F3C000142A73F3C00234EB900E24F2C8D +S315E062D4F0508F60047001600270FF3D40FFDE302EA7 +S315E062D500FFFC671CD08002800000FFFE2F00486EA1 +S315E062D510FFDE2F2A000C4EB900E00EC44FEF000C7E +S315E062D52071EEFFF87270B280660A206A001420B962 +S315E062D530000110D03039000110CCAF422200528196 +S315E062D540C08233C1000110CC4A40670A77430C833C +S315E062D550000000C966064EB900E033EA4CEE0C3CC8 +S315E062D560FFA442404E5E4E75302F0004206F0006E7 +S315E062D5703200C3FC0018D1C141E8FFEC601472FFCF +S315E062D58030BCFFFF53803141FFFE3141FFFC41E891 +S315E062D590FFE84A4066E84E752F032F02322F0010ED +S315E062D5A0302F0012A143226F000C7541B682673AB2 +S315E062D5B07540B68267342602E78BEB8A94833381C1 +S315E062D5C02800C3FC0018A14241F118007368000408 +S315E062D5D0B481660631400002600C2401E78AEB8979 +S315E062D5E092823380180031400004241F261F4E7554 +S315E062D5F0716F00082200ED88E7892040700191C1D1 +S315E062D600D1FC00014F5C216F00041934316F000ACE +S315E062D61019383140193242003140195C3140195AA9 +S315E062D62070FF314019603140195E4E7571EF00044A +S315E062D630A941B2806558323B0A0C716F000648C157 +S315E062D6404EFB1802003A000A001A002A000A22007B +S315E062D650E789EB889081068000018B904E75220007 +S315E062D660E789ED8890810680000168AE4E752200FA +S315E062D670E789ED8890810680000168A64E752200F2 +S315E062D680E789ED88908106800001689E4E7542804A +S315E062D6904E752F0A2F02342F000C246F00103F2F95 +S315E062D6A0000E3F0275424EBAFF842E8A2F004EB9B3 +S315E062D6B000E2FE52508FA940B0826618322A000418 +S315E062D6C06712302A0006670C5481548035410004A3 +S315E062D6D035400006241F245F4E752F02242F000C6E +S315E062D6E03F2F000A3F2F000A4EBAFF42588F2F4261 +S315E062D6F000082F40000C241F60FF000027582F020D +S315E062D700223C00018C78326F000A20417149240084 +S315E062D710E78AEB889082D1C070FF316F000C00100F +S315E062D720316F000E0012316F00100014316F00127B +S315E062D730001631400004314000023F6F0008000CE1 +S315E062D7403F49000E2F410008241F6000FE4C4FEF58 +S315E062D750FFEC48D7043C302F001A322F001C362FDC +S315E062D760001E382F0020306F0022326F0024342FE3 +S315E062D77000263A2F00284A6F001867183F450022B4 +S315E062D78041F900014B5C3F5000203F44001E3F439D +S315E062D790001C601645F900014A3E3F5200223F42B4 +S315E062D7A000203F49001E3F48001C3F41001A3F40AF +S315E062D7B000184CD7043C4FEF00146000FF424FEF75 +S315E062D7C0FFD4A14148D73C7C362F00303A2F003651 +S315E062D7D03C2F0038282F0032242F003A7143B28062 +S315E062D7E0670000884A8267122F02487900014BA8D7 +S315E062D7F04EB900E2F9B2508F6006243C00014BA8B4 +S315E062D80077434BF900E2F9B249F900E25E3247F951 +S315E062D81000E2AD6E2003E788ED8B96800683000119 +S315E062D82068BE2043260F245006830000002460363B +S315E062D8303F6A000400243F6A000600263F6A000849 +S315E062D84000283F6A000A002A2F032F024E95508F66 +S315E062D8504A4067102F034E943F063F052F044E93CE +S315E062D8604FEF000C24524A8A66C64CD73C7C4FEF97 +S315E062D870002C4E754E56FFF82F02242E0008486E95 +S315E062D880FFF82F024EB900E2FE52508F20390001B6 +S315E062D8908C60670C323900018B68307C0008600A64 +S315E062D8A0424191C8203900018C74558F2F023F089E +S315E062D8B0326EFFFC3F0154893D49FFFC326EFFFE4A +S315E062D8C02F00426754893D49FFFE4EBAFEF24FEFA2 +S315E062D8D00010242EFFF44E5E4E754FEFFFE4302FBC +S315E062D8E0002648D704FC3C2F0020362F00223E2F2C +S315E062D8F00024342F0028A1442A2F002A246F002E08 +S315E062D9007340B8816720558F3F3C03E83F033F0091 +S315E062D9104EB900E1C6303F003F024EB900E2FE8CEE +S315E062D9204FEF000C3400558F3F3C03E896823F0789 +S315E062D9303F034EB900E1C630508F4A46671E3F420A +S315E062D940002A41F900014B5C3F5000283F40002627 +S315E062D95042402F4500203F400024601C424141F98D +S315E062D96000014A3E3F50002A3F4200283F400024E1 +S315E062D9702F4A00203F4100264CD704FC4FEF001CA3 +S315E062D98060FFFFFD5BA24FEFFFC848D77CFC3A2FF2 +S315E062D9900040302F003E7409322F00423E2F003C99 +S315E062D9A0306F0046362F004A382F004CBB823F402C +S315E062D9B00032302F00443F410034322F00484A4261 +S315E062D9C057C23F400036488244824A426722303C30 +S315E062D9D00080387900014A3E7C0C3C7C000B347C4A +S315E062D9E0000A3A7C0100367C00403F40003060200D +S315E062D9F0303C0400387900014B5C7C113C7C0010C1 +S315E062DA00347C000F3A7C0800367C02003F400030EE +S315E062DA103F043F033F013F083F013F083F053F3C6C +S315E062DA2000063F024EBAFD284FEF00124A6F0032FF +S315E062DA306700012E200BC0874A4067463F390001E6 +S315E062DA404A3E3F3900014B5C426742673F0A3F0507 +S315E062DA504EBAFCAC4FEF000C4A4267123039000115 +S315E062DA604A3EA34192802640D881538B6016303974 +S315E062DA7000014B5CA34197CB92802440D681538AC6 +S315E062DA80600497CB95CA302F0030C0874A40673E24 +S315E062DA90323900014A3E303900014B5CA349A34862 +S315E062DAA03F0193C0D3C3360943F1A8FF91C1D1C404 +S315E062DAB0380841F0B8FF3F003F0B3F093F083F0A95 +S315E062DAC03F0E3F053F024EBAFC864FEF0012200D35 +S315E062DAD0CE804A476700008A3F043F033F0B3F0A16 +S315E062DAE03F0B3F0A3F063F053F024EBAFC624FEFED +S315E062DAF000124A4267023604558F487900018E3831 +S315E062DB00487900018DC03F0C3F2F00423F2F004213 +S315E062DB103F033F024EBAFDC44FEF00144A42670428 +S315E062DB20700D6002701273402401EB89E78A20412E +S315E062DB3072FF91C2D1FC00018C783141000431411F +S315E062DB4000023F4600404CD77CFC3F400042203C0E +S315E062DB5000018C782F40003C4FEF00386000FA3AC3 +S315E062DB604CD77CFC4FEF00384E75323900018B7C26 +S315E062DB702F02A1427141B48056C0241F4880C08101 +S315E062DB804E75518F2F032F024EBAFFE0240F50825B +S315E062DB902F023F0036003F3C00034EBAFAF671436D +S315E062DBA0508F2200E789ED889081068000016890B7 +S315E062DBB020402010670C2F022F004EB900E2366A31 +S315E062DBC0508F241F261F508F4E754FEFFFD4A14012 +S315E062DBD048D71CFC3C2F00307B46B085670003B615 +S315E062DBE0303900018B7C2205ED89BD8024414A40B3 +S315E062DBF057C32005E788488395C0D5FC00014F5C92 +S315E062DC00342A1938487900018C783F3C0013448302 +S315E062DC104EBAF95670025C8F720841EA193A23D01D +S315E062DC2000018C4441EA193E23D000018B4C33C09B +S315E062DC3000018C54302A1932C0814A4067267179D4 +S315E062DC4000018B7C2200E789ED88908106800001E5 +S315E062DC50688E204072083010C0814A4056C44884BB +S315E062DC604484600242442E0F0687000000242F0798 +S315E062DC703F063F3C00014EBAFA1A487900018C88A9 +S315E062DC802F074EB900E2FE5242403F4000363F4027 +S315E062DC900034AF40C0824FEF00104A406700011E79 +S315E062DCA03F3900014A3E3F2F002A426742673F3CC6 +S315E062DCB0000142674EBAFA48346F00344FEF000C07 +S315E062DCC0A540C0824A40673E4A4366044A44673694 +S315E062DCD03F3900014A3E3F3900014B5C3F2F002A43 +S315E062DCE03F2F002A3F3C00023F3C00014EBAFA1049 +S315E062DCF0322F0030303900014B5CD2803F41003038 +S315E062DD0095C04FEF000CA940C0824A4067384A434B +S315E062DD1066044A4467303F3900014A3E32390001BF +S315E062DD204B5C200A3F01908134403F2F002A322F1C +S315E062DD30002AD0813F003F3C00043F3C00014EBADE +S315E062DD40F9BE4FEF000C08020000674C3F39000154 +S315E062DD504A3E3F0A3F2F002A3F2F002A3F3C0003FC +S315E062DD603F3C00014EBAF9984FEF000C4A43660415 +S315E062DD704A44670442406002700833C000018CCABC +S315E062DD80303C11004A43670A103CFFA14A446702ED +S315E062DD90420033C000018C56307900014A3E326F50 +S315E062DDA00026302F002A424143F188FF5280908854 +S315E062DDB03F4100243F40002A3F4900267010C0825E +S315E062DDC04A40673C3F3900014A3E3F2F002A3F2FD7 +S315E062DDD0002A42673F3C000542674EBAF922326F3B +S315E062DDE00032307900014A3E302F003643F188FF37 +S315E062DDF0528090883F4000363F4900324FEF000C38 +S315E062DE003F2F002A2E022C020287000001E00286E2 +S315E062DE1000000E203F2F002A3F2F002A3F2F002AC4 +S315E062DE203F3C000642674EBAF8D6322F0034302FB6 +S315E062DE300036558155803F4100343F4000364FEF12 +S315E062DE40000C4A47670E307900014B5C928852813A +S315E062DE503F4100284A46670E323900014A3E9081C8 +S315E062DE6052803F40002A70013F4000263F40002436 +S315E062DE703F2F002A3F2F002A3F003F003F3C00072A +S315E062DE803F3C00064EBAF8784FEF000C4A47675CB3 +S315E062DE90302F0028322F0024386F002A2640548B18 +S315E062DEA0D28034413F41002420052205ED89E7888E +S315E062DEB0548C204191C0D1FC00014F5C32681960FC +S315E062DEC03228195C4A436604300460027001558F59 +S315E062DED03F0C3F0B42673F0A3F093F013F3C000967 +S315E062DEE03F003F024EBAFAA04FEF00144A4667542B +S315E062DEF0302F002A322F0026366F0028D280344136 +S315E062DF003F41002622055480E789ED8D548B2045FA +S315E062DF1091C1D1FC00014F5C3268195E3228195A10 +S315E062DF204A4367027801558F3F003F0B3F0A4267DB +S315E062DF303F093F013F3C000E3F043F024EBAFA48BA +S315E062DF404FEF00144A47674C4A4667483F3900013B +S315E062DF504A3E3F3900014B5C3F2F002A3F2F002AA1 +S315E062DF603F3C00083F3C00064EBAF7944FEF000C88 +S315E062DF70203C000111004A4367147020C480203CB3 +S315E062DF80060111004A426606203C0001110023C0E8 +S315E062DF9000018D444CD71CFC4FEF002C4E754E565B +S315E062DFA0FFF8200E51802F02342E00084A6E000ED2 +S315E062DFB067102F003F023F3C00044EBAF6D6508F00 +S315E062DFC0601E2F004EB900E25EB6302EFFFC588F1F +S315E062DFD054803D40FFFC302EFFFE54803D40FFFE04 +S315E062DFE0558F3F024EBAFBE4548F486EFFF83F2EE0 +S315E062DFF0000C3F2E000A2F3900018C643F024EBAB4 +S315E062E000F7BE4FEF0010242EFFF44E5E4E754FEFD3 +S315E062E010FFD8A54148D73CFC362F00323A2F002C78 +S315E062E0203C2F002E3E2F00307143B28067064A4392 +S315E062E030660000847945343900018B8247FAFF60D5 +S315E062E04045F900018B8022042004E789ED889081FE +S315E062E050068000014F5C2A4028404BED193449ECBA +S315E062E0601932604E7342B881673A2001E788ED89DA +S315E062E070204191C02015D1FC00014F5CB0A8193453 +S315E062E0806622302819327208C0814A406716301417 +S315E062E090C0814A40670E3F3C00013F073F063F02B0 +S315E062E0A04E93508F75422002E788EB8A9480343231 +S315E062E0B028004A426EAE3F4300323F4700303F4659 +S315E062E0C0002E3F45002C4CD73CFC4FEF0028600009 +S315E062E0D0FECE4FEFFFF4326F0012306F001048D77A +S315E062E0E0040CA743222F001475497148B682661A5A +S315E062E0F02400E78AED8823C100018C449082068081 +S315E062E100000168962440248160182400E78AED883D +S315E062E11023C100018B4C908206800001689A2440FC +S315E062E1202481760870013F4900123F4800103F4360 +S315E062E13000143F4000164CD7040C4FEF000C600011 +S315E062E140FECE206F0004202F000A424130AF000865 +S315E062E150227900014DA83169001C000231410004B8 +S315E062E160123C0010316F000E0006316F001000089D +S315E062E170316F0012000A316F0014000C316F001625 +S315E062E180000E3F41000A2F40000670402F48000C07 +S315E062E1903F40000460FFFFFF4E544FEFFFF448D765 +S315E062E1A01C00206F0010246F00144A88673434A87C +S315E062E1B00004356800060002356800080004356828 +S315E062E1C0000A0006265049F900E2F932600C2F0A8D +S315E062E1D0486B00044E942653508F4A8B66F070016A +S315E062E1E0600242404CD71C004FEF000C4E754FEF79 +S315E062E1F0FFD848D70C3C362F002C280F0684000047 +S315E062E200002047F900E2F9B271432200E789ED881E +S315E062E210244095C1D5FC00014F5C2A2A19342F04AB +S315E062E2202F2F00324EB900E2FE52240F0682000022 +S315E062E23000202F023F033F3C00034EBAF4562F0202 +S315E062E2402F044E934FEF00184A4067422F022F2A5F +S315E062E25019624EBAFF46508F4A4067322F042F0248 +S315E062E2604E93508F4A4067263F2F00263F2F002667 +S315E062E2703F2F00263F2F00263F032F053F3C001429 +S315E062E280487900018B6C4EBAFEBA4FEF00144CD758 +S315E062E2900C3C4FEF00284E752F0A2F02206F000CC0 +S315E062E2A0246F001075502F08487900014BA84EB9CB +S315E062E2B000E2F9B2508FA140B08266143012528009 +S315E062E2C03480302A000453803540000470016002D5 +S315E062E2D04240241F245F4E754E56FFD448D70C7CCD +S315E062E2E0342E0008486EFFF847FAF3A8246E000A57 +S315E062E2F03F023F3C00024E93302EFFFC486EFFF039 +S315E062E3003F0254803D40FFFC302EFFFE3F3C00045E +S315E062E31054803D40FFFE4E93302EFFF8322EFFFCD6 +S315E062E320777900014BC04FEF0010D2807341B28320 +S315E062E3306F0A736EFFF07140B0816E20302EFFFA85 +S315E062E340322EFFFE777900014B8CD2807341B28325 +S315E062E3506F1E736EFFF27140B0816F14486EFFF00C +S315E062E360486EFFF84EB900E2F9324252508F6002CF +S315E062E3703482280E0684FFFFFFF02F04260E5183B7 +S315E062E3802F0347FAFF144E932F032F043A004E935E +S315E062E39073524FEF00103C007142B081660000821A +S315E062E3A0487900014BA84EB900E25E323EAEFFFE0E +S315E062E3B03F2EFFFC3F2EFFF23F2EFFF03F2EFFFA8D +S315E062E3C03F2EFFF83F3C00034EB900E263C6734559 +S315E062E3D071464FEF0010B08167484A46670A302EB1 +S315E062E3E0FFF853803D40FFF8260E51834A45673277 +S315E062E3F0302EFFF0486EFFF053803D40FFF0700133 +S315E062E4003D40FFF44EB900E25E32426742674267E0 +S315E062E4103F3900018B7C4EBAFBF64FEF000C60028F +S315E062E42026042F2E000E2F034EB900E2FE52301262 +S315E062E430508FB1824A4257C04CEE0C7CFFD44E5E9E +S315E062E440488044804E754FEFFFD448D77CFC3C6FE2 +S315E062E4500038362F0030282F0032342F00363C2F1A +S315E062E460003A2F04487900014BA84EB900E2F9B2AE +S315E062E4704EB900E27734508F4A4366063639000178 +S315E062E4808B827143A141B280677C4A42660C343921 +S315E062E49000018B846004340060167F434BF900E22E +S315E062E4A05E3249FAFAFA47FAFD4645F900018B808F +S315E062E4B03A0E670C7342717900018B7CB081671A00 +S315E062E4C02F044E953F063F3C000842673F024E945A +S315E062E4D05C8F2E843F024E93508F7342B287671EE3 +S315E062E4E0300322416002300873402A01E78DEB89EE +S315E062E4F09285307218007348B3C166EA60023002F0 +S315E062E5007542B48766904CD77CFC4FEF002C60FF77 +S315E062E510FFFF924E2F02342F000841F900018884F2 +S315E062E52071424AB00C0066044240600230027340B7 +S315E062E53041F90001888422301C00B2B90001885892 +S315E062E54067103F003F3C00012F014EB900E297CED3 +S315E062E550508F714241F900018E404AB00C0066026A +S315E062E5604242754241F900018E4020302C00B0B93A +S315E062E57000018C60672241F900018C6841F02A0053 +S315E062E58023C000018C6033D000018B6848790001BA +S315E062E5904B904EBAF2E0588F241F4E754EBAF5CCC8 +S315E062E5A0558F71402200E789ED88908106800001EF +S315E062E5B06890224020513F28001C4EBAFF58588F7F +S315E062E5C04E754FEFFFEC716F001848D73C04266F2B +S315E062E5D0001A242F001E2200E789ED88246F0022AC +S315E062E5E04BF900E2F9B2284099C1D9FC000168C250 +S315E062E5F0603634AB0004356B00060002356B00080A +S315E062E6000004356B000A00062653288B2F0A2F0278 +S315E062E6104E95508F4A4067102F0A487900014BA801 +S315E062E6204E95508F4A40660E4A8B66C642403540EA +S315E062E6300006354000044CD73C044FEF00144E759B +S315E062E6404FEFFFF448D7040C243900014DA84EB9C8 +S315E062E65000E2F4A8558F487800C042674879000125 +S315E062E6608B804EB900E00DE85C8F2EBC00018B809A +S315E062E6703F3C00084EBAEEF2508F41F90001688ED7 +S315E062E68043F900018B86425032BC001942A8003041 +S315E062E69041E8003843E90018B1FC00016A4E66E6DB +S315E062E6A03F3C000C701445F900E4FD66426733C0F6 +S315E062E6B000018B862F39000185704EB900E2A1D048 +S315E062E6C05C8F204023D000018B8C487801C842677A +S315E062E6D0487900018C784EB900E00DE85C8F2EBC7B +S315E062E6E000018C783F3C00134EBAEE7E508F43F9C0 +S315E062E6F000E4FD4041F900018C7E3099215A000622 +S315E062E70041E80018B3FC00E4FD6666EE7020424321 +S315E062E71045FAEFC833C000018C824EB900E2F4DC00 +S315E062E720323900014B8C43F900014BC0204023C0D3 +S315E062E730000168BE303900014A3E3143000431517E +S315E062E7400008429026019680314000063143000A75 +S315E062E7504267263C00018B8042672F024EBAEE92F8 +S315E062E760487900014B9042673F3C00014E924879FE +S315E062E77000014B9042673F3C00024E9248790001AD +S315E062E7804BA8426742674E924FEF001C2EBC0001D7 +S315E062E7904BA842673F3C00034E9270FF4878001CEC +S315E062E7A0487900E4FDB241F900018C7848790001CC +S315E062E7B08C4423C800018C6445F900E00EC423C38F +S315E062E7C000018C74263C00018C4442B900018C60E5 +S315E062E7D033C000018B7C4E924878001C487900E495 +S315E062E7E0FDB2487900018B4C4E9223C300018CCC7A +S315E062E7F0700241F900018B4C4CEF040C002023C8F7 +S315E062E80000018CFC4FEF002C33C000018C544E7536 +S315E062E8102F0A2F0241F90001688E4242600252825B +S315E062E8203210714208010000670C720841E8003854 +S315E062E830B28066EA6046AF41B2806D403F2F000C1F +S315E062E84045FAEE983F022F3900014DA84EBAEDA285 +S315E062E850487900014BB83F023F3C00014E9248794D +S315E062E86000014BB83F023F3C00024E922F2F00263A +S315E062E8703F0242674E924FEF0020600274FF300221 +S315E062E880241F245F4E752F0A2F02342F000C558FFA +S315E062E89045FAEE483F022F3900018C744EB900E228 +S315E062E8A0F71E487900014B903F023F3C00014E92D1 +S315E062E8B0487900014B903F023F3C00024E92487914 +S315E062E8C000014BA83F0242674E924FEF001C2EBCFE +S315E062E8D000014BA83F0275423F3C00034E92508FC7 +S315E062E8E02002E788ED8A204291C04240241FD1FC93 +S315E062E8F000014F5C42A81934245F314019324E75EB +S315E062E9004E56FFEC720E48D7040C362E000A342EB1 +S315E062E9100008246E000C2003598071C0B280650045 +S315E062E9200116303B0A0848C04EFB080200F800FCBC +S315E062E930001E0024002A003C0078007E007E010A68 +S315E062E940010A0054006600D000DE7002600000DC5E +S315E062E9504240600000D675422002E788ED8A9480E4 +S315E062E9600682000168B6601075422002E788ED8A89 +S315E062E97094800682000168B820423490600000B854 +S315E062E98075422002E788ED8A94800682000168BAC1 +S315E062E99060E675422002E788ED8A9480068200018D +S315E062E9A068BC60D44EBAF1C46076486EFFF83F0246 +S315E062E9B077433F3C00034EBAECDA508F7142720BFA +S315E062E9C0B28366102200E789ED88908106800001B5 +S315E062E9D068BE600E2200E789ED88908106800001BC +S315E062E9E068C22040558F20102F0A486EFFF82F002C +S315E062E9F03F024EBAFBCE4FEF0010603A486A00041F +S315E062EA002F0A4EB900E2754C602A75422002E78809 +S315E062EA10ED8A948006820001688E20427150E6801B +S315E062EA20348060127003600270012F0A3F023F0079 +S315E062EA304EBAEC60508F4CEE040CFFEC4E5E4E75B7 +S315E062EA403F2F00063F2F00063F3C000242672F3908 +S315E062EA5000018C744EB900E2AE4C4FEF000C4E757D +S315E062EA602F02302F0008A3427340B4816D3C4A40C6 +S315E062EA706728487900014DAC4EB900E2441E588FD2 +S315E062EA804A406634558F2F3900018C403F3C008006 +S315E062EA904EB900E24018508F601E487900014DACD5 +S315E062EAA04EB900E2449C588F600E55803F400008A4 +S315E062EAB0241F60FFFFFF5F88241F4E752F032F021E +S315E062EAC0322F000EAF40C0814A40670830390001FC +S315E062EAD04A3E600270017410C4814A42670C307922 +S315E062EAE000014A3E41F008FF20082401028200004C +S315E062EAF001E04A426708343900014B5C6002740106 +S315E062EB00028100000E204A416708323900014A3E1E +S315E062EB10600272014A6F000C660C44804482448152 +S315E062EB20327CFFFF6004327C0001362F0010206FDA +S315E062EB300018D6893083206F001C362F0012D680EB +S315E062EB403083306F001491C9226F002091C23288FF +S315E062EB50306F001624089480206F00242002241F60 +S315E062EB6090813080261F4E754E56FFC848D71CFCF2 +S315E062EB70362E0008280E0684FFFFFFF6246E000A92 +S315E062EB8049FAEB5871432200E789ED88264097C13E +S315E062EB90D7FC00014F5C342B19322F043F033F3C14 +S315E062EBA000014EBAEAEE2F043F033F3C00024E9468 +S315E062EBB02F0A3F033F3C00014E943F033F3C000374 +S315E062EBC04EBAEA6A588F20404868000648680004F0 +S315E062EBD0486800022F003F2A00063F2A00043F2AC7 +S315E062EBE000023F123F2B19383F3C00014EBAFECE7F +S315E062EBF04FEF00323F3C000842674267487900E2E5 +S315E062EC00F71E3F3CFFFF42672F3900018C744EB915 +S315E062EC1000E2A2D83A3900018B7C717900018B84DB +S315E062EC204FEF001433C000018B7C7345B2806704FA +S315E062EC304EBAF96A4EBAEF4C42402F0A4879000161 +S315E062EC404BB83D40FFFE4EB900E2FE30508F4A407F +S315E062EC5066000152222EFFF6B29266000148282E25 +S315E062EC60FFFAB8AA0004660000BA7343717900013C +S315E062EC708B84B081660002BC7145B081670002B4E4 +S315E062EC802200E789ED88908106800001688E204047 +S315E062EC9072083010C0814A406726717900018B7C28 +S315E062ECA02200E789ED88908106800001688E204027 +S315E062ECB072083010C0814A4057C048804480600282 +S315E062ECC070017345A144B88167344A4067123F3C9C +S315E062ECD000023F3C000842673F054EBAF332508F6E +S315E062ECE071452200E789ED88908106800001688E91 +S315E062ECF02040A5413010C0814A4066000174A544B7 +S315E062ED00C4844A426600016A3F3C00013F3C000817 +S315E062ED1042673F3900018B7C4EBAF2F4508F600055 +S315E062ED200212736A0004716EFFFAB0816D2A736A29 +S315E062ED300006716EFFFCB0816D1E3F3C00023D43F2 +S315E062ED40FFFE78013F3C000842673F3900018B7C59 +S315E062ED504EBAF2BC508F60024244302A0004322E30 +S315E062ED60FFFA7D407541B4866E107D6A0006756E67 +S315E062ED70FFFCB4866E043403600242423F0147F907 +S315E062ED8000E2FE8C3F004E933F2EFFFC54803D40F6 +S315E062ED90FFFA3F2A00064E93508F54803D40FFFCB7 +S315E062EDA0600000D6342EFFFA6746302EFFFC6740DD +S315E062EDB03812326EFFF67D447349B2866D42306A2E +S315E062EDC00002322EFFF87F487D41BC876D323C2AD5 +S315E062EDD00004D4897542D8867944B4846E22342A92 +S315E062EDE00006D081714041F028007548B0826E100D +S315E062EDF0486EFFF62F0A4EB900E2FE52508F6070FF +S315E062EE002E2EFFFABEAA00046628303900018B7CFA +S315E062EE1073437540B282661A558F486EFFF6486E46 +S315E062EE20FFFE3F0042424EBAF4B04FEF000C3800AC +S315E062EE306004340342444A6A0004673A4A6A000656 +S315E062EE4067344A4267322C0E0686FFFFFFF62F06CC +S315E062EE502F0A4EB900E2F9322F062F0A4EB900E2C6 +S315E062EE60FE304FEF00104A4056C04880C4806008CA +S315E062EE7034034244600242427D45717900018B84EB +S315E062EE80B0866774303900018B7CA1477340BE81DE +S315E062EE9067662F0A3F0047FAE7FA3F3C00014E9366 +S315E062EEA0486EFFF62F0A4EB900E2F9324FEF0010D4 +S315E062EEB0BE8667447743B686673E260E0683FFFFC5 +S315E062EEC0FFEE2F033F3900018B7C3F3C00024E93FD +S315E062EED0487900014BB82F034EB900E2FE304FEF9E +S315E062EEE000104A4067123F3C00023F3C000842671E +S315E062EEF03F054EBAF11A508F302EFFFA54803D40EC +S315E062EF00FFFA302EFFFC54803D40FFFC4A42660A1F +S315E062EF10486EFFF64EBAE95E588F3F3C00013F0409 +S315E062EF203F2EFFFE486EFFF63F024EBAF51A4FEFEE +S315E062EF30000C4CEE1CFCFFC84E5E4E754FEFFFE0D8 +S315E062EF4048D7041C342F0024717900018B7C73420C +S315E062EF50B08167563F3CFFFF45FAE7383F022F39FB +S315E062EF6000018C744EB900E2B092260F068300006F +S315E062EF7000182F033F023F3C00024E92280F0684A0 +S315E062EF80000000282F043F023F3C00014E924FEF03 +S315E062EF9000122E843F024EBAFBD02F033F023F3C63 +S315E062EFA000024EBAE7364FEF00104CD7041C4FEF23 +S315E062EFB000204E754FEFFFC648EF7CFC0002362F0D +S315E062EFC0003E246F00423F3C000175434EBAFA921E +S315E062EFD0588F716F003E720FB28067067E08BE8000 +S315E062EFE066103C3900018E383A3900018E3C780E63 +S315E062EFF0601A7210B28067067E09BE80662E3C3960 +S315E062F00000018DC23A3900018DC678093F123F3C54 +S315E062F010FFFF4EB900E2FE8C34803F003F3C03E8DE +S315E062F0204EB900E2FE70508F348060064246424539 +S315E062F0304244323900018B7C714320407141B08891 +S315E062F04067282E022002E78FED889087068000010E +S315E062F050688E204070083E10CE804A4756C048808F +S315E062F06038402E0C448728476004387C0001302FF4 +S315E062F070003E7E11558071C0BE80650001F2303B74 +S315E062F0800A0848C04EFB08020024002C01E600484C +S315E062F09001E601E6015A0170005801E601E601E681 +S315E062F0A000EE0136014801E601860034367C000353 +S315E062F0B0600001C0367C0005600001B83F3CFFFF9E +S315E062F0C03F032F3900018C744EB900E2B092508F43 +S315E062F0D0558F2F0A3F034EBAFA90508F6000019027 +S315E062F0E071437341B280670001862F40002C2E3C4B +S315E062F0F000E2EF3C20022202E788ED894DF9000149 +S315E062F1008B803A7900018B82264197C0D7FC000159 +S315E062F110688E6050734DB2AF002C673A2001E78883 +S315E062F120ED89227900014DA8204191C0D1FC000110 +S315E062F1304F5CB3E81934661E302819327208C08112 +S315E062F1404A4067123013C0814A40670A558F3F0DC5 +S315E062F15020474E90588F714D2200E789EB88908167 +S315E062F1603A760800300D6EAC558F3F034EBAFDCE4F +S315E062F170588F600000FA22022002E789ED88207942 +S315E062F18000014DA890810680000168902240716876 +S315E062F190001C2212228841F900018E4021810C0076 +S315E062F1A023C100018C60322A000441F900018C68B7 +S315E062F1B033C100018B6831810A00600000B222022D +S315E062F1C02002E789ED8890810680000168BA6022B4 +S315E062F1D022022002E789ED8890810680000168BC00 +S315E062F1E0602622022002E789ED889081068000018E +S315E062F1F068B620403092607622022002E789ED8886 +S315E062F20090810680000168B82240329260603212D4 +S315E062F21070384C0208000801000067102040D1FCFB +S315E062F2200001688E301072088081600E2040D1FC49 +S315E062F2300001688E30107EF7C0873080A5403212BA +S315E062F240C280103C00384C0208004A4167102040F8 +S315E062F250D1FC0001688E301072108081600E204011 +S315E062F260D1FC0001688E30107EEFC0873080367C3C +S315E062F270FFFF4A44670000A8300C670000A2558F82 +S315E062F2803F034EBAE946588F7F6F003E720FB287F0 +S315E062F29067067008B087660E323900018E383039FB +S315E062F2A000018E3C601E7210B28767067009B087F5 +S315E062F2B0660E323900018DC2303900018DC66004B6 +S315E062F2C0424042417D467341B28666227B45714049 +S315E062F2D0B085661A20027208E788ED8A9480068213 +S315E062F2E00001688E20423010C0814A406730240FA8 +S315E062F2F00682000000302F023F0356843F3C000442 +S315E062F3004EBAE390548F2E823F3C00083F042F3979 +S315E062F31000018C643F034EBAE4A64FEF0010714BD6 +S315E062F320A147BE80670C2F123F0B3F034EBAEDA496 +S315E062F330508F558F42674EBAF7284CEF7CFC00043B +S315E062F3404FEF003C4E754E56FFE848D7003C282EFC +S315E062F350000A486EFFF8342E00082F043A2E000E9B +S315E062F3604EB900E2FE525C8F3F3C000177424EBAF4 +S315E062F370F6F0588F4A4567282003A941E788ED8B66 +S315E062F380204391C0D1FC0001688E301080813080CC +S315E062F3903F024267487900018B804EBAE1FC602801 +S315E062F3A0558F3F022F3900018C744EB900E2AFEE01 +S315E062F3B0200372FBE788ED8B204391C0D1FC00010C +S315E062F3C0688E3010C08130805C8F486EFFF83F02F5 +S315E062F3D04EBAF796508F4A45670E2F043F023F3C7E +S315E062F3E000024EBAE2F6508F558F42674EBAF67217 +S315E062F3F0588F4CEE003CFFE84E5E4E7542674879A8 +S315E062F40000014BB83F2F000A4EBAFF3C508F4E7553 +S315E062F4103F3C00012F2F00083F2F000A4EBAFF281B +S315E062F420508F4E754FEFFFF048D71C0445FAF6321F +S315E062F430600A558F3F3C00024E92588F4A7900012E +S315E062F44049F86EEE600A558F42674E92588F6004B5 +S315E062F45045FAF60E4A7900014DAC6EEA740145F959 +S315E062F460000168C649FAFF9647FAF41C3012A941D0 +S315E062F470C0814A406708558F3F024E94588F3012DA +S315E062F480080000006708558F3F024E93588F5282FC +S315E062F4907142720845EA0038B28066D04CD71C04E5 +S315E062F4A04FEF00104E7500002F032F02745091C883 +S315E062F4B042817148528853822600E58BE9889083BF +S315E062F4C02240D3FC000161DC228122094A4266E2E3 +S315E062F4D0241F23C900018E60261F4E752039000164 +S315E062F4E08E606708204023D000018E604E754FEF34 +S315E062F4F0FFF048D71C04266F001A286F0016342FD7 +S315E062F50000144EBAFFD82440248B356B0004000405 +S315E062F510356B000800083F2C00063F2B00064EB90B +S315E062F52000E2FE8C322C000A35400006302C0006E2 +S315E062F530D0813F00322B000A302B0006D0813F009B +S315E062F5404EB900E2FE70322A0006508F9081354055 +S315E062F550000A7142A341B28067286D064A42671289 +S315E062F5606074A541B2806724123C0003B28066668D +S315E062F5706040356B00060006302C0006322B000632 +S315E062F580604E302C0004322B0004601E302C0004E6 +S315E062F590322C0008306B0008D08135400004302BF5 +S315E062F5A00004D088306C0004908890813540000871 +S315E062F5B06024302C0006322C000A306B000AD081BF +S315E062F5C035400006302B0006D088306C0006908805 +S315E062F5D090813540000A200A4CD71C044FEF001098 +S315E062F5E04E754FEFFFCC48D77CFC266F003C286F08 +S315E062F5F00038246F0040382B0004342B0008302C8E +S315E062F6000004D4847B407542B4856F0000A2362C38 +S315E062F61000087944D6807743B8836C0000923C2B2D +S315E062F6200006302B000A322C0006D0867F417140FC +S315E062F630B0876F7A306C000A7D46D2887341BC81AE +S315E062F6406C6CB4835EC2B8855DC4B0815EC0BC8753 +S315E062F6505DC6A3454BEF002C4DFAFE944882488482 +S315E062F6604880C485C8854886C08544863F46002C66 +S315E062F6703F4200303F44002E42423F4000324A5D04 +S315E062F6806712558F2F0B2F0C3F024E964FEF000CF1 +S315E062F6902480244052827142A941B28066E024937A +S315E062F6A026B900018E6023CB00018E60600295CAA6 +S315E062F6B0200A4CD77CFC4FEF00344E754FEFFFF0DB +S315E062F6C0736F001848D71C0449FAFF182001E788CF +S315E062F6D0ED89928020010680000168BE20402641C5 +S315E062F6E02450D7FC0001688E60262F002F0A4879E5 +S315E062F6F000018E544E944FEF000C4A80670E32132F +S315E062F700A54220402450828236816004200A245237 +S315E062F7104A8A66D64CD71C044FEF00104E754FEFFF +S315E062F720FFF048D70C0C342F0018714226002200F5 +S315E062F730E78BED8992830681000168BE2041221043 +S315E062F740671820416002204922504A8966F820B94A +S315E062F75000018E6023C100018E602200E789ED8898 +S315E062F76047F900E2D6929081068000014F5C204024 +S315E062F770244041E8193272FD301045EA196242923C +S315E062F780C0813080487900018E583F023F3C0004D8 +S315E062F7904E93508F4A7900018E5C67444A79000144 +S315E062F7A08E5E673C558F3F3C000842B900018E543D +S315E062F7B042674267487AFF063F0242672F2F00247C +S315E062F7C04EB900E2A2D84EBAFD1420402600429815 +S315E062F7D02F083F023F3C00044E9324834FEF001C08 +S315E062F7E04CD70C0C4FEF00104E7500002F0A2F021B +S315E062F7F0302F000E4A6F000C670000AC4A790001B8 +S315E062F80010D4660000B842017140243C0001E84829 +S315E062F81013C1000110DC4C40280272012002E08034 +S315E062F82013C2000110DD740713C0000110DF70FE21 +S315E062F83013C1000110DE720813C2000110E07410F9 +S315E062F84013C0000110E1700B13C1000110E2420126 +S315E062F85013C2000110E3740C13C0000110E4302FF0 +S315E062F860001013C1000110E5720913C2000110E62F +S315E062F87050C2E78813C1000110E913C2000110EA21 +S315E062F88013C0000110E7700D13C0000110E84200DA +S315E062F89013C0000110EB2F3C000110DC3F3C00205E +S315E062F8A04E4E5C8F600E7340A142B481670633C0F0 +S315E062F8B0000110D43039000110D460027001241FB7 +S315E062F8C0245F4E752F032F02226F000C206F00100B +S315E062F8D0301175507340B2826F0230803029000277 +S315E062F8E0756800027340B2826F04314000023429C7 +S315E062F8F00004321130280004D28234107741D48079 +S315E062F9007542B4836F0492803081342900063229CD +S315E062F910000230280006D282342800027741D48081 +S315E062F9207542B4836F06928031410002241F261F1E +S315E062F9304E754FEFFFE848D71C1C246F0020266FF8 +S315E062F940001C49F900E2FE8C322A00043012D081B2 +S315E062F9503F00322B00043013D0813F004E94322AAE +S315E062F96000063800302A0002D0813F00322B0006C2 +S315E062F970302B0002D0813F004E943F1249F900E2FB +S315E062F980FE7036003F134E943F2A000234003F2B4E +S315E062F990000298824E943482354400049680354063 +S315E062F9A00002354300064CEF1C1C00104FEF0028A6 +S315E062F9B04E754FEFFFE848D71C1C266F001C246F7C +S315E062F9C0002049F900E2FE70322B00043013D08148 +S315E062F9D03F00322A00043012D0813F004E94322B2F +S315E062F9E000063800302B0002D0813F00322A000642 +S315E062F9F0302A0002D0813F004E943F1349F900E27B +S315E062FA00FE8C36003F124E943F2B000234003F2AB2 +S315E062FA1000024E9434824FEF001022049282354106 +S315E062FA2000042203928035400002354100067944A3 +S315E062FA307542B4846C1077437140A341B0835DC074 +S315E062FA404880C081600242404CD71C1C4FEF0018D0 +S315E062FA504E752F032F02202F0010206F000C752F9A +S315E062FA60001560062240528012C1121867067701BD +S315E062FA70B48366F0241F261F4E754FEFFFF448D716 +S315E062FA80040C202F00102440206F0014600210C185 +S315E062FA901212224A528A672E7501762EB68266EE77 +S315E062FAA05080908932002448600414FC0020538020 +S315E062FAB07540A143B68266F271C15289D1C06002D5 +S315E062FAC010C0101966FA42104CD7040C4FEF000CC6 +S315E062FAD04E754FEFFFF4222F0010224148D7040CF7 +S315E062FAE0206F0014600C750052897620B682670238 +S315E062FAF010C0101167162449AF4295C1B48A6CE60C +S315E062FB0010FC002E600210C0101966FA42104CD743 +S315E062FB10040C4FEF000C4E754FEFFFF048D70C0C1C +S315E062FB20246F001E266F0022242F001A3F3C000C31 +S315E062FB303F2F001A2F2F00184EB900E2A1D02240C3 +S315E062FB402051249036A800182F024EB900E1C4A4D1 +S315E062FB50321353813F013F004EB900E2FE707740B7 +S315E062FB602F032F022F124EB900E00EC4420020523C +S315E062FB70118038004CEF0C0C001C4FEF002C4E75D8 +S315E062FB804E56FFF8558F486EFFFE486EFFFA2F2EEF +S315E062FB90000E3F2E000C2F2E00084EBAFF7C4FEF70 +S315E062FBA000144E5E4E753F3C000C3F2F000A2F2F2D +S315E062FBB000084EB900E2A1D022402051226F001225 +S315E062FBC0508F2050101812C066FA4E7560D82F0218 +S315E062FBD03F3C000A3F2F000E2F2F000C4EB900E289 +S315E062FBE0A1D0508F342F0010322F000EC2824A41CC +S315E062FBF06706322F00126004322F001420403081F3 +S315E062FC00241F4E754FEFFFEC48D7043C2A2F0018AD +S315E062FC10382F001C4242776F001E45F900E2A1D000 +S315E062FC20601C3F3C000A2002D0843F002F054E92C2 +S315E062FC30508F2040301008000000660A52827142FE +S315E062FC40B6806EDE74FF30024CD7043C4FEF001490 +S315E062FC504E754FEFFFF448D7001C262F0010382F61 +S315E062FC6000143F3C00023F042F034EBAFF98508FC8 +S315E062FC70A14134007140B280671E3F3C000AD882DF +S315E062FC804A4257C23F04488244822F034EB900E299 +S315E062FC90A1D0508F2040425030024CD7001C4FEF2B +S315E062FCA0000C4E754FEFFFE448D71C3C246F0020F2 +S315E062FCB0242F002449F900E03530600000A6558F14 +S315E062FCC03F3C002C2F0A4E94508F26404A1367021F +S315E062FCD0528B7112722AB280661E548A7112B28097 +S315E062FCE06700008A558F3F3C002E2F024E94508F5C +S315E062FCF020404A106732602E2002602C783FB8833B +S315E062FD00660C7301528A7A2EBA81661A601A790192 +S315E062FD107A2ABA83660A722EB284660A528A6008C0 +S315E062FD20B6846616528A528020401210670C16120A +S315E062FD3067087703782CB88366C2161A7A2A710343 +S315E062FD40BA8067F6783FB88067F01A3C002EBA80D0 +S315E062FD5067E84A036706762CB68066044A01670C52 +S315E062FD60244B4A126600FF584240600270014CD74B +S315E062FD701C3C4FEF001C4E754FEFFFE848D7047C02 +S315E062FD80246F001C142F00232F0A4EB900E1C4A48D +S315E062FD90588F7B6F002077402200538141F2380012 +S315E062FDA060065388115000012801224153893209C5 +S315E062FDB054897D495284BC856EE8734452807140B1 +S315E062FDC015821800736F0024B0816C0842001580BA +S315E062FDD0380160064200158018FF4CD7047C4FEF6D +S315E062FDE000184E752F032F02206F0010756F000CFE +S315E062FDF032507149B0826E3032280002716F000E65 +S315E062FE007741B6806E223628000443F1380077499E +S315E062FE10B6826F1430680006D2887341B2805EC0E3 +S315E062FE20A3414880C08160024240241F261F4E756E +S315E062FE30206F0008226F00042010B09166102068DF +S315E062FE400004B1E9000457C0488044804E754240E0 +S315E062FE504E75226F0004206F00083091316900020E +S315E062FE6000023169000400043169000600064E753D +S315E062FE702F032F02322F000C302F000E7541774090 +S315E062FE80B4836C023001241F261F4E752F032F02A6 +S315E062FE90322F000C302F000E75417740B4836F022B +S315E062FEA03001241F261F4E75226F0008202F0004A2 +S315E062FEB02040121910C166FA4E7500002F0A42A759 +S315E062FEC0487AFFF82F2F001245F900E0305C3F3C9C +S315E062FED000033F3C004B4E92226F001E4FEF001034 +S315E062FEE0204022804A7900018E6466322028000C26 +S315E062FEF0D0A80014068000000100D0A8001C2F00E4 +S315E062FF002F0842673F3C004A4E924A7900018E646E +S315E062FF1056C04FEF000CA34148808081600270FFBB +S315E062FF20245F4E75558F3F3C00194EB900E0305C58 +S315E062FF30588F4E75558F2F2F00063F3C001A4EB9EB +S315E062FF4000E0305C508F4E753F2F00082F2F000681 +S315E062FF503F3C004E4EB900E0305C508F4A8057C05D +S315E062FF60488044804E75558F3F3C004F4EB900E065 +S315E062FF70305C588F4A8057C0488044804E753F2F28 +S315E062FF8000082F2F00063F3C003D4EB900E0305C92 +S315E062FF90508F4A7900018E64670242404E753F2F68 +S315E062FFA000043F3C003E4EB900E0305C588F4E752F +S315E062FFB02F2F000871EF000A2F003F2F000C3F3C05 +S315E062FFC0003F4EB900E0305C4FEF000C4E752F2FCC +S315E062FFD0000871EF000A2F003F2F000C3F3C004003 +S315E062FFE04EB900E0305C4FEF000C4E75558F3F2FF7 +S315E062FFF000083F2F00082F2F000E3F3C00424EB90B +S315E063000000E0305C4FEF000C4E75558F2F2F0006E6 +S315E06300103F3C003B4EB900E0305C508F4E752F0A93 +S315E06300202F02246F000E3F2F000C2F0A3F3C004740 +S315E06300304EB900E0305C508F725C34007112B2806E +S315E0630040660C486A00012F0A4EBAFE5E508F300294 +S315E0630050241F245F4E753F2F00043F3C000E4EB9CC +S315E063006000E0305C588F4E753F2F00082F2F000657 +S315E06300703F3C003C4EB900E0305C508F4E75558F87 +S315E06300802F2F00063F3C00394EB900E0305C4A79D9 +S315E063009000018E6457C0508F488044804E75558FFB +S315E06300A03F2F000C3F2F000C2F2F000A3F3C0043ED +S315E06300B04EB900E0305C4FEF000C4E754E56FFFCD8 +S315E06300C0558F3F3C00013D6E000AFFFC3D6E000C20 +S315E06300D0FFFE3F2E0008486EFFFC3F3C00574EB9DB +S315E06300E000E0305C4FEF000C4E5E4E75203A5C2AC2 +S315E06300F02E2A00004E56FFB4200E518048D70C0CD2 +S315E0630100162E000941EEFFC64218B08866FA558F8F +S315E0630110486EFFC63F3C001A47F900E0305C068351 +S315E063012000000040240E518245FAFD7E4E93487AE4 +S315E0630130FFBC2F024E923F3C00081D43FFF82F029F +S315E06301403F3C004E4E934FEF00184A806610486E70 +S315E0630150FFE42F2E000A4E92508F700160024240F8 +S315E06301604CEE0C0CFFB44E5E4E75558F2F2F00068A +S315E06301703F3C00414EB900E0305C508F4E754E56C1 +S315E0630180FFF03F2E0008486EFFF03F3C00364EB965 +S315E063019000E0305C508F202EFFF8222EFFF441EE14 +S315E06301A0FFFC4C100800206E000A4C00180020810A +S315E06301B0222EFFF0206E000E4E5E4C00180070019A +S315E06301C020814E752F2F00082F2F000842673F3C92 +S315E06301D000564EB900E0305C4FEF000C4E75558F1C +S315E06301E02F2F00063F3C003A4EB900E0305C508F5B +S315E06301F04E75558F2F2F00063F3C00484EB900E001 +S315E0630200305C508F4A806608720133C100018E64A8 +S315E06302104E75558FA1673F3C00484EB900E0305CB0 +S315E0630220508F4E75558F2F2F00063F3C00494EB9D0 +S315E063023000E0305C508F4E752F0A48780378487A31 +S315E063024009C448790001908845F900E00EC44E92EE +S315E06302504878016C487A0D82487900018ED84E92CF +S315E06302604FEF00163F3C00254879000190884EB970 +S315E063027000E3B0145C8F3F3C000D487900018ED8F3 +S315E06302804EB900E3B086508F207900018ED810BC5A +S315E0630290005F207900018EF410BC005F20790001D5 +S315E06302A08F104210245F4E752F0A2F02424245F9A2 +S315E06302B000E2B80A558F3F0252824879000190887E +S315E06302C04E927142508F7225B28066E8241F245F96 +S315E06302D04E75504154483D00454D554445534B009A +S315E06302E02E415050002A2E41434300302E2E3900D2 +S315E06302F0612E2E7A412E2E5A2000612E2E7A412EC1 +S315E06303002E5A302E2E392000612E2E7A412E2E5A09 +S315E0630310302E2E392024232640212528292D7B7D46 +S315E063032027605F5E7E5C3F2A3A2E2C00612E2E7A32 +S315E0630330412E2E5A302E2E3920242326402125287D +S315E0630340292D7B7D27605F5E7E5C3A00612E2E7A87 +S315E0630350412E2E5A302E2E3920242326402125285D +S315E0630360292D7B7D27605F5E7E3A3F2A00612E2ED4 +S315E06303707A412E2E5A302E2E3920242326402125EB +S315E063038028292D7B7D27605F5E7E00496E736572EB +S315E06303907420796F75722047454D2053544152540A +S315E06303A05550206469736B00433A5C47454D415051 +S315E06303B050535C47454D5359533B433A5C47454D30 +S315E06303C0415050533B433A5C00433A5C434C49509B +S315E06303D04252440047454D2E5253432052656C6565 +S315E06303E061736520332E3000415641494C4E554C7E +S315E06303F000534352454E4D475200433A5C454D5593 +S315E06304004445534B2E494E46005B325D5B596F75EF +S315E06304102063616E6E6F7420777269746520746FA2 +S315E063042020746865206469736B20696E2064726901 +S315E063043076657C25633A20626563617573652069D9 +S315E06304407420697320706879736963616C6C792071 +S315E063045077726974652D7C70726F746563746564B5 +S315E06304602E20204265666F726520796F752052652E +S315E06304707472792C2072656D6F76657C746865201D +S315E063048077726974652D70726F74656374207461D5 +S315E063049062206F72206E6F746368207468657C6433 +S315E06304A069736B2E5D5B43616E63656C7C526574E9 +S315E06304B072795D005B325D5B4472697665202563C4 +S315E06304C03A206973206E6F7420726573706F6E6421 +S315E06304D0696E672E2020596F75206D7573747C7510 +S315E06304E0736520746865207269676874206B696EEA +S315E06304F064206F66206469736B2C20696E73657222 +S315E0630500742069747C636F72726563746C792C2092 +S315E0630510616E6420636C6F73652074686520646FD5 +S315E06305206F722E20204966207468657C70726F62F4 +S315E06305306C656D20697320776974682061206861F2 +S315E06305407264206469736B2C20636865636B2074E3 +S315E063055068657C6469736B277320636F6E6E65632E +S315E063056074696F6E732E5D5B43616E63656C7C521B +S315E0630570657472795D005B325D5B44617461206FC3 +S315E06305806E20746865206469736B20696E2064729B +S315E06305906976652025633A206D61792062657C64BE +S315E06305A0616D616765642E2020596F75206D757383 +S315E06305B07420757365207468652072696768742052 +S315E06305C06B696E647C6F6620666C6F7070792064AD +S315E06305D069736B3B20796F75206D75737420636FF8 +S315E06305E06E6E65637420796F75727C686172642080 +S315E06305F06469736B2070726F7065726C792E5D5B84 +S315E063060043616E63656C7C52657472795D005B32DF +S315E06306105D5B54686973206170706C69636174696A +S315E06306206F6E2063616E6E6F7420726561642064C1 +S315E0630630617461206F6E207468657C6469736B2096 +S315E0630640696E2064726976652025633A2E202054AC +S315E06306506865206469736B206D7573742062657C6D +S315E0630660666F726D61747465642C20746865726517 +S315E0630670206D75737420626520706F776572207480 +S315E06306806F207468657C6469736B206472697665F0 +S315E06306902C20616E6420746865206469736B2064E2 +S315E06306A072697665206D7573742062657C706879AE +S315E06306B0736963616C6C7920636F6E6E6563746591 +S315E06306C06420746F20796F757220636F6D707574D3 +S315E06306D065722E5D5B43616E63656C7C52657472B5 +S315E06306E0795D005B325D5B596F7572206F7574700F +S315E06306F0757420646576696365206973206E6F74CB +S315E063070020726563656976696E677C646174612E80 +S315E0630710204265666F726520796F752052657472E3 +S315E0630720792C206D616B65207375726520746865DD +S315E06307307C6465766963652068617320706F77654D +S315E0630740722C206973206F6E2D6C696E652C206147 +S315E06307506E642069737C6C6F616465642077697429 +S315E063076068207061706572206F722066696C6D2EA9 +S315E06307705D5B43616E63656C7C52657472795D0043 +S315E06307805B335D5B416E206572726F722068617385 +S315E0630790206F636375727265642077697468207429 +S315E06307A068657C477261706869637320456E7669D4 +S315E06307B0726F6E6D656E74204D616E6167657220F2 +S315E06307C02847454D292E7C506C6561736520636FC0 +S315E06307D06E746163742074686520456D75544F5318 +S315E06307E020446576656C6F706D656E747C54656187 +S315E06307F06D20616E64207375626D69742061206239 +S315E06308007567207265706F72742E5D5B43616E63AC +S315E0630810656C5D005B325D5B546869732061707023 +S315E06308206C69636174696F6E2063616E6E6F742069 +S315E063083066696E64207468657C666F6C6465722055 +S315E06308406F7220646F63756D656E7420796F752062 +S315E063085061726520747279696E6720746F7C6F70FC +S315E0630860656E2E20436865636B20746865206E61F0 +S315E06308706D6520796F75206861766520656E746550 +S315E06308807265642E5D5B20204F4B20205D005B33F9 +S315E06308905D5B596F757220636F6D707574657220F9 +S315E06308A0646F65736E2774206861766520656E6F25 +S315E06308B07567687C6D656D6F727920746F2072758C +S315E06308C06E207468652047454D204465736B746F8D +S315E06308D0702E5D5B20536F727279205D005B315DD4 +S315E06308E05B54686973206170706C69636174696F86 +S315E06308F06E20646F65736E27742068617665207217 +S315E06309006F6F6D20746F7C6F70656E20616E6F7450 +S315E063091068657220646F63756D656E742E2020540E +S315E06309206F206D616B6520726F6F6D2C7C636C6F8E +S315E0630930736520616E7920646F63756D656E74733C +S315E063094020796F7520646F6E2774206E6565642EFB +S315E06309505D5B20204F4B20205D005B315D5B416E2C +S315E0630960206974656D20776974682074686973209B +S315E06309706E616D6520616C72656164792065786925 +S315E06309807374737C696E2074686520666F6C6465E6 +S315E0630990722C206F7220746865206974656D2069B6 +S315E06309A0732073657420746F7C526561642D4F6E3A +S315E06309B06C79207374617475732E20557365207436 +S315E06309C068652022496E666F2F52656E616D65229A +S315E06309D07C636F6D6D616E6420746F206368616EB6 +S315E06309E0676520746865206974656D277320737421 +S315E06309F0617475732E5D5B20204F4B20205D005B39 +S315E0630A00315D5B546865206469736B2064726976F3 +S315E0630A106520796F75206861766520696E646963C0 +S315E0630A206174656420646F65737C6E6F742065784A +S315E0630A306973742E20436865636B2074686520640C +S315E0630A4072697665206964656E7469666965727CE8 +S315E0630A506C657474657220796F7520656E74657202 +S315E0630A6065642E5D5B43616E63656C5D005B315D02 +S315E0630A705B596F752063616E6E6F742064656C6538 +S315E0630A8074652074686520666F6C64657220696E50 +S315E0630A907C776869636820796F7520617265206326 +S315E0630AA0757272656E746C7920776F726B696E6757 +S315E0630AB02E5D5B20204F4B20205D005B315D5B59F3 +S315E0630AC06F757220636F6D707574657220646F65A0 +S315E0630AD073206E6F74206861766520656E6F7567E7 +S315E0630AE0687C6D656D6F727920746F2072756E20A8 +S315E0630AF0746865206170706C69636174696F6E2098 +S315E0630B00796F757C686176652073656C656374651A +S315E0630B10642E5D5B20204F4B20205D005B335D5B85 +S315E0630B20444F53206572726F72202325642E5D5B9A +S315E0630B3043616E63656C5D005B335D5B426164205C +S315E0630B4046756E6374696F6E20235D5B43616E63A6 +S315E0630B50656C5D005B335D5B546F2072756E20740C +S315E0630B6068652047454D204465736B746F702C2030 +S315E0630B70696E7365727420796F75727C47454D2033 +S315E0630B804445534B544F50206469736B20696E2020 +S315E0630B906472697665204120616E6420636C696383 +S315E0630BA06B7C6F6E204F4B206F7220707265737330 +S315E0630BB020456E7465722E20546F2072657475726B +S315E0630BC06E20746F20444F532C7C636C69636B2097 +S315E0630BD06F6E2043616E63656C2E5D5B20204F4BC9 +S315E0630BE020207C43616E63656C5D004954454D200E +S315E0630BF053454C4543544F52004F4B0043616E633C +S315E0630C00656C0000FFFF0001000600140000002091 +S315E0630C100001110000000000042806140002FFFF33 +S315E0630C20FFFF001C0000000000E30BEB0003000184 +S315E0630C30000D00010003FFFFFFFF001E0008000038 +S315E0630C4000018ED800010003002600010004FFFFC7 +S315E0630C50FFFF001E0008000000018EF4000100059E +S315E0630C60001800010005FFFFFFFF001A0007000000 +S315E0630C7000E30BF9001C000F000800010006FFFF0C +S315E0630C80FFFF001A0005000000E30BFC001C0011E7 +S315E0630C900008000100000007000E001900000000D4 +S315E0630CA000001100000200070116010C0008FFFFB7 +S315E0630CB0FFFF001B0040000005FF1101000000007C +S315E0630CC0000200010009FFFFFFFF001E00100000A5 +S315E0630CD000018F100102000006130001000E000AF6 +S315E0630CE0000C001400400000000111000013000135 +S315E0630CF00003000B000BFFFFFFFF001B004000003B +S315E0630D00010111000000000000030002000CFFFF78 +S315E0630D10FFFF001B00400000020111000000000914 +S315E0630D20000300020009000D000D001400400000FE +S315E0630D30000111110000000200030007000CFFFF31 +S315E0630D40FFFF0014004000000001110104000000F1 +S315E0630D50000200010006000F0017001400400000C7 +S315E0630D6000011100000000010013000B0010FFFFFB +S315E0630D70FFFF001E0040000000018F2C000200010F +S315E0630D80000F00010011FFFFFFFF001E004000009F +S315E0630D9000018F4800020002000F00010012FFFF0E +S315E0630DA0FFFF001E0040000000018F6400020003A5 +S315E0630DB0000F00010013FFFFFFFF001E004000006D +S315E0630DC000018F8000020004000F00010014FFFFA2 +S315E0630DD0FFFF001E0040000000018F9C000200053B +S315E0630DE0000F00010015FFFFFFFF001E004000003B +S315E0630DF000018FB800020006000F00010016FFFF36 +S315E0630E00FFFF001E0040000000018FD400020007D0 +S315E0630E10000F00010017FFFFFFFF001E0040000008 +S315E0630E2000018FF000020008000F0001000EFFFFD3 +S315E0630E30FFFF001E006000000001900C0002000945 +S315E0630E40000F0001FFFF000100090014000000200D +S315E0630E500002110000000000005000090002FFFFDD +S315E0630E60FFFF00140000000000FF11000003000113 +S315E0630E70000400040003FFFFFFFF001C0000000006 +S315E0630E800001944400090001002800010004FFFF0B +S315E0630E90FFFF001C0000000000018EAC00090002A9 +S315E0630EA0003200010005FFFFFFFF001C00000000A9 +S315E0630EB00001941800090003003200010006FFFFF9 +S315E0630EC0FFFF001C0000000000018E8000090004A3 +S315E0630ED0003200010007FFFFFFFF001C0000000077 +S315E0630EE00001904400090005003200010008FFFF9D +S315E0630EF0FFFF001A00070000000190700009000779 +S315E0630F00001000010009FFFFFFFF001A0007000061 +S315E0630F1000019400001A0007001000010000FFFFC3 +S315E0630F20FFFF001A0027000000018E68002B000710 +S315E0630F3000100001FFFF0001000200140000000042 +S315E0630F400000114300000000005000190002FFFF9B +S315E0630F50FFFF00140000000000FF11000000000026 +S315E0630F60005002010000FFFFFFFF001500200000B4 +S315E0630F700001902800000000005003015F5F5F5F9F +S315E0630F805F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F28 +S315E0630F905F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F18 +S315E0630FA05F5F00500053656C656374696F6E3A20EA +S315E0630FB0205F5F5F5F5F5F5F5F2E5F5F5F0066001F +S315E0630FC05F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5FE8 +S315E0630FD05F5F0046008000000000000000E30F7CD6 +S315E0630FE000E30FA30003000100001100000000000E +S315E0630FF0002700270000000000E30FA500E30FBE13 +S315E0631000000300010000110000000000000C00195D +S315E06310100000000000E30FC000E30FD30003000607 +S315E0631020000211000000FFFF001300130000000040 +S315E063103000E3114400E311540003000100001100D2 +S315E063104000000000000D00100000000000E3114402 +S315E063105000E31154000300010000110000000000EA +S315E0631060000D00100000000000E3114400E311549A +S315E0631070000300010000110000000000000D0010F5 +S315E06310800000000000E3114400E311540003000193 +S315E06310900000110000000000000D001000000000D9 +S315E06310A000E3114400E31154000300010000110062 +S315E06310B000000000000D00100000000000E3114492 +S315E06310C000E311540003000100001100000000007A +S315E06310D0000D00100000000000E3114400E311542A +S315E06310E0000300010000110000000000000D001085 +S315E06310F00000000000E3114400E311540003000123 +S315E06311000000110000000000000D00100000000068 +S315E063111000E3114400E311540003000100001100F1 +S315E063112000000000000D001000E30FD500E30FD5CB +S315E063113000E30FD500030001000211000000000187 +S315E0631140000200025F205F5F5F5F5F5F5F5F2E5F4E +S315E06311505F5F200078460000303C27104FEFFFE4E6 +S315E063116048D704FC206F00224244424342457D6FE8 +S315E063117000203200603834107F4122477F42BE89C7 +S315E06311806C023202326800027F4024477F49BE8A9E +S315E06311906C0230097F4324477F42BE8A6F02360280 +S315E06311A07F447549B4876F02380952855888754517 +S315E06311B0BC826EC22044528891C03F082043528865 +S315E06311C091C13F083F003F012F2F002E4EB900E04B +S315E06311D035244CEF04FC000C4FEF00284E754FEFBF +S315E06311E0FFE048D70CFC262F003024433E2F002433 +S315E06311F03C2F00263A2F0028282F002A756F002EF1 +S315E06312004267424347F900E25F563F3C01004EB90D +S315E063121000E3AC16588F601E558F2F043F0552834B +S315E0631220302A0002D0863F003012588AD0873F00CA +S315E06312304E934FEF000C7143B4806EDC42404CD763 +S315E06312400CFC3F400026303C01013F4000244FEF59 +S315E0631250002060FF000099C24FEFFFCC48D71CFC2B +S315E0631260342F003C362F003E202F003820402240AA +S315E0631270A344386F0040366F00423C2F00443A2F58 +S315E0631280004632027F42C3FC0018D1C132033028E4 +S315E06312900010C3FC0018D3C1322900103269001272 +S315E06312A0D08132280012D289B88767643E3900015B +S315E06312B0F59C675C7F47B8876600016C3839000147 +S315E06312C04BA03F3900014BA445F900E03524C9FC46 +S315E06312D0002D3F043F013F002E0F068700000034D8 +S315E06312E02F074E923F053F063F0B3F0C280F0684C0 +S315E06312F0000000382F044E922F042F074EB900E208 +S315E0631300F9B24FEF00204A406600011C6000011A03 +S315E06313103F0597C1280C988045F900E035243F06E0 +S315E06313203F0B3F042E0F0687000000342F074E92D3 +S315E06313303F053F063F0B3F0447EF00382F0B4E92C6 +S315E0631340714345F900E2F9B241F90001B2B80680AA +S315E063135000001EEF79700A002F072004EB88204017 +S315E063136041F04A002248D3FC000204502F092E08BC +S315E06313704E924FEF00204A40660000AC2F0B2007E9 +S315E06313800680000204482F004E92508F4A40670061 +S315E063139000982047D1FC0001B2B830285190322F33 +S315E06313A000247B45326851922A056A02528592800F +S315E06313B071462C006A025286E28571685194E28630 +S315E06313C0DC81322F00269289D2854A806C025E8068 +S315E06313D0E680C1C17340714622016A025281E281AD +S315E06313E04A806C0606800000000FE8807D46D08167 +S315E06313F02204EB89D08002868000000F224141F10E +S315E06314004A007140D1FC0002043620504A866C08DB +S315E0631410538672F08C815286780F988671F0080055 +S315E06314207DC40D006702340330024CD71CFC4FEFDA +S315E063143000344E754FEFFFEC48D7007C3A2F00201F +S315E0631440342F001C262F0018382F001E3F057D42DF +S315E06314503F043F3C00023F022F034EB900E3A7B6C9 +S315E06314604FEF000C7340BC816720A146BC81671ACD +S315E06314703F3C00013F3C00013F053F043F003F0224 +S315E06314802F034EBAFDD44FEF00104CD7007C4FEFDD +S315E063149000144E754E56FFE448D7043C382E0010D0 +S315E06314A0262E000A2043246E00123A2E00163004DC +S315E06314B0C1FC0018D1C03428000A4A6E001C670AD2 +S315E06314C07008C0824A40660000B0486EFFF848681C +S315E06314D000104EB900E2FE52302E000E508F2043CC +S315E06314E0C1FC0018D1C032280010302EFFF8D0813D +S315E06314F03D40FFF8302EFFFA32280012D0813D409E +S315E0631500FFFA4A6E001867062005808260062005AA +S315E06315104680C08275C273C0B282676042673F002D +S315E06315203F2A00063F2A00043F2A00023F12426731 +S315E06315303F042F034EB900E3A8564FEF00144A6EFB +S315E0631540001A6738486EFFF82F0A4EB900E2F9B21F +S315E0631550508F4A406726558F3F2EFFFE3F2EFFFC96 +S315E06315603F2EFFFA3F2EFFF83F2E00084EB900E309 +S315E06315708AC04FEF000C60044240600270014CEE9B +S315E0631580043CFFE44E5E4E754E56FF9C48D73CFCEA +S315E0631590426747FAFBC4386E00162A6E0018262E99 +S315E06315A000282803246E000C3F3C0004754C4EB9BA +S315E06315B000E3AC16548F486EFFDE2F2E00123F2EEB +S315E06315C000103D6E0008FFFE3D6E000AFFFC4E9381 +S315E06315D04FEF000A486EFFE62F0D3F0C4E93302E19 +S315E06315E0FFEA322EFFE2326EFFE6204D4FEF000C4C +S315E06315F0D0813D40FFEA302EFFEC322EFFE4D0810E +S315E06316003D40FFEC322EFFE84240601436105280D4 +S315E063161096893083362800029681314300025888E2 +S315E06316207740B4836EE6302EFFFE2604428542465B +S315E063163042442D43FFC424009489302EFFFC3D428F +S315E0631640FFCA240094813D42FFCE4242306EFFCA18 +S315E0631650302EFFFE322EFFCE486EFFE62F0A47FAA4 +S315E0631660FB7E90883D40FFE6302EFFFC90813D4057 +S315E0631670FFE84EB900E2F8C4362EFFFE3E2EFFFCCD +S315E0631680487900014B904EB900E25E324FEF000AB3 +S315E06316903F3C00013F3C000342674EB900E25FCC4A +S315E06316A02F0D3F0C2F2E00123F2E00103F2EFFE82A +S315E06316B03F2EFFE64E93486EFFF2486EFFF4486EA8 +S315E06316C0FFDC486EFFDA486EFFD8486EFFD64267A6 +S315E06316D0426742A7426742674267426742673F3C67 +S315E06316E000023F3C00023F073F033F3C0001426785 +S315E06316F03F3C00FF3F3C00013F3C00064EB900E340 +S315E0631700A54A4FEF00502E8D3F0CA541C2802F2E88 +S315E063171000123F2E00103D41FFD23F2EFFE83F2EE1 +S315E0631720FFE64E93486EFFF8486EFFFA486EFFFC9D +S315E0631730486EFFFE4EB900E3AC344FEF00203F2E18 +S315E0631740FFFC3F2EFFFE4EB900E3ADA02679000213 +S315E063175019D8588F36006720558F3F004EB900E39E +S315E063176098C0588F4A80670E20402679000219D8C0 +S315E06317703E28000A600442437E01558F3F2EFFFCFC +S315E06317803F2EFFFE3F072F0B4EBAFCAA4FEF000C2E +S315E0631790206EFFC47340308022417347B289670687 +S315E06317A0A141B28966324A42672E558F3F3C0001BA +S315E06317B03F3C000142673F3C00012F0A3F02424241 +S315E06317C03F0642462F053F04424442854EBAFCC675 +S315E06317D04FEF0018600000B471407342B280672E29 +S315E06317E04A42672A558F3F3C00013F3C000142670E +S315E06317F03F3C00012F0A3F0242423F0642462F0525 +S315E06318003F04424442854EBAFC8C4FEF00183F3C9E +S315E0631810000A206EFFC43F102F0B4EB900E2A1D041 +S315E0631820508F2040301008000000665E206EFFC4D3 +S315E0631830486EFFF6486EFFEE3F103F034EB900E396 +S315E06318406F0E4FEF000C4A8067402040A541302879 +S315E06318500006538071C0B2806530206EFFC4558F39 +S315E06318603C07380334103F3C00012A0B3F3C000140 +S315E06318703F3C00013F3C00012F0A3F023F072F0B2D +S315E06318803F034EBAFC104FEF00184A6EFFD2670073 +S315E0631890FDBC4A426722558F3F3C00013F3C000155 +S315E06318A042673F3C00012F0A3F023F062F053F0494 +S315E06318B04EBAFBE24FEF0018206E001C30AEFFFE1F +S315E06318C0206E002030AEFFFC206E0024308342673A +S315E06318D042674EB900E3AC16588F4CEE3CFCFF9C76 +S315E06318E04E5E4E754E56FFB4302E000E48D73CFC26 +S315E06318F0246E000A240A2A0E0685FFFFFFE847F9ED +S315E063190000E2FE5249F900E2F9B2C1FC0018D48064 +S315E0631910424020423E2800103A6800122F052F2EDF +S315E063192000123D40FFF63D40FFF44E932F052F2E08 +S315E063193000164E94382E001A4FEF00105085716EE4 +S315E063194000102042240E362800027D6E000E2D40E4 +S315E0631950FFE0518246842D44FFE4600000E2B0AECE +S315E0631960FFE0670000D230032F02C1FC001849F2A2 +S315E0631970080041EC00102F082D48FFDC4E93302E13 +S315E0631980FFF82F02486EFFE8306EFFFAD0873D40DE +S315E0631990FFF8302EFFFE41F5880153803D48FFFA9C +S315E06319A03D40FFFE4EB900E2F9B24FEF00104A4008 +S315E06319B0670000843F2EFFFE3F2EFFFC3F2EFFFABB +S315E06319C03F2EFFF83F033F2E000E2F0A4EBAF88AEA +S315E06319D04FEF00107140B086675C322C000A4A6EA6 +S315E06319E0001C6708302E001A80816006202EFFE413 +S315E06319F0C08179C073C1B284673C3940000A2F0263 +S315E0631A002F2EFFDC4E93302EFFF8508FD0873D406C +S315E0631A10FFF8302EFFFAD08D3D40FFFA4A6EFFF4B1 +S315E0631A20670C2F052F024EB900E2F93260062F05E7 +S315E0631A302F024E93508FC7FC00183632380071433D +S315E0631A40BC806D00FF1A4A6E001E6734486EFFF075 +S315E0631A502F2E00164EB900E2F9B2508F4A40672046 +S315E0631A60558F3F2EFFF63F2EFFF43F2EFFF23F2EBC +S315E0631A70FFF03F2E00084EB900E38AC04FEF000C3B +S315E0631A804CEE3CFCFFB44E5E4E754FEFFFE648EF1F +S315E0631A90047C0002342F0024362F001E246F0020BE +S315E0631AA0282F002C3F2F00283F2F00283F022F0AC4 +S315E0631AB04EBAF98273424FEF000C3C007140B2803C +S315E0631AC06706A141B28066203F3C000142673F3C26 +S315E0631AD000012F04487900014BA83F063F022F0A15 +S315E0631AE03F034EBAFE00607E2200E789EB88908171 +S315E0631AF03A32080A302F0028A741C0814A4066344B +S315E0631B004A6F002E66060805000066383F3C000112 +S315E0631B1042673F3C00012F04487900014BA83F062A +S315E0631B203F022F0A3F034EBAFDBC4FEF0018A340B6 +S315E0631B308A80601008050000670672FECA81600449 +S315E0631B40A3408A80558F3F3C0001A341CA813F3C55 +S315E0631B5000013F053F3C00012F043F063F022F0A89 +S315E0631B603F034EBAF9304CEF047C00184FEF003078 +S315E0631B704E754E56FFB470FF48D73CFC342E000ECC +S315E0631B80558F2A6E001E246E000A286E0010266E9C +S315E0631B900014362E00083D40FFFC3A827B42301447 +S315E0631BA03D40FFFA32133F013D41FFF83F003F02FC +S315E0631BB02F0A4EBAF8804FEF000C38007140BA80B6 +S315E0631BC06706A141B28066643F3C00062A0E06853D +S315E0631BD0FFFFFFEC3F3C00063F2EFFF83F2EFFFA88 +S315E0631BE02F054EB900E03524486EFFF2486EFFF0EC +S315E0631BF03F3C00063F3C00063F2EFFEE3F2EFFECE8 +S315E0631C004EB900E3A9B43F3C00013F3C00013F3CD1 +S315E0631C1000012F2E001A2F053F043F022F0A3F03D0 +S315E0631C204EBAFCC24FEF0034600002202200E7891F +S315E0631C30EB8890813032080A080000006700020CE6 +S315E0631C4030022D45FFE0C1FC001841F208002D4843 +S315E0631C50FFE83228000242406062C3FC001841F2AA +S315E0631C6018003228000A08010000674E22005280FD +S315E0631C70D281226EFFE87A3B3E280010326900107B +S315E0631C807341DE892C010686000022AF43F9000129 +S315E0631C90B2B80681000022B033876A00226EFFE89D +S315E0631CA03E2800123C29001243F90001B2B8DC87F2 +S315E0631CB033861A007340BA816D1032107D41BCAE33 +S315E0631CC0FFE06E964A40670001827342A347BE8196 +S315E0631CD067084A790001F59C660E32390001FCD843 +S315E0631CE041F90001FCDC600C32390001FCDA41F9B0 +S315E0631CF00001FD002F0D486EFFFC486EFFF4486E51 +S315E0631D00FFF648790001F8163F002F083F0148794E +S315E0631D1000014BA83F2EFFF83F2EFFFA4EBAF86A52 +S315E0631D20302EFFFC4FEF0024671877437140B08392 +S315E0631D306600011871557944B8806600010E60004B +S315E0631D4001044A436600010473557542B481660033 +S315E0631D5000FA206EFFE8263C0001B2B83E2EFFF49F +S315E0631D603C2EFFF63028000242422D41FFE82A3C32 +S315E0631D7000E3E34C600000C4C1FC00184BF20800CA +S315E0631D80302D000A08000000670000AE302D001217 +S315E0631D90326D0010486D0012486D001020433D40DF +S315E0631DA0FFE62002D0803D49FFE4224571402200F0 +S315E0631DB00681000022B032301A000680000022AFAE +S315E0631DC0D2873F0130300A00D0863F004E914FEF15 +S315E0631DD0000C207900020432601671680008B8804E +S315E0631DE0660C316D00100018316D0012001A205038 +S315E0631DF04A8866E6558F3F390001FD2652823F39B0 +S315E0631E000001FD243F2EFFE63F2EFFE442674EB915 +S315E0631E1000E38AC04FEF000A3F390001FD263F39F0 +S315E0631E200001FD243F2D00123F2D001042674EB99D +S315E0631E3000E38AC04FEF000C30157940B8AEFFE897 +S315E0631E406E00FF3670FF3D40FFFC558F486E00180D +S315E0631E50486EFFFE486EFFF8486EFFFA42673F3C06 +S315E0631E6000013F3C00014EB900E3A4D238AEFFF671 +S315E0631E704FEF001836AEFFF44CEE3CFCFFB4302E69 +S315E0631E80FFFC4E5E4E750000226F0008202F0004B3 +S315E0631E902040121910C166FA4E7520790002042EAD +S315E0631EA04A88672E23D00002042E4A6F0004660A2E +S315E0631EB02279000204324A89661020B900020432AC +S315E0631EC023C800020432600A2240201166FA22889F +S315E0631ED0429020084E75206F000422790002043296 +S315E0631EE0B1C9660A23D000020432600E22404A89F1 +S315E0631EF067082011B1C066F4600E20B90002042EB3 +S315E0631F0023C80002042E4E75229060EE2F027409F8 +S315E0631F10302F000873C0B481650806800000003086 +S315E0631F20601A22000681FFFFFFF673C1AB42B481FC +S315E0631F30650806800000003760027020241F4E7536 +S315E0631F404FEFFFF4720F48D70C04342F0014246F5D +S315E0631F50001047FAFFB814FC00202002E888C0812D +S315E0631F603F004E9314C0700FC4803E824E93204A66 +S315E0631F7010C04CEF0C04000220084FEF000E4E75C4 +S315E0631F802F032F02206F000C224872207118B28053 +S315E0631F9067F6206F001020B90001FD2A600A108100 +S315E0631FA0528823C80001FD2A200976401219207958 +S315E0631FB00001FD2A7501B68266E4421052885280BA +S315E0631FC023C80001FD2A241F261F4E75206F0004D7 +S315E0631FD0226F0008600410812040121920085280A5 +S315E0631FE04A0166F210BC00402040528010FC00209B +S315E0631FF04E754FEFFFF4704D48D70C04206F001019 +S315E0632000246F00147310B08167426D187446B4810F +S315E06320106752103C0047B081673C143C0044B4818E +S315E0632020667860707054B08167146D0474506008AC +S315E06320307066B081672E7470B481665E603C7003CF +S315E063204072073540000635410004604E740270073E +S315E06320503542000660384241740335410006354235 +S315E06320600004603642407246354000067110B28025 +S315E06320706604424060187010601442427250354202 +S315E063208000067110B280660470086002701835400D +S315E063209000046006740135420006322A0004A94250 +S315E06320A020085280C2824A41671A486A00182F00A4 +S315E06320B047F900E27D984E93486A001A2F004E93E3 +S315E06320C04FEF0010486A00122F0047F900E27D984F +S315E06320D04E93486A00142F004E934FEF0010A941C8 +S315E06320E020405288302A0004C0814A4067161010A7 +S315E06320F074207300B48167044880600242403540CF +S315E063210000165488486A000A2F084EBAFE7445EAF8 +S315E0632110000E2F4A001C4CEF0C0400082F400018F9 +S315E06321204FEF00146000FE5A4E56FFEC486EFFFC1C +S315E06321303F2E00083F3C00044EB900E3B35A4878AB +S315E0632140000E2F2EFFFC486EFFEE4EB900E00EC484 +S315E06321504FEF00123F2EFFF4322EFFF2202EFFEEFA +S315E06321603F012F003F012F004EB900E263FE4FEFC0 +S315E063217000104E5E4E7523452039412030310D0AFD +S315E06321802357203030203030203032203036203232 +S315E06321903620304320303020400D0A23572030303C +S315E06321A02030302030322030382032362030432021 +S315E06321B0303020400D0A2357203030203030203035 +S315E06321C03220304120323620304320303020400DFB +S315E06321D00A235720303020303020303220304420FC +S315E06321E0323620304320303020400D0A00234D2024 +S315E06321F0303020303020303120464620412044497B +S315E0632200534B2041402040200D0A0023462046469A +S315E06322102032382040202A2E2A40200D0A234420EB +S315E063222046462030322040202A2E2A40200D0A23BB +S315E063223047203038204646202A2E415050402040E1 +S315E0632240200D0A2347203038204646202A2E505256 +S315E063225047402040200D0A23502030382046462050 +S315E06322602A2E545450402040200D0A23462030380D +S315E0632270204646202A2E544F53402040200D0A2301 +S315E0632280542030302030342030332046462020201E +S315E06322905452415348402040200D0A004FEFFFC09F +S315E06322A048D77CFC4EB900E2FF2441F9000203F60D +S315E06322B033C000019472203C0001947823C000018E +S315E06322C0FD2A703F24002200E58AEB8953809282DF +S315E06322D006810001FD2E208141E8FFE44A8066E441 +S315E06322E0558F3F3C0800223C0001FD2E742345F9DF +S315E06322F00001A47842B90002043223C10002042E2D +S315E063230042B9000204122F0A4EB900E3AEC2713934 +S315E06323100001A478508FB4806772558F3F3C000705 +S315E06323204EB900E3897C2F00240F06820000003655 +S315E06323302F024EBAFB54102F003A12390001947300 +S315E0632340D0811F40003A4FEF000A42672F024EB931 +S315E063235000E2FF7E508F34004A7900018E64662C7A +S315E06323602F0A3F3C080042033F004EB900E2FFB04C +S315E06323705C8F3F0233C00001FD284EB900E2FF9E49 +S315E063238071790001FD28588F1583080071390001C2 +S315E0632390A4787A23BA80670000F04EB900E2FF249E +S315E06323A0558F764142421A3C00013F004BF900E10A +S315E06323B0C4A449F900E1C4B645F90001A4784EB96D +S315E06323C000E30056487AFDB048790001A4782C0012 +S315E06323D04EBAFAB64FEF000C79422005E9A8714090 +S315E06323E0C086677048790001A4784E95487AFDFF08 +S315E06323F048790001A47826404E944FEF000C200BF9 +S315E063240058807140A741C2821E320800D287158187 +S315E06324100800200B5E8071402204E4811E320800CE +S315E0632420D28715810800A340B0846C107230200B0C +S315E063243006800000000A714015810800200B0680C3 +S315E063244000000016714047EB000F15830800714BDF +S315E0632450158308005282714252837220B28066000D +S315E0632460FF78487AFDA748790001A4784EB900E180 +S315E0632470C4B648790001A4784EB900E1C4A44FEF2D +S315E0632480000C33C00001FD28280F2A3C00E3897C59 +S315E0632490424345F90001A47806840000003E4BFA06 +S315E06324A0F9FA49FAFB4E47F900E27D984DF900E205 +S315E06324B0F7EC600002627100240A7C235282BC80DE +S315E06324C067062442600002502442724D7112B28064 +S315E06324D0670000886D1A7C45BC80670001766D06EF +S315E06324E0123C0044602C7C47BC806D00022A606A23 +S315E06324F07257B280677C6D127C50BC80675C123C1D +S315E06325000054B2806600021060107C66BC80674A45 +S315E06325107270B280660002006040558F3F3C0001F6 +S315E06325204E952F002F02740B4E944FEF000C244010 +S315E0632530558F3F3C00014E953E82528220452C00EA +S315E06325404E902F0652802F004E9471C24FEF000CCF +S315E06325507211B28066DA600001BE558F3F3C0001BE +S315E06325604E952F002F024E944FEF000C24406000EF +S315E063257001A67543528AA746BC826D00019A7052E2 +S315E06325804C00280022020681000218902F012F0AD0 +S315E06325904E932C020686000218922F062442D5FC3F +S315E06325A00001B2B82C0206860002188A2F004E9309 +S315E06325B02042D1FC000218882F082F004E9332394F +S315E06325C000014BA0C3EA65D0354165D02F062F00E5 +S315E06325D04E93323900014BA44FEF00202C0206865E +S315E06325E00002188CC3EA65D2354165D22F062F0007 +S315E06325F04E93323900014BA02C0206860002188EF8 +S315E0632600C3EA65D4354165D42F062F004E9332393C +S315E063261000014BA42C02068600021894C3EA65D631 +S315E0632620354165D62F062F004E934FEF00182042B3 +S315E0632630D1FC000218965280600210C124407C40AF +S315E0632640121252807501BC8266F0421052836000BA +S315E063265000C62F04486A00014E93322F0046508F1E +S315E06326602F04A3462F0024010282000000804A4221 +S315E063267056C24882448233C2000218787460C481C9 +S315E0632680EA8233C2000218767410C4814A4256C2A3 +S315E06326904882448233C20002187C7408C4814A4289 +S315E06326A056C24882448233C20002187AAF42C2827B +S315E06326B033C1000218804E9372102440302F0046D7 +S315E06326C05C8F4267C2804A4157C14881448133C1C6 +S315E06326D00002187E7208C2804A4156C1488144812D +S315E06326E033C100021882A941C2804A4157C1488179 +S315E06326F0448133C100021886A541C280C0864A413F +S315E063270057C1BD8048813F00448133C100021884CC +S315E063271042674E96508F10126600FD9C487809908A +S315E0632720487900E504A44879000204364EB900E02E +S315E06327300EC445F9000204364FEF000C284A4242C4 +S315E063274097CB4BF900E2FE8C60203F2C0006528B60 +S315E063275049EC00223F004E953F003F024E95508F75 +S315E063276072483400714BB2806708A1432014B68087 +S315E063277066D84878099048790002043648790002B9 +S315E06327800DC64EB900E00EC4260252834FEF000C2D +S315E063279034390002044EC5F90002044C75426C06F6 +S315E06327A006820000000F283900E525B8E8827A1230 +S315E06327B098B900E525B4D48279442F044EB900E391 +S315E06327C001F22F042F3900E525B42F0023C0000260 +S315E06327D019D04EB900E00EC433C5000194744FEFCF +S315E06327E00010734B41F900020436424043F900019D +S315E06327F0B2B860267C01281052804245794406844B +S315E06328000000324F33864A007968000641E80022C9 +S315E063281006840000324F33854A007940B2846ED431 +S315E063282041F90002175642404241794360124A50E9 +S315E0632830670630805280600430BCFFFF5281548863 +S315E06328407B41B8856EE8C1C27F4B4BF90001B2B8F4 +S315E06328502C0002860000FFFE2F064EB900E301F26C +S315E06328603A3900014BC6327900014BFC588F28791F +S315E0632870000219D023C0000219D491C87342CBFC7D +S315E0632880000C5489605C2C12280606840000324FE3 +S315E063289052884C01680079754A00354509AE35457D +S315E06328A0001E354909B04C0148007DC63549002014 +S315E06328B0DC8C248679C4D88025440990282A0004D0 +S315E06328C04C01480079C4D88C254400042544099416 +S315E06328D038390002044E354409AC3544001C45EAF8 +S315E06328E000227948BE846E9E71790002044C6C02C4 +S315E06328F05E802C00E68E3A790002044E42457743C9 +S315E063290049F90001B2B87F4247F900E00EC445F9E0 +S315E063291000E263FE605406800000324F38340A00FA +S315E0632920A141714420403005C1C2B2886720C9C263 +S315E06329307140D0B9000219D02F072F007944D8B976 +S315E0632940000219D42F044E934FEF000C60087940D0 +S315E0632950D8B9000219D0558F3F0D52853F062F0433 +S315E06329603F062F044E924FEF00107145B6806EA678 +S315E0632970323900014BC63039000204503079000128 +S315E06329804BFC32790002044E343900014B8CC3FCB4 +S315E0632990000641F18802D081D080734233C80001DA +S315E06329A0FD2633C00001FD240C810000012C6E047A +S315E06329B0424160027208363900014BC0D280247905 +S315E06329C00002043247F900E3E34C48C387C12003BE +S315E06329D0484048C081C32602D28033C10001FCD49B +S315E06329E0323900014A3E200854809681220348C169 +S315E06329F083C02401484248C285C1D08233C0000106 +S315E0632A00FCD6603032390001FCD630390001F91C5E +S315E0632A10486A001A486A00183A390001FCD4C3EAE6 +S315E0632A20001AD0813F00CBEA00183F054E9324524B +S315E0632A304FEF000C4A8A66CC30790001FD243039C9 +S315E0632A400002044C4242720932790001FD26424398 +S315E0632A507A052C089C80714633C80001FCEC33C8C8 +S315E0632A600001FCF033C20001FCDE20006A02528002 +S315E0632A70343900014BFC33C10001FCD8220955818E +S315E0632A8033C30001FCE433C30001FCE833C3000154 +S315E0632A90FCFA33C30001FCFE33C50001FCDA33C341 +S315E0632AA00001FD00E280928233C30001FD0233C37D +S315E0632AB00001FD0691C033C00001FCDC33C00001B8 +S315E0632AC0FCE033C00001FCFC303900014BA033C3AA +S315E0632AD00001FD0C33C10001FCE233C10001FCE6F9 +S315E0632AE033C90001FCEA33C90001FCEE33C10001DE +S315E0632AF0FCF233C80001FCF433C10001FCF633C8D1 +S315E0632B000001FCF8C1FC000C33C00001FD0433C0D6 +S315E0632B100001FD08303900014BA433C00001FD0A12 +S315E0632B2033C00001FD0E33C30001FD1033C3000162 +S315E0632B30FD124CD77CFC70014FEF00404E75207957 +S315E0632B4000020432428042B9000204326008221075 +S315E0632B502080200820414A8866F423C000020432BC +S315E0632B604E754FEFFFCE48EF3C3C000248780800D5 +S315E0632B704267363C008048790001A4784EB900E0AC +S315E0632B800DE8702372454FEF000C13C00001A47883 +S315E0632B9013C10001A4794A790002187866024243B8 +S315E0632BA03039000218767460EB88C0824A79000295 +S315E0632BB0187C6706143C0010600242424A790002C0 +S315E0632BC0187A670472086002424138390002188055 +S315E0632BD0558F80848083808280813F0048790001BD +S315E0632BE0A47A4EBAF35C508F24004A790002187EC9 +S315E0632BF067044240600270104A79000218826704F3 +S315E0632C0076086002424386804A7900021886670442 +S315E0632C1042406002700486804A7900021884670441 +S315E0632C20424060027002558F4267868047FAF3122C +S315E0632C3049F9000218963F3CFFFF42674EB900E24E +S315E0632C40F7EC5C8F4A4057C04880448086803F03F8 +S315E0632C5076042F024E934242508F2A401AFC000DAF +S315E0632C601AFC000A1AFC00233802558F1AFC005737 +S315E0632C70C9FC00522444D5FC0001B2B83F2A65D8AA +S315E0632C802F0D4E935C8F3F2A65DA2F004E93322ADF +S315E0632C9065D05C8F48C183F900014BA03F012F00EB +S315E0632CA04E93322A65D25C8F48C183F900014BA407 +S315E0632CB03F012F004E93322A65D45C8F48C183F976 +S315E0632CC000014BA03F012F004E93322A65D65C8FFD +S315E0632CD048C183F900014BA43F012F004E935C8FFB +S315E0632CE03F2A65DC2F004E93508F72402A401AFCD0 +S315E0632CF0002071344800B28067102044D1FC0002A2 +S315E0632D00189660021AC0101866FA1AFC00405282DE +S315E0632D1053831AFC000D1AFC000A4A436600FF4619 +S315E0632D204EBAFE1C24790002043247FAF21449FAD9 +S315E0632D30F29C6000012C1ABC0023A3422049322A8C +S315E0632D4000067141B480675A6D064A416716605E54 +S315E0632D50A541B2806708A742B4806652604C10FC16 +S315E0632D60004D604A302A0004A741A742C280B4817D +S315E0632D70660610FC004760367208C0814A40670405 +S315E0632D8070506002704612807410322A0004C28268 +S315E0632D904A416708068000000020128041E900018D +S315E0632DA0600C12BC00445288600410FC0054302A64 +S315E0632DB00004A941C0814A406734302A0018558F20 +S315E0632DC048C081F90001FCD43F002F084E93322AB4 +S315E0632DD0001A30790001F91C5C8F928848C183F947 +S315E0632DE00001FCD63F012F004E93508F2040558F54 +S315E0632DF03F2A0012A9422F084E935C8F3F2A0014A4 +S315E0632E002F004E93508F204010FC0020302A0004A0 +S315E0632E10C0824A40670E302A00166602702010C0F0 +S315E0632E2010FC00202F2A000A2F084E942F2A000E4A +S315E0632E302F004E94720D4FEF001020402A4011414F +S315E0632E40FFFF1AFC000AA741716A0006B280660EAC +S315E0632E507006245253804A4067044A8A66F42452D1 +S315E0632E6043ED00014A8A6600FECE24491ABC001A85 +S315E0632E70421A4EBAFCCA558F95FC0001A4783F0A04 +S315E0632E8033CA0001FD2848790001A4784EB900E30E +S315E0632E90AEE0508F4A6F0034670000A4303900011A +S315E0632EA0FD28260F0683000000204BF900E3897CAA +S315E0632EB049FAEFD647F900E3006845F900E3494686 +S315E0632EC0538033C00001FD28558F3F3C00074E9584 +S315E0632ED02F002F034E94102F002C123900019473A8 +S315E0632EE0D0811F40002C4FEF000A42672F034E93B9 +S315E0632EF0508F24004A7900018E64671842A73F3CED +S315E0632F000022A5423F3C00014E92508F7140B4804F +S315E0632F1066B6602A4A4067B048790001A4783F39CB +S315E0632F200001FD283F004EB900E2FFCE5C8F3F0211 +S315E0632F3033C00001FD284EB900E2FF9E588F4CD79F +S315E0632F403C3C4FEF00304E754FEFFFDA48EF7C3C89 +S315E0632F5000023F3900014B8C424242434BF900E3A6 +S315E0632F60871249F90001B2B847F900E00EC479FC6B +S315E0632F7080003F3900014BC0426742673F3C000136 +S315E0632F804EB900E386922479000204324FEF000CD7 +S315E0632F9041F9000238C623D000021A00600000E25D +S315E0632FA0302A0004A941C0814A40670000D2558FA8 +S315E0632FB03F390001FD26A5453F390001FD243F2A3F +S315E0632FC0001A3F2A00183F3C00014E95736A0006DB +S315E0632FD04FEF000CBA81661A322A00162A0406817C +S315E0632FE0FFFFFFBF73C1E2AD86854A6A00126602E0 +S315E0632FF0848535400008714022002A00EB8DE7891D +S315E06330002C404DEE1EEF2045224591C14241D1FC55 +S315E06330100001B2B87A1F3141672E3141672C322AFB +S315E063302000123145672A3981EA004DF10A00C3FC93 +S315E06330300022068100020DC6DDFC00022654214E05 +S315E06330406730487800222F012F0E4E934FEF000C26 +S315E0633050322E001630390001FD242D6A000A00087D +S315E06330609081714020006A025280E2803D40001206 +S315E06330704DEE000C321671AA001780813C80245213 +S315E06330804A8A6600FF1CC4834A4267264240323C52 +S315E063309080002601C6824A43670806800000004135 +S315E06330A06012528077407810B883670673C1E2890D +S315E06330B060E070414CD77C3C4FEF00244E754FEF98 +S315E06330C0FFE448D71C3C3A2F0020242F0026266FC6 +S315E06330D0002A247900020432796F002249F900E27A +S315E06330E0FCA4776F0024604A4A45670A716A000860 +S315E06330F0B680663C6040716A0006B8806632302A04 +S315E06331000004A941C0814A4066262F022F2A000E99 +S315E06331104E94508F4A4067044253601A2F022F2A17 +S315E0633120000A4E94508F4A40670636BC000160063B +S315E063313024524A8A66B2200A4CD71C3C4FEF001CE5 +S315E06331404E750000226F0008202F000420401219FC +S315E063315010C166FA4E754E56FFC848D70C0C4267E7 +S315E0633160260E0683FFFFFFEC342E00083F3C01008A +S315E06331704EB900E3AC16486EFFF2486EFFF0486E58 +S315E0633180FFEE2F033F3C00043F390001FAC24EB91C +S315E063319000E3AD0A2F034EB900E25E324FEF001A49 +S315E06331A0486EFFFC486EFFFE3F024879000219DC79 +S315E06331B04EB900E3A81A4FEF00104A790001F59C77 +S315E06331C06640558F3F024879000219DC4EB900E349 +S315E06331D08BEE508F20403228001A302EFFFE366881 +S315E06331E000203628001ED0813D40FFFE302EFFFCD6 +S315E06331F032280014D0813D40FFFC30280018D7C048 +S315E06332006012363900014BA0367900014BA4C7FC46 +S315E0633210002D528B3F3C000145F900E275FC240E1C +S315E06332200682FFFFFFD83F3C00204E923F3C000101 +S315E06332303F3C00174E923F3C00073F3C00184E92DE +S315E063324042673F3C00194E924267426742A72F02AC +S315E06332504EB900E261FA326EFFFE2F02486EFFF46A +S315E0633260306EFFFC3D49FFF443F138FF3D48FFF61E +S315E063327041F0B8FF3D49FFF83D48FFFA4EB900E239 +S315E06332807A684FEF00243F3C00013F3C00194E92C1 +S315E06332903F3C00033F3C00204E925C8F3F3C000185 +S315E06332A03F3C000342674EB900E25FCC42673F3C76 +S315E06332B001014EB900E3AC164FEF000C4CEE0C0C7B +S315E06332C0FFC84E5E4E754E56FFF82F02486EFFF806 +S315E06332D0486EFFFA242E0008486EFFFC486EFFFE38 +S315E06332E02F024EB900E3A96E3F2EFFF83F2EFFFA99 +S315E06332F03F2EFFFC3F2EFFFE3F3C000842672F0256 +S315E06333004EB900E3A7664FEF0024242EFFF44E5E2A +S315E06333104E754E56FFF82F032F02486EFFF8486E40 +S315E0633320FFFA486EFFFC486EFFFE242E000A362E37 +S315E063333000082F024EB900E3A96E4FEF00123F2E4D +S315E0633340FFF83F2EFFFA3F2EFFFC3F2EFFFE42675C +S315E06333504267426742673F034EB900E3A8D84FEF3F +S315E063336000144A4366223F2EFFF83F2EFFFA3F2EB4 +S315E0633370FFFC3F2EFFFE3F3C000842672F024EB93B +S315E063338000E3A7664FEF0010242EFFF0262EFFF42E +S315E06333904E5E4E75426742674EB900E3AC16588F90 +S315E06333A04A79000110EC670E2F390001FAB24EBA82 +S315E06333B0FF16588F6018558F2F390001FAB24267AE +S315E06333C04EBAFF507001508F33C0000110EC558F39 +S315E06333D042672F390001FAB24EB900E3A8BA508FBB +S315E06333E04A79000110EE670C2F390001FAAA4EBA4A +S315E06333F0FED6588F42673F3C00024EB900E3AC16F7 +S315E0633400588F4E754E56FFEC48D7001C3F3C001074 +S315E0633410280E5184362E000C242E00083F032F021B +S315E06334204EB900E2A1D0487800082F002F044EB9C8 +S315E063343000E00EC44FEF0012486EFFFA2F043F031D +S315E06334402F024EB900E3A81A3F2EFFFE3F2EFFFC84 +S315E06334503F2EFFFA3F2EFFF83F3C00083F032F0263 +S315E06334604EB900E3A7664FEF00204CEE001CFFEC7D +S315E06334704E5E4E752F02206F00082008742A73187B +S315E0633480B48166F6600253802040745C7310B48145 +S315E063349066F4241F4E755C2A2E2A00002F032F0242 +S315E06334A0202F0010206F000C2408762A7318B6814B +S315E06334B066F62F002F024EBAFC8C508F2F42000C1B +S315E06334C0203C00E334962F400010241F261F60FF44 +S315E06334D0FFFE8FE62F2F00044EBAFF9A588F2040E7 +S315E06334E053887110725CB28066F6487AFFAA2F0839 +S315E06334F04EBAFC52508F4E752F032F02222F0010C7 +S315E0633500206F000C2008762A7518B68266F62F417E +S315E063351000102F40000C241F261F6000FC284FEF8D +S315E0633520FFF048D70C0C7404262F001447F900E328 +S315E0633530998245F900E1C4D4558F3F024E93588F83 +S315E063354020404A68000667122F032028001850803F +S315E06335502F004E92508F4A40670A53824A4266D89A +S315E06335604240600270014CD70C0C4FEF00104E7571 +S315E06335704FEFFFF448D7040C242F0010262F0014D6 +S315E06335802F024EBAFEF0588F244041EAFFFF6002F5 +S315E063359053887110725CB280660852884A886608FE +S315E06335A0601CB48865EA601642122F032F084EB991 +S315E06335B000E1C4D4508F4A40671814BC005C2F43C3 +S315E06335C000142F4200104CD7040C4FEF000C600040 +S315E06335D0FF284CD7040C4FEF000C4E752F0A2F02D1 +S315E06335E0242F000C2F024EBAFE8C588F24404212D1 +S315E06335F02F2F00102F024EB900E1C4D414BC005C37 +S315E0633600508F4A4057C0241F245F488044804E75DC +S315E0633610226F000420494A1966FA600253887110E2 +S315E0633620725CB28066F6487AFE6E2F084EBAFB1677 +S315E0633630508F4E752F02242F000C226F000820490D +S315E06336404A1966FA600253887110725CB28066F654 +S315E0633650486800014879000111344EBAFAE8508FA0 +S315E06336602F42000C203C000111342F400008241F38 +S315E063367060FFFFFFC4084A7900018E646714558FC3 +S315E06336803F3900018E664EB900E3A95A588F42402E +S315E06336904E7570014E752F2F00044EB900E3016A33 +S315E06336A0588F60D24FEFFFCE48EF7CFC00022C2FA1 +S315E06336B00036262F003A426747F900E2FF7E45FA75 +S315E06336C0FFB62F064E933A004E92508F3400670052 +S315E06336D0021E558F42672F034E93508F38004A7907 +S315E06336E000018E64671671F900018E66A541B280AA +S315E06336F06700010C4E9234006000023C558F3F0038 +S315E063370045FAFF324EB900E2FF9E487900011104A3 +S315E06337102F064E922F032F064EB900E1C4D44FEF26 +S315E063372000144A4057C2488244824A42670A4200CA +S315E063373013C000011114600C4879000111142F03C2 +S315E06337404E92508F558F4879000111043F3C000239 +S315E063375045F900E2FB802F390001FAB24E925C8FA5 +S315E06337602EBC000111143F3C00032F390001FAB26D +S315E06337704E924FEF000C4A42670001804EBAFC1648 +S315E06337803F3C000324390001FAB23F3C00042F02B8 +S315E06337904EB900E2FC043F3C000A58803C003F001F +S315E06337A07D462F024EB900E2A1D04FEF00102040D4 +S315E06337B0AD404250B086670CAB41B2866600013CD1 +S315E06337C0740160024242558F3F054EB900E2FF9EA7 +S315E06337D0588F60000162558F3F0574014EB900E270 +S315E06337E0FF9E588F600001502F034EBAFE2448793E +S315E06337F0000111242F034EBAFD004FEF000C558FE5 +S315E06338003F2F004274017E012F034EB900E3006847 +S315E0633810508F38003C0745FAFE5E49F900E3AC1683 +S315E06338204DF900E3494647F900E2FF9E4BF900E3B1 +S315E0633830016A607E4E923400670000822F39000190 +S315E0633840F6523F390001F6563F054EB900E2FFB046 +S315E06338503C004E92508F340067584A4667542F397E +S315E06338600001F6523F063F044EB900E2FFCE3F4009 +S315E063387000364E92508F3400673871C673EF002E70 +S315E0633880B280672E4267424242674E9442A73F3C0C +S315E063389000203F3C00014E9642673F3C00024E9457 +S315E06338A04FEF000E3F054E933E844E932F034E95A6 +S315E06338B0508F4A4667064A426600FF7A4A47672E52 +S315E06338C04A42672A558F3F2F004045F900E2FF9E43 +S315E06338D03F2F00403F044EB900E300BC4EBAFD986B +S315E06338E05C8F3F0534004E923E844E92588F300291 +S315E06338F04CD77CFC4FEF00304E75558F487900010D +S315E063390011143F3C00032F390001FAB24EB900E2CD +S315E0633910FBCC4879000111244879000111144EB9B2 +S315E063392000E2FAD24FEF00144A390001112467002E +S315E0633930FEA66000FEB442476000FEDA256400003E +S315E06339404FEFFFC848D77CFC242F00442A2F00485A +S315E063395048790001F658424476014EB900E2FF34F5 +S315E06339604BF900E1C5D63EBC00162F024EB900E224 +S315E0633970FF48508F7F6F003C4DF90001F66C49F9C3 +S315E063398000E2FB8047FAFA7E45FAFB6E4A7900016C +S315E06339908E646700010C71F900018E667212B28063 +S315E06339A06708A546BC80660000EE4A6F003C670880 +S315E06339B0A340B087665A600852B90001F7BC60500D +S315E06339C02F024EBAFB5A588F4A4066042042601271 +S315E06339D072017C1033C100018E6433C600018E66CA +S315E06339E0601A2248722A7118B28066F64206134656 +S315E06339F0FFFF2F024EB900E301DE588F4EBAFC7823 +S315E0633A00487AFA942F0236004EB900E1C4B6508F75 +S315E0633A104AAF003E6740206F0050558F30105380A9 +S315E0633A2030803F00487AFF164879000110FC4E95D6 +S315E0633A305C8F2EBC000110FC3F39000110F22F2F82 +S315E0633A4000464E944FEF000A3F39000110F22F2FE4 +S315E0633A5000424E93508F53844A446D0001F42F0223 +S315E0633A6041FAFA722F4800384E90588F206F00342F +S315E0633A70A540B08766062F054E90588F3004C1FC8B +S315E0633A80002C06800001F6582F004EB900E2FF34A1 +S315E0633A90588F600001B04EBAFBDE3600670001A6C0 +S315E0633AA073447C2C200120414C0608001236080141 +S315E0633AB04881324172102C09CC814A46670000A4E2 +S315E0633AC043F90001F6767D310800123C002EB2869A +S315E0633AD067000172AD46BC886D00016AD0892F002C +S315E0633AE02F022F4000384EBAF9B4508FA541202FEC +S315E0633AF00030B287663C2F002F054E922F054EB9F4 +S315E0633B0000E3007E4FEF000C4A7900018E64671490 +S315E0633B1071F900018E661C3C0005BC8067064EBAEF +S315E0633B20FB563600487AF9702F054EB900E1C4B604 +S315E0633B30508F52843004C1FC002C06800001F65895 +S315E0633B402F004EB900E2FF34588F4A43670000F610 +S315E0633B50558F3F3C00162F024EB900E2FF486000E6 +S315E0633B6000E24A6F003C672E2040D1FC0001F67606 +S315E0633B702F082F022F4000382F48003C4E92508F7B +S315E0633B80A341202F0030206F0034B2876720A5461B +S315E0633B90BC87666260242040D1FC0001F672201087 +S315E0633BA052B90001F7B8D1B90001F7C060502F02EE +S315E0633BB04EBAFAE4588F3600603C2F082F052F4043 +S315E0633BC000384E925C8F202F00322040D1FC0001FA +S315E0633BD0B2B81236080148813F013F2843B83F280F +S315E0633BE043B62F052F024EBAFABC2F0536004EBAFE +S315E0633BF0FA204FEF00142F024EBAFA16588F4AAFE7 +S315E0633C00003E6740206F004C558F30105380308004 +S315E0633C103F00487AFD284879000110F84E955C8F9D +S315E0633C202EBC000110F83F39000110F02F2F00463B +S315E0633C304E944FEF000A3F39000110F02F2F0042F8 +S315E0633C404E93508F4EB900E2FF664A436600FD3EEF +S315E0633C50716F003CA341B28066124A6F0054660CF2 +S315E0633C60558F3F2F00444EBAF4EE588F30034CD74E +S315E0633C707CFC4FEF00384E752F02206F000820085A +S315E0633C80121867087301745CB48166F2528020404F +S315E0633C902248121867087301745CB48166F24211B4 +S315E0633CA0241F4E752A2E2A004FEFFFE048D77C1C6F +S315E0633CB0262F00242043282F002C731020447110F4 +S315E0633CC0B081660000E6243C0001F60045F9000198 +S315E0633CD0F5AE4DFAF4704BFAFFA047F900E1C4D4B0 +S315E0633CE02F0348790001F5AE4E962F04487900011B +S315E0633CF0F6004E962F0A4E952F0249F900E1C4D499 +S315E0633D0024404E95487AFF9E2F0A24004E934FEF48 +S315E0633D1000204A406722487AFF8C2F024E93508FE9 +S315E0633D204A40670000862F0A2F024E93508F4A401F +S315E0633D3066AE103C00016074487AFF6A2F024E94C7 +S315E0633D40508F4A406764246F0028605A716A001C8A +S315E0633D50A141B280674E2200E789EB8890810680B5 +S315E0633D60000219E620403010080000006736102A8A +S315E0633D70000572504880C081123C0010B280662410 +S315E0633D802F02486A000E4E94508F4A40661642A749 +S315E0633D903F3C001C3F3C00014EB900E34946508F6F +S315E0633DA04240600824524A8A66A270014CD77C1C62 +S315E0633DB04FEF00204E754FEFFFCC48D77CFC382F92 +S315E0633DC00038266F0046286F004A42673F3C000290 +S315E0633DD04EB900E3AC164240588FA34133C00001AD +S315E0633DE010EC7144B2806724123C0002B2806734FF +S315E0633DF04A446600052E42B90001F7B842B90001AC +S315E0633E00F7BC42B90001F7C060000518303900011C +S315E0633E10FAC833C0000110EE6700050826390001D1 +S315E0633E20FAAE60444EB900E302120C800000FFF084 +S315E0633E306F0270F00680FFFFFE003F0033C00001B3 +S315E0633E40F65642674EB900E301F2588F23C000018C +S315E0633E50F65230390001FAC633C0000110EE67004E +S315E0633E6004C226390001FAAA7003720233C0000164 +S315E0633E7010F033C1000110F2103C0004123C00055F +S315E0633E8033C0000110F433C1000110F64A836700C2 +S315E0633E9000A4558F3F134BF900E1C5D645F900E21F +S315E0633EA0FB80487AFA984879000110F84E955C8F62 +S315E0633EB02EBC000110F83F39000110F02F034E923B +S315E0633EC04FEF000A3F14487AFA744879000110FC10 +S315E0633ED04E955C8F2EBC000110FC3F39000110F259 +S315E0633EE02F034E925C8F2E8345F900E3AC16700187 +S315E0633EF0426733C0000110EC4EBAF418426742677A +S315E0633F004E924FEF000A42672F034EB900E3A8BA19 +S315E0633F1042673F3C00024E923F39000110F63F395B +S315E0633F20000110F42F034EB900E2FC524FEF001488 +S315E0633F30340060027401246F003E2C3C00E2FB8097 +S315E0633F407B444DFAF5B44BFAF6C82F4C002C60006F +S315E0633F50035C716A001CA141B2806700034E2200D4 +S315E0633F60E789EB8890810680000219E620403010ED +S315E0633F700800000067000334102A00057240488099 +S315E0633F80C0814A40660003242F2F003A4879000136 +S315E0633F90F5AE4EBAF1B0508FA540B0856600008AA3 +S315E0633FA02F2F004248790001F6004EBAF198508F00 +S315E0633FB04A79000110EE66704A6F00566606302A4B +S315E0633FC0001C6004302F0058558F486F0032486FED +S315E0633FD000383F004879000219DC4EB900E3A81ABD +S315E0633FE04FEF00104A790001F59C660E3039000107 +S315E0633FF0FD2432390001FD266010303900014BA003 +S315E0634000323900014BA4C1FC002D3F2F00543F2FF2 +S315E063401000543F2F00343F2F00383F013F004EB935 +S315E063402000E3AA7C4FEF000C102A0005721048806B +S315E0634030C0814A40670001922E0A06870000000E9F +S315E06340402F0748790001F5AE4EBAF452508FA5407A +S315E0634050B085660001442F0748790001F6004EBA41 +S315E0634060F51048790001F6004EB900E3007E4FEFA4 +S315E0634070000C49F900E2FA7A600000EC71C0AB41EA +S315E0634080B280660000F248790001F60048790001E3 +S315E0634090F5AE4EBAF548508F4A40670000BE4879A0 +S315E06340A0000111042F074E944200548F2EBC000189 +S315E06340B011043F3C0002204613C0000111142F395E +S315E06340C00001FAB24E905C8F2EBC000111143F3CA6 +S315E06340D0000320462F390001FAB24E904EBAF2B68B +S315E06340E03F3C00053F3C00042F390001FAB24EB96C +S315E06340F000E2FC524FEF00143400676A558F48794B +S315E0634100000111143F3C00032F390001FAB24EB9A6 +S315E063411000E2FBCC487900011124487900011114CF +S315E06341204EB900E2FAD248790001F6004E954FEFB8 +S315E063413000184A3900011124672A487900011124DD +S315E063414048790001F6004E9648790001F6004EB9CB +S315E063415000E3007E4FEF000C600C424033C0000189 +S315E06341608E6460024242303900018E664A7900010C +S315E06341708E646606600A424260064A426600FEFE56 +S315E0634180487AF31448790001F6004EB900E1C4B603 +S315E0634190508F4A4267000114558F3F39000110EE94 +S315E06341A02F2F00302F0B48790001F6004879000184 +S315E06341B0F5AE3F2A001C2F033F044EBAF7844FEF58 +S315E06341C0001C3400600000E44A4467222E0A068736 +S315E06341D00000000E2F0748790001F5AE4E96508F2A +S315E06341E0A341B285671AA540B08566726036222A16 +S315E06341F0000A52B90001F7B8D3B90001F7C06066A7 +S315E063420048790001F5AE4EBAF48E588F34004A7998 +S315E0634210000110EE6648558F3F2A001C4EBAEF3810 +S315E0634220588F603A2F0748790001F6004E96102AB8 +S315E063423000055C8F48803F003F2A00083F2A00065E +S315E063424048790001F60048790001F5AE4EBAF456B6 +S315E063425048790001F60034004E954FEF00142F2F96 +S315E0634260003A4E95588F4A8367403013558F538093 +S315E063427036803F00487AF6C64879000110F84EB9B1 +S315E063428000E1C5D65C8F2EBC000110F83F39000112 +S315E063429010F020462F034E904FEF000A3F3900019E +S315E06342A010F02F034EBAF15E508F24524A8A6706A6 +S315E06342B04A426600FC9E286F002C4A44670A7944AA +S315E06342C0A540B0846628601836B90001F7BA38B9F4 +S315E06342D00001F7BE206F004E20B90001F7C0600E03 +S315E06342E02F390001F6524EB900E30224588F4A791A +S315E06342F0000110EC6712558F2F390001FAB23F3C8B +S315E063430000034EBAF00E508F42673F3C00024EB94F +S315E063431000E3AC164CEF7CFC000470014FEF003811 +S315E06343204E7542836000FC0E203C0001ED5023C0D5 +S315E06343300001EDD071FC018F43F90001ED0823C95B +S315E06343400001ED4C41F90001EAB02200EB8922411C +S315E063435043F10C005380220906810001B2B8208143 +S315E063436041E8FFDC4A8066E243F90001ECAA203CBF +S315E06343700001B2B823C90001EC5443F90001EBFE36 +S315E063438023C00001EAF8203C0001EC5423C000019D +S315E0634390EBFE203C0001EBA823C90001EBA823C098 +S315E06343A00001EB52203C0001EAFC43F90001EB52C9 +S315E06343B042B90001EAD423C90001EAFC23C0000143 +S315E06343C0ED0042B90001ED0442B90001ECAA4E7575 +S315E06343D04FEFFFF448D71C00266F0012246F0016D8 +S315E06343E0286F001A2F0B4EB900E1C4A4588F723FB1 +S315E06343F006800000000DB2806546206F001E10EF58 +S315E0634400001110FC003A10FC005C4A13671060026E +S315E063441010C0101B66FA4A12670410FC005C4A126D +S315E06344206718600210C0101A66FA4A14670C10FC2B +S315E0634430002E600210C0101C66FA42107001600222 +S315E063444042404CD71C004FEF000C4E754FEFFFE038 +S315E063445048D77C1C2C6F0028262F002C282F003091 +S315E0634460266F0034246F0024204A22481018661011 +S315E06344704EB900E2FF240680000000413C806020E4 +S315E06344807100723AB28066E21429FFFF45E90001E2 +S315E0634490123C005C48823C827112B2806602528AA8 +S315E06344A0200A204A9DCE60187301745CB481670A62 +S315E06344B0143C002EB48166086004204960022C49EE +S315E06344C022405280121166E04A8E66022C49200A27 +S315E06344D02203600A28412A4018DD52815280B0885F +S315E06344E066F24200284899CA725C198038007110F6 +S315E06344F0B2806602528824482A4460021ADAB5CE4C +S315E063450066FA4200244E95C8158048004A1667123B +S315E0634510528E204E244B600214D8B1C966FA93CE0C +S315E0634520D7C942134CD77C1C4FEF00204E752F0240 +S315E0634530202F0008736F000C600C20407568001C28 +S315E0634540B282670620104A8066F0241F4E75202FDC +S315E06345500004206F00086002200122402211B1C1ED +S315E063456066F64E75226F000441F90001EAF822907F +S315E063457020894E75202F0004671620406002204193 +S315E0634580221066FA20B90001EAF823C00001EAF8CE +S315E06345904E7520390001EAF86708204023D0000110 +S315E06345A0EAF84E7520790001ED004A88671C4240BF +S315E06345B023D00001ED0020B90001ED0423C800011A +S315E06345C0ED0442A8004C3140000420084E752F0AE2 +S315E06345D0246F00082F2A004C4EBAFF9A588F41F990 +S315E06345E00001ED04600220402010B5C066F8209219 +S315E06345F024B90001ED0023CA0001ED00245F4E7586 +S315E063460060CC2F0A4EBAFF9E24404A806734558FAA +S315E0634610486A00082F2F00182F2F00182F2F001835 +S315E06346203F2F001A4EBAFDAA4FEF00144A406708BF +S315E0634630356F00160006600A2F0A4EBAFF92588F4E +S315E063464095CA200A245F4E754FEFFFCC48D77CFCB2 +S315E0634650342F0038A143202F003A7342B6816616A1 +S315E063466043F90001AC7820404242600622C82050FC +S315E063467052824A8866F67342A346BC816C0001AEF9 +S315E06346802801E28C2F41003045F90001AC7847F907 +S315E063469000E1C4D449F900E035306000015E3605D7 +S315E06346A06000013A2A43DBC4714D20720C0071430A +S315E06346B022720C00102900051C00488608000006DB +S315E06346C066000120122800057E40CE814A476600D7 +S315E06346D000F6B38008000004670E7E10CC874A4676 +S315E06346E066000100600000E071F90001F5AC2C0999 +S315E06346F02E0806860000000E06870000000EA9411C +S315E0634700B280650000DE303B0A0848C04EFB080213 +S315E063471000460050000A001E00A42228000A202951 +S315E0634720000AB0816D0000A06E0000B86028558F66 +S315E06347303F3C002E2F074E942F4000345C8F3F3C66 +S315E0634740002E2F064E942F2F00342F004E934FEFFB +S315E063475000104A40666C2F072F064E93508F6062B7 +S315E0634760302800083229000890814A4066543C2884 +S315E063477000063E290006720B71C63F47002E7FC7CF +S315E06347802040E2A822402007E2A893C020094A40DD +S315E06347906630123C003F2008EA8FEA88CE81C0810A +S315E06347A090874A40661C322F002E701FC0867C1F9E +S315E06347B0C286600C102900041228000448804881F0 +S315E06347C090814A406F1C714D7343D68E43F20C0061 +S315E06347D020721C0025911C0025880C004A436C005E +S315E06347E0FEC452852005D0847140B0AF00306D00C1 +S315E06347F0FEAE7944E2844A44670A20044480424533 +S315E06348002C4060E0558275C220390001AC782440C3 +S315E063481043F90001AC7CE58A06820001AC80600264 +S315E0634820244820592488B48966F642904CD77CFCA8 +S315E06348304FEF00344E7542404FEFFFE048D77C1CA4 +S315E0634840266F002495CA283C00E2FF66263C00E01A +S315E06348500EC449EB004C4BFAFD3A3740005042AB8D +S315E063486000522F2B004C4EBAFD0C2F390001EDD0D0 +S315E06348704EB900E2FF345C8F3F2B0006486B0008BD +S315E06348804EB900E2FF48508F4DF90001AC78340031 +S315E063489060684A8A66124E9524404A80665C726412 +S315E06348A033C100018E66605671390001ED6E722E7A +S315E06348B0B28067404878001748790001ED64486A3A +S315E06348C0000420434E904FEF000C102A0005723F20 +S315E06348D0C08115400005202A000AD1AB0052302B77 +S315E06348E00050734052802D8A1C00288A374000505E +S315E06348F0284A95CA20444E9034004A4266944294CC +S315E06349004A8A670C24B90001EAF823CA0001EAF887 +S315E0634910558F2F2B004C3F2B00504EBAFD2C274072 +S315E0634920004C4CEF7C1C0008303900018E664FEF7B +S315E063493000284E75226F0008202F000420401219CC +S315E063494010C166FA4E752F0A2F02342F000C246FBE +S315E0634950001048790001FA823F2F00123F3C0005C0 +S315E06349604EB900E3B35A508F4A8A67362F3900014E +S315E0634970FA8248790001FBD44EBAFFBA5C8F3F12E4 +S315E063498048790001FBD448790001FAD44EB900E1D5 +S315E0634990C5D64FEF000C203C0001FAD423C00001DA +S315E06349A0FA8241F90001FA822F50000E3F42000C71 +S315E06349B0241F245F60FF00005F8641EF000433D06D +S315E06349C00001F90641F9000237B833D00001F9086E +S315E06349D0424041EF000633D00001F90C41EF000895 +S315E06349E033D00001F90E41EF000A33D00001F9102C +S315E06349F041EF000C33D00001F91241EF000E33C0F2 +S315E0634A000001F90A33D00001F91460FF000031EACE +S315E0634A104FEFFFC848D77CFC426774042E3C00E145 +S315E0634A20C4D44BF900E38A3649F900E3A39047F926 +S315E0634A3000E3AD5A3F3C00024EB900E3AC164DF9D4 +S315E0634A4000E34836206F00402068001850882F48FE +S315E0634A500030588F2C0F2A0F280F260F068600008A +S315E0634A6000300685000000320684000000340683C9 +S315E0634A7000000036558F3F024EB900E39982588FA6 +S315E0634A8024404A6A000667762F2F002C202A0018F6 +S315E0634A9050802F0020474E90508F4A4066602F2A01 +S315E0634AA000184E963F3C00013F2A00064E952F0ABA +S315E0634AB04E9442674267486A005F3F3C00033F2A81 +S315E0634AC000064E932F062F052F042F033F3C000469 +S315E0634AD03F2A00064EB900E3AD0A4FEF002C3F2FA5 +S315E0634AE000303F2F00343F2F00383F2F003C3F2AF2 +S315E0634AF000063F3C00144EBAFEC24FEF000C5382F1 +S315E0634B004A426600FF70426742674EB900E3AC16FD +S315E0634B104CEF7CFC00044FEF003C4E754FEFFFB467 +S315E0634B2048D77CFC246F005024390001FAB6202A6A +S315E0634B30001850802F0048790001F5AE4EBAFDF6B5 +S315E0634B40508F41F90001F5AE4240600A7310765C1E +S315E0634B50B681660252804A1866F271407208B28084 +S315E0634B606D40260F280F70010683000000402E3C3F +S315E0634B7000E333120684000000332C3C00E3A8BA5A +S315E0634B802A3C00E2FC524DF900E2FBCC4BF900E231 +S315E0634B90FAD249F900E334F847F900E3007E6000AE +S315E0634BA000D042A73F3C00233F3C00014EBAFD984C +S315E0634BB0508F4240600000D242001F400040558F54 +S315E0634BC02F033F3C00022F024EB900E2FB805C8F6D +S315E0634BD02E82426720474E905C8F426720462F02C3 +S315E0634BE04E903F3C000420453F3C00032F024E902D +S315E0634BF04FEF00104A40677E558F2F033F3C00021C +S315E0634C002F024E962F042F034E954FEF00144A2F33 +S315E0634C10003367622F0448790001F5AE4E94487914 +S315E0634C200001F5AE4E934FEF000C4A7900018E64B6 +S315E0634C30672A42A73F3C001F3F3C00024EBAFD088D +S315E0634C4048790001F5AE53802F4000384EB900E352 +S315E0634C5036104FEF000C202F002C60144EB900E3A2 +S315E0634C6036764A4067102F0A4EBAFDA6588F60061D +S315E0634C704A406600FF44558F2F023F3C00034EB91E +S315E0634C8000E333127001508F4CD77CFC4FEF004C3E +S315E0634C904E754E56FFD8A14148D70CFC342E00081A +S315E0634CA03A2E00123C2E00143E2E0016366E001885 +S315E0634CB0246E000A282E000E7142B2806700008CD3 +S315E0634CC0A541B280661C48790001F7C42F2A004CDF +S315E0634CD0486A00084EB900E33CA84FEF000C4A402F +S315E0634CE06774558F3F0B260A50833F073F063F05A0 +S315E0634CF0486EFFF8486EFFFC486EFFFE2F042F2ACE +S315E0634D00004C2F0342674EB900E33DB64FEF0024F4 +S315E0634D104A6EFFFE66064A6EFFFC672E558F3F0BB3 +S315E0634D203F073F063F05486EFFF8486EFFFC486E57 +S315E0634D30FFFE2F042F2A004C2F033F024EB900E3F8 +S315E0634D403DB64FEF00247001600E426742674EB98D +S315E0634D5000E3AC16588F42404CEE0CFCFFD84E5E37 +S315E0634D604E754FEFFFF048D70C0C242F0014262F17 +S315E0634D7000182F024EB900E33474588F204326405F +S315E0634D80421324484A1866FA42222F032F024EB989 +S315E0634D9000E1C4D416BC005C14BC005C4A4057C056 +S315E0634DA04CEF0C0C00084FEF0018488044804E75BA +S315E0634DB02A2E2A005C2A2E2A003A5C2A2E2A000032 +S315E0634DC04FEFFFD4A34048D77CFC286F0046282FDB +S315E0634DD00030226F0034362F0038266F003A3A2FC0 +S315E0634DE0003E3C2F00403E2F00423C6F004442545D +S315E0634DF073790001F59CB081661241F90001F7C44D +S315E0634E001418703F7302B0816CF6600274412F0927 +S315E0634E1048790001F7C44EBAFB1C508F41F9000193 +S315E0634E20F7C42448722A7118B28066F64212714357 +S315E0634E30123C0001B280671E6D084A43670000C4F6 +S315E0634E40600EA541B2806776A742B480670000C46E +S315E0634E5070FF600000C4102B000572404BF900E15F +S315E0634E60C4B64880C0814A40670C487AFF442F0A3B +S315E0634E704E95508F6016486B000E2F0A4EBAFAB6FF +S315E0634E80487AFF322F0A4E954FEF001048790001BA +S315E0634E90EDF048790001F7C445FAFEC84E92508FAB +S315E0634EA04A40661448790001EEA048790001F7C4E8 +S315E0634EB04E92508F4A40675E38BC00016058717904 +S315E0634EC00001F59CA341B280660813C20001F7C4F2 +S315E0634ED06020558F3F2B001C4879000219DC4EB9E0 +S315E0634EE000E38BEE508F204041E8000D13D00001C4 +S315E0634EF0F7C4487AFEC548790001F7C54EBAFA3673 +S315E0634F00600C487AFEAC2F0A4EB900E1C4B6508F06 +S315E0634F1060047001600270023F4E00403F47003E0E +S315E0634F203F46003C3F45003A2F440032223C0001B5 +S315E0634F30F7C44CD77CFC2F4100363F4000304FEF3F +S315E0634F40002C6000FD4E2A0000004E56FFE47179A6 +S315E0634F500001F59C48D70C1C342E0008A341362E7D +S315E0634F600014382E0016266E000AB280661471426B +S315E0634F70E78806800001B2B8224020693EE210105D +S315E0634F806018558F3F024879000219DC4EB900E399 +S315E0634F908BEE508F20401028000D3F3C0010488078 +S315E0634FA0487AFFA4487AFFA0487AFF9E3F004EB94D +S315E0634FB000E346024FEF001024404A806700009EFC +S315E0634FC02F004EB900E34836588F206A004C4A8872 +S315E0634FD0676C42403140001C20504A8866F4720197 +S315E0634FE033C1000219E64A8B672A558F486EFFFE86 +S315E0634FF03F023F013F043F032F2E00103F2E000E7A +S315E0635000266B0018508B2F0B2F0A4EBAFDB44FEF69 +S315E0635010001C6020558F3F023F3C00013F043F0385 +S315E063502048790001F7C42F0A3F3C00014EBAFC649D +S315E06350304FEF0014424133C1000219E66002424079 +S315E06350402F0A2D40FFF84EB900E3460042574EB9AA +S315E063505000E389C2588F202EFFF8600242404CEE8F +S315E06350600C1CFFE44E5E4E754E56FFD448D73C7C2F +S315E0635070342E0008558F362E000A45F900E398C0B2 +S315E0635080382E000C3A2E000E3C2E00103F024E9254 +S315E06350903E8326404E92588F72402440206A001821 +S315E06350A071280008B280660C7144123C0003B2803A +S315E06350B06C0000E0486EFFFE486EFFF83F043F0376 +S315E06350C04EB900E36F0E4FEF000C4A80670820404D +S315E06350D03828000660024244206B0018724071284B +S315E06350E00008B280661442424BF900E3A28649FAAD +S315E06350F0FE5A47FAF91C60000084558F486EFFFC40 +S315E0635100426742673F063F052F2EFFF83F04202A9A +S315E0635110001850802F002F084EBAFCA64FEF001CF4 +S315E06351204A40676E71427743B680670C558F3F029C +S315E06351304EB900E389C2588F47FAF8D64A6EFFFC48 +S315E0635140671448790001EDD44E9348790001EE8403 +S315E06351504E93508F603C2F0A4E93588F60343F06D0 +S315E06351603F052F2EFFF83F042F0A3F024E944FEF81 +S315E063517000104A4067062F0A4E93588F3F023F3925 +S315E06351800001FABE4879000219DC4E95508F34006F +S315E063519066CC4CEE3C7CFFD44E5E4E754FEFFFD84B +S315E06351A0724048D77C3C206F002C20680018712839 +S315E06351B00008B280662E260F283C00E3A2864242B0 +S315E06351C04DF900E38BEE06830000002645F900E324 +S315E06351D0AC164BFAF77249FAFD7247F900E3958C20 +S315E06351E0600000B6558F4267426742674267487917 +S315E06351F00001F7C42F083F3C00014EBAFA964FEF21 +S315E063520000144A40670000B8558F3F3C00014EB931 +S315E063521000E3958C600000A671790001F59CA345D7 +S315E0635220BA80661841F90001F7C410187A3F730033 +S315E0635230BA816CF648803F4000266018558F3F027E +S315E06352404879000219DC4E96204071A8000D3F4074 +S315E0635250002E508F426742674E922F033F3C001DFC +S315E06352603F3C00024E9542673A003F3C00027B4575 +S315E06352704E924FEF0010A340B085661C42674267CB +S315E063528042A73F3C000342A73F024E944FEF000E16 +S315E06352903F3C00014E93588F3F0220443F39000163 +S315E06352A0FABE4879000219DC4E90508F34006600EE +S315E06352B0FF68426742674EB900E3AC16588F4CD736 +S315E06352C07C3C4FEF00284E75226F0008202F0004C8 +S315E06352D02040121910C166FA4E75256400002F0A44 +S315E06352E02F027409322F000C226F000E204945F914 +S315E06352F000E1C5D610FC0030420010BC003013401C +S315E0635300000271C1B480640C558F3F01487AFFCCCB +S315E06353102F09600A558F3F01487AFFC02F084E92E6 +S315E06353204FEF000C241F245F4E75202000004FEFE3 +S315E0635330FFEC700B48D70C1C362F0018246F001A4D +S315E063534073C3E0A930014A790001FAD06726754153 +S315E0635350780BB8826C12183C000CB8826710200197 +S315E06353600680FFFFFFF460064A4167066006740144 +S315E06353706004700C4242558F2F0A3F0047FAFF6084 +S315E06353804E935C8F486A000220030280000007E0C8 +S315E0635390EA883F004E93508F4A790001FAD067144A +S315E06353A0203C0002379C4A426706203C000237A84D +S315E06353B02F006004487AFF74486A00044EBAFF0A15 +S315E06353C04CEF0C1C00084FEF001C4E754FEFFFE8E7 +S315E06353D048D7047C362F001C7C1F242F001E2A022C +S315E06353E045FAFEFC548528030284000001E0CC8381 +S315E06353F04A790001FAD26712EA8C558F2F023F048D +S315E06354004E92548F2E853F066010558F2F023F06CE +S315E0635410EA8C4E92548F2E853F044E9271C3588226 +S315E06354202F42002674137209E2A822000681000067 +S315E063543007BC71FC147B4C010800E4A84CEF047CC8 +S315E06354400008C1FC006492803F4100244FEF0020D6 +S315E06354506000FE8C256C75004FEFFFD248EF0C0CB5 +S315E06354600002266F0036260F242F003206830000E3 +S315E063547000202F033F2B000845F900E2FB804EBA7C +S315E0635480FF4C548F2E833F2F003E2F024E924FEFF9 +S315E0635490000A260F0683000000272F033F2B000632 +S315E06354A04EBAFE8C548F2E833F2F00402F024E92CE +S315E06354B02F2F004A487AFF9E260F068300000027B7 +S315E06354C02F034EB900E1C5D64FEF00122E833F2F6F +S315E06354D000422F024E924CEF0C0C000C4FEF00385B +S315E06354E04E754E56FFB0302E000848D70CFC362E6C +S315E06354F0000A382E000C3A2E000EB7800800000032 +S315E06355006728558F3F2E00123F2E00103F053F045C +S315E06355103F3C00073F3C00013F3C00034EB900E2DD +S315E063552066744FEF001060000218487800182F2E5B +S315E06355300014486EFFD04EB900E00EC44FEF000C86 +S315E06355407020721013C00001F7C4102EFFD1C28021 +S315E06355504A41670472076002722013C10001F7C50E +S315E0635560722013C10001F7C64A006D0C43EEFFDA01 +S315E063557045F90001F7C76024703A722041EEFFD027 +S315E063558013D00001F7C745F90001F7CA13C000015C +S315E0635590F7C813C10001F7C9603814C02049101970 +S315E06355A0670E7300742EB48166F0600414FC002009 +S315E06355B0224A7E0B93FC0001F7C4BE896CEE4A1067 +S315E06355C067065288600214C0101866FA600414FC19 +S315E06355D00020204A700F91FC0001F7C4B0886CEE9E +S315E06355E0102EFFD172102C0A4880C0814A406708AA +S315E06355F042021D42FFE9604C202EFFD64242600C18 +S315E06356000680000003FF7E0A5282EEA80C800098B3 +S315E0635610967F63087342A947BE8166E42F00487AA2 +S315E0635620FE3447EEFFE92F0B4EB900E1C5D675426E +S315E063563041FA0B0A2F302C002F0B4EB900E1C4B6AA +S315E06356404FEF0014486EFFE94EB900E1C4A4588FEA +S315E06356507208928020013041600414FC002053807C +S315E06356607340A142B48166F271C8204643EEFFE916 +S315E0635670D1C060041080204A101945E8000166F441 +S315E063568010BC002014FC0020558F240E5F822F028D +S315E06356903F2EFFD44EBAFD367003508F204214D0AE +S315E06356A0538014E8000154884A40670414FC002DD3 +S315E06356B04A4066EA14FC0020558F47F900E25FCC66 +S315E06356C014FC0020486EFFF23F2EFFD24EBAFC6018 +S315E06356D014EEFFF214EEFFF314FC003A204A95FC55 +S315E06356E00001F7BE10EEFFF410EEFFF510FC0020AC +S315E06356F0486EFFF62F084EBAFBD04FEF000E3F3CE5 +S315E063570000013F3C00013F3C00014E9348790001B4 +S315E0635710F7C42F3900014A384EB900E034EC3F0A4A +S315E06357203F053F043F3C00034EB900E267404FEF5D +S315E063573000163F3C00013F3C000342674E93508FA7 +S315E063574030034CEE0CFCFFB04E5E4E754E56FFCC0E +S315E063575048D7040C4878001E240E51822F2E000889 +S315E0635760486EFFDA4EB900E00EC42F024EB900E28E +S315E06357705EB6486EFFEC45F900E25E324E922F2E3E +S315E0635780FFF43F2EFFEA3F2EFFE83F2EFFE63F2E74 +S315E0635790FFE43F2EFFE23F2EFFE04EBAFD464FEFBA +S315E06357A000202E8236004E92588F30034CEE040C66 +S315E06357B0FFCC4E5E4E754E56FFF82F0A2F02486EAB +S315E06357C0FFF8242E0008486EFFFA486EFFFC486E29 +S315E06357D0FFFE2F024EB900E3A96E4FEF001245F9C3 +S315E06357E000E3A8D83F2EFFF83F2EFFFA3F2EFFFCDB +S315E06357F03F2EFFFE426742674267426742674E92C9 +S315E06358003F2EFFF83F2EFFFA3F2EFFFC3F2EFFFEB3 +S315E06358103F3C000842672F024EB900E3A7664FEFAD +S315E063582000223F2E000C2F024EB900E3A8BA5C8F2C +S315E06358303F2EFFF83F2EFFFA3F2EFFFC3F2EFFFE83 +S315E063584042674267426742673F3C00034E924FEFCF +S315E06358500014242EFFF0246EFFF470014E5E4E7545 +S315E06358602F02242F0008558F42672F024EBAFF4856 +S315E06358703F3C000A3F2F00162F024EB900E2A1D04B +S315E06358804FEF0010241F204042504E75256C640094 +S315E06358904FEFFFDE48EF0C0C0002242F0026202F8B +S315E06358A0002E426742B90001F7B842B90001F7BC7E +S315E06358B042B90001F7C0220F0681000000222F01E2 +S315E06358C02F012F002F00426742A742674EB900E3DC +S315E06358D039404FEF001C4A4067602F390001F7B843 +S315E06358E0487AFFAA260F0683000000202F0347F9B4 +S315E06358F000E1C5D645F900E2FB8053B90001F7BC88 +S315E06359004E935C8F2E833F2F002E2F024E922F39BC +S315E06359100001F7BC487AFF76260F0683000000266F +S315E06359202F034E934FEF00122E833F2F00302F024B +S315E06359304E924FEF000C7001600242404CD70C0C64 +S315E06359404FEF00204E754FEFFFC448D71C7C262FE0 +S315E06359500040246F004447FAF9702F034879000149 +S315E0635960F5AE24390001FA8A42444E932F0348790F +S315E06359700001F6004E934FEF001041F90001F5AEDA +S315E0635980600252847118722AB28066F6260F068325 +S315E06359900000002F2F032A0A06850000000E2F055C +S315E06359A04EB900E2FA7A548F2E8347F900E2FBCED2 +S315E06359B03F3C00022F024EB900E2FB805C8F2EAAC9 +S315E06359C0000A3F3C00033F3C00053F3C00042F0ACE +S315E06359D02F024EBAFA844FEF001242673F3C000152 +S315E06359E03F3C0001102A000548803F003F3C000928 +S315E06359F02F024E934FEF000E3F3C000142673F3C60 +S315E0635A000001122A000548813F013F3C00082F024E +S315E0635A104E934FEF000E42672F024EBAFD9A3F3C1C +S315E0635A20000B3F3C000A2F024EB900E2FC524FEFF7 +S315E0635A3000104A40670000EC4267794449F900E2A6 +S315E0635A40FAD22644D7FC0001F5AE06840001F600DF +S315E0635A503F3C00024EB900E3AC16548F2C0F06862A +S315E0635A60000000242F063F3C00022F024EB900E2FD +S315E0635A70FBCC2F0B2F034E942F042F064E942F044B +S315E0635A802F0B4EB900E1C4D44FEF00244A40672A96 +S315E0635A9048790001F60048790001F5AE4EB900E3B6 +S315E0635AA001C44EB900E33676508F3600670E2F0495 +S315E0635AB02F054EBAF814508F60027601182A000556 +S315E0635AC03F3C000A48843F3C00092F024EB900E29E +S315E0635AD0A1D0508F20403010080000006706A34233 +S315E0635AE08484600474FEC484732A00057102B08101 +S315E0635AF067223F023F3C000148790001F6004EB958 +S315E0635B0000E3009E4EB900E33676508F36006704B5 +S315E0635B1015420005426742674EB900E3AC16588FFB +S315E0635B206002424330034CD71C7C4FEF003C4E751A +S315E0635B305C2A2E2A00004FEFFFE048D7003C262F71 +S315E0635B40002842673F3C00024EB900E3AC162F2FB4 +S315E0635B50002848790001F5AE24390001FA924EBA7D +S315E0635B60F7684FEF000C41F90001F5AE2A08722A97 +S315E0635B707118B28066F6280306840000000E2F04CF +S315E0635B802F054EBAF744487AFFA82F054EB900E1D0 +S315E0635B90C4B648790001F5AE3F3C00053F3C0006DC +S315E0635BA02F024EBAFCEC42673A0042674EB900E315 +S315E0635BB0AC164FEF00204A45674E2A0F0685000074 +S315E0635BC000132F052F044EB900E2FA7A548F2E851F +S315E0635BD03F3C00022F024EB900E2FB805C8F2EB998 +S315E0635BE00001F7C03F3C00073F3C00043F3C000335 +S315E0635BF02F032F024EBAF8624FEF00123F3C0008C4 +S315E0635C002F024EBAFC5C508F4CD7003C70014FEFCD +S315E0635C1000204E753A5C2A2E2A004E56FFC048D7BE +S315E0635C200C1C426745F900E3AC16362E00083F3C90 +S315E0635C30000218034E924200487AFFDA487900017F +S315E0635C40F5AF24390001FA8E1D43FFFE13C300014D +S315E0635C50F5AE1D40FFFF4EBAF67048790001F5AE2A +S315E0635C603F3C00043F3C00052F024EBAFC244267EA +S315E0635C70360042674E924FEF001C4A43670000B41A +S315E0635C801004558F486EFFF6486EFFFA0684FFFFF1 +S315E0635C90FFC04884260E0683FFFFFFD445F900E282 +S315E0635CA0FB8047F900E1C5D648800680FFFFFFC069 +S315E0635CB03F004EB900E3017E4FEF000A2F033F0436 +S315E0635CC04EB900E300F45C8F486EFFFE3F3C000292 +S315E0635CD02F024E925C8F2E830683000000173F3CB3 +S315E0635CE000032F024E922F390001F7C0487AF76618 +S315E0635CF02F034E934FEF00122E830683FFFFFFF5CC +S315E0635D003F3C00062F024E922F2EFFF6487AF74667 +S315E0635D102F034E934FEF00122E833F3C00072F0273 +S315E0635D204E924FEF000A3F3C00082F024EBAFB3219 +S315E0635D30508F4CEE0C1CFFC070014E5E4E754FEFFC +S315E0635D40FFE848D71C1C3F3C000A36390001FAC815 +S315E0635D5024390001FABA45F900E2A1D03F3C0004D8 +S315E0635D602F024E924A4356C1508F20404881448168 +S315E0635D7030813F3C000A3F3C00052F024E924A4386 +S315E0635D8057C1508F20404881448130813F3C000AAF +S315E0635D9036390001FAC63F3C00082F024E924A4369 +S315E0635DA056C1508F20404881448130813F3C000A90 +S315E0635DB03F3C00092F024E924A4357C1508F204021 +S315E0635DC04881448130813F3C000A36390001FACA92 +S315E0635DD03F3C000C2F024E924A4356C1508F2040FF +S315E0635DE04881448130813F3C000A3F3C000D2F02ED +S315E0635DF04E924A4357C1508F204048814481308157 +S315E0635E003F3C000A36390001FACE3F3C00162F02CA +S315E0635E104E924A4356C1508F204048814481308137 +S315E0635E203F3C000A3F3C00172F024E924A4357C15C +S315E0635E30508F20404881448130813F3C000A3639A7 +S315E0635E400001FAD03F3C001F2F024E924A4356C1EF +S315E0635E50508F20404881448130813F3C000A3F3C7B +S315E0635E6000202F024E924A4357C1508F204048810B +S315E0635E70448130813F3C000A36390001FAD23F3C27 +S315E0635E8000232F024E924A4356C1508F20404881E9 +S315E0635E90448130813F3C000A3F3C00242F024E920E +S315E0635EA04A4357C1508F7610204048814481308100 +S315E0635EB03F3C000A47F900E2A1D03F0352832F0239 +S315E0635EC04E92508F72152040425071C3B28066E0A5 +S315E0635ED0426749F900E3A64445F900E2FC524267AA +S315E0635EE04E943F3C000A33C00001FACC06800000C2 +S315E0635EF000103F002F024E934FEF000A204030BC64 +S315E0635F00000142673F3CFFFF42674EB900E2F7ECB0 +S315E0635F10508F3F3C000A4A4057C33F3C001B4883CF +S315E0635F2044832F024E93204030833F3C000A3F3C3C +S315E0635F30001C2F024E934FEF000EA341B383204024 +S315E0635F40308342672F024EBAF86E3F3C00263F3CF1 +S315E0635F5000252F024E924FEF00104A406700011C66 +S315E0635F603F3C00053F3C00042F024E923F3C000954 +S315E0635F7033C00001FAC83F3C00082F024E923F3C13 +S315E0635F80000D33C00001FAC63F3C000C2F024E926F +S315E0635F903F3C001733C00001FACA3F3C00162F02AC +S315E0635FA04E924FEF00203F3C000133C00001FACE32 +S315E0635FB03F004EB900E3A7203F3C000533C0000134 +S315E0635FC0FACE3F3C00102F024EB900E2FC043F3CA0 +S315E0635FD0000133C00001FACC3F004E943F3C001C05 +S315E0635FE033C00001FACC3F3C001B2F024E923F3C8C +S315E0635FF0002038003F3C001F2F024E927779000164 +S315E0636000FAD04FEF00207340B283671A323900014A +S315E0636010F59CA34333C00001FAD0B7814A4157C325 +S315E063602048834483600242433F3C00243F3C002371 +S315E06360302F024EB900E2FC5275790001FAD2508F15 +S315E06360407340B282671A32390001F59CA34233C0CA +S315E06360500001FAD2B5814A4157C1488144818681BC +S315E06360604A4457C0558F4267488044803F00426741 +S315E06360704EB900E2F7EC508F6002424330034CD7EF +S315E06360801C1C4FEF00184E754FEFFFE448D7040C26 +S315E0636090260F06830000000F2F0324390001FA9EC2 +S315E06360A02F2F00244EB900E2FA7A548F2E8345F9F6 +S315E06360B000E2FB803F3C00022F024E924FEF000A64 +S315E06360C02F2F00263F3C00032F024E924FEF000A2C +S315E06360D03F3C00032F024EBAF6DE3F3C00053F3CF1 +S315E06360E000042F024EB900E2FC524FEF00104A4023 +S315E06360F06736558F2F033F3C000245F900E2FBCC40 +S315E06361002F024E922F2F00342F034EB900E2FAD2BC +S315E06361104FEF00122F2F002E3F3C00032F024E92CB +S315E06361204FEF000C7001600242404CD7040C4FEF16 +S315E0636130001C4E75004B004D0047000000E36134E0 +S315E063614000E3613500E3613700E36139226F0008FC +S315E0636150202F00042040121910C166FA4E752F02F3 +S315E0636160742A206F00082068000A10107300B48157 +S315E06361706712143C003FB481670A4A0056C0488000 +S315E0636180448060024240241F4E752F02207900024C +S315E063619004324240600E73680006A542B48166022B +S315E06361A0528020504A8866EE7140A541A342B28090 +S315E06361B05EC04880C082241F4E754FEFFFE848D724 +S315E06361C0047C322F001C302F001E246F0020226FC8 +S315E06361D00024207900020432601675680006A7433E +S315E06361E0B682660A382800183A28001A600A2050F0 +S315E06361F04A8866E64245424498819A807544774583 +S315E0636200A346D4829582D683978384868686C9C2DB +S315E0636210CBC379447B45B8856C0C3481C7F90001FF +S315E0636220FCD6D083600AC5F90001FCD4D2823481FE +S315E06362304CD7047C32804FEF00184E752F022079DD +S315E063624000020432716F0008601473680006A542A9 +S315E0636250B481660873680016B081670620504A8881 +S315E063626066E82008241F4E75400042004E56FFCC78 +S315E063627048D71C0C266E0008240E0682FFFFFFEF4C +S315E063628024790001FAA21D6B0017FFFE49F900E2CB +S315E0636290FB801D40FFFF2F2B000A2F024EBAFEAE96 +S315E06362A05C8F486EFFFE3F3C00022F0A4E945C8F84 +S315E06362B02E823F3C00032F0A4E94342B00123F3C60 +S315E06362C0000A49F900E2A1D03F3C00062F0A4E944A +S315E06362D04FEF0014A341B58120404A4157C148813D +S315E06362E0448130813F3C000A3F3C00072F0A4E94CD +S315E06362F04A4257C1508F20404881448130813F3CB8 +S315E0636300000A3F3C00092F0A4E9428404EBAFE7CB1 +S315E0636310508F4A4067047008600242403880558F68 +S315E0636320426749F900E2FBCC2F0A4EB900E357B660 +S315E06363305C8F486EFFFC3F3C00022F0A4E944FEFA2 +S315E0636340000A486EFFE23F3C00032F0A4E943F3C4F +S315E0636350000349F900E2A1D03F3C00082F0A4EB999 +S315E063636000E2FC043F3C000A3600200350803F0015 +S315E06363702F0A4E94204042503F3C000A3F3C0006C1 +S315E06363802F0A4E944FEF00242040A3403410C4807C +S315E06363904A4366000122102EFFFC772EFFFE730050 +S315E06363A0B283670000BA4A00670000B44880558F3D +S315E06363B03F004EBAFE88588F24404A8066000098B4 +S315E06363C0558F42674EB900E31E9A588F24404A8040 +S315E06363D06770356B00040004356B00060006356BA9 +S315E06363E000080008256B000A000A49EA001A260A33 +S315E06363F0068300000018486A000E487AFE6C4EB9C0 +S315E063640000E31F80102EFFFC72FF356B0012001253 +S315E0636410488035410014354000162F0C2F033F2B7F +S315E0636420001A3F2B00184EBAFD922F0C2F033F2A1A +S315E0636430001A3F2A00184EB900E3E34C4FEF002001 +S315E0636440601442A73F3C001E3F3C00014EB900E3A7 +S315E06364504946508F6002264A347C0001600295CA41 +S315E0636460736B00127142B081670837420012347C65 +S315E06364700001240E0682FFFFFFE22F02486EFFEF64 +S315E06364804EB900E1C4D4508F4A4067704A2EFFE2AA +S315E0636490676A2F024EB900E1C4A47240486B000AF2 +S315E06364A02F02347C00011D8108E24EB900E31F80B0 +S315E06364B04FEF000C60467743A340B083663C267992 +S315E06364C00002043295CA754249F900E31ED6602498 +S315E06364D0716B0012B480661A102EFFFC736B0016A4 +S315E06364E048807140B081660A347C00012F0B4E947C +S315E06364F0588F26534A8B66D8600295CA300A4CEEAB +S315E06365001C0CFFCC4E5E4E754FEFFFF048D70C0C7C +S315E0636510246F001C242F0014362F001848780022BD +S315E0636520302F001E47F900E2A1D0C1FC00220680AD +S315E063653000020DC62F002F0A4EB900E00EC4256F88 +S315E0636540002C00083F3C00063F032F024E93204099 +S315E063655030BC001F3F3C000C3F032F024E932040AC +S315E0636560208A4CEF0C0C001C4FEF002C4E754FEF5E +S315E0636570FFE848D71C1C346F0022242F001C362FFB +S315E063658000203F3C00163F3C001D2F024EB900E25F +S315E0636590A1D0508FA3412040714A3810B2806C4637 +S315E06365A0558F3F0A47F900E1C630538A3F043F3CC3 +S315E06365B000014E933F00717900014A3E20006A0272 +S315E06365C05280E28054803F004EB900E2FE8C4FEF8A +S315E06365D0000A3F0A3840988C3F04380C3F034E93D9 +S315E06365E0508F3640600297CB3F3C001245F900E29C +S315E06365F0A1D049F900E3897C3F3C001E2F024E920D +S315E06366002040308B3F3C001647FAFEFE3F3C001EBF +S315E06366102F024E924FEF000E45FAFB322040308454 +S315E06366203F3C00024E942F0048790001FAD44E9223 +S315E063663048790001FAD4487900023778200350801C +S315E06366403F003F3C00182F024E934FEF001A3F3C4A +S315E063665000034E942F0048790001FBD44E924879AB +S315E06366600001FBD44879000237542003068000001A +S315E0636670002877433F003F3C00192F024E9341F9D0 +S315E063668000E525342F303C004879000237BC4E9252 +S315E06366904FEF001E2EBC000237BC3F3C00162F02B4 +S315E06366A04EB900E2FB804CEF1C1C000C4FEF00245C +S315E06366B04E754FEFFFB648EF7CFC0002242F004E89 +S315E06366C03C2F0054362F00522F0242674BF900E30A +S315E06366D0A8BA2E0653874EB900E333127146508F3C +S315E06366E02A0F0685000000344DF900E2FBCC49EF42 +S315E06366F000402640600002A6558F486F003E2004A6 +S315E063670058803F002F024E964FEF000C4A2F003C15 +S315E06367106602344452847344714AB0816EDA558FAB +S315E0636720588A3F0A2F024E952F0C486F004E486FEA +S315E06367300054486F005A38004EB900E3AC344FEF6B +S315E0636740001872132004028000007FFF0680FFFFBB +S315E0636750FFF271C0B28065000244303B0A0848C06C +S315E06367604EFB0802025E0034003402380238023817 +S315E06367700238023802380238023802380238002812 +S315E0636780002E007000C202420242024270FF6000C5 +S315E063679001BA7001600001B43F3C000A283C00E2A4 +S315E06367A0A1D020443F3C00142F024E902044224067 +S315E06367B034513F3C000A3F3C00132F024E904FEFAB +S315E06367C000107208224038117144B28066000132CB +S315E06367D0600001F4558F2F053F3C001E2F024EB932 +S315E06367E000E2A49C302F004057803F400040302FAA +S315E06367F000445C803F4000442F053F2F00543F2F09 +S315E063680000584EB900E2FDE44FEF00144A406616C5 +S315E0636810736F0044716F0036B0815CC0A3414880FA +S315E0636820808160000126558F3F3C0003283C00E3EE +S315E0636830ADBE204445F900E2A1D04E90548F2F05BA +S315E06368403F3C001D2F024EB900E2A474302F004096 +S315E063685056803F400040302F00445D803F40004417 +S315E06368603F3C00103F3C001D2F024E92224032AF68 +S315E063687000483F3C00143F3C001D2F024E922040EF +S315E063688030AF00544FEF001A3F3C00013F3C001E1F +S315E06368903F3C001D2F024EB900E3ABA83F40003EEC +S315E06368A0302F004057803F400040302F00445C80EB +S315E06368B03F4000443F3C00103F3C001D2F024E9298 +S315E06368C0224032AF00483F3C00143F3C001D2F029C +S315E06368D04E922244204030AF00544FEF001A3F3CC3 +S315E06368E000024E913EBC03E83F073F2F00384EB9A6 +S315E06368F000E1C630508F90834A40664E6000009E4A +S315E0636900734AB081670000963F3C000A41F900E2B2 +S315E0636910A1D03F3C00142F022F4800364E90224010 +S315E0636920328A3F3C000A3F3C00132F02206F003E51 +S315E06369304E904FEF000E204030843F3C00122F0212 +S315E06369404EB900E33404508F60522800D8832004A4 +S315E063695046807140D0809180C8807144B7C06E0232 +S315E0636960380773437144B08167323F0645F900E304 +S315E0636970340436043F042F024EBAFBF45C8F3F3C8B +S315E063698000162F024E925C8F3F3C001D2F024E9203 +S315E06369905C8F3F3C00172F024E92508F4244347C0B +S315E06369A000066000FD54558F2F023F3C00034EB94D +S315E06369B000E3331230034CEF7CFC00084FEF0050EA +S315E06369C04E75780860024244347C00016000FF3A09 +S315E06369D02A2E2A004FEFFFD848D77C3C266F00303B +S315E06369E0260F2A2F002C068300000024740442132A +S315E06369F095CA4DF900E2FBCC49FAF7524BF900E14F +S315E0636A00C4A4558F2F033F022F054E964FEF000C1C +S315E0636A104A2F0024672E300A670A722C714A528A1B +S315E0636A2017810800794A487AFFA8487348004E946C +S315E0636A302F03487348024E942F034E954FEF00148D +S315E0636A4045F20802528271C2720CB28066B44CD7C8 +S315E0636A507C3C4FEF00284E754FEFFFE048D70C7C48 +S315E0636A607404282F0024260F2A2F002806830000AB +S315E0636A70001C47F900E0353045F900E2FB80558FAD +S315E0636A803F3C002E2F057A2E4E93508F2040731095 +S315E0636A90BA816602528022402043600210C02A090E +S315E0636AA01019670873007C2CBC8166F04210558F21 +S315E0636AB02F033F0252822F044E9271C24FEF000CB6 +S315E0636AC0720CB28066B84CD70C7C4FEF00204E75E3 +S315E0636AD04E56FF9C48D73CFC3F3C001647F900E224 +S315E0636AE0A1D078FE24390001FAA6246E000C286E44 +S315E0636AF000083F3C001A2F024E93204036103F3C7D +S315E0636B0000163F3C001B2F024E93323900014A3E8A +S315E0636B102040548130813F3C00123F3C001D2F02F0 +S315E0636B204E93323900014A3E2040548130813F3CE6 +S315E0636B3000163F3C001D2F024E93323900014A3E58 +S315E0636B404FEF002020409881220478FED281D283E1 +S315E0636B5030813F3C00123F3C001C2F024E9332399A +S315E0636B6000014A3E20409881D68430833F3C00163C +S315E0636B703F3C001C2F024E93323900014A3E2040CF +S315E0636B80548130812F0A4EBAF5D64FEF00143F3C5D +S315E0636B90000A4A4057C33F3C0020488344832F02A0 +S315E0636BA04E93508F4A436704720860024241204025 +S315E0636BB0280E30810684FFFFFFF447F900E2A1D097 +S315E0636BC02F042F0C4EB900E2FA7A548F2E843F3CA1 +S315E0636BD000022F024EB900E2FB802F2A000E2F023D +S315E0636BE04EBAFE763F3C000A3F3C00132F024E93BB +S315E0636BF04FEF001C204042503E2A00040807000085 +S315E0636C0067183F3C000A3F3C00132F024E93508FB8 +S315E0636C10204030BC0008700E60107008C0874A40A0 +S315E0636C2057C048800680000000103F3C000A47F9E1 +S315E0636C3000E2A1D078133F002F024E93508F72107B +S315E0636C40204030BC0001302A00043F3C000AC0818A +S315E0636C504A4057C0488098803F042F024E932040B5 +S315E0636C6030BC0001382A00123F3900019474518424 +S315E0636C703F043A442F024EBAF8F63F390001947462 +S315E0636C803F042F024EBAFA2C3F3C00023C003F3CE5 +S315E0636C9000132F024EB900E2FC044FEF00204A4096 +S315E0636CA066047810600242443F3C000A06800000B6 +S315E0636CB000133F002F024EB900E2A1D020404250BC +S315E0636CC03F3C00033F3C000E2F024EB900E2FC045A +S315E0636CD04FEF00104A40670E7340A545BA816608D8 +S315E0636CE072088881600278033F3C000A06800000F0 +S315E0636CF0000E47F900E2A1D03F002F024E932040F9 +S315E0636D0042503F3C00033F3C001F2F024EB900E276 +S315E0636D10FC043F3C000A3A00200506800000001FA1 +S315E0636D203F002F024E934FEF0018204042504A45F2 +S315E0636D306600011E2A0E0685FFFFFFC42F052F029C +S315E0636D404EBAFC92508F4A4366162F2A000E2F05E1 +S315E0636D504EB900E1C4D4508F4A406616600000CA5B +S315E0636D60558F3F3C00014EB900E31E9A588F26408B +S315E0636D706002264A4A8B670000984A4366142F2AC4 +S315E0636D80000E486EFFC44EB900E1C4D4508F4A404A +S315E0636D90672A240E0682FFFFFFC42F024EB900E185 +S315E0636DA0C4A47240486B000E2F021D8108C44EB91D +S315E0636DB000E31F804FEF000C700160024240B5CBE9 +S315E0636DC067627A402F0C240E0682FFFFFFC42F0210 +S315E0636DD04EBAF37A2F024EB900E1C4A4486B000AB7 +S315E0636DE02F02244B1D8508C44EB900E31F80424041 +S315E0636DF072FF374400044FEF001437400006374113 +S315E0636E00000837400016374000183740001A6028FC +S315E0636E1042A73F3C001E3F3C00014EB900E34946B2 +S315E0636E204240508F4A436610754D7346B282660898 +S315E0636E307F477344B28767342006068600000028DE +S315E0636E405080354000123546001435440004601620 +S315E0636E507B45A344B88566124A43660E2F0A4EB94C +S315E0636E6000E31ED6588F7001600242404CEE3CFC54 +S315E0636E70FF9C4E5E4E750000226F0008202F0004D3 +S315E0636E802040121910C166FA4E752F0B2F0A3F3C4C +S315E0636E90000C45F900E2A1D03F2F00162F2F00101A +S315E0636EA04E923F3C000C26403F2F00202F2F001CC4 +S315E0636EB04E924FEF0010245F20402690265F4E757A +S315E0636EC04A6F0004670470026002424042673F0013 +S315E0636ED04EB900E3AC16588F4E752F02342F000877 +S315E0636EE0558F3F3C00014EBAFFD8588F4A4267063A +S315E0636EF04EB900E3A0E24EB900E3A14A4EB900E31E +S315E0636F00A1CE42403F400008241F60B400004FEF2B +S315E0636F10FFF4302F001048D7040C346F0012242F8F +S315E0636F2000184A40664A714A761F2200E789EB8871 +S315E0636F3090810680000219E22040203C00E36F0C5A +S315E0636F4073D0B681660C558F3F0A4EB900E3A30A48 +S315E0636F50588F558F2F022F003F0A95CA3F3CFFFF9C +S315E0636F603F3C00014EB900E330BE4FEF0010606670 +S315E0636F70558F3F004EB900E398C03E8A22402069B0 +S315E0636F8000182F28004C4EB900E3452E508F24405D +S315E0636F904A806740122A0005761006800000000EDC +S315E0636FA041F900E330BE4881C2834A416710558F99 +S315E0636FB02F022F003F3CFFFF3F3C0001600C558FE3 +S315E0636FC02F022F003F3CFFFF426742674E904FEF31 +S315E0636FD0001060024280206F0014208A4CD7040CB4 +S315E0636FE04FEF000C4E754FEFFFF048D70C0C262F92 +S315E0636FF00014342F001C246F001847F900E3A6A899 +S315E0637000600C3F0248803F002F034E93508F101A67 +S315E063701066F04CD70C0C4FEF00104E754FEFFFD078 +S315E063702048D73CFC7412262F003445F900E3A6A842 +S315E06370303F3C00013F0252822F034E927142508FD2 +S315E06370407223B28066EA558F42677C01428242448C +S315E0637050424549F900E3A28647FAFEB445F900E3FF +S315E0637060615E487900E502DC2F0333C6000237B27E +S315E063707033C6000237A233C6000237B04EBAFF68A2 +S315E06370804FEF000C2E0F06870000002E4BEF002A11 +S315E0637090600000A82F072F0D3F05A3463F39000187 +S315E06370A0FAC04E934FEF000C2240306900067348F6 +S315E06370B0BC81673C6D0632086710606CA546BC818F +S315E06370C0673EA740B08166606058243C00E502E213 +S315E06370D04A6F002E66522F004E92588F4A4066489A +S315E06370E04241243C00E502E533C1000237B2603831 +S315E06370F04246243C00E502E933C6000237B2602823 +S315E06371002040A34171680012243C00E502EFB2809F +S315E06371106606243C00E502ED424633C6000237B21A +S315E06371206006243C00E502FE558F426752842F02D7 +S315E06371302F034EBAFEB24FEF000C3F053F39000115 +S315E0637140FABE4879000219DC4E94508F3A00660025 +S315E0637150FF444EB900E3991441FAFE8C4A80675CBA +S315E0637160558F3F3C0001487900E503072F034E90B6 +S315E063717071444FEF000CA341B280674C4A446710F9 +S315E06371804246203C00E502F933C6000237A2601AA4 +S315E0637190424033C0000237A233C0000237B033C087 +S315E06371A0000237B2203C00E502F2558F42672F00BA +S315E06371B02F034EBAFE324FEF000C600C558F4267D9 +S315E06371C0487900E5030360A44CD73CFC4FEF0030FD +S315E06371D04E754FEFFFE4720948D77C0C716F002060 +S315E06371E0B2806600009024390001FA96558F4BF918 +S315E06371F000E2F7EC49F900E3A52C2F0242674EB9AA +S315E063720000E33312508F4DF900E3A8BA6022361AD1 +S315E0637210558F3F03ED8B3F1B3F3C00014E95426725 +S315E06372203F034E944FEF000CB5FC00E3855666DEF4 +S315E0637230558F42672F024E96508FAF410280000012 +S315E06372407FFFB280660A45FA12E047FA130A60BE28 +S315E06372503F3C000A3F3C000B2F024EB900E2A1D04F +S315E0637260548F204042502E823F3C00034EB900E3E8 +S315E06372703312508F4CD77C0C42404FEF001C4E7557 +S315E0637280454D55434F4E00002F032F02362F000C1A +S315E06372904EB900E39914426724000683FFFFFFEECD +S315E06372A077C33F390001FABE4879000219DC4EB96B +S315E06372B000E3A286508F720BB283650000EE323B29 +S315E06372C03A0848C14EFB18020018002C00E2003E63 +S315E06372D0004E005A00E20072008200E2009400CAA7 +S315E06372E04A40670000C63F40000C241F261F60FF2C +S315E06372F000001E364A40670000B2558F3F004EB924 +S315E063730000E3937460404A82670000A02F024EB99F +S315E063731000E34B1C60304A8267000090558F4267FA +S315E0637320600C4A8267000084558F3F3C00012F0260 +S315E06373304EB900E3E27A508F60704A40676C2F0281 +S315E06373404EB900E3519C588F60604A40675C3F40AA +S315E0637350000C241F261F60FF000021004200487ACC +S315E0637360FF2048790001F92A13C00001F9AF13C081 +S315E06373700001F9AE4EBAFB023F3CFFFF3F3CFFFF25 +S315E06373803F3C000142674EB900E388784FEF001057 +S315E0637390601A2F390001FA2E2F390001F9AA4EB986 +S315E06373A000E3895E508F700160024240241F261F0E +S315E06373B04E754FEFFFE8AB4148D7047C3A2F001C8C +S315E06373C036390001F59C3C390001F5AC20050680B1 +S315E06373D0FFFFFFDA71C0B280650000C2303B0A0886 +S315E06373E048C04EFB0802001200B6000C0030002ACB +S315E06373F000C24242600000B44A4357C477434884BC +S315E06374002204448171413801B68066106000008EC3 +S315E063741074026000009674036000009033C100015B +S315E0637420F59CA341B28066082039000237AC60065A +S315E06374302039000237B4558F2F003F3C00263406CF +S315E063744036042F390001FA864EB900E3A6F84FEF0A +S315E0637450000C734271790001F5ACB081672E426727 +S315E063746045F900E3A6803F390001FAC42F390001EC +S315E0637470FA864E923F3C000133C50001FAC43F05EC +S315E06374802F390001FA864E924FEF00103F023F0319 +S315E06374904EB900E3962C588F7001600242404CD798 +S315E06374A0047C4FEF00184E75740171427D46BC80D3 +S315E06374B066A060E84E56FFE448D7001C3F2E000CFA +S315E06374C0382E00103F2E000A4EB900E3ADA0588F68 +S315E06374D0340030390001FAC077427340B283670CF7 +S315E06374E0558F3F004EB900E389C2588F4267260E37 +S315E06374F00683FFFFFFF43F024EB900E38A36486E28 +S315E0637500FFFA486EFFF8486EFFF62F033F3C000430 +S315E06375103F024EB900E3AD0A716E00084FEF001803 +S315E0637520A34141F900E31A8AB280660000C242676A +S315E06375302F033F043F2E000C3F2E000A3F39000124 +S315E0637540FABE2F39000219D83F390001FAC04E90CE +S315E0637550200E55802F00486E000E2F002F004EB987 +S315E063756000E3AC344FEF0024302E000E0800000039 +S315E0637570670000B0558F486EFFFC2F033F04486EEB +S315E0637580000C486E000A3F390001FABE2F3900024B +S315E063759019D83F390001FAC04EB900E31B724FEFC9 +S315E06375A0001CA14136007140B28067764A43671496 +S315E06375B0558F3F034EB900E398C0588F204030287B +S315E06375C0000A600270013F2E000C3F2E000A3F2E38 +S315E06375D0FFFC3F003F033F024EB900E3E8544FEF41 +S315E06375E0000A3F024EB900E389C2588F60343F3CDC +S315E06375F000012F033F043F2E000C3F2E000A3F3964 +S315E06376000001FABE2F39000219D83F390001FAC0EA +S315E06376104E904FEF00123F3C00124EBAFC6C588F0F +S315E0637620600242402D40FFF02F390001FA864EBAE0 +S315E0637630F9EC588F202EFFF04CEE001CFFE44E5E13 +S315E06376404E754A790001F59C56C041F90001FAC6C8 +S315E063765033D00002187A41F90001FAC833D0000248 +S315E0637660187C41F90001FACC33D00002188041F965 +S315E06376700001FACA33D00002187E41F90001FACE5E +S315E0637680488033D00002188241F90001FAD04FEF07 +S315E0637690FFD8448033C00002187830390001FAC459 +S315E06376A033D00002188448D77C7C41F90001FAD2D2 +S315E06376B033D000021886424342444DF900E399828F +S315E06376C04BF900E3AD0A49F900E38C040680FFFF5A +S315E06376D0FFD833C00002187647FAF79E558F200429 +S315E06376E052803F0038004E96588F2440302A000679 +S315E06376F067707543725252834C0128002042D1FC75 +S315E06377000002188E2F08220206810002188C2F01D0 +S315E06377102C0206860002188A2F062A0206850002D4 +S315E063772018882F053F3C00053F004E952F062F0531 +S315E06377304E942042D1FC0001B2B8316A000C65D8A0 +S315E0637740316A000E65DA316A000865DC246A00187E +S315E0637750508A0682000218962F0A2F024E934FEF45 +S315E063776000247144A941B2806600FF723003C1FC14 +S315E063777000522040D1FC00021894600E4201425050 +S315E063778052831141000241E800527143A741B2803E +S315E06377906CEA4CD77C7C4FEF00284E755B325D5BC1 +S315E06377A0537769746368207265736F6C7574696F18 +S315E06377B06E3F5D5B5965737C4E6F5D004E56FFF0C1 +S315E06377C02F0A2F0242673F390001FABE4879000269 +S315E06377D019DC4EB900E3A286508F4A40671C486EB7 +S315E06377E0FFFE486EFFFA3F003F390001FAC04EBA2A +S315E06377F0F71E4FEF000C2440600295CA302E000856 +S315E0637800AB410680FFFFFFE171C0B28065000134E2 +S315E0637810303B0A0848C04EFB0802000C00680128AA +S315E063782000A400B800DA4A8A670001182F0A4EB945 +S315E063783000E3626A588F4A40670001084EB900E385 +S315E06378402F48486EFFF8486EFFF6486EFFF4486EC1 +S315E0637850FFF23F3C000442674EB900E3AD0A4FEFE7 +S315E063786000123F2EFFF83F2EFFF63F2EFFF43F2E2A +S315E0637870FFF242674EB900E38AC04FEF000C600047 +S315E063788000C24A8A670000BC4A6EFFFE670C202E80 +S315E0637890FFFA06800000000E60162F0A4EB900E379 +S315E06378A0615E588F4A406706202A000A600242807A +S315E06378B02F0A2F004EB900E36AD05C8F600C4EB995 +S315E06378C000E35D3E4A40677A558F42674EBAF60CEF +S315E06378D0601E558F3F3C000145FAF5E64E924EBA7F +S315E06378E0FD623EBC00014EB900E32B6242574E9205 +S315E06378F0588F604E558F487AFEA43F3C00014EB9DF +S315E063790000E3A93C508FA3417140B28066343F3CAB +S315E063791000044E4E548F7140A341558F42A7B28007 +S315E063792056C042A7123C00024267488092803F01FC +S315E06379303F3C00054EB900E3AE864FEF00107001A1 +S315E063794060024240242EFFE8246EFFEC4E5E4E75E5 +S315E06379502F032F02362F000C322F000EA9427143FC +S315E0637960B48067266D0A143C0003B48066506010E9 +S315E0637970AB42B480673A143C0006B4806640601458 +S315E0637980558F3F014EBAF84C602E558F3F014EBA84 +S315E0637990F8F86024558F3F014EBAFA18588F4A407B +S315E06379A0671C558F3F3C00014EBAF530588F600E29 +S315E06379B0558F3F014EBAFE063400588F600242424D +S315E06379C03F3C00013F032F390001FA864EB900E3DD +S315E06379D0A6D0508F3002241F261F4E75598F716FC4 +S315E06379E000080C8000001F00670001506E420C80A7 +S315E06379F0000014006700015C6E160C800000011B3A +S315E0637A0067700C8000001011660001D4600001AC61 +S315E0637A100C80000019006700010A0C8000001E005C +S315E0637A2067620C8000001700660001B4600000B86E +S315E0637A300C8000002C1A6700016A6E160C80000049 +S315E0637A402000677E0C8000002C00660001926000D7 +S315E0637A5001360C8000002F00670001100C800000E7 +S315E0637A603100670000A60C8000002E0066000170FE +S315E0637A706036558F3F3C00014EB900E3958C588FD5 +S315E0637A806000015C4A79000237B2670001524267DF +S315E0637A903F3C00052F390001FA864EB900E3A6D0D4 +S315E0637AA03F3C0020600000DA42673F3C00052F3927 +S315E0637AB00001FA864EB900E3A6D03F3C002460009D +S315E0637AC000C04A79000237B06700011442673F3C61 +S315E0637AD000042F390001FA864EB900E3A6D03F3C95 +S315E0637AE00019600000EC4A79000237A2670000F0F3 +S315E0637AF042673F3C00042F390001FA864EB900E342 +S315E0637B00A6D03F3C0013600000C842673F3C0006D6 +S315E0637B102F390001FA864EB900E3A6D03F3C002830 +S315E0637B20607A42673F3C00062F390001FA864EB918 +S315E0637B3000E3A6D03F3C0029606242673F3C000613 +S315E0637B402F390001FA864EB900E3A6D03F3C002602 +S315E0637B50604A42673F3C00062F390001FA864EB918 +S315E0637B6000E3A6D03F3C002B603242673F3C000512 +S315E0637B702F390001FA864EB900E3A6D03F3C0023D5 +S315E0637B803F3C0005604E42673F3C00062F390001EB +S315E0637B90FA864EB900E3A6D03F3C002A3F3C000696 +S315E0637BA0603242673F3C00042F390001FA864EB9E2 +S315E0637BB000E3A6D03F3C001C601642673F3C0004EE +S315E0637BC02F390001FA864EB900E3A6D03F3C001D8B +S315E0637BD03F3C00044EBAFD7A4FEF000C6002424030 +S315E0637BE02F390001FA862F4000044EBAF430202F75 +S315E0637BF00004508F4E754E56FFE830390001F906A2 +S315E0637C0048D7040C74167340B48166144A7900024B +S315E0637C1037BA671A424033C0000237BA600002AC33 +S315E0637C200680FFFFFFEB71C0AF41B2806510558FF1 +S315E0637C303F390001FAC04EB900E389C2588F303943 +S315E0637C400001F90674120680FFFFFFF671C0B48087 +S315E0637C5065000286303B0A0848C04EFB08020026F0 +S315E0637C60027A027A027A027A027A027A027A027AEB +S315E0637C70027A004C008000F200FE013E015E01568E +S315E0637C80017A017A42673F390001FAC24EB900E3ED +S315E0637C908A363F390001F90E3F390001F90C4EBAD5 +S315E0637CA0FCB0508F42416000020230390001F90CAA +S315E0637CB0670001F4558F3F390001F9143F3900013C +S315E0637CC0F9123F390001F9103F390001F90E3F001F +S315E0637CD04EB900E38AC04FEF000C600001CA426709 +S315E0637CE04267426742673F3C000A3F390001F90C4D +S315E0637CF04EB900E3AD5A486EFFF8486EFFFA486E38 +S315E0637D00FFFC486EFFFE3F3C00043F390001F90C7F +S315E0637D104EB900E3AD0A4FEF001E3F390001F90C9F +S315E0637D204EB900E398C0588F24404A8067162F0007 +S315E0637D304EB900E398F842673F2A00064EB900E37E +S315E0637D408A36508F5C8A33D20001FAC260000186BC +S315E0637D50558F3F3C00164EBAF5306052558F3F392A +S315E0637D600001F90C4EB900E398C0588F4A8067006A +S315E0637D7001642F004EB900E398F83EB90001F90CAF +S315E0637D804EB900E38D703F3C00013F390001F90CC9 +S315E0637D904EB900E38A36508F6000013A3F390001FD +S315E0637DA0F90E3F390001F90C4EB900E3A04C588F48 +S315E0637DB060000126558F3F3C00016004558F4267A2 +S315E0637DC03F390001F90E3F390001F90C4EB900E382 +S315E0637DD09FD2508F6000010241F90001F90E3D50D8 +S315E0637DE0FFFE41F90001F9103D50FFFC260E598371 +S315E0637DF02F03240E55822F024EB900E38C043F39DC +S315E0637E000001F9143F390001F9123F2EFFFC3F2EC2 +S315E0637E10FFFE3F3C00053F390001F90C4EB900E334 +S315E0637E20AD5A71790001F9064FEF0014721BB28007 +S315E0637E3066163F3C00013F390001F90C4EB900E399 +S315E0637E408A36588F6000008E486EFFF8486EFFFAF8 +S315E0637E502F032F023F3C00043F390001F90C4EB972 +S315E0637E6000E3AD0A4FEF00123F390001F90C4EB95A +S315E0637E7000E398C03F2EFFF820403F2EFFFA3F2EE7 +S315E0637E80FFFC3F2EFFFE7168000A2200E789EB885C +S315E0637E9090810680000219EC2F004EB900E035248C +S315E0637EA04FEF0010602E72014240424233C200013E +S315E0637EB0F9064A4166142F390001FA862D40FFF42C +S315E0637EC04EBAF15A588F202EFFF44CEE040CFFE8BD +S315E0637ED04E5E4E754EBAF76C424160CC4A7900020B +S315E0637EE0187857C04FEFFFC248EF7CFC00023F3C77 +S315E0637EF0002645FAF4BE780442432E3C00E3444C44 +S315E0637F004BF900E387944880448033C00001F59CD5 +S315E0637F104E923039000218760680000000283E80D3 +S315E0637F204E9230390002188041F90002187A33D054 +S315E0637F300001FAC641F90002187C33D00001FAC8A1 +S315E0637F4041F90002187E33D00001FACA41F9000212 +S315E0637F50188233D00001FACE41F90002188433D097 +S315E0637F600001FAD041F90002188633D00001FAD253 +S315E0637F703F3C000133C00001FACC3F004EB900E359 +S315E0637F80A6443F3C000133C00001FACC3F3900010F +S315E0637F90FACE4EB900E3A7204FEF000C2C0F2A0F61 +S315E0637FA006860000003606850000002D33C000011A +S315E0637FB0FACE4DF900E38C04754370524C02080027 +S315E0637FC006800002188C204030106F0C7140737984 +S315E0637FD00001F926B2806C1E73790001F9267052AE +S315E0637FE04C02080022016A02528106800002188C64 +S315E0637FF02040E281308170524C0208000680000224 +S315E0638000188E204030106F0C714073790001F928A7 +S315E0638010B2806C1E73790001F92870524C02080035 +S315E063802022016A02528106800002188E2040E281B4 +S315E0638030308170524C00280041F9000218964A30AC +S315E06380402800670000AA2642D7FC0001B2B8558F24 +S315E063805049EB65DC3F144EB900E397C6588F24407D +S315E06380604A806700008A356B65D8000C356B65DA44 +S315E0638070000E200206800002189620472F062F0581 +S315E063808048790001F7C4486F00462F004E902002FE +S315E063809006800002188A2F000682000218882F02E3 +S315E06380A04E964FEF00162EBC0001F7C43F2F0040FB +S315E06380B04E95508F4A7900018E64670C2F0A4EB94C +S315E06380C000E39760588F60263F3C00012F022F063E +S315E06380D02F0548790001F7C43F2F004C3F143F3C1E +S315E06380E000012F0A4EB900E38E824FEF001C5283E4 +S315E06380F053844A446600FEC24EBAF5484CD77CFCCC +S315E06381004FEF003C4E754FEFFFC848D77CFC4EB946 +S315E063811000E3A44C487900014A3E487900014B5C90 +S315E0638120487900014BA4487900014BA045F900E387 +S315E0638130ADBE47F900E3B35A33C0000237B84EB970 +S315E063814000E3ABDA48790001F92048790001F91ECA +S315E063815048790001F91C48790001F91A3F3C0004AB +S315E063816033C000014BF870FF760E4242426733C07C +S315E0638170000237A433C0000237A64EB900E3AD0A66 +S315E06381804FEF00202EBC0001F92848790001F9265B +S315E063819048790001F92448790001F9223F39000161 +S315E06381A0F9203F390001F91E3F390001F91C3F39D7 +S315E06381B00001F91A3F3CFFFF3F3C00014EB900E383 +S315E06381C0ADD24FEF001A3F3C0001203C0001F92A93 +S315E06381D023C00001F9AA203C0001F9AE23C00001E7 +S315E06381E0FA2E203C0001FA3223C00001FA56203C05 +S315E06381F00001FA5A23C00001FA7E203C0001F90629 +S315E063820023C00001F9164E923EBC00014EBAECB2B1 +S315E063821042574E924EB900E3B282588F714245F9A6 +S315E063822000E3B35A5383E58806800001FA862F009C +S315E06382303F02528242674E93508F4A4366DE558FC2 +S315E0638240426747F900E3897C4EB900E32128487920 +S315E0638250000237B43F3C00053F3C00054E92487947 +S315E0638260000237AC3F3C00013F3C00054E924FEFC6 +S315E063827000123F3C001445FAEC004E932F00487918 +S315E06382800002379C4E924FEF000A3F3C00154E9337 +S315E06382902F004879000237A84E924EB900E3229C3C +S315E06382A04FEF000C4A40662C42A73F3C00213F3C1F +S315E06382B000014EB900E349462F390001FA2E2F3902 +S315E06382C00001F9AA4EB900E3895E4FEF0010424020 +S315E06382D06000024C4EB900E3972E4EB900E34328A3 +S315E06382E0426747F900E38A3645F900E3ADBE426784 +S315E06382F04E933EBC00014E923EBC00012F39000115 +S315E0638300FA864EB900E3A6625C8F42674E92548F5B +S315E06383102F39000237B43F3C002642402F39000133 +S315E0638320FA8633C00001F59C4EB900E3A6F83F3CFC +S315E0638330000170283F0033C00001FAC42F39000101 +S315E0638340FA864EB900E3A680700133C00001FAC62F +S315E063835033C00001FAC833C00001FAD033C000016C +S315E0638360FAD2103C000333C00001FACC4EB900E305 +S315E06383702F484FEF00123F390001F92013C0000286 +S315E063838037A03F390001F91E3F390001F91C3F3937 +S315E06383900001F91A42674EB900E38AC042673F3C7F +S315E06383A000012F39000219D83F3C000E42674EB9EF +S315E06383B000E3AD5A426742674E934FEF001A3F3C84 +S315E06383C0000147F900E3A54A4E924EBAFB104257C5 +S315E06383D04E922F390001FA864EBAEC425C8F4267C1 +S315E06383E04EBAEADE588F2E0F2C0F2A0F280F4BEF6B +S315E06383F0002C06870000003049EF002E0686000059 +S315E063840000320685000000340684000000364DFA2B +S315E0638410F0A42F0D2F0C2F072F062F052F0442678D +S315E063842042672F390001F91642674267426742673E +S315E06384304267426742674267426742673F3C000181 +S315E06384403F3C00013F3C00023F3C00134E934FEF3D +S315E0638450003A3F3C000136004E92588F0803000015 +S315E06384606710558F3F2F00304EBAF572588F340040 +S315E063847060024242A540C0834A40676A558F3F2FF8 +S315E063848000323F2F00363F2F003A3F2F003E3F2F0B +S315E063849000364E964FEF000C3400604A4EBAF758FA +S315E06384A03400664A2F0D2F0C2F072F062F052F0456 +S315E06384B0426742672F390001F916426742674267AE +S315E06384C042674267426742674267426742673F3C49 +S315E06384D000013F3C00013F3C00023F3C00304E93CD +S315E06384E04FEF003C36007010C6804A4366AE558F48 +S315E06384F042674E92588F4A426700FF184EBAF1447C +S315E0638500558F42674EB900E32B62425742A74EB995 +S315E063851000E3A6624EB900E3A4AE7001508F4CD778 +S315E06385207CFC4FEF00384E750004000C0004000C31 +S315E063853000040006000200040004000C00040004CA +S315E06385400004000400040004000400040004000CBA +S315E06385500004000800040106015D01490125015D8F +S315E0638560018801B80188015D014901060125015DC4 +S315E0638570010601060125014A015D01D101B80188C1 +S315E0638580015D02BA4FEFFFEC48D70C1C203C0002BA +S315E063859019DC23C0000219D841F9000219DE72FF23 +S315E06385A030BCFFFF3141FFFE3141000241E8001874 +S315E06385B0B1FC0002265666E648780018263C0002BF +S315E06385C019F4487900E503104879000219DC47F9A4 +S315E06385D000E00EC44E9345F900E3A73E3F39000140 +S315E06385E04B8C42423F3900014BC042674267487950 +S315E06385F0000219EC4EB900E035244FEF00184878D5 +S315E06386000018487900E503282F034E932802528425 +S315E06386100683000000183F04340442674879000289 +S315E063862019DC4E9271444FEF0014AB41B28066CED3 +S315E06386304CD70C1C4FEF00144E752F02740141F9B1 +S315E063864000021A2052824A5067164A68000267108F +S315E06386507142AB4141E80018B28066E84242602C61 +S315E06386603F2F000E71422200E789EB883F2F000E11 +S315E063867090810680000219EC3F2F000E3F2F000E1B +S315E06386802F004EB900E035244FEF000C3002241F73 +S315E06386904E752F032F023F2F00143F2F00143F2FF9 +S315E06386A000143F2F0014776F001420032403E78838 +S315E06386B0EB8A948020020680000219EC2F004EB903 +S315E06386C000E035244FEF000C2042D1FC000219DEB6 +S315E06386D03210200360162401EB89E78A224193C2B4 +S315E06386E0D3FC000219DC321132BCFFFF7341B08167 +S315E06386F06DE42200EB88E789241F261F204070FF84 +S315E063870091C1D1FC0001B2B8314067283140672698 +S315E06387104E752F032F02740641F900021A6C7150ED +S315E0638720A141B28067145282714241E800180C801D +S315E06387300000008566E84242605077422003E7889E +S315E0638740EB8B968070FF2043D1FC0001B2B80683C1 +S315E0638750000219EC31406728314067263F023F2F1C +S315E0638760000E2F39000219D84EB900E3A73E3F2F1A +S315E0638770001C3F2F001C3F2F001C3F2F001C2F03C4 +S315E06387804EB900E035244FEF00143002241F261F54 +S315E06387904E7500004FEFFFF448D7040C342F0010FA +S315E06387A0660A700133C000018E64607C7142724078 +S315E06387B045F900E30056B28067604EB900E2FF24F4 +S315E06387C0558F360020020680FFFFFFBF3F004E92C3 +S315E06387D0588F4A7900018E64670C558F3F034E923A +S315E06387E0588F42406042703A725C13C20001F5AE44 +S315E06387F0226F001241F90001F5B113C00001F5AF34 +S315E063880013C10001F5B0101910C066FA487900018A +S315E0638810F5AE4EB900E3000A600A558F3F390001B1 +S315E063882094724E927001588F4CD7040C4FEF000C44 +S315E06388304E752F0A2F02426745F900E3AC163F3CBB +S315E063884000024E92548F2F2F00162F2F00163F2FC4 +S315E063885000183F2F00183F3C00014EB900E3AE8697 +S315E06388604FEF001034006608426742674E92588FB6 +S315E06388703002241F245F4E754FEFFFE848D7007C34 +S315E0638880382F001C362F001E342F00204879000154 +S315E0638890F9AF4EB900E1C4A4588F13C00001F9AE35 +S315E06388A03200673A4A4466362200538141F9000151 +S315E06388B0F9AE2C0152862A0154857D467B45538168 +S315E06388C043F06800119158007BC10C850000FFFFFF +S315E06388D066E0722013C10001F9AF220052812F399D +S315E06388E00001FA2E2F390001F9AA3F03700D41F911 +S315E06388F00001F9AE774313C10001F9AE52817341CA +S315E06389003F04118018004EBAFF2A4FEF000CA141D5 +S315E0638910B283673E7342A143B6816738558F3F3969 +S315E06389200001F9203F390001F91E3F390001F91CC6 +S315E06389303F390001F91A3F2F002C3F0242672F406F +S315E063894000244EB900E38C6C4FEF0010202F001427 +S315E0638950600242404CD7007C4FEF00184E75558F4E +S315E06389602F2F000A2F2F000A3F3C00014267426720 +S315E06389704EB900E3AE864FEF00104E754E56FFFCE0 +S315E0638980486EFFFC3F2E00083F3C00054EB900E30E +S315E0638990B35A508F226EFFFC41F9000237BC1019BF +S315E06389A010C066FA203C000237BC4E5E4E7500008E +S315E06389B0226F0008202F00042040121910C166FAC6 +S315E06389C04E754E56FFF82F032F02486EFFFE486E34 +S315E06389D0FFFC486EFFFA260E51832F03342E000800 +S315E06389E03F3C00043F024EB900E3AD0A4FEF00128D +S315E06389F03F024EB900E398C0588F4A80672C3F3CEC +S315E0638A000001204042673F3C00012F0348790001A3 +S315E0638A104BA842673F28000A2F39000219D83F0264 +S315E0638A204EB900E318E44FEF0018242EFFF0262E2C +S315E0638A30FFF44E5E4E754E56FFF82F0A2F02342E24 +S315E0638A400008675C558F3F024EB900E398C0588FC4 +S315E0638A5024404A8067524A6E000A6738486EFFF8D8 +S315E0638A60486EFFFA486EFFFC486EFFFE3F3C00042B +S315E0638A703F024EB900E3AD0A3F2EFFF83F2EFFFA01 +S315E0638A803F2EFFFC3F2EFFFE2F0A4EB900E39B000D +S315E0638A904FEF002045EA000A33D20001FABE6008D0 +S315E0638AA0700133C00001FABE33C20001FAC033C2BB +S315E0638AB00001FAC2242EFFF0246EFFF44E5E4E757B +S315E0638AC04FEFFFC448D77CFC342F00403F6F004232 +S315E0638AD000343F6F004400363F6F004600383F6F17 +S315E0638AE00048003A2A79000219D84A426714558F3A +S315E0638AF03F024EB900E398C0588F20403E28000AF3 +S315E0638B0060027E01426745F900E3AD0A49F900E296 +S315E0638B10F9B247F900E3A7663F3C01004EB900E3CB +S315E0638B20AC162C0F2A0F0685000000362F05280F9A +S315E0638B300684000000382F04260F06830000003AFF +S315E0638B402F030686000000302F063F3C000B3F02F2 +S315E0638B504E924FEF00184DEF0034603E2F062F0E16 +S315E0638B604E94508F4A40671E3F2F00323F2F0032AC +S315E0638B703F2F00323F2F00323F3C00083F072F0D67 +S315E0638B804E934FEF00102F052F042F032F063F3C24 +S315E0638B90000C3F024E924FEF00144A6F00306706B7 +S315E0638BA04A6F003266B642673F3C01014EB900E365 +S315E0638BB0AC164CEF7CFC00044FEF00404E75302F53 +S315E0638BC00008226F000A206F0004C1FC0018D1C0C0 +S315E0638BD032A80010226F000E32A80012226F001234 +S315E0638BE032A80014226F001632A800164E75716F14 +S315E0638BF00008206F00042200E789EB88908120302B +S315E0638C00080C4E754E56FFEC48D70C04486EFFF8D9 +S315E0638C1074F0486EFFFA486EFFFC486EFFFE3F3C19 +S315E0638C200004246E0008266E000C42674EB900E32A +S315E0638C30AD0A30124FEF0014720FC2803D40FFFE63 +S315E0638C40C082AF423481B4816C06068000000010B6 +S315E0638C5034803F2EFFFC3F134EB900E2FE8C588F03 +S315E0638C6036804CEE0C04FFEC4E5E4E754E56FFD8E6 +S315E0638C7048D7047C486E0010486E000E3A2E000C0E +S315E0638C80362E00122C0E518645FAFF34382E001428 +S315E0638C90342E000A4EBAFF6E5C8F486EFFFE486E56 +S315E0638CA0FFFC486EFFFA2F063F390001FABE4879AA +S315E0638CB0000219DC4E924FEF0016486EFFF6486EDF +S315E0638CC0FFF4486EFFF2486EFFF03F054879000215 +S315E0638CD019DC4E923F04302EFFF0322EFFF8306EF1 +S315E0638CE0FFFA3F03D081322EFFF23D40FFF03F2E85 +S315E0638CF00010D2883D41FFF23F2E000E3F2EFFF675 +S315E0638D003F2EFFF43F013F004EB900E3AAC24FEFA7 +S315E0638D1000263F3C00013F3C000142673F3C0001C7 +S315E0638D202F063F053F390001FABE2F39000219D8F5 +S315E0638D303F390001FAC04EB900E314944FEF0018CF +S315E0638D404A6E0008671A558F3F043F033F2E0010B3 +S315E0638D503F2E000E3F024EB900E3ACA64FEF000C88 +S315E0638D6033C20001FAC24CEE047CFFD84E5E4E7508 +S315E0638D704E56FFD870FF48D7041C486EFFFE486E18 +S315E0638D80FFFC486EFFFA260E51832F0345F900E395 +S315E0638D90AD0A280E0684FFFFFFE83F3C0005342E4C +S315E0638DA0000833C0000237A43F024E92486EFFF6D6 +S315E0638DB0486EFFF4486EFFF2486EFFF03F3C0006F4 +S315E0638DC03F024E924FEF0028486EFFEE486EFFEC8F +S315E0638DD0486EFFEA2F043F3C00073F024E922F04A2 +S315E0638DE02F034EB900E2FE304FEF001C45F900E376 +S315E0638DF0AD5A4A4067403F2EFFF63F2EFFF43F2EC3 +S315E0638E00FFF23F2EFFF03F3C00053F024E923F2EBE +S315E0638E10FFEE3F2EFFEC3F2EFFEA3F2EFFE83F2EAD +S315E0638E20FFF63F2EFFF43F2EFFF23F2EFFF04EB9E3 +S315E0638E3000E3AB1C603E3F2EFFEE3F2EFFEC3F2E82 +S315E0638E40FFEA3F2EFFE83F2EFFFE3F2EFFFC3F2E5D +S315E0638E50FFFA3F2EFFF84EB900E3AAC23F2EFFEEBC +S315E0638E603F2EFFEC3F2EFFEA3F2EFFE83F3C000537 +S315E0638E703F024E924FEF001C4CEE041CFFD84E5E51 +S315E0638E804E754FEFFFEC48D71C0C246F0018342F58 +S315E0638E90001C362F001E266F002E426749F900E359 +S315E0638EA0AC163F3C00024E943F3C00102F2F00303F +S315E0638EB02F2F00302F2F00303F2F00324EB900E3C3 +S315E0638EC046024FEF00144A80660E426742674E944D +S315E0638ED0588F4240600000C4254000182F004EB909 +S315E0638EE000E348362F0A4EB900E3A3602F0A4EB972 +S315E0638EF000E3A39049F900E3AD5A42674267486AE3 +S315E0638F00001C3F3C00023F2A00064E9442674267DC +S315E0638F10486A005F3F3C00033F2A00064E944FEFEA +S315E0638F2000244A43672E558F3F2B00063F2B0004F0 +S315E0638F303F2B00023F133F033F2A00063F024EBA30 +S315E0638F40FD2C4FEF00104A42670A2F0A4EB900E341 +S315E0638F5098F8588F3F3C00013F2A00064EBAFAD88C +S315E0638F60588F4A6F003267244A4266203F2B0006D9 +S315E0638F703F2B00043F2B00023F133F2A00063F3C92 +S315E0638F8000144EB900E349BA4FEF000C42674267FB +S315E0638F904EB900E3AC167001588F4CD71C0C4FEFFB +S315E0638FA000144E75002A00004FEFFFEE48EF0C0CFD +S315E0638FB00002342F001671422200E789EB88908124 +S315E0638FC00680000219E8204026503F024EB900E3CE +S315E0638FD097C6588F24404A80676077AB000D558FFC +S315E0638FE0487AFFC23F034EB900E38794508F4A79CC +S315E0638FF000018E6466383F3C0001716A000A220014 +S315E0639000E789EB8890810680000219EC2F00487AA5 +S315E0639010FF95487AFF91487AFF8C3F033F023F3CD6 +S315E063902000012F0A4EBAFE5C4FEF001C60342F0A34 +S315E06390304EB900E39760588F602848790001FA8259 +S315E06390403F3C00193F3C00054EB900E3B35A548FE9 +S315E06390502EB90001FA823F3C00014EB900E3A93C18 +S315E0639060508F4CD70C0C42404FEF00104E754E5666 +S315E0639070FFE048D70C3C486EFFFE486EFFFC486E47 +S315E0639080FFFA486EFFF847F900E387943F3C000434 +S315E0639090246E0008342E000E282E00102A2E0014AB +S315E06390A0262E00183F2A00064EB900E3AD0A4FEFBD +S315E06390B0000E2EBC00E38FA43F024E93508F4A7995 +S315E06390C000018E64670C2F0A4EB900E3E1D0588F36 +S315E06390D06046558F2F043F024E932F2A00184EB9F0 +S315E06390E000E346004FEF000C4A7900018E646608A0 +S315E06390F0263C00E38FA52A033F2E001E486EFFF849 +S315E06391002F032F052F043F023F2E000C42672F0AE1 +S315E06391104EBAFD704FEF001C4CEE0C3CFFE04E5E2A +S315E06391204E7500005C004E56FF8848D70CFC382E1F +S315E06391300008486EFFFC486EFFF83F043F390001C4 +S315E0639140FAC04EB900E36F0E4FEF000A3F390001F4 +S315E0639150FAC024404EB900E398C0588F26404AAE21 +S315E0639160FFF86722486EFFF4486EFFEB486EFFA98F +S315E0639170486EFFFE202B001850802F004EB900E3A7 +S315E0639180444C4FEF00144A8A670001CE322A000648 +S315E0639190A3427141B480670001186D084A416718BC +S315E06391A0600001B6A543B68067000186A741B28039 +S315E06391B0660001A6600001863A2A00047010762AEA +S315E06391C0226A000A242EFFF806820000000E306E43 +S315E06391D0FFFE3E2EFFFCC0854A4057C61011488607 +S315E06391E073005486B6816712163C003FB681670A00 +S315E06391F04A0057C34883448360027601558F486EBD +S315E0639200FFA93F084EB900E387944200508F13C02D +S315E06392100001F9AF13C00001F92A4A43660E4A47D3 +S315E0639220660E2602242A000A6000013C4A47672E3E +S315E06392307008C0854A406700012C48790001F9AFA0 +S315E063924048790001F92A487AFEDA2F024EB900E33B +S315E063925060884FEF00104A4067000100603642A71E +S315E06392603F3C0018600000844A82670E2F0248790B +S315E06392700001F92A4EBAF73A508F0C830001F9AF31 +S315E063928067124A83670E2F0348790001F9AF4EBA36 +S315E0639290F720508F3F04A541CA813F390001FAC0E8 +S315E06392A03F063F054EB900E38878508F600000AC17 +S315E06392B04A2EFFA96710487AFE6C486EFFA94EB93D +S315E06392C000E1C4B6508F240E0682FFFFFFA92F028A +S315E06392D0763F4EB900E1C4A4588F06800000000DC6 +S315E06392E0B680641242A73F3C00243F3C00014EB97E +S315E06392F000E349466060206EFFF841E8000E2F0800 +S315E06393002F024EB900E1C4B642403740000E3F3CFF +S315E063931000013F00486EFFF4486EFFEB2F023F2EDD +S315E0639320FFFE3F042F0B4EBAFD464FEF0020602849 +S315E0639330558F3F044EBAFC72588F601C558F3F3C85 +S315E063934000254EB900E3897C548F2F003F3C000132 +S315E06393504EB900E3A93C508F42404CEE0CFCFF88CB +S315E06393604E5E4E7542830C820001F92A6600FEFA70 +S315E06393706000FF084E56FFE848D70C0C342E000811 +S315E0639380486EFFFE486EFFFA3F023F390001FAC0BE +S315E06393904EB900E36F0E4FEF000A3F390001FAC0A2 +S315E06393A026404EB900E398C0588F24404A8B670045 +S315E06393B0009C322B0006A3437141B680673A6D0881 +S315E06393C04A41671260000086A541B280673EA743C3 +S315E06393D0B680667860642F2EFFFA226A0018508999 +S315E06393E02F094EB900E35946508F4A40675E2F0A0C +S315E06393F04EB900E34A10603E2F2EFFFA246A001846 +S315E0639400508A2F0A4EB900E35B36603E7542558F4C +S315E06394102002E788EB8A94800682000219E82242FA +S315E0639420205171A8000D32003D40FFFE48813F01A7 +S315E06394304EB900E35C1A588F601242A73F3C0026A0 +S315E06394403F3C00014EB900E34946508F4CEE0C0CAD +S315E0639450FFE842404E5E4E754E56FFDC48D73C040D +S315E0639460342E0008486EFFFE486EFFF83F023F3930 +S315E06394700001FAC04EB900E36F0E4FEF000C4A806D +S315E0639480670000FC2040A54171680006B280660073 +S315E063949000EE714245F900E349462200E789EB882D +S315E06394A090810680000219E82240205171A8000DE0 +S315E06394B0486EFFFC3F3C001B3D40FFFC3F3C000227 +S315E06394C04E92723A1D6EFFFDFFF2508F71401D4161 +S315E06394D0FFF342011D41FFF4A341B280660000A0A1 +S315E06394E0558F3F3C00044BF900E3897C49FAF4C2AB +S315E06394F047F900E3AEFE4E952F0048790001F92A5D +S315E06395004E942F390001F9AA4E934FEF00104A406B +S315E06395106622558F3F3C00114E952F004879000136 +S315E0639520F92A4E942F390001F9AA4E934FEF0010B2 +S315E06395304A40672C486EFFF248790001F9AF4EBAAC +S315E0639540F4703F0274013F390001FAC03F3C000109 +S315E06395503F3C00014EB900E388784FEF001060109E +S315E063956042A73F3C001A42423F3C00014E92508F75 +S315E0639570426742674EB900E3AC16588F60024242D7 +S315E063958030024CEE3C04FFDC4E5E4E754FEFFF80DF +S315E063959048D77CFC3C6F0084760442422C0F2A0F4A +S315E06395A0280F06860000007A4BFAF48C06850000E5 +S315E06395B0007106840000002F49EF007E47F900E35F +S315E06395C0444C45FAFAAA3E02CFFC00B02047D1FCF0 +S315E06395D00001B2B84A683B2267342F062F052F0491 +S315E06395E02F0C06870001EDD420683B3450882F08A2 +S315E06395F04E933F0E3F3C00012F062F052F043F2F6E +S315E063960000A242672F074E924FEF002C600A3F3C61 +S315E0639610000142674E95588F528253834A4366A64A +S315E06396204CD77CFC4FEF00804E750000302F000472 +S315E063963041EF000633D00001F5AC33C00001F59C81 +S315E0639640674E7140A341B2806600009830390001ED +S315E06396504BA041F900014BA433D00001F5A041F9D9 +S315E06396600001FCDA33D00001F5963200D080C3FC0A +S315E0639670002D538033C00001F5A2700233C10001AF +S315E0639680F59E33C00001F5A4203C0001FD00604C6B +S315E063969041F90001FD2433D00001F59E41F9000153 +S315E06396A0FD2633D00001F5A0717900014B8C0C8067 +S315E06396B00000012C6E0442406002700833C0000172 +S315E06396C0F5A2700241F90001FCD833D00001F596AA +S315E06396D033C00001F5A4203C0001FCDC23C000019B +S315E06396E0F59832390001F5A230390001F59E3079FB +S315E06396F00001F5A4D08132390001F5A033C0000141 +S315E0639700F5A6D28833C10001F5A8307900014BA0F4 +S315E063971032390001F926928848C183C033C100011A +S315E0639720F5AA6E08720133C10001F5AA4E754EB90A +S315E063973000E38584426742674EBAFEF24240588F41 +S315E063974033C00001EDDA33C00001EE8A33C00001B5 +S315E0639750EF3A33C00001EFEA33C00001F0944E758F +S315E06397602F0A2F02246F000CA142302A00067340B1 +S315E0639770B481670C558F3F004EB900E3ACF6588F62 +S315E063978030390001F094538033C00001F0944240D5 +S315E0639790354000063F3C00013F2A000A2F390002AC +S315E06397A019D84EB900E3A7F25C8F42674267426716 +S315E06397B042673F2A000A4EB900E386924FEF000CF8 +S315E06397C0241F245F4E7530390001F0944FEFFFF4A8 +S315E06397D048D70C04A9427340B481670000D6143CB1 +S315E06397E00052528033C00001F0944C0128002642B7 +S315E06397F0D7FC000218883F2B00063F2B00043F2B63 +S315E063980000023F134EB900E3863A508F4A40670041 +S315E063981000A232004242C3FC00B02441D5FC000101 +S315E0639820EC743540000A302B0004323900014BA05A +S315E0639830354200043542000C3542000E356F0010A8 +S315E06398400008558F9081320048C183F90001F5A67F +S315E0639850302B000635410010323900014BA490816C +S315E0639860340048C285F90001F5A84240354200124A +S315E063987035400014354000163F390001F9203F3981 +S315E06398800001F91E3F390001F91C3F390001F91A5D +S315E06398903F3C0FFF4EB900E3AC6A4FEF000CA141CA +S315E06398A0354000067140B280660A2F0A4EBAFEB2B0 +S315E06398B0588F95CA200A4CD70C044FEF000C4E75AF +S315E06398C042402F032F02736F000C41F90001EDDA7A +S315E06398D07550B282660CC1FC00B006800001EDD41F +S315E06398E0601052807540A94341E800B0B68266E0F5 +S315E06398F04280241F261F4E753F3CFFFF206F000604 +S315E06399003F28000A2F39000219D84EB900E3A7F2BF +S315E0639910508F4E753039000219E02F0273402401EF +S315E0639920E78AEB89204191C2D1FC0001B2B84A686B +S315E0639930673867124A68673A670CC1FC00B006800D +S315E06399400001EC7460024280241F4E752F032F02E0 +S315E0639950322F000C3039000219DE601471402400A6 +S315E0639960E78AEB8890820680000219DC204030109B +S315E063997053817541A143B68266E2241F5580261F53 +S315E06399804E753F2F00044EBAFFC4548FC1FC00B03E +S315E063999006800001EDD44E754FEFFFE848D7047CAF +S315E06399A0246F001C362F0020342F0022206A001813 +S315E06399B042402068004C600A72FF52803141001CCD +S315E06399C020504A8866F232390001F5AA7D403800B4 +S315E06399D07B41BA866C02380148C081C122004841A6 +S315E06399E035440014354000164A41670652803540D7 +S315E06399F000164A6A001666067001354000164A4448 +S315E0639A0066067201354100144A436604163C00015A +S315E0639A103F2A00143F034EB900E2FE70306A001439 +S315E0639A20588F354000107140600653813541000C14 +S315E0639A30322A000C260896817743B6806DEC4A425B +S315E0639A406604143C00013F2A00163F024EB900E269 +S315E0639A50FE70306A0016588F354000127340600618 +S315E0639A6053803540000E302A000E240894807542F8 +S315E0639A70B4816DEC322A000CC1F90001F5AA206AC3 +S315E0639A8000182068004CD081600220504A40670687 +S315E0639A9053804A8866F4226F00244CD7047C4FEFE8 +S315E0639AA0001822884E752F0A70102F02246F000C5F +S315E0639AB0220A41F900E330BE068100000022142A3F +S315E0639AC000054882C480200A06800000000E4A42F0 +S315E0639AD06710558F2F012F003F3CFFFF3F3C00018E +S315E0639AE0600C558F2F012F003F3CFFFF42674267B3 +S315E0639AF04E904FEF0010241F2540001E245F4E75E5 +S315E0639B004E56FFD048D73CFC362E0012558F342E86 +S315E0639B100010246E000847F900E2FE704BF900E39B +S315E0639B2087123F033F023F2E000E3F2E000C3F2A73 +S315E0639B30000A4EB900E3869248C387F90001F5A8A7 +S315E0639B40486EFFFC48C285F90001F5A63F03424330 +S315E0639B503F022F0A4EBAFE42322A000C302A001424 +S315E0639B6090813F00302A001052803F004E93322AA4 +S315E0639B70000E3A00302A0016794590813F00302A7C +S315E0639B80001252803F004E934FEF002047FAFF18D2 +S315E0639B9071402D40FFF86000017C3203558F3F39F9 +S315E0639BA00001F5A030390001F5A4C3F90001F5A879 +S315E0639BB03F390001F59ED08132023F003039000122 +S315E0639BC0F5A2C3F90001F5A6D0813F003F2A000A5A +S315E0639BD04E954FEF000C226EFFFC73403340001C42 +S315E0639BE03C002001EB89E7882041724091C0D1FCBB +S315E0639BF00001B2B83141672E42013141672C3239F7 +S315E0639C000001F59C67407D41A341B286660000D4BE +S315E0639C107C182840D9FC0001F196214C673049F95C +S315E0639C20000238BC3146672A20402009D1FC000196 +S315E0639C30B2B8588021543EDE21403EE22F094E936E +S315E0639C40588F6000009E721F3141672A2F094E9339 +S315E0639C50588F226EFFFC2069001E4A690022670660 +S315E0639C6032280012600432280014714643F9000179 +S315E0639C70B2B82C002040E78E41E81EEF33818A00BC +S315E0639C80C3FC002220462C00EB8E068100020DC643 +S315E0639C902246284643F10A0099C8204CD1FC0002CB +S315E0639CA019E82009068000022654208048780022BD +S315E0639CB02F0128402F004EB900E00EC44FEF000C91 +S315E0639CC0202EFFFC2040224041E8000E2948000890 +S315E0639CD049EC000C32142069001E71A800178081DC +S315E0639CE03880206EFFFC5282714220502D48FFFC83 +S315E0639CF0B8806624302A001452839085600220502F +S315E0639D004A4066062D48FFFC600A53804A8866EE41 +S315E0639D1042AEFFFC42427F437142B8806F0EBEAEF5 +S315E0639D20FFF86C084AAEFFFC6600FE70558F342A76 +S315E0639D3000063F2A001447F900E1C6303F3C03E8DA +S315E0639D403F2A00104E934267426742673F003F3CBB +S315E0639D50000F3F024EB900E3AD5A322A0014302AAF +S315E0639D6000104FEF001479417740B6846C14558F39 +S315E0639D7092803F013F3C03E83F2A000C4E93508FAD +S315E0639D8060024240426749F900E3AD5A47F900E1B0 +S315E0639D90C630426742673F003F3C00083F024E944D +S315E0639DA04FEF000A3F2A00163F3C03E83F2A0012C2 +S315E0639DB04E934267426742673F003F3C00103F0273 +S315E0639DC04E94322A0016302A00124FEF001479417E +S315E0639DD07740B6846C14558F92803F013F3C03E82D +S315E0639DE03F2A000E4E93508F6002424042674267BD +S315E0639DF042673F003F3C00093F024EB900E3AD5A7C +S315E0639E004FEF000C4CEE3CFCFFD04E5E4E754E566B +S315E0639E10FFCC48D71CFC3F2E000E3E2E000C246E72 +S315E0639E20000842674EB900E2FE8C588F41F900E2C2 +S315E0639E30FE704A4767243F00322A0012302A001632 +S315E0639E4090813F004E90322A000E3C2A00129081A8 +S315E0639E50D28034003541000E60223F00322A001082 +S315E0639E60302A001490813F004E90322A000C3C2A3F +S315E0639E7000109081D28034003541000C588F4A42FD +S315E0639E8067000146486EFFFE486EFFFC486EFFFAC8 +S315E0639E90260E51832F03280E0684FFFFFFF03F3C17 +S315E0639EA000043F2A00064EB900E3AD0A3F2EFFFEEB +S315E0639EB03F2EFFFC3F2EFFFA3F2EFFF82F0A4EBAE6 +S315E0639EC0FC404FEF00202F042F034EB900E2FE5211 +S315E0639ED02F04487900014BA84EB900E2F9B22F048A +S315E0639EE02F034EB900E2FE304FEF00184A40670099 +S315E0639EF000B87BC2700FE0AD4A45670244827D4697 +S315E0639F007142B0866C0000A2382EFFFC3C2EFFFE49 +S315E0639F104A47670CC5F90001F5A842439C82600C89 +S315E0639F2036024242C7F90001F5A698834A456606BA +S315E0639F3099CC97CB60083842364342424243486EF7 +S315E0639F40FFF84EB900E25E323E86322EFFFA3F04F8 +S315E0639F50302EFFF8D9C1D4813F0CD7C0D6803F0BF2 +S315E0639F603F023F033F3C00034EB900E263C64FEF57 +S315E0639F7000104A47671A4A45660A302EFFFAD086CA +S315E0639F803D40FFFA302EFFFE90863D40FFFE6018AF +S315E0639F904A45660A302EFFF8D0843D40FFF8302EFE +S315E0639FA0FFFC90843D40FFFC558F3F2EFFFE3F2E26 +S315E0639FB0FFFC3F2EFFFA3F2EFFF83F2A00064EB91D +S315E0639FC000E38AC04FEF000C4CEE1CFCFFCC4E5E08 +S315E0639FD04E754E56FFE848D7043C3A2E0008342EB9 +S315E0639FE0000C3F054EBAF8DA548F24404A42670CB8 +S315E0639FF0382A0016362A00127210600A382A0014CC +S315E063A000362A0010720F200E55802F002F002F0086 +S315E063A010486EFFFC98833F013F054EB900E3AD0A06 +S315E063A0204FEF00123F3C03E83F043F2E000A4EB970 +S315E063A03000E1C6303F003F022F0A4EBAFDD24FEF32 +S315E063A04000104CEE043CFFE84E5E4E753F2F000475 +S315E063A0504EBAF86E548FAF41204071EF0006B2807E +S315E063A060656E303B0A0848C04EFB08020010001CD0 +S315E063A070002A0032003A00460052005A3228000EA7 +S315E063A080302800129280600A322800123028000ECF +S315E063A090D2807001603E3228000E538160F432282C +S315E063A0A0000E528160EC3228000C3028001092805A +S315E063A0B0601A322800103028000CD280600E3228F5 +S315E063A0C0000C538160063228000C528142406004E2 +S315E063A0D0700142413F013F002F084EBAFD32508F77 +S315E063A0E04E754FEFFFF048D71C0445F90001EDDAF2 +S315E063A0F049F900E346484A52673A4240266A001203 +S315E063A100724034390001F5AC35400008712B000824 +S315E063A110B2806608700433C00001F5AC558F2F2B0F +S315E063A120004C3F3CFFFF4E94508F2740004C33C2B8 +S315E063A1300001F5AC45EA00B0B5FC0001F09A66B6FD +S315E063A1404CD71C044FEF00104E754FEFFFD448D742 +S315E063A1501CFC760442422E0F2C0F2A0F0687000062 +S315E063A160002649EF002406860000002806850000E5 +S315E063A170002A47F900E3AD0A45FAF9863802C9FCD5 +S315E063A18000B02044D1FC0001EDDA3010672E2F0CCD +S315E063A1902F072F062F0506840001EDD43F3C00040C +S315E063A1A03F004E933F2F00383F2F003C3F2F004048 +S315E063A1B03F2F00442F044E924FEF00205282538389 +S315E063A1C04A4366B84CD71CFC4FEF002C4E754FEFF5 +S315E063A1D0FFD448D71CFC2E0F2C0F2A0F280F45F906 +S315E063A1E00001EDDA068700000024068600000026FB +S315E063A1F006850000002806840000002A49F900E38A +S315E063A200AD0A47F900E349BA34126764717900022B +S315E063A21037A4A141B280670A7342B280665276017F +S315E063A220600242432F072F062F052F043F3C0004AD +S315E063A2303F024E943F2F00383F2F003C3F2F0040B4 +S315E063A2403F2F00443F023F3C00154E934FEF002003 +S315E063A2503F2F00243F2F00283F2F002C3F2F003055 +S315E063A2603F023F3C00144E934FEF000C4A43660CAB +S315E063A27045EA00B0B5FC0001F09A668C4CD71CFC4D +S315E063A2804FEF002C4E752F02302F000E206F000823 +S315E063A290322F000C4A40661071412400E78AEB884E +S315E063A2A09082303008026022C1FC0018303008002A +S315E063A2B060183400C5FC001843F028003429000A0E +S315E063A2C008020000660E3011600273417540B28287 +S315E063A2D06DE04240241F4E75472E675F7363726578 +S315E063A2E0656E5B637572725D2E6F625F74797065BE +S315E063A2F0203D3D20475F49434F4E006465736B2FB6 +S315E063A3006465736B77696E2E63002F02342F0008E2 +S315E063A31073422001E788EB8992800681000219E2A5 +S315E063A3202041721F71D0B280671A487AFFAC487ACF +S315E063A33000B6487802FE487AFFC34EB900E0387447 +S315E063A3404FEF00107142241F2200E789EB8890816A +S315E063A3500680000219E822402051202800084E7545 +S315E063A3602F027240206F00082268001871290008E6 +S315E063A370B280671841E8001C5089600210C010196A +S315E063A38067087300742AB48166F24210241F4E751F +S315E063A3902F0B2F0A246F000C266A001848790001F8 +S315E063A3A0FA8242673F3C00054EB900E3B35A2F3960 +S315E063A3B00001FA8248790001FAD44EB900E012FC52 +S315E063A3C04FEF000E3F2B00502F2B005248790001D0 +S315E063A3D0FAD4486A005F4EB900E1C5D64FEF001084 +S315E063A3E0245F265F4E7577696E5F696E616D6500A2 +S315E063A3F0302F000441F900E5034033C00001117CCE +S315E063A400C1FC00030680FFFFFFE2714012300800E3 +S315E063A4102040D1FC00E50341488133C10001117E50 +S315E063A4201010488033C000011180122800012F39D3 +S315E063A430000111A0488133C1000111824EB900E0E9 +S315E063A44035B0588F30390001116C4E75558F3F3CEE +S315E063A450000A203C000238C023C000011188203C7A +S315E063A4600001114C23C00001118C203C0001116CEA +S315E063A47023C000011190203C0001114441F9000121 +S315E063A480118423C000011194203C0001119C20BC7F +S315E063A4900001117C23C8000111A023C000011198BB +S315E063A4A04EBAFF4E588F30390001116C4E75558F99 +S315E063A4B03F3C00134EBAFF3A588F70014E75700DEC +S315E063A4C041EF000423D0000111443F4000046000E3 +S315E063A4D0FF2041EF000433D00001114C41EF000649 +S315E063A4E033D00001114E41EF0008558F33D00001A0 +S315E063A4F011503F3C00154EBAFEF8206F000E30B99E +S315E063A5000001116E206F001230B900011170206FE7 +S315E063A510001630B900011172206F001A588F30B9F6 +S315E063A5200001117430390001116C4E75701841EFFA +S315E063A530000433D00001114C41EF000633D0000133 +S315E063A540114E3F4000046000FEA841EF000433D0A3 +S315E063A5500001114C41EF000633D00001114E41EF8B +S315E063A560000833D00001115041EF000A33D00001F7 +S315E063A570115241EF000C33D00001115441EF000E4C +S315E063A58033D00001115641EF001033D0000111586A +S315E063A59041EF001233D00001115A41EF001433D07A +S315E063A5A00001115C41EF001633D00001115E41EF0B +S315E063A5B0001833D00001116041EF001A33D0000177 +S315E063A5C0116241EF001C33D00001116441EF001EBC +S315E063A5D033D00001116641EF002023D0000111441E +S315E063A5E041EF002433D00001116841EF0026558F17 +S315E063A5F033D00001116A3F3C00194EBAFDF4206F77 +S315E063A600002C30B90001116E206F003030B90001C3 +S315E063A6101170206F003430B900011172206F003879 +S315E063A62030B900011174206F003C30B90001117636 +S315E063A630206F0040588F30B900011178303900013E +S315E063A640116C4E75701A41EF000433D00001114C62 +S315E063A65041EF000633D00001114E3F400004600035 +S315E063A660FD90701E41EF000423D00001114441EFD9 +S315E063A670000833D00001114C3F4000046000FD72D6 +S315E063A680701F41EF000423D00001114441EF00083D +S315E063A69033D00001114C41EF000A33D00001114E73 +S315E063A6A03F4000046000FD4A702041EF000423D080 +S315E063A6B00001114441EF000833D00001114C41EF32 +S315E063A6C0000A33D00001114E3F4000046000FD22D2 +S315E063A6D0702141EF000423D00001114441EF0008EB +S315E063A6E033D00001114C41EF000A33D00001114E23 +S315E063A6F03F4000046000FCFA702241EF000423D07F +S315E063A7000001114441EF000833D00001114C41EFE1 +S315E063A710000A23D0000111483F4000046000FCD2E8 +S315E063A720702541EF000433D00001114C41EF000680 +S315E063A73033D00001114E3F4000046000FCB4702842 +S315E063A74041EF000423D00001114441EF000833D008 +S315E063A7500001114C41EF000A33D00001114E3F4036 +S315E063A76000046000FC8C41EF000423D00001114437 +S315E063A77041EF000833D00001114C41EF000A702A23 +S315E063A78033D00001114E41EF000C33D0000111507C +S315E063A79041EF000E33D00001115241EF001033D088 +S315E063A7A00001115441EF001233D0000111563F40CE +S315E063A7B000046000FC3C41EF0004702B23D00001F1 +S315E063A7C0114441EF000833D00001114C41EF000A18 +S315E063A7D033D00001114E41EF000C33D0000111502C +S315E063A7E041EF000E33D0000111523F400004600098 +S315E063A7F0FC00702D41EF000423D00001114441EFCA +S315E063A800000833D00001114C41EF000A33D0000158 +S315E063A810114E3F4000046000FBD841EF000423D0B3 +S315E063A8200001114441EF0008558F33D00001114C0C +S315E063A8303F3C002C4EBAFBBA206F000E30B90001E4 +S315E063A840116E206F0012588F30B9000111703039E4 +S315E063A8500001116C4E7541EF000423D000011144F1 +S315E063A86041EF000833D00001114C41EF000A33D0C9 +S315E063A8700001114E41EF000C33D00001115041EF5E +S315E063A880000E702F33D00001115241EF001033D028 +S315E063A8900001115441EF001233D00001115641EF2C +S315E063A8A0001433D00001115841EF001633D0000194 +S315E063A8B0115A3F4000046000FB38703241EF0004F8 +S315E063A8C023D00001114441EF000833D00001114C5D +S315E063A8D03F4000046000FB1A41EF000433D00001FF +S315E063A8E0114C41EF000633D00001114E41EF0008F1 +S315E063A8F033D00001115041EF000A33D00001115209 +S315E063A90041EF000C703333D00001115441EF000E78 +S315E063A91033D00001115641EF001033D000011158D6 +S315E063A92041EF001233D00001115A41EF001433D0E6 +S315E063A9300001115C3F4000046000FAB6703441EFF9 +S315E063A940000433D00001114C41EF000623D000012F +S315E063A95011443F4000046000FA98703541EF00040B +S315E063A96033D00001114C3F4000046000FA8441EFAC +S315E063A9700004558F23D0000111443F3C00364EBAA4 +S315E063A980FA70206F000C30B90001116E206F001071 +S315E063A99030B900011170206F001430B900011172F3 +S315E063A9A0206F0018588F30B90001117430390001F7 +S315E063A9B0116C4E7541EF000433D00001114C41EF49 +S315E063A9C0000633D00001114E41EF000833D0000199 +S315E063A9D0115041EF000A558F33D0000111523F3CCD +S315E063A9E000464EBAFA0C206F001030B90001116EC2 +S315E063A9F0206F0014588F30B90001117030390001AF +S315E063AA00116C4E7541EF000433D00001114C41EFF8 +S315E063AA10000633D00001114E41EF000833D0000148 +S315E063AA20115041EF000A33D00001115241EF000C9F +S315E063AA3033D00001115441EF000E33D000011156BB +S315E063AA4041EF001033D00001115841EF0012558FEA +S315E063AA5033D00001115A3F3C00474EBAF994206F58 +S315E063AA60001830B90001116E206F001C588F30B9A1 +S315E063AA700001117030390001116C4E7541EF00042D +S315E063AA8033D00001114C41EF0006704833D000012A +S315E063AA90114E41EF000833D00001115041EF000A37 +S315E063AAA033D00001115241EF000C33D00001115451 +S315E063AAB041EF000E33D0000111563F4000046000C1 +S315E063AAC0F93041EF000433D00001114C41EF000649 +S315E063AAD033D00001114E41EF000833D0000111502D +S315E063AAE041EF000A704933D00001115241EF000C87 +S315E063AAF033D00001115441EF000E33D000011156FB +S315E063AB0041EF001033D00001115841EF001233D00A +S315E063AB100001115A3F4000046000F8D641EF00049B +S315E063AB2033D00001114C41EF000633D00001114EE2 +S315E063AB3041EF000833D00001115041EF000A704A3B +S315E063AB4033D00001115241EF000C33D000011154B0 +S315E063AB5041EF000E33D00001115641EF001033D0C0 +S315E063AB600001115841EF001233D00001115A3F4002 +S315E063AB7000046000F87C704B41EF000423D00001D1 +S315E063AB80114441EF000833D00001114E41EF000A52 +S315E063AB9033D00001115041EF000C33D00001115264 +S315E063ABA03F4000046000F84A704C41EF000423D054 +S315E063ABB00001114441EF000833D00001114C41EF2D +S315E063ABC0000A33D00001114E41EF000C33D000018F +S315E063ABD011503F4000046000F818558F3F3C004D2C +S315E063ABE04EBAF80E206F000830B90001116E206F7F +S315E063ABF0000C30B900011170206F001030B900010C +S315E063AC001172206F0014588F30B900011174303916 +S315E063AC100001116C4E75716F000641EF000433D08D +S315E063AC200001114C23C000011144704E3F40000403 +S315E063AC306000F7BE558F3F3C004F4EBAF7B4206FC6 +S315E063AC40000830B90001116E206F000C30B90001C5 +S315E063AC501170206F001030B900011172206F00147B +S315E063AC60588F30B9000111744E7541EF000470647A +S315E063AC7033D00001114C41EF000633D00001114E91 +S315E063AC8041EF000833D00001115041EF000A33D0A1 +S315E063AC900001115241EF000C33D0000111543F40E3 +S315E063ACA000046000F74C41EF0004706533D00001A7 +S315E063ACB0114C41EF000633D00001114E41EF00081D +S315E063ACC033D00001115041EF000A33D00001115235 +S315E063ACD041EF000C33D0000111543F4000046000A3 +S315E063ACE0F710706641EF000433D00001114C3F402A +S315E063ACF000046000F6FC706741EF000433D00001A6 +S315E063AD00114C3F4000046000F6E841EF000433D0A5 +S315E063AD100001114C41EF0006558F33D00001114E0F +S315E063AD203F3C00684EBAF6CA206F000C30B90001AA +S315E063AD30116E206F001030B900011170206F00149E +S315E063AD4030B900011172206F0018588F30B90001D5 +S315E063AD50117430390001116C4E7541EF000433D044 +S315E063AD600001114C41EF0006706933D00001114ECA +S315E063AD7041EF000833D00001115041EF000A33D0B0 +S315E063AD800001115241EF000C33D00001115441EF41 +S315E063AD90000E33D0000111563F4000046000F652C6 +S315E063ADA0706A41EF000433D00001114C41EF0006B5 +S315E063ADB033D00001114E3F4000046000F634706BFF +S315E063ADC041EF000433D00001114C3F4000046000C2 +S315E063ADD0F62041EF000433D00001114C41EF000649 +S315E063ADE033D00001114E41EF000833D0000111501A +S315E063ADF041EF000A33D00001115241EF000C33D02A +S315E063AE000001115441EF000E558F33D00001115606 +S315E063AE103F3C006C4EBAF5DA206F001430B900019E +S315E063AE20116E206F001830B900011170206F001C9D +S315E063AE3030B900011172206F0020588F30B90001DC +S315E063AE40117430390001116C4E75707241EF000474 +S315E063AE5023D00001114441EF000833D00001114CC7 +S315E063AE603F4000046000F58A707841EF000423D028 +S315E063AE700001114441EF000823D0000111483F402F +S315E063AE8000046000F56C41EF0004707933D0000193 +S315E063AE90114C41EF000633D00001114E41EF00083B +S315E063AEA033D00001115041EF000A23D00001114471 +S315E063AEB041EF000E23D0000111483F4000046000DB +S315E063AEC0F530707A41EF000423D00001114441EF7D +S315E063AED0000833D00001114C3F4000046000F512D6 +S315E063AEE0707B41EF000423D00001114441EF000879 +S315E063AEF033D00001114C3F4000046000F4F4707CF1 +S315E063AF0041EF000423D0000111443F400004600098 +S315E063AF10F4E0707D41EF000423D00001114441EF7A +S315E063AF20000823D0000111483F4000046000F4C2EA +S315E063AF302047656E657269632000205370726561B0 +S315E063AF40647368656574200020576F72642050727D +S315E063AF506F636573736F722000204461746162612D +S315E063AF607365200020447261772000205061696E2A +S315E063AF707420002050726F6A656374200020477204 +S315E063AF806170682000204F75746C696E65200020DF +S315E063AF904163636F756E74696E672000204D756CEF +S315E063AFA074692D46756E6374696F6E20002045641F +S315E063AFB075636174696F6E200020436F6D6D756EA6 +S315E063AFC069636174696F6E7320002050726F677294 +S315E063AFD0616D6D6572277320546F6F6C2000204737 +S315E063AFE0616D652000204F75747075742000204490 +S315E063AFF065736B746F70205075626C6973686572A4 +S315E063B0002000205363616E2000204D61696C20004F +S315E063B010000000004FEFFFE848D71C1C246F001CBC +S315E063B020A343342F002047F900E0117645EA000C8C +S315E063B0306044302AFFFA780B0680FFFFFFEB73C0AC +S315E063B040B881652E71402203E1A9200102810000E7 +S315E063B05008A06616028000000303671628522F2CA9 +S315E063B06000044E932940000460062F124E93248019 +S315E063B070588F45EA001853824A426CB64CD71C1C7B +S315E063B0804FEF00184E754FEFFFE448D71C3C342F63 +S315E063B0900024246F0020424349F900E0117647EA31 +S315E063B0A000047942600E2F134E945283588F2680A4 +S315E063B0B047EB001C7143B8806EEC204A4280424104 +S315E063B0C0794260264A90661C2668000493C9600A42 +S315E063B0D077037A5FBA8366025289161B66F25289F0 +S315E063B0E07749D083528141E8001C7741B8836ED4B7 +S315E063B0F02F004EB900E301F2588F42417542604238 +S315E063B1004A9266382480204010FC00404240226A1E +S315E063B1100004600A7703785FB88366025280161983 +S315E063B12066F293C97740600810BC005F204052899D +S315E063B130794920085280B6846EEE4210528145EA20 +S315E063B140001C7741B4836EB84CD71C3C4FEF001CB0 +S315E063B1504E754FEFFFC8302F004048D77CFC246F15 +S315E063B160003C2E3C00E1C4A47DF90000526A4243F0 +S315E063B170E68EC1FC001841F2080071680002220005 +S315E063B180E789EB88908130320802C1FC00184BF204 +S315E063B190080071680004382D00022200E789EB8815 +S315E063B1A09081343208023004C1FC001849F2080C7D +S315E063B1B071462F400034600000AEC5FC00182F14C2 +S315E063B1C020474E9047F228003A2B00022F4000308A +S315E063B1D0396F0032000839430004588F4242300524 +S315E063B1E0C1FC00184DF2080C601A2F1620474E90EA +S315E063B1F07342588F22417340B2896F02340052859D +S315E063B2004DEE0018302B0004734522417340B2893A +S315E063B2106CD8204354883748001041F028007B48B7 +S315E063B220BAAF00346D10204691C25382374800109E +S315E063B2300082000007003A2B000271403205C3FC2E +S315E063B240001841F2181460083082528541E800180C +S315E063B2507345B0816CF2374200143413D6AF002CD9 +S315E063B260528449EC00187344716D0004B0816C003C +S315E063B270FF4A3B4300144CD77CFC4FEF00384E75D6 +S315E063B28000002F0A2F0248781428487A1356487923 +S315E063B29000023CEC45F900E00EC44E924878040C9B +S315E063B2A0487A29D64879000238E04E924FEF001685 +S315E063B2B03F3C00D7487900023CEC4EBAFD58713901 +S315E063B2C000E5D6D8508F7228B2806616123C000C21 +S315E063B2D0203C00E3B28023C00002441833C100027D +S315E063B2E04434558F4267424245F900E3AE4A4879B2 +S315E063B2F000023CEC4EBAFE5C508F558F3F025282A1 +S315E063B300487900023CEC4E927142508F0C8000000B +S315E063B31000D766E6558F3F3C00254879000238E062 +S315E063B3204EBAFD64508F241F245F4E754649584DCF +S315E063B330453A20756E737570706F72746564202814 +S315E063B34066616B65642920727372635F67616464C7 +S315E063B350722074797065210A00004FEFFFF4322F93 +S315E063B360001048D7040C302F0012A943246F001451 +S315E063B3707541B6826718163C0005B68267264A4170 +S315E063B380663A714041FA0BB624B00C006012714024 +S315E063B3902200D281E9889081068000E526642480D4 +S315E063B3A070016026714041F900E525BC2F300C0041 +S315E063B3B04EB900E01176588F248060E4487AFF6ED8 +S315E063B3C04EB900E038324240588F4CD7040C4FEF09 +S315E063B3D0000C4E75256C6420627974657320757311 +S315E063B3E0656420696E202564206974656D732E003B +S315E063B3F0202053686F772061732069636F6E7320D3 +S315E063B400200753006170706C69636174696F6E00E5 +S315E063B410646F63756D656E747300464F524D415448 +S315E063B4202E50524700202053686F77206173207453 +S315E063B430657874202020075300413A5C454D5544B6 +S315E063B44045534B2E494E4600234620464620323826 +S315E063B4502040202A2E2A40002344204646203032CC +S315E063B4602040202A2E2A40002347203038204646B3 +S315E063B470202A2E4150504020400023472030382078 +S315E063B4804646202A2E505247402040002350203023 +S315E063B49038204646202A2E54545040204000234606 +S315E063B4A0203038204646202A2E544F534020400011 +S315E063B4B0464F524D41542E545450004E65772046C4 +S315E063B4C06F6C646572004469736B20447269766578 +S315E063B4D0733A00616D00706D005B315D5B54686566 +S315E063B4E020646F63756D656E742074797065207919 +S315E063B4F06F752073656C6563746564206973206E2C +S315E063B5006F747C636F6E6669677572656420746F6A +S315E063B51020776F726B20776974682061207370653A +S315E063B52063696669637C6170706C69636174696F32 +S315E063B5306E2E2020557365207468652022436F6EF6 +S315E063B5406669677572657C6170706C6963617469FD +S315E063B5506F6E2220636F6D6D616E6420746F206120 +S315E063B56073736F636961746520746869737C646F10 +S315E063B57063756D656E742074797065207769746838 +S315E063B58020616E206170706C69636174696F6E2EA1 +S315E063B5905D5B20204F4B20205D005B315D5B546833 +S315E063B5A0652047454D204465736B746F7020686111 +S315E063B5B073206E6F206D6F726520617661696C6171 +S315E063B5C0626C657C77696E646F77732E2020426563 +S315E063B5D0666F726520796F75206F70656E20612086 +S315E063B5E06469736B2C20636C6F73657C6120776928 +S315E063B5F06E646F7720796F75277265206E6F74203E +S315E063B6007573696E672E5D5B20204F4B20205D006E +S315E063B6105B315D5B43616E6E6F742066696E642059 +S315E063B62074686520464F524D41542070726F67725D +S315E063B630616D2E2020496620796F757C6172652085 +S315E063B6407573696E672061206475616C2D666C6FD6 +S315E063B6507070792073797374656D2C20796F7520BA +S315E063B6606D7573747C666F726D6174206469736BF8 +S315E063B670732066726F6D20796F757220444F532025 +S315E063B6806469736B2E2020496620796F757C6172DD +S315E063B69065207573696E67206120686172642064F2 +S315E063B6A069736B2C20636F707920464F524D41541A +S315E063B6B020746F207C74686520726F6F7420646990 +S315E063B6C0726563746F72792E5D5B4F4B5D005B33BE +S315E063B6D05D5B466F726D617474696E672077696CE2 +S315E063B6E06C20455241534520616C6C7C696E666F94 +S315E063B6F0726D6174696F6E206F6E20746865206425 +S315E063B70069736B20696E2064726976657C25633A3A +S315E063B7102E2020436C69636B206F6E204F4B206F46 +S315E063B7206E6C7920696620796F7520646F6E277415 +S315E063B7307C6D696E64206C6F73696E67207468658F +S315E063B74020696E666F726D6174696F6E206F6E7C71 +S315E063B75074686973206469736B2E5D5B20204F4B5D +S315E063B76020207C43616E63656C5D005B335D5B5992 +S315E063B7706F752063616E6E6F7420636F707920619D +S315E063B78020706172656E7420666F6C6465727C6945 +S315E063B7906E746F206F6E65206F66206974732063C5 +S315E063B7A068696C6420666F6C646572732E5D5B209A +S315E063B7B0204F4B20205D005B335D5B496620796FEC +S315E063B7C07520617265207375726520796F75207770 +S315E063B7D0616E7420746F7C64656C65746520414C3E +S315E063B7E04C2074686520696E666F726D6174696F0B +S315E063B7F06E206F6E207468657C6469736B20696E16 +S315E063B8002064726976652025633A2C20636C6963EC +S315E063B8106B206F6E204F4B2E7C4F74686572776931 +S315E063B82073652C20636C69636B206F6E2043616E76 +S315E063B83063656C2E5D5B20204F4B20207C43616EFD +S315E063B84063656C5D005B315D5B5468657265206959 +S315E063B85073206E6F7420656E6F75676820737061B1 +S315E063B860636520617661696C61626C657C746F2087 +S315E063B870636F6E6669677572652074686973206164 +S315E063B88070706C69636174696F6E2E2020546F20EB +S315E063B890667265657C757020736F6D652073706124 +S315E063B8A063652C20796F75276C6C206861766520FB +S315E063B8B0746F2072656D6F76657C6F6E65206F66FB +S315E063B8C020796F75722063757272656E746C792018 +S315E063B8D0636F6E666967757265647C6170706C6967 +S315E063B8E0636174696F6E732E5D5B20204F4B20201E +S315E063B8F05D005B325D5B4120666F6C6465722077E9 +S315E063B9006974682074686174206E616D6520616C2A +S315E063B91072656164797C657869737473206F72208C +S315E063B920796F7572206469736B2069732066756CD1 +S315E063B9306C2E7C5265747279207769746820612015 +S315E063B9406E6577206E616D652C206F722043616E44 +S315E063B95063656C7C616E6420636865636B207468A1 +S315E063B9606520617661696C61626C65206469736B9D +S315E063B9702073706163652E5D5B2043616E63656C06 +S315E063B980207C205265747279205D005B315D5B5487 +S315E063B990686973206469736B20646F6573206E6F87 +S315E063B9A074206861766520656E6F75676820726F6F +S315E063B9B06F6D20666F727C74686520696E666F7200 +S315E063B9C06D6174696F6E20796F752061726520743D +S315E063B9D07279696E6720746F20636F70792E7C531A +S315E063B9E06F6D65206974656D732C20686F77657616 +S315E063B9F065722C206D617920686176652062656584 +S315E063BA006E7C636F7069656420746F20746865200B +S315E063BA106469736B2E5D5B20204F4B20205D005B7A +S315E063BA20335D5B5468652047454D204465736B74AD +S315E063BA306F702063616E6E6F742066696E642074E6 +S315E063BA4068657C646F63756D656E74732044455396 +S315E063BA504B4C4F2E49434E2C204445534B48492E7D +S315E063BA6049434E2C7C6F72204445534B544F502EC2 +S315E063BA70494E4620696E2074686520444F532073AF +S315E063BA8065617263687C706174682E2020546865B2 +S315E063BA90736520646F63756D656E7473206172653B +S315E063BAA02072657175697265647C746F2072756EF8 +S315E063BAB0207468652047454D204465736B746F70E9 +S315E063BAC02E5D5B43616E63656C5D005B335D5B540A +S315E063BAD06F207361766520796F7572206465736B29 +S315E063BAE0746F702C20696E7365727420796F7572EA +S315E063BAF07C47454D204445534B544F50206469730E +S315E063BB006B20696E746F20647269766520413A2CA6 +S315E063BB1020636C6F73657C746865206472697665AF +S315E063BB2020646F6F722C20616E6420636C69636B53 +S315E063BB30206F6E204F4B2E7C436C69636B206F6E78 +S315E063BB402043616E63656C20696620796F75206456 +S315E063BB506F6E27742077616E7420746F7C73617681 +S315E063BB606520746865206465736B746F702E5D5BC6 +S315E063BB7020204F4B20207C43616E63656C5D005BE8 +S315E063BB80335D5B536F7272792C2062757420796FC3 +S315E063BB90752063616E6E6F7420706C61636520619E +S315E063BBA06E79206D6F72657C666F6C646572732007 +S315E063BBB0696E73696465206F6620796F7572206359 +S315E063BBC0757272656E74206F6E652E7C5365652043 +S315E063BBD0796F757220646F63756D656E7461746990 +S315E063BBE06F6E20666F72206C696D697473206F6E19 +S315E063BBF07C666F6C6465727320696E7369646520D5 +S315E063BC006F7468657220666F6C646572732E5D5BD4 +S315E063BC1043616E63656C5D005B335D5B536F72724C +S315E063BC20792C206275742074686520446972656353 +S315E063BC30746F7279206E616D6520796F75206861C6 +S315E063BC4076657C656E746572656420657863656543 +S315E063BC50647320746865206D6178696D756D206EB7 +S315E063BC60756D626572206F667C6368617261637429 +S315E063BC706572732E202053656520796F7572206433 +S315E063BC806F63756D656E746174696F6E20666F72EE +S315E063BC907C6C696D697473206F6E20746865206E61 +S315E063BCA0756D626572206F66206368617261637445 +S315E063BCB065727320796F757C63616E20656E7465FA +S315E063BCC0722E5D5B2020204F4B2020205D005B3190 +S315E063BCD05D5B596F752063616E6E6F74206F70651F +S315E063BCE06E207468652074726173682063616E2088 +S315E063BCF069636F6E7C696E746F20612077696E64C9 +S315E063BD006F772E20546F2064656C657465206120BF +S315E063BD106469736B2C7C666F6C6465722C20646FEC +S315E063BD2063756D656E742C206F72206170706C69DB +S315E063BD30636174696F6E2C7C6472616720697420D9 +S315E063BD40746F207468652074726173682063616ED2 +S315E063BD502E5D5B20204F4B20205D005B315D5B54A5 +S315E063BD6068652074726173682063616E206973200D +S315E063BD707468652064657374696E6174696F6E2057 +S315E063BD80746F7C776869636820796F752064726124 +S315E063BD906720746865206469736B732C20666F6CC7 +S315E063BDA0646572732C7C646F63756D656E74732CF6 +S315E063BDB0206F72206170706C69636174696F6E7312 +S315E063BDC0207468617420796F757C77616E74207412 +S315E063BDD06F2064656C657465205045524D414E45F0 +S315E063BDE04E544C59215D5B20204F4B20205D005B18 +S315E063BDF0315D5B596F752063616E6E6F742064723B +S315E063BE00616720666F6C646572732C20646F63751B +S315E063BE106D656E74732C206F727C6170706C696390 +S315E063BE206174696F6E73206F6E746F2074686520DA +S315E063BE304465736B746F702E2020486F7765766503 +S315E063BE40722C7C796F752063616E20636F707920E5 +S315E063BE507468656D20746F206469736B73206F72A9 +S315E063BE602064726167207468656D7C746F207468A2 +S315E063BE70652074726173682E5D5B20204F4B2020D2 +S315E063BE805D005B315D5B596F752063616E6E6F74E8 +S315E063BE9020647261672074686520747261736820D8 +S315E063BEA063616E7C696E746F20612077696E646F1F +S315E063BEB0772E5D5B20204F4B20205D005B315D5B21 +S315E063BEC0596F752063616E2064726167207468657B +S315E063BED02074726173682063616E20746F20616E93 +S315E063BEE06F746865727C6C6F636174696F6E206F83 +S315E063BEF06E207468652047454D204465736B746FA7 +S315E063BF00702C2062757420796F757C63616E6E6FD9 +S315E063BF107420706C616365206974206F6E20746F42 +S315E063BF2070206F6620616E6F746865722069636FF7 +S315E063BF306E2E5D5B20204F4B20205D0000023CECC3 +S315E063BF400002410C0002422C00024304000243DC7F +S315E063BF500002455C0002461C000246F4000247FC10 +S315E063BF6000024B2C00024BBC00024C4C00024CF42A +S315E063BF7000024D6C204465736B20002046696C6556 +S315E063BF802000204F7074696F6E73200020417272D7 +S315E063BF90616E6765200020204465736B746F702063 +S315E063BFA0696E666F2E2E2E202020002D2D2D2D2DD1 +S315E063BFB02D2D2D2D2D2D2D2D2D2D2D2D2D2D2D0095 +S315E063BFC031003200330034003500360020204F70F4 +S315E063BFD0656E002020496E666F2F52656E616D65F2 +S315E063BFE02E2E2E20200749002D2D2D2D2D2D2D2D86 +S315E063BFF02D2D2D2D2D2D2D2D2D2D2D2D2D0020206F +S315E063C0004E657720466F6C6465722E2E2E00202077 +S315E063C010436C6F7365002020436C6F7365207769AB +S315E063C0206E646F7700202044656C6574652E2E2EF2 +S315E063C030202020202020200744002020466F726DB8 +S315E063C04061742E2E2E002020457865637574652015 +S315E063C050456D75434F4E20205E5A00202053687528 +S315E063C06074646F776E20202020202020205E5100AC +S315E063C0702020496E7374616C6C206469736B206411 +S315E063C080726976652E2E2E002020436F6E66696791 +S315E063C090757265206170706C69636174696F6E2E29 +S315E063C0A02E2E20200741002D2D2D2D2D2D2D2D2DCE +S315E063C0B02D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D67 +S315E063C0C02D2D2D2D2D2D0020205365742070726546 +S315E063C0D0666572656E6365732E2E2E00202053614E +S315E063C0E07665206465736B746F7020202020202052 +S315E063C0F0202020202020202007560020204368614E +S315E063C1006E6765207265736F6C7574696F6E2020F8 +S315E063C110202020202020200743002020536F7274C4 +S315E063C120206279206E616D65202020074E00202015 +S315E063C130536F7274206279207479706520202007CA +S315E063C14050002020536F72742062792073697A6598 +S315E063C150202020075A002020536F727420627920D2 +S315E063C160646174652020200754004954454D204995 +S315E063C1704E464F524D4154494F4E202F2052454E25 +S315E063C180414D4500417474726962757465733A0032 +S315E063C190526561642F577269746500526561642DF7 +S315E063C1A04F6E6C79004449534B20494E464F524D8E +S315E063C1B04154494F4E00464F4C44455220494E4602 +S315E063C1C04F524D4154494F4E002D20456D75544FA6 +S315E063C1D053202D0056657273696F6E0068747470D0 +S315E063C1E03A2F2F656D75746F732E736F7572636512 +S315E063C1F0666F7267652E6E657400436F70797269F8 +S315E063C200676874202863292062790054686520454D +S315E063C2106D75544F5320646576656C6F706D656EAE +S315E063C22074207465616D004261736564206F6E208E +S315E063C2302747504C65642720736F75726365730097 +S315E063C2402863292031393837206279204469676960 +S315E063C25074616C20526573656172636820496E63CD +S315E063C2602E0028632920313939392043616C6465AE +S315E063C2707261205468696E20436C69656E74732CD1 +S315E063C28020496E632E002863292032303031204CFA +S315E063C290696E656F2C20496E632E00456D75544F4C +S315E063C2A05320697320646973747269627574656433 +S315E063C2B020756E646572207468652047504C005340 +S315E063C2C0656520646F632F6C6963656E73652E7451 +S315E063C2D0787420666F722064657461696C73004E6E +S315E063C2E0455720464F4C44455220494E464F524DA2 +S315E063C2F04154494F4E00546F206372656174652003 +S315E063C30061206E657720666F6C6465722077697409 +S315E063C31068696E20746865206375722D0072656E58 +S315E063C320742077696E646F772C20646F75626C65D1 +S315E063C3302D636C69636B206F6E20746865204E6550 +S315E063C3407700466F6C6465722069636F6E20616E19 +S315E063C3506420636F6D706C657465207468652064D2 +S315E063C36069616C6F6775650074686174206170708C +S315E063C3706561727320627920656E746572696E6752 +S315E063C38020746865206E616D65206F66007468650C +S315E063C39020666F6C64657220796F752077616E7461 +S315E063C3A020746F206372656174652E004F50454E4D +S315E063C3B0204150504C49434154494F4E00456E74B9 +S315E063C3C0657220746865206E616D65206F662074A2 +S315E063C3D0686520646F63756D656E7420796F75202B +S315E063C3E077616E7400746F206C6F61642C206F727A +S315E063C3F020656E74657220706172616D65746572D5 +S315E063C4002076616C7565732074686174006172652A +S315E063C4102061636365707461626C6520746F207418 +S315E063C420686973206170706C69636174696F6E2E9D +S315E063C43000494E5354414C4C204449534B2044529B +S315E063C440495645004469736B20747970653A0046D2 +S315E063C4506C6F707079004861726400434F4E464971 +S315E063C46047555245204150504C49434154494F4EFC +S315E063C47000446F63756D656E742074797065733AA5 +S315E063C480004170706C69636174696F6E2074797072 +S315E063C490653A0047454D00544F5300545450004E9F +S315E063C4A0656564732066756C6C206D656D6F727916 +S315E063C4B03F0049636F6E20747970653A00434F506D +S315E063C4C05920464F4C44455253202F204954454DFD +S315E063C4D0530044454C45544520464F4C44455253DE +S315E063C4E0202F204954454D53004E414D4520434F3F +S315E063C4F04E464C49435420445552494E4720434F98 +S315E063C50050590053746F70004E455720464F4C4464 +S315E063C51045520053455420505245464552454E4395 +S315E063C520455300436F6E6669726D2064656C65742E +S315E063C53065733F00436F6E6669726D20636F706902 +S315E063C54065733F00436F6E6669726D206F766572E1 +S315E063C5507772697465733F00446F75626C652D63CA +S315E063C5606C69636B2073706565643A00436C6963F9 +S315E063C5706B004E6F20636C69636B00546F2064726B +S315E063C5806F7020646F776E206D656E75733A0053D6 +S315E063C5906F756E6420656666656374733A004F6EA5 +S315E063C5A0004F66660054696D6520666F726D6174EF +S315E063C5B03A00313220486F757200323420486F7525 +S315E063C5C072004461746520666F726D61743A004D02 +S315E063C5D04D2D44442D59590044442D4D4D2D595903 +S315E063C5E00000FFFF000100070019000000000000E3 +S315E063C5F0000000000000005000190007000200027E +S315E063C600001400000000000011000000000000506C +S315E063C61002010001000300060019000000000000AB +S315E063C620000000020000001E03010004FFFFFFFF9D +S315E063C63000200000000000E3BF7400000000000675 +S315E063C64003010005FFFFFFFF00200000000000E399 +S315E063C650BF7B00060000000603010006FFFFFFFF45 +S315E063C66000200000000000E3BF82000C0000000928 +S315E063C67003010002FFFFFFFF00200000000000E36C +S315E063C680BF8C0015000000090301000000080025C7 +S315E063C69000190000000000000000000003010050E4 +S315E063C6A0001800110009001000140000000000FFEC +S315E063C6B011000002000000140008000AFFFFFFFFFC +S315E063C6C0001C0000000000E3BF96000000000014B9 +S315E063C6D00001000BFFFFFFFF001C0000000800E302 +S315E063C6E0BFAB0000000100140001000CFFFFFFFF79 +S315E063C6F0001C0000000000E3BFC00000000200145D +S315E063C7000001000DFFFFFFFF001C0000000000E3D7 +S315E063C710BFC20000000300140001000EFFFFFFFF2D +S315E063C720001C0000000000E3BFC400000004001426 +S315E063C7300001000FFFFFFFFF001C0000000000E3A5 +S315E063C740BFC600000005001400010010FFFFFFFFF5 +S315E063C750001C0000000000E3BFC8000000060014F0 +S315E063C76000010008FFFFFFFF001C0000000000E37C +S315E063C770BFCA0000000700140001001E0012001D7E +S315E063C78000140000000000FF11000008000000151F +S315E063C790000C0013FFFFFFFF001C0000000000E336 +S315E063C7A0BFCC00000000001500010014FFFFFFFF8F +S315E063C7B0001C0000000000E3BFD300000001001589 +S315E063C7C000010015FFFFFFFF001C0000000800E307 +S315E063C7D0BFE800000002001500010016FFFFFFFF3F +S315E063C7E0001C0000000000E3BFFE0000000300152C +S315E063C7F000010017FFFFFFFF001C0000000000E3DD +S315E063C800C00E00000004001500010018FFFFFFFFE3 +S315E063C810001C0000000000E3C016000000050015E0 +S315E063C82000010019FFFFFFFF001C0000000800E3A2 +S315E063C830BFE80000000600150001001AFFFFFFFFD6 +S315E063C840001C0000000000E3C0250000000700159F +S315E063C8500001001BFFFFFFFF001C0000000000E378 +S315E063C860C03A0000000800150001001CFFFFFFFF4F +S315E063C870001C0000000800E3BFE8000000090015A3 +S315E063C8800001001DFFFFFFFF001C0000000000E346 +S315E063C890C0460000000A001500010011FFFFFFFF1C +S315E063C8A0001C0000000000E3C05B0000000B001505 +S315E063C8B000010025001F002400140000000000FFB3 +S315E063C8C01100000E0000001F00060020FFFFFFFFBF +S315E063C8D0001C0000000000E3C07000000000001FC1 +S315E063C8E000010021FFFFFFFF001C0000000000E3E2 +S315E063C8F0C08800000001001F00010022FFFFFFFF68 +S315E063C900001C0000000800E3C0A700000002001F4F +S315E063C91000010023FFFFFFFF001C0000000000E3AF +S315E063C920C0C700000003001F00010024FFFFFFFFF4 +S315E063C930001C0000000000E3C0DC00000004001FF0 +S315E063C9400001001EFFFFFFFF001C0000000800E37C +S315E063C950C0FB00000005001F000100070026002B56 +S315E063C96000140000000000FF11000017000000142F +S315E063C97000060027FFFFFFFF001C00000000000128 +S315E063C98011A400000000001400010028FFFFFFFF70 +S315E063C990001C0000000800E3BFAB000000010014C8 +S315E063C9A000010029FFFFFFFF001C0000000000E319 +S315E063C9B0C11A0000000200140001002AFFFFFFFF16 +S315E063C9C0001C0000000000E3C12E00000003001419 +S315E063C9D00001002BFFFFFFFF001C0000000000E3E7 +S315E063C9E0C14200000004001400010025FFFFFFFFC1 +S315E063C9F0001C0020000000E3C1560000000500149F +S315E063CA000001FFFF0001000B0014000000100002AC +S315E063CA101100000000000028000B0002FFFFFFFF8B +S315E063CA20001C0000000000E3C16A00020001001080 +S315E063CA3000010003FFFFFFFF001E00080000000285 +S315E063CA4038E0000B0003001400010004FFFFFFFF62 +S315E063CA50001E00000000000238FC00020004001E15 +S315E063CA6000010005FFFFFFFF001E0000000000025B +S315E063CA70391800020005001800010006FFFFFFFFFA +S315E063CA80001E0000000000023934001C00050008A7 +S315E063CA9000010007FFFFFFFF001C0000000000E34A +S315E063CAA0C18400020007000B0001000A00080009C8 +S315E063CAB000190000000000000000000F00070017E7 +S315E063CAC000010009FFFFFFFF001A0011000000E309 +S315E063CAD0C19000000000000B00010007FFFFFFFFAD +S315E063CAE0001A0011000000E3C19B000D0000000A7C +S315E063CAF00001000BFFFFFFFF001A0007000000E3E1 +S315E063CB00E084000A0009000800010000FFFFFFFF60 +S315E063CB10001A0025000000E3E0870016000900081C +S315E063CB200001FFFF0001000800140000001000028E +S315E063CB301100000000000025000C0002FFFFFFFF6C +S315E063CB40001C0000000000E3C1A500030001001023 +S315E063CB5000010003FFFFFFFF001E0000000000026C +S315E063CB60395000020003002000010004FFFFFFFFCD +S315E063CB70001E000000000002396C00020004002081 +S315E063CB8000010005FFFFFFFF001E0000000000023A +S315E063CB90398800020005002000010006FFFFFFFF61 +S315E063CBA0001E00000000000239A400020006002017 +S315E063CBB000010007FFFFFFFF001E00000000000208 +S315E063CBC039C000020007002000010008FFFFFFFFF5 +S315E063CBD0001E00000000000239DC000200080020AD +S315E063CBE000010000FFFFFFFF001A0027000000E3DB +S315E063CBF0E084001A000A00080001FFFF0001000854 +S315E063CC00001400000010000211000000000000287C +S315E063CC10000B0002FFFFFFFF001C0000000000E3C3 +S315E063CC20C1B600020001001200010003FFFFFFFF2F +S315E063CC30001E00000000000239F800080003001C33 +S315E063CC4000010004FFFFFFFF001E0000000000027A +S315E063CC503A1400070004001400010005FFFFFFFF1C +S315E063CC60001E0000000000023A30001A00040008CB +S315E063CC7000010006FFFFFFFF001E00000000000248 +S315E063CC803A4C00040005001E00010007FFFFFFFFAA +S315E063CC90001E0000000000023A6800040006001E61 +S315E063CCA000010008FFFFFFFF001E00000000000216 +S315E063CCB03A8400040007001E00010000FFFFFFFF47 +S315E063CCC0001A0027000000E3E08400100009000872 +S315E063CCD00001FFFF0001000F0014000000100002D6 +S315E063CCE0110000000000002800130002FFFFFFFFB1 +S315E063CCF0001C0000000000E3C1C9000F0001000A48 +S315E063CD0000010003FFFFFFFF001C0000000000E3DB +S315E063CD10C1D4000E0002000700010004FFFFFFFF1D +S315E063CD20001C0000000000E5D6D8001600020004EF +S315E063CD3000010005FFFFFFFF00170000000000E5AC +S315E063CD40266400210001000400040006FFFFFFFFE4 +S315E063CD50001C0000000000E3C1DC000500070014CE +S315E063CD6000010007FFFFFFFF001C0000000000E377 +S315E063CD70C1FA000C0004001200010008FFFFFFFF88 +S315E063CD8000170040000000E526640003000100048C +S315E063CD9000040009FFFFFFFF001C0000000000E342 +S315E063CDA0C20B00060005001B0001000AFFFFFFFF40 +S315E063CDB0001C0000000000E3C22700080009001819 +S315E063CDC00001000BFFFFFFFF001C0000000000E313 +S315E063CDD0C2400003000A00210001000CFFFFFFFFD1 +S315E063CDE0001A0007000000E3E08400100011000869 +S315E063CDF00001000DFFFFFFFF001C0000000000E3E1 +S315E063CE00C2620003000B00230001000EFFFFFFFF79 +S315E063CE10001C0000000000E3C2860003000C00145F +S315E063CE200001000FFFFFFFFF001C0000000000E3AE +S315E063CE30C29B0003000E002300010000FFFFFFFF1B +S315E063CE40001C0020000000E3C2BF0004000F0015D1 +S315E063CE500001FFFF0001000700140000001000025C +S315E063CE601100000000000028000B0002FFFFFFFF37 +S315E063CE70001C0000000000E3C2DF000300010017AE +S315E063CE8000010003FFFFFFFF001C0000000000E35A +S315E063CE90C2F600010003002600010004FFFFFFFF66 +S315E063CEA0001C0000000000E3C31D00010004002431 +S315E063CEB000010005FFFFFFFF001C0000000000E328 +S315E063CEC0C34200010005002500010006FFFFFFFFE6 +S315E063CED0001C0000000000E3C368000100060024B4 +S315E063CEE000010007FFFFFFFF001C0000000000E3F6 +S315E063CEF0C38D00010007001E00010000FFFFFFFF76 +S315E063CF00001A0027000000E3E0840010000900082F +S315E063CF100001FFFF0001000800140000001000029A +S315E063CF201100000000000047000A0002FFFFFFFF58 +S315E063CF30001C0000000000E3C3AC00030001001026 +S315E063CF4000010003FFFFFFFF001E00080000000270 +S315E063CF503AA000090003001300010004FFFFFFFF8E +S315E063CF60001E0008000000023ABC00030004004112 +S315E063CF7000010005FFFFFFFF001A0007000000E362 +S315E063CF80E08400330008000800010006FFFFFFFFAE +S315E063CF90001A0005000000E3E087003D0008000892 +S315E063CFA000010007FFFFFFFF001C0000000000E335 +S315E063CFB0C3BD00030006002700010008FFFFFFFF73 +S315E063CFC0001C0000000000E3C3E500030007002740 +S315E063CFD000010000FFFFFFFF001C0020000000E3EC +S315E063CFE0C40D0003000800230001FFFF0001000AEF +S315E063CFF00014000000100002110000000000002889 +S315E063D000000B0002FFFFFFFF001C0000000000E3CF +S315E063D010C431000B0001001200010003FFFFFFFFB4 +S315E063D020001E0008000000023AD800020003001464 +S315E063D03000010004FFFFFFFF001E0008000000027E +S315E063D0403AF400080004001900010005FFFFFFFF42 +S315E063D050001C0000000000E3C44400060006000A6A +S315E063D0600001000800060007001900000000000048 +S315E063D070000000100006001800010007FFFFFFFF35 +S315E063D080001A0011000000E3C44F0002000000082C +S315E063D09000010005FFFFFFFF001A0011000000E337 +S315E063D0A0C456000C0000000800010009FFFFFFFF03 +S315E063D0B0001A0005000000E3E08E00020009000CA0 +S315E063D0C00001000AFFFFFFFF001A0005000000E30E +S315E063D0D0E09600100009000A00010000FFFFFFFF71 +S315E063D0E0001A0027000000E3E087001C0009000A3D +S315E063D0F00001FFFF000100210014000000100002A0 +S315E063D100110000000000002800170002FFFFFFFF88 +S315E063D110001C0000000000E3C45B00090001001589 +S315E063D12000010003FFFFFFFF001E00000000000296 +S315E063D1303B1000020003002000010004FFFFFFFF35 +S315E063D140001C0000000000E3C47100030004000F4C +S315E063D15000010005FFFFFFFF001E0008000000025C +S315E063D1603B2C00140004000300010006FFFFFFFFF1 +S315E063D170001E0008000000023B480019000400039B +S315E063D18000010007FFFFFFFF001E0008000000022A +S315E063D1903B64001E0004000300010008FFFFFFFF7D +S315E063D1A0001E0008000000023B8000230004000329 +S315E063D1B000010009FFFFFFFF001E000800000002F8 +S315E063D1C03B9C0014000500030001000AFFFFFFFF1C +S315E063D1D0001E0008000000023BB8001900050003CA +S315E063D1E00001000BFFFFFFFF001E000800000002C6 +S315E063D1F03BD4001E000500030001000CFFFFFFFFA8 +S315E063D200001E0008000000023BF000230005000357 +S315E063D2100001000DFFFFFFFF001C0000000000E3BC +S315E063D220C48100020007001100010011000E001026 +S315E063D2300019000000000000110000150007001649 +S315E063D2400003000FFFFFFFFF001A0051000000E339 +S315E063D250C49300000000000500010010FFFFFFFF1C +S315E063D260001A0051000000E3C497000600000005C1 +S315E063D2700001000DFFFFFFFF001A0051000000E30D +S315E063D280C49B000C0000000500010012FFFFFFFFD6 +S315E063D290001C0000000000E3C49F000200090012C6 +S315E063D2A000010015001300140019000000000000DF +S315E063D2B0110000180009000F00010014FFFFFFFFD3 +S315E063D2C0001A0011000000E3E09D00000000000684 +S315E063D2D000010012FFFFFFFF001A0011000000E3E8 +S315E063D2E0E0A100080000000600010016FFFFFFFF53 +S315E063D2F0001C0000000000E3C4B20002000B000A59 +S315E063D30000010017FFFFFFFF0016000000000002A8 +S315E063D3103C0C0007000D001B0001001A0018001901 +S315E063D320001400000000000111000007000E001861 +S315E063D33000060019FFFFFFFF001400000000000174 +S315E063D340110100030001000600040017FFFFFFFF61 +S315E063D35000140000000000011101000C000100064A +S315E063D3600004001F001B001D0014004000000001C4 +S315E063D3701100001F000E00030006001CFFFFFFFF05 +S315E063D380001B0040000001011100000000000003E3 +S315E063D3900002001DFFFFFFFF001B004000000201CB +S315E063D3A011000000000400030002001A001E001EC4 +S315E063D3B000140040000000011111000000020003A8 +S315E063D3C00002001DFFFFFFFF0014004000000001A4 +S315E063D3D0110104000000010200010020FFFFFFFFCE +S315E063D3E0001A0005000000E3E08E00020015000C61 +S315E063D3F000010021FFFFFFFF001A0005000000E3C4 +S315E063D400E09600100015000A00010000FFFFFFFF31 +S315E063D410001A0025000000E3E087001C0015000AFF +S315E063D4200001FFFF00010005001400000010000288 +S315E063D430110000000000002200080002FFFFFFFF6A +S315E063D440001C0000000000E3C4BD000300010014FB +S315E063D45000010003FFFFFFFF001E00000000000263 +S315E063D4603C2800020003001E00010004FFFFFFFFEB +S315E063D470001E0000000000023C4400020004001E9F +S315E063D48000010005FFFFFFFF001A0007000000E34D +S315E063D490E084000D0006000800010000FFFFFFFFC7 +S315E063D4A0001A0025000000E3E08700170006000885 +S315E063D4B00001FFFF000100050014000000100002F8 +S315E063D4C0110000000000002200080002FFFFFFFFDA +S315E063D4D0001C0000000000E3C4D200020001001A51 +S315E063D4E000010003FFFFFFFF001E000000000002D3 +S315E063D4F03C6000020003001E00010004FFFFFFFF23 +S315E063D500001E0000000000023C7C00020004001ED6 +S315E063D51000010005FFFFFFFF001A0005000000E3BE +S315E063D520E08400090006000800010000FFFFFFFF3A +S315E063D530001A0027000000E3E087001300060008F6 +S315E063D5400001FFFF00010006001400000010000266 +S315E063D550110000000000002200080002FFFFFFFF49 +S315E063D560001C0000000000E3C4E9000200010019AA +S315E063D57000010003FFFFFFFF001E00000000000242 +S315E063D5803C9800030003001C00010004FFFFFFFF5B +S315E063D590001E0008000000023CB400030004001E05 +S315E063D5A000010005FFFFFFFF001A0007000000E32C +S315E063D5B0E08400030006000800010006FFFFFFFFAA +S315E063D5C0001A0005000000E3E087000D000600088E +S315E063D5D000010000FFFFFFFF001A0025000000E3E3 +S315E063D5E0C5030017000600080001FFFF0001000401 +S315E063D5F00014000000100002110000000000001B90 +S315E063D60000070002FFFFFFFF001C0000000000E3CD +S315E063D610C50800030001000A00010003FFFFFFFFE6 +S315E063D620001E0008000000023CD000030003001364 +S315E063D63000010004FFFFFFFF001A0007000000E39C +S315E063D640E08400060005000800010000FFFFFFFF1D +S315E063D650001A0025000000E3E087001000050008DB +S315E063D6600001FFFF00010026001400000010000225 +S315E063D670110000000000002800150002FFFFFFFF15 +S315E063D680001C0000000000E3C513000C0001000F5E +S315E063D69000010003FFFFFFFF001C0000000000E342 +S315E063D6A0C523000100030013000100060004000522 +S315E063D6B000190000000000000000001A0003000CDF +S315E063D6C000010005FFFFFFFF001A0011000000E301 +S315E063D6D0E09D00000000000500010003FFFFFFFF7F +S315E063D6E0001A0011000000E3E0A100060000000557 +S315E063D6F000010007FFFFFFFF001C0000000000E3DE +S315E063D700C5340001000500130001000A00080009A2 +S315E063D71000190000000000000000001A0005000C7C +S315E063D72000010009FFFFFFFF001A0011000000E39C +S315E063D730E09D00000000000500010007FFFFFFFF1A +S315E063D740001A0011000000E3E0A1000600000005F6 +S315E063D7500001000BFFFFFFFF001C0000000000E379 +S315E063D760C5440001000700170001000E000C000D20 +S315E063D77000190000000000000000001A0007000C1A +S315E063D7800001000DFFFFFFFF001A0011000000E338 +S315E063D790E09D0000000000050001000BFFFFFFFFB6 +S315E063D7A0001A0011000000E3E0A100060000000596 +S315E063D7B00001000FFFFFFFFF001C0000000000E315 +S315E063D7C0C55800010009001300010015001000149C +S315E063D7D000190000000000000000001700090010B7 +S315E063D7E000010011FFFFFFFF001A0011000000E3D4 +S315E063D7F0BFC000000000000200010012FFFFFFFF50 +S315E063D800001A0011000000E3BFC20003000000023B +S315E063D81000010013FFFFFFFF001A0011000000E3A1 +S315E063D820BFC400060000000200010014FFFFFFFF13 +S315E063D830001A0011000000E3BFC600090000000201 +S315E063D8400001000FFFFFFFFF001A0011000000E375 +S315E063D850BFC8000C000000020001001800160017A4 +S315E063D860001900000000000000000015000B001323 +S315E063D87000010017FFFFFFFF001A0011000000E33D +S315E063D880C56C00000000000700010015FFFFFFFF05 +S315E063D890001A0011000000E3C57200080000000AE8 +S315E063D8A000010019FFFFFFFF001C0000000000E31A +S315E063D8B0C57B0001000B00130001001AFFFFFFFFA9 +S315E063D8C0001C0000000000E3C58F0001000D000EA0 +S315E063D8D00001001D001B001C001900000000000091 +S315E063D8E000000015000D000D0001001CFFFFFFFFA7 +S315E063D8F0001A0011000000E3C59E00000000000668 +S315E063D9000001001AFFFFFFFF001A0011000000E3A9 +S315E063D910C5A10007000000050001001EFFFFFFFF31 +S315E063D920001C0000000000E3C5A50001000F000C29 +S315E063D93000010021001F0020001900000000000024 +S315E063D94000000012000F001400010020FFFFFFFF3C +S315E063D950001A0011000000E3C5B2000000000009F0 +S315E063D9600001001EFFFFFFFF001A0011000000E345 +S315E063D970C5BA000A0000000900010022FFFFFFFFAD +S315E063D980001C0000000000E3C5C200010011000CAA +S315E063D99000010025002300240019000000000000B8 +S315E063D9A0000000100011001700010024FFFFFFFFD5 +S315E063D9B0001A0011000000E3C5CF00000000000B71 +S315E063D9C000010022FFFFFFFF001A0011000000E3E1 +S315E063D9D0C5D8000C0000000B00010026FFFFFFFF27 +S315E063D9E0001A0007000000E3E08400060013000865 +S315E063D9F000010000FFFFFFFF001A0025000000E3BF +S315E063DA00E087001A0013000800014E616D653A2055 +S315E063DA10205F5F5F5F5F5F5F5F2E5F5F5F006600F4 +S315E063DA2053697A6520696E2062797465733A20205A +S315E063DA305F5F5F5F5F5F5F5F5F5F0039004C61738E +S315E063DA4074206D6F6469666965643A20205F5F2F51 +S315E063DA505F5F2F5F5F005F5F3A5F5F205F5F003905 +S315E063DA603939396161004472697665206964656E46 +S315E063DA707469666965723A20205F3A0041004469D9 +S315E063DA80736B206C6162656C3A20205F5F5F5F5FFA +S315E063DA905F5F5F5F5F5F004E756D626572206F66A5 +S315E063DAA020666F6C646572733A20202020205F5F86 +S315E063DAB05F5F5F004E756D626572206F66206974A5 +S315E063DAC0656D733A20202020205F5F5F5F5F0042D1 +S315E063DAD07974657320757365643A20205F5F5F5F71 +S315E063DAE05F5F5F5F5F5F0042797465732061766154 +S315E063DAF0696C61626C653A20205F5F5F5F5F5F5F61 +S315E063DB005F5F5F00466F6C646572206E616D653A58 +S315E063DB1020205F5F5F5F5F5F5F5F2E5F5F5F0043F6 +S315E063DB207265617465643A20205F5F2D5F5F2D5F88 +S315E063DB305F202000506172616D65746572733A208F +S315E063DB40205F5F5F5F5F5F5F5F5F5F5F5F5F5F5FDB +S315E063DB505F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F8C +S315E063DB605F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F7C +S315E063DB705F5F5F5F5F005800447269766520696442 +S315E063DB80656E7469666965723A20205F0049636F02 +S315E063DB906E206C6162656C3A20205F5F5F5F5F5FFA +S315E063DBA05F5F5F5F5F5F0046004170706C696361F2 +S315E063DBB074696F6E206E616D653A20205F5F5F5FAB +S315E063DBC05F5F5F5F2E5F5F5F005F5F5F005F5F5F0B +S315E063DBD05F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F0C +S315E063DBE05F5F5F5F00466F6C6465727320746F207E +S315E063DBF0636F70793A20205F5F5F5F004974656D9C +S315E063DC007320746F20636F70793A20205F5F5F5F84 +S315E063DC1000466F6C6465727320746F2064656C652F +S315E063DC2074653A20205F5F5F5F004974656D7320BA +S315E063DC30746F2064656C6574653A20205F5F5F5F2F +S315E063DC400043757272656E74206E616D653A20206D +S315E063DC505F5F5F5F5F5F5F5F2E5F5F5F00436F7016 +S315E063DC60792773206E616D653A20205F5F5F5F5F42 +S315E063DC705F5F5F2E5F5F5F000000000000E3DA0A2C +S315E063DC8000E3DA1E0003000000001100000000005C +S315E063DC90000C00140000000000E3DA2000E3DA3B46 +S315E063DCA0000300000001110000000000000B001BF0 +S315E063DCB00000000000E3DA3D00E3DA3B0003000026 +S315E063DCC000011100000000000007001900000000D9 +S315E063DCD000E3DA5600E3DA5F0003000000011100B7 +S315E063DCE000000000000700090000000000E3DA66B8 +S315E063DCF000E3DA7C0003000000021100000000008C +S315E063DD00000200160000000000E3DA7E00E3DA1E9C +S315E063DD10000300000002110000000000000C00197F +S315E063DD200000000000E3DA9700E3DA3B000300005B +S315E063DD3000011100000000000006001D0000000065 +S315E063DD4000E3DAB400E3DA3B00030000000111000C +S315E063DD50000000000006001B0000000000E3DACFCD +S315E063DD6000E3DA3B0003000000011100000000005D +S315E063DD70000B00180000000000E3DAE700E3DA3B9B +S315E063DD80000300000001110000000000000B001D0D +S315E063DD900000000000E3DB0400E3DA1E000300009A +S315E063DDA00000110000000000000C001B00000000F2 +S315E063DDB000E3DB1F00E3DA3B000300000000110031 +S315E063DDC000000000000700150000000000E3DA56DB +S315E063DDD000E3DA5F000300000000110000000000CA +S315E063DDE0000700090000000000E3DA9700E3DA3B8E +S315E063DDF00003000000011100000000000006001DA2 +S315E063DE000000000000E3DAB400E3DA3B000300005D +S315E063DE1000011100000000000006001B0000000086 +S315E063DE2000E3DACF00E3DA3B000300000001110010 +S315E063DE3000000000000B00180000000000E3DA0AAF +S315E063DE4000E3DA1E0003000000001100000000009A +S315E063DE50000C00140000000000E3DB3400E3DB7633 +S315E063DE6000030000000011000000000000350042DE +S315E063DE700000000000E3DB7800E3DA7C00030000E7 +S315E063DE800000110000000000000200150000000021 +S315E063DE9000E3DB8D00E3DBA7000300000000110075 +S315E063DEA000000000000D001A0000000000E3DBA99B +S315E063DEB000E3DBA7000300000000110000000000A0 +S315E063DEC0000C00200000000000E3DBC900E3DBA7F1 +S315E063DED000030000000011000000000000040004DD +S315E063DEE00000000000E3DBC900E3DBA700030000FA +S315E063DEF000001100000000000004000400000000C0 +S315E063DF0000E3DBC900E3DBA70003000000001100C8 +S315E063DF1000000000000400040000000000E3DBC929 +S315E063DF2000E3DBA70003000000001100000000002F +S315E063DF30000400040000000000E3DBC900E3DBA7A4 +S315E063DF40000300000000110000000000000400046C +S315E063DF500000000000E3DBC900E3DBA70003000089 +S315E063DF60000011000000000000040004000000004F +S315E063DF7000E3DBC900E3DBA7000300000000110058 +S315E063DF8000000000000400040000000000E3DBC9B9 +S315E063DF9000E3DBA7000300000000110000000000BF +S315E063DFA0000400040000000000E3DBCD00E3DBA730 +S315E063DFB000030001000211800000FFFF0018001853 +S315E063DFC00000000000E3DBE500E3DA3B000300006A +S315E063DFD000011100000000000005001700000000CA +S315E063DFE000E3DBFC00E3DA3B000300000001110021 +S315E063DFF000000000000500150000000000E3DC11EE +S315E063E00000E3DA3B000300000001110000000000BA +S315E063E010000500190000000000E3DC2A00E3DA3BB8 +S315E063E0200003000000011100000000000005001776 +S315E063E0300000000000E3DC4100E3DA1E00030000B9 +S315E063E0400000110000000000000C001C000000004E +S315E063E05000E3DC5D00E3DA1E00030000000011006C +S315E063E06000000000000C001B0000000000E3DA0A79 +S315E063E07000E3DA1E00030000000011000000000068 +S315E063E080000C00144F4B0043616E63656C00496E90 +S315E063E0907374616C6C0052656D6F76650059657378 +S315E063E0A0004E6F00226F0008202F000420401219F3 +S315E063E0B010C166FA4E754E56FFF82F02486EFFFEA4 +S315E063E0C0486EFFFC486EFFFA486EFFF83F3C00047B +S315E063E0D0342E000A3F024EB900E3AD0A4FEF001457 +S315E063E0E04A6E0008670C558F3F024EB900E3ACE217 +S315E063E0F0588F3F2EFFFE3F2EFFFC3F2EFFFA3F2E4B +S315E063E100FFF83F390001FD263F390001FD243F2E2C +S315E063E110000E3F2E000C4EB900E3AB1C4FEF001030 +S315E063E120242EFFF44E5E4E754E56FFF82F0A486E68 +S315E063E130FFFE486EFFFC486EFFFA486EFFF83F3C11 +S315E063E1400004246E00083F2A00064EB900E3AD0AD8 +S315E063E150716EFFFE73790001FD2620006A0252802C +S315E063E16022016A025281E280E2819081322EFFFAD5 +S315E063E170D0813F00716EFFFC73790001FD242000BE +S315E063E1806A02528022016A025281E280E2819081D0 +S315E063E190322EFFF8D0813F003F2A000642674EBA2F +S315E063E1A0FF163F3C000142672F2E00162F2E00120A +S315E063E1B02F2E000E3F2E000C42672F0A4EB900E366 +S315E063E1C0906E4FEF0034246EFFF442404E5E4E7520 +S315E063E1D04E56FFF82F0A486EFFFE486EFFFC486E08 +S315E063E1E0FFFA486EFFF83F3C0004246E00083F2ABE +S315E063E1F000064EB900E3AD0A716A00082200EB88B7 +S315E063E200E789204091C1D1FC0001B2B83F28673667 +S315E063E2103F2867343F2A00063F3C00014EBAFE982A +S315E063E2202F2A00184EB900E346004FEF001C2E8AF2 +S315E063E2304EB900E397603EBC00014EB900E3958CAE +S315E063E240588F246EFFF442404E5E4E755B315D5BE4 +S315E063E250496E76616C696420574E4F444520706120 +S315E063E260737365647C746F2066756E5F636C6F73DE +S315E063E2706528295D5B4F4B5D00004E56FFAC2F0B67 +S315E063E2802F0A246E00084AAA00186618558F487A42 +S315E063E290FFBC3F3C000195CA4EB900E3A93C508FF1 +S315E063E2A06000009C42673F3C00024EB900E3AC1657 +S315E063E2B0486EFFFA486EFFF1486EFFAF486EFFFEA9 +S315E063E2C0202A001850802F004EB900E3444C4FEFEC +S315E063E2D000184A6E000C670642011D41FFAF4A2EE5 +S315E063E2E0FFAF660C2F0A4EBAFEE8588F34406042A1 +S315E063E2F047EEFFAF2F0B4EB900E1C4A4588F41F34D +S315E063E30008FF60025388B7C867087110725CB28011 +S315E063E31066F24210558F486EFFFA486EFFF1486E1B +S315E063E320FFAF3F2EFFFE2F0A4EBAFDFE4FEF0014FE +S315E063E3303440426742674EB900E3AC16588F300A01 +S315E063E340246EFFA4266EFFA84E5E4E754FEFFFEC7C +S315E063E35048D70C1C34390001FCD4322F0018266FE1 +S315E063E360001C246F0020714248C183C226014843E2 +S315E063E37020006A0252807743E280B0836D06C3C2AF +S315E063E3803681600830025281C1C13680303900017E +S315E063E3904BC03F1390823F004EB900E2FE70588F48 +S315E063E3A036807940323900014BC0774126036A02F1 +S315E063E3B05283E283B6846F0C48C183C22401484228 +S315E063E3C0D082368030390001F91C322F001A343995 +S315E063E3D00001FCD69280714248C183C2260148435C +S315E063E3E020006A0252807743E280B0836D06C3C23F +S315E063E3F03481600830025281C1C134803039000112 +S315E063E400F9203F1290823F004EB900E2FE70588FCA +S315E063E4103480794032390001F920774126036A0274 +S315E063E4205283E283B6846F0C48C183C224014842B7 +S315E063E430D0823480321230390001F91CD0813480C5 +S315E063E4404CD70C1C4FEF00144E753A5C2A2E2A000B +S315E063E450206F00084A88675071680006A541B2805C +S315E063E4606712123C0003B28056C0123C000148803A +S315E063E47080816036716F000C2200E789EB889081BA +S315E063E4800680000219E82240205141E8000D13D0CE +S315E063E4900001F7C4487AFFB448790001F7C54EBA7C +S315E063E4A0FC04508F7002600270FF558F42674267CB +S315E063E4B04267426748790001F7C42F2F00123F0095 +S315E063E4C04EB900E34C924FEF00144E755C2A2E2A48 +S315E063E4D0002A2E2A00002F0B2F0A266F00142F2FF7 +S315E063E4E0001048790001F7C44EBAFBBA5C8F3F3C33 +S315E063E4F0002A48790001F7C44EB900E01310508F43 +S315E063E50024404A80670242124A8B672C716B00068D +S315E063E510A341B2806622206F001841E8000E2F08FF +S315E063E5202F0A4EBAFB80487AFFA42F0A4EB900E160 +S315E063E530C4B64FEF0010600E487AFF972F0A4EB9C4 +S315E063E54000E1C4B6508F558F4267426742674267C0 +S315E063E55048790001F7C42F2F001A3F3C00024EB9F9 +S315E063E56000E34C924FEF0014245F265F4E754FEF46 +S315E063E570FFF248EF040C0002342F0014346F0012EC +S315E063E58042A742A73F0242673F3C00014EB900E320 +S315E063E59030BE4FEF000E3F0A26004EB900E398C047 +S315E063E5A03E822F0324402F2A00184EBAFEA44FEF73 +S315E063E5B0000C4A4067122F4A00104CD7040C4FEF09 +S315E063E5C0000C60FFFFFF644C4CD7040C4FEF000C6C +S315E063E5D04E752A0000004FEFFFF048D70C04266F14 +S315E063E5E00016242F001A3F3C0010487AFFE6487A6B +S315E063E5F0FFE2487AFFE0716F00222200E789EB8849 +S315E063E60090810680000219E8224020513F28000CE1 +S315E063E6104EB900E346024FEF001024404A80677A22 +S315E063E6202F004EB900E34836588F206A004C4A887B +S315E063E630674C42403140001C20504A8866F47201C0 +S315E063E64033C1000219E64A8B671A2F2F001E2F0289 +S315E063E650266B0018508B2F0B2F0A4EBAFE7A4FEFBC +S315E063E66000106012558F3F2F00242F022F0A4EBAF7 +S315E063E670FDE04FEF000C424133C1000219E62F0A79 +S315E063E6802F4000104EB900E3460042574EB900E30F +S315E063E69089C2588F202F000C600242404CD70C048D +S315E063E6A04FEF00104E754E56FFCC48D73CFC342EE8 +S315E063E6B00008558F382E000A260E558345F900E388 +S315E063E6C06F0E2C0E0686FFFFFFF64BFAFF0A49F93B +S315E063E6D000E34A1047F900E349463F024EB900E3D7 +S315E063E6E098C02F03486EFFFA3F042A003F02424276 +S315E063E6F04E924FEF00102E0060462F032F063F0227 +S315E063E70042674E924FEF000CA741204071680006C6 +S315E063E710B280661042A73F3C00283F3C00014E931F +S315E063E720508F601C3F042F2EFFFA2F072F053F0201 +S315E063E7304E954FEF00104A4067062F054E94588F6B +S315E063E7403F023F3C00014879000219DC4EB900E321 +S315E063E750A286508F340066A24CEE3CFCFFCC4E5E44 +S315E063E7604E754FEFFFCE48EF7C7C0002362F0036C6 +S315E063E77042A742A742424BF900E36F0E49FAFE58BD +S315E063E78047F900E349463F0342673F3C00014EB920 +S315E063E79000E330BE4FEF00102C0F2A0F280F0686DA +S315E063E7A00000002E4DF900E3A286068500000028EE +S315E063E7B0244006840000002C607A2F062F053F0272 +S315E063E7C042674E954FEF000CB5C067682040A7419E +S315E063E7D071680006B280661042A73F3C00293F3C61 +S315E063E7E000014E93508F604C716A0006A741B28078 +S315E063E7F0663271422200E789EB88908106800002E7 +S315E063E80019E82240205171A8000D3F40002C2F04E7 +S315E063E8103F3C001D3F3C00024E93508FA341714045 +S315E063E820B28066103F0342A72F0A42A73F024E9487 +S315E063E8304FEF00103F023F3C00014879000219DCCC +S315E063E8404E96508F34006600FF724CD77C7C4FEF58 +S315E063E85000304E752F032F02342F000C322F000E3B +S315E063E860306F0010302F00124A4267464A41671CF8 +S315E063E870558F3F2F00183F2F00183F003F013F029F +S315E063E8804EB900E350684FEF000C6046774873403B +S315E063E890B283661442A73F3C00273F3C00014EB972 +S315E063E8A000E34946508F602A3F003F024EBAFCC000 +S315E063E8B0601E4A41670A3F003F014EBAFDEA6010B7 +S315E063E8C075487340B282670A558F3F004EBAFE942D +S315E063E8D0588F241F4240261F4E7500002F02302FAB +S315E063E8E00008226F000A206F000E600A751973181C +S315E063E8F05380B282660A4A4066F2103C00016002C7 +S315E063E9004240241F4E752F02206F000860182200D4 +S315E063E9100681FFFFFF9F73817419B481650872DF17 +S315E063E920C0811140FFFF101866E4241F4E754FEF58 +S315E063E930FFEC48D71C0C41F9000113C443F900010D +S315E063E940129449F90001136426492448101C731A8A +S315E063E9507500B282661A4A00670000C816C060ECAA +S315E063E960101B731A7500B28266064A0066F2600887 +S315E063E9704240605C528160024241101812C066F404 +S315E063E98041F9000111EA424043F900011294600241 +S315E063E990528014182600D6817743138238006708BD +S315E063E9A07502762EB68266E8762622005281754136 +S315E063E9B0528173415680714041F90001129411838B +S315E063E9C0280011831800118308007001604A5280A1 +S315E063E9D0121812C166F873390001140C742AB481F3 +S315E063E9E0670E41F90001140C43F900011294601AB1 +S315E063E9F041F9000111EA43F90001129412187540D6 +S315E063EA0052801381280066F4600C121875405280B8 +S315E063EA101381280066F442404CD71C0C4FEF001478 +S315E063EA204E7571390001140C762AB6806700FF4A89 +S315E063EA3047F9000111EA45F90001140C6000FF2271 +S315E063EA402F0243F90001136441F90001124C42407D +S315E063EA5060025280121910C166F841F9000111EAA9 +S315E063EA6043F90001124C1218754052801381280055 +S315E063EA7066F4241F4E752F03760A2F02242F000CAB +S315E063EA8020024C43080067082F004EBAFFEA588F0E +S315E063EA90720A4C412800068000E421722F00A367C6 +S315E063EAA03F3C00013F3C00404EB900E0373A4FEF50 +S315E063EAB0000C241F261F4E753000202F00046702CA +S315E063EAC060B4487AFFF4A3673F3C00013F3C0040F3 +S315E063EAD04EB900E0373A4FEF000C4E754FEFFFE863 +S315E063EAE048D7047C322F0020282F001C2A2F0022CF +S315E063EAF04A846604A34260022404A343700173411B +S315E063EB00600E2C035280E78E204641F03A002608D9 +S315E063EB107D40B2866EEC60202F05A3673F3C000123 +S315E063EB203F3C00404E924FEF000C2002E7882040C6 +S315E063EB3041F02A002408600645F900E0373AB682D8 +S315E063EB406ED62F44001C4CD7047C4FEF0018600050 +S315E063EB50FF6A2039000113BC41F900E0373A6720C8 +S315E063EB603F39000113C02F003F3C004E4E90508F5B +S315E063EB704A80662042B9000113BC103C00014E7521 +S315E063EB80558F3F3C004F4E90588F4A8057C0488020 +S315E063EB9044804E7542404E752F02342F000871C291 +S315E063EBA0E888670C558F3F004EBAFFEE588F6018C2 +S315E063EBB0487AFF06A3673F3C00013F3C00404EB9FD +S315E063EBC000E0373A4FEF000C700FC480068200E432 +S315E063EBD021722F02A3673F3C00013F3C00404EB9E0 +S315E063EBE000E0373A4FEF000C241F4E754E56FFE0B8 +S315E063EBF0558F3F3C00084EB900E0373A486EFFE276 +S315E063EC001D40FFE242001D40FFE34EBAFCFA712E5F +S315E063EC10FFE2508F4E5E7259B28057C048804E75A0 +S315E063EC202F0B2F0A246F000CA141716A0002B28098 +S315E063EC30661C426747F900E0373A3F3C003E4E9335 +S315E063EC403EAA000642673F3C00464E93508F7152A0 +S315E063EC50A141B28066203F3C000147F900E0373AC4 +S315E063EC603F3C003E4E933EAA00043F3C00013F3CDE +S315E063EC7000464E93508F245F265F4E752F02242FF6 +S315E063EC8000082F024EB900E1C4A42F022F003F3CD7 +S315E063EC9000013F3C00404EB900E0373A4FEF0010C9 +S315E063ECA0241F4E754FEFFFDC700948D70CFC382FF5 +S315E063ECB00028720F7E1F75C42A04E0AAEA8DC8870E +S315E063ECC01E3C00632002068000000050CA812239A0 +S315E063ECD000012BC077401C01BE836C060680FFFFF4 +S315E063ECE0FF9CE081A742A547C282BE816714B481D7 +S315E063ECF06716143C0001B4816714340036043005AA +S315E063ED00601234043605600C34053604600634005C +S315E063ED1036053004558F487AFDA03F3C0002420732 +S315E063ED20714045FAFDB847FAFF54774375422F00C1 +S315E063ED304E921F46002E1F47002F280F06840000C1 +S315E063ED40002E2F044E934FEF000A2EBC00E3EAB881 +S315E063ED503F3C00022F034E921F46002E1F47002FB3 +S315E063ED602F044E934FEF000A2EBC00E3EAB83F3C14 +S315E063ED7000022F024E924CEF0CFC000C4FEF00307A +S315E063ED804E75435220746F20636F6E74696E75655A +S315E063ED902E2E2E00487AFFEC4EB900E011762F0056 +S315E063EDA04EBAFEDA548F41F9000112DC2E883F3CFD +S315E063EDB0000A10BC007E4EB900E0373A508F4E75BC +S315E063EDC03B002F0A246F00084A126610203C0001BC +S315E063EDD011FC2F400008245F6000FEA2558F487A3D +S315E063EDE0FFE02F0A3F3C00024EBAFAF24FEF000C07 +S315E063EDF041F9000111FC4A40670A420013C0000171 +S315E063EE0011FC6006101A10C066FA245F4E750D0A8F +S315E063EE1000002F02242F0008487AFFF44EBAFE5E04 +S315E063EE20588F2F420008241F6000FE5257696C64B6 +S315E063EE30206361726473206E6F7420616C6C6F77AC +S315E063EE40656420696E2070617468206E616D652EFD +S315E063EE500046696C65204E6F7420466F756E642E4E +S315E063EE600044657374696E6174696F6E20697320BB +S315E063EE706E6F7420612076616C69642077696C6477 +S315E063EE8020636172642065787072657373696F6E0F +S315E063EE902E002A2A2A2A2A2A2A2054455354202035 +S315E063EEA0434C49202A2A2A2A2A2A2A00456D754391 +S315E063EEB04F4E202D20436F6D70696C6564206F6ED5 +S315E063EEC02000547970652048454C5020666F722067 +S315E063EED061206C697374206F6620636F6D6D616E1C +S315E063EEE064732E0000446F6E652E00436F6D6D6133 +S315E063EEF06E6420697320696E636F6D706C657465AB +S315E063EF006C79207370656369666965642E002E00AB +S315E063EF1020746F20003A00200057696C64206361B7 +S315E063EF20726473206E6F7420616C6C6F77656420B6 +S315E063EF30696E2064657374696E6174696F6E2E00C1 +S315E063EF402320696E20746865206669727374206E27 +S315E063EF506F6E20626C616E6B20636F6C756D6E2095 +S315E063EF606973206120636F6D6D656E742E00434136 +S315E063EF7054206F7220545950452066696C656E6102 +S315E063EF806D650D0A094F75747075742067697665EA +S315E063EF906E2066696C6520746F207374616E64615C +S315E063EFA07264206F75747075742E004344205B70D1 +S315E063EFB06174685D0D0A094966207061746820674B +S315E063EFC06976656E2C20736574206974206173209D +S315E063EFD07468652064656661756C7420776F726BBF +S315E063EFE0206469726563746F72792E0D0A094F74D2 +S315E063EFF0686572776973652073686F77207468658F +S315E063F0002063757272656E7420776F726B206469C4 +S315E063F010726563746F727920706174682E00434819 +S315E063F0204D4F44205B706174682F5D66696C656EF5 +S315E063F030616D65206D6F64650D0A095365742074AF +S315E063F0406865206D6F6465206F6620746865206708 +S315E063F0506976656E2066696C652E204163636570CB +S315E063F0607461626C652076616C7565732061726547 +S315E063F070203C20373A0D0A090930202D204E6F7265 +S315E063F0806D616C2066696C650D0A090931202D2076 +S315E063F09052656164206F6E6C790D0A090932202D21 +S315E063F0A02048696464656E2066726F6D2064697278 +S315E063F0B06563746F7279207365617263680D0A09BB +S315E063F0C00934202D2053797374656D2066696C6508 +S315E063F0D000434C530009436C656172207468652094 +S315E063F0E073637265656E2E00434F505920736F7577 +S315E063F0F07263655F66696C65205B64657374696E8C +S315E063F1006174696F6E5F66696C655D0D0A09436F6D +S315E063F110707920736F7572636520746F20646573AD +S315E063F12074696E6174696F6E2E00444952206F7222 +S315E063F130204C53205B706174685D205B2D665D20B7 +S315E063F1405B2D645D205B2D745D205B2D775D0D0A21 +S315E063F150092D66202D20416E797468696E67206299 +S315E063F1607574206469726563746F726965732E0D75 +S315E063F1700A092D64202D204469726563746F726990 +S315E063F1806573206F6E6C792E0D0A092D74202D2020 +S315E063F19054657273653A206E616D6573206F6E6C4C +S315E063F1A0792E0D0A092D77202D20576964653A205B +S315E063F1B06E616D6573206F6E6C792C20686F726912 +S315E063F1C07A6F6E74616C2E00455252200009536863 +S315E063F1D06F77207468652072657475726E207661E8 +S315E063F1E06C756520666F7220746865206C617374F4 +S315E063F1F020636F6D6D616E642E0045584954000956 +S315E063F200457869742074686520434C492E004D4403 +S315E063F210205B7375626469726563746F7279206E7D +S315E063F220616D655D0D0A09437265617465206120F0 +S315E063F2306E6577207375626469726563746F7279FC +S315E063F24020746F207468652063757272656E7420CE +S315E063F2506469726563746F72792E004D4F5645200B +S315E063F260736F757263655F66696C65205B6465730E +S315E063F27074696E6174696F6E5F66696C655D0D0A6C +S315E063F28009436F707920736F7572636520746F20BD +S315E063F29064657374696E6174696F6E20616E642010 +S315E063F2A064656C65746520736F757263652E005073 +S315E063F2B041555345000957726974652027435220C7 +S315E063F2C0746F20636F6E74696E75652E2E2E2720BC +S315E063F2D0746F207374616E64617264206F757470A9 +S315E063F2E075740D0A09616E64207761697420666FCF +S315E063F2F07220612043617272696167652052657449 +S315E063F30075726E2066726F6D207374616E6461727E +S315E063F3106420696E7075742E0050524745525220D0 +S315E063F3205B4F4E207C204F46465D0009546F67670E +S315E063F3306C6520636F6D6D616E642070726F63657B +S315E063F3407373696E672061626F7274206665617458 +S315E063F350757265204F4E2F4F46462E0D0A09496654 +S315E063F36020505247455252206973204F4E20616EBA +S315E063F3706420636F6D6D616E642072657475726E21 +S315E063F380732061206E6F6E2D7A65726F2076616C85 +S315E063F39075652C0D0A09616C6C2066757274686517 +S315E063F3A0722070726F63657373696E672077696CD9 +S315E063F3B06C2073746F702E202055736566756C20B0 +S315E063F3C0696E202E4241542066696C65732E0D0A80 +S315E063F3D00944656661756C74206973204F4E2E002F +S315E063F3E04E4F57524150000944697361626C652020 +S315E063F3F06C696E6520777261702E005041544820C7 +S315E063F4005B3B5B706174685D2E2E2E5D0D0A094968 +S315E063F41066207061746820676976656E2C20736513 +S315E063F42074207468652064656661756C74207061C8 +S315E063F430746820666F722072756E6E696E67202ED1 +S315E063F4404241542066696C65730D0A09616E6420F6 +S315E063F450636F6D6D616E64732E204F74686572774A +S315E063F4606973652073686F77207468652063757266 +S315E063F47072656E746C792073657420706174682E3E +S315E063F4800052454D206F72204543484F205B2273FF +S315E063F4907472696E67225D0D0A095374726970202E +S315E063F4A071756F74657320616E64207772697465D4 +S315E063F4B020737472696E6720746F207374616E640F +S315E063F4C0617264206F75747075742E0D0A092F72FC +S315E063F4D0206973207265706C61636564206279206C +S315E063F4E031332C202F6E2062792031302C202F305F +S315E063F4F0206279203078302E0D0A092F63206279F5 +S315E063F5002031332031302C202F616E797468696E37 +S315E063F51067206973207265706C61636564206279E4 +S315E063F52020616E797468696E672E0052454E20736A +S315E063F5306F757263655F66696C65205B646573743A +S315E063F540696E6174696F6E5F66696C655D0D0A0904 +S315E063F55052656E616D6520736F7572636520746F56 +S315E063F5602064657374696E6174696F6E2E005244CC +S315E063F570205B706174685D0D0A0952656D6F76652F +S315E063F580206E616D6564206469726563746F727918 +S315E063F5902E00524D206F722044454C2066696C659F +S315E063F5A06E616D65205B5B66696C656E616D655DFD +S315E063F5B02E2E2E5D205B2D715D0D0A0952656D6FF2 +S315E063F5C07665206E616D65642066696C652066723A +S315E063F5D06F6D206469726563746F72792E0D0A09C3 +S315E063F5E0496620746865202D71206F7074696F6E4B +S315E063F5F020697320757365642C2073686F77207454 +S315E063F6006865207175657374696F6E0D0A09592FA4 +S315E063F61043522E2E2E20616E6420776169742066D4 +S315E063F6206F72206120726573706F6E73652E00531F +S315E063F630484F57205B64726976653A5D0D0A0953F4 +S315E063F640686F77206469736B207374617475732074 +S315E063F650666F72207468652064656661756C742094 +S315E063F6606F72207370656369666965642064726945 +S315E063F67076652E0056455253494F4E000953686FDF +S315E063F680772047454D444F532076657273696F6EB5 +S315E063F6902E00575241500009456E61626C65206CDD +S315E063F6A0696E6520777261702E004FEFFFF4721119 +S315E063F6B048D71C0071EF0010B280650002DA303B78 +S315E063F6C00A0848C04EFB08020024002C0034003CC4 +S315E063F6D00042007A008000880090009C00A202CE7F +S315E063F6E000B400C200CC0116012C016E487AF73EE5 +S315E063F6F0600000F0487AF75B600000E8487AF763F9 +S315E063F700600000E0487AF78C6076487AF7A047F9BC +S315E063F71000E011764E9345FAF6FA2F004E925C8F2F +S315E063F7203F3900E0001E4EBAF57C487AF7964E9371 +S315E063F7302F004E92487AF7AE4E924FEF001060007C +S315E063F7400256487AF7A16026487AF7A160000094EA +S315E063F75048790001124C60064879000112944EBA6A +S315E063F760F51C6020487AF7A86016487AF7A44EB984 +S315E063F77000E011762F004EBAF5046072487AF766B8 +S315E063F7804EBAF690588F6000020E487AF7584EBA32 +S315E063F790F682588F558F3F3C001945F900E0373ABA +S315E063F7A04E924879000112DAA3673F3C000133C009 +S315E063F7B0000112D806800000006113C0000112DA6E +S315E063F7C03F3C00404E92487AF74D45FAF4B04E928C +S315E063F7D0487AF7454E924FEF0018600001BA487ACF +S315E063F7E0F7394EB900E011762F004EBAF626508F00 +S315E063F7F0600001A4558F3F3C001945F900E0373AB4 +S315E063F8004E924879000112DAA3673F3C000133C0A8 +S315E063F810000112D806800000006113C0000112DA0D +S315E063F8203F3C00404E92487AF6ED4EBAF4504FEFC5 +S315E063F83000146000016247F900E01176487AF70246 +S315E063F8404E9345FAF5CE49FAF54C2F004E92487A37 +S315E063F850F71E4E932F004E92487AF7514E932F0040 +S315E063F8604E92487AF7BA4E932F004E924FEF001CB2 +S315E063F8702EBC00E3F0D14E92487AF85B4E932F00AC +S315E063F8804E92487AF8644E932F004E92487AF89CEB +S315E063F8904E932F004E92487AF64C4E924FEF0020ED +S315E063F8A04E94487AF9244E92487AF9234E932F0080 +S315E063F8B04E92487AF9464E92487AF9454E932F002E +S315E063F8C04E92487AF94A4E932F004E924FEF001CC0 +S315E063F8D02EBC00E3F25B4E932F004E92487AF9D149 +S315E063F8E04E92487AF9D14E932F004E92487AFA2B8C +S315E063F8F04E92487AFA374E932F004E924FEF001CA2 +S315E063F9002EBC00E3F3E04E92487AFADD4E932F0085 +S315E063F9104E92487AFAE74E932F004E92487AF5C6AE +S315E063F9204E924E94487AFB5B4E932F004E924FEF86 +S315E063F930001C2EBC00E3F52B4E932F004E92487AC3 +S315E063F940FC2E4E932F004E92487AFC484E932F003E +S315E063F9504E92487AFCDB4E932F004E924FEF001C9B +S315E063F9602EBC00E3F6744E92487AFD124E932F0056 +S315E063F9704E92487AFD1E4E92487AFD1D4E932F00B5 +S315E063F9804E92487AF5604E924CEF1C00001C4FEFA6 +S315E063F99000286000F4004CD71C004FEF000C4E7556 +S315E063F9A02F0B2F0A266F000C558F3F3C000E45FA4E +S315E063F9B0F2CC4EBAFCF6588F600C2F084E92487A1A +S315E063F9C0F5574E92508F205B4A1066EE700C3F40BF +S315E063F9D0000C245F265F6000FCD24FEFFFE048D760 +S315E063F9E01C7C246F0024266F002849F900E1C4A437 +S315E063F9F02F0A42444E94487A278F26007B4334008D +S315E063FA004E94508F41F2580138402003538073205F +S315E063FA1026007C2A5283BC8167121C3C003ABC8177 +S315E063FA20671A1C3C005CBC81660460107801360092 +S315E063FA30538073C00C810000FFFE66D252834A4254 +S315E063FA406710713258FF725CB28067067C3ABC809D +S315E063FA506616714243FA273141F208006002528228 +S315E063FA60101910C066F878013F39000113C02F0AF8 +S315E063FA703F3C004E4EB900E0373A508F4A80670408 +S315E063FA8070FE600242404A44670000824A4067046F +S315E063FA9070FE603C700160381239000111E178183C +S315E063FAA04881C2844A4167287C5C7142260252835C +S315E063FAB043FA26D5734C15860800714341F2080074 +S315E063FAC04240600410D952807540B2826CF670FF92 +S315E063FAD0224A204B42417743600C7519782A10C25B +S315E063FAE0B882671C52817541B6826EEE4206D5C214 +S315E063FAF017863800206F002C121A10C166FA60026E +S315E063FB0070FD4CD71C7C4FEF00204E754A406788EA +S315E063FB1060BE2F0A2F0241F9000113AC6046710003 +S315E063FB20722AB2806708123C003FB2806636487933 +S315E063FB300001140C45F900E1C4A44E92487A2649C3 +S315E063FB4024004E92508FB082653E43F90001140C57 +S315E063FB5041FA2635600871007318B280662A101977 +S315E063FB6066F46020101866B641F90001140C601063 +S315E063FB707100722AB28067B6123C003FB28067AE0C +S315E063FB80101866EC4240600270FF241F245F4E75D6 +S315E063FB902F39000113604EBAF0883EBC0001487904 +S315E063FBA0000251184EB900E012962E5052470050AB +S315E063FBB04154483D00206E6F7420666F756E642E07 +S315E063FBC00043616E206E6F74206F70656E206669A8 +S315E063FBD06C652E0D0A0043616E206E6F7420666F4E +S315E063FBE0726365207374646F757420746F206E65D9 +S315E063FBF077206368616E6E656C2E0D0A004C530068 +S315E063FC00444952004469726563746F7279206F6622 +S315E063FC1020002E2E00090020200050574400434860 +S315E063FC204D4F4400556E61626C6520746F20636866 +S315E063FC30616E6765206D6F6465206F6E20737562B4 +S315E063FC406469726563746F727973206F7220766F1D +S315E063FC506C756D65732E00496E76616C6964206DB3 +S315E063FC606F64652073706563696669636174696F00 +S315E063FC706E2E0045525200436F6D706C6574696F0A +S315E063FC806E20636F646520666F7220707265766955 +S315E063FC906F757320636F6D6D616E64203D200050F8 +S315E063FCA041544800454E560043415400545950452B +S315E063FCB00052454D004543484F0043440044697252 +S315E063FCC06563746F7279206E6F7420666F756E64A8 +S315E063FCD02E00434D44455252004F4E004F46460078 +S315E063FCE0417267206D757374206265204F4E206F95 +S315E063FCF072204F46462E00505247455252004D44BD +S315E063FD00004D4B44495200556E61626C6520746FD9 +S315E063FD10206D616B65206469726563746F727900E7 +S315E063FD20524400524D44495200556E61626C6520FF +S315E063FD30746F2072656D6F7665206469726563744E +S315E063FD406F727900524D0044454C0044656C6574AE +S315E063FD506520414C4C2066696C6573206D61746304 +S315E063FD6068696E6720002028592F4352293F200097 +S315E063FD703F200008082000203C3C2044454C455485 +S315E063FD8045440052454E0052656E616D6520414CB7 +S315E063FD904C2066696C6573206D61746368696E6730 +S315E063FDA02000202052656E616D6520556E73756324 +S315E063FDB065737366756C6C210053484F5700416CED +S315E063FDC06C6F636174696F6E20496E666F726D61A5 +S315E063FDD074696F6E3A20447269766520004472698D +S315E063FDE076652073697A6520696E20425954455376 +S315E063FDF020202020004259544553207573656420C2 +S315E063FE006F6E206472697665202020200042595423 +S315E063FE104553206C656674206F6E206472697665FF +S315E063FE202020202000546F74616C20556E697473D2 +S315E063FE30206F6E20447269766520202000467265E5 +S315E063FE406520556E697473206F6E204472697665BA +S315E063FE502020202000536563746F7273207065728F +S315E063FE6020556E6974202020004279746573207092 +S315E063FE70657220536563746F72202020004E6F2095 +S315E063FE80696E666F726D6174696F6E2061766169C2 +S315E063FE906C61626C6520666F722074686973206456 +S315E063FEA0726976652E00434F5059004D4F564500B3 +S315E063FEB04350004D56002044454C4554494E472037 +S315E063FEC0004572726F72206372656174696E672052 +S315E063FED066696C652E0043616E6E6F7420636F7046 +S315E063FEE079200020746F20697473656C662E004513 +S315E063FEF072726F722072656164696E6720736F7583 +S315E063FF007263652066696C652E004469736B20666F +S315E063FF10756C6C202D2D20636F7079206661696C3A +S315E063FF2065642E0048454C50001B76001B77004302 +S315E063FF304C454152001B481B4A00436F6D6D616E31 +S315E063FF4064206E6F7420666F756E642E00004240A7 +S315E063FF504E56FB7041EEFFF048D73CFC260E240E6E +S315E063FF6023C800011360246E00100683FFFFFDAA19 +S315E063FF7047EEFF900682FFFFFF2C3D40FFF03D40DA +S315E063FF80FFF23D40FBA260001D2A716EFBA2A14118 +S315E063FF90B28066064A9266001CDE4244487AEF46C1 +S315E063FFA033C4000251144EBAEE6A3D44FFFC226E3E +S315E063FFB0000C588F42AEFFF841EEFEAA2D48FF9043 +S315E063FFC04A516712286E0008183C00012D54FF90D1 +S315E063FFD02D48FF946002424441F9000112DC4AAEC7 +S315E063FFE000146716226E00144201206E00145288D4 +S315E063FFF01011488071C011810800711028487A2079 +S315E06400005288BA8067F4224C20432C0A6056730007 +S315E064001052897E25BE8167227A2FBA81664473113E +S315E064002020085280BE81660A10BC002F204010D999 +S315E0640030603210BC002F2040602A7119246E0008DB +S315E06400400680FFFFFFD020320C002A404A15671471 +S315E064005022002A482441204D101A52811AC066F4BF +S315E0640060600210C0101166A6421024462243204C5A +S315E0640070101910C066FA71147223B28067001BF817 +S315E0640080200E0680FFFFFEAA42474BF900E0373AAE +S315E06400902C3C00E3EC7C2D40FBA460000246730834 +S315E06400A02A0C703C5285B081673A6D14103C00208E +S315E06400B0B081673A103C0022B08166000212605853 +S315E06400C0703EB0816712103C0040B0816600020069 +S315E06400D02045226EFBA4606E20452205226EFBA4B9 +S315E06400E0600001122045226EFBA46000008A206E47 +S315E06400F0FBA452AEFBA44218206EFBA428457220F2 +S315E064010071145285B28067F4528471442D48FBA41D +S315E06401102D880C90600001CC206EFBA4224510FC77 +S315E0640120002228492A081019670001B410C071003A +S315E0640130722228492A08B28066E8600001A271004A +S315E06401407220B28067062848101866F22D49FBA42F +S315E0640150421C42672F053F3C003D4E95508F2D4033 +S315E0640160FFF86D647AFF3D45FFFC6000017671003F +S315E06401707220B28067062848101866F22D49FBA4FF +S315E0640180421C42672F053F3C003D4E95508F2D4003 +S315E0640190FB9E6D3442673F3C00454E953A2EFBA08C +S315E06401A03D40FFF63E8542673F3C00464E95306EE5 +S315E06401B0FBA03F083F3C003E4E9570FF3D40FFF29A +S315E06401C04FEF000C6000011C2F054EBAEC46487AEE +S315E06401D0F9E54EB900E0117620462F004E9060E0D6 +S315E06401E071007A3EBA80660652817EFF60067A20A6 +S315E06401F0BA8067062848101866E62D49FBA4421CB7 +S315E06402004A47672A3F3C00012D41FB9A2F013F3C58 +S315E0640210003D4E95508F222EFB9A2A006C4442672D +S315E06402202F013F3C003C4E95508F2A006022558F4B +S315E06402302F013F3C00412D41FB9A4E954267222EA9 +S315E0640240FB9A2F013F3C003C4E954FEF00102A008D +S315E06402504A856C0E487AF96B20464E90588F60005A +S315E064026000823F3C00013F3C00454E95588F3D403F +S315E0640270FFF46C0670FF3D40FFF4558F3F053F3C4D +S315E064028000013F3C00464E95508F4A806C14487A94 +S315E0640290F94620464E903F053F3C003E4E95508FD2 +S315E06402A060403F053F3C003E4E95588F4A4767168F +S315E06402B0558F3F3C00023F3C000142A73F3C004271 +S315E06402C04E954FEF000C70FF3D40FFF0601432082E +S315E06402D0226EFBA4284552AEFBA412C160042D45F0 +S315E06402E0FBA4101430406600FDB6206E000C202E90 +S315E06402F0FBA44A50671A206E0008220058886008FA +S315E0640300528471442D890C9022584A1166F2200178 +S315E0640310224020044219528071404BEEFF942C3CFB +S315E0640320000112DC42112D890C90286EFF902E2E6E +S315E0640330FF942F0C4EBAE5D0588F7001204D60269D +S315E064034022071A1920462E01528052871185180019 +S315E064035066EE7A2043F9000112DC206EFB9E2E2EB7 +S315E0640360FBA413851800225873404A11670C528126 +S315E06403702D48FB9E2D47FBA460C87C0D41F9000126 +S315E064038012DC53804205118618007C201185180121 +S315E064039013C0000112DC13C6000112DD4A6EFFFCD5 +S315E06403A0672642A7486EFFF8486EFFFC2F0B4EBAED +S315E06403B0FB9E3F2EFFFA3F3C003E4EB900E0373AE3 +S315E06403C04FEF0014600018A62F0C4EB900E1C4A4E8 +S315E06403D0588FA541B280662A712C00017A3ABA80B8 +S315E06403E06620101448800680FFFFFFBF3F0033C0DD +S315E06403F0000112D83F3C000E4EB900E0373A600087 +S315E0640400047A558F487AF7F72A3C00E3E8DC2F0C48 +S315E06404103F3C000320454E904FEF000C4A40661A7D +S315E0640420558F487AF7DC2F0C3F3C000422454E9109 +S315E06404304FEF000C4A40670003BA4A9267082F0BF5 +S315E06404404EBAF55E588F42404244424642477A018C +S315E06404504BFAE4B43D40FB9E60622F084E952076ED +S315E0640460CC90588F722D7110B280664E712800015F +S315E0640470123C0046B280671C6D0A123C0044B280AE +S315E0640480662860167254B280671E123C0057B280CA +S315E06404906618600C42467EFF60107CFF4247600A45 +S315E06404A078FF3D44FB9E600278FF41F3CC0422581A +S315E06404B02149FFF84A1166F6600252857145207655 +S315E06404C00C9028404A106692226EFF9420421019DE +S315E06404D010C066FA4879000113AC487900011364E8 +S315E06404E02F024EBAF4F64FEF000C4A44660000CA97 +S315E06404F0487AF7124EB900E011762F004EBAE77EDD +S315E06405001A2EFF2C508F671C712EFF2D723AB28023 +S315E064051066121D45FFFF48853A7C00020685FFFFAB +S315E0640520FFBF601E558F3F3C00199BCD4EB900E07E +S315E0640530373A588F3A0020050680000000411D4096 +S315E0640540FFFF486EFFFFA3673F3C000149F900E007 +S315E0640550373A3F3C00404E94487AE9BB43FAE71E9B +S315E06405602D49FB9A4E91714D4FEF001041F9000110 +S315E06405701364226EFB9A4A300800662852853F056A +S315E06405802F033F3C00474E94508F4A2EFDAA660CDB +S315E06405907A5C42001D45FDAA1D40FDAB2F034EBAB1 +S315E06405A0E6DC600A0680000113642F004E913EBCCF +S315E06405B0000C4EBAF0F6588F72FF41FAE59623C204 +S315E06405C0000113BC2D48FB9A33C1000113C04E9061 +S315E06405D04A40660A4A44660005C6600005B62D4A86 +S315E06405E0FBA434473E06424549FAE6923C044BFA9C +S315E06405F0E4EC4879000111EA4EB900E1C4A4588FED +S315E064060028001039000111E1730020417208B288B4 +S315E0640610670001B84A47670A123C0010B288660070 +S315E064062001AA320A670A71007210B2806700019CFF +S315E06406304A46673C558F487AE8D64879000111EA1C +S315E06406403F3C00024EBAE2964FEF000C4A40660029 +S315E0640650017A558F487AF5BC4879000111EA3F3C46 +S315E064066000034EBAE2784FEF000C4A406600015C44 +S315E06406704A6EFB9E674C4879000111EA4E947145D7 +S315E0640680588FAB41B280670620045280601E487A78 +S315E0640690E8544EBAE77E588F42456032487AE87944 +S315E06406A02D40FB9A4E94588F202EFB9A220052815D +S315E06406B03001558173412041720CB2886CDE5285FB +S315E06406C0600C4879000111EA4EBAE748588F4A4609 +S315E06406D0660000F852846018487AE83DA3673F3CB8 +S315E06406E000013F3C00404EB900E0373A4FEF000C62 +S315E06406F020045280380055807140720EB2806CD806 +S315E0640700558F3F39000111E44EBAE59A487AF50708 +S315E06407104E943839000111E2548F2EBC00E3EAB8F6 +S315E0640720720B3F3C00022004E2A8123C001FC28028 +S315E06407302F014E95487AE7DF4E944FEF000A2EBCC0 +S315E064074000E3EAB82004EA88723F3F3C0002C280D4 +S315E0640750D8842F014E95487AE7BD4E944FEF000A50 +S315E06407602EBC00E3EAB8703E3F3C0002C0842F0032 +S315E06407704E95487AF4A14E944FEF00101839000173 +S315E064078011E1720F48847144B2806D08487AE32AB5 +S315E06407904E94588F558F3F044EBAE3FE487AF47907 +S315E06407A0A5673F3C00013F3C00404EB900E0373A64 +S315E06407B04FEF000A2EBC00E3EF173F3C00062F39EB +S315E06407C0000111E64E954FEF000C4EBAE3864A40BF +S315E06407D06600FE20487AE70E246EFBA44EBAE63441 +S315E06407E0588F4A466600041E558F3F3C00056000FC +S315E06407F00366558F487AF4242F0C3F3C0004204569 +S315E06408004E904FEF000C4A4067764A9267082F0B8A +S315E06408104EBAF18E588F558F3F3C001949F900E086 +S315E0640820373A4E94486EFFFFA3673F3C00012800C9 +S315E064083006800000004152841D40FFFF3F3C0040BB +S315E06408404E94487AE6D14EBAE4343F042F023F3CF4 +S315E064085000474E944FEF001C4A2EFF2C660C705CEA +S315E064086042011D40FF2C1D41FF2D2F024EBAE40EBE +S315E0640870548F3F3C000C4EBAEE32588F600013EE54 +S315E0640880558F487AF39A2F0C3F3C000620454E90EC +S315E06408904FEF000C4A40670001504A9267082F0BFD +S315E06408A04EBAF0FE588F226EFF942042101910C0A3 +S315E06408B066FA4879000113AC2C3C00E3EB524879C4 +S315E06408C0000113642F024EBAF11223C2000113BC75 +S315E06408D070FF204633C0000113C04E904FEF000C0A +S315E06408E04A40660E558F3F3C00014EBAEDBE588FC6 +S315E06408F060264EBAE14C1039000111E17218488065 +S315E0640900C0814A406718487AF31C4EB900E0117614 +S315E06409102F004EBAE368508FA146600000C24BF9DF +S315E064092000E0117649FAE3562A3C00E3E906283CFE +S315E064093000E0373A206EFF984A10675C2F082D482E +S315E0640940FB9A22454E91588F206EFB9A725871102D +S315E0640950B28066085288123C00016002424193C943 +S315E064096060284A4167162C097E09E98E22467D0095 +S315E06409704880BE866C1043F108C9600E3C09488025 +S315E0640980CDFC000A324643F108D0101866D420093B +S315E06409907EF8C0874A406710487AF2BD4E95A14614 +S315E06409A02F004E94508F601C558F3F0920443F3C86 +S315E06409B0000148790001124C3F3C00434E904FEFF2 +S315E06409C0000C2C004EBAE18C4A406600FF684A8609 +S315E06409D0660C558F3F3C00054EBAECD0588F23C663 +S315E06409E00001124060001286558F487AF2872F0C18 +S315E06409F03F3C000422454E914FEF000C4A4067208D +S315E0640A00487AF2754EB900E011762F004EBAE26E7E +S315E0640A105C8F3F39000112424EBAE17E6000FE5CB3 +S315E0640A20558F487AF27B2F0C3F3C000520454E906B +S315E0640A304FEF000C4A40671C4A9267082F0B4EBA88 +S315E0640A40EF60588F2F074EBADEBE2F074EBAE374B7 +S315E0640A50600000AE558F487AF24C2F0C3F3C0004A0 +S315E0640A6022454E914FEF000C4A406700009A42449B +S315E0640A702E3C00E3EE124BF900E1C4A4604A558FC4 +S315E0640A80487AF12D2F0C3F3C000520454E904FEF00 +S315E0640A90000C4A4066082F0C22474E91588FDCB909 +S315E0640AA0000111C82F064E95588F2079000111C8B0 +S315E0640AB0D8807144123008011030080048814880BB +S315E0640AC0D0814A40671E52847D442079000111C872 +S315E0640AD049F0680012306801101448814880D0817A +S315E0640AE04A40669A4A39000111FC67001180487AE7 +S315E0640AF0F0BF4EBAE31E4879000111FC4EBAE17EBE +S315E0640B00508F60001168558F487AF19E2F0C3F3CF8 +S315E0640B10000420454E904FEF000C4A40661A558F0C +S315E0640B20487AF18A2F0C3F3C000522454E914FEFFF +S315E0640B30000C4A40670000D44A9267082F0B4EBA0D +S315E0640B40EE60588F226EFF944A1167042042600E6D +S315E0640B50558F3F3C00064EBAEB52600000A6101972 +S315E0640B6010C066FA4879000113AC48790001136451 +S315E0640B702F024EBAEE6623C2000113BC4BFADFD4F1 +S315E0640B8070FF33C0000113C04E954FEF000C4A402E +S315E0640B906612558F3F3C00014EBAEB10588FA14068 +S315E0640BA060000C962A3C00E3EA4049F900E0373AF3 +S315E0640BB020454E90426748790001124C3F3C003D27 +S315E0640BC04E94508F38002F03487800803F043F3CB2 +S315E0640BD0003F4E944FEF000C4A806F142F032F00B2 +S315E0640BE03F3C00013F3C00404E944FEF000C60D622 +S315E0640BF04E954A4066BA3F043F3C003E4EB900E03B +S315E0640C00373A588F428060000C30558F487AF0A3AB +S315E0640C102F0C3F3C000422454E914FEF000C4A40B6 +S315E0640C20660000C2558F487AF08D2A3C00E3E8DC22 +S315E0640C302F0C3F3C000520454E904FEF000C4A4098 +S315E0640C40660000A2600000F271007222B280660063 +S315E0640C5000902005528024802F004E94588F2045C2 +S315E0640C60722271300800B280661042072A122F059C +S315E0640C704E94588F2045118708FF20522248605CC5 +S315E0640C807100722FB280665212117A637101BA8072 +S315E0640C9067186D087E30BE80662A60247A6EBA80F4 +S315E0640CA067187E72BE80661C600A10BC000D12BCBA +S315E0640CB0000A602610BC000D600C10BC000A6006D9 +S315E0640CC042106002108120092A0952802440528031 +S315E0640CD0121A2445528514C166F25288101966A028 +S315E0640CE05884600A428449F900E1C4A42C0A45EEBA +S315E0640CF0FF94D5C42A12204510106600FF4C2446A2 +S315E0640D00780149FADF78601C7144A341B2806708D0 +S315E0640D10487AE2054E94588F2045588D2F104E94AC +S315E0640D205284588F20552A0D4A1066DC4A92660032 +S315E0640D300F3C558F6000FB3C558F487AEF7E2F0C55 +S315E0640D403F3C000322454E914FEF000C4A40677CDE +S315E0640D504A9267082F0B4EBAEC48588F41F900E087 +S315E0640D60373A4A4466483039000112D852803F0027 +S315E0640D702F033F3C00474E90508F4A2EFDAA660CE7 +S315E0640D80705C42011D40FDAA1D41FDAB2F034EB9C7 +S315E0640D9000E1C4A42F032F003F3C00013F3C004028 +S315E0640DA04EB900E0373A4FEF001060000EC0558F41 +S315E0640DB02F073F3C003B4E90508F23C0000112400A +S315E0640DC067000EAA487AEEF7600001DC558F487A30 +S315E0640DD0EF022F0C3F3C000720454E904FEF000C8E +S315E0640DE04A4067784A9267082F0B4EBAEBB4588F3D +S315E0640DF04A44661841FADE864A790001124666007C +S315E0640E000092487AEED84E906000FA702F074EBA98 +S315E0640E10DAF6548F487AEEC32F073F3C000349FA6B +S315E0640E20DABC4E944FEF000C4A40670C70FF33C057 +S315E0640E300001124660000E36558F487AEEA02F0701 +S315E0640E403F3C00044E944FEF000C4A406700009A22 +S315E0640E50424133C10001124660000E12558F487A52 +S315E0640E60EE972F0C3F3C000720454E904FEF000C69 +S315E0640E704A40677C4A9267082F0B4EBAEB24588F38 +S315E0640E804A44661641FADDF64A790001124467007F +S315E0640E90FF72487AEE456000FF6E2F074EBADA6855 +S315E0640EA0548F487AEE352F073F3C000349FADA2E31 +S315E0640EB04E944FEF000C4A40670C70FF33C000015C +S315E0640EC0124460000DA8558F487AEE122F073F3C16 +S315E0640ED000044E944FEF000C4A40670C424133C124 +S315E0640EE00001124460000D86487AEDF6600000B8B1 +S315E0640EF0558F487AEE0A2F0C3F3C000320454E900E +S315E0640F004FEF000C4A406618558F487AEDF52F0C82 +S315E0640F103F3C000622454E914FEF000C4A40672C59 +S315E0640F204A9267082F0B4EBAEA78588F558F2F0787 +S315E0640F303F3C00394EB900E0373A508F23C0000198 +S315E0640F40124067000D28487AEDBF605A558F487A9B +S315E0640F50EDD02F0C3F3C000320454E904FEF000C44 +S315E0640F604A406618558F487AEDBB2F0C3F3C000625 +S315E0640F7022454E914FEF000C4A4067364A92670825 +S315E0640F802F0B4EBAEA1C588F558F2F073F3C003A19 +S315E0640F904EB900E0373A508F23C000011240670033 +S315E0640FA00CCC487AED854EB900E011762F006000EE +S315E0640FB0FB4C558F487AED8E2F0C3F3C0003204561 +S315E0640FC04E904FEF000C4A40661A558F487AED7999 +S315E0640FD02F0C3F3C000422454E914FEF000C4A40F3 +S315E0640FE0670001CA4A9267082F0B4EBAE9B4588F74 +S315E0640FF04240780149FAD9103D40FB9E60342F089F +S315E06410004E9420765C90588F722D7110B280662073 +S315E0641010712800017C51BC8066067EFF3D47FB9EDD +S315E064102041F35C0422582149FFF84A1166F66002EE +S315E064103052847B4420765C904A1066C2206EFF94AC +S315E06410404A106600011E6000014C101910C066FA71 +S315E064105070FF4879000113AC4879000113642F02EC +S315E064106023C2000113BC33C0000113C04EBAE96C5D +S315E06410704FEF000C72FD7140B2806706A341B28007 +S315E06410806640487AECC720454E902F004E944879E6 +S315E0641090000113644E944879000113AC4E94487A87 +S315E06410A0ECC622454E912F004E944EBADB404FEF8C +S315E06410B000184A40670000EC487ADE2A20474E90E2 +S315E06410C0588F22464E914A40661A558F3F3C00013E +S315E06410D0A1444EBAE5D6487ADE0C20474E90508F4E +S315E06410E0600000981039000111E172184880C081EF +S315E06410F04A4066644EBAD94A558F3F3C00074EBAB9 +S315E0641100E5AA588F4A6EFB9E672C487AEC644E9447 +S315E06411104EBADADA487AEC5D2D40FB9A4E94508FFB +S315E0641120202EFB9A4A406724487AEC4D20454E903F +S315E06411302F004E94508F558F48790001124C3F3CF6 +S315E064114000414EB900E0373A508F2800558F3F3C56 +S315E0641150000C4EBAE556588F22464E914A40668454 +S315E0641160601842842A3C00E0117649FADB102E3C92 +S315E064117000E3EE122C3C00E3EB52225D4A11670673 +S315E064118020426000FEC6558F3F3C00054EBAE51C22 +S315E0641190588F600E558F3F3C000642844EBAE50C8C +S315E06411A0588F23C40001124060000AC2558F487A02 +S315E06411B0EBD32F0C3F3C00044BFAD7224E954FEF0E +S315E06411C0000C4A40670001B64A9267082F0B4EBA94 +S315E06411D0E7D0588F286EFF982242206EFF942A4803 +S315E06411E0101D12C066FA2243101C12C066FA70FF24 +S315E06411F023C2000113BCA1790001124033C000018F +S315E064120013C04A10670006424879000113AC487976 +S315E0641210000113642F0249FAE7C24E944FEF000CC3 +S315E064122072FD7140B280670878FEB8806614600823 +S315E0641230558F42676000F640558F3F3C0001600081 +S315E0641240F63648790001140C7AFD4879000113C436 +S315E06412502F034E944FEF000C7140BA80666648796E +S315E0641260000113AC4879000113642F024E944FEFEA +S315E0641270000C7140BA806708A346BC80660009EE3C +S315E0641280487AEB054BF900E011764E9549FAD9EECA +S315E06412902F004E944879000113644E944879000116 +S315E06412A013AC4E94487AEAC04E952F004E944EBAEB +S315E06412B0D93C4FEF00184A40670009B2487ADC2609 +S315E06412C0600002704EBAE84C4A406770558F3F3C06 +S315E06412D000026000F5A21039000111E1721848803D +S315E06412E0C0814A40667620464E9022454E91558F9F +S315E06412F03F3C000C4E943EBC00074E943EBC000A54 +S315E06413004E943EBC00084E944879000112944879A4 +S315E06413100001124C426720443F3C00564E904FEF2A +S315E0641320001023C0000112406C32487AEA764EB966 +S315E064133000E011762F004E95508F60202E3C00E33E +S315E0641340EB522C3C00E3E92E2A3C00E3EA4049FAFE +S315E0641350E35A283C00E0373A4BFAD92222474E91C9 +S315E06413604A406600FF72558F3F3C000C49FAE33C05 +S315E06413704E943EBC00054E946000F500558F487A65 +S315E0641380EA392F0C3F3C00054E954FEF000C4A407E +S315E0641390670001A84A9267082F0B4EBAE604588F95 +S315E06413A02F074EBAD5622847588F1014670A4880CB +S315E06413B00680FFFFFFC0600242403F00486EFFE0E8 +S315E06413C03F3C00364EB900E0373A508F4A806600BB +S315E06413D0015E487AE9EA4EB900E0117649FAD89EA8 +S315E06413E02A472F004E94508F4A15660C558F3F3C22 +S315E06413F000104EBAE2B660042F074E943EBC000C71 +S315E06414004EBAE2A8283C00E01176487AE9D14BFA74 +S315E0641410DA0220444E9049FAD6C42F004E955C8F8A +S315E06414202EBC00E3EF173F3C0008202EFFEC43EEB2 +S315E0641430FFE4222EFFE84C1108004C0018002F014F +S315E06414404E94487AE9B120444E902F004E954FEF82 +S315E0641450000E2EBC00E3EF173F3C0008222EFFE8A7 +S315E064146043EEFFEC202EFFE490AEFFE04C11180053 +S315E06414704C0018002F014E94487AE99320444E902C +S315E06414802F004E954FEF000E2EBC00E3EF173F3C66 +S315E06414900008202EFFEC43EEFFE0222EFFE84C111D +S315E06414A008004C0018002F014E94487AE9792044EC +S315E06414B04E902F004E954FEF000E2EBC00E3EF17D3 +S315E06414C03F3C00082F2EFFE44E94487AE9712244AB +S315E06414D04E912F004E954FEF000E2EBC00E3EF17B2 +S315E06414E03F3C00082F2EFFE04E94487AE969204499 +S315E06414F04E902F004E954FEF000E2EBC00E3EF1793 +S315E06415003F3C00082F2EFFEC4E94487AE95D224476 +S315E06415104E912F004E954FEF000E2EBC00E3EF1771 +S315E06415203F3C00082F2EFFE84E94600004BA487AE8 +S315E0641530E94D4EBAD8DE6000F342558F487AE968E1 +S315E06415402F0C3F3C00054E954FEF000C4A40664435 +S315E0641550558F487AE9572F0C3F3C00054E954FEF7F +S315E0641560000C4A40662E558F487AE9462F0C3F3C7C +S315E064157000034E954FEF000C4A406618558F487A43 +S315E0641580E9332F0C3F3C00034E954FEF000C4A4085 +S315E0641590670002C04A9267082F0B4EBAE404588F7C +S315E06415A04A446F00029E558F487AE9012F0C3F3C0E +S315E06415B0000528474EBAD3264FEF000C226EFF98FB +S315E06415C020433D40FB9E101C10C066FA2042101971 +S315E06415D010C066FA70FF4879000113AC48790001DF +S315E06415E013642F0323C3000113BCA17900011240E5 +S315E06415F049FAE3E833C0000113C04E944FEF000CA0 +S315E064160072FD7140B2806700021A78FEB8806700A6 +S315E0641610021848790001140C7AFD4879000113C474 +S315E06416202F024E944FEF000C7140BA80670001F4CC +S315E06416304EBAE4E04A406700011A558F3F3C000227 +S315E06416404EBAE068600001381039000111E17C1897 +S315E06416504880C0864A406600010A4EBAD3E4283C14 +S315E064166000E3F6AA20474E904A406600013E558F55 +S315E06416704879000112943F3C00414E945C8F3F3CB4 +S315E0641680000C4E953EBC00074E953EBC000A4E9556 +S315E06416903EBC00084E95426748790001124C3F3CD7 +S315E06416A0003D4E944FEF000C3C006F0000DA3F3C87 +S315E06416B000204879000112943F3C003C4E94508FE0 +S315E06416C03A006F0000D042B900011240486EFBAAAE +S315E06416D0487802003F063F3C003F4E944FEF000CD3 +S315E06416E028006F1A486EFBAA2F003F053F3C004076 +S315E06416F04E944FEF000CB8806FD2600000E24A80EF +S315E0641700660000D63F063F3C003E4EB900E0373AFD +S315E0641710588F4A6EFB9E672E558F48790001124CAE +S315E06417203F3C00414EB900E0373A487AE78A4EB921 +S315E064173000E011762F004EBAD5444FEF000E3F3CE1 +S315E064174000074E95588F3F053F3C003E4E94588FB8 +S315E064175060102E3C00E3E92E4BFADF5049F900E0D5 +S315E0641760373A4EBAD3EE4A406600FEDE558F3F3CCA +S315E0641770000C49FADF364E943EBC00054E94588F11 +S315E06417804240600000B2558F3F3C000122444E91D6 +S315E0641790600000A0487AE72B4EB900E011762F008E +S315E06417A04EBAD670508F6000008C487AE72A49F9C1 +S315E06417B000E011764E942A442F004EBAD6565C8FDA +S315E06417C03F3C00074E95487AE71B4E942F004EBA8D +S315E06417D0D4AC4FEF000C605C487AE7156004487A55 +S315E06417E0E72A4EB900E0117649FAD4922F004EBA50 +S315E06417F0D622508F558F4879000112943F3C0041C0 +S315E06418004EB900E0373A487AE6AE4EB900E0117672 +S315E06418102F004E944879000112944E944FEF0014D1 +S315E06418206012558F42676006558F3F3C00014EBAA1 +S315E0641830DE7A588F70FF714023C000011240600069 +S315E0641840042CA17900011240558F3F3C00066000EC +S315E0641850F026558F487ADA592F0C3F3C00064E95B0 +S315E06418604FEF000C4A4067084EBAD52A600003FE83 +S315E0641870558F487AE6B02F0C3F3C00054E954FEF06 +S315E0641880000C4A40670A558F3F3C00116000EFE860 +S315E0641890558F487AD9662F0C3F3C00054E954FEF3D +S315E06418A0000C4A4067344A92670A486EFF904EBA23 +S315E06418B0E0F0588F3F2EFFF645F900E0373A3F3CBB +S315E06418C0003E4E923F2EFFF43F3C003E4E92700146 +S315E06418D033C000011248600003D4558F487ADD9620 +S315E06418E02F0C3F3C00084E954FEF000C4A4067488A +S315E06418F04A9267082F0B4EBAE0A8588F558F3F3C43 +S315E064190000304BF900E0373A49FAD1B04E95794068 +S315E06419102004E08C718079842F004E94487AD5F067 +S315E0641920A3673F3C00013F3C00404E952F044E9434 +S315E06419304FEF001860000336558F487ADD562F0C5A +S315E06419403F3C00054BFACF964E954FEF000C4A406C +S315E064195067124A9267082F0B4EBAE046588F487A68 +S315E0641960E5C96026558F487ADA782F0C3F3C000744 +S315E06419704E954FEF000C4A40672C4A9267082F0B4E +S315E06419804EBAE01E588F487AE5A4A5673F3C00014D +S315E06419903F3C00404EB900E0373A4FEF000A3F3C27 +S315E06419A000056000EED2558F487AD7272F0C3F3C6E +S315E06419B000044E954FEF000C4A406616558F487A00 +S315E06419C0E56F2F0C3F3C00064E954FEF000C4A4006 +S315E06419D0671C487AE561A9673F3C00013F3C0040EB +S315E06419E04EB900E0373A4FEF000C600002804A924D +S315E06419F067082F0B4EBADFAA588F2F0B2F0C4EBAFF +S315E0641A0003FA508F4A40660002644879000111FC8B +S315E0641A104EB900E1C4A4588F4A406706307C00059D +S315E0641A20600291C84BF0080242442C3C00E3E8DCD7 +S315E0641A302A3C00E1C4A4602A558F487AE1732F07F3 +S315E0641A403F3C000520464E904FEF000C4A40670E3F +S315E0641A502F072245538D4E91588FD8806004528D5E +S315E0641A60528471442079000111C82E0812300801AD +S315E0641A70DE802047101080814A0066BC714D558F28 +S315E0641A802F003F3C00484EB900E0373A508F2A4079 +S315E0641A904A39000111FC672E204043FAE1134240C3 +S315E0641AA0600410C15280121966F8734043F900016C +S315E0641AB011FC41F5180012192808528010C166F627 +S315E0641AC02044421060024240420152807140204309 +S315E0641AD01B81080072FF4240601079117A2E528CA5 +S315E0641AE05280BA8456C44884C2841814224C10C402 +S315E0641AF066E841FAE0B64A4166046010528012181C +S315E0641B00794043F648001341FDAA66F020437AFF24 +S315E0641B10601671007C3ABC80670C7E5CBE8056C001 +S315E0641B204880CA8060024245101866E67001424405 +S315E0641B302C0349F9000111FC33C0000251144EB97B +S315E0641B4000E0364A558F426742673F3C00154EB91E +S315E0641B5000E03700508F6000008A71444A34080020 +S315E0641B60677E32046002528171411C340800670862 +S315E0641B7071067E3BBE8066EE7F412042424022474C +S315E0641B80600810F47800528452807F44B3C76EF2E2 +S315E0641B902800538479447E5C41F648007928FF2C1A +S315E0641BA0BE84670E7940528041F64800785C114401 +S315E0641BB0FF2C2043600A43F6480052801347FF2C0B +S315E0641BC01E1879404A0766EE41F648001147FF2C35 +S315E0641BD04A0667045281600242452C02380160027B +S315E0641BE042452F0D4879000112DC2F0642673F3CDF +S315E0641BF0004B4EB900E0373A4FEF001072DFB28027 +S315E0641C0066064A456600FF542E007AE04EB900E067 +S315E0641C103630558F2F0D42443F3C004933C40002B1 +S315E0641C2051144EB900E0373A5C8F3F043F3C000103 +S315E0641C303F3C00154EB900E0370023C7000112406F +S315E0641C40508FBA8767224A876E164A876C1E487A2F +S315E0641C50E2EA4EB900E011762F004EBAD020508FFA +S315E0641C604A790001124467044EBADF26486EFFF0F3 +S315E0641C704EBACFAE588F4AAE001467364A92670AB8 +S315E0641C80486EFF904EBADD1A588F3F2EFFF645F93F +S315E0641C9000E0373A7C013F3C003E4E923F2EFFF433 +S315E0641CA03F3C003E4E9233C600011248508F6000BE +S315E0641CB0013C4AAE00146600E2D24A92670000A490 +S315E0641CC041F9000112DD4218B1FC0001135A66F6CF +S315E0641CD049F9000112DC2A4C2A3C00E0373A6002FA +S315E0641CE01AC0486EFFFFA3673F2A000220453F3CC7 +S315E0641CF0003F4E904FEF000C4A806E0E42414240E8 +S315E0641D0041F9000112DC32406028102EFFFF780DA5 +S315E0641D107300B88166CA720160E479807A1FBA8416 +S315E0641D20641079007C7FBC846708794952891180A4 +S315E0641D304800101C66E4420771493D49FBA241F93B +S315E0641D40000112DC118708004A6EFBA2660A4A416A +S315E0641D50670670FF3D40FBA24A6EFBA256C0600078 +S315E0641D600084558F3F3C000D4EBAD940588F41F9F7 +S315E0641D70000112DD4218B1FC0001135A66F6558F74 +S315E0641D8049F9000112DC2F0C727E3F3C000A4204E2 +S315E0641D9013C1000112DC4EB900E0373A7139000133 +S315E0641DA012DD508F41F9000112DE198408024240C7 +S315E0641DB0601879817A1FBA84641079017C7FBC8467 +S315E0641DC067087940528019814800121866E4420730 +S315E0641DD0734041F9000112DC4A4056C0118718008D +S315E0641DE01187180144804A006600E1A04CEE3CFC91 +S315E0641DF0FB704E5E4E75424154004E56FF084240BB +S315E0641E0048D73CFC206E000872FF600E7502762EA1 +S315E0641E105280B68256C24882C282141877401D82C6 +S315E0641E20389666E83D40FFFE4A41671641FA035438 +S315E0641E3012187540324052801D81289666F23D49FB +S315E0641E40FFFE716EFFFE487AFFAE487608933F3C2C +S315E0641E5000034EBACA884FEF000A4A40661C600027 +S315E0641E60014A77037C3ABC83670C7E5CBE8356C1C9 +S315E0641E704881C481600842426004424074FF734012 +S315E0641E80163618962200528130014A0366D4280E2B +S315E0641E900684FFFFFF962A0E2A443D41FFFE424335 +S315E0641EA047F900E0373A0685FFFFFF3245F900015E +S315E0641EB011FC600000A671434A3208006700009A8C +S315E0641EC03003600252807340183218006708730466 +S315E0641ED07C3BBC8166EE7F404241204760127D4197 +S315E0641EE049F278005283528143F668001354FF3214 +S315E0641EF07F43B1C76EE82601538377433D41FFFED6 +S315E0641F007C5C41F638007728FF32BC8367127E5CDE +S315E0641F10774152813D41FFFE41F638001147FF3279 +S315E0641F20322EFFFE204D600A43F638005281134795 +S315E0641F30FF321E1877414A0766EE3D41FFFE4201D5 +S315E0641F4041F638001141FF324A0467045280600268 +S315E0641F504242280536006002424242672F043F3C13 +S315E0641F60003D4E93508F2D40FFFA6E0A4A4266005A +S315E0641F70FF464A806D34424342A7486EFFFA486E94 +S315E0641F80FFFE2F2E000C3D43FFFE4EBADFC23F2E0E +S315E0641F90FFFC3F3C003E4EB900E0373A42B90001EF +S315E0641FA012404FEF001470FF60084240A1790001CF +S315E0641FB012404CEE3CFCFF084E5E4E754C65617615 +S315E0641FC0696E6720456D75434F4E2E2E2E0D0A00C1 +S315E0641FD04E56FF90206E000848D70C0C558F23C8E8 +S315E0641FE0000111C443E8002C23D1000111C841E883 +S315E0641FF000802D48FFA24A1056C04879000111CCF2 +S315E06420003F3C001A48803D40FFA64EB900E0373AAF +S315E0642010420072FF42B900011240508F13C00001C2 +S315E064202011FC424033C10001124433C00001124640 +S315E06420304A6EFFA6660C558F3F3C00044EBAD66CDA +S315E0642040588F424347FAC8966024558F487ADB61D5 +S315E06420502F083F3C00054E934FEF000C4A40670C57 +S315E0642060487228054EBACD5C588F601E528375431C +S315E06420702479000111C841F22800123228011010B7 +S315E064208048814880D0814A4066C04A6EFFA66610A1 +S315E0642090486EFFAA487900E526F44EBAFD5E508F95 +S315E06420A04879000251184EB900E01288588F4A40C8 +S315E06420B0674E740645F900E0373A3F0252823F3C88 +S315E06420C0003E4E927142588F7215B28066EC4A6E4B +S315E06420D0FFA6672C70657278206EFFA210BC0004C0 +S315E06420E011400001114100027069727411400003ED +S315E06420F011410004700D42011140000511410006D2 +S315E06421004240558F260E240E47EEFFFA558306822B +S315E0642110FFFFFFAA45FADE383F0033C000011248EC +S315E06421203F3C00013F3C00154EB900E03700508F5C +S315E0642130424142AEFFFA3D41FFFE4A6EFFA66604A7 +S315E064214042806004202EFFA22F002F0B2F032F0264 +S315E06421504E924FEF00104A790001124867D2487AEE +S315E0642160FE5C4EBACCAE588F4CEE0C0CFF904E5ED5 +S315E06421704E7530313233343536373839414243443B +S315E064218045462E424154002A2E2A000000010008EA +S315E06421904D694E542049534F20383835392D322015 +S315E06421A03678360000000000000000000000000001 +S315E06421B0000000FF000400040003000100010006C3 +S315E06421C0000600000003000100015555AAAA000DAF +S315E06421D00000000000E54A9800E54C9A00C000065D +S315E06421E00000000000000000000100094D694E5443 +S315E06421F02049534F2D383835392D32203878380018 +S315E0642200000000000000000000000000000000FF85 +S315E06422100006000600040001000100080008000151 +S315E064222000030001000155555555000D00000000FE +S315E064223000E5511C00E5531E0100000800000000A3 +S315E0642240000000000001000A4D694E542049534FD6 +S315E06422502D383835392D3220387831360000000093 +S315E06422600000000000000000000000FF000D000B0D +S315E064227000080002000200080008000100070001EF +S315E0642280000155555555000D0000000000E55B2042 +S315E064229000E55D220100001000000000000000007F +S315E06422A0000100083678362073797374656D2066AC +S315E06422B06F6E740000000000000000000000000083 +S315E06422C000000000000000FF0004000400030001B9 +S315E06422D000010005000600000003000100015555F9 +S315E06422E0AAAA000D0000000000E56D2400E56F2653 +S315E06422F000C00006000000000000000000010009C4 +S315E06423003878382073797374656D20666F6E7400FF +S315E06423100000000000000000000000000000000073 +S315E0642320000000FF0006000600040001000100074B +S315E06423300008000100030001000155555555000DE4 +S315E06423400000000000E573A800E575AA0100000836 +S315E064235000000000000000000001000A3878313611 +S315E06423602073797374656D20666F6E740000000087 +S315E0642370000000000000000000000000000000FF14 +S315E0642380000D000B000800020002000700080001CF +S315E064239000070001000155555555000D0000000089 +S315E06423A000E57DAC00E57FAE0100001000000000B2 +S315E06423B00000000000004A680100000000000040E0 +S315E06423C000C000004B68010000000000004000C04F +S315E06423D000004C68010000000000004000C00000FE +S315E06423E04D680080000000000020006000400000AE +S315E06423F0FFFF7FFF3FFF1FFF0FFF07FF03FF01FFA5 +S315E064240000FF007F003F001F000F0007000300018C +S315E064241000000000876543210000815400E02F98A6 +S315E06424200401010201010202040202020003040241 +S315E0642430060000000D0A284129626F72742C202878 +S315E06424405229657472792C206F7220284929676E47 +S315E06424506F7265203F00000000E4247400E424F415 +S315E064246000E425740000A6A00000A6A10000A6A2D0 +S315E064247000000000001BF3ECB9E8F8BEFDE1EDE90D +S315E06424803D27080971776572747A75696F70FA2900 +S315E06424900D006173646667686A6B6CF94023002AB1 +S315E06424A079786376626E6D2C2E2D00000020000034 +S315E06424B000000000000000000000000000002D00A5 +S315E06424C000002B000000007F000000000000000018 +S315E06424D0000000003C000028292F2A3738393435BB +S315E06424E036313233302E0D0000000000000000006B +S315E06424F000000000001B313233343536373839306A +S315E06425002560080951574552545A55494F502F286A +S315E06425100D004153444647484A4B4C22215E00260F +S315E064252059584356424E4D3F3A5F00000020000042 +S315E064253000000000000000000000003738002D3481 +S315E064254000362B003200307F0000000000000000FF +S315E0642550000000003E000028292F2A373839343538 +S315E064256036313233302E0D000000000000000000EA +S315E064257000000000001BD3CCA9C8D8AEDDC1CDC92C +S315E06425803D27080951574552545A55494F50DA295F +S315E06425900D004153444647484A4B4CD94023002AF0 +S315E06425A059584356424E4D2C2E2D00000020000013 +S315E06425B000000000000000000000000000002D00A4 +S315E06425C000002B000000007F000000000000000017 +S315E06425D0000000003C000028292F2A3738393435BA +S315E06425E036313233302E0D0000000000000000006A +S315E06425F00000000000E4261000E4269000E42710C2 +S315E064260000E4279000E4279700E4279E000000009A +S315E0642610001B313233343536373839309E27080972 +S315E064262071776572747A75696F70812B0D00617369 +S315E0642630646667686A6B6C948423007E79786376F3 +S315E0642640626E6D2C2E2D000000200000000000005C +S315E0642650000000000000000000002D0000002B00D8 +S315E06426600000007F000000000000000000000000A1 +S315E06426703C000028292F2A3738393435363132334D +S315E0642680302E0D0000000000000000000000000095 +S315E0642690001B2122DD2425262F28293D3F600809D9 +S315E06426A051574552545A55494F509A2A0D00415351 +S315E06426B0444647484A4B4C998E5E003E59584356C9 +S315E06426C0424E4D3B3A5F00000020000000000000EF +S315E06426D0000000000000003738002D3400362B007F +S315E06426E03200307F000000000000000000000000BF +S315E06426F03E000028292F2A373839343536313233CB +S315E0642700302E0D0000000000000000000000000014 +S315E0642710001B313233343536373839309E27080971 +S315E064272051574552545A55494F509A2B0D004153CF +S315E0642730444647484A4B4C998E23003C5958435685 +S315E0642740424E4D2C2E2D00000020000000000000BB +S315E0642750000000000000000000002D0000002B00D7 +S315E06427600000007F000000000000000000000000A0 +S315E06427703C000028292F2A3738393435363132334C +S315E0642780302E0D0000000000000000000000000094 +S315E06427901A40275B285D001A5C277B287D001A4077 +S315E06427A0275B285D000000E427C200E4284200E4D9 +S315E06427B028C200E4294200E4294B00E429540000DD +S315E06427C00000001B313233343536373839302B82EA +S315E06427D0080971776572747975696F7086810D0021 +S315E06427E06173646667686A6B6C948427005C7A7864 +S315E06427F06376626E6D2C2E2D0000002000000000D2 +S315E06428000000000000000000000000002D00000051 +S315E06428102B000000007F00000000000000000000C4 +S315E064282000003C000028292F2A3738393435363100 +S315E06428303233302E0D00000000000000000000007E +S315E06428400000001B2122232425262F28293D3F90C2 +S315E0642850080951574552545955494F508F9A0D00BE +S315E06428604153444647484A4B4C998E2A007C5A5811 +S315E06428704356424E4D3B3A5F0000002000000000A4 +S315E06428800000000000000000000000002D000000D1 +S315E06428902B000000007F0000000000000000000044 +S315E06428A000003E000028292F2A373839343536317E +S315E06428B03233302E0D0000000000000000000000FE +S315E06428C00000001B313233343536373839302B90DB +S315E06428D0080951574552545955494F508F9A0D003E +S315E06428E04153444647484A4B4C998E27007C5A5894 +S315E06428F04356424E4D2C2E2D000000200000000071 +S315E06429000000000000000000000000002D00000050 +S315E06429102B000000007F00000000000000000000C3 +S315E064292000003C000028292F2A37383934353631FF +S315E06429303233302E0D00000000000000000000007D +S315E064294000001A5B1B5D28602B5E001A7B1B7D28EA +S315E06429507E2B40001A5B1B5D28602B5E000000E462 +S315E0642960297A00E429FA00E42A7A00E42AFA00E4FF +S315E06429702B0300E42B0A00E42B3A001B2682222771 +S315E064298028DD8A218785292D0809617A657274793B +S315E064299075696F7001240D007173646667686A6BAC +S315E06429A06C6D9760002377786376626E2C3B3A3D74 +S315E06429B000000020000000000000000000000000AD +S315E06429C0000000002D0000002B000000007F0000E6 +S315E06429D0000000000000000000003C000028292FF1 +S315E06429E02A373839343536313233302E0D0000002B +S315E06429F000000000000000000000001B31323334A8 +S315E0642A00353637383930F85F0809415A45525459F2 +S315E0642A1055494F50022A0D005153444647484A4BA4 +S315E0642A204C4D259C007C57584356424E3F2E2F2BE7 +S315E0642A30000000200000000000000000000000002C +S315E0642A40003738002D3400362B003200307F00002A +S315E0642A50000000000000000000003E000028292F6E +S315E0642A602A373839343536313233302E0D000000AA +S315E0642A7000000000000000000000001B26902227F2 +S315E0642A8028DD8A2180B6292D0809415A45525459D0 +S315E0642A9055494F5001240D005153444647484A4B2B +S315E0642AA04C4D9760002357584356424E2C3B3A3D73 +S315E0642AB000000020000000000000000000000000AC +S315E0642AC0000000002D0000002B000000007F0000E5 +S315E0642AD0000000000000000000003C000028292FF0 +S315E0642AE02A373839343536313233302E0D0000002A +S315E0642AF0000000000000000000001A5B1B5D285C1B +S315E0642B002B40001A7B1B7D2B7E001A5B1B5D285CC9 +S315E0642B102B400061836588698C6F937596205E01AE +S315E0642B205E00418E4F99559A61846589698B6F948D +S315E0642B307581799820B902B9000000E42B1300E4AA +S315E0642B402B2200E42CDE00E42D5E00E42DDE00E4BE +S315E0642B502B5E00E42BDE00E42C5E00000000001B2C +S315E0642B60313233343536373839302D3D0809F1AAF8 +S315E0642B709CA8ABAC9FA0A6A75B5D0D0098A99BAD96 +S315E0642B809A9EA5A1A23B276000239DAEAFE099A4DF +S315E0642B90A32C2E2F0000002000000000000000009F +S315E0642BA000000000000000002D0000002B00000083 +S315E0642BB0007F0000000000000000000000005C00F0 +S315E0642BC00028292F2A373839343536313233302ED6 +S315E0642BD00D00000000000000000000000000001B83 +S315E0642BE02122F924255E262A28295F2B0809F2AAE0 +S315E0642BF08490929387888E8F7B7D0D0080918394F9 +S315E0642C0082868D898A3A40FF007E85959697818C87 +S315E0642C108B3C3E3F00000020000000000000000006 +S315E0642C2000000000000000002D0000002B00000002 +S315E0642C30007F0000000000000000000000007C004F +S315E0642C400028292F2A373839343536313233302E55 +S315E0642C500D00000000000000000000000000001B02 +S315E0642C60313233343536373839302D3D0809F1FBA6 +S315E0642C708490929387888E8F5B5D0D0080918394B8 +S315E0642C8082868D898A3B2760002385959697818C19 +S315E0642C908B2C2E2F000000200000000000000000B6 +S315E0642CA000000000000000002D0000002B00000082 +S315E0642CB0007F0000000000000000000000005C00EF +S315E0642CC00028292F2A373839343536313233302ED5 +S315E0642CD00D00000000000000000000000000001B82 +S315E0642CE0313233343536373839302D3D0809E8E446 +S315E0642CF0E2A8ABE79FE5E6A75B5D0D00E1A99BADC6 +S315E0642D009AE3A5A1A23B276000239DAEAFE999A40F +S315E0642D10A32C2E2F0000002000000000000000001D +S315E0642D2000000000000000002D0000002B00000001 +S315E0642D30007F0000000000000000000000005C006E +S315E0642D400028292F2A373839343536313233302E54 +S315E0642D500D00000000000000000000000000001B01 +S315E0642D602122F924255E262A28295F2B0809F2AA5E +S315E0642D70EB9092EF87EDEE8F7B7D0D00EA91839485 +S315E0642D8082EC8D898A3A40FF007E859596F0818C47 +S315E0642D908B3C3E3F00000020000000000000000085 +S315E0642DA000000000000000002D0000002B00000081 +S315E0642DB0007F0000000000000000000000007C00CE +S315E0642DC00028292F2A373839343536313233302ED4 +S315E0642DD00D00000000000000000000000000001B81 +S315E0642DE0313233343536373839302D3D0809F1FB25 +S315E0642DF0EB9092EF87EDEE8F5B5D0D00EA91839445 +S315E0642E0082EC8D898A3B27600023859596F0818CD8 +S315E0642E108B2C2E2F00000020000000000000000034 +S315E0642E2000000000000000002D0000002B00000000 +S315E0642E30007F0000000000000000000000005C006D +S315E0642E400028292F2A373839343536313233302E53 +S315E0642E500D0000000000000000000000000000E437 +S315E0642E602E7A00E42EFA00E42F7A00E42FFA00E4E6 +S315E0642E70307A00E430FA00000000001B313233346B +S315E0642E803536373839302D3D08097177657274798E +S315E0642E9075696F705B5D0D006173646667686A6B24 +S315E0642EA06C3B2760005C7A786376626E6D2C2E2FBD +S315E0642EB000000020000000000000000000000000A8 +S315E0642EC0000000002D0000002B000000007F0000E1 +S315E0642ED00000000000000000000000000028292F28 +S315E0642EE02A373839343536313233302E0D00000026 +S315E0642EF000000000000000000000001B21402324C5 +S315E0642F00255E262A28295F2B0809515745525459CC +S315E0642F1055494F507B7D0D004153444647484A4BE3 +S315E0642F204C3A227E007C5A584356424E4D3C3E3FD4 +S315E0642F300000002000000000000000000000000027 +S315E0642F40003738002D3400362B003200307F000025 +S315E0642F500000000000000000000000000028292FA7 +S315E0642F602A373839343536313233302E0D000000A5 +S315E0642F7000000000000000000000001B3132333422 +S315E0642F803536373839302D3D08095157455254594D +S315E0642F9055494F505B5D0D004153444647484A4BA3 +S315E0642FA04C3B2760005C5A584356424E4D2C2E2FBC +S315E0642FB000000020000000000000000000000000A7 +S315E0642FC0000000002D0000002B000000007F0000E0 +S315E0642FD00000000000000000000000000028292F27 +S315E0642FE02A373839343536313233302E0D00000025 +S315E0642FF000000000000000000000001B232D2F22CB +S315E06430003A2C2E5F3F25213B0809E9F6F3EAE5ED24 +S315E0643010E3F8F9E7F5FA0D00F4FBE2E0EFF0EEEB46 +S315E0643020E4E6FD29003CFFF7F1ECE8F2FCE1FEB0F2 +S315E06430300000002000000000000000000000000026 +S315E0643040000000002D0000002B000000007F00005F +S315E0643050000000000000000000003C000028292F6A +S315E06430602A373839343536313233302E0D000000A4 +S315E064307000000000000000000000001B3132333421 +S315E06430803536373839302F5CBC09C9D6D3CAC5CD95 +S315E0643090C3D8D9C7D5DA0D00D4DBC2C0CFD0CECB86 +S315E06430A0C4C6DD28007CDFD7D1CCC8D2DCC1DEB0B3 +S315E06430B000000020000000000000000000000000A6 +S315E06430C0000000002D0000002B000000007F0000DF +S315E06430D0000000000000000000003E000028292FE8 +S315E06430E02A373839343536313233302E0D00000024 +S315E06430F000000000000000000000001B31323334A1 +S315E06431003536373839303F660809C9D6D3CAC5CDAE +S315E0643110C3D8D9C7D5DA0D00D4DBC2C0CFD0CECB05 +S315E0643120C4C6DD29003CDFD7D1CCC8D2DCC1DEB071 +S315E06431300000002000000000000000000000000025 +S315E0643140000000002D0000002B000000007F00005E +S315E0643150000000000000000000003C000028292F69 +S315E06431602A373839343536313233302E0D000000A3 +S315E06431700000000000000000000000E4319600E476 +S315E0643180321600E4329600E4331600E4332B000092 +S315E0643190A6A300000000001B3132333435363738DD +S315E06431A03930275E080971776572747A75696F706C +S315E06431B081B90D006173646667686A6B6C94842494 +S315E06431C0002479786376626E6D2C2E2D00000020E3 +S315E06431D000000000000000000000000000000000A5 +S315E06431E02D0000002B000000007F000000000000BE +S315E06431F00000000000003C000028292F2A373839F7 +S315E0643200343536313233302E0D00000000000000D4 +S315E0643210000000000000001B2B222A8725262F28A9 +S315E0643220293D3F60080951574552545A55494F5014 +S315E06432308A210D004153444647484A4B4C82859C5B +S315E0643240009C59584356424E4D3B3A5F000000207D +S315E064325000000000000000000000000000373800B5 +S315E06432602D3400362B003200307F00000000000071 +S315E06432700000000000003E000028292F2A37383974 +S315E0643280343536313233302E0D0000000000000054 +S315E0643290000000000000001B313233343536373825 +S315E06432A03930275E080951574552545A55494F50AB +S315E06432B081B90D004153444647484A4B4C948424B3 +S315E06432C0002359584356424E4D2C2E2D00000020C3 +S315E06432D000000000000000000000000000000000A4 +S315E06432E02D0000002B000000007F000000000000BD +S315E06432F000000000000023000028292F2A3738390F +S315E0643300343536313233302E0D00000000000000D3 +S315E0643310000000000000027C034004230D7E1A5B7B +S315E06433201B5D287B297D2B5C605C001A7B1B7D0022 +S315E064333000E4334C00E433CC00E4344C0000A6A44F +S315E06433400000A6A50000A6A600000000001B31321E +S315E064335033343536373839302D3D0809717765723F +S315E0643360747975696F705B5D0D0061736466676837 +S315E06433706A6B6C3B2760005C7A786376626E6D2C70 +S315E06433802E2F000000200000000000000000000076 +S315E06433900000000000002D0000002B000000007F0C +S315E06433A000000000000000000000000000000028AB +S315E06433B0292F2A373839343536313233302E0D00F9 +S315E06433C0000000000000000000000000001B214037 +S315E06433D02324255E262A28295F2B0809515745525E +S315E06433E0545955494F507B7D0D00415344464748F7 +S315E06433F04A4B4C3A227E007C5A584356424E4D3CE8 +S315E06434003E3F0000002000000000000000000000D5 +S315E06434100000003738002D3400362B003200307F50 +S315E0643420000000000000000000000000000000282A +S315E0643430292F2A373839343536313233302E0D0078 +S315E0643440000000000000000000000000001B3132B4 +S315E064345033343536373839302D3D080951574552BE +S315E0643460545955494F505B5D0D00415344464748B6 +S315E06434704A4B4C3B2760005C5A584356424E4D2CAF +S315E06434802E2F000000200000000000000000000075 +S315E06434900000000000002D0000002B000000007F0B +S315E06434A000000000000000000000000000000028AA +S315E06434B0292F2A373839343536313233302E0D00F8 +S315E06434C000000000000000000000000000E0A1E64B +S315E06434D000E0A1BC00E0A19200E0A17600E0A51CBA +S315E06434E000E09F8800E09F8800E0A16800E0A568AE +S315E06434F000E0A4E400E0A45000E0A54200E0A2FEFF +S315E064350000E0A04400E0A05200E0A42C00E0A26643 +S315E064351000E0A27A00E09F8800E09F8800E09F8850 +S315E064352000E0A08400E0A10200E0A3FA00E09F8846 +S315E064353000E09F8800E0A38600E0A06000E0A0725F +S315E064354000E09F8800E09F8800E09F8800E09F8815 +S315E064355000E0A0AE00E0A0C000E0A32400E0A17615 +S315E064356000E0A0E400E0A2D600E0A2D600E0A2D6A5 +S315E064357000E0A0D200E0DC8E000000E0ADC4800094 +S315E064358000E0AD06810100E0AE20820000E0AD24FB +S315E0643590820100E0AD54830100E0AE3C000100E04E +S315E06435A0AD84800000E0ADE8800000E0AE9C81027E +S315E06435B000E0B016800200E0ABE2800000E0C04EBE +S315E06435C0000000E0C04E000000E0EEFC000100E018 +S315E06435D0C04E000000E0ABFA810000E0AC16830068 +S315E06435E000E0AC32820000E0AC4A820000E0BF5CFE +S315E06435F0000400E0C04E000000E0C04E000000E0C1 +S315E0643600C04E000000E0C04E000000E0EF30000075 +S315E064361000E0EEEE000200E00D10000200E0C04EB5 +S315E0643620000000E0C04E000000E0C04E000000E094 +S315E0643630C04E000000E0C04E000000E0C04E000056 +S315E064364000E0C04E000000E0C04E000000E0C04E66 +S315E0643650000000E0C04E000000E0C04E000000E064 +S315E0643660C04E000000E0C04E000000E0C04E000026 +S315E064367000E0F43E000000E0F45C000100E0F4D415 +S315E0643680000000E0F4EE000100E0C04E000000E05F +S315E0643690EEE2000000E0C048000000E0DC960003D3 +S315E06436A000E0C04E000000E0C04E000000E0C04E06 +S315E06436B0000000E0C04E000000E0CD74000300E0CE +S315E06436C0C04E000000E0C04E000000E0E258000298 +S315E06436D000E0E934000200E0E812000200E0BC2207 +S315E06436E0000300E0B5BE000300E0B760000100E05F +S315E06436F0D3BA820500E0D404820500E0B942000250 +S315E064370000E0D30C810400E0EE04000400E0BE1C9B +S315E0643710000300E0B3EC000200E0B390000200E0D6 +S315E0643720E14A000300E0BF2A000200E0BD24000293 +S315E064373000E0BD80000500E0D732000700E0DBAAC8 +S315E0643740000100E0C04E000000E0ED42000300E04E +S315E0643750EA6A000000E0C04E000000E0C04E0000EF +S315E064376000E0C04E000000E0C04E000000E0C04E45 +S315E0643770000000E0C04E000000E0EB9E000500E0C3 +S315E0643780DFC60004FFFFFFFF2E202020202020203C +S315E0643790202020000000000000000000000000007F +S315E06437A000E437C000E437C800E437D000E437D833 +S315E06437B000E437E000E437E800E437F000000000B6 +S315E06437C000E0FA6800E437F800E0FA6B00E447FCEE +S315E06437D000E0FA6E00E4580000E0FA7100E4680480 +S315E06437E000E0FA7400E4780800E0FA7700E4880C14 +S315E06437F000E0FA7A00E4981000E4A81400000000FF +S315E0643800000000000000000000000000000000006E +S315E0643810000000000000000000E4A82000000000B2 +S315E064382000000000000000000000000000E4A82C96 +S315E0643830000000000000000000000000000000003E +S315E0643840000000000000000000000000000000002E +S315E0643850000000000000000000000000000000001E +S315E064386000E4A8380000000000E4A844000000007A +S315E064387000000000000000000000000000E4A86012 +S315E0643880000000000000000000E4A86C00000000F6 +S315E064389000E4A878000000000000000000000000DA +S315E06438A000000000000000000000000000000000CE +S315E06438B000000000000000000000000000000000BE +S315E06438C000000000000000000000000000000000AE +S315E06438D0000000000000000000000000000000009E +S315E06438E000000000000000000000000000E4A8847E +S315E06438F00000000000E4A890000000000000000062 +S315E064390000E4A89C00000000000000000000000045 +S315E064391000E4A8A800000000000000000000000029 +S315E06439200000000000E4A8B400000000000000000D +S315E0643930000000000000000000E4A8C800000000E9 +S315E06439400000000000E4A8D40000000000000000CD +S315E064395000000000000000000000000000E4A8E0B1 +S315E0643960000000000000000000000000000000000D +S315E064397000000000000000000000000000000000FD +S315E064398000000000000000000000000000000000ED +S315E0643990000000000000000000E4A8EC0000000065 +S315E06439A0000000000000000000E4A8F80000000049 +S315E06439B000000000000000000000000000000000BD +S315E06439C000000000000000000000000000000000AD +S315E06439D000000000000000000000000000E4A9040C +S315E06439E0000000000000000000000000000000008D +S315E06439F0000000000000000000000000000000007D +S315E0643A0000E4A918000000000000000000000000C7 +S315E0643A10000000000000000000E4A92400000000AB +S315E0643A20000000000000000000000000000000004C +S315E0643A300000000000E4A93000E4A93C00000000B6 +S315E0643A4000E4A94800000000000000000000000057 +S315E0643A50000000000000000000000000000000001C +S315E0643A60000000000000000000000000000000000C +S315E0643A7000E4A95400E4A96000000000000000002E +S315E0643A8000000000000000000000000000000000EC +S315E0643A900000000000E4A96C0000000000000000E3 +S315E0643AA000000000000000000000000000000000CC +S315E0643AB000000000000000000000000000000000BC +S315E0643AC000000000000000000000000000000000AC +S315E0643AD0000000000000000000000000000000009C +S315E0643AE0000000000000000000000000000000008C +S315E0643AF000000000000000000000000000E4A97877 +S315E0643B00000000000000000000000000000000006B +S315E0643B1000E4A9840000000000000000000000004A +S315E0643B20000000000000000000000000000000004B +S315E0643B300000000000E4A99000000000000000001E +S315E0643B4000E4A99C00000000000000000000000002 +S315E0643B5000E4A9A8000000000000000000000000E6 +S315E0643B60000000000000000000000000000000000B +S315E0643B7000000000000000000000000000000000FB +S315E0643B8000000000000000000000000000E4A9B4AA +S315E0643B9000000000000000000000000000E4A9C08E +S315E0643BA000000000000000000000000000000000CB +S315E0643BB0000000000000000000E4A9CC0000000062 +S315E0643BC000000000000000000000000000000000AB +S315E0643BD000E4A9D800000000000000000000000036 +S315E0643BE00000000000E4A9E400000000000000001A +S315E0643BF000E4A9F8000000000000000000000000F6 +S315E0643C00000000000000000000E4AA0400000000D8 +S315E0643C10000000000000000000000000000000005A +S315E0643C200000000000E4AA1000E4AA1C00E4AA284C +S315E0643C30000000000000000000E4AA340000000078 +S315E0643C4000000000000000000000000000E4AA405C +S315E0643C50000000000000000000000000000000001A +S315E0643C6000000000000000000000000000E4AA4C30 +S315E0643C7000000000000000000000000000E4AA5814 +S315E0643C800000000000E4AA640000000000000000F8 +S315E0643C900000000000E4AA780000000000000000D4 +S315E0643CA00000000000E4AA840000000000E4AA909A +S315E0643CB000E4AA9C00000000000000000000000090 +S315E0643CC000000000000000000000000000000000AA +S315E0643CD0000000000000000000000000000000009A +S315E0643CE0000000000000000000000000000000008A +S315E0643CF0000000000000000000000000000000007A +S315E0643D000000000000000000000000000000000069 +S315E0643D100000000000000000000000000000000059 +S315E0643D20000000000000000000E4AAA80000000013 +S315E0643D300000000000000000000000000000000039 +S315E0643D400000000000000000000000000000000029 +S315E0643D500000000000000000000000000000000019 +S315E0643D600000000000000000000000000000000009 +S315E0643D7000000000000000000000000000000000F9 +S315E0643D8000000000000000000000000000E4AABC9F +S315E0643D9000000000000000000000000000E4AAC883 +S315E0643DA000000000000000000000000000000000C9 +S315E0643DB000000000000000000000000000000000B9 +S315E0643DC000000000000000000000000000000000A9 +S315E0643DD00000000000E4AAD4000000000000000037 +S315E0643DE00000000000000000000000000000000089 +S315E0643DF00000000000000000000000000000000079 +S315E0643E000000000000000000000000000000000068 +S315E0643E1000E4AAE000E4AAEC000000000000000070 +S315E0643E20000000000000000000E4AAF800000000C2 +S315E0643E300000000000000000000000000000000038 +S315E0643E400000000000E4AB0400E4AB1800000000EE +S315E0643E500000000000000000000000000000000018 +S315E0643E600000000000000000000000000000000008 +S315E0643E7000E4AB2400000000000000000000000045 +S315E0643E800000000000E4AB30000000000000000029 +S315E0643E9000000000000000000000000000000000D8 +S315E0643EA000000000000000000000000000000000C8 +S315E0643EB000000000000000000000000000000000B8 +S315E0643EC00000000000E4AB3C0000000000000000DD +S315E0643ED00000000000E4AB480000000000000000C1 +S315E0643EE000000000000000000000000000E4AB54A5 +S315E0643EF00000000000E4AB6000E4AB6C000000008E +S315E0643F0000E4AB7800000000000000000000000060 +S315E0643F100000000000000000000000000000000057 +S315E0643F200000000000000000000000000000000047 +S315E0643F300000000000000000000000000000000037 +S315E0643F400000000000000000000000000000000027 +S315E0643F500000000000000000000000000000000017 +S315E0643F600000000000E4AB840000000000000000F4 +S315E0643F7000E4AB90000000000000000000000000D8 +S315E0643F8000000000000000000000000000000000E7 +S315E0643F9000000000000000000000000000000000D7 +S315E0643FA000000000000000000000000000000000C7 +S315E0643FB000000000000000000000000000000000B7 +S315E0643FC000000000000000000000000000000000A7 +S315E0643FD00000000000000000000000000000000097 +S315E0643FE00000000000000000000000000000000087 +S315E0643FF00000000000000000000000000000000077 +S315E06440000000000000000000000000000000000066 +S315E06440100000000000000000000000000000000056 +S315E064402000E4AB9C0000000000000000000000001B +S315E06440300000000000000000000000000000000036 +S315E0644040000000000000000000E4ABA800000000EF +S315E06440500000000000000000000000000000000016 +S315E06440600000000000000000000000000000000006 +S315E064407000000000000000000000000000000000F6 +S315E064408000000000000000000000000000000000E6 +S315E064409000000000000000000000000000E4ABB493 +S315E06440A000000000000000000000000000000000C6 +S315E06440B000000000000000000000000000000000B6 +S315E06440C000E4ABC80000000000000000000000004F +S315E06440D00000000000000000000000000000000096 +S315E06440E00000000000000000000000000000000086 +S315E06440F000000000000000000000000000E4ABD413 +S315E06441000000000000000000000000000000000065 +S315E064411000000000000000000000000000E4ABE8DE +S315E06441200000000000E4ABF400E4AC000000000032 +S315E064413000000000000000000000000000E4AC0C99 +S315E064414000000000000000000000000000E4AC187D +S315E06441500000000000000000000000000000000015 +S315E06441600000000000E4AC24000000000000000051 +S315E064417000E4AC3000E4AC44000000000000000061 +S315E06441800000000000E4AC50000000000000000005 +S315E06441900000000000E4AC5C0000000000000000E9 +S315E06441A0000000000000000000E4AC6800E4AC7CC1 +S315E06441B000E4AC880000000000000000000000009D +S315E06441C0000000000000000000E4AC940000000081 +S315E06441D000000000000000000000000000E4ACA065 +S315E06441E000E4ACAC00E4ACB8000000000000000001 +S315E06441F00000000000000000000000000000000075 +S315E06442000000000000000000000000000000000064 +S315E06442100000000000000000000000000000000054 +S315E064422000E4ACC4000000000000000000000000F0 +S315E06442300000000000E4ACD000E4ACDC0000000068 +S315E064424000E4ACE8000000000000000000000000AC +S315E06442500000000000000000000000000000000014 +S315E06442600000000000000000000000000000000004 +S315E06442700000000000E4ACF40000000000E4AD00DF +S315E064428000000000000000000000000000000000E4 +S315E064429000000000000000000000000000000000D4 +S315E06442A000E4AD0C0000000000E4AD18000000007E +S315E06442B000000000000000000000000000000000B4 +S315E06442C000000000000000000000000000000000A4 +S315E06442D00000000000000000000000000000000094 +S315E06442E00000000000000000000000000000000084 +S315E06442F000E4AD24000000000000000000000000BF +S315E064430000E4AD30000000000000000000E4AD3CD5 +S315E06443100000000000000000000000000000000053 +S315E06443200000000000000000000000000000000043 +S315E064433000E4AD5000000000000000000000000052 +S315E06443400000000000000000000000000000000023 +S315E064435000000000000000000000000000E4AD5C26 +S315E06443600000000000000000000000000000000003 +S315E0644370000000000000000000E4AD6800000000FA +S315E06443800000000000E4AD740000000000000000DE +S315E064439000000000000000000000000000000000D3 +S315E06443A0000000000000000000E4AD8000000000B2 +S315E06443B000000000000000000000000000000000B3 +S315E06443C000E4AD8C00000000000000000000000086 +S315E06443D0000000000000000000E4AD98000000006A +S315E06443E00000000000000000000000000000000083 +S315E06443F0000000000000000000E4ADA4000000003E +S315E06444000000000000000000000000000000000062 +S315E06444100000000000000000000000000000000052 +S315E06444200000000000000000000000000000000042 +S315E064443000000000000000000000000000E4ADB0F1 +S315E06444400000000000000000000000000000000022 +S315E0644450000000000000000000E4ADC400000000BD +S315E06444600000000000000000000000000000000002 +S315E064447000000000000000000000000000E4ADD091 +S315E06444800000000000E4ADDC00E4ADE800000000FC +S315E064449000000000000000000000000000000000D2 +S315E06444A0000000000000000000E4ADF4000000003D +S315E06444B000000000000000000000000000E4AE0020 +S315E06444C0000000000000000000E4AE1400000000FC +S315E06444D00000000000000000000000000000000092 +S315E06444E00000000000000000000000000000000082 +S315E06444F00000000000000000000000000000000072 +S315E064450000E4AE2000E4AE2C0000000000E4AE3827 +S315E06445100000000000000000000000000000000051 +S315E06445200000000000E4AE4400E4AE500000000089 +S315E06445300000000000E4AE5C000000000000000043 +S315E06445400000000000E4AE68000000000000000027 +S315E06445500000000000000000000000000000000011 +S315E064456000E4AE7400E4AE800000000000000000E9 +S315E0644570000000000000000000E4AE8C00000000D3 +S315E064458000E4AE98000000000000000000000000B7 +S315E064459000000000000000000000000000000000D1 +S315E06445A000000000000000000000000000000000C1 +S315E06445B000E4AEA40000000000000000000000007B +S315E06445C000E4AEB00000000000000000000000005F +S315E06445D00000000000000000000000000000000091 +S315E06445E00000000000000000000000000000000081 +S315E06445F00000000000000000000000000000000071 +S315E06446000000000000000000000000000000000060 +S315E06446100000000000000000000000000000000050 +S315E06446200000000000000000000000000000000040 +S315E06446300000000000000000000000000000000030 +S315E06446400000000000000000000000000000000020 +S315E06446500000000000000000000000000000000010 +S315E06446600000000000000000000000000000000000 +S315E064467000000000000000000000000000000000F0 +S315E064468000E4AEBC00000000000000000000000092 +S315E064469000E4AEC800000000000000000000000076 +S315E06446A000000000000000000000000000000000C0 +S315E06446B000000000000000000000000000000000B0 +S315E06446C00000000000E4AED400000000000000003A +S315E06446D00000000000000000000000000000000090 +S315E06446E00000000000000000000000000000000080 +S315E06446F00000000000E4AEE00000000000000000FE +S315E06447000000000000E4AEEC00E4AEF80000000057 +S315E0644710000000000000000000000000000000004F +S315E0644720000000000000000000000000000000003F +S315E064473000E4AF040000000000E4AF1000000000F5 +S315E0644740000000000000000000000000000000001F +S315E0644750000000000000000000E4AF1C0000000060 +S315E064476000000000000000000000000000000000FF +S315E06447700000000000E4AF28000000000000000034 +S315E064478000000000000000000000000000000000DF +S315E064479000E4AF34000000000000000000E4AF4035 +S315E06447A00000000000E4AF4C0000000000000000E0 +S315E06447B000000000000000000000000000000000AF +S315E06447C00000000000E4AF580000000000000000B4 +S315E06447D000000000000000000000000000E4AF6498 +S315E06447E00000000000E4AF7000000000000000007C +S315E06447F000000000000000000000000000E4AF7C60 +S315E0644800000000000000000000000000000000005E +S315E064481000000000000000000000000000E4AF8833 +S315E0644820000000000000000000000000000000003E +S315E064483000E4AF9400000000000000000000000007 +S315E0644840000000000000000000000000000000001E +S315E0644850000000000000000000000000000000000E +S315E06448600000000000E4AFA00000000000E4AFAC8C +S315E064487000000000000000000000000000000000EE +S315E064488000E4AFC8000000000000000000E4AFD41C +S315E06448900000000000E4AFE000000000000000005B +S315E06448A000000000000000000000000000000000BE +S315E06448B000000000000000000000000000000000AE +S315E06448C0000000000000000000000000000000009E +S315E06448D0000000000000000000000000000000008E +S315E06448E0000000000000000000000000000000007E +S315E06448F000E4AFEC0000000000E4AFF80000000064 +S315E06449000000000000E4B0040000000000000000C5 +S315E06449100000000000E4B0100000000000000000A9 +S315E0644920000000000000000000E4B01C000000008D +S315E064493000000000000000000000000000E4B03069 +S315E0644940000000000000000000E4B03C000000004D +S315E0644950000000000000000000000000000000000D +S315E064496000E4B04800000000000000000000000021 +S315E064497000000000000000000000000000000000ED +S315E064498000000000000000000000000000000000DD +S315E064499000000000000000000000000000E4B054E5 +S315E06449A000000000000000000000000000E4B060C9 +S315E06449B000000000000000000000000000000000AD +S315E06449C0000000000000000000000000000000009D +S315E06449D0000000000000000000000000000000008D +S315E06449E000E4B06C0000000000000000000000007D +S315E06449F0000000000000000000000000000000006D +S315E0644A000000000000E4B080000000000000000048 +S315E0644A1000000000000000000000000000E4B08C2C +S315E0644A20000000000000000000000000000000003C +S315E0644A30000000000000000000E4B09800E4B0A4C8 +S315E0644A400000000000E4B0B00000000000000000D8 +S315E0644A50000000000000000000000000000000000C +S315E0644A6000000000000000000000000000000000FC +S315E0644A700000000000E4B0BC00E4B0C80000000040 +S315E0644A8000000000000000000000000000000000DC +S315E0644A90000000000000000000E4B0D40000000064 +S315E0644AA000000000000000000000000000000000BC +S315E0644AB000000000000000000000000000000000AC +S315E0644AC0000000000000000000000000000000009C +S315E0644AD0000000000000000000000000000000008C +S315E0644AE0000000000000000000000000000000007C +S315E0644AF0000000000000000000000000000000006C +S315E0644B0000E4B0E0000000000000000000000000E7 +S315E0644B100000000000E4B0EC0000000000000000CB +S315E0644B20000000000000000000000000000000003B +S315E0644B30000000000000000000E4B0F8000000009F +S315E0644B400000000000E4B104000000000000000082 +S315E0644B500000000000E4B110000000000000000066 +S315E0644B6000000000000000000000000000000000FB +S315E0644B7000000000000000000000000000000000EB +S315E0644B8000000000000000000000000000000000DB +S315E0644B9000E4B11C0000000000000000000000001A +S315E0644BA000E4B128000000000000000000000000FE +S315E0644BB000000000000000000000000000E4B134E2 +S315E0644BC0000000000000000000000000000000009B +S315E0644BD00000000000E4B1400000000000000000B6 +S315E0644BE0000000000000000000E4B14C000000009A +S315E0644BF00000000000E4B160000000000000000076 +S315E0644C0000000000000000000000000000E4B16C59 +S315E0644C10000000000000000000000000000000004A +S315E0644C20000000000000000000E4B17800E4B18414 +S315E0644C3000E4B190000000000000000000E4B19CD4 +S315E0644C40000000000000000000000000000000001A +S315E0644C5000E4B1A8000000000000000000000000CD +S315E0644C6000000000000000000000000000000000FA +S315E0644C7000E4B1B4000000000000000000000000A1 +S315E0644C8000E4B1C00000000000E4B1CC0000000024 +S315E0644C90000000000000000000E4B1E00000000055 +S315E0644CA0000000000000000000E4B1EC0000000039 +S315E0644CB000E4B1F800E4B204000000000000000083 +S315E0644CC0000000000000000000000000000000009A +S315E0644CD0000000000000000000000000000000008A +S315E0644CE0000000000000000000000000000000007A +S315E0644CF0000000000000000000000000000000006A +S315E0644D000000000000000000000000000000000059 +S315E0644D100000000000000000000000000000000049 +S315E0644D2000000000000000000000000000E4B21093 +S315E0644D300000000000000000000000000000000029 +S315E0644D400000000000000000000000000000000019 +S315E0644D500000000000000000000000000000000009 +S315E0644D6000000000000000000000000000000000F9 +S315E0644D7000000000000000000000000000000000E9 +S315E0644D8000000000000000000000000000000000D9 +S315E0644D9000E4B2240000000000000000000000000F +S315E0644DA000E4B230000000000000000000000000F3 +S315E0644DB000000000000000000000000000000000A9 +S315E0644DC00000000000000000000000000000000099 +S315E0644DD0000000000000000000E4B23C00000000B7 +S315E0644DE00000000000000000000000000000000079 +S315E0644DF00000000000000000000000000000000069 +S315E0644E000000000000000000000000000000000058 +S315E0644E100000000000E4B24800E4B2540000000080 +S315E0644E2000000000000000000000000000E4B26042 +S315E0644E300000000000000000000000000000000028 +S315E0644E40000000000000000000E4B26C00E4B28000 +S315E0644E500000000000000000000000000000000008 +S315E0644E6000000000000000000000000000000000F8 +S315E0644E700000000000E4B28C0000000000000000C6 +S315E0644E80000000000000000000E4B29800000000AA +S315E0644E9000000000000000000000000000000000C8 +S315E0644EA000000000000000000000000000000000B8 +S315E0644EB000000000000000000000000000000000A8 +S315E0644EC0000000000000000000E4B2A4000000005E +S315E0644ED0000000000000000000E4B2B00000000042 +S315E0644EE00000000000000000000000000000000078 +S315E0644EF000E4B2BC0000000000E4B2C800E4B2D44E +S315E0644F000000000000E4B2E00000000000000000E1 +S315E0644F100000000000000000000000000000000047 +S315E0644F200000000000000000000000000000000037 +S315E0644F300000000000000000000000000000000027 +S315E0644F400000000000000000000000000000000017 +S315E0644F500000000000000000000000000000000007 +S315E0644F60000000000000000000E4B2EC0000000075 +S315E0644F700000000000E4B2F8000000000000000059 +S315E0644F8000000000000000000000000000000000D7 +S315E0644F9000000000000000000000000000000000C7 +S315E0644FA000000000000000000000000000000000B7 +S315E0644FB000000000000000000000000000000000A7 +S315E0644FC00000000000000000000000000000000097 +S315E0644FD00000000000000000000000000000000087 +S315E0644FE00000000000000000000000000000000077 +S315E0644FF00000000000000000000000000000000067 +S315E06450000000000000000000000000000000000056 +S315E06450100000000000000000000000000000000046 +S315E06450200000000000E4B30400000000000000009B +S315E06450300000000000000000000000000000000026 +S315E064504000000000000000000000000000E4B3106F +S315E06450500000000000000000000000000000000006 +S315E064506000000000000000000000000000000000F6 +S315E064507000000000000000000000000000000000E6 +S315E064508000000000000000000000000000000000D6 +S315E064509000000000000000000000000000000000C6 +S315E06450A000E4B31C00000000000000000000000003 +S315E06450B000000000000000000000000000000000A6 +S315E06450C00000000000E4B3300000000000000000CF +S315E06450D00000000000000000000000000000000086 +S315E06450E00000000000000000000000000000000076 +S315E06450F00000000000000000000000000000000066 +S315E064510000E4B33C00000000000000000000000082 +S315E06451100000000000000000000000000000000045 +S315E064512000E4B3500000000000E4B35C00E4B3685C +S315E06451300000000000000000000000000000000025 +S315E064514000E4B3740000000000000000000000000A +S315E064515000E4B380000000000000000000000000EE +S315E0645160000000000000000000E4B38C00000000D2 +S315E06451700000000000E4B39800E4B3AC0000000073 +S315E0645180000000000000000000E4B3B80000000086 +S315E0645190000000000000000000E4B3C4000000006A +S315E06451A000000000000000000000000000E4B3D04E +S315E06451B000E4B3E400E4B3F00000000000000000A3 +S315E06451C000000000000000000000000000E4B3FC02 +S315E06451D00000000000000000000000000000000085 +S315E06451E000E4B40800E4B41400E4B4200000000071 +S315E06451F00000000000000000000000000000000065 +S315E06452000000000000000000000000000000000054 +S315E06452100000000000000000000000000000000044 +S315E06452200000000000E4B42C000000000000000070 +S315E0645230000000000000000000E4B43800E4B44478 +S315E06452400000000000E4B45000000000000000002C +S315E06452500000000000000000000000000000000004 +S315E064526000000000000000000000000000000000F4 +S315E0645270000000000000000000E4B45C00000000F0 +S315E064528000E4B468000000000000000000000000D4 +S315E064529000000000000000000000000000000000C4 +S315E06452A00000000000E4B4740000000000E4B48090 +S315E06452B000000000000000000000000000000000A4 +S315E06452C00000000000000000000000000000000094 +S315E06452D00000000000000000000000000000000084 +S315E06452E00000000000000000000000000000000074 +S315E06452F00000000000E4B48C000000000000000040 +S315E06453000000000000E4B498000000000000000023 +S315E064531000E4B4A400000000000000000000000007 +S315E06453200000000000000000000000000000000033 +S315E06453300000000000E4B4B80000000000000000D3 +S315E06453400000000000000000000000000000000013 +S315E06453500000000000000000000000000000000003 +S315E064536000E4B4C400000000000000000000000097 +S315E064537000000000000000000000000000E4B4D07B +S315E0645380000000000000000000E4B4DC000000005F +S315E064539000000000000000000000000000000000C3 +S315E06453A000000000000000000000000000E4B4E833 +S315E06453B000000000000000000000000000000000A3 +S315E06453C00000000000E4B4F4000000000000000007 +S315E06453D000000000000000000000000000E4B500EA +S315E06453E00000000000000000000000000000000073 +S315E06453F000000000000000000000000000E4B50CBE +S315E06454000000000000000000000000000000000052 +S315E06454100000000000000000000000000000000042 +S315E06454200000000000000000000000000000000032 +S315E06454300000000000000000000000000000000022 +S315E064544000E4B51800000000000000000000000061 +S315E064545000000000000000000000000000E4B52C3D +S315E064546000000000000000000000000000000000F2 +S315E064547000000000000000000000000000000000E2 +S315E064548000E4B5380000000000E4B54400E4B5503B +S315E064549000000000000000000000000000000000C2 +S315E06454A000000000000000000000000000E4B55CBD +S315E06454B000000000000000000000000000000000A2 +S315E06454C000E4B56800000000000000000000000091 +S315E06454D00000000000000000000000000000000082 +S315E06454E00000000000000000000000000000000072 +S315E06454F00000000000000000000000000000000062 +S315E06455000000000000E4B57C00E4B588000000001B +S315E064551000E4B59400000000000000000000000014 +S315E0645520000000000000000000E4B5A000E4B5ACB3 +S315E0645530000000000000000000E4B5B800000000D0 +S315E0645540000000000000000000E4B5C400000000B4 +S315E06455500000000000000000000000000000000001 +S315E06455600000000000E4B5D000E4B5DC0000000013 +S315E064557000000000000000000000000000E4B5E860 +S315E06455800000000000E4B5F4000000000000000044 +S315E064559000000000000000000000000000000000C1 +S315E06455A000000000000000000000000000000000B1 +S315E06455B00000000000E4B600000000000000000007 +S315E06455C00000000000E4B60C0000000000000000EB +S315E06455D00000000000000000000000000000000081 +S315E06455E00000000000000000000000000000000071 +S315E06455F00000000000000000000000000000000061 +S315E06456000000000000000000000000000000000050 +S315E06456100000000000000000000000000000000040 +S315E06456200000000000000000000000000000000030 +S315E06456300000000000000000000000000000000020 +S315E06456400000000000000000000000000000000010 +S315E06456500000000000000000000000000000000000 +S315E064566000000000000000000000000000000000F0 +S315E064567000000000000000000000000000000000E0 +S315E06456800000000000E4B61800000000000000001E +S315E06456900000000000E4B624000000000000000002 +S315E06456A000000000000000000000000000000000B0 +S315E06456B000000000000000000000000000000000A0 +S315E06456C0000000000000000000E4B63000000000C6 +S315E06456D00000000000000000000000000000000080 +S315E06456E00000000000000000000000000000000070 +S315E06456F0000000000000000000E4B63C000000008A +S315E0645700000000000000000000E4B64800E4B6547F +S315E0645710000000000000000000000000000000003F +S315E0645720000000000000000000000000000000002F +S315E06457300000000000E4B6600000000000E4B66C1F +S315E0645740000000000000000000000000000000000F +S315E064575000000000000000000000000000E4B678ED +S315E064576000000000000000000000000000000000EF +S315E0645770000000000000000000E4B68400000000C1 +S315E064578000000000000000000000000000000000CF +S315E06457900000000000E4B690000000000000000095 +S315E06457A000E4B69C0000000000E4B6A80000000037 +S315E06457B0000000000000000000000000000000009F +S315E06457C0000000000000000000E4B6B40000000041 +S315E06457D0000000000000000000000000000000007F +S315E06457E000E4B6C00000000000E4B6CC00000000AF +S315E06457F0000000000000000000000000000000005F +S315E064580000E4B6D8000000000000000000000000DC +S315E0645810000000000000000000000000000000003E +S315E064582000E4B6E4000000000000000000000000B0 +S315E06458300000000000E4B6F0000000000000000094 +S315E0645840000000000000000000000000000000000E +S315E064585000000000000000000000000000000000FE +S315E0645860000000000000000000E4B6FC0000000058 +S315E064587000E4B7080000000000000000000000003B +S315E06458800000000000E4B72400000000000000000F +S315E064589000E4B7300000000000E4B73C000000001C +S315E06458A000000000000000000000000000000000AE +S315E06458B0000000000000000000000000000000009E +S315E06458C0000000000000000000000000000000008E +S315E06458D0000000000000000000000000000000007E +S315E06458E0000000000000000000000000000000006E +S315E06458F00000000000E4B7480000000000E4B7548C +S315E0645900000000000000000000E4B7600000000052 +S315E0645910000000000000000000E4B76C0000000036 +S315E064592000000000000000000000000000E4B7781A +S315E0645930000000000000000000000000000000001D +S315E064594000E4B78C000000000000000000E4B798B3 +S315E064595000000000000000000000000000000000FD +S315E06459600000000000E4B7A40000000000000000AE +S315E064597000000000000000000000000000000000DD +S315E064598000000000000000000000000000000000CD +S315E064599000000000000000000000000000000000BD +S315E06459A000E4B7B000000000000000000000000062 +S315E06459B000E4B7BC00000000000000000000000046 +S315E06459C0000000000000000000000000000000008D +S315E06459D0000000000000000000000000000000007D +S315E06459E00000000000E4B7C800000000000000000A +S315E06459F0000000000000000000000000000000005D +S315E0645A00000000000000000000E4B7DC00000000D5 +S315E0645A10000000000000000000000000000000003C +S315E0645A2000E4B7E8000000000000000000000000A9 +S315E0645A3000000000000000000000000000E4B7F48D +S315E0645A4000E4B8000000000000E4B80C00000000C8 +S315E0645A5000000000000000000000000000000000FC +S315E0645A6000000000000000000000000000000000EC +S315E0645A70000000000000000000E4B81800E4B82468 +S315E0645A8000000000000000000000000000000000CC +S315E0645A9000000000000000000000000000E4B830F0 +S315E0645AA000000000000000000000000000000000AC +S315E0645AB0000000000000000000000000000000009C +S315E0645AC0000000000000000000000000000000008C +S315E0645AD0000000000000000000000000000000007C +S315E0645AE0000000000000000000000000000000006C +S315E0645AF0000000000000000000000000000000005C +S315E0645B000000000000E4B83C000000000000000073 +S315E0645B10000000000000000000E4B8480000000057 +S315E0645B20000000000000000000000000000000002B +S315E0645B3000000000000000000000000000E4B8542B +S315E0645B40000000000000000000E4B860000000000F +S315E0645B50000000000000000000E4B86C00000000F3 +S315E0645B6000000000000000000000000000000000EB +S315E0645B7000000000000000000000000000000000DB +S315E0645B8000000000000000000000000000000000CB +S315E0645B900000000000E4B8780000000000000000A7 +S315E0645BA00000000000E4B88400000000000000008B +S315E0645BB0000000000000000000000000000000009B +S315E0645BC000E4B8900000000000000000000000005F +S315E0645BD0000000000000000000E4B89C0000000043 +S315E0645BE000000000000000000000000000E4B8A827 +S315E0645BF0000000000000000000E4B8BC0000000003 +S315E0645C00000000000000000000000000000000004A +S315E0645C1000E4B8C8000000000000000000000000D6 +S315E0645C2000000000000000000000000000E4B8D4BA +S315E0645C3000E4B8E000E4B8EC000000000000000016 +S315E0645C4000E4B8F800000000000000000000000076 +S315E0645C500000000000E4B904000000000000000059 +S315E0645C6000000000000000000000000000000000EA +S315E0645C700000000000E4B91000000000000000002D +S315E0645C800000000000E4B91C0000000000E4B9284C +S315E0645C9000000000000000000000000000E4B93CE1 +S315E0645CA000000000000000000000000000E4B948C5 +S315E0645CB00000000000E4B95400E4B96000000000AC +S315E0645CC0000000000000000000000000000000008A +S315E0645CD0000000000000000000000000000000007A +S315E0645CE0000000000000000000000000000000006A +S315E0645CF0000000000000000000000000000000005A +S315E0645D000000000000000000000000000000000049 +S315E0645D100000000000000000000000000000000039 +S315E0645D200000000000000000000000000000000029 +S315E0645D3000E4B96C00000000000000000000000010 +S315E0645D400000000000000000000000000000000009 +S315E0645D5000000000000000000000000000000000F9 +S315E0645D6000000000000000000000000000000000E9 +S315E0645D7000000000000000000000000000000000D9 +S315E0645D8000000000000000000000000000000000C9 +S315E0645D900000000000E4B98000000000000000009C +S315E0645DA00000000000E4B98C000000000000000080 +S315E0645DB00000000000000000000000000000000099 +S315E0645DC00000000000000000000000000000000089 +S315E0645DD000000000000000000000000000E4B99844 +S315E0645DE00000000000000000000000000000000069 +S315E0645DF00000000000000000000000000000000059 +S315E0645E000000000000000000000000000000000048 +S315E0645E10000000000000000000E4B9A400E4B9B0AA +S315E0645E200000000000000000000000000000000028 +S315E0645E3000E4B9BC000000000000000000000000BF +S315E0645E4000000000000000000000000000E4B9C8A3 +S315E0645E5000E4B9DC0000000000000000000000007F +S315E0645E6000000000000000000000000000000000E8 +S315E0645E70000000000000000000E4B9E80000000053 +S315E0645E8000000000000000000000000000E4B9F437 +S315E0645E9000000000000000000000000000000000B8 +S315E0645EA000000000000000000000000000000000A8 +S315E0645EB00000000000000000000000000000000098 +S315E0645EC000000000000000000000000000E4BA00EA +S315E0645ED000000000000000000000000000E4BA0CCE +S315E0645EE00000000000000000000000000000000068 +S315E0645EF00000000000E4BA180000000000E4BA24E0 +S315E0645F0000E4BA300000000000E4BA3C000000009F +S315E0645F100000000000000000000000000000000037 +S315E0645F200000000000000000000000000000000027 +S315E0645F300000000000000000000000000000000017 +S315E0645F400000000000000000000000000000000007 +S315E0645F5000000000000000000000000000000000F7 +S315E0645F6000000000000000000000000000E4BA4801 +S315E0645F70000000000000000000E4BA5400000000E5 +S315E0645F8000000000000000000000000000000000C7 +S315E0645F9000000000000000000000000000000000B7 +S315E0645FA000000000000000000000000000000000A7 +S315E0645FB00000000000000000000000000000000097 +S315E0645FC00000000000000000000000000000000087 +S315E0645FD00000000000000000000000000000000077 +S315E0645FE00000000000000000000000000000000067 +S315E0645FF00000000000000000000000000000000057 +S315E06460000000000000000000000000000000000046 +S315E06460100000000000000000000000000000000036 +S315E0646020000000000000000000E4BA600000000028 +S315E06460300000000000000000000000000000000016 +S315E06460400000000000000000000000000000000006 +S315E064605000E4BA6C000000000000000000000000EC +S315E064606000000000000000000000000000000000E6 +S315E064607000000000000000000000000000000000D6 +S315E064608000000000000000000000000000000000C6 +S315E064609000000000000000000000000000000000B6 +S315E06460A00000000000E4BA78000000000000000090 +S315E06460B00000000000000000000000000000000096 +S315E06460C0000000000000000000E4BA8C000000005C +S315E06460D00000000000000000000000000000000076 +S315E06460E00000000000000000000000000000000066 +S315E06460F00000000000000000000000000000000056 +S315E06461000000000000E4BA9800000000000000000F +S315E06461100000000000000000000000000000000035 +S315E06461200000000000E4BAAC0000000000E4BAB885 +S315E064613000E4BAC4000000000000000000000000B3 +S315E06461400000000000E4BAD0000000000000000097 +S315E06461500000000000E4BADC00000000000000007B +S315E064616000000000000000000000000000E4BAE85F +S315E0646170000000000000000000E4BAF400E4BB089C +S315E064618000000000000000000000000000E4BB1412 +S315E064619000000000000000000000000000E4BB20F6 +S315E06461A000000000000000000000000000000000A5 +S315E06461B000E4BB2C00E4BB4000E4BB4C0000000000 +S315E06461C00000000000000000000000000000000085 +S315E06461D000E4BB580000000000000000000000007E +S315E06461E00000000000E4BB6400E4BB7000E4BB7C38 +S315E06461F00000000000000000000000000000000055 +S315E06462000000000000000000000000000000000044 +S315E06462100000000000000000000000000000000034 +S315E0646220000000000000000000E4BB8800000000FD +S315E064623000000000000000000000000000E4BB94E1 +S315E064624000E4BBA00000000000E4BBAC000000007A +S315E064625000000000000000000000000000000000F4 +S315E064626000000000000000000000000000000000E4 +S315E064627000000000000000000000000000E4BBB87D +S315E06462800000000000E4BBC4000000000000000061 +S315E064629000000000000000000000000000000000B4 +S315E06462A0000000000000000000E4BBD00000000035 +S315E06462B000E4BBDC00000000000000000000000019 +S315E06462C00000000000000000000000000000000084 +S315E06462D00000000000000000000000000000000074 +S315E06462E00000000000000000000000000000000064 +S315E06462F0000000000000000000E4BBE800000000CD +S315E0646300000000000000000000E4BBF400000000B0 +S315E06463100000000000E4BC00000000000000000093 +S315E06463200000000000000000000000000000000023 +S315E0646330000000000000000000E4BC14000000005F +S315E06463400000000000000000000000000000000003 +S315E064635000000000000000000000000000000000F3 +S315E06463600000000000E4BC20000000000000000023 +S315E064637000000000000000000000000000000000D3 +S315E064638000E4BC2C000000000000000000E4BC381F +S315E064639000000000000000000000000000000000B3 +S315E06463A000000000000000000000000000000000A3 +S315E06463B000E4BC44000000000000000000000000AF +S315E06463C0000000000000000000E4BC500000000093 +S315E06463D00000000000000000000000000000000073 +S315E06463E000E4BC5C00000000000000000000000067 +S315E06463F00000000000000000000000000000000053 +S315E064640000E4BC680000000000000000000000003A +S315E06464100000000000000000000000000000000032 +S315E06464200000000000000000000000000000000022 +S315E06464300000000000000000000000000000000012 +S315E06464400000000000E4BC740000000000000000EE +S315E064645000000000000000000000000000000000F2 +S315E064646000E4BC88000000000000000000000000BA +S315E064647000000000000000000000000000000000D2 +S315E06464800000000000E4BC940000000000E4BCA04E +S315E064649000E4BCAC00000000000000000000000066 +S315E06464A000000000000000000000000000000000A2 +S315E06464B000E4BCB80000000000000000000000003A +S315E06464C00000000000E4BCC400000000000000001E +S315E06464D00000000000000000000000000000000072 +S315E06464E00000000000000000000000000000000062 +S315E06464F00000000000000000000000000000000052 +S315E0646500000000000000000000E4BCD800E4BCE445 +S315E06465100000000000E4BCF00000000000000000A1 +S315E064652000000000000000000000000000E4BCFC85 +S315E064653000E4BD08000000000000000000E4BD14B3 +S315E064654000000000000000000000000000E4BD2040 +S315E064655000000000000000000000000000000000F1 +S315E0646560000000000000000000E4BD2C00E4BD383B +S315E064657000000000000000000000000000000000D1 +S315E064658000E4BD440000000000E4BD5000000000EB +S315E064659000000000000000000000000000000000B1 +S315E06465A000000000000000000000000000000000A1 +S315E06465B0000000000000000000E4BD5C0000000094 +S315E06465C0000000000000000000E4BD680000000078 +S315E06465D00000000000000000000000000000000071 +S315E06465E00000000000000000000000000000000061 +S315E06465F00000000000000000000000000000000051 +S315E06466000000000000000000000000000000000040 +S315E06466100000000000000000000000000000000030 +S315E06466200000000000000000000000000000000020 +S315E06466300000000000000000000000000000000010 +S315E06466400000000000000000000000000000000000 +S315E064665000000000000000000000000000000000F0 +S315E064666000000000000000000000000000000000E0 +S315E064667000000000000000000000000000000000D0 +S315E0646680000000000000000000E4BD7400000000AB +S315E0646690000000000000000000E4BD80000000008F +S315E06466A000000000000000000000000000000000A0 +S315E06466B00000000000000000000000000000000090 +S315E06466C000000000000000000000000000E4BD8C53 +S315E06466D00000000000000000000000000000000070 +S315E06466E00000000000000000000000000000000060 +S315E06466F000000000000000000000000000E4BD9817 +S315E064670000000000000000000000000000E4BDA4FA +S315E064671000E4BDB0000000000000000000000000DE +S315E0646720000000000000000000000000000000001F +S315E0646730000000000000000000E4BDBC00000000B2 +S315E064674000E4BDC800000000000000000000000096 +S315E064675000000000000000000000000000000000EF +S315E064676000E4BDD40000000000000000000000006A +S315E064677000000000000000000000000000E4BDE04E +S315E064678000000000000000000000000000000000BF +S315E0646790000000000000000000E4BDEC0000000022 +S315E06467A00000000000E4BDF80000000000E4BE0460 +S315E06467B0000000000000000000000000000000008F +S315E06467C000000000000000000000000000E4BE10CD +S315E06467D0000000000000000000000000000000006F +S315E06467E00000000000E4BE1C0000000000E4BE28D7 +S315E06467F0000000000000000000000000000000004F +S315E06468000000000000E4BE34000000000000000068 +S315E0646810000000000000000000000000000000002E +S315E06468200000000000E4BE4000000000000000003C +S315E0646830000000000000000000E4BE4C0000000020 +S315E064684000000000000000000000000000000000FE +S315E064685000000000000000000000000000000000EE +S315E064686000000000000000000000000000E4BE58E4 +S315E06468700000000000E4BE640000000000000000C8 +S315E0646880000000000000000000E4BE80000000009C +S315E06468900000000000E4BE8C0000000000E4BE9846 +S315E06468A0000000000000000000000000000000009E +S315E06468B0000000000000000000000000000000008E +S315E06468C0000000000000000000000000000000007E +S315E06468D0000000000000000000000000000000006E +S315E06468E0000000000000000000000000000000005E +S315E06468F0000000000000000000E4BEA40000000008 +S315E064690000E4BEB0000000000000000000E4BEBC8D +S315E064691000000000000000000000000000E4BEC8C3 +S315E0646920000000000000000000000000000000001D +S315E064693000E4BED400000000000000000000000097 +S315E06469400000000000E4BEE8000000000000000073 +S315E064695000E4BEF400000000000000000000000057 +S315E0646960000000000000000000E4BF00000000003A +S315E064697000000000000000000000000000000000CD +S315E064698000000000000000000000000000000000BD +S315E064699000000000000000000000000000000000AD +S315E06469A00000000000E4BF0C0000000000000000EE +S315E06469B00000000000E4BF180000000000000000D2 +S315E06469C0000000000000000000000000000000007D +S315E06469D0000000000000000000000000000000006D +S315E06469E0000000000000000000E4BF240000000096 +S315E06469F0000000000000000000000000000000004D +S315E0646A0000000000000000000000000000E4BF3861 +S315E0646A10000000000000000000000000000000002C +S315E0646A200000000000E4BF44000000000000000035 +S315E0646A30000000000000000000000000000000000C +S315E0646A4000E4BF5000E4BF5C0000000000E4BF68FF +S315E0646A5000000000000000000000000000000000EC +S315E0646A6000000000000000000000000000000000DC +S315E0646A7000000000000000000000000000E4BF74B5 +S315E0646A8000E4BF8000000000000000000000000099 +S315E0646A9000000000000000000000000000000000AC +S315E0646AA000E4BF8C0000000000000000000000006D +S315E0646AB0000000000000000000000000000000008C +S315E0646AC0000000000000000000000000000000007C +S315E0646AD0000000000000000000000000000000006C +S315E0646AE0000000000000000000000000000000005C +S315E0646AF0000000000000000000000000000000004C +S315E0646B00000000000000000000E4BF980000000000 +S315E0646B1000000000000000000000000000E4BFA4E4 +S315E0646B20000000000000000000000000000000001B +S315E0646B30000000000000000000000000000000000B +S315E0646B4000E4BFB0000000000000000000E4BFBC49 +S315E0646B5000000000000000000000000000E4BFC880 +S315E0646B6000000000000000000000000000000000DB +S315E0646B7000000000000000000000000000000000CB +S315E0646B8000000000000000000000000000000000BB +S315E0646B90000000000000000000E4BFD40000000034 +S315E0646BA0000000000000000000E4BFE00000000018 +S315E0646BB0000000000000000000000000000000008B +S315E0646BC00000000000E4BFEC0000000000000000EC +S315E0646BD000000000000000000000000000E4BFF8D0 +S315E0646BE0000000000000000000000000000000005B +S315E0646BF000E4C004000000000000000000E4C018E7 +S315E0646C00000000000000000000000000000000003A +S315E0646C100000000000E4C024000000000000000062 +S315E0646C20000000000000000000000000000000001A +S315E0646C3000E4C03000E4C03C00E4C048000000006A +S315E0646C400000000000E4C054000000000000000002 +S315E0646C50000000000000000000E4C06000000000E6 +S315E0646C6000000000000000000000000000000000DA +S315E0646C70000000000000000000E4C06C00000000BA +S315E0646C80000000000000000000E4C078000000009E +S315E0646C9000E4C08400000000000000000000000082 +S315E0646CA000E4C0980000000000000000000000005E +S315E0646CB000E4C0A40000000000E4C0B000E4C0BC8E +S315E0646CC0000000000000000000000000000000007A +S315E0646CD0000000000000000000000000000000006A +S315E0646CE0000000000000000000000000000000005A +S315E0646CF0000000000000000000000000000000004A +S315E0646D000000000000000000000000000000000039 +S315E0646D100000000000000000000000000000000029 +S315E0646D200000000000000000000000000000000019 +S315E0646D300000000000E4C0C800000000000000009D +S315E0646D4000000000000000000000000000000000F9 +S315E0646D5000000000000000000000000000000000E9 +S315E0646D6000000000000000000000000000000000D9 +S315E0646D7000000000000000000000000000000000C9 +S315E0646D8000000000000000000000000000000000B9 +S315E0646D90000000000000000000E4C0DC0000000029 +S315E0646DA0000000000000000000E4C0E8000000000D +S315E0646DB00000000000000000000000000000000089 +S315E0646DC00000000000000000000000000000000079 +S315E0646DD00000000000000000000000000000000069 +S315E0646DE000E4C0F4000000000000000000000000C1 +S315E0646DF00000000000000000000000000000000049 +S315E0646E000000000000000000000000000000000038 +S315E0646E1000000000000000000000000000E4C10083 +S315E0646E2000E4C10C00000000000000000000000067 +S315E0646E300000000000E4C11800000000000000004B +S315E0646E4000000000000000000000000000000000F8 +S315E0646E5000E4C12400E4C138000000000000000042 +S315E0646E6000000000000000000000000000000000D8 +S315E0646E7000000000000000000000000000E4C144DF +S315E0646E8000000000000000000000000000000000B8 +S315E0646E9000E4C150000000000000000000000000B3 +S315E0646EA00000000000000000000000000000000098 +S315E0646EB00000000000000000000000000000000088 +S315E0646EC00000000000000000000000000000000078 +S315E0646ED000E4C15C00000000000000000000000067 +S315E0646EE000E4C1680000000000000000000000004B +S315E0646EF0000000000000000000E4C174000000002F +S315E0646F0000E4C18000E4C18C0000000000E4C198A4 +S315E0646F100000000000000000000000000000000027 +S315E0646F200000000000000000000000000000000017 +S315E0646F300000000000000000000000000000000007 +S315E0646F4000000000000000000000000000000000F7 +S315E0646F5000000000000000000000000000000000E7 +S315E0646F6000000000000000000000000000000000D7 +S315E0646F7000E4C1A4000000000000000000E4C1B029 +S315E0646F8000000000000000000000000000000000B7 +S315E0646F9000000000000000000000000000000000A7 +S315E0646FA00000000000000000000000000000000097 +S315E0646FB00000000000000000000000000000000087 +S315E0646FC00000000000000000000000000000000077 +S315E0646FD00000000000000000000000000000000067 +S315E0646FE00000000000000000000000000000000057 +S315E0646FF00000000000000000000000000000000047 +S315E06470000000000000000000000000000000000036 +S315E06470100000000000000000000000000000000026 +S315E064702000000000000000000000000000E4C1BCB5 +S315E06470300000000000000000000000000000000006 +S315E064704000000000000000000000000000000000F6 +S315E06470500000000000E4C1C8000000000000000079 +S315E064706000000000000000000000000000000000D6 +S315E064707000000000000000000000000000000000C6 +S315E064708000000000000000000000000000000000B6 +S315E064709000000000000000000000000000000000A6 +S315E06470A0000000000000000000E4C1D4000000001D +S315E06470B00000000000000000000000000000000086 +S315E06470C000000000000000000000000000E4C1E8E9 +S315E06470D00000000000000000000000000000000066 +S315E06470E00000000000000000000000000000000056 +S315E06470F00000000000000000000000000000000046 +S315E0647100000000000000000000E4C1F4000000009C +S315E06471100000000000000000000000000000000025 +S315E0647120000000000000000000E4C2080000000067 +S315E064713000E4C21400E4C220000000000000000085 +S315E0647140000000000000000000E4C22C0000000023 +S315E0647150000000000000000000E4C2380000000007 +S315E064716000000000000000000000000000000000D5 +S315E064717000E4C244000000000000000000E4C250E5 +S315E064718000E4C264000000000000000000000000AB +S315E064719000E4C2700000000000000000000000008F +S315E06471A000E4C27C00000000000000000000000073 +S315E06471B00000000000E4C28800E4C29C00E4C2A8C7 +S315E06471C00000000000000000000000000000000075 +S315E06471D00000000000E4C2B400000000000000000B +S315E06471E0000000000000000000E4C2C000E4C2CC7D +S315E06471F000E4C2D8000000000000000000000000C7 +S315E06472000000000000000000000000000000000034 +S315E06472100000000000000000000000000000000024 +S315E064722000000000000000000000000000E4C2E48A +S315E06472300000000000000000000000000000000004 +S315E064724000E4C2F000E4C2FC0000000000E4C3080D +S315E064725000000000000000000000000000000000E4 +S315E064726000000000000000000000000000000000D4 +S315E064727000000000000000000000000000000000C4 +S315E064728000E4C3140000000000E4C3200000000032 +S315E064729000000000000000000000000000000000A4 +S315E06472A000000000000000000000000000E4C32CC1 +S315E06472B00000000000E4C3380000000000000000A5 +S315E06472C00000000000000000000000000000000074 +S315E06472D00000000000000000000000000000000064 +S315E06472E00000000000000000000000000000000054 +S315E06472F000000000000000000000000000E4C34459 +S315E064730000000000000000000000000000E4C3503C +S315E0647310000000000000000000E4C35C0000000020 +S315E06473200000000000000000000000000000000013 +S315E064733000000000000000000000000000E4C370EC +S315E064734000000000000000000000000000000000F3 +S315E064735000000000000000000000000000000000E3 +S315E0647360000000000000000000E4C37C00000000B0 +S315E064737000000000000000000000000000000000C3 +S315E06473800000000000E4C388000000000000000084 +S315E064739000E4C39400000000000000000000000068 +S315E06473A00000000000000000000000000000000093 +S315E06473B00000000000E4C3A000000000000000003C +S315E06473C000000000000000000000000000E4C3AC20 +S315E06473D00000000000000000000000000000000063 +S315E06473E00000000000E4C3B80000000000000000F4 +S315E06473F00000000000000000000000000000000043 +S315E06474000000000000E4C3C40000000000000000C7 +S315E06474100000000000000000000000000000000022 +S315E06474200000000000000000000000000000000012 +S315E06474300000000000000000000000000000000002 +S315E0647440000000000000000000E4C3D0000000007B +S315E064745000000000000000000000000000000000E2 +S315E06474600000000000E4C3E4000000000000000047 +S315E064747000000000000000000000000000000000C2 +S315E0647480000000000000000000E4C3F0000000001B +S315E064749000E4C3FC00E4C40800000000000000004F +S315E06474A00000000000000000000000000000000092 +S315E06474B00000000000E4C4140000000000000000C6 +S315E06474C0000000000000000000E4C42000000000AA +S315E06474D00000000000000000000000000000000062 +S315E06474E00000000000000000000000000000000052 +S315E06474F00000000000000000000000000000000042 +S315E064750000000000000000000000000000E4C43455 +S315E064751000E4C4400000000000E4C44C0000000045 +S315E06475200000000000000000000000000000000011 +S315E064753000E4C45800E4C4640000000000000000F5 +S315E064754000E4C470000000000000000000000000D9 +S315E064755000E4C47C000000000000000000000000BD +S315E064756000000000000000000000000000E4C488A1 +S315E064757000E4C49400000000000000000000000085 +S315E06475800000000000E4C4A00000000000E4C4AC15 +S315E064759000000000000000000000000000000000A1 +S315E06475A00000000000000000000000000000000091 +S315E06475B000000000000000000000000000E4C4B821 +S315E06475C000000000000000000000000000E4C4C405 +S315E06475D00000000000000000000000000000000061 +S315E06475E00000000000000000000000000000000051 +S315E06475F00000000000000000000000000000000041 +S315E06476000000000000000000000000000000000030 +S315E06476100000000000000000000000000000000020 +S315E06476200000000000000000000000000000000010 +S315E06476300000000000000000000000000000000000 +S315E064764000000000000000000000000000000000F0 +S315E064765000000000000000000000000000000000E0 +S315E064766000000000000000000000000000000000D0 +S315E064767000000000000000000000000000000000C0 +S315E064768000000000000000000000000000E4C4D038 +S315E064769000000000000000000000000000E4C4DC1C +S315E06476A00000000000000000000000000000000090 +S315E06476B00000000000000000000000000000000080 +S315E06476C00000000000000000000000000000000070 +S315E06476D000E4C4E8000000000000000000000000D0 +S315E06476E00000000000000000000000000000000050 +S315E06476F00000000000000000000000000000000040 +S315E064770000E4C4F400000000000000000000000093 +S315E064771000E4C50000E4C50C0000000000000000C1 +S315E0647720000000000000000000000000000000000F +S315E064773000000000000000000000000000E4C5183E +S315E06477400000000000E4C524000000000000000022 +S315E064775000000000000000000000000000000000DF +S315E06477600000000000E4C5300000000000000000F6 +S315E064777000000000000000000000000000000000BF +S315E064778000E4C53C000000000000000000000000CA +S315E064779000000000000000000000000000E4C548AE +S315E06477A0000000000000000000E4C5540000000092 +S315E06477B000E4C56000000000000000000000000076 +S315E06477C0000000000000000000000000000000006F +S315E06477D000E4C56C0000000000000000000000004A +S315E06477E0000000000000000000E4C578000000002E +S315E06477F000E4C58400000000000000000000000012 +S315E0647800000000000000000000E4C59000000000F5 +S315E0647810000000000000000000000000000000001E +S315E0647820000000000000000000E4C59C00000000C9 +S315E064783000000000000000000000000000E4C5A8AD +S315E064784000000000000000000000000000000000EE +S315E064785000000000000000000000000000000000DE +S315E064786000000000000000000000000000000000CE +S315E064787000E4C5B40000000000E4C5C000000000F8 +S315E064788000000000000000000000000000E4C5DC29 +S315E0647890000000000000000000E4C5E8000000000D +S315E06478A000E4C5F4000000000000000000000000F1 +S315E06478B0000000000000000000000000000000007E +S315E06478C0000000000000000000000000000000006E +S315E06478D0000000000000000000000000000000005E +S315E06478E0000000000000000000000000000000004E +S315E06478F000000000000000000000000000E4C60094 +S315E06479000000000000E4C60C000000000000000077 +S315E064791000E4C6180000000000000000000000005B +S315E064792000E4C6240000000000000000000000003F +S315E06479300000000000E4C630000000000000000023 +S315E0647940000000000000000000E4C64400000000FF +S315E06479500000000000E4C6500000000000000000E3 +S315E064796000000000000000000000000000E4C65CC7 +S315E064797000000000000000000000000000000000BD +S315E064798000000000000000000000000000000000AD +S315E0647990000000000000000000000000000000009D +S315E06479A0000000000000000000E4C668000000007B +S315E06479B0000000000000000000E4C674000000005F +S315E06479C0000000000000000000000000000000006D +S315E06479D0000000000000000000000000000000005D +S315E06479E000000000000000000000000000E4C68023 +S315E06479F0000000000000000000000000000000003D +S315E0647A00000000000000000000000000000000002C +S315E0647A1000E4C694000000000000000000000000DE +S315E0647A20000000000000000000E4C6A000000000C2 +S315E0647A3000000000000000000000000000000000FC +S315E0647A400000000000E4C6AC00E4C6B80000000034 +S315E0647A5000E4C6C40000000000000000000000006E +S315E0647A6000000000000000000000000000000000CC +S315E0647A7000000000000000000000000000000000BC +S315E0647A8000E4C6D000E4C6DC0000000000000000AC +S315E0647A90000000000000000000000000000000009C +S315E0647AA00000000000E4C6E80000000000000000FA +S315E0647AB0000000000000000000000000000000007C +S315E0647AC0000000000000000000000000000000006C +S315E0647AD0000000000000000000000000000000005C +S315E0647AE0000000000000000000000000000000004C +S315E0647AF0000000000000000000000000000000003C +S315E0647B0000000000000000000000000000E4C6F48D +S315E0647B10000000000000000000000000000000001B +S315E0647B2000E4C70000000000000000000000000060 +S315E0647B3000000000000000000000000000000000FB +S315E0647B400000000000E4C70C000000000000000034 +S315E0647B5000E4C71800000000000000000000000018 +S315E0647B6000E4C724000000000000000000000000FC +S315E0647B7000000000000000000000000000000000BB +S315E0647B8000000000000000000000000000000000AB +S315E0647B9000000000000000000000000000E4C730C0 +S315E0647BA000000000000000000000000000E4C73CA4 +S315E0647BB0000000000000000000000000000000007B +S315E0647BC0000000000000000000E4C7480000000078 +S315E0647BD0000000000000000000000000000000005B +S315E0647BE000E4C7540000000000000000000000004C +S315E0647BF00000000000E4C760000000000000000030 +S315E0647C0000E4C7740000000000000000000000000B +S315E0647C10000000000000000000E4C78000000000EF +S315E0647C20000000000000000000000000000000000A +S315E0647C300000000000E4C78C00E4C79800E4C7A431 +S315E0647C40000000000000000000E4C7B0000000008F +S315E0647C5000000000000000000000000000E4C7BC73 +S315E0647C6000000000000000000000000000000000CA +S315E0647C7000000000000000000000000000E4C7C847 +S315E0647C8000000000000000000000000000E4C7D42B +S315E0647C900000000000E4C7E000000000000000000F +S315E0647CA00000000000E4C7F40000000000000000EB +S315E0647CB00000000000E4C8000000000000E4C80C16 +S315E0647CC000E4C818000000000000000000000000A6 +S315E0647CD0000000000000000000000000000000005A +S315E0647CE0000000000000000000000000000000004A +S315E0647CF0000000000000000000000000000000003A +S315E0647D000000000000000000000000000000000029 +S315E0647D100000000000000000000000000000000019 +S315E0647D200000000000000000000000000000000009 +S315E0647D30000000000000000000E4C8240000000029 +S315E0647D4000000000000000000000000000000000E9 +S315E0647D5000000000000000000000000000000000D9 +S315E0647D6000000000000000000000000000000000C9 +S315E0647D7000000000000000000000000000000000B9 +S315E0647D8000000000000000000000000000000000A9 +S315E0647D9000000000000000000000000000E4C838B5 +S315E0647DA000000000000000000000000000E4C84499 +S315E0647DB00000000000000000000000000000000079 +S315E0647DC00000000000000000000000000000000069 +S315E0647DD00000000000000000000000000000000059 +S315E0647DE00000000000E4C85000000000000000004D +S315E0647DF00000000000000000000000000000000039 +S315E0647E000000000000000000000000000000000028 +S315E0647E100000000000000000000000000000000018 +S315E0647E2000E4C85C00E4C8680000000000000000EC +S315E0647E30000000000000000000E4C87400000000D8 +S315E0647E4000000000000000000000000000000000E8 +S315E0647E500000000000E4C88000E4C894000000006C +S315E0647E6000000000000000000000000000000000C8 +S315E0647E7000000000000000000000000000000000B8 +S315E0647E8000E4C8A00000000000000000000000005C +S315E0647E900000000000E4C8AC000000000000000040 +S315E0647EA00000000000000000000000000000000088 +S315E0647EB00000000000000000000000000000000078 +S315E0647EC00000000000000000000000000000000068 +S315E0647ED00000000000E4C8B80000000000000000F4 +S315E0647EE00000000000E4C8C40000000000000000D8 +S315E0647EF000000000000000000000000000E4C8D0BC +S315E0647F000000000000E4C8DC00E4C8E8000000000B +S315E0647F1000E4C8F400000000000000000000000077 +S315E0647F200000000000000000000000000000000007 +S315E0647F3000000000000000000000000000000000F7 +S315E0647F4000000000000000000000000000000000E7 +S315E0647F5000000000000000000000000000000000D7 +S315E0647F6000000000000000000000000000000000C7 +S315E0647F700000000000E4C90000000000000000000A +S315E0647F8000E4C90C000000000000000000000000EE +S315E0647F900000000000000000000000000000000097 +S315E0647FA00000000000000000000000000000000087 +S315E0647FB00000000000000000000000000000000077 +S315E0647FC00000000000000000000000000000000067 +S315E0647FD00000000000000000000000000000000057 +S315E0647FE00000000000000000000000000000000047 +S315E0647FF00000000000000000000000000000000037 +S315E06480000000000000000000000000000000000026 +S315E06480100000000000000000000000000000000016 +S315E06480200000000000000000000000000000000006 +S315E064803000E4C91800000000000000000000000031 +S315E064804000000000000000000000000000000000E6 +S315E0648050000000000000000000E4C9240000000005 +S315E064806000000000000000000000000000000000C6 +S315E064807000000000000000000000000000000000B6 +S315E064808000000000000000000000000000000000A6 +S315E06480900000000000000000000000000000000096 +S315E06480A000000000000000000000000000E4C930A9 +S315E06480B00000000000000000000000000000000076 +S315E06480C00000000000000000000000000000000066 +S315E06480D000E4C94400000000000000000000000065 +S315E06480E00000000000000000000000000000000046 +S315E06480F00000000000000000000000000000000036 +S315E064810000000000000000000000000000E4C95028 +S315E06481100000000000000000000000000000000015 +S315E064812000000000000000000000000000E4C964F4 +S315E06481300000000000E4C97000E4C97C00000000AF +S315E064814000000000000000000000000000E4C988B0 +S315E064815000000000000000000000000000E4C99494 +S315E064816000000000000000000000000000000000C5 +S315E06481700000000000E4C9A0000000000000000068 +S315E064818000E4C9AC00E4C9C00000000000000000DF +S315E06481900000000000E4C9CC00000000000000001C +S315E06481A00000000000E4C9D8000000000000000000 +S315E06481B0000000000000000000E4C9E400E4C9F83F +S315E06481C000E4CA04000000000000000000000000B3 +S315E06481D0000000000000000000E4CA100000000097 +S315E06481E000000000000000000000000000E4CA1C7B +S315E06481F000E4CA2800E4CA3400000000000000007D +S315E06482000000000000000000000000000000000024 +S315E06482100000000000000000000000000000000014 +S315E06482200000000000000000000000000000000004 +S315E064823000E4CA4000000000000000000000000006 +S315E06482400000000000E4CA4C00E4CA5800000000E4 +S315E064825000E4CA64000000000000000000000000C2 +S315E064826000000000000000000000000000000000C4 +S315E064827000000000000000000000000000000000B4 +S315E06482800000000000E4CA700000000000E4CA7C5C +S315E06482900000000000000000000000000000000094 +S315E06482A00000000000000000000000000000000084 +S315E06482B000E4CA880000000000E4CA9400000000FC +S315E06482C00000000000000000000000000000000064 +S315E06482D00000000000000000000000000000000054 +S315E06482E00000000000000000000000000000000044 +S315E06482F00000000000000000000000000000000034 +S315E064830000E4CAA0000000000000000000000000D5 +S315E064831000E4CAAC000000000000000000E4CAB853 +S315E06483200000000000000000000000000000000003 +S315E064833000000000000000000000000000000000F3 +S315E064834000E4CACC00000000000000000000000069 +S315E064835000000000000000000000000000000000D3 +S315E064836000000000000000000000000000E4CAD83D +S315E064837000000000000000000000000000000000B3 +S315E0648380000000000000000000E4CAE40000000011 +S315E06483900000000000E4CAF00000000000000000F5 +S315E06483A00000000000000000000000000000000083 +S315E06483B0000000000000000000E4CAFC00000000C9 +S315E06483C00000000000000000000000000000000063 +S315E06483D000E4CB080000000000000000000000009C +S315E06483E0000000000000000000E4CB140000000080 +S315E06483F00000000000000000000000000000000033 +S315E0648400000000000000000000E4CB200000000053 +S315E06484100000000000000000000000000000000012 +S315E06484200000000000000000000000000000000002 +S315E064843000000000000000000000000000000000F2 +S315E064844000000000000000000000000000E4CB2C07 +S315E064845000000000000000000000000000000000D2 +S315E0648460000000000000000000E4CB4000000000D3 +S315E064847000000000000000000000000000000000B2 +S315E064848000000000000000000000000000E4CB4CA7 +S315E06484900000000000E4CB5800E4CB640000000078 +S315E06484A00000000000000000000000000000000082 +S315E06484B0000000000000000000E4CB700000000053 +S315E06484C000000000000000000000000000E4CB7C37 +S315E06484D00000000000000000000000000000000052 +S315E06484E00000000000000000000000000000000042 +S315E06484F00000000000000000000000000000000032 +S315E06485000000000000000000000000000000000021 +S315E064851000E4CB9000E4CB9C0000000000E4CBA830 +S315E06485200000000000000000000000000000000001 +S315E06485300000000000E4CBB400E4CBC0000000001F +S315E06485400000000000E4CBCC000000000000000066 +S315E06485500000000000E4CBD800000000000000004A +S315E064856000000000000000000000000000000000C1 +S315E064857000E4CBE400E4CBF000000000000000007F +S315E0648580000000000000000000E4CBFC00000000F6 +S315E064859000E4CC08000000000000000000000000D9 +S315E06485A00000000000000000000000000000000081 +S315E06485B00000000000000000000000000000000071 +S315E06485C000E4CC140000000000000000000000009D +S315E06485D000E4CC2000000000000000000000000081 +S315E06485E00000000000000000000000000000000041 +S315E06485F00000000000000000000000000000000031 +S315E06486000000000000000000000000000000000020 +S315E06486100000000000000000000000000000000010 +S315E06486200000000000000000000000000000000000 +S315E064863000000000000000000000000000000000F0 +S315E064864000000000000000000000000000000000E0 +S315E064865000000000000000000000000000000000D0 +S315E064866000000000000000000000000000000000C0 +S315E064867000000000000000000000000000000000B0 +S315E064868000000000000000000000000000000000A0 +S315E064869000E4CC2C000000000000000000000000B4 +S315E06486A000E4CC3800000000000000000000000098 +S315E06486B00000000000000000000000000000000070 +S315E06486C00000000000000000000000000000000060 +S315E06486D00000000000E4CC4400000000000000005C +S315E06486E00000000000000000000000000000000040 +S315E06486F00000000000000000000000000000000030 +S315E06487000000000000E4CC5000000000000000001F +S315E06487100000000000E4CC5C00E4CC6800000000EB +S315E064872000000000000000000000000000000000FF +S315E064873000000000000000000000000000000000EF +S315E064874000E4CC740000000000E4CC80000000008B +S315E064875000000000000000000000000000000000CF +S315E0648760000000000000000000E4CC8C0000000083 +S315E064877000000000000000000000000000000000AF +S315E06487800000000000E4CC98000000000000000057 +S315E0648790000000000000000000000000000000008F +S315E06487A000E4CCA4000000000000000000E4CCB0CB +S315E06487B00000000000E4CCBC000000000000000003 +S315E06487C0000000000000000000000000000000005F +S315E06487D00000000000E4CCC80000000000000000D7 +S315E06487E000000000000000000000000000E4CCD4BB +S315E06487F00000000000E4CCE000000000000000009F +S315E064880000000000000000000000000000E4CCEC82 +S315E0648810000000000000000000000000000000000E +S315E064882000000000000000000000000000E4CCF856 +S315E064883000000000000000000000000000000000EE +S315E064884000E4CD0400000000000000000000000029 +S315E064885000000000000000000000000000000000CE +S315E064886000000000000000000000000000000000BE +S315E06488700000000000E4CD100000000000E4CD1C20 +S315E0648880000000000000000000000000000000009E +S315E064889000E4CD38000000000000000000E4CD44B0 +S315E06488A00000000000E4CD5000000000000000007D +S315E06488B0000000000000000000000000000000006E +S315E06488C0000000000000000000000000000000005E +S315E06488D0000000000000000000000000000000004E +S315E06488E0000000000000000000000000000000003E +S315E06488F0000000000000000000000000000000002E +S315E064890000E4CD5C0000000000E4CD6800000000F7 +S315E06489100000000000E4CD740000000000000000E8 +S315E06489200000000000E4CD800000000000000000CC +S315E0648930000000000000000000E4CD8C00000000B0 +S315E064894000000000000000000000000000E4CDA08C +S315E0648950000000000000000000E4CDAC0000000070 +S315E064896000000000000000000000000000000000BD +S315E064897000E4CDB800000000000000000000000044 +S315E0648980000000000000000000000000000000009D +S315E0648990000000000000000000000000000000008D +S315E06489A000000000000000000000000000E4CDC408 +S315E06489B000000000000000000000000000E4CDD0EC +S315E06489C0000000000000000000000000000000005D +S315E06489D0000000000000000000000000000000004D +S315E06489E0000000000000000000000000000000003D +S315E06489F000E4CDDC000000000000000000000000A0 +S315E0648A00000000000000000000000000000000001C +S315E0648A100000000000E4CDF000000000000000006B +S315E0648A2000000000000000000000000000E4CDFC4F +S315E0648A3000000000000000000000000000000000EC +S315E0648A40000000000000000000E4CE0800E4CE145C +S315E0648A500000000000E4CE200000000000000000FA +S315E0648A6000000000000000000000000000000000BC +S315E0648A7000000000000000000000000000000000AC +S315E0648A800000000000E4CE2C00E4CE3800000000D4 +S315E0648A90000000000000000000000000000000008C +S315E0648AA0000000000000000000E4CE440000000086 +S315E0648AB0000000000000000000000000000000006C +S315E0648AC0000000000000000000000000000000005C +S315E0648AD0000000000000000000000000000000004C +S315E0648AE0000000000000000000000000000000003C +S315E0648AF0000000000000000000000000000000002C +S315E0648B00000000000000000000000000000000001B +S315E0648B1000E4CE5000000000000000000000000009 +S315E0648B200000000000E4CE5C0000000000000000ED +S315E0648B3000000000000000000000000000000000EB +S315E0648B40000000000000000000E4CE6800000000C1 +S315E0648B500000000000E4CE740000000000000000A5 +S315E0648B600000000000E4CE80000000000000000089 +S315E0648B7000000000000000000000000000000000AB +S315E0648B80000000000000000000000000000000009B +S315E0648B90000000000000000000000000000000008B +S315E0648BA000E4CE8C0000000000000000000000003D +S315E0648BB000E4CE9800000000000000000000000021 +S315E0648BC000000000000000000000000000E4CEA405 +S315E0648BD0000000000000000000000000000000004B +S315E0648BE00000000000E4CEB00000000000000000D9 +S315E0648BF0000000000000000000E4CEBC00000000BD +S315E0648C000000000000E4CED0000000000000000098 +S315E0648C1000000000000000000000000000E4CEDC7C +S315E0648C2000000000000000000000000000000000FA +S315E0648C30000000000000000000E4CEE800E4CEF4AA +S315E0648C4000E4CF00000000000000000000E4CF0C68 +S315E0648C5000000000000000000000000000000000CA +S315E0648C6000E4CF18000000000000000000000000EF +S315E0648C7000000000000000000000000000000000AA +S315E0648C8000E4CF24000000000000000000000000C3 +S315E0648C9000E4CF300000000000E4CF3C00000000B8 +S315E0648CA0000000000000000000E4CF500000000077 +S315E0648CB0000000000000000000E4CF5C000000005B +S315E0648CC000E4CF6800E4CF74000000000000000018 +S315E0648CD0000000000000000000000000000000004A +S315E0648CE0000000000000000000000000000000003A +S315E0648CF0000000000000000000000000000000002A +S315E0648D000000000000000000000000000000000019 +S315E0648D100000000000000000000000000000000009 +S315E0648D2000000000000000000000000000000000F9 +S315E0648D3000000000000000000000000000E4CF80B6 +S315E0648D4000000000000000000000000000000000D9 +S315E0648D5000000000000000000000000000000000C9 +S315E0648D6000000000000000000000000000000000B9 +S315E0648D7000000000000000000000000000000000A9 +S315E0648D800000000000000000000000000000000099 +S315E0648D900000000000000000000000000000000089 +S315E0648DA000E4CF9400000000000000000000000032 +S315E0648DB000E4CFA000000000000000000000000016 +S315E0648DC00000000000000000000000000000000059 +S315E0648DD00000000000000000000000000000000049 +S315E0648DE0000000000000000000E4CFAC00000000DA +S315E0648DF00000000000000000000000000000000029 +S315E0648E000000000000000000000000000000000018 +S315E0648E100000000000000000000000000000000008 +S315E0648E200000000000E4CFB800E4CFC40000000016 +S315E0648E3000000000000000000000000000E4CFD065 +S315E0648E4000000000000000000000000000000000D8 +S315E0648E50000000000000000000E4CFDC00E4CFF096 +S315E0648E6000000000000000000000000000000000B8 +S315E0648E7000000000000000000000000000000000A8 +S315E0648E800000000000E4CFFC0000000000000000E9 +S315E0648E90000000000000000000E4D00800000000CC +S315E0648EA00000000000000000000000000000000078 +S315E0648EB00000000000000000000000000000000068 +S315E0648EC00000000000000000000000000000000058 +S315E0648ED0000000000000000000E4D0140000000080 +S315E0648EE0000000000000000000E4D0200000000064 +S315E0648EF00000000000000000000000000000000028 +S315E0648F0000E4D02C0000000000E4D03800E4D04453 +S315E0648F100000000000E4D050000000000000000003 +S315E0648F2000000000000000000000000000000000F7 +S315E0648F3000000000000000000000000000000000E7 +S315E0648F4000000000000000000000000000000000D7 +S315E0648F5000000000000000000000000000000000C7 +S315E0648F6000000000000000000000000000000000B7 +S315E0648F70000000000000000000E4D05C0000000097 +S315E0648F800000000000E4D06800000000000000007B +S315E0648F900000000000000000000000000000000087 +S315E0648FA00000000000000000000000000000000077 +S315E0648FB00000000000000000000000000000000067 +S315E0648FC00000000000000000000000000000000057 +S315E0648FD00000000000000000000000000000000047 +S315E0648FE00000000000000000000000000000000037 +S315E0648FF00000000000000000000000000000000027 +S315E06490000000000000000000000000000000000016 +S315E06490100000000000000000000000000000000006 +S315E064902000000000000000000000000000000000F6 +S315E06490300000000000E4D0740000000000000000BE +S315E064904000000000000000000000000000000000D6 +S315E064905000000000000000000000000000E4D08092 +S315E064906000000000000000000000000000000000B6 +S315E064907000000000000000000000000000000000A6 +S315E06490800000000000000000000000000000000096 +S315E06490900000000000000000000000000000000086 +S315E06490A00000000000000000000000000000000076 +S315E06490B000E4D08C00000000000000000000000026 +S315E06490C00000000000000000000000000000000056 +S315E06490D00000000000E4D0A00000000000000000F2 +S315E06490E00000000000000000000000000000000036 +S315E06490F00000000000000000000000000000000026 +S315E06491000000000000000000000000000000000015 +S315E064911000E4D0AC000000000000000000000000A5 +S315E064912000000000000000000000000000000000F5 +S315E064913000E4D0C00000000000E4D0CC00E4D0D865 +S315E064914000000000000000000000000000000000D5 +S315E064915000E4D0E40000000000000000000000002D +S315E064916000E4D0F000000000000000000000000011 +S315E0649170000000000000000000E4D0FC00000000F5 +S315E06491800000000000E4D10800E4D11C0000000007 +S315E0649190000000000000000000E4D12800000000A8 +S315E06491A0000000000000000000E4D134000000008C +S315E06491B000000000000000000000000000E4D14070 +S315E06491C000E4D15400E4D160000000000000000037 +S315E06491D000000000000000000000000000E4D16C24 +S315E06491E00000000000000000000000000000000035 +S315E06491F000E4D17800E4D18400E4D190000000007A +S315E06492000000000000000000000000000000000014 +S315E06492100000000000000000000000000000000004 +S315E064922000000000000000000000000000000000F4 +S315E06492300000000000E4D19C000000000000000093 +S315E0649240000000000000000000E4D1A800E4D1B40E +S315E06492500000000000E4D1C000000000000000004F +S315E064926000000000000000000000000000000000B4 +S315E064927000000000000000000000000000000000A4 +S315E0649280000000000000000000E4D1CC0000000013 +S315E064929000E4D1D8000000000000000000000000F7 +S315E06492A00000000000000000000000000000000074 +S315E06492B00000000000E4D1E40000000000E4D1F026 +S315E06492C00000000000000000000000000000000054 +S315E06492D00000000000000000000000000000000044 +S315E06492E00000000000000000000000000000000034 +S315E06492F00000000000000000000000000000000024 +S315E06493000000000000E4D1FC000000000000000062 +S315E06493100000000000E4D208000000000000000045 +S315E064932000E4D21400000000000000000000000029 +S315E064933000000000000000000000000000000000E3 +S315E06493400000000000E4D2280000000000000000F5 +S315E064935000000000000000000000000000000000C3 +S315E064936000000000000000000000000000000000B3 +S315E064937000E4D234000000000000000000000000B9 +S315E064938000000000000000000000000000E4D2409D +S315E0649390000000000000000000E4D24C0000000081 +S315E06493A00000000000000000000000000000000073 +S315E06493B000000000000000000000000000E4D25855 +S315E06493C00000000000000000000000000000000053 +S315E06493D00000000000E4D264000000000000000029 +S315E06493E000000000000000000000000000E4D2700D +S315E06493F00000000000000000000000000000000023 +S315E064940000000000000000000000000000E4D27CE0 +S315E06494100000000000000000000000000000000002 +S315E064942000000000000000000000000000000000F2 +S315E064943000000000000000000000000000000000E2 +S315E064944000000000000000000000000000000000D2 +S315E064945000E4D28800000000000000000000000084 +S315E064946000000000000000000000000000E4D29C60 +S315E064947000000000000000000000000000000000A2 +S315E06494800000000000000000000000000000000092 +S315E064949000E4D2A80000000000E4D2B400E4D2C044 +S315E06494A00000000000000000000000000000000072 +S315E06494B000000000000000000000000000E4D2CCE0 +S315E06494C00000000000000000000000000000000052 +S315E06494D000E4D2D8000000000000000000000000B4 +S315E06494E00000000000000000000000000000000032 +S315E06494F00000000000000000000000000000000022 +S315E06495000000000000000000000000000000000011 +S315E06495100000000000E4D2EC00E4D2F800000000B1 +S315E064952000E4D30400000000000000000000000036 +S315E0649530000000000000000000E4D31000E4D31C47 +S315E0649540000000000000000000E4D32800000000F2 +S315E0649550000000000000000000E4D33400000000D6 +S315E064956000000000000000000000000000000000B1 +S315E06495700000000000E4D34000E4D34C00000000A7 +S315E064958000000000000000000000000000E4D35882 +S315E06495900000000000E4D364000000000000000066 +S315E06495A00000000000000000000000000000000071 +S315E06495B00000000000000000000000000000000061 +S315E06495C00000000000E4D37000000000000000002A +S315E06495D00000000000E4D37C00000000000000000E +S315E06495E00000000000000000000000000000000031 +S315E06495F00000000000000000000000000000000021 +S315E06496000000000000000000000000000000000010 +S315E06496100000000000000000000000000000000000 +S315E064962000000000000000000000000000000000F0 +S315E064963000000000000000000000000000000000E0 +S315E064964000000000000000000000000000000000D0 +S315E064965000000000000000000000000000000000C0 +S315E064966000000000000000000000000000000000B0 +S315E064967000000000000000000000000000000000A0 +S315E06496800000000000000000000000000000000090 +S315E06496900000000000E4D388000000000000000041 +S315E06496A00000000000E4D394000000000000000025 +S315E06496B00000000000000000000000000000000060 +S315E06496C00000000000000000000000000000000050 +S315E06496D0000000000000000000E4D3A000000000E9 +S315E06496E00000000000000000000000000000000030 +S315E06496F00000000000000000000000000000000020 +S315E0649700000000000000000000E4D3AC00000000AC +S315E0649710000000000000000000E4D3B800E4D3C415 +S315E064972000000000000000000000000000000000EF +S315E064973000000000000000000000000000000000DF +S315E06497400000000000E4D3D00000000000E4D3DCB5 +S315E064975000000000000000000000000000000000BF +S315E064976000000000000000000000000000E4D3E810 +S315E0649770000000000000000000000000000000009F +S315E0649780000000000000000000E4D3F400000000E4 +S315E0649790000000000000000000000000000000007F +S315E06497A00000000000E4D4000000000000000000B7 +S315E06497B000E4D40C0000000000E4D41800000000CB +S315E06497C0000000000000000000000000000000004F +S315E06497D0000000000000000000E4D4240000000063 +S315E06497E0000000000000000000000000000000002F +S315E06497F000E4D4300000000000E4D43C0000000043 +S315E0649800000000000000000000000000000000000E +S315E064981000E4D448000000000000000000000000FE +S315E064982000000000000000000000000000000000EE +S315E064983000E4D454000000000000000000000000D2 +S315E06498400000000000E4D4600000000000000000B6 +S315E064985000000000000000000000000000000000BE +S315E064986000000000000000000000000000000000AE +S315E0649870000000000000000000E4D46C000000007A +S315E064988000E4D4780000000000000000000000005E +S315E06498900000000000E4D494000000000000000032 +S315E06498A000E4D4A00000000000E4D4AC00000000B2 +S315E06498B0000000000000000000000000000000005E +S315E06498C0000000000000000000000000000000004E +S315E06498D0000000000000000000000000000000003E +S315E06498E0000000000000000000000000000000002E +S315E06498F0000000000000000000000000000000001E +S315E06499000000000000E4D4B80000000000E4D4C421 +S315E0649910000000000000000000E4D4D00000000075 +S315E0649920000000000000000000E4D4DC0000000059 +S315E064993000000000000000000000000000E4D4E83D +S315E064994000000000000000000000000000000000CD +S315E064995000E4D4FC000000000000000000E4D50848 +S315E064996000000000000000000000000000000000AD +S315E06499700000000000E4D5140000000000000000D0 +S315E0649980000000000000000000000000000000008D +S315E0649990000000000000000000000000000000007D +S315E06499A0000000000000000000000000000000006D +S315E06499B000E4D52000000000000000000000000084 +S315E06499C000E4D52C00000000000000000000000068 +S315E06499D0000000000000000000000000000000003D +S315E06499E0000000000000000000000000000000002D +S315E06499F00000000000E4D53800000000000000002C +S315E0649A00000000000000000000000000000000000C +S315E0649A10000000000000000000E4D54C00000000F7 +S315E0649A2000000000000000000000000000000000EC +S315E0649A3000E4D558000000000000000000000000CB +S315E0649A4000000000000000000000000000E4D564AF +S315E0649A5000E4D5700000000000E4D57C000000005E +S315E0649A6000000000000000000000000000000000AC +S315E0649A70000000000000000000000000000000009C +S315E0649A80000000000000000000E4D58800E4D594FE +S315E0649A90000000000000000000000000000000007C +S315E0649AA000000000000000000000000000E4D5A013 +S315E0649AB0000000000000000000000000000000005C +S315E0649AC0000000000000000000000000000000004C +S315E0649AD0000000000000000000000000000000003C +S315E0649AE0000000000000000000000000000000002C +S315E0649AF0000000000000000000000000000000001C +S315E0649B00000000000000000000000000000000000B +S315E0649B100000000000E4D5AC000000000000000096 +S315E0649B20000000000000000000E4D5B8000000007A +S315E0649B3000000000000000000000000000000000DB +S315E0649B4000000000000000000000000000E4D5C44E +S315E0649B50000000000000000000E4D5D00000000032 +S315E0649B60000000000000000000E4D5DC0000000016 +S315E0649B70000000000000000000000000000000009B +S315E0649B80000000000000000000000000000000008B +S315E0649B90000000000000000000000000000000007B +S315E0649BA00000000000E4D5E80000000000000000CA +S315E0649BB00000000000E4D5F40000000000000000AE +S315E0649BC0000000000000000000000000000000004B +S315E0649BD000E4D60000000000000000000000000081 +S315E0649BE0000000000000000000E4D60C0000000065 +S315E0649BF000000000000000000000000000E4D61849 +S315E0649C00000000000000000000E4D62C0000000024 +S315E0649C1000000000000000000000000000000000FA +S315E0649C2000E4D638000000000000000000000000F8 +S315E0649C3000000000000000000000000000E4D644DC +S315E0649C4000E4D65000E4D65C0000000000000000AA +S315E0649C5000E4D66800000000000000000000000098 +S315E0649C600000000000E4D67400000000000000007C +S315E0649C70000000000000000000000000000000009A +S315E0649C800000000000E4D680000000000000000050 +S315E0649C900000000000E4D68C0000000000E4D698E2 +S315E0649CA000000000000000000000000000E4D6AC04 +S315E0649CB000000000000000000000000000E4D6B8E8 +S315E0649CC00000000000E4D6C400E4D6D00000000042 +S315E0649CD0000000000000000000000000000000003A +S315E0649CE0000000000000000000000000000000002A +S315E0649CF0000000000000000000000000000000001A +S315E0649D000000000000000000000000000000000009 +S315E0649D1000000000000000000000000000000000F9 +S315E0649D2000000000000000000000000000000000E9 +S315E0649D3000000000000000000000000000000000D9 +S315E0649D4000E4D6DC00000000000000000000000033 +S315E0649D5000000000000000000000000000000000B9 +S315E0649D6000000000000000000000000000000000A9 +S315E0649D700000000000000000000000000000000099 +S315E0649D800000000000000000000000000000000089 +S315E0649D900000000000000000000000000000000079 +S315E0649DA00000000000E4D6F00000000000000000BF +S315E0649DB00000000000E4D6FC0000000000000000A3 +S315E0649DC00000000000000000000000000000000049 +S315E0649DD00000000000000000000000000000000039 +S315E0649DE000000000000000000000000000E4D70866 +S315E0649DF00000000000000000000000000000000019 +S315E0649E000000000000000000000000000000000008 +S315E0649E1000000000000000000000000000000000F8 +S315E0649E20000000000000000000E4D71400E4D7203E +S315E0649E3000000000000000000000000000000000D8 +S315E0649E4000E4D72C000000000000000000000000E1 +S315E0649E5000000000000000000000000000E4D738C5 +S315E0649E6000E4D74C000000000000000000000000A1 +S315E0649E700000000000000000000000000000000098 +S315E0649E80000000000000000000E4D7580000000075 +S315E0649E9000000000000000000000000000E4D76459 +S315E0649EA00000000000000000000000000000000068 +S315E0649EB00000000000000000000000000000000058 +S315E0649EC00000000000000000000000000000000048 +S315E0649ED000000000000000000000000000E4D7700D +S315E0649EE000000000000000000000000000E4D77CF1 +S315E0649EF00000000000000000000000000000000018 +S315E0649F000000000000E4D7880000000000E4D79475 +S315E0649F1000E4D7A00000000000E4D7AC0000000035 +S315E0649F2000000000000000000000000000000000E7 +S315E0649F3000000000000000000000000000000000D7 +S315E0649F4000000000000000000000000000000000C7 +S315E0649F5000000000000000000000000000000000B7 +S315E0649F6000000000000000000000000000000000A7 +S315E0649F7000000000000000000000000000E4D7B824 +S315E0649F80000000000000000000E4D7C40000000008 +S315E0649F900000000000000000000000000000000077 +S315E0649FA00000000000000000000000000000000067 +S315E0649FB00000000000000000000000000000000057 +S315E0649FC00000000000000000000000000000000047 +S315E0649FD00000000000000000000000000000000037 +S315E0649FE00000000000000000000000000000000027 +S315E0649FF00000000000000000000000000000000017 +S315E064A0000000000000000000000000000000000006 +S315E064A01000000000000000000000000000000000F6 +S315E064A02000000000000000000000000000000000E6 +S315E064A030000000000000000000E4D7D0000000004B +S315E064A04000000000000000000000000000000000C6 +S315E064A05000000000000000000000000000000000B6 +S315E064A06000E4D7DC0000000000000000000000000F +S315E064A0700000000000000000000000000000000096 +S315E064A0800000000000000000000000000000000086 +S315E064A0900000000000000000000000000000000076 +S315E064A0A00000000000000000000000000000000066 +S315E064A0B00000000000E4D7E80000000000000000B3 +S315E064A0C00000000000000000000000000000000046 +S315E064A0D0000000000000000000E4D7FC000000007F +S315E064A0E00000000000000000000000000000000026 +S315E064A0F00000000000000000000000000000000016 +S315E064A1000000000000000000000000000000000005 +S315E064A1100000000000E4D808000000000000000031 +S315E064A12000000000000000000000000000000000E5 +S315E064A1300000000000E4D81C0000000000E4D82819 +S315E064A14000E4D834000000000000000000000000D5 +S315E064A1500000000000E4D8400000000000000000B9 +S315E064A1600000000000E4D84C00000000000000009D +S315E064A17000000000000000000000000000E4D85881 +S315E064A180000000000000000000E4D86400E4D87831 +S315E064A19000000000000000000000000000E4D88435 +S315E064A1A000000000000000000000000000E4D89019 +S315E064A1B00000000000000000000000000000000055 +S315E064A1C000E4D89C00E4D8B000E4D8BC0000000009 +S315E064A1D00000000000000000000000000000000035 +S315E064A1E000E4D8C8000000000000000000000000A1 +S315E064A1F00000000000E4D8D400E4D8E000E4D8EC41 +S315E064A2000000000000000000000000000000000004 +S315E064A21000000000000000000000000000000000F4 +S315E064A22000000000000000000000000000000000E4 +S315E064A230000000000000000000E4D8F80000000020 +S315E064A24000000000000000000000000000E4D90403 +S315E064A25000E4D9100000000000E4D91C000000000E +S315E064A26000000000000000000000000000000000A4 +S315E064A2700000000000000000000000000000000094 +S315E064A28000000000000000000000000000E4D9289F +S315E064A2900000000000E4D934000000000000000083 +S315E064A2A00000000000000000000000000000000064 +S315E064A2B0000000000000000000E4D9400000000057 +S315E064A2C000E4D94C0000000000000000000000003B +S315E064A2D00000000000000000000000000000000034 +S315E064A2E00000000000000000000000000000000024 +S315E064A2F00000000000000000000000000000000014 +S315E064A300000000000000000000E4D95800000000EE +S315E064A310000000000000000000E4D96400000000D2 +S315E064A3200000000000E4D9700000000000000000B6 +S315E064A33000000000000000000000000000000000D3 +S315E064A340000000000000000000E4D9840000000082 +S315E064A35000000000000000000000000000000000B3 +S315E064A36000000000000000000000000000000000A3 +S315E064A3700000000000E4D990000000000000000046 +S315E064A3800000000000000000000000000000000083 +S315E064A39000E4D99C000000000000000000E4D9A8B5 +S315E064A3A00000000000000000000000000000000063 +S315E064A3B00000000000000000000000000000000053 +S315E064A3C000E4D9B4000000000000000000000000D2 +S315E064A3D0000000000000000000E4D9C000000000B6 +S315E064A3E00000000000000000000000000000000023 +S315E064A3F000E4D9CC0000000000000000000000008A +S315E064A4000000000000000000000000000000000002 +S315E064A41000E4D9D80000000000000000000000005D +S315E064A42000000000000000000000000000000000E2 +S315E064A43000000000000000000000000000000000D2 +S315E064A44000000000000000000000000000000000C2 +S315E064A4500000000000E4D9E4000000000000000011 +S315E064A46000000000000000000000000000000000A2 +S315E064A47000E4D9F8000000000000000000000000DD +S315E064A4800000000000000000000000000000000082 +S315E064A4900000000000E4DA040000000000E4DA10E2 +S315E064A4A000E4DA1C00000000000000000000000088 +S315E064A4B00000000000000000000000000000000052 +S315E064A4C000E4DA280000000000000000000000005C +S315E064A4D00000000000E4DA34000000000000000040 +S315E064A4E000E4DA480000000000000000000000001C +S315E064A4F00000000000000000000000000000000012 +S315E064A5000000000000000000000000000000000001 +S315E064A510000000000000000000E4DA5400E4DA60C1 +S315E064A5200000000000E4DA6C0000000000000000B7 +S315E064A53000000000000000000000000000E4DA789B +S315E064A54000E4DA84000000000000000000E4DA9031 +S315E064A55000000000000000000000000000E4DA9C57 +S315E064A56000000000000000000000000000000000A1 +S315E064A570000000000000000000E4DAA800E4DAB4B9 +S315E064A5800000000000000000000000000000000081 +S315E064A59000E4DAC00000000000E4DACC0000000069 +S315E064A5A00000000000000000000000000000000061 +S315E064A5B00000000000000000000000000000000051 +S315E064A5C0000000000000000000E4DAD800000000AB +S315E064A5D0000000000000000000E4DAE4000000008F +S315E064A5E00000000000000000000000000000000021 +S315E064A5F00000000000000000000000000000000011 +S315E064A6000000000000000000000000000000000000 +S315E064A61000000000000000000000000000000000F0 +S315E064A62000000000000000000000000000000000E0 +S315E064A63000000000000000000000000000000000D0 +S315E064A64000000000000000000000000000000000C0 +S315E064A65000000000000000000000000000000000B0 +S315E064A66000000000000000000000000000000000A0 +S315E064A6700000000000000000000000000000000090 +S315E064A6800000000000000000000000000000000080 +S315E064A690000000000000000000E4DAF000000000C2 +S315E064A6A0000000000000000000E4DAFC00000000A6 +S315E064A6B00000000000000000000000000000000050 +S315E064A6C00000000000000000000000000000000040 +S315E064A6D000000000000000000000000000E4DB0869 +S315E064A6E00000000000000000000000000000000020 +S315E064A6F00000000000000000000000000000000010 +S315E064A70000000000000000000000000000E4DB142C +S315E064A71000000000000000000000000000E4DB2010 +S315E064A72000E4DB2C000000000000000000000000F4 +S315E064A73000000000000000000000000000000000CF +S315E064A740000000000000000000E4DB3800000000C8 +S315E064A75000E4DB44000000000000000000000000AC +S315E064A760000000000000000000000000000000009F +S315E064A77000E4DB5000000000000000000000000080 +S315E064A78000000000000000000000000000E4DB5C64 +S315E064A790000000000000000000000000000000006F +S315E064A7A0000000000000000000E4DB680000000038 +S315E064A7B00000000000E4DB740000000000E4DB80DD +S315E064A7C0000000000000000000000000000000003F +S315E064A7D000000000000000000000000000E4DB8CE4 +S315E064A7E0000000000000000000000000000000001F +S315E064A7F00000000000E4DB980000000000E4DBA455 +S315E064A80000000000000000000000000000000000FE +S315E064A8100000000000E4DBB000E0FA7D0000000028 +S315E064A82000E4DBB100E0FBA60000000000E4DC2EFF +S315E064A83000E0FC350000000000E4DC3E00E0FC4A99 +S315E064A8400000000000E4DC5900E0FC6700E4DC6042 +S315E064A85000E0FC6E00E4DC8800E0FC9300000000AD +S315E064A86000E4DC9800E0FCA40000000000E4DD31D4 +S315E064A87000E0FD590000000000E4DD4600E0FD6E06 +S315E064A8800000000000E4DD5A00E0FD810000000005 +S315E064A89000E4DD7400E0FDA10000000000E4DD8D6D +S315E064A8A000E0FDB70000000000E4DDAD00E0FDDEA1 +S315E064A8B00000000000E4DDCC00E0FDF900E4DDD753 +S315E064A8C000E0FE050000000000E4DDE700E0FE11C4 +S315E064A8D00000000000E4DDFB00E0FE26000000006E +S315E064A8E000E4DE1000E0FE370000000000E4DE5223 +S315E064A8F000E0FE790000000000E4DE5C00E0FE8C2F +S315E064A9000000000000E4DE7100E0FEA000E4DE90FA +S315E064A91000E0FEB30000000000E4DEA400E0FEC652 +S315E064A9200000000000E4DEB100E0FED200000000BA +S315E064A93000E4DECE00E0FEF50000000000E4DEDFC9 +S315E064A94000E0FF090000000000E4DF0500E0FF30FE +S315E064A9500000000000E4DF1D00E0FF4D00000000A1 +S315E064A96000E4DFF200E1000E0000000000E4E0072E +S315E064A97000E100200000000000E4E00E00E10028B1 +S315E064A9800000000000E4E03300E1004D0000000058 +S315E064A99000E4E0C600E100E60000000000E4E173E4 +S315E064A9A000E1018B0000000000E4E18B00E101A519 +S315E064A9B00000000000E4E1B200E101CB0000000029 +S315E064A9C000E4E1CE00E101E90000000000E4E1D149 +S315E064A9D000E101EC0000000000E4E1E500E101FFD4 +S315E064A9E00000000000E4E1F500E1021300E4E204A3 +S315E064A9F000E102220000000000E4E20D00E1022E24 +S315E064AA000000000000E4E24700E102730000000099 +S315E064AA1000E4E2B500E102D70000000000E4E2B839 +S315E064AA2000E102DB0000000000E4E2BB00E102DEDC +S315E064AA300000000000E4E2C000E102E5000000007E +S315E064AA4000E4E2CF00E102F50000000000E4E2DBAE +S315E064AA5000E103000000000000E4E2F100E1031716 +S315E064AA600000000000E4E30500E1032C00E4E31EDB +S315E064AA7000E1034A0000000000E4E3B200E103E819 +S315E064AA800000000000E4E3C900E104020000000005 +S315E064AA9000E4E3E400E104200000000000E4E3F104 +S315E064AAA000E1042A0000000000E4E45200E10494BA +S315E064AAB000E4E47100E104B30000000000E4E47D36 +S315E064AAC000E104BF0000000000E4E49900E104E86A +S315E064AAD00000000000E4E4E800E10548000000004E +S315E064AAE000E4E4FF00E1055D0000000000E4E51237 +S315E064AAF000E105720000000000E4E51B00E1057B6F +S315E064AB000000000000E4E53600E1059900E4E53E76 +S315E064AB1000E105A30000000000E4E55200E105B9A8 +S315E064AB200000000000E4E55F00E105C70000000006 +S315E064AB3000E4E56C00E105D40000000000E4E57D96 +S315E064AB4000E105EB0000000000E4E5F700E10673D0 +S315E064AB500000000000E4E5FC00E106780000000087 +S315E064AB6000E4E60600E106860000000000E4E62272 +S315E064AB7000E106A00000000000E4E66E00E10703E1 +S315E064AB800000000000E4E72400E107940000000010 +S315E064AB9000E4E72F00E1079B0000000000E4E737EC +S315E064ABA000E107A50000000000E4E7AD00E1081855 +S315E064ABB00000000000E4E7B400E1082200E4E7BB3B +S315E064ABC000E1082B0000000000E4E7D700E1084D4F +S315E064ABD00000000000E4E7EC00E1086600E4E7F367 +S315E064ABE000E108700000000000E4E80F00E1089569 +S315E064ABF00000000000E4E82F00E108B60000000071 +S315E064AC0000E4E83A00E108C30000000000E4E85A22 +S315E064AC1000E108E10000000000E4E86F00E108F408 +S315E064AC200000000000E4E88800E109130000000089 +S315E064AC3000E4E92D00E109C100E4E95200E109E636 +S315E064AC400000000000E4E95A00E109F000000000B9 +S315E064AC5000E4E96E00E10A010000000000E4E98036 +S315E064AC6000E10A150000000000E4E98600E10A1A42 +S315E064AC7000E4E99600E10A2D0000000000E4E9B88A +S315E064AC8000E10A4E0000000000E4E9CD00E10A6458 +S315E064AC900000000000E4E9D100E10A680000000079 +S315E064ACA000E4E9DC00E10A750000000000E4E9F193 +S315E064ACB000E10A8A0000000000E4EA0700E10AA570 +S315E064ACC00000000000E4EA2600E10AC40000000097 +S315E064ACD000E4EA3200E10AD10000000000E4EA3E62 +S315E064ACE000E10ADF0000000000E4EA5300E10AEC58 +S315E064ACF00000000000E4EA5B00E10AF50000000001 +S315E064AD0000E4EA6E00E10B070000000000E4EA728A +S315E064AD1000E10B0B0000000000E4EA8600E10B1F93 +S315E064AD200000000000E4EA9700E10B2D000000005B +S315E064AD3000E4EAA500E10B3D0000000000E4EABCA3 +S315E064AD4000E10B5200E4EAD300E10B6B0000000083 +S315E064AD5000E4EAED00E10B830000000000E4EB8A26 +S315E064AD6000E10C250000000000E4EB9400E10C2F08 +S315E064AD700000000000E4EBB100E10C4B00000000D1 +S315E064AD8000E4EBBF00E10C550000000000E4EC8158 +S315E064AD9000E10D000000000000E4ED0F00E10D9815 +S315E064ADA00000000000E4ED8F00E10E050000000005 +S315E064ADB000E4ED9600E10E0D00E4EE5700E10ECB03 +S315E064ADC00000000000E4EE7000E10EE40000000024 +S315E064ADD000E4EE7B00E10EF50000000000E4EF180D +S315E064ADE000E10FB50000000000E4EF6600E10FF259 +S315E064ADF00000000000E4F01A00E1109D000000008D +S315E064AE0000E4F0D800E1118400E4F0E100E111909F +S315E064AE100000000000E4F17500E112140000000097 +S315E064AE2000E4F19900E112370000000000E4F1ACBF +S315E064AE3000E1124C0000000000E4F1C500E1126696 +S315E064AE400000000000E4F25D00E112F90000000099 +S315E064AE5000E4F26C00E1130D0000000000E4F31876 +S315E064AE6000E113BA0000000000E4F33300E113D418 +S315E064AE700000000000E4F35700E113FA000000006C +S315E064AE8000E4F3EB00E114980000000000E4F3F55D +S315E064AE9000E114A40000000000E4F41700E114C427 +S315E064AEA00000000000E4F42B00E114D5000000008B +S315E064AEB000E4F43400E114DE0000000000E4F43B56 +S315E064AEC000E114E70000000000E4F44800E114F552 +S315E064AED00000000000E4F45C00E1150500000000F9 +S315E064AEE000E4F47100E1151A0000000000E4F4796E +S315E064AEF000E115220000000000E4F48100E1152A77 +S315E064AF000000000000E4F4A900E11552000000002E +S315E064AF1000E4F4CD00E115760000000000E4F56499 +S315E064AF2000E1162A0000000000E4F56E00E1163444 +S315E064AF300000000000E4F58B00E116540000000018 +S315E064AF4000E4F63600E116F30000000000E4F6C320 +S315E064AF5000E1178B0000000000E4F75C00E1182CC8 +S315E064AF600000000000E4F76D00E118420000000014 +S315E064AF7000E4F78700E1185F0000000000E4DBB05E +S315E064AF8000E1188D0000000000E4DBB100E119BCCB +S315E064AF900000000000E4DC2E00E11A580000000026 +S315E064AFA000E4DC3E00E11A6A0000000000E4DC59DB +S315E064AFB000E0FC6700E4DC6000E11A8400E4DC881D +S315E064AFC000E11AAB0000000000E4DC9800E11ABF7F +S315E064AFD00000000000E4DD3100E11B6E00000000CB +S315E064AFE000E4DD4600E11B830000000000E4DD5A76 +S315E064AFF000E11B970000000000E4DD7400E11BB48F +S315E064B0000000000000E4DD8D00E11BD000000000DC +S315E064B01000E4DDAD00E11BEF0000000000E4DDCC00 +S315E064B02000E11C0D00E4DDD700E11C19000000001E +S315E064B03000E4DDE700E11C2A0000000000E4DDFB3B +S315E064B04000E11C3B0000000000E4DE1000E11C515E +S315E064B0500000000000E4DE5200E11C920000000003 +S315E064B06000E4DE5C00E11C9C0000000000E4DE71AC +S315E064B07000E11CB500E4DE9000E11CD400000000B1 +S315E064B08000E4DEA400E11CE40000000000E4DEB1BC +S315E064B09000E11CF20000000000E4DECE00E11D0EDB +S315E064B0A00000000000E4DEDF00E11D240000000093 +S315E064B0B000E4DF0500E11D470000000000E4DF1D59 +S315E064B0C000E11D610000000000E4DFF200E11E2003 +S315E064B0D00000000000E4E00700E11E350000000027 +S315E064B0E000E4E00E00E11E3D0000000000E4E03311 +S315E064B0F000E11E620000000000E4E0C600E11F1704 +S315E064B1000000000000E4E17300E11FC300000000FA +S315E064B11000E4E18B00E11FDD0000000000E4E1B241 +S315E064B12000E11FFF0000000000E4E1CE00E101E978 +S315E064B1300000000000E4E1D100E1201D0000000011 +S315E064B14000E4E1E500E120310000000000E4E1F51F +S315E064B15000E1021300E4E20400E1204400000000A0 +S315E064B16000E4E20D00E1204C0000000000E4E24768 +S315E064B17000E120940000000000E4E2B500E120FA7A +S315E064B1800000000000E4E2B800E120FF00000000F7 +S315E064B19000E4E2BB00E121020000000000E4E2C05A +S315E064B1A000E121090000000000E4E2CF00E121189B +S315E064B1B00000000000E4E2DB00E12123000000007F +S315E064B1C000E4E2F100E121390000000000E4E31E5E +S315E064B1D000E1214D00E4E30500E121B60000000052 +S315E064B1E000E4E3B200E121D10000000000E4E3C939 +S315E064B1F000E121EC0000000000E4E3E400E1220861 +S315E064B2000000000000E4E3F100E122120000000027 +S315E064B21000E4E45200E1226A00E4E47100E1228998 +S315E064B2200000000000E4E47D00E1229300000000F9 +S315E064B23000E4E49900E122BB0000000000E4E4E8F5 +S315E064B24000E123120000000000E4E4FF00E1232AA9 +S315E064B2500000000000E4E51200E1233D0000000088 +S315E064B26000E4E51B00E123460000000000E4E53667 +S315E064B27000E1236400E4E53E00E1237100000000A0 +S315E064B28000E4E55200E123890000000000E4E55FA4 +S315E064B29000E123980000000000E4E56C00E123A6E9 +S315E064B2A00000000000E4E57D00E123B60000000054 +S315E064B2B000E4E5F700E106730000000000E4E5FC65 +S315E064B2C000E124280000000000E4E60600E1243200 +S315E064B2D00000000000E4E62200E1245000000000E3 +S315E064B2E000E4E66E00E124B90000000000E4E7242F +S315E064B2F000E1255B0000000000E4E72F00E125653E +S315E064B3000000000000E4E73700E1256D000000007E +S315E064B31000E4E7AD00E126170000000000E4E7B4CE +S315E064B32000E1262000E4E7BB00E1262700000000F8 +S315E064B33000E4E7D700E1263E0000000000E4E7EC25 +S315E064B34000E1265B00E4E7F300E126630000000029 +S315E064B35000E4E80F00E1267C0000000000E4E82F4A +S315E064B36000E1269A0000000000E4E83A00E126A73E +S315E064B3700000000000E4E85A00E126C40000000092 +S315E064B38000E4E86F00E126D90000000000E4E88804 +S315E064B39000E126F30000000000E4E92D00E127AABD +S315E064B3A000E4E95200E127CB0000000000E4E95A3A +S315E064B3B000E127D30000000000E4E96E00E127E73E +S315E064B3C00000000000E4E98000E127F900000000E5 +S315E064B3D000E4E98600E127FF00E4E99600E1280F4E +S315E064B3E00000000000E4E9B800E1282A000000005B +S315E064B3F000E4E9CD00E1283F0000000000E4E9D183 +S315E064B40000E128430000000000E4E9DC00E12850A4 +S315E064B4100000000000E4E9F100E1286500000000B6 +S315E064B42000E4EA0700E1287C0000000000E4EA2684 +S315E064B43000E1289B0000000000E4EA3200E128A96C +S315E064B4400000000000E4EA3E00E128BA00000000E3 +S315E064B45000E4EA5300E128CF0000000000E4EA5B80 +S315E064B46000E128DA0000000000E4EA6E00E128EE7C +S315E064B4700000000000E4EA7200E128F10000000048 +S315E064B48000E4EA8600E10B1F0000000000E4EA97AE +S315E064B49000E129050000000000E4EAA500E12916C0 +S315E064B4A00000000000E4EABC00E1292E00E4EAD3EF +S315E064B4B000E1294A0000000000E4EAED00E12969C0 +S315E064B4C00000000000E4EB8A00E12A0B00000000C3 +S315E064B4D000E4EB9400E12A160000000000E4EBB11E +S315E064B4E000E12A330000000000E4EBBF00E12A3B00 +S315E064B4F00000000000E4EC8100E12AEB00000000BB +S315E064B50000E4ED0F00E12B6C0000000000E4ED8F39 +S315E064B51000E12BF30000000000E4EE5700E12BFDB0 +S315E064B52000E4ED9600E12C160000000000E4EE7005 +S315E064B53000E12CC90000000000E4EE7B00E12CD5BC +S315E064B5400000000000E4EF1800E12D730000000045 +S315E064B55000E4EF6600E12DC00000000000E4F01AAC +S315E064B56000E12E790000000000E4F0D800E12F4508 +S315E064B57000E4F0E100E12F500000000000E4F199FE +S315E064B58000E12FD10000000000E4F1AC00E12FE619 +S315E064B5900000000000E4F1C500E1300100000000B5 +S315E064B5A000E4F25D00E130B10000000000E4F26C1A +S315E064B5B000E130C40000000000E4F31800E1317FEC +S315E064B5C00000000000E4F33300E1319A000000007B +S315E064B5D000E4F35700E131BE0000000000E4F3EB61 +S315E064B5E000E132480000000000E4F3F500E1325285 +S315E064B5F00000000000E4F41700E1326F0000000090 +S315E064B60000E4F42B00E132830000000000E4F4344B +S315E064B61000E1328C0000000000E4F43B00E1329586 +S315E064B6200000000000E4F44800E132A200000000FB +S315E064B63000E4F45C00E132B60000000000E4F4717A +S315E064B64000E132CB0000000000E4F47900E1152269 +S315E064B6500000000000E4F48100E132D30000000061 +S315E064B66000E4F4A900E132FD0000000000E4F4CD5A +S315E064B67000E1330B0000000000E4F56400E133AD63 +S315E064B6800000000000E4F56E00E133B7000000005E +S315E064B69000E4F58B00E133CF0000000000E4F63609 +S315E064B6A000E134680000000000E4F6C300E1350818 +S315E064B6B00000000000E4F75C00E135B7000000003C +S315E064B6C000E4F76D00E135C90000000000E4F787A7 +S315E064B6D000E135E30000000000E4DBB000E1360F92 +S315E064B6E00000000000E4DBB100E1375C000000002C +S315E064B6F000E4DC2E00E137DB0000000000E4DC3E21 +S315E064B70000E137EC0000000000E4DC5900E0FC678F +S315E064B71000E4DC6000E1380800E4DC8800E1382518 +S315E064B7200000000000E4DC9800E1383B0000000023 +S315E064B73000E4DD3100E138CA0000000000E4DD46E3 +S315E064B74000E138DC0000000000E4DD5A00E138F096 +S315E064B7500000000000E4DD7400E139100000000040 +S315E064B76000E4DD8D00E1392D0000000000E4DDAD8C +S315E064B77000E1394F0000000000E4DDCC00E139630C +S315E064B78000E4DDD700E1396D0000000000E4DDE7A8 +S315E064B79000E1397F0000000000E4DDFB00E139945C +S315E064B7A00000000000E4DE1000E139AB00000000B8 +S315E064B7B000E4DE5200E139ED0000000000E4DE5C06 +S315E064B7C000E139FC0000000000E4DE7100E13A18B3 +S315E064B7D000E4DE9000E13A370000000000E4DEA415 +S315E064B7E000E13A4E0000000000E4DEB100E13A5ABE +S315E064B7F00000000000E4DECE00E13A7300000000E1 +S315E064B80000E4DEDF00E13A800000000000E4DF05EA +S315E064B81000E13AA30000000000E4DF1D00E13AB570 +S315E064B8200000000000E4DFF200E13B660000000097 +S315E064B83000E4E00700E13B790000000000E4E00E8C +S315E064B84000E13B7F0000000000E4E03300E13BA35D +S315E064B8500000000000E4E0C600E13C3200000000C5 +S315E064B86000E4E17300E13CD50000000000E4E18B14 +S315E064B87000E13CEC0000000000E4E1B200E13D0FD1 +S315E064B8800000000000E4E1CE00E101E90000000010 +S315E064B89000E4E1D100E13D2A0000000000E4E1E5D6 +S315E064B8A000E13D3E0000000000E4E1F500E13D52C8 +S315E064B8B000E4E20400E13D600000000000E4E20D23 +S315E064B8C000E13D6B0000000000E4E24700E13D9AE0 +S315E064B8D00000000000E4E2B500E13DE100000000A4 +S315E064B8E000E4E2B800E13DE40000000000E4E2BB0D +S315E064B8F000E13DEB0000000000E4E2C000E13DF45D +S315E064B9000000000000E4E2CF00E13E010000000038 +S315E064B91000E4E2DB00E13E0F0000000000E4E2F157 +S315E064B92000E13E220000000000E4E31E00E13E3355 +S315E064B93000E4E30500E13E820000000000E4E3B2D7 +S315E064B94000E13E9B0000000000E4E3C900E13EBA8A +S315E064B9500000000000E4E3E400E13ED500000000FE +S315E064B96000E4E3F100E13EE10000000000E4E452BB +S315E064B97000E13F3C00E4E47100E13F5B000000006D +S315E064B98000E4E47D00E13F640000000000E4E49943 +S315E064B99000E13F8B0000000000E4E4E800E13FE002 +S315E064B9A00000000000E4E4FF00E13FFC000000006A +S315E064B9B000E4E51200E1400B0000000000E4E51B52 +S315E064B9C000E140140000000000E4E53600E1402FA9 +S315E064B9D000E4E53E00E140360000000000E4E552A4 +S315E064B9E000E1404D0000000000E4E55F00E1405BFB +S315E064B9F00000000000E4E56C00E140640000000043 +S315E064BA0000E4E57D00E140720000000000E4E5F753 +S315E064BA1000E140D90000000000E4E5FC00E140E11B +S315E064BA200000000000E4E60600E140EB00000000F0 +S315E064BA3000E4E62200E141080000000000E4E66E6E +S315E064BA4000E141470000000000E4E72400E141BC76 +S315E064BA500000000000E4E72F00E141C900000000B7 +S315E064BA6000E4E73700E141D30000000000E4E7AD1D +S315E064BA7000E1424E0000000000E4E7B400E1425514 +S315E064BA8000E4E7BB00E1425E0000000000E4E7D7C3 +S315E064BA9000E142730000000000E4E7EC00E142925A +S315E064BAA000E4E7F300E1429C0000000000E4E80FF4 +S315E064BAB000E142BE0000000000E4E82F00E142DE5F +S315E064BAC00000000000E4E83A00E142EA0000000019 +S315E064BAD000E4E85A00E1430C0000000000E4E86F8B +S315E064BAE000E143220000000000E4E88800E1433E10 +S315E064BAF00000000000E4E92D00E143CC00E4E952F3 +S315E064BB0000E143E60000000000E4E95A00E143F0A6 +S315E064BB100000000000E4E96E00E144040000000077 +S315E064BB2000E4E98000E144140000000000E4E986F2 +S315E064BB3000E1441C00E4E99600E1442C00000000C6 +S315E064BB4000E4E9B800E1444C0000000000E4E9CD1B +S315E064BB5000E1445E0000000000E4E9D100E14463F2 +S315E064BB600000000000E4E9DC00E1446F000000004E +S315E064BB7000E4E9F100E144850000000000E4EA073E +S315E064BB8000E144960000000000E4EA2600E144B5E2 +S315E064BB900000000000E4EA3200E144C20000000074 +S315E064BBA000E4EA3E00E144CE0000000000E4EA532B +S315E064BBB000E144E40000000000E4EA5B00E144ECF8 +S315E064BBC00000000000E4EA6E00E144FF00000000CB +S315E064BBD000E4EA7200E145050000000000E4EA865C +S315E064BBE000E10B1F0000000000E4EA9700E145195C +S315E064BBF00000000000E4EAA500E14527000000003B +S315E064BC0000E4EABC00E1453C00E4EAD300E1455ADD +S315E064BC100000000000E4EAED00E145770000000082 +S315E064BC2000E4EB8A00E145F60000000000E4EB94F2 +S315E064BC3000E146020000000000E4EBB100E14619D1 +S315E064BC400000000000E4EBBF00E1462B00000000CA +S315E064BC5000E4EC8100E146DA0000000000E4ED0F68 +S315E064BC6000E147580000000000E4ED8F00E147B5CD +S315E064BC700000000000E4EE5700E147BC00E4ED9606 +S315E064BC8000E147D50000000000E4EE7000E1488181 +S315E064BC900000000000E4EE7B00E14889000000005B +S315E064BCA000E4EF1800E149180000000000E4EF66E4 +S315E064BCB000E1494B0000000000E4F01A00E149DECF +S315E064BCC00000000000E4F0D800E14A8700E4F0E117 +S315E064BCD000E14A8E0000000000E4F19900E14B00C7 +S315E064BCE00000000000E4F1AC00E14B12000000004B +S315E064BCF000E4F1C500E14B310000000000E4F25DD0 +S315E064BD0000E14BF00000000000E4F26C00E14BFF60 +S315E064BD100000000000E4F31800E14C8A0000000033 +S315E064BD2000E4F33300E14C9D0000000000E4F357C7 +S315E064BD3000E14CC10000000000E4F3EB00E14D5289 +S315E064BD400000000000E4F3F500E14D5D0000000052 +S315E064BD5000E4F41700E14D7D0000000000E4F42BFC +S315E064BD6000E14D910000000000E4F43400E14D9AF6 +S315E064BD700000000000E4F43B00E14DA10000000097 +S315E064BD8000E4F44800E14DAD0000000000E4F45C3A +S315E064BD9000E14DC10000000000E4F47100E14DD71C +S315E064BDA00000000000E4F47900E14DDC00000000EE +S315E064BDB000E4F48100E14DE30000000000E4F4A94E +S315E064BDC000E14E060000000000E4F4CD00E14E24FC +S315E064BDD00000000000E4F56400E14EC400000000E9 +S315E064BDE000E4F56E00E14ECF0000000000E4F58B60 +S315E064BDF000E14EEB0000000000E4F63600E14F752A +S315E064BE000000000000E4F6C300E14FF50000000026 +S315E064BE1000E4F75C00E150820000000000E4F76DA6 +S315E064BE2000E150930000000000E4F78700E150AEC3 +S315E064BE300000000000E4DBB000E150CC000000004C +S315E064BE4000E4DBB100E152080000000000E4DC2E0F +S315E064BE5000E152950000000000E4DC3E00E152A7F8 +S315E064BE600000000000E4DC5900E0FC6700E4DC600C +S315E064BE7000E152C500E4DC8800E152EC0000000019 +S315E064BE8000E4DC9800E152FE0000000000E4DD31ED +S315E064BE9000E1539B0000000000E4DD4600E153B29C +S315E064BEA00000000000E4DD5A00E153C60000000033 +S315E064BEB000E4DD7400E153E50000000000E4DD8D9C +S315E064BEC000E153FF0000000000E4DDAD00E1541B37 +S315E064BED00000000000E4DDCC00E1543100E4DDD78D +S315E064BEE000E1543D0000000000E4DDE700E1544772 +S315E064BEF00000000000E4DDFB00E1545B00000000AC +S315E064BF0000E4DE1000E1546A0000000000E4DE5262 +S315E064BF1000E154AB0000000000E4DE5C00E154B6EE +S315E064BF200000000000E4DE7100E154D400E4DE9039 +S315E064BF3000E154F30000000000E4DEA400E15507EC +S315E064BF400000000000E4DEB100E1551600000000E8 +S315E064BF5000E4DECE00E155340000000000E4DEDFFC +S315E064BF6000E155460000000000E4DF0500E1556AA3 +S315E064BF700000000000E4DF1D00E1558400000000DD +S315E064BF8000E4DFF200E156370000000000E4E00779 +S315E064BF9000E1564C0000000000E4E00E00E1565378 +S315E064BFA00000000000E4E03300E1567800000000A1 +S315E064BFB000E4E0C600E157060000000000E4E17337 +S315E064BFC000E157950000000000E4E18B00E157A929 +S315E064BFD00000000000E4E1B200E157CD000000009B +S315E064BFE000E4E1CE00E101E90000000000E4E1D113 +S315E064BFF000E157E90000000000E4E1E500E157FEF6 +S315E064C0000000000000E4E1F500E1581300E4E20416 +S315E064C01000E158200000000000E4E20D00E1582849 +S315E064C0200000000000E4E24700E1585E0000000022 +S315E064C03000E4E2B500E158B80000000000E4E2B8CC +S315E064C04000E158BB0000000000E4E2BB00E158BF39 +S315E064C0500000000000E4E2C000E158C8000000000F +S315E064C06000E4E2CF00E158D80000000000E4E2DB3F +S315E064C07000E158E20000000000E4E2F100E158F675 +S315E064C0800000000000E4E31E00E1590800E4E30573 +S315E064C09000E159910000000000E4E3B200E159A830 +S315E064C0A00000000000E4E3C900E159C200000000BA +S315E064C0B000E4E3E400E159DD0000000000E4E3F1BC +S315E064C0C000E159E70000000000E4E45200E15A357B +S315E064C0D000E4E47100E15A540000000000E4E47D09 +S315E064C0E000E15A5D0000000000E4E49900E15A7A58 +S315E064C0F00000000000E4E4E800E15AC0000000004B +S315E064C10000E4E4FF00E15ADA0000000000E4E5122E +S315E064C11000E15AEF0000000000E4E51B00E15AF894 +S315E064C1200000000000E4E53600E15B1300E4E53E70 +S315E064C13000E15B1E0000000000E4E55200E15B2FD5 +S315E064C1400000000000E4E55F00E15B3D0000000004 +S315E064C15000E4E56C00E15B4A0000000000E4E57D94 +S315E064C16000E15B5B0000000000E4E5F700E15BCA28 +S315E064C1700000000000E4E5FC00E15BD300000000A1 +S315E064C18000E4E60600E15BDD0000000000E4E62290 +S315E064C19000E15BFB0000000000E4E66E00E15C4564 +S315E064C1A00000000000E4E72400E15CED000000002C +S315E064C1B000E4E72F00E15CF80000000000E4E73704 +S315E064C1C000E15D010000000000E4E7AD00E15D6FC1 +S315E064C1D00000000000E4E7B400E1262000E4E7BBE9 +S315E064C1E000E15D770000000000E4E7D700E15D8CE4 +S315E064C1F00000000000E4E7EC00E15DA600E4E7F39C +S315E064C20000E15DAF0000000000E4E80F00E15DC816 +S315E064C2100000000000E4E82F00E15DE600000000B5 +S315E064C22000E4E83A00E15DF30000000000E4E85A67 +S315E064C23000E15E130000000000E4E86F00E15E28C0 +S315E064C2400000000000E4E88800E15E4300000000CE +S315E064C25000E4E92D00E15ED300E4E95200E15EF931 +S315E064C2600000000000E4E95A00E15F02000000001B +S315E064C27000E4E96E00E15F160000000000E4E98096 +S315E064C28000E15F240000000000E4E98600E15F2D40 +S315E064C29000E4E99600E15F3D0000000000E4E9B8EF +S315E064C2A000E15F5E0000000000E4E9CD00E158B81B +S315E064C2B00000000000E4E9D100E15F7100000000E5 +S315E064C2C000E4E9DC00E15F7E0000000000E4E9F1FF +S315E064C2D000E15F930000000000E4EA0700E15FA686 +S315E064C2E00000000000E4EA2600E15FC5000000000B +S315E064C2F000E4EA3200E15FD20000000000E4EA3ED6 +S315E064C30000E15FE20000000000E4EA5300E15FF769 +S315E064C3100000000000E4EA5B00E160000000000069 +S315E064C32000E4EA6E00E158BB0000000000E4EA7253 +S315E064C33000E160170000000000E4EA8600E10B1FFC +S315E064C3400000000000E4EA9700E1602B00000000D2 +S315E064C35000E4EAA500E160390000000000E4EABC1C +S315E064C36000E1605400E4EAD300E1606F000000009D +S315E064C37000E4EAED00E160880000000000E4EB8A96 +S315E064C38000E1611E0000000000E4EB9400E1612638 +S315E064C3900000000000E4EBB100E161400000000051 +S315E064C3A000E4EBBF00E1614E0000000000E4EC81D4 +S315E064C3B000E162020000000000E4ED0F00E162903B +S315E064C3C00000000000E4ED8F00E163080000000077 +S315E064C3D000E4EE5700E1631200E4ED9600E16327C2 +S315E064C3E00000000000E4EE7000E163D000000000AD +S315E064C3F000E4EE7B00E163DB0000000000E4EF189C +S315E064C40000E1647E0000000000E4EF6600E164CDD4 +S315E064C4100000000000E4F01A00E1657D0000000021 +S315E064C42000E4F0D800E1663600E4F0E100E166435A +S315E064C4300000000000E4F19900E166BC0000000041 +S315E064C44000E4F1AC00E166CB0000000000E4F1C575 +S315E064C45000E166E60000000000E4F25D00E1676B7F +S315E064C4600000000000E4F26C00E16779000000007F +S315E064C47000E4F31800E1681B0000000000E4F33315 +S315E064C48000E168340000000000E4F35700E168541A +S315E064C4900000000000E4F3EB00E168E60000000061 +S315E064C4A000E4F3F500E168F30000000000E4F4174B +S315E064C4B000E169100000000000E4F42B00E1692467 +S315E064C4C00000000000E4F43400E1692D000000009F +S315E064C4D000E4F43B00E169370000000000E4F4485E +S315E064C4E000E169440000000000E4F45C00E169589E +S315E064C4F00000000000E4F47100E1696D00000000F2 +S315E064C50000E4F47900E169750000000000E4F48178 +S315E064C51000E1697B0000000000E4F4A900E169A1A0 +S315E064C5200000000000E4F4CD00E169B4000000001E +S315E064C53000E4F56400E16A5A0000000000E4F56E88 +S315E064C54000E16A640000000000E4F58B00E16A7EC5 +S315E064C5500000000000E4F63600E16B330000000002 +S315E064C56000E4F6C300E16BBF0000000000E4F75CA2 +S315E064C57000E16C550000000000E4F76D00E16C66D4 +S315E064C5800000000000E4F78700E16C810000000031 +S315E064C59000E4DBB000E16CAB0000000000E4DBB17A +S315E064C5A000E16DE30000000000E4DC2E00E16E4C87 +S315E064C5B00000000000E4DC3E00E16E5F0000000085 +S315E064C5C000E4DC5900E0FC6700E4DC6000E16E83D3 +S315E064C5D000E4DC8800E16EA30000000000E4DC987F +S315E064C5E000E16EB70000000000E4DD3100E16F5564 +S315E064C5F00000000000E4DD4600E16F690000000031 +S315E064C60000E4DD5A00E16F820000000000E4DD74BE +S315E064C61000E16F960000000000E4DD8D00E16FB597 +S315E064C6200000000000E4DDAD00E16FD7000000002B +S315E064C63000E4DDCC00E16FF100E4DDD700E17003F6 +S315E064C6400000000000E4DDE700E1701B000000008C +S315E064C65000E4DDFB00E1702F0000000000E4DE1082 +S315E064C66000E1704C0000000000E4DE5200E1708EF0 +S315E064C6700000000000E4DE5C00E170A10000000060 +S315E064C68000E4DE7100E170BD00E4DE9000E170DCA0 +S315E064C6900000000000E4DEA400E170F400000000A5 +S315E064C6A000E4DEB100E171050000000000E4DECEE6 +S315E064C6B000E1712A0000000000E4DEDF00E1714081 +S315E064C6C00000000000E4DF0500E1715F00000000A7 +S315E064C6D000E4DF1D00E171790000000000E4DFF2B0 +S315E064C6E000E1722F0000000000E4E00700E1724F11 +S315E064C6F00000000000E4E00E00E172580000000073 +S315E064C70000E4E03300E1727F0000000000E4E0C68C +S315E064C71000E1730B0000000000E4E17300E1738F55 +S315E064C7200000000000E4E18B00E173AD000000006E +S315E064C73000E4E1B200E173D30000000000E4E1CE7E +S315E064C74000E101E90000000000E4E1D100E173F1F9 +S315E064C7500000000000E4E1E500E174070000000089 +S315E064C76000E4E1F500E1741900E4E20400E1742810 +S315E064C7700000000000E4E20D00E174340000000013 +S315E064C78000E4E24700E174790000000000E4E2B509 +S315E064C79000E174C80000000000E4E2B800E102DBF6 +S315E064C7A00000000000E4E2BB00E174CB000000009E +S315E064C7B000E4E2C000E174D00000000000E4E2CFEF +S315E064C7C000E174DF0000000000E4E2DB00E174EA0B +S315E064C7D00000000000E4E2F100E174FF0000000004 +S315E064C7E000E4E31E00E1751400E4E30500E1759AF4 +S315E064C7F00000000000E4E3B200E175B70000000069 +S315E064C80000E4E3C900E175D10000000000E4E3E47C +S315E064C81000E175EE0000000000E4E3F100E176007B +S315E064C8200000000000E4E45200E1763F00E4E471D5 +S315E064C83000E1765E0000000000E4E47D00E17669F4 +S315E064C8400000000000E4E49900E1768A000000005C +S315E064C85000E4E4E800E176D20000000000E4E4FFEE +S315E064C86000E176EE0000000000E4E51200E17708FE +S315E064C8700000000000E4E51B00E177110000000021 +S315E064C88000E4E53600E1773300E4E53E00E1773C39 +S315E064C8900000000000E4E55200E177550000000086 +S315E064C8A000E4E55F00E1776B0000000000E4E56C1E +S315E064C8B000E1777A0000000000E4E57D00E1778B33 +S315E064C8C00000000000E4E5F700E106730000000004 +S315E064C8D000E4E5FC00E177F50000000000E4E6062C +S315E064C8E000E178020000000000E4E62200E1781F3F +S315E064C8F00000000000E4E66E00E1786F00000000EE +S315E064C90000E4E72400E179070000000000E4E72F93 +S315E064C91000E179160000000000E4E73700E1791FE2 +S315E064C9200000000000E4E7AD00E1798A0000000061 +S315E064C93000E4E7B400E1262000E4E7BB00E1799196 +S315E064C9400000000000E4E7D700E179B000000000F1 +S315E064C95000E4E7EC00E179CA00E4E7F300E179D4C6 +S315E064C9600000000000E4E80F00E179EF0000000059 +S315E064C97000E4E82F00E17A160000000000E4E83AFB +S315E064C98000E17A240000000000E4E85A00E17A431A +S315E064C9900000000000E4E86F00E17A5A000000005D +S315E064C9A000E4E88800E17A700000000000E4E92D24 +S315E064C9B000E17B0400E4E95200E17B23000000002F +S315E064C9C000E4E95A00E17B2C0000000000E4E96E33 +S315E064C9D000E17B450000000000E4E98000E17B596A +S315E064C9E00000000000E4E98600E17B5F00E4E9968C +S315E064C9F000E17B730000000000E4E9B800E17BA29B +S315E064CA000000000000E4E9CD00E10A6400000000F3 +S315E064CA1000E4E9D100E17BBE0000000000E4E9DC6B +S315E064CA2000E17BCC0000000000E4E9F100E17BE397 +S315E064CA300000000000E4EA0700E17BF90000000082 +S315E064CA4000E4EA2600E17C180000000000E4EA3233 +S315E064CA5000E17C2A0000000000E4EA3E00E17C3963 +S315E064CA600000000000E4EA5300E17C5000000000AE +S315E064CA7000E4EA5B00E17C590000000000E4EA6E51 +S315E064CA8000E17C740000000000E4EA7200E17C7777 +S315E064CA900000000000E4EA8600E10B1F00000000ED +S315E064CAA000E4EA9700E17C900000000000E4EAA577 +S315E064CAB000E17CA00000000000E4EABC00E17CBA8E +S315E064CAC000E4EAD300E17CD30000000000E4EAED90 +S315E064CAD000E17CF70000000000E4EB8A00E17D877A +S315E064CAE00000000000E4EB9400E17D9200000000A9 +S315E064CAF000E4EBB100E17DB00000000000E4EBBFD0 +S315E064CB0000E17DC60000000000E4EC8100E17E62A5 +S315E064CB100000000000E4ED0F00E17ECF00000000BD +S315E064CB2000E4ED8F00E17F380000000000E4EE579A +S315E064CB3000E17F4100E4ED9600E17F5C00000000E7 +S315E064CB4000E4EE7000E1800E0000000000E4EE7B9D +S315E064CB5000E1801A0000000000E4EF1800E180AD17 +S315E064CB600000000000E4EF6600E180F500000000EC +S315E064CB7000E4F01A00E1819B0000000000E4F0D8D4 +S315E064CB8000E1824700E4F0E100E182500000000049 +S315E064CB9000E4F19900E182CF0000000000E4F1AC2A +S315E064CBA000E182E80000000000E4F1C500E18301F1 +S315E064CBB00000000000E4F25D00E183920000000002 +S315E064CBC000E4F26C00E183A30000000000E4F318E3 +S315E064CBD000E1845A0000000000E4F33300E1847964 +S315E064CBE00000000000E4F35700E1849700000000D1 +S315E064CBF000E4F3EB00E185230000000000E4F3F5D4 +S315E064CC0000E1852B0000000000E4F41700E18547AD +S315E064CC100000000000E4F42B00E185600000000001 +S315E064CC2000E4F43400E185690000000000E4F43BCC +S315E064CC3000E185710000000000E4F44800E18583CA +S315E064CC400000000000E4F45C00E1859C0000000064 +S315E064CC5000E4F47100E185B30000000000E4F479D7 +S315E064CC6000E185BB0000000000E4F48100E185C3D7 +S315E064CC700000000000E4F4A900E185EE0000000095 +S315E064CC8000E4F4CD00E1860C0000000000E4F56405 +S315E064CC9000E186960000000000E4F56E00E186A1FE +S315E064CCA00000000000E4F58B00E186BB00000000B4 +S315E064CCB000E4F63600E1875E0000000000E4F6C3B7 +S315E064CCC000E187DE0000000000E4F75C00E1886ACA +S315E064CCD00000000000E4F76D00E1887C00000000DD +S315E064CCE000E4F78700E1889E0000000000E4DBB022 +S315E064CCF000E188CA0000000000E4DBB100E189E1FC +S315E064CD000000000000E4DC2E00E18A65000000001B +S315E064CD1000E4DC3E00E18A770000000000E4DC88A1 +S315E064CD2000E18A9400E4DC5900E0FC6700E4DC603E +S315E064CD3000E18AA70000000000E4DC9800E18ACE06 +S315E064CD400000000000E4DD3100E18B7300000000C8 +S315E064CD5000E4DD4600E18B8B0000000000E4DD5A70 +S315E064CD6000E18BAB0000000000E4DD7400E18BCAF7 +S315E064CD700000000000E4DD8D00E18BE600000000C9 +S315E064CD8000E4DDAD00E18BFF0000000000E4DDCCF3 +S315E064CD9000E18C2800E4DDD700E18C390000000076 +S315E064CDA000E4DDE700E18C450000000000E4DDFB23 +S315E064CDB000E18C5B0000000000E4DE1000E18C6CB6 +S315E064CDC00000000000E4DE5200E18CAE00000000EA +S315E064CDD000E4DE5C00E18CBB0000000000E4DE7190 +S315E064CDE000E18CD700E4DE9000E18CF60000000000 +S315E064CDF000E4DEA400E18D120000000000E4DEB190 +S315E064CE0000E18D1E0000000000E4DECE00E18D3F0F +S315E064CE100000000000E4DEDF00E18D520000000067 +S315E064CE2000E4DF0500E18D790000000000E4DF1D29 +S315E064CE3000E18D950000000000E4DFF200E18E4839 +S315E064CE400000000000E4E00700E18E6300000000FB +S315E064CE5000E4E00E00E18E690000000000E4E033E7 +S315E064CE6000E18E8F0000000000E4E0C600E18F3C44 +S315E064CE700000000000E4E17300E18FE900000000D7 +S315E064CE8000E4E18B00E190050000000000E4E1B21B +S315E064CE9000E1902D0000000000E4E1CE00E190485E +S315E064CEA00000000000E4E1D100E1904B00000000E6 +S315E064CEB000E4E1E500E190610000000000E4E1F5F2 +S315E064CEC000E1021300E4E20400E19079000000006E +S315E064CED000E4E20D00E190830000000000E4E24734 +S315E064CEE000E190CD0000000000E4E2B500E1911CB1 +S315E064CEF00000000000E4E2B800E1912000000000D8 +S315E064CF0000E4E2BB00E191240000000000E4E2C03A +S315E064CF1000E1912C0000000000E4E2CF00E19139E9 +S315E064CF200000000000E4E2DB00E191440000000060 +S315E064CF3000E4E2F100E191560000000000E4E31E43 +S315E064CF4000E1916400E4E30500E1920E0000000074 +S315E064CF5000E4E3B200E1922B0000000000E4E3C9E0 +S315E064CF6000E192450000000000E4E3E400E192633E +S315E064CF700000000000E4E3F100E1926B00000000D1 +S315E064CF8000E4E45200E192CA00E4E47100E192E96B +S315E064CF900000000000E4E47D00E192F2000000009D +S315E064CFA000E4E49900E193100000000000E4E4E8A2 +S315E064CFB000E193640000000000E4E4FF00E1937E96 +S315E064CFC00000000000E4E51200E193920000000036 +S315E064CFD000E4E51B00E1939B0000000000E4E53615 +S315E064CFE000E193BB00E4E53E00E193C70000000086 +S315E064CFF000E4E55200E193DE0000000000E4E55F52 +S315E064D00000E193EF0000000000E4E56C00E19402C7 +S315E064D0100000000000E4E57D00E1941400000000F7 +S315E064D02000E4E5F700E194930000000000E4E5FC29 +S315E064D03000E194980000000000E4E60600E194AAAA +S315E064D0400000000000E4E62200E194C6000000006F +S315E064D05000E4E66E00E195100000000000E4E724D9 +S315E064D06000E195C90000000000E4E72F00E195DBEC +S315E064D0700000000000E4E73700E195E1000000000D +S315E064D08000E4E7AD00E1798A0000000000E4E7B47B +S315E064D09000E1262000E4E7BB00E1966400000000BE +S315E064D0A000E4E7D700E196830000000000E4E7ECE3 +S315E064D0B000E1969F00E4E7F300E196A80000000033 +S315E064D0C000E4E80F00E196D10000000000E4E82FF8 +S315E064D0D000E196F20000000000E4E83A00E196FF21 +S315E064D0E00000000000E4E85A00E1972D000000002B +S315E064D0F000E4E86F00E1974A0000000000E4E88895 +S315E064D10000E197630000000000E4E92D00E1981B6C +S315E064D11000E4E95200E1983F0000000000E4E95AC7 +S315E064D12000E198450000000000E4E96E00E19865DE +S315E064D1300000000000E4E98000E198760000000069 +S315E064D14000E4E99600E1987B00E4E98600E198A9C9 +S315E064D1500000000000E4E9B800E198B800000000CF +S315E064D16000E4E9CD00E1911C0000000000E4E9D1AF +S315E064D17000E198C90000000000E4E9DC00E198D62B +S315E064D1800000000000E4E9F100E198F3000000002B +S315E064D19000E4EA0700E199090000000000E4EA26F9 +S315E064D1A000E199280000000000E4EA3200E19938E1 +S315E064D1B00000000000E4EA3E00E19944000000005B +S315E064D1C000E4EA5300E199610000000000E4EA5BF0 +S315E064D1D000E1996C0000000000E4EA6E00E1912051 +S315E064D1E00000000000E4EA7200E1998400000000B7 +S315E064D1F000E4EA8600E199A40000000000E4EA970E +S315E064D20000E199B60000000000E4EAA500E199C8EF +S315E064D2100000000000E4EABC00E199E100E4EAD33E +S315E064D22000E199FE0000000000E4EAED00E19A20E6 +S315E064D2300000000000E4EB8A00E19AAA0000000026 +S315E064D24000E4EB9400E19AB50000000000E4EBB181 +S315E064D25000E19AD20000000000E4EBBF00E19AE44A +S315E064D2600000000000E4EC8100E19BA70000000000 +S315E064D27000E4ED0F00E19C320000000000E4ED8F75 +S315E064D28000E19CC80000000000E4EE5700E19CD198 +S315E064D29000E4ED9600E19CE80000000000E4EE7036 +S315E064D2A000E19DB60000000000E4EE7B00E19DC471 +S315E064D2B00000000000E4EF1800E19E640000000056 +S315E064D2C000E4EF6600E19EB80000000000E4F01AB6 +S315E064D2D000E19F700000000000E4F0D800E1A025C2 +S315E064D2E000E4F0E100E1A0300000000000E4F19920 +S315E064D2F000E1A0BB0000000000E4F1AC00E1A0CDD9 +S315E064D3000000000000E4F1C500E1A0E800000000D0 +S315E064D31000E4F25D00E1A1870000000000E4F26C45 +S315E064D32000E1A19C0000000000E4F31800E1A252D1 +S315E064D3300000000000E4F33300E1A26D00000000A9 +S315E064D34000E4F35700E1A28D0000000000E4F3EB93 +S315E064D35000E1A31C0000000000E4F3F500E1A3296A +S315E064D3600000000000E4F41700E1A35400000000AC +S315E064D37000E4F42B00E1A3740000000000E4F4345C +S315E064D38000E1A37D0000000000E4F43B00E1A38734 +S315E064D3900000000000E4F44800E1A395000000000A +S315E064D3A000E4F45C00E1A3B50000000000E4F4717D +S315E064D3B000E1A3D20000000000E4F47900E1A3DE1A +S315E064D3C00000000000E4F48100E1A3E50000000051 +S315E064D3D000E4F4A900E1A40C0000000000E4F4CD4C +S315E064D3E000E1A4250000000000E4F56400E1A4D9AE +S315E064D3F00000000000E4F56E00E1A4E00000000037 +S315E064D40000E4F58B00E1A4FD0000000000E4F636DC +S315E064D41000E1A5A50000000000E4F6C300E1A64231 +S315E064D4200000000000E4F75C00E1A6E7000000000D +S315E064D43000E4F76D00E1A6FE0000000000E4F78773 +S315E064D44000E1A71E0000000000E4DBB000E1A74CA9 +S315E064D4500000000000E4DBB100E1A86E000000001B +S315E064D46000E4DC2E00E1A8F00000000000E4DC3E0D +S315E064D47000E1A9010000000000E4DC5900E1A91A1A +S315E064D48000E4DC6000E1A92100E4DC8800E1A9496C +S315E064D4900000000000E4DC9800E1A95F0000000001 +S315E064D4A000E4DD3100E1A9F90000000000E4DD46B6 +S315E064D4B000E1AA0F0000000000E4DD5A00E1AA2BB7 +S315E064D4C00000000000E4DD7400E1AA490000000009 +S315E064D4D000E4DD8D00E1AA600000000000E4DDAD5B +S315E064D4E000E1AA830000000000E4DDCC00E1AA9636 +S315E064D4F000E4DDD700E1AA9F0000000000E4DDE778 +S315E064D50000E1AAA90000000000E4DDFB00E1AABF97 +S315E064D5100000000000E4DE1000E1AACE0000000096 +S315E064D52000E4DE5200E1AB0F0000000000E4DE5CE4 +S315E064D53000E1AB1E0000000000E4DE7100E1AB3701 +S315E064D54000E4DE9000E1AB550000000000E4DEA4F8 +S315E064D55000E1AB710000000000E4DEB100E1AB8005 +S315E064D5600000000000E4DECE00E1ABA200000000B3 +S315E064D57000E4DEDF00E1ABB50000000000E4DF05B7 +S315E064D58000E1ABDC0000000000E4DF1D00E1ABF984 +S315E064D5900000000000E4DFF200E1AC9F0000000060 +S315E064D5A000E4E00700E1ACBD0000000000E4E00E4A +S315E064D5B000E1ACC40000000000E4E03300E1ACE963 +S315E064D5C00000000000E4E0C600E1AD830000000076 +S315E064D5D000E4E17300E1AE240000000000E4E18BC6 +S315E064D5E000E1AE390000000000E4E1B200E1AE64BF +S315E064D5F00000000000E4E1CE00E1AE81000000003E +S315E064D60000E4E1D100E1AE840000000000E4E1E57D +S315E064D61000E1AE970000000000E4E1F500E1AEB1A0 +S315E064D62000E4E20400E1AEBF0000000000E4E20DC5 +S315E064D63000E1AEC70000000000E4E24700E1AF03AA +S315E064D6400000000000E4E2B500E1AF650000000020 +S315E064D65000E4E2B800E1AF690000000000E4E2BB88 +S315E064D66000E1AF6D0000000000E4E2C000E1AF72EB +S315E064D6700000000000E4E2CF00E1AF8400000000B7 +S315E064D68000E4E2DB00E1AF900000000000E4E2F1D8 +S315E064D69000E1AFA10000000000E4E31E00E1AFB4E6 +S315E064D6A000E4E30500E1B0430000000000E4E3B217 +S315E064D6B000E1B0620000000000E4E3C900E1B07795 +S315E064D6C00000000000E4E3E400E1B095000000003F +S315E064D6D000E4E3F100E1B09C0000000000E4E45201 +S315E064D6E000E1B0F200E4E47100E1B1100000000092 +S315E064D6F000E4E47D00E1B11A0000000000E4E4998E +S315E064D70000E1B1380000000000E4E4E800E1B18B38 +S315E064D7100000000000E4E4FF00E1B1A100000000C5 +S315E064D72000E4E51200E1B1B40000000000E4E51BAA +S315E064D73000E1B1BD0000000000E4E53600E1B1D6E9 +S315E064D74000E4E53E00E1B1E10000000000E4E552FA +S315E064D75000E1B1FA0000000000E4E55F00E1B20B2D +S315E064D7600000000000E4E56C00E1B218000000008F +S315E064D77000E4E57D00E1B22A0000000000E4E5F79C +S315E064D78000E1B29D0000000000E4E5FC00E1B2A225 +S315E064D7900000000000E4E60600E1B2AC0000000030 +S315E064D7A000E4E62200E1B2C70000000000E4E66EB1 +S315E064D7B000E1B3020000000000E4E72400E1B3A85E +S315E064D7C00000000000E4E72F00E1B3B400000000CD +S315E064D7D000E4E73700E1B3BC0000000000E4E7AD35 +S315E064D7E000E1B4480000000000E4E7B400E1B450AE +S315E064D7F000E4E7BB00E1B4590000000000E4E7D7C9 +S315E064D80000E1B4760000000000E4E7EC00E1B490E7 +S315E064D81000E4E7F300E1B4970000000000E4E80FF9 +S315E064D82000E1B4BC0000000000E4E82F00E1B4D9F4 +S315E064D8300000000000E4E83A00E1B4E5000000001E +S315E064D84000E4E85A00E1B5070000000000E4E86F90 +S315E064D85000E1B5220000000000E4E88800E1B53E9E +S315E064D8600000000000E4E92D00E1B5E300E4E952DC +S315E064D87000E1B6070000000000E4E95A00E1B60FF3 +S315E064D8800000000000E4E96E00E1B62B0000000051 +S315E064D89000E4E98000E1B63A0000000000E4E986CD +S315E064D8A000E1B64200E4E99600E1B6530000000008 +S315E064D8B000E4E9B800E1B6730000000000E4E9CDF5 +S315E064D8C000E1B6880000000000E4E9D100E1B68D2D +S315E064D8D00000000000E4E9DC00E1B6990000000025 +S315E064D8E000E4E9F100E1B6B40000000000E4EA0710 +S315E064D8F000E1B6C80000000000E4EA2600E1B6E60E +S315E064D9000000000000E4EA3200E1B6F50000000041 +S315E064D91000E4EA3E00E1B7080000000000E4EA53F0 +S315E064D92000E1B7230000000000E4EA5B00E1B732FF +S315E064D9300000000000E4EA6E00E1B7480000000081 +S315E064D94000E4EA7200E1B74B0000000000E4EA8616 +S315E064D95000E1B7670000000000E4EA9700E1B7770A +S315E064D9600000000000E4EAA500E1B78400000000DE +S315E064D97000E4EABC00E1B79D00E4EAD300E1B7B7AE +S315E064D9800000000000E4EAED00E1B7DA0000000020 +S315E064D99000E4EB8A00E1B8660000000000E4EB9482 +S315E064D9A000E1B86E0000000000E4EBB100E1B88B82 +S315E064D9B00000000000E4EBBF00E1B89B000000005B +S315E064D9C000E4EC8100E1B9610000000000E4ED0FE1 +S315E064D9D000E1B9DF0000000000E4ED8F00E1BA5B2E +S315E064D9E00000000000E4EE5700E1BA6300E4ED965F +S315E064D9F000E1BA7A0000000000E4EE7000E1BB1CCE +S315E064DA000000000000E4EE7B00E1BB2700000000BC +S315E064DA1000E4EF1800E1BBCF0000000000E4EF662D +S315E064DA2000E1BC140000000000E4F01A00E1BCDF91 +S315E064DA300000000000E4F0D800E1BD9500E4F0E108 +S315E064DA4000E1BD9F0000000000E4F17500E1BE1F47 +S315E064DA500000000000E4F19900E1BE3F0000000030 +S315E064DA6000E4F1AC00E1BE4F0000000000E4F1C563 +S315E064DA7000E1BE640000000000E4F25D00E1BEFF88 +S315E064DA800000000000E4F26C00E1BF0E000000005C +S315E064DA9000E4F31800E1BFA30000000000E4F33300 +S315E064DAA000E1BFC00000000000E4F35700E1BFE31B +S315E064DAB00000000000E4F3EB00E1C06E000000004B +S315E064DAC000E4F3F500E1C0790000000000E4F41737 +S315E064DAD000E1C09E0000000000E4F42B00E1C0BA5F +S315E064DAE00000000000E4F43400E1C0C3000000007C +S315E064DAF000E4F43B00E1C0CD0000000000E4F4483B +S315E064DB0000E1C0DD0000000000E4F45C00E1C0F97F +S315E064DB100000000000E4F47100E1C11400000000BC +S315E064DB2000E4F47900E1C11E0000000000E4F48141 +S315E064DB3000E1C1250000000000E4F4A900E1C1476A +S315E064DB400000000000E4F4CD00E1C16900000000DB +S315E064DB5000E4F56400E1C20B0000000000E4F56E49 +S315E064DB6000E1C2150000000000E4F58B00E1C2327A +S315E064DB700000000000E4F63600E1C2DE00000000CA +S315E064DB8000E4F6C300E1C36F0000000000E4F75C64 +S315E064DB9000E1C41F0000000000E4F76D00E1C43654 +S315E064DBA00000000000E4F78700E1C45200000000D2 +S315E064DBB0005B315D5B54686973206170706C6963A6 +S315E064DBC06174696F6E20646F65736E277420686133 +S315E064DBD0766520726F6F6D20746F7C6F70656E20F2 +S315E064DBE0616E6F7468657220646F63756D656E747B +S315E064DBF02E2020546F206D616B6520726F6F6D2CE3 +S315E064DC007C636C6F736520616E7920646F63756D98 +S315E064DC10656E747320796F7520646F6E2774206EF9 +S315E064DC206565642E5D5B20204F4B20205D002020DF +S315E064DC304E657720466F6C6465722E2E2E00466FB5 +S315E064DC406C646572206E616D653A20205F5F5F5F2C +S315E064DC505F5F5F5F2E5F5F5F00256C64206B4200F1 +S315E064DC60746F206C6F61642C206F7220656E7465CE +S315E064DC707220706172616D657465722076616C752F +S315E064DC80657320746861740053797374656D206894 +S315E064DC90616C746564210A005B335D5B536F727219 +S315E064DCA0792C2062757420796F752063616E6E6F6E +S315E064DCB07420706C61636520616E79206D6F726546 +S315E064DCC07C666F6C6465727320696E7369646520E3 +S315E064DCD06F6620796F75722063757272656E7420F3 +S315E064DCE06F6E652E7C53656520796F757220646FFF +S315E064DCF063756D656E746174696F6E20666F7220AC +S315E064DD006C696D697473206F6E7C666F6C64657242 +S315E064DD107320696E73696465206F746865722066E2 +S315E064DD206F6C646572732E5D5B43616E63656C5D97 +S315E064DD3000437265617465643A20205F5F2D5F5FBE +S315E064DD402D5F5F2020002020536F7274206279205B +S315E064DD5073697A65202020075A004E414D45204379 +S315E064DD604F4E464C49435420445552494E4720430E +S315E064DD704F5059004C617374206D6F6469666965D0 +S315E064DD80643A20205F5F2F5F5F2F5F5F00536565B6 +S315E064DD9020646F632F6C6963656E73652E74787443 +S315E064DDA020666F722064657461696C73007468657B +S315E064DDB020666F6C64657220796F752077616E7426 +S315E064DDC020746F206372656174652E0052656164C8 +S315E064DDD02F57726974650053455420505245464541 +S315E064DDE052454E43455300446F75626C652D636CD2 +S315E064DDF069636B2073706565643A002020536574CB +S315E064DE0020707265666572656E6365732E2E2E008C +S315E064DE10506172616D65746572733A20205F5F5F0D +S315E064DE205F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5FB8 +S315E064DE305F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5FA8 +S315E064DE405F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F98 +S315E064DE505F00426F6F742074696D6500434F50597B +S315E064DE6020464F4C44455253202F204954454D5348 +S315E064DE7000202053617665206465736B746F70204F +S315E064DE80202020202020202020202020200756004B +S315E064DE90202053686F77206173207465787420203E +S315E064DEA02007530053637265656E20737461727400 +S315E064DEB000496E7365727420796F75722047454DBB +S315E064DEC02053544152545550206469736B0044495D +S315E064DED0534B20494E464F524D4154494F4E0046AE +S315E064DEE06F6C6465722069636F6E20616E64206333 +S315E064DEF06F6D706C65746520746865206469616CC7 +S315E064DF006F67756500427974657320757365643A05 +S315E064DF1020205F5F5F5F5F5F5F5F5F5F005B325DD7 +S315E064DF205B54686973206170706C69636174696F6E +S315E064DF306E2063616E6E6F742072656164206461E5 +S315E064DF407461206F6E207468657C6469736B2069A4 +S315E064DF506E2064726976652025633A2E20205468C3 +S315E064DF6065206469736B206D7573742062657C6685 +S315E064DF706F726D61747465642C2074686572652073 +S315E064DF806D75737420626520706F77657220746F47 +S315E064DF90207468657C6469736B2064726976652C49 +S315E064DFA020616E6420746865206469736B206472B2 +S315E064DFB0697665206D7573742062657C70687973C3 +S315E064DFC06963616C6C7920636F6E6E6563746564B6 +S315E064DFD020746F20796F757220636F6D70757465E8 +S315E064DFE0722E5D5B43616E63656C7C5265747279B7 +S315E064DFF05D0020204465736B746F7020696E666F94 +S315E064E0002E2E2E2020200043616E63656C007265BF +S315E064E0106E742077696E646F772C20646F75626CBA +S315E064E020652D636C69636B206F6E20746865204E42 +S315E064E0306577005B315D5B596F752063616E6E6F0A +S315E064E04074206472616720666F6C646572732C20F9 +S315E064E050646F63756D656E74732C206F727C61702A +S315E064E060706C69636174696F6E73206F6E746F2030 +S315E064E070746865204465736B746F702E2020486FF6 +S315E064E08077657665722C7C796F752063616E206343 +S315E064E0906F7079207468656D20746F206469736B42 +S315E064E0A073206F722064726167207468656D7C7436 +S315E064E0B06F207468652074726173682E5D5B2020DE +S315E064E0C04F4B20205D005B315D5B54686572652073 +S315E064E0D06973206E6F7420656E6F75676820737000 +S315E064E0E061636520617661696C61626C657C746F9D +S315E064E0F020636F6E666967757265207468697320FC +S315E064E1006170706C69636174696F6E2E2020546F00 +S315E064E11020667265657C757020736F6D65207370BB +S315E064E1206163652C20796F75276C6C206861766510 +S315E064E13020746F2072656D6F76657C6F6E65206F97 +S315E064E1406620796F75722063757272656E746C7928 +S315E064E15020636F6E666967757265647C6170706C06 +S315E064E16069636174696F6E732E5D5B20204F4B202B +S315E064E170205D002020496E7374616C6C2064697361 +S315E064E1806B2064726976652E2E2E00546F2063725E +S315E064E190656174652061206E657720666F6C646581 +S315E064E1A0722077697468696E207468652063757235 +S315E064E1B02D005B335D5B444F53206572726F722052 +S315E064E1C02325642E5D5B43616E63656C5D004F4B36 +S315E064E1D0004E616D653A20205F5F5F5F5F5F5F5F02 +S315E064E1E02E5F5F5F00436F6E6669726D20636F706A +S315E064E1F06965733F00456D75544F53205665727378 +S315E064E200696F6E004350552074797065005B315DCB +S315E064E2105B596F752063616E6E6F742064726167BB +S315E064E220207468652074726173682063616E7C69CA +S315E064E2306E746F20612077696E646F772E5D5B2004 +S315E064E240204F4B20205D005B315D5B546865206444 +S315E064E25069736B20647269766520796F752068618D +S315E064E260766520696E6469636174656420646F656C +S315E064E270737C6E6F742065786973742E2043686569 +S315E064E280636B207468652064726976652069646589 +S315E064E2906E7469666965727C6C657474657220799E +S315E064E2A06F7520656E74657265642E5D5B43616E41 +S315E064E2B063656C5D004E6F004F6E0048617264008A +S315E064E2C0536F756E6420656666656374733A004180 +S315E064E2D07474726962757465733A004472697665DA +S315E064E2E0206964656E7469666965723A20205F3A8E +S315E064E2F000546F2064726F7020646F776E206D6572 +S315E064E3006E75733A004469736B206C6162656C3A4E +S315E064E31020205F5F5F5F5F5F5F5F5F5F5F005B33D0 +S315E064E3205D5B416E206572726F7220686173206F07 +S315E064E330636375727265642077697468207468656E +S315E064E3407C477261706869637320456E7669726F43 +S315E064E3506E6D656E74204D616E61676572202847E7 +S315E064E360454D292E7C506C6561736520636F6E74D0 +S315E064E3706163742074686520456D75544F53204419 +S315E064E3806576656C6F706D656E747C5465616D20E1 +S315E064E390616E64207375626D69742061206275676D +S315E064E3A0207265706F72742E5D5B43616E63656C3B +S315E064E3B05D004974656D7320746F2064656C657483 +S315E064E3C0653A20205F5F5F5F0053697A6520696E16 +S315E064E3D02062797465733A20205F5F5F5F5F5F5F99 +S315E064E3E05F5F5F004469736B204472697665733A74 +S315E064E3F0005B315D5B596F757220636F6D70757428 +S315E064E400657220646F6573206E6F742068617665EB +S315E064E41020656E6F7567687C6D656D6F7279207463 +S315E064E4206F2072756E20746865206170706C6963C4 +S315E064E4306174696F6E20796F757C68617665207347 +S315E064E440656C65637465642E5D5B20204F4B2020AC +S315E064E4505D002020436F6E66696775726520617042 +S315E064E460706C69636174696F6E2E2E2E202007418D +S315E064E470006170706C69636174696F6E005B335DD3 +S315E064E4805B4261642046756E6374696F6E20235DDA +S315E064E4905B43616E63656C5D005B335D5B596F75B1 +S315E064E4A07220636F6D707574657220646F65736EE8 +S315E064E4B02774206861766520656E6F7567687C6D24 +S315E064E4C0656D6F727920746F2072756E20746865FD +S315E064E4D02047454D204465736B746F702E5D5B20F9 +S315E064E4E0536F727279205D0044454C45544520462D +S315E064E4F04F4C44455253202F204954454D530046D2 +S315E064E5004F4C44455220494E464F524D4154494F33 +S315E064E5104E0044442D4D4D2D595900436F70792773 +S315E064E52073206E616D653A20205F5F5F5F5F5F5F5A +S315E064E5305F2E5F5F5F00496E7374616C6C00436F5E +S315E064E5406E6669726D206F766572777269746573EB +S315E064E5503F0046726565204661737452414D0044DE +S315E064E56061746520666F726D61743A004F50454E12 +S315E064E570204150504C49434154494F4E005B325D13 +S315E064E5805B54686973206170706C69636174696F08 +S315E064E5906E2063616E6E6F742066696E6420746863 +S315E064E5A0657C666F6C646572206F7220646F6375F8 +S315E064E5B06D656E7420796F75206172652074727909 +S315E064E5C0696E6720746F7C6F70656E2E2043686534 +S315E064E5D0636B20746865206E616D6520796F752064 +S315E064E5E06861766520656E74657265642E5D5B2030 +S315E064E5F0204F4B20205D0053746F70005265616458 +S315E064E6002D4F6E6C790043757272656E74206E611F +S315E064E6106D653A20205F5F5F5F5F5F5F5F2E5F5F80 +S315E064E6205F005B335D5B596F752063616E6E6F741B +S315E064E63020636F7079206120706172656E74206604 +S315E064E6406F6C6465727C696E746F206F6E65206F43 +S315E064E6506620697473206368696C6420666F6C64B1 +S315E064E6606572732E5D5B20204F4B20205D005B332B +S315E064E6705D5B536F7272792C206275742074686581 +S315E064E680204469726563746F7279206E616D65208A +S315E064E690796F7520686176657C656E7465726564AC +S315E064E6A0206578636565647320746865206D617858 +S315E064E6B0696D756D206E756D626572206F667C63DB +S315E064E6C06861726163746572732E20205365652098 +S315E064E6D0796F757220646F63756D656E7461746964 +S315E064E6E06F6E20666F727C6C696D697473206F6E91 +S315E064E6F020746865206E756D626572206F6620634E +S315E064E70068617261637465727320796F757C636145 +S315E064E7106E20656E7465722E5D5B2020204F4B2003 +S315E064E72020205D0049636F6E20747970653A00312C +S315E064E7303220486F7572005B315D5B5468652047D3 +S315E064E740454D204465736B746F7020686173206E09 +S315E064E7506F206D6F726520617661696C61626C656C +S315E064E7607C77696E646F77732E20204265666F727C +S315E064E7706520796F75206F70656E206120646973BA +S315E064E7806B2C20636C6F73657C612077696E646F54 +S315E064E7907720796F75277265206E6F74207573695B +S315E064E7A06E672E5D5B20204F4B20205D00466C6FCC +S315E064E7B070707900204465736B2000546865204569 +S315E064E7C06D75544F5320646576656C6F706D656ED8 +S315E064E7D074207465616D004974656D7320746F208F +S315E064E7E0636F70793A20205F5F5F5F002046696CF3 +S315E064E7F0652000256C6420627974657320757365A1 +S315E064E8006420696E202564206974656D732E004109 +S315E064E81070706C69636174696F6E206E616D653A80 +S315E064E82020205F5F5F5F5F5F5F5F2E5F5F5F004ECD +S315E064E830657720466F6C64657200486F6C64203C53 +S315E064E840436F6E74726F6C3E20746F20736B697085 +S315E064E850204155544F2F414343002020496E666F53 +S315E064E8602F52656E616D652E2E2E2020074900427B +S315E064E87061736564206F6E202747504C656427207A +S315E064E880736F7572636573005B315D5B416E2069BE +S315E064E89074656D20776974682074686973206E6145 +S315E064E8A06D6520616C7265616479206578697374FD +S315E064E8B0737C696E2074686520666F6C6465722C1F +S315E064E8C0206F7220746865206974656D20697320B1 +S315E064E8D073657420746F7C526561642D4F6E6C79D8 +S315E064E8E0207374617475732E20557365207468653E +S315E064E8F02022496E666F2F52656E616D65227C6378 +S315E064E9006F6D6D616E6420746F206368616E6765B8 +S315E064E91020746865206974656D2773207374617407 +S315E064E92075732E5D5B20204F4B20205D007468611B +S315E064E93074206170706561727320627920656E74AB +S315E064E9406572696E6720746865206E616D65206FB7 +S315E064E9506600323420486F7572002020536F7274FB +S315E064E9602062792074797065202020075000417018 +S315E064E970706C69636174696F6E20747970653A006E +S315E064E980436C69636B00446F63756D656E74207484 +S315E064E990797065733A005072657373202743272054 +S315E064E9A0746F2072756E20616E206561726C792079 +S315E064E9B0636F6E736F6C6500447269766520696433 +S315E064E9C0656E7469666965723A20205F004F6666B3 +S315E064E9D0004E455720464F4C44455200202045782A +S315E064E9E0656375746520456D75434F4E20205E5AA8 +S315E064E9F000434F4E464947555245204150504C4995 +S315E064EA00434154494F4E0020204368616E67652058 +S315E064EA107265736F6C7574696F6E20202020202098 +S315E064EA20202020074300467265652053542D5241E9 +S315E064EA304D002020466F726D61742E2E2E002020CC +S315E064EA4044656C6574652E2E2E20202020202020BF +S315E064EA500744002020436C6F7365004E65656473FC +S315E064EA602066756C6C206D656D6F72793F005965D3 +S315E064EA707300202053686F772061732069636F6E3B +S315E064EA80732020075300436F707972696768742056 +S315E064EA902863292062790047454D444F53206472C8 +S315E064EAA069766573004E455720464F4C444552207F +S315E064EAB0494E464F524D4154494F4E00466F6C6441 +S315E064EAC065727320746F20636F70793A20205F5F9C +S315E064EAD05F5F004954454D20494E464F524D41547F +S315E064EAE0494F4E202F2052454E414D45005B335DE4 +S315E064EAF05B466F726D617474696E672077696C6C7E +S315E064EB0020455241534520616C6C7C696E666F7238 +S315E064EB106D6174696F6E206F6E20746865206469D8 +S315E064EB20736B20696E2064726976657C25633A2E20 +S315E064EB302020436C69636B206F6E204F4B206F6EB1 +S315E064EB406C7920696620796F7520646F6E27747CB2 +S315E064EB506D696E64206C6F73696E67207468652096 +S315E064EB60696E666F726D6174696F6E206F6E7C74C8 +S315E064EB70686973206469736B2E5D5B20204F4B205C +S315E064EB80207C43616E63656C5D00204F7074696FD1 +S315E064EB906E7320004E756D626572206F6620666FD7 +S315E064EBA06C646572733A20202020205F5F5F5F5F4C +S315E064EBB0004954454D2053454C4543544F52005B00 +S315E064EBC0325D5B44726976652025633A2069732019 +S315E064EBD06E6F7420726573706F6E64696E672E20F3 +S315E064EBE020596F75206D7573747C757365207468D0 +S315E064EBF065207269676874206B696E64206F66204D +S315E064EC006469736B2C20696E736572742069747CB5 +S315E064EC10636F72726563746C792C20616E642063D1 +S315E064EC206C6F73652074686520646F6F722E202044 +S315E064EC304966207468657C70726F626C656D206984 +S315E064EC4073207769746820612068617264206469FE +S315E064EC50736B2C20636865636B207468657C646998 +S315E064EC60736B277320636F6E6E656374696F6E731F +S315E064EC702E5D5B43616E63656C7C52657472795D2F +S315E064EC80005B335D5B496620796F75206172652050 +S315E064EC907375726520796F752077616E7420746F11 +S315E064ECA07C64656C65746520414C4C2074686520B1 +S315E064ECB0696E666F726D6174696F6E206F6E2074D3 +S315E064ECC068657C6469736B20696E206472697665D5 +S315E064ECD02025633A2C20636C69636B206F6E204F4A +S315E064ECE04B2E7C4F74686572776973652C20636C10 +S315E064ECF069636B206F6E2043616E63656C2E5D5B4A +S315E064ED0020204F4B20207C43616E63656C5D005B25 +S315E064ED10315D5B596F752063616E20647261672053 +S315E064ED207468652074726173682063616E20746FC1 +S315E064ED3020616E6F746865727C6C6F636174696F11 +S315E064ED406E206F6E207468652047454D2044657378 +S315E064ED506B746F702C2062757420796F757C636157 +S315E064ED606E6E6F7420706C616365206974206F6E7B +S315E064ED7020746F70206F6620616E6F7468657220B0 +S315E064ED8069636F6E2E5D5B20204F4B20205D0052E1 +S315E064ED90656D6F7665005B315D5B54686520646FB5 +S315E064EDA063756D656E74207479706520796F75200E +S315E064EDB073656C6563746564206973206E6F747CD7 +S315E064EDC0636F6E6669677572656420746F20776FCA +S315E064EDD0726B207769746820612073706563696615 +S315E064EDE069637C6170706C69636174696F6E2E20AF +S315E064EDF020557365207468652022436F6E66696783 +S315E064EE007572657C6170706C69636174696F6E223A +S315E064EE1020636F6D6D616E6420746F206173736FD0 +S315E064EE20636961746520746869737C646F63756D26 +S315E064EE30656E742074797065207769746820616E94 +S315E064EE40206170706C69636174696F6E2E5D5B20BE +S315E064EE50204F4B20205D0053656C656374696F6E6B +S315E064EE603A20205F5F5F5F5F5F5F5F2E5F5F5F009B +S315E064EE704469736B20747970653A005B325D5B5903 +S315E064EE806F7572206F7574707574206465766963E6 +S315E064EE9065206973206E6F7420726563656976694F +S315E064EEA06E677C646174612E204265666F7265206C +S315E064EEB0796F752052657472792C206D616B65206B +S315E064EEC073757265207468657C64657669636520CC +S315E064EED068617320706F7765722C206973206F6E3A +S315E064EEE02D6C696E652C20616E642069737C6C6F31 +S315E064EEF06164656420776974682070617065722006 +S315E064EF006F722066696C6D2E5D5B43616E63656CE2 +S315E064EF107C52657472795D005B315D5B596F752017 +S315E064EF2063616E6E6F742064656C65746520746885 +S315E064EF306520666F6C64657220696E7C7768696368 +S315E064EF406820796F75206172652063757272656E8B +S315E064EF50746C7920776F726B696E672E5D5B2020C7 +S315E064EF604F4B20205D005B335D5B546F20736176AD +S315E064EF706520796F7572206465736B746F702C208D +S315E064EF80696E7365727420796F75727C47454D203E +S315E064EF904445534B544F50206469736B20696E74D7 +S315E064EFA06F20647269766520413A2C20636C6F73D6 +S315E064EFB0657C74686520647269766520646F6F72D7 +S315E064EFC02C20616E6420636C69636B206F6E204FE6 +S315E064EFD04B2E7C436C69636B206F6E2043616E637A +S315E064EFE0656C20696620796F7520646F6E2774207E +S315E064EFF077616E7420746F7C73617665207468657E +S315E064F000206465736B746F702E5D5B20204F4B20BC +S315E064F010207C43616E63656C5D005B315D5B43617F +S315E064F0206E6E6F742066696E642074686520464F00 +S315E064F030524D41542070726F6772616D2E20204983 +S315E064F0406620796F757C617265207573696E672079 +S315E064F05061206475616C2D666C6F7070792073796C +S315E064F0607374656D2C20796F75206D7573747C6629 +S315E064F0706F726D6174206469736B732066726F6D11 +S315E064F08020796F757220444F53206469736B2E2028 +S315E064F09020496620796F757C617265207573696E47 +S315E064F0A06720612068617264206469736B2C2063F5 +S315E064F0B06F707920464F524D415420746F207C74B2 +S315E064F0C0686520726F6F74206469726563746F72C9 +S315E064F0D0792E5D5B4F4B5D004E6F20636C69636BAD +S315E064F0E0005B315D5B5468652074726173682063AC +S315E064F0F0616E206973207468652064657374696EF3 +S315E064F1006174696F6E20746F7C776869636820796F +S315E064F1106F75206472616720746865206469736BD7 +S315E064F120732C20666F6C646572732C7C646F637594 +S315E064F1306D656E74732C206F72206170706C696398 +S315E064F1406174696F6E73207468617420796F757C1D +S315E064F15077616E7420746F2064656C6574652050A5 +S315E064F16045524D414E454E544C59215D5B20204FEE +S315E064F1704B20205D0020486F6C64203C53686966D0 +S315E064F180743E20746F20706175736520746869736A +S315E064F1902073637265656E2000494E5354414C4C4E +S315E064F1A0204449534B20445249564500466F6C64AB +S315E064F1B065727320746F2064656C6574653A2020AB +S315E064F1C05F5F5F5F005B325D5B44617461206F6EBD +S315E064F1D020746865206469736B20696E2064726963 +S315E064F1E076652025633A206D61792062657C646189 +S315E064F1F06D616765642E2020596F75206D75737433 +S315E064F2002075736520746865207269676874206B1D +S315E064F210696E647C6F6620666C6F70707920646971 +S315E064F220736B3B20796F75206D75737420636F6EB5 +S315E064F2306E65637420796F75727C6861726420644C +S315E064F24069736B2070726F7065726C792E5D5B4367 +S315E064F250616E63656C7C52657472795D00202043EF +S315E064F2606C6F73652077696E646F77005B335D5BA3 +S315E064F2705468652047454D204465736B746F702010 +S315E064F28063616E6E6F742066696E64207468657C13 +S315E064F290646F63756D656E7473204445534B4C4F70 +S315E064F2A02E49434E2C204445534B48492E49434E00 +S315E064F2B02C7C6F72204445534B544F502E494E4636 +S315E064F2C020696E2074686520444F532073656172CB +S315E064F2D063687C706174682E202054686573652069 +S315E064F2E0646F63756D656E747320617265207265B3 +S315E064F2F07175697265647C746F2072756E2074686A +S315E064F300652047454D204465736B746F702E5D5B75 +S315E064F31043616E63656C5D004E756D626572206F08 +S315E064F32066206974656D733A20202020205F5F5FF4 +S315E064F3305F5F00456D75544F53206973206469734C +S315E064F340747269627574656420756E64657220743E +S315E064F35068652047504C005B315D5B546869732097 +S315E064F3606469736B20646F6573206E6F7420686183 +S315E064F370766520656E6F75676820726F6F6D20665F +S315E064F3806F727C74686520696E666F726D617469AC +S315E064F3906F6E20796F752061726520747279696E1B +S315E064F3A06720746F20636F70792E7C536F6D652070 +S315E064F3B06974656D732C20686F77657665722C2049 +S315E064F3C06D61792068617665206265656E7C636FE0 +S315E064F3D07069656420746F20746865206469736B12 +S315E064F3E02E5D5B20204F4B20205D002041727261D0 +S315E064F3F06E67652000486F6C64203C416C7465728E +S315E064F4006E6174653E20746F20736B697020484446 +S315E064F4104420626F6F74002020536F7274206279A7 +S315E064F42020646174652020200754004D4D2D4444CA +S315E064F4302D59590020204F70656E0054696D652022 +S315E064F440666F726D61743A002020536F7274206245 +S315E064F45079206E616D65202020074E002020536878 +S315E064F4607574646F776E20202020202020205E5102 +S315E064F470004D616368696E650056657273696F6EA7 +S315E064F48000456E74657220746865206E616D6520F2 +S315E064F4906F662074686520646F63756D656E74204D +S315E064F4A0796F752077616E7400617265206163635C +S315E064F4B065707461626C6520746F2074686973202A +S315E064F4C06170706C69636174696F6E2E005B335D45 +S315E064F4D05B546F2072756E207468652047454D20D5 +S315E064F4E04465736B746F702C20696E7365727420F7 +S315E064F4F0796F75727C47454D204445534B544F5064 +S315E064F500206469736B20696E206472697665204154 +S315E064F51020616E6420636C69636B7C6F6E204F4B15 +S315E064F520206F7220707265737320456E7465722EF7 +S315E064F53020546F2072657475726E20746F20444F28 +S315E064F540532C7C636C69636B206F6E2043616E63DE +S315E064F550656C2E5D5B20204F4B20207C43616E639F +S315E064F560656C5D00646F63756D656E747300427996 +S315E064F57074657320617661696C61626C653A2020BA +S315E064F5805F5F5F5F5F5F5F5F5F5F005B325D5B59DD +S315E064F5906F752063616E6E6F74207772697465202F +S315E064F5A0746F20746865206469736B20696E206487 +S315E064F5B0726976657C25633A206265636175736515 +S315E064F5C020697420697320706879736963616C6C0F +S315E064F5D0792077726974652D7C70726F7465637473 +S315E064F5E065642E20204265666F726520796F7520AA +S315E064F5F052657472792C2072656D6F76657C746879 +S315E064F600652077726974652D70726F7465637420B2 +S315E064F610746162206F72206E6F74636820746865CB +S315E064F6207C6469736B2E5D5B43616E63656C7C526F +S315E064F630657472795D005B315D5B596F75206361FA +S315E064F6406E6E6F74206F70656E2074686520747278 +S315E064F6506173682063616E2069636F6E7C696E7442 +S315E064F6606F20612077696E646F772E20546F206413 +S315E064F670656C6574652061206469736B2C7C666F68 +S315E064F6806C6465722C20646F63756D656E742C2092 +S315E064F6906F72206170706C69636174696F6E2C7CE3 +S315E064F6A06472616720697420746F2074686520747D +S315E064F6B0726173682063616E2E5D5B20204F4B2020 +S315E064F6C0205D005B325D5B4120666F6C6465722031 +S315E064F6D0776974682074686174206E616D65206111 +S315E064F6E06C72656164797C657869737473206F7232 +S315E064F6F020796F7572206469736B2069732066750F +S315E064F7006C6C2E7C526574727920776974682061BA +S315E064F710206E6577206E616D652C206F7220436183 +S315E064F7206E63656C7C616E6420636865636B20748C +S315E064F730686520617661696C61626C652064697391 +S315E064F7406B2073706163652E5D5B2043616E6365F8 +S315E064F7506C207C205265747279205D00436F6E661E +S315E064F76069726D2064656C657465733F0049636FA7 +S315E064F7706E206C6162656C3A20205F5F5F5F5F5FFD +S315E064F7805F5F5F5F5F5F00506C6561736520656AAC +S315E064F7906563742074686520666C6F707079206147 +S315E064F7A06E64206869742052455455524E000000D8 +S315E064F7B000E1CE5E00E1CF4E00E1CF9E00E1D054A1 +S315E064F7C000E1D34400E2010400E2029200E2222076 +S315E064F7D000E1DA6800E1D7DC00E1E6E200E22DEA86 +S315E064F7E000E21F9200E1C79E00E1E98400E1E9BE20 +S315E064F7F000E1EA6800E2021200E2019400E2024AF1 +S315E064F80000E22EDA00E21FDE00E1D94800E1D8F03A +S315E064F81000E1D6BE00E1C90000E1D7DE00E20C58A3 +S315E064F82000E2070A00E2175C00E218D400E1CD705A +S315E064F83000E2179400E1D05400E1EAB000E203D4B8 +S315E064F84000E1D7E000E2202600E21F4200E1CDAA13 +S315E064F85000E1CE1E00E1CFCA00E1DC8000E1D7061C +S315E064F86000E1DF4600E21F1400E21E0E00E1EA1842 +S315E064F87000E214EE00E20FF000E2077400E1D66CF9 +S315E064F88000E1E97400E1D73C00E217FC00E2209C69 +S315E064F89000E2280C00E2053000E22CAA00E22D6CBE +S315E064F8A000E215B600E20B0C00E20C5600E206D666 +S315E064F8B000E2070C00E2072600E2074000E2187265 +S315E064F8C000E1CCC600E228D600E2294200E1D05449 +S315E064F8D000E1D05400E2075A0000000F0001000284 +S315E064F8E00004000600030005000700080009000A9A +S315E064F8F0000C000E000B000D000000030001000286 +S315E064F900000000020003000600040007000500088A +S315E064F9100009000A000B000E000C000F000D000148 +S315E064F920000000020003000100E1D12400E1D126D9 +S315E064F93000E1D32000E1D2FC00E1D2E200E1D2CAE8 +S315E064F94000E1D2B200E1D29A00E1D28200E1D26A69 +S315E064F95000E1D25200E1D20000E1D1BE00E1D1AAD9 +S315E064F96000E1D19200E1D14600E1D16200E1D178D3 +S315E064F97000E1D18000E1D17A000F07E00FF01FD8F3 +S315E064F9801808180810081E781348110808100B7038 +S315E064F990065007A01E201BC018000007FFFF8080EA +S315E064F9A080808080FFFF080808080808202040401F +S315E064F9B080804141222214140808101000000000DF +S315E064F9C0101028280000000001018282020202026F +S315E064F9D0AAAA505020202020AAAA0505404080808B +S315E064F9E00000080804040202000020206606C6C679 +S315E064F9F0D8D8181881818DB10C33600000000000FE +S315E064FA00040000000010000080000000F8F86C6C50 +S315E064FA10C6C68F8F1F1F36366363F1F1AAAA00004C +S315E064FA20888814142222414188880000080800006E +S315E064FA30AAAA0000080800008888000077779898EA +S315E064FA40F8F8F8F8777789898F8F8F8F8080808050 +S315E064FA5041413E3E080808081414E3E381814242CA +S315E064FA60242418180606010180808080F0F0F0F006 +S315E064FA70F0F0F0F00F0F0F0F0F0F0F0F08081C1CBC +S315E064FA803E3E7F7FFFFF7F7F3E3E1C1C111122229C +S315E064FA904444FFFF888844442222FFFF00030000B9 +S315E064FAA044440000111100005555000055558888FE +S315E064FAB0555522225555AAAA5555AAAA5555AAAA14 +S315E064FAC0DDDDAAAA7777AAAAFFFFAAAAFFFFEEEE70 +S315E064FAD0FFFFBBBBFFFFFFFFFFFFFFFFFFFF00076B +S315E064FAE001010202040408081010202040408080CE +S315E064FAF06060C0C08181030306060C0C18183030C0 +S315E064FB0042428181818142422424181818182424AF +S315E064FB10808080808080808080808080808080809B +S315E064FB20FFFF00000000000000000000000000008D +S315E064FB30FFFF80808080808080808080808080807D +S315E064FB40000F0001000200040008001000200040DD +S315E064FB50008001000200040008001000200040005C +S315E064FB60800080030007000E001C0038007000E08F +S315E064FB7001C0038007000E001C0038007000E0003E +S315E064FB80C0018001400220041008081004200240ED +S315E064FB90018001800240042008101008200440021D +S315E064FBA0800180008000800080008000800080000A +S315E064FBB080008000800080008000800080008000FB +S315E064FBC08000FFFF0000000000000000000000006D +S315E064FBD000000000000000000000000000000000DB +S315E064FBE00000FFFF808080808080808080808080CD +S315E064FBF08080FFFF808080808080808080808080BD +S315E064FC008080FFFFFFFFFFF0C0C0FF18FF00F191A7 +S315E064FC100001000200000000000000000002000293 +S315E064FC200000FFFD000000030002FFFC000000048A +S315E064FC300000000300020000FFFD00000003000274 +S315E064FC4000030002FFFDFFFE00020003FFFEFFFD6E +S315E064FC50000200010005FFFCFFFD0004FFFD000457 +S315E064FC600003FFFC0003FFFCFFFD00020002FFFC53 +S315E064FC70FFFD000400030002FFFC00030004FFFD37 +S315E064FC8000010005FFFC00000000FFFD0004000029 +S315E064FC9000000003FFFC000000010000000100001A +S315E064FCA00001E000F000F800FC00FE00FF00FF80C9 +S315E064FCB0FFC0FE00FE00EF000F000780078003C070 +S315E064FCC0000040006000700078007C007E007F00E9 +S315E064FCD07F807C006C004600060003000300018020 +S315E064FCE000000000000200030000000100000006BE +S315E064FCF0000700040005000001C2014A011300DCAC +S315E064FD0000A50000FFFFFFFFFFFF0000080E0900EB +S315E064FD1000010F5400010F6A00010F8000010F9685 +S315E064FD2000010FAC00010FC200010FD800010FEE15 +S315E064FD30000000005C53435241502E2A000000004C +S315E064FD4000190014001B0016001B001600190019A8 +S315E064FD50001B0014001B001B001400140014001B9D +S315E064FD60001B0014001400011101000111010501DA +S315E064FD70110100000000070111010000000000000D +S315E064FD8011010000110106011101000111010101D7 +S315E064FD9011010201110100011111000111010001BB +S315E064FDA011010401110103011101000111110001A6 +S315E064FDB011010000000000000000000000000003E4 +S315E064FDC00001000011000000000100500050000036 +S315E064FDD000019088000192C8000193B800E302D262 +S315E064FDE000E302D800E302E000E302E500E302EBAD +S315E064FDF000E302F000E302FA00E3030800E3032C05 +S315E064FE0000E3034C00E3036D00E302F000E302FA6F +S315E064FE1000E3038B00E303A800E303C900E303D430 +S315E064FE2000E303E800E303F100E303FA0000000003 +S315E064FE3000E3040900E304B400E3057600E3060E98 +S315E064FE4000E306E300E3078000E3081400E3088EBA +S315E064FE5000E308DD00E3095A00E309FF00E30A6D05 +S315E064FE6000E30ABB00E30B1C00E30B3800E30B542E +S315E064FE7000E4FF0A0004002000000000000100E442 +S315E064FE80FF8A0004002000000000000100E5000A8B +S315E064FE900004002000000000000100E5008A000282 +S315E064FEA0002500000000000300E500D40002002500 +S315E064FEB000000000000300E5011E000200250000CA +S315E064FEC00000000300E50168000200250000000070 +S315E064FED0000300E501B20002002500000000000313 +S315E064FEE000E501FC0002002500000000000300E5D7 +S315E064FEF002460002002500000000000300E50290CF +S315E064FF00000200250000000000030000000000007D +S315E064FF1000000000070000000F8000000F80000072 +S315E064FF200F8000000F8000000F8000000F8000004B +S315E064FF300F8000000F8000000F800079EF9C0EFBBD +S315E064FF40EFBC1EFBEFBC1EFBEF7C16AAAF7C1EFB70 +S315E064FF50EF7C0D75DCBC038E37F81FFFDFF81FFFFF +S315E064FF607FF01FFFFFF01FFDFFE01FFFFFC00FFDE7 +S315E064FF70FF8007FFFE0001FFF400015FFC0001FF64 +S315E064FF80FC0001FFFC000000000000000000001F10 +S315E064FF90FE00007FFF8000FFFFC001FFFFE001F885 +S315E064FFA007E001F003E001F003E000E003E00000B5 +S315E064FFB007C000000FC000001F8000003F00000083 +S315E064FFC07E000000FC000001F8000003F00000037E +S315E064FFD0E0000007C0000007C0000007C00000079B +S315E064FFE0C0000007C00000038000000000000000BD +S315E064FFF00000000000000007C000000FE000000FF2 +S315E0650000E0000007C00000000000000000000001FD +S315E0650010C0000073E00000FBE70000FBEF801CFB1F +S315E0650020EF803EFBEF803EFBEF803EFBEF803EFBE5 +S315E0650030EF803EFBEF803EFBEF803EFBEF9C3EFBB9 +S315E0650040EFBC3EFBEFBC3FFFFF7C3FFFFF7C3FFF26 +S315E0650050FF7C3FFFFEFC3FFFF7F83FFFDFF83FFF22 +S315E06500607FF03FFFFFF03FFDFFE01FFDFFC00FFFA5 +S315E0650070FF8007FFFF0003FFFE0003FFFE0003FFAF +S315E0650080FE0003FFFE000000000000000000000126 +S315E065009000000001E000F000F800FC00FE00FF0053 +S315E06500A0FF80FFC0FE00FE00EF000F0007800780BF +S315E06500B003C003C040006000700078007C007E00ED +S315E06500C07F007F807C006C0046000600030003002D +S315E06500D00180018000070007000100000001FFFFC5 +S315E06500E0FFFF07E003C003C003C003C003C003C04E +S315E06500F003C003C003C003C007E0FFFFFFFF7C3E0C +S315E0650100066003C001800180018001800180018075 +S315E0650110018001800180018003C006607C3E0008A5 +S315E06501200008000100000001FFFFFFFFFFFF7FFE03 +S315E06501307FFE3FFC1FF80EF00FF01FF83FFC7FFED9 +S315E06501407FFEFFFFFFFFFFFF00007FFE2004100834 +S315E065015014480AB0056002C0034004A0091010887F +S315E065016012A835547FFE0000000000000001000083 +S315E06501700001F000F8007C003E071F0F0F9E07DECA +S315E065018007FE1FFF3FFF7FFF7FFE3FFE1FFE0FFF60 +S315E065019001FFF00088004400220711090892045225 +S315E06501A006321913248152414982260218060E0346 +S315E06501B001800008000800010000000100000380DE +S315E06501C003F033FE7BFF7BFF3FFFFFFFFFFF7FFF14 +S315E06501D03FFF3FFF1FFE07FC07FC0FFE00000380A5 +S315E06501E00270324E4A494A492649F24998014C011C +S315E06501F0200120011802040404040FFE000700072D +S315E06502000001000000010000038003800380038095 +S315E065021003807FFC7FFC7FFC038003800380038093 +S315E065022003800000000000000000000001000100FE +S315E0650230010001001FF0010001000100010000005E +S315E06502400000000000000008000800010000000151 +S315E0650250000007C007C007C007C007C0FFFFFFFF74 +S315E0650260FFFFFFFFFFFF07C007C007C007C007C066 +S315E06502700000000003800380038003800380FFFFA6 +S315E0650280FFFFFFFF03800380038003800380000098 +S315E06502900008000800010000000107E007E007E04C +S315E06502A007E007E0FFFFFFFFFFFFFFFFFFFFFFFF41 +S315E06502B007E007E007E007E007E0000003C002406B +S315E06502C00240024002407E7E400240027E7E02405F +S315E06502D002400240024003C00000000014181B27DC +S315E06502E021001A1F001A1F20001A1F200020001A7D +S315E06502F0200012131A191F2000121F1A1300121A72 +S315E06503001F20001516170015161726282B2A290013 +S315E0650310FFFFFFFFFFFF001900000000000000007F +S315E06503200000000000000000FFFFFFFFFFFF001474 +S315E06503300000000000001100000000000000000061 +S315E06503400001000201010201010001010201010152 +S315E0650350010102010000000000000000010000014B +S315E06503600003050005050000010102010010070113 +S315E0650370020100000000000000000000010101022A +S315E0650380010102010102010101010201010101010F +S315E06503900002010000000000000002010101010108 +S315E06503A006010104010101030102010104020108DC +S315E06503B001010000000000000101010901010101E0 +S315E06503C001010100000501030301020201000000CD +S315E06503D000000000000002020203010201010001C3 +S315E06503E003000000010000000101000101000000BA +S315E06503F00000000004030008030006010008010090 +S315E06504000801000401010301010005000101010085 +S315E06504100500000101000101000000000000000088 +S315E06504200000000000000000000000000000000081 +S315E0650430000202000000000000000000000000006D +S315E0650440000000000000000000000000000005015B +S315E06504500005010001010001010002050006010039 +S315E0650460020100010100060500000000000101002F +S315E06504700100020100020101010101000000000026 +S315E06504800000000000000000000000010203010218 +S315E06504900101010101010001010001020001020003 +S315E06504A0010200000000000000000001FFFFFFFF01 +S315E06504B010000005000B001700000020002000007A +S315E06504C000200048000A0000000200000003FFFF6C +S315E06504D0FFFF10000004000B00170000002000205D +S315E06504E0000000200048000A000000040000000546 +S315E06504F0FFFFFFFF1000000000000017000000206E +S315E06505000020000000200048000A00000006000008 +S315E06505100007FFFFFFFF1000000000000017000066 +S315E065052000200020000000200048000A00000008C6 +S315E065053000000009FFFFFFFF100000000000001744 +S315E0650540000000200020000000200048000A0000AE +S315E0650550000800000009FFFFFFFF10000000000033 +S315E06505600017000000200020000000200048000A77 +S315E06505700000000800000009FFFFFFFF1000000013 +S315E06505800000001700000020002000000020004861 +S315E0650590000A0000000800000009FFFFFFFF1000E9 +S315E06505A00000000000170000002000200000002089 +S315E06505B00048000A0000000800000009FFFFFFFF91 +S315E06505C01000000000000017000000200020000079 +S315E06505D000200048000A000000080000000AFFFF4E +S315E06505E0FFFF10000000000000170000002000205B +S315E06505F0000000200048000A000000080000000B2B +S315E0650600FFFFFFFF1000000000000017000000205C +S315E06506100020000000200048000A000000080000F5 +S315E0650620000CFFFFFFFF1000000000000017000050 +S315E065063000200020000000200048000A00000008B5 +S315E06506400000000DFFFFFFFF10000000000000172F +S315E0650650000000200020000000200048000A00009D +S315E065066000080000000EFFFFFFFF1000000000001D +S315E06506700017000000200020000000200048000A66 +S315E0650680000000080000000FFFFFFFFF10000000FC +S315E06506900000001700000020002000000020004850 +S315E06506A0000A0000000800000010FFFFFFFF1000D1 +S315E06506B00000000000170000002000200000002078 +S315E06506C00048000A0000000800000011FFFFFFFF78 +S315E06506D01000000000000017000000200020000068 +S315E06506E000200048000A0000000800000012FFFF35 +S315E06506F0FFFF10000000000000170000002000204A +S315E0650700000000200048000A000000080000001311 +S315E0650710FFFFFFFF1000000000000017000000204B +S315E06507200020000000200048000A000000080000E4 +S315E06507300014FFFFFFFF1000000000000017000037 +S315E065074000200020000000200048000A00000008A4 +S315E065075000000015FFFFFFFF100000000000001716 +S315E0650760000000200020000000200048000A00008C +S315E0650770000800000016FFFFFFFF10000000000004 +S315E06507800017000000200020000000200048000A55 +S315E06507900000000800000017FFFFFFFF10000000E3 +S315E06507A0000000170000002000200000002000483F +S315E06507B0000A0000000800000018FFFFFFFF1000B8 +S315E06507C00000000000170000002000200000002067 +S315E06507D00048000A0000000800000019FFFFFFFF5F +S315E06507E01000000000000017000000200020000057 +S315E06507F000200048000A000000080000001AFFFF1C +S315E0650800FFFF100000000000001700000020002038 +S315E0650810000000200048000A000000080000001BF8 +S315E0650820FFFFFFFF1000000000000017000000203A +S315E06508300020000000200048000A000000080000D3 +S315E06508400009FFFFFFFF1000000000000017000031 +S315E065085000200020000000200048000A0000000893 +S315E065086000000009FFFFFFFF100000000000001711 +S315E0650870000000200020000000200048000A00007B +S315E0650880000800000009FFFFFFFF10000000000000 +S315E06508900017000000200020000000200048000A44 +S315E06508A00000000800000009FFFFFFFF10000000E0 +S315E06508B0000000170000002000200000002000482E +S315E06508C0000A0000000800000009FFFFFFFF1000B6 +S315E06508D00000000000170000002000200000002056 +S315E06508E00048000A0000000800000009FFFFFFFF5E +S315E06508F01000000000000017000000200020000046 +S315E065090000200048000A0000000800000009FFFF1B +S315E0650910FFFF100000000000001700000020002027 +S315E0650920000000200048000A0000000800000009F9 +S315E0650930FFFFFFFF10000000000000170000002029 +S315E06509400020000000200048000A000000080000C2 +S315E06509500009FFFFFFFF1000000000000017000020 +S315E065096000200020000000200048000A0000000882 +S315E065097000000009FFFFFFFF100000000000001700 +S315E0650980000000200020000000200048000A00006A +S315E0650990000800000009FFFFFFFF100000000000EF +S315E06509A00017000000200020000000200048000A33 +S315E06509B00000000800000009FFFFFFFF10000000CF +S315E06509C0000000170000002000200000002000481D +S315E06509D0000A0000000800000009FFFFFFFF1000A5 +S315E06509E00000000000170000002000200000002045 +S315E06509F00048000A0000001C0000001DFFFFFFFF25 +S315E0650A001000000000000017000000200020000034 +S315E0650A1000200048000A0000001C0000001EFFFFE1 +S315E0650A20FFFF100000000000001700000020002016 +S315E0650A30000000200048000A0000001C0000001FBE +S315E0650A40FFFFFFFF10000000000000170000002018 +S315E0650A500020000000200048000A0000001C00009D +S315E0650A600020FFFFFFFF10000000000000170000F8 +S315E0650A7000200020000000200048000A0000001C5D +S315E0650A8000000021FFFFFFFF1000000000000017D7 +S315E0650A90000000200020000000200048000A000059 +S315E0650AA0001C00000022FFFFFFFF100000000000B1 +S315E0650AB00017000000200020000000200048000A22 +S315E0650AC00000001C00000023FFFFFFFF1000000090 +S315E0650AD0000000170000002000200000002000480C +S315E0650AE0000A0000001C00000024FFFFFFFF100065 +S315E0650AF00000000000170000002000200000002034 +S315E0650B000048000A0000001C00000025FFFFFFFF0B +S315E0650B101000000000000017000000200020000023 +S315E0650B2000200048000A0000001C00000026FFFFC8 +S315E0650B30FFFF100000000000001700000020002005 +S315E0650B40000000200048000A0000001C00000027A5 +S315E0650B50FFFFFFFF10000000000000170000002007 +S315E0650B600020000000200048000A0000001C00008C +S315E0650B700028FFFFFFFF10000000000000170000DF +S315E0650B8000200020000000200048000A0000001C4C +S315E0650B9000000029FFFFFFFF1000000000000017BE +S315E0650BA0000000200020000000200048000A000048 +S315E0650BB0001C0000002AFFFFFFFF10000000000098 +S315E0650BC00017000000200020000000200048000A11 +S315E0650BD00000001C0000002BFFFFFFFF1000000077 +S315E0650BE000000017000000200020000000200048FB +S315E0650BF0000A0000001C0000002CFFFFFFFF10004C +S315E0650C000000000000170000002000200000002022 +S315E0650C100048000A0000001C0000002DFFFFFFFFF2 +S315E0650C201000000000000017000000200020000012 +S315E0650C3000200048000A0000001C0000001DFFFFC0 +S315E0650C40FFFF1000000000000017000000200020F4 +S315E0650C50000000200048000A0000001C0000001D9E +S315E0650C60FFFFFFFF100000000000001700000020F6 +S315E0650C700020000000200048000A0000001C00007B +S315E0650C80001DFFFFFFFF10000000000000170000D9 +S315E0650C9000200020000000200048000A0000001C3B +S315E0650CA00000001DFFFFFFFF1000000000000017B9 +S315E0650CB0000000200020000000200048000A000037 +S315E0650CC0001C0000001DFFFFFFFF10000000000094 +S315E0650CD00017000000200020000000200048000A00 +S315E0650CE00000001C0000001DFFFFFFFF1000000074 +S315E0650CF000000017000000200020000000200048EA +S315E0650D00000A0000001C0000001DFFFFFFFF100049 +S315E0650D100000000000170000002000200000002011 +S315E0650D200048000A0000001C0000001DFFFFFFFFF1 +S315E0650D301000000000000017000000200020000001 +S315E0650D4000200048000A0000001C0000001DFFFFAF +S315E0650D50FFFF1000000000000017000000200020E3 +S315E0650D60000000200048000A0000001C0000001D8D +S315E0650D70FFFFFFFF100000000000001700000020E5 +S315E0650D800020000000200048000A0000001C00006A +S315E0650D90001DFFFFFFFF10000000000000170000C8 +S315E0650DA000200020000000200048000A0000001C2A +S315E0650DB00000001DFFFFFFFF1000000000000017A8 +S315E0650DC0000000200020000000200048000A000026 +S315E0650DD0001C0000001DFFFFFFFF10000000000083 +S315E0650DE00017000000200020000000200048000AEF +S315E0650DF00000001C0000001DFFFFFFFF1000000063 +S315E0650E0000000017000000200020000000200048D8 +S315E0650E10000A0000001C0000001DFFFFFFFF100038 +S315E0650E200000000000170000002000200000002000 +S315E0650E300048000A00000000000000000000000015 +S315E0650E40000000000000000000000000FFFFFFFF5B +S315E0650E50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57 +S315E0650E60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47 +S315E0650E70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37 +S315E0650E80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27 +S315E0650E90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17 +S315E0650EA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07 +S315E0650EB0FFFFFFFF000000000000000000000000EB +S315E0650EC000000000000000000000000000000000D7 +S315E0650ED07FFFFFFE40000002400000024000000286 +S315E0650EE040000002400000024000000240000002AF +S315E0650EF0400000024000000240000002400000029F +S315E0650F00400000024000000240000002400000028E +S315E0650F1040155552470AAAA24715555240000002A8 +S315E0650F20400000027FFFFFFE0000000000000000B9 +S315E0650F300000000000000000000000000000000066 +S315E0650F40000000000000000000000000FFFFFFFF5A +S315E0650F50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56 +S315E0650F60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46 +S315E0650F70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36 +S315E0650F80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26 +S315E0650F90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16 +S315E0650FA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06 +S315E0650FB0FFFFFFFF000000000000000000000000EA +S315E0650FC000000000000000000000000000000000D6 +S315E0650FD07FFFFFFE40000002400000024000000285 +S315E0650FE0400000024000000E400000084000000E90 +S315E0650FF0400000024003C0024007E0024007E0020D +S315E06510004003C00240000002400000024001800249 +S315E06510104001800240018002400180024001800279 +S315E0651020400000027FFFFFFE0000000000000000B8 +S315E06510300000000000000000000000000000000065 +S315E06510400000000000000000000000000000000055 +S315E065105000000000000000001FFE00001FFE00000B +S315E06510603FFFFFF87FFFFFFCFFFFFFFEFFFFFFFF90 +S315E0651070FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35 +S315E0651080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25 +S315E0651090FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15 +S315E06510A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05 +S315E06510B0FFFFFFFF000000000000000000000000E9 +S315E06510C000000000000000000000000000000000D5 +S315E06510D00000000000000000000000000FFC0000BA +S315E06510E0080400003807FFF0400000084FFFFFFCEA +S315E06510F0500000025000000250000002500000025D +S315E0651100500000025000000250000002500000024C +S315E0651110500000025000000250000002500000023C +S315E0651120300000021FFFFFFE000000000000000027 +S315E0651130000000000003F800000FFE00001FFF80BE +S315E0651140001FFFC0001FFFE0001FFFF0001FFFF05C +S315E0651150000FFFF00007FFF0000FFFF000FFFFF064 +S315E065116007FFFFF007FFFFE007FFFFE007FFFFE090 +S315E065117003FFFFC003FFFFC003FFFFC003FFFFC020 +S315E065118003FFFFC003FFFFC003FFFFC003FFFFC010 +S315E065119003FFFFC003FFFFC003FFFFC003FFFFC000 +S315E06511A003FFFFC003FFFFC01FFFFFF81FFFFFF848 +S315E06511B01FFFFFF8000000000001F00000020C00D0 +S315E06511C000040300000400800004004000040020E1 +S315E06511D0000200200001002000008020000FF040A2 +S315E06511E0007D5F0003EAABC001755E80011FF0809C +S315E06511F001000080010000800100008001000080A0 +S315E0651200010000800100008001000080010000808F +S315E06512100100008001000080010000800138008047 +S315E065122001F0018000781F0007EFF00007C00000BD +S315E065123000000000FFFFFFFFFFFFFFFFFFFFFFFF6F +S315E0651240FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63 +S315E0651250FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53 +S315E0651260FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43 +S315E0651270FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33 +S315E0651280FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23 +S315E0651290FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13 +S315E06512A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03 +S315E06512B0FFFFFFFF000000007FFFFFFE7FFFFFFEF1 +S315E06512C07FFFFFFE40000002400000024000000292 +S315E06512D040000002400000024000000240000002BB +S315E06512E040000002400000024000000240000002AB +S315E06512F0400000024000000240000002400000029B +S315E0651300400000024000000240000002400000028A +S315E0651310400000024000000240000002400000027A +S315E065132040000002400000027FFFFFFE0000000073 +S315E065133000000000000000007FFFFFFE7FFFFFFE6C +S315E06513407FFFFFFE400000024000FFFE4000820A8C +S315E06513504000BAEA4000820A5FFFFFFE5000820A5B +S315E06513605000AAAA57FEAAAA5000AAAA5000820A65 +S315E06513705FFFFFFE5000820A5000AAAA57FEAAAA9E +S315E06513805000AAAA5000820A5FFFFFFE5000820A5B +S315E06513905000AAAA57FEAAAA5000AAAA5000820A35 +S315E06513A05FFFFFFE5000820A7FFFFFFE0000000040 +S315E06513B000000000000000007FFFFFFE7FFFFFFEEC +S315E06513C07FFFFFFE40000002400000024000000291 +S315E06513D040000002407FF8024040140240401E0291 +S315E06513E040400202404002024040020240400202A2 +S315E06513F05040020257C003EA5C40023A47FFFFEA03 +S315E06514004400002248AAAA925066660A5199998ACA +S315E0651410507FFE0A5000000A5FFFFFFA40000002B7 +S315E065142040000002400000027FFFFFFE0000000072 +S315E065143000000000000000007FFFFFFE7FFFFFFE6B +S315E06514407FFFFFFE40000002403FFF824040018291 +S315E06514504080028241FFFC8241000482417FF48242 +S315E06514604140148241489482414F948241401482BE +S315E065147041401482417FF48241000482417FF482D7 +S315E06514804140148241489482414F9482414014829E +S315E065149041401482417FF482410005024100060223 +S315E06514A041FFFC02400000027FFFFFFE00000000F6 +S315E06514B000000000000000007FFFFFFE7FFFFFFEEB +S315E06514C07FFFFFFE400000024000000240FF800211 +S315E06514D0430060024C0018025FFFFC0A4022001AD6 +S315E06514E0502EFFF258224012542E3FD2522202521B +S315E06514F0512E035250A201D2506E00525022005234 +S315E065150052160072530A0072528600225242000257 +S315E06515105221000253F08002500040025000200242 +S315E06515205FFFF002402200027FFFFFFE0000000041 +S315E065153000000000000000007FFFFFFE7FFFFFFE6A +S315E06515407FFFFFFE45C0000245C0000245C00002C0 +S315E065155045C0000245C0000245C0000245C0000224 +S315E065156045C0000247C00002428000024280000298 +S315E0651570428000027BBF07E247C19C3247C0F01A52 +S315E065158047C0000A4380000A4120600A4550900A38 +S315E06515904AA1080A4541080A4A81080A4040900A74 +S315E06515A04000600A4000000A7FFFFFFE0000000081 +S315E06515B000000000000000007FFFFFFE7FFFFFFEEA +S315E06515C07FFFFFFE40000002400000024FC7E002D9 +S315E06515D05028100250381F82502810824FC7E0828B +S315E06515E04000008240000082400000824FC003F266 +S315E06515F05020040A503F040E5021040A4FC7E3F217 +S315E06516004008108240081F82400810024FC7E0027A +S315E065161050210002503F0002502000024FC00002F8 +S315E065162040000002400000027FFFFFFE0000000070 +S315E065163000000000000000007FFFFFFE7FFFFFFE69 +S315E06516407FFFFFFE4000000241F0000247CC00024A +S315E06516504FC200025FC107FA5FC1040A5001040A7E +S315E06516605001040A4802040A460C040A41F0040AD9 +S315E0651670400FF44A400814EA400815BA4008171ABC +S315E06516804008160E40089C0E4009DC0A5FEB740ABA +S315E0651690502E340A522C140A5738140A5DB8140AC7 +S315E06516A058E8140A7068140A7FFFFFFE0000000020 +S315E06516B000000000000000007FFFFFFE7FFFFFFEE9 +S315E06516C07FFFFFFE4000000240000002401FF80277 +S315E06516D0406006024180018241000082420000428C +S315E06516E042000042420000424205A042410A508261 +S315E06516F04085A1024042420240224402401248022D +S315E0651700400A5002400A5002400A5002400FF00279 +S315E065171040081002400FF00240081002400FF00248 +S315E065172040018002400000027FFFFFFE00000000EE +S315E065173000000000000000007FFFFFFE7FFFFFFE68 +S315E06517407FFFFFFE40000002400660024006600241 +S315E065175040066002407FFE0241FFFF8241C663822A +S315E065176041C6638241C6600241C6600241C6600207 +S315E065177041FFFE02407FFF82400663824006638248 +S315E06517804006638241C6638241C6638241C663821F +S315E065179041FFFF82407FFE0240066002400660022E +S315E06517A040066002400000027FFFFFFE0000000089 +S315E06517B000000000000000007FFFFFFE7FFFFFFEE8 +S315E06517C07FFFFFFE400000024000000243F9FCFE99 +S315E06517D0441A0D06482C160A5FDFEFF65068341A90 +S315E06517E052592C965269349A52592C965269341A42 +S315E06517F052592C965268349A52592C965269341A33 +S315E065180052592C965269349A52592C965068341A24 +S315E065181050582C1650783C1E5068341A5FCFE7F264 +S315E065182040000002400000027FFFFFFE000000006E +S315E065183000000000000000007FFFFFFE7FFFFFFE67 +S315E06518407FFFFFFE4000000240000002400000020C +S315E065185040000002403FFFFA4060003240C000624F +S315E0651860418180E24303FFF2460183924C00069292 +S315E065187058000D125FFFFB124180063A40C01C3AE4 +S315E0651880407FF03A4000003A4000003A4000003AB6 +S315E06518904000003A4000003A4000003A400000024D +S315E06518A040000002400000027FFFFFFE00000000EE +S315E06518B000000000000000007FFFFFFE7FFFFFFEE7 +S315E06518C07FFFFFFE4000000240000002400000028C +S315E06518D040000002400000024000000240FFFF02B7 +S315E06518E0430000C24C1E78325012480A5073CE0A45 +S315E06518F05F8001FA5E0DB07A44000022480DB012B1 +S315E065190048000012480DB01248000012480DB012AA +S315E0651910480000124FFFFFF243F81FC24000000285 +S315E065192040000002400000027FFFFFFE000000006D +S315E065193000000000000000007FFFFFFE7FFFFFFE66 +S315E06519407FFFFFFE4000000241C00002417FF002DA +S315E065195041000C0241000602417FFB0241C42502BB +S315E06519604004230240042102400420024004200290 +S315E06519704004200240042002400420024004200284 +S315E065198040081002400810024008100240081002A4 +S315E06519904008100240081002400810024008100294 +S315E06519A0400FF002400000027FFFFFFE00000000EE +S315E06519B000000000000000007FFFFFFE7FFFFFFEE6 +S315E06519C07FFFFFFE4000000240100802489008E2F3 +S315E06519D0451009124210091245100912489008E2AD +S315E06519E0401008025FFFFFFA4010080240144912F2 +S315E06519F0401288A240110842401288A2401449125A +S315E0651A00401008025FFFFFFA40100802401008E246 +S315E0651A10401009124010091240100912401008E200 +S315E0651A2040100802400000027FFFFFFE0000000054 +S315E0651A3000000000000000007FFFFFFE7FFFFFFE65 +S315E0651A407FFFFFFE4000000240000002400000020A +S315E0651A504000000241FFF0024100280241403C029D +S315E0651A60410004024140140241000402414014026F +S315E0651A70410004024140140241000402474017C296 +S315E0651A8045FFFC4248000022555555525000001A64 +S315E0651A9050000CDA500000125FFFFFF240000002D2 +S315E0651AA040000002400000027FFFFFFE00000000EC +S315E0651AB000000000000000007FFFFFFE7FFFFFFEE5 +S315E0651AC07FFFFFFE40000002476C3FFA4000200AB8 +S315E0651AD05BBC288A40002AAA5EDC2AAA40003FFA57 +S315E0651AE05DF0000240003BDA5FDC0002400035BA9B +S315E0651AF05F74000240003F5A5BEC000240003BBA6F +S315E0651B005FFC00025AAC0BDA55F400025BEC2EDAA8 +S315E0651B1055F400025AAC3BFA555400025FFC3DBAF7 +S315E0651B2040018002400000027FFFFFFE00000000EA +S315E0651B3000000000000000007FFFFFFE7FFFFFFE64 +S315E0651B407FFFFFFE40000002400FF002403FF402D7 +S315E0651B50407FFE0240F7EF0240E0070240C0030225 +S315E0651B6041DE7B82414C32824140028241024082C3 +S315E0651B7040C18302404812024044220240E3C70264 +S315E0651B8043B00DC24D6816B25AB7ED5A556996AA75 +S315E0651B904AB18D52556BD6AA4AA5A552556186AA14 +S315E0651BA04AA18552400000027FFFFFFE000000006B +S315E0651BB000000000000000007FFFFFFE7FFFFFFEE4 +S315E0651BC07FFFFFFE400000025FFFC0025800C002D3 +S315E0651BD0540178025202480251047F82508840825D +S315E0651BE05053FFFA5022000A5002000A5002FC0ADE +S315E0651BF05002000A5FFEFC0A4412000A47F6000A34 +S315E0651C004012FFEA4016000A4012FFEA4016000A53 +S315E0651C104012FF8A4016000A401200EA401E000A9A +S315E0651C204007FFFA400000027FFFFFFE000000006C +S315E0651C300000000000000000FFFFFFC0FFFFFFE0BF +S315E0651C40FFFFFFF0FFFFFFF8FFFFFFFCFFFFFFFE73 +S315E0651C50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49 +S315E0651C60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39 +S315E0651C70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29 +S315E0651C80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19 +S315E0651C90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09 +S315E0651CA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 +S315E0651CB0FFFFFFFF000000000000000000000000DD +S315E0651CC01FFFFF0010000380100002C010000260D5 +S315E0651CD010000230100003F810000008100000083C +S315E0651CE01000000810000008100000081000000849 +S315E0651CF01000000810000008100000081000000839 +S315E0651D001000000810000008100000081000000828 +S315E0651D101000000810000008100000081000000818 +S315E0651D20100000081FFFFFF800000000000000003B +S315E0651D300000000000000000000000000000000058 +S315E0651D401FFFFF0010410780104106C0155556601C +S315E0651D5015555630155557F81041041810410418B5 +S315E0651D601FFFFFF810410418104104181555555822 +S315E0651D701555555815555558104104181041041810 +S315E0651D801FFFFFF810410418104104181555555802 +S315E0651D9015555558155555581041041810410418F0 +S315E0651DA01FFFFFF81FFFFFF80000000000000000BE +S315E0651DB000000000000000000000000000000000D8 +S315E0651DC01FFFFF0010000380100002C012AA026028 +S315E0651DD011540230100003F81000000810AAAA8812 +S315E0651DE0105555481000000812AAAA88115555489D +S315E0651DF01000000812AAAA88115555481000000877 +S315E0651E0012AAAA88115555481000000810AAAA8892 +S315E0651E10105555481000000812AAAA88115555486C +S315E0651E20100000081FFFFFF800000000000000003A +S315E0651E300000000000000000000000000000000057 +S315E0651E401FFFFF0010000380100002C01000026053 +S315E0651E5010000230100003F81000000810000008BA +S315E0651E60101E000810F3FE0810DE060810F3FE08E3 +S315E0651E7010DE060810F3FE0810C0060810FFFE081F +S315E0651E801080020810882208108FE2081080020888 +S315E0651E901080020810FFFE08100000081000000818 +S315E0651EA0100000081FFFFFF80000000000000000BA +S315E0651EB000000000000000000000000000000000D7 +S315E0651EC01FFFFF0010000380100002C010000260D3 +S315E0651ED010000230100003F8100000081000040836 +S315E0651EE01000080810FFF00810D5600810AAA008D1 +S315E0651EF010D5600810AAA00810D57C0810AAA60817 +S315E0651F0010D5690810FFF308102125081041490826 +S315E0651F101080920811007C08120000081000000885 +S315E0651F20100000081FFFFFF8000000000000000039 +S315E0651F300000000000000000000000000000000056 +S315E0651F401FFFFF0010000380100002C01000026052 +S315E0651F5010000230100183F81002400810042008D2 +S315E0651F601008100810FFFF0810C0030810BFFD0831 +S315E0651F7010A0050810A0050810A0050810A0050822 +S315E0651F8010A0050810A0050810A0050810BFFD08FB +S315E0651F9010C0030810FFFF081000000810000008D5 +S315E0651FA0100000081FFFFFF80000000000000000B9 +S315E0651FB000000000000000000000000000000000D6 +S315E0651FC01FFFFF0011111380111112C01FFFFE6084 +S315E0651FD011111230111113F8111111181FFD111895 +S315E0651FE01FFD111811111118111111181111111880 +S315E0651FF01FFFFD181FFFFD1811111118111111189A +S315E065200011111118117FFFF8117FFFF811111118E1 +S315E0652010111111181111111811117FF811117FF8AD +S315E0652020111111181FFFFFF8000000000000000005 +S315E06520300000000000000000000000000000000055 +S315E06520401FFFFF0012492780124926C01FFFFE6069 +S315E065205012492630124927F81FFFFFF812492498DE +S315E0652060124924981FFFFFF81249249812492498CB +S315E06520701FFFFFF812492498124924981FFFFFF8BD +S315E065208012492498124924981FFFFFF812492498AB +S315E0652090124924981FFFFFF812492498124924989B +S315E06520A01FFFFFF81FFFFFF80000000000000000BB +S315E06520B000000000000000000000000000000000D5 +S315E06520C01FFFFF0010000380100002C010000260D1 +S315E06520D013800230110003F81100000811000008B2 +S315E06520E013A2A008100000081000000810180008E8 +S315E06520F010240008103C0008102400081025150877 +S315E065210010000008100000081038000810240008C8 +S315E0652110103800081024000810391508100000086A +S315E0652120100000081FFFFFF8000000000000000037 +S315E06521300000000000000000000000000000000054 +S315E06521401FFFFF0010000380100002C01000026050 +S315E065215010000230100003F81000000811000008B6 +S315E065216017C000081500000817C000081140C00830 +S315E065217017CAD4A81100000810000008100000086E +S315E06521801100000817C000081500000817C0000810 +S315E06521901140C00817CAD4A811000008100000084D +S315E06521A0100000081FFFFFF80000000000000000B7 +S315E06521B000000000000000000000000000000000D4 +S315E06521C01FFFFF0010000380155552C012AAAA60D2 +S315E06521D010000230155553F812AAA8081000000839 +S315E06521E0114A5288114A5288114A528810000008ED +S315E06521F0114A5288114A5288114A528810000008DD +S315E06522001044144810AA228811114108120080086A +S315E0652210100000081555554812AAAAA8100000082E +S315E0652220100000081FFFFFF8000000000000000036 +S315E06522300000000000000000000000000000000053 +S315E06522401FFFFF0010000380100002C0100002604F +S315E065225010000230100003F81000000810000008B6 +S315E0652260111E38081291440814514008145E40085E +S315E065227017D1400814514408145E38081000000868 +S315E065228010000008120201C81606022812227848D4 +S315E06522901272008812227908170703E81000000811 +S315E06522A0100000081FFFFFF80000000000000000B6 +S315E06522B000000000000000000000000000000000D3 +S315E06522C01FFFFF0010000380100002C010000260CF +S315E06522D010000230100003F8100000081000000836 +S315E06522E01000000811E00788132004C8162004686A +S315E06522F015E007A8150000A8150000A8150000A8B8 +S315E0652300150000A8150000A8150000A815E007A8A7 +S315E065231016355468132AACC811E007881000000822 +S315E0652320100000081FFFFFF8000000000000000035 +S315E06523300000000000000000000000000000000052 +S315E06523401FFFFF0010000380100002C0100002604E +S315E065235010000230100003F81000000810000008B5 +S315E065236010000008100F0008100280081FFE4008E4 +S315E0652370100240081FFE4008100240081007E008FA +S315E0652380100000081003C0081001800810018008DD +S315E0652390100180081001800810018008100180088E +S315E06523A0100000081FFFFFF80000000000000000B5 +S315E06523B000000000000000000000000000000000D2 +S315E06523C01FFFFF0010000380100002C010000260CE +S315E06523D010000230100003F8100000081000000835 +S315E06523E010084408100848081008500810086008E6 +S315E06523F010FFFE081008C00810094008100A4008DA +S315E0652400100C400810FFFE08101840081028400818 +S315E065241010484008108840081000000810000008C1 +S315E0652420100000081FFFFFF8000000000000000034 +S315E06524300000000000000000000000000000000051 +S315E06524401FFFFF0014000380100002C01400026045 +S315E065245010000230140003F810000008140000288C +S315E06524601000000814000028100000081400002879 +S315E06524701000000814000028100000081400002869 +S315E06524801000000814000028100000081400002859 +S315E06524901000000814000028100000081400002849 +S315E06524A0100000081FFFFFF80000000000000000B4 +S315E06524B000000000000000000000000000000000D1 +S315E06524C01FFFFF0010000380100002C013FC3A6096 +S315E06524D01354223012AC23F81354200812AC20486A +S315E06524E013FC2048100020481000204813FC2048C3 +S315E06524F01204204812043FC81204000812040008BA +S315E065250013FFE7C812002548120027C812002548C0 +S315E0652510120027C81200254813FFE7C81000000817 +S315E0652520100000081FFFFFF8000000000000000033 +S315E06525300000000000E3AF3000E3AF3A00E3AF48E8 +S315E065254000E3AF5900E3AF6400E3AF6B00E3AF735D +S315E065255000E3AF7D00E3AF8500E3AF8F00E3AF9CBB +S315E065256000E3AFAD00E3AFB900E3AFCA00E3AFDECA +S315E065257000E3AFE500E3AFEE00E3B00200E3B009E8 +S315E065258000E3B01000E3B01000E3B01000E3B01074 +S315E065259000E3B01000E3B01000E3B01000E3B01064 +S315E06525A000E3B01000E3B01000E3B01000E3B01054 +S315E06525B000E3B01000E50E3400E5253400E3B3D45E +S315E06525C000E3B3F000E3B40400E3B41000E3B41A47 +S315E06525D000E3B4250000000000E3B4390000000024 +S315E06525E0000000000000000000E3B44800E3B458D2 +S315E06525F000E3B46800E3B47A00E3B48C00E3B49E28 +S315E065260000E3B4B000E3B4BB00E3B4C600E3B4D31F +S315E065261000E3B4D6000000000000000000E3B4D992 +S315E065262000E3B59A00E3B61000E3B6CE00E3B76B18 +S315E065263000E3B7B700E3B84500E3B8F200E3B98B6A +S315E065264000E3BA1F00E3BACB00E3BB7F00E3BC1847 +S315E065265000E3BCCE00E3BD5B00E3BDEF00E3BE8215 +S315E065266000E3BEBC00E52672000400200000000021 +S315E0652670000100000000000000000000000000000E +S315E0652680000000000000000BD000000BD000001B2E +S315E0652690D800001BD800002BD400003BDC00006BA3 +S315E06526A0D600005BDA0000ABD50000DBDB0001ABF2 +S315E06526B0D580015BDA8002ABD5400353CAC006A379 +S315E06526C0C5600543C2A00A83C1500D03C0B01A03B5 +S315E06526D0C0581403C0282803C0143003C00C00009A +S315E06526E0000000000000000000000000000000009F +S315E06526F0000000004155544F455845432E4241542C +S315E0652700000000000001000836783620737973749E +S315E0652710656D20666F6E74000000000000000000C5 +S315E06527200000000000000000000000FF0004000457 +S315E0652730000300010001000500060000000200013B +S315E0652740000155555555000C0000000000E5275E73 +S315E065275000E5296000C000060000000000000000FA +S315E06527600006000C00120018001E0024002A003046 +S315E06527700036003C00420048004E0054005A0060B6 +S315E06527800066006C00720078007E0084008A009026 +S315E06527900096009C00A200A800AE00B400BA00C096 +S315E06527A000C600CC00D200D800DE00E400EA00F006 +S315E06527B000F600FC01020108010E0114011A012070 +S315E06527C00126012C01320138013E0144014A0150DE +S315E06527D00156015C01620168016E0174017A01804E +S315E06527E00186018C01920198019E01A401AA01B0BE +S315E06527F001B601BC01C201C801CE01D401DA01E02E +S315E065280001E601EC01F201F801FE0204020A02109A +S315E06528100216021C02220228022E0234023A024005 +S315E06528200246024C02520258025E0264026A027075 +S315E06528300276027C02820288028E0294029A02A0E5 +S315E065284002A602AC02B202B802BE02C402CA02D055 +S315E065285002D602DC02E202E802EE02F402FA0300C4 +S315E06528600306030C03120318031E0324032A03302D +S315E06528700336033C03420348034E0354035A03609D +S315E06528800366036C03720378037E0384038A03900D +S315E06528900396039C03A203A803AE03B403BA03C07D +S315E06528A003C603CC03D203D803DE03E403EA03F0ED +S315E06528B003F603FC04020408040E0414041A042057 +S315E06528C00426042C04320438043E0444044A0450C5 +S315E06528D00456045C04620468046E0474047A048035 +S315E06528E00486048C04920498049E04A404AA04B0A5 +S315E06528F004B604BC04C204C804CE04D404DA04E015 +S315E065290004E604EC04F204F804FE0504050A051081 +S315E06529100516051C05220528052E0534053A0540EC +S315E06529200546054C05520558055E0564056A05705C +S315E06529300576057C05820588058E0594059A05A0CC +S315E065294005A605AC05B205B805BE05C405CA05D03C +S315E065295005D605DC05E205E805EE05F405FA0600AB +S315E0652960000000000000000000000000000000001C +S315E0652970000000000000000000448A11920C1084FB +S315E06529808000000138471C09E19E30C00010021C3A +S315E065299038C70E71E78E48E09241144C70C70E7DDC +S315E06529A0249145178E41C1003004000801C04041BD +S315E06529B0103000000000002000000000061182448F +S315E06529C039208449038011241231048C1803C449E3 +S315E06529D0011049248419170308208279E38C0000E5 +S315E06529E02080000079E34200F61E7920847DE7BD0C +S315E06529F04920000000000000000000000000000023 +S315E0652A00000000000000000000C78078000010C3E9 +S315E0652A10870C438C7846060C410D30C00371C000C7 +S315E0652A20000000000000000000000000000000005B +S315E0652A30000000000000000000449F39A504204323 +S315E0652A400400000248C08219020249230C21E10212 +S315E0652A5045249049041048409441B6524924901162 +S315E0652A60249129110820428020E70E38C20E71C7ED +S315E0652A701211A70C70E58E79249149278410854A51 +S315E0652A8040010A00828E28020048830C79B50A0067 +S315E0652A90828800C00E20A4841041040004921000D0 +S315E0652AA02080800000048C39430C30010EFADE5735 +S315E0652AB001200000000000000000000000000000AA +S315E0652AC0000000000000000035249F20F49E3924B4 +S315E0652AD04410E41201F19810401649E0024863801B +S315E0652AE0000000000000000000000000000000009B +S315E0652AF0000000000000000000448A60434820476B +S315E0652B009F01E00448430C29C70430E00040008C8F +S315E0652B104D271049C71278449841555271270C11D3 +S315E0652B20249510A2081044401124904967924841C3 +S315E0652B30141154924926182124953121181064916F +S315E0652B4041278E38E39079E78C30C4924077CC3074 +S315E0652B50C49249249071F78E38C31271A38C01E74C +S315E0652B60AE8C025238C7965D7492480004FA9D555C +S315E0652B7049200000000000000000000000000000A1 +S315E0652B80000000000000000049440A11248855E46D +S315E0652B904E3957927846061047C030C10248838061 +S315E0652BA000000000000000000000000000000000DA +S315E0652BB0000000000000000000001F18B4802043FC +S315E0652BC0043000084844027C248848400C21E10032 +S315E0652BD04DE4904904124844944114D2412482114B +S315E0652BE0251B28440808400001249049020E484107 +S315E0652BF01C115492492406212515314204008011A1 +S315E0652C0041241249249041040410479E71C5124936 +S315E0652C10249251248E2045C448449249600031008F +S315E0652C20A394848949249A51479E4800047A9E4034 +S315E0652C3048200000000000000000000000000000E1 +S315E0652C40000000000000000049240A21248839229A +S315E0652C509255541200000010400D00001249E380C1 +S315E0652C600000000000000000000000000000000019 +S315E0652C70000000000000000000400A713340108447 +S315E0652C808010031070479C09C3083183041002085D +S315E0652C9041270E71E40E48E31279144C40C45C1189 +S315E0652CA0E21144478E05C00000E70E38E20249E1CD +S315E0652CB01279148C70E41C18E20A48878611801F25 +S315E0652CC038E38E38E38E38E39E79E49278F5CC3056 +S315E0652CD0C38E20C78478449839E30E49279E400021 +S315E0652CE0043C825238CB0C3CF4923000040ADD4059 +S315E0652CF049C0000000000000000000000000000080 +S315E0652D00000000000000000035C40978C70610C65B +S315E0652D10CC38E39279F79E10411600002A000380CD +S315E0652D200000000000000000000000000000000058 +S315E0652D300000000000000000000000200000000028 +S315E0652D400020000000000000000000000800000010 +S315E0652D503800000000000000000000000060000090 +S315E0652D60000000000000003F00000000001C0006B7 +S315E0652D700000000040200000000001000010000097 +S315E0652D806000000000180000000000000000000080 +S315E0652D9000004000000004C00000000000003800AC +S315E0652DA00F04800000001000000000000009E780C5 +S315E0652DB010000000000000000000000000000000B8 +S315E0652DC000000000000000000100000008000000AF +S315E0652DD00060400000000011800000000600000071 +S315E0652DE0000100093878382073797374656D20665B +S315E0652DF06F6E740000000000000000000000000037 +S315E0652E0000000000000000FF000600060004000167 +S315E0652E1000010007000800010003000100015555A7 +S315E0652E205555000D0000000000E52E3A00E5303C02 +S315E0652E300100000800000000000000000008001026 +S315E0652E400018002000280030003800400048005097 +S315E0652E500058006000680070007800800088009087 +S315E0652E60009800A000A800B000B800C000C800D077 +S315E0652E7000D800E000E800F000F801000108011064 +S315E0652E80011801200128013001380140014801504F +S315E0652E90015801600168017001780180018801903F +S315E0652EA0019801A001A801B001B801C001C801D02F +S315E0652EB001D801E001E801F001F80200020802101C +S315E0652EC00218022002280230023802400248025007 +S315E0652ED002580260026802700278028002880290F7 +S315E0652EE0029802A002A802B002B802C002C802D0E7 +S315E0652EF002D802E002E802F002F8030003080310D4 +S315E0652F0003180320032803300338034003480350BE +S315E0652F1003580360036803700378038003880390AE +S315E0652F20039803A003A803B003B803C003C803D09E +S315E0652F3003D803E003E803F003F80400040804108B +S315E0652F400418042004280430043804400448045076 +S315E0652F500458046004680470047804800488049066 +S315E0652F60049804A004A804B004B804C004C804D056 +S315E0652F7004D804E004E804F004F805000508051043 +S315E0652F80051805200528053005380540054805502E +S315E0652F90055805600568057005780580058805901E +S315E0652FA0059805A005A805B005B805C005C805D00E +S315E0652FB005D805E005E805F005F8060006080610FB +S315E0652FC006180620062806300638064006480650E6 +S315E0652FD006580660066806700678068006880690D6 +S315E0652FE0069806A006A806B006B806C006C806D0C6 +S315E0652FF006D806E006E806F006F8070007080710B3 +S315E0653000071807200728073007380740074807509D +S315E0653010075807600768077007780780078807908D +S315E0653020079807A007A807B007B807C007C807D07D +S315E065303007D807E007E807F007F8080000183C1826 +S315E0653040183CFFE7017E1818F0F005A07C067C7C4D +S315E0653050C67C7C7C7C7C007807F0110400186600F1 +S315E0653060180038180E700000000000023C183C7E1F +S315E06530700C7E3C7E3C3C00000600603C3C187C3C9B +S315E0653080787E7E3E663C066660C6663C7C3C7C3CFD +S315E06530907E6666C666667E1E407810000000600045 +S315E06530A006001C006018186038000000000000008B +S315E06530B0000000000000000E1870000000660C18A5 +S315E06530C06630180018663066186066180C003F189A +S315E06530D066301830666666181C661C1E0C0C0C0C91 +S315E06530E034340000000000C6C6001BD83434020044 +S315E06530F0007F303434660C007A7E7EF166F6000039 +S315E065310000000000000060000060000000000000B4 +S315E06531100000000000000000000E0066001C0000D4 +S315E0653120FE0000003C00001C0C003E3C0018300C24 +S315E0653130001818003838000038387800003C241C40 +S315E06531403899FFC303C33C1CC0C005A0C606060686 +S315E0653150C6C0C006C6C600600FF80B280018666CC8 +S315E06531603E666C181C386618000000066638660C04 +S315E06531701C606006666618180C003066663C666616 +S315E06531806C6060606618066C60EE766666666666B6 +S315E0653190186666C66666061860183800C000600080 +S315E06531A006003000600000601800000000000000C6 +S315E06531B01800000000000018181860183C00186632 +S315E06531C0001818006600180066300000180078667A +S315E06531D000186618000000183A6636301818181890 +S315E06531E058583C3C180000CCCC18366C58583C0214 +S315E06531F000D8185858001810CAC3C35B0066667CC9 +S315E06532001E7E7C1C1E7E6E3C3E7E6C1C3E367E665D +S315E06532103E78D67C1C3EFE7E361B10F70036FE00F9 +S315E0653220661E0000183C3C36181070667E18181845 +S315E06532300E1818326C7C00006C6C0CFE006624F689 +S315E06532406FC3FE9906D33C16FEDF05A0C6060606E5 +S315E0653250C6C0C006C6C63C781FEC0DD8001866FE2B +S315E0653260606C381818183C180000000C6E180618C3 +S315E06532703C7C600C66661818187E18066E66666095 +S315E0653280666060606618067860FE7E66666666609D +S315E0653290186666C63C660C1830186C00603C7C3C6B +S315E06532A03E3C7C3E7C38186618EC7C3C7C3E7C3E3D +S315E06532B07E6666C666667E181818F21866000000B1 +S315E06532C03C00003C003C0000000018187E7ED800FB +S315E06532D000000000663C663C303C667C0000000011 +S315E06532E000000666000000D8D8006C360000663C33 +S315E06532F07ED800003C003038CABDBD5FE666760C18 +S315E0653300060C060C0C36660C06063E0C363666660C +S315E0653310060CD66C0C066666363C3899766666FEAD +S315E065332030386C7E3C666678387C6066007E0C304C +S315E06533301B18004C3838000F6C18380000C3E7835B +S315E0653340C1E7FC3C8CD33C10D8DB0DB000007C7C3F +S315E06533507C7C7C007C7C0660180406280018006C82 +S315E06533603C1870001818FF7E007E001876180C0C65 +S315E06533706C067C183C3E000030000C0C6A667C608E +S315E0653380667C7C6E7E18067060D67E667C667C3C66 +S315E0653390186666D6183C18181818C60030066660B2 +S315E06533A0666630666618186C18FE666666666660FA +S315E06533B0186666C63C660C30180C9E3460663C3C06 +S315E06533C0063C3C603C663C3838383C3C601BDE3C41 +S315E06533D03C3C6666666666607C187C303C383C6676 +S315E06533E07C663E66183E7C363618D81B3C3C6E6E6F +S315E06533F0DBDE181866000010CAB1A55566663C0C9A +S315E06534000E0C660C0636660C0606660C3636763C9B +S315E0653410360CD66C0C0666761C666C99DC7C626C42 +S315E0653420186C6C18667E66DC54D67E667E1818184F +S315E06534301B187E00000000186C300C0000E7C383A3 +S315E0653440C1C3F999D8DB7E10DEFF0DB0C606C006AE +S315E06534500606C606C6067E7E180407D00018006C0A +S315E06534600630DE0018183C180000003066181806AD +S315E06534707E06663066061818180018186E7E666051 +S315E0653480666060666618067860C66E6660766C0627 +S315E0653490186666FE3C1830180C180000003E66603B +S315E06534A0667E30666618187818D666666666603C27 +S315E06534B0186666D61866181818180C3466667E0699 +S315E06534C03E0606607E7E7E18181866667C7FF86620 +S315E06534D06666666666666660303C6630061866668B +S315E06534E06676666630300C6B6E186C360666767692 +S315E06534F0DFD83C3C660000107AB1B95166666E0C61 +S315E06535001E0C660C063666000606660C3636060E34 +S315E0653510360CD66C0C0666060C66C6EFC866606C3D +S315E0653520306C6C18666666CC54D660660018300CEE +S315E065353018D80032000018D86C7C7800002466F64E +S315E06535406F99F3C370C31070181E1998C606C00646 +S315E06535500606C606C606661810042E10000000FEAE +S315E06535607C66CC001C3866183000186066183066D4 +S315E06535700C666630660C18180C7E3000606666660A +S315E06535806C6060666618666C60C66666606C666684 +S315E065359018663CEE661860180618000000666660F8 +S315E06535A06660303E6618186C18C6666666666006BE +S315E06535B018663C7C3C3E3018181800623C66607EB6 +S315E06535C0667E7E3C6060601818187E7E60D8D86638 +S315E06535D0666666663E66663C301866307E18666682 +S315E06535E0666E3E3C60300CC3D618366C7E666666A3 +S315E06535F0D8D86666660000100ABDAD00F6F6667E4A +S315E0653600360C660C06367E003E0E6E3C1C7E7E7E75 +S315E0653610340CFEEC0C067E060C3C8266DC66606C61 +S315E0653620666C6C183C6624EC38D670667E000000E5 +S315E065363018D8184C000018700000000000243C1CE7 +S315E0653640383CE7E720C338F0181B799E7C067C7C1E +S315E0653650067C7C067C7C3C1E1E3C39E00018006CD2 +S315E0653660184676000E700000300018403C7E7E3CC1 +S315E06536700C3C3C303C380030060060183E667C3CCD +S315E0653680787E603E663C3C667EC6663C6036663CF9 +S315E0653690183E18C666187E1E027800FE003E7C3C23 +S315E06536A03E3C3006663C18663CC6663C7C3E607CC5 +S315E06536B00E3E186C66067E0E1870007E083E3C3E31 +S315E06536C03E3E3E083C3C3C3C3C3C66667E7EDF3CA2 +S315E06536D03C3C3E3E063C3E187E187C603E3C3C3EAD +S315E06536E06666000066300C869F181BD83E3C3C3CFF +S315E06536F07E7F7E7E660000000AC3C3000606000084 +S315E0653700000000000000000000000000000000006E +S315E0653710300000000C0600060CD80000767C606C74 +S315E0653720FE387F18183C6678307C3E66007E7E7E85 +S315E0653730187018000000003000000000003C181802 +S315E065374018000000007E10600000718E0000000029 +S315E0653750000000000000000017543800000000007B +S315E065376000000000000000006000000000000000AE +S315E065377000000000000000000000000000000000FE +S315E065378000000000000000000000000000000000EE +S315E065379000000000000000000000000000000000DE +S315E06537A00000007C0000700000000000600600007C +S315E06537B000000000007C00001800000038000000F2 +S315E06537C00000001800000000000000000000000096 +S315E06537D0000000007C0000180000600000000000AA +S315E06537E000003C3C3C00000F06180000000040402D +S315E06537F0000066663C0000000A7E7E001C1C000038 +S315E0653800000000000000000000000000000000006D +S315E06538100000000000000000007000000060F8484D +S315E06538200000C0103C0000006010000000000000D1 +S315E06538301800000000000000000000000001000A1A +S315E0653840387831362073797374656D20666F6E747A +S315E0653850000000000000000000000000000000001D +S315E0653860000000FF000D000B0008000200020007E3 +S315E06538700008000100070001000155555555000D8A +S315E06538800000000000E5389600E53A980100001072 +S315E0653890000000000000000000080010001800208D +S315E06538A000280030003800400048005000580060AD +S315E06538B0006800700078008000880090009800A09D +S315E06538C000A800B000B800C000C800D000D800E08D +S315E06538D000E800F000F80100010801100118012078 +S315E06538E00128013001380140014801500158016065 +S315E06538F0016801700178018001880190019801A055 +S315E065390001A801B001B801C001C801D001D801E044 +S315E065391001E801F001F8020002080210021802202F +S315E0653920022802300238024002480250025802601C +S315E0653930026802700278028002880290029802A00C +S315E065394002A802B002B802C002C802D002D802E0FC +S315E065395002E802F002F803000308031003180320E7 +S315E065396003280330033803400348035003580360D4 +S315E0653970036803700378038003880390039803A0C4 +S315E065398003A803B003B803C003C803D003D803E0B4 +S315E065399003E803F003F8040004080410041804209F +S315E06539A0042804300438044004480450045804608C +S315E06539B0046804700478048004880490049804A07C +S315E06539C004A804B004B804C004C804D004D804E06C +S315E06539D004E804F004F80500050805100518052057 +S315E06539E00528053005380540054805500558056044 +S315E06539F0056805700578058005880590059805A034 +S315E0653A0005A805B005B805C005C805D005D805E023 +S315E0653A1005E805F005F8060006080610061806200E +S315E0653A2006280630063806400648065006580660FB +S315E0653A30066806700678068006880690069806A0EB +S315E0653A4006A806B006B806C006C806D006D806E0DB +S315E0653A5006E806F006F807000708071007180720C6 +S315E0653A6007280730073807400748075007580760B3 +S315E0653A70076807700778078007880790079807A0A3 +S315E0653A8007A807B007B807C007C807D007D807E093 +S315E0653A9007E807F007F808000000000000000000EE +S315E0653AA000000000000000000000000000000000CB +S315E0653AB00000000000001104000000001800380056 +S315E0653AC000000000000000000000000000000000AB +S315E0653AD0000000000000000000000000000000009B +S315E0653AE0000000000000000000000000000000008B +S315E0653AF0000000000000000040000000000000003B +S315E0653B00000000000000000000000000000000006A +S315E0653B10000000000000000000000000000000005A +S315E0653B20000000000000003C060000000000000008 +S315E0653B30000000000000000000000000000000003A +S315E0653B400000000000000000000000000000603298 +S315E0653B5032000000000000F100F600000000000001 +S315E0653B6000000000006000000000000000000000AA +S315E0653B7000000000000000000000000000000000FA +S315E0653B8000000000000000000000000000180000D2 +S315E0653B9000000000000000000000000000000000DA +S315E0653BA000000000000005A07C007C7C007C7C7C3D +S315E0653BB07C7C000000000B280000000018007C00FB +S315E0653BC000000000000000000000000000000000AA +S315E0653BD0000000000000000000000000000000009A +S315E0653BE0000000000000000000000000000000008A +S315E0653BF0000000000000100060000000000000000A +S315E0653C000000000000000000000000000000000069 +S315E0653C100000000E18E000000000061800601C00B9 +S315E0653C2018006000186066660C003E180060186053 +S315E0653C30006666000E0000000606060632320000E3 +S315E0653C400000006060000000323201000000307A5A +S315E0653C507A6606100000005B66F60000000000006C +S315E0653C6000000000006000000000000000000000A9 +S315E0653C7000000000000000000000000000000000F9 +S315E0653C807C00001E0E000000000000000018000029 +S315E0653C9038380000000000FE000000300C7CFEEEC7 +S315E0653CA001000008783805A0BA023A3A82B8B8BA8F +S315E0653CB0BABA007800000DD8001866663E666C18DC +S315E0653CC006606600000000063C183C7E0C7E1C7EA5 +S315E0653CD03C3C00000000003C38187C3C787E7E3E2B +S315E0653CE0667E06CC60C6663C7C3CF83E7E6666C60D +S315E0653CF066667E1E607810007000600006000E0045 +S315E0653D0060180CC0380000000000000000000000EC +S315E0653D1000000018183000003C660C3C6630360042 +S315E0653D203C6630663C30663C18007E3C66303C302E +S315E0653D30666666181E66180E0C0C0C0C7A7A000020 +S315E0653D4018000020200000007A7A3D00007E184CBD +S315E0653D504C660C7C7A7C7C5F6666667C1E7E7E380D +S315E0653D601E7E6E3C3C7E6C1CFE367E6E3E7CD67E52 +S315E0653D70387E7E7E6E1C00000018FE00FE000000A8 +S315E0653D80103C383E1E103E7C000060060E180000B2 +S315E0653D906C7C0000303078FE00183C381C38FEC676 +S315E0653DA0013C000E404005A0C6060606C6C0C0C674 +S315E0653DB0C6C6004000000628001866667E666C1872 +S315E0653DC00C306618000000067E187E7E0C7E3C7E12 +S315E0653DD07E7E00000E00E07E7C3C7E7E7C7E7E7E86 +S315E0653DE0667E06CC60C6667E7E7EFC7E7E6666C642 +S315E0653DF066667E1E607838003800600006001E0044 +S315E0653E0060180CC0380000000000000018000000D3 +S315E0653E1000000018183000007E66186666181C00FB +S315E0653E2066661866661818187E00F8666618661877 +S315E0653E306600001838663C1E181818184C4C0000C9 +S315E0653E4018000020201800004C4C7E0000FE0000A3 +S315E0653E5000001810CAC6C6550066767C1E7E7E389A +S315E0653E601E7E6E3C3E7E6E1CFE367E6E3E7ED67E4B +S315E0653E70387E3E7E6E360000003C7E00FE00000227 +S315E0653E80107E6C2010107EFE0018700E1918180250 +S315E0653E90447C000078481800003C242C34BAFED6F1 +S315E0653EA00366180F704005A0C6060606C6C0C0C6FE +S315E0653EB0C6C60070000007D0001866FF606C38184B +S315E0653EC01C383C18000000066638660C1C607006F7 +S315E0653ED0666618181C7E7066E67E66666E6060606D +S315E0653EE0661806D860EE66666666CC60186666C66F +S315E0653EF066660C18601838001C006000060018003D +S315E0653F00600000C018000000000000001800000016 +S315E0653F100000001818300000660000000000000090 +S315E0653F200000000000003C3C7E00D8000000000078 +S315E0653F30003C663C306666180000000000003C3CCC +S315E0653F4000000023231800000000660100D83C3C11 +S315E0653F503C000010CA828251E666760C060C0618AD +S315E0653F600466660C06063E0CFE3666663E06D66654 +S315E0653F70180636666632006662666202601E007E16 +S315E0653F807C66C6307C7CE0C67E18381C1B18183EFD +S315E0653F906C7C000048183000006624E66792FC9267 +S315E0653FA003C33C0940400DB0C6060606C6C0C0C69A +S315E0653FB0C6C67C4000002E10001866FF600C3818F7 +S315E0653FC018183C180000000C6638660C1C60600624 +S315E0653FD066661818387E3866C266666666606060CC +S315E0653FE0661806D860EE76666666CC60186666C65E +S315E0653FF03C660C1830186C000C3C7C3C3E3C183E2C +S315E06540007C380CCC186C3C3C7C3E7C3E7E6666C659 +S315E065401066667E181830621866663C3C3C3C3C3CFD +S315E06540203C3C3C3838387E7E6076D83C3C3C6666BF +S315E0654030667E667E306666183C383C663C663E7EE5 +S315E065404018000026260000003C3C663D7ED87E7E54 +S315E06540507E000010CABABA0066663E0C060C6618A3 +S315E06540600C66660C0606360CC63666360606D666F3 +S315E065407018063666761810F7F666607E303866FCA2 +S315E0654080C642C618D6D6C0C67E181C381B18007C34 +S315E06540903838001F4830180000C32483C1D6FCBAFF +S315E06540A006913C0840380DB082023A3ABAB8B88211 +S315E06540B0BABA7E78000039E0001866667C18701832 +S315E06540C01818FF7E007E000C66180C183C7C600CA8 +S315E06540D03C7E181870001C0CDA667E60667C7C6E29 +S315E06540E07E1806F060FE76666666CC70186666C60D +S315E06540F03C3C181830186C00043E7E7C7E7E7E7EE5 +S315E06541007E380CDC18FE7E7E7E7E7E7E7E6666C6AC +S315E065411066667E381838F21860667E3E3E3E3E7CC0 +S315E06541207E7E7E3838386666607FDE7E7E7E666653 +S315E065413066666666307E66183E387E667E660666C6 +S315E06541401800002C2C181AB03E7E6E7EFFDE666681 +S315E065415066000010CAA2AA0066663C0C0E0C6618DC +S315E06541600C6666000606660CC636763E0606F66696 +S315E0654170180636763E3C1099DC6660FC186C6690EF +S315E06541808242C63C9292C0C6007E0E7018187E408A +S315E065419000000010486048000081E783C1C6F83832 +S315E06541A006913C0800001DB800007C7C7C7C7C00A8 +S315E06541B07C7C060000003800001866663E187018BC +S315E06541C01818FF7E007E00186E180C183C7E7C0C75 +S315E06541D03C3E1818E0000E0CD6667C60667C7C6E0C +S315E06541E07E1806F060D67E666666FC38186666D624 +S315E06541F0183C18181818C6000006666066667E667E +S315E065420066180CF818FE666666666660186666D6B3 +S315E06542103C660CF0181EBE3C6066660606060660E1 +S315E065422066666618181866667C1BDE66666666668A +S315E065423066666660303C7C7E0618666666763E66D1 +S315E065424018000018181836D806666E66DBDE6666F0 +S315E065425066000010CAA2B20066663C0C1E0C6618C3 +S315E06542600C666600060E660CC63676183606F66683 +S315E0654270180636760E663899887C60A80CC6663070 +S315E0654280827EC6669292FCC67E7E1C3818187E02D1 +S315E0654290000000D04878300000E781E667D6FABAD4 +S315E06542A08C9D3C781E1C399C8202B83A3A3ABA0231 +S315E06542B0BA3A060E07F00000001800FF0630DE0089 +S315E06542C018183C18000000187618180C6C067E184D +S315E06542D066060000707E1C18D67E6660666060665F +S315E06542E0661806D860D67E667E66F81C186666D65B +S315E06542F0181830181818C600003E666066661866B7 +S315E065430066180CF018D6666666666070186666D6D8 +S315E06543103C6618F0181E9C246066663E3E3E3E602E +S315E06543206666661818187E7E7C7BF86666666666DF +S315E065433066666660FE1866183E186666667E7E6622 +S315E06543403000003032186C6C3E66766EDBD87E7E69 +S315E0654350660000007AA2BA0066666E0C360C6618D0 +S315E06543600C666600061C660CC636061C3606C66610 +S315E065437018063606066638EF886660280CC6663027 +S315E065438082426C429292FCC67E18381C1818003E32 +S315E0654390000000D0000000000024C32C3492F292A5 +S315E06543A08C813CF81012799EC606C0060606C606DE +S315E06543B0C6067E100FF80000001800FF0636DE0020 +S315E06543C018183C18000000306618180C6C0666185C +S315E06543D066060000387E3818DC7E66606660606674 +S315E06543E0661806D860C66E667C66D80E186666FE82 +S315E06543F03C1830180C180000007E6660667E18660C +S315E065440066180CF818D666666666603C186666FEDB +S315E0654410186618381838006660667E7E7E7E7E6031 +S315E06544207E7E7E1818187E7E60FFF866666666662E +S315E065443066666666307E66187E186666667E66665B +S315E0654440307E7E6E6618D8367E66767EDFD87E7E70 +S315E0654450660000000ABAAA0066666E0C360C661837 +S315E06544600C66660006306E0CC6367E0E3606C66689 +S315E065447018063606063C6C66DC66602818C6663045 +S315E0654480824228429292C0C60018700E1818187CAF +S315E06544900000185000000000002466381CBAF6D605 +S315E06544A0D8C37E701C1C718EC606C0060606C60697 +S315E06544B0C606660C1FEC0000000000667E66CC0052 +S315E06544C01818661818001830661830667E06663065 +S315E06544D0660618181C007018C066666666606066D3 +S315E06544E0661866CC60C66E666066CC0618663CFE87 +S315E06544F03C1860180C180000006666606660186611 +S315E065450066180CD818D666666666600E18663CFE52 +S315E06545103C663018183000426666606666666660B8 +S315E0654520606060181818666660D8D86666666666FE +S315E06545306666667E3018661866186666666E6666D0 +S315E0654540667E7ED3CE186C6C66666676D8D8666609 +S315E0654550660000000A8282006666667E360C66182C +S315E06545600C667E003E306E7CFE7E7E7E3606FEE620 +S315E065457018063E0606186C00F666602830C6663094 +S315E0654580C666AA66D6D6C0C67E18600618D818402E +S315E065459000003C700000000000243C300C38E6C6A4 +S315E06545A05866FF001014718EC606C0060606C60676 +S315E06545B0C606660218040000000000667C66CC004C +S315E06545C01C38660018001860661830667E666630C8 +S315E06545D0660E18180E00E000E26666666E60606656 +S315E06545E0661866CC60C66666606ACC0618663CEE9A +S315E06545F06618601806180000006666606660187ED4 +S315E065460066180CCC18C666666666600618663CEE85 +S315E06546103C7E3018183000C366666066666666601E +S315E0654620606060181818666660D8D86666666666FD +S315E06546307E66663C30187C186618666666667E7EBB +S315E0654640666006061A1836D866666666D8D86666F9 +S315E0654650660000000AC6C60066F6627E360C661817 +S315E065466004667E003C306E7C7C7E7E7E3606FEE6AB +S315E065467018063E06064CC600627C6028606C7F20A4 +S315E06546807C7EEE7E7C7CE0C67E00000018D800006D +S315E065469000003C2000000000003C1800007CEEEEC7 +S315E06546A0703C100010126186BA02B83A023ABA0254 +S315E06546B0BA3A7E1C18040000001800001800FE00D7 +S315E06546C00C300000180018607E7E7E7E0C7E7E30A3 +S315E06546D07E3C1818000000187E667E7E7C7E607ED5 +S315E06546E0667E7EC67EC6667E607CC67E187E18C69B +S315E06546F066187E1E067800FE007E7E7E7E7E183E0D +S315E0654700663C0CCE3CC6667E7E7E607E1E7E18C6A8 +S315E0654710663E7E18183000FF7E7E7E7E7E7E7E7EDD +S315E06547207E7E7E3C3C3C66667EFFDE7E7E7E7E7E73 +S315E06547303E7E7E187F186C187E3C7E7E66663E3CC5 +S315E06547407E60060C32181AB07E7E7E7EFFFE666659 +S315E06547507E0000000A7C7C00F6F6000000000000A2 +S315E065476000000000000000000000000030000000CE +S315E065477018060006066CC600006C6000FE385D0033 +S315E0654780103C6C3C10107EC6007E7E7E189800005C +S315E065479000001800000000000000000000000000B6 +S315E06547A030003800000041827C007C7C007C7C0027 +S315E06547B07C7C3C00100400000018000018007600C0 +S315E06547C006600000180018603C7E7E3C0C3C3C3080 +S315E06547D03C381818000000183C667C3C787E603CE6 +S315E06547E0667E3CC67EC6663C6036C67C183C1882EC +S315E06547F066187E1E067800FE003E7C3E3E3E180646 +S315E0654800663C0CC63CC6663C7C3E607C0E3E1882C9 +S315E065481066067E18183000003C3E3E3E3E3E3E3E15 +S315E06548203E3E3E3C3C3C66667E7FDE3C3C3C3E3EF8 +S315E0654830063C3C18FF1860703E3C3C3E66660000F0 +S315E06548403C6006183F1800003E3CBCBC7F7E666651 +S315E06548503C0000000A0000000E0E000000000000AB +S315E065486000000000000000000000000030000000CD +S315E065487018060006063800000060F000FE00C0007D +S315E065488010000000F0103EC6007E7E7E18700000C7 +S315E065489000000000000000000000000000000000CD +S315E06548A0200010000000000000000000000000008D +S315E06548B0000000001E3C0000000000000000000053 +S315E06548C0000000003000000000000000000000006D +S315E06548D0000000300000000000000000000000005D +S315E06548E0000000000000000000000000000000007D +S315E06548F00000000000000000000000000000007EEF +S315E065490000007C000000000060060000000000007A +S315E0654910007E000E18E000000C0000000000000CB0 +S315E0654920000000000000000000000000000000003C +S315E06549307E000000000040600000000000007E7E12 +S315E06549400000001F021800000000808000000000E3 +S315E065495000000000000000003C7C00000000000054 +S315E065496000000000000000000000000030000000CC +S315E0654970000000000000000000400000000080002C +S315E06549807C000000E0000000000000001800000068 +S315E065499000000000000000000000000000000000CC +S315E06549A000000000000000000000000000000000BC +S315E06549B00000000017540000000000000000000041 +S315E06549C0000000002000000000000000000000007C +S315E06549D0000000200000000000000000000000006C +S315E06549E0000000000000000000000000000000007C +S315E06549F00000000000000000000000000000007CF0 +S315E0654A00000078000000000060060000000000007D +S315E0654A10007C00000000000038000000000000385F +S315E0654A20000000000000000000000000000000003B +S315E0654A307C000000000000000000000000000000AF +S315E0654A40000000000000000000000000000000001B +S315E0654A50000000000000000038780000000000005B +S315E0654A6000000000000000000000000000000000FB +S315E0654A7000000000000000000000000000000000EB +S315E0654A8000000000000000000000000018000000C3 +S315E0654A90000000000000000000000006000C0012A7 +S315E0654AA00018001E0024002A00300036003C004253 +S315E0654AB00048004E0054005A00600066006C0072C3 +S315E0654AC00078007E0084008A00900096009C00A233 +S315E0654AD000A800AE00B400BA00C000C600CC00D2A3 +S315E0654AE000D800DE00E400EA00F000F600FC010212 +S315E0654AF00108010E0114011A01200126012C01327B +S315E0654B000138013E0144014A01500156015C0162EA +S315E0654B100168016E0174017A01800186018C01925A +S315E0654B200198019E01A401AA01B001B601BC01C2CA +S315E0654B3001C801CE01D401DA01E001E601EC01F23A +S315E0654B4001F801FE0204020A02100216021C0222A4 +S315E0654B500228022E0234023A02400246024C025212 +S315E0654B600258025E0264026A02700276027C028282 +S315E0654B700288028E0294029A02A002A602AC02B2F2 +S315E0654B8002B802BE02C402CA02D002D602DC02E262 +S315E0654B9002E802EE02F402FA03000306030C0312CE +S315E0654BA00318031E0324032A03300336033C03423A +S315E0654BB00348034E0354035A03600366036C0372AA +S315E0654BC00378037E0384038A03900396039C03A21A +S315E0654BD003A803AE03B403BA03C003C603CC03D28A +S315E0654BE003D803DE03E403EA03F003F603FC0402F9 +S315E0654BF00408040E0414041A04200426042C043262 +S315E0654C000438043E0444044A04500456045C0462D1 +S315E0654C100468046E0474047A04800486048C049241 +S315E0654C200498049E04A404AA04B004B604BC04C2B1 +S315E0654C3004C804CE04D404DA04E004E604EC04F221 +S315E0654C4004F804FE0504050A05100516051C05228B +S315E0654C500528052E0534053A05400546054C0552F9 +S315E0654C600558055E0564056A05700576057C058269 +S315E0654C700588058E0594059A05A005A605AC05B2D9 +S315E0654C8005B805BE05C405CA05D005D605DC05E249 +S315E0654C9005E805EE05F405FA060000820421CFB6BF +S315E0654CA00DE304E38150F987BCC3CC3E73E0381F5E +S315E0654CB0844200CD947B260C318488000006704FD3 +S315E0654CC03C33C73E71C30C18061C71CF1EF3EF9ECD +S315E0654CD089C09242289CF1CF1EFA28A28A2F9EC1EE +S315E0654CE0E2006008000801808001206000000000A5 +S315E0654CF00020000000000E31C40000000000000046 +S315E0654D000000000000000000000000000000000058 +S315E0654D10000001C4908541065147941005083000AE +S315E0654D201811A09400A00208A28C10421251211E0F +S315E0654D30504F92504214F0450420A50050810A5028 +S315E0654D404F9C10421251A100504014504214084540 +S315E0654D500420A50850810A50420801C20662AF2ABE +S315E0654D601A1786820150C88084C20C025367203FB9 +S315E0654D7042F400CDBEA34D0C60C30800000C98C09C +S315E0654D80825208028A230C31E3268A28A08A082003 +S315E0654D90888094436CA28A28A02228A252211860B2 +S315E0654DA0670061CF1C79C21EB18124214F1CF1E7F2 +S315E0654DB00E7228A24A278C30CE88000000000000DB +S315E0654DC00000000000000000000000000000000098 +S315E0654DD0000002231879478801E83EF80FBE49C00E +S315E0654DE00820A10800438A114100F0850C0147A01F +S315E0654DF07BE83EF9C73C8AAA9C514712F22A94029F +S315E0654E00A23620850C00C21C20870020850A7C829C +S315E0654E100851400021421400870003623BDF6E1CA7 +S315E0654E20B29784DEE150C88FBEC3EF8E7320B7605C +S315E0654E30629400C91470861860C7BE01E018A84779 +S315E0654E401C93CF0471E00060018CBBEF208BCF260D +S315E0654E50F8809842AAA2F22F1C2228AA214218308D +S315E0654E606D803028A08BE7A2C8813823E8A28A2422 +S315E0654E70982228AA322118306B9C30C30C30C30CBB +S315E0654E8030C30C30C30C30C30C30C30C30C30C30AC +S315E0654E90C30C03E03049081C02070811E104302021 +S315E0654EA01C00838000E61C78079E89C71C71082074 +S315E0654EB0820F20808222EB2CA271C88C8A28A28A76 +S315E0654EC0223C71C71C70872071CF9C71821E8BCF87 +S315E0654ED01C71C73E72A8A28A2200008D8662ACAAC2 +S315E0654EE0E2DFDC93A358D9CC06D8698CDBEFA44026 +S315E0654EF0216800C03E296E8060C308300330C8482B +S315E0654F0002F8288888230C31E30CB228A08A0822A7 +S315E0654F108888944229A2822A022225365084181866 +S315E0654F20600003E8A08A021E88812422A8A28A245A +S315E0654F300622252A31E20C30C13230C30C30C30C6F +S315E0654F4030C30C30C30C30C30C30C30C30C30C30EB +S315E0654F50C30C02201049071C01C08820020803E043 +S315E0654F6008008600018188100104F228A2890820DC +S315E0654F7083C83CF082228AAAA28A288CF228A28972 +S315E0654F80423648208208882083E83EF882228A28CD +S315E0654F90A28A28804A28A289E20000870421C9B648 +S315E0654FA042103C18E75CD9CC06F86D8CD8673C7145 +S315E0654FB0EEF0000014F26D00318488300320704F06 +S315E0654FC0BC13C70871C304180600822F1EF3E81EDA +S315E0654FD089C7127A289C81C9BC21E222888F9E09FD +S315E0654FE0E00001EF1C79C20289C12272289CF1E4D6 +S315E0654FF01C11E23648278E31C03E000000000000F5 +S315E06550000000000000000000000000000000000055 +S315E0655010000002201E79E088002F0840041001E2B6 +S315E06550201C01C180106708200208A3EFBEF9E81EDF +S315E0655030820FA0808222F269A28A2892A228A2889B +S315E0655040823C43EFBEF9C81C8207208082227A281B +S315E0655050A28A28884228A2882100008200000000F2 +S315E065506001E31810B64CF9CFBE1BEF8CF860075814 +S315E0655070AC0000C000200680000000600000000073 +S315E06550800000000000000800000C78000000000049 +S315E06550900000000000000060000000000000000065 +S315E06550A0003E00000000003C000E0000000080208D +S315E06550B00000000003C000300000000000000000B2 +S315E06550C00000000000000000000000000000000095 +S315E06550D00000006000840F3003C208F80FBE00418F +S315E06550E00000070021C20478079E9A28A2880788EF +S315E06550F07BE13EF9C73C02289C71C70099E79E783B +S315E0655100843041E79E78070871C21C71C71E022884 +S315E06551109C71C70041E79E7BC20000000000000865 +S315E065512000100018002000280030003800400048D4 +S315E065513000500058006000680070007800800088C4 +S315E06551400090009800A000A800B000B800C000C8B4 +S315E065515000D000D800E000E800F000F801000108A2 +S315E0655160011001180120012801300138014001488C +S315E0655170015001580160016801700178018001887C +S315E06551800190019801A001A801B001B801C001C86C +S315E065519001D001D801E001E801F001F8020002085A +S315E06551A00210021802200228023002380240024844 +S315E06551B00250025802600268027002780280028834 +S315E06551C00290029802A002A802B002B802C002C824 +S315E06551D002D002D802E002E802F002F80300030812 +S315E06551E003100318032003280330033803400348FC +S315E06551F003500358036003680370037803800388EC +S315E06552000390039803A003A803B003B803C003C8DB +S315E065521003D003D803E003E803F003F804000408C9 +S315E065522004100418042004280430043804400448B3 +S315E065523004500458046004680470047804800488A3 +S315E06552400490049804A004A804B004B804C004C893 +S315E065525004D004D804E004E804F004F80500050881 +S315E0655260051005180520052805300538054005486B +S315E0655270055005580560056805700578058005885B +S315E06552800590059805A005A805B005B805C005C84B +S315E065529005D005D805E005E805F005F80600060839 +S315E06552A00610061806200628063006380640064823 +S315E06552B00650065806600668067006780680068813 +S315E06552C00690069806A006A806B006B806C006C803 +S315E06552D006D006D806E006E806F006F807000708F1 +S315E06552E007100718072007280730073807400748DB +S315E06552F007500758076007680770077807800788CB +S315E06553000790079807A007A807B007B807C007C8BA +S315E065531007D007D807E007E807F007F808000018A0 +S315E06553203C18183CFFE7017E1818F0F005A07C06EE +S315E06553307C7CC67C7C7C7C7C007807F0110400185C +S315E06553406600180038180E700000000000023C1870 +S315E06553503C7E0C7E3C7E3C3C00000600603C3C1896 +S315E06553607C3C787E7E3E663C066660C6663C7C3CFA +S315E06553707C3C7E6666C666667E1E407810000000EA +S315E0655380600006001C006018186038000000000028 +S315E06553900000000000000000000E1870000000002C +S315E06553A000000000000000000000000000000000B2 +S315E06553B0000000000000000000000000000000188A +S315E06553C06660816C0C0E66363E240C00240800008F +S315E06553D000380C760C24002400030C362408180CDF +S315E06553E0186666660C00240C0066240C1824780C96 +S315E06553F0240C1836660036180C36660C7E1C0C0CCA +S315E0655400182466760C00240C0066240C180D060C30 +S315E0655410240C1836661824180C36660C0008003C11 +S315E0655420241C3899FFC303C33C1CC0C005A0C6064F +S315E06554300606C6C0C006C6C600600FF80B2800188B +S315E0655440666C3E666C181C386618000000066638A1 +S315E0655450660C1C606006666618180C003066663C6D +S315E065546066666C6060606618066C60EE76666666B3 +S315E06554706666186666C66666061860183800C00011 +S315E06554806000060030006000006018000000000063 +S315E065549000001800000000000018181860180000E9 +S315E06554A000000000000000000000000000000000B1 +S315E06554B00000000000000000000000000000003C65 +S315E06554C03C605A643E1B003E60187E007E7E380076 +S315E06554D000181832181800180019186C18007C188E +S315E06554E0243C006C183C18187E00181824186C18B3 +S315E06554F01818246C00007C24186C001818361818E7 +S315E0655500661800341800181800001818240D1F18BE +S315E06555101818666C00181824186C001818000066D0 +S315E065552024F66FC3FE9906D33C16FEDF05A0C606D4 +S315E06555300606C6C0C006C6C63C781FEC0DD8001880 +S315E065554066FE606C381818183C180000000C6E187A +S315E065555006183C7C600C66661818187E18066E663A +S315E06555606660666060606618067860FE7E6666669A +S315E06555706660186666C63C660C1830186C00603C5A +S315E06555807C3C3E3C7C3E7C38186618EC7C3C7C3E3C +S315E06555907C3E7E6666C666667E181818F21800005A +S315E06555A000000000000000000000000000000000B0 +S315E06555B0000000000000000000000000000000663A +S315E06555C000702468603C00603C7E0C000C0C6C3C12 +S315E06555D0001800343E00003E3E7E7E007E7E661804 +S315E06555E05A1818603C663C7E607E7E3C3C7C66660E +S315E06555F0663C3C3C3C44667E6666666618660000CC +S315E065560000003C30003C003C3C3C3C00007C060035 +S315E06556100000000000000018000000667E0000C380 +S315E0655620E783C1E7FC3C8CD33C10D8DB0DB00000CA +S315E06556307C7C7C7C7C007C7C0660180406280018F3 +S315E0655640006C3C1870001818FF7E007E001876180E +S315E06556500C0C6C067C183C3E000030000C0C6A664F +S315E06556607C60667C7C6E7E18067060D67E667C663F +S315E06556707C3C186666D6183C18181818C6003006BD +S315E06556806660666630666618186C18FE66666666F7 +S315E06556906660186666C63C660C30180C9E3478788B +S315E06556A0787878787878787878787878787878782F +S315E06556B078787878787878787878787878780066A9 +S315E06556C000E05A603C66003C0618187C18186C06C3 +S315E06556D0003C00306000006060180C000C0C663C15 +S315E06556E03C3C3C60666066607C6060181866F67691 +S315E06556F0766666666628666666666666187C7C3C79 +S315E06557003C3C06303C603C667E66663838CC3E7C22 +S315E06557107C3C3C3C3C7E7C6666666666180000E7DB +S315E0655720C383C1C3F999D8DB7E10DEFF0DB0C6062B +S315E0655730C0060606C606C6067E7E180407D00018AD +S315E0655740006C0630DE0018183C180000003066185C +S315E065575018067E06663066061818180018186E7EF6 +S315E06557606660666060666618067860C66E666076D0 +S315E06557706C06186666FE3C1830180C180000003E8C +S315E06557806660667E30666618187818D666666666FA +S315E0655790603C186666D61866181818180C3478785A +S315E06557A0787878787878787878787878787878782E +S315E06557B07878787878787878787878787878007E90 +S315E06557C000605A6006660006661830003030383E7E +S315E06557D0001800303C00003C3C18180018187C6640 +S315E06557E0666666606066607C607C7C181866667E68 +S315E06557F07E66666666107C666666663C18666606FE +S315E065580006063E306060607E607E7E1818CC666611 +S315E0655810666666666600666666666666180000249F +S315E065582066F66F99F3C370C31070181E1998C606AD +S315E0655830C0060606C606C606661810042E100000E3 +S315E065584000FE7C66CC001C38661830001860661869 +S315E065585030660C666630660C18180C7E300060663D +S315E065586066666C6060666618666C60C66666606C81 +S315E0655870666618663CEE66186018061800000066EF +S315E065588066606660303E6618186C18C6666666665B +S315E0655890600618663C7C3C3E3018181800627878DD +S315E06558A0787878787878787878787878787878782D +S315E06558B078787878787878787878787878780066A7 +S315E06558C000602460663C00663C18600060600066C7 +S315E06558D000180030060000060618300030306C7E91 +S315E06558E07E7E7E60663C66607E60601818666C6E7D +S315E06558F06E66666666286C66666666181866607EB7 +S315E06559007E7E6630603C60603C60601818CC66669A +S315E065591066666666661860666666663E18000024B4 +S315E06559203C1C383CE7E720C338F0181B799E7C06BB +S315E06559307C7C067C7C067C7C3C1E1E3C39E0001843 +S315E0655940006C184676000E700000300018403C7E0C +S315E06559507E3C0C3C3C303C380030060060183E66C8 +S315E06559607C3C787E603E663C3C667EC6663C6036E0 +S315E0655970663C183E18C666187E1E027800FE003E36 +S315E06559807C3C3E3C3006663C18663CC6663C7C3EE6 +S315E0655990607C0E3E186C66067E0E1870007E787822 +S315E06559A0787878787878787878787878787878782C +S315E06559B078787878787878787878787878780066A6 +S315E06559C0007E5A7E3CD8003C08187E007E7E003E0E +S315E06559D0183C00787C00087C7C0E7E007E7E6666E0 +S315E06559E06666667E3C083C7E307E7E3C3C7C7866C0 +S315E06559F0663C3C663C44663E3E3E3E18187C603EF0 +S315E0655A003E3E3E783C083C3C183C3C3C3C7C3E6635 +S315E0655A10663C3C3C3C18603E3E3E3E060E00003C25 +S315E0655A20181818000000007E10600000718E0000F6 +S315E0655A300000000000000000000017543800000078 +S315E0655A4000000000000000000000600000000000AB +S315E0655A5000000000000000000000000000000000FB +S315E0655A6000000000000000000000000000000000EB +S315E0655A7000000000000000000000000000000000DB +S315E0655A8000000000007C0000700000000000600679 +S315E0655A90000000000000007C000018000000000027 +S315E0655AA000000000000000000000000000000000AB +S315E0655AB00000000000000000000000000000000C8F +S315E0655AC00000810000700000380000000000000C56 +S315E0655AD00C000000000038000C000000000000002B +S315E0655AE0000000000038000018000000000000001B +S315E0655AF00000003C0000000000000000306000008F +S315E0655B0000000000001800000C0000000000000026 +S315E0655B1000000000000000000000007C18000000A6 +S315E0655B20000000080010001800200028003000384A +S315E0655B30004000480050005800600068007000783A +S315E0655B40008000880090009800A000A800B000B82A +S315E0655B5000C000C800D000D800E000E800F000F81A +S315E0655B600100010801100118012001280130013802 +S315E0655B7001400148015001580160016801700178F2 +S315E0655B80018001880190019801A001A801B001B8E2 +S315E0655B9001C001C801D001D801E001E801F001F8D2 +S315E0655BA002000208021002180220022802300238BA +S315E0655BB002400248025002580260026802700278AA +S315E0655BC0028002880290029802A002A802B002B89A +S315E0655BD002C002C802D002D802E002E802F002F88A +S315E0655BE00300030803100318032003280330033872 +S315E0655BF00340034803500358036003680370037862 +S315E0655C00038003880390039803A003A803B003B851 +S315E0655C1003C003C803D003D803E003E803F003F841 +S315E0655C200400040804100418042004280430043829 +S315E0655C300440044804500458046004680470047819 +S315E0655C40048004880490049804A004A804B004B809 +S315E0655C5004C004C804D004D804E004E804F004F8F9 +S315E0655C6005000508051005180520052805300538E1 +S315E0655C7005400548055005580560056805700578D1 +S315E0655C80058005880590059805A005A805B005B8C1 +S315E0655C9005C005C805D005D805E005E805F005F8B1 +S315E0655CA00600060806100618062006280630063899 +S315E0655CB00640064806500658066006680670067889 +S315E0655CC0068006880690069806A006A806B006B879 +S315E0655CD006C006C806D006D806E006E806F006F869 +S315E0655CE00700070807100718072007280730073851 +S315E0655CF00740074807500758076007680770077841 +S315E0655D00078007880790079807A007A807B007B830 +S315E0655D1007C007C807D007D807E007E807F007F820 +S315E0655D200800000000000000000000000000000020 +S315E0655D300000000000000000000000000000000018 +S315E0655D4011040000000018003800000000000000A3 +S315E0655D5000000000000000000000000000000000F8 +S315E0655D6000000000000000000000000000000000E8 +S315E0655D7000000000000000000000000000000000D8 +S315E0655D800000400000000000000000000000000088 +S315E0655D9000000000000000000000000000000000B8 +S315E0655DA000000000000000000000000000000000A8 +S315E0655DB00000000000000000000000000000000098 +S315E0655DC000000000660000000C00663600360C0038 +S315E0655DD03618000000000600003600000000001BD3 +S315E0655DE00000180C186600000C006C0600663606A6 +S315E0655DF0186C000C3606181B66006C1C0C336606C0 +S315E0655E000000000000000000000000000000000047 +S315E0655E100000000000000000000000000000000037 +S315E0655E20001800000000000000000000000000000F +S315E0655E3005A07C007C7C007C7C7C7C7C0000000092 +S315E0655E400B280000000018007C0000000000000040 +S315E0655E5000000000000000000000000000000000F7 +S315E0655E6000000000000000000000000000000000E7 +S315E0655E7000000000000000000000000000000000D7 +S315E0655E801000600000000000000000000000000057 +S315E0655E90000000000000000000000000000E18E0B1 +S315E0655EA000000000000000000000000000000000A7 +S315E0655EB00000000000000000000000000000000097 +S315E0655EC0000000003C0000001800661C001C18007D +S315E0655ED01C18380000000C00061C000000000636A1 +S315E0655EE0000030183C3C66021800380C00661C0C55 +S315E0655EF03C3800181C0C3C36660038361866660C6D +S315E0655F00000006061800000606000006000000060A +S315E0655F10180000060006181B0000001C061B00069C +S315E0655F200018000000300C7CFEEE010000087838B1 +S315E0655F3005A0BA023A3A82B8B8BABABA00780000A9 +S315E0655F400DD8001866663E666C1806606600000049 +S315E0655F5000063C183C7E0C7E1C7E3C3C0000000046 +S315E0655F60003C38187C3C787E7E3E667E06CC60C614 +S315E0655F70663C7C3CF83E7E6666C666667E1E6078F6 +S315E0655F8010007000600006000E0060180CC0380056 +S315E0655F900000000000000000000000000018183056 +S315E0655FA000000000000000000000000000000000A6 +S315E0655FB00000000000000000000000000000000096 +S315E0655FC0000000180060006C3E1C003E3E7E7E00D0 +S315E0655FD07E006C00003818760C00003600300C6CDC +S315E0655FE03618F800660066663C3C3C187E007E180E +S315E0655FF066787800661866000000F81C00000018F0 +S315E06560007E180C0C3C6666EC0C00360C0066360CAD +S315E06560103CDE060C360C3C3666006C360C36660C99 +S315E0656020000000183C381C38FEC6013C000E4040B6 +S315E065603005A0C6060606C6C0C0C6C6C600400000C0 +S315E06560400628001866667E666C180C3066180000D1 +S315E065605000067E187E7E0C7E3C7E7E7E00000E000F +S315E0656060E07E7C3C7E7E7C7E7E7E667E06CC60C601 +S315E0656070667E7E7EFC7E7E6666C666667E1E60782B +S315E065608038003800600006001E0060180CC0380055 +S315E0656090000000000000180000000000001818303D +S315E06560A000000000000000000000000000000000A5 +S315E06560B00000000000000000000000000000000095 +S315E06560C00000003C006000647E36007E7E7E7E00D9 +S315E06560D07E7E4400003800721800001C003318000C +S315E06560E01C18FC18003C186C7E7E7E7E7E7E7E3CAF +S315E06560F03C7C7C66663C3C3C3C00FC66666666666B +S315E06561007E3C1818663C66E818001C1800661C1884 +S315E0656110667606181C18666C6600381C186C661878 +S315E06561201800003C242C34BAFED60366180F70407E +S315E065613005A0C6060606C6C0C0C6C6C6007000008F +S315E065614007D0001866FF606C38181C383C180000EC +S315E065615000066638660C1C607006666618181C7E56 +S315E06561607066E67E66666E606060661806D860EEA6 +S315E065617066666666CC60186666C666660C186018FE +S315E065618038001C00600006001800600000C01800BA +S315E0656190000000000000180000000000001818303C +S315E06561A000000000000000000000000000000000A4 +S315E06561B00000000000000000000000000000000094 +S315E06561C00000007E006081686032006060180C0047 +S315E06561D00C7E6C0000180034000000000031000001 +S315E06561E00000CC3C3C7E3C606666667E607E603CDC +S315E06561F03C6E6E66667E7E7E7E00CC6666666666AE +S315E06562001866000000000060000000000000000065 +S315E065621000061F000000000000000000000000000E +S315E06562201800006624E66792FC9203C33C09404089 +S315E06562300DB0C6060606C6C0C0C6C6C67C4000002A +S315E06562402E10001866FF600C381818183C18000008 +S315E0656250000C6638660C1C60600666661818387E43 +S315E06562603866C266666666606060661806D860EE21 +S315E065627076666666CC60186666C63C660C18301847 +S315E06562806C000C3C7C3C3E3C183E7C380CCC186C77 +S315E06562903C3C7C3E7C3E7E6666C666667E1818300D +S315E06562A06218000000000000000000000000000029 +S315E06562B00000000000000000000000000000000093 +S315E06562C000000066006842606018006060180C00B7 +S315E06562D00C0C383C001800303E00003E3EFA7E006D +S315E06562E07E7ECC7E7E667E60666666606060601891 +S315E06562F018666676766666666642CC6666666666DF +S315E065630018667C3C3C3C3C603C3C3C3C3C3C3C381C +S315E0656310383E063C3C3C3C3C3C187C6666666666BC +S315E06563207E0000C32483C1D6FCBA06913C0840389A +S315E06563300DB082023A3ABAB8B882BABA7E78000047 +S315E065634039E0001866667C1870181818FF7E007EBE +S315E0656350000C66180C183C7C600C3C7E18187000C6 +S315E06563601C0CDA667E60667C7C6E7E1806F060FEE6 +S315E065637076666666CC70186666C63C3C1818301854 +S315E06563806C00043E7E7C7E7E7E7E7E380CDC18FE6E +S315E06563907E7E7E7E7E7E7E6666C666667E381838DC +S315E06563A0F2183E3E3E3E3E3E3E3E3E3E3E3E3E3E34 +S315E06563B03E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3EB2 +S315E06563C03E3E006600783C60703C007070181800D0 +S315E06563D0180C003E001C00307E00007E7EF87E00D4 +S315E06563E07E7ECC6666666660606060607C606018CE +S315E06563F018666676766666666666CC666666667EA2 +S315E065640018667E3E3E3E3E607C7C7C7E7E7E7E3849 +S315E0656410387E3E7E7E7E7E7E7E187E6666666666B5 +S315E06564207E000081E783C1C6F83806913C08000026 +S315E06564301DB800007C7C7C7C7C007C7C06000000D2 +S315E06564403800001866663E1870181818FF7E007EDC +S315E065645000186E180C183C7E7C0C3C3E1818E00063 +S315E06564600E0CD6667C60667C7C6E7E1806F060D621 +S315E06564707E666666FC38186666D6183C181818187F +S315E0656480C6000006666066667E6666180CF818FEE7 +S315E0656490666666666660186666D63C660CF0181EC5 +S315E06564A0BE3C3E3E3E3E3E3E3E3E3E3E3E3E3E3E43 +S315E06564B03E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3EB1 +S315E06564C03E3E006600706660386600383818187EAD +S315E06564D018180006003800306000006060300C0077 +S315E06564E00C0CFC66666666606060607C7C7C7C182D +S315E06564F01866F67E7E666666663CFC666666663C3D +S315E0656500187C6606060606606060606666666618FE +S315E065651018667E666666666666006666666666666C +S315E0656520180000E781E667D6FABA8C9D3C781E1CB2 +S315E0656530399C8202B83A3A3ABA02BA3A060E07F096 +S315E06565400000001800FF0630DE0018183C18000051 +S315E065655000187618180C6C067E1866060000707EC4 +S315E06565601C18D67E666066606066661806D860D674 +S315E06565707E667E66F81C186666D618183018181892 +S315E0656580C600003E66606666186666180CF018D644 +S315E0656590666666666070186666D63C6618F0181EAE +S315E06565A09C243E3E3E3E3E3E3E3E3E3E3E3E3E3E7C +S315E06565B03E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3EB0 +S315E06565C03E3E007E00E05A601C66001C1C18307E6C +S315E06565D03018003E0018003070000070703018000A +S315E06565E01818F87E7E7E7E606060607C607C7C18D4 +S315E06565F01866F67E7E6666666618F8666666661888 +S315E06566001866603E3E3E3E60606060666666661839 +S315E06566101866666666666666667E6066666666660B +S315E065662018000024C32C3492F2928C813CF8101247 +S315E0656630799EC606C0060606C606C6067E100FF82D +S315E06566400000001800FF0636DE0018183C1800004A +S315E065665000306618180C6C06661866060000387E0B +S315E06566603818DC7E666066606066661806D860C661 +S315E06566706E667C66D80E186666FE3C1830180C1891 +S315E06566800000007E6660667E186666180CF818D6A9 +S315E065669066666666603C186666FE1866183818387B +S315E06566A000663E3E3E3E3E3E3E3E3E3E3E3E3E3ED5 +S315E06566B03E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3EAF +S315E06566C03E3E007E00E05A600E3C000E0E1830003D +S315E06566D03030007E001800303C00003C3C3018004D +S315E06566E01818D87E7E7E7E60606060606060601847 +S315E06566F01866666E6E666666663CD8666666661833 +S315E06567001866607E7E7E7E606060607E7E7E7E18D8 +S315E06567101866666666666666667E6066666666660A +S315E06567201800002466381CBAF6D6D8C37E701C1CE1 +S315E0656730718EC606C0060606C606C606660C1FEC5C +S315E06567400000000000667E66CC0018186618180022 +S315E06567501830661830667E066630660618181C00C0 +S315E06567607018C066666666606066661866CC60C602 +S315E06567706E666066CC0618663CFE3C1860180C18BA +S315E06567800000006666606660186666180CD818D6FE +S315E065679066666666600E18663CFE3C6630181830BE +S315E06567A000423E3E3E3E3E3E3E3E3E3E3E3E3E3EF8 +S315E06567B03E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3EAE +S315E06567C03E3E0066006066600618000606186000D4 +S315E06567D060300066001800300E00000E0E303000A6 +S315E06567E03030CC6666666660666666606060601870 +S315E06567F01866666E6E6666666666CC666666661814 +S315E065680018666066666666606060606060606018AF +S315E06568101866666666666666660060666666666687 +S315E0656820180000243C300C38E6C65866FF001014A4 +S315E0656830718EC606C0060606C606C6066602180454 +S315E06568400000000000667C66CC001C386600180017 +S315E06568501860661830667E666630660E18180E0035 +S315E0656860E000E26666666E606066661866CC60C67F +S315E06568706666606ACC0618663CEE661860180618A9 +S315E06568800000006666606660187E66180CCC18C601 +S315E065689066666666600618663CEE3C7E30181830BD +S315E06568A000C33E3E3E3E3E3E3E3E3E3E3E3E3E3E76 +S315E06568B03E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3EAD +S315E06568C03E3E006600603C60064C000606186000C9 +S315E06568D0606000660018003006000006063030008D +S315E06568E03030CC666666666066666660606060186F +S315E06568F0186E6E66666666666642CC666666661837 +S315E065690018666066666666606060606060606018AE +S315E06569101866666666666666661860666666667E56 +S315E06569201800003C1800007CEEEE703C100010127A +S315E06569306186BA02B83A023ABA02BA3A7E1C1804D5 +S315E06569400000001800001800FE000C30000018007A +S315E065695018607E7E7E7E0C7E7E307E3C181800005A +S315E065696000187E667E7E7C7E607E667E7EC67EC6A0 +S315E0656970667E607CC67E187E18C666187E1E0678BC +S315E065698000FE007E7E7E7E7E183E663C0CCE3CC674 +S315E0656990667E7E7E607E1E7E18C6663E7E181830F2 +S315E06569A000FF3E3E3E3E3E3E3E3E3E3E3E3E3E3E39 +S315E06569B03E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3EAC +S315E06569C03E3E0066007E427E7E6C007E7E187E00E0 +S315E06569D07E7E007E003C00787E00007E7E3C7E000A +S315E06569E07E7EC6666666667E7E7E7E7E7E7E7E3CD6 +S315E06569F03C7C7C66667E7E7E7E00C67E7E7E7E187E +S315E0656A001866607E7E7E7EF07E7E7E7E7E7E7E3CC7 +S315E0656A103C7E7E66667E7E7E7E18607E7E7E7E3E81 +S315E0656A201E00000000000000000030003800000095 +S315E0656A3041827C007C7C007C7C007C7C3C00100494 +S315E0656A4000000018000018007600066000001800D7 +S315E0656A5018603C7E7E3C0C3C3C303C3818180000A7 +S315E0656A6000183C667C3C787E603C667E3CC67EC6AD +S315E0656A70663C6036C67C183C188266187E1E0678CB +S315E0656A8000FE003E7C3E3E3E1806663C0CC63CC6B5 +S315E0656A90663C7C3E607C0E3E188266067E18183043 +S315E0656AA000003E3E3E3E3E3E3E3E3E3E3E3E3E3E37 +S315E0656AB03E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3EAB +S315E0656AC03E3E0066007E817E7C38007C7C187E00DA +S315E0656AD07E7E003E003C00787C00007C7C1C7E006F +S315E0656AE07E7EC6666666667E3C3C3C7E7E7E7E3C9B +S315E0656AF03C787866663C3C3C3C00C63C3C3C3C1895 +S315E0656B0018EC603E3E3E3EF03E3E3E3E3E3E3E3C00 +S315E0656B103C3E3E66663C3C3C3C00603E3E3E3E0658 +S315E0656B200E000000000000000000200010000000DC +S315E0656B3000000000000000000000000000001E3CB0 +S315E0656B4000000000000000000000000000003000CA +S315E0656B5000000000000000000000000000300000BA +S315E0656B6000000000000000000000000000000000DA +S315E0656B7000000000000000000000000000000000CA +S315E0656B800000000000000000007E00007C000000C0 +S315E0656B9000006006000000000000007E000E18E0C0 +S315E0656BA0000000000000000000000000000000009A +S315E0656BB0000000000000000000000000000000008A +S315E0656BC00000000C00000000000000000C00000062 +S315E0656BD00000000C0C00000000000C000C0000003A +S315E0656BE00000000000000000000C00001800000036 +S315E0656BF0000000000000000000000000000000004A +S315E0656C001800000000000000000C000018000000FD +S315E0656C100000000000000000000000000000007EAB +S315E0656C200C0000000000000000000000000000000D +S315E0656C30000000000000000000000000000017549E +S315E0656C4000000000000000000000000000002000D9 +S315E0656C5000000000000000000000000000200000C9 +S315E0656C6000000000000000000000000000000000D9 +S315E0656C7000000000000000000000000000000000C9 +S315E0656C800000000000000000007C000078000000C5 +S315E0656C9000006006000000000000007C00000000C7 +S315E0656CA00000000000000000000000000000000099 +S315E0656CB00000000000000000000000000000000089 +S315E0656CC0000000060000000000000000380000003B +S315E0656CD000000006060000000000380038000000ED +S315E0656CE00000000000000000003800000C00000015 +S315E0656CF00000000000000000000000000000000049 +S315E0656D003000000000000000003800000C000000C4 +S315E0656D100000000000000000000000000000007CAC +S315E0656D203800000000000006000C00120018001E86 +S315E0656D300024002A00300036003C00420048004E40 +S315E0656D400054005A00600066006C00720078007EB0 +S315E0656D500084008A00900096009C00A200A800AE20 +S315E0656D6000B400BA00C000C600CC00D200D800DE90 +S315E0656D7000E400EA00F000F600FC01020108010EFD +S315E0656D800114011A01200126012C01320138013E68 +S315E0656D900144014A01500156015C01620168016ED8 +S315E0656DA00174017A01800186018C01920198019E48 +S315E0656DB001A401AA01B001B601BC01C201C801CEB8 +S315E0656DC001D401DA01E001E601EC01F201F801FE28 +S315E0656DD00204020A02100216021C02220228022E90 +S315E0656DE00234023A02400246024C02520258025E00 +S315E0656DF00264026A02700276027C02820288028E70 +S315E0656E000294029A02A002A602AC02B202B802BEDF +S315E0656E1002C402CA02D002D602DC02E202E802EE4F +S315E0656E2002F402FA03000306030C03120318031EB9 +S315E0656E300324032A03300336033C03420348034E27 +S315E0656E400354035A03600366036C03720378037E97 +S315E0656E500384038A03900396039C03A203A803AE07 +S315E0656E6003B403BA03C003C603CC03D203D803DE77 +S315E0656E7003E403EA03F003F603FC04020408040EE4 +S315E0656E800414041A04200426042C04320438043E4F +S315E0656E900444044A04500456045C04620468046EBF +S315E0656EA00474047A04800486048C04920498049E2F +S315E0656EB004A404AA04B004B604BC04C204C804CE9F +S315E0656EC004D404DA04E004E604EC04F204F804FE0F +S315E0656ED00504050A05100516051C05220528052E77 +S315E0656EE00534053A05400546054C05520558055EE7 +S315E0656EF00564056A05700576057C05820588058E57 +S315E0656F000594059A05A005A605AC05B205B805BEC6 +S315E0656F1005C405CA05D005D605DC05E205E805EE36 +S315E0656F2005F405FA060000820421CFB60DE304E315 +S315E0656F308150F987BCC3CC3E73E0381F844200CDEF +S315E0656F40947B260C318488000006704F3C33C73E3F +S315E0656F5071C30C18061C71CF1EF3EF9E89C0924271 +S315E0656F60289CF1CF1EFA28A28A2F9EC1E20060080E +S315E0656F70000801808001206000000000002000001C +S315E0656F8000000E31C4007941085102002144142104 +S315E0656F9005082007885102105145041A2F0610C2CC +S315E0656FA0063A228C29E70D0007BE30871C5006801D +S315E0656FB050C72C78051821011A20879E4042144057 +S315E0656FC0421471E40421A52235010850441C40426F +S315E0656FD01A5080004042144042145BC40421A5085F +S315E0656FE009010850401401C20662AF2A1A17868263 +S315E0656FF00150C88084C20C025367203F42F400CD3D +S315E0657000BEA34D0C60C30800000C98C0825208020E +S315E06570108A230C31E3268A28A08A0820888094434F +S315E06570206CA28A28A02228A252211860670061CF47 +S315E06570301C79C21EB18124214F1CF1E70E7228A28C +S315E06570404A278C30CE8880021400801E500200509C +S315E06570508000FBCA1400850800000E236D882007B2 +S315E06570600843610A13309B0008C04BE18C21AE8072 +S315E065707021C8B6B1C00000822C500A2020850020C8 +S315E0657080850048020852C014488214008736208578 +S315E06570902C000F1E20850020850020020852C000C6 +S315E06570A030821400840003623BDF6E1CB29784DE97 +S315E06570B0E150C88FBEC3EF8E7320B760629400C996 +S315E06570C01470861860C7BE01E018A8471C93CF0404 +S315E06570D071E00060018CBBEF208BCF26F88098428B +S315E06570E0AAA2F22F1C2228AA214218306D803028E8 +S315E06570F0A08BE7A2C8813823E8A28A24982228AA29 +S315E0657100322118306B9C82271C71C72071C7182104 +S315E0657110871C80EF9C71C8A289C89871CF1E70C81C +S315E06571201CF9C39C3ADFB679CB4030830479AE8CE3 +S315E065713078C89BBAE89871C71C71CFA0FBEFBE71A2 +S315E0657140C71CE9271C71C7085A28A28A24BC71C7DF +S315E06571501C71C3A071C71C618618D3C71C71C73E75 +S315E06571605A28A28A2722008D8662ACAAE2DFDC93E2 +S315E0657170A358D9CC06D8698CDBEFA440216800C05A +S315E06571803E296E8060C308300330C84802F8288817 +S315E065719088230C31E30CB228A08A082288889442B9 +S315E06571A029A2822A0222253650841818600003E84F +S315E06571B0A08A021E88812422A8A28A240622252A7C +S315E06571C031E20C30C132822F820820A0FBEF8820A5 +S315E06571D088A2F38A228A28A27A288E208D8808C812 +S315E06571E008F0861C62F79B0808C000079C11A68C10 +S315E06571F011E736B287188A28A28A2A20E38E3820D4 +S315E0657200820849A8A28A28946A28A289C7360820EE +S315E065721082082E20FBEFBE2082083A28A28A2880C3 +S315E06572206A28A289E49E00870421C9B642103C1803 +S315E0657230E75CD9CC06F86D8CD8673C71EEF000005A +S315E065724014F26D00318488300320704FBC13C70893 +S315E065725071C304180600822F1EF3E81E89C7127AE9 +S315E0657260289C81C9BC21E222888F9E09E00001EF56 +S315E06572701C79C20289C12272289CF1E41C11E236AE +S315E065728048278E31C03E7A283EFBEF9E820808206D +S315E06572908FBE81EBA28A28A20A288479CF08F8C72F +S315E06572A01E41C1A81B100D080A4003E00021F280CB +S315E06572B020002C79E232FBEFBEFBEB9E82082020B4 +S315E06572C082087168A28A28A24A28A288843CFBEFD4 +S315E06572D0BEFBE79E8208202082084A28A28A288883 +S315E06572E03228A288270200820000000001E3181018 +S315E06572F0B64CF9CFBE1BEF8CF8600758AC0000C002 +S315E0657300002006800000006000000000000000002C +S315E065731000000800000C7800000000000000000096 +S315E0657320000000600000000000000000003E000074 +S315E06573300000003C000E0000000080200000000018 +S315E065734003C000300000C1E71E79E7B871C71C715C +S315E0657350C8A2F8001C71C79EF1C780008C3078C260 +S315E06573600038871871EF800007800000007B028097 +S315E0657370780F8000021C8A28A28A2030FBEFBE7156 +S315E0657380C71C01271C71C700B1C71C70843079E73B +S315E06573909E79E03871C71C71C71C32271C71C7001E +S315E06573A041E79E79C41C0000000000080010001843 +S315E06573B000200028003000380040004800500058A2 +S315E06573C00060006800700078008000880090009892 +S315E06573D000A000A800B000B800C000C800D000D882 +S315E06573E000E000E800F000F801000108011001186E +S315E06573F0012001280130013801400148015001585A +S315E06574000160016801700178018001880190019849 +S315E065741001A001A801B001B801C001C801D001D839 +S315E065742001E001E801F001F8020002080210021825 +S315E06574300220022802300238024002480250025811 +S315E06574400260026802700278028002880290029801 +S315E065745002A002A802B002B802C002C802D002D8F1 +S315E065746002E002E802F002F80300030803100318DD +S315E065747003200328033003380340034803500358C9 +S315E065748003600368037003780380038803900398B9 +S315E065749003A003A803B003B803C003C803D003D8A9 +S315E06574A003E003E803F003F8040004080410041895 +S315E06574B00420042804300438044004480450045881 +S315E06574C00460046804700478048004880490049871 +S315E06574D004A004A804B004B804C004C804D004D861 +S315E06574E004E004E804F004F805000508051005184D +S315E06574F00520052805300538054005480550055839 +S315E06575000560056805700578058005880590059828 +S315E065751005A005A805B005B805C005C805D005D818 +S315E065752005E005E805F005F8060006080610061804 +S315E065753006200628063006380640064806500658F0 +S315E065754006600668067006780680068806900698E0 +S315E065755006A006A806B006B806C006C806D006D8D0 +S315E065756006E006E806F006F80700070807100718BC +S315E065757007200728073007380740074807500758A8 +S315E06575800760076807700778078007880790079898 +S315E065759007A007A807B007B807C007C807D007D888 +S315E06575A007E007E807F007F8080000183C18183CFC +S315E06575B0FFE7017E1818F0F005A07C067C7CC67CAA +S315E06575C07C7C7C7C007807F0110400186600180066 +S315E06575D038180E700000000000023C183C7E0C7EF8 +S315E06575E03C7E3C3C00000600603C3C187C3C787E7A +S315E06575F07E3E663C066660C6663C7C3C7C3C7E665A +S315E065760066C666667E1E407810000000600006006D +S315E06576101C006018186038000000000000000000DB +S315E065762000000000000E1870000000660C18663059 +S315E0657630180018663066186066180C003F186630E4 +S315E06576401830666666181C661C1E0C00181C3E66BD +S315E0657650660E667E3C1B00007E7C381838786600D0 +S315E06576607E0066183CD87F006600300C18346618D4 +S315E06576703F3C300C1866300C18667834300C18349C +S315E0657680660002300C18660C601C300C18346618FF +S315E06576900000300C1866600C18662634300C183419 +S315E06576A0660000300C18660C0066003C241C3899B0 +S315E06576B0FFC303C33C1CC0C005A0C6060606C6C01C +S315E06576C0C006C6C600600FF80B280018666C3E66F5 +S315E06576D06C181C386618000000066638660C1C6077 +S315E06576E06006666618180C003066663C66666C6011 +S315E06576F060606618066C60EE76666666666618664F +S315E065770066C66666061860183800C0006000060042 +S315E065771030006000006018000000000000001800FE +S315E0657720000000000018181860183C00186600187C +S315E065773018006600180066300000180078660018C4 +S315E06577406618000000183A6636301818183A60660A +S315E0657750181B18C306360000C3006C186C0C1800BD +S315E0657760CA001878666CD8000018181866580024A0 +S315E06577707866181866001818660066581818665808 +S315E065778000003C181866001860361818665800241C +S315E065779000001818660030186600185818186658FC +S315E06577A000180218186600186000006624F66FC3B4 +S315E06577B0FE9906D33C16FEDF05A0C6060606C6C0DC +S315E06577C0C006C6C63C781FEC0DD8001866FE606C30 +S315E06577D0381818183C180000000C6E1806183C7C22 +S315E06577E0600C66661818187E18066E6666606660D2 +S315E06577F060606618067860FE7E6666666660186630 +S315E065780066C63C660C1830186C00603C7C3C3E3CB9 +S315E06578107C3E7C38186618EC7C3C7C3E7C3E7E661D +S315E065782066C666667E181818F218660000003C00A3 +S315E0657830003C003C0000000018187E7ED800000081 +S315E06578400000663C663C303C667C00003C30FC3CB7 +S315E06578503E3C00BD3E6C0000BD00387E18387E6C4F +S315E0657860CA0000186636D87E66003C3C00001818EB +S315E0657870D8607E7E007E0000003C66000000000069 +S315E06578803C426666660066667C66000000003C3CD7 +S315E06578907E3C0000003C000000386C000000000003 +S315E06578A000003C00000000667C6600C3E783C1E734 +S315E06578B0FC3C8CD33C10D8DB0DB000007C7C7C7C3A +S315E06578C07C007C7C0660180406280018006C3C1871 +S315E06578D070001818FF7E007E001876180C0C6C0692 +S315E06578E07C183C3E000030000C0C6A667C60667C69 +S315E06578F07C6E7E18067060D67E667C667C3C186615 +S315E065790066D6183C18181818C600300666606666AE +S315E065791030666618186C18FE666666666660186692 +S315E065792066C63C660C30180C9E3460663C3C063C8C +S315E06579303C603C663C3838383C3C601BDE3C3C3C55 +S315E06579406666666666607C187C303C18607C6018A6 +S315E065795060663CB166D8FE38A5000018300C0C6C44 +S315E0657960CA387E18661BDEDB6618666618183C3C08 +S315E0657970DE6060607E603C3C3C18F6663C3C3C3CC8 +S315E065798066666E6666666666667C3C3C3C3C060696 +S315E06579901B603C3C3C66383838181E7C3C3C3C3CBD +S315E06579A03C7E6E6666666666666600E7C383C1C3E9 +S315E06579B0F999D8DB7E10DEFF0DB0C606C006060671 +S315E06579C0C606C6067E7E180407D00018006C06302B +S315E06579D0DE0018183C1800000030661818067E06AA +S315E06579E0663066061818180018186E7E666066605A +S315E06579F060666618067860C66E6660766C061866BA +S315E0657A0066FE3C1830180C180000003E6660667E1F +S315E0657A1030666618187818D666666666603C1866D7 +S315E0657A2066D61866181818180C3466667E063E061D +S315E0657A3006607E7E7E18181866667C7FF8666666E2 +S315E0657A40666666666660303C663006186030F83CA9 +S315E0657A503C6670B13E6C0600B90000187C78186C1F +S315E0657A607A380C7C3C36D8DF3C3066663C3C6666EC +S315E0657A70F8607C7C607C18181818667666666666BB +S315E0657A80661876666666663C7C66060606063E3E6D +S315E0657A907F607E7E7E7E1818181866666666666600 +S315E0657AA066007666666666666666002466F66F995D +S315E0657AB0F3C370C31070181E1998C606C00606068D +S315E0657AC0C606C606661810042E10000000FE7C6623 +S315E0657AD0CC001C38661830001860661830660C668F +S315E0657AE06630660C18180C7E3000606666666C60FB +S315E0657AF060666618666C60C66666606C666618661D +S315E0657B003CEE6618601806180000006666606660FA +S315E0657B10303E6618186C18C6666666666006186650 +S315E0657B203C7C3C3E3018181800623C66607E667E9A +S315E0657B307E3C6060601818187E7E60D8D86666669A +S315E0657B4066663E66663C301866307E183C30601880 +S315E0657B50063C1CBD00360600AD0000000000306C3A +S315E0657B600A003000006CD8D818607E7E66667E7E38 +S315E0657B70D86660607C6018181818666E6666666614 +S315E0657B80666666666666661860667E7E7E7E66663E +S315E0657B90D83C606060601818181866666666666642 +S315E0657BA0661866666666663E7C3E00243C1C383C26 +S315E0657BB0E7E720C338F0181B799E7C067C7C067C5B +S315E0657BC07C067C7C3C1E1E3C39E00018006C184641 +S315E0657BD076000E700000300018403C7E7E3C0C3C22 +S315E0657BE03C303C380030060060183E667C3C787E6A +S315E0657BF0603E663C3C667EC6663C6036663C183EE4 +S315E0657C0018C666187E1E027800FE003E7C3C3E3C49 +S315E0657C103006663C18663CC6663C7C3E607C0E3E3D +S315E0657C20186C66067E0E1870007E083E3C3E3E3E4B +S315E0657C303E083C3C3C3C3C3C66667E7EDF3C3C3CF0 +S315E0657C403E3E063C3E187E187C603E18187E3E1821 +S315E0657C507CD878C33C1B0000C300007E00007E7FB5 +S315E0657C600A007E003CD87F7E186666667E7E66661E +S315E0657C70DF1C7E7E607E1818183C786666666666EA +S315E0657C803C423C3C3C663C18606C3E3E3E3E3E3E7D +S315E0657C907E183C3C3C3C3C3C3C3C3C663C3C3C3C91 +S315E0657CA03C003C3E3E3E3E066006003C1818180029 +S315E0657CB00000007E10600000718E0000000000008C +S315E0657CC000000000000017543800000000000000C6 +S315E0657CD000000000000060000000000000000000F9 +S315E0657CE00000000000000000000000000000000049 +S315E0657CF00000000000000000000000000000000039 +S315E0657D000000000000000000000000000000000028 +S315E0657D10007C0000700000000000600600000000C6 +S315E0657D200000007C0000180000003800000000003C +S315E0657D3000180000000000000000000000000000E0 +S315E0657D4000007C00001800006000001818000000C4 +S315E0657D500070007E000000007E000000000000C0AC +S315E0657D600A00000000000000003C000066660000B6 +S315E0657D70003000007E003C3C3C0000003C3C3C3C66 +S315E0657D8000004000003C000000000000000000002C +S315E0657D900030000000000000000000000000000068 +S315E0657DA0000040000000007C007C00000000000848 +S315E0657DB00010001800200028003000380040004818 +S315E0657DC00050005800600068007000780080008808 +S315E0657DD00090009800A000A800B000B800C000C8F8 +S315E0657DE000D000D800E000E800F000F801000108E6 +S315E0657DF001100118012001280130013801400148D0 +S315E0657E0001500158016001680170017801800188BF +S315E0657E100190019801A001A801B001B801C001C8AF +S315E0657E2001D001D801E001E801F001F8020002089D +S315E0657E300210021802200228023002380240024887 +S315E0657E400250025802600268027002780280028877 +S315E0657E500290029802A002A802B002B802C002C867 +S315E0657E6002D002D802E002E802F002F80300030855 +S315E0657E70031003180320032803300338034003483F +S315E0657E80035003580360036803700378038003882F +S315E0657E900390039803A003A803B003B803C003C81F +S315E0657EA003D003D803E003E803F003F8040004080D +S315E0657EB004100418042004280430043804400448F7 +S315E0657EC004500458046004680470047804800488E7 +S315E0657ED00490049804A004A804B004B804C004C8D7 +S315E0657EE004D004D804E004E804F004F805000508C5 +S315E0657EF005100518052005280530053805400548AF +S315E0657F00055005580560056805700578058005889E +S315E0657F100590059805A005A805B005B805C005C88E +S315E0657F2005D005D805E005E805F005F8060006087C +S315E0657F300610061806200628063006380640064866 +S315E0657F400650065806600668067006780680068856 +S315E0657F500690069806A006A806B006B806C006C846 +S315E0657F6006D006D806E006E806F006F80700070834 +S315E0657F70071007180720072807300738074007481E +S315E0657F80075007580760076807700778078007880E +S315E0657F900790079807A007A807B007B807C007C8FE +S315E0657FA007D007D807E007E807F007F808000000FC +S315E0657FB00000000000000000000000000000000076 +S315E0657FC00000000000000000000000001104000051 +S315E0657FD00000180038000000000000000000000006 +S315E0657FE00000000000000000000000000000000046 +S315E0657FF00000000000000000000000000000000036 +S315E065800000000000000000000000000000004000E5 +S315E06580100000000000000000000000000000000015 +S315E06580200000000000000000000000000000000005 +S315E0658030000000000000000000000000003C0600B3 +S315E065804000000000000000000000000000000000E5 +S315E0658050000000006600000000000000000000006F +S315E065806000006600000000000000000000006006F9 +S315E06580701832003C00006006180060061800003201 +S315E06580806006183200000060061800060000000071 +S315E06580900000000000000000000000000000000095 +S315E06580A00000000000000000000000000000000085 +S315E06580B000000000000000000000000005A07C0054 +S315E06580C07C7C007C7C7C7C7C000000000B280000CE +S315E06580D0000018007C0000000000000000000000C1 +S315E06580E00000000000000000000000000000000045 +S315E06580F00000000000000000000000000000000035 +S315E065810000000000000000000000000010006000B4 +S315E06581100000000000000000000000000000000014 +S315E06581200000000000000000000E18E000000000FE +S315E0658130061800601C0018006000186066660C0092 +S315E06581403E1800601860006666000E0000000600D6 +S315E0658150000E00003C0000000000000000FE380054 +S315E065816000003C0000000000000000006600300CE6 +S315E06581703C7A66663E00300C3C66300C3C66007ABE +S315E0658180300C3C7A660001300C3C660C00006006FB +S315E06581901832001C00006006180060061800003200 +S315E06581A06006183200000060061800060000000050 +S315E06581B000300C7CFEEE01000008783805A0BA02B6 +S315E06581C03A3A82B8B8BABABA007800000DD800185B +S315E06581D066663E666C1806606600000000063C183A +S315E06581E03C7E0C7E1C7E3C3C00000000003C381862 +S315E06581F07C3C787E7E3E667E06CC60C6663C7C3C94 +S315E0658200F83E7E6666C666667E1E6078100070001D +S315E0658210600006000E0060180CC038000000000023 +S315E065822000000000000000000018183000003C6601 +S315E06582300C3C663036003C6630663C30663C180081 +S315E06582407E3C66303C30666666181E66180E0C0027 +S315E0658250181E1C66181C667C000000007CFE6C001F +S315E0658260307818007A0066183C007E0066181818A3 +S315E0658270664C663C7E3C1818666618186666784CE9 +S315E06582801818664C66003D18186666186018300C56 +S315E06582903C7A66360000300C3C66300C3C66667AA5 +S315E06582A0300C3C7A660000300C3C660C00660018C3 +S315E06582B03C381C38FEC6013C000E404005A0C606AB +S315E06582C00606C6C0C0C6C6C6004000000628001839 +S315E06582D066667E666C180C306618000000067E18C9 +S315E06582E07E7E0C7E3C7E7E7E00000E00E07E7C3CE3 +S315E06582F07E7E7C7E7E7E667E06CC60C6667E7E7E85 +S315E0658300FC7E7E6666C666667E1E607838003800E8 +S315E0658310600006001E0060180CC038000000000012 +S315E065832000001800000000000018183000007E66A6 +S315E0658330186666181C0066661866661818187E0064 +S315E0658340F866661866186600001838663C1E1818E2 +S315E065835018383E663E363CC600000000C600441846 +S315E065836048187E00CA003C786600FE0000180000EA +S315E065837000001818F87E7E7E00007E7E00007C0098 +S315E06583800000000000007E0000000000603C181858 +S315E0658390664C661C00001818666618186666184C02 +S315E06583A01818664C66180018186666186066003C0C +S315E06583B0242C34BAFED60366180F704005A0C606AF +S315E06583C00606C6C0C0C6C6C60070000007D000185F +S315E06583D066FF606C38181C383C1800000006663885 +S315E06583E0660C1C607006666618181C7E7066E67E0E +S315E06583F066666E606060661806D860EE6666666696 +S315E0658400CC60186666C666660C18601838001C008F +S315E0658410600006001800600000C01800000000005B +S315E06584200000180000000000001818300000660023 +S315E06584300000000000000000000000003C3C7E00FB +S315E0658440D80000000000003C663C306666180018FF +S315E06584503C3066667E3218823C00000082006C180D +S315E065846018307E00CA0018186600D80066003C3CE5 +S315E06584703C3C3C3CD8667E7E7E7E7E7E7E7E6E66BF +S315E06584803C3C3C3C3CC36666666666666066000088 +S315E065849000000000000000000000000000006C0025 +S315E06584A000000000001801000000000060000066A2 +S315E06584B024E66792FC9203C33C0940400DB0C606CC +S315E06584C00606C6C0C0C6C6C67C4000002E100018AB +S315E06584D066FF600C381818183C180000000C663802 +S315E06584E0660C1C60600666661818387E3866C26675 +S315E06584F0666666606060661806D860EE766666668D +S315E0658500CC60186666C63C660C1830186C000C3C88 +S315E06585107C3C3E3C183E7C380CCC186C3C3C7C3E46 +S315E06585207C3E7E6666C666667E1818306218666646 +S315E06585303C3C3C3C3C3C3C3C3C3838387E7E60765A +S315E0658540D83C3C3C6666667E667E306666183C0070 +S315E06585507E30606660183EBA3E000000BA003818A4 +S315E065856030180C66CA007E186600D87E66187E7E70 +S315E06585707E7E7E7ED86660607E7E18187E7E6666C6 +S315E06585807E7E7E7E7E666666666666667C663C3C06 +S315E06585903C3C3C3C763C3C3C3C3C38383838063CDC +S315E06585A03C3C3C3C3C003D66666666667C6600C374 +S315E06585B02483C1D6FCBA06913C0840380DB08202E8 +S315E06585C03A3ABAB8B882BABA7E78000039E00018A5 +S315E06585D066667C1870181818FF7E007E000C6618B3 +S315E06585E00C183C7C600C3C7E181870001C0CDA6636 +S315E06585F07E60667C7C6E7E1806F060FE76666666F4 +S315E0658600CC70186666C63C3C181830186C00043E9B +S315E06586107E7C7E7E7E7E7E380CDC18FE7E7E7E7E71 +S315E06586207E7E7E6666C666667E381838F218606651 +S315E06586307E3E3E3E3E7C7E7E7E3838386666607F30 +S315E0658640DE7E7E7E666666666666307E66183E18A1 +S315E06586506630FC7E703C7EA2061A003CAA00007E6F +S315E065866060480C66CA007E1866B0DEFF6618666608 +S315E065867066666666DE60606060601818181876760D +S315E065868066666666663C6E66666666667E663E3E99 +S315E06586903E3E3E3E7F7C7E7E7E7E383838381E7E28 +S315E06586A07E7E7E7E7E7E7E66666666667E660081AA +S315E06586B0E783C1C6F83806913C0800001DB800009E +S315E06586C07C7C7C7C7C007C7C0600000038000018A5 +S315E06586D066663E1870181818FF7E007E00186E18DC +S315E06586E00C183C7E7C0C3C3E1818E0000E0CD666F9 +S315E06586F07C60667C7C6E7E1806F060D67E66666615 +S315E0658700FC38186666D6183C18181818C6000006B0 +S315E0658710666066667E6666180CF818FE6666666668 +S315E06587206660186666D63C660CF0181EBE3C6066EA +S315E065873066060606066066666618181866667C1B33 +S315E0658740DE666666666666666660303C7C7E0618EC +S315E06587506030603C386660A23E36003CB200007E22 +S315E065876078301866CA180C7C3CD8DEDB6618666617 +S315E065877066666666DE607C7C606018181818F67654 +S315E06587806666666666186E6666666666667C06062E +S315E0658790060606061B6066666666181818183E665F +S315E06587A066666666667E666666666666666600E7EB +S315E06587B081E667D6FABA8C9D3C781E1C399C8202A6 +S315E06587C0B83A3A3ABA02BA3A060E07F00000001825 +S315E06587D000FF0630DE0018183C1800000018761811 +S315E06587E0180C6C067E1866060000707E1C18D67E30 +S315E06587F0666066606066661806D860D67E667E6682 +S315E0658800F81C186666D6181830181818C600003EA3 +S315E065881066606666186666180CF018D666666666FD +S315E06588206070186666D63C6618F0181E9C2460660D +S315E0658830663E3E3E3E606666661818187E7E7C7BC2 +S315E0658840F8666666666666666660FE1866183E186B +S315E065885060FEF8181C6670A27E6C0000BA0000180F +S315E0658860000018667A181800006CD8DB3C307E7E0E +S315E06588707E7E7E7EF8607C7C7C7C18181818E67EA9 +S315E065888066666666663C76666666663C667C3E3EBB +S315E06588903E3E3E3E7B6066666666181818186666F6 +S315E06588A06666666666006E66666666666666002423 +S315E06588B0C32C3492F2928C813CF81012799EC606EE +S315E06588C0C0060606C606C6067E100FF80000001846 +S315E06588D000FF0636DE0018183C1800000030661802 +S315E06588E0180C6C06661866060000387E3818DC7E5D +S315E06588F0666066606066661806D860C66E667C66A3 +S315E0658900D80E186666FE3C1830180C180000007E16 +S315E06589106660667E186666180CF818D666666666DC +S315E0658920603C186666FE1866183818380066606634 +S315E06589307E7E7E7E7E607E7E7E1818187E7E60FFF9 +S315E0658940F8666666666666666666307E66187E188C +S315E06589506630607E0E3C3CBA66D87E00AA0000189A +S315E0658960000030660A0018000036D8DF3C307E7EAF +S315E06589707E7E7E7EF86060607C7C18181818666E70 +S315E065898066666666666676666666663C7E667E7E0E +S315E06589907E7E7E7EFF607E7E7E7E18181818666611 +S315E06589A06666666666187E666666666666660024FA +S315E06589B066381CBAF6D6D8C37E701C1C718EC606A0 +S315E06589C0C0060606C606C606660C1FEC0000000075 +S315E06589D000667E66CC0018186618180018306618AA +S315E06589E030667E066630660618181C007018C06626 +S315E06589F0666666606066661866CC60C66E66606664 +S315E0658A00CC0618663CFE3C1860180C18000000663B +S315E0658A1066606660186666180CD818D66666666619 +S315E0658A20600E18663CFE3C66301818300042666695 +S315E0658A30606666666660606060181818666660D827 +S315E0658A40D866666666666666667E30186618661811 +S315E0658A507E30601806180E82666C7E00820000180D +S315E0658A60000030660A003000006CD8D81866666685 +S315E0658A7066666666D8666060606018181818666E21 +S315E0658A806666666666C36666666666187C66666616 +S315E0658A9066666666D860606060601818181866660F +S315E0658AA06666666666187666666666666666002401 +S315E0658AB03C300C38E6C65866FF001014718EC60663 +S315E0658AC0C0060606C606C60666021804000000006D +S315E0658AD000667C66CC001C3866001800186066186F +S315E0658AE030667E666630660E18180E00E000E26651 +S315E0658AF066666E606066661866CC60C66666606A5F +S315E0658B00CC0618663CEE6618601806180000006626 +S315E0658B1066606660187E66180CCC18C6666666661C +S315E0658B20600618663CEE3C7E3018183000C3666613 +S315E0658B30606666666660606060181818666660D826 +S315E0658B40D866666666667E66663C30187C18661824 +S315E0658B503C306618064C06C67E360600C600000042 +S315E0658B600000607F0A00300000D8D8D818666666CF +S315E0658B7066666666D86660606060181818186E6620 +S315E0658B8066666666660066666666661860666666F4 +S315E0658B9066666666D860606060601818181866660E +S315E0658BA066666666660066666666667E667E003CE0 +S315E0658BB01800007CEEEE703C100010126186BA0279 +S315E0658BC0B83A023ABA02BA3A7E1C180400000018AE +S315E0658BD000001800FE000C300000180018607E7E6C +S315E0658BE07E7E0C7E7E307E3C1818000000187E6620 +S315E0658BF07E7E7C7E607E667E7EC67EC6667E607C2A +S315E0658C00C67E187E18C666187E1E067800FE007E4D +S315E0658C107E7E7E7E183E663C0CCE3CC6667E7E7E5D +S315E0658C20607E1E7E18C6663E7E18183000FF7E7E24 +S315E0658C307E7E7E7E7E7E7E7E7E3C3C3C66667EFF7E +S315E0658C40DE7E7E7E7E7E3E7E7E187F186C187E1882 +S315E0658C50187F3E187E6C7E7C3E1A06007C00007EA0 +S315E0658C6000007E5D0A007E0000B0FEFF187E666647 +S315E0658C7066666666DE7E7E7E7E7E7E7E7E7E7C66E3 +S315E0658C807E7E7E7E7E007E7E7E7E7E1860667E7ED3 +S315E0658C907E7E7E7EFF7E7E7E7E7E3C3C3C3C7E6648 +S315E0658CA07E7E7E7E7E007E7E7E7E7E3E7E3E000093 +S315E0658CB000000000000030003800000041827C00C2 +S315E0658CC07C7C007C7C007C7C3C0010040000001809 +S315E0658CD000001800760006600000180018603C7E0B +S315E0658CE07E3C0C3C3C303C381818000000183C666D +S315E0658CF07C3C787E603C667E3CC67EC6663C60367D +S315E0658D00C67C183C188266187E1E067800FE003E14 +S315E0658D107C3E3E3E1806663C0CC63CC6663C7C3EE2 +S315E0658D20607C0E3E188266067E18183000003C3E72 +S315E0658D303E3E3E3E3E3E3E3E3E3C3C3C66667E7F3D +S315E0658D40DE3C3C3C3E3E063C3C18FF1860703E18F7 +S315E0658D5018FF1C187C387C00000006000000007EC9 +S315E0658D6000007EC00A007E0000007E7F183C6666D5 +S315E0658D7066666666DE3C7E7E7E7E7E7E7E7E786628 +S315E0658D803C3C3C3C3C00BC3C3C3C3C18606C3E3E60 +S315E0658D903E3E3E3E7F3E3E3E3E3E3C3C3C3C3C6649 +S315E0658DA03C3C3C3C3C00BC3E3E3E3E067C06000010 +S315E0658DB00000000000002000100000000000000038 +S315E0658DC0000000000000000000001E3C00000000FE +S315E0658DD00000000000000000000030000000000018 +S315E0658DE00000000000000000003000000000000008 +S315E0658DF00000000000000000000000000000000028 +S315E0658E000000000000000000000000000000000017 +S315E0658E1000000000007E00007C00000000006006A7 +S315E0658E20000000000000007E000E18E000000C0067 +S315E0658E3000000000000C00000000000000000000DB +S315E0658E400000000000007E000000000040600018A1 +S315E0658E5000000000000000007E0000000000000049 +S315E0658E600000008000000000000000000000000037 +S315E0658E7000000000000C000000000000000000009B +S315E0658E800000000000008000000000000000000017 +S315E0658E9000000000000C000000000000000000007B +S315E0658EA000000000000080000000007E607E00009B +S315E0658EB00000000000000000000000000000000067 +S315E0658EC000000000000000000000175400000000EC +S315E0658ED00000000000000000000020000000000027 +S315E0658EE00000000000000000002000000000000017 +S315E0658EF00000000000000000000000000000000027 +S315E0658F000000000000000000000000000000000016 +S315E0658F1000000000007C00007800000000006006AC +S315E0658F20000000000000007C000000000000380042 +S315E0658F3000000000003800000000000000000000AE +S315E0658F400000000000007C0000000000000000005A +S315E0658F5000000000000000000000000000000000C6 +S315E0658F6000000000000000000000000000000000B6 +S315E0658F70000000000038000000000000000000006E +S315E0658F800000000000000000000000000000000096 +S315E0658F90000000000038000000000000000000004E +S315E0658FA000000000000000000000007C607C00001E +S315E0658FB0000100083658362073797374656D20664E +S315E0658FC06F6E740000000000000000000000000005 +S315E0658FD000000000000000FF00040004000300013B +S315E0658FE0000100050006000000020001000155557C +S315E0658FF05555000D0000000000E5900A00E5920C6D +S315E065900000C0000600000000000000000006000C3D +S315E065901000120018001E0024002A00300036003CCD +S315E065902000420048004E0054005A00600066006C3D +S315E065903000720078007E0084008A00900096009CAD +S315E065904000A200A800AE00B400BA00C000C600CC1D +S315E065905000D200D800DE00E400EA00F000F600FC8D +S315E065906001020108010E0114011A01200126012CF5 +S315E065907001320138013E0144014A01500156015C65 +S315E065908001620168016E0174017A01800186018CD5 +S315E065909001920198019E01A401AA01B001B601BC45 +S315E06590A001C201C801CE01D401DA01E001E601ECB5 +S315E06590B001F201F801FE0204020A02100216021C20 +S315E06590C002220228022E0234023A02400246024C8D +S315E06590D002520258025E0264026A02700276027CFD +S315E06590E002820288028E0294029A02A002A602AC6D +S315E06590F002B202B802BE02C402CA02D002D602DCDD +S315E065910002E202E802EE02F402FA03000306030C49 +S315E065911003120318031E0324032A03300336033CB4 +S315E065912003420348034E0354035A03600366036C24 +S315E065913003720378037E0384038A03900396039C94 +S315E065914003A203A803AE03B403BA03C003C603CC04 +S315E065915003D203D803DE03E403EA03F003F603FC74 +S315E065916004020408040E0414041A04200426042CDC +S315E065917004320438043E0444044A04500456045C4C +S315E065918004620468046E0474047A04800486048CBC +S315E065919004920498049E04A404AA04B004B604BC2C +S315E06591A004C204C804CE04D404DA04E004E604EC9C +S315E06591B004F204F804FE0504050A05100516051C07 +S315E06591C005220528052E0534053A05400546054C74 +S315E06591D005520558055E0564056A05700576057CE4 +S315E06591E005820588058E0594059A05A005A605AC54 +S315E06591F005B205B805BE05C405CA05D005D605DCC4 +S315E065920005E205E805EE05F405FA060000820421A7 +S315E0659210CFB60DE304E38150F987BCC3CC3E73E07A +S315E0659220381F844200CD947B260C31848800000685 +S315E0659230704F3C33C73E71C30C18061C71CF1EF3E5 +S315E0659240EF9E89C09242289CF1CF1EFA28A28A2F0A +S315E06592509EC1E20060080008018080012060000090 +S315E065926000000020000000000E31C40073CF08FB4B +S315E0659270E89C7122228BE73EF3EFA2222A9C0380CB +S315E06592801C03E01C00070003E0000000000000008E +S315E065929069A34201E41A69410869E7BD4BA9BC7B4C +S315E06592A0FF1C7BFC1EF30D8EF9BFB6F9CD5E3BE088 +S315E06592B03ED8C000008108504208508BBFC6EBB16E +S315E06592C0B886060CC21A30600001C03E01C206626D +S315E06592D0AF2A1A1786820150C88084C20C0253678A +S315E06592E0203F42F400CDBEA34D0C60C30800000CE0 +S315E06592F098C0825208028A230C31E3268A28A08A1E +S315E06593000820888094436CA28A28A02228A252214C +S315E06593101860670061CF1C79C21EB18124214F1C9C +S315E0659320F1E70E7228A24A278C30CE888A28148007 +S315E065933048A2214536C808A2890222714AA2EA44B2 +S315E06593409078CF1222419289873E71F3BE8AE9A26F +S315E0659350B2C48C72C22CB0021CEB38D7012D8C08D6 +S315E0659360618C31BD861BE7C6D9B9B6186D56186FDF +S315E0659370E6D8A2168BA7BE2087228A24504444519C +S315E065938047E19810C02C48800700600003623BDF28 +S315E06593906E1CB29784DEE150C88FBEC3EF8E732034 +S315E06593A0B760629400C91470861860C7BE01E0189C +S315E06593B0A8471C93CF0471E00060018CBBEF208B5E +S315E06593C0CF26F8809842AAA2F22F1C2228AA21422B +S315E06593D018306D803028A08BE7A2C8813823E8A2D3 +S315E06593E08A24982228AA322118306B9CFBC822F081 +S315E06593F08FBE2188AAA9C8A2F08214A8871C93C348 +S315E06594001CF1049E2387928B08A28A46088AA62ABF +S315E065941071C596BAE71C700008EADB5549270C1852 +S315E06594206D8C19BD86186646D9BD9CD86F5618668B +S315E0659430F671C72DAA4F122088A28AA7DC7C444E16 +S315E065944038860630CF8031C30450C300008D86620E +S315E0659450ACAAE2DFDC93A358D9CC06D8698CDBEFFE +S315E0659460A440216800C03E296E8060C308300330A1 +S315E0659470C84802F8288888230C31E30CB228A08A0C +S315E065948008228888944229A2822A022225365084B7 +S315E06594901818600003E8A08A021E88812422A8A223 +S315E06594A08A240622252A31E20C30C1328A282281B5 +S315E06594B008A22148A29808A2810208714200922377 +S315E06594C0228204A222489251C8A28A218A8AA22AC5 +S315E06594D00A269AA2C8A28800086AF8C04BAD8C38FD +S315E06594E06D8C19BD80186646D9B18ED06C561866F6 +S315E06594F0C631CDADAA48122088A28AA45044444418 +S315E065950000000030C01A00833401E30000870421BF +S315E0659510C9B642103C18E75CD9CC06F86D8CD867BD +S315E06595203C71EEF0000014F26D0031848830032062 +S315E0659530704FBC13C70871C304180600822F1EF36B +S315E0659540E81E89C7127A289C81C9BC21E222888FE8 +S315E06595509E09E00001EF1C79C20289C12272289C4E +S315E0659560F1E41C11E23648278E31C03E8BC83EFBDE +S315E0659570E89C7128A28BE72283E20822223EFBC49F +S315E06595809C7B049C32289E230722F1C70C73E73E39 +S315E0659590FA248C79EFBE8800082B1A40482CBE6801 +S315E06595A06D8C19BF80F1E6DE73FFBEC06FF6186796 +S315E06595B0C632889A73E79230C71C71C45F44E38408 +S315E06595C07FE79E30822C01E01C00000000820000EF +S315E06595D0000001E31810B64CF9CFBE1BEF8CF860BE +S315E06595E00758AC0000C0002006800000006000005F +S315E06595F000000000000000000800000C7800000094 +S315E065960000000000000000000060000000000000AF +S315E06596100000003E00000000003C000E0000000077 +S315E065962080200000000003C000300000000000005C +S315E065963000000000000000000000000000000203DA +S315E06596400001C00000002001C000800000008C8899 +S315E065965079CB100008A270000029E78010C00000F1 +S315E06596600000000000000000000000C000000000EF +S315E0659670000180000000000000000000000000001E +S315E0659680000000330000000008000000000100094A +S315E06596903878382073797374656D20666F6E7400FB +S315E06596A0000000000000000000000000000000006F +S315E06596B0000000FF00060006000400010001000747 +S315E06596C00008000100030001000155555555000DE0 +S315E06596D00000000000E596E600E598E80100000870 +S315E06596E000000000000000000008001000180020DF +S315E06596F000280030003800400048005000580060FF +S315E0659700006800700078008000880090009800A0EE +S315E065971000A800B000B800C000C800D000D800E0DE +S315E065972000E800F000F801000108011001180120C9 +S315E065973001280130013801400148015001580160B6 +S315E0659740016801700178018001880190019801A0A6 +S315E065975001A801B001B801C001C801D001D801E096 +S315E065976001E801F001F80200020802100218022081 +S315E0659770022802300238024002480250025802606E +S315E0659780026802700278028002880290029802A05E +S315E065979002A802B002B802C002C802D002D802E04E +S315E06597A002E802F002F80300030803100318032039 +S315E06597B00328033003380340034803500358036026 +S315E06597C0036803700378038003880390039803A016 +S315E06597D003A803B003B803C003C803D003D803E006 +S315E06597E003E803F003F804000408041004180420F1 +S315E06597F004280430043804400448045004580460DE +S315E0659800046804700478048004880490049804A0CD +S315E065981004A804B004B804C004C804D004D804E0BD +S315E065982004E804F004F805000508051005180520A8 +S315E06598300528053005380540054805500558056095 +S315E0659840056805700578058005880590059805A085 +S315E065985005A805B005B805C005C805D005D805E075 +S315E065986005E805F005F80600060806100618062060 +S315E0659870062806300638064006480650065806604D +S315E0659880066806700678068006880690069806A03D +S315E065989006A806B006B806C006C806D006D806E02D +S315E06598A006E806F006F80700070807100718072018 +S315E06598B00728073007380740074807500758076005 +S315E06598C0076807700778078007880790079807A0F5 +S315E06598D007A807B007B807C007C807D007D807E0E5 +S315E06598E007E807F007F8080000183C18183CFFE79A +S315E06598F0017E1818F0F005A07C067C7CC67C7C7C35 +S315E06599007C7C007807F011040018660018003818AA +S315E06599100E700000000000023C183C7E0C7E3C7E2A +S315E06599203C3C00000600603C3C187C3C787E7E3E14 +S315E0659930663C066660C6663C7C3C7C3C7E6666C686 +S315E065994066667E1E407810000000600006001C001A +S315E06599506018186038000000000000000000000094 +S315E06599600000000E18700000187C7E187E7E663C4E +S315E06599703C6618C6667E3C7E7C7E7E661066C63C28 +S315E0659980003C003C007E003C00003C00007E0000A0 +S315E0659990000000000000000034340200007F30342F +S315E06599A034660C007A7E7EF166F600000000000003 +S315E06599B0000060000060000000000000000000009C +S315E06599C000000000000E00660018181866181818E2 +S315E06599D0661898BFB3BC9EB39E18300C0018180085 +S315E06599E03800000000380000003C241C3899FFC3AD +S315E06599F003C33C1CC0C005A0C6060606C6C0C006B5 +S315E0659A00C6C600600FF80B280018666C3E666C18D3 +S315E0659A101C386618000000066638660C1C60600631 +S315E0659A20666618180C003066663C66666C60606053 +S315E0659A306618066C60EE766666666666186666C67F +S315E0659A406666061860183800C000600006003000DB +S315E0659A5060000060180000000000000018000000CB +S315E0659A6000000018181860183C66603C600666667B +S315E0659A70186C3CEE76006666663018667C66D66679 +S315E0659A8000660060001800660000660000180000C9 +S315E0659A90000000000000000058583C0200D8185845 +S315E0659AA058001810CAC3C35B0066667C1E7E7C1CC4 +S315E0659AB01E7E6E3C3E7E6C1C3E367E663E78D67C71 +S315E0659AC01C3EFE7E361B10F700000000000000001D +S315E0659AD00000BCB0B398B3B3B31818180E181832B3 +S315E0659AE06C1C00006C6C00FE006624F66FC3FE9984 +S315E0659AF006D33C16FEDF05A0C6060606C6C0C0064A +S315E0659B00C6C63C781FEC0DD8001866FE606C381842 +S315E0659B1018183C180000000C6E1806183C7C600CA2 +S315E0659B2066661818187E18066E666660666060601A +S315E0659B306618067860FE7E6666666660186666C660 +S315E0659B403C660C1830186C00603C7C3C3E3C7C3EC8 +S315E0659B507C38186618EC7C3C7C3E7C3E7E6666C648 +S315E0659B6066667E181818F21866666066600C666644 +S315E0659B70187866FE7600666666181866D63CD6661A +S315E0659B803E6666303E30FC663066066666303C7E2E +S315E0659B903C3F3E7E664C66C60000663C7ED800006D +S315E0659BA03C003038CABDBD5FE666760C060C060C31 +S315E0659BB00C36660C06063E0C36366666060CD66CC4 +S315E0659BC00C066666363C3899C63E3EFC18303C6601 +S315E0659BD066C6663033183333337E0C301B18004C5B +S315E0659BE0383A000F6C18000000C3E783C1E7FC3C18 +S315E0659BF08CD33C10D8DB0DB000007C7C7C7C7C0093 +S315E0659C007C7C0660180406280018006C3C18700019 +S315E0659C101818FF7E007E001876180C0C6C067C180A +S315E0659C203C3E000030000C0C6A667C60667C7C6EAF +S315E0659C307E18067060D67E667C667C3C186666D65F +S315E0659C40183C18181818C6003006666066663066F1 +S315E0659C506618186C18FE666666666660186666C699 +S315E0659C603C660C30180C9E34667C60667C187E7E9D +S315E0659C70187066D67E3C66667C0C183CD618D66649 +S315E0659C80667C3C3C6060661E306C3E666618666661 +S315E0659C906666601866D666D63C3C6E6EDBDE181880 +S315E0659CA066000010CAB1A55566663C0C0E0C660CDE +S315E0659CB00636660C0606660C3636763C360CD66C8B +S315E0659CC00C0666761C666C99D666606618306666BE +S315E0659CD066D6663E3F18331E331818181B187E0085 +S315E0659CE0003000180030380000E7C383C1C3F99936 +S315E0659CF0D8DB7E10DEFF0DB0C606C0060606C606D4 +S315E0659D00C6067E7E180407D00018006C0630DE00B5 +S315E0659D1018183C1800000030661818067E0666308E +S315E0659D2066061818180018186E7E666066606066C6 +S315E0659D306618067860C66E6660766C06186666FEB8 +S315E0659D403C1830180C180000003E6660667E30668A +S315E0659D506618187818D666666666603C186666D6CE +S315E0659D601866181818180C347E6660666030666684 +S315E0659D70187866C66E00666660181818D63C7C3C30 +S315E0659D80666618667C3066663078666666306666F0 +S315E0659D9066663C1866D63CD606667676DFD83C3C83 +S315E0659DA0660000107AB1B95166666E0C1E0C660CDB +S315E0659DB0063666000606660C3636060E360CD66C34 +S315E0659DC00C0666060C66C6EFD6667C661830666671 +S315E0659DD066D67E303318330C1E18300C18D8003230 +S315E0659DE0007818D8007C3800002466F66F99F3C3CE +S315E0659DF070C31070181E1998C606C0060606C60614 +S315E0659E00C606661810042E10000000FE7C66CC00BF +S315E0659E101C38661830001860661830660C66663061 +S315E0659E20660C18180C7E3000606666666C60606667 +S315E0659E306618666C60C66666606C666618663CEE55 +S315E0659E406618601806180000006666606660303E53 +S315E0659E506618186C18C666666666600618663C7CA3 +S315E0659E603C3E301818180062666660666060666635 +S315E0659E70186C66C66E006666603018187C661000FB +S315E0659E8066663C6660186666346666663C1866664F +S315E0659E906666061A66D618D67E666666D8D8666635 +S315E0659EA0660000100ABDAD00F6F6667E360C660CF9 +S315E0659EB006367E003E0E6E3C1C7E7E7E340CFEECE7 +S315E0659EC00C067E060C3C8266D66660661A34666665 +S315E0659ED066D666303318330C0000000018D8184C87 +S315E0659EE0003018700000380000243C1C383CE7E779 +S315E0659EF020C338F0181B799E7C067C7C067C7C0644 +S315E0659F007C7C3C1E1E3C39E00018006C18467600E9 +S315E0659F100E700000300018403C7E7E3C0C3C3C30C8 +S315E0659F203C380030060060183E667C3C787E603ED4 +S315E0659F30663C3C667EC6663C6036663C183E18C640 +S315E0659F4066187E1E027800FE003E7C3C3E3C30068E +S315E0659F50663C18663CC6663C7C3E607C0E3E186C8C +S315E0659F6066067E0E1870007E667C607E7E7E663C4A +S315E0659F703C6666C6667E3C66607E18181066107E30 +S315E0659F803F7C243C3E0C663C1866667F180C3C6656 +S315E0659F907C3C7C0C3C7C3C7C3E3C3C3C7E7F7E7EDB +S315E0659FA0660000000AC3C300060600000000000064 +S315E0659FB00000000000000000000000003000000026 +S315E0659FC00C0600060CD800007C3F3E660C183C3C4F +S315E0659FD03C7C663F333C1E0C3F7E7E7E18701800E7 +S315E0659FE0007E003000000000003C181818000000F4 +S315E0659FF0007E10600000718E000000000000000029 +S315E065A0000000000017543800000000000000000062 +S315E065A0100000000060000000000000000000000095 +S315E065A02000000000000000000000000000000000E5 +S315E065A03000000000000000000000000000000000D5 +S315E065A0400000000000000000000000000000007C49 +S315E065A05000007000000000006006000000000000DF +S315E065A060007C000018000000000000000000000011 +S315E065A0700000000000000000000000000000000095 +S315E065A08000603C00007C0000000000600004000009 +S315E065A0906000000000106610000040400000666643 +S315E065A0A03C0000000A7E7E001C1C000000000000EB +S315E065A0B00000000000000000000000000000000055 +S315E065A0C000000000007000000000000000000000D5 +S315E065A0D0000000000000000000000000180000001D +S315E065A0E000000000000000000001000A3878313603 +S315E065A0F02073797374656D20666F6E740000000079 +S315E065A100000000000000000000000000000000FF05 +S315E065A110000D000B000800020002000700080001C0 +S315E065A12000070001000155555555000D000000007A +S315E065A13000E5A14200E5A34401000010000000002F +S315E065A140000000000008001000180020002800301C +S315E065A1500038004000480050005800600068007014 +S315E065A1600078008000880090009800A000A800B004 +S315E065A17000B800C000C800D000D800E000E800F0F4 +S315E065A18000F80100010801100118012001280130DD +S315E065A19001380140014801500158016001680170CC +S315E065A1A00178018001880190019801A001A801B0BC +S315E065A1B001B801C001C801D001D801E001E801F0AC +S315E065A1C001F8020002080210021802200228023095 +S315E065A1D00238024002480250025802600268027084 +S315E065A1E00278028002880290029802A002A802B074 +S315E065A1F002B802C002C802D002D802E002E802F064 +S315E065A20002F803000308031003180320032803304C +S315E065A210033803400348035003580360036803703B +S315E065A2200378038003880390039803A003A803B02B +S315E065A23003B803C003C803D003D803E003E803F01B +S315E065A24003F8040004080410041804200428043004 +S315E065A25004380440044804500458046004680470F3 +S315E065A2600478048004880490049804A004A804B0E3 +S315E065A27004B804C004C804D004D804E004E804F0D3 +S315E065A28004F80500050805100518052005280530BC +S315E065A29005380540054805500558056005680570AB +S315E065A2A00578058005880590059805A005A805B09B +S315E065A2B005B805C005C805D005D805E005E805F08B +S315E065A2C005F8060006080610061806200628063074 +S315E065A2D00638064006480650065806600668067063 +S315E065A2E00678068006880690069806A006A806B053 +S315E065A2F006B806C006C806D006D806E006E806F043 +S315E065A30006F807000708071007180720072807302B +S315E065A310073807400748075007580760076807701A +S315E065A3200778078007880790079807A007A807B00A +S315E065A33007B807C007C807D007D807E007E807F0FA +S315E065A34007F80800000000000000000000000000BB +S315E065A35000000000000000000000000000000000B2 +S315E065A360000011040000000018003800000000003D +S315E065A3700000000000000000000000000000000092 +S315E065A3800000000000000000000000000000000082 +S315E065A3900000000000000000000000000000000072 +S315E065A3A00000000040000000000000000000000022 +S315E065A3B00000000000000000000000000000000052 +S315E065A3C00000000000000000000000000000000042 +S315E065A3D00000000000000000000000000000000032 +S315E065A3E00000000000000000000000000000000022 +S315E065A3F0000000000000000000006032320000004E +S315E065A400000000F100F6000000000000000000001A +S315E065A4100060000000000000000000000000000091 +S315E065A42000000000000000000000000000000000E1 +S315E065A430000000000000000000180000000E0000AB +S315E065A44000000000000000000000000000000000C1 +S315E065A450000005A07C007C7C007C7C7C7C7C00002C +S315E065A46000000B280000000018007C0000000000DA +S315E065A4700000000000000000000000000000000091 +S315E065A4800000000000000000000000000000000081 +S315E065A4900000000000000000000000000000000071 +S315E065A4A000001000600000000000000000000000F1 +S315E065A4B00000000000000000000000000000000E43 +S315E065A4C018E0000000000000000000000000000049 +S315E065A4D00000000000000000080000000000000029 +S315E065A4E00000000000000000000000000000000021 +S315E065A4F000000000323201000000307A7A6606100C +S315E065A5000000005B66F60000000000000000000049 +S315E065A5100060000000000000000000000000000090 +S315E065A5200000000000060606000C060600030000B3 +S315E065A530000000000000000000180000381E000062 +S315E065A540003800FE000000300C7CFEEE01000008DD +S315E065A550783805A0BA023A3A82B8B8BABABA007893 +S315E065A56000000DD8001866663E666C1806606600E3 +S315E065A570000000063C183C7E0C7E1C7E3C3C0000E0 +S315E065A5800000003C38187C3C787E7E3E667E06CCD4 +S315E065A59060C6663C7C3CF83E7E6666C666667E1E42 +S315E065A5A0607810007000600006000E0060180CC050 +S315E065A5B03800000000000000000000000000001800 +S315E065A5C018300000187C7E187E7E663C7E661863D1 +S315E065A5D0667E3C7E7C7E7E660866633C003C003E2D +S315E065A5E0007E003C00003C00007E000000000000AC +S315E065A5F0000000007A7A3D00007E184C4C660C7CC3 +S315E065A6007A7C7C5F6666667C1E7E7E381E7E6E3CE8 +S315E065A6103C7E6C1CFE367E6E3E7CD67E387E7E7ECD +S315E065A6206E1C0000000C0C0CCC180C0C66068CBF7E +S315E065A630B3BF9EB39E0060060E1800006C3800003E +S315E065A640004400FE00183C381C38FEC6013C000E8E +S315E065A650404005A0C6060606C6C0C0C6C6C60040DA +S315E065A66000000628001866667E666C180C3066186B +S315E065A670000000067E187E7E0C7E3C7E7E7E0000B7 +S315E065A6800E00E07E7C3C7E7E7C7E7E7E667E06CCB3 +S315E065A69060C6667E7E7EFC7E7E6666C666667E1E77 +S315E065A6A0607838003800600006001E0060180CC04F +S315E065A6B038000000000000001800000000000018E7 +S315E065A6C0183000003C7E7E187E7E667E7E66186368 +S315E065A6D0667E7E7E7E7E7E663E66637E007E007CF0 +S315E065A6E0007E007E00007E00007E00000000000027 +S315E065A6F0000000004C4C7E0000FE000000001810D3 +S315E065A700CAC6C6550066767C1E7E7E381E7E6E3C63 +S315E065A7103E7E6E1CFE367E6E3E7ED67E387E3E7E06 +S315E065A7206E36000000181818CC301818660C9EBFF7 +S315E065A730B3BFBFB3BF18700E1918000044300000F0 +S315E065A74000080000003C242C34BAFED60366180FD8 +S315E065A750704005A0C6060606C6C0C0C6C6C6007079 +S315E065A760000007D0001866FF606C38181C383C1886 +S315E065A770000000066638660C1C607006666618188A +S315E065A7801C7E7066E67E66666E606060661806D8F4 +S315E065A79060EE66666666CC60186666C666660C18C2 +S315E065A7A0601838001C00600006001800600000C0F4 +S315E065A7B01800000000000000180000000000001806 +S315E065A7C0183000007E66603C600C6666186C3C7707 +S315E065A7D066006666666018667F666B66006600603C +S315E065A7E00018006600006600001800000000000022 +S315E065A7F0000000000000660100D83C3C3C0000100B +S315E065A800CA828251E666760C060C06180466660C04 +S315E065A81006063E0CFE3666663E06D666180636665D +S315E065A8206632006600000000000000000000BFB070 +S315E065A830B38CB3B3B318381C1B1818026C30001E02 +S315E065A84000100000006624E66792FC9203C33C09AB +S315E065A85040400DB0C6060606C6C0C0C6C6C67C4044 +S315E065A86000002E10001866FF600C381818183C18A2 +S315E065A8700000000C6638660C1C6060066666181893 +S315E065A880387E3866C266666666606060661806D853 +S315E065A89060EE76666666CC60186666C63C660C18DB +S315E065A8A030186C000C3C7C3C3E3C183E7C380CCC4D +S315E065A8B0186C3C3C7C3E7C3E7E6666C666667E186B +S315E065A8C0183062186666603C600C6666186C3C7F9C +S315E065A8D076006666663018666B3C6B663E66663025 +S315E065A8E03E30FC663066066666183C7E3C3F3E7EDC +S315E065A8F0662E66633C3C663D7ED87E7E7E000010B5 +S315E065A900CABABA0066663E0C060C66180C66660C34 +S315E065A9100606360CC63666360606D6661806366604 +S315E065A920761810F7633E3EFC30303C66666333303E +S315E065A930330C333333181C381B18183E3830001087 +S315E065A94000203C0000C32483C1D6FCBA06913C08CE +S315E065A95040380DB082023A3ABAB8B882BABA7E7869 +S315E065A960000039E0001866667C1870181818FF7ED6 +S315E065A970007E000C66180C183C7C600C3C7E181852 +S315E065A98070001C0CDA667E60667C7C6E7E1806F06E +S315E065A99060FE76666666CC70186666C63C3C1818D8 +S315E065A9A030186C00043E7E7C7E7E7E7E7E380CDCD6 +S315E065A9B018FE7E7E7E7E7E7E7E6666C666667E38B0 +S315E065A9C01838F218667C60667C187E661878667F4D +S315E065A9D0760066666618183C6B3C6B667E6666183E +S315E065A9E07E60FE763066066666307E7E7E7F7E7E3D +S315E065A9F0666F66633E7E6E7EFFDE666666000010A7 +S315E065AA00CAA2AA0066663C0C0E0C66180C66660061 +S315E065AA100606660CC636763E0606F666180636768B +S315E065AA203E3C1099637E7EFE30307E666663333EDD +S315E065AA303F0C3333337E0E701818007C00301810E7 +S315E065AA40367C3C000081E783C1C6F83806913C0850 +S315E065AA5000001DB800007C7C7C7C7C007C7C06006C +S315E065AA6000003800001866663E1870181818FF7EF4 +S315E065AA70007E00186E180C183C7E7C0C3C3E18185F +S315E065AA80E0000E0CD6667C60667C7C6E7E1806F011 +S315E065AA9060D67E666666FC38186666D6183C181813 +S315E065AAA01818C6000006666066667E6666180CF867 +S315E065AAB018FE666666666660186666D63C660CF07F +S315E065AAC0181EBE3C667E60667C187E7E1878666B70 +S315E065AAD07E3C6666660C183C6B187F66667C3C3C1D +S315E065AAE06060663E306C3E666630666666666018D1 +S315E065AAF0666B666306666E66DBDE66666600001036 +S315E065AB00CAA2B20066663C0C1E0C66180C66660048 +S315E065AB10060E660CC63676183606F6661806367678 +S315E065AB200E6638996B666066303066666663333E98 +S315E065AB303F0C331E337E1C3818187E40003018D023 +S315E065AB4036003C0000E781E667D6FABA8C9D3C782C +S315E065AB501E1C399C8202B83A3A3ABA02BA3A060EED +S315E065AB6007F00000001800FF0630DE0018183C18F4 +S315E065AB70000000187618180C6C067E18660600004C +S315E065AB80707E1C18D67E666066606066661806D856 +S315E065AB9060D67E667E66F81C186666D61818301826 +S315E065ABA01818C600003E66606666186666180CF09C +S315E065ABB018D6666666666070186666D63C6618F090 +S315E065ABC0181E9C247E6660666030667E186C666BD1 +S315E065ABD07E3C66667E0C18186B183E66667C3C663F +S315E065ABE07C60665E30787E66661C6666666660185C +S315E065ABF0666B3C6B3E66766EDBD87E7E66000000F5 +S315E065AC007AA2BA0066666E0C360C66180C66660045 +S315E065AC10061C660CC636061C3606C6661806360675 +S315E065AC20066638EF6B667C6630306666666B3F3027 +S315E065AC30330C331E3F18381C18187E0000FE00D012 +S315E065AC4000003C000024C32C3492F2928C813CF8DF +S315E065AC501012799EC606C0060606C606C6067E10AC +S315E065AC600FF80000001800FF0636DE0018183C18DD +S315E065AC70000000306618180C6C066618660600005B +S315E065AC80387E3818DC7E666066606066661806D86B +S315E065AC9060C66E667C66D80E186666FE3C18301829 +S315E065ACA00C180000007E6660667E186666180CF80D +S315E065ACB018D666666666603C186666FE1866183877 +S315E065ACC0183800667E66606660306666186C666330 +S315E065ACD06E0066667C1818186B3C1C7E66661866A0 +S315E065ACE07C30666630786666661C6666666660189B +S315E065ACF0666B3C6B7E66767EDFD87E7E66000000A0 +S315E065AD000ABAAA0066666E0C360C66180C666600AC +S315E065AD1006306E0CC6367E0E3606C66618063606EE +S315E065AD20063C6C666B667C6630306666666B3F30A5 +S315E065AD30330C330C1E18700E1818000200300050E4 +S315E065AD4000003C00002466381CBAF6D6D8C37E708F +S315E065AD501C1C718EC606C0060606C606C606660CC9 +S315E065AD601FEC0000000000667E66CC0018186618C9 +S315E065AD7018001830661830667E066630660618185E +S315E065AD801C007018C066666666606066661866CCA6 +S315E065AD9060C66E666066CC0618663CFE3C18601852 +S315E065ADA00C180000006666606660186666180CD862 +S315E065ADB018D666666666600E18663CFE3C663018B2 +S315E065ADC01830004266666066606066661866666349 +S315E065ADD06E006666603018187F3C083C66663C66C1 +S315E065ADE060186666306C66663C30666666666018F0 +S315E065ADF0666B186B66666676D8D86666660000002A +S315E065AE000A8282006666667E360C66180C667E0089 +S315E065AE103E306E7CFE7E7E7E3606FEE618063E0695 +S315E065AE2006186C006B66606630306666666B333056 +S315E065AE30330C330C0018600618D8183E00300070E5 +S315E065AE400000000000243C300C38E6C65866FF007A +S315E065AE501014718EC606C0060606C606C6066602E6 +S315E065AE6018040000000000667C66CC001C386600AD +S315E065AE7018001860661830667E666630660E1818C5 +S315E065AE800E00E000E26666666E606066661866CC31 +S315E065AE9060C66666606ACC0618663CEE661860183B +S315E065AEA006180000006666606660187E66180CCC5B +S315E065AEB018C666666666600618663CEE3C7E3018C1 +S315E065AEC0183000C3666660666060666618666663C7 +S315E065AED066006666606018183E66080066666666C1 +S315E065AEE0600C6666326C66663C30666666667C1ADB +S315E065AEF0666B3C6B66666666D8D866666600000015 +S315E065AF000AC6C60066F6627E360C661804667E007C +S315E065AF103C306E7C7C7E7E7E3606FEE618063E0618 +S315E065AF20064CC6006B66606632326666666B3330C3 +S315E065AF30330C330C0000000018D8187C0030002074 +S315E065AF4000000000003C1800007CEEEE703C10004E +S315E065AF5010126186BA02B83A023ABA02BA3A7E1C69 +S315E065AF6018040000001800001800FE000C30000010 +S315E065AF70180018607E7E7E7E0C7E7E307E3C1818DC +S315E065AF80000000187E667E7E7C7E607E667E7EC67E +S315E065AF907EC6667E607CC67E187E18C666187E1E90 +S315E065AFA0067800FE007E7E7E7E7E183E663C0CCE92 +S315E065AFB03CC6667E7E7E607E1E7E18C6663E7E18D2 +S315E065AFC0183000FF667E607E7E7E667E7E636663A3 +S315E065AFD0667E7E66607E18180866087E7F7E667E7B +S315E065AFE07E06667E3E66667E181C7E667E7E3E1EB6 +S315E065AFF07E7F3C3E7E7E7E7EFFFE66667E00000050 +S315E065B0000A7C7C00F6F60000000000000000000007 +S315E065B0100000000000000000300000001806000691 +S315E065B020066CC6007F7F7E663E3E7E7E7E7F333FD4 +S315E065B030333F3F0C3F3E7E7E18980040007F000020 +S315E065B040000000000000000000000000300038004D +S315E065B050000041827C007C7C007C7C007C7C3C0042 +S315E065B0601004000000180000180076000660000075 +S315E065B070180018603C7E7E3C0C3C3C303C38181829 +S315E065B080000000183C667C3C787E603C667E3CC68B +S315E065B0907EC6663C6036C67C183C188266187E1E9F +S315E065B0A0067800FE003E7C3E3E3E1806663C0CC6D3 +S315E065B0B03CC6663C7C3E607C0E3E188266067E1823 +S315E065B0C018300000667C607E7E7E663C7E636663E5 +S315E065B0D0667E3C66607E18180866087E3F7C663C40 +S315E065B0E03E06663C1C66667F181E3C667C3C060C26 +S315E065B0F03C3E661C3E3CBCBC7F7E66663C00000012 +S315E065B1000A0000000E0E00000000000000000000CE +S315E065B1100000000000000000300000001806000690 +S315E065B120063800003E3F3E661C1C3C3C3C3E333FD9 +S315E065B130333F1E0C3F3E7E7E1870000000FF000028 +S315E065B1400000000000000000000000002000100084 +S315E065B15000000000000000000000000000000000A4 +S315E065B1601E3C00000000000000000000000000003A +S315E065B1703000000000000000000000000000003024 +S315E065B1800000000000000000000000000000000074 +S315E065B1900000000000000000000000000000000064 +S315E065B1A000000000000000000000007E00007C005A +S315E065B1B0000000006006000000000000007E000E52 +S315E065B1C018E000000000000000000000000000003C +S315E065B1D000000000000000000000000000607E0046 +S315E065B1E0003E0000000000600006000060001E00F2 +S315E065B1F0000866080000808000000000000000008E +S315E065B200000000003C7C000000000000000000003B +S315E065B21000000000000000003000000000000000B3 +S315E065B22000000000000000000000000000000000D3 +S315E065B23000000000000000001800000000000000AB +S315E065B24000000000000000000000000000000000B3 +S315E065B25000000000000000000000000000000000A3 +S315E065B2601754000000000000000000000000000028 +S315E065B2702000000000000000000000000000002043 +S315E065B2800000000000000000000000000000000073 +S315E065B2900000000000000000000000000000000063 +S315E065B2A000000000000000000000007C000078005F +S315E065B2B0000000006006000000000000007C000061 +S315E065B2C00000000000000000000000000000000033 +S315E065B2D000000000000000000000000000603C0087 +S315E065B2E0003C0000000000C00006000060001C0095 +S315E065B2F0000866080000000000000000000000008D +S315E065B3000000000038780000000000000000000042 +S315E065B31000000000000000000000000000000000E2 +S315E065B32000000000000000000000000000000000D2 +S315E065B33000000000000000001800000000000000AA +S315E065B34000000000000100083678362052757373F8 +S315E065B35069616E20666F6E74000000000000000093 +S315E065B3600000000000000000000000FF000400048B +S315E065B370000300010001000600060000000300016D +S315E065B38000015555AAAA000D0000000000E5B39E30 +S315E065B39000E5B5A000C00006000000000000000062 +S315E065B3A00006000C00120018001E0024002A00307A +S315E065B3B00036003C00420048004E0054005A0060EA +S315E065B3C00066006C00720078007E0084008A00905A +S315E065B3D00096009C00A200A800AE00B400BA00C0CA +S315E065B3E000C600CC00D200D800DE00E400EA00F03A +S315E065B3F000F600FC01020108010E0114011A0120A4 +S315E065B4000126012C01320138013E0144014A015011 +S315E065B4100156015C01620168016E0174017A018081 +S315E065B4200186018C01920198019E01A401AA01B0F1 +S315E065B43001B601BC01C201C801CE01D401DA01E061 +S315E065B44001E601EC01F201F801FE0204020A0210CE +S315E065B4500216021C02220228022E0234023A024039 +S315E065B4600246024C02520258025E0264026A0270A9 +S315E065B4700276027C02820288028E0294029A02A019 +S315E065B48002A602AC02B202B802BE02C402CA02D089 +S315E065B49002D602DC02E202E802EE02F402FA0300F8 +S315E065B4A00306030C03120318031E0324032A033061 +S315E065B4B00336033C03420348034E0354035A0360D1 +S315E065B4C00366036C03720378037E0384038A039041 +S315E065B4D00396039C03A203A803AE03B403BA03C0B1 +S315E065B4E003C603CC03D203D803DE03E403EA03F021 +S315E065B4F003F603FC04020408040E0414041A04208B +S315E065B5000426042C04320438043E0444044A0450F8 +S315E065B5100456045C04620468046E0474047A048068 +S315E065B5200486048C04920498049E04A404AA04B0D8 +S315E065B53004B604BC04C204C804CE04D404DA04E048 +S315E065B54004E604EC04F204F804FE0504050A0510B5 +S315E065B5500516051C05220528052E0534053A054020 +S315E065B5600546054C05520558055E0564056A057090 +S315E065B5700576057C05820588058E0594059A05A000 +S315E065B58005A605AC05B205B805BE05C405CA05D070 +S315E065B59005D605DC05E205E805EE05F405FA0600DF +S315E065B5A000820421CFB60DE304E38150F987BCC37D +S315E065B5B0CC3E73E0381F844200CD947B260C318403 +S315E065B5C088000006704F3C33C73E71C30C18061CF5 +S315E065B5D071CF1EF3EF9E89C09242289CF1CF1EFA89 +S315E065B5E028A28A2F9EC1E2006008000801808001DA +S315E065B5F02060000000000020000000000E31C4005D +S315E065B6007941085102002144142105082007885133 +S315E065B61002105145041A2F06104104F1E71C60003B +S315E065B62030C0C36C68034201E41A69410869E7BD45 +S315E065B63073EF3E3BEB7C8AA48E8A273EF1EFA2FA56 +S315E065B64028A28A2421C1C99E00CE0070001C01C0D3 +S315E065B650000000000000002000000000000000007F +S315E065B66001C20662AF2A1A1786820150C88084C273 +S315E065B6700C025367203F42F400CDBEA34D0C60C378 +S315E065B6800800000C98C0825208028A230C31E32632 +S315E065B6908A28A08A0820888094436CA28A28A022FA +S315E065B6A028A252211860670061CF1C79C21EB1815C +S315E065B6B024214F1CF1E70E7228A24A278C30CE88EA +S315E065B6C080021400801E500200508000FBCA140000 +S315E065B6D0850800000E236D882082080000A2000020 +S315E065B6E030C006F6B1E48C72C22CB0021CEB38D7DA +S315E065B6F08A08A04A0FC29A6512DA28A28A0222A9A6 +S315E065B70048A28A2421402A72730A3E09CB428809F7 +S315E065B7100E52273CF1CFA47249128A2421E1C99ED3 +S315E065B72003623BDF6E1CB29784DEE150C88FBEC311 +S315E065B730EF8E7320B760629400C91470861860C78F +S315E065B740BE01E018A8471C93CF0471E00060018C48 +S315E065B750BBEF208BCF26F8809842AAA2F22F1C2257 +S315E065B76028AA214218306D803028A08BE7A2C881CF +S315E065B7703823E8A28A24982228AA322118306B9CBD +S315E065B78082271C71C72071C71821871C80EF9C71C1 +S315E065B790C8A289C89871CF1E718722F12FA261E789 +S315E065B7A0B6CCCD9B732596BAE71C700008EADB55E7 +S315E065B7B0FBCF204BC79CAAA612ABE8A2F2021EA855 +S315E065B7C0889EAAA7B979EE5E8BCF207BE78C8A2E19 +S315E065B7D012FA28A28A0224A98912AAA73938AE7272 +S315E065B7E0008D8662ACAAE2DFDC93A358D9CC06D895 +S315E065B7F0698CDBEFA440216800C03E296E8060C39A +S315E065B80008300330C84802F8288888230C31E30CF1 +S315E065B810B228A08A08228888944229A2822A02222E +S315E065B820253650841818600003E8A08A021E8881D0 +S315E065B8302422A8A28A240622252A31E20C30C132C6 +S315E065B840822F820820A0FBEF882088A2F38A228ACD +S315E065B85028A27A288E208D880888A289A79C61000F +S315E065B8608B14C6F609E69AA2C8A28800086AF8C0EB +S315E065B8708A28A04A0B42CB25128A28A2820202F9BF +S315E065B8804882AAA465442A4AFA29208A0FC28A29E7 +S315E065B89012ABE8A28A021CA9890EAAA4A5246E5E4B +S315E065B8A000870421C9B642103C18E75CD9CC06F896 +S315E065B8B06D8CD8673C71EEF0000014F26D00318452 +S315E065B8C088300320704FBC13C70871C3041806009F +S315E065B8D0822F1EF3E81E89C7127A289C81C9BC218E +S315E065B8E0E222888F9E09E00001EF1C79C20289C1D8 +S315E065B8F02272289CF1E41C11E23648278E31C03E5F +S315E065B9007A283EFBEF9E820808208FBE81EBA28AED +S315E065B91028A20A288479CF08F888A2896000C90038 +S315E065B920863CC36CFB248C79EFBE8800082B1A40F5 +S315E065B9308BCF20FFEB7C8A24B28A272281E21C2208 +S315E065B9402FC2FBF7B979C9B289CF2071CB5C75D8BF +S315E065B950B28A2722F1C204724782FBF73939C9B246 +S315E065B96000820000000001E31810B64CF9CFBE1B5B +S315E065B970EF8CF8600758AC0000C000200680000038 +S315E065B9800060000000000000000000000800000CF8 +S315E065B9907800000000000000000000000060000084 +S315E065B9A0000000000000003E00000000003C000EC4 +S315E065B9B00000000080200000000003C000300000A9 +S315E065B9C0C1E71E79E7B871C71C71C8A2F8001C719A +S315E065B9D0C79EF1C780008C3079C71E892FBE70007F +S315E065B9E00F04C000780B100008A270000029E780FC +S315E065B9F00000008400000000000000000000000078 +S315E065BA00004000100000000000000000000000009B +S315E065BA100000000080003820008000100000000073 +S315E065BA2000010009387838205275737369616E20B4 +S315E065BA30666F6E7400000000000000000000000004 +S315E065BA4000000000000000FF00060006000400019B +S315E065BA5000010008000800010003000100015555DA +S315E065BA605555000D0000000000E5BA7A00E5BC7C9E +S315E065BA70010000080000000000000000000800105A +S315E065BA8000180020002800300038004000480050CB +S315E065BA9000580060006800700078008000880090BB +S315E065BAA0009800A000A800B000B800C000C800D0AB +S315E065BAB000D800E000E800F000F801000108011098 +S315E065BAC00118012001280130013801400148015083 +S315E065BAD00158016001680170017801800188019073 +S315E065BAE0019801A001A801B001B801C001C801D063 +S315E065BAF001D801E001E801F001F802000208021050 +S315E065BB00021802200228023002380240024802503A +S315E065BB10025802600268027002780280028802902A +S315E065BB20029802A002A802B002B802C002C802D01A +S315E065BB3002D802E002E802F002F803000308031007 +S315E065BB4003180320032803300338034003480350F2 +S315E065BB5003580360036803700378038003880390E2 +S315E065BB60039803A003A803B003B803C003C803D0D2 +S315E065BB7003D803E003E803F003F8040004080410BF +S315E065BB8004180420042804300438044004480450AA +S315E065BB90045804600468047004780480048804909A +S315E065BBA0049804A004A804B004B804C004C804D08A +S315E065BBB004D804E004E804F004F805000508051077 +S315E065BBC00518052005280530053805400548055062 +S315E065BBD00558056005680570057805800588059052 +S315E065BBE0059805A005A805B005B805C005C805D042 +S315E065BBF005D805E005E805F005F80600060806102F +S315E065BC000618062006280630063806400648065019 +S315E065BC100658066006680670067806800688069009 +S315E065BC20069806A006A806B006B806C006C806D0F9 +S315E065BC3006D806E006E806F006F8070007080710E6 +S315E065BC4007180720072807300738074007480750D1 +S315E065BC5007580760076807700778078007880790C1 +S315E065BC60079807A007A807B007B807C007C807D0B1 +S315E065BC7007D807E007E807F007F8080000183C185A +S315E065BC80183CFFE7017E1818F0F005A07C067C7C81 +S315E065BC90C67C7C7C7C7C007807F011040018660025 +S315E065BCA0180038180C300000000000067C183C3C93 +S315E065BCB01C7E1C7E3C3C00000600603C7C18FC3C1F +S315E065BCC0F8FEFE3C663C1EE6F0C6663CFC3CFC3C8B +S315E065BCD07E6666C6C666FE1EC07810006000E00039 +S315E065BCE01C001C00E01806E03800000000000000BB +S315E065BCF0100000000000000E0070760078001C7EE3 +S315E065BD00CCE030007ECCE0CC7CE0C6301C003E78F2 +S315E065BD100000780000C3CC1838CCF80E1C3800005B +S315E065BD2000FC3C38300000C3C31800002200DB1875 +S315E065BD30181836000036360036361800187EFC7E52 +S315E065BD403CFEDB3C665CE61FC6663C7EFC3C7E668E +S315E065BD5018C66666D6D6E0C3603CCE3F00020000F4 +S315E065BD6000000000001C000000000000000000006C +S315E065BD70000000000000000000000000003C241CFC +S315E065BD803899FFC303C33C1CC0C005A0C6060606BA +S315E065BD90C6C0C006C6C600600FF80B28003C666CD8 +S315E065BDA03EC66C18181866180000000CC63866663C +S315E065BDB03C603066666618180C003066CE3C666692 +S315E065BDC06C62626666180C6660EE766666666666E0 +S315E065BDD05A6666C6C666C6186018380060006000B2 +S315E065BDE00C003600600000601800000000000000EE +S315E065BDF030000000000000181818DC18CCCC00C331 +S315E065BE0000003000C3000000C600383000006CCC8E +S315E065BE10CCE0CCE0CC1800186CCCCC1B00001C1C2C +S315E065BE20F8006C6C000000C6C61833CC880077183D +S315E065BE301818360000363600363618003C606662FD +S315E065BE406C62DB666666663EEE66666666665A667C +S315E065BE507EC66666D6D660C36066DB66003E000073 +S315E065BE600000000000000000000000000000000087 +S315E065BE70180000000000000000000000006624F6DF +S315E065BE806FC3FE9906D33C16FEDF05A0C606060619 +S315E065BE90C6C0C006C6C63C781FEC0DD8003C66FE3B +S315E065BEA060CC3830300C3C1800000018CE18060619 +S315E065BEB06C7C600666661818187E1806DE6666602F +S315E065BEC06668686066180C6C60FE7E6666666660C7 +S315E065BED0186666C66C668C1830186C003078603CFF +S315E065BEE00C3C30766C38066618CC7C3CDC76DC3E01 +S315E065BEF07CCC66C6C6667E1818180018C000783C05 +S315E065BF00787878783C78787038706C00FC7FCC000F +S315E065BF1000000000003CCC7E6478CC1878700000A8 +S315E065BF2000CC6C6C300000CCCC006666223EDB183B +S315E065BF3018F83600F8F636FEF636F800666066609E +S315E065BF406C687E066E6E6C66FE666666666018662C +S315E065BF50DB6C6666D6D660C36006DB6678607C3E7B +S315E065BF601E3CDB7CCCCC661ECC663C7E7C3C7E6631 +S315E065BF707EC66666D6D6E0C6607CCE3E00C3E783FF +S315E065BF80C1E7FC3C8CD33C10D8DB0DB000007C7C73 +S315E065BF907C7C7C007C7C0660180406280018006CB6 +S315E065BFA03C187600300CFF7E007E0030DE181C1CE7 +S315E065BFB0CC067C0C3C3E000030000C0CDE667C60FA +S315E065BFC0667878607E180C7860D67E667C667C3CA2 +S315E065BFD0186666D6383C18181818C600000C7C66D4 +S315E065BFE07C6678CC7618066C18FE666666CC7660F6 +S315E065BFF030CC66D66C664C70180E0034CCCCCC066C +S315E065C0000C0C0CC066CCCC301830C678660CFE7865 +S315E065C0107878CCCCCC66CCC0F0FCFA3C0C3078CCED +S315E065C020F8EC3E3860FCFCDEDB18CC338866EE184F +S315E065C030181836001806360606361800667C7C60E3 +S315E065C0406C787E1C7E7E7866D67E66667C60183EFB +S315E065C050DB38667EDADA7CFB7C1EFB3E0C7C663082 +S315E065C0603666DB06CCCC6C36FE6666666666186654 +S315E065C070DB6C6666D6D660C66006DB6600E7C383BC +S315E065C080C1C3F999D8DB7E10DEFF0DB0C606C006E2 +S315E065C0900606C606C6067E7E180407D00018006C3E +S315E065C0A00630DC00300C3C1800000060F6183006FF +S315E065C0B0FE0666186606000018001818DE7E6660DD +S315E065C0C06668686E6618CC6C62C66E66606E6C068F +S315E065C0D0186666FE381832180C180000007C666033 +S315E065C0E0CC7E30CC6618067818FE666666CC663C0D +S315E065C0F030CC66FE386618180018003478CCFC3EFD +S315E065C1007C7C7C707EFCFC301830FECC787FCCCCB9 +S315E065C110CCCCCCCCCC66CCC06030C6187C30CCCC34 +S315E065C120CCFC0000C0C00C3337186666223EDB18CF +S315E065C130F8F8F6FEF8F636F6FEFEF8F87E66666020 +S315E065C1406C68DB0676766C66C6666666606018065B +S315E065C1507E386606DADA66DF6606DB367C667C306E +S315E065C160367E7E1CCCCC7836FE7E66666660186664 +S315E065C170DB38667EDADA7CFA7C3EF33E002466F6E8 +S315E065C1806F99F3C370C31070181E1998C606C0067A +S315E065C1900606C606C606661810042E10000000FEE2 +S315E065C1A07C66CC0018186618300018C0E618666616 +S315E065C1B00C666618660C18180C7E3000C0666666F6 +S315E065C1C06C6260666618CC6666C66666603C666680 +S315E065C1D018663CEE6C1866180618000000CC6666B4 +S315E065C1E0CC60307C6618666C18D666667C7C6006C4 +S315E065C1F034CC3CFE6C3E32181818006218CCC0662A +S315E065C200CCCCCC7860C0C0301830C6FC60CCCCCC29 +S315E065C210CCCCCCCC7C3CCC78E6FCCF18CC30CCCC4A +S315E065C220CCDC7E7CCCC00C666F1833CC8836771850 +S315E065C23018183636183636360000001866666660B3 +S315E065C2406C62DB6666666666C66666666066180620 +S315E065C250186C6606DADA66CF6666DB66CC666630E5 +S315E065C2603660DB06CCCC6C36D66666666666183EA8 +S315E065C270DB6C6606DADA66CE6606DB3600243C1CDF +S315E065C280383CE7E720C338F0181B799E7C067C7C52 +S315E065C290067C7C067C7C3C1E1E3C39E00018006C06 +S315E065C2A018C676000C300000300018807C7E7E3C37 +S315E065C2B01E3C3C183C381818060060187866FC3C4D +S315E065C2C0F8FEF03E663C78E6FEC6663CF00EE63C79 +S315E065C2D03C7E18C6C63CFE1E027800FE0076DC3C57 +S315E065C2E0763C780CE63C66E63CC6663C600CF07CE3 +S315E065C2F01876186CC6067E0E1870007E0C7E783F42 +S315E065C3007E7E7E0C3C7878783C78C6CCFC7FCE78B1 +S315E065C31078787E7E0C187818FC30C6D87E78787E7C +S315E065C320CCCC0000780000CCCF1800002266DB1884 +S315E065C330181836361836363600000018667CFC6006 +S315E065C340FFFEDB3C6666E6E6C6663C66F03C3C7C44 +S315E065C3503CC67F06FEFF7CFB7C3CCE67763C7C304C +S315E065C3607F3CDB7C76766676C6663C667C3C180604 +S315E065C3707EC67F06FEFF7CFA7C7CCE66003C18189E +S315E065C38018000000007E10600000718E000000005D +S315E065C39000000000000000001754380000000000AF +S315E065C3A000000000000000006000000000000000E2 +S315E065C3B00000000000000030000000000000000002 +S315E065C3C00000000000000000000000000000000022 +S315E065C3D00000000000000000000000000000000012 +S315E065C3E0000000F800003C0000000000F01E0000C0 +S315E065C3F000000000007C00001800000078000000E6 +S315E065C40000000038000000000000000000000000A9 +S315E065C41000000000F80000180030C770000000005A +S315E065C420000000000000000F030000008800EE1821 +S315E065C4301818363618363636000000180000000043 +S315E065C440C3000000000000000000000000000000DE +S315E065C450000003000003000000000000000000008B +S315E065C4606300000000000000000000006000007C42 +S315E065C4701800030000030000000000000001000A48 +S315E065C48038783136205275737369616E20666F6EE2 +S315E065C49074000000000000000000000000000000DD +S315E065C4A0000000FF000D000B000800020002000816 +S315E065C4B00008000100070001000155555555000DBE +S315E065C4C00000000000E5C4D600E5C6D8010000100E +S315E065C4D000000000000000000008001000180020C1 +S315E065C4E000280030003800400048005000580060E1 +S315E065C4F0006800700078008000880090009800A0D1 +S315E065C50000A800B000B800C000C800D000D800E0C0 +S315E065C51000E800F000F801000108011001180120AB +S315E065C5200128013001380140014801500158016098 +S315E065C530016801700178018001880190019801A088 +S315E065C54001A801B001B801C001C801D001D801E078 +S315E065C55001E801F001F80200020802100218022063 +S315E065C5600228023002380240024802500258026050 +S315E065C570026802700278028002880290029802A040 +S315E065C58002A802B002B802C002C802D002D802E030 +S315E065C59002E802F002F8030003080310031803201B +S315E065C5A00328033003380340034803500358036008 +S315E065C5B0036803700378038003880390039803A0F8 +S315E065C5C003A803B003B803C003C803D003D803E0E8 +S315E065C5D003E803F003F804000408041004180420D3 +S315E065C5E004280430043804400448045004580460C0 +S315E065C5F0046804700478048004880490049804A0B0 +S315E065C60004A804B004B804C004C804D004D804E09F +S315E065C61004E804F004F8050005080510051805208A +S315E065C6200528053005380540054805500558056077 +S315E065C630056805700578058005880590059805A067 +S315E065C64005A805B005B805C005C805D005D805E057 +S315E065C65005E805F005F80600060806100618062042 +S315E065C660062806300638064006480650065806602F +S315E065C670066806700678068006880690069806A01F +S315E065C68006A806B006B806C006C806D006D806E00F +S315E065C69006E806F006F807000708071007180720FA +S315E065C6A007280730073807400748075007580760E7 +S315E065C6B0076807700778078007880790079807A0D7 +S315E065C6C007A807B007B807C007C807D007D807E0C7 +S315E065C6D007E807F007F80800000000000000000022 +S315E065C6E000000000000000000000000000000000FF +S315E065C6F0000000000000110400000000180038008A +S315E065C70000000000000000000000000000000000DE +S315E065C71000000000000000000000000000000000CE +S315E065C72000000000000000000000000000000000BE +S315E065C730000000000000000040000000000000006E +S315E065C740000000000000000000000000000000009E +S315E065C750000000000000000000000000000000008E +S315E065C760000000000000000000000000000000007E +S315E065C7700000000000000000C0FF0303FFFFC000EB +S315E065C7800000000000000000660000000000603266 +S315E065C79032000000000000F100000000000000002B +S315E065C7A000660000000000000000000000000000D8 +S315E065C7B0000000000000000000000000000000002E +S315E065C7C0000000000000000000000000000000001E +S315E065C7D0000000000000000000000000000000000E +S315E065C7E000000000000005A07C007C7C007C7C7C71 +S315E065C7F07C7C000000000B280000000018007C002F +S315E065C80000000000000000000000000000000000DD +S315E065C81000000000000000000000000000000000CD +S315E065C82000000000000000000000000000000000BD +S315E065C830000000000000100060000000000000003D +S315E065C840000000000000000000000000000000009D +S315E065C8500000000E18E00000000000000000006027 +S315E065C860180060001860661800003E1800601860E1 +S315E065C870006666000E000000C0FF0303FFFFC00010 +S315E065C8800000006060000000660000603C00307AF1 +S315E065C8907A6606100000005B0000000000000000FC +S315E065C8A0003C000000000000000000000000000001 +S315E065C8B0000000000000000000000000000000002D +S315E065C8C0000000000000000000000000000000001D +S315E065C8D00000000000000000000000300C7CFEEE69 +S315E065C8E001000008783805A0BA023A3A82B8B8BAC3 +S315E065C8F0BABA007800000DD8001866663E666C1810 +S315E065C90006606600000000063C183C7E0C7E1C7ED8 +S315E065C9103C3C00000000003C38187C3C787E7E3E5E +S315E065C920667E06CC60C6663C7C3CF83E7E6666C640 +S315E065C93066667E1E607810007000600006000E0078 +S315E065C94060180CC038000000000000000000000020 +S315E065C95000000018183000000000000C00180030D8 +S315E065C9603C6630663C30663C66007E3C66303C3014 +S315E065C970666666181E66180EC000030303C0C0002F +S315E065C980C30000202000000000000020669F184CD0 +S315E065C9904C660C7C7A7C7C5F187E7C7E3E7E993C20 +S315E065C9A06600663E63663C7E7C3C7EC3186666666C +S315E065C9B0D6D6F0C660784E3E000000000000000066 +S315E065C9C000660000000000000000000000000000B6 +S315E065C9D0000000000000000000183C381C38FEC668 +S315E065C9E0013C000E404005A0C6060606C6C0C0C6A8 +S315E065C9F0C6C6004000000628001866667E666C18A6 +S315E065CA000C306618000000067E187E7E0C7E3C7E45 +S315E065CA107E7E00000E00E07E7C3C7E7E7C7E7E7EB9 +S315E065CA20667E06CC60C6667E7E7EFC7E7E6666C675 +S315E065CA3066667E1E607838003800600006001E0077 +S315E065CA4060180CC038000000000000001800000007 +S315E065CA5000000018183000000000101C003C0018AB +S315E065CA6066661866661818666600F8666618661875 +S315E065CA706600001838663C1EC000030303C0C000AC +S315E065CA80C3000020201800007E000020629F0000A1 +S315E065CA9000001810CAC6C6553C7E7E7E3E7E5A7E2E +S315E065CAA06666663E63667E7E7E7E7EC3186666667F +S315E065CAB0D6D6F0C6607C5F7E00020000000000000E +S315E065CAC0003C0000000000000000000000000000DF +S315E065CAD00000000000000000003C242C34BAFED6BD +S315E065CAE00366180F704005A0C6060606C6C0C0C632 +S315E065CAF0C6C60070000007D0001866FF606C38187F +S315E065CB001C383C18000000066638660C1C6070062A +S315E065CB10666618181C7E7066E67E66666E606060A0 +S315E065CB20661806D860EE66666666CC60186666C6A2 +S315E065CB3066660C18601838001C0060000600180070 +S315E065CB40600000C01800000000000000180000004A +S315E065CB500000001818300000005A3C301818000034 +S315E065CB600000000000003C000000D8000000000066 +S315E065CB70003C663C30666618C000030303C0C0002F +S315E065CB80C3000023231800007E00002330983C3C58 +S315E065CB903C000010CA8282517E60666066605A66B5 +S315E065CBA06666666677666666666618663C66666641 +S315E065CBB0D6D6B0C6600E5B660006000000000000D3 +S315E065CBC0000000000000000000000000000000001A +S315E065CBD00000000000000000006624E66792FC9213 +S315E065CBE003C33C0940400DB0C6060606C6C0C0C6CE +S315E065CBF0C6C67C4000002E10001866FF600C38182B +S315E065CC0018183C180000000C6638660C1C60600657 +S315E065CC1066661818387E3866C266666666606060FF +S315E065CC20661806D860EE76666666CC60186666C691 +S315E065CC303C660C1830186C000C3C7C3C3E3C183E5F +S315E065CC407C380CCC186C3C3C7C3E7C3E7E6666C68D +S315E065CC5066667E1818306218005A7F66DB5A003CB5 +S315E065CC603C3C3C3838387E3C3C76D83C3C3C666659 +S315E065CC70667E667E30666618C000030303C0C00044 +S315E065CC80E700002626000000603E3C2618B87E7E5A +S315E065CC907E000010CABABA006660666066605A468B +S315E065CCA06E66666677666666666218667E666666FA +S315E065CCB0D6D630C660065B663C3C7C7E3C3C993CA1 +S315E065CCC06666663E63663C7E7C3C7E631866666643 +S315E065CCD0D6D6F0C660784E3E00C32483C1D6FCBA8C +S315E065CCE006913C0840380DB082023A3ABAB8B88245 +S315E065CCF0BABA7E78000039E0001866667C18701866 +S315E065CD001818FF7E007E000C66180C183C7C600CDB +S315E065CD103C7E181870001C0CDA667E60667C7C6E5C +S315E065CD207E1806F060FE76666666CC70186666C640 +S315E065CD303C3C181830186C00043E7E7C7E7E7E7E18 +S315E065CD407E380CDC18FE7E7E7E7E7E7E7E6666C6E0 +S315E065CD5066667E381838F218187E7F6EDBFF183EF9 +S315E065CD607E7E7E383838667E7E7FDE7E7E7E666651 +S315E065CD7066666666307E6618C000030303C0C0005B +S315E065CD806600002C2C181AB060667E2C3CBB666685 +S315E065CD9066000010CAA2AA00667C666066605A06EE +S315E065CDA06E6E6C667F6666666660183C5A3C66665D +S315E065CDB0D6D630C67C065B663E78667E7C7E5A7ED7 +S315E065CDC06666663E77667E7E7E7E7E6318666666A8 +S315E065CDD0D6D6F0C6607C5F660081E783C1C6F83863 +S315E065CDE006913C0800001DB800007C7C7C7C7C00DC +S315E065CDF07C7C060000003800001866663E187018F0 +S315E065CE001818FF7E007E00186E180C183C7E7C0CA8 +S315E065CE103C3E1818E0000E0CD6667C60667C7C6E3F +S315E065CE207E1806F060D67E666666FC38186666D657 +S315E065CE30183C18181818C6000006666066667E66B1 +S315E065CE4066180CF818FE666666666660186666D6E7 +S315E065CE503C660CF0181EBE3C183C783C7EFF180616 +S315E065CE606666661818186666661BDE6666666666D4 +S315E065CE7066666660303C7C7EC000030303C0C00026 +S315E065CE8066000018181836D87C66661866AB66665E +S315E065CE9066000010CAA2B200667E7C60667C7E0C87 +S315E065CEA07E6E78666B7E66667E60183C5A18667E30 +S315E065CEB0D6D63EE67E3E7B3E066066606C665A4644 +S315E065CEC0666666267F666666666218663C6666665A +S315E065CED0D6D6B0C6601E5B6600E781E667D6FABA67 +S315E065CEE08C9D3C781E1C399C8202B83A3A3ABA0265 +S315E065CEF0BA3A060E07F00000001800FF0630DE00BD +S315E065CF0018183C18000000187618180C6C067E1880 +S315E065CF1066060000707E1C18D67E66606660606692 +S315E065CF20661806D860D67E667E66F81C186666D68E +S315E065CF30181830181818C600003E666066661866EA +S315E065CF4066180CF018D6666666666070186666D60C +S315E065CF503C6618F0181E9C243C3C7C183CFF3C3E25 +S315E065CF606666661818187E66667BF8666666666641 +S315E065CF7066666660FE186618C000030303C0C000F7 +S315E065CF807E00003032186C6C7C3E663066AB7E7E29 +S315E065CF90660000007AA2BA007E667E60667C7E0CDC +S315E065CFA07E7E78666B7E66667C6018185A18663E85 +S315E065CFB0D6D63FF6663E7B3E3E7C7C604C665A0640 +S315E065CFC06E6E6C267F7E6666666018667E3C666615 +S315E065CFD0D6D63EE67C065B3E0024C32C3492F292BE +S315E065CFE08C813CF81012799EC606C0060606C60612 +S315E065CFF0C6067E100FF80000001800FF0636DE0054 +S315E065D00018183C18000000306618180C6C0666188F +S315E065D01066060000387E3818DC7E666066606066A7 +S315E065D020661806D860C66E667C66D80E186666FEB5 +S315E065D0303C1830180C180000007E6660667E18663F +S315E065D04066180CF818D666666666603C186666FE0F +S315E065D0501866183818380066183C7C18FFFF187E85 +S315E065D0607E7E7E1818187E7E7EFFF8666666666644 +S315E065D07066666666307E6618C000030303C0C00058 +S315E065D0803C7E7E6E6618D83660367E6E3CE87E7E81 +S315E065D090660000000ABAAA007E66666066605A06A1 +S315E065D0A076766C6663666666606018185A3C6606F0 +S315E065D0B0D6D633D666065B667E7E7C604C7E7E1C07 +S315E065D0C07E7E78666B7E66666660181C5A18667E36 +S315E065D0D0D6D63FF67E7E7B36002466381CBAF6D613 +S315E065D0E0D8C37E701C1C718EC606C0060606C606CB +S315E065D0F0C606660C1FEC0000000000667E66CC0086 +S315E065D1001818661818001830661830667E06663098 +S315E065D110660618181C007018C06666666660606606 +S315E065D120661866CC60C66E666066CC0618663CFEBA +S315E065D1303C1860180C180000006666606660186644 +S315E065D14066180CD818D666666666600E18663CFE86 +S315E065D1503C66301818300042183C3C3C7E7E1866CA +S315E065D160606060181818666060D8D8666666666638 +S315E065D1706666667E30186618C000030303C0C000A5 +S315E065D1803C7E7ED3CE186C6C606660D318E86666C6 +S315E065D190660000000A8282006666666066605A46D8 +S315E065D1A07676666663666666606218307E6666068D +S315E065D1B0D6D633D666065B66666666604C605A06A4 +S315E065D1C076766C66636666667E60181C5A3C663E75 +S315E065D1D0D6D633D666065B6600243C300C38E6C6A2 +S315E065D1E05866FF001014718EC606C0060606C606AA +S315E065D1F0C606660218040000000000667C66CC0080 +S315E065D2001C38660018001860661830667E666630FB +S315E065D210660E18180E00E000E26666666E60606689 +S315E065D220661866CC60C66666606ACC0618663CEECD +S315E065D2306618601806180000006666606660187E07 +S315E065D24066180CCC18C666666666600618663CEEB9 +S315E065D2503C7E3018183000C3183C383C1818186600 +S315E065D260606060181818666060D8D8666666666637 +S315E065D2707E66663C30187C18C000030303C0C000B8 +S315E065D2803C6006061A1836D8606662060CCB66669A +S315E065D290660000000AC6C6006666666066605A662F +S315E065D2A06666664663666666606618303C6666060A +S315E065D2B0D6D633D6660E5B66666666604C625A4659 +S315E065D2C066666666636666667C6218187E66660688 +S315E065D2D0D6D633D6661E5B66003C1800007CEEEE5D +S315E065D2E0703C100010126186BA02B83A023ABA0288 +S315E065D2F0BA3A7E1C18040000001800001800FE000B +S315E065D3000C300000180018607E7E7E7E0C7E7E30D6 +S315E065D3107E3C1818000000187E667E7E7C7E607E08 +S315E065D320667E7EC67EC6667E607CC67E187E18C6CE +S315E065D33066187E1E067800FE007E7E7E7E7E183E40 +S315E065D340663C0CCE3CC6667E7E7E607E1E7E18C6DC +S315E065D350663E7E18183000FF3C7E7E7E7E3C3C7ED7 +S315E065D3607E7E7E3C3C3C667E7EFFDE7E7E7E7E7E8F +S315E065D3703E7E7E187F186C18C000030303C0C000AC +S315E065D3801860060C32181AB07E667E0646C8666672 +S315E065D3907E0000000A7C7C00667E7E60FF7E5A7EAB +S315E065D3A0666666C663667E66607E186018667F0634 +S315E065D3B0FEFF3FF67E7C5F667E7E6660FE7E5A7E1B +S315E065D3C06666666663667E66607E18183C667F0698 +S315E065D3D0FEFF3FF67E7C5F66000000000000000011 +S315E065D3E030003800000041827C007C7C007C7C005B +S315E065D3F07C7C3C00100400000018000018007600F4 +S315E065D40006600000180018603C7E7E3C0C3C3C30B3 +S315E065D4103C381818000000183C667C3C787E603C19 +S315E065D420667E3CC67EC6663C6036C67C183C18821F +S315E065D43066187E1E067800FE003E7C3E3E3E180679 +S315E065D440663C0CC63CC6663C7C3E607C0E3E1882FD +S315E065D45066067E18183000007EFF7E7E7E7E7E3E06 +S315E065D4603E3E3E3C3C3C663E3E7FDE3C3C3C3E3E94 +S315E065D470063C3C18FF186070C000030303C0C0009B +S315E065D480186006183F1800007E663C1366C8666637 +S315E065D4903C0000000A000000667C7C60FF7E993CEB +S315E065D4A0666666C663663C66603C18C018667F0657 +S315E065D4B0FEFF3EE67C784E663E3C7C60FE3C993CF3 +S315E065D4C0666666C663663C66603C183018667F06C7 +S315E065D4D0FEFF3EE67C784E66000000000000000038 +S315E065D4E020001000000000000000000000000000C1 +S315E065D4F0000000001E3C0000000000000000000087 +S315E065D50000000000300000000000000000000000A0 +S315E065D5100000003000000000000000000000000090 +S315E065D52000000000000000000000000000000000B0 +S315E065D5300000000000000000000000000000007E22 +S315E065D54000007C00000000006006000000000000AE +S315E065D550007E000E18E000000000000000000000FC +S315E065D5600000000000000000000000000000000070 +S315E065D5707E00000000004060FF00FF0303C0C0FFBF +S315E065D5800000001F021800000000000E3C000000CD +S315E065D590000000000000000000000000C30000007D +S315E065D5A0000000000000000000000000000003002D +S315E065D5B0000300000000000000000000C600000057 +S315E065D5C00000000000000000600000301800030065 +S315E065D5D000030000000000000000000000000000FD +S315E065D5E000000000000000000000000000000000F0 +S315E065D5F00000000017540000000000000000000075 +S315E065D60000000000200000000000000000000000AF +S315E065D610000000200000000000000000000000009F +S315E065D62000000000000000000000000000000000AF +S315E065D6300000000000000000000000000000007C23 +S315E065D64000007800000000006006000000000000B1 +S315E065D650007C000000000000000000000000000003 +S315E065D660000000000000000000000000000000006F +S315E065D6707C00000000000000FF00FF0303C0C0FF60 +S315E065D680000000000000000000000000000000004F +S315E065D690000000000000000000000000000000003F +S315E065D6A0000000000000000000000000000000002F +S315E065D6B0000000000000000000000000000000001F +S315E065D6C0000000000000000000000000000000000F +S315E065D6D00000000000000000284356532032303138 +S311E065D6E0302D31312D323229000000007A +S705E0600000BA diff --git a/BaS_codewarrior/FireBee/Flash/firebee_fpga_15_12_10.rbf b/BaS_codewarrior/FireBee/Flash/firebee_fpga_15_12_10.rbf new file mode 100644 index 0000000000000000000000000000000000000000..63c16f1d687e91f02187b06b1c5e3ecfe12b2e04 GIT binary patch literal 428953 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 ifXZVq- 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�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 z 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 U=hL4+!mCCDWBSlvWHTmq_Cz8fhX2!-DX}e)r zqzzf3iil==5S_^m3U(fwCZIXTR?Z>f_uzrW2^8dJhbEXw*YkGk;T8|p72n6?2!4}G ztHP^!oN^Skl5ndf`jP=D?+<24GV52aMtZsoIuwRu4D?f z6*XDG5Z@2-)Ehu5uubY1LVPCqMWXYZ<0|i3CFQA77ma*Muu^?n)f;lc6jb|| zF##rGBh^eeaSOX_ti^;reVMYVNt}8p|XyK1hNLgdbMvsAO`< zfq^Q9KFO+)x>VDW(oc%Xn{#wAUiRh^Bo#BMWg1Idrez1H0cHoVf4fwxk!@sxBTqR8 zeM@3!7DL1`sB}k3xf${o=f|~c@|2cZk|XJgRFTZQ3Ha+@IqHFhl%5AXzXXqjPH>t= zf*_Lpw@l8BPOYQ`jR?L>KAVuN66sedLe(6+c%er1L!ZR0Vfj%797xSp3PvG~SH#pT zHX$PBwhOPI^72-?pkZGKev#@IzdP??tv|7;_^xqzUBXztVMG2ZZBUl))6F|&60?rF}BfF;b?>Mw%`@BJYWpQ|gyzZW2aYW>&_?gL#l>N#w zX|iyC8F@^ctjW*0yIdju%WI>>?OEKX$*!mo`@};_uhXnN)Y`bRctf&^thpL;&d!0G zR9g?Nmr=&CS`itm8(#Q*0lo`E6lxaKcFO>#jJOlH*Q-<)uB-G&pmTc{n^gku$-~w2 z_vX(?Shyc`W{wtTv@^jovj#PpDO62VrBqy&wer>EC-E!gsfL&3hvC%aS}{ih8&vYf z9Yu|+c}HIxcB3-o;!BbCAB4rjCjr-JQyxPwvyb28%> zy*3M{PK_%^t&R#*OL>}LGb}3969Gh^ym{oi%ouS90vs$38sUx?`LQAounPw91p5l! zu}DC^g)?;^PqYGMMnIo16F90gP{hT`Kw?H$$ZU%$#G)?20Xj6c;d|2HigQRoUtn2e z2_9MjHIt%^G>aIW<){dNhXxQ1Syrh^jKs1&e>O>@UI~pdNdtmVz@Y9|&?J+}lDpsl z1?ti}YobRJ>)3oLG@~8fV$9z7%mz-^0jse}VrV8@{Dkn5p)C}scJ#Z>r7IkW9 zs+mJ&7c>j~p4yv*8l-nUGbyxhq*Ei8&JYa_lb{Oflv+rVTRv(!q{ZpPhub*u;Z|Uz KH!VKav+)0Lo+J7I literal 0 HcmV?d00001 diff --git a/BaS_codewarrior/FireBee/Flash/firebee_fpga_15_12_10.zip b/BaS_codewarrior/FireBee/Flash/firebee_fpga_15_12_10.zip new file mode 100644 index 0000000000000000000000000000000000000000..e5c959f26ec383c27a25e6d93e81f9e789abc895 GIT binary patch literal 192203 zcmV(vK#eumuWpGapFA<%_&CE$sn4{e9c+Y4ca^UrNpJ)w?k9nd#CmLs*mjB;*o=)F!c_CfL8*7{w<9H2l5Evgj297uPiAq5Q;M_hSG|F`uehF*M_e^!%_#SZF z^4^3FYqgDI8j$PBr@&LmQN^L$CVKFAbd~2n9>(dAHl87o*D`J6vT`Ec6C96YmB%^W zyeHz-JW#Gb)jsY9%5={HtV=s-dOJ`)3(_VycMXiwu@$HTWxA>*WI(xo70?8v{bWGe zh^-E!lQamuyjP}G+K;E3ICi_|#y8!EQHpmOgpFA%#obAAS zWm?MXFV|lWl=(zn%Jl${vQvVL$vMR@koA2ASO#*3GF|L@J;3(Efb<#X2irI&`v?uP z7T)gx4+9Ax_xeDz28Isg7t5CeeC`k+`^fe`0@%*^CIAJHj`IP^)i@o*62N}E=6#l* z1?~`AAPR<0&GH+y_@?7KB1bHWI_?epnK+ckle2Im zz`C5x@)*3&eJ=BM9YC8T>tM#7VfY3?W?gxYql!LPV zW!n)T1xOEVIc*Z#MNY)#$rxfQ*+!Y5y&?_Ny=?ytK=@LogZ50GxfkGh7yT~tly&?* zV0;hD=Vja%_*+2cAU%HoaLoS=h)ur_m>J}=y6AVoUjQu0BbKD)R)BL09i;PChr0l- zv+Sp>MnM z50HM5QJ&4Rk4RZ#oif1kp8{V4vJ(C=@ZW&1Ij}zKAUam`o9Mi89lOtgbWnH7*%&y` zKPk&2@0II3Gn~8J#yaPoEkSfK=jHt4bbZ=^_fG@l92@{h$47zk+&tr7JpumALFANr zjlS#e18c=e^nIv9*E>ke^uK`X0QyI4Cq2}!q=hAAQm%=&0Nk5zILQ799hU*5qpVA0 zewGsNk_WW!Vh8>bm;-1J*iK&YoHDP@Ce-7|k==eLJtjorAn((5mGgz1T zgiqut=c7N!d-Mre{}I5F`iDj{{|2 z_6GpV&jI4cvJdsD^x-w{vwhswh@KFiLv*>&F|NnN&trdy-{^l*E?NE|Kzn#KK>NdZ zXCuISyguY`8^HEGfW%mwhkj^z-fq@DHu0Q^VbW5DkL zHvnuWZ>Y~mH+`)?23U&!!+YX`iN8_yIjG}VXDn0Z4QXXb9Zx#wx19tCKS=jY0QZRP z)a|5!`i$~HdO3g1VKY#sOYR9>$rb7P8au$~F*5N$>%O@P<-nf5FUX}HSk zmW(CWI=gaz$w6p54`4hj?K~GONt3jdufGWVdq8w6OZsGb43ei4T}Jy{zW@6Ua-Vvf z;|ncZKd)u(2LWE+4G1l~ma|Kn^8ujjlTcUEu9x%c<2v?tf%gN_&ba;_fbFDD=Hy9lf^@O`MhUFT*%kk}oY$g{NL|5FVvG+s$X-1c_%{Ig&62v6*DP88D}d*bCHX{p zrHx>$M;?{+D(9A1e64&x>y%@bq=~kVu>fr*&jV?rJtu#uOIT9hGlt=MSQmXRyr4f& zra|^bVz_Y~EAl~qh9 z({Vh1QF6;dm*g&)V`CgoUz8>NQs#6X0@%h}5bIw6{vP;K2kG|?2l2rqmK1+uJXa%h zNSn~Xv&j4#b&KS?S^pmZ_0yvOV_Ek58-RL)GW2Noz zNm~K1&OKy#nFDPbb%N+9i8r}t@=lOoUSINbLKkT{3t%a}xa9rCSEYYSAAx?M?5Fsx z^x^5t%QK{9w}a%Q*UDeh$7i|8LE3pv7(YntBY7FxLGd|wR+%H&QG)o31ncr1OU}?K zKzV+7ha)A=D9?h>CGSh9o7nzSfOW}LkS>-Ihe+HZc1HS*>nz5y<(P$SWn05@!1<`Z z%56N4Y-jAr@^%NF4~a3$bkQcswfM?qT1a!5hH>3Se(}u6*-}*$NcSxzaLMR#}%Aj`Q#=QFeqbX)A;Jf$j9yStlKm4`9i7S7^H& z5P9W2$~NZ}zQ`FCdN?C+}+If~`TU3VVTArQp_tJ#; zi%<0~PW)J&0oEl?!2B}XNe4^P%4@Oj^3F^A)_(<*&xFh==Tputc_qFfA^9|Eqi$gQ z#N0mfc+~5xbDiV|^S;dM@f{cMv){V`?rk}TCb6&N7v)?C561mPp+jOt?jv(gX85KPw`h-GFL#~jj zbO&XIw3Xu<@dJfUp@T8kTK+5P;QaKR=x>o;(nNZw%S*OOZRC3GsOZa(;PE z<+}lben01oYKZKC*MEG_et{pS^CR)(Gsth^;H?;d2o>x8HZU$KgK%<#y@E_@K;Z8c~n}hs+>R{qdThlL zJAd%%)4Xhj9&LXxUX_Q%+(+s-f#absn>e1`cN3oXRXU>!>swjI6ctRXZmxybi>cKUlG=N-Hie6c5B5| zxa)5_#Jkyt!p1ed?V8VQT&}&pcc6K8t!Uz*(Gq&tK^w`!iAG(ntqeOV`cE}3C-&^9 z6RiMa#OpBdE_xw*SIhG zqqK?@reye|!92*#()t`8bKySwYj(goW8bXWl8SZpoV9Nhem7LnVBo{( z<9@C;Cj}_2eMb3*-**J0V}L7Q!+q7MVjSOaq0;nJ$l-dpoh44oMKru^ubZ^MrF;~V zh2b>jEp&y9PkJEUu9n(i7#^ll$>ULKb_qm-`(1C?&EqSY{Ip`pSA(-2Fgwb%ge!|x z30lBiZ&=IyRV~Z4ff!Sr_QIhE0(jns3k-Hysn%{!8XO|zW@6$VelSZIVyl06;ZN6) zKs>$FeshSAvMv0Kfg)iRx? zspkGrKBWT}Q|v1?JTM$trDf%4PP>lY>N(clxuj)x@#d{xgB{A~w9p)>l=qaGbaxj+ zdi-V}G?JnWF_0aVk0NlQhX-R?xrLjgLgbInmU z+&0`56;?*VTVMVbbWPJvHS1(J=ox&MEYf~xdO&nJjU6&+TdDb6jdH*9dbK7 zqpUsA5JrSS6sdB$1j-8=kq2ht1=FQ#B8sGw_>GEp>jhoR&HqhS)6kHShK*yy5a?L4UJb|wbNAWxS9?|BPG%reut zbTY!(3iXINKb*vzN3L075W}1>P8%@`|||Qj&N#ROJ(7_BJq-($NT=D(!jo+#hr%yx0A< z{foW0*Fb<6I{CJ&?FX8&-VYK>0S41N!MMc1b{4|UCHxJ=PVs1kyrYcfFpZe7g`?TM z`?K%7F%jcxn4^qB<8{jMuuiawCyKh9Cexfoic6qmX{#H92@1RNC^m9vmB6sx^SZg= zItH#yPI!Y2wMV{twU zNxycBDq7#Z(ZA`Y#ph-9EUTv3WHs{B*(3GYJ?V}(tyjH<4x%_Vhp0UZ#*D%UvaVEn z8WV;zqY5n4Aw_){DiGRE8hWv!@*?(OD#-#Gzjipy1%~Y?hTBkJNJXPWX0waY9je#M zM=6eEvnV#gy*O#1@zvg7aNx#0#ULE)E&Nx$>(p!;i1M~oy={kTo%^yo>i&FoQO(O5 zQ-NVw!_Sh2uNCUaj4|uWTc&wKdySFS!_6}R?+>?l$;?!MVz@cXN43y0yb)K-(=!#X zF~yT)|JZv)z}h-bHHu~xisEt(4~C9vb63?L#?lX~{aEyY{fqvl^WQrOcIqsd&q!&b zR=cXMdg)npZ$6t@r}rdksWCERE3`F6TfCX6n*XY}sLmXmLUSBm-!CRwfj4tdr}wA+ za7!zQMqzDty|GvwLMGzf2_5~$XqwikwXD6NuHAp;s74`^{{hb zYiO2=fwFcZj{Bq9bZ&Mr%n!!XaByIF@~I#{sC5DvL6I*{K~~{(g7q=?8GGEAs?aBE zY4oiOIU2?^rU)fuEo8n9v*fpdIrY$+t3oKk{7}|?J_x-->EJB2=->Lzw(8A1w?k3L zAPewJGH{u@ba8z~6i~yb(Q9d+^UP@M9!=p;gOkfVNvahLr`n#`hiP}HF%nLjH?xd3 z%^{2y;i=*w4_!3iGfgw7;tvSi`!k%@LE&{K-n7|JgdZ${$`T^J<9D`FE6`H#L=3GD z2XV}ej|nzGaA=07pspRaROqY)PVEd-F66Xk{6}lbEmc%C%>g&0>n(&`>}lSt4sHT> zYGl#;(&6pvPTIDMZW1^&tj%Yaq=j!960XOb6*|77&E5=8pEunwsUWn?jL4sv0Q-jj ze9JiFRn=M*F25y)j;7W10BdFzxxi>N?e!YIaT15wTy=kO>5`sb@*Zxhy%S%$_+)#8 zvlM(t?}Ko4cJVr}eBt7U5Ur^xBU*h!nTbOZO$Jr+gHz-X``So7bjY4))Z_@8h4k)jaI+n%dROvOr3ybH(&M93uc;EUHhJc zU-|O-k6bWw&4x2Sa@~8cQSSG^>)&zxcV_RXzvQi(@yG)Yr5|2*(UI@{278;ItKM^P z@y{;Z^M>1RxZeGyZ#etc+wA+j_2$8yt52-QRG-|yN4{Bm?&>oitgTM7(@h4-HtjUs z`Q$z6nv{Knoj-Nf_&oQdcyQB>l}8>_*Ve{Y6Tf)F*B^LjPyAx_^&=1M+4Gk6{&g=u z^4+hOGCEnf8s5=OY6VngfmIL*T)3FNHayY>U14K~?P0+-Aze8z)wqi(zb19#PPuu1Q>c8z%JAY#ibqshhAmbW3*u zq*5KfSO-GG_5S~P)U)HKmd|{48U}G_pJ954+w74eo(=1nud!jVxuFZ~-00Gqi^wKc zJaWZTo?Shb@9W(~9ZXw4;T_g@tfXRfNCH-0k0g=HLj`6V6EAF$uR%js8X5~8GDl~F zdB)_3p{F53jPulb7j$wzyKqFB0i99AvLviG2U_!VVjlyuzk8fvOQ*`EA@aT1zOK2Mu_?ekA< zSmzp2X0cjDfSABYl+vn)-((moHECkvRt4L_NWH3!6OnlEwU@}zFw(VZH|)ftG+f}; zAes$_b&e8ogWynw-o3xsI>lRkX+lw#Gh7$W+ZYq9HuVH-Wwyr#yh$TC>fbkVPluAW zH{xM)AyE6?VE+SWcspDwsk$@rv6x3Nm^T-8aB+;inAhMt~_W{pGS(xW^!iRJgop|gRh%|O&` zQYGSuz1+mENmyqZ+3b4H+g%HLJZ!m*#^JqIdschZKKglv;NX46gvWX~3(QX7r1mRG z!uU>`OrFyqN|D1{ej_kh0E(8$^cmmS=m%;_lOm#uwC0sg>M-qjE}?9LSBRXNy!*$C zw+#B8VR{&*?v;;G3^>qc)i!y;<+sdS?Wo_ENSso~uvcTH?ZoVgSRQ|M=Ann<#mWl@~S2U5ELiuO*jg zGg8I~nvW`MHikb9x5ajlff3IY+kE)$caUY!XDM^1qTEeJiCLaTP@2)qRg`#_v}~Hx z4QEfdB(~|!7Xy=9;vIUC18)%dg}48MM*mWKNg7c*ix(9(WrHeN+X@nEyiM-J?yl)Z z(*OojppNZ z+aj?3>aTtG(=+Kyb1vNSCnv7nUd_X*?o>T7!#4H_ta*esHt#dIPLnk>>BE@bhDqJf zK=D%|b_w^;3AEefauac&xTt}+crP33W)neW9B?5*OqbDM2k z96D~zF@l_H`q8139YUrBv98WUeg4J`*YU`wH=!HgCN$209|Fws*pj12K`Md6lmw{atxwh2=0 z+jl!4uGi&zv_`W!7Z+7L-q`3fQRxl#PIUg!HTC(WMgMizKc{n`c{Xgp_GRX9;12Hi z!&)2<4z3IH<>~YL#TT^JOSq>R#T8vO$#Ig_73=cP#Zyy*LI>@cE45mBk=E}Y#X28t z)>*!}o=<5Xy~6xJJl$oUD0Kr(RaDrzq6_m#(v#Me>+*Wc*sZlE&LP1Qj5zy$kRkqU zRu8A$b8DDws7^658ip&eAWt^;P4>?>Cnx)Q^em> zChr6KnNVZqr!}f2`SLn2cFJbYwvfMcS2i;nq#H%R%+WN4sNuoU6i@v!1YxEEzcb+d z#)yw@u?fN!W0#gu6^e3@;ZFo3yBvC#pA`9Xe0Q|ZXNGW;<=|Xbw1!Vi7MT}EG$N2u!zgVv z3E#JBa>jV>np(yw-e%RN-E^>Uxl2by*tSJ~P=v3!@EqpSym@QIaJI=OEIhPALA5)C zvkPhCIufh@Q8TuOeP$}m5OJvt6l_wF$zSl=N|Es<3~%M56o_DDm^Ew;5)bX2@WO{* zd%KsWG^XGSS(CezQ^>R;*-f(PpfLu*A6(nqC6n&PUC>NXT9_AhloOo13d4NAQ<#_5U<$wYBX2P9 z?zC<6C-XmiYZclIkj)o)+NOnCL8m`jX7l}NVcnK`e$r4gL63=;O1h!oO#6!pB<+3Q znXvv%rRye{VI_U2~@VTG-8(H+v@0gvHkq|Lygp68Uf5@)g+SEMXSUmlPLM z@^~sZjA%EfH&D-+TEjW)FHUgte1ur;^OK&jy`BESzQ?$hA42-8$uct%Q*>RkRrO(N z{1UQ0L}b+27kI_Pm;TrJEtjOD*UxV`t3G$~yKdhySH;ggr(b>hmiND=cJ;^K{r&~_ zyY1uGEuHshz5dV{?)Puf(GTa}J#+9I_UF2pgLj{K>FeKn`;z=#^~M_(IQWm|-S1iT zd(PnK`!3}ZigWyRZTyjcR(d2flZ1R`)1}XJmeZedAshdG!v_AU4fmXJ^-tUFd%n^5 z&dL4Mg;mNN5grc2w%Yi!#`o6dMg$w&M^I}cE!#KYALElG+V~@i*&tdnzvO$DKIG~u zPd>5gd7nA^lwo~W1iJ?Q}{O-{Bh=?pY=e1fBHe~~w-)VNM)^Vnb zmzp$!X70*4?um1%;c%O;K5WqJ5%1xx_Kk3A_Q1tw#$6sZ-S=D-`&|r=MqpmqdG@O< zMBvyKzHpFlgv{H_$s;xLBG;yxej%oFeexVPSO}C zxtKKS!v}H^9rJnIcFYFjSn-DIFmuE&sd%3`!WP1#1+832$ho=;l&3uCnlQQ!dh#lw zjJXGPo&U#6{Ux)$WEg{0HX4tD&_!~z!V$vXwo0hpbZ*~Xm<}P6@s{g0f7E8m(9_z= ziLsdQgy)Kl)yvu@xk9IedI%%+a{uO@*R9t+_RuL8=^-;yrzS(K&TVG-a-8sNBwil7 z6`M2?xzS=;m=QJul&Eh5SVq0meBp1L>(Hn70NyRv5H9eamAD4hfMdW5AJx0V4El0V zU7(mGk;$!WD6sI}zN%WtkG%53r)Y*C+NEPMriAeLFgB4%f}@m7oA+(-4jO^YCq~B8 zsjJZCU+mu==uIa$8=y;>Y!PDp4@E(%pmvBBVI3J}hI2&|5k@erA<5XYLtWw_13;tVJ3AvS#y1}=2*zR9JS?>br)imWBq<7l8C#CP6Z2%m&P}jzpsDd>ZZ@0_Ux_HsM!p-N|BV;li ztoixL-kcFkN>8uNSYNd#x9vQy^ZqZPi7(ekO31=A7^K{#OFw!&h zyJn;8wB>=PyCzkq;3KtcX2#2p&>-g3b8B~*HqRt>uv6X3 zo0j(`{~7yTM44ad!6e|Mm=$%aCgw}pR-qVfC!rGp$w4q0m+U7c%V@-eLzp!C>h9S0 z9XR|+Ue)HX%`sp%zQ~~W-6yJ0^-*wkHV8BG%EbJ=7=C5N)LcsvMSAtaPefcEV{MbY z)65W47fYzhw?<~~T*eLZrMulm-+b?wE%1e`(f-~-@8({yxVhK!?%MKwc&VBW7yLiC zas!{fzssnogzHi(B4tIBdHlqxL+*P~#5y3;Dc%}NsYO$Vy|ccsA%OwBu)h#&A=hM86G@ZT<;;w5RP-sJZ>e%6YEeDhZ3A~kavW&x44fSRg4 z(km~QLU#__&iIl@GWp)bI7=j*E`=BEb&qwU6jr(0>-dcyf4k>p(S*nM7b(ILekN!n z$0gaJ&SSBF-m3JGd7(C+`6dd!hWjXzL2Jzf4R*JBo-uQv<`B<^<)L@(LbvF7y?uk? z$c+d8UBBNMm<5E}VL9@&s+1z(ZDkg3KflCzX5OVF(+LlbjfT(+A>dO{U=y9LpG(0- zWI~rY9V4<$X3%UlJKRwJR)6nhSq7~heLD-X!}W9PvwOPP`a`wt!R%Db%z>U-o}y8W z;y~-9p^cjX9kN{0E35|v{D!K*oNm0VhwFyxbO^%YKHauZH{w2=A^wxD2p^$Gm~qRU zsC2tJxvU#a4F=0wBR$e>wV=ap*zI=tA*s62SA*~-HNT`jklpx5?~$)eB()Q9T5VZE_@*)^9% zxZm9CGb?wV+IQZJ;CB}GeO2wR9avbn==0vTL!{&E`?6)dG@s2>?#-6Bco#P> z;=!6}5bE&0N0xFz&V(#P0WO8k&q=TYN#A)7t-6hRjjtJlm_y2E#S>hg^PA1$@H>cdKXVB48KGdx|jzqoDN&L_Te zY6hayPL-s47wJ~$zcrreS1*}8XmWaSc>VIU{SplK4%PT2*EHs?-M>EQndHKxegOTJ zOiCtnUwZLVvDemG{i;b`9o!O!pVF=VMACwZX@!FaQj?d6Mi}O~2emAwZokgE{Lnv%@85K2*OHn$l)YU&R$J(8+tc5f z&7HjOkzP7?-xp8W(W_^JV0U-B4)V`J)$Fi8Tc;{XYiiMN1*$z0sKzqHhhKS-wYbI9 zC2bk`Yk!69*9;|*9=>dggiisIVHwGmp(cSCkdcXHOJpe5`PVywa_j&GfL1F-O*YElHe&6r? z+U2~H#L+F&DX?OL_8JX*Qa&a&dOL!AbG>l)SL1hB?@6F>j`Xc(+6eX;L?9N8BMg4Y zLYU85bSn6RkW(1w$xn`kwE!pUaHwjrU<4Vh5{?2gR16!J&SU%-jiv+Ora!uq2LD*; zRzG4@hXyVwAY4!QQwS1n_pQBR;Lcs>4_q2wG5Gu+)Huv_Z>K%HKDu|0XF1YqiP(39 zF->XoC5^bTsxeNJpV0k_p<#3?CEe6+LRCM}~v)wOc>e?SG;z8C*tUkeL0kJkjv+RRcsT-Hp$T{y z@r!hYg$0JAkcg`qCO3t(EBscCO(%S`o7+Oo26FHF+%&Oh<&`?L%eAM{9kEv&YnP4T zcE9BwVT&HmeYXep>o(fTa46@Oi2s)U-Oy^oPVikpr@8;?T0zflI5bbk~-L>Dh&EA=mrPHmPYEpmUAGVZXnPlbxAyBgY9a zoq+nY8m9^|J7)}tO3(Z9nHVY>xte_4ITDGu9 zT5Eq*Y~J*S;|Y1|a)?~~ktSJoec=AQ?${eL4gg;w_7K`lxymWHcBOG8#KD~1IG9?r z>0{b(Buqo64?#o5M0ey}L!iM74c&g6T7u@N8;%Yq!4xSV{%S_KUraC3<(m)X$Qn3# zPjrQR_Y{Mt$qK{9Gmf)S>Oy2M+V=f6d&ckulk;AOB;LkNkJq z6muo*T-u%R+B~usO}#~!^8k=x*5R5a$zd;YOb}i`IwHyohJKLOGA8#*p>zYzsS=E8 zk_N0AFz{JLNj)G&gOVO&iH;9lQ8b5k z*ADi*_HX~^?8b>SY*xw5P6A;~!p7MRyBRl^Mn>9r(mEM^iHqzyk~5OrA!iW?DAEd@ zphl9P%tAi z1>5@uIdXpfm?T-nr6!$NSnJScS8x62R>w0djVyZ%zKI%U4y#v&E|U4@bWo214^zS+ zLI#`W3Po%PMhNI+2i6O%o2qFk-=)Qmtc0SKf-p)0=&mHV0Rb)q2|bh|R0&)4C+*pN z+wUWxs!R8S|EzUu%{vT+60$Q6JH8B`Z?g)+vq=Rzp20mx3&$#>F`{Ql6b&D(2gmB1 z0;)_h$WqcY!i8?q%95P~`5V#~5^I$nT}18BQH`MORJ0aQc$4kRZC`GCSaxxu(i9Id zb?me0R&%*4l-9lQU;iJEO1obrB)b7ZQ6!OP$i4JBS>k5lc$SPkC#wavjEa23&?g4~ zR+j#v;*gdXMU@xX_d zodk9O)3AF~t^;pVsopsv4)|fh=gR<=addM}rZ~<7plmA`+rLRnp zd{8~v$+7A(UE|mtEl)V#I2wDsV+^;TM!q@*hVBdxfrMplSM9_k8Mr>uQUiz6#X;!K z+DSs2nLPLjus6`71R{jdv?=Yd#OfrAa@03KJz(9O%ceB|+O> zUS1+05QNjTBk($YQl|~uoPF)?-?6N7&58>&Y(x(c$iuR#5V4+wjD@;3FMM5#wE+T- z2BT@nw_)niQY4AqR7pVcX9gp@%*Jq5mTlCHCJ20Zo{&DRW{#1`Xv%lJTW`BBM>sv; zcjaiU2u3uJ^umZ+Ok&_9hRIA-_>;lG7(ZaAVWC;~W7gXW zE1Nelb}?;mUz3+lyEBj=C0bP?aFJf32TNBGiq#G>z}8@^o!RLsgBPXj$Y|V#hPn0N zzt4fT=0GgZJ;#|03>}&>D`@DYd7cb0S2^}%N|Li?(w;R(|0lBC zDB|6_nr9g`A!|*t%rm$0fB>brLd_yDRb;b5hZTenASxzPtXW0`(hddspJfr-u@Msk zBq=SZ4H7Fs`{Mqsx7EDkJ>|t7jG|oAG_zKxg+%5W;3#BzbUcLMkY}PBc90I>@E@r* z!5KJz93o?e9I_W@?R+aFW5me{jk3;|9;Z4?|6cW~P;_K6uWPjTXf3s$ZhK_l0HTk7 zj(Td@^3UUw?J)7DeRr|Fy`&;N-bZ5+X_8gyuPis8Nykg-gN?!0KK|vZk<)JK02#PI z>NYCK%qj{JsteG?dL&U&zsPAtUDyC_VWyD$iBV(_$uKPGs+JeYQ7afVNQ3!Bj#LAk zNn@e0AU(fE&m|W}9hDq!ELkUMohOSnpo3d}%)MP`fA%Mlc*!g<$kxYa@@8@Fz=PrdnI z2U$;f*crZ6wiG=enW}fWGj1Honp!;3$UcEXrOaCQhuP0d*&1%OWHvthpu2p}on&z& zvHyWLq4Mw4v0H9f9(>@I=FLx$&PCAgp_32vV{s215`F63iHaU*S~p84J$cJ?dh!G9 z>^V6CWI&{a?TD#*Cp?x<&ew28=`pXYT;yVu%)?CpOugHO1AVvIY#GzZJ?VjOI(*!kEWV zSmQ!yM6ehMD0~#0lKIW(KaA_csHNOKB(tZR9?M32gH()*EQf^>-*m8VDpf1l`Bp;b z_p%rD=TmyueJ_6g;6E5X0SFhz{~Ruv4%x;*#c#_IY!LYl2jO{O7dh!nhC(=cAmCUb zAe0T3wi7rZsw+tyAf!&`PML7mGEEu}riHPzO&FCccmcv&IyS|rGCwTlMvasvU~i-G zo`3X)fYE{iFvt#oItD;VkKi-%0K-ncgYY<5YGZZ4hQ=syx?gsng#>_N2vsYNZqu?) zR-hcy1mR_JUzYuSZuQZJn+=*Lng%J$aMYtEIzL~Mr7YGTt*p>DuA<$T%gf@i z<)9p|M3?{mlW(*T%cCbH=RKkkS+qH}$Kx@HOY`ue8kzHOChiQ?anKmEDzZ7Op{fS3 zt@5Nxdbm;bEsoV4dz$`oZ0aVq!A5txnEKO9mAx)M?#puP^}K3WFPA1CvYHqFF^~3T3LmsyZ{y7@=nA^kl*aS>&^= z6&jP!3B55ix|86FB%sMrukM1oL7$Avz%d^mhT$m zVdk38Q>(o^gddjdG|Aq)`oBFafVVq&z5zJj1Ay}l+SlQHe}!>*Up7F%H(iJ4eWt;G zeEcX7eV=Ju2M+RCZ+ac3?^NTPfrHm#ag^=#^)H_=^UNGKp|3eah!_O=*;_$2Q?I4GKJK(adXN=afV6@T)!H(aM_v()Rtj?9&0{kgxc`P5un&ZvyGIlt@d+R3jEgbM46 zFTC?thHyMtX+h~Q&{#5%M8eO2PyhrgBzu$|7inWDIG9WF*5*wMgX-=_0$G*|Vqkrzyh6yOdSx=N%`n77^Ksz-+TdOK{7yxH9S z4xcsx88_qz%9%D03W&N$gNl*BJA_=a1Dq9kqphGuW9e}00MWo^2J|-vF|x2uF9TGN z1pELMeB>irbB+bfuR16EbV+et!H!E>YVQDRxY0mKnVmOlk!g639_oudm?q z8GsS%qrl)!6@WnoU}Zp)43>-9;b&uiZa14V+HKB$f0~}V>UX5y zqn-EWX3;L6Y{bbOpZRR0IRPJ|B4CM0fIJCXEojj?pjGa9=Ndt%Ls{rih=^rg$dY!! zo`Rli;K--4ZA2RBr4Uk7^e?%pkVzpM$dw(0j>s|el1`G6$)mRgz>no8LPYM@^47kv z?F;}y@NhJ^NI4*2+d3c)TiVNF0 zN+YZl2v`KdO}vN9?KXM2_EQ|wOarGnN?&MKKFT4=2@ovf(tOxHjpc&gD<=zPD6XNz z0v)21J(LhpF_tYC{DNsfGHeTMf!B&?5R1%nGKI0>s;1}R&h#eBJehQ>8YT_FBn%`e zv&{8UxJFx%G_W<){M>*=C5FDh_keul-5RDF$j!6|&9!EwHU4W7SxN5=x zr?@iL@g_tECcY>F;K)fKIFTeF4bg)IkyJe_ORN+tt5tUfuAj>$>6J!`tKNG1za`C= znVdW9K6(oB2r^A_$nj#lpU?ReNvfNK8$DGtngES=BT0e%Iz`GcH8#&uuWHEx5Fp|lvMOCN7UCr}Dj=Qk_gVJ8&I<+L58qlssqJb1j zOfz@&-QUkk$TOpA;$vJ^i)12FX)sM_9FW8$MO7Kv1i6cF=Fs#cKZyHE(vgW7!A^oN z0c1eo4M(0yhArcH_LUl^c2CUR_ebyjwxA^y3a1sPjLoW@>{iJ^b2YJmkhKW45n!(~ zxF%3sI-%M}?=j(@gOZn)sTX0RLaD%&=7~t#HvVXqOU4j0CAXAWmS`6^yHQYvnTpC2 zhHpSkV!f8(24TS^&6V+o;M{lM4D1Oc)_{9y%*aHdUDG3bBc&A@j1y_C%#02<)0v*# z3{G5ZomF)+fcb>}1d`7drmVtLDj12yB2!tD&@wGg8ZUrw5pcA`$^fxBE7)#xFk8W! zOgN*&;cP}2gFP=rB$qCHC`A0qvzm?H`4zfmMEU?I(V!Jdn@g!YgsMGQ8>G5MUQ8An zrhU|*L7^9Ekq7NX=+X-DAff`1+ZqzABq}8qBuN8FvNc2S6PZX)F4pMt#FuMs#4Be2 z1S!bpt7f7Gpv&y}c`2u=wzn(>;rM8zx8<76Pm ziQnGtsfOIs`tgQ;x-Gwci>85!NCJ}nZP`Fr^8eZRAcrwa`v}1)#0SZ`NBHER6)$cj$?9TDmSaY3S|{hH5Y~7w z$)4^@`khoq2kr9dMo^A^cqu#ou_QbH;8Jz;@{;MZWG*Nkd*XZEj@&{XQv{cVO z(E~Knl8c^wUxQ4$Esi#YS5%(Y>AqQ5>m8>S9+%t5A37Qjr!F&KZ=-oLQO__nHrgZ7`7Lys;Hj2=8Ww>|p<{edfw zJ>9S5$zG^p;IW(N(Cz-vA3bn#I;iy|-SsQp`TmDKSw|$>ld-{4(%{J06W4o|E=bwwoGCErwABE)711>ru5) zGRZYgA_Y$;C0w5D&pX*vX1LRubm62KFTVVxgTENm*)zh_*%081v{1pn$6#gDJ2Q(R z@U%W7bgC8%IY>b0J$#3432sUz2vxg6UKystEescp^`c$%fulRNM)Hdm;Uil#GN)Y> z*bTNnW*yu5K5LNEKMzIIRV!hzROGztyQetYg%C4vqrjoYzBGJ$z*T~k4>>b>dH~Hq z7V4mEmJ_RpTVvxh(B5ItD*k6hYzQFv1RJytHAMczpzTKR^^rz+`X(B1RKq92AGKGk zMLA8r#;CD#@cFa#YEnKuDQDhIm|2F>kdzKm@NCcm8njEM7&#N1Bw3NWfUk+>rm>wR zbAi?_5-$yf#K1H;FXMMu)ko4QG!g8<7)d_MFQ!RfOe5l4yZZdwtqIv4>W5p*>pr32 z>oI=Qz$0J(p+H6AxrVotamW;0bX-dEc+(VNBU}hA)w07*E(F7VvuB&MnPbkMoD0qymGuZpnbY8 z&BjSL%;#O1SpN20H!p7t$Wc|@a-S28+l}{lG^!XbPF~I+0LtJ=*{WkQn9C4AQ(rRE z8HUEgfSE5q1jw=P2`wT9lkvhd#4t;C=>d6+$-6MX)Y{Crm!p7Y;LdEr$h|fG#_iuI zcB%cg=K!x9FdN?AJn_w}dw&MTXt@3Uu(yksWEkTFF1ae+^iAjdVegxm`mUezpP~@F z@0e8em(IL$lk@xE0o8`|Otlg?hjUbLG4@)b{@K(O z3n`kw$oceNj3t4gnx&x%asW|*F#|INoM)hTq}=sR5p&V-^CEH?uCX7|ZYW3IehqKH>IyB>-X3@nFwP)voFV_rS-4yCG) z>tlu~nmt_u#Sg7*QgKyiR2Ab7r(|Y7j1`Y)1=p>(G(gZ-t5t6`3s1Ysd)V^QBuSQO zPq?$=eacGrg!UQSd>f1fAU0FFSK(M-7sM#)2ExbJ4C5n9j2G;zRsoyIm@^5ODc z`H6SEz|{>y(kZlv;>b4COYk_!7V=Ok73q+sE($|r@JZ+RvXHGD04LHKAhcnBq$9{d zAu9lByAF!i$QvQ=MoHS)`b^d>kTfO0%pI8voY3cEPloM%!(XB$#g*YFDID z>8z4NGb=+^rgOF`rlQxr>+vic<~7u(OFMgOPQG3T1%pT{%O;?Q9rD}BDBPn*UX;W0 zp$#+&A;9ElVHJ63K)qV6mg58F5y3x2Wtt;9i6m!{eC)L2qlXDC_% z^tvU$SLBhBUFlW*P8vA_H@L}Ok!moV0DrURuS|KC+~u=FMigt$6yFh*U{=!1SzcopQ3hu~r4pCt$OXJlJa&SY zOswjCWNiV37m!A7yI?LHeEnN!2_`%QIgICt-e?+1PM8sxE{kh1{TxLjrXro6TLKEs zv0n1vZDW>=!xRKaPy|jF4!&!7Ec_*d$}&Knq0m*Ao2t;Y8-M+0Z?NPLW;cX81Ckll zXW|cq37R2eZF4y`$4ekDCiDssEf3BbchI0GEFHjx>75kw03HJplm6kYAWfVy-(S#% z9ZY|{A)yQ0Je35Oez(xk8-i9|w8l9ju00jUm><&wgyDsVyKozY3FB*pt&z3JLlD4V zqY4%KFM#!CA<}CZcp{zEMsDmh_#%q~LS8K;yoGxfAe7Ey(2!q?1z=S>1foNy21c)?`3X{XZMM9io|c5rywwi1cp z3{r-f9k~p4RcUn>2ipcTV9_))hc-Xu~iu z8^`VtWk(|gNveaTrH$Seq)U1A)I`EnxR45Xm`;MUj>IxquG)i~5e>j;4j4{sSs!Y= z0oUW0D`Oj&x5|^93Re`Qu`%osmkCQ#xbB%k1GC1JZ=rz$yckRMt>fe86eIjQq` zJ4KK-d`4Q04vA6@h)UB9N0_)_=In;jOuCA9 z5QpF=@X=a_!_gfO+Oh5hm8)eit$1*TBa+bBM|wT=4BG>pP*a&K(gZ6llf-+$ew`KcL`KBNyU_oo3q-h$9bW)ZK z1g$F~w@R2jl!r0#$fe>O0f!x|s~?%&y-DU6)FkH$BHGvFe=7w&4YesJoWh1o0gM3j zz8o;bIwx0&i4(F?bK$7DpvwSE6U&vnMQsGp4OTX>zSyv>rf>TfKmU<&_>(A_)?{0R zMP2~X7kjbiMSAR!YbI1jc(IH?R@|==RtXB;UMbkeA~m z+D=IJo|d|{I@p40k9~J}&%C~2Pdh|t{yo3@#zm?1u;$CrELp>3I(dFE^0I?poCo5?X&g;{89=2t8nwB@&ETjIi7?jSyk;kS_PE}!*AO-OGw?U+`y1JJhF${wc^hDwayV|GS<3y1@OqrdS!5>1 zP?o@EZpnEDbJl}=)bQv!Kl?scq11Kj{txz&_|0U-Zr#6<-STed!rLBP%2m{MPd)Nr zKl^+Wk({s`%l*CN+(IWi|KLh?{{26~oR3@L)UgMeV()_2S2r&-<(0mobX~~n-7`UqHS96Pnn;yHNdhn!6 zcgjXb6S~Z(-#pN`%dYyfU-}m=gYsfDju9S>G1=`MW-A87O>m2p*nkiir?TGSLLiSW<&Ntniqa+;JoxzW=p@IArlQI8h=sFzeLC)=ca zS5LO5>GutQc5e5xQSTTcYk_|G(CwF4U--uevbDObG^w)yRwI>1}>Okf+WZ-EdrN<{3 zgl3Jyc^EzPnF-3V2gD^=P1C2C&4V6ldmoMG_MM4}J4w7q`;5$wt$p-Px7+}5r#Lo0 z?PI%QQ0D(&``|sODkOD5V^tl*8*oPyE>;XC7{&<$EQejWzfi-3v@=@2G?`#DGUW#b zCJB?_q-}u2lMVXG@^-rs`rfaL)-88fSe zFknnLI&dT=1*V+q#or~HFN`AXm>y*&6$<;sm~vKj`gMewk;KBv@>Wgkj!#2oB&8HI z-+WGL2lk=o-P`$yHDPMB06)Z^1~6!W+>k%cc0a}DwXFW+V}Ep%YcRTUob%(DFC-cI zQ@k+S(bky5{qlH^xwacYpX^Mmoxn9^;J(dtkaPC0|I4XrL0LU=?NAchptT5P-T||t zhc{wwN9cCx++2G&Lk|~kX51KaagNnn_=i%vR(!E)4^)0{c z#I*O`Iv?J+8aOds7?AM5jc%F$#DYJ%6B}z4QQknhd&+sYw_+U#?|bw8kl=t_KGgvt zbJR23oQA1U@My6=VEUubvF&(hWB}l*u=r|VcZBsy?~YO?ngc*wVSw=%)4BOt9g*I) z+h0ZKICGn10A>4XS&a!KSD}WQJ579f_2>TR{|l^;e+H@f-+|%rzwDtHbo$hPiWBlp z&rh=(3S6ecHCV6vg{&4M8S+}(K?aozWVw>e!?7K}HYEcz0sn)E2mnKpR!IzNG&nt9 zaz4Osm+caP4`!5)%6GG$vO2Zb(#E zIoC453-0Y&(X=*o@t>?W|~A56ur($!kaxGdlI#!h)=b0 z*($)SOI{KXen1dtdST?Exx!CQ3J&Q;WM!w`Dfl~N0<}|rJ0#^Rqjp=m{&>kB&t?0x z4D<3dSdF|+uyuGq#-}3r>>(cdvgfABEPxI#K4_?T;jy53!h~0!=Hqx`B(6=v;&}|? zykH8rV77xPTao{}V#UF@MIYw0X@FKClQbcF9Da>dgYAVB{iU|a9ihX)i9yrbw&@{8 zjp_lFD4=4t`~-nu>-=*3P7QLA^~a?fdLvP8ZZnBnb}fzLLtqf%54x1 z+E^*NphrP=%7gPO5o5s~_H$Zzpp%yYYNlGX4q4wodkg{gBI9iPkf@rmB7aVyax{=6 zhTCbNrY0kkTvW?$n5hce!;l_RMnFr_fkXx$czZw6;uV%43kCDE z_B;{3{q5gwErDq<8cO|!yJZh3M@j2Ok`rPhb?KQs3mAz*?v#!2p(dxtK>(jbKK3)M zFOS_v5)=S-#I)YWp+bFGN2bfP%?}|=Rn1x_>6u)--)hyTQKqZAD3`1{gM2#)oV0_G zqa4^YqoFg{PTt~;QRATe^3s>TuHNc+avAHzq7}qkVzB~VgtsL*>76iWt=Tt&*s>*C zIjz53d*Go*3^CN_X}?t(?fMY;py$W$wd*fq?sJ!(<6y&LsVr+fUag%(NEA4rmdPJI)O* z;H1;Y07gt>b{u@J^nB#1!5Hy860tQdH21ton-zHXnZ1kd&H{+zr{J8hp^g3awDtB=s9|Enw8yYJ&qN&% z)J|EhO0~+`qqWaNZf`%pwWr2(h z<84U|uX>Xnvh@A$b-n?Y#aN_R6abY%=mAX{p%}rL5LMvmKt%y&0BJfmJEo?M`6V-~ zRs=D)CYwGR)FLGH5FWKwGOquYrL9QUkVr%dpd2Tdw@GN4K5=&%$?w1TZA=b?7-8VN zj-wK#VM0#&&_a%T8B>VhgI!|<;Ic_bH?;<9xjP}|nWe|c9p1MH3NoyeA)KT!(e^R5xE>~e7;D3XW2i6L1W7WfDpr05MyFw;3@zXQ43u>|i5EkbPqsoAuuL1?OHQ=;E zN`{PDtq>v{aJoKv8Wu@rDs3!|-m|jxVN6;6rJKKU;fY+Da(vnuAZ`H4Oh9k(<1nYQ zV?c;l9TRFYggFBT@eR2f&$kQ<4nJ_KUAU7b>quJC-^FTBTjrxyvt4fOptPHfKUq7I zqcMz#1%o9K;ueUXspd(9El1}Y(p!AmI~9|h zM=&!9^697?J*Z$L!aVTME|!e(J09yjN>Xb$9EQbPMl_(Zw}-uOc1TVC8j zWeZJcr^7x(N6tUnkmIm}*sjx&kb9_$3iB4=l2_@As7ljUsOOo04b zQV*Zh`Fzlj= z_vL6>`J?_yb#Tyj7q|M^_QAkCIqy~vCL+b3^Vago`EuMCw5Rd)s5Nj`7oDVfP-fdd zl2|9Fv(bZ=c(ZJhe5n@FxY&20;oICHxdHaTxN+sCLc5FOS@iG?uS5>mHBo7A_ja0$ zH1zGpl{bwVX#-r1(r*|fC*oQ_EcV2`DATV6qt=8y6M)Z_L4|^<6Nt})gSqX--u}Ri z#vePJe(}zy`@vQ?a62H|oTrgG zdA?1*9|*mFmkiF-A9?ygYfkk?eRE;|pu5SJ#lCrc#Q4bmedrO*jmbnDT4H13_ zLQMFgTMU2`9FhVR5>TBLXiQs3m(fIZpf3;*b}%DAd}@U6#NvF}8ug@#&ff*<%p20E zmc)zmwe*p;*5e1QvR6 zpC9TRm1F*78c_948p3BOBe{~>Miq0$J)fE0*VHVtiUYE6accpcjKKd`Nd#6V4SS@) zh^AIlxE_Q0DtYpT>izV4eigV!ajbN`V{7i>h(~zZFj874Pfu454&3Vd2GeYw_vyh} zuRXp_awN~*kX;Ce*=QEI(lK}3;dm{pftai9O)Fy43nk-j*8s4hxVbVOw~6Y3QiP-{ z*V59Z9+uhD@3+*+X+i1;*1^81szr8SH1AH7OiJq>zeNLuN4|64KW^1cgpUOi58Et& z#26oLl!E$c?h(VysY!Sux}7@=Pd>;o+*xC))(~;n!ZZ0H!W8I0R7s4?_yf#KDuFws zb=S9!O<98xBH0=bUiB>w>7E=vWSw*wgWFLsDXW85|JL_dk76*8MnH9<85tx-CtYSt z_>r5*NYjP~%3`#D=3b0&fdSA8X+oJO4%qK@NzylJx6AR$!&vC!B{Hm6V5z!UIL*z9 z0jHtswWqW3ZJlg>nvqHt3Q<1U`45wrE2sMcj&3Srh0sGSOgNqZ^k6Q{h8acf-HtKh zUM-e2>0?B084_kTqiz8auYf%UsYpW0HRawryx}=4zKT&=EKDw$2Iqf#h?a<9d1Pdw zWe|w`EWOF6D{x^wG$`hw68AJZ{DrGP4fcMKnH&6)~3Gd}|A`7w<4vww#Czc9LSE>&1#F9SV ziy0i!4Ux`rgZ6YgTB~zCtkWms!@K#lUp>coKs-45FfBN5t zTJygS#Q7I7UVigE{_AKpuRqn_eCW?R<4^UC2CF9hypH*t{o~IL8A1si0h<*N&Kf%* zyrtp_@J&R7Y@Z>Y2>)>bnX_nvCeZxXGSuqK9O$iN+hLMz%K?}1xMYBnBm&G6_^E_E z5a0w1@|QkXvKVOtal7-5t$pmp0$qn+*V{!}ljo6Ej-A!EzWG;R+O^U`u7C4aFfJ#J zlO~tRUVZ=HdnziB$tNkj9_C~r3e%kfm>26nBdDPfD#+SHT|*zdg)0q5H6>RTqhvoq zN&>JeU;@Vr>0(jqFnM%D&hNH_A1tz`JA?BfqQ+!=lAYQot3N1#x~>{Y)#vPYLi?LI&1)*b+I|xDrN_kxlId3k|DpDqpqn53%jM9LOq#sJUV< zhMeVEbrZ@UK?RLa2;wuea0bv7D32rST3iU+0kfT^L0h-;aGTsUk|@<2T#l@C)8ImL z;HuKw=^aqktp`6cW{(rZ`J_!(62Kb)`II)JmyrgR-4M}j>7W3OR8>oIOqXj1xrPk! z0P^ZVkvPa(_P|*VNT$irAup}kB+B7j#pyCxLt}dDvY^F7uCz>(&XQ6oTV~{OMr+P; zBK8zN+iU6V@UHs0Yju9+&bp$>@{adOqE=u5283E_9w#+fUu{>HszltkKRgGI?Micdxd;aA(p_&H=rr8lXTG14viTNyz*A9RAyzV^UsId zOG(u{kV-H6kB>i`2E%a(K$405!FM7zh@O*t*?CZXF3<#pvXwLBoOYDcq*^wrRZIhdcibJa7&XX<}59F z2SVE2Rb!PIJ0NUU{PyVm$~u-$c{B^1A6@9sfL!3{;Y9AhSwkN=&}*7-5eGFa_WKc? zMX-`>%m4tLQI0CifN_@e!H!G~=qs>K0TPBLAOb{|Yz)DefXqbrk8Y8Jf=_-iMld4h zV3Fh=+am+|%4__?Ad1WHkkr$ao^Xdn;P zMo=}`Wi=KI0Oa;af$KY7LR&9cp_LPnF5z}r*1%47zT^2&vDd}iE-Y^?Yf?pSs632O z4*;^sFJe2RjL)=z4lXd!v<%h_H3T?ty{sI!afM~mff>EZ@SGmtyg|X0?eKyS{FK() z@A&vnu?spWmN#W$(lmzxWCMiR!7jjKlI+>t-zcJHOs(-k$VHV2p!ry+2|r8<0iD~` z39fOFZR|O)Dl%l1V~U5q{??(bfUhI_T~6^+%a^Us=%fetz2YeDDh;pf=YhA@RG z3M;AxB4;3Z#RTLe7!8N2>GH)g57lO>k11GVj62VC+QNrg`l;C{)q5E9~8pdY)URlkZtFap%J?Z0nT?vH zZ+(e!61)#GG@7J`$V&T<{?8jSHOViiYaw;SoDtCFDBGkpx5W*7Yy@6;{YiUQ&K3T`Nb2r2N}fQ|~$@pIB!y3leYz}ZvCaTt3s z)M9m*tOXJc%TcLIIoAmecI?Rv*y#?S@MIZF+~`>9)6wuva!daVpNp zRDSwI6{gXszqk*rEd88JXNo|$3Xl<3mNe3~Mf zKtel~`5z5m@CUvgUxS1)5OnvDc(HEyI>#9hc^(l;`aqIx-I-K}I%)OMN8Id|8$2|z;Zygypcfn+PTuh(UD)f#;&7OwQ_j}G z+w4=bU>O8%>wXC$%@K$R^HCVBB*Hsv15PKvxA}98uvLyb=xH*~&`W0A1aQ<9J!U=J zGQ^!S5de`M557u>Bi{~02;c`p_g9DKJ|U?cV2nhgG-N&P8_3aEG&Y@ zv$vw6`Csn6w~mI8|65tTaEgV~=?N8MG)lp18mYfF=Nw!2OkR0q_#oQp9HUlr=BgI!wbxJDA3t zBRTyQ;1o~mZF;rdQZ}LmpttW#fH7TOS|UrH_V$XXR#t>x&gb-xOkR}FPgmSvyXq{W zB^RqJR-^p<@G^i%WV%TVFG94E|H*&Q*K{6Nle6Q7fG+ImlhYRYUNjYrN2bw4fy`gB z4^NKo%0}}r8;-fv0!bt~2A5*^$H{p|$bnm}q#T^|$NkT2f_@O_MaEor5JSX>DIQVo z*#kicpeTZhHiu!&l9uenb)+#cfxzV&eHsv1gIO)}a5T!Z_6_ugi%-+;+czbmR_zop zqsvQKNmt(&y1QeY@1y(fqnBN#@6LbhVLJabEdvt2pvO&VgM`oj?}ynpMK~0c5G_!K zvaUuKaMKZr`$(C(eNZ3JlB}d*KoH#Hr{&RyAo4}u38dbCx?a5-VO(CG(fE54RH0W# z72wMjK+p45g%#OHEIgY+_Qij?VLfvG0{{#3p+*oN_OAZh&zewd0Sqm-K4+jI6A^%O z#oMJVVEY2YZA%l+1vr!!pXo$s@v(XojRbTX01>k<%8@jU15fPgp-W^{c$@SVlJr!_NUEB|X-M{yy5e6~0117o4b`?5xxzQ59se;hHI z)7znS0ln$Fq=F4;1~@t~#=BTi>0oRO@N+BY z*8mqqH$#`3jWh9S;bvhC?Z!1TpRUk1C=z)4quf*2&F_Bonu(0Ht0dr&(r|kk1|*VOG0^LQu3a-HO`9`h z%uR0|LvI8}mL_$HDLVI+uEB_s>>_DY=B2}xZDpGgbok*J`~5AS<%;6d?)5N(F^%b> z6KE*===}9=2VoOT1z804o^hou?3iFeh07t+z*ye=tHe2<{H}BY2SI3#UD1eRRpcp~ zuGukcAwV7JSIhQdt{LMBH}YDLRTzg#4#^|%x$CY_tBNdb$xu%_f|*{*^C7LolXkGx zhMzZXl0EBqB*8|#G)}!^<8Ub|M`X>B?@basCF|Z9*o$TOslz0Dba~78#MOU6`Y3v# z&0YaK$BZ4`A$ve@Ul89#+{{`55x+7nj%mOF*o4dn4!o?)&%=6xB*!7f=H$GzA7*;3CM{B}{=Xry?crPcrl1HFRh&*c(-O#+7%d-I6Ih5x5z$9p-r$ zP6aghGP?Xeuw8bRqBfAD=%W&Z`#_&Hnu|&a)19Q%)&IS1sFyjQh?ei@3f1x$^l7>V zp_dBO7$a5gp(PG(J3I)gKn+W{K)99mA+>s{Sgnor)GYMC^K+!cYLg zT8`m%^APeNg#{iSZa*Wr2Aa*AZ6I1wF^oX1)3Hnyq@c}78$qC_i35aBDmlkX&UfPH znoP_oDVwvO{hvM#h*?&L--jXSpuJ;FG4jQ$Bno>mh-Ah%F)fr}93BoCgBl|%d6Y|4 z;o8%vIVzCc>{aI@lxo^(%qRQnwXEik8`;#H4TJ?c>yXR(lPF**Woi3`6SNBr+>6R+ zqx?kZZOEYJPhqAG_ zw^Io@s?)(5sV&nM^Ajff0le7>>xdEJ6h;AZyJqwV=2#o+wA6&=kSk&u zt*mUhGNJDfby)#Udk?68)X#k34YYppj+AN`aE!~DP;T*_=hQua?jg#F*alY!vv%P= zG)xwc5k^#r)&Xb@s^;VzWPM15SV=T$a&QQp>`+|9UC$~L-TLHrJ_rNYP#_{QZd$A} zAg;q>i$$!pMg#*?eGCY(U_b)cz=h(hNfih4GP6JpOt9juC>eH`0wWvf>8Rx1*(oXt z5ac)3_=nzoLr_KZMn#}RhU94JmQVC`nejmpV%V;-{W_nh#hO{gGU z4x}<*zJtAv)G>*7zjRjvCmqm~cwBL!5)QdHe&&bP*-v6PX+xNcnKTtNPRv$}@v6{q z%Jl9=hz~7kn3wF@Lu4jUoJ}QM|72sxZDbI+%o3C%phsu&NiV6|+yn_tg!XUE)?ohR z^7=Si*LgLANyrr6Ogid;z=kd=C#>$fMi@4Qw@cuWgfq(T_#(OL(uA2oKB3H0F%}*T)cBiVw;U)HhEm2aAwU6r_BeWt<~;#< zJ6QaIvm#dkU8SuvU|6sFh3|d^$p`~fzeY;S(AMjeqKY3Je=39U1VS64rgMEz@Mzqx z3gK{an_zIkYlGP0UJe$^6jzXEgiOPH&?KXmtO8f2YCDFOk zq~#8BQ29$+W!={@A2){b!s1ASAPxP5X07UArqMTr%$O~M)ZAkHCO9F16 zf-nannKtcWjpZ%`z#S{;P3log@bjAh0=OcEFW;M@7HwQ!8 zsB7Z~aHSYq!a!(vXvEV(&@Dm`P|DXe{Dy8ug*XP0b&ud>O71r}^b?e$s}+l>Pti4r zp^5%DNs#_CoxtsizE|^lp|Oe@{VGZJ+N7O zkaNd6iLap2PIAdE-L3IQ-(53pxjASH2qv=ayKItoGvM0tX6z*k&`b%`Cia9Ne~;JH zF2kocHj9cuiy1fm_V{xib~)2_VuVv$k$bb0hAEWGwmb_xf8@@uwZ7d8oV_Kjyhm&F zj^vO{ae+m5>_s;fNz$NGYB24C-X?gzN0?PbL;QMTU$DUus zPqapV;BUoeXK%mwC--~{hw3V`qLqP+Np>ml7dR{(+E8&&Q@b6|aX80?!Q&b29?Vvy zSHgqcS$+XIDzr;U32jn z*I30_eG(sSUo*YS;98+N^i8wewQ^~tO`@AX)C`%T-nFidlc8yMkhVuRlOSyaDuBk_ zC>rK^eTS?sTqN1N;6%F zCHsJ0Nda`=YR%=hE{yo;3l5AP`LFG)o|6X%s9DHk06- zl2x;6#;IDhxcDxqdYP^V+jB^nx>@P`lAHpe3%ar&?rn!6J&Q}kCNyL29k9_@PynL7h-h|rxsPXn@y5DNR~mc-kF z3>A%7lFZ#xhOhmNZ;&P*mfiYhUW_=7W1Uk~ct9A;THw`bp$nw}8RO1Nm&m(2o?8bL zna_H?b|t4bKq!W3-MDA4BeN&alPc)fQ%$S$E0M8+3Es;Sz zHRY1Zz@ct-(l37Fj%7=C=&3ZBcsY8QTB0+vntR7J18af4)KZmXj1)}z2$rE}L6x)z zW|Xt;?1=f*JaEbbSo~-Qj}-`?IB?D>U%HV?BdG&-Nkl&`Rvsm16t>gpahS+LIzZ#C zdZ0oCcNoo24nTOSmd)_BNmS3aWxMg*+6${9->i}R(7qeJh>~3(pfQ{h_!6(7B?7cX zV>ksAo+Kl~^5qGwVp=~mP3z+ZjbvkB?;ZM1I3doBRWMI)T!4cj*K=|-s~7Dw*zVD* zk&Ce-Vym~hdSuwq19xL-&vbRKTw(5l=_K(_yRritt^IUjC93M*+*J9LwX~x|)V}!e z{SRo`aoUQ8Hm7Km5lF$LUj`>{ATNbB@g{6o&jgN)7jDgnxJ*<>?D$Q-xz%(+gipnE6UmpFAYwk&j$VqyA1JYH%)0-ZudNq zAb=(tFMRL8;WVP>>){i93$%;$UrDztEsrEJy|K2I8TG}DK4}Rwm7|er?hfm1&*Szi zw+$ulX2$T*pwTQa8@smqSz^nQR^1-w1zh=2H=9n_nldAI98%v)t&%L5-}wW$`LyZs zz+R_quUT1n2QVTY;?!g?Hy#t+3k{35W{pln=hovmY`r(M*KMUOQPO+rf_dkWPdO*n z8}&KW*5UhxT_gdD_I6_(oy^On8P%_Y8`w$x(1GQi$Rxv5aqm8WI`K=$dprL!0!vS4 zxakaasb}huUDDR0^)Zvy&j49KroWMe=G7-lqg$ti>|r(RFt_2RLm$zjl=Mg7JR=+v z(Si@Nqf*)-_RI^ycat;%f;4aoyVwS#NCJG{22L?axv)CPP~DyeZ89>CHyeNbKhz-O z_NwE#)Fg?po=Rb@)k%oW4?T5B%`6W&=1gm7roNffvGXgr1B{$LC-_k@aJoC3;N4J^ zD^keRBnf(0-fcZMbT>)hLAXHqTfu31@~VwW*i|SeIf;Pn{M5myzTTis!8(j=W=*@a zTW5#?jbOJvH?*_lDZ0vSt2(eZLXD*3jH;3CM^b&R?y=9HOAU{O7Ghn^5ugX zNg$nLx0aUXnuurV#$^ediQKe|i}lYM3Rjk?G}*Zc75 zP#O-*Oipo%0JaO(UwhIN3$XD^|Bu6mhQeB}cST+M4()4xB7H!W^c0%Yx9H-aVrAOT zBWHoBK=VI(l;4Eh*Bo0P-(9cX`1L0vvmzeF`^rBb& ze_;(76OCx6=Dvy$xY!)dIYCcEV=XjUiCxtrNl`d!FCgC+G$1a}h|0q1<)v~?O~k)M z)Olv;24PYsqjIfIDz~l4UY@K499Q)M*jouhrSJRdM@~Pk)<@yyL7K;zr^wh@%{%n! z>$CM|gqJ?0ZW}(K))$o2MKVmpQ$iPy3vVtK=Tuqh%`m^HpzJfblI!)x@JX?mUlc_W z$8+`4E3HB{(qXSYBVJHN{*p$@`w~WT^~{Dh=)EBBdO;K~=g+1q`TC3c@-n&vjc8%r zpKrAHrkjW2Sn2go2)bo4CNUpvFZtWe4zQwQG6wRtET>5^ClR`kCJ2mVc50>a)OWlP z9K5hs3~7+a#yEUI>UCO4)`!K=slv@X&wE2!XXRd@)MN1hA=V$K=UyVizBi=j+Z=h( zY%JF4#aDFngj&1c#q>_E=zK+Q+K&mcJ0DYVS&DT?v2s7H3%Zaxpf-@hXwV?qk1Zcq zPBv~Cd^Sx;dQB}^v3^V)dnjE!bL=bSs9(sJ%f9-}VJN}VOZIBjN|CejQiRS=mfNj? zJJ=?{2249r%F&@;*by78$k{Kn>OL1cSMtxsPWDpnlscl{^0;1?PPq|EIt)Jw`-{Vc z*xLMvsAsKOxv}7NzdUT!=AKfKy;qzipMCRL;e2uUtS|?bXGo)1B`$*X1b_)$=>%Cg z8+Q)e&CjW}ODAmitEQK(J$35g?sKc3diRmx#)CMbwUUkQKWPA{i)~k(oOctjiJqUg zR#$@211H_;0nAQApqRD&+N;04Lyz#;cqI{Y;*I5FaZ%g+no?(GOW;E9`Z7ILE5XnE zW%<~J|3!8_PKQ6Kt#~Y2qAvhdq5YQ98QJg3rQ-wS%h9_EL^XDVky0GBOUr)B57WCY$a`e#Be5s#p zwoi{9I@WeqKiIpge)GXNJO98+cK)t;=askJwUn=(Y`azeu5zn)xb29Om;ddo`^BMj zqQ=m9Mma}@XA8SJxLWU&8rD@I&gLW?HX1V*q;Frz zw;D6wh+}y`MB@$(XMw2YBG8fE-xq5O=YSVZ*lb5{8Kk|pHtH_boV41eT<>St`87#wKAY-EofmrXbt8aFFN0} zRtIjd-6!o=wXXg~e@AS7R>|a)5OwkgFr`I}`;(JAE!W3Vmg`zxq6Mm?AQ6(isAua6 zSqvsD?LEbfKeVx?El6ovCL6PeAR`PwOtUGTIb^R z*1Nwve1}>oS0$6No*2j+(o(K>$~B>Cn;jaPwdVxwaGDHsNZ&j`N4%sLkajQW z4kc;(b2QGInhtPij%W`l8)4WPWoKdU1=^3~R?u2QVI57_`lsHVh|SM0w=c&VvT)8V zA4BAtW^{q}C;j8jAxVda1kLD(b`cQ3!hibCggYwY$LdK5wpce^p_eBCPYU|^6I+fr zL(UxRzq4rSAUoEYs&Q9>wNv7P%#IEt1WC^7he(Ef4Xq%y8b^lvV{2`B2q-KGC^PO( z)tIYS4cZ<@5U^qLxo6av%kmx*C(rl4I6OL}n|w|=Gv6Rf*0+xg7q>htaU8t%4R8n@ zqzS6}+3rF|CWw}K+u^HO1H=TymB(%nrQQ)|v?kMK(^Cu^W?sL98aPB#`j^jwfUGYpgEVL=v2_mr6= zMkE<_+7wt>MAA(REo)tR^X#{p-tuHDbw>?qyHOqp|~N6WlwoXG*<^rzM?EC{4m0Pm!$g}|8hA5#`yV{Pa* z%k;>w^2po=_v(@185$oO9ifDY9I<=a&5IjhpmL}956f>CS)MMJ8`63dZX0L|V)&~g zFDJ``%&W}?$hFW0rw9=_At|wM7?Q30#i2c6C-6|zFE}qBdU+7mc7(QmwL$uZ*4Rz; zMltGxbZON)m-y{BX4B+)iM!hl7o58d^4Wp!NoK}Bn6ou>t}m@+dEeVxQ{*IFNgr3% zkUS)-xk*cQ9j>{71$QryBKd@ZMZDRvo15dq-KW@H-KMWMX$Hw2yO&NDMU7^mH*_az zb#nI5>25l-6kK}Pr1^|+&yhMEPIdE9NqRe+4nntYT4C|XkpYV~iX*M8S8 z99};7>lZ<%diLVzf%1p{WBlBpx%{!S#nu<}5B@>%mErd{{?%tb_VM9ONB`X;KQ~-% z{PJghWS!6WcSj~a0WdwnCrp0+$Q|*czt^DSKQ(-d`QxUeUp;x|uk!K!(bt{k(e2`Y z_D1uQ?gsd)Iez!7zdQWSuY>e-_a~@N|Fb8Z`7d}teyvBBCqL<}CO7)C9IJ18@=Xd9 zsg@2B`pYFHgC`VxDfqy~7UrOWLGK{9!&o4_>oc)y$~Cd&1Eoe5qjX{NuihopCss>q zQbJ2c4cVfu6iEt3dl0L0O*_o}tAF@)pg^!nCchZ_dd>UVjo9=#I!)4js3wnv&r5fg zUR4@|(h&I{NQ`Tjux4!k+CO%VedXiM%uv=nD=tE&&I&H6QpM+#H(%FEqudVw^I*!_ z%(W9E|6fCxR{{bnNyiCVc=VSTy_2{Tm+BO`b3D&Z6kT;!eXgFy^!3S$;u%H$@d{lt zS(i_yX}ap?W!MJ2f?x*yQL+RXh5qnuveOga@j(Y=r=IUBb@fe~eR({uXuCSW;WEc= z+)s~rw@r4lEWt)55lH~(5y2aBfr1(kgG1&%Fb$|T78twcaA3G@&8xa!TT<4lbrK~n zaEnwnohr3A(LjSruIU5SB!Hb$GaM#DAC2u0{!!J-!tI*^=SR7Fq^GQcJQba==T7@p zgM`otR(fig+Sz(Y~IHvL^WXz&GIzq(^f?3bfN~{LJ5; zF0@xaM{455f=0MnQ2ll7Xzvbzh823fw@Qyk?vKPFVM8HewW*W3hvcu`ul!zJPH?i? zj?wxA3Evu1t{0=mxs+yR@3OqB?&nj%KD*f0*7fpAS=0o!b#xlFucZr!I$eS6=9;R! zlc0&qre&a??x>rYtG^vy{`JCpMayT^f`W&ANNgTXMIAI7;PvQ(x8|a#)NpqeaVoSuv$*1!VUP%F@S!F5+{tKyn4%@q zE}7a{A>9DL-?j~WB3Et$6$^$1@(p(0c9;y{u1JS{WqaiPB8R3dO;#DrQEmsbBs~#S z2@cm$plykJZPc$8my|U(Y-_HFMsRvx?p&cg!yvTGDYNOQR|iB6m@XJxUO=KrYZCPm zyhF6zvy$WsZ(ZI@ftz@l*4sT1y!t=9K%&*Fd)Y#pY+Wbm+2}P`5;uCYFqcT-`!1XyQ6p;ywQbP!CR5o+9^8R--@vc$~RVP%ba&{_}->SOSY(T@h4K})728?;@@ z1k$g*?#`&TTW;Fjx;U;oo3w{9%r_ka+frgkfW%;c25@tsP;1&H7&!C7svVZ^Iyg?&GDa#DmjMAE~OXLus%E?OB z!eASujL(T3?w?iT9Te3_7G@U>^$oYDHJC>l|NhWL#1pUYS_3+HozO#|haajQ z(7>Gei*03cP7b+lmxu5D{4OTWyGM+R=P{OuZY&*d; zZ9q?{cN|g}*zgGwg&9(~0JxI7bU>`tHLZunrfncRCBL#|t<@#JnV|!;)a#(A&~QRj zhxIc1RzJ3RV<|I|f+@G){ zaCw0$q4^!87D^TsrjR8YT2g{r;JEIa<9*xb=L2YhBWb|)9Rwd(BwJqej z;dlWjU|{g>u!OAckTz~&*6OH#4z`z!u+#&&)nTAi$jTcV9wh!2tmEJ7+)Y*iorG*+ zqmEK!&YokRknf8;8G`DQ@H93JN3?lHB!D9P4XoZe38WHf6?%>Afn0C&I%R=e8!}QD zIEXFOD3LjknUew=8zo^LHyw72$(CQIT(UM^muWkgy#stJ8IcgV0TrB@VWhUoQ& z)P>m{k2|j{- z=yB?GB~40kQsKt{X#{ z)C(^b<>m>kJ-wecTkZMmoXc z+Fe?HMR-x@^^55sY`mhkn>t>Zy&R@(wFILJ9 z{jyBYGRb5*D`+g{kqCfg7tlM_JYTMzpmi|#+Sw-&YO~c@O?KDWqUBtTxu=o!m|CoL zFDzt7hZ_=6t3{c=DuhHJh_3MUn4a*gW*94dxzX^B3>RzSG0=^^s8OQ7u;?g14D*+Y zmJPr$8niFAK*>ldcR_Z)!HB`H;pg;Oz15$5u-ypWH#~OB^xAW$ZkbwpZgpP2D&mvV z2nC`mJLoUzV%rBnLCP3ek_GB;8+FKv2)$oR#Lyqj4qOjt z=okAXnXp^^cm0EJp@G*K;KC29de&;u%GU^9XLd$wu(nRm`>bfy)Lxf&0+>lfiV9>BSb&;lc=K8D`Ltb*dmH@~v3Gf+pU@{y z-qiB7qH($ZVY4 zb?8*pFu{Ol6udLRQQU(hNxB#0%!L+$?q{^+?G@HWhxYt!^-A*4qBDweuo41}wns~3 zY=IGiT*SgL;_Jw8qhZmRGZ#KKaL;Hla5EnFwQrnK14o}dz1_D?o_2kkBb*h}|0n|~ zjS6nVOruQ`4%jk%^4gF5EcuuQdmMLQ+>*kjaYhj0vA94>D|o^5xS;%&T(wAImD_G1 zwm46go`V@;_!rJ9%k_3&>9)K14_DiLax%cjzu=YS#$6VTWP*`Q1Tg(v=m&WX>K`ZO zsASf5$#oNCQbw1>;d&wJGtUXz+H``?3Yy!QZ^R;U4hY{~6Bo!I)XqAsZ&Dz1dk(fn zc}<_u9(^){FfFY!ptmPO3072xk;>Ss*=W}CUrp2WxE_@5RTW!v7y2fI>ra1p^}<8e zncTWkj2;9_Z-WVZ8L=!8u4DoV;P^uTatG7iV9m|8`fvZ)Z=InxCaE)D&lX~&;VYD1 z;YA-;yl68ZNXxZYWMkP~9%>pH(pO3fQk+6Ce)-U6$+S4$!-wEyv76*20h1KjYx%g~9QnPY5H_HQyL!BY z%_c=RA8Rs?=`*WOgHPUV;B;TqIT|K`%!OuG zj<+l{HPncuGoOz_s2BKz$ZlshqPs>u-B0QHlfVDTDe@%_?2(9D9T{4UjoAbMqSAL} zWDC6ikQKK&ACBu}pUy1M*pd`lu=c62&ed@}2?(d66Big#FyXMJmG?a&a>+6z%aca0 zd*P6!A8}@WI?R#kwwS~h6%x+OvqHM;Kma8zkyXB@5xG@k=Yy@w#k*d3cF*~_L+=#7 z+Iukloim?{A1FWie~&kw|7Ryo{O!-ht9x$xpMMPSVe|8oAN-M1!{2)T**%}xduHLC zKn3H(i~ml{;mlkA=0kjD?KQI0pK$p$qUBA^!<{oqA zhPc%$dmd_ByVon?p>X$RpV>S2=P=iLe}K(?fNUxfyVU~f1t3z_>ZlFIjQF*Vg;)rg zhNW+_U5c*+86#+V>^p2MBESkzbd7!Mm$Y_)h;vg&H^4@$)nIyAr;X zz}YDHW7PDHe($#+j{JJA*=xVV%x;8O8@oEFTk87P*O?*s%Lb{#{B_^X^bs22Yw|%? z#sACF^J*mr!nBM?6jlwnnfHb^1_Yqjc_l})h@y=fQkDL14jnWFu;zz}(h13iO;VYG z9QTCPiFZgzEV|?p7PWx9Z#14DHGFc)OAy!@Ok2zJsDsnGke?UtR`cYlKAwVf0Nt=r zUW>*Bj1CMAh0S%S02uBpuNpyby}3uqj_#S3^1=Gp8e9|!36&nYf}!z; zRi8z%D)J`~2u8%x%kta-O8`g%^=_v%kB-{~e z05o$}Ll5DwZNnk-+qNX{f80dN=uh5uJD4BWL#>^3y~b7YG%Vzw6r5`$#|&=j{w9g| zbpRXfPN%5RkcnVL$H1t9tde%adJ!I0Xf{uyzC&v=X2FYGY-ndrhpV;d0}?={!wEv^ zDC`Dk8#xM+Zu!3La5>ZN)%VSkiRF>o+o*$^4^>GcuFIAiC|o2(3>qeKB9G`G)V8Ks zqy5&c7n*x~!<F+J}bCX!U+b8Y*0LnGlU#r%a3 zF;F3P5Z0ze97wIv;m?bJLjIrcdoYdc;P6n}McyV!15$|fC+Ss3a=oYQGH5wo@mb*p z&L;W&<#Bx_w}X}px8z2nM~3lj!(>>~+_|1EL0%x4S2SaVSNBAmC}kapJy2|9qq}@t z75cL&GgWq^R?17F8Vf?P5^V#;a=1J{+K`n#`cL-1{wtDbw&oL!xpBog@*`;gKyh z*|YSC->4&W>}3mzj{u#73Gb1eEwTEXn0z^YH{POfq2}92<&7E$^{Yvo$21C_D6lT= zt4gNcz`pM{il5dw^S^i|{KXaj47_lHUY(=N7W|1#8;A+gv9wOuby3Ijxw;aW?hVIY ziD_|!0>l=5oJe>%()a43OtZ@=ljjM;kz}|oe2@s4x_C)zn^oMj>@GCk^1q=wAr}LB zo2-`U?NRGwO=w)1y@R$ncX|lyLd%9~TxbL|P+pf4b-J6<3MZYYcT@$&-@xG-rr;CG zRK*weB%5M_l^h)8g=SUnBU63ndk??C#Nu~jq{w!F%Xoc7t5{oQw~ku8I=KkJN?y`3 zUT-MV(U8X&h<;j3WH|zD3fd&#q)D8TvlX;$RdS9x*`x21ig)w>1tMWr1LKYEi z<@l`)Cjz!Yh62*a?$$SJR(WJt!u&u6cE@nHc8=$m@>}agHlpc>ue0a6w5;FIZr!G4>sXZfW|h00+Q}jh}$oAjkqlu6ttc z#wHDbw3YnOCNHXQ+!FfNf!@Tlz$?eo4`-{5(9NH^Sg?r49%P zSaE^0$_)9ku`e%*&6Q&P{(Me|SQHD$@E=g5#EXuYp%D}`H8hw7SaF|^_2&J0Q(jc` z28qf$LX;$0Xy}DpFW-?yI{X}+vZ+_}T-_&SoFRXWwh9sLoDR1XgfWB8h-BC6T4ujr z|MDR#B5%PVUtDw7$m$^2ZH2%&$oP1B#io8j`L&t)Gr}&MXhia1Ev;`X91!|UejpBP zz0oMfjZIB5(R+;SMY@w-e;jaSAw8g)Ul7qt+7X4bL7qxZ$3~9!9kHI%bv;Fcm5&nt zd|1hK5b|Q%JtL;P4%7#D|CzQSsKr4IHP8^jXlK@YrnlWomp{F5`%o+zTHD2zoqbN& zh?x0d?HRSzIj#Y5z+#zk!>K3h0ic-`m3=-`pz`l$6`0RZJ*u@Oej z=7Nw{l_2Bpj<~R|Xh54s2fN=;@gf;exavBinrYhtDLt<=ouaHeV$T|!DAMYqo$j!O ztmlp>M*T@Ip@2zw!&-%yHO&UI?V8_r4yI%OP;dYDS{XQQd!{APTyOZZ4f4=M+}Qyb zIeF^B+oXIH)CrDSOiKGA(}aFKj&HNmhGsCcOqPebT|PD(T^YWpfl~8VlJYU}JmUv9 zKN6o3bSyB*Vq>90?-JhTtUm?VvrjfmN6q)25{K>0SA`;RU7To?=NcrK+;Ux?2+Ip2 z@6i|a=fpfB(*4+9Xi5b-(EA(Z^34b1M1VKrM3@P=Wm@}q{p#r9DdCTL_x-J}xD}1; zqGpzGfLlWcDB@?t*6eW|f!LN|mW5NzW=x2?aqy0qe3m0a0A#iH?c(T=7UW)mB^fz# zuTY4;T~%>8LpI!69gyVC0a10X(6WbHBSBOR#)9C1Jgxfh2!Kkj`J;sa8Ci%pp-DY# zPcW=Pk$}o!ky~~}qwgI!*>?Z;n{PA<-m~IG!`@0SMuXEz>HrY4K{ivTzhs|_C0(QU zM*DMB)k|+n0;9A{cz|zTStCHPVS!+s8 z1Gw5i932BVGSNJb>)`2MG8o-tb)W5h^u!bsFrbwiGZ=tS_(`&{>8&eX$wiH}n?{(e zOCwi9vTh@ki1^Dd4#{HLD^MOL6Egh1q8G$Ye5N4te}`;MI;IF~C?5dN1?^cL>ffM~ zHa$`RPWE(YMv+E&Bb;>iiY=slxCOmE>F~vaxX%_H@4m;segjh{@&kixt9Fi&yNLFd zXN%gAVZjLNBg0K7Q2~T7gHZ+W)Fjtvq{JC*oh=Rn+ijWEYa!}pts^W6Ze5t;90Xmg zp{BwbOi#k|Obd^uUV1W;@VOC<^^#xu;EfaPZOLwcH)&sDc?DjBl<5(4mMGUpjV{zZ zmY!W|Z}NH}n+Y^zYqZR8G%O|ZAr_S`yP1;a0`?e+1PKH_n^SK}v5Fz$v%Um)0JlXeHR zlY`f`o}lLqoV!OTx65jJ=5et?1A0Jp%22R92sT_AYb|Gb%H7m8q>R1;9W`bZh<+Q} zIFmb^k+n)=Wru3a4NqoDhvTG;$J8-*Rd(niVK8Kp;F

B#wzss1lm}IUeEJ%fzH+SydEylx%%sQTIcGooc{&JD)g`0X`QRT7J96_ z3ugc4htS3<T>Z5(t#kF)P+I4zYc;KN)wP_~x$0U%Cz}2LJe)RGAwNgbI#)lp zr**DsFVH$ywMS^3t6H94c{*3MD`;aCQahavHT&;6$79VmR-s+FFY}F6Xjk0k>s)ok zZNAP`SKQ|7T>S;N`8rpBIY8@N{be(~+3deInKo7-wNbRrRc$9)=c+cC*10-&oYuKI zhsk`Mt8;5`U2WYIcTf5Csg&edN!&^lMwouzfIuB)JRuCBv; zzRuNkIdr($|2cdA#wz3-{_}LM&fzdm=jtryf1b|O+1<3x)!8Ci=j!YfTIcF)9KFNr z|No=u{^PT%%Lj}g+7}542^S(FB2Gk{IC0L26Xu+VIC0{{ zNsEXkA}$(pA|fKbh3!UR}2dyI0q-=kwjG>&kFwm3&=1za*UhbT$sHI-X9#p;gC! z?!)fYKe=D?-K&4nbH01^PkPRGul_j{yI22A!x`cH*YTX0A6g|}mxA4^9PZ;Q?p4la z>|W(8!|qiMonLXUawg%>DmjPFuWSwHKXnp^Rvk}qzg`KgI-XjE-K$eI*u6ScjNPkK zdDy)=#lF4bUj5@NE)VC=;dS&%Xq9|z{Bif{+5_0Vy0!(oSJ%epcdxEx4_|Swt}Vpw z)wLsVRyhAZ;yIyJ$A83gLaUDdi08Oh|6opyd-ad0*uDA(=dW?E{=t2$aj*W-0q+Xu zzc&7OXq9{|{cGH-?4#Jd%HEFMt8BW}xL4V=*uBaw#i3Pl_E=mQ&VQ2oSQA=xJh>Hz zRvk~S!0y#a`q#KuC#PZe>SR2}y*k+syH_VW<9^}%*#mHBm7L99)woyJ@H(w=uddmP z-K%TXC!&|#t83W*m))ytW?}d0nn`$nIRD>|hEi?d-eB)*uDBYuhW;^ ztH0-C_v-J1uzU4)&iV4ZaQM6#BA(dohV2|^W3WwoO7Ogb)pA863(AB z3Wrw7S$(m4mDL5iSG`YQ_p0|U>|XU=i`}cTh$gd-XRu%yX~)HWG(c9sibvhllg`9)m-xa`BL zSG{Vnd)152^^$wlYZyKe&i^;g|59kx@i_foa<7iFKQFmg$Jzgv+^geLv3qqqp5tB} z?}pv0zaGO&!})vh{CO#~O1}COcCW79f!(XCo3MLz^&IS8UCo}q|SNoVD~Ds1iM$6qp^FH*$2Brrf~ja3vp=G@mLvlua0r%YWM2c zKMy+ZtKF-=#Allj&VLop$?DK5`Ks;My}D`@cCW5tPpaLktEOZ3 z>Zr3j zaX~o$(M344>UgvQyH`giV)yFk5bRzZ?TOv1qeyR>|GZV)v>$_v;1ss(TA|uevY8?p60H>|S**#GzGk zcY3~17S8{tRXDWj_$OXRFN9Vd|HSL)1^4Pt^* z{M~!u&?>n*`}Tr+l@Xucy~<$Us@$uL#n`>dpnsKnmBAUR+^dZKcxO2Oku^B9>Uf0n zSGiY5reXK$2>q+vt0O$es@$t1>`#?@^~Xclz4~K(p4s928C`H_m3+l9>|R~54To0A zSFrz8?$s4@v3qp|&8yt2D~93FD*1{YxNkWBALHu{tvdcOzTVKP;~ytr_v()Wv3vE$ zu8HV*_v-Ko>|XKTT8y4|uMRihePRCLDr~F6oacF49Ug&gbvO&#>Tm~at3MpZw)z7* z_PnkBumo3!`G1&=L#vK|D8TO3ABJQ1>JRaJ_v#PH*u6T`iruS2Td;d|r~wZO^AFMU zd0QPS!nQgz3ft;XUu>&G+^^?t^?UlvvDNQ)U|aouB|aSH|9(EU)$dEOt$sfa+v@l9 zpJS`vcf+%N$$% zj@Qc^Tm6pxoHH!U|J_n-tKU^(Tm5bdw$<-OU|anz8{6u4?Ef5F9XOJRp0m|~&G>kj ze}H@OoUIO2VOt$2#I`yx0^9097Pi%a4%k+|J&0}fTh9O7k}&_b?9y|#`t2-itKUw- zw)*W5Y^&e)z_!|d7Taq7UTmxV^nY$tn7^O?&)I4}{hzbde)>OWtNrnOTkWU+bGF(~ z|L1J=8~Q(ItKV!$M3rq}{%`1CX{+DRztUE}p?{^VenX#1Tm6RqmA3i~{VQ#?kN%am z+P4`uhWYy%v90!1V_WSj#DX3#Ph(r{-HqFY`FqzTqGxTjw+`EC?@Vl~y_2x5_726i z+M9`OwKsun^{f4Ob(sIFjo4Pds>ina)f{ZAUln3o{c0q()vt1}t$vk^ZMEkxo*d@y z;a)szt33_aR(q~Vq5*71>5Qe z_1ISYUTrknRzJwcMPdFA24GwLpfk4BGWL14t(L_zZN=}UMzd|TtPI;~8PD_Cwpx~n zyZvu|@}*mGXq9|v0}ic{_y<;?OEN{{6IPLaXHX_tTyUt&-#4 zPkUx_IREao*jBq2Vq5LzY|q$g_jqip-2<_$cBf%m{o)k1)h~AA>0y5TUTmxSW^Aka zI&7=@3T&(Td~B=wTx_fQ_;cCn4Zf~DlNsj!Vl57>I{soIcCUU>hTW@Qj88m&}XI`ZEtiDvBx^WTVVt2b6-TfI?>ZS_Vew$&SBv8~?dk8Sk^yD`gF zOIz`*Fn`wyY^z;W*jBqHV_WT_!z^3v>WXdkbMEOZTm77SI?Gl+UxNFD`TQPYG|N^? z?HEUyb*M`9EjQ)3*9KbDp-<&*M3^`guIZ zRyz-1TkUMdw%S>XZMCxq&kgfmpNDPrdLgzIzn2$1ZL8PQv8|SHAD^}rzc&{>ZL1~A zu&tI<;DKTO&f(ZrJ9}VT{fy`N)3*BAPHd~6alf9n)z7LD(M((YjMv~yTm6h3n|UbA z=Xd3znYLQe7u#wH&)b={;&<7inYMauJ+{?r3$d+UE5^2ZZ5XZ%^MBR_+iC}UHPco* zxbHJU` zezz-{X)AtjD|*USi&OBiF#o6Q)l;_m=~`^7pU%g&`e_li)la!!Puc3H+^?r>wVks) zWvlJn_oo(z`L7eVc4tGYATR(0&dQ+Z+j_C{>0 z?L3p8veov9*jC#IVq0zJem!NYpR{6I{iFrk>L+!HsN!^(U&p>x*s6|wtFToa&xZ-z|zNZ1uf(enXi56Ry3&RzJzZw)#mXw$-*aY^!ZtdxfpG zHDOzAn~iO?Z9E)uMR5tro@eZMA3?wiUm36ICRI z`P+C+J!z|L9k8u_ydT@@$L!UUw)$}mw$+adv8{eQ7~AT{sd!bGzbFUWYEcrl)pz$| zTYYymw$*p5v8}#afNk|%cHl`{@p~)Llas>yt=yw0ZMAhPw$;`KY^$x6*j8I7VOwp@ z#kShYeSgwcKZ<8|3iB5p#jTcUDXEnI?a#qXy?<+fVLy(_mBzhe@W+lt>GiOOyD zorAbJ%>NN*F1OW>ICHtJe#Du}ZS^D0TyCo$aprPc{U{CFYRhqKt1a=&sbT(iHeg$Q zrw-fdJ7w5b{0>M|ZmaLG59PMv_c)?*TP=vsY^w#$I4#WI5}(;tTjDd@Y71w6!d6>2 z^Aon(!kM42)elc#Tm5hww$%@r`NXC$f5Ad*s|BUlRtrXBTP?`Jwp!2u+v?k#`3YNn zn=?OQt8drh(lGyrocRe`{V+bWt$rAv*;YS{&upvB@tJM4c{{e%W}ahD*lKe;vuBw9 z?GkLOZ|7lKeLD-=>f1?)sLWQi`?0NRIdhq^?4Jv)#rTODYMn*@ywZFKEIC;mD#E`6Wfa4DTvB!^{u_wR{UN- zRA#Gh#b>tFx8gI~>RZEbPMH6Bd}dpH9-rA(o8mLuYEyh>TW#XZGi&-BwwhmqZ8e`W&#={e&OF0b^V4xvn7@hV#td71 zb`0Ca+3KR-g67w)%`6o-rWI=jZCt3|qZIhZ(kdg?*c0t5+(q ztzO~l<_ufCGB6QMx7911u&rti;)7v+%K>bwmS$|LmIc^WEhX4iEhDk5S~9V%KBet+ zTYb6{&kyr!)?-`MEX1~|nTBmulZS0p(+k^*p94qJZN<-cqv^JKnH`uuB+UPG6}Hu< zHP}|47Gqm|8qc@Yr`gz6pVE1{tv1r+aa(QNfRBdxFVDrcdbtqW>gD0sRxi`xaa+Bd zz_#M&uF>PRnzs(yY96nP$LqrUjZ3kuHdbO=ZJdH_wQ&Tt)ke<$xUDv(U|W6Cif#4D zRy;DypEn)bY99OcxUJ?5!nT^nK0j`&m(E~Y@w3qAaa+B_eSF+jFV!WY(og`eZD&)h7e6tv*S^w%TwC+iJsZye!OrX(qPSOOvpzUK)yR^%DI{ zZS_(+Y^&u&t`=@z^kb1NWuWRvY5$vekz8^V(`d{CRD)A^yC!+7N$UTWv_f zw)*%WPK5c@a}v>GwyI`-9Od5!NaPsg@; zJ`eW@^FQP{^Qf&p9F1-DVIOR(4^t9RiLKTh!M0jQ=Mr13tH-ulHw$kI^PkVgw&LeP zQHibQ9KyDm(}Hcq&v2p=Tg{2**ovRSL?yPG!|SD_BFtYm8QW^zFl?)Jy|As;#h=$! zAH?Uk)dyR#tv+bNw)&tNXNUQ7x?)>BcM99;xjooc&vEZcZ1vpYMD&QQp5y$F*y=g% z<0H0uE*I|(^FJuYw)%knkJ##ie%MwYq+(m~@3}^g*lI2N`G~F7uEn-myAaO_^PkJW zwyHdfZB=;y+p3cOkJzem8Makr6}DC76l^PgMiD*IKg?fSj%~FzAKPl}U~H?kJ+Q6T zCa|sEKbVM$ZS_89D7Mx6_4q)T&(AudVp~;mAB%1EEcdb4R?l)Di*5BRuhU{%JzIlq z#m^R^Vp~0%hik(8_vc_+yL+iEuVvDj9#dHp_YtJ!05YnZ=gKDO1GQf#X=j!?t?nG`7_<@&DFVyq6z6Y^!IMU|T&i z6Wi*Ud^{q|e{TV{)q5q_R`1dOVOzbIiEYKd6&gKktJS-)tya_gVOysJZUwg0yWHQRF=77GTyK%Bp5}UsZ1waiY^$evUKQEuXr+e5Z`XC1cHJ9XGr@6i7tTfLKylf(R{HYK8|wtA`o+lu#bqp7yy{n}`%t)5~} zrrPSMzSvez@!XhdtBO{K&ewQ*E`9>z!(=mGOCOwK6`BtyZ%0 zQ*E`f5Kjs7E4E=BnEy7{`=G7f=6WBr)!RHLAGFnq_|MyF#XfAS z6&tXvRxH7`S}_Y}g!$$1pSM+c{O4^|zBCaP+N!(~+p3(`Z=tQqM_^l(_rkW~J;JDP zYnZ=+=TD)nRt&?oS`q(wTdnATZS@wt z2e7T0==p%Hn(DBvn#%C5Fu#oJeZW>_oc{q^l`X@zDx?1cwko6N1GXv~f^AjCK0IKn z8SMW9m0^Ap`}2UUn)+i~HFd$ZdXxQsz*cYadVIiEZ_@k$TfJF@ZS`gW?ic3I;Pvu= zt!D80eZW>T=3!gSD8jayF)|TNvDJ($Y^xawY^&*e@%}LXOh0b4$ZPmCC+p2LswpC*_wpHUCY^%mu z*jA0@*jA0Dc)0V6@wrxo_*^UY{Qh&T^6|M=?DPHST8+l%TCrCJ=UNTJC!9YRpKCP` zpKH|*pKFza&$a4>&$a4-&$Z(9RdB9VDqiaRPWW7_4)|Ov_PM}T%iFN6mY>A7T7C@M zYWWdttK|pr=rDizK5VPyyRohK_ZOoATP@#;ZMA$8w$<_t*jCHeVOuRYk(S1#xe+9PH@&;_Hz!ChijEKeh|o>an$n=w4erwg}tmu?lP}-gk`dwH5C#M)%t4u?%dh zX}n(U-QfA-kK1Z_8a}sIUGTZRO2Oy$iaos7Rt;ydtr|{aTQ$(<-r_KS+CFTnX&bPu zrm>&*+G-m6cCW3baewc%)iiqEYpZF!u&t&g;q)-S;V8CM!(nWzh69OclC2u{Vp}!P zbCRtZwqsj0Y{9l_Xu(^;{6`OATRplN+v?FqY^z7Bv8^60#txC3HTb0B!ZBG|hjTQyW+TQ$tawrXHM@3B?GbZo1J5^Sr6srcMp z72w%nKJS@D_t=W}#-e*{^+-Lo)gzVIR*w{5TRk!i+lu$4qI+yr%>LigH_R_)H}1*S z&Dhsq@m!qd$H!y46|;x;q=b(@%%0!VPH#*^6VK`zd|KyYdp=CViHH4o5)%) zoMEDSShNst_v5A5&PD9i#1=oEjo0gV=BnU_4q}@>#NJL^=Eu436PM`toQrfkzgBa- z6TKG?@w}Q?<;PQTMetOved2Vz8<*(#{8KgiInjGGwGvPCt#ofLZ3S00gKi+_k z>uTJpi|`?xhxh0l>}#Yj1#b=?e_#*ZsNw|cQ-i)_up2PW@bR}M=3-M~5hgWFsMSg=$#Y=opzjTB~{8-L)z>{{(K*JMc2S5--vZY z^YmC;rFoX#HCw0QieRoax@)@LjZ5?zT%Z@?iJI5uUE?+V?;4{A<2>C157!AiBzOX^ z&ASF^zW2DRk6w(k^h}(t+2Omo>TbAm@STTovX0N0q`8k1&ge1tl+M7%gU27ihcx@i znG*5OI>#@?do*X5uv1UK+cXU)Y}VYP2^)j&XvNJsp1D#l!;P99m{6~a@nRjHbD@ss z&(~bX$DYKU^d8(nug3|^y|}YY&%r14RD4YH+PU+H z?t>5NPI!0lZAbAAy$x^Db$El0XRgx&@oL=;uLvHq6F2DiY)f@9uG3uaoi(~Eo*R7Y zaa^h6GtAWVyt7Ql*EmgczwRv3xp<0>XA&sh)zLJ(bF8M}ouf1j?;N4ya}L$<{9GMh z?*Ps7?ascs7tYl2wPyt1as;R8`21b;Dx9Jh;C8w^5sg2q$K%s_06wa@mhp#!N1et8 z^gg^-Z^XOwGQ3^S#anbCZqdW>TAhto=}x#Q_?z5|@yqlsyhN|Vi}Ye#t7qbQdLo{! z2jdEzflGq(cn*x8s^ggjx(ZL!fopE#U2s+%cM)SJ6W2Ih$8+9$N*VFJqJqFL${c*MKisuC1#Iy8{ zS$YpH*Uh+8FT%yT3{Tb*aK7fXdB-?S|2swp59j;0J4WgQc$jX%gEgJZwKcrkn6V&3=yCrwj0I%^Ak+ z(CK(<@QpMaw@Gu4#%<6m@H!pOT%ikbgJuWDE!BN-osQ4BAb4mzzeaPt{oiGPfbtz8P<8hMCO+;hQ=x+E_@Ssz;RdX$459wySUoXLXbS2)Y3-LCchd1kN zyis?+Yl5$D#Vhr8+^D%1W9#)oyjWM@g?bX6uZQ4j-2=}G9(Wd)>;1S`^BfpksN7wA-66a1xcv3+h*!IT&8E@X*wSl=|OmsPRA31 z`|;Ymjd1bzrTyrC+bGTVZ?}!m^?0bBgL5^n&D#cOzMr`*Tld77I)T%IzsL^X)k_O~<9Z#RZE^55$MHhV_1;>o7vVX2I-aHDGn8w3-dd{TYb*}V;(py)s5jurI-WUB z)9}{OnufQI)N#XMIzH!M9nT*a+&jMBewydotvR|8_t5dRchki(MQHbr-xVxW_TPMQ_I~dKF%;Yw=o5hg()@UU#=N=|OmzPQy!r zyPw3hdKaFj*WxO@2+!6$OK+*r6Y+FC1efRxJT*9@4Nuhj@OaH@^OiB1{^Ex4;@hi~buC*fq>2PXxmbIws`H1~1TDZLOM z*9Ev$_r?1)`#EY)@a2c`PR$ucZPQEeW=+FU8#VW6RI~1f*XVd=V{o@tT(8-IQH%9z zyimvIoUh~g)tc)aHAfG|vvfKx4ZbYC_F}ys7wY)@lQplkQTe(WkJBZ1v>t^=>Kr^+ z$Ja72IPDnjr+4BU&AyH5rR#7HJqvf!?AxeRor^o@9ypeDkE%Z+b$T^kpt;^} z&ei$2QV+y4b$o`h;8c2kbDEB?u}E{jzBxtD#*=hBbF8M}HwhPiFPcijZ;sG$!=b?! z$LGw|@%#ZgzTUo?=i4{4brH_c@wKPvzPO8y&z}<9sevw8zQtrz1Hx&j~8 zTua^oJp}L7nRu7(fVT%<)QY$0?YKp+!0UB2UZqQLlOBtgY3@bd5}l401$RD+YxO}q zPq*MIU5_htC7!Me@KnunAg>_!!g%IHy$z4ob$E=Pit}`Qw&6Mn4+-uRUvGcig!||! zoTcM4^we?BbRAz~*We4dUwNJN4xFr+dGi@f!<$d(VtibW#;uxby!nu3A8y_soWj?m zoA>CQc&A>4H|zO$qb|kGdK_M(>2UK(&Fk*w#^CeYaJ}Ax7wffnzFvr{bvd4+^YJXr zv-IY2-2<2E1TGFv-j56QdYrG9;BlJQ=FOuu{cj$r`Tp(ZVLA&B*2#Eaa7SL7H}}(g zKXY?0y$tuzb8xC=hi~qrd*Tkk9gg9I=A0wjH1~1jNj(7{)4lMK;P%JyKFxlP+^rk& z4$T=xZq<|VCQZYU8#MQ5 zo&zH$>v(3quEFE-pk^O#+Nb$?bklCV0PoPHc#|HBH|PO) zole86ga1K?n^tIEcQ-ZY^?0eS!*#kG*XRj&uFl1kIs?xPKFPE6rZRm1Ptz^9NH4`x z^ej9v5H?#IyB8T%iZz5*?p& zYVffWxIoit_(Z)LkJq($j4s7_n*AR>Txa1yItlj={>wq!N4MZCU5|U}N}R3>a92GT zch>Cu@TB0QrxMZE&*xH;gm*GQtJl?PS<2|}F-WL34?%mfn>&>`X^KAM0 z8l8_+}-5 zLi6kz)}SZhrFsai(>?Hl;6rC|joy#v>SkQ2*~4LFntL~FnjVd(=x%sY@b3@e33>${ ztJ&dUqx4WbLdVxQH2C07oU7|_UmbtmY@LTQH9IpbBlvf5|1=%X>7tu(ik^+zXG3C-8O8;=Gb;I(k$VZ99>(9FDXubzu{=>oi6^V+|$MbqcT^})YAh1Y8K8!Pl8JY91yZYP1_rX=t+2xjyv?%X}C}DzT>#3j@zc|M%-C*-)~IT@th>x zArTEd6a4EP_>^X6h91{baI5Zv4+ZZ%iT7we@6erk8Q!L6;?0^qLpSPpPP1-@*98A+ zFJ7rv;d(s}FV@9)p&o_j>v(3h?u6$A?>UNRX`bOj%k@%RtmAVQ>WO%=rq$4Voq@*% z|MCnTt@q)PdMzHN*}b6ybusRzN8udZ2lvvQaF5{KM{zg34X5e`+)1-1Llb&(BKlgJ z9*R%up7@wf;3L7mIDil8jd-74jCbpDyj64WzP3sC!|Q@~@vQjTYRx`>ZH2DE4SE7z zs(Gz_tuFZIT;tak=ry=T&%~8F{=74FA6%x{nXgR?-bw$j73p}+6g>}5(mYSTHbD=< zqjXn1BKT(~F+t<+34gW==jwRo0KEYB)zfjd9*r|~Hcr#=IlBb!ID}Jl+^U^kmWYO& z)pPJ^Jq4f8L-0}E4Ic>p=}Ej-@4~zE8oXUEz+3cm+@i}? z#rU|cz^$6s!VQP?K)hcw^M*aaKRSVT>TP(N=CyyrMopg^n)PJ7Mzbe3tkfB}F?b8F z(;Mpb9=urdwep6AnrpwIT5}(7n4?GFS(^KJL%B}ErNKYsUffWuH{e3O2v6304Z2~R z9)m|~cJGFfx)UB2yqUH)4AxulKpl7Jr)T3FosWBHUXM3;?=}y^DSkX|p3pgoXt4Kd za}RvfkEh~;nrj^FefgaGGT3|Z`F`9I{>OugAW2KCi)b{u%aR@O)i> zeT{schb#PeE}o|2bK3LsbnNTm^AtQb{FzN{*oK>0@en`08xPPeI9s#xgKf2mo`Y?* ziTgF!R-3A^tv1a}ME_^2O(ob?nO_=ltCl)!s}|0admzkj;XJvvYT-P&wrb(E zmTRk){@7M6>}Rg6T2ipBK0SeL^(p7ctqJo#$4e{`&Z7d>&hU8lT5j8@YG6w%T|Q+iK%>Y^#mU*j5|s6VX>~wUP6D zwKdG&$a%hMtBsuJtG3!W8ry1PF1FRiENrWdsn}MZv|(F)!g;>BD9rza=jvB&^~qXn zt523&-47Nw%TwO+iJrRY^x1Bv8^_&$F|zg zfNiybXYyBVwV^Z-4LTX-ZtDwV@lf)rJn(Rv#b7w)&X; z8B`zUf6ViCkgYzZ&mdcUybRmw<63O1k7r|BeavnTvem~Eu&q8GhQ~Oc?;!`->SK0k zkgY!E`9H{3>$!J>Y_*ut53 zy}I63>-l zG#}gQqY9iK=6^I5+v=n7*j690Z`a%EqyE@dAN9nx`lvIuRr6_Vt7i89`s6Ubd3z$_ zca;D4T5fK}wrb{V18vpJ{T*nl=2_TQ%|+N&&112xnsf15XJ%nrHPdaNtv=+nFwj;X zwqjd-$UPlss}EbStv=+Q4z$&W@p-0%`5(q-u+@j`)j(T)n2v3=?gX~gx~*}$s z*3o>Rt=7fYk{af(i?792>oOD3S8TN|1>5Qa=6}UjAMC}p`hfF)#a171{;$~T1J3`I zjbZ)=eBQ6v>VpDos}J(9tv=|FZS_Gqw$%qo*j8&>v8~qb#3f<=+GcF4we{FmYpb!X z)|O&ht{W@%`_baij z-Y>$odVeh5>ik@6tM@apt=><;wpw!n+iJ~TY^yab*j8(ru&vhA;_@(mO$D~qngVRA zHF?-pYx-kbtx3nWT9brr^t;wt6QC+iGPiw$;j=I5*5+*^F(qvL4%N zWi__d%2I5rmHF6KD~BbbFWG8k4z|_GRD2}Nf4dFa>g|KrR&Q^`wu=89$S>LI?K*6$ zw=1!&-Y&wndV4Hh==@x4tG6?;t=>+-wpwul+iJyLY^xP5*j6i=u&q|q;^ATbium)| zD*pEszhtWw>DX3p#q(|T)>dq*x9YL2-l|AM{cQCX=kIqS%zumX_p{YooS*;y#{a%n zzQy_b*{X^8{cP35`TNM1>0(Q6SmdzT09}lUtWQ2wY&h^YIz>E)$;z>R?E||t(GTYTQ#&|TQ%&&9m4#E z=0w!jRt@#oRt?qIRt=@tRt@>sRt>|jtr~K$tr}ACnlS$deBQpc`auh})eq{ht$q;C zx782wu&sWOiEXv44clrN=kHq(<}ZuSZ>weT`E9iiY*1(HCs>{jJzm-(QVw_5C_*tM6B0TYbL>+v@vc@doGTVq1Mb z6Wi+hDcDx^C$O#R_hMVsw_sb0$mG&Dd6N)MHz{QJskT*y@c^Y^yi&v8~=1hHdpm4z|@Bsd!76zqAe8 zYUx32tEF49t(LCFwpv<;ZMC!#+iGbMw$;+HxXk&v*j7t3v8|S-U|YR@0^92Kz1UW- zw_sbn-h^%SdM)l1=D%KnZS{Hqw$h*MNtJjmTt(LT6TP@j%cZT^( znz5~x)MHyMsm8WiQi^T0Bp=&q$uMlIB{|quOH%RdF#okSY^&D}Vq3ko72E2y)!0_A z)nQw`R*7x(S`oI@Yh!U==jUQuy_Sh>^;!zH)#4M_R*Uy0q8wW-Zo#%%+=OklxEAjV z^A}fOTP-fYwpyHrZMC>Rw$_y;_fL^=dV?)vKl0 zRTQb(M+eT3gi>VO!OW z#fP1ri)~exiEUMvf^GG^6WCVY+ly`Wy%ub%?=@jteXkZT2=iZAfo=5)?{8ddt5+st zTfGvW!B(&Ee$=(Ls^R^LYi(7t3EQfMYrJ+?nE$3iDs)eYR{{ zy_|+^HIMhxvTZeQE4I}<-Z#s()jZxy$+p$JaoAS#n14-MnE%~&*j5YoV_PlceWYt_ zwUB+d##RftU)R`bA@}PVTP^H?ZS|c~xG~J17tgoVOYwYLy%f*4)l2bwTfG#|x7ADW zd|SPgfo)ZN0*?>#zq13|>O1W4HMaWB9BixaOv1MM4)^OCTYV=L+iF28w$%b&7uU24 z^Q*TdqAXigH(*;;&&IZ@&d0W@9)N9C-5J~J#Y5OuFE-=VVg7=}*j5Y5u&oyGK4F%v z7I43^Y_))%S+@E%J+o}}ZFV)wR^P6{lf(QM7hqexSb}Z!;z(?(7c;S~=AOZ}n!6j@ zYVHbbtGSi9bC~~a-apK;)whQwqTaUpHutNyt!mka-nOdce)YChE%&Rpt!kOs+g7#o z?7cqBpF0uTYVJU6tGQjUtzO{X^|sXuo3O23Sb}Z!0?&cowt68C7lrw?{jsfTQ?RYR zbr9R?TimbSw)z&k+S^v&D#Et<)=+G#Z>8aGVg3u5*j80-*j80L6HzZ)RW)H-RneiB zt*YqI%T`r=v8}3-@a8ao{xNK;`8;QO*=j!5-pf|=%doBHkH)r|pM`Dp3irL2tzL=G zHa*OLelNDw^Q*C~p0CEXdcFYL>iJx3tLIa(t>zrYwwlw7GsFBjwb)j3=-JCwbB1AC z%}Gy0SKI2j6WCVIZN;{Fj_2ytwt9~1y?RHO{~XtQwXL4xdat%sD9KH9bcoZX2;iPtJz#*rmddg8Z&M6%r0!JXPWTd#Q)xBc%~BD z>Y03Ot7o{zOj|v}HD=ms7T1_*t65xQrmbep$F`bPi03B$H-FX;Y^zym*j7(-jhVK3 znrqCo)ze&Krmddl8Z&M6^eAkrr!(=u#Q)~cJdJHNb33-x%w^bCGb^yIX7XIkwAD;n zU1h7M+OVyjV$M~E691e36mzb!)l=ysK@ zu8+@YD}FW=U1h85S7BRSUyW^b{p3W{(^l6H#K*$?>r=6<26E1xwi>t<+iD=!-qThC z*|(my8aN5tYG6FmRs%cZ#bJI$KDJdwF1A%gI=0o5ZP->%?!~rxvKdbfbDpfjwtBJx z=Y@}dB|h^|y&c=?D=V?B_<2aw(^mZ4BkF0ZuZ+gF`U>~1r>(xyArW19+RvMhZS`a> zw$+pA*jD9j*jD9xv8~FRv8~D%VOy2+y123-%pY(V+iJjOY^wn@ztUC%s<5pF6k=QP zbB5?jTMb}0uACfZ^0R{I%5lNv?D>_pD(4!n9O}pUKIBSUJ+U9#>WOvOR!`JoTRl;P zZS}-3oaE=)lZblQ>dWji|2Dz@UUy%fhi&y`&fLRRUml8W^<^6NuvP!#*jD{F<5gkK z6B*c6Wv8&M%64E|l{H~omCeDnDq}x;*s6^E>|v|2&UjLo-+w8#RsRZXtN!D#t@`)H zw&K0>sE4h-bP(I>OLXgDt1s2yPGSCxBiL3mS`txrTg_OEZ8d{^=x(bS+^_Don!)|* zZmStd*jCfovF^=b{+Fg=TYZW9(%n|PpB;6#RX@6Qw^cv7b+=VNx^=fzzuDMU{l?>| zVgB?r*jCfIuI{#)9)Dh2O^-jXt)|DH*H(|mpVwB8Z^yQJyaA_$`Mk#*b+=W&6l|+6 z9!f+Rw))}*Y^yKwI?Axs7fZ3NzBm%w>We+_rZE3;t}DYd{JUt4H&(tsd=JZ!6+9(X{QUlL!Jtx8I;t>XVS zM7pg?vaqd6xTop1dSrhhy4+U$w@jnUZS@EjwtAQ|ceB;Q3$d*po`!Apa6Gdv%)h1y+v=JsY%AVtiMrY9 znjzR$yk8P^vsG4nW?N;&XSP*V10EUXKOCRgRu9K#wpCGlW?L1-XSP*Qd}dn}m10{J z@f_=Bt0HDzb}G!zs>HU+nuKkYm5Xham4U9j;s@GO*t6uS$ZPhD2v#t1hd30GK%%94c(`+@BGpE^VDrZi!)l|-$W~-^3In7p6 zbFi(Z^8H?#tsabLt_<^g^~bj2@9t5Wt*&mxw&L&KQJSr;uE)0G@6b`2t@!(KlxC}| z`{IdV{)0R>(roo$Ewtp;ZAI;LUukaCCtA%8QUuJU?RHI zR{Y&Jy3|&gw7S$*nY@lJwN+*wwpAvd_flJ3bqcQw^9%WY@={wBPQtb-9E5FEn2K%n zz)@_g2k3UGtsYo{ZS_DIE)4Ve`)G8jt*+v_F16KF@#nSGRq^Mw)m8E5wbfPe=e1S* z@0eX`tDYNh*D(KqaoAQ5^vAY(fbTcD+G+~>+0|B4wqaXM;XGY!HKhvMYDxia3G?}T zUewiAJu9%SdQQN$>NybGs%KYht1C}nTU{A{UR&{Zqp0h&Fn`K$Y^y0**j7`x?_F(m ze=D}t{qY=I-Mi!yRtNTlEk1(IVV?|wU#owi(uC}^z6t>lseG}0owz`sTm)NQY z=fA{O{GBGc#8y4{yq9bX^Y0&nZFN8WFR|7AbhyM;1?<};wkp_zZB@YQ{SsRh)L~l{ z(D{;zFu%uqY^xrn*jD_VCc4B{{M{wG#8&(rCA!2`-P^FOy2qc_R^8X)>@dGzBDPh* z5NxXgUN4u}s(|O=CAPZnP$EjT)qU)Ls;%zho~GLBzAC&s%Z*; z)ubNSR`;C7wz_90w$(i=u&wT4&%4;_o=MnN_r&KJ5$0b$4cm(EPopljy1W;*RkyR) zR($^$b+J{q)!0_u=3-m%JzaFs$uR#Oo--HOYT^lOtBE_XttRrky2w@&=V4n-r1M3# zn#c}cWUGmpxIWD9HW=Hg8+&+>tuCX_MYg(ZH@4MfYp|^@t1BFw+L3$|50{X5$#e;2k@{#tCS{6*MS z`8*Fh+bTaF+bTa7=ZE=e{jjalQn9TrJ&A2~Dg8U!itlTp&bH$Fm#DL?E-lBlx^z5F z4)gOf648aWx{E!$&{lWxI=#?VceP+!-L(wc>Mr*GLR;Nch;4Nj_xHlJVg99qu&pjl z$F}OqbL>J}b={9`)s@%jg|_Nik8Ra;Hnvq)_W!~uVg6m*-wSPZ7x(us)31e|;nBR3MwpCYN7oBX?mA&m`t4rA1PPV#)z3pVH zOW4~^wz_04wiRE)qfQ&c{0RfFttO;lTitmY+v?7}*j9J0$F{n23AWXpv#_o1q)(@k zFrV)QqE5EDBnR8-l1|uGsmHLbQg>imrLM-d;%jfz$yTW)I3vuzll$ArR(GaiTaBmx z1-2T$8QW_7Qf#a771&neX?}sN#&gaKwubq9eU2`$RVw{2u+_!v&jq&P>t}RtFf&vo{VjE@jzT2=8xw-USO*`_G4S!u@2knj#_N1JBqQb?qJU^u+<$su&u_O z!dYSd#a*zi_?i}7V5=^hu&uf*Nkl2O>Qatv#n+Q4#a4W+h*E5I(OJAJ%pb?Kr`T%T zT5PLv3$d-nm0??r8;@-@ZXmYRxUSe%x1Ye3Vg5xlNwL*M8?db|iqCATi)LY4T{H>X z>Y^doRu}QwPq9_!Q@CH4e>=~~6kFZC7TfCfMc7uivnMIGx_x3II^R~eGyi;B-QEM+ zYV29OKg{pE2ivN1GqzRd#n@JzXJK1)W>3zyRp(*YR-JodTk*V%&Yu_Nk3E2GHMRxY zYAnym^KCV@3fpSzRBWrUdDvEC+4=KrH8ut3hWQu9^KHfRH9Fr`7sm5#bzwZ;Ru{(e zZFM2@lWoOwE=so5g&pvbF#k4Qr^&Xujpt;tt#0FWlx(Zp*#Bf(-8LQD>Na*M*;co) zOUbsnEe$UW^E(~Ew(7JM+luF0lx!=WXHl}PI!(j2>csvh+p1GPY^zS4@$fKz%xP?^ zF?+GC`0orv$+jA^1lwxNY;3DB1=v<&xYr$RH6|0E2=gyEj%{_pPHd|S)?iy*un^md z=StMkRy;qVj<&jB5Vq9?^y#?N^Yi@aXscTfV_V(21>5S@CTy!)=V4pj%5%7*t!^ES zZFOs3JUYxzp-)F!rO>CNty1XI(N-z+>1eAI`gF8a3Vk}-DrG3PRZ5RU)Zt8+e`_af ztI@64R--w82V0G9z_uDa2is~i^E=pT^bl;T(doD;%s>AOw$=HZzk{vLUx#gVKK(n` z>U{RIgRRbIe>&Le{65%L=d=GECWQI7(5Hi~ZrP1(bqn{mgRO31|2x>~7WT7)t!|-t z2V32egKc$7JikMjpL{40wYODr3$|7AQf#Z_S=d&|6S1w>>!`i0lDlGCbv%aGg!vt} zV_S7xiEY)f2HT2#iQ3zWy@=Y|s$*YltBxtyRvp;G_61>n2kv8gTX9dK_O_yZ)ZSJ! zj@sL*!x(I<4*jvMI&{IdYJUuO3G>_Uz_x0?IuW(ARr>|lR_)8MtvE~6&Q^TRsGY6a zcf+=7cM5L^^V{vgwrbamZPjiuwpBa&x3g8d$=FuyhGAQ^>xpd@|68){io^W#4q#iI z$Ng<*tMhn1x3krGRoGVNO~tl4FAv-5yliZ%^Vpwu>0y4-5p1iZt=LvcD-zLpwo0nO zwn}0@&$Cq$`+uITlKNp=C3VJI!u*JPah|QB?bue)N^GmB2HPqs!M2Jx`N(Eh*7PYSKt|Cjzrp;i0;(x1NJ&(J?9v}*s~4tQty_*wcVg;wp) z(myG*YJZmgNugEyv-C*{t=gZZe^O}G{w)2ILaX*?>7Nu@wLjY#&kpnda~y|O?fWUDg;*j8tTVq2Z*f%iE-fo=8ggV{7y3|Kj}Y{r~prU+hxCR;LeRTbgP=lR1McMs=!o!9$uUH#J5)T*)pt5szwR;$VktX7rLSgk5Uv07D5$7)qM z0*Bc7PqksSda4qu)l+nK)aofSQ>~s_fYs_Lv!_~}8gQI1)aq0N?(@v|=HE|qzOb#l z1ADP;g?9g&!&t3uwqv!r zS%cN;Cii}!RyR|zTHTDqYIQRhtJTdZc(I-Tq}fNUp5)#y)apsDeW6xQ`eC(tas*bZ ziVmz+6*X9`D)Jp?c*xEl9LBcQsKIt@Ta6mz{$YKt1`Dx1SA(fopR2)0%zft1frIm~ zZ8d6;=MNvT*DI1SuQ&Hpgk!a;2*PSrVeVI}lS5doPPSsTI$4QV**Pb3@N(-L16ZwY zG~y6l=lR2Gbt4U{)r|lr>WMC_R!`JowR)le&$6$5g4v&|)f2q#^GUkyhnZ!Xe3FUP z>XRtPxjm%o^RZfe!s~9URsR51tNuo;R{bSdt@=}OwVhLT8>>}W3s$SLa;#Qmw7IQT zWvj7Tl?7w9DjSd0>O?n=w)6W}V72NGz-rY$2CLP_?0#FVK0c4t>f?N@Rv*V>wfZ;| zPqgz-)M2$c!M?ZE>O_*`e5O_>!mwJMn2FWugf~{J<9z+B+0Hy(f$Ob5=9!3QmbBbzgqRuYDld<>c@P~%=zd7R;!PA{?JT&z0}OG{(*0prt&UE|YITI~f7+_&CStYvXbD!UkIemQ)iaDM?EO70Sgm@>uv+zO$7PQ+^t0U%qwK@`j)#`{3R;$O`v06ROE}sT!AHII7Rz1F0tv>9< zYV{$lK2@s^OR!pf$PTxL?3@oHuv&e{%v;y&^~bYttIWQ))avntSgjuCnYYxcgjToM z&%CE4yzZ7-m2mBrT9str96gtvZ>d!`JKs{PZg#$W;)})y-$; zmRfb2nf&qT*&zz6RY?d|tCA_0z0Ez3(cqR^J=TKN>M^skT0O?jH@VMq|0>L`#vkzY zrdoZ#&Nn%;=Q=yzRI3lz`KDTZz|J?->VqK6Gd%Z?$7kJIq4u?1W@okPGCQkPm)TjZy3Edgy5GE3t-2=QvG)4= ze0FZC)%(mGyrtc^XOQ!lGal~8YIV2~x9WN+R;$D5Sgj7T^PpNC=DCAvb=ViPtC{&e zUkBCdeRdwq(RFqnRIB&RYt`y~vyWPJnth_}{hb%FT6LP4%k1?cb{`Ct&AHU7$lRk= zMdrC`Rb-y4Rz>EyYE@)*RxAEn1kT_HJ(t(sP^(T}dqb@{dF>6g>SX5|t@i%+*!hN9 zy+^|v^}5by=Z0FnXJ(e$>yPsN8|-RYJz9j->QQ>!P^(A7v06RKnQo}nqwIV`tq!sC zjc7aPP%UOxGxNO&tXA)t*M{o)IILFJ%xl%^S{+uaYlYa)-hV9-tJSq7c#NLKzBfk5 z+%uq7hn8ZsI^>Vl>W~*!tAp)Wtqz{TYIQIJSLwMkuv%T?IRk3-ZW~sscPp`4y_=2I z>fLCpR_}&jwR(3FUSsDUT#eQ0U@%szgPe6B)ZSCbdpe+2g?tVN0(G5T2GpuB1*=tI z7@lD7>7d7eT6MHwwd&x!pQu#_yMLlq9dTH#I_PZvzS+Ew9W?wztvbAMopzXw)v9nT zF1Obo>A`CCNCQ@@M~+~%dL$jI)g%0|^@&Rl#bkRs|ur z(aygzfYs^>{rlDG${DOySMsr1UEzJ~SF0VU(a>0TD{YO)#@G2Wd0ez%zua7`_<|l zcKlea-igL)^$s&XzNY(`{qbe(HWRDWfw5Sv^82t_*>#*r!(e!!fNr&z*?X>g^${R&TdqwR*b- ztJT|wuv)#HhSlorRk*;;d^-eZYqxn=t@cmB?BUtj!D_XSUHa5&AJ6Plt9{JwQ>%U3 zv0Cjj&kEMFCS$c~8^mhWM*lvwYAeNR)n?|XRU6Og8)4_P1v<`kwQA#Ya=pi1-^c#f z+0X2}j~Un1>ft`DRu4B|wR*T1tJTA)SgjuB9M{$AVRpQpZ)d*6A4k{K>aAL=R&Nzx zwR$TNtJPaev0A-l=BU+Moa4G$wYK6#cK*X&SgrEfv0CxpmvFB0dULM49IRG(F<7ng z7Gkx^qw{sO+S~6qy@U3(t<33FtJXZMR;>wGty;sdTD8u`YSl_-^UrT)hc~;iTD@71 z>1eL+ZNh4`w+v_NdL~w@z0p{$_HyoCwc0x!tJPjUZ@p@jOP^kL@;vtlR;xENuv)!I zhhDXMa|u?fH_iTP^``yZ;+>s45- zUN69E^?E8+tJhazwR$}StJUj%I7Kr@;5h5-Hmp|JH8?`o4`H>+PQz-Iy&9`k_Cl;y z+0(FEWt;g^?3_zxzFJ+P&xdMti5)*wt4q<2)2&vQ7GSly#Ek9^JLfgN->p`!(W#sF z)wJEs{O($r`Q2)@oB7>pwcE^BtKDY4TJ1LT)hcTMt5sG5PS$geV6}RU4&7??8lAe; z>a{?uR}i)#}w&oNwp6%Do?`)vI}UyS=_E z9w*B*_&}|8vGWINwaXW)Rc1ftKJ(sXHe45Ar$bQmY4fU6)!t zcnYi4gE=_M&Tpbqms&N^qf4!tICqy?HTh$;Y8r#p>Xlv`X6L-ph}G&9p5Mj!O~VHh zuv$I19IMrXbFo@II0>s&#%-)t8SPlDGO8WteYMKq9PfAQxxDA^tJN#J)fj@+s&N`tt443ERxg`pId;y=^^Vgypy#r0r&>J_ zh1KeTMOdvK@W*QP0Pk<7TJ7w`YPFN^cdFISQp_1lx0jD#wR$-NtJTXfm}h(LS%TH- zWj?o^YW1=&W+!vc#eS?-7n|`?dwpjnUMR<6wc5$|JJo6@Upv)mCv7^_>V7^iooaRe zCG2D8++X21?+xp@`*?Cg!z>ZJ~>Rxj1y<9b#$ zR;&Bj|2?(3e=+8HX3qWoSgr0Kjnyi>6UW(m($8bHO3%mP_WDbFe%_;nne!5_drz%i zT7lK-B|iV}sntvLcu%bw`mtIyG-9=CD8=kyW~L`O&Na14Uyju(eGXQubYHAiJNmF% z?O^6Lwc2q6tJRJ)TxsVw7^_tSXS$|V4eWbOtr~o=TD{nT)#}A6%$d!eFVgv%TD?f8 zYpZoV7&F&%&jhSi7kaT;U8u)ub)gWe)rCZ?Ru_1`uBp`pKg^lU%om2RTD{QhIPa>} z3p9LJtzO`a@2b@c?DDQ!y})zcRjU`6@vd6cw`1OKGryir=GX5$rop>vRnHmURjc}7 ztXB0Cuv$IO8Q)c_=j*UqJ)e(b?ab%nv06PJirLRR>v_)ju3FU%VYR9=XH=^?b4Jc! z?yuX5)v9heo~-M$u&?Zm)#^FU*r8U>alQ_@l5mUgXUS!F|VV+ zy0#0eRc#Gsmbs@k7pqlmG*+wH`B<%LCt#ju?thkNcBs{}W)7cw&vi3Lt)4Y=)aqF? zN3EVUbJXg54_2%5wOFmr=V7%vZ{|$5^Urf{hgzMdd52m(Lz@n@dZyKJuBz2DobRey zJ(Gjk+wA!aGp}BeL+~Z*9qemu085wW{HBa#gKrTCiHxRA9BLVa8RpsxdpWlbKm#c2=vJNqDxN6@#bC zOR!pP=lkZ@Nj>}U^{QIkN1H2ZbssyJU*9zM+;<9h%XGWaZvFHiR;#C*af7axVYPai z^IlP_r=zf1Jb)R{yTBY5_YL&*0SJW!4 z8mm=WJ`S?;s~fReRhMG5s!qphRlN$+$aLWUv&OliR@FTB9kn{g&hMzzIU2mvW$#Z* z!D^KjiPb7?K31zVKde@1URbTRbz-&JR)^JU8(-hav-8iDV6{4zhWTOkJZGMzR_8eD zJ8E@q0#>Ukvvat;zsl^aR#j&H0(*VicC1$0qOe+RTZE_U9)GM>+s0tE+S-fNYU@SE zX;-VQrI=@%J*!f&T2--2d%La&VzsJbUb|YIWoElto#k4)TAgL*cC|X2j1Sp4TWQm- zR$FP%&d<$rw{q5Ywb~kh)oSZ_tXB69Vzs)LUE0;^-U__L&N;gbtJT?ASgp=-?sm00 z(}C6M44=bxwK~II?VQc*b0!9>)tL~-dHc4#es2!$m*cTo-5ZA0>fQjXR`>d1wMy;B zYL(iE)hd<#Z}Y?RTy}X|txj{^x7o>DKi!1Y>a@9EtxofKcw4PbM`E=)JqN4RX&=18 z&PmO{YLyy|)haa!hhxIy=GrZ% z+Oi0%)fV30wpE%r53ALdK&)0<=+UNDTl}$FZJCDEYReStwwj3DR&;6`r}<;B+lsGm zxvdd#E2d=U6Q`)dvrLDsmBQ=ZQmd3YtX3(^ zcuTEP&S14lslaqM?_?wqoB_x78f% zwwi_ARx_~M$`7-vXXa$=wwi$5R-CETZRLaAR$f@GHV zb0=1-%~!BmZEkg(H`Qu04c=6%&5c;CHq+xxwc1>Zn>D{0tJUU8tX7-Lv081W)0=9w zxfrX}=0dDioA+V0+MI*8YChNARIAPDSgkhm{WsNWb23(|%?VhoHpgPO)f()!;&pG% z()opNGxk zvD<1ac3X|cZmSVE!``3FE|=9Rc@V2ravxT!O1_NMDw%yRa~`u# z@jtv05c_ z);H8Dc{^6C3c_xyIoNH*`CfNh&A@IeKfGM? zCu6tO1njor+^@T>e6ZWf3#(PqFjlLiTUf1<`Z4#JK1n@}b4jg|Xmd%elCEI2N@~Sw zm2?TKRZ=5Xt0cZ&Qmdp|T%q~ZSgn#Ov05dSW3@^u#cGvQjMXZMdoQU~(mt$KNjZ3> z=4WEHN=nCSmBfroYL%3X)ha0gt5s4gc3Z8%ZmU&ztma2xw-wKM&26<5yRAa8+iC%J zTLojc70-XoZ54p&;^{vVyRD{Ux7Aeawqmc>+*aeU+ln1ub6btZZmSVE+Rop28>`jE zL9A9A+5I)O+SrZNYU4GmRvX)~T5Y_H)oLSWdTpZSU&Ly)u^y|{#`BKTtX3PVuv%?A zh1F_f8CI)}oV!`AHWp!KnLZl}uv%@*!)moL8>`hudNixm#_d?GHl|{=+L(mZYGXW3 z(EJ$ewu-`TE50_nt-`U}Y8iH0Ex~T9Mc8e{_nZARe;#&Q1!A|=Z0xr3cO3KkcAoRn z_*J*n6zsNQ#;a~CU)-eo$6&XWH+EY&SgjJ7{i<3e4q&xP?8R!8*oD<9u>;f2?32hd zUsbEb7OYl@JpWa-N^HPtl~{+>DzOHuRpJ?}R*CHO>P*c)j@2r$1gllzA*@!3`B<$I z*|$lp60@*cCGNy(m6(QGH9rNbRbnDmtHe00R*9Uc$!)b7yR9Oz+iC@NTZLhs=jp>) zo7`3lvD<1sc3TBux78f%wwi_ARx_~MiXKgYnm-x4ttMc%)i~_7^1*H^IyI@)hGEBf zMXfg6!fLglA78WcH}qh&+CaZo)M~>OtX3QN{wr#=;SyG>4UJf>HeA4JwV@X0Xg;rd zMXfeeVzt^(j@4>IDORfu#aOL2Fz*$$+OQ9+)dpt2LSNH=Lncpv}t_ znpuQPWIDa9Rtb4ntrD`aS|wy)wMy8I)hdB&FRN8T5>~5(c)U#WW3byQ3cIbi_hq+L zICfj{x|iKnOR(E&5gx0VA$Wv5&v7ogt(bSQSJ!7_x0OG3TTR1mt0~xR#d9vYt$cC0 z=8VB^D{t(!a--^{LKG|_zRIB&|tXA={*lop*FS@N( zVa{egpYajcZM7V`t(Ic96}!LawpxJQR>9b9H5c#H%mAEXy=F01t2NWHTJgnsQLX;V zUN5TEe@|hx`fnCitN*UXYW3eB?5}6h<3+W)rxUByJ?F7n-II^i>K^)BP^){E;9fiD z9(KE+R&m4lvc3M_@mQ^*xc7ouMP0yZ6;*`QDvEPoP^&0;4Xf3EDzRGqCmXBPf1r$~=ty_WBYFz+Ut93l*1+|Lp#A+2= zgVicF53`^7e6BY0)oQhwuU4zge6?C_=Bw3eGe6S4_TOf{TK&5khw6F`4z`Ys!)g`F z_h0bW^=VkG)(&H}TFY5qP^+~SSgqD(I8Oa7``WduaF3o9gVpNa3o)-Z=lVCZ>(y%2 z5LT;Im#|u`D#L2EYCA5muU!?6^YyHGSgqEwV|}{49@B@_Dy9LeRSZ4r)hdRb^=cKf z9II8#EWAk1qK*0YOU%xz#$vVlR~J^Rf7N2O`d0x~tA8b8wffg$Ji^ZTm!IQ2Kd3!N zW3{@w1M|Z?>u%n!=hf=&JgioC^M09sm&J2WC|0Yx%}lk59>Sc{+_UmFR;!gQSglra z@AGQ4lK1X;wOY9vtJO-*{k&SO9FNuNpWQgj&W~=!Y873I)hap-t5tM3_SgLZSgoRc z@C1APt}9rr?yAI&z5dTy$Eh2XIY*sZ{gWN*)asw1Sgrm^hdQ;2q(hxrMRKjK%Fc-_ z!ex4H7FMgfqA<@e-R|NXb!v4NJJzYynqI6{Yw9t3nETfhV6|Ffc8k!nl5v>K*E+R| zq(_}vMUKE~b!RJ9t2-;OTHVR>>(uJba7;V%+&h~E^R(JYhwYrn{@Hw@*(;KVRo$UBryqyy< zgrnpEtX2`UeU3)vToGMZts>a{Ikk#t!)g`Lg4HUb39D5^10JtAoas5Wim1VA6~Xyx z)hdF{wQ3b{9II7C30A9!Ls+dMICpKW=I3Iyipauh6|obmRYV$As|b43s#QcHR;!3O ztX2`xn4fz(tj2DuNbI&+f!$Vot#w;1#%`;H*ljf*yRCxo6wT-RwQj3f*ljffyRG~j z=UKPaWbC$@fIBp29ClkVl=C-%*9t>JIKbAE)bFJFixEgk!b3BM7V29h0zHg%4r1 z3U9>$cFqsX&T938MyyspVBhm<^@A*|RzHZvYW0I9j`NIK{lFiq)epS!6+1t?3aeFk zK31#nWUN-<;aIK0gD}rF9l|GJwfYC2w`cP0^?xw$8Fn)FOz*^MHN74u>v{=RtLf=D zO4s@Nj9N`!h}CMkA6BdH594`y7N3V_)aoA@SgroC8mrYm==zLW{bM3ls}=oNtyVNR zPK{cvD8k)#{`W6qwfcSqR;%x4Vzv4{JJ+by_vd4^`aXSX)M{EER;y|Cc%PlWA_c3} zise|XR?Nm~wSs+X)avioFwZk>|6YUD>hF12t^OX1X=m=4b_lE0H0IT))wE?;t)|Vw zYBg;%R;%xIV72-lXX0_5ncrjIrw6nH@5$3@^>^N*r`2ltZLC(y`TDe4E$97uTCJ96 zV6|Gl3YXcL%Y$%{p0x(6)%QX$&o<}!-ejy+euG%8{F<;@`ITa|^4p5l%5OPds%LT5 zr`76jy;!aOb^)u^-`M5p8TS6arC_!Co0+3lf18EX>TlkTQ$1|&_nVE?%8&0?ciZdV z<$bJHtM3xFnnvba-{q{;YW3ZCT&wGJu2!q>^8D)K_WCkrRIAmpDy&w^aaWc>+|HkR3#-*sb6u^b^89MGnwpN)YU)a?R#StpT1_2?)#^K) zc(k4WSLU2ktG_bmoLc>rIp@^sugp28R)1y2IkgJo{W_;sVf9$8!U}Pvo&TNlSgpR3 zkJais30SSZvjnTvci8=$T772(PPTKVT*hiOr3|mO*TWKVxNPRARoHaA&|d!w=R2oX ze_{7?YV{X0N3H(CGta5jUzm5!SI;#~)M`qk<5V%rd`_kWVzrtw7OU0&bz-&pzZ%T* z%>DnDgVpN)qA*>|^}n!7Ri(`5vr4U&c3`zyT7}hWshN{y?_U~?)oST{tX4}W;8;C3 z7^~I)nd@pbxfiR|t?TS|R;~U#5x3auOPG1K!TNuPuv+~u-#=Ta>lIk7{+Ax+->)@${%xn!^ZiJi|h z$n1PZt^UN$XVmIX?0iP8{>08_)M~MrsaA`daF(63*vw4RbB)#Nf6V+?T{rX9>VM39 zwfY}3U#%vZ`3vp+6V1+QHL(QG*0apa>9U!rR*TI{wOVXus?{Hvd3xC1|3})MR;xd9 zzSG^h&dk&8))P6$X|>O_I4=uxL6}l5I)O9nH{mjg7bMI-j`gR~zt8dfh zv|3H*#r)jdKY{a|R;vl@Tsf@k>|Ci<6PDvHJ&TJRK( zS!wV8Lk3o>KXATEwfcjZnWyIlV6~bs7OT~_y0Kb)s~*SN`@hAEO11iy*;%c=Wp-Ap zZ_UCBw8KQKR*U+vS}nSW)oPLHpjL~vVzpYt>`Jv-#GX$L+nI}eFtbe0Z}I)7)M|VO zR;%&VSgpo$)~D2Jd>mG*@u66)#!tm+_02(i$j<-$HO%YHvwmNL)#~?r)}B(U-^XLM z`u$?8R=?+bPpQ>Hc7IB(7PjCecIG#muv&ey6sy%Yw_~;XW+YatZ_dSP^-VfG#SgQa zFAbhjD_{0Jb=zKFcnYi4!W^tt3+ZsGUH7odDYaTS6RXuiAFNit>%?mHyIRbyp63=| zwen5IYUR5EtCepcRx97}SgpRnUZ>RR8yB%!eS^=#DPC{p|E?IT)$h`=TK#SfR;%BI zVzv66*O-qzpP={QfS)ih>0v05$2!D_W20jt%5L|$y1opn)j0Y;saE4A;@S3|ubY`__4UhGt-fA~$LU$sSgn3r=r|Q>_1mpj zt$xcc6>9Zco>`$*zh!oXTK$$86>1gIiEFgOKCD(>PsVEX^$4t1Uk}D=_4TP(t-d}2 ztCjix3ad!6GsiN!BE~x80#>UKW>>7xb!JqkRR~=x)GA~tR;!QztX3hunDdzT^f#Ql zVv?T4jumP(mR%}1r@3eBYR5ULR_6Z`?4(+m|L?DpYBkmetJT-Ic2cdrR*%`+^DM5N zRIA_czMNF6-_Y%(TK$G@C)MgVbUUe5zoFYnwffBztXA`faiX37wIf)qzLtU2>T6s( zsa9X3(@C}Z8a+;`)z@fpQmw}HVYM35h^N{4^DkqynqPs{YCe0NRIB+>j#I8y^XFr= zn$PRX)#}$=D{r?mf8Btat;eu`xmu0keC0K|PKR=}8WV`sY7EaWSF5jfW3~F~d8}4n zq%g+C599FBZhGMn) zD%Z-@%4Zm>l@C3iP%EDbOc(Px@!5&h$|n-H+3UdxSgnG?uv!Jr#_VKX8$1@P)vtQ6 zTK%d4tJSYcuv-0!&QE0Mx%04E`LO#FYW0;{SgpR&g4OCPJm(3u`brK~tFLhH6KeI9 zg?O%=|Etwlt$t;$tJSY&V72;{4_2#rW`DJs*XTH9YBjG6tJSdW*mQ>!nZ!Q*s~nWI);PI8X-AeTK&=wtJN>Puv!K2x)W*@RFBmvs00^k2X;T9R$pev z6KdtnE+^E=yB({Q_j#;V-bGlgyt((p3Om!=?77%FXeSPlqcP7j4TJdp3AGC1>j||A zqRk1l`b9rht6y-|6W;cAW<3rZo^RZfa`(e&(=6loOxLS?k+HtiSMW^FxHHsd` z)oK)b9#^YTQTT|SMVsSl^$QvtSF2xe*5hjRiy+MT&2xV-8LQRYVXRhj+p${B<(bEM zkIns~7Gbp-<&V{B)EKN*UcFeYyqd6Dd6^Ds<&}-q$}1LgelvgWKF2wxR&(RATFvE| z$JA=>bgWi9(mAG9KX1hs?3|zTtYhqLX8xRWALHl7UhIGDh)n-uh1TZ(d*_&1jcmbc zHL@J5)krf(twyfIYBe$t^K;L$R%5mLc`#P1pHIYU71)o}D)1s!tH2VhR)MKltpb^M zY^?UA*)g>m(d{^;YBiz`tJMh3RH{}ZlCWBh2*b^G&WIWKg7ue%akX_IXDL;yzzJBb zem01iYtHzy7OYl3tHf&cvplR;KTE)gy5BrETF+|7YW1ZWyj<6rU8+`JO2umRrAVw+ zUkb)*^(ESrs+BW{>Fe2T4pyt5O~7h3=a%CfRjWCzSgq!8?xSiohaHZp)f{#>s#bH@ z;b^^`?_9=ex&uKw(|PI8#mcKf687*>SdmPM6G^04y#o_KUS-N zOIWP}DzRDxw{ z8ugPj+-mpyobNy0BsXK*%Iot}*tYWeoU=b}TX}t+gl#LY&%?28<@GtcKWi_}e!9-?kK0yWx7qP=+sfVR?4F<9#c``;Z8d6E zKenw#&Ek9|w$-RvG%vBOM$O7_oX2ddQM00OuibNq^FGE8^O+ywypP#dUPFhlK37AW z=`q{NYbXNSR$fCv*tYT-VxPxsE3Z$P{aAsW`Dr6ot54bIF}3U4qr> z(^*)pKJ~$Bb*mGH+WEIGVB5;;Rw=fvyl!P;+sf;fnQvQp-CBxmE3aDtc&z4(!?u;z z&0fbTzGbi9q(L!1H+^n$)?&4~nTyrxW+GOro4jAeYIT!7#cFkvXBMl~;2sbz>MWv-59U!D@Ab_qTYyt`}pqx{;36 z>c$$ZRyTNEF?*Y{-V`KSVXqH#InLo*asyVYf#X=M2C}eP4a8x!8VJMndhKki zRs%feaJjwy3G)t@$cQBdN)gOh`s(&F?tA4&7R;!Qce|U_Y^D+GotJTM~j#H#oAJf06SNAZ# zNUc7mf00^!%q~T0^)da6>UF<2=Cfkrv(Z5Ko z`etLb>KlvM!_2?lht=wOGghnXr?6UG&%D0K*XLrjx;_E(!_4ocN0D0f za_%Cv>gBWWs9NNGtLs@3TltX8LU zv09yu#+NTa7aRe%e9XYSawc9JH-QnSVd+AU|ifQ8PH-LECDS z`S;Tf+E$)_KkZ<;-T#AOuB+7t?O3foFuSSM2ZcCN_orgD`haT(Lv=kEtJMcn@Em)+ z(hvK~G&rbMPjz6mda4$y)l)^7`%GK&`%8st^%T!4R4em)M1>vpo~~hRTX}W0W82EB zs|M?H)m4b~x#~*A`doEIV%y5AYaX_(yt*dgZ0%sIR;PxrTAgaeYIUj#tJSG|%v`ho zsbs8Hr}%6Xs@16g9Bl7-e*ml1`|Mt*R_`CdYW2S9pjPikV6}Rm_q0&0-XH5YkEm5= zC+^V>-1~@HJ!!71mHEAzN7U*`c78;yo=m`;$Lw!@FXa)ndU6_8tBN7aYs@{JW{z5Q znmKCKY38U^r-YV}?#US?;$SAiECF} zRWT2%RRv!kQLB^mctovE);dnXpq`b9`JOq;dr`PUo{!b)y-8TDt_@(dy2iDFDtrGm z+7zhOwNzYeub(WybTRYI?>Q8x)ybt;txj@|0<}8nh1IIO9jlf3wfq9LD$l@SdhQCW zR@VZsT3zGZ1#0zfCswO>dA|zO>Rt9KP^))&W&y7;d%hcr9qaPdj&ne*%9(vYt;#22 zwKBg3e?YCCxQNy237Q;Gt0y?$0kwL9-4F0ydY&~67h87>W3}pF-T}4hsK9E~k%`r+ zBMP&(nbTo*Q>zZnbRfcBe_|%)dFCGT>*5F0s_Y6@t1|XFpjPJBtq-VGSu9qovISVJ z%&#RM@Ub(m_F=WU+Tb|(YIT(}<*U`zRIFB4dB5`2>S_R1tEk|W5 ztxj-nzFM6)g4OCo8dj?loI78wP6T4LIxz;T)p0YQcBaV{&YrJUS8}jgU5UnObtMF= z)fLX3uU7B$V}Cp6oeNm4-YLZ6?e*hkK4&w}I&S8x)p6$US1a>tuKU%>{Cets_A~b% zWBz`%I#!R>>KH@z*Xp^6Sgqb!g4ODs=~%7WhcT})GuvCRTD5cUezj`fj@7C?9LH&g zc&t{(La|yM^TT2G9`kFK`_;<)dgOk!DlNroRho+Zbw97$KSlfS9_?4Fc3xUzQ0ec%&+t9 zQ>&xNSgnq-^FFmY$~pG&J=61TcHXB}ZS1^Ht=i1aYSm_T=Jn?OHnX!@wMF7!U7w59 zs?E%tVXq(c#%gthv+h%?BQ==wn3+e|cb{4vNpzft)#?b(d|0iHu=B&b-gEy5++zI} zJ3p*eZ?W^kwYtvE53AK%X;`h^V&{j|>a8Hmv(3!6*y~}nYBe+YJeli{w_~+>yb7z; z<9S%E9*@Ur_4pF3R*##V)#`DxbFiIhem&{o0P9w>vs$&9ou}x!*;%bx&CWi$9)#7Z zb%NvMsnwf(Sgqb{tJURx9A@vo%wBnFb=l0Er)Tk;yZ|{GtJPx* zv09m5o5@qF;$f^-=GRy9)XMzY$=*Rbr#J(5>$&W_SFJ9y^Io;O%+7n&>M}d;t+n@? z{|4J$wR)owtJNDvuv)!gX7YhHpPypRy;rS@L$F#Ev-@7PIy{8c>M+mWt5%22&T4ho z>>Ori9$tkxznT9A-`}fNZv^51T_1}qx>YQSn$M1x$lGQT#Et5)Wp`*YQ*$R8K!x$Ky$RxKm2TD{(e z)#~+1tX8jQW3_rc8mraoA($3spVuehrP|F4tJS0JSgjsquUxe<|Gb{7R*%MDwR)7- z<*L=Ald+GTd8prU_6%EJx`oy15-s6IR+pH+N3AZg`yRErMCUzfb%`c>)asHq zKCWjqVYNC$zddSoC=;vIAv)|)t3!*hS{<5>)#?!M?Vcz*^I$6uw|=b)tJP}_m@}J( zukrjnYV{h=*`rpknf=x3wJ@w!ukrmoYW12g9<66pJ5G*T9W2CZb#NKWpZwRpCyoR)zG>QLDnmSgi_YVYM><%$LJlv-2aIJBLP|{dr$< z)aq5v_0X`r{wmLXNUdJwxeuw;t33B1wR)B3KBQK!hGMmP)gPbNv$*z|^S{*QR)arnl zqgDs_ezsa2;A{3g&6$SP>c9v*U3;2y@x$!gIEdA%k^b3g)mZ8{yN7iTJMLDi#z?GI zje%IL8pmR~o0<9Szgw;HX|r3c%s;Q}R;&DItXBC8aFJd+1*_G5p1E7C_A_rcXEyU+ z?!s#IaxGS?mkTg0JohAGwR)LOyVdGtf2>w7(`5HNd%yW_1?`?~ZT=Zzw_5E_#cH*G z1y-y5blt61`}sU)snxzttXBJ~akrhhF9)~lS!b|XUChIr&FpOcyFpoMbukR9)kXHo zQmcz}&QhzFn4P6oFV*8rJu42Y)xITIt@h2tYGwXDI!mn{re~H~J#6Nv)x&(=vKHEz z=I>{-f~;RUg4OD!3_M-eW3XDiWS;A*>t=todWmbh)T*H$t5riYW)IWB{C)8*wK9MI zyGyMeo{H7#Vcxr4YL#~lt5qKR?@}xC_o2JgDvut!Xl>>1F&P=gw5C7dc-h&-Ps3j@9bLD6Cd5F2ZW{qCZxv7k#i=UFgP# z^sE@HR(p9LGc$Fab7ZR3UiQsYEA#h#nQCSJ{w`Cka_O9@R=GKtS!T}*7qMDhD8p)X zAsegJg?Ox17nWhQx)6wYwr9=+tX3}!I?jW)?e*LQ+%GT3YLz<|t5xnKe97Lkhu1yW zAoKkP)oM>QuGIB>TxxCp+cOWU)eBWPPuB~uTD_2p)#`wa2_xt@e0fwaV$llkJ?GI;>Xa?{OaVw%6<194F(p%=t3Z%KSH7 zGSsR*8mm=3&(Bb+`YBkgo*%?&^?V~frRTDLhFaw;$7+?sz8Pwj1v0ByD;>q^@I^N$5 z?lZ4_$edTL9^$+Ys8#kYtXA30Sgp)o^B+*F>~ySF+3fQ`gPm#qI{W}bWymt)AoF2V(RrU#wQU+4ljp+HH1LtKAh?t#;>N zo^5v99go#&H}^iER=fQ%JDGc)6s^z>p)vDI)qgKzFebnmNMyyuPmf>l7)_AN|y9TjZ?YfNBYFCxx+^<%<3b0!3 zO2ulmD*~&P`RmF3&368?*;uWfjmK*BEa$!dl{`zyjT4i3rYL!`w)he?Xt5s$?Rx9(@f&1CpG|vpdv-DhZUbQ-J&O1rh zS7Nm~Z|+yC^W2+$Tla7+U9Fz!#A@|SJ#N#p%>8PWY3^4m^VflNwK9LcPgko4k7KoZ zFbk{IgPc2EtsV@;8Fv0NN3dEw!?kp^ddA$ZR?pBQeU1_V|xG4>ts_C&q zt*RRxXS-TebEfTmde%g&Ryzl=TA4prZC9(E6P)Ow)%4k}R@L0Qoim&H)pXdtSWdudRc-c}tLtm9T2(V+ zyINI8V701Vj@?#EvD+%taqb(^oCR2|s)MmwRr8$t)XMy~AMR7D>X}%rs;6VMs-B9~ zs+#BDcSQ5YW4F~-Bu&8TAkxPyicvp@qXQ>R_EC9KD9d6jX9fXb?zEgt8?vG ztYITm??^COD7qMEMtH)|}?mSkjb5+<&^Ep$RTAeGyYITnDrKy$qZ%(AC)wu$! zR_F4tTAj9Y*G zt(IW7)gtV+;%l1QY94l51!A|=Z0xr3$7400@0D_%wHR~sg?O_;5N0oKNhRi{hWK7THVk7 z+oJ9KssXH4RlQiPs=BaRRdryss$%zTYE{*O)vBrqt5sD4=KQ9~{pP%Cm2T#%RXX=? zRjYK)w^gmuImcGDGJh@Fs#fW|k6YC$Jpk8h|2nKzRW(?xs?K1wsxtG{%KY~~wyITC z30AABLs+e<@^ONlpFSR|)s8`|Ry!_Zwc1gI)oMopR;wMUSgm$MV71y2g#ENXyKGgf zsw}KlRXed-Ri!!3y=qmJg4L>uKKH6sRUB^9O!mE(zNY_<$ylwn594Zkeft%xR@-Z_ zT5T`JYPCHbtJU_^Sgp*TkMHGdX1@7vpWLffRgqY&s#ajNstUtuRYj+J)v9VCW|n8p ze5_Vg^tpGY_MC?OWN)li_wo6>SFP@Az+U#A`;I$Ks#@Jg&s4QCe;!Tk)IFiN)w*g9 zR;#L6xL((1V702^`Kj*bik_)zRW$*tRn<7GR#iTDr=G<*Qq}4{_DxkQ^XJi2wK9Lc zOjWD2Q&_Fi^6+9iCym#os#O|2QvX+K4Zv!Z=8M&88#A}4mHBhn7PT^euG+#6v(L61tXA7%v081T{}#UI z+4&MytFw(*tAT@S^FmUHkvk4LT#!2F!&j$H4H({;~Oywy6% z%w#9CTN2OQtUq3oGH|S}^ZsmJBb(h;S#Rve5wbb&QaK;f&dl7Hh!@CVI9Q&A=gQ`c z0oIB1+dNY~k9nS%lW1m6lG%6jc-b@@E1QO+WwYl9nfb}Ltv7I9^PZWR8!qBLxfEZM zGjO|1gXGIH`zJTcftc5O=CD_Cy>-GcW^Z#np$%8bd`&Ks^YIZm6&J~LO)iiZ;yl?O zXUm*5nf=WC^?dG=b1BX~U zbV{Bl*WuZ^Cl0f#nGO^Hyx5E<9zE_cHfjGx8j{L&)JkFoBdPdbj&l%KC#i5rXDZB{M_T2c(v?< zS6Hv@#$j?JUM#cwriF4Io-ZfkAUP7xk>}xA@+9nM9W#tMo7o|T#+xR{=Dnb)=Xxn- zCyzPzCNDYOagunw=Q=wk-I4=vkH;e;d2f?ChmfAagBguI!KL=$SJX&$Rxp z*?+p+f~U$=n4Qf1|K;3Cpj=Q@d!D{aW>wTr{F=E?{Dn0j_SnSas$35m*IAq zej6{#(fFdg1ap4#+$hemk@wqU-iwXwYW$xed`f2CM&^31*Wx2`5$1>IdK%92cw|or z&X&{hcHJ`$r&_NzGn3@wI9^W1G4diDC7a!NzsoG2IKIGOJ!M$5bxiL2#M%-PJd{y7V;km;Jp9_D&v zKVB?1QAD(-B@Koy+y?Bz`jK|C7y%;O! z|9wD=D0-pmjb43Uql>KnG$0ILuzJzP?B7E82^LN@O@I3R{zcVx8qP!T_%j}hK z-g!ge_kvy<8FZ?sQHlFiH* z*#}2iFQZ|?N|`eygv(~nWwM#ierDz}b6#3_9DzgRARH)9!n3XaI*fU?x&Nyqycg@wSpTIPSICX{xXiWnC2|fvB*)`ik4Fabo~-AbJa=T^3Y?~UINy49 zGW#qwGZWE}5`V#Z@er<++i|tb*Z4{~AD7C>xLA(Fg>neqCr`&YvJcL*{$npr zmoMV2GPC0o{x|~j$Fp&02M(2Maj?fD>-;gF3GNwL zXLg&Zdw5+udwX7MW=^&K1C8S+$yIo~yc3U=&2FP*Kg=Fx&LYlx&!F6Z`{WYbEvMmY zawKk-IpaN-hjN_bU&TlzKT%GKLYpg?f&*RR>>=suc$K&HN z=Z#~onG<53m2dr4^4dWtZ z8pf@V&7NVhnZH;z=UpgsEskfH`Sbnp9N7oYvi@~1o*|q4{p3o_`)XeMYt9-sK~BZv zr{O|*70&T^pgUx7vH=_2FdM%uJBE zcU`O;j@QU^UB_JW++UjA=;d)OUM`#SayHNPXuLq?JzN(o`{B9PLBlveHfNkEbMAH1 zFF0>3=l8e(cgysMZI?NF>}8qV zW1D66kENsMwcfbidM-0!&&!RtNF9F2?QC73&dz`i14YHY8Bhzs08JUJ_IkTDbQyQ-2z4Vwp*Otg;{vnz3 zuI2USo`4>lEAyPSJLOWGCTHOk+3cSvFUN6m5RR5DA@npFXPmpP|cAT7tedJ{9C9|XXwNx{6 zb_l*D`{90h1n%^B_MRW}$3YCwHgkS#W?qnI;#%ujL%3Sz`!SU= zyTz2tt8l423)9HVoW<@j`>g*TyTs(k%#O*Fxi=i>4n>qh)HcpVu%r(|C zyD`r;_srxRF%dEiV|cyiy4iE7Z03i`=DZ8!c{o^}gafR9G=ynk=KQD~PnXU9Q{@uO zYdrU4;PG-S9xE@#qh)``x%;;4g9oksdvTxKjJxGZd`-^B>|vhepNcQbocnHG*Xo|}PB!DsF6B-za5 z^`7e~I7SY|QSwB*()tHxw{W=vFO!*l_ad3^-yI?c;(4+!=I7>F(@jr4Hy)ca`pYGF zn!FWHkptHzbv{-j>c_rC~lEw z;U<~qM>EU3cG@7WlUs3(%-85MGVe(=jXd`!W6tJrI6fo?<9yi<=gOQZI?MWd-FT+hPGljVzeg3MW?$H{B3k8F1Hl1DhsUA*4xGnMn2->31o6!*yKxKmz* zugJl;RpyL$U9$cT@0a;K9y8}VP56RrW>(7?xKgI!UF9-u?&3brYuWRzV%f|uw4TDg zckPqgaE@Gs+10#uNV<35LuQn7GuPiAx0KsmWvT1m&;;?F(O99 z7-Pg3F~%5UF2)!!#)!zx#Tes#ozLgp=KII*@q6<5ozMB4b3R|vtxZT4W=762m^ky} z%-~0wLizo;hawHz&Q>tdq1{@Q}Jf+M9bMB zU%>QZ^(QjJ&L)`|cGk;QC%w5C%U>z8)>$TVKb^&L6wdX2^cv2RPvdmi>Zec3`6&H$ zCd$1yPHw@`GPye=l_(d=kSs|hA+!I@I`qeW~Np{LNz`kQ}0)f z%Q2X_Sj;C^F!$%ozOT@O^E952_hHU+>-~7Y+=lnaWjIGp!3&v`mj3C*|FE zPTquPWXpL-W`-T(GBfNr;QcVQbkL90@UYc6B3u3;na?{04Q_>oGU*vb=z=$%pY3c?h4EH)G=5-a33jrmhcX zy&trk)A9_Sl6T-qxe*_ft+r9`=oL(FmOq+)Kinnn!R&YI-FQH@8n(zexJR}gH+w&D z74v-C-Uq1h!w%VUHp#uXUS@_L*2v88!%EreT!^3hI-sycGHMaN5bGT0)#hYZ_ z+t)MnR$OOBQu8&j>ydEgF`Yi_+VU4#0R{?ZsHO793GO7;z4;2-X?QzA8eJm zlMj03Qrsn{;Emp&xQ*N7OSoB{#SJp^|DaYLz*TYwE|)8DiJXB8<#3$s?0&!K2Ykld z-0v6tAj#YQJJ<*D@+6Ltt(QodGd~EEnNJ&aTb>`kikXo!GjHQQoVVaBaucREw_bqH z%iLqzg7>BycwXi?X*(g0VP;`_H*Lk!vgM>!w_bz~$|;z6xpnGo+w1*5tj^uC<=-Wf zqiu)GeYOqA>v4}sXKibhFJS7k8a5uo^)j`z)yTcLOeVIiST4cL z$n8zTxpD-~^8T@FI9)!C>Dl6cYyxvP&O30lyb-hCt=Hj@%sKXZhTM7*UiG$rclG`a z`7&OT=P+Me{Dx6{PVUENv5C!kKDxTWom!FUACN!GBbRid09^T|77o1%dEX$ zAzPiLvgI%Gw%-T%e!hGW=g8AIP2Pi(IaWtq0`w zc%NK@N8~&_B*)=F?+;h-R(S#U%7^hrna^8!R_rYM-zKfh%b8iWHhZ^U!}MnB_RsCs zTG?u=lIw7}Z2cB`e{c)u$>(skY&B%aJ8`OPJtoN&I9}%S))?5o|O;aX?Yu-l9}aulQOe; z@1UHCN972-+uNS0_jbuA@eX+$56Il-dt2m|CZ;! zxwrR1@~Kd$g?n}DBY0JA$MoRVbMa-Fd@UEf?=0bSGBvc&r^VmdkIC!YhxyEzzFLmS zdHASoIVZgT>pC8j$=59r6LZ zMIOLCay#B2GuP%0*>bjeubjqBGG{hZlhwAe9@ofLTcsS1%e?>1`Yn(raIU-^XUSGW zx?GA=Wa}}}dwC7V$;`DmTDF|jYV|A+hC=V$k~iX2xfb7$>G7Q=$Psv00xZH)0$qo3Z%pBffkJa<9JcI90pZUgZJSJbj`(^gMGc1qbopLW`Ms6<+ z+V7=yF2Q|rD(;rU@FwqnS;X9p#s3R6zSAOe<~xlt`QE9Mng2W0as}q)_GaQzISLnf zUuS;rck$($ z@!r z2CHqad>rqV>G#V!$H`WIw9FlTIl}wR>zIBl&zomL zp~hP>vus?I2l0};0biDDG4;8<`S_g7`HkeV^}5^ml)Q+UyIVhoc{%UJhvlt!LT<-n zGIMI&FK6RDax5P9euH`&c@8Y+8)xx$c?$Q*#5Q)zU3k6B>>D}H?X{dO-nEx-qfA|m zb#gDRmaVo5IUbjKzi$2J%QHAf9>JNi)sQCJJdv4>nh9kZI z+3F0FkA*@Fw`FF~a8qu=#M!z3%sCCr&U|eJUy|vu;k-PK7i4N^n3vn|37MW6W@Y+n znD+jsRXinIPVU3b`lm@eDl@kRo-?=Jjd#md=PudubAK*|ej9jJoI`kv_Y$=?Y?hB< z?$~0MIH#dQw)$J;^_VkUObuqH&Uu)xonvvO_dnji#qw!fARorLGPO5k$-OvTZow&X z8BUbB+lDyrt9NjOd>PZ5)o_&=zjaIIF5Y6MZha@FCTIG7Ye{CK{kbW(PL1}@66XYb z#`_;`;#2ZD%)Bh-ANYQ?eVhLecTrER&X@3r zOul;Zy7e(UC~w2O+*>X0^yKsZtf@|e$T;=_@RvY(iXZ`I7 zTq0Y)^yAhyV)i(*ub#7=t%g)N3@3SCv>xN-X&fUD<4BpDZ{C)f;hQ(*T)ZsD;cMQ1 zLyvD>k$E28`m&hnDg_Po}I@r^L5^i)4lD_JHJV-wq9j3WbV%GI9krb5wi8d z%VNHCIuxp7cFxSEZdG27Z^)cqwX?z`ucYs~V{#Ve z?%jGgKJ5L9#| z&aY!$&Q^bm+>0A!*6QkH?y9a@PQ?}8U%Z2hQ-7O#T$I)*7xD-GV^%js@#DWWom!pf}DYwi`yH4 zPkO(670<|1_=s#d56QK7Tu#9UyvsQM4eGF*WmemWybTY@^!o;1yBOy5##T8B_j-T9 zYUq-g=Nrt+;=f=$cFM%Q(I(g9X4!I5pNo&dRoO z?#4ZG1Kunb;0`$)GgCXO*m5?>`!RRv);HoBxfoZ$hZP`1-0`irMe>rr{--9$&xg{kg07qI?ol zx5a;M44;t)@Nu~vACoKaQ8^PImYKur6W)c_F}W;f;c3hqo%#IrJ@O8`Q(lj^%hkAF z&cS_hEbjJxVFhoJ&tmpl{uij_b!v6qg&XC~xK8FiU*`-L!~9>TA7^I&I=%-m||+0OdQ zLOdi}orALF-{yUmerxE>;?Huv{rP<7{dl9y=QW*jJ8qM${$@EFH^{NL*84A3ah1G) z%jH9u`s}Q~*oE`tE=(@B-iR~gVw@`TUXvt;<9P3d%Q!}!#bNS+Q0TSW@^*Yv<}O}a zmZ|r(YjQrmA}8WY-haM^&&#~OHZLE=C*%>#^Jn${c?X`7E$5_6U9TPVK63_-%G}{= zdu6L_w_J#sk>xx?zxMBX%zw6sx5zWNN46R^%UzgUF5Y^iCg*J2Do5ZZ@6(pEMrMYu zamN;a+GbcL+YGr6w{CS7$d*4>wtlnZIGpbNr^`4|K7;wp^86`tdM#SE`l-pS_u-IC zz4kL2+Qw+ zf5Q3IWAb^tU*;~V_sFbO56c61r`(B|qn-69mAGHd#NBcvrY4IywS?Q{Be+GjoQ-lF z=H=p3akcj!Gn?uP*=j45x8ow&`puDZF?Cp;Kju!VnXmbz)sQSRr|JaRdSosxrVmHS z4LDpT=c{Wnv9GRp{}J!6UYF0}t1>;lx+ss}3vw?e&d&NH`hNAaT!80f>UxzvE#?Gg zzDh1e@@qs+cnJLPuVCYRv`IUU!^5xC0xIP-tCT;`d5wM3r4h4N0ECvU*nGC5vN^)Bea zNpd5Okuz|l_w%bbOs1Er+wv}aQ)WI@%QELwUGvUg!&l_v_`JLyFUWm(UZ#es6LLPD zm1FU=_jA|rluT^Zq-;4y<*j(H+>Uq4m6*EiUY@f$cgU81z&nqAtG3A0Sk)sR!W(3A zRCUN*xK+0Lo8)3#FQ?)fIUG}m)$rNNxJ;hK1@eBJD^pihmfVTc_lQ42xu|Ghep+IkNSeDW_pxE`JDfp81(Y z94jBkQL@z^E)Rx6m3L%%s$7%nG578AsibAf_xV9a_ihr(sTLV~k9Hm637>4wK3G%1xPk_A`uJPCkF-n)lOJFfUtwnjY=nc{%euymDUNffwXX zOg}EB0?*3S{>rpWEw4;@r*qCLlQR2WA+POCXYG|yc^BrHaO=$emECeR=4`i~jR$1< zer1dIQ}pyok4%lPY?e9yl?^iaUSTel=cz8-D%at9IUm=^3AoZbjrqS)Ci7gsQY_El z0(l?KmHTj(+=NrS?dM;;k|;;vXzxE@#;-)kV>l#JXT>d<^D9>6SbW2Kj=QQ@lE?97 zxf`F8>9OLBoP$rv)KGEU`}eQnWAYq6D$|$!yGWbc@Au#d*>die^Y9*-xm65%&r*BE zPTA_*E?fS7nSLvnm*t=3ZY!wUxec$E%W%7#fm>v&ztQ{mm`4RQ+1}qA{IfA=O{lrLajmgje;@mYBfJ}LL&Ik^ebvx}#XFCOxqv7F=baZIfiV}D=L z7x&4nctp0^_{?H{=N2B6>Gz9UL$(BFc`?sy%44IjIF;zZ{oQBD3 zwf%MkUiLnE1z(fr@FjT^pO?4c1$jN5muv6|ISOPM1&P6xnJ>lx?1Ivh^4(m*5DQ*z%C~56Ss5bF|ui zxPWiS%=P6ZnVG#z-7bb6U%n{Q>&xe4YJd5RoP_+|SDsGIMx& zOlGbx@0Xd=%X{QhJna1&ckp)k67H90ai2VjyJhb74@r z;%fOMu8^7k%cb%lE|NFme7P3q$h^OtDRVzBCwr%{?`7`W=A4#uZ($Fe2UdcP0p5ot8D%D%G`Nbm%JHw%5|9Y z+};A*EL;5z-j6f0GVZ`)9>0vMp}`oe9w8{d?h@Ul!TU$`cx;VW_kzU2KFpMQbxE6e}bDZC($V|sJz zJMgT$9#e-~FT~uRv*kSKopctD%DjJJue=HGmaVp3aunta%kwGv{lXUcFz%6e;?1(v zutBcC9kTV<>YaE8GYiX^NPl0bmn~eng?SDv zKK=q`7S7X{TAj&J+9+GjI+=NwR(n6Pf-7X6&C*iYYAcePaK3E)X3AkW&D(yyM`^Nb zH6+M3&sf=djFM|G^RhbQ$oJA6nVc_CldV5|8DE!~z5VxKw?2j!WqN$+g3JtFIxExP zOQ+>5d{U0YGv2XF_=tQ8ACf2VxXc`0Iv_Lem-flb@}&_u7Z1rXc$@b_H}F>Z4DOW= z<1U%|e`%xKjXP!T?WH!k05{9=xYj%7Ca#jt<8qn#zf>ac#f9<~oF}*9Y?;`XxL2EP z40rfalJ^go{Y#u@>pz&s%+7fa=AN9Xx8$}=o%Y|<-8y$$vg|#%fUn8>@fCRkz9ds) z330Y}k~2#<&-}m1QF20Ntz=d{i0RYC4B#o5zDg$LB21i%v7F4pJh6&*%gn80mpp@a z$W|wLUA*OIcFxvsk6eK_%jvj74#(7C@&9WHH_29iy?hAQ$iui&CU;4h+<=Sae4H!C z<1Fv-HO$#|*7!x7A~UCwMEL-Ylegn&nR-hiOMlu{BJb?H#ioTjWEyQRW%>e4T7LE97!aUboj~ z$n)oHGtBq?RjV^cw*16d%&%I%^yAF4`FUz`?!vKhJ&uwKakxxu@f|sY>B06MxPn*Y zllZ#KT#K*D1Neg6j;YD*t;DD0Y|MVQPA$cA-oLVnXXNwvh|GI2^RoC~8O8_X9=uO( z#v?K_D;|>5@t_=uxqHhqO6|p4<$2sIPvDI*`-(f|4VW|BUhbi|LAIQ=-v9F)u9B&- zxLn?hOJu99P>#lV-uutv40#Ht%DZrqY&FEol{iMW9;w4>+aJPV-rwgQUc4=n^TlPE z8NPT;?#5T-Mtn)8#}}!|a(+J|cxp;A2zKBoA)0mgV@7sep&$$mz$}RYy%p6`E zm3dBI+$)FU-QK@^8PmVz`Q=$WAk*ZFTjYM+Be!E_?cysi^K#C_9Wu}Ri>=;!mvECz zA1~I()c9hhyaSiXpUT69!IwMny{XQzU&N)TLy&oX9=$L#I z^Rk!+cutBA%bW0oT!qJE%gKGa_;Ab~a};$I?UZ?5inhyECwJyzEI+k6TfaPu&JCFJ zobz$J9FKX1Z2kT<+$dZ9b@D8(mJeWN=i)iPs8sI2MRGaLk<)Re9EsDs?dMq)CCkjR zC_$dWvGNFxlIf!;T&@p=K1Z!qLu4Udk;(Tt^15~I!hSEB`MxW7Q9g+;$P@UiJcxOo zT>J(+Cs*ScIU6%;i;3Vl`W(-ev*kP>@5cM&c1#a0CJztERvYKp`n~gbn@sHIdgU(6 z%f-~@9i}4AW8Vi|)TMx(6-k(^)Q!=rIlkx#PDsRVoNR--j6xMa^A5T;^amgEnANfax4yc{}=aTKNH{f{ueo4xFH|FoaffJ;mdL- zz9`e<3+Lo)d`9NkdEu1z?dzDlmghEWFC3M}@nLxoPskhbn9Lkrpf|TS5ATuV@v!%Q zuHctzP=Lc5%VTfA?r;YOKWU#OPpcGv`mi$C*{L}wwxm}`wF-Zx6a%OxO?XZj~*6uWbEte=a@}Z}k2}`YT|M zt^eW)%#56=rJzB!`fKIQxJu^pf^xYCm&l2@(0lhyoGqWj8S*qvmG|K!xgW>N9XLkj z%mV7R+IDmQ1z~bTDD*sM*!nMA!^`q%%-3$6yLkSJyc=JVna%U(gt=|;6 z5hu#zcs^QAz?@-q?z)9TGWF;4wOgOVtMVAWAv2r&CAkw{mMic%IRl@Oqwp#3pCd>9 zad`nBlaJt|@*YfYR>RLR?|kmkxdHE&i!gC+onG^YW$q$>r}xgQc)QH``Tg=F?vshl z@0K^>^>Phvmvb<4w6lKpHm;K`C->*pM=VvA5*Jax7zsHJa`(D*V+0_lc^;? zS>~Ml1lekcm7_2(+xs)tW4JsQ3O#p6-iy~{a@z0tbMXzBJ^bVNn4da~>DhS~j(2u{-^6nbpH^=b~c_$u_tT~Nk_?R4nk9x1%z!UNe zCa=Y>SkC=&Bi87qu$T%l&!YyGHajhm+AMj^lv%;tpIP5nayX{doNoJ?K1U# zwnercIotLwlkc;2ax<=$EoZ5mfQ!8U)n=G4+YEDLtCM@Rod0V1(`4&6S?09cdUKhV?Y+kN zx$&~q5F_(>Zlw1=S&w1zLMZg?ZFvIondSK>az1-aW`@sRkt;EExR@+_UZ%%q$z|(H zJP*&#%X}|BdqSSXv+^LGk~d&Jb9-wrb8*haqcU@NcCYt8uHxPDIlN0I-?Ka9A-qN2 zjCtlP=RekCzIHCaob8;5>C=4m7H*X<;wE_-v){#xU}oXmi_7F@Tr4yHXF0>ga97XL zk2AA>mf4yAfw?}LF3;f_5iupEgeya(tjXG~^a4*gjE0n0fo z_u!o}bIYMt7gLJ+WvjDKw*1}R-?n}?$<&*(UOtFhWb)-S${TQm`M5$(#GGw4 z^xwus@&!zsTR)03(AavUqOFDFWl#^K)Ix)ut3=8k+4ugDYly1WZt zmAQ-0EXwrv8S1mzzEzCR%BlFY9Kz(an62#l%#1vXkI4J+xV#Y`kS*svnc6=?&z9$# z=kbutJ%46Uw%WGIrFg4Mzn|eV+q-26bB6PA+$mcPZE_!OmaWGIIUjR>Zf^{(^8SY9 zERpH;GljCvFi*A_X3JJ*hHUv$W$QOd=KVAA-hFF0Qa+Evo-L%#PsRbxwq^%@2^`8(X!1mLbe`5GQHa0|7Ux@-hx+U zaz3*pllz&=-rdALb5Z8~nR7BdK66Iik59?{m>w*DH?w($IOh_4SWdwcGIc#O=KVF! ze1=>W|21+vvq$FhXNKkNc&E%gJj2&6z8v?->9|{F2G4Br?xMeE*2~oUOuI}i&$P(o zex_00fa~NcTp=^eXG-N5T;%;#=KoB-ynu7$DV!@Ku@lWG%|nm32W5;j`XxW9SMdS)G~Op$&LMd_9+WrWZE`K%DqEesvgPmc{yXb;qf8%Jo$^uKEL-mlavvry z&qmnaS^eCfb2;YaoQX^1Xk6&Mcn#;tCvk>+5U0xYk(DHG!truFj*-ci6)7j@4vB}#j?$?K(-m?$~MC++3HM}EkC&||KC`@i88UDj*}yC zg!hFd9Fpflp-k@2_Fka=%vE_9-;jGSdt6L2zAP8vi!x_sp7H+cHGE3u^UUM&EIuY5 zz(?in_^`}eGbiLKJSJ!2J#sXrKC9>aGTtel#pH79pjk@sWzv6yq#Z?as86J+i-Ggh`5 zqP*?rdt`>o^k{!Z(enHy^H{egZ^SDyIqmOibupZ|Zc!%Rx(nWCuVd=7n6vb_j+gTx zd{Q35b22kqHzU_z;#_~aJgKJOXL(>C^P?cdES4{v%fA| zK8`cwF`Oz7;3Sz^*2Q?AnZ#k)OlPcAI0o(>m#^8?!mcoBhHffJR@C>$BEv5yoTdsW|qNR zEax8|#}P8mV+Qx<)|tW6x8!cTDs$G;H{>FGSx&(h<#2q?`y_Yu^ck7=r%%a8FlXCY zC->rGGBbYqsLafso{-D&m`txv@0Vlo9`8T8iHBusd3vWjhqucIFn43;{?Rr}Z_eD? z)0^Zvyk0KE?XvaQB8OvUVS7(lkL+=t$JH{=+S8@-5N2L3hBKeek$Ik<&Xn_TnrwX~ zd;cNxemX(6{CsA4{%{;e$<_-sx%IYCD1A*X!z(hm)33{6_^S8u%Xm?q!x!XHd{*9y zPs_|8oj5z|cp09N=_CD!9D@&e{{hcVI<;E-ACNnpJ8+)G`(!(7L>|C{awn!Y7hi*^ z!#N-K%1O9O4&ja7bM%+aev6+wiQ8mqNpFyM;#!#;=~Z$QE|*JjiJXCXCS1;F%$=Ek z{|3&M&)`&kC*##jBGtd$~8DlrpKpl%iRA{H@#=MTl@R1E$8e-d_|tc z=Vj*l)PmfH=VkhO>V!-mPqD}4vHa8Czqg8~WO{jOQl7xvlg0nuAf_MZ4S2U)jd#h} zc!wN~xmSxnb{%h#PvIWeX}sL}2%eDXF>Op{u4(&a z=9D%pXW*T36z=z)rrtE3C(Ai~0(Z;S7d^OjV$;^kmY+Gg^%C47TQ7~?_UD(=s%3gj ztB{Z2Qh7HnlDl!f+<y+uhhya#Om9}((NP>OZx4l@yd!VKYjQm% zmy74DC$Gzic+vZ}ZsQB`WqejXiBHRun6E9*Zw=!)xffHDTW`ikWajqdxJ*w^GHVwT ziT8OQxq-Q3TR*~?PY%h`cu?Mtx5@o@tIYj8*(FzDdUknu&Y$d*nctIb-oI%*QlG`x zpM8F^LAD-iW$JyBTrP(5pQHz8o{=XD<$9bg=iv;Q`*||ed&>GslIL-}Z24p4?U-3u z{weDvOfC(DQg6!SOI?;j_?q_*7x5K&7GIM0aeqZSd7`@oQj#Xa|E99 zK71Wd%H&8rC?Cb6GIyA|SGKcu%gj4{exA^%l7`@9A1){{S%kveVET&OdmcYH{nwC zOL$J^K2v7oam?9P=Qus49Fn^+pSg8w?_Xoy zDfDA|f9(wBGv_JH{W4ncL$Bv6Hn z=Z_c2c{ods#p&L^as#Kx)>ooDj^kv@A1zbk;}Np;!i=njUm-^_b(=@;VDdU&!b|co zd|BRyFUni+Ik^S%47t7Zk$g%{!tA&8|9J-=m9Jp#z^xOTJRu*#%*d^CSIPV3KDh4LCt&KZ z`0wAwMKUu>&X-T(9C;jP%7Zvr-i*oR^6;D|$I2y`e%!kC7%sE+*d6bE^!V7Cynt8a zDSTBP!HaSqJ}dK_K6Y9z#MEkM?W2~*=DdG-70<|)|A>4D^RoC~rkBU)&AAirlPfW2 zyLI}0Y)Fp8?6GzGGk1?|lTYHU@s9+sKGr*_JPn7LbRzYvc5yoVPtJ=ps24BjML4eRAD+%DJR7C9R? z$`QEE`{ylZg*=N(E~`L(4c;K7*s=DNJvc zbBOvAc~+e1HE~UD#oU2gFUQwq&Plu~hwugO?=IrA@^O4xK8R1sgLqEfgqfq||86}# zBIn^lGPNf%3yaycin%lA^O(Aw$&olD@5h|s)(7x5xf5@dD{-%!i8soTm^j<}b4$2c zrmn;W*>cv(b+}4S#pT{RZ{QNyYAcktV|ugvJFVXgITy3vtw-Y|@1M0A;^pHwMz$U! zG*2btlcmt^XEl&{@7`5#@7>G#ojxecF? zOYyW!?T=2$;ds*fXQ=LEpNuV`sc(liR#~Nmj z#q79T#hT{Ok5^&7mpTu|MW60kk4XjvU7j>D9(~caJo#5 zk0#2EI8H9a5i;+OhP=0vGvSuZob2ZlS^n*tFwc`S&r||4b*8q2%iceA9@D?A{}lZu zoRPQUQ*tvtE>lCoF*zO|_1;F035R9wD`7$&!@Mm2Hp{t3W`+sFGBZoqDKmqF?J_+k z^m~7Y+7tR@>PqOA4`TYX{NLGz+vN`2B3I%@nRzGF$u@^-?*ZnNP$4segi?7D7s-P- zN8W%lKu`|$4~OL<@pw~ z`6M$kZ@q=N59bq@^PER9y*Y2e8)d7ZQ!c=5avW~<{^kwLENt&LPvTnHa+b^exJ2&2 z%*(}B;XK*u%$6;GhW8fhH&teSpG=Yu;~04eN6OteOs4*L?!eC4!uj#!a!$j`asx?X12dc(1$%@0PiX z_+4@v-XT}u0XYj3=ki419`B#LhBwHkaECmOnTy5$B(d@JvgM=)w;qoxy?Za?GMVQw zzF4-}3gjxBD_g(m-aoN|Q{>Y)QMMZ5vv6c>yL$!q$<+8rw>*tE$@}nnnSGD6%N@8yF2{{>8m^WjaE15R zuHjOdyLhBXroTt1&uaVHZk!|c;!L>-lh?(t?~w#K3CDVO-NNDW$xtZnj!e$DHJRGu z=-Kjg<>Bix_Z)ZC`>WIzwW0o|6>Iw$!BrA%$(w4WM&W-DR<*A zxjqzn_@-Qdm*qr!&3hyBfB1^b_us>pQ+jB_47 zC?Cb6GI#RuUfJs0Epv|#@ABS2y$|n@XYhc$9rwuXc(YuJH^^2)hxd=J;Z~U$KHMZ9 z!klf-)sJ${!`z3nF?o0xeK%3@~r3l zha==d9FnO&mb-B=ti`T+|Hu`5Lq3U@C}1c6>&z#HZwJd|Zyj+_#<8$vLsq z?R*{|mXF{Gc^L1Pd+;8)8S|OjTZ(te>3F*wiTl03avk@{^SE2)oY?j9Af^Y)`IQa0 zQ7*!DvgNGy?x6433i$x04%^$Y8MDXPYRi|SagO(g)-TVW#e6u0xdZ22I6<}=n3r3( zc}B_BW4Ig&g&w-&-F^YD$>e-(PbXF$+L#Ji>edwh3 z2jqBYPCkygC)@kM0enc_j>l!{e~8aqOfB9g=i?DM5f6E{-Nb`3wLG*{p2EE{`yT3& zxzC3-%B{FlF2`+hCZ2!&#ZvvXU?X+P7`nS3$J-tVpAYcjKsp>B(LkJ@4`$<6q@ zOusSnayUNW-Li;hWon3-mPhcEOph^>GWQj8P|m`mvgO?E{Vuh{P>0p?F6YG1k2CvX z24w4Ti@X8%$TgVn6Bo}cWBAND3Uim{=4-e~rl**CnHpo*?_z8Yl`{Ea%4A|=ie>IC zra+FxS>Ep~<8*ler^w7BCQ+u>m^hi*W1?m1iiwa5aY#-Gg&th>Zd$`PYCKZo_BfQhZ9L#s`mifB6nRDqq4AGVc$L$-Q{L%$y$FBU_!r-i_SjgFEHJ zc)Pp>_sdndTh73n z#yPUpnJHWTG}-!1mO1l5`m~%41vpA(?ZI&Gw{C?((RXC(kLJ!S{;fH@A~VbA>+%kK zRqn)#as@ssXJBe|c{nrrq<8%dOkP{BU%)&E&POmW=RNq4+=IvE2E0#ZHqj$;3LcWV zi|9e`H>ojtn|umyl_xPXva{aYiM!;Dn10-P4Q`WjFlXC(-ECYeTh1z(TB6J44qPI0 zZ_$Oa)t2Y|#%Y`_TfeDtH%^l4aJ+0a#K=)N(!17rB(K$0I~NK)Kz+`8@lBbW4_uS! z;{l#^7sCu6;J%%i;REMo@;$)a*!t__e_&pw-v>^}2l1@D4Nu7(cv5CI4-n__Q2zs? zavY{UTd$$U2X@OB@Gki%-XZh(16$;7+#@&P%`)?TV1t~7sl(-uz^&e|F@p!#W9zS- z#P#wRu9P|Rfiig`E|$5A2MT1~AIO!HaF%!V9h@#-!YT4GOwV?1^*$UeZ^0qCIuwe! zC6hC1)%(>Yd_z8h`P%ZlI)E?B)E0G7=FF&b-c|G)bxJ;gkIURc6g63%Dr$&g*3Qf( z>aa|YQ4=z?M=>Ld`Ondc#@TaLw>yesK7iaoZs zavrzH)DqPwb50aJyBPLGk=NPgP$B2zQaJ$^dB4J3qxj6?Us=GJ@?o4N(^FKkOpQ_O zck!GbMXk={i;9wojSBa!xD^WBe@8x#SLA7YUEYhY%FO@%MY$DUkjwB{nP=+$({dO- z>HS6a-9IDG;v@2YJT7m<2jpVBPp0oG0(X*|OD{AzS`b+4@bA zdA~p2`wMG0Qa+EFsn!35nNTS5woLtzH{}7mEO+8-ay7mpXW>gSxg!_6?eANNoR@iz zJRu*#v+^+J`LG&Fd+?OZ%pxb{B79Iz#CyG8qTa~e@*-v~mggnzB65e!zDRm->w}nQ z&Uq8&Jm*@xS-!e+2$D`TaO``Uhlglx8PNoocArsWSK`BRCZ3R~_r5XjBI>_yzkC+&k&ohGc`x26_u}nx zBkq%}mu@*3Z<3k8ebi+2eC`Tvmrr75;nu0^K5{wlz;$vbu8^y7sho?8WbWd=eDA_F zoFg;8`{>zn7S7@{nO^UsKDWLV$I7iZN-hnBBJRjBn7kJM0y!gAWx^G zsV(AycL8e=XJz`0pnuC*upQ6I%qC(+wi=Ge)EjZg`*~`K;B4FbJozFH$dh=VY&nPI zPCO`A;cap@-YQ#<+^glxU&dYX0^TTdegwH(%ud`a^La#rT#I?Rm^{pR&Nhc~@8@pf z68StXl<75sJr@7mFwT&vB_dVkoQNcueG%k!@vKGAgE{Xuj+8IqFqygD%V#cT52jD& zK737X!B=GFe=qx84A0KJ)ao3LnTz?e-1)up@^O4Z9>vpgKc14?@Ig5j6K8qs=VRTw zS0>-RyJf3$m(1+%-60p?0XYnB@qYF+-Yk#f4KjCrZ-;C(w8|y8NlwD`-Z?jMjeG`I z%9gWOrj~oD!|KoB8Mv2zoa=CwY;~r~mOsVYeumAxiSk7pCr{%Dc@GZB^cQ|hrvC6% zxdPviIWv4oj=`6`v#(>$u-dXuVft|%$9(O)6LWvg%rE?y+<=eDMfk8xAK??;&)mji z@&!!YmggCAgb&N3m^0k^HoRS4kNf2s+$ZPZZkgGHZ}QGs!R_(_Zjle;I(aLumMteU zvU9VNG0(Kwenvt#{W#NKc)o14<;dg<&y=lS_FKID+5PYY`5cawt%fL>Ucdc5b3 zOfC1U$*Fk7dmTCNxhh}4i!w93hp+A2bGctAEbI3d6 z8XlL)anAvn`tR8%@5Uo?FCLOx@St3bsl#f^NW#RK?a%w(( zEE9WAgUlV?Q!8iTaybT^+$A%^upM$V?*rbcH+bJ7TaP{RVcs{( z!@OIc)yL~Q1MUjABVfKyKaS_ul#iVraKc@GewT*MUk!LZ;9~(F2$*~SsGjcy=KsCG{J$5N|Mvp(9|_EVBryMx!2Cx7 z^B)P!e%0`ngU%zq>>|B=A_M*{O73e0~fF#n;z{D%Vb9}3KWC@}w_!2E{- z^B)S#e<(2j?*``o-N5|68<_uh1M~lGVE*3?%zqpIT>t2MWLx-Me}~zAwEmsI_w09u z0_*hhaSZi;Y-;|<12+Q>{Mt1z9#|g;n3;UMw=m$?yZ(0I*Q;*_zW2Y)U4OLq+uZ@z z1{~=3+kt-jFW!ymp9+{~=A)ebodK5x9O&16uj)tf-wO2mt-!CP-`X08;eY>p9G@RB zcm2`&)Q4D|cWK)>G%^!v@guk+tbyqjms zO2DTA9u2rR;JSbVcd;c<+c(bLjrqo8z+P3#&MoCJ4)TfmFJsLz7Qs+VE!%FtJ3SXWsS{6*kYFxERC>z&`Lp7|TV zsQLUn=u^O0Zzww`9@aar5dLKFc;%82@IEls zTY~kLV7(=A>VNz)7_SA7cS3Ilmw@qF@HqCO7`YX9tG{?X7;{vNJ}Hh;&-YQc?;nER z0Y(phHAHpy=bM??j6)7_twzeJ^)5dqEVA*?7RCjB1}zWiI%^DKK}~({3|W+V6MNC0X3$16`9wCow)4PFbb z1ZRSEmObz59C_aFSI_%ef6x26M$h|Nf6x0`f6x0`f6veT9q9snN)9|0c%?+5P#?*;D$?*MNFcYxc$t>6~$YVb;MBX}9O7F-1` z2bX{g!E?ZQ;2dx!cse*0oCJ;s$ATw=CxXMl4a z0cV1zgHypt;COH>crth*I2=449Hcz|3U~}W3O)-y1s(#Q1Rnz*1|J0XfqTGvz`MZP z!CSzaz#G8p!E3?I;3jYbxE@>sUIZ=!7lRAH`QTh|HaG)34V(f_1Wy6SfTO^X;0a(4 zI8eFtGWa6+JopTF1Uv{n0X_=u2Oj|Ug1f<8;7;&1@MiEva2t3Xcnx?Jcm;SlxDH$m zt^}8Yi@SYV8aNr80FDDkgC~I_z+vDJu%kTh68Hl69QZVN7(4(z4n6`t z1l|wc2i^amV3Z$V5z_L zKDLw(-1(toco-%McSn6gx?$5-rjP-sW>;1m;jP=O8TbBK@>`^X~c`eoW@n#Chx(xD$-^K8E!^hV?!css2LQUlX(N09fYB>J4D5w-DFK7u`+b4K+!z2J6mJs5SH z6AwL5dG-K!HyHgk8~rvL{Wcr(m5=$#$DZb6zVgv;`T6=>`3c}4<%b8s=(mU0L$3y- z-yWW%`m9lKKX@y+30wqD1*1>CJEZz|yTPsC8t_ao`XukN>Urpsylv1|f{|NZ3UuW5 zonh6#gWSH;0=*189UP(T{;V0(hq-;=c5ody2OI^SpszK#9&n)YLsAFx?^X|81WR98 zUGlLkb81=o#PSKS)YIy+@0JgMWsa;awX)m=?gY!eSkGqgMsOQ=9e53R6?g@BIaq3I zpG*4OawWJFTm+sAo&}aZv~jY)GS^m511EzMz;WPcu*{u}BfVrf3>*S>lxJQ7UjUy2 zp9T+u2f)X{N5F@``@#Fbd%?TGJHT7P9pHAbTnEhBb82)Ja-{xdrgCDHAC&$#`h$|c z-{#?n~C*iN^h8RGi9zV zSAny^G8e}40M`2e*82d~`@kyri@`FFHqHd)j8kCgVdKeY17j~TkXuHSdhQvxpX(Zl}VRpkBN82|4o^0BPN%!vPY75Vf))&0M>$g4+Pgnk}; z20Q{D1fKv){mt`6^@9(9d%@D@*53v01aAXN-K>8jSoX#0(m$5hfTahlz5*1bhg*A1pIv{d>W?!7{(rvlZL{ZU?u5TfnQqE5VK6W#C$H6}TK+ z0xks40q22pz?tCb;8buDI364eo(!G{4hN412Psdw0v-d8g3p3afrr2+!N%a=7%N(ZdgbJHX4pd0?rVJ=aloe}=iyzt{zC0n5HykL;J_NaYFVz|!Z& z!iC%740 z0!{;uS9X6cr9WoqvEAUc;7V{NI7;~~oukmV`k`z6L*LRhhQ6is4}DAPANrQoKlJD+ zjdN7%A9{2Hbe+@CqdKRdN8{A?~z*z4QtoI1k zdqig;^oU2#{lhT02iyk6djEj+{sHSfd|Ca6kAbyMLJzNoF4uX}1BbER!&vW|Snr!U z`=M`k=(%so>x+r=ruJ~?n+ebZmHYL&6xxry=tpk-CGcwxhxSiU{om0i|Gp18>h|w7 z(6hnl;aB9j{O`d+Uy=Q?ENiix2hIV@Tv*R^a4I+n91o5KPX+AQ1Uv{n0X_=u2Oj|Ug1f<8;7;&1@MiEva2t3Xcnx?Jcm;SlxDH$mt^}8Y zi@SYV8aNr80FDDkgC~I_z+vDJu%o>768Hl69QZVN7(4(z4n6`t1l|wc z2i^*zO}kM zujM)5c;ybMoAGpP0ZZRny%3xNmVGy#|0eroS?X+gJy`nO>N(&Tio`}m7Q=z+@ZC&0VGYr%4zG0)YW364^Be-FCx{2YDqbD0aPH-M4b&l8{{w+$y% z$N$S2x}h0*5jX`rUirmga5s28xC)#Bj!>?a9{7^)=i`M|w?UV=wz|Zzj6JO`hCU69 zoU5e{_S_J#qtE62{d4{to{*k5{wEH@a{&5gu;g#{;)z!1a&573P=_Z5J&pT zoLg}gd`dkPgV3e^*53us4(O}FE8%H?UI5OAN9NJSj{`@;Gg0;OQLyB1>Qg=fy%&uB zDVJF`&sDw_jQ%WdRDB+5I1e?PmjusvaFFIxa#{5fnOXC^B}d^o1br(QGgz_#dOf%X zaVnu_fhB)apORGQa*eY2NdDF%eQWf`2f)YG^LW4Ng(cuZ^%TnfnmC1t;3@FP{u0Kj9ZW7Z#}W97hD04si)wa z>a#n++tf2#_SeLp-3VR=kL<7Y0(4X$_XEOf$A@$^+fZhd`{LR|) z(VzJ;<2H`uZ#{L;XMttLttUhET+}cZHOxH^5Be?lfX2z)2Twb=6`r-w7lF&*DT1B` zPKGBQy3Dv)`$LkyS(p30A6Azcw=DTvkMyn8H-R_6)1rEI3^+7=-I|E&2+9{W&!Xo=AAmpGh*~=6RDOf3xBWz=+AhWaqE%%jpy!*s^5JSEHiFBeX7TzhOww&Y&|^ax7b{b6PpE3GdMj9F+rv>P;BD}9KyL&ugQo_%%(%(tR>|M2>(+GWGUL`G`CE_ltf2XbSgjRw})e|cFYdxvpBzRJm^pNcaT~C26)h) zAu{9EBl(-Phm=5<8MhwE-+B_Dhk#|qjVJh`>dqeUF7-IFzb3x33cLay*eNC)OkTYjXGmxqTwnK;!x3AUskN>u-l=o$4QL z0dG>zN2uXPHSjEgrxd#EwRx_OQs7B|9;kdquTddqEiLtS zo@1!_v7_oab_kx$;EnLKLdSLHSS36q@T7s0;faTi+}@J4nErWdR6TDYx3~7gBfV|v z^VWLsT6k8f{w8Mm&2{Q|b2U7r;39bDKu-Y2!82L)eq3kz X6g>ODd*Q(>xZi7J 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 OU-AX;!!b`Jo&A3i4oH#! literal 0 HcmV?d00001 diff --git a/BaS_codewarrior/firebeeV1/firebeeV1_Data/FLASH/TargetDataWindows.tdt b/BaS_codewarrior/firebeeV1/firebeeV1_Data/FLASH/TargetDataWindows.tdt new file mode 100644 index 0000000000000000000000000000000000000000..6ab297f02ffaa766c7fa19a6109eea6461f04da8 GIT binary patch literal 430883 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 literal 0 HcmV?d00001 diff --git a/BaS_codewarrior/firebeeV1/flash_config.xml b/BaS_codewarrior/firebeeV1/flash_config.xml new file mode 100644 index 0000000..ce2e67e --- /dev/null +++ b/BaS_codewarrior/firebeeV1/flash_config.xml @@ -0,0 +1,47 @@ + + + + + true + 5474 + PEMICRO_USB + true + C:\FireBee\codewarrior\firebeeV1\cfg\mem.cfg + 0x00000000 + 0x00006000 + true + false + + + + 0xE0000000 + M29W640DB + 4Mx16x1 + 0xE0000000 + 0xE07FFFFF + + + + true + C:\FireBee\codewarrior\firebeeV1\bin\FLASH.elf.S19 + Auto Detect + false + 0xFF800000 + 0xFFFFFFFF + false + 0xC0200000 + + + + false + + false + + + + FileOnTarg + 0xFF800000 + 0x007FFFFF + + + diff --git a/BaS_codewarrior/firebeeV1/hardware_diagnostic.xml b/BaS_codewarrior/firebeeV1/hardware_diagnostic.xml new file mode 100644 index 0000000..b45676f --- /dev/null +++ b/BaS_codewarrior/firebeeV1/hardware_diagnostic.xml @@ -0,0 +1,40 @@ + + + + + true + 5474 + PEMICRO_USB + true + {CodeWarrior}\ColdFire_Support\Initialization_Files\MCF5475.cfg + + + + read + long_word + 0x60001000 + FFFFFFFF + + + + read + long_word + 0x00100000 + 0x67 + 1000 + + + + true + true + true + 0x00DE1000 + 0x00DE11FF + long_word + 1 + false + 0x00000100 + 0x0000FFFF + + + diff --git a/BaS_codewarrior/firebeeV1/headers/MCF5475.h b/BaS_codewarrior/firebeeV1/headers/MCF5475.h new file mode 100644 index 0000000..8feab2d --- /dev/null +++ b/BaS_codewarrior/firebeeV1/headers/MCF5475.h @@ -0,0 +1,93 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_H__ +#define __MCF5475_H__ + + +/********************************************************************/ +/* + * The basic data types + */ + +typedef unsigned char uint8; /* 8 bits */ +typedef unsigned short int uint16; /* 16 bits */ +typedef unsigned long int uint32; /* 32 bits */ + +typedef signed char int8; /* 8 bits */ +typedef signed short int int16; /* 16 bits */ +typedef signed long int int32; /* 32 bits */ + +typedef volatile uint8 vuint8; /* 8 bits */ +typedef volatile uint16 vuint16; /* 16 bits */ +typedef volatile uint32 vuint32; /* 32 bits */ + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma define_section system ".system" far_absolute RW + +/*** + * MCF5475 Derivative Memory map definitions from linker command files: + * __MBAR, __MMUBAR, __RAMBAR0, __RAMBAR0_SIZE, __RAMBAR1, __RAMBAR1_SIZE + * linker symbols must be defined in the linker command file. + */ + +extern __declspec(system) uint8 __MBAR[]; +extern __declspec(system) uint8 __MMUBAR[]; +extern __declspec(system) uint8 __RAMBAR0[]; +extern __declspec(system) uint8 __RAMBAR0_SIZE[]; +extern __declspec(system) uint8 __RAMBAR1[]; +extern __declspec(system) uint8 __RAMBAR1_SIZE[]; + +#define MBAR_ADDRESS (uint32)__MBAR +#define MMUBAR_ADDRESS (uint32)__MMUBAR +#define RAMBAR0_ADDRESS (uint32)__RAMBAR0 +#define RAMBAR0_SIZE (uint32)__RAMBAR0_SIZE +#define RAMBAR1_ADDRESS (uint32)__RAMBAR1 +#define RAMBAR1_SIZE (uint32)__RAMBAR1_SIZE + + +#include "MCF5475_SIU.h" +#include "MCF5475_MMU.h" +#include "MCF5475_SDRAMC.h" +#include "MCF5475_XLB.h" +#include "MCF5475_CLOCK.h" +#include "MCF5475_FBCS.h" +#include "MCF5475_INTC.h" +#include "MCF5475_GPT.h" +#include "MCF5475_SLT.h" +#include "MCF5475_GPIO.h" +#include "MCF5475_PAD.h" +#include "MCF5475_PCI.h" +#include "MCF5475_PCIARB.h" +#include "MCF5475_EPORT.h" +#include "MCF5475_CTM.h" +#include "MCF5475_DMA.h" +#include "MCF5475_PSC.h" +#include "MCF5475_DSPI.h" +#include "MCF5475_I2C.h" +#include "MCF5475_FEC.h" +#include "MCF5475_USB.h" +#include "MCF5475_SRAM.h" +#include "MCF5475_SEC.h" + +#ifdef __cplusplus +} +#endif + + +#endif /* __MCF5475_H__ */ diff --git a/BaS_codewarrior/firebeeV1/headers/MCF5475_CLOCK.h b/BaS_codewarrior/firebeeV1/headers/MCF5475_CLOCK.h new file mode 100644 index 0000000..96e173f --- /dev/null +++ b/BaS_codewarrior/firebeeV1/headers/MCF5475_CLOCK.h @@ -0,0 +1,47 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_CLOCK_H__ +#define __MCF5475_CLOCK_H__ + + +/********************************************************************* +* +* Clock Module (CLOCK) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_CLOCK_SPCR (*(vuint32*)(&__MBAR[0x300])) + + +/* Bit definitions and macros for MCF_CLOCK_SPCR */ +#define MCF_CLOCK_SPCR_MEMEN (0x1) +#define MCF_CLOCK_SPCR_PCIEN (0x2) +#define MCF_CLOCK_SPCR_FBEN (0x4) +#define MCF_CLOCK_SPCR_CAN0EN (0x8) +#define MCF_CLOCK_SPCR_DMAEN (0x10) +#define MCF_CLOCK_SPCR_FEC0EN (0x20) +#define MCF_CLOCK_SPCR_FEC1EN (0x40) +#define MCF_CLOCK_SPCR_USBEN (0x80) +#define MCF_CLOCK_SPCR_PSCEN (0x200) +#define MCF_CLOCK_SPCR_CAN1EN (0x800) +#define MCF_CLOCK_SPCR_CRYENA (0x1000) +#define MCF_CLOCK_SPCR_CRYENB (0x2000) +#define MCF_CLOCK_SPCR_COREN (0x4000) +#define MCF_CLOCK_SPCR_PLLK (0x80000000) + + +#endif /* __MCF5475_CLOCK_H__ */ diff --git a/BaS_codewarrior/firebeeV1/headers/MCF5475_CTM.h b/BaS_codewarrior/firebeeV1/headers/MCF5475_CTM.h new file mode 100644 index 0000000..1b516fd --- /dev/null +++ b/BaS_codewarrior/firebeeV1/headers/MCF5475_CTM.h @@ -0,0 +1,76 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_CTM_H__ +#define __MCF5475_CTM_H__ + + +/********************************************************************* +* +* Comm Timer Module (CTM) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_CTM_CTCR0 (*(vuint32*)(&__MBAR[0x7F00])) +#define MCF_CTM_CTCR1 (*(vuint32*)(&__MBAR[0x7F04])) +#define MCF_CTM_CTCR2 (*(vuint32*)(&__MBAR[0x7F08])) +#define MCF_CTM_CTCR3 (*(vuint32*)(&__MBAR[0x7F0C])) +#define MCF_CTM_CTCR4 (*(vuint32*)(&__MBAR[0x7F10])) +#define MCF_CTM_CTCR5 (*(vuint32*)(&__MBAR[0x7F14])) +#define MCF_CTM_CTCR6 (*(vuint32*)(&__MBAR[0x7F18])) +#define MCF_CTM_CTCR7 (*(vuint32*)(&__MBAR[0x7F1C])) +#define MCF_CTM_CTCRF(x) (*(vuint32*)(&__MBAR[0x7F00 + ((x)*0x4)])) +#define MCF_CTM_CTCRV(x) (*(vuint32*)(&__MBAR[0x7F10 + ((x-4)*0x4)])) + + +/* Bit definitions and macros for MCF_CTM_CTCRF */ +#define MCF_CTM_CTCRF_CRV(x) (((x)&0xFFFF)<<0) +#define MCF_CTM_CTCRF_S(x) (((x)&0xF)<<0x10) +#define MCF_CTM_CTCRF_S_CLK_1 (0) +#define MCF_CTM_CTCRF_S_CLK_2 (0x10000) +#define MCF_CTM_CTCRF_S_CLK_4 (0x20000) +#define MCF_CTM_CTCRF_S_CLK_8 (0x30000) +#define MCF_CTM_CTCRF_S_CLK_16 (0x40000) +#define MCF_CTM_CTCRF_S_CLK_32 (0x50000) +#define MCF_CTM_CTCRF_S_CLK_64 (0x60000) +#define MCF_CTM_CTCRF_S_CLK_128 (0x70000) +#define MCF_CTM_CTCRF_S_CLK_256 (0x80000) +#define MCF_CTM_CTCRF_S_CLK_EXT (0x90000) +#define MCF_CTM_CTCRF_PCT(x) (((x)&0x7)<<0x14) +#define MCF_CTM_CTCRF_PCT_100 (0) +#define MCF_CTM_CTCRF_PCT_50 (0x100000) +#define MCF_CTM_CTCRF_PCT_25 (0x200000) +#define MCF_CTM_CTCRF_PCT_12p5 (0x300000) +#define MCF_CTM_CTCRF_PCT_6p25 (0x400000) +#define MCF_CTM_CTCRF_PCT_OFF (0x500000) +#define MCF_CTM_CTCRF_M (0x800000) +#define MCF_CTM_CTCRF_IM (0x1000000) +#define MCF_CTM_CTCRF_I (0x80000000) + +/* Bit definitions and macros for MCF_CTM_CTCRV */ +#define MCF_CTM_CTCRV_CRV(x) (((x)&0xFFFFFF)<<0) +#define MCF_CTM_CTCRV_PCT(x) (((x)&0x7)<<0x18) +#define MCF_CTM_CTCRV_PCT_100 (0) +#define MCF_CTM_CTCRV_PCT_50 (0x1000000) +#define MCF_CTM_CTCRV_PCT_25 (0x2000000) +#define MCF_CTM_CTCRV_PCT_12p5 (0x3000000) +#define MCF_CTM_CTCRV_PCT_6p25 (0x4000000) +#define MCF_CTM_CTCRV_PCT_OFF (0x5000000) +#define MCF_CTM_CTCRV_M (0x8000000) +#define MCF_CTM_CTCRV_S (0x10000000) + + +#endif /* __MCF5475_CTM_H__ */ diff --git a/BaS_codewarrior/firebeeV1/headers/MCF5475_DMA.h b/BaS_codewarrior/firebeeV1/headers/MCF5475_DMA.h new file mode 100644 index 0000000..a9667c1 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/headers/MCF5475_DMA.h @@ -0,0 +1,202 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_DMA_H__ +#define __MCF5475_DMA_H__ + + +/********************************************************************* +* +* Multichannel DMA (DMA) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_DMA_TASKBAR (*(vuint32*)(&__MBAR[0x8000])) +#define MCF_DMA_CP (*(vuint32*)(&__MBAR[0x8004])) +#define MCF_DMA_EP (*(vuint32*)(&__MBAR[0x8008])) +#define MCF_DMA_VP (*(vuint32*)(&__MBAR[0x800C])) +#define MCF_DMA_PTD (*(vuint32*)(&__MBAR[0x8010])) +#define MCF_DMA_DIPR (*(vuint32*)(&__MBAR[0x8014])) +#define MCF_DMA_DIMR (*(vuint32*)(&__MBAR[0x8018])) +#define MCF_DMA_TCR0 (*(vuint16*)(&__MBAR[0x801C])) +#define MCF_DMA_TCR1 (*(vuint16*)(&__MBAR[0x801E])) +#define MCF_DMA_TCR2 (*(vuint16*)(&__MBAR[0x8020])) +#define MCF_DMA_TCR3 (*(vuint16*)(&__MBAR[0x8022])) +#define MCF_DMA_TCR4 (*(vuint16*)(&__MBAR[0x8024])) +#define MCF_DMA_TCR5 (*(vuint16*)(&__MBAR[0x8026])) +#define MCF_DMA_TCR6 (*(vuint16*)(&__MBAR[0x8028])) +#define MCF_DMA_TCR7 (*(vuint16*)(&__MBAR[0x802A])) +#define MCF_DMA_TCR8 (*(vuint16*)(&__MBAR[0x802C])) +#define MCF_DMA_TCR9 (*(vuint16*)(&__MBAR[0x802E])) +#define MCF_DMA_TCR10 (*(vuint16*)(&__MBAR[0x8030])) +#define MCF_DMA_TCR11 (*(vuint16*)(&__MBAR[0x8032])) +#define MCF_DMA_TCR12 (*(vuint16*)(&__MBAR[0x8034])) +#define MCF_DMA_TCR13 (*(vuint16*)(&__MBAR[0x8036])) +#define MCF_DMA_TCR14 (*(vuint16*)(&__MBAR[0x8038])) +#define MCF_DMA_TCR15 (*(vuint16*)(&__MBAR[0x803A])) +#define MCF_DMA_PRIOR0 (*(vuint8 *)(&__MBAR[0x803C])) +#define MCF_DMA_PRIOR1 (*(vuint8 *)(&__MBAR[0x803D])) +#define MCF_DMA_PRIOR2 (*(vuint8 *)(&__MBAR[0x803E])) +#define MCF_DMA_PRIOR3 (*(vuint8 *)(&__MBAR[0x803F])) +#define MCF_DMA_PRIOR4 (*(vuint8 *)(&__MBAR[0x8040])) +#define MCF_DMA_PRIOR5 (*(vuint8 *)(&__MBAR[0x8041])) +#define MCF_DMA_PRIOR6 (*(vuint8 *)(&__MBAR[0x8042])) +#define MCF_DMA_PRIOR7 (*(vuint8 *)(&__MBAR[0x8043])) +#define MCF_DMA_PRIOR8 (*(vuint8 *)(&__MBAR[0x8044])) +#define MCF_DMA_PRIOR9 (*(vuint8 *)(&__MBAR[0x8045])) +#define MCF_DMA_PRIOR10 (*(vuint8 *)(&__MBAR[0x8046])) +#define MCF_DMA_PRIOR11 (*(vuint8 *)(&__MBAR[0x8047])) +#define MCF_DMA_PRIOR12 (*(vuint8 *)(&__MBAR[0x8048])) +#define MCF_DMA_PRIOR13 (*(vuint8 *)(&__MBAR[0x8049])) +#define MCF_DMA_PRIOR14 (*(vuint8 *)(&__MBAR[0x804A])) +#define MCF_DMA_PRIOR15 (*(vuint8 *)(&__MBAR[0x804B])) +#define MCF_DMA_PRIOR16 (*(vuint8 *)(&__MBAR[0x804C])) +#define MCF_DMA_PRIOR17 (*(vuint8 *)(&__MBAR[0x804D])) +#define MCF_DMA_PRIOR18 (*(vuint8 *)(&__MBAR[0x804E])) +#define MCF_DMA_PRIOR19 (*(vuint8 *)(&__MBAR[0x804F])) +#define MCF_DMA_PRIOR20 (*(vuint8 *)(&__MBAR[0x8050])) +#define MCF_DMA_PRIOR21 (*(vuint8 *)(&__MBAR[0x8051])) +#define MCF_DMA_PRIOR22 (*(vuint8 *)(&__MBAR[0x8052])) +#define MCF_DMA_PRIOR23 (*(vuint8 *)(&__MBAR[0x8053])) +#define MCF_DMA_PRIOR24 (*(vuint8 *)(&__MBAR[0x8054])) +#define MCF_DMA_PRIOR25 (*(vuint8 *)(&__MBAR[0x8055])) +#define MCF_DMA_PRIOR26 (*(vuint8 *)(&__MBAR[0x8056])) +#define MCF_DMA_PRIOR27 (*(vuint8 *)(&__MBAR[0x8057])) +#define MCF_DMA_PRIOR28 (*(vuint8 *)(&__MBAR[0x8058])) +#define MCF_DMA_PRIOR29 (*(vuint8 *)(&__MBAR[0x8059])) +#define MCF_DMA_PRIOR30 (*(vuint8 *)(&__MBAR[0x805A])) +#define MCF_DMA_PRIOR31 (*(vuint8 *)(&__MBAR[0x805B])) +#define MCF_DMA_IMCR (*(vuint32*)(&__MBAR[0x805C])) +#define MCF_DMA_TSKSZ0 (*(vuint32*)(&__MBAR[0x8060])) +#define MCF_DMA_TSKSZ1 (*(vuint32*)(&__MBAR[0x8064])) +#define MCF_DMA_DBGCOMP0 (*(vuint32*)(&__MBAR[0x8070])) +#define MCF_DMA_DBGCOMP2 (*(vuint32*)(&__MBAR[0x8074])) +#define MCF_DMA_DBGCTL (*(vuint32*)(&__MBAR[0x8078])) +#define MCF_DMA_TCR(x) (*(vuint16*)(&__MBAR[0x801C + ((x)*0x2)])) +#define MCF_DMA_PRIOR(x) (*(vuint8 *)(&__MBAR[0x803C + ((x)*0x1)])) + + +/* Bit definitions and macros for MCF_DMA_TASKBAR */ +#define MCF_DMA_TASKBAR_TASK_BASE_ADDRESS(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_DMA_CP */ +#define MCF_DMA_CP_DESCRIPTOR_POINTER(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_DMA_EP */ +#define MCF_DMA_EP_DESCRIPTOR_POINTER(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_DMA_VP */ +#define MCF_DMA_VP_VARIABLE_POINTER(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_DMA_PTD */ +#define MCF_DMA_PTD_PCTL0 (0x1) +#define MCF_DMA_PTD_PCTL1 (0x2) +#define MCF_DMA_PTD_PCTL13 (0x2000) +#define MCF_DMA_PTD_PCTL14 (0x4000) +#define MCF_DMA_PTD_PCTL15 (0x8000) + +/* Bit definitions and macros for MCF_DMA_DIPR */ +#define MCF_DMA_DIPR_TASK(x) (((x)&0xFFFF)<<0) + +/* Bit definitions and macros for MCF_DMA_DIMR */ +#define MCF_DMA_DIMR_TASK(x) (((x)&0xFFFF)<<0) + +/* Bit definitions and macros for MCF_DMA_TCR */ +#define MCF_DMA_TCR_ASTSKNUM(x) (((x)&0xF)<<0) +#define MCF_DMA_TCR_HLDINITNUM (0x20) +#define MCF_DMA_TCR_HIPRITSKEN (0x40) +#define MCF_DMA_TCR_ASTRT (0x80) +#define MCF_DMA_TCR_INITNUM(x) (((x)&0x1F)<<0x8) +#define MCF_DMA_TCR_ALWINIT (0x2000) +#define MCF_DMA_TCR_V (0x4000) +#define MCF_DMA_TCR_EN (0x8000) + +/* Bit definitions and macros for MCF_DMA_PRIOR */ +#define MCF_DMA_PRIOR_PRI(x) (((x)&0x7)<<0) +#define MCF_DMA_PRIOR_HLD (0x80) + +/* Bit definitions and macros for MCF_DMA_IMCR */ +#define MCF_DMA_IMCR_IMC0(x) (((x)&0x3)<<0) +#define MCF_DMA_IMCR_IMC1(x) (((x)&0x3)<<0x2) +#define MCF_DMA_IMCR_IMC2(x) (((x)&0x3)<<0x4) +#define MCF_DMA_IMCR_IMC3(x) (((x)&0x3)<<0x6) +#define MCF_DMA_IMCR_IMC4(x) (((x)&0x3)<<0x8) +#define MCF_DMA_IMCR_IMC5(x) (((x)&0x3)<<0xA) +#define MCF_DMA_IMCR_IMC6(x) (((x)&0x3)<<0xC) +#define MCF_DMA_IMCR_IMC7(x) (((x)&0x3)<<0xE) +#define MCF_DMA_IMCR_IMC8(x) (((x)&0x3)<<0x10) +#define MCF_DMA_IMCR_IMC9(x) (((x)&0x3)<<0x12) +#define MCF_DMA_IMCR_IMC10(x) (((x)&0x3)<<0x14) +#define MCF_DMA_IMCR_IMC11(x) (((x)&0x3)<<0x16) +#define MCF_DMA_IMCR_IMC12(x) (((x)&0x3)<<0x18) +#define MCF_DMA_IMCR_IMC13(x) (((x)&0x3)<<0x1A) +#define MCF_DMA_IMCR_IMC14(x) (((x)&0x3)<<0x1C) +#define MCF_DMA_IMCR_IMC15(x) (((x)&0x3)<<0x1E) + +/* Bit definitions and macros for MCF_DMA_TSKSZ0 */ +#define MCF_DMA_TSKSZ0_DSTSZ7(x) (((x)&0x3)<<0) +#define MCF_DMA_TSKSZ0_SRCSZ7(x) (((x)&0x3)<<0x2) +#define MCF_DMA_TSKSZ0_DSTSZ6(x) (((x)&0x3)<<0x4) +#define MCF_DMA_TSKSZ0_SRCSZ6(x) (((x)&0x3)<<0x6) +#define MCF_DMA_TSKSZ0_DSTSZ5(x) (((x)&0x3)<<0x8) +#define MCF_DMA_TSKSZ0_SRCSZ5(x) (((x)&0x3)<<0xA) +#define MCF_DMA_TSKSZ0_DSTSZ4(x) (((x)&0x3)<<0xC) +#define MCF_DMA_TSKSZ0_SRCSZ4(x) (((x)&0x3)<<0xE) +#define MCF_DMA_TSKSZ0_DSTSZ3(x) (((x)&0x3)<<0x10) +#define MCF_DMA_TSKSZ0_SRCSZ3(x) (((x)&0x3)<<0x12) +#define MCF_DMA_TSKSZ0_DSTSZ2(x) (((x)&0x3)<<0x14) +#define MCF_DMA_TSKSZ0_SRCSZ2(x) (((x)&0x3)<<0x16) +#define MCF_DMA_TSKSZ0_DSTSZ1(x) (((x)&0x3)<<0x18) +#define MCF_DMA_TSKSZ0_SRCSZ1(x) (((x)&0x3)<<0x1A) +#define MCF_DMA_TSKSZ0_DSTSZ0(x) (((x)&0x3)<<0x1C) +#define MCF_DMA_TSKSZ0_SRCSZ0(x) (((x)&0x3)<<0x1E) + +/* Bit definitions and macros for MCF_DMA_TSKSZ1 */ +#define MCF_DMA_TSKSZ1_DSTSZ15(x) (((x)&0x3)<<0) +#define MCF_DMA_TSKSZ1_SRCSZ15(x) (((x)&0x3)<<0x2) +#define MCF_DMA_TSKSZ1_DSTSZ14(x) (((x)&0x3)<<0x4) +#define MCF_DMA_TSKSZ1_SRCSZ14(x) (((x)&0x3)<<0x6) +#define MCF_DMA_TSKSZ1_DSTSZ13(x) (((x)&0x3)<<0x8) +#define MCF_DMA_TSKSZ1_SRCSZ13(x) (((x)&0x3)<<0xA) +#define MCF_DMA_TSKSZ1_DSTSZ12(x) (((x)&0x3)<<0xC) +#define MCF_DMA_TSKSZ1_SRCSZ12(x) (((x)&0x3)<<0xE) +#define MCF_DMA_TSKSZ1_DSTSZ11(x) (((x)&0x3)<<0x10) +#define MCF_DMA_TSKSZ1_SRCSZ11(x) (((x)&0x3)<<0x12) +#define MCF_DMA_TSKSZ1_DSTSZ10(x) (((x)&0x3)<<0x14) +#define MCF_DMA_TSKSZ1_SRCSZ10(x) (((x)&0x3)<<0x16) +#define MCF_DMA_TSKSZ1_DSTSZ9(x) (((x)&0x3)<<0x18) +#define MCF_DMA_TSKSZ1_SRCSZ9(x) (((x)&0x3)<<0x1A) +#define MCF_DMA_TSKSZ1_DSTSZ8(x) (((x)&0x3)<<0x1C) +#define MCF_DMA_TSKSZ1_SRCSZ8(x) (((x)&0x3)<<0x1E) + +/* Bit definitions and macros for MCF_DMA_DBGCOMP0 */ +#define MCF_DMA_DBGCOMP0_COMPARATOR_VALUE(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_DMA_DBGCOMP2 */ +#define MCF_DMA_DBGCOMP2_COMPARATOR_VALUE(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_DMA_DBGCTL */ +#define MCF_DMA_DBGCTL_I (0x2) +#define MCF_DMA_DBGCTL_E (0x4) +#define MCF_DMA_DBGCTL_AND_OR (0x80) +#define MCF_DMA_DBGCTL_COMPARATOR_TYPE_2(x) (((x)&0x7)<<0x8) +#define MCF_DMA_DBGCTL_COMPARATOR_TYPE_1(x) (((x)&0x7)<<0xB) +#define MCF_DMA_DBGCTL_B (0x4000) +#define MCF_DMA_DBGCTL_AA (0x8000) +#define MCF_DMA_DBGCTL_BLOCK_TASKS(x) (((x)&0xFFFF)<<0x10) + + +#endif /* __MCF5475_DMA_H__ */ diff --git a/BaS_codewarrior/firebeeV1/headers/MCF5475_DSPI.h b/BaS_codewarrior/firebeeV1/headers/MCF5475_DSPI.h new file mode 100644 index 0000000..ec4369d --- /dev/null +++ b/BaS_codewarrior/firebeeV1/headers/MCF5475_DSPI.h @@ -0,0 +1,150 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_DSPI_H__ +#define __MCF5475_DSPI_H__ + + +/********************************************************************* +* +* DMA Serial Peripheral Interface (DSPI) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_DSPI_DMCR (*(vuint32*)(&__MBAR[0x8A00])) +#define MCF_DSPI_DTCR (*(vuint32*)(&__MBAR[0x8A08])) +#define MCF_DSPI_DCTAR0 (*(vuint32*)(&__MBAR[0x8A0C])) +#define MCF_DSPI_DCTAR1 (*(vuint32*)(&__MBAR[0x8A10])) +#define MCF_DSPI_DCTAR2 (*(vuint32*)(&__MBAR[0x8A14])) +#define MCF_DSPI_DCTAR3 (*(vuint32*)(&__MBAR[0x8A18])) +#define MCF_DSPI_DCTAR4 (*(vuint32*)(&__MBAR[0x8A1C])) +#define MCF_DSPI_DCTAR5 (*(vuint32*)(&__MBAR[0x8A20])) +#define MCF_DSPI_DCTAR6 (*(vuint32*)(&__MBAR[0x8A24])) +#define MCF_DSPI_DCTAR7 (*(vuint32*)(&__MBAR[0x8A28])) +#define MCF_DSPI_DSR (*(vuint32*)(&__MBAR[0x8A2C])) +#define MCF_DSPI_DIRSR (*(vuint32*)(&__MBAR[0x8A30])) +#define MCF_DSPI_DTFR (*(vuint32*)(&__MBAR[0x8A34])) +#define MCF_DSPI_DRFR (*(vuint32*)(&__MBAR[0x8A38])) +#define MCF_DSPI_DTFDR0 (*(vuint32*)(&__MBAR[0x8A3C])) +#define MCF_DSPI_DTFDR1 (*(vuint32*)(&__MBAR[0x8A40])) +#define MCF_DSPI_DTFDR2 (*(vuint32*)(&__MBAR[0x8A44])) +#define MCF_DSPI_DTFDR3 (*(vuint32*)(&__MBAR[0x8A48])) +#define MCF_DSPI_DRFDR0 (*(vuint32*)(&__MBAR[0x8A7C])) +#define MCF_DSPI_DRFDR1 (*(vuint32*)(&__MBAR[0x8A80])) +#define MCF_DSPI_DRFDR2 (*(vuint32*)(&__MBAR[0x8A84])) +#define MCF_DSPI_DRFDR3 (*(vuint32*)(&__MBAR[0x8A88])) +#define MCF_DSPI_DCTAR(x) (*(vuint32*)(&__MBAR[0x8A0C + ((x)*0x4)])) +#define MCF_DSPI_DTFDR(x) (*(vuint32*)(&__MBAR[0x8A3C + ((x)*0x4)])) +#define MCF_DSPI_DRFDR(x) (*(vuint32*)(&__MBAR[0x8A7C + ((x)*0x4)])) + + +/* Bit definitions and macros for MCF_DSPI_DMCR */ +#define MCF_DSPI_DMCR_HALT (0x1) +#define MCF_DSPI_DMCR_SMPL_PT(x) (((x)&0x3)<<0x8) +#define MCF_DSPI_DMCR_SMPL_PT_0CLK (0) +#define MCF_DSPI_DMCR_SMPL_PT_1CLK (0x100) +#define MCF_DSPI_DMCR_SMPL_PT_2CLK (0x200) +#define MCF_DSPI_DMCR_CRXF (0x400) +#define MCF_DSPI_DMCR_CTXF (0x800) +#define MCF_DSPI_DMCR_DRXF (0x1000) +#define MCF_DSPI_DMCR_DTXF (0x2000) +#define MCF_DSPI_DMCR_CSIS0 (0x10000) +#define MCF_DSPI_DMCR_CSIS2 (0x40000) +#define MCF_DSPI_DMCR_CSIS3 (0x80000) +#define MCF_DSPI_DMCR_CSIS5 (0x200000) +#define MCF_DSPI_DMCR_ROOE (0x1000000) +#define MCF_DSPI_DMCR_PCSSE (0x2000000) +#define MCF_DSPI_DMCR_MTFE (0x4000000) +#define MCF_DSPI_DMCR_FRZ (0x8000000) +#define MCF_DSPI_DMCR_DCONF(x) (((x)&0x3)<<0x1C) +#define MCF_DSPI_DMCR_CSCK (0x40000000) +#define MCF_DSPI_DMCR_MSTR (0x80000000) + +/* Bit definitions and macros for MCF_DSPI_DTCR */ +#define MCF_DSPI_DTCR_SPI_TCNT(x) (((x)&0xFFFF)<<0x10) + +/* Bit definitions and macros for MCF_DSPI_DCTAR */ +#define MCF_DSPI_DCTAR_BR(x) (((x)&0xF)<<0) +#define MCF_DSPI_DCTAR_DT(x) (((x)&0xF)<<0x4) +#define MCF_DSPI_DCTAR_ASC(x) (((x)&0xF)<<0x8) +#define MCF_DSPI_DCTAR_CSSCK(x) (((x)&0xF)<<0xC) +#define MCF_DSPI_DCTAR_PBR(x) (((x)&0x3)<<0x10) +#define MCF_DSPI_DCTAR_PBR_1CLK (0) +#define MCF_DSPI_DCTAR_PBR_3CLK (0x10000) +#define MCF_DSPI_DCTAR_PBR_5CLK (0x20000) +#define MCF_DSPI_DCTAR_PBR_7CLK (0x30000) +#define MCF_DSPI_DCTAR_PDT(x) (((x)&0x3)<<0x12) +#define MCF_DSPI_DCTAR_PDT_1CLK (0) +#define MCF_DSPI_DCTAR_PDT_3CLK (0x40000) +#define MCF_DSPI_DCTAR_PDT_5CLK (0x80000) +#define MCF_DSPI_DCTAR_PDT_7CLK (0xC0000) +#define MCF_DSPI_DCTAR_PASC(x) (((x)&0x3)<<0x14) +#define MCF_DSPI_DCTAR_PASC_1CLK (0) +#define MCF_DSPI_DCTAR_PASC_3CLK (0x100000) +#define MCF_DSPI_DCTAR_PASC_5CLK (0x200000) +#define MCF_DSPI_DCTAR_PASC_7CLK (0x300000) +#define MCF_DSPI_DCTAR_PCSSCK(x) (((x)&0x3)<<0x16) +#define MCF_DSPI_DCTAR_LSBFE (0x1000000) +#define MCF_DSPI_DCTAR_CPHA (0x2000000) +#define MCF_DSPI_DCTAR_CPOL (0x4000000) +#define MCF_DSPI_DCTAR_TRSZ(x) (((x)&0xF)<<0x1B) + +/* Bit definitions and macros for MCF_DSPI_DSR */ +#define MCF_DSPI_DSR_RXPTR(x) (((x)&0xF)<<0) +#define MCF_DSPI_DSR_RXCTR(x) (((x)&0xF)<<0x4) +#define MCF_DSPI_DSR_TXPTR(x) (((x)&0xF)<<0x8) +#define MCF_DSPI_DSR_TXCTR(x) (((x)&0xF)<<0xC) +#define MCF_DSPI_DSR_RFDF (0x20000) +#define MCF_DSPI_DSR_RFOF (0x80000) +#define MCF_DSPI_DSR_TFFF (0x2000000) +#define MCF_DSPI_DSR_TFUF (0x8000000) +#define MCF_DSPI_DSR_EOQF (0x10000000) +#define MCF_DSPI_DSR_TXRXS (0x40000000) +#define MCF_DSPI_DSR_TCF (0x80000000) + +/* Bit definitions and macros for MCF_DSPI_DIRSR */ +#define MCF_DSPI_DIRSR_RFDFS (0x10000) +#define MCF_DSPI_DIRSR_RFDFE (0x20000) +#define MCF_DSPI_DIRSR_RFOFE (0x80000) +#define MCF_DSPI_DIRSR_TFFFS (0x1000000) +#define MCF_DSPI_DIRSR_TFFFE (0x2000000) +#define MCF_DSPI_DIRSR_TFUFE (0x8000000) +#define MCF_DSPI_DIRSR_EOQFE (0x10000000) +#define MCF_DSPI_DIRSR_TCFE (0x80000000) + +/* Bit definitions and macros for MCF_DSPI_DTFR */ +#define MCF_DSPI_DTFR_TXDATA(x) (((x)&0xFFFF)<<0) +#define MCF_DSPI_DTFR_CS0 (0x10000) +#define MCF_DSPI_DTFR_CS2 (0x40000) +#define MCF_DSPI_DTFR_CS3 (0x80000) +#define MCF_DSPI_DTFR_CS5 (0x200000) +#define MCF_DSPI_DTFR_CTCNT (0x4000000) +#define MCF_DSPI_DTFR_EOQ (0x8000000) +#define MCF_DSPI_DTFR_CTAS(x) (((x)&0x7)<<0x1C) +#define MCF_DSPI_DTFR_CONT (0x80000000) + +/* Bit definitions and macros for MCF_DSPI_DRFR */ +#define MCF_DSPI_DRFR_RXDATA(x) (((x)&0xFFFF)<<0) + +/* Bit definitions and macros for MCF_DSPI_DTFDR */ +#define MCF_DSPI_DTFDR_TXDATA(x) (((x)&0xFFFF)<<0) +#define MCF_DSPI_DTFDR_TXCMD(x) (((x)&0xFFFF)<<0x10) + +/* Bit definitions and macros for MCF_DSPI_DRFDR */ +#define MCF_DSPI_DRFDR_RXDATA(x) (((x)&0xFFFF)<<0) + + +#endif /* __MCF5475_DSPI_H__ */ diff --git a/BaS_codewarrior/firebeeV1/headers/MCF5475_EPORT.h b/BaS_codewarrior/firebeeV1/headers/MCF5475_EPORT.h new file mode 100644 index 0000000..6616406 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/headers/MCF5475_EPORT.h @@ -0,0 +1,123 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_EPORT_H__ +#define __MCF5475_EPORT_H__ + + +/********************************************************************* +* +* Edge Port Module (EPORT) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_EPORT_EPPAR (*(vuint16*)(&__MBAR[0xF00])) +#define MCF_EPORT_EPDDR (*(vuint8 *)(&__MBAR[0xF04])) +#define MCF_EPORT_EPIER (*(vuint8 *)(&__MBAR[0xF05])) +#define MCF_EPORT_EPDR (*(vuint8 *)(&__MBAR[0xF08])) +#define MCF_EPORT_EPPDR (*(vuint8 *)(&__MBAR[0xF09])) +#define MCF_EPORT_EPFR (*(vuint8 *)(&__MBAR[0xF0C])) + + + +/* Bit definitions and macros for MCF_EPORT_EPPAR */ +#define MCF_EPORT_EPPAR_EPPA1(x) (((x)&0x3)<<0x2) +#define MCF_EPORT_EPPAR_EPPA1_LEVEL (0) +#define MCF_EPORT_EPPAR_EPPA1_RISING (0x4) +#define MCF_EPORT_EPPAR_EPPA1_FALLING (0x8) +#define MCF_EPORT_EPPAR_EPPA1_BOTH (0xC) +#define MCF_EPORT_EPPAR_EPPA2(x) (((x)&0x3)<<0x4) +#define MCF_EPORT_EPPAR_EPPA2_LEVEL (0) +#define MCF_EPORT_EPPAR_EPPA2_RISING (0x10) +#define MCF_EPORT_EPPAR_EPPA2_FALLING (0x20) +#define MCF_EPORT_EPPAR_EPPA2_BOTH (0x30) +#define MCF_EPORT_EPPAR_EPPA3(x) (((x)&0x3)<<0x6) +#define MCF_EPORT_EPPAR_EPPA3_LEVEL (0) +#define MCF_EPORT_EPPAR_EPPA3_RISING (0x40) +#define MCF_EPORT_EPPAR_EPPA3_FALLING (0x80) +#define MCF_EPORT_EPPAR_EPPA3_BOTH (0xC0) +#define MCF_EPORT_EPPAR_EPPA4(x) (((x)&0x3)<<0x8) +#define MCF_EPORT_EPPAR_EPPA4_LEVEL (0) +#define MCF_EPORT_EPPAR_EPPA4_RISING (0x100) +#define MCF_EPORT_EPPAR_EPPA4_FALLING (0x200) +#define MCF_EPORT_EPPAR_EPPA4_BOTH (0x300) +#define MCF_EPORT_EPPAR_EPPA5(x) (((x)&0x3)<<0xA) +#define MCF_EPORT_EPPAR_EPPA5_LEVEL (0) +#define MCF_EPORT_EPPAR_EPPA5_RISING (0x400) +#define MCF_EPORT_EPPAR_EPPA5_FALLING (0x800) +#define MCF_EPORT_EPPAR_EPPA5_BOTH (0xC00) +#define MCF_EPORT_EPPAR_EPPA6(x) (((x)&0x3)<<0xC) +#define MCF_EPORT_EPPAR_EPPA6_LEVEL (0) +#define MCF_EPORT_EPPAR_EPPA6_RISING (0x1000) +#define MCF_EPORT_EPPAR_EPPA6_FALLING (0x2000) +#define MCF_EPORT_EPPAR_EPPA6_BOTH (0x3000) +#define MCF_EPORT_EPPAR_EPPA7(x) (((x)&0x3)<<0xE) +#define MCF_EPORT_EPPAR_EPPA7_LEVEL (0) +#define MCF_EPORT_EPPAR_EPPA7_RISING (0x4000) +#define MCF_EPORT_EPPAR_EPPA7_FALLING (0x8000) +#define MCF_EPORT_EPPAR_EPPA7_BOTH (0xC000) +#define MCF_EPORT_EPPAR_LEVEL (0) +#define MCF_EPORT_EPPAR_RISING (0x1) +#define MCF_EPORT_EPPAR_FALLING (0x2) +#define MCF_EPORT_EPPAR_BOTH (0x3) + +/* Bit definitions and macros for MCF_EPORT_EPDDR */ +#define MCF_EPORT_EPDDR_EPDD1 (0x2) +#define MCF_EPORT_EPDDR_EPDD2 (0x4) +#define MCF_EPORT_EPDDR_EPDD3 (0x8) +#define MCF_EPORT_EPDDR_EPDD4 (0x10) +#define MCF_EPORT_EPDDR_EPDD5 (0x20) +#define MCF_EPORT_EPDDR_EPDD6 (0x40) +#define MCF_EPORT_EPDDR_EPDD7 (0x80) + +/* Bit definitions and macros for MCF_EPORT_EPIER */ +#define MCF_EPORT_EPIER_EPIE1 (0x2) +#define MCF_EPORT_EPIER_EPIE2 (0x4) +#define MCF_EPORT_EPIER_EPIE3 (0x8) +#define MCF_EPORT_EPIER_EPIE4 (0x10) +#define MCF_EPORT_EPIER_EPIE5 (0x20) +#define MCF_EPORT_EPIER_EPIE6 (0x40) +#define MCF_EPORT_EPIER_EPIE7 (0x80) + +/* Bit definitions and macros for MCF_EPORT_EPDR */ +#define MCF_EPORT_EPDR_EPD1 (0x2) +#define MCF_EPORT_EPDR_EPD2 (0x4) +#define MCF_EPORT_EPDR_EPD3 (0x8) +#define MCF_EPORT_EPDR_EPD4 (0x10) +#define MCF_EPORT_EPDR_EPD5 (0x20) +#define MCF_EPORT_EPDR_EPD6 (0x40) +#define MCF_EPORT_EPDR_EPD7 (0x80) + +/* Bit definitions and macros for MCF_EPORT_EPPDR */ +#define MCF_EPORT_EPPDR_EPPD1 (0x2) +#define MCF_EPORT_EPPDR_EPPD2 (0x4) +#define MCF_EPORT_EPPDR_EPPD3 (0x8) +#define MCF_EPORT_EPPDR_EPPD4 (0x10) +#define MCF_EPORT_EPPDR_EPPD5 (0x20) +#define MCF_EPORT_EPPDR_EPPD6 (0x40) +#define MCF_EPORT_EPPDR_EPPD7 (0x80) + +/* Bit definitions and macros for MCF_EPORT_EPFR */ +#define MCF_EPORT_EPFR_EPF1 (0x2) +#define MCF_EPORT_EPFR_EPF2 (0x4) +#define MCF_EPORT_EPFR_EPF3 (0x8) +#define MCF_EPORT_EPFR_EPF4 (0x10) +#define MCF_EPORT_EPFR_EPF5 (0x20) +#define MCF_EPORT_EPFR_EPF6 (0x40) +#define MCF_EPORT_EPFR_EPF7 (0x80) + + +#endif /* __MCF5475_EPORT_H__ */ diff --git a/BaS_codewarrior/firebeeV1/headers/MCF5475_FBCS.h b/BaS_codewarrior/firebeeV1/headers/MCF5475_FBCS.h new file mode 100644 index 0000000..26bb585 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/headers/MCF5475_FBCS.h @@ -0,0 +1,100 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_FBCS_H__ +#define __MCF5475_FBCS_H__ + + +/********************************************************************* +* +* FlexBus Chip Select Module (FBCS) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_FBCS0_CSAR (*(vuint32*)(&__MBAR[0x500])) +#define MCF_FBCS0_CSMR (*(vuint32*)(&__MBAR[0x504])) +#define MCF_FBCS0_CSCR (*(vuint32*)(&__MBAR[0x508])) + +#define MCF_FBCS1_CSAR (*(vuint32*)(&__MBAR[0x50C])) +#define MCF_FBCS1_CSMR (*(vuint32*)(&__MBAR[0x510])) +#define MCF_FBCS1_CSCR (*(vuint32*)(&__MBAR[0x514])) + +#define MCF_FBCS2_CSAR (*(vuint32*)(&__MBAR[0x518])) +#define MCF_FBCS2_CSMR (*(vuint32*)(&__MBAR[0x51C])) +#define MCF_FBCS2_CSCR (*(vuint32*)(&__MBAR[0x520])) + +#define MCF_FBCS3_CSAR (*(vuint32*)(&__MBAR[0x524])) +#define MCF_FBCS3_CSMR (*(vuint32*)(&__MBAR[0x528])) +#define MCF_FBCS3_CSCR (*(vuint32*)(&__MBAR[0x52C])) + +#define MCF_FBCS4_CSAR (*(vuint32*)(&__MBAR[0x530])) +#define MCF_FBCS4_CSMR (*(vuint32*)(&__MBAR[0x534])) +#define MCF_FBCS4_CSCR (*(vuint32*)(&__MBAR[0x538])) + +#define MCF_FBCS5_CSAR (*(vuint32*)(&__MBAR[0x53C])) +#define MCF_FBCS5_CSMR (*(vuint32*)(&__MBAR[0x540])) +#define MCF_FBCS5_CSCR (*(vuint32*)(&__MBAR[0x544])) + +#define MCF_FBCS_CSAR(x) (*(vuint32*)(&__MBAR[0x500 + ((x)*0xC)])) +#define MCF_FBCS_CSMR(x) (*(vuint32*)(&__MBAR[0x504 + ((x)*0xC)])) +#define MCF_FBCS_CSCR(x) (*(vuint32*)(&__MBAR[0x508 + ((x)*0xC)])) + + +/* Bit definitions and macros for MCF_FBCS_CSAR */ +#define MCF_FBCS_CSAR_BA(x) ((x)&0xFFFF0000) + +/* Bit definitions and macros for MCF_FBCS_CSMR */ +#define MCF_FBCS_CSMR_V (0x1) +#define MCF_FBCS_CSMR_WP (0x100) +#define MCF_FBCS_CSMR_BAM(x) (((x)&0xFFFF)<<0x10) +#define MCF_FBCS_CSMR_BAM_4G (0xFFFF0000) +#define MCF_FBCS_CSMR_BAM_2G (0x7FFF0000) +#define MCF_FBCS_CSMR_BAM_1G (0x3FFF0000) +#define MCF_FBCS_CSMR_BAM_1024M (0x3FFF0000) +#define MCF_FBCS_CSMR_BAM_512M (0x1FFF0000) +#define MCF_FBCS_CSMR_BAM_256M (0xFFF0000) +#define MCF_FBCS_CSMR_BAM_128M (0x7FF0000) +#define MCF_FBCS_CSMR_BAM_64M (0x3FF0000) +#define MCF_FBCS_CSMR_BAM_32M (0x1FF0000) +#define MCF_FBCS_CSMR_BAM_16M (0xFF0000) +#define MCF_FBCS_CSMR_BAM_8M (0x7F0000) +#define MCF_FBCS_CSMR_BAM_4M (0x3F0000) +#define MCF_FBCS_CSMR_BAM_2M (0x1F0000) +#define MCF_FBCS_CSMR_BAM_1M (0xF0000) +#define MCF_FBCS_CSMR_BAM_1024K (0xF0000) +#define MCF_FBCS_CSMR_BAM_512K (0x70000) +#define MCF_FBCS_CSMR_BAM_256K (0x30000) +#define MCF_FBCS_CSMR_BAM_128K (0x10000) +#define MCF_FBCS_CSMR_BAM_64K (0) + +/* Bit definitions and macros for MCF_FBCS_CSCR */ +#define MCF_FBCS_CSCR_BSTW (0x8) +#define MCF_FBCS_CSCR_BSTR (0x10) +#define MCF_FBCS_CSCR_BEM (0x20) +#define MCF_FBCS_CSCR_PS(x) (((x)&0x3)<<0x6) +#define MCF_FBCS_CSCR_PS_32 (0) +#define MCF_FBCS_CSCR_PS_8 (0x40) +#define MCF_FBCS_CSCR_PS_16 (0x80) +#define MCF_FBCS_CSCR_AA (0x100) +#define MCF_FBCS_CSCR_WS(x) (((x)&0x3F)<<0xA) +#define MCF_FBCS_CSCR_WRAH(x) (((x)&0x3)<<0x10) +#define MCF_FBCS_CSCR_RDAH(x) (((x)&0x3)<<0x12) +#define MCF_FBCS_CSCR_ASET(x) (((x)&0x3)<<0x14) +#define MCF_FBCS_CSCR_SWSEN (0x800000) +#define MCF_FBCS_CSCR_SWS(x) (((x)&0x3F)<<0x1A) + + +#endif /* __MCF5475_FBCS_H__ */ diff --git a/BaS_codewarrior/firebeeV1/headers/MCF5475_FEC.h b/BaS_codewarrior/firebeeV1/headers/MCF5475_FEC.h new file mode 100644 index 0000000..01a0ae7 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/headers/MCF5475_FEC.h @@ -0,0 +1,680 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_FEC_H__ +#define __MCF5475_FEC_H__ + + +/********************************************************************* +* +* Fast Ethernet Controller(FEC) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_FEC0_EIR (*(vuint32*)(&__MBAR[0x9004])) +#define MCF_FEC0_EIMR (*(vuint32*)(&__MBAR[0x9008])) +#define MCF_FEC0_ECR (*(vuint32*)(&__MBAR[0x9024])) +#define MCF_FEC0_MMFR (*(vuint32*)(&__MBAR[0x9040])) +#define MCF_FEC0_MSCR (*(vuint32*)(&__MBAR[0x9044])) +#define MCF_FEC0_MIBC (*(vuint32*)(&__MBAR[0x9064])) +#define MCF_FEC0_RCR (*(vuint32*)(&__MBAR[0x9084])) +#define MCF_FEC0_RHR (*(vuint32*)(&__MBAR[0x9088])) +#define MCF_FEC0_TCR (*(vuint32*)(&__MBAR[0x90C4])) +#define MCF_FEC0_PALR (*(vuint32*)(&__MBAR[0x90E4])) +#define MCF_FEC0_PAHR (*(vuint32*)(&__MBAR[0x90E8])) +#define MCF_FEC0_OPD (*(vuint32*)(&__MBAR[0x90EC])) +#define MCF_FEC0_IAUR (*(vuint32*)(&__MBAR[0x9118])) +#define MCF_FEC0_IALR (*(vuint32*)(&__MBAR[0x911C])) +#define MCF_FEC0_GAUR (*(vuint32*)(&__MBAR[0x9120])) +#define MCF_FEC0_GALR (*(vuint32*)(&__MBAR[0x9124])) +#define MCF_FEC0_FECTFWR (*(vuint32*)(&__MBAR[0x9144])) +#define MCF_FEC0_FECRFDR (*(vuint32*)(&__MBAR[0x9184])) +#define MCF_FEC0_FECRFSR (*(vuint32*)(&__MBAR[0x9188])) +#define MCF_FEC0_FECRFCR (*(vuint32*)(&__MBAR[0x918C])) +#define MCF_FEC0_FECRLRFP (*(vuint32*)(&__MBAR[0x9190])) +#define MCF_FEC0_FECRLWFP (*(vuint32*)(&__MBAR[0x9194])) +#define MCF_FEC0_FECRFAR (*(vuint32*)(&__MBAR[0x9198])) +#define MCF_FEC0_FECRFRP (*(vuint32*)(&__MBAR[0x919C])) +#define MCF_FEC0_FECRFWP (*(vuint32*)(&__MBAR[0x91A0])) +#define MCF_FEC0_FECTFDR (*(vuint32*)(&__MBAR[0x91A4])) +#define MCF_FEC0_FECTFSR (*(vuint32*)(&__MBAR[0x91A8])) +#define MCF_FEC0_FECTFCR (*(vuint32*)(&__MBAR[0x91AC])) +#define MCF_FEC0_FECTLRFP (*(vuint32*)(&__MBAR[0x91B0])) +#define MCF_FEC0_FECTLWFP (*(vuint32*)(&__MBAR[0x91B4])) +#define MCF_FEC0_FECTFAR (*(vuint32*)(&__MBAR[0x91B8])) +#define MCF_FEC0_FECTFRP (*(vuint32*)(&__MBAR[0x91BC])) +#define MCF_FEC0_FECTFWP (*(vuint32*)(&__MBAR[0x91C0])) +#define MCF_FEC0_FECFRST (*(vuint32*)(&__MBAR[0x91C4])) +#define MCF_FEC0_FECCTCWR (*(vuint32*)(&__MBAR[0x91C8])) +#define MCF_FEC0_RMON_T_DROP (*(vuint32*)(&__MBAR[0x9200])) +#define MCF_FEC0_RMON_T_PACKETS (*(vuint32*)(&__MBAR[0x9204])) +#define MCF_FEC0_RMON_T_BC_PKT (*(vuint32*)(&__MBAR[0x9208])) +#define MCF_FEC0_RMON_T_MC_PKT (*(vuint32*)(&__MBAR[0x920C])) +#define MCF_FEC0_RMON_T_CRC_ALIGN (*(vuint32*)(&__MBAR[0x9210])) +#define MCF_FEC0_RMON_T_UNDERSIZE (*(vuint32*)(&__MBAR[0x9214])) +#define MCF_FEC0_RMON_T_OVERSIZE (*(vuint32*)(&__MBAR[0x9218])) +#define MCF_FEC0_RMON_T_FRAG (*(vuint32*)(&__MBAR[0x921C])) +#define MCF_FEC0_RMON_T_JAB (*(vuint32*)(&__MBAR[0x9220])) +#define MCF_FEC0_RMON_T_COL (*(vuint32*)(&__MBAR[0x9224])) +#define MCF_FEC0_RMON_T_P64 (*(vuint32*)(&__MBAR[0x9228])) +#define MCF_FEC0_RMON_T_P65TO127 (*(vuint32*)(&__MBAR[0x922C])) +#define MCF_FEC0_RMON_T_P128TO255 (*(vuint32*)(&__MBAR[0x9230])) +#define MCF_FEC0_RMON_T_P256TO511 (*(vuint32*)(&__MBAR[0x9234])) +#define MCF_FEC0_RMON_T_P512TO1023 (*(vuint32*)(&__MBAR[0x9238])) +#define MCF_FEC0_RMON_T_P1024TO2047 (*(vuint32*)(&__MBAR[0x923C])) +#define MCF_FEC0_RMON_T_P_GTE2048 (*(vuint32*)(&__MBAR[0x9240])) +#define MCF_FEC0_RMON_T_OCTETS (*(vuint32*)(&__MBAR[0x9244])) +#define MCF_FEC0_IEEE_T_DROP (*(vuint32*)(&__MBAR[0x9248])) +#define MCF_FEC0_IEEE_T_FRAME_OK (*(vuint32*)(&__MBAR[0x924C])) +#define MCF_FEC0_IEEE_T_1COL (*(vuint32*)(&__MBAR[0x9250])) +#define MCF_FEC0_IEEE_T_MCOL (*(vuint32*)(&__MBAR[0x9254])) +#define MCF_FEC0_IEEE_T_DEF (*(vuint32*)(&__MBAR[0x9258])) +#define MCF_FEC0_IEEE_T_LCOL (*(vuint32*)(&__MBAR[0x925C])) +#define MCF_FEC0_IEEE_T_EXCOL (*(vuint32*)(&__MBAR[0x9260])) +#define MCF_FEC0_IEEE_T_MACERR (*(vuint32*)(&__MBAR[0x9264])) +#define MCF_FEC0_IEEE_T_CSERR (*(vuint32*)(&__MBAR[0x9268])) +#define MCF_FEC0_IEEE_T_SQE (*(vuint32*)(&__MBAR[0x926C])) +#define MCF_FEC0_IEEE_T_FDXFC (*(vuint32*)(&__MBAR[0x9270])) +#define MCF_FEC0_IEEE_T_OCTETS_OK (*(vuint32*)(&__MBAR[0x9274])) +#define MCF_FEC0_RMON_R_DROP (*(vuint32*)(&__MBAR[0x9280])) +#define MCF_FEC0_RMON_R_PACKETS (*(vuint32*)(&__MBAR[0x9284])) +#define MCF_FEC0_RMON_R_BC_PKT (*(vuint32*)(&__MBAR[0x9288])) +#define MCF_FEC0_RMON_R_MC_PKT (*(vuint32*)(&__MBAR[0x928C])) +#define MCF_FEC0_RMON_R_CRC_ALIGN (*(vuint32*)(&__MBAR[0x9290])) +#define MCF_FEC0_RMON_R_UNDERSIZE (*(vuint32*)(&__MBAR[0x9294])) +#define MCF_FEC0_RMON_R_OVERSIZE (*(vuint32*)(&__MBAR[0x9298])) +#define MCF_FEC0_RMON_R_FRAG (*(vuint32*)(&__MBAR[0x929C])) +#define MCF_FEC0_RMON_R_JAB (*(vuint32*)(&__MBAR[0x92A0])) +#define MCF_FEC0_RMON_R_RESVD_0 (*(vuint32*)(&__MBAR[0x92A4])) +#define MCF_FEC0_RMON_R_P64 (*(vuint32*)(&__MBAR[0x92A8])) +#define MCF_FEC0_RMON_R_P65TO127 (*(vuint32*)(&__MBAR[0x92AC])) +#define MCF_FEC0_RMON_R_P128TO255 (*(vuint32*)(&__MBAR[0x92B0])) +#define MCF_FEC0_RMON_R_P256TO511 (*(vuint32*)(&__MBAR[0x92B4])) +#define MCF_FEC0_RMON_R_P512TO1023 (*(vuint32*)(&__MBAR[0x92B8])) +#define MCF_FEC0_RMON_R_P1024TO2047 (*(vuint32*)(&__MBAR[0x92BC])) +#define MCF_FEC0_RMON_R_P_GTE2048 (*(vuint32*)(&__MBAR[0x92C0])) +#define MCF_FEC0_RMON_R_OCTETS (*(vuint32*)(&__MBAR[0x92C4])) +#define MCF_FEC0_IEEE_R_DROP (*(vuint32*)(&__MBAR[0x92C8])) +#define MCF_FEC0_IEEE_R_FRAME_OK (*(vuint32*)(&__MBAR[0x92CC])) +#define MCF_FEC0_IEEE_R_CRC (*(vuint32*)(&__MBAR[0x92D0])) +#define MCF_FEC0_IEEE_R_ALIGN (*(vuint32*)(&__MBAR[0x92D4])) +#define MCF_FEC0_IEEE_R_MACERR (*(vuint32*)(&__MBAR[0x92D8])) +#define MCF_FEC0_IEEE_R_FDXFC (*(vuint32*)(&__MBAR[0x92DC])) +#define MCF_FEC0_IEEE_R_OCTETS_OK (*(vuint32*)(&__MBAR[0x92E0])) + +#define MCF_FEC1_EIR (*(vuint32*)(&__MBAR[0x9804])) +#define MCF_FEC1_EIMR (*(vuint32*)(&__MBAR[0x9808])) +#define MCF_FEC1_ECR (*(vuint32*)(&__MBAR[0x9824])) +#define MCF_FEC1_MMFR (*(vuint32*)(&__MBAR[0x9840])) +#define MCF_FEC1_MSCR (*(vuint32*)(&__MBAR[0x9844])) +#define MCF_FEC1_MIBC (*(vuint32*)(&__MBAR[0x9864])) +#define MCF_FEC1_RCR (*(vuint32*)(&__MBAR[0x9884])) +#define MCF_FEC1_RHR (*(vuint32*)(&__MBAR[0x9888])) +#define MCF_FEC1_TCR (*(vuint32*)(&__MBAR[0x98C4])) +#define MCF_FEC1_PALR (*(vuint32*)(&__MBAR[0x98E4])) +#define MCF_FEC1_PAHR (*(vuint32*)(&__MBAR[0x98E8])) +#define MCF_FEC1_OPD (*(vuint32*)(&__MBAR[0x98EC])) +#define MCF_FEC1_IAUR (*(vuint32*)(&__MBAR[0x9918])) +#define MCF_FEC1_IALR (*(vuint32*)(&__MBAR[0x991C])) +#define MCF_FEC1_GAUR (*(vuint32*)(&__MBAR[0x9920])) +#define MCF_FEC1_GALR (*(vuint32*)(&__MBAR[0x9924])) +#define MCF_FEC1_FECTFWR (*(vuint32*)(&__MBAR[0x9944])) +#define MCF_FEC1_FECRFDR (*(vuint32*)(&__MBAR[0x9984])) +#define MCF_FEC1_FECRFSR (*(vuint32*)(&__MBAR[0x9988])) +#define MCF_FEC1_FECRFCR (*(vuint32*)(&__MBAR[0x998C])) +#define MCF_FEC1_FECRLRFP (*(vuint32*)(&__MBAR[0x9990])) +#define MCF_FEC1_FECRLWFP (*(vuint32*)(&__MBAR[0x9994])) +#define MCF_FEC1_FECRFAR (*(vuint32*)(&__MBAR[0x9998])) +#define MCF_FEC1_FECRFRP (*(vuint32*)(&__MBAR[0x999C])) +#define MCF_FEC1_FECRFWP (*(vuint32*)(&__MBAR[0x99A0])) +#define MCF_FEC1_FECTFDR (*(vuint32*)(&__MBAR[0x99A4])) +#define MCF_FEC1_FECTFSR (*(vuint32*)(&__MBAR[0x99A8])) +#define MCF_FEC1_FECTFCR (*(vuint32*)(&__MBAR[0x99AC])) +#define MCF_FEC1_FECTLRFP (*(vuint32*)(&__MBAR[0x99B0])) +#define MCF_FEC1_FECTLWFP (*(vuint32*)(&__MBAR[0x99B4])) +#define MCF_FEC1_FECTFAR (*(vuint32*)(&__MBAR[0x99B8])) +#define MCF_FEC1_FECTFRP (*(vuint32*)(&__MBAR[0x99BC])) +#define MCF_FEC1_FECTFWP (*(vuint32*)(&__MBAR[0x99C0])) +#define MCF_FEC1_FECFRST (*(vuint32*)(&__MBAR[0x99C4])) +#define MCF_FEC1_FECCTCWR (*(vuint32*)(&__MBAR[0x99C8])) +#define MCF_FEC1_RMON_T_DROP (*(vuint32*)(&__MBAR[0x9A00])) +#define MCF_FEC1_RMON_T_PACKETS (*(vuint32*)(&__MBAR[0x9A04])) +#define MCF_FEC1_RMON_T_BC_PKT (*(vuint32*)(&__MBAR[0x9A08])) +#define MCF_FEC1_RMON_T_MC_PKT (*(vuint32*)(&__MBAR[0x9A0C])) +#define MCF_FEC1_RMON_T_CRC_ALIGN (*(vuint32*)(&__MBAR[0x9A10])) +#define MCF_FEC1_RMON_T_UNDERSIZE (*(vuint32*)(&__MBAR[0x9A14])) +#define MCF_FEC1_RMON_T_OVERSIZE (*(vuint32*)(&__MBAR[0x9A18])) +#define MCF_FEC1_RMON_T_FRAG (*(vuint32*)(&__MBAR[0x9A1C])) +#define MCF_FEC1_RMON_T_JAB (*(vuint32*)(&__MBAR[0x9A20])) +#define MCF_FEC1_RMON_T_COL (*(vuint32*)(&__MBAR[0x9A24])) +#define MCF_FEC1_RMON_T_P64 (*(vuint32*)(&__MBAR[0x9A28])) +#define MCF_FEC1_RMON_T_P65TO127 (*(vuint32*)(&__MBAR[0x9A2C])) +#define MCF_FEC1_RMON_T_P128TO255 (*(vuint32*)(&__MBAR[0x9A30])) +#define MCF_FEC1_RMON_T_P256TO511 (*(vuint32*)(&__MBAR[0x9A34])) +#define MCF_FEC1_RMON_T_P512TO1023 (*(vuint32*)(&__MBAR[0x9A38])) +#define MCF_FEC1_RMON_T_P1024TO2047 (*(vuint32*)(&__MBAR[0x9A3C])) +#define MCF_FEC1_RMON_T_P_GTE2048 (*(vuint32*)(&__MBAR[0x9A40])) +#define MCF_FEC1_RMON_T_OCTETS (*(vuint32*)(&__MBAR[0x9A44])) +#define MCF_FEC1_IEEE_T_DROP (*(vuint32*)(&__MBAR[0x9A48])) +#define MCF_FEC1_IEEE_T_FRAME_OK (*(vuint32*)(&__MBAR[0x9A4C])) +#define MCF_FEC1_IEEE_T_1COL (*(vuint32*)(&__MBAR[0x9A50])) +#define MCF_FEC1_IEEE_T_MCOL (*(vuint32*)(&__MBAR[0x9A54])) +#define MCF_FEC1_IEEE_T_DEF (*(vuint32*)(&__MBAR[0x9A58])) +#define MCF_FEC1_IEEE_T_LCOL (*(vuint32*)(&__MBAR[0x9A5C])) +#define MCF_FEC1_IEEE_T_EXCOL (*(vuint32*)(&__MBAR[0x9A60])) +#define MCF_FEC1_IEEE_T_MACERR (*(vuint32*)(&__MBAR[0x9A64])) +#define MCF_FEC1_IEEE_T_CSERR (*(vuint32*)(&__MBAR[0x9A68])) +#define MCF_FEC1_IEEE_T_SQE (*(vuint32*)(&__MBAR[0x9A6C])) +#define MCF_FEC1_IEEE_T_FDXFC (*(vuint32*)(&__MBAR[0x9A70])) +#define MCF_FEC1_IEEE_T_OCTETS_OK (*(vuint32*)(&__MBAR[0x9A74])) +#define MCF_FEC1_RMON_R_DROP (*(vuint32*)(&__MBAR[0x9A80])) +#define MCF_FEC1_RMON_R_PACKETS (*(vuint32*)(&__MBAR[0x9A84])) +#define MCF_FEC1_RMON_R_BC_PKT (*(vuint32*)(&__MBAR[0x9A88])) +#define MCF_FEC1_RMON_R_MC_PKT (*(vuint32*)(&__MBAR[0x9A8C])) +#define MCF_FEC1_RMON_R_CRC_ALIGN (*(vuint32*)(&__MBAR[0x9A90])) +#define MCF_FEC1_RMON_R_UNDERSIZE (*(vuint32*)(&__MBAR[0x9A94])) +#define MCF_FEC1_RMON_R_OVERSIZE (*(vuint32*)(&__MBAR[0x9A98])) +#define MCF_FEC1_RMON_R_FRAG (*(vuint32*)(&__MBAR[0x9A9C])) +#define MCF_FEC1_RMON_R_JAB (*(vuint32*)(&__MBAR[0x9AA0])) +#define MCF_FEC1_RMON_R_RESVD_0 (*(vuint32*)(&__MBAR[0x9AA4])) +#define MCF_FEC1_RMON_R_P64 (*(vuint32*)(&__MBAR[0x9AA8])) +#define MCF_FEC1_RMON_R_P65TO127 (*(vuint32*)(&__MBAR[0x9AAC])) +#define MCF_FEC1_RMON_R_P128TO255 (*(vuint32*)(&__MBAR[0x9AB0])) +#define MCF_FEC1_RMON_R_P256TO511 (*(vuint32*)(&__MBAR[0x9AB4])) +#define MCF_FEC1_RMON_R_P512TO1023 (*(vuint32*)(&__MBAR[0x9AB8])) +#define MCF_FEC1_RMON_R_P1024TO2047 (*(vuint32*)(&__MBAR[0x9ABC])) +#define MCF_FEC1_RMON_R_P_GTE2048 (*(vuint32*)(&__MBAR[0x9AC0])) +#define MCF_FEC1_RMON_R_OCTETS (*(vuint32*)(&__MBAR[0x9AC4])) +#define MCF_FEC1_IEEE_R_DROP (*(vuint32*)(&__MBAR[0x9AC8])) +#define MCF_FEC1_IEEE_R_FRAME_OK (*(vuint32*)(&__MBAR[0x9ACC])) +#define MCF_FEC1_IEEE_R_CRC (*(vuint32*)(&__MBAR[0x9AD0])) +#define MCF_FEC1_IEEE_R_ALIGN (*(vuint32*)(&__MBAR[0x9AD4])) +#define MCF_FEC1_IEEE_R_MACERR (*(vuint32*)(&__MBAR[0x9AD8])) +#define MCF_FEC1_IEEE_R_FDXFC (*(vuint32*)(&__MBAR[0x9ADC])) +#define MCF_FEC1_IEEE_R_OCTETS_OK (*(vuint32*)(&__MBAR[0x9AE0])) + +#define MCF_FEC_EIR(x) (*(vuint32*)(&__MBAR[0x9004 + ((x)*0x800)])) +#define MCF_FEC_EIMR(x) (*(vuint32*)(&__MBAR[0x9008 + ((x)*0x800)])) +#define MCF_FEC_ECR(x) (*(vuint32*)(&__MBAR[0x9024 + ((x)*0x800)])) +#define MCF_FEC_MMFR(x) (*(vuint32*)(&__MBAR[0x9040 + ((x)*0x800)])) +#define MCF_FEC_MSCR(x) (*(vuint32*)(&__MBAR[0x9044 + ((x)*0x800)])) +#define MCF_FEC_MIBC(x) (*(vuint32*)(&__MBAR[0x9064 + ((x)*0x800)])) +#define MCF_FEC_RCR(x) (*(vuint32*)(&__MBAR[0x9084 + ((x)*0x800)])) +#define MCF_FEC_RHR(x) (*(vuint32*)(&__MBAR[0x9088 + ((x)*0x800)])) +#define MCF_FEC_TCR(x) (*(vuint32*)(&__MBAR[0x90C4 + ((x)*0x800)])) +#define MCF_FEC_PALR(x) (*(vuint32*)(&__MBAR[0x90E4 + ((x)*0x800)])) +#define MCF_FEC_PAHR(x) (*(vuint32*)(&__MBAR[0x90E8 + ((x)*0x800)])) +#define MCF_FEC_OPD(x) (*(vuint32*)(&__MBAR[0x90EC + ((x)*0x800)])) +#define MCF_FEC_IAUR(x) (*(vuint32*)(&__MBAR[0x9118 + ((x)*0x800)])) +#define MCF_FEC_IALR(x) (*(vuint32*)(&__MBAR[0x911C + ((x)*0x800)])) +#define MCF_FEC_GAUR(x) (*(vuint32*)(&__MBAR[0x9120 + ((x)*0x800)])) +#define MCF_FEC_GALR(x) (*(vuint32*)(&__MBAR[0x9124 + ((x)*0x800)])) +#define MCF_FEC_FECTFWR(x) (*(vuint32*)(&__MBAR[0x9144 + ((x)*0x800)])) +#define MCF_FEC_FECRFDR(x) (*(vuint32*)(&__MBAR[0x9184 + ((x)*0x800)])) +#define MCF_FEC_FECRFSR(x) (*(vuint32*)(&__MBAR[0x9188 + ((x)*0x800)])) +#define MCF_FEC_FECRFCR(x) (*(vuint32*)(&__MBAR[0x918C + ((x)*0x800)])) +#define MCF_FEC_FECRLRFP(x) (*(vuint32*)(&__MBAR[0x9190 + ((x)*0x800)])) +#define MCF_FEC_FECRLWFP(x) (*(vuint32*)(&__MBAR[0x9194 + ((x)*0x800)])) +#define MCF_FEC_FECRFAR(x) (*(vuint32*)(&__MBAR[0x9198 + ((x)*0x800)])) +#define MCF_FEC_FECRFRP(x) (*(vuint32*)(&__MBAR[0x919C + ((x)*0x800)])) +#define MCF_FEC_FECRFWP(x) (*(vuint32*)(&__MBAR[0x91A0 + ((x)*0x800)])) +#define MCF_FEC_FECTFDR(x) (*(vuint32*)(&__MBAR[0x91A4 + ((x)*0x800)])) +#define MCF_FEC_FECTFSR(x) (*(vuint32*)(&__MBAR[0x91A8 + ((x)*0x800)])) +#define MCF_FEC_FECTFCR(x) (*(vuint32*)(&__MBAR[0x91AC + ((x)*0x800)])) +#define MCF_FEC_FECTLRFP(x) (*(vuint32*)(&__MBAR[0x91B0 + ((x)*0x800)])) +#define MCF_FEC_FECTLWFP(x) (*(vuint32*)(&__MBAR[0x91B4 + ((x)*0x800)])) +#define MCF_FEC_FECTFAR(x) (*(vuint32*)(&__MBAR[0x91B8 + ((x)*0x800)])) +#define MCF_FEC_FECTFRP(x) (*(vuint32*)(&__MBAR[0x91BC + ((x)*0x800)])) +#define MCF_FEC_FECTFWP(x) (*(vuint32*)(&__MBAR[0x91C0 + ((x)*0x800)])) +#define MCF_FEC_FECFRST(x) (*(vuint32*)(&__MBAR[0x91C4 + ((x)*0x800)])) +#define MCF_FEC_FECCTCWR(x) (*(vuint32*)(&__MBAR[0x91C8 + ((x)*0x800)])) +#define MCF_FEC_RMON_T_DROP(x) (*(vuint32*)(&__MBAR[0x9200 + ((x)*0x800)])) +#define MCF_FEC_RMON_T_PACKETS(x) (*(vuint32*)(&__MBAR[0x9204 + ((x)*0x800)])) +#define MCF_FEC_RMON_T_BC_PKT(x) (*(vuint32*)(&__MBAR[0x9208 + ((x)*0x800)])) +#define MCF_FEC_RMON_T_MC_PKT(x) (*(vuint32*)(&__MBAR[0x920C + ((x)*0x800)])) +#define MCF_FEC_RMON_T_CRC_ALIGN(x) (*(vuint32*)(&__MBAR[0x9210 + ((x)*0x800)])) +#define MCF_FEC_RMON_T_UNDERSIZE(x) (*(vuint32*)(&__MBAR[0x9214 + ((x)*0x800)])) +#define MCF_FEC_RMON_T_OVERSIZE(x) (*(vuint32*)(&__MBAR[0x9218 + ((x)*0x800)])) +#define MCF_FEC_RMON_T_FRAG(x) (*(vuint32*)(&__MBAR[0x921C + ((x)*0x800)])) +#define MCF_FEC_RMON_T_JAB(x) (*(vuint32*)(&__MBAR[0x9220 + ((x)*0x800)])) +#define MCF_FEC_RMON_T_COL(x) (*(vuint32*)(&__MBAR[0x9224 + ((x)*0x800)])) +#define MCF_FEC_RMON_T_P64(x) (*(vuint32*)(&__MBAR[0x9228 + ((x)*0x800)])) +#define MCF_FEC_RMON_T_P65TO127(x) (*(vuint32*)(&__MBAR[0x922C + ((x)*0x800)])) +#define MCF_FEC_RMON_T_P128TO255(x) (*(vuint32*)(&__MBAR[0x9230 + ((x)*0x800)])) +#define MCF_FEC_RMON_T_P256TO511(x) (*(vuint32*)(&__MBAR[0x9234 + ((x)*0x800)])) +#define MCF_FEC_RMON_T_P512TO1023(x) (*(vuint32*)(&__MBAR[0x9238 + ((x)*0x800)])) +#define MCF_FEC_RMON_T_P1024TO2047(x) (*(vuint32*)(&__MBAR[0x923C + ((x)*0x800)])) +#define MCF_FEC_RMON_T_P_GTE2048(x) (*(vuint32*)(&__MBAR[0x9240 + ((x)*0x800)])) +#define MCF_FEC_RMON_T_OCTETS(x) (*(vuint32*)(&__MBAR[0x9244 + ((x)*0x800)])) +#define MCF_FEC_IEEE_T_DROP(x) (*(vuint32*)(&__MBAR[0x9248 + ((x)*0x800)])) +#define MCF_FEC_IEEE_T_FRAME_OK(x) (*(vuint32*)(&__MBAR[0x924C + ((x)*0x800)])) +#define MCF_FEC_IEEE_T_1COL(x) (*(vuint32*)(&__MBAR[0x9250 + ((x)*0x800)])) +#define MCF_FEC_IEEE_T_MCOL(x) (*(vuint32*)(&__MBAR[0x9254 + ((x)*0x800)])) +#define MCF_FEC_IEEE_T_DEF(x) (*(vuint32*)(&__MBAR[0x9258 + ((x)*0x800)])) +#define MCF_FEC_IEEE_T_LCOL(x) (*(vuint32*)(&__MBAR[0x925C + ((x)*0x800)])) +#define MCF_FEC_IEEE_T_EXCOL(x) (*(vuint32*)(&__MBAR[0x9260 + ((x)*0x800)])) +#define MCF_FEC_IEEE_T_MACERR(x) (*(vuint32*)(&__MBAR[0x9264 + ((x)*0x800)])) +#define MCF_FEC_IEEE_T_CSERR(x) (*(vuint32*)(&__MBAR[0x9268 + ((x)*0x800)])) +#define MCF_FEC_IEEE_T_SQE(x) (*(vuint32*)(&__MBAR[0x926C + ((x)*0x800)])) +#define MCF_FEC_IEEE_T_FDXFC(x) (*(vuint32*)(&__MBAR[0x9270 + ((x)*0x800)])) +#define MCF_FEC_IEEE_T_OCTETS_OK(x) (*(vuint32*)(&__MBAR[0x9274 + ((x)*0x800)])) +#define MCF_FEC_RMON_R_DROP(x) (*(vuint32*)(&__MBAR[0x9280 + ((x)*0x800)])) +#define MCF_FEC_RMON_R_PACKETS(x) (*(vuint32*)(&__MBAR[0x9284 + ((x)*0x800)])) +#define MCF_FEC_RMON_R_BC_PKT(x) (*(vuint32*)(&__MBAR[0x9288 + ((x)*0x800)])) +#define MCF_FEC_RMON_R_MC_PKT(x) (*(vuint32*)(&__MBAR[0x928C + ((x)*0x800)])) +#define MCF_FEC_RMON_R_CRC_ALIGN(x) (*(vuint32*)(&__MBAR[0x9290 + ((x)*0x800)])) +#define MCF_FEC_RMON_R_UNDERSIZE(x) (*(vuint32*)(&__MBAR[0x9294 + ((x)*0x800)])) +#define MCF_FEC_RMON_R_OVERSIZE(x) (*(vuint32*)(&__MBAR[0x9298 + ((x)*0x800)])) +#define MCF_FEC_RMON_R_FRAG(x) (*(vuint32*)(&__MBAR[0x929C + ((x)*0x800)])) +#define MCF_FEC_RMON_R_JAB(x) (*(vuint32*)(&__MBAR[0x92A0 + ((x)*0x800)])) +#define MCF_FEC_RMON_R_RESVD_0(x) (*(vuint32*)(&__MBAR[0x92A4 + ((x)*0x800)])) +#define MCF_FEC_RMON_R_P64(x) (*(vuint32*)(&__MBAR[0x92A8 + ((x)*0x800)])) +#define MCF_FEC_RMON_R_P65TO127(x) (*(vuint32*)(&__MBAR[0x92AC + ((x)*0x800)])) +#define MCF_FEC_RMON_R_P128TO255(x) (*(vuint32*)(&__MBAR[0x92B0 + ((x)*0x800)])) +#define MCF_FEC_RMON_R_P256TO511(x) (*(vuint32*)(&__MBAR[0x92B4 + ((x)*0x800)])) +#define MCF_FEC_RMON_R_P512TO1023(x) (*(vuint32*)(&__MBAR[0x92B8 + ((x)*0x800)])) +#define MCF_FEC_RMON_R_P1024TO2047(x) (*(vuint32*)(&__MBAR[0x92BC + ((x)*0x800)])) +#define MCF_FEC_RMON_R_P_GTE2048(x) (*(vuint32*)(&__MBAR[0x92C0 + ((x)*0x800)])) +#define MCF_FEC_RMON_R_OCTETS(x) (*(vuint32*)(&__MBAR[0x92C4 + ((x)*0x800)])) +#define MCF_FEC_IEEE_R_DROP(x) (*(vuint32*)(&__MBAR[0x92C8 + ((x)*0x800)])) +#define MCF_FEC_IEEE_R_FRAME_OK(x) (*(vuint32*)(&__MBAR[0x92CC + ((x)*0x800)])) +#define MCF_FEC_IEEE_R_CRC(x) (*(vuint32*)(&__MBAR[0x92D0 + ((x)*0x800)])) +#define MCF_FEC_IEEE_R_ALIGN(x) (*(vuint32*)(&__MBAR[0x92D4 + ((x)*0x800)])) +#define MCF_FEC_IEEE_R_MACERR(x) (*(vuint32*)(&__MBAR[0x92D8 + ((x)*0x800)])) +#define MCF_FEC_IEEE_R_FDXFC(x) (*(vuint32*)(&__MBAR[0x92DC + ((x)*0x800)])) +#define MCF_FEC_IEEE_R_OCTETS_OK(x) (*(vuint32*)(&__MBAR[0x92E0 + ((x)*0x800)])) + + +/* Bit definitions and macros for MCF_FEC_EIR */ +#define MCF_FEC_EIR_RFERR (0x20000) +#define MCF_FEC_EIR_XFERR (0x40000) +#define MCF_FEC_EIR_XFUN (0x80000) +#define MCF_FEC_EIR_RL (0x100000) +#define MCF_FEC_EIR_LC (0x200000) +#define MCF_FEC_EIR_MII (0x800000) +#define MCF_FEC_EIR_TXF (0x8000000) +#define MCF_FEC_EIR_GRA (0x10000000) +#define MCF_FEC_EIR_BABT (0x20000000) +#define MCF_FEC_EIR_BABR (0x40000000) +#define MCF_FEC_EIR_HBERR (0x80000000) +#define MCF_FEC_EIR_CLEAR_ALL (0xFFFFFFFF) + +/* Bit definitions and macros for MCF_FEC_EIMR */ +#define MCF_FEC_EIMR_RFERR (0x20000) +#define MCF_FEC_EIMR_XFERR (0x40000) +#define MCF_FEC_EIMR_XFUN (0x80000) +#define MCF_FEC_EIMR_RL (0x100000) +#define MCF_FEC_EIMR_LC (0x200000) +#define MCF_FEC_EIMR_MII (0x800000) +#define MCF_FEC_EIMR_TXF (0x8000000) +#define MCF_FEC_EIMR_GRA (0x10000000) +#define MCF_FEC_EIMR_BABT (0x20000000) +#define MCF_FEC_EIMR_BABR (0x40000000) +#define MCF_FEC_EIMR_HBERR (0x80000000) +#define MCF_FEC_EIMR_MASK_ALL (0) +#define MCF_FEC_EIMR_UNMASK_ALL (0xFFFFFFFF) + +/* Bit definitions and macros for MCF_FEC_ECR */ +#define MCF_FEC_ECR_RESET (0x1) +#define MCF_FEC_ECR_ETHER_EN (0x2) + +/* Bit definitions and macros for MCF_FEC_MMFR */ +#define MCF_FEC_MMFR_DATA(x) (((x)&0xFFFF)<<0) +#define MCF_FEC_MMFR_TA(x) (((x)&0x3)<<0x10) +#define MCF_FEC_MMFR_TA_10 (0x20000) +#define MCF_FEC_MMFR_RA(x) (((x)&0x1F)<<0x12) +#define MCF_FEC_MMFR_PA(x) (((x)&0x1F)<<0x17) +#define MCF_FEC_MMFR_OP(x) (((x)&0x3)<<0x1C) +#define MCF_FEC_MMFR_OP_READ (0x20000000) +#define MCF_FEC_MMFR_OP_WRITE (0x10000000) +#define MCF_FEC_MMFR_ST(x) (((x)&0x3)<<0x1E) +#define MCF_FEC_MMFR_ST_01 (0x40000000) + +/* Bit definitions and macros for MCF_FEC_MSCR */ +#define MCF_FEC_MSCR_MII_SPEED(x) (((x)&0x3F)<<0x1) +#define MCF_FEC_MSCR_DIS_PREAMBLE (0x80) +#define MCF_FEC_MSCR_MII_SPEED_133 (0x1B<<0x1) +#define MCF_FEC_MSCR_MII_SPEED_120 (0x18<<0x1) +#define MCF_FEC_MSCR_MII_SPEED_66 (0xE<<0x1) +#define MCF_FEC_MSCR_MII_SPEED_60 (0xC<<0x1) + +/* Bit definitions and macros for MCF_FEC_MIBC */ +#define MCF_FEC_MIBC_MIB_IDLE (0x40000000) +#define MCF_FEC_MIBC_MIB_DISABLE (0x80000000) + +/* Bit definitions and macros for MCF_FEC_RCR */ +#define MCF_FEC_RCR_LOOP (0x1) +#define MCF_FEC_RCR_DRT (0x2) +#define MCF_FEC_RCR_MII_MODE (0x4) +#define MCF_FEC_RCR_PROM (0x8) +#define MCF_FEC_RCR_BC_REJ (0x10) +#define MCF_FEC_RCR_FCE (0x20) +#define MCF_FEC_RCR_MAX_FL(x) (((x)&0x7FF)<<0x10) + +/* Bit definitions and macros for MCF_FEC_RHR */ +#define MCF_FEC_RHR_HASH(x) (((x)&0x3F)<<0x18) +#define MCF_FEC_RHR_MULTCAST (0x40000000) +#define MCF_FEC_RHR_FCE (0x80000000) + +/* Bit definitions and macros for MCF_FEC_TCR */ +#define MCF_FEC_TCR_GTS (0x1) +#define MCF_FEC_TCR_HBC (0x2) +#define MCF_FEC_TCR_FDEN (0x4) +#define MCF_FEC_TCR_TFC_PAUSE (0x8) +#define MCF_FEC_TCR_RFC_PAUSE (0x10) + +/* Bit definitions and macros for MCF_FEC_PALR */ +#define MCF_FEC_PALR_PADDR1(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_PAHR */ +#define MCF_FEC_PAHR_TYPE(x) (((x)&0xFFFF)<<0) +#define MCF_FEC_PAHR_PADDR2(x) (((x)&0xFFFF)<<0x10) + +/* Bit definitions and macros for MCF_FEC_OPD */ +#define MCF_FEC_OPD_PAUSE_DUR(x) (((x)&0xFFFF)<<0) +#define MCF_FEC_OPD_OPCODE(x) (((x)&0xFFFF)<<0x10) + +/* Bit definitions and macros for MCF_FEC_IAUR */ +#define MCF_FEC_IAUR_IADDR1(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IALR */ +#define MCF_FEC_IALR_IADDR2(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_GAUR */ +#define MCF_FEC_GAUR_GADDR1(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_GALR */ +#define MCF_FEC_GALR_GADDR2(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_FECTFWR */ +#define MCF_FEC_FECTFWR_X_WMRK(x) (((x)&0xF)<<0) +#define MCF_FEC_FECTFWR_X_WMRK_64 (0) +#define MCF_FEC_FECTFWR_X_WMRK_128 (0x1) +#define MCF_FEC_FECTFWR_X_WMRK_192 (0x2) +#define MCF_FEC_FECTFWR_X_WMRK_256 (0x3) +#define MCF_FEC_FECTFWR_X_WMRK_320 (0x4) +#define MCF_FEC_FECTFWR_X_WMRK_384 (0x5) +#define MCF_FEC_FECTFWR_X_WMRK_448 (0x6) +#define MCF_FEC_FECTFWR_X_WMRK_512 (0x7) +#define MCF_FEC_FECTFWR_X_WMRK_576 (0x8) +#define MCF_FEC_FECTFWR_X_WMRK_640 (0x9) +#define MCF_FEC_FECTFWR_X_WMRK_704 (0xA) +#define MCF_FEC_FECTFWR_X_WMRK_768 (0xB) +#define MCF_FEC_FECTFWR_X_WMRK_832 (0xC) +#define MCF_FEC_FECTFWR_X_WMRK_896 (0xD) +#define MCF_FEC_FECTFWR_X_WMRK_960 (0xE) +#define MCF_FEC_FECTFWR_X_WMRK_1024 (0xF) + +/* Bit definitions and macros for MCF_FEC_FECRFDR */ +#define MCF_FEC_FECRFDR_FIFO_DATA(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_FECRFSR */ +#define MCF_FEC_FECRFSR_EMT (0x10000) +#define MCF_FEC_FECRFSR_ALARM (0x20000) +#define MCF_FEC_FECRFSR_FU (0x40000) +#define MCF_FEC_FECRFSR_FRMRDY (0x80000) +#define MCF_FEC_FECRFSR_OF (0x100000) +#define MCF_FEC_FECRFSR_UF (0x200000) +#define MCF_FEC_FECRFSR_RXW (0x400000) +#define MCF_FEC_FECRFSR_FAE (0x800000) +#define MCF_FEC_FECRFSR_FRM(x) (((x)&0xF)<<0x18) +#define MCF_FEC_FECRFSR_IP (0x80000000) + +/* Bit definitions and macros for MCF_FEC_FECRFCR */ +#define MCF_FEC_FECRFCR_COUNTER(x) (((x)&0xFFFF)<<0) +#define MCF_FEC_FECRFCR_OF_MSK (0x80000) +#define MCF_FEC_FECRFCR_UF_MSK (0x100000) +#define MCF_FEC_FECRFCR_RXW_MSK (0x200000) +#define MCF_FEC_FECRFCR_FAE_MSK (0x400000) +#define MCF_FEC_FECRFCR_IP_MSK (0x800000) +#define MCF_FEC_FECRFCR_GR(x) (((x)&0x7)<<0x18) +#define MCF_FEC_FECRFCR_FRMEN (0x8000000) +#define MCF_FEC_FECRFCR_TIMER (0x10000000) + +/* Bit definitions and macros for MCF_FEC_FECRLRFP */ +#define MCF_FEC_FECRLRFP_LRFP(x) (((x)&0x3FF)<<0) + +/* Bit definitions and macros for MCF_FEC_FECRLWFP */ +#define MCF_FEC_FECRLWFP_LWFP(x) (((x)&0x3FF)<<0) + +/* Bit definitions and macros for MCF_FEC_FECRFAR */ +#define MCF_FEC_FECRFAR_ALARM(x) (((x)&0x3FF)<<0) + +/* Bit definitions and macros for MCF_FEC_FECRFRP */ +#define MCF_FEC_FECRFRP_READ(x) (((x)&0x3FF)<<0) + +/* Bit definitions and macros for MCF_FEC_FECRFWP */ +#define MCF_FEC_FECRFWP_WRITE(x) (((x)&0x3FF)<<0) + +/* Bit definitions and macros for MCF_FEC_FECTFDR */ +#define MCF_FEC_FECTFDR_FIFO_DATA(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_FECTFSR */ +#define MCF_FEC_FECTFSR_EMT (0x10000) +#define MCF_FEC_FECTFSR_ALARM (0x20000) +#define MCF_FEC_FECTFSR_FU (0x40000) +#define MCF_FEC_FECTFSR_FRMRDY (0x80000) +#define MCF_FEC_FECTFSR_OF (0x100000) +#define MCF_FEC_FECTFSR_UF (0x200000) +#define MCF_FEC_FECTFSR_FAE (0x800000) +#define MCF_FEC_FECTFSR_FRM(x) (((x)&0xF)<<0x18) +#define MCF_FEC_FECTFSR_TXW (0x40000000) +#define MCF_FEC_FECTFSR_IP (0x80000000) + +/* Bit definitions and macros for MCF_FEC_FECTFCR */ +#define MCF_FEC_FECTFCR_RESERVED (0x200000) +#define MCF_FEC_FECTFCR_COUNTER(x) (((x)&0xFFFF)<<0|0x200000) +#define MCF_FEC_FECTFCR_TXW_MASK (0x240000) +#define MCF_FEC_FECTFCR_OF_MSK (0x280000) +#define MCF_FEC_FECTFCR_UF_MSK (0x300000) +#define MCF_FEC_FECTFCR_FAE_MSK (0x600000) +#define MCF_FEC_FECTFCR_IP_MSK (0xA00000) +#define MCF_FEC_FECTFCR_GR(x) (((x)&0x7)<<0x18|0x200000) +#define MCF_FEC_FECTFCR_FRMEN (0x8200000) +#define MCF_FEC_FECTFCR_TIMER (0x10200000) +#define MCF_FEC_FECTFCR_WFR (0x20200000) +#define MCF_FEC_FECTFCR_WCTL (0x40200000) + +/* Bit definitions and macros for MCF_FEC_FECTLRFP */ +#define MCF_FEC_FECTLRFP_LRFP(x) (((x)&0x3FF)<<0) + +/* Bit definitions and macros for MCF_FEC_FECTLWFP */ +#define MCF_FEC_FECTLWFP_LWFP(x) (((x)&0x3FF)<<0) + +/* Bit definitions and macros for MCF_FEC_FECTFAR */ +#define MCF_FEC_FECTFAR_ALARM(x) (((x)&0x3FF)<<0) + +/* Bit definitions and macros for MCF_FEC_FECTFRP */ +#define MCF_FEC_FECTFRP_READ(x) (((x)&0x3FF)<<0) + +/* Bit definitions and macros for MCF_FEC_FECTFWP */ +#define MCF_FEC_FECTFWP_WRITE(x) (((x)&0x3FF)<<0) + +/* Bit definitions and macros for MCF_FEC_FECFRST */ +#define MCF_FEC_FECFRST_RST_CTL (0x1000000) +#define MCF_FEC_FECFRST_SW_RST (0x2000000) + +/* Bit definitions and macros for MCF_FEC_FECCTCWR */ +#define MCF_FEC_FECCTCWR_TFCW (0x1000000) +#define MCF_FEC_FECCTCWR_CRC (0x2000000) + +/* Bit definitions and macros for MCF_FEC_RMON_T_DROP */ +#define MCF_FEC_RMON_T_DROP_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_PACKETS */ +#define MCF_FEC_RMON_T_PACKETS_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_BC_PKT */ +#define MCF_FEC_RMON_T_BC_PKT_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_MC_PKT */ +#define MCF_FEC_RMON_T_MC_PKT_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_CRC_ALIGN */ +#define MCF_FEC_RMON_T_CRC_ALIGN_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_UNDERSIZE */ +#define MCF_FEC_RMON_T_UNDERSIZE_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_OVERSIZE */ +#define MCF_FEC_RMON_T_OVERSIZE_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_FRAG */ +#define MCF_FEC_RMON_T_FRAG_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_JAB */ +#define MCF_FEC_RMON_T_JAB_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_COL */ +#define MCF_FEC_RMON_T_COL_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_P64 */ +#define MCF_FEC_RMON_T_P64_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_P65TO127 */ +#define MCF_FEC_RMON_T_P65TO127_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_P128TO255 */ +#define MCF_FEC_RMON_T_P128TO255_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_P256TO511 */ +#define MCF_FEC_RMON_T_P256TO511_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_P512TO1023 */ +#define MCF_FEC_RMON_T_P512TO1023_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_P1024TO2047 */ +#define MCF_FEC_RMON_T_P1024TO2047_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_P_GTE2048 */ +#define MCF_FEC_RMON_T_P_GTE2048_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_OCTETS */ +#define MCF_FEC_RMON_T_OCTETS_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_T_DROP */ +#define MCF_FEC_IEEE_T_DROP_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_T_FRAME_OK */ +#define MCF_FEC_IEEE_T_FRAME_OK_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_T_1COL */ +#define MCF_FEC_IEEE_T_1COL_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_T_MCOL */ +#define MCF_FEC_IEEE_T_MCOL_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_T_DEF */ +#define MCF_FEC_IEEE_T_DEF_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_T_LCOL */ +#define MCF_FEC_IEEE_T_LCOL_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_T_EXCOL */ +#define MCF_FEC_IEEE_T_EXCOL_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_T_MACERR */ +#define MCF_FEC_IEEE_T_MACERR_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_T_CSERR */ +#define MCF_FEC_IEEE_T_CSERR_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_T_SQE */ +#define MCF_FEC_IEEE_T_SQE_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_T_FDXFC */ +#define MCF_FEC_IEEE_T_FDXFC_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_T_OCTETS_OK */ +#define MCF_FEC_IEEE_T_OCTETS_OK_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_DROP */ +#define MCF_FEC_RMON_R_DROP_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_PACKETS */ +#define MCF_FEC_RMON_R_PACKETS_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_BC_PKT */ +#define MCF_FEC_RMON_R_BC_PKT_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_MC_PKT */ +#define MCF_FEC_RMON_R_MC_PKT_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_CRC_ALIGN */ +#define MCF_FEC_RMON_R_CRC_ALIGN_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_UNDERSIZE */ +#define MCF_FEC_RMON_R_UNDERSIZE_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_OVERSIZE */ +#define MCF_FEC_RMON_R_OVERSIZE_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_FRAG */ +#define MCF_FEC_RMON_R_FRAG_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_JAB */ +#define MCF_FEC_RMON_R_JAB_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_RESVD_0 */ +#define MCF_FEC_RMON_R_RESVD_0_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_P64 */ +#define MCF_FEC_RMON_R_P64_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_P65TO127 */ +#define MCF_FEC_RMON_R_P65TO127_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_P128TO255 */ +#define MCF_FEC_RMON_R_P128TO255_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_P256TO511 */ +#define MCF_FEC_RMON_R_P256TO511_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_P512TO1023 */ +#define MCF_FEC_RMON_R_P512TO1023_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_P1024TO2047 */ +#define MCF_FEC_RMON_R_P1024TO2047_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_P_GTE2048 */ +#define MCF_FEC_RMON_R_P_GTE2048_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_OCTETS */ +#define MCF_FEC_RMON_R_OCTETS_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_R_DROP */ +#define MCF_FEC_IEEE_R_DROP_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_R_FRAME_OK */ +#define MCF_FEC_IEEE_R_FRAME_OK_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_R_CRC */ +#define MCF_FEC_IEEE_R_CRC_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_R_ALIGN */ +#define MCF_FEC_IEEE_R_ALIGN_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_R_MACERR */ +#define MCF_FEC_IEEE_R_MACERR_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_R_FDXFC */ +#define MCF_FEC_IEEE_R_FDXFC_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_R_OCTETS_OK */ +#define MCF_FEC_IEEE_R_OCTETS_OK_Value(x) (((x)&0xFFFFFFFF)<<0) + + +#endif /* __MCF5475_FEC_H__ */ diff --git a/BaS_codewarrior/firebeeV1/headers/MCF5475_GPIO.h b/BaS_codewarrior/firebeeV1/headers/MCF5475_GPIO.h new file mode 100644 index 0000000..7ef3dce --- /dev/null +++ b/BaS_codewarrior/firebeeV1/headers/MCF5475_GPIO.h @@ -0,0 +1,543 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_GPIO_H__ +#define __MCF5475_GPIO_H__ + + +/********************************************************************* +* +* General Purpose I/O (GPIO) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_GPIO_PODR_FBCTL (*(vuint8 *)(&__MBAR[0xA00])) +#define MCF_GPIO_PDDR_FBCTL (*(vuint8 *)(&__MBAR[0xA10])) +#define MCF_GPIO_PPDSDR_FBCTL (*(vuint8 *)(&__MBAR[0xA20])) +#define MCF_GPIO_PCLRR_FBCTL (*(vuint8 *)(&__MBAR[0xA30])) + +#define MCF_GPIO_PODR_FBCS (*(vuint8 *)(&__MBAR[0xA01])) +#define MCF_GPIO_PDDR_FBCS (*(vuint8 *)(&__MBAR[0xA11])) +#define MCF_GPIO_PPDSDR_FBCS (*(vuint8 *)(&__MBAR[0xA21])) +#define MCF_GPIO_PCLRR_FBCS (*(vuint8 *)(&__MBAR[0xA31])) + +#define MCF_GPIO_PODR_DMA (*(vuint8 *)(&__MBAR[0xA02])) +#define MCF_GPIO_PDDR_DMA (*(vuint8 *)(&__MBAR[0xA12])) +#define MCF_GPIO_PPDSDR_DMA (*(vuint8 *)(&__MBAR[0xA22])) +#define MCF_GPIO_PCLRR_DMA (*(vuint8 *)(&__MBAR[0xA32])) + +#define MCF_GPIO_PODR_FEC0H (*(vuint8 *)(&__MBAR[0xA04])) +#define MCF_GPIO_PDDR_FEC0H (*(vuint8 *)(&__MBAR[0xA14])) +#define MCF_GPIO_PPDSDR_FEC0H (*(vuint8 *)(&__MBAR[0xA24])) +#define MCF_GPIO_PCLRR_FEC0H (*(vuint8 *)(&__MBAR[0xA34])) + +#define MCF_GPIO_PODR_FEC0L (*(vuint8 *)(&__MBAR[0xA05])) +#define MCF_GPIO_PDDR_FEC0L (*(vuint8 *)(&__MBAR[0xA15])) +#define MCF_GPIO_PPDSDR_FEC0L (*(vuint8 *)(&__MBAR[0xA25])) +#define MCF_GPIO_PCLRR_FEC0L (*(vuint8 *)(&__MBAR[0xA35])) + +#define MCF_GPIO_PODR_FEC1H (*(vuint8 *)(&__MBAR[0xA06])) +#define MCF_GPIO_PDDR_FEC1H (*(vuint8 *)(&__MBAR[0xA16])) +#define MCF_GPIO_PPDSDR_FEC1H (*(vuint8 *)(&__MBAR[0xA26])) +#define MCF_GPIO_PCLRR_FEC1H (*(vuint8 *)(&__MBAR[0xA36])) + +#define MCF_GPIO_PODR_FEC1L (*(vuint8 *)(&__MBAR[0xA07])) +#define MCF_GPIO_PDDR_FEC1L (*(vuint8 *)(&__MBAR[0xA17])) +#define MCF_GPIO_PPDSDR_FEC1L (*(vuint8 *)(&__MBAR[0xA27])) +#define MCF_GPIO_PCLRR_FEC1L (*(vuint8 *)(&__MBAR[0xA37])) + +#define MCF_GPIO_PODR_FECI2C (*(vuint8 *)(&__MBAR[0xA08])) +#define MCF_GPIO_PDDR_FECI2C (*(vuint8 *)(&__MBAR[0xA18])) +#define MCF_GPIO_PPDSDR_FECI2C (*(vuint8 *)(&__MBAR[0xA28])) +#define MCF_GPIO_PCLRR_FECI2C (*(vuint8 *)(&__MBAR[0xA38])) + +#define MCF_GPIO_PODR_PCIBG (*(vuint8 *)(&__MBAR[0xA09])) +#define MCF_GPIO_PDDR_PCIBG (*(vuint8 *)(&__MBAR[0xA19])) +#define MCF_GPIO_PPDSDR_PCIBG (*(vuint8 *)(&__MBAR[0xA29])) +#define MCF_GPIO_PCLRR_PCIBG (*(vuint8 *)(&__MBAR[0xA39])) + +#define MCF_GPIO_PODR_PCIBR (*(vuint8 *)(&__MBAR[0xA0A])) +#define MCF_GPIO_PDDR_PCIBR (*(vuint8 *)(&__MBAR[0xA1A])) +#define MCF_GPIO_PPDSDR_PCIBR (*(vuint8 *)(&__MBAR[0xA2A])) +#define MCF_GPIO_PCLRR_PCIBR (*(vuint8 *)(&__MBAR[0xA3A])) + +#define MCF_GPIO2_PODR_PSC3PSC (*(vuint8 *)(&__MBAR[0xA0C])) +#define MCF_GPIO2_PDDR_PSC3PSC (*(vuint8 *)(&__MBAR[0xA1C])) +#define MCF_GPIO2_PPDSDR_PSC3PSC (*(vuint8 *)(&__MBAR[0xA2C])) +#define MCF_GPIO2_PCLRR_PSC3PSC (*(vuint8 *)(&__MBAR[0xA3C])) + +#define MCF_GPIO0_PODR_PSC1PSC (*(vuint8 *)(&__MBAR[0xA0D])) +#define MCF_GPIO0_PDDR_PSC1PSC (*(vuint8 *)(&__MBAR[0xA1D])) +#define MCF_GPIO0_PPDSDR_PSC1PSC (*(vuint8 *)(&__MBAR[0xA2D])) +#define MCF_GPIO0_PCLRR_PSC1PSC (*(vuint8 *)(&__MBAR[0xA3D])) + +#define MCF_GPIO_PODR_DSPI (*(vuint8 *)(&__MBAR[0xA0E])) +#define MCF_GPIO_PDDR_DSPI (*(vuint8 *)(&__MBAR[0xA1E])) +#define MCF_GPIO_PPDSDR_DSPI (*(vuint8 *)(&__MBAR[0xA2E])) +#define MCF_GPIO_PCLRR_DSPI (*(vuint8 *)(&__MBAR[0xA3E])) + + + +/* Bit definitions and macros for MCF_GPIO_PODR_FBCTL */ +#define MCF_GPIO_PODR_FBCTL_PODR_FBCTL0 (0x1) +#define MCF_GPIO_PODR_FBCTL_PODR_FBCTL1 (0x2) +#define MCF_GPIO_PODR_FBCTL_PODR_FBCTL2 (0x4) +#define MCF_GPIO_PODR_FBCTL_PODR_FBCTL3 (0x8) +#define MCF_GPIO_PODR_FBCTL_PODR_FBCTL4 (0x10) +#define MCF_GPIO_PODR_FBCTL_PODR_FBCTL5 (0x20) +#define MCF_GPIO_PODR_FBCTL_PODR_FBCTL6 (0x40) +#define MCF_GPIO_PODR_FBCTL_PODR_FBCTL7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PDDR_FBCTL */ +#define MCF_GPIO_PDDR_FBCTL_PDDR_FBCTL0 (0x1) +#define MCF_GPIO_PDDR_FBCTL_PDDR_FBCTL1 (0x2) +#define MCF_GPIO_PDDR_FBCTL_PDDR_FBCTL2 (0x4) +#define MCF_GPIO_PDDR_FBCTL_PDDR_FBCTL3 (0x8) +#define MCF_GPIO_PDDR_FBCTL_PDDR_FBCTL4 (0x10) +#define MCF_GPIO_PDDR_FBCTL_PDDR_FBCTL5 (0x20) +#define MCF_GPIO_PDDR_FBCTL_PDDR_FBCTL6 (0x40) +#define MCF_GPIO_PDDR_FBCTL_PDDR_FBCTL7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PPDSDR_FBCTL */ +#define MCF_GPIO_PPDSDR_FBCTL_PPDSDR_FBCTL0 (0x1) +#define MCF_GPIO_PPDSDR_FBCTL_PPDSDR_FBCTL1 (0x2) +#define MCF_GPIO_PPDSDR_FBCTL_PPDSDR_FBCTL2 (0x4) +#define MCF_GPIO_PPDSDR_FBCTL_PPDSDR_FBCTL3 (0x8) +#define MCF_GPIO_PPDSDR_FBCTL_PPDSDR_FBCTL4 (0x10) +#define MCF_GPIO_PPDSDR_FBCTL_PPDSDR_FBCTL5 (0x20) +#define MCF_GPIO_PPDSDR_FBCTL_PPDSDR_FBCTL6 (0x40) +#define MCF_GPIO_PPDSDR_FBCTL_PPDSDR_FBCTL7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PCLRR_FBCTL */ +#define MCF_GPIO_PCLRR_FBCTL_PCLRR_FBCTL0 (0x1) +#define MCF_GPIO_PCLRR_FBCTL_PCLRR_FBCTL1 (0x2) +#define MCF_GPIO_PCLRR_FBCTL_PCLRR_FBCTL2 (0x4) +#define MCF_GPIO_PCLRR_FBCTL_PCLRR_FBCTL3 (0x8) +#define MCF_GPIO_PCLRR_FBCTL_PCLRR_FBCTL4 (0x10) +#define MCF_GPIO_PCLRR_FBCTL_PCLRR_FBCTL5 (0x20) +#define MCF_GPIO_PCLRR_FBCTL_PCLRR_FBCTL6 (0x40) +#define MCF_GPIO_PCLRR_FBCTL_PCLRR_FBCTL7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PODR_FBCS */ +#define MCF_GPIO_PODR_FBCS_PODR_FBCS1 (0x2) +#define MCF_GPIO_PODR_FBCS_PODR_FBCS2 (0x4) +#define MCF_GPIO_PODR_FBCS_PODR_FBCS3 (0x8) +#define MCF_GPIO_PODR_FBCS_PODR_FBCS4 (0x10) +#define MCF_GPIO_PODR_FBCS_PODR_FBCS5 (0x20) + +/* Bit definitions and macros for MCF_GPIO_PDDR_FBCS */ +#define MCF_GPIO_PDDR_FBCS_PDDR_FBCS1 (0x2) +#define MCF_GPIO_PDDR_FBCS_PDDR_FBCS2 (0x4) +#define MCF_GPIO_PDDR_FBCS_PDDR_FBCS3 (0x8) +#define MCF_GPIO_PDDR_FBCS_PDDR_FBCS4 (0x10) +#define MCF_GPIO_PDDR_FBCS_PDDR_FBCS5 (0x20) + +/* Bit definitions and macros for MCF_GPIO_PPDSDR_FBCS */ +#define MCF_GPIO_PPDSDR_FBCS_PPDSDR_FBCS1 (0x2) +#define MCF_GPIO_PPDSDR_FBCS_PPDSDR_FBCS2 (0x4) +#define MCF_GPIO_PPDSDR_FBCS_PPDSDR_FBCS3 (0x8) +#define MCF_GPIO_PPDSDR_FBCS_PPDSDR_FBCS4 (0x10) +#define MCF_GPIO_PPDSDR_FBCS_PPDSDR_FBCS5 (0x20) + +/* Bit definitions and macros for MCF_GPIO_PCLRR_FBCS */ +#define MCF_GPIO_PCLRR_FBCS_PCLRR_FBCS1 (0x2) +#define MCF_GPIO_PCLRR_FBCS_PCLRR_FBCS2 (0x4) +#define MCF_GPIO_PCLRR_FBCS_PCLRR_FBCS3 (0x8) +#define MCF_GPIO_PCLRR_FBCS_PCLRR_FBCS4 (0x10) +#define MCF_GPIO_PCLRR_FBCS_PCLRR_FBCS5 (0x20) + +/* Bit definitions and macros for MCF_GPIO_PODR_DMA */ +#define MCF_GPIO_PODR_DMA_PODR_DMA0 (0x1) +#define MCF_GPIO_PODR_DMA_PODR_DMA1 (0x2) +#define MCF_GPIO_PODR_DMA_PODR_DMA2 (0x4) +#define MCF_GPIO_PODR_DMA_PODR_DMA3 (0x8) + +/* Bit definitions and macros for MCF_GPIO_PDDR_DMA */ +#define MCF_GPIO_PDDR_DMA_PDDR_DMA0 (0x1) +#define MCF_GPIO_PDDR_DMA_PDDR_DMA1 (0x2) +#define MCF_GPIO_PDDR_DMA_PDDR_DMA2 (0x4) +#define MCF_GPIO_PDDR_DMA_PDDR_DMA3 (0x8) + +/* Bit definitions and macros for MCF_GPIO_PPDSDR_DMA */ +#define MCF_GPIO_PPDSDR_DMA_PPDSDR_DMA0 (0x1) +#define MCF_GPIO_PPDSDR_DMA_PPDSDR_DMA1 (0x2) +#define MCF_GPIO_PPDSDR_DMA_PPDSDR_DMA2 (0x4) +#define MCF_GPIO_PPDSDR_DMA_PPDSDR_DMA3 (0x8) + +/* Bit definitions and macros for MCF_GPIO_PCLRR_DMA */ +#define MCF_GPIO_PCLRR_DMA_PCLRR_DMA0 (0x1) +#define MCF_GPIO_PCLRR_DMA_PCLRR_DMA1 (0x2) +#define MCF_GPIO_PCLRR_DMA_PCLRR_DMA2 (0x4) +#define MCF_GPIO_PCLRR_DMA_PCLRR_DMA3 (0x8) + +/* Bit definitions and macros for MCF_GPIO_PODR_FEC0H */ +#define MCF_GPIO_PODR_FEC0H_PODR_FEC0H0 (0x1) +#define MCF_GPIO_PODR_FEC0H_PODR_FEC0H1 (0x2) +#define MCF_GPIO_PODR_FEC0H_PODR_FEC0H2 (0x4) +#define MCF_GPIO_PODR_FEC0H_PODR_FEC0H3 (0x8) +#define MCF_GPIO_PODR_FEC0H_PODR_FEC0H4 (0x10) +#define MCF_GPIO_PODR_FEC0H_PODR_FEC0H5 (0x20) +#define MCF_GPIO_PODR_FEC0H_PODR_FEC0H6 (0x40) +#define MCF_GPIO_PODR_FEC0H_PODR_FEC0H7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PDDR_FEC0H */ +#define MCF_GPIO_PDDR_FEC0H_PDDR_FEC0H0 (0x1) +#define MCF_GPIO_PDDR_FEC0H_PDDR_FEC0H1 (0x2) +#define MCF_GPIO_PDDR_FEC0H_PDDR_FEC0H2 (0x4) +#define MCF_GPIO_PDDR_FEC0H_PDDR_FEC0H3 (0x8) +#define MCF_GPIO_PDDR_FEC0H_PDDR_FEC0H4 (0x10) +#define MCF_GPIO_PDDR_FEC0H_PDDR_FEC0H5 (0x20) +#define MCF_GPIO_PDDR_FEC0H_PDDR_FEC0H6 (0x40) +#define MCF_GPIO_PDDR_FEC0H_PDDR_FEC0H7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PPDSDR_FEC0H */ +#define MCF_GPIO_PPDSDR_FEC0H_PPDSDR_FEC0H0 (0x1) +#define MCF_GPIO_PPDSDR_FEC0H_PPDSDR_FEC0H1 (0x2) +#define MCF_GPIO_PPDSDR_FEC0H_PPDSDR_FEC0H2 (0x4) +#define MCF_GPIO_PPDSDR_FEC0H_PPDSDR_FEC0H3 (0x8) +#define MCF_GPIO_PPDSDR_FEC0H_PPDSDR_FEC0H4 (0x10) +#define MCF_GPIO_PPDSDR_FEC0H_PPDSDR_FEC0H5 (0x20) +#define MCF_GPIO_PPDSDR_FEC0H_PPDSDR_FEC0H6 (0x40) +#define MCF_GPIO_PPDSDR_FEC0H_PPDSDR_FEC0H7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PCLRR_FEC0H */ +#define MCF_GPIO_PCLRR_FEC0H_PCLRR_FEC0H0 (0x1) +#define MCF_GPIO_PCLRR_FEC0H_PCLRR_FEC0H1 (0x2) +#define MCF_GPIO_PCLRR_FEC0H_PCLRR_FEC0H2 (0x4) +#define MCF_GPIO_PCLRR_FEC0H_PCLRR_FEC0H3 (0x8) +#define MCF_GPIO_PCLRR_FEC0H_PCLRR_FEC0H4 (0x10) +#define MCF_GPIO_PCLRR_FEC0H_PCLRR_FEC0H5 (0x20) +#define MCF_GPIO_PCLRR_FEC0H_PCLRR_FEC0H6 (0x40) +#define MCF_GPIO_PCLRR_FEC0H_PCLRR_FEC0H7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PODR_FEC0L */ +#define MCF_GPIO_PODR_FEC0L_PODR_FEC0L0 (0x1) +#define MCF_GPIO_PODR_FEC0L_PODR_FEC0L1 (0x2) +#define MCF_GPIO_PODR_FEC0L_PODR_FEC0L2 (0x4) +#define MCF_GPIO_PODR_FEC0L_PODR_FEC0L3 (0x8) +#define MCF_GPIO_PODR_FEC0L_PODR_FEC0L4 (0x10) +#define MCF_GPIO_PODR_FEC0L_PODR_FEC0L5 (0x20) +#define MCF_GPIO_PODR_FEC0L_PODR_FEC0L6 (0x40) +#define MCF_GPIO_PODR_FEC0L_PODR_FEC0L7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PDDR_FEC0L */ +#define MCF_GPIO_PDDR_FEC0L_PDDR_FEC0L0 (0x1) +#define MCF_GPIO_PDDR_FEC0L_PDDR_FEC0L1 (0x2) +#define MCF_GPIO_PDDR_FEC0L_PDDR_FEC0L2 (0x4) +#define MCF_GPIO_PDDR_FEC0L_PDDR_FEC0L3 (0x8) +#define MCF_GPIO_PDDR_FEC0L_PDDR_FEC0L4 (0x10) +#define MCF_GPIO_PDDR_FEC0L_PDDR_FEC0L5 (0x20) +#define MCF_GPIO_PDDR_FEC0L_PDDR_FEC0L6 (0x40) +#define MCF_GPIO_PDDR_FEC0L_PDDR_FEC0L7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PPDSDR_FEC0L */ +#define MCF_GPIO_PPDSDR_FEC0L_PPDSDR_FEC0L0 (0x1) +#define MCF_GPIO_PPDSDR_FEC0L_PPDSDR_FEC0L1 (0x2) +#define MCF_GPIO_PPDSDR_FEC0L_PPDSDR_FEC0L2 (0x4) +#define MCF_GPIO_PPDSDR_FEC0L_PPDSDR_FEC0L3 (0x8) +#define MCF_GPIO_PPDSDR_FEC0L_PPDSDR_FEC0L4 (0x10) +#define MCF_GPIO_PPDSDR_FEC0L_PPDSDR_FEC0L5 (0x20) +#define MCF_GPIO_PPDSDR_FEC0L_PPDSDR_FEC0L6 (0x40) +#define MCF_GPIO_PPDSDR_FEC0L_PPDSDR_FEC0L7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PCLRR_FEC0L */ +#define MCF_GPIO_PCLRR_FEC0L_PCLRR_FEC0L0 (0x1) +#define MCF_GPIO_PCLRR_FEC0L_PCLRR_FEC0L1 (0x2) +#define MCF_GPIO_PCLRR_FEC0L_PCLRR_FEC0L2 (0x4) +#define MCF_GPIO_PCLRR_FEC0L_PCLRR_FEC0L3 (0x8) +#define MCF_GPIO_PCLRR_FEC0L_PCLRR_FEC0L4 (0x10) +#define MCF_GPIO_PCLRR_FEC0L_PCLRR_FEC0L5 (0x20) +#define MCF_GPIO_PCLRR_FEC0L_PCLRR_FEC0L6 (0x40) +#define MCF_GPIO_PCLRR_FEC0L_PCLRR_FEC0L7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PODR_FEC1H */ +#define MCF_GPIO_PODR_FEC1H_PODR_FEC1H0 (0x1) +#define MCF_GPIO_PODR_FEC1H_PODR_FEC1H1 (0x2) +#define MCF_GPIO_PODR_FEC1H_PODR_FEC1H2 (0x4) +#define MCF_GPIO_PODR_FEC1H_PODR_FEC1H3 (0x8) +#define MCF_GPIO_PODR_FEC1H_PODR_FEC1H4 (0x10) +#define MCF_GPIO_PODR_FEC1H_PODR_FEC1H5 (0x20) +#define MCF_GPIO_PODR_FEC1H_PODR_FEC1H6 (0x40) +#define MCF_GPIO_PODR_FEC1H_PODR_FEC1H7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PDDR_FEC1H */ +#define MCF_GPIO_PDDR_FEC1H_PDDR_FEC1H0 (0x1) +#define MCF_GPIO_PDDR_FEC1H_PDDR_FEC1H1 (0x2) +#define MCF_GPIO_PDDR_FEC1H_PDDR_FEC1H2 (0x4) +#define MCF_GPIO_PDDR_FEC1H_PDDR_FEC1H3 (0x8) +#define MCF_GPIO_PDDR_FEC1H_PDDR_FEC1H4 (0x10) +#define MCF_GPIO_PDDR_FEC1H_PDDR_FEC1H5 (0x20) +#define MCF_GPIO_PDDR_FEC1H_PDDR_FEC1H6 (0x40) +#define MCF_GPIO_PDDR_FEC1H_PDDR_FEC1H7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PPDSDR_FEC1H */ +#define MCF_GPIO_PPDSDR_FEC1H_PPDSDR_FEC1H0 (0x1) +#define MCF_GPIO_PPDSDR_FEC1H_PPDSDR_FEC1H1 (0x2) +#define MCF_GPIO_PPDSDR_FEC1H_PPDSDR_FEC1H2 (0x4) +#define MCF_GPIO_PPDSDR_FEC1H_PPDSDR_FEC1H3 (0x8) +#define MCF_GPIO_PPDSDR_FEC1H_PPDSDR_FEC1H4 (0x10) +#define MCF_GPIO_PPDSDR_FEC1H_PPDSDR_FEC1H5 (0x20) +#define MCF_GPIO_PPDSDR_FEC1H_PPDSDR_FEC1H6 (0x40) +#define MCF_GPIO_PPDSDR_FEC1H_PPDSDR_FEC1H7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PCLRR_FEC1H */ +#define MCF_GPIO_PCLRR_FEC1H_PCLRR_FEC1H0 (0x1) +#define MCF_GPIO_PCLRR_FEC1H_PCLRR_FEC1H1 (0x2) +#define MCF_GPIO_PCLRR_FEC1H_PCLRR_FEC1H2 (0x4) +#define MCF_GPIO_PCLRR_FEC1H_PCLRR_FEC1H3 (0x8) +#define MCF_GPIO_PCLRR_FEC1H_PCLRR_FEC1H4 (0x10) +#define MCF_GPIO_PCLRR_FEC1H_PCLRR_FEC1H5 (0x20) +#define MCF_GPIO_PCLRR_FEC1H_PCLRR_FEC1H6 (0x40) +#define MCF_GPIO_PCLRR_FEC1H_PCLRR_FEC1H7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PODR_FEC1L */ +#define MCF_GPIO_PODR_FEC1L_PODR_FEC1L0 (0x1) +#define MCF_GPIO_PODR_FEC1L_PODR_FEC1L1 (0x2) +#define MCF_GPIO_PODR_FEC1L_PODR_FEC1L2 (0x4) +#define MCF_GPIO_PODR_FEC1L_PODR_FEC1L3 (0x8) +#define MCF_GPIO_PODR_FEC1L_PODR_FEC1L4 (0x10) +#define MCF_GPIO_PODR_FEC1L_PODR_FEC1L5 (0x20) +#define MCF_GPIO_PODR_FEC1L_PODR_FEC1L6 (0x40) +#define MCF_GPIO_PODR_FEC1L_PODR_FEC1L7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PDDR_FEC1L */ +#define MCF_GPIO_PDDR_FEC1L_PDDR_FEC1L0 (0x1) +#define MCF_GPIO_PDDR_FEC1L_PDDR_FEC1L1 (0x2) +#define MCF_GPIO_PDDR_FEC1L_PDDR_FEC1L2 (0x4) +#define MCF_GPIO_PDDR_FEC1L_PDDR_FEC1L3 (0x8) +#define MCF_GPIO_PDDR_FEC1L_PDDR_FEC1L4 (0x10) +#define MCF_GPIO_PDDR_FEC1L_PDDR_FEC1L5 (0x20) +#define MCF_GPIO_PDDR_FEC1L_PDDR_FEC1L6 (0x40) +#define MCF_GPIO_PDDR_FEC1L_PDDR_FEC1L7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PPDSDR_FEC1L */ +#define MCF_GPIO_PPDSDR_FEC1L_PPDSDR_FEC1L0 (0x1) +#define MCF_GPIO_PPDSDR_FEC1L_PPDSDR_FEC1L1 (0x2) +#define MCF_GPIO_PPDSDR_FEC1L_PPDSDR_FEC1L2 (0x4) +#define MCF_GPIO_PPDSDR_FEC1L_PPDSDR_FEC1L3 (0x8) +#define MCF_GPIO_PPDSDR_FEC1L_PPDSDR_FEC1L4 (0x10) +#define MCF_GPIO_PPDSDR_FEC1L_PPDSDR_FEC1L5 (0x20) +#define MCF_GPIO_PPDSDR_FEC1L_PPDSDR_FEC1L6 (0x40) +#define MCF_GPIO_PPDSDR_FEC1L_PPDSDR_FEC1L7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PCLRR_FEC1L */ +#define MCF_GPIO_PCLRR_FEC1L_PCLRR_FEC1L0 (0x1) +#define MCF_GPIO_PCLRR_FEC1L_PCLRR_FEC1L1 (0x2) +#define MCF_GPIO_PCLRR_FEC1L_PCLRR_FEC1L2 (0x4) +#define MCF_GPIO_PCLRR_FEC1L_PCLRR_FEC1L3 (0x8) +#define MCF_GPIO_PCLRR_FEC1L_PCLRR_FEC1L4 (0x10) +#define MCF_GPIO_PCLRR_FEC1L_PCLRR_FEC1L5 (0x20) +#define MCF_GPIO_PCLRR_FEC1L_PCLRR_FEC1L6 (0x40) +#define MCF_GPIO_PCLRR_FEC1L_PCLRR_FEC1L7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PODR_FECI2C */ +#define MCF_GPIO_PODR_FECI2C_PODR_FECI2C0 (0x1) +#define MCF_GPIO_PODR_FECI2C_PODR_FECI2C1 (0x2) +#define MCF_GPIO_PODR_FECI2C_PODR_FECI2C2 (0x4) +#define MCF_GPIO_PODR_FECI2C_PODR_FECI2C3 (0x8) + +/* Bit definitions and macros for MCF_GPIO_PDDR_FECI2C */ +#define MCF_GPIO_PDDR_FECI2C_PDDR_FECI2C0 (0x1) +#define MCF_GPIO_PDDR_FECI2C_PDDR_FECI2C1 (0x2) +#define MCF_GPIO_PDDR_FECI2C_PDDR_FECI2C2 (0x4) +#define MCF_GPIO_PDDR_FECI2C_PDDR_FECI2C3 (0x8) + +/* Bit definitions and macros for MCF_GPIO_PPDSDR_FECI2C */ +#define MCF_GPIO_PPDSDR_FECI2C_PPDSDR_FECI2C0 (0x1) +#define MCF_GPIO_PPDSDR_FECI2C_PPDSDR_FECI2C1 (0x2) +#define MCF_GPIO_PPDSDR_FECI2C_PPDSDR_FECI2C2 (0x4) +#define MCF_GPIO_PPDSDR_FECI2C_PPDSDR_FECI2C3 (0x8) + +/* Bit definitions and macros for MCF_GPIO_PCLRR_FECI2C */ +#define MCF_GPIO_PCLRR_FECI2C_PCLRR_FECI2C0 (0x1) +#define MCF_GPIO_PCLRR_FECI2C_PCLRR_FECI2C1 (0x2) +#define MCF_GPIO_PCLRR_FECI2C_PCLRR_FECI2C2 (0x4) +#define MCF_GPIO_PCLRR_FECI2C_PCLRR_FECI2C3 (0x8) + +/* Bit definitions and macros for MCF_GPIO_PODR_PCIBG */ +#define MCF_GPIO_PODR_PCIBG_PODR_PCIBG0 (0x1) +#define MCF_GPIO_PODR_PCIBG_PODR_PCIBG1 (0x2) +#define MCF_GPIO_PODR_PCIBG_PODR_PCIBG2 (0x4) +#define MCF_GPIO_PODR_PCIBG_PODR_PCIBG3 (0x8) +#define MCF_GPIO_PODR_PCIBG_PODR_PCIBG4 (0x10) + +/* Bit definitions and macros for MCF_GPIO_PDDR_PCIBG */ +#define MCF_GPIO_PDDR_PCIBG_PDDR_PCIBG0 (0x1) +#define MCF_GPIO_PDDR_PCIBG_PDDR_PCIBG1 (0x2) +#define MCF_GPIO_PDDR_PCIBG_PDDR_PCIBG2 (0x4) +#define MCF_GPIO_PDDR_PCIBG_PDDR_PCIBG3 (0x8) +#define MCF_GPIO_PDDR_PCIBG_PDDR_PCIBG4 (0x10) + +/* Bit definitions and macros for MCF_GPIO_PPDSDR_PCIBG */ +#define MCF_GPIO_PPDSDR_PCIBG_PPDSDR_PCIBG0 (0x1) +#define MCF_GPIO_PPDSDR_PCIBG_PPDSDR_PCIBG1 (0x2) +#define MCF_GPIO_PPDSDR_PCIBG_PPDSDR_PCIBG2 (0x4) +#define MCF_GPIO_PPDSDR_PCIBG_PPDSDR_PCIBG3 (0x8) +#define MCF_GPIO_PPDSDR_PCIBG_PPDSDR_PCIBG4 (0x10) + +/* Bit definitions and macros for MCF_GPIO_PCLRR_PCIBG */ +#define MCF_GPIO_PCLRR_PCIBG_PCLRR_PCIBG0 (0x1) +#define MCF_GPIO_PCLRR_PCIBG_PCLRR_PCIBG1 (0x2) +#define MCF_GPIO_PCLRR_PCIBG_PCLRR_PCIBG2 (0x4) +#define MCF_GPIO_PCLRR_PCIBG_PCLRR_PCIBG3 (0x8) +#define MCF_GPIO_PCLRR_PCIBG_PCLRR_PCIBG4 (0x10) + +/* Bit definitions and macros for MCF_GPIO_PODR_PCIBR */ +#define MCF_GPIO_PODR_PCIBR_PODR_PCIBR0 (0x1) +#define MCF_GPIO_PODR_PCIBR_PODR_PCIBR1 (0x2) +#define MCF_GPIO_PODR_PCIBR_PODR_PCIBR2 (0x4) +#define MCF_GPIO_PODR_PCIBR_PODR_PCIBR3 (0x8) +#define MCF_GPIO_PODR_PCIBR_PODR_PCIBR4 (0x10) + +/* Bit definitions and macros for MCF_GPIO_PDDR_PCIBR */ +#define MCF_GPIO_PDDR_PCIBR_PDDR_PCIBR0 (0x1) +#define MCF_GPIO_PDDR_PCIBR_PDDR_PCIBR1 (0x2) +#define MCF_GPIO_PDDR_PCIBR_PDDR_PCIBR2 (0x4) +#define MCF_GPIO_PDDR_PCIBR_PDDR_PCIBR3 (0x8) +#define MCF_GPIO_PDDR_PCIBR_PDDR_PCIBR4 (0x10) + +/* Bit definitions and macros for MCF_GPIO_PPDSDR_PCIBR */ +#define MCF_GPIO_PPDSDR_PCIBR_PPDSDR_PCIBR0 (0x1) +#define MCF_GPIO_PPDSDR_PCIBR_PPDSDR_PCIBR1 (0x2) +#define MCF_GPIO_PPDSDR_PCIBR_PPDSDR_PCIBR2 (0x4) +#define MCF_GPIO_PPDSDR_PCIBR_PPDSDR_PCIBR3 (0x8) +#define MCF_GPIO_PPDSDR_PCIBR_PPDSDR_PCIBR4 (0x10) + +/* Bit definitions and macros for MCF_GPIO_PCLRR_PCIBR */ +#define MCF_GPIO_PCLRR_PCIBR_PCLRR_PCIBR0 (0x1) +#define MCF_GPIO_PCLRR_PCIBR_PCLRR_PCIBR1 (0x2) +#define MCF_GPIO_PCLRR_PCIBR_PCLRR_PCIBR2 (0x4) +#define MCF_GPIO_PCLRR_PCIBR_PCLRR_PCIBR3 (0x8) +#define MCF_GPIO_PCLRR_PCIBR_PCLRR_PCIBR4 (0x10) + +/* Bit definitions and macros for MCF_GPIO_PODR_PSC3PSC */ +#define MCF_GPIO_PODR_PSC3PSC_PODR_PSC3PSC20 (0x1) +#define MCF_GPIO_PODR_PSC3PSC_PODR_PSC3PSC21 (0x2) +#define MCF_GPIO_PODR_PSC3PSC_PODR_PSC3PSC22 (0x4) +#define MCF_GPIO_PODR_PSC3PSC_PODR_PSC3PSC23 (0x8) +#define MCF_GPIO_PODR_PSC3PSC_PODR_PSC3PSC24 (0x10) +#define MCF_GPIO_PODR_PSC3PSC_PODR_PSC3PSC25 (0x20) +#define MCF_GPIO_PODR_PSC3PSC_PODR_PSC3PSC26 (0x40) +#define MCF_GPIO_PODR_PSC3PSC_PODR_PSC3PSC27 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PDDR_PSC3PSC */ +#define MCF_GPIO_PDDR_PSC3PSC_PDDR_PSC3PSC20 (0x1) +#define MCF_GPIO_PDDR_PSC3PSC_PDDR_PSC3PSC21 (0x2) +#define MCF_GPIO_PDDR_PSC3PSC_PDDR_PSC3PSC22 (0x4) +#define MCF_GPIO_PDDR_PSC3PSC_PDDR_PSC3PSC23 (0x8) +#define MCF_GPIO_PDDR_PSC3PSC_PDDR_PSC3PSC24 (0x10) +#define MCF_GPIO_PDDR_PSC3PSC_PDDR_PSC3PSC25 (0x20) +#define MCF_GPIO_PDDR_PSC3PSC_PDDR_PSC3PSC26 (0x40) +#define MCF_GPIO_PDDR_PSC3PSC_PDDR_PSC3PSC27 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PPDSDR_PSC3PSC */ +#define MCF_GPIO_PPDSDR_PSC3PSC_PPDSDR_PSC3PSC20 (0x1) +#define MCF_GPIO_PPDSDR_PSC3PSC_PPDSDR_PSC3PSC21 (0x2) +#define MCF_GPIO_PPDSDR_PSC3PSC_PPDSDR_PSC3PSC22 (0x4) +#define MCF_GPIO_PPDSDR_PSC3PSC_PPDSDR_PSC3PSC23 (0x8) +#define MCF_GPIO_PPDSDR_PSC3PSC_PPDSDR_PSC3PSC24 (0x10) +#define MCF_GPIO_PPDSDR_PSC3PSC_PPDSDR_PSC3PSC25 (0x20) +#define MCF_GPIO_PPDSDR_PSC3PSC_PPDSDR_PSC3PSC26 (0x40) +#define MCF_GPIO_PPDSDR_PSC3PSC_PPDSDR_PSC3PSC27 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PCLRR_PSC3PSC */ +#define MCF_GPIO_PCLRR_PSC3PSC_PCLRR_PSC3PSC20 (0x1) +#define MCF_GPIO_PCLRR_PSC3PSC_PCLRR_PSC3PSC21 (0x2) +#define MCF_GPIO_PCLRR_PSC3PSC_PCLRR_PSC3PSC22 (0x4) +#define MCF_GPIO_PCLRR_PSC3PSC_PCLRR_PSC3PSC23 (0x8) +#define MCF_GPIO_PCLRR_PSC3PSC_PCLRR_PSC3PSC24 (0x10) +#define MCF_GPIO_PCLRR_PSC3PSC_PCLRR_PSC3PSC25 (0x20) +#define MCF_GPIO_PCLRR_PSC3PSC_PCLRR_PSC3PSC26 (0x40) +#define MCF_GPIO_PCLRR_PSC3PSC_PCLRR_PSC3PSC27 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PODR_PSC1PSC */ +#define MCF_GPIO_PODR_PSC1PSC_PODR_PSC1PSC00 (0x1) +#define MCF_GPIO_PODR_PSC1PSC_PODR_PSC1PSC01 (0x2) +#define MCF_GPIO_PODR_PSC1PSC_PODR_PSC1PSC02 (0x4) +#define MCF_GPIO_PODR_PSC1PSC_PODR_PSC1PSC03 (0x8) +#define MCF_GPIO_PODR_PSC1PSC_PODR_PSC1PSC04 (0x10) +#define MCF_GPIO_PODR_PSC1PSC_PODR_PSC1PSC05 (0x20) +#define MCF_GPIO_PODR_PSC1PSC_PODR_PSC1PSC06 (0x40) +#define MCF_GPIO_PODR_PSC1PSC_PODR_PSC1PSC07 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PDDR_PSC1PSC */ +#define MCF_GPIO_PDDR_PSC1PSC_PDDR_PSC1PSC00 (0x1) +#define MCF_GPIO_PDDR_PSC1PSC_PDDR_PSC1PSC01 (0x2) +#define MCF_GPIO_PDDR_PSC1PSC_PDDR_PSC1PSC02 (0x4) +#define MCF_GPIO_PDDR_PSC1PSC_PDDR_PSC1PSC03 (0x8) +#define MCF_GPIO_PDDR_PSC1PSC_PDDR_PSC1PSC04 (0x10) +#define MCF_GPIO_PDDR_PSC1PSC_PDDR_PSC1PSC05 (0x20) +#define MCF_GPIO_PDDR_PSC1PSC_PDDR_PSC1PSC06 (0x40) +#define MCF_GPIO_PDDR_PSC1PSC_PDDR_PSC1PSC07 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PPDSDR_PSC1PSC */ +#define MCF_GPIO_PPDSDR_PSC1PSC_PPDSDR_PSC1PSC00 (0x1) +#define MCF_GPIO_PPDSDR_PSC1PSC_PPDSDR_PSC1PSC01 (0x2) +#define MCF_GPIO_PPDSDR_PSC1PSC_PPDSDR_PSC1PSC02 (0x4) +#define MCF_GPIO_PPDSDR_PSC1PSC_PPDSDR_PSC1PSC03 (0x8) +#define MCF_GPIO_PPDSDR_PSC1PSC_PPDSDR_PSC1PSC04 (0x10) +#define MCF_GPIO_PPDSDR_PSC1PSC_PPDSDR_PSC1PSC05 (0x20) +#define MCF_GPIO_PPDSDR_PSC1PSC_PPDSDR_PSC1PSC06 (0x40) +#define MCF_GPIO_PPDSDR_PSC1PSC_PPDSDR_PSC1PSC07 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PCLRR_PSC1PSC */ +#define MCF_GPIO_PCLRR_PSC1PSC_PCLRR_PSC1PSC00 (0x1) +#define MCF_GPIO_PCLRR_PSC1PSC_PCLRR_PSC1PSC01 (0x2) +#define MCF_GPIO_PCLRR_PSC1PSC_PCLRR_PSC1PSC02 (0x4) +#define MCF_GPIO_PCLRR_PSC1PSC_PCLRR_PSC1PSC03 (0x8) +#define MCF_GPIO_PCLRR_PSC1PSC_PCLRR_PSC1PSC04 (0x10) +#define MCF_GPIO_PCLRR_PSC1PSC_PCLRR_PSC1PSC05 (0x20) +#define MCF_GPIO_PCLRR_PSC1PSC_PCLRR_PSC1PSC06 (0x40) +#define MCF_GPIO_PCLRR_PSC1PSC_PCLRR_PSC1PSC07 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PODR_DSPI */ +#define MCF_GPIO_PODR_DSPI_PODR_DSPI0 (0x1) +#define MCF_GPIO_PODR_DSPI_PODR_DSPI1 (0x2) +#define MCF_GPIO_PODR_DSPI_PODR_DSPI2 (0x4) +#define MCF_GPIO_PODR_DSPI_PODR_DSPI3 (0x8) +#define MCF_GPIO_PODR_DSPI_PODR_DSPI4 (0x10) +#define MCF_GPIO_PODR_DSPI_PODR_DSPI5 (0x20) +#define MCF_GPIO_PODR_DSPI_PODR_DSPI6 (0x40) + +/* Bit definitions and macros for MCF_GPIO_PDDR_DSPI */ +#define MCF_GPIO_PDDR_DSPI_PDDR_DSPI0 (0x1) +#define MCF_GPIO_PDDR_DSPI_PDDR_DSPI1 (0x2) +#define MCF_GPIO_PDDR_DSPI_PDDR_DSPI2 (0x4) +#define MCF_GPIO_PDDR_DSPI_PDDR_DSPI3 (0x8) +#define MCF_GPIO_PDDR_DSPI_PDDR_DSPI4 (0x10) +#define MCF_GPIO_PDDR_DSPI_PDDR_DSPI5 (0x20) +#define MCF_GPIO_PDDR_DSPI_PDDR_DSPI6 (0x40) + +/* Bit definitions and macros for MCF_GPIO_PPDSDR_DSPI */ +#define MCF_GPIO_PPDSDR_DSPI_PPDSDR_DSPI0 (0x1) +#define MCF_GPIO_PPDSDR_DSPI_PPDSDR_DSPI1 (0x2) +#define MCF_GPIO_PPDSDR_DSPI_PPDSDR_DSPI2 (0x4) +#define MCF_GPIO_PPDSDR_DSPI_PPDSDR_DSPI3 (0x8) +#define MCF_GPIO_PPDSDR_DSPI_PPDSDR_DSPI4 (0x10) +#define MCF_GPIO_PPDSDR_DSPI_PPDSDR_DSPI5 (0x20) +#define MCF_GPIO_PPDSDR_DSPI_PPDSDR_DSPI6 (0x40) + +/* Bit definitions and macros for MCF_GPIO_PCLRR_DSPI */ +#define MCF_GPIO_PCLRR_DSPI_PCLRR_DSPI0 (0x1) +#define MCF_GPIO_PCLRR_DSPI_PCLRR_DSPI1 (0x2) +#define MCF_GPIO_PCLRR_DSPI_PCLRR_DSPI2 (0x4) +#define MCF_GPIO_PCLRR_DSPI_PCLRR_DSPI3 (0x8) +#define MCF_GPIO_PCLRR_DSPI_PCLRR_DSPI4 (0x10) +#define MCF_GPIO_PCLRR_DSPI_PCLRR_DSPI5 (0x20) +#define MCF_GPIO_PCLRR_DSPI_PCLRR_DSPI6 (0x40) + + +#endif /* __MCF5475_GPIO_H__ */ diff --git a/BaS_codewarrior/firebeeV1/headers/MCF5475_GPT.h b/BaS_codewarrior/firebeeV1/headers/MCF5475_GPT.h new file mode 100644 index 0000000..ab99d05 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/headers/MCF5475_GPT.h @@ -0,0 +1,100 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_GPT_H__ +#define __MCF5475_GPT_H__ + + +/********************************************************************* +* +* General Purpose Timers (GPT) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_GPT0_GMS (*(vuint32*)(&__MBAR[0x800])) +#define MCF_GPT0_GCIR (*(vuint32*)(&__MBAR[0x804])) +#define MCF_GPT0_GPWM (*(vuint32*)(&__MBAR[0x808])) +#define MCF_GPT0_GSR (*(vuint32*)(&__MBAR[0x80C])) + +#define MCF_GPT1_GMS (*(vuint32*)(&__MBAR[0x810])) +#define MCF_GPT1_GCIR (*(vuint32*)(&__MBAR[0x814])) +#define MCF_GPT1_GPWM (*(vuint32*)(&__MBAR[0x818])) +#define MCF_GPT1_GSR (*(vuint32*)(&__MBAR[0x81C])) + +#define MCF_GPT2_GMS (*(vuint32*)(&__MBAR[0x820])) +#define MCF_GPT2_GCIR (*(vuint32*)(&__MBAR[0x824])) +#define MCF_GPT2_GPWM (*(vuint32*)(&__MBAR[0x828])) +#define MCF_GPT2_GSR (*(vuint32*)(&__MBAR[0x82C])) + +#define MCF_GPT3_GMS (*(vuint32*)(&__MBAR[0x830])) +#define MCF_GPT3_GCIR (*(vuint32*)(&__MBAR[0x834])) +#define MCF_GPT3_GPWM (*(vuint32*)(&__MBAR[0x838])) +#define MCF_GPT3_GSR (*(vuint32*)(&__MBAR[0x83C])) + +#define MCF_GPT_GMS(x) (*(vuint32*)(&__MBAR[0x800 + ((x)*0x10)])) +#define MCF_GPT_GCIR(x) (*(vuint32*)(&__MBAR[0x804 + ((x)*0x10)])) +#define MCF_GPT_GPWM(x) (*(vuint32*)(&__MBAR[0x808 + ((x)*0x10)])) +#define MCF_GPT_GSR(x) (*(vuint32*)(&__MBAR[0x80C + ((x)*0x10)])) + + +/* Bit definitions and macros for MCF_GPT_GMS */ +#define MCF_GPT_GMS_TMS(x) (((x)&0x7)<<0) +#define MCF_GPT_GMS_TMS_DISABLE (0) +#define MCF_GPT_GMS_TMS_INCAPT (0x1) +#define MCF_GPT_GMS_TMS_OUTCAPT (0x2) +#define MCF_GPT_GMS_TMS_PWM (0x3) +#define MCF_GPT_GMS_TMS_GPIO (0x4) +#define MCF_GPT_GMS_GPIO(x) (((x)&0x3)<<0x4) +#define MCF_GPT_GMS_GPIO_INPUT (0) +#define MCF_GPT_GMS_GPIO_OUTLO (0x20) +#define MCF_GPT_GMS_GPIO_OUTHI (0x30) +#define MCF_GPT_GMS_IEN (0x100) +#define MCF_GPT_GMS_OD (0x200) +#define MCF_GPT_GMS_SC (0x400) +#define MCF_GPT_GMS_CE (0x1000) +#define MCF_GPT_GMS_WDEN (0x8000) +#define MCF_GPT_GMS_ICT(x) (((x)&0x3)<<0x10) +#define MCF_GPT_GMS_ICT_ANY (0) +#define MCF_GPT_GMS_ICT_RISE (0x10000) +#define MCF_GPT_GMS_ICT_FALL (0x20000) +#define MCF_GPT_GMS_ICT_PULSE (0x30000) +#define MCF_GPT_GMS_OCT(x) (((x)&0x3)<<0x14) +#define MCF_GPT_GMS_OCT_FRCLOW (0) +#define MCF_GPT_GMS_OCT_PULSEHI (0x100000) +#define MCF_GPT_GMS_OCT_PULSELO (0x200000) +#define MCF_GPT_GMS_OCT_TOGGLE (0x300000) +#define MCF_GPT_GMS_OCPW(x) (((x)&0xFF)<<0x18) + +/* Bit definitions and macros for MCF_GPT_GCIR */ +#define MCF_GPT_GCIR_CNT(x) (((x)&0xFFFF)<<0) +#define MCF_GPT_GCIR_PRE(x) (((x)&0xFFFF)<<0x10) + +/* Bit definitions and macros for MCF_GPT_GPWM */ +#define MCF_GPT_GPWM_LOAD (0x1) +#define MCF_GPT_GPWM_PWMOP (0x100) +#define MCF_GPT_GPWM_WIDTH(x) (((x)&0xFFFF)<<0x10) + +/* Bit definitions and macros for MCF_GPT_GSR */ +#define MCF_GPT_GSR_CAPT (0x1) +#define MCF_GPT_GSR_COMP (0x2) +#define MCF_GPT_GSR_PWMP (0x4) +#define MCF_GPT_GSR_TEXP (0x8) +#define MCF_GPT_GSR_PIN (0x100) +#define MCF_GPT_GSR_OVF(x) (((x)&0x7)<<0xC) +#define MCF_GPT_GSR_CAPTURE(x) (((x)&0xFFFF)<<0x10) + + +#endif /* __MCF5475_GPT_H__ */ diff --git a/BaS_codewarrior/firebeeV1/headers/MCF5475_I2C.h b/BaS_codewarrior/firebeeV1/headers/MCF5475_I2C.h new file mode 100644 index 0000000..dbbd626 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/headers/MCF5475_I2C.h @@ -0,0 +1,69 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_I2C_H__ +#define __MCF5475_I2C_H__ + + +/********************************************************************* +* +* I2C Module (I2C) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_I2C_I2ADR (*(vuint8 *)(&__MBAR[0x8F00])) +#define MCF_I2C_I2FDR (*(vuint8 *)(&__MBAR[0x8F04])) +#define MCF_I2C_I2CR (*(vuint8 *)(&__MBAR[0x8F08])) +#define MCF_I2C_I2SR (*(vuint8 *)(&__MBAR[0x8F0C])) +#define MCF_I2C_I2DR (*(vuint8 *)(&__MBAR[0x8F10])) +#define MCF_I2C_I2ICR (*(vuint8 *)(&__MBAR[0x8F20])) + + + +/* Bit definitions and macros for MCF_I2C_I2ADR */ +#define MCF_I2C_I2ADR_ADR(x) (((x)&0x7F)<<0x1) + +/* Bit definitions and macros for MCF_I2C_I2FDR */ +#define MCF_I2C_I2FDR_IC(x) (((x)&0x3F)<<0) + +/* Bit definitions and macros for MCF_I2C_I2CR */ +#define MCF_I2C_I2CR_RSTA (0x4) +#define MCF_I2C_I2CR_TXAK (0x8) +#define MCF_I2C_I2CR_MTX (0x10) +#define MCF_I2C_I2CR_MSTA (0x20) +#define MCF_I2C_I2CR_IIEN (0x40) +#define MCF_I2C_I2CR_IEN (0x80) + +/* Bit definitions and macros for MCF_I2C_I2SR */ +#define MCF_I2C_I2SR_RXAK (0x1) +#define MCF_I2C_I2SR_IIF (0x2) +#define MCF_I2C_I2SR_SRW (0x4) +#define MCF_I2C_I2SR_IAL (0x10) +#define MCF_I2C_I2SR_IBB (0x20) +#define MCF_I2C_I2SR_IAAS (0x40) +#define MCF_I2C_I2SR_ICF (0x80) + +/* Bit definitions and macros for MCF_I2C_I2DR */ +#define MCF_I2C_I2DR_DATA(x) (((x)&0xFF)<<0) + +/* Bit definitions and macros for MCF_I2C_I2ICR */ +#define MCF_I2C_I2ICR_IE (0x1) +#define MCF_I2C_I2ICR_RE (0x2) +#define MCF_I2C_I2ICR_TE (0x4) +#define MCF_I2C_I2ICR_BNBE (0x8) + + +#endif /* __MCF5475_I2C_H__ */ diff --git a/BaS_codewarrior/firebeeV1/headers/MCF5475_INTC.h b/BaS_codewarrior/firebeeV1/headers/MCF5475_INTC.h new file mode 100644 index 0000000..4dfc6d2 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/headers/MCF5475_INTC.h @@ -0,0 +1,331 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_INTC_H__ +#define __MCF5475_INTC_H__ + + +/********************************************************************* +* +* Interrupt Controller (INTC) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_INTC_IPRH (*(vuint32*)(&__MBAR[0x700])) +#define MCF_INTC_IPRL (*(vuint32*)(&__MBAR[0x704])) +#define MCF_INTC_IMRH (*(vuint32*)(&__MBAR[0x708])) +#define MCF_INTC_IMRL (*(vuint32*)(&__MBAR[0x70C])) +#define MCF_INTC_INTFRCH (*(vuint32*)(&__MBAR[0x710])) +#define MCF_INTC_INTFRCL (*(vuint32*)(&__MBAR[0x714])) +#define MCF_INTC_IRLR (*(vuint8 *)(&__MBAR[0x718])) +#define MCF_INTC_IACKLPR (*(vuint8 *)(&__MBAR[0x719])) +#define MCF_INTC_ICR01 (*(vuint8 *)(&__MBAR[0x741])) +#define MCF_INTC_ICR02 (*(vuint8 *)(&__MBAR[0x742])) +#define MCF_INTC_ICR03 (*(vuint8 *)(&__MBAR[0x743])) +#define MCF_INTC_ICR04 (*(vuint8 *)(&__MBAR[0x744])) +#define MCF_INTC_ICR05 (*(vuint8 *)(&__MBAR[0x745])) +#define MCF_INTC_ICR06 (*(vuint8 *)(&__MBAR[0x746])) +#define MCF_INTC_ICR07 (*(vuint8 *)(&__MBAR[0x747])) +#define MCF_INTC_ICR08 (*(vuint8 *)(&__MBAR[0x748])) +#define MCF_INTC_ICR09 (*(vuint8 *)(&__MBAR[0x749])) +#define MCF_INTC_ICR10 (*(vuint8 *)(&__MBAR[0x74A])) +#define MCF_INTC_ICR11 (*(vuint8 *)(&__MBAR[0x74B])) +#define MCF_INTC_ICR12 (*(vuint8 *)(&__MBAR[0x74C])) +#define MCF_INTC_ICR13 (*(vuint8 *)(&__MBAR[0x74D])) +#define MCF_INTC_ICR14 (*(vuint8 *)(&__MBAR[0x74E])) +#define MCF_INTC_ICR15 (*(vuint8 *)(&__MBAR[0x74F])) +#define MCF_INTC_ICR16 (*(vuint8 *)(&__MBAR[0x750])) +#define MCF_INTC_ICR17 (*(vuint8 *)(&__MBAR[0x751])) +#define MCF_INTC_ICR18 (*(vuint8 *)(&__MBAR[0x752])) +#define MCF_INTC_ICR19 (*(vuint8 *)(&__MBAR[0x753])) +#define MCF_INTC_ICR20 (*(vuint8 *)(&__MBAR[0x754])) +#define MCF_INTC_ICR21 (*(vuint8 *)(&__MBAR[0x755])) +#define MCF_INTC_ICR22 (*(vuint8 *)(&__MBAR[0x756])) +#define MCF_INTC_ICR23 (*(vuint8 *)(&__MBAR[0x757])) +#define MCF_INTC_ICR24 (*(vuint8 *)(&__MBAR[0x758])) +#define MCF_INTC_ICR25 (*(vuint8 *)(&__MBAR[0x759])) +#define MCF_INTC_ICR26 (*(vuint8 *)(&__MBAR[0x75A])) +#define MCF_INTC_ICR27 (*(vuint8 *)(&__MBAR[0x75B])) +#define MCF_INTC_ICR28 (*(vuint8 *)(&__MBAR[0x75C])) +#define MCF_INTC_ICR29 (*(vuint8 *)(&__MBAR[0x75D])) +#define MCF_INTC_ICR30 (*(vuint8 *)(&__MBAR[0x75E])) +#define MCF_INTC_ICR31 (*(vuint8 *)(&__MBAR[0x75F])) +#define MCF_INTC_ICR32 (*(vuint8 *)(&__MBAR[0x760])) +#define MCF_INTC_ICR33 (*(vuint8 *)(&__MBAR[0x761])) +#define MCF_INTC_ICR34 (*(vuint8 *)(&__MBAR[0x762])) +#define MCF_INTC_ICR35 (*(vuint8 *)(&__MBAR[0x763])) +#define MCF_INTC_ICR36 (*(vuint8 *)(&__MBAR[0x764])) +#define MCF_INTC_ICR37 (*(vuint8 *)(&__MBAR[0x765])) +#define MCF_INTC_ICR38 (*(vuint8 *)(&__MBAR[0x766])) +#define MCF_INTC_ICR39 (*(vuint8 *)(&__MBAR[0x767])) +#define MCF_INTC_ICR40 (*(vuint8 *)(&__MBAR[0x768])) +#define MCF_INTC_ICR41 (*(vuint8 *)(&__MBAR[0x769])) +#define MCF_INTC_ICR42 (*(vuint8 *)(&__MBAR[0x76A])) +#define MCF_INTC_ICR43 (*(vuint8 *)(&__MBAR[0x76B])) +#define MCF_INTC_ICR44 (*(vuint8 *)(&__MBAR[0x76C])) +#define MCF_INTC_ICR45 (*(vuint8 *)(&__MBAR[0x76D])) +#define MCF_INTC_ICR46 (*(vuint8 *)(&__MBAR[0x76E])) +#define MCF_INTC_ICR47 (*(vuint8 *)(&__MBAR[0x76F])) +#define MCF_INTC_ICR48 (*(vuint8 *)(&__MBAR[0x770])) +#define MCF_INTC_ICR49 (*(vuint8 *)(&__MBAR[0x771])) +#define MCF_INTC_ICR50 (*(vuint8 *)(&__MBAR[0x772])) +#define MCF_INTC_ICR51 (*(vuint8 *)(&__MBAR[0x773])) +#define MCF_INTC_ICR52 (*(vuint8 *)(&__MBAR[0x774])) +#define MCF_INTC_ICR53 (*(vuint8 *)(&__MBAR[0x775])) +#define MCF_INTC_ICR54 (*(vuint8 *)(&__MBAR[0x776])) +#define MCF_INTC_ICR55 (*(vuint8 *)(&__MBAR[0x777])) +#define MCF_INTC_ICR56 (*(vuint8 *)(&__MBAR[0x778])) +#define MCF_INTC_ICR57 (*(vuint8 *)(&__MBAR[0x779])) +#define MCF_INTC_ICR58 (*(vuint8 *)(&__MBAR[0x77A])) +#define MCF_INTC_ICR59 (*(vuint8 *)(&__MBAR[0x77B])) +#define MCF_INTC_ICR60 (*(vuint8 *)(&__MBAR[0x77C])) +#define MCF_INTC_ICR61 (*(vuint8 *)(&__MBAR[0x77D])) +#define MCF_INTC_ICR62 (*(vuint8 *)(&__MBAR[0x77E])) +#define MCF_INTC_ICR63 (*(vuint8 *)(&__MBAR[0x77F])) +#define MCF_INTC_SWIACK (*(vuint8 *)(&__MBAR[0x7E0])) +#define MCF_INTC_L1IACK (*(vuint8 *)(&__MBAR[0x7E4])) +#define MCF_INTC_L2IACK (*(vuint8 *)(&__MBAR[0x7E8])) +#define MCF_INTC_L3IACK (*(vuint8 *)(&__MBAR[0x7EC])) +#define MCF_INTC_L4IACK (*(vuint8 *)(&__MBAR[0x7F0])) +#define MCF_INTC_L5IACK (*(vuint8 *)(&__MBAR[0x7F4])) +#define MCF_INTC_L6IACK (*(vuint8 *)(&__MBAR[0x7F8])) +#define MCF_INTC_L7IACK (*(vuint8 *)(&__MBAR[0x7FC])) +#define MCF_INTC_ICR(x) (*(vuint8 *)(&__MBAR[0x741 + ((x-1)*0x1)])) +#define MCF_INTC_LIACK(x) (*(vuint8 *)(&__MBAR[0x7E4 + ((x-1)*0x4)])) + + + +/* Bit definitions and macros for MCF_INTC_IPRH */ +#define MCF_INTC_IPRH_INT32 (0x1) +#define MCF_INTC_IPRH_INT33 (0x2) +#define MCF_INTC_IPRH_INT34 (0x4) +#define MCF_INTC_IPRH_INT35 (0x8) +#define MCF_INTC_IPRH_INT36 (0x10) +#define MCF_INTC_IPRH_INT37 (0x20) +#define MCF_INTC_IPRH_INT38 (0x40) +#define MCF_INTC_IPRH_INT39 (0x80) +#define MCF_INTC_IPRH_INT40 (0x100) +#define MCF_INTC_IPRH_INT41 (0x200) +#define MCF_INTC_IPRH_INT42 (0x400) +#define MCF_INTC_IPRH_INT43 (0x800) +#define MCF_INTC_IPRH_INT44 (0x1000) +#define MCF_INTC_IPRH_INT45 (0x2000) +#define MCF_INTC_IPRH_INT46 (0x4000) +#define MCF_INTC_IPRH_INT47 (0x8000) +#define MCF_INTC_IPRH_INT48 (0x10000) +#define MCF_INTC_IPRH_INT49 (0x20000) +#define MCF_INTC_IPRH_INT50 (0x40000) +#define MCF_INTC_IPRH_INT51 (0x80000) +#define MCF_INTC_IPRH_INT52 (0x100000) +#define MCF_INTC_IPRH_INT53 (0x200000) +#define MCF_INTC_IPRH_INT54 (0x400000) +#define MCF_INTC_IPRH_INT55 (0x800000) +#define MCF_INTC_IPRH_INT56 (0x1000000) +#define MCF_INTC_IPRH_INT57 (0x2000000) +#define MCF_INTC_IPRH_INT58 (0x4000000) +#define MCF_INTC_IPRH_INT59 (0x8000000) +#define MCF_INTC_IPRH_INT60 (0x10000000) +#define MCF_INTC_IPRH_INT61 (0x20000000) +#define MCF_INTC_IPRH_INT62 (0x40000000) +#define MCF_INTC_IPRH_INT63 (0x80000000) + +/* Bit definitions and macros for MCF_INTC_IPRL */ +#define MCF_INTC_IPRL_INT1 (0x2) +#define MCF_INTC_IPRL_INT2 (0x4) +#define MCF_INTC_IPRL_INT3 (0x8) +#define MCF_INTC_IPRL_INT4 (0x10) +#define MCF_INTC_IPRL_INT5 (0x20) +#define MCF_INTC_IPRL_INT6 (0x40) +#define MCF_INTC_IPRL_INT7 (0x80) +#define MCF_INTC_IPRL_INT8 (0x100) +#define MCF_INTC_IPRL_INT9 (0x200) +#define MCF_INTC_IPRL_INT10 (0x400) +#define MCF_INTC_IPRL_INT11 (0x800) +#define MCF_INTC_IPRL_INT12 (0x1000) +#define MCF_INTC_IPRL_INT13 (0x2000) +#define MCF_INTC_IPRL_INT14 (0x4000) +#define MCF_INTC_IPRL_INT15 (0x8000) +#define MCF_INTC_IPRL_INT16 (0x10000) +#define MCF_INTC_IPRL_INT17 (0x20000) +#define MCF_INTC_IPRL_INT18 (0x40000) +#define MCF_INTC_IPRL_INT19 (0x80000) +#define MCF_INTC_IPRL_INT20 (0x100000) +#define MCF_INTC_IPRL_INT21 (0x200000) +#define MCF_INTC_IPRL_INT22 (0x400000) +#define MCF_INTC_IPRL_INT23 (0x800000) +#define MCF_INTC_IPRL_INT24 (0x1000000) +#define MCF_INTC_IPRL_INT25 (0x2000000) +#define MCF_INTC_IPRL_INT26 (0x4000000) +#define MCF_INTC_IPRL_INT27 (0x8000000) +#define MCF_INTC_IPRL_INT28 (0x10000000) +#define MCF_INTC_IPRL_INT29 (0x20000000) +#define MCF_INTC_IPRL_INT30 (0x40000000) +#define MCF_INTC_IPRL_INT31 (0x80000000) + +/* Bit definitions and macros for MCF_INTC_IMRH */ +#define MCF_INTC_IMRH_INT_MASK32 (0x1) +#define MCF_INTC_IMRH_INT_MASK33 (0x2) +#define MCF_INTC_IMRH_INT_MASK34 (0x4) +#define MCF_INTC_IMRH_INT_MASK35 (0x8) +#define MCF_INTC_IMRH_INT_MASK36 (0x10) +#define MCF_INTC_IMRH_INT_MASK37 (0x20) +#define MCF_INTC_IMRH_INT_MASK38 (0x40) +#define MCF_INTC_IMRH_INT_MASK39 (0x80) +#define MCF_INTC_IMRH_INT_MASK40 (0x100) +#define MCF_INTC_IMRH_INT_MASK41 (0x200) +#define MCF_INTC_IMRH_INT_MASK42 (0x400) +#define MCF_INTC_IMRH_INT_MASK43 (0x800) +#define MCF_INTC_IMRH_INT_MASK44 (0x1000) +#define MCF_INTC_IMRH_INT_MASK45 (0x2000) +#define MCF_INTC_IMRH_INT_MASK46 (0x4000) +#define MCF_INTC_IMRH_INT_MASK47 (0x8000) +#define MCF_INTC_IMRH_INT_MASK48 (0x10000) +#define MCF_INTC_IMRH_INT_MASK49 (0x20000) +#define MCF_INTC_IMRH_INT_MASK50 (0x40000) +#define MCF_INTC_IMRH_INT_MASK51 (0x80000) +#define MCF_INTC_IMRH_INT_MASK52 (0x100000) +#define MCF_INTC_IMRH_INT_MASK53 (0x200000) +#define MCF_INTC_IMRH_INT_MASK54 (0x400000) +#define MCF_INTC_IMRH_INT_MASK55 (0x800000) +#define MCF_INTC_IMRH_INT_MASK56 (0x1000000) +#define MCF_INTC_IMRH_INT_MASK57 (0x2000000) +#define MCF_INTC_IMRH_INT_MASK58 (0x4000000) +#define MCF_INTC_IMRH_INT_MASK59 (0x8000000) +#define MCF_INTC_IMRH_INT_MASK60 (0x10000000) +#define MCF_INTC_IMRH_INT_MASK61 (0x20000000) +#define MCF_INTC_IMRH_INT_MASK62 (0x40000000) +#define MCF_INTC_IMRH_INT_MASK63 (0x80000000) + +/* Bit definitions and macros for MCF_INTC_IMRL */ +#define MCF_INTC_IMRL_MASKALL (0x1) +#define MCF_INTC_IMRL_INT_MASK1 (0x2) +#define MCF_INTC_IMRL_INT_MASK2 (0x4) +#define MCF_INTC_IMRL_INT_MASK3 (0x8) +#define MCF_INTC_IMRL_INT_MASK4 (0x10) +#define MCF_INTC_IMRL_INT_MASK5 (0x20) +#define MCF_INTC_IMRL_INT_MASK6 (0x40) +#define MCF_INTC_IMRL_INT_MASK7 (0x80) +#define MCF_INTC_IMRL_INT_MASK8 (0x100) +#define MCF_INTC_IMRL_INT_MASK9 (0x200) +#define MCF_INTC_IMRL_INT_MASK10 (0x400) +#define MCF_INTC_IMRL_INT_MASK11 (0x800) +#define MCF_INTC_IMRL_INT_MASK12 (0x1000) +#define MCF_INTC_IMRL_INT_MASK13 (0x2000) +#define MCF_INTC_IMRL_INT_MASK14 (0x4000) +#define MCF_INTC_IMRL_INT_MASK15 (0x8000) +#define MCF_INTC_IMRL_INT_MASK16 (0x10000) +#define MCF_INTC_IMRL_INT_MASK17 (0x20000) +#define MCF_INTC_IMRL_INT_MASK18 (0x40000) +#define MCF_INTC_IMRL_INT_MASK19 (0x80000) +#define MCF_INTC_IMRL_INT_MASK20 (0x100000) +#define MCF_INTC_IMRL_INT_MASK21 (0x200000) +#define MCF_INTC_IMRL_INT_MASK22 (0x400000) +#define MCF_INTC_IMRL_INT_MASK23 (0x800000) +#define MCF_INTC_IMRL_INT_MASK24 (0x1000000) +#define MCF_INTC_IMRL_INT_MASK25 (0x2000000) +#define MCF_INTC_IMRL_INT_MASK26 (0x4000000) +#define MCF_INTC_IMRL_INT_MASK27 (0x8000000) +#define MCF_INTC_IMRL_INT_MASK28 (0x10000000) +#define MCF_INTC_IMRL_INT_MASK29 (0x20000000) +#define MCF_INTC_IMRL_INT_MASK30 (0x40000000) +#define MCF_INTC_IMRL_INT_MASK31 (0x80000000) + +/* Bit definitions and macros for MCF_INTC_INTFRCH */ +#define MCF_INTC_INTFRCH_INTFRC32 (0x1) +#define MCF_INTC_INTFRCH_INTFRC33 (0x2) +#define MCF_INTC_INTFRCH_INTFRC34 (0x4) +#define MCF_INTC_INTFRCH_INTFRC35 (0x8) +#define MCF_INTC_INTFRCH_INTFRC36 (0x10) +#define MCF_INTC_INTFRCH_INTFRC37 (0x20) +#define MCF_INTC_INTFRCH_INTFRC38 (0x40) +#define MCF_INTC_INTFRCH_INTFRC39 (0x80) +#define MCF_INTC_INTFRCH_INTFRC40 (0x100) +#define MCF_INTC_INTFRCH_INTFRC41 (0x200) +#define MCF_INTC_INTFRCH_INTFRC42 (0x400) +#define MCF_INTC_INTFRCH_INTFRC43 (0x800) +#define MCF_INTC_INTFRCH_INTFRC44 (0x1000) +#define MCF_INTC_INTFRCH_INTFRC45 (0x2000) +#define MCF_INTC_INTFRCH_INTFRC46 (0x4000) +#define MCF_INTC_INTFRCH_INTFRC47 (0x8000) +#define MCF_INTC_INTFRCH_INTFRC48 (0x10000) +#define MCF_INTC_INTFRCH_INTFRC49 (0x20000) +#define MCF_INTC_INTFRCH_INTFRC50 (0x40000) +#define MCF_INTC_INTFRCH_INTFRC51 (0x80000) +#define MCF_INTC_INTFRCH_INTFRC52 (0x100000) +#define MCF_INTC_INTFRCH_INTFRC53 (0x200000) +#define MCF_INTC_INTFRCH_INTFRC54 (0x400000) +#define MCF_INTC_INTFRCH_INTFRC55 (0x800000) +#define MCF_INTC_INTFRCH_INTFRC56 (0x1000000) +#define MCF_INTC_INTFRCH_INTFRC57 (0x2000000) +#define MCF_INTC_INTFRCH_INTFRC58 (0x4000000) +#define MCF_INTC_INTFRCH_INTFRC59 (0x8000000) +#define MCF_INTC_INTFRCH_INTFRC60 (0x10000000) +#define MCF_INTC_INTFRCH_INTFRC61 (0x20000000) +#define MCF_INTC_INTFRCH_INTFRC62 (0x40000000) +#define MCF_INTC_INTFRCH_INTFRC63 (0x80000000) + +/* Bit definitions and macros for MCF_INTC_INTFRCL */ +#define MCF_INTC_INTFRCL_INTFRC1 (0x2) +#define MCF_INTC_INTFRCL_INTFRC2 (0x4) +#define MCF_INTC_INTFRCL_INTFRC3 (0x8) +#define MCF_INTC_INTFRCL_INTFRC4 (0x10) +#define MCF_INTC_INTFRCL_INTFRC5 (0x20) +#define MCF_INTC_INTFRCL_INTFRC6 (0x40) +#define MCF_INTC_INTFRCL_INTFRC7 (0x80) +#define MCF_INTC_INTFRCL_INTFRC8 (0x100) +#define MCF_INTC_INTFRCL_INTFRC9 (0x200) +#define MCF_INTC_INTFRCL_INTFRC10 (0x400) +#define MCF_INTC_INTFRCL_INTFRC11 (0x800) +#define MCF_INTC_INTFRCL_INTFRC12 (0x1000) +#define MCF_INTC_INTFRCL_INTFRC13 (0x2000) +#define MCF_INTC_INTFRCL_INTFRC14 (0x4000) +#define MCF_INTC_INTFRCL_INTFRC15 (0x8000) +#define MCF_INTC_INTFRCL_INTFRC16 (0x10000) +#define MCF_INTC_INTFRCL_INTFRC17 (0x20000) +#define MCF_INTC_INTFRCL_INTFRC18 (0x40000) +#define MCF_INTC_INTFRCL_INTFRC19 (0x80000) +#define MCF_INTC_INTFRCL_INTFRC20 (0x100000) +#define MCF_INTC_INTFRCL_INTFRC21 (0x200000) +#define MCF_INTC_INTFRCL_INTFRC22 (0x400000) +#define MCF_INTC_INTFRCL_INTFRC23 (0x800000) +#define MCF_INTC_INTFRCL_INTFRC24 (0x1000000) +#define MCF_INTC_INTFRCL_INTFRC25 (0x2000000) +#define MCF_INTC_INTFRCL_INTFRC26 (0x4000000) +#define MCF_INTC_INTFRCL_INTFRC27 (0x8000000) +#define MCF_INTC_INTFRCL_INTFRC28 (0x10000000) +#define MCF_INTC_INTFRCL_INTFRC29 (0x20000000) +#define MCF_INTC_INTFRCL_INTFRC30 (0x40000000) +#define MCF_INTC_INTFRCL_INTFRC31 (0x80000000) + +/* Bit definitions and macros for MCF_INTC_IRLR */ +#define MCF_INTC_IRLR_IRQ(x) (((x)&0x7F)<<0x1) + +/* Bit definitions and macros for MCF_INTC_IACKLPR */ +#define MCF_INTC_IACKLPR_PRI(x) (((x)&0xF)<<0) +#define MCF_INTC_IACKLPR_LEVEL(x) (((x)&0x7)<<0x4) + +/* Bit definitions and macros for MCF_INTC_ICR */ +#define MCF_INTC_ICR_IP(x) (((x)&0x7)<<0) +#define MCF_INTC_ICR_IL(x) (((x)&0x7)<<0x3) + +/* Bit definitions and macros for MCF_INTC_SWIACK */ +#define MCF_INTC_SWIACK_VECTOR(x) (((x)&0xFF)<<0) + +/* Bit definitions and macros for MCF_INTC_LIACK */ +#define MCF_INTC_LIACK_VECTOR(x) (((x)&0xFF)<<0) + + +#endif /* __MCF5475_INTC_H__ */ diff --git a/BaS_codewarrior/firebeeV1/headers/MCF5475_MMU.h b/BaS_codewarrior/firebeeV1/headers/MCF5475_MMU.h new file mode 100644 index 0000000..84d57b9 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/headers/MCF5475_MMU.h @@ -0,0 +1,77 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_MMU_H__ +#define __MCF5475_MMU_H__ + + +/********************************************************************* +* +* Memory Management Unit (MMU) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_MMU_MMUCR (*(vuint32*)(&__MMUBAR[0])) +#define MCF_MMU_MMUOR (*(vuint32*)(&__MMUBAR[0x4])) +#define MCF_MMU_MMUSR (*(vuint32*)(&__MMUBAR[0x8])) +#define MCF_MMU_MMUAR (*(vuint32*)(&__MMUBAR[0x10])) +#define MCF_MMU_MMUTR (*(vuint32*)(&__MMUBAR[0x14])) +#define MCF_MMU_MMUDR (*(vuint32*)(&__MMUBAR[0x18])) + + +/* Bit definitions and macros for MCF_MMU_MMUCR */ +#define MCF_MMU_MMUCR_EN (0x1) +#define MCF_MMU_MMUCR_ASM (0x2) + +/* Bit definitions and macros for MCF_MMU_MMUOR */ +#define MCF_MMU_MMUOR_UAA (0x1) +#define MCF_MMU_MMUOR_ACC (0x2) +#define MCF_MMU_MMUOR_RW (0x4) +#define MCF_MMU_MMUOR_ADR (0x8) +#define MCF_MMU_MMUOR_ITLB (0x10) +#define MCF_MMU_MMUOR_CAS (0x20) +#define MCF_MMU_MMUOR_CNL (0x40) +#define MCF_MMU_MMUOR_CA (0x80) +#define MCF_MMU_MMUOR_STLB (0x100) +#define MCF_MMU_MMUOR_AA(x) (((x)&0xFFFF)<<0x10) + +/* Bit definitions and macros for MCF_MMU_MMUSR */ +#define MCF_MMU_MMUSR_HIT (0x2) +#define MCF_MMU_MMUSR_WF (0x8) +#define MCF_MMU_MMUSR_RF (0x10) +#define MCF_MMU_MMUSR_SPF (0x20) + +/* Bit definitions and macros for MCF_MMU_MMUAR */ +#define MCF_MMU_MMUAR_FA(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_MMU_MMUTR */ +#define MCF_MMU_MMUTR_V (0x1) +#define MCF_MMU_MMUTR_SG (0x2) +#define MCF_MMU_MMUTR_ID(x) (((x)&0xFF)<<0x2) +#define MCF_MMU_MMUTR_VA(x) (((x)&0x3FFFFF)<<0xA) + +/* Bit definitions and macros for MCF_MMU_MMUDR */ +#define MCF_MMU_MMUDR_LK (0x2) +#define MCF_MMU_MMUDR_X (0x4) +#define MCF_MMU_MMUDR_W (0x8) +#define MCF_MMU_MMUDR_R (0x10) +#define MCF_MMU_MMUDR_SP (0x20) +#define MCF_MMU_MMUDR_CM(x) (((x)&0x3)<<0x6) +#define MCF_MMU_MMUDR_SZ(x) (((x)&0x3)<<0x8) +#define MCF_MMU_MMUDR_PA(x) (((x)&0x3FFFFF)<<0xA) + + +#endif /* __MCF5475_MMU_H__ */ diff --git a/BaS_codewarrior/firebeeV1/headers/MCF5475_PAD.h b/BaS_codewarrior/firebeeV1/headers/MCF5475_PAD.h new file mode 100644 index 0000000..9c0fcf7 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/headers/MCF5475_PAD.h @@ -0,0 +1,233 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_PAD_H__ +#define __MCF5475_PAD_H__ + + +/********************************************************************* +* +* Common GPIO +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_PAD_PAR_FBCTL (*(vuint16*)(&__MBAR[0xA40])) +#define MCF_PAD_PAR_FBCS (*(vuint8 *)(&__MBAR[0xA42])) +#define MCF_PAD_PAR_DMA (*(vuint8 *)(&__MBAR[0xA43])) +#define MCF_PAD_PAR_FECI2CIRQ (*(vuint16*)(&__MBAR[0xA44])) +#define MCF_PAD_PAR_PCIBG (*(vuint16*)(&__MBAR[0xA48])) +#define MCF_PAD_PAR_PCIBR (*(vuint16*)(&__MBAR[0xA4A])) +#define MCF_PAD_PAR_PSC3 (*(vuint8 *)(&__MBAR[0xA4C])) +#define MCF_PAD_PAR_PSC2 (*(vuint8 *)(&__MBAR[0xA4D])) +#define MCF_PAD_PAR_PSC1 (*(vuint8 *)(&__MBAR[0xA4E])) +#define MCF_PAD_PAR_PSC0 (*(vuint8 *)(&__MBAR[0xA4F])) +#define MCF_PAD_PAR_DSPI (*(vuint16*)(&__MBAR[0xA50])) +#define MCF_PAD_PAR_TIMER (*(vuint8 *)(&__MBAR[0xA52])) + + +/* Bit definitions and macros for MCF_PAD_PAR_FBCTL */ +#define MCF_PAD_PAR_FBCTL_PAR_ALE(x) (((x)&0x3)<<0) +#define MCF_PAD_PAR_FBCTL_PAR_ALE_GPIO (0) +#define MCF_PAD_PAR_FBCTL_PAR_ALE_TBST (0x2) +#define MCF_PAD_PAR_FBCTL_PAR_ALE_ALE (0x3) +#define MCF_PAD_PAR_FBCTL_PAR_TA (0x4) +#define MCF_PAD_PAR_FBCTL_PAR_RWB(x) (((x)&0x3)<<0x4) +#define MCF_PAD_PAR_FBCTL_PAR_RWB_GPIO (0) +#define MCF_PAD_PAR_FBCTL_PAR_RWB_TBST (0x20) +#define MCF_PAD_PAR_FBCTL_PAR_RWB_RW (0x30) +#define MCF_PAD_PAR_FBCTL_PAR_OE (0x40) +#define MCF_PAD_PAR_FBCTL_PAR_BWE0 (0x100) +#define MCF_PAD_PAR_FBCTL_PAR_BWE1 (0x400) +#define MCF_PAD_PAR_FBCTL_PAR_BWE2 (0x1000) +#define MCF_PAD_PAR_FBCTL_PAR_BWE3 (0x4000) + +/* Bit definitions and macros for MCF_PAD_PAR_FBCS */ +#define MCF_PAD_PAR_FBCS_PAR_CS1 (0x2) +#define MCF_PAD_PAR_FBCS_PAR_CS2 (0x4) +#define MCF_PAD_PAR_FBCS_PAR_CS3 (0x8) +#define MCF_PAD_PAR_FBCS_PAR_CS4 (0x10) +#define MCF_PAD_PAR_FBCS_PAR_CS5 (0x20) + +/* Bit definitions and macros for MCF_PAD_PAR_DMA */ +#define MCF_PAD_PAR_DMA_PAR_DREQ0(x) (((x)&0x3)<<0) +#define MCF_PAD_PAR_DMA_PAR_DREQ0_GPIO (0) +#define MCF_PAD_PAR_DMA_PAR_DREQ0_TIN0 (0x2) +#define MCF_PAD_PAR_DMA_PAR_DREQ0_DREQ0 (0x3) +#define MCF_PAD_PAR_DMA_PAR_DREQ1(x) (((x)&0x3)<<0x2) +#define MCF_PAD_PAR_DMA_PAR_DREQ1_GPIO (0) +#define MCF_PAD_PAR_DMA_PAR_DREQ1_IRQ1 (0x4) +#define MCF_PAD_PAR_DMA_PAR_DREQ1_TIN1 (0x8) +#define MCF_PAD_PAR_DMA_PAR_DREQ1_DREQ1 (0xC) +#define MCF_PAD_PAR_DMA_PAR_DACK0(x) (((x)&0x3)<<0x4) +#define MCF_PAD_PAR_DMA_PAR_DACK0_GPIO (0) +#define MCF_PAD_PAR_DMA_PAR_DACK0_TOUT0 (0x20) +#define MCF_PAD_PAR_DMA_PAR_DACK0_DACK0 (0x30) +#define MCF_PAD_PAR_DMA_PAR_DACK1(x) (((x)&0x3)<<0x6) +#define MCF_PAD_PAR_DMA_PAR_DACK1_GPIO (0) +#define MCF_PAD_PAR_DMA_PAR_DACK1_TOUT1 (0x80) +#define MCF_PAD_PAR_DMA_PAR_DACK1_DACK1 (0xC0) + +/* Bit definitions and macros for MCF_PAD_PAR_FECI2CIRQ */ +#define MCF_PAD_PAR_FECI2CIRQ_PAR_IRQ5 (0x1) +#define MCF_PAD_PAR_FECI2CIRQ_PAR_IRQ6 (0x2) +#define MCF_PAD_PAR_FECI2CIRQ_PAR_SCL (0x4) +#define MCF_PAD_PAR_FECI2CIRQ_PAR_SDA (0x8) +#define MCF_PAD_PAR_FECI2CIRQ_PAR_E1MDC(x) (((x)&0x3)<<0x6) +#define MCF_PAD_PAR_FECI2CIRQ_PAR_E1MDC_SCL (0x80) +#define MCF_PAD_PAR_FECI2CIRQ_PAR_E1MDC_E1MDC (0xC0) +#define MCF_PAD_PAR_FECI2CIRQ_PAR_E1MDIO(x) (((x)&0x3)<<0x8) +#define MCF_PAD_PAR_FECI2CIRQ_PAR_E1MDIO_SDA (0x200) +#define MCF_PAD_PAR_FECI2CIRQ_PAR_E1MDIO_E1MDIO (0x300) +#define MCF_PAD_PAR_FECI2CIRQ_PAR_E1MII (0x400) +#define MCF_PAD_PAR_FECI2CIRQ_PAR_E17 (0x800) +#define MCF_PAD_PAR_FECI2CIRQ_PAR_E0MDC (0x1000) +#define MCF_PAD_PAR_FECI2CIRQ_PAR_E0MDIO (0x2000) +#define MCF_PAD_PAR_FECI2CIRQ_PAR_E0MII (0x4000) +#define MCF_PAD_PAR_FECI2CIRQ_PAR_E07 (0x8000) + +/* Bit definitions and macros for MCF_PAD_PAR_PCIBG */ +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG0(x) (((x)&0x3)<<0) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG0_GPIO (0) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG0_TOUT0 (0x2) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG0_PCIBG0 (0x3) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG1(x) (((x)&0x3)<<0x2) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG1_GPIO (0) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG1_TOUT1 (0x8) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG1_PCIBG1 (0xC) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG2(x) (((x)&0x3)<<0x4) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG2_GPIO (0) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG2_TOUT2 (0x20) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG2_PCIBG2 (0x30) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG3(x) (((x)&0x3)<<0x6) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG3_GPIO (0) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG3_TOUT3 (0x80) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG3_PCIBG3 (0xC0) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG4(x) (((x)&0x3)<<0x8) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG4_GPIO (0) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG4_TBST (0x200) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG4_PCIBG4 (0x300) + +/* Bit definitions and macros for MCF_PAD_PAR_PCIBR */ +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR0(x) (((x)&0x3)<<0) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR0_GPIO (0) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR0_TIN0 (0x2) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR0_PCIBR0 (0x3) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR1(x) (((x)&0x3)<<0x2) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR1_GPIO (0) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR1_TIN1 (0x8) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR1_PCIBR1 (0xC) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR2(x) (((x)&0x3)<<0x4) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR2_GPIO (0) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR2_TIN2 (0x20) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR2_PCIBR2 (0x30) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR3(x) (((x)&0x3)<<0x6) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR3_GPIO (0) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR3_TIN3 (0x80) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR3_PCIBR3 (0xC0) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR4(x) (((x)&0x3)<<0x8) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR4_GPIO (0) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR4_IRQ4 (0x200) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR4_PCIBR4 (0x300) + +/* Bit definitions and macros for MCF_PAD_PAR_PSC3 */ +#define MCF_PAD_PAR_PSC3_PAR_TXD3 (0x4) +#define MCF_PAD_PAR_PSC3_PAR_RXD3 (0x8) +#define MCF_PAD_PAR_PSC3_PAR_RTS3(x) (((x)&0x3)<<0x4) +#define MCF_PAD_PAR_PSC3_PAR_RTS3_GPIO (0) +#define MCF_PAD_PAR_PSC3_PAR_RTS3_FSYNC (0x20) +#define MCF_PAD_PAR_PSC3_PAR_RTS3_RTS (0x30) +#define MCF_PAD_PAR_PSC3_PAR_CTS3(x) (((x)&0x3)<<0x6) +#define MCF_PAD_PAR_PSC3_PAR_CTS3_GPIO (0) +#define MCF_PAD_PAR_PSC3_PAR_CTS3_BCLK (0x80) +#define MCF_PAD_PAR_PSC3_PAR_CTS3_CTS (0xC0) + +/* Bit definitions and macros for MCF_PAD_PAR_PSC2 */ +#define MCF_PAD_PAR_PSC2_PAR_TXD2 (0x4) +#define MCF_PAD_PAR_PSC2_PAR_RXD2 (0x8) +#define MCF_PAD_PAR_PSC2_PAR_RTS2(x) (((x)&0x3)<<0x4) +#define MCF_PAD_PAR_PSC2_PAR_RTS2_GPIO (0) +#define MCF_PAD_PAR_PSC2_PAR_RTS2_FSYNC (0x20) +#define MCF_PAD_PAR_PSC2_PAR_RTS2_RTS (0x30) +#define MCF_PAD_PAR_PSC2_PAR_CTS2(x) (((x)&0x3)<<0x6) +#define MCF_PAD_PAR_PSC2_PAR_CTS2_GPIO (0) +#define MCF_PAD_PAR_PSC2_PAR_CTS2_BCLK (0x80) +#define MCF_PAD_PAR_PSC2_PAR_CTS2_CTS (0xC0) + +/* Bit definitions and macros for MCF_PAD_PAR_PSC1 */ +#define MCF_PAD_PAR_PSC1_PAR_TXD1 (0x4) +#define MCF_PAD_PAR_PSC1_PAR_RXD1 (0x8) +#define MCF_PAD_PAR_PSC1_PAR_RTS1(x) (((x)&0x3)<<0x4) +#define MCF_PAD_PAR_PSC1_PAR_RTS1_GPIO (0) +#define MCF_PAD_PAR_PSC1_PAR_RTS1_FSYNC (0x20) +#define MCF_PAD_PAR_PSC1_PAR_RTS1_RTS (0x30) +#define MCF_PAD_PAR_PSC1_PAR_CTS1(x) (((x)&0x3)<<0x6) +#define MCF_PAD_PAR_PSC1_PAR_CTS1_GPIO (0) +#define MCF_PAD_PAR_PSC1_PAR_CTS1_BCLK (0x80) +#define MCF_PAD_PAR_PSC1_PAR_CTS1_CTS (0xC0) + +/* Bit definitions and macros for MCF_PAD_PAR_PSC0 */ +#define MCF_PAD_PAR_PSC0_PAR_TXD0 (0x4) +#define MCF_PAD_PAR_PSC0_PAR_RXD0 (0x8) +#define MCF_PAD_PAR_PSC0_PAR_RTS0(x) (((x)&0x3)<<0x4) +#define MCF_PAD_PAR_PSC0_PAR_RTS0_GPIO (0) +#define MCF_PAD_PAR_PSC0_PAR_RTS0_FSYNC (0x20) +#define MCF_PAD_PAR_PSC0_PAR_RTS0_RTS (0x30) +#define MCF_PAD_PAR_PSC0_PAR_CTS0(x) (((x)&0x3)<<0x6) +#define MCF_PAD_PAR_PSC0_PAR_CTS0_GPIO (0) +#define MCF_PAD_PAR_PSC0_PAR_CTS0_BCLK (0x80) +#define MCF_PAD_PAR_PSC0_PAR_CTS0_CTS (0xC0) + +/* Bit definitions and macros for MCF_PAD_PAR_DSPI */ +#define MCF_PAD_PAR_DSPI_PAR_SOUT(x) (((x)&0x3)<<0) +#define MCF_PAD_PAR_DSPI_PAR_SOUT_GPIO (0) +#define MCF_PAD_PAR_DSPI_PAR_SOUT_TXD (0x2) +#define MCF_PAD_PAR_DSPI_PAR_SOUT_SOUT (0x3) +#define MCF_PAD_PAR_DSPI_PAR_SIN(x) (((x)&0x3)<<0x2) +#define MCF_PAD_PAR_DSPI_PAR_SIN_GPIO (0) +#define MCF_PAD_PAR_DSPI_PAR_SIN_RXD (0x8) +#define MCF_PAD_PAR_DSPI_PAR_SIN_SIN (0xC) +#define MCF_PAD_PAR_DSPI_PAR_SCK(x) (((x)&0x3)<<0x4) +#define MCF_PAD_PAR_DSPI_PAR_SCK_GPIO (0) +#define MCF_PAD_PAR_DSPI_PAR_SCK_BCLK (0x10) +#define MCF_PAD_PAR_DSPI_PAR_SCK_CTS (0x20) +#define MCF_PAD_PAR_DSPI_PAR_SCK_SCK (0x30) +#define MCF_PAD_PAR_DSPI_PAR_CS0(x) (((x)&0x3)<<0x6) +#define MCF_PAD_PAR_DSPI_PAR_CS0_GPIO (0) +#define MCF_PAD_PAR_DSPI_PAR_CS0_FSYNC (0x40) +#define MCF_PAD_PAR_DSPI_PAR_CS0_RTS (0x80) +#define MCF_PAD_PAR_DSPI_PAR_CS0_DSPICS0 (0xC0) +#define MCF_PAD_PAR_DSPI_PAR_CS2(x) (((x)&0x3)<<0x8) +#define MCF_PAD_PAR_DSPI_PAR_CS2_GPIO (0) +#define MCF_PAD_PAR_DSPI_PAR_CS2_TOUT2 (0x200) +#define MCF_PAD_PAR_DSPI_PAR_CS2_DSPICS2 (0x300) +#define MCF_PAD_PAR_DSPI_PAR_CS3(x) (((x)&0x3)<<0xA) +#define MCF_PAD_PAR_DSPI_PAR_CS3_GPIO (0) +#define MCF_PAD_PAR_DSPI_PAR_CS3_TOUT3 (0x800) +#define MCF_PAD_PAR_DSPI_PAR_CS3_DSPICS3 (0xC00) +#define MCF_PAD_PAR_DSPI_PAR_CS5 (0x1000) + +/* Bit definitions and macros for MCF_PAD_PAR_TIMER */ +#define MCF_PAD_PAR_TIMER_PAR_TOUT2 (0x1) +#define MCF_PAD_PAR_TIMER_PAR_TIN2(x) (((x)&0x3)<<0x1) +#define MCF_PAD_PAR_TIMER_PAR_TIN2_IRQ2 (0x4) +#define MCF_PAD_PAR_TIMER_PAR_TIN2_TIN2 (0x6) +#define MCF_PAD_PAR_TIMER_PAR_TOUT3 (0x8) +#define MCF_PAD_PAR_TIMER_PAR_TIN3(x) (((x)&0x3)<<0x4) +#define MCF_PAD_PAR_TIMER_PAR_TIN3_IRQ3 (0x20) +#define MCF_PAD_PAR_TIMER_PAR_TIN3_TIN3 (0x30) + + +#endif /* __MCF5475_PAD_H__ */ diff --git a/BaS_codewarrior/firebeeV1/headers/MCF5475_PCI.h b/BaS_codewarrior/firebeeV1/headers/MCF5475_PCI.h new file mode 100644 index 0000000..47e9e98 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/headers/MCF5475_PCI.h @@ -0,0 +1,376 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_PCI_H__ +#define __MCF5475_PCI_H__ + + +/********************************************************************* +* +* PCI Bus Controller (PCI) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_PCI_PCIIDR (*(vuint32*)(&__MBAR[0xB00])) +#define MCF_PCI_PCISCR (*(vuint32*)(&__MBAR[0xB04])) +#define MCF_PCI_PCICCRIR (*(vuint32*)(&__MBAR[0xB08])) +#define MCF_PCI_PCICR1 (*(vuint32*)(&__MBAR[0xB0C])) +#define MCF_PCI_PCIBAR0 (*(vuint32*)(&__MBAR[0xB10])) +#define MCF_PCI_PCIBAR1 (*(vuint32*)(&__MBAR[0xB14])) +#define MCF_PCI_PCICCPR (*(vuint32*)(&__MBAR[0xB28])) +#define MCF_PCI_PCISID (*(vuint32*)(&__MBAR[0xB2C])) +#define MCF_PCI_PCICR2 (*(vuint32*)(&__MBAR[0xB3C])) +#define MCF_PCI_PCIGSCR (*(vuint32*)(&__MBAR[0xB60])) +#define MCF_PCI_PCITBATR0 (*(vuint32*)(&__MBAR[0xB64])) +#define MCF_PCI_PCITBATR1 (*(vuint32*)(&__MBAR[0xB68])) +#define MCF_PCI_PCITCR (*(vuint32*)(&__MBAR[0xB6C])) +#define MCF_PCI_PCIIW0BTAR (*(vuint32*)(&__MBAR[0xB70])) +#define MCF_PCI_PCIIW1BTAR (*(vuint32*)(&__MBAR[0xB74])) +#define MCF_PCI_PCIIW2BTAR (*(vuint32*)(&__MBAR[0xB78])) +#define MCF_PCI_PCIIWCR (*(vuint32*)(&__MBAR[0xB80])) +#define MCF_PCI_PCIICR (*(vuint32*)(&__MBAR[0xB84])) +#define MCF_PCI_PCIISR (*(vuint32*)(&__MBAR[0xB88])) +#define MCF_PCI_PCICAR (*(vuint32*)(&__MBAR[0xBF8])) +#define MCF_PCI_PCITPSR (*(vuint32*)(&__MBAR[0x8400])) +#define MCF_PCI_PCITSAR (*(vuint32*)(&__MBAR[0x8404])) +#define MCF_PCI_PCITTCR (*(vuint32*)(&__MBAR[0x8408])) +#define MCF_PCI_PCITER (*(vuint32*)(&__MBAR[0x840C])) +#define MCF_PCI_PCITNAR (*(vuint32*)(&__MBAR[0x8410])) +#define MCF_PCI_PCITLWR (*(vuint32*)(&__MBAR[0x8414])) +#define MCF_PCI_PCITDCR (*(vuint32*)(&__MBAR[0x8418])) +#define MCF_PCI_PCITSR (*(vuint32*)(&__MBAR[0x841C])) +#define MCF_PCI_PCITFDR (*(vuint32*)(&__MBAR[0x8440])) +#define MCF_PCI_PCITFSR (*(vuint32*)(&__MBAR[0x8444])) +#define MCF_PCI_PCITFCR (*(vuint32*)(&__MBAR[0x8448])) +#define MCF_PCI_PCITFAR (*(vuint32*)(&__MBAR[0x844C])) +#define MCF_PCI_PCITFRPR (*(vuint32*)(&__MBAR[0x8450])) +#define MCF_PCI_PCITFWPR (*(vuint32*)(&__MBAR[0x8454])) +#define MCF_PCI_PCIRPSR (*(vuint32*)(&__MBAR[0x8480])) +#define MCF_PCI_PCIRSAR (*(vuint32*)(&__MBAR[0x8484])) +#define MCF_PCI_PCIRTCR (*(vuint32*)(&__MBAR[0x8488])) +#define MCF_PCI_PCIRER (*(vuint32*)(&__MBAR[0x848C])) +#define MCF_PCI_PCIRNAR (*(vuint32*)(&__MBAR[0x8490])) +#define MCF_PCI_PCIRDCR (*(vuint32*)(&__MBAR[0x8498])) +#define MCF_PCI_PCIRSR (*(vuint32*)(&__MBAR[0x849C])) +#define MCF_PCI_PCIRFDR (*(vuint32*)(&__MBAR[0x84C0])) +#define MCF_PCI_PCIRFSR (*(vuint32*)(&__MBAR[0x84C4])) +#define MCF_PCI_PCIRFCR (*(vuint32*)(&__MBAR[0x84C8])) +#define MCF_PCI_PCIRFAR (*(vuint32*)(&__MBAR[0x84CC])) +#define MCF_PCI_PCIRFRPR (*(vuint32*)(&__MBAR[0x84D0])) +#define MCF_PCI_PCIRFWPR (*(vuint32*)(&__MBAR[0x84D4])) + + +/* Bit definitions and macros for MCF_PCI_PCIIDR */ +#define MCF_PCI_PCIIDR_VENDORID(x) (((x)&0xFFFF)<<0) +#define MCF_PCI_PCIIDR_DEVICEID(x) (((x)&0xFFFF)<<0x10) + +/* Bit definitions and macros for MCF_PCI_PCISCR */ +#define MCF_PCI_PCISCR_IO (0x1) +#define MCF_PCI_PCISCR_M (0x2) +#define MCF_PCI_PCISCR_B (0x4) +#define MCF_PCI_PCISCR_SP (0x8) +#define MCF_PCI_PCISCR_MW (0x10) +#define MCF_PCI_PCISCR_V (0x20) +#define MCF_PCI_PCISCR_PER (0x40) +#define MCF_PCI_PCISCR_ST (0x80) +#define MCF_PCI_PCISCR_S (0x100) +#define MCF_PCI_PCISCR_F (0x200) +#define MCF_PCI_PCISCR_C (0x100000) +#define MCF_PCI_PCISCR_66M (0x200000) +#define MCF_PCI_PCISCR_R (0x400000) +#define MCF_PCI_PCISCR_FC (0x800000) +#define MCF_PCI_PCISCR_DP (0x1000000) +#define MCF_PCI_PCISCR_DT(x) (((x)&0x3)<<0x19) +#define MCF_PCI_PCISCR_TS (0x8000000) +#define MCF_PCI_PCISCR_TR (0x10000000) +#define MCF_PCI_PCISCR_MA (0x20000000) +#define MCF_PCI_PCISCR_SE (0x40000000) +#define MCF_PCI_PCISCR_PE (0x80000000) + +/* Bit definitions and macros for MCF_PCI_PCICCRIR */ +#define MCF_PCI_PCICCRIR_REVISIONID(x) (((x)&0xFF)<<0) +#define MCF_PCI_PCICCRIR_CLASSCODE(x) (((x)&0xFFFFFF)<<0x8) + +/* Bit definitions and macros for MCF_PCI_PCICR1 */ +#define MCF_PCI_PCICR1_CACHELINESIZE(x) (((x)&0xFF)<<0) +#define MCF_PCI_PCICR1_LATTIMER(x) (((x)&0xFF)<<0x8) +#define MCF_PCI_PCICR1_HEADERTYPE(x) (((x)&0xFF)<<0x10) +#define MCF_PCI_PCICR1_BIST(x) (((x)&0xFF)<<0x18) + +/* Bit definitions and macros for MCF_PCI_PCIBAR0 */ +#define MCF_PCI_PCIBAR0_IOM (0x1) +#define MCF_PCI_PCIBAR0_RANGE(x) (((x)&0x3)<<0x1) +#define MCF_PCI_PCIBAR0_PREF (0x8) +#define MCF_PCI_PCIBAR0_BAR0(x) (((x)&0x3FFF)<<0x12) + +/* Bit definitions and macros for MCF_PCI_PCIBAR1 */ +#define MCF_PCI_PCIBAR1_IOM (0x1) +#define MCF_PCI_PCIBAR1_RANGE(x) (((x)&0x3)<<0x1) +#define MCF_PCI_PCIBAR1_PREF (0x8) +#define MCF_PCI_PCIBAR1_BAR1(x) (((x)&0x3)<<0x1E) + +/* Bit definitions and macros for MCF_PCI_PCICCPR */ +#define MCF_PCI_PCICCPR_PCICCP(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_PCI_PCISID */ +#define MCF_PCI_PCISID_VENDORID(x) (((x)&0xFFFF)<<0) + +/* Bit definitions and macros for MCF_PCI_PCICR2 */ +#define MCF_PCI_PCICR2_INTLINE(x) (((x)&0xFF)<<0) +#define MCF_PCI_PCICR2_INTPIN(x) (((x)&0xFF)<<0x8) +#define MCF_PCI_PCICR2_MINGNT(x) (((x)&0xFF)<<0x10) +#define MCF_PCI_PCICR2_MAXLAT(x) (((x)&0xFF)<<0x18) + +/* Bit definitions and macros for MCF_PCI_PCIGSCR */ +#define MCF_PCI_PCIGSCR_PR (0x1) +#define MCF_PCI_PCIGSCR_SEE (0x1000) +#define MCF_PCI_PCIGSCR_PEE (0x2000) +#define MCF_PCI_PCIGSCR_CLKINRESERVED(x) (((x)&0x7)<<0x10) +#define MCF_PCI_PCIGSCR_XLB2CLKIN(x) (((x)&0x7)<<0x18) +#define MCF_PCI_PCIGSCR_SE (0x10000000) +#define MCF_PCI_PCIGSCR_PE (0x20000000) + +/* Bit definitions and macros for MCF_PCI_PCITBATR0 */ +#define MCF_PCI_PCITBATR0_EN (0x1) +#define MCF_PCI_PCITBATR0_BAT0(x) (((x)&0x3FFF)<<0x12) + +/* Bit definitions and macros for MCF_PCI_PCITBATR1 */ +#define MCF_PCI_PCITBATR1_EN (0x1) +#define MCF_PCI_PCITBATR1_BAT1(x) (((x)&0x3)<<0x1E) + +/* Bit definitions and macros for MCF_PCI_PCITCR */ +#define MCF_PCI_PCITCR_P (0x10000) +#define MCF_PCI_PCITCR_LD (0x1000000) + +/* Bit definitions and macros for MCF_PCI_PCIIW0BTAR */ +#define MCF_PCI_PCIIW0BTAR_WTA0(x) (((x)&0xFF)<<0x8) +#define MCF_PCI_PCIIW0BTAR_WAM0(x) (((x)&0xFF)<<0x10) +#define MCF_PCI_PCIIW0BTAR_WBA0(x) (((x)&0xFF)<<0x18) + +/* Bit definitions and macros for MCF_PCI_PCIIW1BTAR */ +#define MCF_PCI_PCIIW1BTAR_WTA1(x) (((x)&0xFF)<<0x8) +#define MCF_PCI_PCIIW1BTAR_WAM1(x) (((x)&0xFF)<<0x10) +#define MCF_PCI_PCIIW1BTAR_WBA1(x) (((x)&0xFF)<<0x18) + +/* Bit definitions and macros for MCF_PCI_PCIIW2BTAR */ +#define MCF_PCI_PCIIW2BTAR_WTA2(x) (((x)&0xFF)<<0x8) +#define MCF_PCI_PCIIW2BTAR_WAM2(x) (((x)&0xFF)<<0x10) +#define MCF_PCI_PCIIW2BTAR_WBA2(x) (((x)&0xFF)<<0x18) + +/* Bit definitions and macros for MCF_PCI_PCIIWCR */ +#define MCF_PCI_PCIIWCR_WINCTRL2_E (0x100) +#define MCF_PCI_PCIIWCR_WINCTRL2_PRC(x) (((x)&0x3)<<0x9) +#define MCF_PCI_PCIIWCR_WINCTRL2_IOM (0x800) +#define MCF_PCI_PCIIWCR_WINCTRL1_E (0x10000) +#define MCF_PCI_PCIIWCR_WINCTRL1_PRC(x) (((x)&0x3)<<0x11) +#define MCF_PCI_PCIIWCR_WINCTRL1_IOM (0x80000) +#define MCF_PCI_PCIIWCR_WINCTRL0_E (0x1000000) +#define MCF_PCI_PCIIWCR_WINCTRL0_PRC(x) (((x)&0x3)<<0x19) +#define MCF_PCI_PCIIWCR_WINCTRL0_IOM (0x8000000) +#define MCF_PCI_PCIIWCR_WINCTRL2_MEMREAD (0x100) +#define MCF_PCI_PCIIWCR_WINCTRL2_MEMRDLINE (0x300) +#define MCF_PCI_PCIIWCR_WINCTRL2_MEMRDMUL (0x500) +#define MCF_PCI_PCIIWCR_WINCTRL2_IO (0x900) +#define MCF_PCI_PCIIWCR_WINCTRL1_MEMREAD (0x10000) +#define MCF_PCI_PCIIWCR_WINCTRL1_MEMRDLINE (0x30000) +#define MCF_PCI_PCIIWCR_WINCTRL1_MEMRDMUL (0x50000) +#define MCF_PCI_PCIIWCR_WINCTRL1_IO (0x90000) +#define MCF_PCI_PCIIWCR_WINCTRL0_MEMREAD (0x1000000) +#define MCF_PCI_PCIIWCR_WINCTRL0_MEMRDLINE (0x3000000) +#define MCF_PCI_PCIIWCR_WINCTRL0_MEMRDMUL (0x5000000) +#define MCF_PCI_PCIIWCR_WINCTRL0_IO (0x9000000) + +/* Bit definitions and macros for MCF_PCI_PCIICR */ +#define MCF_PCI_PCIICR_MAXRETRY(x) (((x)&0xFF)<<0) +#define MCF_PCI_PCIICR_TAE (0x1000000) +#define MCF_PCI_PCIICR_IAE (0x2000000) +#define MCF_PCI_PCIICR_REE (0x4000000) + +/* Bit definitions and macros for MCF_PCI_PCIISR */ +#define MCF_PCI_PCIISR_TA (0x1000000) +#define MCF_PCI_PCIISR_IA (0x2000000) +#define MCF_PCI_PCIISR_RE (0x4000000) + +/* Bit definitions and macros for MCF_PCI_PCICAR */ +#define MCF_PCI_PCICAR_DWORD(x) (((x)&0x3F)<<0x2) +#define MCF_PCI_PCICAR_FUNCNUM(x) (((x)&0x7)<<0x8) +#define MCF_PCI_PCICAR_DEVNUM(x) (((x)&0x1F)<<0xB) +#define MCF_PCI_PCICAR_BUSNUM(x) (((x)&0xFF)<<0x10) +#define MCF_PCI_PCICAR_E (0x80000000) + +/* Bit definitions and macros for MCF_PCI_PCITPSR */ +#define MCF_PCI_PCITPSR_PKTSIZE(x) (((x)&0xFFFF)<<0x10) + +/* Bit definitions and macros for MCF_PCI_PCITSAR */ +#define MCF_PCI_PCITSAR_STARTADD(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_PCI_PCITTCR */ +#define MCF_PCI_PCITTCR_DI (0x1) +#define MCF_PCI_PCITTCR_W (0x10) +#define MCF_PCI_PCITTCR_MAXBEATS(x) (((x)&0x7)<<0x8) +#define MCF_PCI_PCITTCR_MAXRETRY(x) (((x)&0xFF)<<0x10) +#define MCF_PCI_PCITTCR_PCICMD(x) (((x)&0xF)<<0x18) + +/* Bit definitions and macros for MCF_PCI_PCITER */ +#define MCF_PCI_PCITER_NE (0x10000) +#define MCF_PCI_PCITER_IAE (0x20000) +#define MCF_PCI_PCITER_TAE (0x40000) +#define MCF_PCI_PCITER_RE (0x80000) +#define MCF_PCI_PCITER_SE (0x100000) +#define MCF_PCI_PCITER_FEE (0x200000) +#define MCF_PCI_PCITER_ME (0x1000000) +#define MCF_PCI_PCITER_BE (0x8000000) +#define MCF_PCI_PCITER_CM (0x10000000) +#define MCF_PCI_PCITER_RF (0x40000000) +#define MCF_PCI_PCITER_RC (0x80000000) + +/* Bit definitions and macros for MCF_PCI_PCITNAR */ +#define MCF_PCI_PCITNAR_NEXTADDRESS(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_PCI_PCITLWR */ +#define MCF_PCI_PCITLWR_LASTWORD(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_PCI_PCITDCR */ +#define MCF_PCI_PCITDCR_PKTSDONE(x) (((x)&0xFFFF)<<0) +#define MCF_PCI_PCITDCR_BYTESDONE(x) (((x)&0xFFFF)<<0x10) + +/* Bit definitions and macros for MCF_PCI_PCITSR */ +#define MCF_PCI_PCITSR_IA (0x10000) +#define MCF_PCI_PCITSR_TA (0x20000) +#define MCF_PCI_PCITSR_RE (0x40000) +#define MCF_PCI_PCITSR_SE (0x80000) +#define MCF_PCI_PCITSR_FE (0x100000) +#define MCF_PCI_PCITSR_BE1 (0x200000) +#define MCF_PCI_PCITSR_BE2 (0x400000) +#define MCF_PCI_PCITSR_BE3 (0x800000) +#define MCF_PCI_PCITSR_NT (0x1000000) + +/* Bit definitions and macros for MCF_PCI_PCITFDR */ +#define MCF_PCI_PCITFDR_FIFODATAWORD(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_PCI_PCITFSR */ +#define MCF_PCI_PCITFSR_EMPTY (0x10000) +#define MCF_PCI_PCITFSR_ALARM (0x20000) +#define MCF_PCI_PCITFSR_FULL (0x40000) +#define MCF_PCI_PCITFSR_FR (0x80000) +#define MCF_PCI_PCITFSR_OF (0x100000) +#define MCF_PCI_PCITFSR_UF (0x200000) +#define MCF_PCI_PCITFSR_RXW (0x400000) +#define MCF_PCI_PCITFSR_FAE (0x800000) +#define MCF_PCI_PCITFSR_TXW (0x40000000) +#define MCF_PCI_PCITFSR_IP (0x80000000) + +/* Bit definitions and macros for MCF_PCI_PCITFCR */ +#define MCF_PCI_PCITFCR_TXW_MASK (0x40000) +#define MCF_PCI_PCITFCR_OF_MASK (0x80000) +#define MCF_PCI_PCITFCR_UF_MASK (0x100000) +#define MCF_PCI_PCITFCR_RXW_MASK (0x200000) +#define MCF_PCI_PCITFCR_FAE_MASK (0x400000) +#define MCF_PCI_PCITFCR_IP_MASK (0x800000) +#define MCF_PCI_PCITFCR_GR(x) (((x)&0x7)<<0x18) +#define MCF_PCI_PCITFCR_WFR (0x20000000) + +/* Bit definitions and macros for MCF_PCI_PCITFAR */ +#define MCF_PCI_PCITFAR_ALARM(x) (((x)&0xFFF)<<0) + +/* Bit definitions and macros for MCF_PCI_PCITFRPR */ +#define MCF_PCI_PCITFRPR_READPTR(x) (((x)&0x7F)<<0) + +/* Bit definitions and macros for MCF_PCI_PCITFWPR */ +#define MCF_PCI_PCITFWPR_WRITEPTR(x) (((x)&0x7F)<<0) + +/* Bit definitions and macros for MCF_PCI_PCIRPSR */ +#define MCF_PCI_PCIRPSR_PKTSIZE(x) (((x)&0xFFFF)<<0x10) + +/* Bit definitions and macros for MCF_PCI_PCIRSAR */ +#define MCF_PCI_PCIRSAR_STARTADD(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_PCI_PCIRTCR */ +#define MCF_PCI_PCIRTCR_DI (0x1) +#define MCF_PCI_PCIRTCR_W (0x10) +#define MCF_PCI_PCIRTCR_MAXBEATS(x) (((x)&0x7)<<0x8) +#define MCF_PCI_PCIRTCR_FB (0x1000) +#define MCF_PCI_PCIRTCR_MAXRETRY(x) (((x)&0xFF)<<0x10) +#define MCF_PCI_PCIRTCR_PCICMD(x) (((x)&0xF)<<0x18) + +/* Bit definitions and macros for MCF_PCI_PCIRER */ +#define MCF_PCI_PCIRER_NE (0x10000) +#define MCF_PCI_PCIRER_IAE (0x20000) +#define MCF_PCI_PCIRER_TAE (0x40000) +#define MCF_PCI_PCIRER_RE (0x80000) +#define MCF_PCI_PCIRER_SE (0x100000) +#define MCF_PCI_PCIRER_FEE (0x200000) +#define MCF_PCI_PCIRER_ME (0x1000000) +#define MCF_PCI_PCIRER_BE (0x8000000) +#define MCF_PCI_PCIRER_CM (0x10000000) +#define MCF_PCI_PCIRER_FE (0x20000000) +#define MCF_PCI_PCIRER_RF (0x40000000) +#define MCF_PCI_PCIRER_RC (0x80000000) + +/* Bit definitions and macros for MCF_PCI_PCIRNAR */ +#define MCF_PCI_PCIRNAR_NEXTADDRESS(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_PCI_PCIRDCR */ +#define MCF_PCI_PCIRDCR_PKTSDONE(x) (((x)&0xFFFF)<<0) +#define MCF_PCI_PCIRDCR_BYTESDONE(x) (((x)&0xFFFF)<<0x10) + +/* Bit definitions and macros for MCF_PCI_PCIRSR */ +#define MCF_PCI_PCIRSR_IA (0x10000) +#define MCF_PCI_PCIRSR_TA (0x20000) +#define MCF_PCI_PCIRSR_RE (0x40000) +#define MCF_PCI_PCIRSR_SE (0x80000) +#define MCF_PCI_PCIRSR_FE (0x100000) +#define MCF_PCI_PCIRSR_BE1 (0x200000) +#define MCF_PCI_PCIRSR_BE2 (0x400000) +#define MCF_PCI_PCIRSR_BE3 (0x800000) +#define MCF_PCI_PCIRSR_NT (0x1000000) + +/* Bit definitions and macros for MCF_PCI_PCIRFDR */ +#define MCF_PCI_PCIRFDR_FIFODATAWORD(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_PCI_PCIRFSR */ +#define MCF_PCI_PCIRFSR_EMPTY (0x10000) +#define MCF_PCI_PCIRFSR_ALARM (0x20000) +#define MCF_PCI_PCIRFSR_FULL (0x40000) +#define MCF_PCI_PCIRFSR_FR (0x80000) +#define MCF_PCI_PCIRFSR_OF (0x100000) +#define MCF_PCI_PCIRFSR_UF (0x200000) +#define MCF_PCI_PCIRFSR_RXW (0x400000) +#define MCF_PCI_PCIRFSR_FAE (0x800000) +#define MCF_PCI_PCIRFSR_TXW (0x40000000) +#define MCF_PCI_PCIRFSR_IP (0x80000000) + +/* Bit definitions and macros for MCF_PCI_PCIRFCR */ +#define MCF_PCI_PCIRFCR_TXW_MASK (0x40000) +#define MCF_PCI_PCIRFCR_OF_MASK (0x80000) +#define MCF_PCI_PCIRFCR_UF_MASK (0x100000) +#define MCF_PCI_PCIRFCR_RXW_MASK (0x200000) +#define MCF_PCI_PCIRFCR_FAE_MASK (0x400000) +#define MCF_PCI_PCIRFCR_IP_MASK (0x800000) +#define MCF_PCI_PCIRFCR_GR(x) (((x)&0x7)<<0x18) +#define MCF_PCI_PCIRFCR_WFR (0x20000000) + +/* Bit definitions and macros for MCF_PCI_PCIRFAR */ +#define MCF_PCI_PCIRFAR_ALARM(x) (((x)&0x7F)<<0) + +/* Bit definitions and macros for MCF_PCI_PCIRFRPR */ +#define MCF_PCI_PCIRFRPR_READPTR(x) (((x)&0x7F)<<0) + +/* Bit definitions and macros for MCF_PCI_PCIRFWPR */ +#define MCF_PCI_PCIRFWPR_WRITEPTR(x) (((x)&0x7F)<<0) + + +#endif /* __MCF5475_PCI_H__ */ diff --git a/BaS_codewarrior/firebeeV1/headers/MCF5475_PCIARB.h b/BaS_codewarrior/firebeeV1/headers/MCF5475_PCIARB.h new file mode 100644 index 0000000..3e793a1 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/headers/MCF5475_PCIARB.h @@ -0,0 +1,43 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_PCIARB_H__ +#define __MCF5475_PCIARB_H__ + + +/********************************************************************* +* +* PCI Bus Arbiter Module (PCIARB) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_PCIARB_PACR (*(vuint32*)(&__MBAR[0xC00])) +#define MCF_PCIARB_PASR (*(vuint32*)(&__MBAR[0xC04])) + + +/* Bit definitions and macros for MCF_PCIARB_PACR */ +#define MCF_PCIARB_PACR_INTMPRI (0x1) +#define MCF_PCIARB_PACR_EXTMPRI(x) (((x)&0x1F)<<0x1) +#define MCF_PCIARB_PACR_INTMINTEN (0x10000) +#define MCF_PCIARB_PACR_EXTMINTEN(x) (((x)&0x1F)<<0x11) +#define MCF_PCIARB_PACR_DS (0x80000000) + +/* Bit definitions and macros for MCF_PCIARB_PASR */ +#define MCF_PCIARB_PASR_ITLMBK (0x10000) +#define MCF_PCIARB_PASR_EXTMBK(x) (((x)&0x1F)<<0x11) + + +#endif /* __MCF5475_PCIARB_H__ */ diff --git a/BaS_codewarrior/firebeeV1/headers/MCF5475_PSC.h b/BaS_codewarrior/firebeeV1/headers/MCF5475_PSC.h new file mode 100644 index 0000000..2165c57 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/headers/MCF5475_PSC.h @@ -0,0 +1,527 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_PSC_H__ +#define __MCF5475_PSC_H__ + + +/********************************************************************* +* +* Programmable Serial Controller (PSC) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_PSC0_PSCMR2 (*(vuint8 *)(&__MBAR[0x8600])) +#define MCF_PSC0_PSCMR1 (*(vuint8 *)(&__MBAR[0x8600])) +#define MCF_PSC0_PSCCSR (*(vuint8 *)(&__MBAR[0x8604])) +#define MCF_PSC0_PSCSR (*(vuint16*)(&__MBAR[0x8604])) +#define MCF_PSC0_PSCCR (*(vuint8 *)(&__MBAR[0x8608])) +#define MCF_PSC0_PSCRB_8BIT (*(vuint32*)(&__MBAR[0x860C])) +#define MCF_PSC0_PSCTB_8BIT (*(vuint32*)(&__MBAR[0x860C])) +#define MCF_PSC0_PSCRB_16BIT (*(vuint32*)(&__MBAR[0x860C])) +#define MCF_PSC0_PSCTB_16BIT (*(vuint32*)(&__MBAR[0x860C])) +#define MCF_PSC0_PSCRB_AC97 (*(vuint32*)(&__MBAR[0x860C])) +#define MCF_PSC0_PSCTB_AC97 (*(vuint32*)(&__MBAR[0x860C])) +#define MCF_PSC0_PSCIPCR (*(vuint8 *)(&__MBAR[0x8610])) +#define MCF_PSC0_PSCACR (*(vuint8 *)(&__MBAR[0x8610])) +#define MCF_PSC0_PSCIMR (*(vuint16*)(&__MBAR[0x8614])) +#define MCF_PSC0_PSCISR (*(vuint16*)(&__MBAR[0x8614])) +#define MCF_PSC0_PSCCTUR (*(vuint8 *)(&__MBAR[0x8618])) +#define MCF_PSC0_PSCCTLR (*(vuint8 *)(&__MBAR[0x861C])) +#define MCF_PSC0_PSCIP (*(vuint8 *)(&__MBAR[0x8634])) +#define MCF_PSC0_PSCOPSET (*(vuint8 *)(&__MBAR[0x8638])) +#define MCF_PSC0_PSCOPRESET (*(vuint8 *)(&__MBAR[0x863C])) +#define MCF_PSC0_PSCSICR (*(vuint8 *)(&__MBAR[0x8640])) +#define MCF_PSC0_PSCIRCR1 (*(vuint8 *)(&__MBAR[0x8644])) +#define MCF_PSC0_PSCIRCR2 (*(vuint8 *)(&__MBAR[0x8648])) +#define MCF_PSC0_PSCIRSDR (*(vuint8 *)(&__MBAR[0x864C])) +#define MCF_PSC0_PSCIRMDR (*(vuint8 *)(&__MBAR[0x8650])) +#define MCF_PSC0_PSCIRFDR (*(vuint8 *)(&__MBAR[0x8654])) +#define MCF_PSC0_PSCRFCNT (*(vuint16*)(&__MBAR[0x8658])) +#define MCF_PSC0_PSCTFCNT (*(vuint16*)(&__MBAR[0x865C])) +#define MCF_PSC0_PSCRFDR (*(vuint32*)(&__MBAR[0x8660])) +#define MCF_PSC0_PSCRFSR (*(vuint16*)(&__MBAR[0x8664])) +#define MCF_PSC0_PSCRFCR (*(vuint32*)(&__MBAR[0x8668])) +#define MCF_PSC0_PSCRFAR (*(vuint16*)(&__MBAR[0x866E])) +#define MCF_PSC0_PSCRFRP (*(vuint16*)(&__MBAR[0x8672])) +#define MCF_PSC0_PSCRFWP (*(vuint16*)(&__MBAR[0x8676])) +#define MCF_PSC0_PSCRLRFP (*(vuint16*)(&__MBAR[0x867A])) +#define MCF_PSC0_PSCRLWFP (*(vuint16*)(&__MBAR[0x867E])) +#define MCF_PSC0_PSCTFDR (*(vuint32*)(&__MBAR[0x8680])) +#define MCF_PSC0_PSCTFSR (*(vuint16*)(&__MBAR[0x8684])) +#define MCF_PSC0_PSCTFCR (*(vuint32*)(&__MBAR[0x8688])) +#define MCF_PSC0_PSCTFAR (*(vuint16*)(&__MBAR[0x868E])) +#define MCF_PSC0_PSCTFRP (*(vuint16*)(&__MBAR[0x8692])) +#define MCF_PSC0_PSCTFWP (*(vuint16*)(&__MBAR[0x8696])) +#define MCF_PSC0_PSCTLRFP (*(vuint16*)(&__MBAR[0x869A])) +#define MCF_PSC0_PSCTLWFP (*(vuint16*)(&__MBAR[0x869E])) + +#define MCF_PSC1_PSCMR2 (*(vuint8 *)(&__MBAR[0x8700])) +#define MCF_PSC1_PSCMR1 (*(vuint8 *)(&__MBAR[0x8700])) +#define MCF_PSC1_PSCCSR (*(vuint8 *)(&__MBAR[0x8704])) +#define MCF_PSC1_PSCSR (*(vuint16*)(&__MBAR[0x8704])) +#define MCF_PSC1_PSCCR (*(vuint8 *)(&__MBAR[0x8708])) +#define MCF_PSC1_PSCRB_8BIT (*(vuint32*)(&__MBAR[0x870C])) +#define MCF_PSC1_PSCTB_8BIT (*(vuint32*)(&__MBAR[0x870C])) +#define MCF_PSC1_PSCRB_16BIT (*(vuint32*)(&__MBAR[0x870C])) +#define MCF_PSC1_PSCTB_16BIT (*(vuint32*)(&__MBAR[0x870C])) +#define MCF_PSC1_PSCRB_AC97 (*(vuint32*)(&__MBAR[0x870C])) +#define MCF_PSC1_PSCTB_AC97 (*(vuint32*)(&__MBAR[0x870C])) +#define MCF_PSC1_PSCIPCR (*(vuint8 *)(&__MBAR[0x8710])) +#define MCF_PSC1_PSCACR (*(vuint8 *)(&__MBAR[0x8710])) +#define MCF_PSC1_PSCIMR (*(vuint16*)(&__MBAR[0x8714])) +#define MCF_PSC1_PSCISR (*(vuint16*)(&__MBAR[0x8714])) +#define MCF_PSC1_PSCCTUR (*(vuint8 *)(&__MBAR[0x8718])) +#define MCF_PSC1_PSCCTLR (*(vuint8 *)(&__MBAR[0x871C])) +#define MCF_PSC1_PSCIP (*(vuint8 *)(&__MBAR[0x8734])) +#define MCF_PSC1_PSCOPSET (*(vuint8 *)(&__MBAR[0x8738])) +#define MCF_PSC1_PSCOPRESET (*(vuint8 *)(&__MBAR[0x873C])) +#define MCF_PSC1_PSCSICR (*(vuint8 *)(&__MBAR[0x8740])) +#define MCF_PSC1_PSCIRCR1 (*(vuint8 *)(&__MBAR[0x8744])) +#define MCF_PSC1_PSCIRCR2 (*(vuint8 *)(&__MBAR[0x8748])) +#define MCF_PSC1_PSCIRSDR (*(vuint8 *)(&__MBAR[0x874C])) +#define MCF_PSC1_PSCIRMDR (*(vuint8 *)(&__MBAR[0x8750])) +#define MCF_PSC1_PSCIRFDR (*(vuint8 *)(&__MBAR[0x8754])) +#define MCF_PSC1_PSCRFCNT (*(vuint16*)(&__MBAR[0x8758])) +#define MCF_PSC1_PSCTFCNT (*(vuint16*)(&__MBAR[0x875C])) +#define MCF_PSC1_PSCRFDR (*(vuint32*)(&__MBAR[0x8760])) +#define MCF_PSC1_PSCRFSR (*(vuint16*)(&__MBAR[0x8764])) +#define MCF_PSC1_PSCRFCR (*(vuint32*)(&__MBAR[0x8768])) +#define MCF_PSC1_PSCRFAR (*(vuint16*)(&__MBAR[0x876E])) +#define MCF_PSC1_PSCRFRP (*(vuint16*)(&__MBAR[0x8772])) +#define MCF_PSC1_PSCRFWP (*(vuint16*)(&__MBAR[0x8776])) +#define MCF_PSC1_PSCRLRFP (*(vuint16*)(&__MBAR[0x877A])) +#define MCF_PSC1_PSCRLWFP (*(vuint16*)(&__MBAR[0x877E])) +#define MCF_PSC1_PSCTFDR (*(vuint32*)(&__MBAR[0x8780])) +#define MCF_PSC1_PSCTFSR (*(vuint16*)(&__MBAR[0x8784])) +#define MCF_PSC1_PSCTFCR (*(vuint32*)(&__MBAR[0x8788])) +#define MCF_PSC1_PSCTFAR (*(vuint16*)(&__MBAR[0x878E])) +#define MCF_PSC1_PSCTFRP (*(vuint16*)(&__MBAR[0x8792])) +#define MCF_PSC1_PSCTFWP (*(vuint16*)(&__MBAR[0x8796])) +#define MCF_PSC1_PSCTLRFP (*(vuint16*)(&__MBAR[0x879A])) +#define MCF_PSC1_PSCTLWFP (*(vuint16*)(&__MBAR[0x879E])) + +#define MCF_PSC2_PSCMR2 (*(vuint8 *)(&__MBAR[0x8800])) +#define MCF_PSC2_PSCMR1 (*(vuint8 *)(&__MBAR[0x8800])) +#define MCF_PSC2_PSCCSR (*(vuint8 *)(&__MBAR[0x8804])) +#define MCF_PSC2_PSCSR (*(vuint16*)(&__MBAR[0x8804])) +#define MCF_PSC2_PSCCR (*(vuint8 *)(&__MBAR[0x8808])) +#define MCF_PSC2_PSCRB_8BIT (*(vuint32*)(&__MBAR[0x880C])) +#define MCF_PSC2_PSCTB_8BIT (*(vuint32*)(&__MBAR[0x880C])) +#define MCF_PSC2_PSCRB_16BIT (*(vuint32*)(&__MBAR[0x880C])) +#define MCF_PSC2_PSCTB_16BIT (*(vuint32*)(&__MBAR[0x880C])) +#define MCF_PSC2_PSCRB_AC97 (*(vuint32*)(&__MBAR[0x880C])) +#define MCF_PSC2_PSCTB_AC97 (*(vuint32*)(&__MBAR[0x880C])) +#define MCF_PSC2_PSCIPCR (*(vuint8 *)(&__MBAR[0x8810])) +#define MCF_PSC2_PSCACR (*(vuint8 *)(&__MBAR[0x8810])) +#define MCF_PSC2_PSCIMR (*(vuint16*)(&__MBAR[0x8814])) +#define MCF_PSC2_PSCISR (*(vuint16*)(&__MBAR[0x8814])) +#define MCF_PSC2_PSCCTUR (*(vuint8 *)(&__MBAR[0x8818])) +#define MCF_PSC2_PSCCTLR (*(vuint8 *)(&__MBAR[0x881C])) +#define MCF_PSC2_PSCIP (*(vuint8 *)(&__MBAR[0x8834])) +#define MCF_PSC2_PSCOPSET (*(vuint8 *)(&__MBAR[0x8838])) +#define MCF_PSC2_PSCOPRESET (*(vuint8 *)(&__MBAR[0x883C])) +#define MCF_PSC2_PSCSICR (*(vuint8 *)(&__MBAR[0x8840])) +#define MCF_PSC2_PSCIRCR1 (*(vuint8 *)(&__MBAR[0x8844])) +#define MCF_PSC2_PSCIRCR2 (*(vuint8 *)(&__MBAR[0x8848])) +#define MCF_PSC2_PSCIRSDR (*(vuint8 *)(&__MBAR[0x884C])) +#define MCF_PSC2_PSCIRMDR (*(vuint8 *)(&__MBAR[0x8850])) +#define MCF_PSC2_PSCIRFDR (*(vuint8 *)(&__MBAR[0x8854])) +#define MCF_PSC2_PSCRFCNT (*(vuint16*)(&__MBAR[0x8858])) +#define MCF_PSC2_PSCTFCNT (*(vuint16*)(&__MBAR[0x885C])) +#define MCF_PSC2_PSCRFDR (*(vuint32*)(&__MBAR[0x8860])) +#define MCF_PSC2_PSCRFSR (*(vuint16*)(&__MBAR[0x8864])) +#define MCF_PSC2_PSCRFCR (*(vuint32*)(&__MBAR[0x8868])) +#define MCF_PSC2_PSCRFAR (*(vuint16*)(&__MBAR[0x886E])) +#define MCF_PSC2_PSCRFRP (*(vuint16*)(&__MBAR[0x8872])) +#define MCF_PSC2_PSCRFWP (*(vuint16*)(&__MBAR[0x8876])) +#define MCF_PSC2_PSCRLRFP (*(vuint16*)(&__MBAR[0x887A])) +#define MCF_PSC2_PSCRLWFP (*(vuint16*)(&__MBAR[0x887E])) +#define MCF_PSC2_PSCTFDR (*(vuint32*)(&__MBAR[0x8880])) +#define MCF_PSC2_PSCTFSR (*(vuint16*)(&__MBAR[0x8884])) +#define MCF_PSC2_PSCTFCR (*(vuint32*)(&__MBAR[0x8888])) +#define MCF_PSC2_PSCTFAR (*(vuint16*)(&__MBAR[0x888E])) +#define MCF_PSC2_PSCTFRP (*(vuint16*)(&__MBAR[0x8892])) +#define MCF_PSC2_PSCTFWP (*(vuint16*)(&__MBAR[0x8896])) +#define MCF_PSC2_PSCTLRFP (*(vuint16*)(&__MBAR[0x889A])) +#define MCF_PSC2_PSCTLWFP (*(vuint16*)(&__MBAR[0x889E])) + +#define MCF_PSC3_PSCMR2 (*(vuint8 *)(&__MBAR[0x8900])) +#define MCF_PSC3_PSCMR1 (*(vuint8 *)(&__MBAR[0x8900])) +#define MCF_PSC3_PSCCSR (*(vuint8 *)(&__MBAR[0x8904])) +#define MCF_PSC3_PSCSR (*(vuint16*)(&__MBAR[0x8904])) +#define MCF_PSC3_PSCCR (*(vuint8 *)(&__MBAR[0x8908])) +#define MCF_PSC3_PSCRB_8BIT (*(vuint32*)(&__MBAR[0x890C])) +#define MCF_PSC3_PSCTB_8BIT (*(vuint32*)(&__MBAR[0x890C])) +#define MCF_PSC3_PSCRB_16BIT (*(vuint32*)(&__MBAR[0x890C])) +#define MCF_PSC3_PSCTB_16BIT (*(vuint32*)(&__MBAR[0x890C])) +#define MCF_PSC3_PSCRB_AC97 (*(vuint32*)(&__MBAR[0x890C])) +#define MCF_PSC3_PSCTB_AC97 (*(vuint32*)(&__MBAR[0x890C])) +#define MCF_PSC3_PSCIPCR (*(vuint8 *)(&__MBAR[0x8910])) +#define MCF_PSC3_PSCACR (*(vuint8 *)(&__MBAR[0x8910])) +#define MCF_PSC3_PSCIMR (*(vuint16*)(&__MBAR[0x8914])) +#define MCF_PSC3_PSCISR (*(vuint16*)(&__MBAR[0x8914])) +#define MCF_PSC3_PSCCTUR (*(vuint8 *)(&__MBAR[0x8918])) +#define MCF_PSC3_PSCCTLR (*(vuint8 *)(&__MBAR[0x891C])) +#define MCF_PSC3_PSCIP (*(vuint8 *)(&__MBAR[0x8934])) +#define MCF_PSC3_PSCOPSET (*(vuint8 *)(&__MBAR[0x8938])) +#define MCF_PSC3_PSCOPRESET (*(vuint8 *)(&__MBAR[0x893C])) +#define MCF_PSC3_PSCSICR (*(vuint8 *)(&__MBAR[0x8940])) +#define MCF_PSC3_PSCIRCR1 (*(vuint8 *)(&__MBAR[0x8944])) +#define MCF_PSC3_PSCIRCR2 (*(vuint8 *)(&__MBAR[0x8948])) +#define MCF_PSC3_PSCIRSDR (*(vuint8 *)(&__MBAR[0x894C])) +#define MCF_PSC3_PSCIRMDR (*(vuint8 *)(&__MBAR[0x8950])) +#define MCF_PSC3_PSCIRFDR (*(vuint8 *)(&__MBAR[0x8954])) +#define MCF_PSC3_PSCRFCNT (*(vuint16*)(&__MBAR[0x8958])) +#define MCF_PSC3_PSCTFCNT (*(vuint16*)(&__MBAR[0x895C])) +#define MCF_PSC3_PSCRFDR (*(vuint32*)(&__MBAR[0x8960])) +#define MCF_PSC3_PSCRFSR (*(vuint16*)(&__MBAR[0x8964])) +#define MCF_PSC3_PSCRFCR (*(vuint32*)(&__MBAR[0x8968])) +#define MCF_PSC3_PSCRFAR (*(vuint16*)(&__MBAR[0x896E])) +#define MCF_PSC3_PSCRFRP (*(vuint16*)(&__MBAR[0x8972])) +#define MCF_PSC3_PSCRFWP (*(vuint16*)(&__MBAR[0x8976])) +#define MCF_PSC3_PSCRLRFP (*(vuint16*)(&__MBAR[0x897A])) +#define MCF_PSC3_PSCRLWFP (*(vuint16*)(&__MBAR[0x897E])) +#define MCF_PSC3_PSCTFDR (*(vuint32*)(&__MBAR[0x8980])) +#define MCF_PSC3_PSCTFSR (*(vuint16*)(&__MBAR[0x8984])) +#define MCF_PSC3_PSCTFCR (*(vuint32*)(&__MBAR[0x8988])) +#define MCF_PSC3_PSCTFAR (*(vuint16*)(&__MBAR[0x898E])) +#define MCF_PSC3_PSCTFRP (*(vuint16*)(&__MBAR[0x8992])) +#define MCF_PSC3_PSCTFWP (*(vuint16*)(&__MBAR[0x8996])) +#define MCF_PSC3_PSCTLRFP (*(vuint16*)(&__MBAR[0x899A])) +#define MCF_PSC3_PSCTLWFP (*(vuint16*)(&__MBAR[0x899E])) + +#define MCF_PSC_PSCMR(x) (*(vuint8 *)(&__MBAR[0x8600 + ((x)*0x100)])) +#define MCF_PSC_PSCCSR(x) (*(vuint8 *)(&__MBAR[0x8604 + ((x)*0x100)])) +#define MCF_PSC_PSCSR(x) (*(vuint16*)(&__MBAR[0x8604 + ((x)*0x100)])) +#define MCF_PSC_PSCCR(x) (*(vuint8 *)(&__MBAR[0x8608 + ((x)*0x100)])) +#define MCF_PSC_PSCRB_8BIT(x) (*(vuint32*)(&__MBAR[0x860C + ((x)*0x100)])) +#define MCF_PSC_PSCTB_8BIT(x) (*(vuint32*)(&__MBAR[0x860C + ((x)*0x100)])) +#define MCF_PSC_PSCRB_16BIT(x) (*(vuint32*)(&__MBAR[0x860C + ((x)*0x100)])) +#define MCF_PSC_PSCTB_16BIT(x) (*(vuint32*)(&__MBAR[0x860C + ((x)*0x100)])) +#define MCF_PSC_PSCRB_AC97(x) (*(vuint32*)(&__MBAR[0x860C + ((x)*0x100)])) +#define MCF_PSC_PSCTB_AC97(x) (*(vuint32*)(&__MBAR[0x860C + ((x)*0x100)])) +#define MCF_PSC_PSCIPCR(x) (*(vuint8 *)(&__MBAR[0x8610 + ((x)*0x100)])) +#define MCF_PSC_PSCACR(x) (*(vuint8 *)(&__MBAR[0x8610 + ((x)*0x100)])) +#define MCF_PSC_PSCIMR(x) (*(vuint16*)(&__MBAR[0x8614 + ((x)*0x100)])) +#define MCF_PSC_PSCISR(x) (*(vuint16*)(&__MBAR[0x8614 + ((x)*0x100)])) +#define MCF_PSC_PSCCTUR(x) (*(vuint8 *)(&__MBAR[0x8618 + ((x)*0x100)])) +#define MCF_PSC_PSCCTLR(x) (*(vuint8 *)(&__MBAR[0x861C + ((x)*0x100)])) +#define MCF_PSC_PSCIP(x) (*(vuint8 *)(&__MBAR[0x8634 + ((x)*0x100)])) +#define MCF_PSC_PSCOPSET(x) (*(vuint8 *)(&__MBAR[0x8638 + ((x)*0x100)])) +#define MCF_PSC_PSCOPRESET(x) (*(vuint8 *)(&__MBAR[0x863C + ((x)*0x100)])) +#define MCF_PSC_PSCSICR(x) (*(vuint8 *)(&__MBAR[0x8640 + ((x)*0x100)])) +#define MCF_PSC_PSCIRCR1(x) (*(vuint8 *)(&__MBAR[0x8644 + ((x)*0x100)])) +#define MCF_PSC_PSCIRCR2(x) (*(vuint8 *)(&__MBAR[0x8648 + ((x)*0x100)])) +#define MCF_PSC_PSCIRSDR(x) (*(vuint8 *)(&__MBAR[0x864C + ((x)*0x100)])) +#define MCF_PSC_PSCIRMDR(x) (*(vuint8 *)(&__MBAR[0x8650 + ((x)*0x100)])) +#define MCF_PSC_PSCIRFDR(x) (*(vuint8 *)(&__MBAR[0x8654 + ((x)*0x100)])) +#define MCF_PSC_PSCRFCNT(x) (*(vuint16*)(&__MBAR[0x8658 + ((x)*0x100)])) +#define MCF_PSC_PSCTFCNT(x) (*(vuint16*)(&__MBAR[0x865C + ((x)*0x100)])) +#define MCF_PSC_PSCRFDR(x) (*(vuint32*)(&__MBAR[0x8660 + ((x)*0x100)])) +#define MCF_PSC_PSCRFSR(x) (*(vuint16*)(&__MBAR[0x8664 + ((x)*0x100)])) +#define MCF_PSC_PSCRFCR(x) (*(vuint32*)(&__MBAR[0x8668 + ((x)*0x100)])) +#define MCF_PSC_PSCRFAR(x) (*(vuint16*)(&__MBAR[0x866E + ((x)*0x100)])) +#define MCF_PSC_PSCRFRP(x) (*(vuint16*)(&__MBAR[0x8672 + ((x)*0x100)])) +#define MCF_PSC_PSCRFWP(x) (*(vuint16*)(&__MBAR[0x8676 + ((x)*0x100)])) +#define MCF_PSC_PSCRLRFP(x) (*(vuint16*)(&__MBAR[0x867A + ((x)*0x100)])) +#define MCF_PSC_PSCRLWFP(x) (*(vuint16*)(&__MBAR[0x867E + ((x)*0x100)])) +#define MCF_PSC_PSCTFDR(x) (*(vuint32*)(&__MBAR[0x8680 + ((x)*0x100)])) +#define MCF_PSC_PSCTFSR(x) (*(vuint16*)(&__MBAR[0x8684 + ((x)*0x100)])) +#define MCF_PSC_PSCTFCR(x) (*(vuint32*)(&__MBAR[0x8688 + ((x)*0x100)])) +#define MCF_PSC_PSCTFAR(x) (*(vuint16*)(&__MBAR[0x868E + ((x)*0x100)])) +#define MCF_PSC_PSCTFRP(x) (*(vuint16*)(&__MBAR[0x8692 + ((x)*0x100)])) +#define MCF_PSC_PSCTFWP(x) (*(vuint16*)(&__MBAR[0x8696 + ((x)*0x100)])) +#define MCF_PSC_PSCTLRFP(x) (*(vuint16*)(&__MBAR[0x869A + ((x)*0x100)])) +#define MCF_PSC_PSCTLWFP(x) (*(vuint16*)(&__MBAR[0x869E + ((x)*0x100)])) + +/* Bit definitions and macros for MCF_PSC_PSCMR */ +#define MCF_PSC_PSCMR_SB(x) (((x)&0xF)<<0) +#define MCF_PSC_PSCMR_TXCTS (0x10) +#define MCF_PSC_PSCMR_TXRTS (0x20) +#define MCF_PSC_PSCMR_CM(x) (((x)&0x3)<<0x6) +#define MCF_PSC_PSCMR_CM_NORMAL (0) +#define MCF_PSC_PSCMR_CM_ECHO (0x40) +#define MCF_PSC_PSCMR_CM_LOCAL_LOOP (0x80) +#define MCF_PSC_PSCMR_CM_REMOTE_LOOP (0xC0) +#define MCF_PSC_PSCMR_SB_STOP_BITS_1 (0x7) +#define MCF_PSC_PSCMR_SB_STOP_BITS_15 (0x8) +#define MCF_PSC_PSCMR_SB_STOP_BITS_2 (0xF) +#define MCF_PSC_PSCMR_PM_MULTI_ADDR (0x1C) +#define MCF_PSC_PSCMR_PM_MULTI_DATA (0x18) +#define MCF_PSC_PSCMR_PM_NONE (0x10) +#define MCF_PSC_PSCMR_PM_FORCE_HI (0xC) +#define MCF_PSC_PSCMR_PM_FORCE_LO (0x8) +#define MCF_PSC_PSCMR_PM_ODD (0x4) +#define MCF_PSC_PSCMR_PM_EVEN (0) +#define MCF_PSC_PSCMR_BC(x) (((x)&0x3)<<0) +#define MCF_PSC_PSCMR_BC_5 (0) +#define MCF_PSC_PSCMR_BC_6 (0x1) +#define MCF_PSC_PSCMR_BC_7 (0x2) +#define MCF_PSC_PSCMR_BC_8 (0x3) +#define MCF_PSC_PSCMR_PT (0x4) +#define MCF_PSC_PSCMR_PM(x) (((x)&0x3)<<0x3) +#define MCF_PSC_PSCMR_ERR (0x20) +#define MCF_PSC_PSCMR_RXIRQ_FU (0x40) +#define MCF_PSC_PSCMR_RXRTS (0x80) + +/* Bit definitions and macros for MCF_PSC_PSCCSR */ +#define MCF_PSC_PSCCSR_TCSEL(x) (((x)&0xF)<<0) +#define MCF_PSC_PSCCSR_RCSEL(x) (((x)&0xF)<<0x4) +#define MCF_PSC_PSCCSR_TCSEL_SYS_CLK (0x0D) +#define MCF_PSC_PSCCSR_TCSEL_CTM16 (0x0E) +#define MCF_PSC_PSCCSR_TCSEL_CTM (0x0F) +#define MCF_PSC_PSCCSR_RCSEL_SYS_CLK (0xD0) +#define MCF_PSC_PSCCSR_RCSEL_CTM16 (0xE0) +#define MCF_PSC_PSCCSR_RCSEL_CTM (0xF0) + +/* Bit definitions and macros for MCF_PSC_PSCSR */ +#define MCF_PSC_PSCSR_ERR (0x40) +#define MCF_PSC_PSCSR_CDE_DEOF (0x80) +#define MCF_PSC_PSCSR_RXRDY (0x100) +#define MCF_PSC_PSCSR_FU (0x200) +#define MCF_PSC_PSCSR_TXRDY (0x400) +#define MCF_PSC_PSCSR_TXEMP_URERR (0x800) +#define MCF_PSC_PSCSR_OE (0x1000) +#define MCF_PSC_PSCSR_PE_CRCERR (0x2000) +#define MCF_PSC_PSCSR_FE_PHYERR (0x4000) +#define MCF_PSC_PSCSR_RB_NEOF (0x8000) + +/* Bit definitions and macros for MCF_PSC_PSCCR */ +#define MCF_PSC_PSCCR_RXC(x) (((x)&0x3)<<0) +#define MCF_PSC_PSCCR_RX_ENABLED (0x1) +#define MCF_PSC_PSCCR_RX_DISABLED (0x2) +#define MCF_PSC_PSCCR_TXC(x) (((x)&0x3)<<0x2) +#define MCF_PSC_PSCCR_TX_ENABLED (0x4) +#define MCF_PSC_PSCCR_TX_DISABLED (0x8) +#define MCF_PSC_PSCCR_MISC(x) (((x)&0x7)<<0x4) +#define MCF_PSC_PSCCR_NONE (0) +#define MCF_PSC_PSCCR_RESET_MR (0x10) +#define MCF_PSC_PSCCR_RESET_RX (0x20) +#define MCF_PSC_PSCCR_RESET_TX (0x30) +#define MCF_PSC_PSCCR_RESET_ERROR (0x40) +#define MCF_PSC_PSCCR_RESET_BKCHGINT (0x50) +#define MCF_PSC_PSCCR_START_BREAK (0x60) +#define MCF_PSC_PSCCR_STOP_BREAK (0x70) + +/* Bit definitions and macros for MCF_PSC_PSCRB_8BIT */ +#define MCF_PSC_PSCRB_8BIT_RB3(x) (((x)&0xFF)<<0) +#define MCF_PSC_PSCRB_8BIT_RB2(x) (((x)&0xFF)<<0x8) +#define MCF_PSC_PSCRB_8BIT_RB1(x) (((x)&0xFF)<<0x10) +#define MCF_PSC_PSCRB_8BIT_RB0(x) (((x)&0xFF)<<0x18) + +/* Bit definitions and macros for MCF_PSC_PSCTB_8BIT */ +#define MCF_PSC_PSCTB_8BIT_TB3(x) (((x)&0xFF)<<0) +#define MCF_PSC_PSCTB_8BIT_TB2(x) (((x)&0xFF)<<0x8) +#define MCF_PSC_PSCTB_8BIT_TB1(x) (((x)&0xFF)<<0x10) +#define MCF_PSC_PSCTB_8BIT_TB0(x) (((x)&0xFF)<<0x18) + +/* Bit definitions and macros for MCF_PSC_PSCRB_16BIT */ +#define MCF_PSC_PSCRB_16BIT_RB1(x) (((x)&0xFFFF)<<0) +#define MCF_PSC_PSCRB_16BIT_RB0(x) (((x)&0xFFFF)<<0x10) + +/* Bit definitions and macros for MCF_PSC_PSCTB_16BIT */ +#define MCF_PSC_PSCTB_16BIT_TB1(x) (((x)&0xFFFF)<<0) +#define MCF_PSC_PSCTB_16BIT_TB0(x) (((x)&0xFFFF)<<0x10) + +/* Bit definitions and macros for MCF_PSC_PSCRB_AC97 */ +#define MCF_PSC_PSCRB_AC97_SOF (0x800) +#define MCF_PSC_PSCRB_AC97_RB(x) (((x)&0xFFFFF)<<0xC) + +/* Bit definitions and macros for MCF_PSC_PSCTB_AC97 */ +#define MCF_PSC_PSCTB_AC97_TB(x) (((x)&0xFFFFF)<<0xC) + +/* Bit definitions and macros for MCF_PSC_PSCIPCR */ +#define MCF_PSC_PSCIPCR_RESERVED (0xC) +#define MCF_PSC_PSCIPCR_CTS (0xD) +#define MCF_PSC_PSCIPCR_D_CTS (0x1C) +#define MCF_PSC_PSCIPCR_SYNC (0x8C) + +/* Bit definitions and macros for MCF_PSC_PSCACR */ +#define MCF_PSC_PSCACR_IEC0 (0x1) + +/* Bit definitions and macros for MCF_PSC_PSCIMR */ +#define MCF_PSC_PSCIMR_ERR (0x40) +#define MCF_PSC_PSCIMR_DEOF (0x80) +#define MCF_PSC_PSCIMR_TXRDY (0x100) +#define MCF_PSC_PSCIMR_RXRDY_FU (0x200) +#define MCF_PSC_PSCIMR_DB (0x400) +#define MCF_PSC_PSCIMR_IPC (0x8000) + +/* Bit definitions and macros for MCF_PSC_PSCISR */ +#define MCF_PSC_PSCISR_ERR (0x40) +#define MCF_PSC_PSCISR_DEOF (0x80) +#define MCF_PSC_PSCISR_TXRDY (0x100) +#define MCF_PSC_PSCISR_RXRDY_FU (0x200) +#define MCF_PSC_PSCISR_DB (0x400) +#define MCF_PSC_PSCISR_IPC (0x8000) + +/* Bit definitions and macros for MCF_PSC_PSCCTUR */ +#define MCF_PSC_PSCCTUR_CT(x) (((x)&0xFF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCCTLR */ +#define MCF_PSC_PSCCTLR_CT(x) (((x)&0xFF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCIP */ +#define MCF_PSC_PSCIP_CTS (0x1) +#define MCF_PSC_PSCIP_TGL (0x40) +#define MCF_PSC_PSCIP_LPWR_B (0x80) + +/* Bit definitions and macros for MCF_PSC_PSCOPSET */ +#define MCF_PSC_PSCOPSET_RTS (0x1) + +/* Bit definitions and macros for MCF_PSC_PSCOPRESET */ +#define MCF_PSC_PSCOPRESET_RTS (0x1) + +/* Bit definitions and macros for MCF_PSC_PSCSICR */ +#define MCF_PSC_PSCSICR_SIM(x) (((x)&0x7)<<0) +#define MCF_PSC_PSCSICR_SIM_UART (0) +#define MCF_PSC_PSCSICR_SIM_MODEM8 (0x1) +#define MCF_PSC_PSCSICR_SIM_MODEM16 (0x2) +#define MCF_PSC_PSCSICR_SIM_AC97 (0x3) +#define MCF_PSC_PSCSICR_SIM_SIR (0x4) +#define MCF_PSC_PSCSICR_SIM_MIR (0x5) +#define MCF_PSC_PSCSICR_SIM_FIR (0x6) +#define MCF_PSC_PSCSICR_SHDIR (0x10) +#define MCF_PSC_PSCSICR_DTS1 (0x20) +#define MCF_PSC_PSCSICR_AWR (0x40) +#define MCF_PSC_PSCSICR_ACRB (0x80) + +/* Bit definitions and macros for MCF_PSC_PSCIRCR1 */ +#define MCF_PSC_PSCIRCR1_SPUL (0x1) +#define MCF_PSC_PSCIRCR1_SIPEN (0x2) +#define MCF_PSC_PSCIRCR1_FD (0x4) + +/* Bit definitions and macros for MCF_PSC_PSCIRCR2 */ +#define MCF_PSC_PSCIRCR2_NXTEOF (0x1) +#define MCF_PSC_PSCIRCR2_ABORT (0x2) +#define MCF_PSC_PSCIRCR2_SIPREQ (0x4) + +/* Bit definitions and macros for MCF_PSC_PSCIRSDR */ +#define MCF_PSC_PSCIRSDR_IRSTIM(x) (((x)&0xFF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCIRMDR */ +#define MCF_PSC_PSCIRMDR_M_FDIV(x) (((x)&0x7F)<<0) +#define MCF_PSC_PSCIRMDR_FREQ (0x80) + +/* Bit definitions and macros for MCF_PSC_PSCIRFDR */ +#define MCF_PSC_PSCIRFDR_F_FDIV(x) (((x)&0xF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCRFCNT */ +#define MCF_PSC_PSCRFCNT_CNT(x) (((x)&0x1FF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCTFCNT */ +#define MCF_PSC_PSCTFCNT_CNT(x) (((x)&0x1FF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCRFDR */ +#define MCF_PSC_PSCRFDR_DATA(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCRFSR */ +#define MCF_PSC_PSCRFSR_EMT (0x1) +#define MCF_PSC_PSCRFSR_ALARM (0x2) +#define MCF_PSC_PSCRFSR_FU (0x4) +#define MCF_PSC_PSCRFSR_FRMRDY (0x8) +#define MCF_PSC_PSCRFSR_OF (0x10) +#define MCF_PSC_PSCRFSR_UF (0x20) +#define MCF_PSC_PSCRFSR_RXW (0x40) +#define MCF_PSC_PSCRFSR_FAE (0x80) +#define MCF_PSC_PSCRFSR_FRM(x) (((x)&0xF)<<0x8) +#define MCF_PSC_PSCRFSR_FRM_BYTE0 (0x800) +#define MCF_PSC_PSCRFSR_FRM_BYTE1 (0x400) +#define MCF_PSC_PSCRFSR_FRM_BYTE2 (0x200) +#define MCF_PSC_PSCRFSR_FRM_BYTE3 (0x100) +#define MCF_PSC_PSCRFSR_TAG(x) (((x)&0x3)<<0xC) +#define MCF_PSC_PSCRFSR_TXW (0x4000) +#define MCF_PSC_PSCRFSR_IP (0x8000) + +/* Bit definitions and macros for MCF_PSC_PSCRFCR */ +#define MCF_PSC_PSCRFCR_CNTR(x) (((x)&0xFFFF)<<0) +#define MCF_PSC_PSCRFCR_TXW_MSK (0x40000) +#define MCF_PSC_PSCRFCR_OF_MSK (0x80000) +#define MCF_PSC_PSCRFCR_UF_MSK (0x100000) +#define MCF_PSC_PSCRFCR_RXW_MSK (0x200000) +#define MCF_PSC_PSCRFCR_FAE_MSK (0x400000) +#define MCF_PSC_PSCRFCR_IP_MSK (0x800000) +#define MCF_PSC_PSCRFCR_GR(x) (((x)&0x7)<<0x18) +#define MCF_PSC_PSCRFCR_FRMEN (0x8000000) +#define MCF_PSC_PSCRFCR_TIMER (0x10000000) + +/* Bit definitions and macros for MCF_PSC_PSCRFAR */ +#define MCF_PSC_PSCRFAR_ALARM(x) (((x)&0x1FF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCRFRP */ +#define MCF_PSC_PSCRFRP_READ(x) (((x)&0x1FF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCRFWP */ +#define MCF_PSC_PSCRFWP_WRITE(x) (((x)&0x1FF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCRLRFP */ +#define MCF_PSC_PSCRLRFP_LRFP(x) (((x)&0x1FF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCRLWFP */ +#define MCF_PSC_PSCRLWFP_LWFP(x) (((x)&0x1FF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCTFDR */ +#define MCF_PSC_PSCTFDR_DATA(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCTFSR */ +#define MCF_PSC_PSCTFSR_EMT (0x1) +#define MCF_PSC_PSCTFSR_ALARM (0x2) +#define MCF_PSC_PSCTFSR_FU (0x4) +#define MCF_PSC_PSCTFSR_FRMRDY (0x8) +#define MCF_PSC_PSCTFSR_OF (0x10) +#define MCF_PSC_PSCTFSR_UF (0x20) +#define MCF_PSC_PSCTFSR_RXW (0x40) +#define MCF_PSC_PSCTFSR_FAE (0x80) +#define MCF_PSC_PSCTFSR_FRM(x) (((x)&0xF)<<0x8) +#define MCF_PSC_PSCTFSR_FRM_BYTE0 (0x800) +#define MCF_PSC_PSCTFSR_FRM_BYTE1 (0x400) +#define MCF_PSC_PSCTFSR_FRM_BYTE2 (0x200) +#define MCF_PSC_PSCTFSR_FRM_BYTE3 (0x100) +#define MCF_PSC_PSCTFSR_TAG(x) (((x)&0x3)<<0xC) +#define MCF_PSC_PSCTFSR_TXW (0x4000) +#define MCF_PSC_PSCTFSR_IP (0x8000) + +/* Bit definitions and macros for MCF_PSC_PSCTFCR */ +#define MCF_PSC_PSCTFCR_CNTR(x) (((x)&0xFFFF)<<0) +#define MCF_PSC_PSCTFCR_TXW_MSK (0x40000) +#define MCF_PSC_PSCTFCR_OF_MSK (0x80000) +#define MCF_PSC_PSCTFCR_UF_MSK (0x100000) +#define MCF_PSC_PSCTFCR_RXW_MSK (0x200000) +#define MCF_PSC_PSCTFCR_FAE_MSK (0x400000) +#define MCF_PSC_PSCTFCR_IP_MSK (0x800000) +#define MCF_PSC_PSCTFCR_GR(x) (((x)&0x7)<<0x18) +#define MCF_PSC_PSCTFCR_FRMEN (0x8000000) +#define MCF_PSC_PSCTFCR_TIMER (0x10000000) +#define MCF_PSC_PSCTFCR_WFR (0x20000000) + +/* Bit definitions and macros for MCF_PSC_PSCTFAR */ +#define MCF_PSC_PSCTFAR_ALARM(x) (((x)&0x1FF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCTFRP */ +#define MCF_PSC_PSCTFRP_READ(x) (((x)&0x1FF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCTFWP */ +#define MCF_PSC_PSCTFWP_WRITE(x) (((x)&0x1FF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCTLRFP */ +#define MCF_PSC_PSCTLRFP_LRFP(x) (((x)&0x1FF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCTLWFP */ +#define MCF_PSC_PSCTLWFP_LWFP(x) (((x)&0x1FF)<<0) + + +#endif /* __MCF5475_PSC_H__ */ diff --git a/BaS_codewarrior/firebeeV1/headers/MCF5475_SDRAMC.h b/BaS_codewarrior/firebeeV1/headers/MCF5475_SDRAMC.h new file mode 100644 index 0000000..843ac12 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/headers/MCF5475_SDRAMC.h @@ -0,0 +1,106 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_SDRAMC_H__ +#define __MCF5475_SDRAMC_H__ + + +/********************************************************************* +* +* Synchronous DRAM Controller (SDRAMC) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_SDRAMC_SDRAMDS (*(vuint32*)(&__MBAR[0x4])) +#define MCF_SDRAMC_CS0CFG (*(vuint32*)(&__MBAR[0x20])) +#define MCF_SDRAMC_CS1CFG (*(vuint32*)(&__MBAR[0x24])) +#define MCF_SDRAMC_CS2CFG (*(vuint32*)(&__MBAR[0x28])) +#define MCF_SDRAMC_CS3CFG (*(vuint32*)(&__MBAR[0x2C])) +#define MCF_SDRAMC_SDMR (*(vuint32*)(&__MBAR[0x100])) +#define MCF_SDRAMC_SDCR (*(vuint32*)(&__MBAR[0x104])) +#define MCF_SDRAMC_SDCFG1 (*(vuint32*)(&__MBAR[0x108])) +#define MCF_SDRAMC_SDCFG2 (*(vuint32*)(&__MBAR[0x10C])) +#define MCF_SDRAMC_CSCFG(x) (*(vuint32*)(&__MBAR[0x20 + ((x)*0x4)])) + + +/* Bit definitions and macros for MCF_SDRAMC_SDRAMDS */ +#define MCF_SDRAMC_SDRAMDS_SB_D(x) (((x)&0x3)<<0) +#define MCF_SDRAMC_SDRAMDS_SB_S(x) (((x)&0x3)<<0x2) +#define MCF_SDRAMC_SDRAMDS_SB_A(x) (((x)&0x3)<<0x4) +#define MCF_SDRAMC_SDRAMDS_SB_C(x) (((x)&0x3)<<0x6) +#define MCF_SDRAMC_SDRAMDS_SB_E(x) (((x)&0x3)<<0x8) +#define MCF_SDRAMC_SDRAMDS_DRIVE_24MA (0) +#define MCF_SDRAMC_SDRAMDS_DRIVE_16MA (0x1) +#define MCF_SDRAMC_SDRAMDS_DRIVE_8MA (0x2) +#define MCF_SDRAMC_SDRAMDS_DRIVE_NONE (0x3) + +/* Bit definitions and macros for MCF_SDRAMC_CSCFG */ +#define MCF_SDRAMC_CSCFG_CSSZ(x) (((x)&0x1F)<<0) +#define MCF_SDRAMC_CSCFG_CSSZ_DISABLED (0) +#define MCF_SDRAMC_CSCFG_CSSZ_1MBYTE (0x13) +#define MCF_SDRAMC_CSCFG_CSSZ_2MBYTE (0x14) +#define MCF_SDRAMC_CSCFG_CSSZ_4MBYTE (0x15) +#define MCF_SDRAMC_CSCFG_CSSZ_8MBYTE (0x16) +#define MCF_SDRAMC_CSCFG_CSSZ_16MBYTE (0x17) +#define MCF_SDRAMC_CSCFG_CSSZ_32MBYTE (0x18) +#define MCF_SDRAMC_CSCFG_CSSZ_64MBYTE (0x19) +#define MCF_SDRAMC_CSCFG_CSSZ_128MBYTE (0x1A) +#define MCF_SDRAMC_CSCFG_CSSZ_256MBYTE (0x1B) +#define MCF_SDRAMC_CSCFG_CSSZ_512MBYTE (0x1C) +#define MCF_SDRAMC_CSCFG_CSSZ_1GBYTE (0x1D) +#define MCF_SDRAMC_CSCFG_CSSZ_2GBYTE (0x1E) +#define MCF_SDRAMC_CSCFG_CSSZ_4GBYTE (0x1F) +#define MCF_SDRAMC_CSCFG_CSBA(x) (((x)&0xFFF)<<0x14) +#define MCF_SDRAMC_CSCFG_BA(x) ((x)&0xFFF00000) + +/* Bit definitions and macros for MCF_SDRAMC_SDMR */ +#define MCF_SDRAMC_SDMR_CMD (0x10000) +#define MCF_SDRAMC_SDMR_AD(x) (((x)&0xFFF)<<0x12) +#define MCF_SDRAMC_SDMR_BNKAD(x) (((x)&0x3)<<0x1E) +#define MCF_SDRAMC_SDMR_BK_LMR (0) +#define MCF_SDRAMC_SDMR_BK_LEMR (0x40000000) + +/* Bit definitions and macros for MCF_SDRAMC_SDCR */ +#define MCF_SDRAMC_SDCR_IPALL (0x2) +#define MCF_SDRAMC_SDCR_IREF (0x4) +#define MCF_SDRAMC_SDCR_BUFF (0x10) +#define MCF_SDRAMC_SDCR_DQS_OE(x) (((x)&0xF)<<0x8) +#define MCF_SDRAMC_SDCR_RCNT(x) (((x)&0x3F)<<0x10) +#define MCF_SDRAMC_SDCR_DRIVE (0x400000) +#define MCF_SDRAMC_SDCR_AP (0x800000) +#define MCF_SDRAMC_SDCR_MUX(x) (((x)&0x3)<<0x18) +#define MCF_SDRAMC_SDCR_REF (0x10000000) +#define MCF_SDRAMC_SDCR_DDR (0x20000000) +#define MCF_SDRAMC_SDCR_CKE (0x40000000) +#define MCF_SDRAMC_SDCR_MODE_EN (0x80000000) + +/* Bit definitions and macros for MCF_SDRAMC_SDCFG1 */ +#define MCF_SDRAMC_SDCFG1_WTLAT(x) (((x)&0x7)<<0x4) +#define MCF_SDRAMC_SDCFG1_REF2ACT(x) (((x)&0xF)<<0x8) +#define MCF_SDRAMC_SDCFG1_PRE2ACT(x) (((x)&0x7)<<0xC) +#define MCF_SDRAMC_SDCFG1_ACT2RW(x) (((x)&0x7)<<0x10) +#define MCF_SDRAMC_SDCFG1_RDLAT(x) (((x)&0xF)<<0x14) +#define MCF_SDRAMC_SDCFG1_SWT2RD(x) (((x)&0x7)<<0x18) +#define MCF_SDRAMC_SDCFG1_SRD2RW(x) (((x)&0xF)<<0x1C) + +/* Bit definitions and macros for MCF_SDRAMC_SDCFG2 */ +#define MCF_SDRAMC_SDCFG2_BL(x) (((x)&0xF)<<0x10) +#define MCF_SDRAMC_SDCFG2_BRD2WT(x) (((x)&0xF)<<0x14) +#define MCF_SDRAMC_SDCFG2_BWT2RW(x) (((x)&0xF)<<0x18) +#define MCF_SDRAMC_SDCFG2_BRD2PRE(x) (((x)&0xF)<<0x1C) + + +#endif /* __MCF5475_SDRAMC_H__ */ diff --git a/BaS_codewarrior/firebeeV1/headers/MCF5475_SEC.h b/BaS_codewarrior/firebeeV1/headers/MCF5475_SEC.h new file mode 100644 index 0000000..ce02c30 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/headers/MCF5475_SEC.h @@ -0,0 +1,398 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_SEC_H__ +#define __MCF5475_SEC_H__ + + +/********************************************************************* +* +* Integrated Security Engine (SEC) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_SEC_EUACRH (*(vuint32*)(&__MBAR[0x21000])) +#define MCF_SEC_EUACRL (*(vuint32*)(&__MBAR[0x21004])) +#define MCF_SEC_SIMRH (*(vuint32*)(&__MBAR[0x21008])) +#define MCF_SEC_SIMRL (*(vuint32*)(&__MBAR[0x2100C])) +#define MCF_SEC_SISRH (*(vuint32*)(&__MBAR[0x21010])) +#define MCF_SEC_SISRL (*(vuint32*)(&__MBAR[0x21014])) +#define MCF_SEC_SICRH (*(vuint32*)(&__MBAR[0x21018])) +#define MCF_SEC_SICRL (*(vuint32*)(&__MBAR[0x2101C])) +#define MCF_SEC_SIDR (*(vuint32*)(&__MBAR[0x21020])) +#define MCF_SEC_EUASRH (*(vuint32*)(&__MBAR[0x21028])) +#define MCF_SEC_EUASRL (*(vuint32*)(&__MBAR[0x2102C])) +#define MCF_SEC_SMCR (*(vuint32*)(&__MBAR[0x21030])) +#define MCF_SEC_MEAR (*(vuint32*)(&__MBAR[0x21038])) +#define MCF_SEC_CCCR0 (*(vuint32*)(&__MBAR[0x2200C])) +#define MCF_SEC_CCPSRH0 (*(vuint32*)(&__MBAR[0x22010])) +#define MCF_SEC_CCPSRL0 (*(vuint32*)(&__MBAR[0x22014])) +#define MCF_SEC_CDPR0 (*(vuint32*)(&__MBAR[0x22044])) +#define MCF_SEC_FR0 (*(vuint32*)(&__MBAR[0x2204C])) +#define MCF_SEC_CCCR1 (*(vuint32*)(&__MBAR[0x2300C])) +#define MCF_SEC_CCPSRH1 (*(vuint32*)(&__MBAR[0x23010])) +#define MCF_SEC_CCPSRL1 (*(vuint32*)(&__MBAR[0x23014])) +#define MCF_SEC_CDPR1 (*(vuint32*)(&__MBAR[0x23044])) +#define MCF_SEC_FR1 (*(vuint32*)(&__MBAR[0x2304C])) +#define MCF_SEC_AFRCR (*(vuint32*)(&__MBAR[0x28018])) +#define MCF_SEC_AFSR (*(vuint32*)(&__MBAR[0x28028])) +#define MCF_SEC_AFISR (*(vuint32*)(&__MBAR[0x28030])) +#define MCF_SEC_AFIMR (*(vuint32*)(&__MBAR[0x28038])) +#define MCF_SEC_DRCR (*(vuint32*)(&__MBAR[0x2A018])) +#define MCF_SEC_DSR (*(vuint32*)(&__MBAR[0x2A028])) +#define MCF_SEC_DISR (*(vuint32*)(&__MBAR[0x2A030])) +#define MCF_SEC_DIMR (*(vuint32*)(&__MBAR[0x2A038])) +#define MCF_SEC_MDRCR (*(vuint32*)(&__MBAR[0x2C018])) +#define MCF_SEC_MDSR (*(vuint32*)(&__MBAR[0x2C028])) +#define MCF_SEC_MDISR (*(vuint32*)(&__MBAR[0x2C030])) +#define MCF_SEC_MDIMR (*(vuint32*)(&__MBAR[0x2C038])) +#define MCF_SEC_RNGRCR (*(vuint32*)(&__MBAR[0x2E018])) +#define MCF_SEC_RNGSR (*(vuint32*)(&__MBAR[0x2E028])) +#define MCF_SEC_RNGISR (*(vuint32*)(&__MBAR[0x2E030])) +#define MCF_SEC_RNGIMR (*(vuint32*)(&__MBAR[0x2E038])) +#define MCF_SEC_AESRCR (*(vuint32*)(&__MBAR[0x32018])) +#define MCF_SEC_AESSR (*(vuint32*)(&__MBAR[0x32028])) +#define MCF_SEC_AESISR (*(vuint32*)(&__MBAR[0x32030])) +#define MCF_SEC_AESIMR (*(vuint32*)(&__MBAR[0x32038])) +#define MCF_SEC_CCCRn(x) (*(vuint32*)(&__MBAR[0x2200C + ((x)*0x1000)])) +#define MCF_SEC_CCPSRHn(x) (*(vuint32*)(&__MBAR[0x22010 + ((x)*0x1000)])) +#define MCF_SEC_CCPSRLn(x) (*(vuint32*)(&__MBAR[0x22014 + ((x)*0x1000)])) +#define MCF_SEC_CDPRn(x) (*(vuint32*)(&__MBAR[0x22044 + ((x)*0x1000)])) +#define MCF_SEC_FRn(x) (*(vuint32*)(&__MBAR[0x2204C + ((x)*0x1000)])) + + +/* Bit definitions and macros for MCF_SEC_EUACRH */ +#define MCF_SEC_EUACRH_AFEU(x) (((x)&0xF)<<0) +#define MCF_SEC_EUACRH_AFFEU_NOASSIGN (0) +#define MCF_SEC_EUACRH_AFFEU_CHA0 (0x1) +#define MCF_SEC_EUACRH_AFFEU_CHA1 (0x2) +#define MCF_SEC_EUACRH_MDEU(x) (((x)&0xF)<<0x8) +#define MCF_SEC_EUACRH_MDEU_NOASSIGN (0) +#define MCF_SEC_EUACRH_MDEU_CHA0 (0x100) +#define MCF_SEC_EUACRH_MDEU_CHA1 (0x200) +#define MCF_SEC_EUACRH_RNG(x) (((x)&0xF)<<0x18) +#define MCF_SEC_EUACRH_RNG_NOASSIGN (0) +#define MCF_SEC_EUACRH_RNG_CHA0 (0x1000000) +#define MCF_SEC_EUACRH_RNG_CHA1 (0x2000000) + +/* Bit definitions and macros for MCF_SEC_EUACRL */ +#define MCF_SEC_EUACRL_AESU(x) (((x)&0xF)<<0x10) +#define MCF_SEC_EUACRL_AESU_NOASSIGN (0) +#define MCF_SEC_EUACRL_AESU_CHA0 (0x10000) +#define MCF_SEC_EUACRL_AESU_CHA1 (0x20000) +#define MCF_SEC_EUACRL_DEU(x) (((x)&0xF)<<0x18) + +/* Bit definitions and macros for MCF_SEC_SIMRH */ +#define MCF_SEC_SIMRH_AERR (0x8000000) +#define MCF_SEC_SIMRH_CHA_0_DN (0x10000000) +#define MCF_SEC_SIMRH_CHA_0_ERR (0x20000000) +#define MCF_SEC_SIMRH_CHA_1_DN (0x40000000) +#define MCF_SEC_SIMRH_CHA_1_ERR (0x80000000) + +/* Bit definitions and macros for MCF_SEC_SIMRL */ +#define MCF_SEC_SIMRL_TEA (0x40) +#define MCF_SEC_SIMRL_DEU_DN (0x100) +#define MCF_SEC_SIMRL_DEU_ERR (0x200) +#define MCF_SEC_SIMRL_AESU_DN (0x1000) +#define MCF_SEC_SIMRL_AESU_ERR (0x2000) +#define MCF_SEC_SIMRL_MDEU_DN (0x10000) +#define MCF_SEC_SIMRL_MDEU_ERR (0x20000) +#define MCF_SEC_SIMRL_AFEU_DN (0x100000) +#define MCF_SEC_SIMRL_AFEU_ERR (0x200000) +#define MCF_SEC_SIMRL_RNG_DN (0x1000000) +#define MCF_SEC_SIMRL_RNG_ERR (0x2000000) + +/* Bit definitions and macros for MCF_SEC_SISRH */ +#define MCF_SEC_SISRH_AERR (0x8000000) +#define MCF_SEC_SISRH_CHA_0_DN (0x10000000) +#define MCF_SEC_SISRH_CHA_0_ERR (0x20000000) +#define MCF_SEC_SISRH_CHA_1_DN (0x40000000) +#define MCF_SEC_SISRH_CHA_1_ERR (0x80000000) + +/* Bit definitions and macros for MCF_SEC_SISRL */ +#define MCF_SEC_SISRL_TEA (0x40) +#define MCF_SEC_SISRL_DEU_DN (0x100) +#define MCF_SEC_SISRL_DEU_ERR (0x200) +#define MCF_SEC_SISRL_AESU_DN (0x1000) +#define MCF_SEC_SISRL_AESU_ERR (0x2000) +#define MCF_SEC_SISRL_MDEU_DN (0x10000) +#define MCF_SEC_SISRL_MDEU_ERR (0x20000) +#define MCF_SEC_SISRL_AFEU_DN (0x100000) +#define MCF_SEC_SISRL_AFEU_ERR (0x200000) +#define MCF_SEC_SISRL_RNG_DN (0x1000000) +#define MCF_SEC_SISRL_RNG_ERR (0x2000000) + +/* Bit definitions and macros for MCF_SEC_SICRH */ +#define MCF_SEC_SICRH_AERR (0x8000000) +#define MCF_SEC_SICRH_CHA_0_DN (0x10000000) +#define MCF_SEC_SICRH_CHA_0_ERR (0x20000000) +#define MCF_SEC_SICRH_CHA_1_DN (0x40000000) +#define MCF_SEC_SICRH_CHA_1_ERR (0x80000000) + +/* Bit definitions and macros for MCF_SEC_SICRL */ +#define MCF_SEC_SICRL_TEA (0x40) +#define MCF_SEC_SICRL_DEU_DN (0x100) +#define MCF_SEC_SICRL_DEU_ERR (0x200) +#define MCF_SEC_SICRL_AESU_DN (0x1000) +#define MCF_SEC_SICRL_AESU_ERR (0x2000) +#define MCF_SEC_SICRL_MDEU_DN (0x10000) +#define MCF_SEC_SICRL_MDEU_ERR (0x20000) +#define MCF_SEC_SICRL_AFEU_DN (0x100000) +#define MCF_SEC_SICRL_AFEU_ERR (0x200000) +#define MCF_SEC_SICRL_RNG_DN (0x1000000) +#define MCF_SEC_SICRL_RNG_ERR (0x2000000) + +/* Bit definitions and macros for MCF_SEC_SIDR */ +#define MCF_SEC_SIDR_VERSION(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_SEC_EUASRH */ +#define MCF_SEC_EUASRH_AFEU(x) (((x)&0xF)<<0) +#define MCF_SEC_EUASRH_MDEU(x) (((x)&0xF)<<0x8) +#define MCF_SEC_EUASRH_RNG(x) (((x)&0xF)<<0x18) + +/* Bit definitions and macros for MCF_SEC_EUASRL */ +#define MCF_SEC_EUASRL_AESU(x) (((x)&0xF)<<0x10) +#define MCF_SEC_EUASRL_DEU(x) (((x)&0xF)<<0x18) + +/* Bit definitions and macros for MCF_SEC_SMCR */ +#define MCF_SEC_SMCR_CURR_CHAN(x) (((x)&0xF)<<0x4) +#define MCF_SEC_SMCR_CURR_CHAN_1 (0x10) +#define MCF_SEC_SMCR_CURR_CHAN_2 (0x20) +#define MCF_SEC_SMCR_SWR (0x1000000) + +/* Bit definitions and macros for MCF_SEC_MEAR */ +#define MCF_SEC_MEAR_ADDRESS(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_SEC_CCCRn */ +#define MCF_SEC_CCCRn_RST (0x1) +#define MCF_SEC_CCCRn_CDIE (0x2) +#define MCF_SEC_CCCRn_NT (0x4) +#define MCF_SEC_CCCRn_NE (0x8) +#define MCF_SEC_CCCRn_WE (0x10) +#define MCF_SEC_CCCRn_BURST_SIZE(x) (((x)&0x7)<<0x8) +#define MCF_SEC_CCCRn_BURST_SIZE_2 (0) +#define MCF_SEC_CCCRn_BURST_SIZE_8 (0x100) +#define MCF_SEC_CCCRn_BURST_SIZE_16 (0x200) +#define MCF_SEC_CCCRn_BURST_SIZE_24 (0x300) +#define MCF_SEC_CCCRn_BURST_SIZE_32 (0x400) +#define MCF_SEC_CCCRn_BURST_SIZE_40 (0x500) +#define MCF_SEC_CCCRn_BURST_SIZE_48 (0x600) +#define MCF_SEC_CCCRn_BURST_SIZE_56 (0x700) + +/* Bit definitions and macros for MCF_SEC_CCPSRHn */ +#define MCF_SEC_CCPSRHn_STATE(x) (((x)&0xFF)<<0) + +/* Bit definitions and macros for MCF_SEC_CCPSRLn */ +#define MCF_SEC_CCPSRLn_PAIR_PTR(x) (((x)&0xFF)<<0) +#define MCF_SEC_CCPSRLn_EUERR (0x100) +#define MCF_SEC_CCPSRLn_SERR (0x200) +#define MCF_SEC_CCPSRLn_DERR (0x400) +#define MCF_SEC_CCPSRLn_PERR (0x1000) +#define MCF_SEC_CCPSRLn_TEA (0x2000) +#define MCF_SEC_CCPSRLn_SD (0x10000) +#define MCF_SEC_CCPSRLn_PD (0x20000) +#define MCF_SEC_CCPSRLn_SRD (0x40000) +#define MCF_SEC_CCPSRLn_PRD (0x80000) +#define MCF_SEC_CCPSRLn_SG (0x100000) +#define MCF_SEC_CCPSRLn_PG (0x200000) +#define MCF_SEC_CCPSRLn_SR (0x400000) +#define MCF_SEC_CCPSRLn_PR (0x800000) +#define MCF_SEC_CCPSRLn_MO (0x1000000) +#define MCF_SEC_CCPSRLn_MI (0x2000000) +#define MCF_SEC_CCPSRLn_STAT (0x4000000) + +/* Bit definitions and macros for MCF_SEC_CDPRn */ +#define MCF_SEC_CDPRn_CDP(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_SEC_FRn */ +#define MCF_SEC_FRn_FETCH_ADDR(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_SEC_AFRCR */ +#define MCF_SEC_AFRCR_SR (0x1000000) +#define MCF_SEC_AFRCR_MI (0x2000000) +#define MCF_SEC_AFRCR_RI (0x4000000) + +/* Bit definitions and macros for MCF_SEC_AFSR */ +#define MCF_SEC_AFSR_RD (0x1000000) +#define MCF_SEC_AFSR_ID (0x2000000) +#define MCF_SEC_AFSR_IE (0x4000000) +#define MCF_SEC_AFSR_OFR (0x8000000) +#define MCF_SEC_AFSR_IFW (0x10000000) +#define MCF_SEC_AFSR_HALT (0x20000000) + +/* Bit definitions and macros for MCF_SEC_AFISR */ +#define MCF_SEC_AFISR_DSE (0x10000) +#define MCF_SEC_AFISR_KSE (0x20000) +#define MCF_SEC_AFISR_CE (0x40000) +#define MCF_SEC_AFISR_ERE (0x80000) +#define MCF_SEC_AFISR_IE (0x100000) +#define MCF_SEC_AFISR_OFU (0x2000000) +#define MCF_SEC_AFISR_IFO (0x4000000) +#define MCF_SEC_AFISR_IFE (0x10000000) +#define MCF_SEC_AFISR_OFE (0x20000000) +#define MCF_SEC_AFISR_AE (0x40000000) +#define MCF_SEC_AFISR_ME (0x80000000) + +/* Bit definitions and macros for MCF_SEC_AFIMR */ +#define MCF_SEC_AFIMR_DSE (0x10000) +#define MCF_SEC_AFIMR_KSE (0x20000) +#define MCF_SEC_AFIMR_CE (0x40000) +#define MCF_SEC_AFIMR_ERE (0x80000) +#define MCF_SEC_AFIMR_IE (0x100000) +#define MCF_SEC_AFIMR_OFU (0x2000000) +#define MCF_SEC_AFIMR_IFO (0x4000000) +#define MCF_SEC_AFIMR_IFE (0x10000000) +#define MCF_SEC_AFIMR_OFE (0x20000000) +#define MCF_SEC_AFIMR_AE (0x40000000) +#define MCF_SEC_AFIMR_ME (0x80000000) + +/* Bit definitions and macros for MCF_SEC_DRCR */ +#define MCF_SEC_DRCR_SR (0x1000000) +#define MCF_SEC_DRCR_MI (0x2000000) +#define MCF_SEC_DRCR_RI (0x4000000) + +/* Bit definitions and macros for MCF_SEC_DSR */ +#define MCF_SEC_DSR_RD (0x1000000) +#define MCF_SEC_DSR_ID (0x2000000) +#define MCF_SEC_DSR_IE (0x4000000) +#define MCF_SEC_DSR_OFR (0x8000000) +#define MCF_SEC_DSR_IFW (0x10000000) +#define MCF_SEC_DSR_HALT (0x20000000) + +/* Bit definitions and macros for MCF_SEC_DISR */ +#define MCF_SEC_DISR_DSE (0x10000) +#define MCF_SEC_DISR_KSE (0x20000) +#define MCF_SEC_DISR_CE (0x40000) +#define MCF_SEC_DISR_ERE (0x80000) +#define MCF_SEC_DISR_IE (0x100000) +#define MCF_SEC_DISR_KPE (0x200000) +#define MCF_SEC_DISR_OFU (0x2000000) +#define MCF_SEC_DISR_IFO (0x4000000) +#define MCF_SEC_DISR_IFE (0x10000000) +#define MCF_SEC_DISR_OFE (0x20000000) +#define MCF_SEC_DISR_AE (0x40000000) +#define MCF_SEC_DISR_ME (0x80000000) + +/* Bit definitions and macros for MCF_SEC_DIMR */ +#define MCF_SEC_DIMR_DSE (0x10000) +#define MCF_SEC_DIMR_KSE (0x20000) +#define MCF_SEC_DIMR_CE (0x40000) +#define MCF_SEC_DIMR_ERE (0x80000) +#define MCF_SEC_DIMR_IE (0x100000) +#define MCF_SEC_DIMR_KPE (0x200000) +#define MCF_SEC_DIMR_OFU (0x2000000) +#define MCF_SEC_DIMR_IFO (0x4000000) +#define MCF_SEC_DIMR_IFE (0x10000000) +#define MCF_SEC_DIMR_OFE (0x20000000) +#define MCF_SEC_DIMR_AE (0x40000000) +#define MCF_SEC_DIMR_ME (0x80000000) + +/* Bit definitions and macros for MCF_SEC_MDRCR */ +#define MCF_SEC_MDRCR_SR (0x1000000) +#define MCF_SEC_MDRCR_MI (0x2000000) +#define MCF_SEC_MDRCR_RI (0x4000000) + +/* Bit definitions and macros for MCF_SEC_MDSR */ +#define MCF_SEC_MDSR_RD (0x1000000) +#define MCF_SEC_MDSR_ID (0x2000000) +#define MCF_SEC_MDSR_IE (0x4000000) +#define MCF_SEC_MDSR_IFW (0x10000000) +#define MCF_SEC_MDSR_HALT (0x20000000) + +/* Bit definitions and macros for MCF_SEC_MDISR */ +#define MCF_SEC_MDISR_DSE (0x10000) +#define MCF_SEC_MDISR_KSE (0x20000) +#define MCF_SEC_MDISR_CE (0x40000) +#define MCF_SEC_MDISR_ERE (0x80000) +#define MCF_SEC_MDISR_IE (0x100000) +#define MCF_SEC_MDISR_IFO (0x4000000) +#define MCF_SEC_MDISR_AE (0x40000000) +#define MCF_SEC_MDISR_ME (0x80000000) + +/* Bit definitions and macros for MCF_SEC_MDIMR */ +#define MCF_SEC_MDIMR_DSE (0x10000) +#define MCF_SEC_MDIMR_KSE (0x20000) +#define MCF_SEC_MDIMR_CE (0x40000) +#define MCF_SEC_MDIMR_ERE (0x80000) +#define MCF_SEC_MDIMR_IE (0x100000) +#define MCF_SEC_MDIMR_IFO (0x4000000) +#define MCF_SEC_MDIMR_AE (0x40000000) +#define MCF_SEC_MDIMR_ME (0x80000000) + +/* Bit definitions and macros for MCF_SEC_RNGRCR */ +#define MCF_SEC_RNGRCR_SR (0x1000000) +#define MCF_SEC_RNGRCR_MI (0x2000000) +#define MCF_SEC_RNGRCR_RI (0x4000000) + +/* Bit definitions and macros for MCF_SEC_RNGSR */ +#define MCF_SEC_RNGSR_RD (0x1000000) +#define MCF_SEC_RNGSR_IE (0x4000000) +#define MCF_SEC_RNGSR_OFR (0x8000000) +#define MCF_SEC_RNGSR_HALT (0x20000000) + +/* Bit definitions and macros for MCF_SEC_RNGISR */ +#define MCF_SEC_RNGISR_IE (0x100000) +#define MCF_SEC_RNGISR_OFU (0x2000000) +#define MCF_SEC_RNGISR_AE (0x40000000) +#define MCF_SEC_RNGISR_ME (0x80000000) + +/* Bit definitions and macros for MCF_SEC_RNGIMR */ +#define MCF_SEC_RNGIMR_IE (0x100000) +#define MCF_SEC_RNGIMR_OFU (0x2000000) +#define MCF_SEC_RNGIMR_AE (0x40000000) +#define MCF_SEC_RNGIMR_ME (0x80000000) + +/* Bit definitions and macros for MCF_SEC_AESRCR */ +#define MCF_SEC_AESRCR_SR (0x1000000) +#define MCF_SEC_AESRCR_MI (0x2000000) +#define MCF_SEC_AESRCR_RI (0x4000000) + +/* Bit definitions and macros for MCF_SEC_AESSR */ +#define MCF_SEC_AESSR_RD (0x1000000) +#define MCF_SEC_AESSR_ID (0x2000000) +#define MCF_SEC_AESSR_IE (0x4000000) +#define MCF_SEC_AESSR_OFR (0x8000000) +#define MCF_SEC_AESSR_IFW (0x10000000) +#define MCF_SEC_AESSR_HALT (0x20000000) + +/* Bit definitions and macros for MCF_SEC_AESISR */ +#define MCF_SEC_AESISR_DSE (0x10000) +#define MCF_SEC_AESISR_KSE (0x20000) +#define MCF_SEC_AESISR_CE (0x40000) +#define MCF_SEC_AESISR_ERE (0x80000) +#define MCF_SEC_AESISR_IE (0x100000) +#define MCF_SEC_AESISR_OFU (0x2000000) +#define MCF_SEC_AESISR_IFO (0x4000000) +#define MCF_SEC_AESISR_IFE (0x10000000) +#define MCF_SEC_AESISR_OFE (0x20000000) +#define MCF_SEC_AESISR_AE (0x40000000) +#define MCF_SEC_AESISR_ME (0x80000000) + +/* Bit definitions and macros for MCF_SEC_AESIMR */ +#define MCF_SEC_AESIMR_DSE (0x10000) +#define MCF_SEC_AESIMR_KSE (0x20000) +#define MCF_SEC_AESIMR_CE (0x40000) +#define MCF_SEC_AESIMR_ERE (0x80000) +#define MCF_SEC_AESIMR_IE (0x100000) +#define MCF_SEC_AESIMR_OFU (0x2000000) +#define MCF_SEC_AESIMR_IFO (0x4000000) +#define MCF_SEC_AESIMR_IFE (0x10000000) +#define MCF_SEC_AESIMR_OFE (0x20000000) +#define MCF_SEC_AESIMR_AE (0x40000000) +#define MCF_SEC_AESIMR_ME (0x80000000) + + +#endif /* __MCF5475_SEC_H__ */ diff --git a/BaS_codewarrior/firebeeV1/headers/MCF5475_SIU.h b/BaS_codewarrior/firebeeV1/headers/MCF5475_SIU.h new file mode 100644 index 0000000..498aa91 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/headers/MCF5475_SIU.h @@ -0,0 +1,52 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_SIU_H__ +#define __MCF5475_SIU_H__ + + +/********************************************************************* +* +* System Integration Unit (SIU) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_SIU_SBCR (*(vuint32*)(&__MBAR[0x10])) +#define MCF_SIU_SECSACR (*(vuint32*)(&__MBAR[0x38])) +#define MCF_SIU_RSR (*(vuint32*)(&__MBAR[0x44])) +#define MCF_SIU_JTAGID (*(vuint32*)(&__MBAR[0x50])) + + +/* Bit definitions and macros for MCF_SIU_SBCR */ +#define MCF_SIU_SBCR_PIN2DSPI (0x8000000) +#define MCF_SIU_SBCR_DMA2CPU (0x10000000) +#define MCF_SIU_SBCR_CPU2DMA (0x20000000) +#define MCF_SIU_SBCR_PIN2DMA (0x40000000) +#define MCF_SIU_SBCR_PIN2CPU (0x80000000) + +/* Bit definitions and macros for MCF_SIU_SECSACR */ +#define MCF_SIU_SECSACR_SEQEN (0x1) + +/* Bit definitions and macros for MCF_SIU_RSR */ +#define MCF_SIU_RSR_RST (0x1) +#define MCF_SIU_RSR_RSTWD (0x2) +#define MCF_SIU_RSR_RSTJTG (0x8) + +/* Bit definitions and macros for MCF_SIU_JTAGID */ +#define MCF_SIU_JTAGID_JTAGID(x) (((x)&0xFFFFFFFF)<<0) + + +#endif /* __MCF5475_SIU_H__ */ diff --git a/BaS_codewarrior/firebeeV1/headers/MCF5475_SLT.h b/BaS_codewarrior/firebeeV1/headers/MCF5475_SLT.h new file mode 100644 index 0000000..44a74c6 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/headers/MCF5475_SLT.h @@ -0,0 +1,59 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_SLT_H__ +#define __MCF5475_SLT_H__ + + +/********************************************************************* +* +* Slice Timers (SLT) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_SLT0_STCNT (*(vuint32*)(&__MBAR[0x900])) +#define MCF_SLT0_SCR (*(vuint32*)(&__MBAR[0x904])) +#define MCF_SLT0_SCNT (*(vuint32*)(&__MBAR[0x908])) +#define MCF_SLT0_SSR (*(vuint32*)(&__MBAR[0x90C])) + +#define MCF_SLT1_STCNT (*(vuint32*)(&__MBAR[0x910])) +#define MCF_SLT1_SCR (*(vuint32*)(&__MBAR[0x914])) +#define MCF_SLT1_SCNT (*(vuint32*)(&__MBAR[0x918])) +#define MCF_SLT1_SSR (*(vuint32*)(&__MBAR[0x91C])) + +#define MCF_SLT_STCNT(x) (*(vuint32*)(&__MBAR[0x900 + ((x)*0x10)])) +#define MCF_SLT_SCR(x) (*(vuint32*)(&__MBAR[0x904 + ((x)*0x10)])) +#define MCF_SLT_SCNT(x) (*(vuint32*)(&__MBAR[0x908 + ((x)*0x10)])) +#define MCF_SLT_SSR(x) (*(vuint32*)(&__MBAR[0x90C + ((x)*0x10)])) + + +/* Bit definitions and macros for MCF_SLT_STCNT */ +#define MCF_SLT_STCNT_TC(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_SLT_SCR */ +#define MCF_SLT_SCR_TEN (0x1000000) +#define MCF_SLT_SCR_IEN (0x2000000) +#define MCF_SLT_SCR_RUN (0x4000000) + +/* Bit definitions and macros for MCF_SLT_SCNT */ +#define MCF_SLT_SCNT_CNT(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_SLT_SSR */ +#define MCF_SLT_SSR_ST (0x1000000) +#define MCF_SLT_SSR_BE (0x2000000) + + +#endif /* __MCF5475_SLT_H__ */ diff --git a/BaS_codewarrior/firebeeV1/headers/MCF5475_SRAM.h b/BaS_codewarrior/firebeeV1/headers/MCF5475_SRAM.h new file mode 100644 index 0000000..7e645fe --- /dev/null +++ b/BaS_codewarrior/firebeeV1/headers/MCF5475_SRAM.h @@ -0,0 +1,62 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_SRAM_H__ +#define __MCF5475_SRAM_H__ + + +/********************************************************************* +* +* System SRAM Module (SRAM) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_SRAM_SSCR (*(vuint32*)(&__MBAR[0x1FFC0])) +#define MCF_SRAM_TCCR (*(vuint32*)(&__MBAR[0x1FFC4])) +#define MCF_SRAM_TCCRDR (*(vuint32*)(&__MBAR[0x1FFC8])) +#define MCF_SRAM_TCCRDW (*(vuint32*)(&__MBAR[0x1FFCC])) +#define MCF_SRAM_TCCRSEC (*(vuint32*)(&__MBAR[0x1FFD0])) + + +/* Bit definitions and macros for MCF_SRAM_SSCR */ +#define MCF_SRAM_SSCR_INLV (0x10000) + +/* Bit definitions and macros for MCF_SRAM_TCCR */ +#define MCF_SRAM_TCCR_BANK0_TC(x) (((x)&0xF)<<0) +#define MCF_SRAM_TCCR_BANK1_TC(x) (((x)&0xF)<<0x8) +#define MCF_SRAM_TCCR_BANK2_TC(x) (((x)&0xF)<<0x10) +#define MCF_SRAM_TCCR_BANK3_TC(x) (((x)&0xF)<<0x18) + +/* Bit definitions and macros for MCF_SRAM_TCCRDR */ +#define MCF_SRAM_TCCRDR_BANK0_TC(x) (((x)&0xF)<<0) +#define MCF_SRAM_TCCRDR_BANK1_TC(x) (((x)&0xF)<<0x8) +#define MCF_SRAM_TCCRDR_BANK2_TC(x) (((x)&0xF)<<0x10) +#define MCF_SRAM_TCCRDR_BANK3_TC(x) (((x)&0xF)<<0x18) + +/* Bit definitions and macros for MCF_SRAM_TCCRDW */ +#define MCF_SRAM_TCCRDW_BANK0_TC(x) (((x)&0xF)<<0) +#define MCF_SRAM_TCCRDW_BANK1_TC(x) (((x)&0xF)<<0x8) +#define MCF_SRAM_TCCRDW_BANK2_TC(x) (((x)&0xF)<<0x10) +#define MCF_SRAM_TCCRDW_BANK3_TC(x) (((x)&0xF)<<0x18) + +/* Bit definitions and macros for MCF_SRAM_TCCRSEC */ +#define MCF_SRAM_TCCRSEC_BANK0_TC(x) (((x)&0xF)<<0) +#define MCF_SRAM_TCCRSEC_BANK1_TC(x) (((x)&0xF)<<0x8) +#define MCF_SRAM_TCCRSEC_BANK2_TC(x) (((x)&0xF)<<0x10) +#define MCF_SRAM_TCCRSEC_BANK3_TC(x) (((x)&0xF)<<0x18) + + +#endif /* __MCF5475_SRAM_H__ */ diff --git a/BaS_codewarrior/firebeeV1/headers/MCF5475_USB.h b/BaS_codewarrior/firebeeV1/headers/MCF5475_USB.h new file mode 100644 index 0000000..da9e6db --- /dev/null +++ b/BaS_codewarrior/firebeeV1/headers/MCF5475_USB.h @@ -0,0 +1,554 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_USB_H__ +#define __MCF5475_USB_H__ + + +/********************************************************************* +* +* Universal Serial Bus Interface (USB) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_USB_USBAISR (*(vuint8 *)(&__MBAR[0xB000])) +#define MCF_USB_USBAIMR (*(vuint8 *)(&__MBAR[0xB001])) +#define MCF_USB_EPINFO (*(vuint8 *)(&__MBAR[0xB003])) +#define MCF_USB_CFGR (*(vuint8 *)(&__MBAR[0xB004])) +#define MCF_USB_CFGAR (*(vuint8 *)(&__MBAR[0xB005])) +#define MCF_USB_SPEEDR (*(vuint8 *)(&__MBAR[0xB006])) +#define MCF_USB_FRMNUMR (*(vuint16*)(&__MBAR[0xB00E])) +#define MCF_USB_EPTNR (*(vuint16*)(&__MBAR[0xB010])) +#define MCF_USB_IFUR (*(vuint16*)(&__MBAR[0xB014])) +#define MCF_USB_IFR0 (*(vuint16*)(&__MBAR[0xB040])) +#define MCF_USB_IFR1 (*(vuint16*)(&__MBAR[0xB042])) +#define MCF_USB_IFR2 (*(vuint16*)(&__MBAR[0xB044])) +#define MCF_USB_IFR3 (*(vuint16*)(&__MBAR[0xB046])) +#define MCF_USB_IFR4 (*(vuint16*)(&__MBAR[0xB048])) +#define MCF_USB_IFR5 (*(vuint16*)(&__MBAR[0xB04A])) +#define MCF_USB_IFR6 (*(vuint16*)(&__MBAR[0xB04C])) +#define MCF_USB_IFR7 (*(vuint16*)(&__MBAR[0xB04E])) +#define MCF_USB_IFR8 (*(vuint16*)(&__MBAR[0xB050])) +#define MCF_USB_IFR9 (*(vuint16*)(&__MBAR[0xB052])) +#define MCF_USB_IFR10 (*(vuint16*)(&__MBAR[0xB054])) +#define MCF_USB_IFR11 (*(vuint16*)(&__MBAR[0xB056])) +#define MCF_USB_IFR12 (*(vuint16*)(&__MBAR[0xB058])) +#define MCF_USB_IFR13 (*(vuint16*)(&__MBAR[0xB05A])) +#define MCF_USB_IFR14 (*(vuint16*)(&__MBAR[0xB05C])) +#define MCF_USB_IFR15 (*(vuint16*)(&__MBAR[0xB05E])) +#define MCF_USB_IFR16 (*(vuint16*)(&__MBAR[0xB060])) +#define MCF_USB_IFR17 (*(vuint16*)(&__MBAR[0xB062])) +#define MCF_USB_IFR18 (*(vuint16*)(&__MBAR[0xB064])) +#define MCF_USB_IFR19 (*(vuint16*)(&__MBAR[0xB066])) +#define MCF_USB_IFR20 (*(vuint16*)(&__MBAR[0xB068])) +#define MCF_USB_IFR21 (*(vuint16*)(&__MBAR[0xB06A])) +#define MCF_USB_IFR22 (*(vuint16*)(&__MBAR[0xB06C])) +#define MCF_USB_IFR23 (*(vuint16*)(&__MBAR[0xB06E])) +#define MCF_USB_IFR24 (*(vuint16*)(&__MBAR[0xB070])) +#define MCF_USB_IFR25 (*(vuint16*)(&__MBAR[0xB072])) +#define MCF_USB_IFR26 (*(vuint16*)(&__MBAR[0xB074])) +#define MCF_USB_IFR27 (*(vuint16*)(&__MBAR[0xB076])) +#define MCF_USB_IFR28 (*(vuint16*)(&__MBAR[0xB078])) +#define MCF_USB_IFR29 (*(vuint16*)(&__MBAR[0xB07A])) +#define MCF_USB_IFR30 (*(vuint16*)(&__MBAR[0xB07C])) +#define MCF_USB_IFR31 (*(vuint16*)(&__MBAR[0xB07E])) +#define MCF_USB_PPCNT (*(vuint16*)(&__MBAR[0xB080])) +#define MCF_USB_DPCNT (*(vuint16*)(&__MBAR[0xB082])) +#define MCF_USB_CRCECNT (*(vuint16*)(&__MBAR[0xB084])) +#define MCF_USB_BSECNT (*(vuint16*)(&__MBAR[0xB086])) +#define MCF_USB_PIDECNT (*(vuint16*)(&__MBAR[0xB088])) +#define MCF_USB_FRMECNT (*(vuint16*)(&__MBAR[0xB08A])) +#define MCF_USB_TXPCNT (*(vuint16*)(&__MBAR[0xB08C])) +#define MCF_USB_CNTOVR (*(vuint8 *)(&__MBAR[0xB08E])) +#define MCF_USB_EP0ACR (*(vuint8 *)(&__MBAR[0xB101])) +#define MCF_USB_EP0MPSR (*(vuint16*)(&__MBAR[0xB102])) +#define MCF_USB_EP0IFR (*(vuint8 *)(&__MBAR[0xB104])) +#define MCF_USB_EP0SR (*(vuint8 *)(&__MBAR[0xB105])) +#define MCF_USB_BMRTR (*(vuint8 *)(&__MBAR[0xB106])) +#define MCF_USB_BRTR (*(vuint8 *)(&__MBAR[0xB107])) +#define MCF_USB_WVALUER (*(vuint16*)(&__MBAR[0xB108])) +#define MCF_USB_WINDEXR (*(vuint16*)(&__MBAR[0xB10A])) +#define MCF_USB_WLENGTHR (*(vuint16*)(&__MBAR[0xB10C])) +#define MCF_USB_EP1OUTACR (*(vuint8 *)(&__MBAR[0xB131])) +#define MCF_USB_EP1OUTMPSR (*(vuint16*)(&__MBAR[0xB132])) +#define MCF_USB_EP1OUTIFR (*(vuint8 *)(&__MBAR[0xB134])) +#define MCF_USB_EP1OUTSR (*(vuint8 *)(&__MBAR[0xB135])) +#define MCF_USB_EP1OUTSFR (*(vuint16*)(&__MBAR[0xB13E])) +#define MCF_USB_EP1INACR (*(vuint8 *)(&__MBAR[0xB149])) +#define MCF_USB_EP1INMPSR (*(vuint16*)(&__MBAR[0xB14A])) +#define MCF_USB_EP1INIFR (*(vuint8 *)(&__MBAR[0xB14C])) +#define MCF_USB_EP1INSR (*(vuint8 *)(&__MBAR[0xB14D])) +#define MCF_USB_EP1INSFR (*(vuint16*)(&__MBAR[0xB156])) +#define MCF_USB_EP2OUTACR (*(vuint8 *)(&__MBAR[0xB161])) +#define MCF_USB_EP2OUTMPSR (*(vuint16*)(&__MBAR[0xB162])) +#define MCF_USB_EP2OUTIFR (*(vuint8 *)(&__MBAR[0xB164])) +#define MCF_USB_EP2OUTSR (*(vuint8 *)(&__MBAR[0xB165])) +#define MCF_USB_EP2OUTSFR (*(vuint16*)(&__MBAR[0xB16E])) +#define MCF_USB_EP2INACR (*(vuint8 *)(&__MBAR[0xB179])) +#define MCF_USB_EP2INMPSR (*(vuint16*)(&__MBAR[0xB17A])) +#define MCF_USB_EP2INIFR (*(vuint8 *)(&__MBAR[0xB17C])) +#define MCF_USB_EP2INSR (*(vuint8 *)(&__MBAR[0xB17D])) +#define MCF_USB_EP2INSFR (*(vuint16*)(&__MBAR[0xB186])) +#define MCF_USB_EP3OUTACR (*(vuint8 *)(&__MBAR[0xB191])) +#define MCF_USB_EP3OUTMPSR (*(vuint16*)(&__MBAR[0xB192])) +#define MCF_USB_EP3OUTIFR (*(vuint8 *)(&__MBAR[0xB194])) +#define MCF_USB_EP3OUTSR (*(vuint8 *)(&__MBAR[0xB195])) +#define MCF_USB_EP3OUTSFR (*(vuint16*)(&__MBAR[0xB19E])) +#define MCF_USB_EP3INACR (*(vuint8 *)(&__MBAR[0xB1A9])) +#define MCF_USB_EP3INMPSR (*(vuint16*)(&__MBAR[0xB1AA])) +#define MCF_USB_EP3INIFR (*(vuint8 *)(&__MBAR[0xB1AC])) +#define MCF_USB_EP3INSR (*(vuint8 *)(&__MBAR[0xB1AD])) +#define MCF_USB_EP3INSFR (*(vuint16*)(&__MBAR[0xB1B6])) +#define MCF_USB_EP4OUTACR (*(vuint8 *)(&__MBAR[0xB1C1])) +#define MCF_USB_EP4OUTMPSR (*(vuint16*)(&__MBAR[0xB1C2])) +#define MCF_USB_EP4OUTIFR (*(vuint8 *)(&__MBAR[0xB1C4])) +#define MCF_USB_EP4OUTSR (*(vuint8 *)(&__MBAR[0xB1C5])) +#define MCF_USB_EP4OUTSFR (*(vuint16*)(&__MBAR[0xB1CE])) +#define MCF_USB_EP4INACR (*(vuint8 *)(&__MBAR[0xB1D9])) +#define MCF_USB_EP4INMPSR (*(vuint16*)(&__MBAR[0xB1DA])) +#define MCF_USB_EP4INIFR (*(vuint8 *)(&__MBAR[0xB1DC])) +#define MCF_USB_EP4INSR (*(vuint8 *)(&__MBAR[0xB1DD])) +#define MCF_USB_EP4INSFR (*(vuint16*)(&__MBAR[0xB1E6])) +#define MCF_USB_EP5OUTACR (*(vuint8 *)(&__MBAR[0xB1F1])) +#define MCF_USB_EP5OUTMPSR (*(vuint16*)(&__MBAR[0xB1F2])) +#define MCF_USB_EP5OUTIFR (*(vuint8 *)(&__MBAR[0xB1F4])) +#define MCF_USB_EP5OUTSR (*(vuint8 *)(&__MBAR[0xB1F5])) +#define MCF_USB_EP5OUTSFR (*(vuint16*)(&__MBAR[0xB1FE])) +#define MCF_USB_EP5INACR (*(vuint8 *)(&__MBAR[0xB209])) +#define MCF_USB_EP5INMPSR (*(vuint16*)(&__MBAR[0xB20A])) +#define MCF_USB_EP5INIFR (*(vuint8 *)(&__MBAR[0xB20C])) +#define MCF_USB_EP5INSR (*(vuint8 *)(&__MBAR[0xB20D])) +#define MCF_USB_EP5INSFR (*(vuint16*)(&__MBAR[0xB216])) +#define MCF_USB_EP6OUTACR (*(vuint8 *)(&__MBAR[0xB221])) +#define MCF_USB_EP6OUTMPSR (*(vuint16*)(&__MBAR[0xB222])) +#define MCF_USB_EP6OUTIFR (*(vuint8 *)(&__MBAR[0xB224])) +#define MCF_USB_EP6OUTSR (*(vuint8 *)(&__MBAR[0xB225])) +#define MCF_USB_EP6OUTSFR (*(vuint16*)(&__MBAR[0xB22E])) +#define MCF_USB_EP6INACR (*(vuint8 *)(&__MBAR[0xB239])) +#define MCF_USB_EP6INMPSR (*(vuint16*)(&__MBAR[0xB23A])) +#define MCF_USB_EP6INIFR (*(vuint8 *)(&__MBAR[0xB23C])) +#define MCF_USB_EP6INSR (*(vuint8 *)(&__MBAR[0xB23D])) +#define MCF_USB_EP6INSFR (*(vuint16*)(&__MBAR[0xB246])) +#define MCF_USB_USBSR (*(vuint32*)(&__MBAR[0xB400])) +#define MCF_USB_USBCR (*(vuint32*)(&__MBAR[0xB404])) +#define MCF_USB_DRAMCR (*(vuint32*)(&__MBAR[0xB408])) +#define MCF_USB_DRAMDR (*(vuint32*)(&__MBAR[0xB40C])) +#define MCF_USB_USBISR (*(vuint32*)(&__MBAR[0xB410])) +#define MCF_USB_USBIMR (*(vuint32*)(&__MBAR[0xB414])) +#define MCF_USB_EP0STAT (*(vuint32*)(&__MBAR[0xB440])) +#define MCF_USB_EP0ISR (*(vuint32*)(&__MBAR[0xB444])) +#define MCF_USB_EP0IMR (*(vuint32*)(&__MBAR[0xB448])) +#define MCF_USB_EP0FRCFGR (*(vuint32*)(&__MBAR[0xB44C])) +#define MCF_USB_EP0FDR (*(vuint32*)(&__MBAR[0xB450])) +#define MCF_USB_EP0FSR (*(vuint32*)(&__MBAR[0xB454])) +#define MCF_USB_EP0FCR (*(vuint32*)(&__MBAR[0xB458])) +#define MCF_USB_EP0FAR (*(vuint32*)(&__MBAR[0xB45C])) +#define MCF_USB_EP0FRP (*(vuint32*)(&__MBAR[0xB460])) +#define MCF_USB_EP0FWP (*(vuint32*)(&__MBAR[0xB464])) +#define MCF_USB_EP0LRFP (*(vuint32*)(&__MBAR[0xB468])) +#define MCF_USB_EP0LWFP (*(vuint32*)(&__MBAR[0xB46C])) +#define MCF_USB_EP1STAT (*(vuint32*)(&__MBAR[0xB470])) +#define MCF_USB_EP1ISR (*(vuint32*)(&__MBAR[0xB474])) +#define MCF_USB_EP1IMR (*(vuint32*)(&__MBAR[0xB478])) +#define MCF_USB_EP1FRCFGR (*(vuint32*)(&__MBAR[0xB47C])) +#define MCF_USB_EP1FDR (*(vuint32*)(&__MBAR[0xB480])) +#define MCF_USB_EP1FSR (*(vuint32*)(&__MBAR[0xB484])) +#define MCF_USB_EP1FCR (*(vuint32*)(&__MBAR[0xB488])) +#define MCF_USB_EP1FAR (*(vuint32*)(&__MBAR[0xB48C])) +#define MCF_USB_EP1FRP (*(vuint32*)(&__MBAR[0xB490])) +#define MCF_USB_EP1FWP (*(vuint32*)(&__MBAR[0xB494])) +#define MCF_USB_EP1LRFP (*(vuint32*)(&__MBAR[0xB498])) +#define MCF_USB_EP1LWFP (*(vuint32*)(&__MBAR[0xB49C])) +#define MCF_USB_EP2STAT (*(vuint32*)(&__MBAR[0xB4A0])) +#define MCF_USB_EP2ISR (*(vuint32*)(&__MBAR[0xB4A4])) +#define MCF_USB_EP2IMR (*(vuint32*)(&__MBAR[0xB4A8])) +#define MCF_USB_EP2FRCFGR (*(vuint32*)(&__MBAR[0xB4AC])) +#define MCF_USB_EP2FDR (*(vuint32*)(&__MBAR[0xB4B0])) +#define MCF_USB_EP2FSR (*(vuint32*)(&__MBAR[0xB4B4])) +#define MCF_USB_EP2FCR (*(vuint32*)(&__MBAR[0xB4B8])) +#define MCF_USB_EP2FAR (*(vuint32*)(&__MBAR[0xB4BC])) +#define MCF_USB_EP2FRP (*(vuint32*)(&__MBAR[0xB4C0])) +#define MCF_USB_EP2FWP (*(vuint32*)(&__MBAR[0xB4C4])) +#define MCF_USB_EP2LRFP (*(vuint32*)(&__MBAR[0xB4C8])) +#define MCF_USB_EP2LWFP (*(vuint32*)(&__MBAR[0xB4CC])) +#define MCF_USB_EP3STAT (*(vuint32*)(&__MBAR[0xB4D0])) +#define MCF_USB_EP3ISR (*(vuint32*)(&__MBAR[0xB4D4])) +#define MCF_USB_EP3IMR (*(vuint32*)(&__MBAR[0xB4D8])) +#define MCF_USB_EP3FRCFGR (*(vuint32*)(&__MBAR[0xB4DC])) +#define MCF_USB_EP3FDR (*(vuint32*)(&__MBAR[0xB4E0])) +#define MCF_USB_EP3FSR (*(vuint32*)(&__MBAR[0xB4E4])) +#define MCF_USB_EP3FCR (*(vuint32*)(&__MBAR[0xB4E8])) +#define MCF_USB_EP3FAR (*(vuint32*)(&__MBAR[0xB4EC])) +#define MCF_USB_EP3FRP (*(vuint32*)(&__MBAR[0xB4F0])) +#define MCF_USB_EP3FWP (*(vuint32*)(&__MBAR[0xB4F4])) +#define MCF_USB_EP3LRFP (*(vuint32*)(&__MBAR[0xB4F8])) +#define MCF_USB_EP3LWFP (*(vuint32*)(&__MBAR[0xB4FC])) +#define MCF_USB_EP4STAT (*(vuint32*)(&__MBAR[0xB500])) +#define MCF_USB_EP4ISR (*(vuint32*)(&__MBAR[0xB504])) +#define MCF_USB_EP4IMR (*(vuint32*)(&__MBAR[0xB508])) +#define MCF_USB_EP4FRCFGR (*(vuint32*)(&__MBAR[0xB50C])) +#define MCF_USB_EP4FDR (*(vuint32*)(&__MBAR[0xB510])) +#define MCF_USB_EP4FSR (*(vuint32*)(&__MBAR[0xB514])) +#define MCF_USB_EP4FCR (*(vuint32*)(&__MBAR[0xB518])) +#define MCF_USB_EP4FAR (*(vuint32*)(&__MBAR[0xB51C])) +#define MCF_USB_EP4FRP (*(vuint32*)(&__MBAR[0xB520])) +#define MCF_USB_EP4FWP (*(vuint32*)(&__MBAR[0xB524])) +#define MCF_USB_EP4LRFP (*(vuint32*)(&__MBAR[0xB528])) +#define MCF_USB_EP4LWFP (*(vuint32*)(&__MBAR[0xB52C])) +#define MCF_USB_EP5STAT (*(vuint32*)(&__MBAR[0xB530])) +#define MCF_USB_EP5ISR (*(vuint32*)(&__MBAR[0xB534])) +#define MCF_USB_EP5IMR (*(vuint32*)(&__MBAR[0xB538])) +#define MCF_USB_EP5FRCFGR (*(vuint32*)(&__MBAR[0xB53C])) +#define MCF_USB_EP5FDR (*(vuint32*)(&__MBAR[0xB540])) +#define MCF_USB_EP5FSR (*(vuint32*)(&__MBAR[0xB544])) +#define MCF_USB_EP5FCR (*(vuint32*)(&__MBAR[0xB548])) +#define MCF_USB_EP5FAR (*(vuint32*)(&__MBAR[0xB54C])) +#define MCF_USB_EP5FRP (*(vuint32*)(&__MBAR[0xB550])) +#define MCF_USB_EP5FWP (*(vuint32*)(&__MBAR[0xB554])) +#define MCF_USB_EP5LRFP (*(vuint32*)(&__MBAR[0xB558])) +#define MCF_USB_EP5LWFP (*(vuint32*)(&__MBAR[0xB55C])) +#define MCF_USB_EP6STAT (*(vuint32*)(&__MBAR[0xB560])) +#define MCF_USB_EP6ISR (*(vuint32*)(&__MBAR[0xB564])) +#define MCF_USB_EP6IMR (*(vuint32*)(&__MBAR[0xB568])) +#define MCF_USB_EP6FRCFGR (*(vuint32*)(&__MBAR[0xB56C])) +#define MCF_USB_EP6FDR (*(vuint32*)(&__MBAR[0xB570])) +#define MCF_USB_EP6FSR (*(vuint32*)(&__MBAR[0xB574])) +#define MCF_USB_EP6FCR (*(vuint32*)(&__MBAR[0xB578])) +#define MCF_USB_EP6FAR (*(vuint32*)(&__MBAR[0xB57C])) +#define MCF_USB_EP6FRP (*(vuint32*)(&__MBAR[0xB580])) +#define MCF_USB_EP6FWP (*(vuint32*)(&__MBAR[0xB584])) +#define MCF_USB_EP6LRFP (*(vuint32*)(&__MBAR[0xB588])) +#define MCF_USB_EP6LWFP (*(vuint32*)(&__MBAR[0xB58C])) +#define MCF_USB_IFR(x) (*(vuint16*)(&__MBAR[0xB040 + ((x)*0x2)])) +#define MCF_USB_EPOUTACR(x) (*(vuint8 *)(&__MBAR[0xB131 + ((x-1)*0x30)])) +#define MCF_USB_EPOUTMPSR(x) (*(vuint16*)(&__MBAR[0xB132 + ((x-1)*0x30)])) +#define MCF_USB_EPOUTIFR(x) (*(vuint8 *)(&__MBAR[0xB134 + ((x-1)*0x30)])) +#define MCF_USB_EPOUTSR(x) (*(vuint8 *)(&__MBAR[0xB135 + ((x-1)*0x30)])) +#define MCF_USB_EPOUTSFR(x) (*(vuint16*)(&__MBAR[0xB13E + ((x-1)*0x30)])) +#define MCF_USB_EPINACR(x) (*(vuint8 *)(&__MBAR[0xB149 + ((x-1)*0x30)])) +#define MCF_USB_EPINMPSR(x) (*(vuint16*)(&__MBAR[0xB14A + ((x-1)*0x30)])) +#define MCF_USB_EPINIFR(x) (*(vuint8 *)(&__MBAR[0xB14C + ((x-1)*0x30)])) +#define MCF_USB_EPINSR(x) (*(vuint8 *)(&__MBAR[0xB14D + ((x-1)*0x30)])) +#define MCF_USB_EPINSFR(x) (*(vuint16*)(&__MBAR[0xB156 + ((x-1)*0x30)])) +#define MCF_USB_EPSTAT(x) (*(vuint32*)(&__MBAR[0xB440 + ((x)*0x30)])) +#define MCF_USB_EPISR(x) (*(vuint32*)(&__MBAR[0xB444 + ((x)*0x30)])) +#define MCF_USB_EPIMR(x) (*(vuint32*)(&__MBAR[0xB448 + ((x)*0x30)])) +#define MCF_USB_EPFRCFGR(x) (*(vuint32*)(&__MBAR[0xB44C + ((x)*0x30)])) +#define MCF_USB_EPFDR(x) (*(vuint32*)(&__MBAR[0xB450 + ((x)*0x30)])) +#define MCF_USB_EPFSR(x) (*(vuint32*)(&__MBAR[0xB454 + ((x)*0x30)])) +#define MCF_USB_EPFCR(x) (*(vuint32*)(&__MBAR[0xB458 + ((x)*0x30)])) +#define MCF_USB_EPFAR(x) (*(vuint32*)(&__MBAR[0xB45C + ((x)*0x30)])) +#define MCF_USB_EPFRP(x) (*(vuint32*)(&__MBAR[0xB460 + ((x)*0x30)])) +#define MCF_USB_EPFWP(x) (*(vuint32*)(&__MBAR[0xB464 + ((x)*0x30)])) +#define MCF_USB_EPLRFP(x) (*(vuint32*)(&__MBAR[0xB468 + ((x)*0x30)])) +#define MCF_USB_EPLWFP(x) (*(vuint32*)(&__MBAR[0xB46C + ((x)*0x30)])) + + +/* Bit definitions and macros for MCF_USB_USBAISR */ +#define MCF_USB_USBAISR_SETUP (0x1) +#define MCF_USB_USBAISR_IN (0x2) +#define MCF_USB_USBAISR_OUT (0x4) +#define MCF_USB_USBAISR_EPHALT (0x8) +#define MCF_USB_USBAISR_TRANSERR (0x10) +#define MCF_USB_USBAISR_ACK (0x20) +#define MCF_USB_USBAISR_CTROVFL (0x40) +#define MCF_USB_USBAISR_EPSTALL (0x80) + +/* Bit definitions and macros for MCF_USB_USBAIMR */ +#define MCF_USB_USBAIMR_SETUPEN (0x1) +#define MCF_USB_USBAIMR_INEN (0x2) +#define MCF_USB_USBAIMR_OUTEN (0x4) +#define MCF_USB_USBAIMR_EPHALTEN (0x8) +#define MCF_USB_USBAIMR_TRANSERREN (0x10) +#define MCF_USB_USBAIMR_ACKEN (0x20) +#define MCF_USB_USBAIMR_CTROVFLEN (0x40) +#define MCF_USB_USBAIMR_EPSTALLEN (0x80) + +/* Bit definitions and macros for MCF_USB_EPINFO */ +#define MCF_USB_EPINFO_EPDIR (0x1) +#define MCF_USB_EPINFO_EPNUM(x) (((x)&0x7)<<0x1) + +/* Bit definitions and macros for MCF_USB_CFGR */ +#define MCF_USB_CFGR_Configuration_Value(x) (((x)&0xFF)<<0) + +/* Bit definitions and macros for MCF_USB_CFGAR */ +#define MCF_USB_CFGAR_RESERVED (0xA0) +#define MCF_USB_CFGAR_RMTWKEUP (0xE0) + +/* Bit definitions and macros for MCF_USB_SPEEDR */ +#define MCF_USB_SPEEDR_SPEED(x) (((x)&0x3)<<0) + +/* Bit definitions and macros for MCF_USB_FRMNUMR */ +#define MCF_USB_FRMNUMR_FRMNUM(x) (((x)&0xFFF)<<0) + +/* Bit definitions and macros for MCF_USB_EPTNR */ +#define MCF_USB_EPTNR_EP1T(x) (((x)&0x3)<<0) +#define MCF_USB_EPTNR_EP2T(x) (((x)&0x3)<<0x2) +#define MCF_USB_EPTNR_EP3T(x) (((x)&0x3)<<0x4) +#define MCF_USB_EPTNR_EP4T(x) (((x)&0x3)<<0x6) +#define MCF_USB_EPTNR_EP5T(x) (((x)&0x3)<<0x8) +#define MCF_USB_EPTNR_EP6T(x) (((x)&0x3)<<0xA) +#define MCF_USB_EPTNR_EPnT1 (0) +#define MCF_USB_EPTNR_EPnT2 (0x1) +#define MCF_USB_EPTNR_EPnT3 (0x2) + +/* Bit definitions and macros for MCF_USB_IFUR */ +#define MCF_USB_IFUR_ALTSET(x) (((x)&0xFF)<<0) +#define MCF_USB_IFUR_IFNUM(x) (((x)&0xFF)<<0x8) + +/* Bit definitions and macros for MCF_USB_IFR */ +#define MCF_USB_IFR_ALTSET(x) (((x)&0xFF)<<0) +#define MCF_USB_IFR_IFNUM(x) (((x)&0xFF)<<0x8) + +/* Bit definitions and macros for MCF_USB_PPCNT */ +#define MCF_USB_PPCNT_PPCNT(x) (((x)&0xFFFF)<<0) + +/* Bit definitions and macros for MCF_USB_DPCNT */ +#define MCF_USB_DPCNT_DPCNT(x) (((x)&0xFFFF)<<0) + +/* Bit definitions and macros for MCF_USB_CRCECNT */ +#define MCF_USB_CRCECNT_CRCECNT(x) (((x)&0xFFFF)<<0) + +/* Bit definitions and macros for MCF_USB_BSECNT */ +#define MCF_USB_BSECNT_BSECNT(x) (((x)&0xFFFF)<<0) + +/* Bit definitions and macros for MCF_USB_PIDECNT */ +#define MCF_USB_PIDECNT_PIDECNT(x) (((x)&0xFFFF)<<0) + +/* Bit definitions and macros for MCF_USB_FRMECNT */ +#define MCF_USB_FRMECNT_FRMECNT(x) (((x)&0xFFFF)<<0) + +/* Bit definitions and macros for MCF_USB_TXPCNT */ +#define MCF_USB_TXPCNT_TXPCNT(x) (((x)&0xFFFF)<<0) + +/* Bit definitions and macros for MCF_USB_CNTOVR */ +#define MCF_USB_CNTOVR_PPCNT (0x1) +#define MCF_USB_CNTOVR_DPCNT (0x2) +#define MCF_USB_CNTOVR_CRCECNT (0x4) +#define MCF_USB_CNTOVR_BSECNT (0x8) +#define MCF_USB_CNTOVR_PIDECNT (0x10) +#define MCF_USB_CNTOVR_FRMECNT (0x20) +#define MCF_USB_CNTOVR_TXPCNT (0x40) + +/* Bit definitions and macros for MCF_USB_EP0ACR */ +#define MCF_USB_EP0ACR_TTYPE(x) (((x)&0x3)<<0) +#define MCF_USB_EP0ACR_TTYPE_CTRL (0) +#define MCF_USB_EP0ACR_TTYPE_ISOC (0x1) +#define MCF_USB_EP0ACR_TTYPE_BULK (0x2) +#define MCF_USB_EP0ACR_TTYPE_INT (0x3) + +/* Bit definitions and macros for MCF_USB_EP0MPSR */ +#define MCF_USB_EP0MPSR_MAXPKTSZ(x) (((x)&0x7FF)<<0) +#define MCF_USB_EP0MPSR_ADDTRANS(x) (((x)&0x3)<<0xB) + +/* Bit definitions and macros for MCF_USB_EP0IFR */ +#define MCF_USB_EP0IFR_IFNUM(x) (((x)&0xFF)<<0) + +/* Bit definitions and macros for MCF_USB_EP0SR */ +#define MCF_USB_EP0SR_HALT (0x1) +#define MCF_USB_EP0SR_ACTIVE (0x2) +#define MCF_USB_EP0SR_PSTALL (0x4) +#define MCF_USB_EP0SR_CCOMP (0x8) +#define MCF_USB_EP0SR_TXZERO (0x20) +#define MCF_USB_EP0SR_INT (0x80) + +/* Bit definitions and macros for MCF_USB_BMRTR */ +#define MCF_USB_BMRTR_REC(x) (((x)&0x1F)<<0) +#define MCF_USB_BMRTR_REC_DEVICE (0) +#define MCF_USB_BMRTR_REC_INTERFACE (0x1) +#define MCF_USB_BMRTR_REC_ENDPOINT (0x2) +#define MCF_USB_BMRTR_REC_OTHER (0x3) +#define MCF_USB_BMRTR_TYPE(x) (((x)&0x3)<<0x5) +#define MCF_USB_BMRTR_TYPE_STANDARD (0) +#define MCF_USB_BMRTR_TYPE_CLASS (0x20) +#define MCF_USB_BMRTR_TYPE_VENDOR (0x40) +#define MCF_USB_BMRTR_DIR (0x80) + +/* Bit definitions and macros for MCF_USB_BRTR */ +#define MCF_USB_BRTR_BREQ(x) (((x)&0xFF)<<0) + +/* Bit definitions and macros for MCF_USB_WVALUER */ +#define MCF_USB_WVALUER_WVALUE(x) (((x)&0xFFFF)<<0) + +/* Bit definitions and macros for MCF_USB_WINDEXR */ +#define MCF_USB_WINDEXR_WINDEX(x) (((x)&0xFFFF)<<0) + +/* Bit definitions and macros for MCF_USB_WLENGTHR */ +#define MCF_USB_WLENGTHR_WLENGTH(x) (((x)&0xFFFF)<<0) + +/* Bit definitions and macros for MCF_USB_EPOUTACR */ +#define MCF_USB_EPOUTACR_TTYPE(x) (((x)&0x3)<<0) +#define MCF_USB_EPOUTACR_TTYPE_ISOC (0x1) +#define MCF_USB_EPOUTACR_TTYPE_BULK (0x2) +#define MCF_USB_EPOUTACR_TTYPE_INT (0x3) + +/* Bit definitions and macros for MCF_USB_EPOUTMPSR */ +#define MCF_USB_EPOUTMPSR_MAXPKTSZ(x) (((x)&0x7FF)<<0) +#define MCF_USB_EPOUTMPSR_ADDTRANS(x) (((x)&0x3)<<0xB) + +/* Bit definitions and macros for MCF_USB_EPOUTIFR */ +#define MCF_USB_EPOUTIFR_IFNUM(x) (((x)&0xFF)<<0) + +/* Bit definitions and macros for MCF_USB_EPOUTSR */ +#define MCF_USB_EPOUTSR_HALT (0x1) +#define MCF_USB_EPOUTSR_ACTIVE (0x2) +#define MCF_USB_EPOUTSR_PSTALL (0x4) +#define MCF_USB_EPOUTSR_CCOMP (0x8) +#define MCF_USB_EPOUTSR_TXZERO (0x20) +#define MCF_USB_EPOUTSR_INT (0x80) + +/* Bit definitions and macros for MCF_USB_EPOUTSFR */ +#define MCF_USB_EPOUTSFR_FRMNUM(x) (((x)&0x7FF)<<0) + +/* Bit definitions and macros for MCF_USB_EPINACR */ +#define MCF_USB_EPINACR_TTYPE(x) (((x)&0x3)<<0) +#define MCF_USB_EPINACR_TTYPE_ISOC (0x1) +#define MCF_USB_EPINACR_TTYPE_BULK (0x2) +#define MCF_USB_EPINACR_TTYPE_INT (0x3) + +/* Bit definitions and macros for MCF_USB_EPINMPSR */ +#define MCF_USB_EPINMPSR_MAXPKTSZ(x) (((x)&0x7FF)<<0) +#define MCF_USB_EPINMPSR_ADDTRANS(x) (((x)&0x3)<<0xB) + +/* Bit definitions and macros for MCF_USB_EPINIFR */ +#define MCF_USB_EPINIFR_IFNUM(x) (((x)&0xFF)<<0) + +/* Bit definitions and macros for MCF_USB_EPINSR */ +#define MCF_USB_EPINSR_HALT (0x1) +#define MCF_USB_EPINSR_ACTIVE (0x2) +#define MCF_USB_EPINSR_PSTALL (0x4) +#define MCF_USB_EPINSR_CCOMP (0x8) +#define MCF_USB_EPINSR_TXZERO (0x20) +#define MCF_USB_EPINSR_INT (0x80) + +/* Bit definitions and macros for MCF_USB_EPINSFR */ +#define MCF_USB_EPINSFR_FRMNUM(x) (((x)&0x7FF)<<0) + +/* Bit definitions and macros for MCF_USB_USBSR */ +#define MCF_USB_USBSR_ISOERREP(x) (((x)&0xF)<<0) +#define MCF_USB_USBSR_SUSP (0x80) + +/* Bit definitions and macros for MCF_USB_USBCR */ +#define MCF_USB_USBCR_RESUME (0x1) +#define MCF_USB_USBCR_APPLOCK (0x2) +#define MCF_USB_USBCR_RST (0x4) +#define MCF_USB_USBCR_RAMEN (0x8) +#define MCF_USB_USBCR_RAMSPLIT (0x20) + +/* Bit definitions and macros for MCF_USB_DRAMCR */ +#define MCF_USB_DRAMCR_DADR(x) (((x)&0x3FF)<<0) +#define MCF_USB_DRAMCR_DSIZE(x) (((x)&0x7FF)<<0x10) +#define MCF_USB_DRAMCR_BSY (0x40000000) +#define MCF_USB_DRAMCR_START (0x80000000) + +/* Bit definitions and macros for MCF_USB_DRAMDR */ +#define MCF_USB_DRAMDR_DDAT(x) (((x)&0xFF)<<0) + +/* Bit definitions and macros for MCF_USB_USBISR */ +#define MCF_USB_USBISR_ISOERR (0x1) +#define MCF_USB_USBISR_FTUNLCK (0x2) +#define MCF_USB_USBISR_SUSP (0x4) +#define MCF_USB_USBISR_RES (0x8) +#define MCF_USB_USBISR_UPDSOF (0x10) +#define MCF_USB_USBISR_RSTSTOP (0x20) +#define MCF_USB_USBISR_SOF (0x40) +#define MCF_USB_USBISR_MSOF (0x80) + +/* Bit definitions and macros for MCF_USB_USBIMR */ +#define MCF_USB_USBIMR_ISOERR (0x1) +#define MCF_USB_USBIMR_FTUNLCK (0x2) +#define MCF_USB_USBIMR_SUSP (0x4) +#define MCF_USB_USBIMR_RES (0x8) +#define MCF_USB_USBIMR_UPDSOF (0x10) +#define MCF_USB_USBIMR_RSTSTOP (0x20) +#define MCF_USB_USBIMR_SOF (0x40) +#define MCF_USB_USBIMR_MSOF (0x80) + +/* Bit definitions and macros for MCF_USB_EPSTAT */ +#define MCF_USB_EPSTAT_RST (0x1) +#define MCF_USB_EPSTAT_FLUSH (0x2) +#define MCF_USB_EPSTAT_DIR (0x80) +#define MCF_USB_EPSTAT_BYTECNT(x) (((x)&0xFFF)<<0x10) + +/* Bit definitions and macros for MCF_USB_EPISR */ +#define MCF_USB_EPISR_EOF (0x1) +#define MCF_USB_EPISR_EOT (0x4) +#define MCF_USB_EPISR_FIFOLO (0x10) +#define MCF_USB_EPISR_FIFOHI (0x20) +#define MCF_USB_EPISR_ERR (0x40) +#define MCF_USB_EPISR_EMT (0x80) +#define MCF_USB_EPISR_FU (0x100) + +/* Bit definitions and macros for MCF_USB_EPIMR */ +#define MCF_USB_EPIMR_EOF (0x1) +#define MCF_USB_EPIMR_EOT (0x4) +#define MCF_USB_EPIMR_FIFOLO (0x10) +#define MCF_USB_EPIMR_FIFOHI (0x20) +#define MCF_USB_EPIMR_ERR (0x40) +#define MCF_USB_EPIMR_EMT (0x80) +#define MCF_USB_EPIMR_FU (0x100) + +/* Bit definitions and macros for MCF_USB_EPFRCFGR */ +#define MCF_USB_EPFRCFGR_DEPTH(x) (((x)&0x1FFF)<<0) +#define MCF_USB_EPFRCFGR_BASE(x) (((x)&0xFFF)<<0x10) + +/* Bit definitions and macros for MCF_USB_EPFDR */ +#define MCF_USB_EPFDR_RX_TXDATA(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_USB_EPFSR */ +#define MCF_USB_EPFSR_EMT (0x10000) +#define MCF_USB_EPFSR_ALRM (0x20000) +#define MCF_USB_EPFSR_FU (0x40000) +#define MCF_USB_EPFSR_FR (0x80000) +#define MCF_USB_EPFSR_OF (0x100000) +#define MCF_USB_EPFSR_UF (0x200000) +#define MCF_USB_EPFSR_RXW (0x400000) +#define MCF_USB_EPFSR_FAE (0x800000) +#define MCF_USB_EPFSR_FRM(x) (((x)&0xF)<<0x18) +#define MCF_USB_EPFSR_TXW (0x40000000) +#define MCF_USB_EPFSR_IP (0x80000000) + +/* Bit definitions and macros for MCF_USB_EPFCR */ +#define MCF_USB_EPFCR_COUNTER(x) (((x)&0xFFFF)<<0) +#define MCF_USB_EPFCR_TXWMSK (0x40000) +#define MCF_USB_EPFCR_OFMSK (0x80000) +#define MCF_USB_EPFCR_UFMSK (0x100000) +#define MCF_USB_EPFCR_RXWMSK (0x200000) +#define MCF_USB_EPFCR_FAEMSK (0x400000) +#define MCF_USB_EPFCR_IPMSK (0x800000) +#define MCF_USB_EPFCR_GR(x) (((x)&0x7)<<0x18) +#define MCF_USB_EPFCR_FRM (0x8000000) +#define MCF_USB_EPFCR_TMR (0x10000000) +#define MCF_USB_EPFCR_WFR (0x20000000) +#define MCF_USB_EPFCR_SHAD (0x80000000) + +/* Bit definitions and macros for MCF_USB_EPFAR */ +#define MCF_USB_EPFAR_ALRMP(x) (((x)&0xFFF)<<0) + +/* Bit definitions and macros for MCF_USB_EPFRP */ +#define MCF_USB_EPFRP_RP(x) (((x)&0xFFF)<<0) + +/* Bit definitions and macros for MCF_USB_EPFWP */ +#define MCF_USB_EPFWP_WP(x) (((x)&0xFFF)<<0) + +/* Bit definitions and macros for MCF_USB_EPLRFP */ +#define MCF_USB_EPLRFP_LRFP(x) (((x)&0xFFF)<<0) + +/* Bit definitions and macros for MCF_USB_EPLWFP */ +#define MCF_USB_EPLWFP_LWFP(x) (((x)&0xFFF)<<0) + + +#endif /* __MCF5475_USB_H__ */ diff --git a/BaS_codewarrior/firebeeV1/headers/MCF5475_XLB.h b/BaS_codewarrior/firebeeV1/headers/MCF5475_XLB.h new file mode 100644 index 0000000..f13a20c --- /dev/null +++ b/BaS_codewarrior/firebeeV1/headers/MCF5475_XLB.h @@ -0,0 +1,101 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_XLB_H__ +#define __MCF5475_XLB_H__ + + +/********************************************************************* +* +* XL Bus Arbiter (XLB) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_XLB_XARB_CFG (*(vuint32*)(&__MBAR[0x240])) +#define MCF_XLB_XARB_VER (*(vuint32*)(&__MBAR[0x244])) +#define MCF_XLB_XARB_SR (*(vuint32*)(&__MBAR[0x248])) +#define MCF_XLB_XARB_IMR (*(vuint32*)(&__MBAR[0x24C])) +#define MCF_XLB_XARB_ADRCAP (*(vuint32*)(&__MBAR[0x250])) +#define MCF_XLB_XARB_SIGCAP (*(vuint32*)(&__MBAR[0x254])) +#define MCF_XLB_XARB_ADRTO (*(vuint32*)(&__MBAR[0x258])) +#define MCF_XLB_XARB_DATTO (*(vuint32*)(&__MBAR[0x25C])) +#define MCF_XLB_XARB_BUSTO (*(vuint32*)(&__MBAR[0x260])) +#define MCF_XLB_XARB_PRIEN (*(vuint32*)(&__MBAR[0x264])) +#define MCF_XLB_XARB_PRI (*(vuint32*)(&__MBAR[0x268])) + + +/* Bit definitions and macros for MCF_XLB_XARB_CFG */ +#define MCF_XLB_XARB_CFG_AT (0x2) +#define MCF_XLB_XARB_CFG_DT (0x4) +#define MCF_XLB_XARB_CFG_BA (0x8) +#define MCF_XLB_XARB_CFG_PM(x) (((x)&0x3)<<0x5) +#define MCF_XLB_XARB_CFG_SP(x) (((x)&0x7)<<0x8) +#define MCF_XLB_XARB_CFG_PLDIS (0x80000000) + +/* Bit definitions and macros for MCF_XLB_XARB_VER */ +#define MCF_XLB_XARB_VER_VER(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_XLB_XARB_SR */ +#define MCF_XLB_XARB_SR_AT (0x1) +#define MCF_XLB_XARB_SR_DT (0x2) +#define MCF_XLB_XARB_SR_BA (0x4) +#define MCF_XLB_XARB_SR_TTM (0x8) +#define MCF_XLB_XARB_SR_ECW (0x10) +#define MCF_XLB_XARB_SR_TTR (0x20) +#define MCF_XLB_XARB_SR_TTA (0x40) +#define MCF_XLB_XARB_SR_MM (0x80) +#define MCF_XLB_XARB_SR_SEA (0x100) + +/* Bit definitions and macros for MCF_XLB_XARB_IMR */ +#define MCF_XLB_XARB_IMR_ATE (0x1) +#define MCF_XLB_XARB_IMR_DTE (0x2) +#define MCF_XLB_XARB_IMR_BAE (0x4) +#define MCF_XLB_XARB_IMR_TTME (0x8) +#define MCF_XLB_XARB_IMR_ECWE (0x10) +#define MCF_XLB_XARB_IMR_TTRE (0x20) +#define MCF_XLB_XARB_IMR_TTAE (0x40) +#define MCF_XLB_XARB_IMR_MME (0x80) +#define MCF_XLB_XARB_IMR_SEAE (0x100) + +/* Bit definitions and macros for MCF_XLB_XARB_ADRCAP */ +#define MCF_XLB_XARB_ADRCAP_ADRCAP(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_XLB_XARB_SIGCAP */ +#define MCF_XLB_XARB_SIGCAP_TT(x) (((x)&0x1F)<<0) +#define MCF_XLB_XARB_SIGCAP_TBST (0x20) +#define MCF_XLB_XARB_SIGCAP_TSIZ(x) (((x)&0x7)<<0x7) + +/* Bit definitions and macros for MCF_XLB_XARB_ADRTO */ +#define MCF_XLB_XARB_ADRTO_ADRTO(x) (((x)&0xFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_XLB_XARB_DATTO */ +#define MCF_XLB_XARB_DATTO_DATTO(x) (((x)&0xFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_XLB_XARB_BUSTO */ +#define MCF_XLB_XARB_BUSTO_BUSTO(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_XLB_XARB_PRIEN */ +#define MCF_XLB_XARB_PRIEN_M0 (0x1) +#define MCF_XLB_XARB_PRIEN_M2 (0x4) +#define MCF_XLB_XARB_PRIEN_M3 (0x8) + +/* Bit definitions and macros for MCF_XLB_XARB_PRI */ +#define MCF_XLB_XARB_PRI_M0P(x) (((x)&0x7)<<0) +#define MCF_XLB_XARB_PRI_M2P(x) (((x)&0x7)<<0x8) +#define MCF_XLB_XARB_PRI_M3P(x) (((x)&0x7)<<0xC) + + +#endif /* __MCF5475_XLB_H__ */ diff --git a/BaS_codewarrior/firebeeV1/lcf/DDRAM.lcf b/BaS_codewarrior/firebeeV1/lcf/DDRAM.lcf new file mode 100644 index 0000000..795732d --- /dev/null +++ b/BaS_codewarrior/firebeeV1/lcf/DDRAM.lcf @@ -0,0 +1,88 @@ +# Sample Linker Command File for CodeWarrior for ColdFire + +KEEP_SECTION {.vectortable} + +# Memory ranges + +MEMORY { + code (RWX) : ORIGIN = 0x00000000, LENGTH = 0x0 +} + +SECTIONS { + +#BaS Basis adresse + ___Bas_base = 0x1FE00000; + +# Board Memory map definitions from linker command files: +# __SDRAM,__SDRAM_SIZE, __CODE_FLASH, __CODE_FLASH_SIZE +# linker symbols must be defined in the linker command file. + +#Init CS0 (BootFLASH @ E000_0000 - E07F_FFFF 8Mbytes) + ___BOOT_FLASH = 0xE0000000; + ___BOOT_FLASH_SIZE = 0x00800000; +#SDRAM Initialization @ 0000_0000 - 1FFF_FFFF 512Mbytes + ___SDRAM = 0x00000000; + ___SDRAM_SIZE = 0x20000000; + +#VIDEO RAM BASIS + ___VRAM = 0x60000000; + +# MCF5475 Derivative Memory map definitions from linker command files: +# __MBAR, __MMUBAR, __RAMBAR0, __RAMBAR0_SIZE, __RAMBAR1, __RAMBAR1_SIZE +# linker symbols must be defined in the linker command file. + +# Memory mapped registers + ___MBAR = 0xFF000000; + ___MMUBAR = 0xFF040000; +# 4KB on-chip Core SRAM0: -> exception table and exception stack + ___RAMBAR0 = 0xFF100000; + ___RAMBAR0_SIZE = 0x00001000; + + ___SUP_SP = ___RAMBAR0 + ___RAMBAR0_SIZE - 4; + +# 4KB on-chip Core SRAM1: -> modified code + ___RAMBAR1 = 0xFF101000; + ___RAMBAR1_SIZE = 0x00001000; + +# Systemveriablem:****************************************** +# RAMBAR0 0 bis 0x7FF -> exception vectoren +_rt_mod = ___RAMBAR0 + 0x800; +_rt_ssp = ___RAMBAR0 + 0x804; +_rt_usp = ___RAMBAR0 + 0x808; +_rt_vbr = ___RAMBAR0 + 0x80C; # (8)01 +_rt_cacr = ___RAMBAR0 + 0x810; # 002 +_rt_asid = ___RAMBAR0 + 0x814; # 003 +_rt_acr0 = ___RAMBAR0 + 0x818; # 004 +_rt_acr1 = ___RAMBAR0 + 0x81c; # 005 +_rt_acr2 = ___RAMBAR0 + 0x820; # 006 +_rt_acr3 = ___RAMBAR0 + 0x824; # 007 +_rt_mmubar = ___RAMBAR0 + 0x828; # 008 +_rt_sr = ___RAMBAR0 + 0x82c; +_d0_save = ___RAMBAR0 + 0x830; +_a7_save = ___RAMBAR0 + 0x834; +_video_tlb = ___RAMBAR0 + 0x838; +_video_sbt = ___RAMBAR0 + 0x83C; +_rt_mbar = ___RAMBAR0 + 0x844; # (c)0f +#*********************************************************** + +# 32KB on-chip System SRAM + ___SYS_SRAM = 0xFF010000; + ___SYS_SRAM_SIZE = 0x00008000; + + + .text : + { + startcf.c(.text) + sysinit.c(.text) + BaS.c(.text) + sd_card.c(.text) + mmu.s(.text) + exceptions.s(.text) + supervisor.s(.text) + ewf.s(.text) + illegal_instruction.s(.text) + last.c(.text) + . = ALIGN (0x4); + } > code + +} \ No newline at end of file diff --git a/BaS_codewarrior/firebeeV1/lcf/FLASH.lcf b/BaS_codewarrior/firebeeV1/lcf/FLASH.lcf new file mode 100644 index 0000000..0315e2f --- /dev/null +++ b/BaS_codewarrior/firebeeV1/lcf/FLASH.lcf @@ -0,0 +1,88 @@ +# Sample Linker Command File for CodeWarrior for ColdFire + +KEEP_SECTION {.vectortable} + +# Memory ranges + +MEMORY { + code (RX) : ORIGIN = 0xE0000000, LENGTH = 0x00200000 +} + +SECTIONS { + +#BaS Basis adresse + ___Bas_base = 0x1FE00000; + +# Board Memory map definitions from linker command files: +# __SDRAM,__SDRAM_SIZE, __CODE_FLASH, __CODE_FLASH_SIZE +# linker symbols must be defined in the linker command file. + +#Init CS0 (BootFLASH @ E000_0000 - E07F_FFFF 8Mbytes) + ___BOOT_FLASH = 0xE0000000; + ___BOOT_FLASH_SIZE = 0x00800000; +#SDRAM Initialization @ 0000_0000 - 1FFF_FFFF 512Mbytes + ___SDRAM = 0x00000000; + ___SDRAM_SIZE = 0x20000000; + +#VIDEO RAM BASIS + ___VRAM = 0x60000000; + +# MCF5475 Derivative Memory map definitions from linker command files: +# __MBAR, __MMUBAR, __RAMBAR0, __RAMBAR0_SIZE, __RAMBAR1, __RAMBAR1_SIZE +# linker symbols must be defined in the linker command file. + +# Memory mapped registers + ___MBAR = 0xFF000000; + ___MMUBAR = 0xFF040000; +# 4KB on-chip Core SRAM0: -> exception table and exception stack + ___RAMBAR0 = 0xFF100000; + ___RAMBAR0_SIZE = 0x00001000; + + ___SUP_SP = ___RAMBAR0 + ___RAMBAR0_SIZE - 4; + +# 4KB on-chip Core SRAM1: -> modified code + ___RAMBAR1 = 0xFF101000; + ___RAMBAR1_SIZE = 0x00001000; + +# Systemveriablem:****************************************** +# RAMBAR0 0 bis 0x7FF -> exception vectoren +_rt_mod = ___RAMBAR0 + 0x800; +_rt_ssp = ___RAMBAR0 + 0x804; +_rt_usp = ___RAMBAR0 + 0x808; +_rt_vbr = ___RAMBAR0 + 0x80C; # (8)01 +_rt_cacr = ___RAMBAR0 + 0x810; # 002 +_rt_asid = ___RAMBAR0 + 0x814; # 003 +_rt_acr0 = ___RAMBAR0 + 0x818; # 004 +_rt_acr1 = ___RAMBAR0 + 0x81c; # 005 +_rt_acr2 = ___RAMBAR0 + 0x820; # 006 +_rt_acr3 = ___RAMBAR0 + 0x824; # 007 +_rt_mmubar = ___RAMBAR0 + 0x828; # 008 +_rt_sr = ___RAMBAR0 + 0x82c; +_d0_save = ___RAMBAR0 + 0x830; +_a7_save = ___RAMBAR0 + 0x834; +_video_tlb = ___RAMBAR0 + 0x838; +_video_sbt = ___RAMBAR0 + 0x83C; +_rt_mbar = ___RAMBAR0 + 0x844; # (c)0f +#*********************************************************** + +# 32KB on-chip System SRAM + ___SYS_SRAM = 0xFF010000; + ___SYS_SRAM_SIZE = 0x00008000; + + .code : {} > code + + .text : + { + startcf.c(.text) + sysinit.c(.text) + BaS.c(.text) + sd_card.c(.text) + mmu.s(.text) + exceptions.s(.text) + supervisor.s(.text) + ewf.s(.text) + illegal_instruction.s(.text) + last.c(.text) + } >> code + +} \ No newline at end of file diff --git a/BaS_codewarrior/firebeeV1/sources/BaS.c b/BaS_codewarrior/firebeeV1/sources/BaS.c new file mode 100644 index 0000000..2b2699d --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/BaS.c @@ -0,0 +1,287 @@ +/* + * BaS + * + */ + + +#include "MCF5475.h" +#include "startcf.h" + +extern unsigned long far __SP_AFTER_RESET[]; +extern unsigned long far __Bas_base[]; + + /* imported routines */ +extern int mmu_init(); +extern int mmutr_miss(); +extern int vec_init(); +extern int illegal_table_make(); +extern int cf68k_initialize(); + +/********************************************************************/ + /* warte_routinen /* +********************************************************************/ + +void warte_10ms(void) +{ + asm + { +warte_10ms: + move.l d0,-(sp) + move.l MCF_SLT0_SCNT,d0 + sub.l #1320000,d0 + warte_d6: + cmp.l MCF_SLT0_SCNT,d0 + bcs warte_d6 + move.l (sp)+,d0 + } +} + +void warte_1ms(void) +{ + asm + { +warte_1ms: + move.l d0,-(sp) + move.l MCF_SLT0_SCNT,d0 + sub.l #132000,d0 + warte_d6: + cmp.l MCF_SLT0_SCNT,d0 + bcs warte_d6 + move.l (sp)+,d0 + } +} + +void warte_100us(void) +{ + asm + { + warte_100us: + move.l d0,-(sp) + move.l MCF_SLT0_SCNT,d0 + sub.l #13200,d0 + warte_d6: + cmp.l MCF_SLT0_SCNT,d0 + bcs warte_d6 + move.l (sp)+,d0 + } +} + +void warte_50us(void) +{ + asm + { +warte_50us: + move.l d0,-(sp) + move.l MCF_SLT0_SCNT,d0 + sub.l #6600,d0 + warte_d6: + cmp.l MCF_SLT0_SCNT,d0 + bcs warte_d6 + move.l (sp)+,d0 + } +} +void warte_10us(void) +{ + asm + { +warte_10us: + move.l d0,-(sp) + move.l MCF_SLT0_SCNT,d0 + sub.l #1320,d0 + warte_d6: + cmp.l MCF_SLT0_SCNT,d0 + bcs warte_d6 + move.l (sp)+,d0 + } +} + +void warte_1us(void) +{ + asm + { +warte_1us: + move.l d0,-(sp) + move.l MCF_SLT0_SCNT,d0 + sub.l #132,d0 + warte_d6: + cmp.l MCF_SLT0_SCNT,d0 + bcs warte_d6 + move.l (sp)+,d0 + } +} + +/********************************************************************/ +void BaS(void) +{ + int az_sectors; + int sd_status,i; + + az_sectors = sd_card_init(); + + if(az_sectors>0) + { + sd_card_idle(); + } + + asm +{ + move.b DIP_SWITCH,d0 // dip schalter adresse + btst.b #6,d0 + beq firetos_kopieren + lea MCF_PSC0_PSCTB_8BIT,a6 + lea MCF_PSC3_PSCTB_8BIT,a3 + lea MCF_PSC3_PSCRB_8BIT,a4 + lea MCF_PSC3_PSCRFCNT,a5 + move.l #'ACPF',(a3) // SEND SYNC MARKE, MCF BEREIT + bsr warte_10ms + move.l #'PIC ',(a6) + move.b (a4),d0 + move.b d0,(a6) + move.b (a4),d1 + move.b d1,(a6) + move.b (a4),d2 + move.b d2,(a6) + move.l #0x0a0d,(a6) + move.b #0x01,(a3) // RTC DATEN ANFORDERN +// TOS kopieren + lea 0x00e00000,a0 + lea 0xe0600000,a1 // default tos + lea 0xe0700000,a2 // 1MB + move.b DIP_SWITCH,d0 // dip schalter adresse + btst.b #6,d0 + bne cptos_loop +firetos_kopieren: + lea 0x00e00000,a0 + lea 0xe0400000,a1 + lea 0xe0500000,a2 // 1MB +cptos_loop: + move.l (a1)+,(a0)+ + cmp.l a2,a1 + blt cptos_loop +/***************************************************************/ +/* div inits +/***************************************************************/ +div_inits: + move.b DIP_SWITCH,d0 // dip schalter adresse + btst.b #6,d0 + beq video_setup +// rtc daten, mmu set, etc nur wenn switch 6 = off + lea 0xffff8961,a0 + clr.l d1 + moveq #64,d2 + move.b (a4),d0 + cmp.b #0x81,d0 + bne not_rtc +loop_sr: + move.b (a4),d0 + move.b d1,(a0) + move.b d0,2(a0) + addq.l #1,d1 + cmp.b d1,d2 + bne loop_sr + + move.b #63,(a0) + move.b 2(a0),d0 + add #1,d0 + move.b d0,2(a0) +not_rtc: + bsr mmu_init + bsr vec_init + bsr illegal_table_make + +// interrupts + clr.l 0xf0010004 // disable all interrupts + lea MCF_EPORT_EPPAR,a0 + move.w #0xaaa8,(a0) // falling edge all, + +// timer 0 on mit int -> video change ------------------------------------------- + move.l #MCF_GPT_GMS_ICT(1)|MCF_GPT_GMS_IEN|MCF_GPT_GMS_TMS(1),d0 //caputre mit int on rising edge + move.l d0,MCF_GPT0_GMS + moveq.l #0x3f,d0 // max prority interrutp + move.b d0,MCF_INTC_ICR62 // setzen +// ------------------------------------------------- + move.b #0xfe,d0 + move.b d0,0xf0010004 // enable int 1-7 + nop + lea MCF_EPORT_EPIER,a0 + move.b #0xfe,(a0) // int 1-7 on + nop + lea MCF_EPORT_EPFR,a0 + move.b #0xff,(a0) // alle pending interrupts löschen + nop + lea MCF_INTC_IMRL,a0 + move.l #0xFFFFFF00,(a0) // int 1-7 on + lea MCF_INTC_IMRH,a0 + move.l #0xBFFFFFFE,(a0) // psc3 and timer 0 int on + + move.l #MCF_MMU_MMUCR_EN,d0 + move.l d0,MCF_MMU_MMUCR // mmu on + nop + nop +/********************************************************************/ +/* IDE reset +/********************************************************************/ + lea 0xffff8802,a0 + move.b #14,-2(a0) + move.b #0x80,(a0) + bsr warte_1ms + clr.b (a0) +/********************************************************************/ +/* video setup +/********************************************************************/ +video_setup: + lea 0xf0000410,a0 +// 25MHz + move.l #0x032002ba,(a0)+ // horizontal 640x480 + move.l #0x020c020a,(a0)+ // vertikal 640x480 + move.l #0x0190015d,(a0)+ // horizontal 320x240 + move.l #0x020C020A,(a0)+ // vertikal 320x240 */ +/* +// 32MHz + move.l #0x037002ba,(a0)+ // horizontal 640x480 + move.l #0x020d020a,(a0)+ // vertikal 640x480 + move.l #0x02A001e0,(a0)+ // horizontal 320x240 + move.l #0x05a00160,(a0)+ // vertikal 320x240 +*/ + lea -0x20(a0),a0 + move.l #0x01070002,(a0) // fifo on, refresh on, ddrcs und cke on, video dac on, +/********************************************************************/ +/* memory setup +/********************************************************************/ + lea 0x400,a0 + lea 0x800,a1 +mem_clr_loop: + clr.l (a0)+ + clr.l (a0)+ + clr.l (a0)+ + clr.l (a0)+ + cmp.l a0,a1 + bgt mem_clr_loop + + moveq #0x48,d0 + move.b d0,0xffff8007 +// stram + move.l #0xe00000,d0 // ende stram + move.l d0,0x42e + move.l #0x752019f3,d0 // memvalid + move.l d0,0x420 + move.l #0x237698aa,d0 // memval2 + move.l d0,0x43a + move.l #0x5555aaaa,d0 // memval3 + move.l d0,0x51a +// ttram + move.l #__Bas_base,d0 // ende ttram + move.l d0,0x5a4 + move.l #0x1357bd13,d0 // ramvalid + move.l d0,0x5a8 + +// test auf protect mode --------------------- + move.b DIP_SWITCH,d0 + btst #7,d0 + beq no_protect // nein-> + move.w #0x0700,sr +no_protect: + jmp 0xe00030 + +} +} diff --git a/BaS_codewarrior/firebeeV1/sources/div.s b/BaS_codewarrior/firebeeV1/sources/div.s new file mode 100644 index 0000000..f5f151c --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/div.s @@ -0,0 +1,1326 @@ + +/********************************************************************/ +// sd card +/********************************************************************/ +#define dspi_dtar0 0x0c +#define dspi_dsr 0x2c +#define dspi_dtfr 0x34 +#define dspi_drfr 0x38 + +sd_test: + lea 0x40000,a5 // basis addresse + move.l #0x1fffffff,d0 // normal dspi + move.l d0,MCF_PAD_PAR_DSPI + lea MCF_DSPI_DMCR,a0 + move.l #0x802d3c00,(a0) // 8 bit 4MHz + move.l #0x38551120,d0 + move.l d0,dspi_dtar0(a0) // + move.l #0x08200000,d4 // tx vorbesetzen + mov3q.l #-1,dspi_dsr(a0) + + move.b #0xc0,(a0) // 8 bit 4MHz + bsr warte_1ms + move.b #0x80,(a0) // 8 bit 4MHz +// sd idle + moveq.l #100,d6 // 100 versuche +sd_idle: + bsr sd_16clk + move.b #0x40,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #0x95,d4 + bsr sd_com + + bsr sd_get_status + cmp.b #0x01,d5 + beq wait_of_aktiv + subq.l #1,d6 + beq sd_not + bra sd_idle + +// acdm 41 +wait_of_aktiv: + bsr sd_16clk + move.b #0x77,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #0x01,d4 + bsr sd_com + + bsr sd_get_status + cmp.b #0x05,d5 + beq wait_of_aktiv + + +wait_of_aktiv2: + bsr sd_16clk + move.b #0x69,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #0x02,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #0x01,d4 + bsr sd_com + + bsr sd_get_status + tst.b d5 + beq sd_init_ok + cmp.b #0x05,d5 + beq wait_of_aktiv2 + bra wait_of_aktiv + +sd_init_ok: + +// blockgrösse 512byt +sd_bg: + bsr sd_16clk + move.b #0x50,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #02,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #0x01,d4 + bsr sd_com + + bsr sd_get_status + tst.b d5 + bne sd_bg + +// read block +sd_rb: + bsr sd_16clk + move.b #0x51,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #0x08,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #0x01,d4 + bsr sd_com + + bsr sd_get_status + tst.b d5 + bne sd_rb + + move.l a5,a4 // adresse setzen + bsr sd_rcv_block + +// write block +sd_wb: + bsr sd_16clk + move.b #0x58,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #0x08,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #0x01,d4 + bsr sd_com + + bsr sd_get_status + tst.b d5 + bne sd_wb + + bsr sd_send_block + +// read block 2 +sd_rb2: + bsr sd_16clk + move.b #0x51,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #0x08,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #0x01,d4 + bsr sd_com + + bsr sd_get_status + tst.b d5 + bne sd_rb + + bsr sd_rcv_block + clr.l d0 + halt + halt + rts +// status holen ------------------------------- +sd_not: + moveq.l #-1,d0 + halt + halt + rts + +// status holen ------------------------------- +sd_get_status: + move.b #0xff,d4 + bsr sd_com + cmp.b #0xff,d5 + beq sd_get_status + rts +// byt senden und holen --------------------- +sd_com: + move.l d4,dspi_dtfr(a0) +wait_auf_complett: + btst.b #7,dspi_dsr(a0) + beq wait_auf_complett + move.l dspi_drfr(a0),d5 + mov3q.l #-1,dspi_dsr(a0) // clr status register + rts + +// daten holen ---------------------------- +sd_rcv_block: + move.l #512,d3 // 512 byts + 2 ccr byts + move.b #0xff,d4 +sd_rcv_rb_w: + bsr sd_get_status + cmp.b #0xfe,d5 // daten bereit? + bne sd_rcv_rb_w // nein-> +sd_rcv_rd_rb: + bsr sd_com + move.b d5,(a4)+ + subq.l #1,d3 + bne sd_rcv_rd_rb +// crc holen + bsr sd_com // crc 1.byt + move.b d5,d1 + bsr sd_com // crc 2.byt + move.b d5,d2 + rts + +// daten schreiben ----------------------- +sd_send_block: + move.l #512,d3 + move.b #0xfe,d4 // start token + bsr sd_com // senden +sd_send_wr_wb: + move.b #0xc7,d4 // data + bsr sd_com // senden + subq.l #1,d3 + bne sd_send_wr_wb +// send crc + move.b d1,d4 + bsr sd_com // crc 1.byt + move.b d2,d4 + bsr sd_com // crc 2.byt +sd_send_wr_ww: + bsr sd_get_status + and.l #0x1f,d5 + cmp.b #0x05,d5 + bne sd_send_wr_ww +sd_sendwait_wr_f: + bsr sd_com + cmp.b #0xff,d5 + bne sd_sendwait_wr_f + rts +// clock einfügen ------------------------------------- +sd_16clk: + move.b #0xc0,(a0) // 8 bit 4MHz + nop + move.b #0x80,(a0) // 8 bit 4MHz + rts +// cdm 58 +read_ocr: + bsr sd_16clk + move.b #0x7a,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #0x01,d4 + bsr sd_com + move.b #0xaa,d4 + bsr sd_com + move.b #0x87,d4 + bsr sd_com + + bsr sd_get_status + + halt + + move.l #'Ver1',d6 + cmp.b #5,d5 + beq sd_v1 + cmp.b #1,d5 + bne read_csd + + move.b #0xff,d4 + bsr sd_com + move.b d5,d0 + bsr sd_com + move.b d5,d1 + bsr sd_com + move.b d5,d2 + bsr sd_com +/******************************************/ +#include "MCF5475.h" +#include "startcf.h" + +extern unsigned long far __SP_AFTER_RESET[]; +extern unsigned long far __Bas_base[]; + + /* imported routines */ +//extern int warten_20ms(); +//extern int warten_200us(); +//extern int warten_10us(); + +/********************************************************************/ +void asm sd_test(void) +{ + clr.w MCF_PAD_PAR_DSPI + lea MCF_GPIO_PPDSDR_DSPI,a2 // data in + lea MCF_GPIO_PODR_DSPI,a1 // data out + move.b #0x00,(a1) // alle auf 0 + lea MCF_GPIO_PDDR_DSPI,a0 + move.b #0x7d,(a0) // din = input rest output + + bsr warten_20ms + + move.b #0x7f,(a1) // alle auf 1 + + bsr sd_16clk + bsr sd_16clk + bsr sd_16clk + bsr sd_16clk + bsr sd_16clk + bsr sd_16clk + bsr sd_16clk + bsr sd_16clk +// sd idle +sd_idle: + bsr sd_16clk + moveq #0x40,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x95,d4 + bsr sd_com + + bsr sd_receive + + cmp.b #0x05,d5 + beq sd_test + cmp.b #0x01,d5 + beq wait_of_aktiv + cmp.b #0x04,d5 + beq sd_init_ok + cmp.b #0x00,d5 + beq sd_init_ok + bra sd_idle + +// acdm 41 +wait_of_aktiv: + bsr sd_16clk + + moveq #0x77,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x01,d4 + bsr sd_com + + bsr sd_receive + + bsr sd_16clk + + move.l #0xff,d6 + moveq #0x69,d4 + bsr sd_com + and d5,d6 + moveq #00,d4 + bsr sd_com + and d5,d6 + moveq #00,d4 + bsr sd_com + and d5,d6 + moveq #0x02,d4 + bsr sd_com + and d5,d6 + moveq #00,d4 + bsr sd_com + and d5,d6 + moveq #0x01,d4 + bsr sd_com + and d5,d6 + + bsr sd_receive + + cmp.b #0x00,d5 + beq sd_init_ok + cmp.b #0x05,d5 + beq sd_test + bra wait_of_aktiv + +sd_init_ok: + +// blockgrösse 512byt +sd_bg: + bsr sd_16clk + moveq #0x50,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #02,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x01,d4 + bsr sd_com + + bsr sd_receive + + cmp.b #0x00,d5 + bne sd_bg + +// read block +sd_rb: + bsr sd_16clk + moveq #0x51,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x08,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x01,d4 + bsr sd_com + + bsr sd_receive + + cmp.b #0x00,d5 + bne sd_rb + + lea 0xc00000,a4 + move.l #513,d7 +rd_rb: + bsr sd_receive + move.b d5,(a4)+ + subq.l #1,d7 + bne rd_rb + +// write block +sd_wb: + bsr sd_16clk + moveq #0x58,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x08,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x01,d4 + bsr sd_com + + bsr sd_receive + + cmp.b #0x00,d5 + bne sd_wb + + lea 0xc00000,a4 + move.l #513,d7 + moveq.l #0x66,d4 +wr_wb: + bsr sd_com +// subq.l #1,d4 + moveq #0x66,d4 + subq.l #1,d7 + bne wr_wb + + bsr sd_receive + +wr_wb_el: + moveq #0xff,d4 + bsr sd_com + cmp.b #0xff,d5 + bne wr_wb_el + + +// read block 2 +sd_rb2: + bsr sd_16clk + moveq #0x51,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x08,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x01,d4 + bsr sd_com + + bsr sd_receive + + cmp.b #0x00,d5 + bne sd_rb2 + + lea 0xc00400,a4 + move.l #513,d7 +rd_rb2: + bsr sd_receive + move.b d5,(a4)+ + subq.l #1,d7 + bne rd_rb2 + + + nop + nop + + rts + +sd_receive: + moveq #0xff,d4 + bsr sd_com + cmp.b #0xff,d5 + beq sd_receive + rts + +sd_com: + bclr.b #6,(a1) +sd_comb: + bsr warten_10us + moveq #7,d2 + clr.l d5 +sd_com_loop: + btst d2,d4 + beq sd_com2 + bset.b #0,(a1) + bra sd_com2_1 +sd_com2: + bclr.b #0,(a1) +sd_com2_1: + bsr sd_clk + and.l #0x02,d3 + beq sd_com3 + bset.b d2,d5 +sd_com3: + subq.l #1,d2 + bge sd_com_loop + bsr warten_10us + bset.b #6,(a1) + bset.b #0,(a1) + bsr warten_200us + rts +sd_clk: + tst.b 0xfffff700 + tst.b 0xfffff700 + bset.b #2,(a1) + tst.b 0xfffff700 + tst.b 0xfffff700 + move.b (a2),d3 + tst.b 0xfffff700 + bclr.b #2,(a1) + rts + +sd_15clk: + move #15,d0 + bra sd_16clk +sd_16clk: + moveq #16,d0 +sd_16clk1: + bsr sd_clk + subq.l #1,d0 + bne sd_16clk1 + bsr warten_10us + rts +// warteschleife ca. 20ms +warten_20ms: + move.l a0,-(sp) + move.l d6,-(sp) + move.l d1,-(sp) + move.l d0,-(sp) + lea MCF_SLT0_SCNT,a0 + move.l (a0),d0 + move.l #700000,d6 + bra warten_loop +// warteschleife ca. 200us +warten_200us: + move.l a0,-(sp) + move.l d6,-(sp) + move.l d1,-(sp) + move.l d0,-(sp) + lea MCF_SLT0_SCNT,a0 + move.l (a0),d0 + move.l #7000,d6 + bra warten_loop +// warteschleife ca. 10us +warten_10us: + move.l a0,-(sp) + move.l d6,-(sp) + move.l d1,-(sp) + move.l d0,-(sp) + lea MCF_SLT0_SCNT,a0 + move.l (a0),d0 + move.l #333,d6 +warten_loop: + move.l (a0),d1 + sub.l d0,d1 + add.l d6,d1 + bpl warten_loop + move.l (sp)+,d0 + move.l (sp)+,d1 + move.l (sp)+,d6 + move.l (sp)+,a0 + rts; +} + + +/**************************************************/ +void asm ide_test(void) +{ + lea MCF_PAD_PAR_DSPI,a0 + move.w #0x1fff,(a0) + lea MCF_DSPI_DCTAR0,a0 + move.l #0x38a644e4,(a0) + lea MCF_DSPI_DMCR,a0 + move.l #0x802d3c00,(a0) + clr.l MCF_DSPI_DTCR + bsr warten_20ms + lea MCF_DSPI_DTFR,a0 + lea MCF_DSPI_DRFR,a1 + + moveq #10,d0 +sd_reset: + move.l #0x000100ff,(a0) + bsr warten_20ms + and.l (a1),d0 + subq.l #1,d0 + bne sd_reset + + moveq #10,d1 +sd_loop1: + bsr warten_20ms + moveq #-1,d0 +// cmd 0 set to idle + move.l #0x00200040,(a0) + bsr warten_20ms + and.l (a1),d0 + move.l #0x00200000,(a0) + bsr warten_20ms + and.l (a1),d0 + move.l #0x00200000,(a0) + bsr warten_20ms + and.l (a1),d0 + move.l #0x00200000,(a0) + bsr warten_20ms + and.l (a1),d0 + move.l #0x00200000,(a0) + bsr warten_20ms + and.l (a1),d0 + move.l #0x00200095,(a0) + bsr warten_20ms + and.l (a1),d0 + cmp.w #0x0001,d0 + beq sd_loop2 + subq.l #1,d1 + bne sd_loop1 + moveq #10,d1 + bra sd_test +sd_loop2: + moveq #-1,d0 +// cmd 41 + move.l #0x00200069,(a0) + bsr warten_20ms + and.l (a1),d0 + move.l #0x00200000,(a0) + bsr warten_20ms + and.l (a1),d0 + move.l #0x00200000,(a0) + bsr warten_20ms + and.l (a1),d0 + move.l #0x00200000,(a0) + bsr warten_20ms + and.l (a1),d0 + move.l #0x00200000,(a0) + bsr warten_20ms + and.l (a1),d0 + move.l #0x00200001,(a0) + bsr warten_20ms + and.l (a1),d0 + tst.w d0 + bne sd_loop2 + + nop + nop +/********************************************************************/ +#define cmd_reg (0x1d) +#define status_reg (0x1d) +#define seccnt (0x09) + +ide_test: + lea 0xfff00040,a0 + lea 0xc00000,a1 + move.b #0xec,cmd_reg(a0) //identify devcie cmd + bsr wait_int + bsr ds_rx +// read sector normal + move.b #1,seccnt(a0) // 1 sector + move.b #0x20,cmd_reg(a0) // read cmd + bsr wait_int + bsr ds_rx + +// write testpattern sector + move.b #1,seccnt(a0) // 1 sector + move.b #0x30,cmd_reg(a0) // write cmd + bsr drq_wait +// write pattern + move.l #256,d0 +ide_test_loop3: + move.w #0xa55a,(a0) + subq.l #1,d0 + bne ide_test_loop3 + bsr wait_int +// read testpattern sector + move.b #1,seccnt(a0) // 1 sector + move.b #0x20,cmd_reg(a0) // read + bsr wait_int + bsr ds_rx +// sector restauriern + move.b #1,seccnt(a0) // 1 sector + move.b #0x30,cmd_reg(a0) // write + lea -0x400(a1),a1 // vorletzer + bsr drq_wait + bsr ds_tx + bsr wait_int +// fertig und zurück + nop + rts +// wait auf int +wait_int: + move.b 0xfffffa01,d0 + btst.b #5,d0 + bne wait_int + move.b status_reg(a0),d0 + rts +// wait auf drq +drq_wait: + move.b status_reg(a0),d0 + btst #3,d0 + beq drq_wait + rts + +// 1 sector lesen word +ds_rx: + move.l #256,d0 +ds_rx_loop: + move.w (a0),(a1)+ + subq.l #1,d0 + bne ds_rx_loop + rts +// 1 sector lesen long +ds_rxl: + move.l #128,d0 +ds_rxl_loop: + move.l (a0),(a1)+ + subq.l #1,d0 + bne ds_rxl_loop + rts +// 1 sector schreiben word +ds_tx: + move.l #256,d0 +ds_tx_loop: + move.w (a1)+,(a0) + subq.l #1,d0 + bne ds_tx_loop + rts +// 1 sector schreiben word +ds_txl: + move.l #128,d0 +ds_txl_loop: + move.l (a1)+,(a0) + subq.l #1,d0 + bne ds_txl_loop + rts +// warteschleife ca. 20ms +warten_20ms: + move.l a0,-(sp) + move.l d6,-(sp) + move.l d1,-(sp) + move.l d0,-(sp) + lea MCF_SLT0_SCNT,a0 + move.l (a0),d0 + move.l #700000,d6 + bra warten_loop +// warteschleife ca. 200us +warten_200us: + move.l a0,-(sp) + move.l d6,-(sp) + move.l d1,-(sp) + move.l d0,-(sp) + lea MCF_SLT0_SCNT,a0 + move.l (a0),d0 + move.l #7000,d6 + bra warten_loop +// warteschleife ca. 10us +warten_10us: + move.l a0,-(sp) + move.l d6,-(sp) + move.l d1,-(sp) + move.l d0,-(sp) + lea MCF_SLT0_SCNT,a0 + move.l (a0),d0 + move.l #333,d6 +warten_loop: + move.l (a0),d1 + sub.l d0,d1 + add.l d6,d1 + bpl warten_loop + move.l (sp)+,d0 + move.l (sp)+,d1 + move.l (sp)+,d6 + move.l (sp)+,a0 + rts; +} +/********************************************************************/ +//.include "startcf.h" + +//.extern ___MBAR +//#define MCF_SLT0_SCNT ___MBAR+0x908 + +//.global ide_test + +.text +/********************************************************************/ +// sd card +/********************************************************************/ +sd_test: + lea 0x40000,a5 // basis addresse + clr.w MCF_PAD_PAR_DSPI + lea MCF_GPIO_PPDSDR_DSPI,a2 // data in + lea MCF_GPIO_PODR_DSPI,a1 // data out + move.b #0x00,(a1) // alle auf 0 + lea MCF_GPIO_PDDR_DSPI,a0 + move.b #0x7d,(a0) // din = input rest output + + bsr warten_20ms + + move.b #0x7f,(a1) // alle auf 1 + + bsr sd_16clk + +// sd idle +sd_idle: + bsr sd_16clk + moveq #0x40,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x95,d4 + bsr sd_com + + bsr sd_receive + + cmp.b #0x05,d5 + beq sd_test + cmp.b #0x01,d5 + beq wait_of_aktiv + cmp.b #0x04,d5 + beq sd_init_ok + cmp.b #0x00,d5 + beq sd_init_ok + bra sd_idle + +// acdm 41 +wait_of_aktiv: + bsr sd_16clk + + moveq #0x77,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x01,d4 + bsr sd_com + + bsr sd_receive + + bsr sd_16clk + + move.l #0xff,d6 + moveq #0x69,d4 + bsr sd_com + and d5,d6 + moveq #00,d4 + bsr sd_com + and d5,d6 + moveq #00,d4 + bsr sd_com + and d5,d6 + moveq #0x02,d4 + bsr sd_com + and d5,d6 + moveq #00,d4 + bsr sd_com + and d5,d6 + moveq #0x01,d4 + bsr sd_com + and d5,d6 + + bsr sd_receive + + cmp.b #0x00,d5 + beq sd_init_ok + cmp.b #0x05,d5 + beq sd_test + bra wait_of_aktiv + +sd_init_ok: + +// blockgrösse 512byt +sd_bg: + bsr sd_16clk + moveq #0x50,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #02,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x01,d4 + bsr sd_com + + bsr sd_receive + + cmp.b #0x00,d5 + bne sd_bg + +// read block +sd_rb: + bsr sd_16clk + moveq #0x51,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x08,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x01,d4 + bsr sd_com + + bsr sd_receive + + cmp.b #0x00,d5 + bne sd_rb + + move.l a5,a4 + move.l #513,d7 +rd_rb: + bsr sd_receive + move.b d5,(a4)+ + subq.l #1,d7 + bne rd_rb + +// write block +sd_wb: + bsr sd_16clk + moveq #0x58,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x08,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x01,d4 + bsr sd_com + + bsr sd_receive + + cmp.b #0x00,d5 + bne sd_wb + + move.l #513,d7 + moveq.l #0xbb,d4 +wr_wb: + bsr sd_com +// subq.l #1,d4 + moveq #0xbb,d4 + subq.l #1,d7 + bne wr_wb + + bsr sd_receive + +wr_wb_el: + moveq #0xff,d4 + bsr sd_com + cmp.b #0xff,d5 + bne wr_wb_el + + +// read block 2 +sd_rb2: + bsr sd_16clk + moveq #0x51,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x08,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x01,d4 + bsr sd_com + + bsr sd_receive + + cmp.b #0x00,d5 + bne sd_rb2 + + move.l #513,d7 +rd_rb2: + bsr sd_receive + move.b d5,(a4)+ + subq.l #1,d7 + bne rd_rb2 + +halt +halt + nop + nop + + rts + +sd_receive: + moveq #0xff,d4 + bsr sd_com + cmp.b #0xff,d5 + beq sd_receive + rts + +sd_com: + bclr.b #6,(a1) // nCS=0 +sd_comb: + bsr warten_10us + moveq #7,d2 + clr.l d5 +sd_com_loop: + bclr.b #0,(a1) // default 0 bit senden + btst d2,d4 // ist 0? + beq sd_com2 // ja-> + bset.b #0,(a1) // sonst auf 1 +sd_com2: + bsr sd_clk // clocken + and.l #0x02,d3 + beq sd_com3 + bset.b d2,d5 +sd_com3: + subq.l #1,d2 + bge sd_com_loop + bsr warten_10us + bset.b #6,(a1) // nCS=1 + bset.b #0,(a1) // daten = 0 + bsr warten_200us + rts +// clocken +sd_clk: + tst.b 0xfffff700 // wait + tst.b 0xfffff700 + bset.b #2,(a1) // clock high + tst.b 0xfffff700 // wait + tst.b 0xfffff700 // wait + move.b (a2),d3 // bit holen + bclr.b #2,(a1) // clock low + rts + +sd_16clk: + move.l #160,d0 +sd_16clk1: + bsr sd_clk + subq.l #1,d0 + bne sd_16clk1 + bsr warten_10us + rts +/********************************************************************/ +// video pll +/********************************************************************/ + lea 0xf0000800,a1 + + lea 0xf0000600,a0 + move.l #128,d0 +clr_pll: + bsr wait_pll + clr.w (a0) + addq.l #4,a0 + subq.l #1,d0 + bne clr_pll + + lea 0xf0000600,a0 + bsr wait_pll + move.w #27,0x48(a0) // loopfilter r + bsr wait_pll + move.w #1,0x08(a0) // charge pump I + bsr wait_pll + move.w #12,0x0(a0) // N counter high = 12 + bsr wait_pll + move.w #12,0x40(a0) // N counter low = 12 + bsr wait_pll + move.w #1,0x114(a0) // ck1 bypass + bsr wait_pll + move.w #1,0x118(a0) // ck2 bypass + bsr wait_pll + move.w #1,0x11c(a0) // ck3 bypass + bsr wait_pll + move.w #1,0x10(a0) // ck0 high = 1 + bsr wait_pll + move.w #1,0x50(a0) // ck0 low = 1 + + bsr wait_pll + move.w #1,0x144(a0) // M odd division + bsr wait_pll + move.w #1,0x44(a0) // M low = 1 + + bsr wait_pll + move.w #99,0x04(a0) // M high = 100 + + bsr wait_pll + clr.b (a1) // set + +set_pll: + bsr read_pll + halt + move.w d0,(a0) + bsr wait_pll + clr.b (a1) + bra set_pll + +read_pll: + lea 0xf0000600,a3 + lea 0x10000,a2 + move.l #128,d3 +read1_pll: + bsr wait_pll + move.w (a3),d1 + bsr wait_pll + move.w (a3),(a2) + addq.l #4,a3 + addq.l #4,a2 + subq.l #1,d3 + bne read1_pll + rts +wait_pll: + tst.w (a1) + bmi wait_pll + rts + +/********************************************************************/ +void ide_test(void) +/********************************************************************/ +{ + asm + { + halt + lea 0xfff00000,a0 + lea 0x80000,a1 + move.b #0xec,cmd_reg(a0) //identify devcie cmd + bsr wait_int + bsr ds_rxl +// read sector normal + move.b #1,seccnt(a0) // 1 sector 0x200 + move.b #0x20,cmd_reg(a0) // read cmd + bsr wait_int + bsr ds_rxl +// write pattern 0x400 + move.l a1,a4 //a4=400 + move.l #256,d0 + clr.l d1 +ide_test_loop3: + move.w d1,(a1)+ + addq.l #1,d1 + subq.l #1,d0 + bne ide_test_loop3 + move.l a4,a1 +// write testpattern sector 0x400 + move.b #10,sector(a0) // sector 10 + move.b #1,seccnt(a0) // 1 sector + move.b #0x30,cmd_reg(a0) // write cmd + bsr drq_wait + bsr ds_txl + bsr wait_int + move.l a1,a2 //a2=600 + move.l #256,d4 +loop_rw: +// read testpattern sector 0x600 + move.l a2,a1 +// halt + move.b #10,sector(a0) // sector 10 + move.b #1,seccnt(a0) // 1 sector + move.b #0x20,cmd_reg(a0) // read + bsr wait_int + bsr ds_rxl +// verändere testpattern + move.l a2,a1 +// halt + move.l #256,d0 + move.l #0x100,d1 +verae_loop: + move.w (a1),d2 + add.l d1,d2 + move.w d2,(a1)+ + subq.l #1,d0 + bne verae_loop +// write testpattern sector 0x600 + move.l a2,a1 +// halt + move.b #10,sector(a0) // sector 10 + move.b #1,seccnt(a0) // 1 sector + move.b #0x30,cmd_reg(a0) // write cmd + bsr drq_wait + bsr ds_txl + bsr wait_int + subq.l #1,d4 +// bra verae_loop + bne loop_rw +// sector vergleichen +// halt + move.l #128,d0 + moveq.l #-1,d1 +verg_loop: + move.l (a2)+,d2 + cmp.l (a4)+,d2 + bne error + subq.l #1,d0 + bne verg_loop + clr.l d1 +error: + halt + rts +// sector restauriern + move.b #1,seccnt(a0) // 1 sector + move.b #0x30,cmd_reg(a0) // write + lea -0x400(a1),a1 // vorletzer + bsr drq_wait + bsr ds_txl + + bsr wait_int +// fertig und zurück + nop + rts +// wait auf int +wait_int: + move.b 0xfffffa01,d0 + btst #5,d0 + bne wait_int + move.b status_reg(a0),d0 + rts +// wait auf drq +drq_wait: + move.b status_reg(a0),d0 + btst #3,d0 + beq drq_wait + rts + +// 1 sector lesen word +ds_rx: + move.l #256,d0 +ds_rx_loop: + move.w (a0),(a1)+ + subq.l #1,d0 + bne ds_rx_loop + rts +// 1 sector lesen long +ds_rxl: + move.l #128,d0 +ds_rxl_loop: + move.l (a0),(a1)+ + subq.l #1,d0 + bne ds_rxl_loop + rts +// 1 sector schreiben word +ds_tx: + move.l #256,d0 +ds_tx_loop: + move.w (a1)+,(a0) + subq.l #1,d0 + bne ds_tx_loop + rts +// 1 sector schreiben long +ds_txl: + move.l #128,d0 +ds_txl_loop: + move.l (a1)+,(a0) + subq.l #1,d0 + bne ds_txl_loop + rts + } +} +/********************************************************************/ diff --git a/BaS_codewarrior/firebeeV1/sources/ewf.s b/BaS_codewarrior/firebeeV1/sources/ewf.s new file mode 100644 index 0000000..7f5a644 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/ewf.s @@ -0,0 +1,1565 @@ +/*************************************************************************************************/ +// extension word format: a0 zeigt auf code, in a1 ist ay, d0/d1 wird zerstört +//------------------------------------------------------------------------------ + +.include "ii_macro.h" + +.global ewf +//----------------------------------------------------------- +.text +ewferr: + nop + halt + nop +//----------------------------------------------------------- +ewf: + mvz.b (a0)+,d1 // 1. byt ewf + mvs.w ewf_table-*-2(pc,d1*2),d1 + jmp ewf_table-*-2(pc,d1) +ewf_table: + .short ewf_00-ewf_table,ewf_01-ewf_table,ewf_02-ewf_table,ewf_03-ewf_table + .short ewf_04-ewf_table,ewf_05-ewf_table,ewf_06-ewf_table,ewf_07-ewf_table + .short ewferr-ewf_table,ewf_09-ewf_table,ewferr-ewf_table,ewf_0b-ewf_table + .short ewferr-ewf_table,ewf_0d-ewf_table,ewferr-ewf_table,ewf_0f-ewf_table + .short ewf_10-ewf_table,ewf_11-ewf_table,ewf_12-ewf_table,ewf_13-ewf_table + .short ewf_14-ewf_table,ewf_15-ewf_table,ewf_16-ewf_table,ewf_17-ewf_table + .short ewferr-ewf_table,ewf_19-ewf_table,ewferr-ewf_table,ewf_1b-ewf_table + .short ewferr-ewf_table,ewf_1d-ewf_table,ewferr-ewf_table,ewf_1f-ewf_table + .short ewf_20-ewf_table,ewf_21-ewf_table,ewf_22-ewf_table,ewf_23-ewf_table + .short ewf_24-ewf_table,ewf_25-ewf_table,ewf_26-ewf_table,ewf_27-ewf_table + .short ewferr-ewf_table,ewf_29-ewf_table,ewferr-ewf_table,ewf_2b-ewf_table + .short ewferr-ewf_table,ewf_2d-ewf_table,ewferr-ewf_table,ewf_2f-ewf_table + .short ewf_30-ewf_table,ewf_31-ewf_table,ewf_32-ewf_table,ewf_33-ewf_table + .short ewf_34-ewf_table,ewf_35-ewf_table,ewf_36-ewf_table,ewf_37-ewf_table + .short ewferr-ewf_table,ewf_39-ewf_table,ewferr-ewf_table,ewf_3b-ewf_table + .short ewferr-ewf_table,ewf_3d-ewf_table,ewferr-ewf_table,ewf_3f-ewf_table + .short ewf_40-ewf_table,ewf_41-ewf_table,ewf_42-ewf_table,ewf_43-ewf_table + .short ewf_44-ewf_table,ewf_45-ewf_table,ewf_46-ewf_table,ewf_47-ewf_table + .short ewferr-ewf_table,ewf_49-ewf_table,ewferr-ewf_table,ewf_4b-ewf_table + .short ewferr-ewf_table,ewf_4d-ewf_table,ewferr-ewf_table,ewf_4f-ewf_table + .short ewf_50-ewf_table,ewf_51-ewf_table,ewf_52-ewf_table,ewf_53-ewf_table + .short ewf_54-ewf_table,ewf_55-ewf_table,ewf_56-ewf_table,ewf_57-ewf_table + .short ewferr-ewf_table,ewf_59-ewf_table,ewferr-ewf_table,ewf_5b-ewf_table + .short ewferr-ewf_table,ewf_5d-ewf_table,ewferr-ewf_table,ewf_5f-ewf_table + .short ewf_60-ewf_table,ewf_61-ewf_table,ewf_62-ewf_table,ewf_63-ewf_table + .short ewf_64-ewf_table,ewf_65-ewf_table,ewf_66-ewf_table,ewf_67-ewf_table + .short ewferr-ewf_table,ewf_69-ewf_table,ewferr-ewf_table,ewf_6b-ewf_table + .short ewferr-ewf_table,ewf_6d-ewf_table,ewferr-ewf_table,ewf_6f-ewf_table + .short ewf_70-ewf_table,ewf_71-ewf_table,ewf_72-ewf_table,ewf_73-ewf_table + .short ewf_74-ewf_table,ewf_75-ewf_table,ewf_76-ewf_table,ewf_77-ewf_table + .short ewferr-ewf_table,ewf_79-ewf_table,ewferr-ewf_table,ewf_7b-ewf_table + .short ewferr-ewf_table,ewf_7d-ewf_table,ewferr-ewf_table,ewf_7f-ewf_table + .short ewf_80-ewf_table,ewf_81-ewf_table,ewf_82-ewf_table,ewf_83-ewf_table + .short ewf_84-ewf_table,ewf_85-ewf_table,ewf_86-ewf_table,ewf_87-ewf_table + .short ewferr-ewf_table,ewf_89-ewf_table,ewferr-ewf_table,ewf_8b-ewf_table + .short ewferr-ewf_table,ewf_8d-ewf_table,ewferr-ewf_table,ewf_8f-ewf_table + .short ewf_90-ewf_table,ewf_91-ewf_table,ewf_92-ewf_table,ewf_93-ewf_table + .short ewf_94-ewf_table,ewf_95-ewf_table,ewf_96-ewf_table,ewf_97-ewf_table + .short ewferr-ewf_table,ewf_99-ewf_table,ewferr-ewf_table,ewf_9b-ewf_table + .short ewferr-ewf_table,ewf_9d-ewf_table,ewferr-ewf_table,ewf_9f-ewf_table + .short ewf_a0-ewf_table,ewf_a1-ewf_table,ewf_a2-ewf_table,ewf_a3-ewf_table + .short ewf_a4-ewf_table,ewf_a5-ewf_table,ewf_a6-ewf_table,ewf_a7-ewf_table + .short ewferr-ewf_table,ewf_a9-ewf_table,ewferr-ewf_table,ewf_ab-ewf_table + .short ewferr-ewf_table,ewf_ad-ewf_table,ewferr-ewf_table,ewf_af-ewf_table + .short ewf_b0-ewf_table,ewf_b1-ewf_table,ewf_b2-ewf_table,ewf_b3-ewf_table + .short ewf_b4-ewf_table,ewf_b5-ewf_table,ewf_b6-ewf_table,ewf_b7-ewf_table + .short ewferr-ewf_table,ewf_b9-ewf_table,ewferr-ewf_table,ewf_bb-ewf_table + .short ewferr-ewf_table,ewf_bd-ewf_table,ewferr-ewf_table,ewf_bf-ewf_table + .short ewf_c0-ewf_table,ewf_c1-ewf_table,ewf_c2-ewf_table,ewf_c3-ewf_table + .short ewf_c4-ewf_table,ewf_c5-ewf_table,ewf_c6-ewf_table,ewf_c7-ewf_table + .short ewferr-ewf_table,ewf_c9-ewf_table,ewferr-ewf_table,ewf_cb-ewf_table + .short ewferr-ewf_table,ewf_cd-ewf_table,ewferr-ewf_table,ewf_cf-ewf_table + .short ewf_d0-ewf_table,ewf_d1-ewf_table,ewf_d2-ewf_table,ewf_d3-ewf_table + .short ewf_d4-ewf_table,ewf_d5-ewf_table,ewf_d6-ewf_table,ewf_d7-ewf_table + .short ewferr-ewf_table,ewf_d9-ewf_table,ewferr-ewf_table,ewf_db-ewf_table + .short ewferr-ewf_table,ewf_dd-ewf_table,ewferr-ewf_table,ewf_df-ewf_table + .short ewf_e0-ewf_table,ewf_e1-ewf_table,ewf_e2-ewf_table,ewf_e3-ewf_table + .short ewf_e4-ewf_table,ewf_e5-ewf_table,ewf_e6-ewf_table,ewf_e7-ewf_table + .short ewferr-ewf_table,ewf_e9-ewf_table,ewferr-ewf_table,ewf_eb-ewf_table + .short ewferr-ewf_table,ewf_ed-ewf_table,ewferr-ewf_table,ewf_ef-ewf_table + .short ewf_f0-ewf_table,ewf_f1-ewf_table,ewf_f2-ewf_table,ewf_f3-ewf_table + .short ewf_f4-ewf_table,ewf_f5-ewf_table,ewf_f6-ewf_table,ewf_f7-ewf_table + .short ewferr-ewf_table,ewf_f9-ewf_table,ewferr-ewf_table,ewf_fb-ewf_table + .short ewferr-ewf_table,ewf_fd-ewf_table,ewferr-ewf_table,ewf_ff-ewf_table +//d0.w * 1 +ewf_00: + mvs.b (a0)+,d1 + mvs.w d0_off+6(a7),d0 + add.l d0,a1 + add.l d1,a1 + rts +ewf_01: + mvs.w d0_off+6(a7),d0 + bra ewf_full +//d0.w * 2 +ewf_02: + mvs.b (a0)+,d1 + mvs.w d0_off+6(a7),d0 + lea 0(a1,d0*2),a1 + add.l d1,a1 + rts +ewf_03: + mvs.w d0_off+6(a7),d0 + move.w ccr,d1 + asl.l #1,d0 + move.w d1,ccr + bra ewf_full +//d0.w * 4 +ewf_04: + mvs.b (a0)+,d1 + mvs.w d0_off+6(a7),d0 + lea 0(a1,d0*4),a1 + add.l d1,a1 + rts +ewf_05: + mvs.w d0_off+6(a7),d0 + move.w ccr,d1 + asl.l #2,d0 + move.w d1,ccr + bra ewf_full +//d0.w * 8 +ewf_06: + mvs.b (a0)+,d1 + mvs.w d0_off+6(a7),d0 + lea 0(a1,d0*4),a1 + lea 0(a1,d0*4),a1 + add.l d1,a1 + rts +ewf_07: + mvs.w d0_off+6(a7),d0 + move.w ccr,d1 + asl.l #3,d0 + move.w d1,ccr + bra ewf_full +//d0.l * 1 +ewf_09: + move.l d0_off+4(a7),d0 + bra ewf_full +//d0.l * 2 +ewf_0b: + move.l d0_off+4(a7),d0 + move.w ccr,d1 + asl.l #1,d0 + move.w d1,ccr + bra ewf_full +//d0.l * 4 +ewf_0d: + move.l d0_off+4(a7),d0 + move.w ccr,d1 + asl.l #2,d0 + move.w d1,ccr + bra ewf_full +//d0.l * 8 +ewf_0f: + move.l d0_off+4(a7),d0 + move.w ccr,d1 + asl.l #3,d0 + move.w d1,ccr + bra ewf_full +//d1.w * 1 +ewf_10: + mvs.b (a0)+,d1 + mvs.w d1_off+6(a7),d0 + add.l d0,a1 + add.l d1,a1 + rts +ewf_11: + mvs.w d1_off+6(a7),d0 + bra ewf_full +//d1.w * 2 +ewf_12: + mvs.b (a0)+,d1 + mvs.w d1_off+6(a7),d0 + lea 0(a1,d0*2),a1 + add.l d1,a1 + rts +ewf_13: + mvs.w d1_off+6(a7),d0 + move.w ccr,d1 + asl.l #1,d0 + move.w d1,ccr + bra ewf_full +//d1.w * 4 +ewf_14: + mvs.b (a0)+,d1 + mvs.w d1_off+6(a7),d0 + lea 0(a1,d0*4),a1 + add.l d1,a1 + rts +ewf_15: + mvs.w d1_off+6(a7),d0 + move.w ccr,d1 + asl.l #2,d0 + move.w d1,ccr + bra ewf_full +//d1.w * 8 +ewf_16: + mvs.b (a0)+,d1 + mvs.w d1_off+6(a7),d0 + lea 0(a1,d0*4),a1 + lea 0(a1,d0*4),a1 + add.l d1,a1 + rts +ewf_17: + mvs.w d1_off+6(a7),d0 + move.w ccr,d1 + asl.l #3,d0 + move.w d1,ccr + bra ewf_full +//d1.l * 1 +ewf_19: + move.l d1_off+4(a7),d0 + bra ewf_full +//d1.l * 2 +ewf_1b: + move.l d1_off+4(a7),d0 + move.w ccr,d1 + asl.l #1,d0 + move.w d1,ccr + bra ewf_full +//d1.l * 4 +ewf_1d: + move.l d1_off+4(a7),d0 + move.w ccr,d1 + asl.l #2,d0 + move.w d1,ccr + bra ewf_full +//d1.l * 8 +ewf_1f: + move.l d1_off+4(a7),d0 + move.w ccr,d1 + asl.l #3,d0 + move.w d1,ccr + bra ewf_full +//d2.w * 1 +ewf_20: + mvs.b (a0)+,d1 + mvs.w d2,d0 + add.l d0,a1 + add.l d1,a1 + rts +ewf_21: + mvs.w d2,d0 + bra ewf_full +//d2.w * 2 +ewf_22: + mvs.b (a0)+,d1 + mvs.w d2,d0 + lea 0(a1,d0*2),a1 + add.l d1,a1 + rts +ewf_23: + mvs.w d2,d0 + move.w ccr,d1 + asl.l #1,d0 + move.w d1,ccr + bra ewf_full +//d2.w * 4 +ewf_24: + mvs.b (a0)+,d1 + mvs.w d2,d0 + lea 0(a1,d0*4),a1 + add.l d1,a1 + rts +ewf_25: + mvs.w d2,d0 + move.w ccr,d1 + asl.l #2,d0 + move.w d1,ccr + bra ewf_full +//d2.w * 8 +ewf_26: + mvs.b (a0)+,d1 + mvs.w d2,d0 + lea 0(a1,d0*4),a1 + lea 0(a1,d0*4),a1 + add.l d1,a1 + rts +ewf_27: + mvs.w d2,d0 + move.w ccr,d1 + asl.l #3,d0 + move.w d1,ccr + bra ewf_full +//d2.l * 1 +ewf_29: + move.l d2,d0 + bra ewf_full +//d2.l * 2 +ewf_2b: + move.l d2,d0 + move.w ccr,d1 + asl.l #1,d0 + move.w d1,ccr + bra ewf_full +//d2.l * 4 +ewf_2d: + move.l d2,d0 + move.w ccr,d1 + asl.l #2,d0 + move.w d1,ccr + bra ewf_full +//d2.l * 8 +ewf_2f: + move.l d2,d0 + move.w ccr,d1 + asl.l #3,d0 + move.w d1,ccr + bra ewf_full +//d3.w * 1 +ewf_30: + mvs.b (a0)+,d1 + mvs.w d3,d0 + add.l d0,a1 + add.l d1,a1 + rts +ewf_31: + mvs.w d3,d0 + bra ewf_full +//d3.w * 2 +ewf_32: + mvs.b (a0)+,d1 + mvs.w d3,d0 + lea 0(a1,d0*2),a1 + add.l d1,a1 + rts +ewf_33: + mvs.w d3,d0 + move.w ccr,d1 + asl.l #1,d0 + move.w d1,ccr + bra ewf_full +//d3.w * 4 +ewf_34: + mvs.b (a0)+,d1 + mvs.w d3,d0 + lea 0(a1,d0*4),a1 + add.l d1,a1 + rts +ewf_35: + mvs.w d3,d0 + move.w ccr,d1 + asl.l #2,d0 + move.w d1,ccr + bra ewf_full +//d3.w * 8 +ewf_36: + mvs.b (a0)+,d1 + mvs.w d3,d0 + lea 0(a1,d0*4),a1 + lea 0(a1,d0*4),a1 + add.l d1,a1 + rts +ewf_37: + mvs.w d3,d0 + move.w ccr,d1 + asl.l #3,d0 + move.w d1,ccr + bra ewf_full +//d3.l * 1 +ewf_39: + move.l d3,d0 + bra ewf_full +//d3.l * 3 +ewf_3b: + move.l d3,d0 + move.w ccr,d1 + asl.l #1,d0 + move.w d1,ccr + bra ewf_full +//d3.l * 4 +ewf_3d: + move.l d3,d0 + move.w ccr,d1 + asl.l #2,d0 + move.w d1,ccr + bra ewf_full +//d3.l * 8 +ewf_3f: + move.l d3,d0 + move.w ccr,d1 + asl.l #3,d0 + move.w d1,ccr + bra ewf_full +//d4.w * 1 +ewf_40: + mvs.b (a0)+,d1 + mvs.w d4,d0 + add.l d0,a1 + add.l d1,a1 + rts +ewf_41: + mvs.w d4,d0 + bra ewf_full +//d4.w * 2 +ewf_42: + mvs.b (a0)+,d1 + mvs.w d4,d0 + lea 0(a1,d0*2),a1 + add.l d1,a1 + rts +ewf_43: + mvs.w d4,d0 + move.w ccr,d1 + asl.l #1,d0 + move.w d1,ccr + bra ewf_full +//d4.w * 4 +ewf_44: + mvs.b (a0)+,d1 + mvs.w d4,d0 + lea 0(a1,d0*4),a1 + add.l d1,a1 + rts +ewf_45: + mvs.w d4,d0 + move.w ccr,d1 + asl.l #2,d0 + move.w d1,ccr + bra ewf_full +//d4.w * 8 +ewf_46: + mvs.b (a0)+,d1 + mvs.w d4,d0 + lea 0(a1,d0*4),a1 + lea 0(a1,d0*4),a1 + add.l d1,a1 + rts +ewf_47: + mvs.w d4,d0 + move.w ccr,d1 + asl.l #3,d0 + move.w d1,ccr + bra ewf_full +//d4.l * 1 +ewf_49: + move.l d4,d0 + bra ewf_full +//d4.l * 4 +ewf_4b: + move.l d4,d0 + move.w ccr,d1 + asl.l #1,d0 + move.w d1,ccr + bra ewf_full +//d4.l * 4 +ewf_4d: + move.l d4,d0 + move.w ccr,d1 + asl.l #2,d0 + move.w d1,ccr + bra ewf_full +//d4.l * 8 +ewf_4f: + move.l d4,d0 + move.w ccr,d1 + asl.l #3,d0 + move.w d1,ccr + bra ewf_full +//d5.w * 1 +ewf_50: + mvs.b (a0)+,d1 + mvs.w d5,d0 + add.l d0,a1 + add.l d1,a1 + rts +ewf_51: + mvs.w d5,d0 + bra ewf_full +//d5.w * 2 +ewf_52: + mvs.b (a0)+,d1 + mvs.w d5,d0 + lea 0(a1,d0*2),a1 + add.l d1,a1 + rts +ewf_53: + mvs.w d5,d0 + move.w ccr,d1 + asl.l #1,d0 + move.w d1,ccr + bra ewf_full +//d5.w * 4 +ewf_54: + mvs.b (a0)+,d1 + mvs.w d5,d0 + lea 0(a1,d0*4),a1 + add.l d1,a1 + rts +ewf_55: + mvs.w d5,d0 + move.w ccr,d1 + asl.l #2,d0 + move.w d1,ccr + bra ewf_full +//d5.w * 8 +ewf_56: + mvs.b (a0)+,d1 + mvs.w d5,d0 + lea 0(a1,d0*4),a1 + lea 0(a1,d0*4),a1 + add.l d1,a1 + rts +ewf_57: + mvs.w d5,d0 + move.w ccr,d1 + asl.l #3,d0 + move.w d1,ccr + bra ewf_full +//d5.l * 1 +ewf_59: + move.l d5,d0 + bra ewf_full +//d5.l * 5 +ewf_5b: + move.l d5,d0 + move.w ccr,d1 + asl.l #1,d0 + move.w d1,ccr + bra ewf_full +//d5.l * 4 +ewf_5d: + move.l d5,d0 + move.w ccr,d1 + asl.l #2,d0 + move.w d1,ccr + bra ewf_full +//d5.l * 8 +ewf_5f: + move.l d5,d0 + move.w ccr,d1 + asl.l #3,d0 + move.w d1,ccr + bra ewf_full +//d6.w * 1 +ewf_60: + mvs.b (a0)+,d1 + mvs.w d6,d0 + add.l d0,a1 + add.l d1,a1 + rts +ewf_61: + mvs.w d6,d0 + bra ewf_full +//d6.w * 2 +ewf_62: + mvs.b (a0)+,d1 + mvs.w d6,d0 + lea 0(a1,d0*2),a1 + add.l d1,a1 + rts +ewf_63: + mvs.w d6,d0 + move.w ccr,d1 + asl.l #1,d0 + move.w d1,ccr + bra ewf_full +//d6.w * 4 +ewf_64: + mvs.b (a0)+,d1 + mvs.w d6,d0 + lea 0(a1,d0*4),a1 + add.l d1,a1 + rts +ewf_65: + mvs.w d6,d0 + move.w ccr,d1 + asl.l #2,d0 + move.w d1,ccr + bra ewf_full +//d6.w * 8 +ewf_66: + mvs.b (a0)+,d1 + mvs.w d6,d0 + lea 0(a1,d0*4),a1 + lea 0(a1,d0*4),a1 + add.l d1,a1 + rts +ewf_67: + mvs.w d6,d0 + move.w ccr,d1 + asl.l #3,d0 + move.w d1,ccr + bra ewf_full +//d6.l * 1 +ewf_69: + move.l d6,d0 + bra ewf_full +//d6.l * 6 +ewf_6b: + move.l d6,d0 + move.w ccr,d1 + asl.l #1,d0 + move.w d1,ccr + bra ewf_full +//d6.l * 4 +ewf_6d: + move.l d6,d0 + move.w ccr,d1 + asl.l #2,d0 + move.w d1,ccr + bra ewf_full +//d6.l * 8 +ewf_6f: + move.l d6,d0 + move.w ccr,d1 + asl.l #3,d0 + move.w d1,ccr + bra ewf_full +//d7.w * 1 +ewf_70: + mvs.b (a0)+,d1 + mvs.w d7,d0 + add.l d0,a1 + add.l d1,a1 + rts +ewf_71: + mvs.w d7,d0 + bra ewf_full +//d7.w * 2 +ewf_72: + mvs.b (a0)+,d1 + mvs.w d7,d0 + lea 0(a1,d0*2),a1 + add.l d1,a1 + rts +ewf_73: + mvs.w d7,d0 + move.w ccr,d1 + asl.l #1,d0 + move.w d1,ccr + bra ewf_full +//d7.w * 4 +ewf_74: + mvs.b (a0)+,d1 + mvs.w d7,d0 + lea 0(a1,d0*4),a1 + add.l d1,a1 + rts +ewf_75: + mvs.w d7,d0 + move.w ccr,d1 + asl.l #2,d0 + move.w d1,ccr + bra ewf_full +//d7.w * 8 +ewf_76: + mvs.b (a0)+,d1 + mvs.w d7,d0 + lea 0(a1,d0*4),a1 + lea 0(a1,d0*4),a1 + add.l d1,a1 + rts +ewf_77: + mvs.w d7,d0 + move.w ccr,d1 + asl.l #3,d0 + move.w d1,ccr + bra ewf_full +//d7.l * 1 +ewf_79: + move.l d7,d0 + bra ewf_full +//d7.l * 7 +ewf_7b: + move.l d7,d0 + move.w ccr,d1 + asl.l #1,d0 + move.w d1,ccr + bra ewf_full +//d7.l * 4 +ewf_7d: + move.l d7,d0 + move.w ccr,d1 + asl.l #2,d0 + move.w d1,ccr + bra ewf_full +//d7.l * 8 +ewf_7f: + move.l d7,d0 + move.w ccr,d1 + asl.l #3,d0 + move.w d1,ccr + bra ewf_full +//a0.w * 1 +ewf_80: + mvs.b (a0)+,d1 + mvs.w a0_off+6(a7),d0 + add.l d0,a1 + add.l d1,a1 + rts +ewf_81: + mvs.w a0_off+6(a7),d0 + bra ewf_full +//a0.w * 2 +ewf_82: + mvs.b (a0)+,d1 + mvs.w a0_off+6(a7),d0 + lea 0(a1,d0*2),a1 + add.l d1,a1 + rts +ewf_83: + mvs.w a0_off+6(a7),d0 + move.w ccr,d1 + asl.l #1,d0 + move.w d1,ccr + bra ewf_full +//a0.w * 4 +ewf_84: + mvs.b (a0)+,d1 + mvs.w a0_off+6(a7),d0 + lea 0(a1,d0*4),a1 + add.l d1,a1 + rts +ewf_85: + mvs.w a0_off+6(a7),d0 + move.w ccr,d1 + asl.l #2,d0 + move.w d1,ccr + bra ewf_full +//a0.w * 8 +ewf_86: + mvs.b (a0)+,d1 + mvs.w a0_off+6(a7),d0 + lea 0(a1,d0*4),a1 + lea 0(a1,d0*4),a1 + add.l d1,a1 + rts +ewf_87: + mvs.w a0_off+6(a7),d0 + move.w ccr,d1 + asl.l #3,d0 + move.w d1,ccr + bra ewf_full +//a0.l * 1 +ewf_89: + move.l a0_off+4(a7),d0 + bra ewf_full +//a0.l * 2 +ewf_8b: + move.l a0_off+4(a7),d0 + move.w ccr,d1 + asl.l #1,d0 + move.w d1,ccr + bra ewf_full +//a0.l * 4 +ewf_8d: + move.l a0_off+4(a7),d0 + move.w ccr,d1 + asl.l #2,d0 + move.w d1,ccr + bra ewf_full +//a0.l * 8 +ewf_8f: + move.l a0_off+4(a7),d0 + move.w ccr,d1 + asl.l #3,d0 + move.w d1,ccr + bra ewf_full +//a1.w * 1 +ewf_90: + mvs.b (a0)+,d1 + mvs.w a1_off+6(a7),d0 + add.l d0,a1 + add.l d1,a1 + rts +ewf_91: + mvs.w a1_off+6(a7),d0 + bra ewf_full +//a1.w * 2 +ewf_92: + mvs.b (a0)+,d1 + mvs.w a1_off+6(a7),d0 + lea 0(a1,d0*2),a1 + add.l d1,a1 + rts +ewf_93: + mvs.w a1_off+6(a7),d0 + move.w ccr,d1 + asl.l #1,d0 + move.w d1,ccr + bra ewf_full +//a1.w * 4 +ewf_94: + mvs.b (a0)+,d1 + mvs.w a1_off+6(a7),d0 + lea 0(a1,d0*4),a1 + add.l d1,a1 + rts +ewf_95: + mvs.w a1_off+6(a7),d0 + move.w ccr,d1 + asl.l #2,d0 + move.w d1,ccr + bra ewf_full +//a1.w * 8 +ewf_96: + mvs.b (a0)+,d1 + mvs.w a1_off+6(a7),d0 + lea 0(a1,d0*4),a1 + lea 0(a1,d0*4),a1 + add.l d1,a1 + rts +ewf_97: + mvs.w a1_off+6(a7),d0 + move.w ccr,d1 + asl.l #3,d0 + move.w d1,ccr + bra ewf_full +//a1.l * 1 +ewf_99: + move.l a1_off+4(a7),d0 + bra ewf_full +//a1.l * 2 +ewf_9b: + move.l a1_off+4(a7),d0 + move.w ccr,d1 + asl.l #1,d0 + move.w d1,ccr + bra ewf_full +//a1.l * 4 +ewf_9d: + move.l a1_off+4(a7),d0 + move.w ccr,d1 + asl.l #2,d0 + move.w d1,ccr + bra ewf_full +//a1.l * 8 +ewf_9f: + move.l a1_off+4(a7),d0 + move.w ccr,d1 + asl.l #3,d0 + move.w d1,ccr + bra ewf_full +//a2.w * 1 +ewf_a0: + mvs.b (a0)+,d1 + mvs.w a2,d0 + add.l d0,a1 + add.l d1,a1 + rts +ewf_a1: + mvs.w a2,d0 + bra ewf_full +//a2.w * 2 +ewf_a2: + mvs.b (a0)+,d1 + mvs.w a2,d0 + lea 0(a1,d0*2),a1 + add.l d1,a1 + rts +ewf_a3: + mvs.w a2,d0 + move.w ccr,d1 + asl.l #1,d0 + move.w d1,ccr + bra ewf_full +//a2.w * 4 +ewf_a4: + mvs.b (a0)+,d1 + mvs.w a2,d0 + lea 0(a1,d0*4),a1 + add.l d1,a1 + rts +ewf_a5: + mvs.w a2,d0 + move.w ccr,d1 + asl.l #2,d0 + move.w d1,ccr + bra ewf_full +//a2.w * 8 +ewf_a6: + mvs.b (a0)+,d1 + mvs.w a2,d0 + lea 0(a1,d0*4),a1 + lea 0(a1,d0*4),a1 + add.l d1,a1 + rts +ewf_a7: + mvs.w a2,d0 + move.w ccr,d1 + asl.l #3,d0 + move.w d1,ccr + bra ewf_full +//a2.l * 1 +ewf_a9: + move.l a2,d0 + bra ewf_full +//a2.l * 2 +ewf_ab: + move.l a2,d0 + move.w ccr,d1 + asl.l #1,d0 + move.w d1,ccr + bra ewf_full +//a2.l * 4 +ewf_ad: + move.l a2,d0 + move.w ccr,d1 + asl.l #2,d0 + move.w d1,ccr + bra ewf_full +//a2.l * 8 +ewf_af: + move.l a2,d0 + move.w ccr,d1 + asl.l #3,d0 + move.w d1,ccr + bra ewf_full +//a3.w * 1 +ewf_b0: + mvs.b (a0)+,d1 + mvs.w a3,d0 + add.l d0,a1 + add.l d1,a1 + rts +ewf_b1: + mvs.w a3,d0 + bra ewf_full +//a3.w * 2 +ewf_b2: + mvs.b (a0)+,d1 + mvs.w a3,d0 + lea 0(a1,d0*2),a1 + add.l d1,a1 + rts +ewf_b3: + mvs.w a3,d0 + move.w ccr,d1 + asl.l #1,d0 + move.w d1,ccr + bra ewf_full +//a3.w * 4 +ewf_b4: + mvs.b (a0)+,d1 + mvs.w a3,d0 + lea 0(a1,d0*4),a1 + add.l d1,a1 + rts +ewf_b5: + mvs.w a3,d0 + move.w ccr,d1 + asl.l #2,d0 + move.w d1,ccr + bra ewf_full +//a3.w * 8 +ewf_b6: + mvs.b (a0)+,d1 + mvs.w a3,d0 + lea 0(a1,d0*4),a1 + lea 0(a1,d0*4),a1 + add.l d1,a1 + rts +ewf_b7: + mvs.w a3,d0 + move.w ccr,d1 + asl.l #3,d0 + move.w d1,ccr + bra ewf_full +//a3.l * 1 +ewf_b9: + move.l a3,d0 + bra ewf_full +//a3.l * 3 +ewf_bb: + move.l a3,d0 + move.w ccr,d1 + asl.l #1,d0 + move.w d1,ccr + bra ewf_full +//a3.l * 4 +ewf_bd: + move.l a3,d0 + move.w ccr,d1 + asl.l #2,d0 + move.w d1,ccr + bra ewf_full +//a3.l * 8 +ewf_bf: + move.l a3,d0 + move.w ccr,d1 + asl.l #3,d0 + move.w d1,ccr + bra ewf_full +//a4.w * 1 +ewf_c0: + mvs.b (a0)+,d1 + mvs.w a4,d0 + add.l d0,a1 + add.l d1,a1 + rts +ewf_c1: + mvs.w a4,d0 + bra ewf_full +//a4.w * 2 +ewf_c2: + mvs.b (a0)+,d1 + mvs.w a4,d0 + lea 0(a1,d0*2),a1 + add.l d1,a1 + rts +ewf_c3: + mvs.w a4,d0 + move.w ccr,d1 + asl.l #1,d0 + move.w d1,ccr + bra ewf_full +//a4.w * 4 +ewf_c4: + mvs.b (a0)+,d1 + mvs.w a4,d0 + lea 0(a1,d0*4),a1 + add.l d1,a1 + rts +ewf_c5: + mvs.w a4,d0 + move.w ccr,d1 + asl.l #2,d0 + move.w d1,ccr + bra ewf_full +//a4.w * 8 +ewf_c6: + mvs.b (a0)+,d1 + mvs.w a4,d0 + lea 0(a1,d0*4),a1 + lea 0(a1,d0*4),a1 + add.l d1,a1 + rts +ewf_c7: + mvs.w a4,d0 + move.w ccr,d1 + asl.l #3,d0 + move.w d1,ccr + bra ewf_full +//a4.l * 1 +ewf_c9: + move.l a4,d0 + bra ewf_full +//a4.l * 4 +ewf_cb: + move.l a4,d0 + move.w ccr,d1 + asl.l #1,d0 + move.w d1,ccr + bra ewf_full +//a4.l * 4 +ewf_cd: + move.l a4,d0 + move.w ccr,d1 + asl.l #2,d0 + move.w d1,ccr + bra ewf_full +//a4.l * 8 +ewf_cf: + move.l a4,d0 + move.w ccr,d1 + asl.l #3,d0 + move.w d1,ccr + bra ewf_full +//a5.w * 1 +ewf_d0: + mvs.b (a0)+,d1 + mvs.w a5,d0 + add.l d0,a1 + add.l d1,a1 + rts +ewf_d1: + mvs.w a5,d0 + bra ewf_full +//a5.w * 2 +ewf_d2: + mvs.b (a0)+,d1 + mvs.w a5,d0 + lea 0(a1,d0*2),a1 + add.l d1,a1 + rts +ewf_d3: + mvs.w a5,d0 + move.w ccr,d1 + asl.l #1,d0 + move.w d1,ccr + bra ewf_full +//a5.w * 4 +ewf_d4: + mvs.b (a0)+,d1 + mvs.w a5,d0 + lea 0(a1,d0*4),a1 + add.l d1,a1 + rts +ewf_d5: + mvs.w a5,d0 + move.w ccr,d1 + asl.l #2,d0 + move.w d1,ccr + bra ewf_full +//a5.w * 8 +ewf_d6: + mvs.b (a0)+,d1 + mvs.w a5,d0 + lea 0(a1,d0*4),a1 + lea 0(a1,d0*4),a1 + add.l d1,a1 + rts +ewf_d7: + mvs.w a5,d0 + move.w ccr,d1 + asl.l #3,d0 + move.w d1,ccr + bra ewf_full +//a5.l * 1 +ewf_d9: + move.l a5,d0 + bra ewf_full +//a5.l * 5 +ewf_db: + move.l a5,d0 + move.w ccr,d1 + asl.l #1,d0 + move.w d1,ccr + bra ewf_full +//a5.l * 4 +ewf_dd: + move.l a5,d0 + move.w ccr,d1 + asl.l #2,d0 + move.w d1,ccr + bra ewf_full +//a5.l * 8 +ewf_df: + move.l a5,d0 + move.w ccr,d1 + asl.l #3,d0 + move.w d1,ccr + bra ewf_full +//a6.w * 1 +ewf_e0: + mvs.b (a0)+,d1 + mvs.w a6,d0 + add.l d0,a1 + add.l d1,a1 + rts +ewf_e1: + mvs.w a6,d0 + bra ewf_full +//a6.w * 2 +ewf_e2: + mvs.b (a0)+,d1 + mvs.w a6,d0 + lea 0(a1,d0*2),a1 + add.l d1,a1 + rts +ewf_e3: + mvs.w a6,d0 + move.w ccr,d1 + asl.l #1,d0 + move.w d1,ccr + bra ewf_full +//a6.w * 4 +ewf_e4: + mvs.b (a0)+,d1 + mvs.w a6,d0 + lea 0(a1,d0*4),a1 + add.l d1,a1 + rts +ewf_e5: + mvs.w a6,d0 + move.w ccr,d1 + asl.l #2,d0 + move.w d1,ccr + bra ewf_full +//a6.w * 8 +ewf_e6: + mvs.b (a0)+,d1 + mvs.w a6,d0 + lea 0(a1,d0*4),a1 + lea 0(a1,d0*4),a1 + add.l d1,a1 + rts +ewf_e7: + mvs.w a6,d0 + move.w ccr,d1 + asl.l #3,d0 + move.w d1,ccr + bra ewf_full +//a6.l * 1 +ewf_e9: + move.l a6,d0 + bra ewf_full +//a6.l * 6 +ewf_eb: + move.l a6,d0 + move.w ccr,d1 + asl.l #1,d0 + move.w d1,ccr + bra ewf_full +//a6.l * 4 +ewf_ed: + move.l a6,d0 + move.w ccr,d1 + asl.l #2,d0 + move.w d1,ccr + bra ewf_full +//a6.l * 8 +ewf_ef: + move.l a6,d0 + move.w ccr,d1 + asl.l #3,d0 + move.w d1,ccr + bra ewf_full +//usp.w * 1 +ewf_f0: + mvs.b (a0)+,d1 + move.l a1,-(a7) + move.l usp,a1 + add.l (a7)+,a1 + add.l d1,a1 + rts +ewf_f1: + move.l a1,-(a7) + move.l usp,a1 + mvs.w a1,d0 + move.l (a7)+,a1 + bra ewf_full +//usp.w * 2 +ewf_f2: + mvs.b (a0)+,d1 + move.l usp,a1 + mvs.w a1,d0 + move.l (a7)+,a1 + lea 0(a1,d0*2),a1 + add.l d1,a1 + rts +ewf_f3: + move.l usp,a1 + move.l a1,-(a7) + move.l usp,a1 + add.l (a7)+,a1 + move.w ccr,d1 + asl.l #1,d0 + move.w d1,ccr + bra ewf_full +//usp.w * 4 +ewf_f4: + mvs.b (a0)+,d1 + move.l a1,-(a7) + move.l usp,a1 + add.l (a7)+,a1 + lea 0(a1,d0*4),a1 + add.l d1,a1 + rts +ewf_f5: + move.l a1,-(a7) + move.l usp,a1 + add.l (a7)+,a1 + move.w ccr,d1 + asl.l #2,d0 + move.w d1,ccr + bra ewf_full +//usp.w * 8 +ewf_f6: + mvs.b (a0)+,d1 + move.l a1,-(a7) + move.l usp,a1 + add.l (a7)+,a1 + lea 0(a1,d0*4),a1 + lea 0(a1,d0*4),a1 + add.l d1,a1 + rts +ewf_f7: + move.l a1,-(a7) + move.l usp,a1 + add.l (a7)+,a1 + move.w ccr,d1 + asl.l #3,d0 + move.w d1,ccr + bra ewf_full +//usp.l * 1 +ewf_f9: + move.l a1,-(a7) + move.l usp,a1 + add.l (a7)+,a1 + bra ewf_full +//usp.l * 7 +ewf_fb: + move.l a1,-(a7) + move.l usp,a1 + add.l (a7)+,a1 + move.w ccr,d1 + asl.l #1,d0 + move.w d1,ccr + bra ewf_full +//usp.l * 4 +ewf_fd: + move.l a1,-(a7) + move.l usp,a1 + add.l (a7)+,a1 + move.w ccr,d1 + asl.l #2,d0 + move.w d1,ccr + bra ewf_full +//usp.l * 8 +ewf_ff: + move.l a1,-(a7) + move.l usp,a1 + add.l (a7)+,a1 + move.w ccr,d1 + asl.l #3,d0 + move.w d1,ccr + bra ewf_full +//----------------------------------------------------------------------------------- +// extension full format rest von ewf +//-------------------------------------------------------------------- +ewf_full: + mvz.b (a0)+,d1 + mvs.w ewff_table-*-2(pc,d1*2),d1 + jmp ewff_table-*-2(pc,d1) +ewff_table: + .short ewff_end-ewff_table,ewff_i0v-ewff_table,ewff_iwv-ewff_table,ewff_ilv-ewff_table //00 + .short ewff_end-ewff_table,ewff_i0n-ewff_table,ewff_iwn-ewff_table,ewff_iln-ewff_table + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_i0v-ewff_table,ewff_iwv-ewff_table,ewff_ilv-ewff_table //10 + .short ewff_end-ewff_table,ewff_i0n-ewff_table,ewff_iwn-ewff_table,ewff_iln-ewff_table + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_bsw-ewff_table,ewff_w0v-ewff_table,ewff_wwv-ewff_table,ewff_wlv-ewff_table //20 + .short ewff_end-ewff_table,ewff_w0n-ewff_table,ewff_wwn-ewff_table,ewff_wln-ewff_table + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_bsl-ewff_table,ewff_l0v-ewff_table,ewff_lwv-ewff_table,ewff_llv-ewff_table //30 + .short ewff_end-ewff_table,ewff_l0n-ewff_table,ewff_lwn-ewff_table,ewff_lln-ewff_table + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_mi0-ewff_table,ewff_miw-ewff_table,ewff_mil-ewff_table //40 + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_mi0-ewff_table,ewff_miw-ewff_table,ewff_mil-ewff_table //50 + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_bsw-ewff_table,ewff_wi0-ewff_table,ewff_wiw-ewff_table,ewff_wil-ewff_table //60 + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_bsl-ewff_table,ewff_li0-ewff_table,ewff_liw-ewff_table,ewff_lil-ewff_table //70 + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_i0v-ewff_table,ewff_iwv-ewff_table,ewff_ilv-ewff_table //80 + .short ewff_end-ewff_table,ewff_i0n-ewff_table,ewff_iwn-ewff_table,ewff_iln-ewff_table + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_i0v-ewff_table,ewff_iwv-ewff_table,ewff_ilv-ewff_table //90 + .short ewff_end-ewff_table,ewff_i0n-ewff_table,ewff_iwn-ewff_table,ewff_iln-ewff_table + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_i0v-ewff_table,ewff_iwv-ewff_table,ewff_ilv-ewff_table //a0 + .short ewff_end-ewff_table,ewff_i0n-ewff_table,ewff_iwn-ewff_table,ewff_iln-ewff_table + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_i0v-ewff_table,ewff_iwv-ewff_table,ewff_ilv-ewff_table //b0 + .short ewff_end-ewff_table,ewff_i0n-ewff_table,ewff_iwn-ewff_table,ewff_iln-ewff_table + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_mi0-ewff_table,ewff_miw-ewff_table,ewff_mil-ewff_table //c0 + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_mi0-ewff_table,ewff_miw-ewff_table,ewff_mil-ewff_table //d0 + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_mi0-ewff_table,ewff_miw-ewff_table,ewff_mil-ewff_table //e0 + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_mi0-ewff_table,ewff_miw-ewff_table,ewff_mil-ewff_table //f0 + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table + .short ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table,ewff_end-ewff_table +ewff_end: + rts +ewff_bsw: + mvs.w (a0)+,d1 + add.l d1,a1 + add.l d0,a1 + rts +ewff_bsl: + move.l (a0)+,d1 + add.l d1,a1 + add.l d0,a1 + rts +ewff_i0v: + add.l d0,a1 + move.l (a1),a1 + rts +ewff_iwv: + add.l d0,a1 + move.l (a1),a1 + mvs.w (a0)+,d0 + add.l d0,a1 + rts +ewff_ilv: + add.l d0,a1 + move.l (a1),a1 + move.l (a0)+,d0 + add.l d0,a1 + rts +ewff_i0n: + move.l (a1),a1 + add.l d0,a1 + rts +ewff_iwn: + move.l (a1),a1 + add.l d0,a1 + mvs.w (a0)+,d0 + add.l d0,a1 + rts +ewff_iln: + move.l (a1),a1 + add.l d0,a1 + move.l (a0)+,d0 + add.l d0,a1 + rts +ewff_mi0: + add.l d0,a1 + rts +ewff_miw: + mvs.w (a0)+,d1 + add.l d0,a1 + add.l d1,a1 + rts +ewff_mil: + move.l (a0)+,d1 + add.l d0,a1 + add.l d1,a1 + rts +ewff_wi0: + mvs.w (a0)+,d1 + add.l d1,a1 + add.l d0,a1 + rts +ewff_wiw: + mvs.w (a0)+,d1 + add.l d1,a1 + mvs.w (a0)+,d1 + add.l d0,a1 + add.l d1,a1 + rts +ewff_wil: + mvs.w (a0)+,d1 + add.l d1,a1 + move.l (a0)+,d1 + add.l d0,a1 + add.l d1,a1 + rts +ewff_li0: + move.l (a0)+,d1 + add.l d1,a1 + add.l d0,a1 + rts +ewff_liw: + move.l (a0)+,d1 + add.l d1,a1 + mvs.w (a0)+,d1 + add.l d0,a1 + add.l d1,a1 + rts +ewff_lil: + move.l (a0)+,d1 + add.l d1,a1 + move.l (a0)+,d1 + add.l d0,a1 + add.l d1,a1 + rts +ewff_w0v: + mvs.w (a0)+,d1 + add.l d0,a1 + add.l d1,a1 + move.l (a1),a1 + rts +ewff_wwv: + mvs.w (a0)+,d1 + add.l d0,a1 + add.l d1,a1 + move.l (a1),a1 + mvs.w (a0)+,d0 + add.l d0,a1 + rts +ewff_wlv: + mvs.w (a0)+,d1 + add.l d0,a1 + add.l d1,a1 + move.l (a1),a1 + move.l (a0)+,d0 + add.l d0,a1 + rts +ewff_l0v: + move.l (a0)+,d1 + add.l d0,a1 + add.l d1,a1 + move.l (a1),a1 + rts +ewff_lwv: + move.l (a0)+,d1 + add.l d0,a1 + add.l d1,a1 + move.l (a1),a1 + mvs.w (a0)+,d0 + add.l d0,a1 + rts +ewff_llv: + move.l (a0)+,d1 + add.l d0,a1 + add.l d1,a1 + move.l (a1),a1 + move.l (a0)+,d0 + add.l d0,a1 + rts +ewff_w0n: + mvs.w (a0)+,d1 + add.l d1,a1 + move.l (a1),a1 + add.l d0,a1 + rts +ewff_wwn: + mvs.w (a0)+,d1 + add.l d1,a1 + move.l (a1),a1 + mvs.w (a0)+,d0 + add.l d0,a1 + add.l d0,a1 + rts +ewff_wln: + mvs.w (a0)+,d1 + add.l d1,a1 + move.l (a1),a1 + move.l (a0)+,d0 + add.l d0,a1 + add.l d0,a1 + rts +ewff_l0n: + move.l (a0)+,d1 + add.l d1,a1 + move.l (a1),a1 + add.l d0,a1 + rts +ewff_lwn: + move.l (a0)+,d1 + add.l d1,a1 + move.l (a1),a1 + mvs.w (a0)+,d0 + add.l d0,a1 + add.l d0,a1 + rts +ewff_lln: + move.l (a0)+,d1 + add.l d1,a1 + move.l (a1),a1 + move.l (a0)+,d0 + add.l d0,a1 + add.l d0,a1 + rts +/**************************************************************************************************************** + diff --git a/BaS_codewarrior/firebeeV1/sources/exceptions.s b/BaS_codewarrior/firebeeV1/sources/exceptions.s new file mode 100644 index 0000000..9f23af4 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/exceptions.s @@ -0,0 +1,799 @@ +/********************************************************/ +/* exception vectoren intialisieren +/********************************************************/ + +.include "startcf.h" + +.extern ___Bas_base +.extern ___SUP_SP +.extern ___BOOT_FLASH +.extern ___RAMBAR0 +.extern _rt_cacr +.extern _rt_mod +.extern _rt_ssp +.extern _rt_usp +.extern _rt_vbr +.extern _illegal_instruction +.extern _privileg_violation +.extern _mmutr_miss +.extern ___MBAR +.extern ___MMUBAR +.extern _video_tlb +.extern _video_sbt +.extern cpusha + +/* Register read/write macros */ +#define MCF_MMU_MMUCR ___MMUBAR +#define MCF_MMU_MMUOR ___MMUBAR+0x04 +#define MCF_MMU_MMUSR ___MMUBAR+0x08 +#define MCF_MMU_MMUAR ___MMUBAR+0x10 +#define MCF_MMU_MMUTR ___MMUBAR+0x14 +#define MCF_MMU_MMUDR ___MMUBAR+0x18 + +#define MCF_EPORT_EPPAR ___MBAR+0xF00 +#define MCF_EPORT_EPDDR ___MBAR+0xF04 +#define MCF_EPORT_EPIER ___MBAR+0xF05 +#define MCF_EPORT_EPDR ___MBAR+0xF08 +#define MCF_EPORT_EPPDR ___MBAR+0xF09 +#define MCF_EPORT_EPFR ___MBAR+0xF0C + +#define MCF_GPIO_PODR_FEC1L ___MBAR+0xA07 + +#define MCF_PSC0_PSCTB_8BIT ___MBAR+0x860C + +#define MCF_PSC3_PSCRB_8BIT ___MBAR+0x890C +#define MCF_PSC3_PSCTB_8BIT ___MBAR+0x890C + +.public _vec_init + +//mmu --------------------------------------------------- +/* Register read/write macros */ +#define MCF_MMU_MMUCR ___MMUBAR +#define MCF_MMU_MMUOR ___MMUBAR+0x04 +#define MCF_MMU_MMUSR ___MMUBAR+0x08 +#define MCF_MMU_MMUAR ___MMUBAR+0x10 +#define MCF_MMU_MMUTR ___MMUBAR+0x14 +#define MCF_MMU_MMUDR ___MMUBAR+0x18 + + +/* Bit definitions and macros for MCF_MMU_MMUCR */ +#define MCF_MMU_MMUCR_EN (0x1) +#define MCF_MMU_MMUCR_ASM (0x2) + +/* Bit definitions and macros for MCF_MMU_MMUOR */ +#define MCF_MMU_MMUOR_UAA (0x1) +#define MCF_MMU_MMUOR_ACC (0x2) +#define MCF_MMU_MMUOR_RW (0x4) +#define MCF_MMU_MMUOR_ADR (0x8) +#define MCF_MMU_MMUOR_ITLB (0x10) +#define MCF_MMU_MMUOR_CAS (0x20) +#define MCF_MMU_MMUOR_CNL (0x40) +#define MCF_MMU_MMUOR_CA (0x80) +#define MCF_MMU_MMUOR_STLB (0x100) +#define MCF_MMU_MMUOR_AA(x) (((x)&0xFFFF)<<0x10) + +/* Bit definitions and macros for MCF_MMU_MMUSR */ +#define MCF_MMU_MMUSR_HIT (0x2) +#define MCF_MMU_MMUSR_WF (0x8) +#define MCF_MMU_MMUSR_RF (0x10) +#define MCF_MMU_MMUSR_SPF (0x20) + +/* Bit definitions and macros for MCF_MMU_MMUAR */ +#define MCF_MMU_MMUAR_FA(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_MMU_MMUTR */ +#define MCF_MMU_MMUTR_V (0x1) +#define MCF_MMU_MMUTR_SG (0x2) +#define MCF_MMU_MMUTR_ID(x) (((x)&0xFF)<<0x2) +#define MCF_MMU_MMUTR_VA(x) (((x)&0x3FFFFF)<<0xA) + +/* Bit definitions and macros for MCF_MMU_MMUDR */ +#define MCF_MMU_MMUDR_LK (0x2) +#define MCF_MMU_MMUDR_X (0x4) +#define MCF_MMU_MMUDR_W (0x8) +#define MCF_MMU_MMUDR_R (0x10) +#define MCF_MMU_MMUDR_SP (0x20) +#define MCF_MMU_MMUDR_CM(x) (((x)&0x3)<<0x6) +#define MCF_MMU_MMUDR_SZ(x) (((x)&0x3)<<0x8) +#define MCF_MMU_MMUDR_PA(x) (((x)&0x3FFFFF)<<0xA) + +#define std_mmutr (MCF_MMU_MMUTR_SG|MCF_MMU_MMUTR_V) +#define mmuord_d ( MCF_MMU_MMUOR_ACC|MCF_MMU_MMUOR_UAA) +#define mmuord_i (MCF_MMU_MMUOR_ITLB|MCF_MMU_MMUOR_ACC|MCF_MMU_MMUOR_UAA) +#define wt_mmudr (MCF_MMU_MMUDR_SZ(00)|MCF_MMU_MMUDR_CM(00)|MCF_MMU_MMUDR_R|MCF_MMU_MMUDR_W|MCF_MMU_MMUDR_X) +#define cb_mmudr (MCF_MMU_MMUDR_SZ(00)|MCF_MMU_MMUDR_CM(01)|MCF_MMU_MMUDR_R|MCF_MMU_MMUDR_W|MCF_MMU_MMUDR_X) +#define nc_mmudr (MCF_MMU_MMUDR_SZ(00)|MCF_MMU_MMUDR_CM(10)|MCF_MMU_MMUDR_R|MCF_MMU_MMUDR_W|MCF_MMU_MMUDR_X) +//--------------------------------------------------- +/********************************************************************* +* +* General Purpose Timers (GPT) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_GPT0_GMS ___MBAR+0x800 + +/********************************************************************* +* +* Slice Timers (SLT) +* +*********************************************************************/ + +#define MCF_SLT0_SCNT ___MBAR+0x908 + +/**********************************************************/ +// macros +/**********************************************************/ +irq: .macro vector,int_mask,clr_int + move.w #0x2700,sr // disable interrupt + subq.l #8,a7 + movem.l d0/a5,(a7) // register sichern + lea MCF_EPORT_EPFR,a5 + move.b #clr_int,(a5) // clear int pending +// test auf protect mode --------------------- + move.b DIP_SWITCHa,d0 + btst #7,d0 + bne @irq_protect // ja-> +// ------------------------------------------- + movem.l (a7),d0/a5 // register zurück + addq.l #8,a7 + move.l vector,-(a7) + move #0x2\200,sr + rts +@irq_protect: + move.l usp,a5 // usp holen + tst.b _rt_mod // supervisor? + bne @sev_supint // ja -> + mov3q.l #-1,_rt_mod // auf supervisor setzen + move.l a5,_rt_usp // rt_usp speichern + move.l _rt_ssp,a5 // rt_ssp holen +#ifdef cf_stack + move.l 12(a7),-(a5) // pc transferieren + move.l 8(a7),-(a5) // sr,vec +#else + move.w 8(a7),-(a5) // vector nr. + move.l 12(a7),-(a5) // pc verschieben + move.w 10(a7),-(a5) // sr verschieben +#endif + bra @irq_end +@sev_supint: +#ifdef cf_stack + move.l 12(a7),-(a5) // pc transferieren + move.l 8(a7),-(a5) // sr,vec + bset #5,2(a5) // auf super setzen +#else + move.w 8(a7),-(a5) // vector nr. + move.l 12(a7),-(a5) // pc verschieben + move.w 10(a7),-(a5) // sr verschieben + bset #5,(a5) // auf super +#endif +@irq_end: + move.l a5,usp // usp setzen + lea vector,a5 + adda.l _rt_vbr,a5 + move.l (a5),12(a7) // vectoradresse eintragen + move.b #int_mask,10(a7) // intmaske setzen + movem.l (a7),d0/a5 // register zurück + addq.l #8,a7 + rte // und weg + .endm +/*********************************************************/ +.text +_vec_init: + mov3q.l #-1,_rt_mod // rt_mod auf super + clr.l _rt_ssp + clr.l _rt_usp + clr.l _rt_vbr + move.l #___RAMBAR0,d0 // sind in rambar0 + movec d0,VBR + move.l d0,a0 + move.l a0,a2 +init_vec: + move.l #256,d0 + lea std_exc_vec(pc),a1 // standard vector +init_vec_loop: + move.l a1,(a2)+ // mal standard vector für alle setzen + subq.l #1,d0 + bne init_vec_loop + + move.l #___SUP_SP,(a0) + lea reset_vector(pc),a1 + move.l a1,0x04(a0) + lea acess(pc),a1 + move.l a1,0x08(a0) + + move.b DIP_SWITCHa,d0 // ++ vr + btst #7,d0 + beq no_protect_vectors + + lea _illegal_instruction(pc),a1 + move.l a1,0x0c(a0) + lea _illegal_instruction(pc),a1 + move.l a1,0x10(a0) + lea zero_divide(pc),a1 + move.l a1,0x14(a0) + lea _privileg_violation(pc),a1 + move.l a1,0x20(a0) + lea linea(pc),a1 + move.l a1,0x28(a0) + lea linef(pc),a1 + move.l a1,0x2c(a0) + lea format(pc),a1 + move.l a1,0x38(a0) + + // floating point overflow + lea flpoow(pc),a1 + move.l a1,0xc0(a0) + lea flpoow(pc),a1 + move.l a1,0xc4(a0) + lea flpoow(pc),a1 + move.l a1,0xc8(a0) + lea flpoow(pc),a1 + move.l a1,0xcc(a0) + lea flpoow(pc),a1 + move.l a1,0xd0(a0) + lea flpoow(pc),a1 + move.l a1,0xd4(a0) + lea flpoow(pc),a1 + move.l a1,0xd8(a0) + lea flpoow(pc),a1 + move.l a1,0xdc(a0) +no_protect_vectors: + + +// int 1-7 + lea irq1(pc),a1 + move.l a1,0x104(a0) + lea irq2(pc),a1 + move.l a1,0x108(a0) + lea irq3(pc),a1 + move.l a1,0x10c(a0) + lea irq4(pc),a1 + move.l a1,0x110(a0) + lea irq5(pc),a1 + move.l a1,0x114(a0) + lea irq6(pc),a1 + move.l a1,0x118(a0) + lea irq7(pc),a1 + move.l a1,0x11c(a0) +//psc_vectors + lea psc3(pc),a1 + move.l a1,0x180(a0) +//timer 1 vectors + lea timer0(pc),a1 + move.l a1,0x1f8(a0) + rts +/********************************************************/ +/* exception vector routinen +/********************************************************/ +vector_table_start: +std_exc_vec: + move.w #0x2700,sr // disable interrupt + subq.l #8,a7 + movem.l d0/a5,(a7) // register sichern +// test auf protect mode ------------------------------- + move.b DIP_SWITCHa,d0 + btst #7,d0 + bne stv_protect // ja-> +//------------------------------------------------------ + move.w 8(a7),d0 // vector holen + and.l #0x3fc,d0 // vector nummer ausmaskieren + add.l _rt_vbr,d0 // + basis + move.l d0,a5 + move.l (a5),d0 + move.l 4(a7),a5 // a5 zurück + move.l d0,4(a7) + move.w 10(a7),d0 + bset #13,d0 // super + move.w d0,sr // orginal sr wert in super setzen + move.l (a7)+,d0 // d0 zurück + rts +stv_protect: + move.l usp,a5 // usp holen + tst.b _rt_mod // supervisor? + bne sev_sup // ja -> + mov3q.l #-1,_rt_mod // auf supervisor setzen + move.l a5,_rt_usp // rt_usp speichern + move.l _rt_ssp,a5 // rt_ssp holen +#ifdef cf_stack + move.l 12(a7),-(a5) // pc transferieren + move.l 8(a7),d0 // sr holen + move.l d0,-(a5) // sr transferieren + swap d0 // vec -> lw +#else + move.w 8(a7),d0 // vector holen + move.w d0,-(a5) // ablegen + move.l 12(a7),-(a5) // pc transferieren + move.w 10(a7),-(a5) // sr transferieren +#endif + move.l a5,usp // usp setzen + and.l #0x3fc,d0 // vector nummer ausmaskieren + add.l _rt_vbr,d0 // + basis + move.l d0,a5 + move.l (a5),12(a7) // hier geht's weiter + movem.l (a7),d0/a5 // register zurück + addq.l #8,a7 + rte // und weg +sev_sup: +#ifdef cf_stack + move.l 12(a7),-(a5) // pc transferieren + move.l 8(a7),d0 // sr holen + bset #13,d0 // war aus rt super + move.l d0,-(a5) // sr transferieren + swap d0 // vec -> lw +#else + move.w 8(a7),d0 // vector holen + move.w d0,-(a5) // ablegen + move.l 12(a7),-(a5) // pc transferieren + move.w 10(a7),-(a5) // sr transferieren + bset #5,(a5) // war aus super +#endif + move.l a5,usp // usp setzen + and.l #0x3fc,d0 // vector nummer ausmaskieren + add.l _rt_vbr,d0 // + basis + move.l d0,a5 + move.l (a5),12(a7) // hier geht's weiter + movem.l (a7),d0/a5 // register zurück + addq.l #8,a7 + rte // und weg +//******************************************* +reset_vector: + move.w #0x2700,sr // disable interrupt + move.l #0x31415926,d0 + cmp.l 0x426,d0 // reset vector gültg? + beq std_exc_vec // ja-> + jmp ___BOOT_FLASH // sonst kaltstart +acess: + move.w #0x2700,sr // disable interrupt + move.l d0,-(sp) // ++ vr + move.w 4(sp),d0 + andi.l #0x0c03,d0 + cmpi.l #0x0401,d0 + beq access_mmu + cmpi.l #0x0402,d0 + beq access_mmu + cmpi.l #0x0802,d0 + beq access_mmu + cmpi.l #0x0c02,d0 + beq access_mmu + bra bus_error +access_mmu: + move.l MCF_MMU_MMUSR,d0 + btst #1,d0 + bne bus_error + move.l MCF_MMU_MMUAR,d0 + cmp.l #___Bas_base,d0 // max User RAM Bereich + bge bus_error // grösser -> bus error + bra _mmutr_miss +bus_error: + move.l (sp)+,d0 + bra std_exc_vec + +zero_divide: + move.w #0x2700,sr // disable interrupt + move.l a0,-(a7) + move.l d0,-(a7) + move.l 12(a7),a0 // pc + move.w (a0)+,d0 // befehlscode + btst #7,d0 // long? + beq zd_word // nein-> + addq.l #2,a0 +zd_word: + and.l 0x3f,d0 // ea ausmaskieren + cmp.w #0x08,d0 // -(ax) oder weniger + ble zd_end + addq.l #2,a0 + cmp.w #0x39,d0 // xxx.L + bne zd_nal + addq.l #2,a0 + bra zd_end +zd_nal: cmp.w #0x3c,d0 // immediate? + bne zd_end // nein-> + btst #7,d0 // long? + beq zd_end // nein + addq.l #2,a0 +zd_end: + move.l a0,12(a7) + move.l (a7)+,d0 + move.l (a7)+,a0 + rte + +linea: + move.w #0x2700,sr // disable interrupt + halt + nop + nop +linef: + move.w #0x2700,sr // disable interrupt + halt + nop + nop +format: + move.w #0x2700,sr // disable interrupt + halt + nop + nop +//floating point +flpoow: + move.w #0x2700,sr // disable interrupt + halt + nop + nop +irq1: + irq 0x64,1,0x02 +irq2: //vsync + // move.b #3,2(a7) + // rte + irq 0x68,2,0x04 +irq3: + irq 0x6c,3,0x08 +irq4: // vsync + irq 0x70,4,0x10 +irq5: // acp + irq 0x74,5,0x20 +irq6: // mfp + move.w #0x2700,sr // disable interrupt + subq.l #8,a7 + movem.l d0/a5,(a7) // register sichern + lea MCF_EPORT_EPFR,a5 + move.b #0x40,(a5) // clear int6 +// test auf timeout screen adr change ------------------------------------------------------- + move.l _video_sbt,d0 + beq irq6_non_sca // wenn 0 nichts zu tun + sub.l #0x70000000,d0 // 14 sec abzählen + lea MCF_SLT0_SCNT,a5 + cmp.l (a5),d0 // aktuelle zeit weg + ble irq6_non_sca // noch nicht abgelaufen + lea -28(a7),a7 + movem.l d0-d4/a0-a1,(a7) // register sichern + clr.l d3 // beginn mit 0 + bsr cpusha // cache leeren + // eintrag suchen + irq6_next_sca: + move.l d3,d0 + move.l d0,MCF_MMU_MMUAR // addresse + move.l #0x106,d4 + move.l d4,MCF_MMU_MMUOR // suchen -> + nop + move.l MCF_MMU_MMUOR,d4 + clr.w d4 + swap d4 + move.l d4,MCF_MMU_MMUAR + mvz.w #0x10e,d4 + move.l d4,MCF_MMU_MMUOR // einträge holen aus mmu + nop + move.l MCF_MMU_MMUTR,d4 // ID holen + lsr.l #2,d4 // bit 9 bis 2 + cmp.w #sca_page_ID,d4 // ist screen change ID? + bne irq6_sca_pn // nein -> page keine screen area next +// eintrag ändern + add.l #std_mmutr,d0 + move.l d3,d1 // page 0? + beq irq6_sca_pn0 // ja -> + add.l #cb_mmudr,d1 // sonst page cb + bra irq6_sca_pn1c +irq6_sca_pn0: + add.l #wt_mmudr|MCF_MMU_MMUDR_LK,d1 // page wt and locked +irq6_sca_pn1c: + mvz.w #0x10b,d2 // MMU update + move.l d0,MCF_MMU_MMUTR + move.l d1,MCF_MMU_MMUDR + move.l d2,MCF_MMU_MMUOR // setze tlb data only + nop +// page copy + move.l d3,a0 + add.l #0x60000000,a0 + move.l d3,a1 + move.l #0x10000,d4 // die ganze page +irq6_vcd0_loop: + move.l (a0)+,(a1)+ // page copy + move.l (a0)+,(a1)+ + move.l (a0)+,(a1)+ + move.l (a0)+,(a1)+ + subq.l #1,d4 + bne irq6_vcd0_loop + nop +irq6_sca_pn: + add.l #0x00100000,d3 // next + cmp.l #0x00d00000,d3 // ende? + blt irq6_next_sca // nein-> + + move.l #0x2000,d0 + move.l d0,_video_tlb // anfangszustand wieder herstellen + clr.l _video_sbt // zeit löschen + + movem.l (a7),d0-d4/a0-a1 // register zurück + lea 28(a7),a7 +irq6_non_sca: +// test auf acsi dma ----------------------------------------------------------------- + lea 0xfffffa0b,a5 + bset #7,-4(a5) // int ena + btst.b #7,(a5) // acsi dma int? + beq non_acsi_dma + bsr acsi_dma +non_acsi_dma: +// ---------------------------------------------------------------------------------- + tst.b (a5) + bne irq6_1 + tst.b 2(a5) + bne irq6_1 + movem.l (a7),d0/a5 + addq.l #8,a7 + rte +irq6_1: + lea MCF_GPIO_PODR_FEC1L,a5 + bclr.b #4,(a5) // led on + lea blinker(pc),a5 + addq.l #1,(a5) // +1 + move.l (a5),d0 + and.l #0x80,d0 + bne irq6_2 + lea MCF_GPIO_PODR_FEC1L,a5 + bset.b #4,(a5) // led off +irq6_2: +// test auf protect mode --------------------- + move.b DIP_SWITCHa,d0 + btst #7,d0 + bne irq6_3 // ja-> +// ------------------------------------------- + move.l 0xF0020000,a5 // vector holen + add.l _rt_vbr,a5 // basis + move.l (a5),d0 // vector holen + move.l 4(a7),a5 // a5 zurück + move.l d0,4(a7) // vector eintragen + move.l (a7)+,d0 // d0 zurück + move #0x2600,sr + rts +irq6_3: + move.l usp,a5 // usp holen + tst.b _rt_mod // supervisor? + bne sev_sup6 // ja -> + mov3q.l #-1,_rt_mod // auf supervisor setzen + move.l a5,_rt_usp // rt_usp speichern + move.l _rt_ssp,a5 // rt_ssp holen +#ifdef cf_stack + move.l 12(a7),-(a5) // pc transferieren + move.l 8(a7),-(a5) // sr transferieren +#else + move.w 8(a7),-(a5) // vector transferieren + move.l 12(a7),-(a5) // pc transferieren + move.w 10(a7),-(a5) // sr transferieren +#endif + move.l a5,usp // usp setzen + move.l 0xF0020000,a5 // vector holen: intack routine + add.l _rt_vbr,a5 // virtuelle VBR des Systems + move.l (a5),12(a7) // hier gehts weiter + movem.l (a7),d0/a5 // register zurück + addq.l #8,a7 + move.b #6,2(a7) // intmaske setzen + rte // und weg +sev_sup6: +#ifdef cf_stack + move.l 12(a7),-(a5) // pc transferieren + move.l 8(a7),-(a5) // sr,vec + bset #5,2(a5) // auf super setzen +#else + move.w 8(a7),-(a5) // vector nr. + move.l 12(a7),-(a5) // pc verschieben + move.w 10(a7),-(a5) // sr verschieben + bset #5,(a5) // auf super +#endif + move.l a5,usp // usp setzen + move.l 0xF0020000,a5 // vector holen: intack routine + add.l _rt_vbr,a5 // virtuelle VBR des Systems + move.l (a5),12(a7) // hier gehts weiter + movem.l (a7),d0/a5 // register zurück + rts +blinker:.long 0 +/**************************************************/ +/* pseudo dma */ +/**************************************************/ +acsi_dma: // atari dma + move.l a1,-(a7) + move.l d1,-(a7) + + lea MCF_PSC0_PSCTB_8BIT,a1 // ++ vr + move.l #'DMA ',(a1) + move.l #'INT!',(a1) + + lea 0xf0020110,a5 // fifo daten +acsi_dma_start: + move.l -12(a5),a1 // dma adresse + move.l -8(a5),d0 // byt counter + ble acsi_dma_end + btst.b #0,-16(a5) // write? (dma modus reg) + bne acsi_dma_wl // ja-> +acsi_dma_rl: + tst.b -4(a5) // dma req? + bpl acsi_dma_fertig // nein-> + move.l (a5),(a1)+ // read 4 bytes + move.l (a5),(a1)+ // read 4 bytes + move.l (a5),(a1)+ // read 4 bytes + move.l (a5),(a1)+ // read 4 bytes + + moveq #'.',d1 + move.b d1,MCF_PSC0_PSCTB_8BIT + + sub.l #16,d0 // byt counter -16 + bpl acsi_dma_rl + bra acsi_dma_fertig +acsi_dma_wl: + tst.b -4(a5) // dma req? + bpl acsi_dma_fertig // nein-> + move.l (a1)+,(a5) // write 4 byts + move.l (a1)+,(a5) // write 4 byts + move.l (a1)+,(a5) // write 4 byts + move.l (a1)+,(a5) // write 4 byts + + moveq #'.',d1 + move.b d1,MCF_PSC0_PSCTB_8BIT + + sub.l #16,d0 // byt counter -16 + bpl acsi_dma_wl +acsi_dma_fertig: + move.l a1,-12(a5) // adresse zurück + move.l d0,-8(a5) // byt counter zurück +acsi_dma_end: + tst.b -4(a5) // dma req? + bmi acsi_dma_start // ja-> + lea 0xfffffa0b,a5 + bclr.b #7,4(a5) // clear int in service mfp + bclr.b #7,(a5) // clear int pending mfp 0xfffffa0b + + move.w #0x0d0a,d1 + move.w d1,MCF_PSC0_PSCTB_8BIT + + move.l (a7)+,d1 + move.l (a7)+,a1 + rts +/**************************************************/ +/* irq 7 = pseudo bus error */ +/**************************************************/ +irq7: + lea -12(sp),sp + movem.l d0/a0,(sp) + + move.l ___RAMBAR0+0x008,a0 // Real Access Error handler + move.l a0,8(sp) // This will be the return address for rts + + move.w 12(sp),d0 // Format/Vector word + andi.l #0xf000,d0 // Keep only the Format + ori.l #2*4,d0 // Simulate Vector #2, no Fault + move.w d0,12(sp) + + // TODO: Inside an interrupt handler, 16(sp) is the return address. + // For an Access Error, it should be the address of the fault instruction instead + + lea MCF_EPORT_EPFR,a0 + move.b #0x80,(a0) // clear int7 + move.l (sp)+,d0 + move.l (sp)+,a0 + rts // Forward to the Access Error handler + +/**************************************************/ +/* psc3 com PIC MCF */ +/**************************************************/ +psc3: + move.w #0x2700,sr // disable interrupt + lea -20(a7),a7 + movem.l d0-d2/a0/a3,(a7) + lea MCF_PSC3_PSCRB_8BIT,a3 + move.b (a3),d1 + cmp.b #2,d1 // anforderung rtc daten? + bne psc3_fertig + + lea MCF_PSC0_PSCTB_8BIT,a0 // ++ vr + move.l #'PIC ',(a0) + move.l #'INT ',(a0) + move.l #'RTC!',(a0) + move.l #0x0d0a,(a0) + + lea 0xffff8961,a0 + lea MCF_PSC3_PSCTB_8BIT,a3 + clr.l d1 + moveq #64,d2 + move.b #0x82,(a3) // header: rtcd mcf->pic +loop_sr2: + move.b d1,(a0) + move.b 2(a0),d0 + move.b d0,(a3) + addq.l #1,d1 + cmp.b d1,d2 + bne loop_sr2 +psc3_fertig: + movem.l (a7),d0-d2/a0/a3 // register zurück + lea 20(a7),a7 + RTE +/**************************************************/ +/* timer 0: video change later also others +/**************************************************/ +timer0: + move #0x2700,sr +// halt + lea -28(a7),a7 + movem.l d0-d4/a0-a1,(a7) + mvz.b 0xffff8201,d0 // löschen und high byt + cmp.w #2,d0 + blt video_chg_end + cmp.w #0xd0,d0 // normale addresse + blt sca_other // nein-> + lea MCF_SLT0_SCNT,a0 + move.l (a0),d4 + move.l d4,_video_sbt // time sichern +sca_other: + lsl.l #8,d0 + move.b 0xffff8203,d0 // mid byt + lsl.l #8,d0 + move.b 0xffff820d,d0 // low byt + move.l d0,d3 +video_chg_1page: +// test ob page schon gesetzt + moveq #20,d4 + move.l d0,d2 + lsr.l d4,d2 // neue page + move.l _video_tlb,d4 + bset.l d2,d4 // setzen als geändert + bne video_chg_2page // schon gesetzt gewesen? ja->weg + move.l d4,_video_tlb + bsr cpusha // cache leeren +// daten copieren +video_copy_data: + move.l d4,_video_tlb + and.l #0x00f00000,d0 + move.l d0,a0 + move.l a0,a1 + add.l #0x60000000,a1 + move.l #0x10000,d4 // die ganze page +video_copy_data_loop: + move.l (a0)+,(a1)+ + move.l (a0)+,(a1)+ + move.l (a0)+,(a1)+ + move.l (a0)+,(a1)+ + subq.l #1,d4 + bne video_copy_data_loop +// eintrag suchen + move.l d0,MCF_MMU_MMUAR // addresse + move.l #0x106,d4 + move.l d4,MCF_MMU_MMUOR // suchen -> schlägt neuen vor wenn keiner + nop + move.l MCF_MMU_MMUOR,d4 + clr.w d4 + swap d4 + move.l d4,MCF_MMU_MMUAR + move.l d0,d1 + add.l #MCF_MMU_MMUTR_ID(sca_page_ID)|std_mmutr,d0 + add.l #0x60000000|wt_mmudr|MCF_MMU_MMUDR_LK,d1 + mvz.w #0x10b,d2 // MMU update + move.l d0,MCF_MMU_MMUTR + move.l d1,MCF_MMU_MMUDR + move.l d2,MCF_MMU_MMUOR // setzen vidoe maped to 60xxx only data + nop +video_chg_2page: +// test ob evt. anschliessende page gesetzt werden muss + move.l d3,d0 + mvz.w 0xffff8210,d4 // byts pro zeile + mvz.w 0xffff82aa,d2 // zeilen ende + mvz.w 0xffff82a8,d1 // zeilenstart + sub.l d1,d2 // differenz = anzahl zeilen + mulu d2,d4 // maximal 480 zeilen + add.l d4,d0 // video grösse + cmp.l #0xe00000,d0 // maximale addresse + bge video_chg_end // wenn gleich oder grösser -> fertig + moveq #20,d4 + move.l d0,d2 + lsr.l d4,d2 // neue page + move.l _video_tlb,d4 + bset.l d2,d4 // setzen als geändert + beq video_copy_data // nein nochmal +video_chg_end: +// int pending löschen + lea MCF_GPT0_GMS,a0 + bclr.b #0,3(a0) + nop + bset.b #0,3(a0) + + movem.l (a7),d0-d4/a0-a1 + lea 28(a7),a7 +//-------------------------------------------------------------------------------------------------------- + RTE + diff --git a/BaS_codewarrior/firebeeV1/sources/ii_add.h b/BaS_codewarrior/firebeeV1/sources/ii_add.h new file mode 100644 index 0000000..bc23f63 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/ii_add.h @@ -0,0 +1,581 @@ +//-------------------------------------------------------------------- +// add +//-------------------------------------------------------------------- +/*****************************************************************************************/ +//-------------------------------------------------------------------- +// byt +//-------------------------------------------------------------------- +//-------------------------------------------------------------------- +// add.b #im,dx +//-------------------------------------------------------------------- +addbir_macro:.macro + move.w (a0)+,d0 + extb.l d0 + mvs.b \2,d1 + add.l d0,d1 + set_cc0 + move.b d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // add ea,dx +//-------------------------------------------------------------------- +adddd:.macro +#ifdef halten_add + halt +#endif + mvs.\3 \1,d0 + mvs.\3 \2,d1 + add.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // add ea,dx (first ea->a1 z.B. für a0,a1,USP) +//-------------------------------------------------------------------- +addddd:.macro +#ifdef halten_add + halt +#endif + move.l \1,a1 + mvs.\3 a1,d0 + mvs.\3 \2,d1 + add.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // add (ea),dx (first ea->a1 z.B. für a0,a1,USP) +//-------------------------------------------------------------------- +adddda:.macro +#ifdef halten_add + halt +#endif + move.l \1,a1 + mvs.\3 (a1),d0 + mvs.\3 \2,d1 + add.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // add (ay)+,dx (first ea->a1 z.B. für a0,a1,USP) +//-------------------------------------------------------------------- +addddai:.macro +#ifdef halten_add + halt +#endif + move.l \1,a1 + mvs.\3 (a1)+,d0 + move.l a1,\1 + mvs.\3 \2,d1 + add.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // add -(ay),dx (first ea->a1 z.B. für a0,a1,USP) +//-------------------------------------------------------------------- +addddad:.macro +#ifdef halten_add + halt +#endif + move.l \1,a1 + mvs.\3 -(a1),d0 + move.l a1,\1 + mvs.\3 \2,d1 + add.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // add d16(ay),dx +//-------------------------------------------------------------------- +addd16ad:.macro +#ifdef halten_add + halt +#endif + move.l \1,a1 + mvs.w (a0)+,d0 + add.l d0,a1 + mvs.\3 (a1),d0 + mvs.\3 \2,d1 + add.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // add d8(ay,dy),dx +//-------------------------------------------------------------------- +addd8ad:.macro +#ifdef halten_add + halt +#endif + move.l \1,a1 + jsr ewf +.ifc \3,l + move.l (a1),d0 + move.l \2,d1 +.else + mvs.\3 (a1),d0 + mvs.\3 \2,d1 +.endif + add.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // add xxx.w,dx +//-------------------------------------------------------------------- +addxwd:.macro +#ifdef halten_add + halt +#endif + move.w (a0)+,a1 + mvs.\3 (a1),d0 + mvs.\3 \2,d1 + add.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // add xxx.l,dx +//-------------------------------------------------------------------- +addxld:.macro +#ifdef halten_add + halt +#endif + move.l (a0)+,a1 + mvs.\3 (a1),d0 + mvs.\3 \2,d1 + add.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // add d16(pc),dx +//-------------------------------------------------------------------- +addd16pcd:.macro +#ifdef halten_add + halt +#endif + move.l a0,a1 + mvs.w (a0)+,d0 + add.l d0,a1 + mvs.\3 (a1),d0 + mvs.\3 \2,d1 + add.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // add d8(pc,dy),dx +//-------------------------------------------------------------------- +addd8pcd:.macro +#ifdef halten_add + halt +#endif + move.l a0,a1 + jsr ewf +.ifc \3,l + move.l (a1),d0 + move.l \2,d1 +.else + mvs.\3 (a1),d0 + mvs.\3 \2,d1 +.endif + add.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// add dy,ea +//-------------------------------------------------------------------- +//-------------------------------------------------------------------- +// // add dx,(ay) (first ea->a1 z.B. für a0,a1,USP) +//-------------------------------------------------------------------- +addeda:.macro +#ifdef halten_add + halt +#endif + mvs.\3 \1,d0 + move.l \2,a1 + mvs.\3 (a1),d1 + add.l d0,d1 + set_cc0 + move.\3 d1,(a1) + ii_end + .endm; +//-------------------------------------------------------------------- +// // add dx,(ay)+ (first ea->a1 z.B. für a0,a1,USP) +//-------------------------------------------------------------------- +addedai:.macro +#ifdef halten_add + halt +#endif + mvs.\3 \1,d0 + move.l \2,a1 + mvs.\3 (a1),d1 + add.l d0,d1 + set_cc0 + move.\3 d1,(a1)+ + move.l a1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // add dx,(ay)+ +//-------------------------------------------------------------------- +addedaid:.macro +#ifdef halten_add + halt +#endif + mvs.\3 \1,d0 + mvs.\3 \2,d1 + add.l d0,d1 + set_cc0 + move.\3 d1,\2+ + ii_end + .endm; +//-------------------------------------------------------------------- +// // add dx,-(ay) +//-------------------------------------------------------------------- +addedad:.macro +#ifdef halten_add + halt +#endif + mvs.\3 \1,d0 + move.l \2,a1 + mvs.\3 -(a1),d1 + move.l a1,\2 + add.l d0,d1 + set_cc0 + move.\3 d1,(a1) + ii_end + .endm; +//-------------------------------------------------------------------- +// // add dx,-(ay) +//-------------------------------------------------------------------- +addedadd:.macro +#ifdef halten_add + halt +#endif + mvs.\3 \1,d0 + mvs.\3 -\2,d1 + add.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // add dx,d16(ay) +//-------------------------------------------------------------------- +adde16ad:.macro +#ifdef halten_add + halt +#endif + mvs.\3 \1,d0 + move.l \2,a1 + mvs.w (a0)+,d1 + add.l d1,a1 + mvs.\3 (a1),d1 + add.l d0,d1 + set_cc0 + move.\3 d1,(a1) + ii_end + .endm; +//-------------------------------------------------------------------- +// // add.w d8(ay,dy),dx +//-------------------------------------------------------------------- +adde8ad:.macro +#ifdef halten_add + halt +#endif + move.l \2,a1 + jsr ewf +.ifc \3,l + move.l (a1),d1 + move.l \1,d0 +.else + mvs.\3 (a1),d1 + mvs.\3 \1,d0 +.endif + add.l d0,d1 + set_cc0 + move.\3 d1,(a1) + ii_end + .endm; +//-------------------------------------------------------------------- +// // add dx,xxx.w +//-------------------------------------------------------------------- +addxwe:.macro +#ifdef halten_add + halt +#endif + mvs.\3 \1,d0 + move.w (a0)+,a1 + mvs.\3 (a1),d1 + add.l d0,d1 + set_cc0 + move.\3 d1,(a1) + ii_end + .endm; +//-------------------------------------------------------------------- +// // add dx,xxx.l +//-------------------------------------------------------------------- +addxle:.macro +#ifdef halten_add + halt +#endif + mvs.\3 \1,d0 + move.l (a0)+,a1 + mvs.\3 (a1),d1 + add.l d0,d1 + set_cc0 + move.\3 d1,(a1) + ii_end + .endm; +/******************************************************/ +// adress register +/******************************************************/ +//-------------------------------------------------------------------- +// // adda.w ea,ax (ea = dx;ax;(ax);(ax)+,-(ax) +//-------------------------------------------------------------------- +addaw:.macro +#ifdef halten_add + halt +#endif + move.l a0,pc_off(a7) // pc auf next + movem.l (a7),d0/d1/a0/a1 // register zurpück + mvs.w \1,d0 + adda.l d0,\2 + move.l d0_off(a7),d0 + lea ii_ss(a7),a7 // stack erhöhen + rte + .endm; +//-------------------------------------------------------------------- +// add.w ea,usp +//-------------------------------------------------------------------- +addawa7:.macro +#ifdef halten_add + halt +#endif + mvs.w \1,d0 + move.l usp,a1 + add.l d0,a1 + move.l a1,usp + ii_end + .endm; +//-------------------------------------------------------------------- +// // adda.w ea,usp (ea = dx;ax;(ax);(ax)+,-(ax) +//-------------------------------------------------------------------- +addawu:.macro +#ifdef halten_add + halt +#endif + move.l a0,pc_off(a7) // pc auf next + movem.l (a7),d0/d1/a0/a1 // register zurpück + move.l a7,_a7_save + move.l usp,a7 + move.l \1,d0 + adda.l d0,\2 + move.l a7,usp + move.l _a7_save,a7 + move.l d0_off(a7),d0 + lea ii_ss(a7),a7 // stack erhöhen + rte + .endm; +//-------------------------------------------------------------------- +// // adda.w ea,usp (ea = a7 => dx;ax;(ax);(ax)+,-(ax) +//-------------------------------------------------------------------- +addawua7:.macro + addawu \1,\2 + .endm; +//-------------------------------------------------------------------- +// // adda.w d16(ay),ax +//-------------------------------------------------------------------- +addawd16a:.macro +#ifdef halten_add + halt +#endif + move.l \1,a1 + mvs.w (a0)+,d0 + adda.l d0,a1 + mvs.w (a1),d0 + move.l \2,a1 + add.l d0,a1 + move.l a1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // adda.w d8(ay,dy),ax +//-------------------------------------------------------------------- +addawd8a:.macro +#ifdef halten_add + halt +#endif + move.l \1,a1 + jsr ewf + mvs.w (a1),d0 + move.l \2,a1 + add.l d0,a1 + move.l a1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // adda.w xxx.w,ax +//-------------------------------------------------------------------- +addawxwax:.macro +#ifdef halten_add + halt +#endif + move.w \1,a1 + mvs.w (a1),d0 + move.l \2,a1 + adda.l d0,a1 + move.l a1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // adda.w xxx.l,ax +//-------------------------------------------------------------------- +addawxlax:.macro +#ifdef halten_add + halt +#endif + move.l \1,a1 + mvs.w (a1),d0 + move.l \2,a1 + adda.l d0,a1 + move.l a1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // adda.w d16(pc),ax +//-------------------------------------------------------------------- +addawd16pcax:.macro +#ifdef halten_add + halt +#endif + move.w \1,a1 + adda.l a0,a1 + mvs.w (a1),d0 + move.l \2,a1 + adda.l d0,a1 + move.l a1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // adda.w d8(pc,dy),ax +//-------------------------------------------------------------------- +addawd8pcax:.macro +#ifdef halten_add + halt +#endif + move.l a0,a1 + jsr ewf + mvs.w (a1),d0 + move.l \2,a1 + adda.l d0,a1 + move.l a1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // adda.w #im,ax +//-------------------------------------------------------------------- +addawim:.macro +#ifdef halten_add + halt +#endif + mvs.w \1,d0 + move.l \2,a1 + adda.l d0,a1 + move.l a1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // adda.l d8(ay,dy),ax +//-------------------------------------------------------------------- +addald8a:.macro +#ifdef halten_add + halt +#endif + move.l \1,a1 + jsr ewf + move.l (a1),d0 + move.l \2,a1 + adda.l d0,a1 + move.l a1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // adda.l d8(pc,dy),ax +//-------------------------------------------------------------------- +addakd8pcax:.macro +#ifdef halten_add + halt +#endif + move.l a0,a1 + jsr ewf + move.l (a1),d0 + move.l \2,a1 + adda.l d0,a1 + move.l a1,\2 + ii_end + .endm; +//***************************************************************************************** +// addx +//***************************************************************************************** +//-------------------------------------------------------------------- +// // addx dy,dx +//-------------------------------------------------------------------- +adddx:.macro +#ifdef halten_add + halt +#endif + move.b sr_off+1(a7),d0 //ccr holen + move d0,ccr //setzen + mvs.\3 \2,d0 + mvs.\3 \1,d1 + addx.l d0,d1 + set_cc0 + move.\3 d1,\1 + ii_end + .endm; +//-------------------------------------------------------------------- +// // addx -(ay),-(ax) +//-------------------------------------------------------------------- +adddax:.macro +#ifdef halten_add + halt +#endif + move.b sr_off+1(a7),d0 //ccr holen + move d0,ccr //setzen + move.l \1,a1 +.ifc \3,l + move.l -(a1),d0 +.else + mvs.\3 -(a1),d0 +.endif + move.l \2,a1 +.ifc \3,l + move.l -(a1),d0 +.else + mvs.\3 -(a1),d1 +.endif + addx.l d0,d1 + set_cc0 + move.\3 d1,(a1) + ii_end + .endm; +//-------------------------------------------------------------------- diff --git a/BaS_codewarrior/firebeeV1/sources/ii_and.h b/BaS_codewarrior/firebeeV1/sources/ii_and.h new file mode 100644 index 0000000..f74afde --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/ii_and.h @@ -0,0 +1,441 @@ +//-------------------------------------------------------------------- +// and +//-------------------------------------------------------------------- +/*****************************************************************************************/ +//-------------------------------------------------------------------- +// byt +//-------------------------------------------------------------------- +//-------------------------------------------------------------------- +// and.b #im,dx +//-------------------------------------------------------------------- +andbir_macro:.macro + move.w (a0)+,d0 + extb.l d0 + mvs.b \2,d1 + and.l d0,d1 + set_cc0 + move.b d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // and ea,dx +//-------------------------------------------------------------------- +anddd:.macro +#ifdef halten_and + halt +#endif + mvs.\3 \1,d0 + mvs.\3 \2,d1 + and.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // and ea(l)->dy(w),dx z.B. für USP +//-------------------------------------------------------------------- +andddd:.macro +#ifdef halten_and + halt +#endif + move.l \1,a1 + mvs.\3 a1,d0 + mvs.\3 \2,d1 + and.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // and (ea)->dy,dx +//-------------------------------------------------------------------- +anddda:.macro +#ifdef halten_and + halt +#endif + move.l \1,a1 + mvs.\3 (a1),d0 + mvs.\3 \2,d1 + and.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // and ea->ay,(ay)+,dx +//-------------------------------------------------------------------- +andddai:.macro +#ifdef halten_and + halt +#endif + move.l \1,a1 + mvs.\3 (a1)+,d0 + move.l a1,\1 + mvs.\3 \2,d1 + and.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // and ea->ay,-(ay),dx +//-------------------------------------------------------------------- +andddad:.macro +#ifdef halten_and + halt +#endif + move.l \1,a1 + mvs.\3 -(a1),d0 + move.l a1,\1 + mvs.\3 \2,d1 + and.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // and d16(ay),dx +//-------------------------------------------------------------------- +andd16ad:.macro +#ifdef halten_and + halt +#endif + move.l \1,a1 + mvs.w (a0)+,d0 + add.l d0,a1 + mvs.\3 (a1),d0 + mvs.\3 \2,d1 + and.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // and d8(ay,dy),dx +//-------------------------------------------------------------------- +andd8ad:.macro +#ifdef halten_and + halt +#endif + move.l \1,a1 + jsr ewf +.ifc \3,l + move.l (a1),d0 + move.l \2,d1 +.else + mvs.\3 (a1),d0 + mvs.\3 \2,d1 +.endif + and.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // and xxx.w,dx +//-------------------------------------------------------------------- +andxwd:.macro +#ifdef halten_and + halt +#endif + move.w (a0)+,a1 + mvs.\3 (a1),d0 + mvs.\3 \2,d1 + and.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // and xxx.l,dx +//-------------------------------------------------------------------- +andxld:.macro +#ifdef halten_and + halt +#endif + move.l (a0)+,a1 + mvs.\3 (a1),d0 + mvs.\3 \2,d1 + and.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // and d16(pc),dx +//-------------------------------------------------------------------- +andd16pcd:.macro +#ifdef halten_and + halt +#endif + move.l a0,a1 + mvs.w (a0)+,d0 + add.l d0,a1 + mvs.\3 (a1),d0 + mvs.\3 \2,d1 + and.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // and d8(pc,dy),dx +//-------------------------------------------------------------------- +andd8pcd:.macro +#ifdef halten_and + halt +#endif + move.l a0,a1 + jsr ewf +.ifc \3,l + move.l (a1),d0 + move.l \2,d1 +.else + mvs.\3 (a1),d0 + mvs.\3 \2,d1 +.endif + and.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// and dx,ea +//-------------------------------------------------------------------- +//-------------------------------------------------------------------- +// // and dx,(ea)->dy +//-------------------------------------------------------------------- +andeda:.macro +#ifdef halten_and + halt +#endif + mvs.\3 \1,d0 + move.l \2,a1 + mvs.\3 (a1),d1 + and.l d0,d1 + set_cc0 + move.\3 d1,(a1) + ii_end + .endm; +//-------------------------------------------------------------------- +// // and dx,ea->ay,(ay)+ +//-------------------------------------------------------------------- +andedai:.macro +#ifdef halten_and + halt +#endif + mvs.\3 \1,d0 + move.l \2,a1 + mvs.\3 (a1),d1 + and.l d0,d1 + set_cc0 + move.\3 d1,(a1)+ + move.l a1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // and dx,ea->ay,(ay)+ +//-------------------------------------------------------------------- +andedaid:.macro +#ifdef halten_and + halt +#endif + mvs.\3 \1,d0 + mvs.\3 \2,d1 + and.l d0,d1 + set_cc0 + move.\3 d1,\2+ + ii_end + .endm; +//-------------------------------------------------------------------- +// // and dx,ea->ay,-(ay) +//-------------------------------------------------------------------- +andedad:.macro +#ifdef halten_and + halt +#endif + mvs.\3 \1,d0 + move.l \2,a1 + mvs.\3 -(a1),d1 + move.l a1,\2 + and.l d0,d1 + set_cc0 + move.\3 d1,(a1) + ii_end + .endm; +//-------------------------------------------------------------------- +// // and dx,ea->ay,-(ay) +//-------------------------------------------------------------------- +andedadd:.macro +#ifdef halten_and + halt +#endif + mvs.\3 \1,d0 + mvs.\3 -\2,d1 + and.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // and dx,d16(ay) +//-------------------------------------------------------------------- +ande16ad:.macro +#ifdef halten_and + halt +#endif + mvs.\3 \1,d0 + move.l \2,a1 + mvs.w (a0)+,d1 + add.l d1,a1 + mvs.\3 (a1),d1 + and.l d0,d1 + set_cc0 + move.\3 d1,(a1) + ii_end + .endm; +//-------------------------------------------------------------------- +// // and.w dx,d8(ay,dy) +//-------------------------------------------------------------------- +ande8ad:.macro +#ifdef halten_and + halt +#endif + move.l \2,a1 + jsr ewf +.ifc \3,l + move.l (a1),d1 + move.l \1,d0 +.else + mvs.\3 (a1),d1 + mvs.\3 \1,d0 +.endif + and.l d0,d1 + set_cc0 + move.\3 d1,(a1) + ii_end + .endm; +//-------------------------------------------------------------------- +// // and dx,xxx.w +//-------------------------------------------------------------------- +andxwe:.macro +#ifdef halten_and + halt +#endif + mvs.\3 \1,d0 + move.w (a0)+,a1 + mvs.\3 (a1),d1 + and.l d0,d1 + set_cc0 + move.\3 d1,(a1) + ii_end + .endm; +//-------------------------------------------------------------------- +// // and dx,xxx.l +//-------------------------------------------------------------------- +andxle:.macro +#ifdef halten_and + halt +#endif + mvs.\3 \1,d0 + move.l (a0)+,a1 + mvs.\3 (a1),d1 + and.l d0,d1 + set_cc0 + move.\3 d1,(a1) + ii_end + .endm; +//-------------------------------------------------------------------- +// // anda.w ea,ax +//-------------------------------------------------------------------- +andaw:.macro + jmp ii_error + .endm; +//-------------------------------------------------------------------- +// and.w ea,usp +//-------------------------------------------------------------------- +andawa7:.macro + jmp ii_error + .endm; +//-------------------------------------------------------------------- +// // anda.w usp?,ax +//-------------------------------------------------------------------- +andawu:.macro + jmp ii_error + .endm; +//-------------------------------------------------------------------- +// // anda.w usp?,usp +//-------------------------------------------------------------------- +andawua7:.macro + andawu \1,\2 + .endm; +//-------------------------------------------------------------------- +// // anda.w d16(ay),ax +//-------------------------------------------------------------------- +andawd16a:.macro + jmp ii_error + .endm; +//-------------------------------------------------------------------- +// // anda.w d8(ay,dy),ax +//-------------------------------------------------------------------- +andawd8a:.macro + jmp ii_error + .endm; +//-------------------------------------------------------------------- +// // anda.w xxx.w,ax +//-------------------------------------------------------------------- +andawxwax:.macro + jmp ii_error + .endm; +//-------------------------------------------------------------------- +// // anda.w xxx.l,ax +//-------------------------------------------------------------------- +andawxlax:.macro + jmp ii_error + .endm; +//-------------------------------------------------------------------- +// // anda.w d16(pc),ax +//-------------------------------------------------------------------- +andawd16pcax:.macro + jmp ii_error + .endm; +//-------------------------------------------------------------------- +// // anda.w d8(pc,dy),ax +//-------------------------------------------------------------------- +andawd8pcax:.macro + jmp ii_error + .endm; +//-------------------------------------------------------------------- +// // anda.w #im,ax +//-------------------------------------------------------------------- +andawim:.macro + jmp ii_error + .endm; +//-------------------------------------------------------------------- +// // anda.l d8(ay,dy),ax +//-------------------------------------------------------------------- +andald8a:.macro + jmp ii_error + .endm; +//-------------------------------------------------------------------- +// // anda.l d8(pc,dy),ax +//-------------------------------------------------------------------- +andald8pcax:.macro + jmp ii_error + .endm; +//***************************************************************************************** +// spezial addx subx etc. +//-------------------------------------------------------------------- +//-------------------------------------------------------------------- +// // addx dy,dx +//-------------------------------------------------------------------- +anddx:.macro + jmp ii_error + .endm; +//-------------------------------------------------------------------- +// // addx -(ay),-(ax) +//-------------------------------------------------------------------- +anddax:.macro + jmp ii_error + .endm; +//-------------------------------------------------------------------- diff --git a/BaS_codewarrior/firebeeV1/sources/ii_dbcc.h b/BaS_codewarrior/firebeeV1/sources/ii_dbcc.h new file mode 100644 index 0000000..652cdbe --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/ii_dbcc.h @@ -0,0 +1,117 @@ +//-------------------------------------------------------------------- +// dbcc,trapcc +//-------------------------------------------------------------------- +.text +ii_lset_dbcc:.macro +// dbra + ii_lset_opeau 51,c + ii_lset_opeau 52,c + ii_lset_opeau 53,c + ii_lset_opeau 54,c + ii_lset_opeau 55,c + ii_lset_opeau 56,c + ii_lset_opeau 57,c + ii_lset_opeau 58,c + ii_lset_opeau 59,c + ii_lset_opeau 5a,c + ii_lset_opeau 5b,c + ii_lset_opeau 5c,c + ii_lset_opeau 5d,c + ii_lset_opeau 5e,c + ii_lset_opeau 5f,c +.endm + +ii_dbcc_func:.macro +ii_0x51c8: + dbra_macro d0_off+2(a7) +ii_0x51c9: + dbra_macro d1_off+2(a7) +ii_0x51ca: + dbra_macro d2 +ii_0x51cb: + dbra_macro d3 +ii_0x51cc: + dbra_macro d4 +ii_0x51cd: + dbra_macro d5 +ii_0x51ce: + dbra_macro d6 +ii_0x51cf: + dbra_macro d7 +//--------------------------------------------------------------------------------------------- +// dbcc dx +//--------------------------------------------------------------------------------------------- + ii_dbcc 2,hi + ii_dbcc 3,ls + ii_dbcc 4,cc + ii_dbcc 5,cs + ii_dbcc 6,ne + ii_dbcc 7,eq + ii_dbcc 8,vc + ii_dbcc 9,vs + ii_dbcc a,pl + ii_dbcc b,mi + ii_dbcc c,ge + ii_dbcc d,lt + ii_dbcc e,gt + ii_dbcc f,le +.endm +//--------------------------------------------------------------------------------------------- +// dbra dx +//--------------------------------------------------------------------------------------------- +dbra_macro:.macro +#ifdef halten_dbcc + halt +#endif + mvz.w \1,d1 // dx holen + subq.l #1,d1 // dx-1 + bcc dbra\@ // bra if plus? + addq.l #2,a0 // offset überspringen + move.w d1,\1 // dx sichern + ii_end +dbra\@: + move.w (a0),a1 // offset (wird auf long erweitert) + add.l a1,a0 // dazuadieren + move.w d1,\1 // dx sichern + ii_end +.endm +//--------------------------------------------------------------------------------------------- +// dbcc dx +//--------------------------------------------------------------------------------------------- +dbcc_macro:.macro +#ifdef halten_dbcc + halt +#endif + b\2 dbncc\@ + mvz.w \1,d1 // dx holen + subq.l #1,d1 // dx-1 + bcc dbcc\@ // bra if plus? +dbncc\@: + addq.l #2,a0 // offset überspringen + move.w d1,\1 // dx sichern + ii_end +dbcc\@: + move.w (a0),a1 // offset (wird auf long erweitert) + add.l a1,a0 // dazuadieren + move.w d1,\1 // dx sichern + ii_end +.endm +//db +ii_dbcc:.macro +ii_0x5\1c8: + dbcc_macro d0_off+2(a7),\2 +ii_0x5\1c9: + dbcc_macro d1_off+2(a7),\2 +ii_0x5\1ca: + dbcc_macro d2,\2 +ii_0x5\1cb: + dbcc_macro d3,\2 +ii_0x5\1cc: + dbcc_macro d4,\2 +ii_0x5\1cd: + dbcc_macro d5,\2 +ii_0x5\1ce: + dbcc_macro d6,\2 +ii_0x5\1cf: + dbcc_macro d7,\2 +.endm \ No newline at end of file diff --git a/BaS_codewarrior/firebeeV1/sources/ii_ewf.h b/BaS_codewarrior/firebeeV1/sources/ii_ewf.h new file mode 100644 index 0000000..34d2483 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/ii_ewf.h @@ -0,0 +1,181 @@ +//-------------------------------------------------------------------- +// extension word format missing +//-------------------------------------------------------------------- +.text +ii_ewf_lset:.macro +// pea + ii_lset_opeag 48,7 + ii_lset 0x487b +// jmp + ii_lset_opeag 4e,f + ii_lset 0x4efb +// jsr + ii_lset_opeag 4e,b + ii_lset 0x4ebb +// tas + ii_lset_opeag 4a,f + ii_lset 0x4ebb +// tst.b + ii_lset_opeag 4a,3 + ii_lset 0x4ebb +// tst.w + ii_lset_opeag 4a,7 + ii_lset 0x4ebb +// tst.l + ii_lset_opeag 4a,b + ii_lset 0x4ebb +// clr.b + ii_lset_opeag 42,3 + ii_lset 0x423b +// clr.w + ii_lset_opeag 42,7 + ii_lset 0x423b +// clr.l + ii_lset_opeag 42,b + ii_lset 0x423b +.endm +//--------------------------------------------------------------------------------------------- +ii_ewf_func:.macro + ewf_func_macro pea,487 + ewf_func_macro jmp,4ef + ewf_func_macro jsr,4eb + ewf_func_macro tas,4af + ewf_func_macro tstb,4a3 + ewf_func_macro tstw,4a7 + ewf_func_macro tstl,4ab + ewf_func_macro clrb,423 + ewf_func_macro clrw,427 + ewf_func_macro clrl,42b +.endm +//--------------------------------------------------------------------------------------------- +pea_macro:.macro + jsr ewf + move.l (a1),d0 + move.l usp,a1 + move.l d0,-(a1) + move.l a1,usp + ii_end +.endm + +jmp_macro:.macro + jsr ewf + move.l a1,a0 + ii_end +.endm + +jsr_macro:.macro + jsr ewf + move.l a1,d0 + move.l usp,a1 + move.l a0,-(a1) + move.l a1,usp + move.l d0,a0 + ii_end +.endm + +tas_macro:.macro + jsr ewf + tas (a1) + set_cc0 + ii_end +.endm + +tstb_macro:.macro + jsr ewf + tst.b (a1) + set_cc0 + ii_end +.endm + +tstw_macro:.macro + jsr ewf + tst.w (a1) + set_cc0 + ii_end +.endm + +tstl_macro:.macro + jsr ewf + tst.l (a1) + set_cc0 + ii_end +.endm + +clrb_macro:.macro + jsr ewf + clr.b (a1) + set_cc0 + ii_end +.endm + +clrw_macro:.macro + jsr ewf + clr.w (a1) + set_cc0 + ii_end +.endm + +clrl_macro:.macro + jsr ewf + clr.l (a1) + set_cc0 + ii_end +.endm +//-------------------------------------------------------------------- +ewf_func_macro:.macro //1=art 2=code +ii_0x\20: +#ifdef halten_ewf + halt +#endif + move.l a0_off(a7),a1 + \1_macro +ii_0x\21: +#ifdef halten_ewf + halt +#endif + move.l a1_off(a7),a1 + \1_macro +ii_0x\22: +#ifdef halten_ewf + halt +#endif + move.l a2,a1 + \1_macro +ii_0x\23: +#ifdef halten_ewf + halt +#endif + move.l a3,a1 + \1_macro +ii_0x\24: +#ifdef halten_ewf + halt +#endif + move.l a4,a1 + \1_macro +ii_0x\25: +#ifdef halten_ewf + halt +#endif + move.l a5,a1 + \1_macro +ii_0x\26: +#ifdef halten_ewf + halt +#endif + move.l a6,a1 + \1_macro +ii_0x\27: +#ifdef halten_ewf + halt +#endif + move.l usp,a1 + \1_macro +ii_0x\2b: +#ifdef halten_ewf + halt +#endif + move.l a0,a1 + \1_macro +.endm + diff --git a/BaS_codewarrior/firebeeV1/sources/ii_exg.h b/BaS_codewarrior/firebeeV1/sources/ii_exg.h new file mode 100644 index 0000000..a0544af --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/ii_exg.h @@ -0,0 +1,120 @@ +//-------------------------------------------------------------------- +// exg +//-------------------------------------------------------------------- +.text +ii_exg_lset:.macro +/* ii_lset_dxu c,40 //dx,d0 + ii_lset_dxu c,41 //dx,d1 + ii_lset_dxu c,42 //dx,d2 + ii_lset_dxu c,43 //dx,d3 + ii_lset_dxu c,44 //dx,d4 + ii_lset_dxu c,45 //dx,d5 + ii_lset_dxu c,46 //dx,d6 + ii_lset_dxu c,47 //dx,d7 + ii_lset_dxu c,48 //ax,a0 + ii_lset_dxu c,49 //ax,a1 + ii_lset_dxu c,4a //ax,a2 + ii_lset_dxu c,4b //ax,a3 + ii_lset_dxu c,4c //ax,a4 + ii_lset_dxu c,4d //ax,a5 + ii_lset_dxu c,4e //ax,a6 + ii_lset_dxu c,4f //ax,a7 */ -->setting by "and" + ii_lset_dxu c,88 //dx,a0 + ii_lset_dxu c,89 //dx,a1 + ii_lset_dxu c,8a //dx,a2 + ii_lset_dxu c,8b //dx,a3 + ii_lset_dxu c,8c //dx,a4 + ii_lset_dxu c,8d //dx,a5 + ii_lset_dxu c,8e //dx,a6 + ii_lset_dxu c,8f //dx,a7 +.endm +//--------------------------------------------------------------------------------------------- +ii_exg_func:.macro +// exg dx,dy + ii_exg_dx_dx 14,d0_off(a7) + ii_exg_dx_dx 34,d1_off(a7) + ii_exg_dx_dx 54,d2 + ii_exg_dx_dx 74,d3 + ii_exg_dx_dx 94,d4 + ii_exg_dx_dx b4,d5 + ii_exg_dx_dx d4,d6 + ii_exg_dx_dx f4,d7 +// exg ax,ay + ii_exg_to_ax 14,a0_off(a7) + ii_exg_to_ax 34,a1_off(a7) + ii_exg_to_ax 54,a2 + ii_exg_to_ax 74,a3 + ii_exg_to_ax 94,a4 + ii_exg_to_ax b4,a5 + ii_exg_to_ax d4,a6 + ii_exg_to_ax f4,usp +// exg dx,ay + ii_exg_to_ax 18,d0_off(a7) + ii_exg_to_ax 38,d1_off(a7) + ii_exg_to_ax 58,d2 + ii_exg_to_ax 78,d3 + ii_exg_to_ax 98,d4 + ii_exg_to_ax b8,d5 + ii_exg_to_ax d8,d6 + ii_exg_to_ax f8,d7 +.endm +//--------------------------------------------------------------------------------------------- +exg_macro:.macro +#ifdef halten_exg + halt +#endif + move.l \1,a1 +.ifc \2,usp + move.l a1,d0 + move.l \2,a1 + move.l a1,\1 + move.l d0,a1 +.else + .ifc \1,usp + move.l a1,d0 + move.l \2,a1 + move.l a1,\1 + move.l d0,a1 + .else + move.l \2,\1 + .endif +.endif + move.l a1,\2 + ii_end +.endm +ii_exg_dx_dx:.macro +ii_0xc\10: + exg_macro \2,d0_off(a7) +ii_0xc\11: + exg_macro \2,d1_off(a7) +ii_0xc\12: + exg_macro \2,d2 +ii_0xc\13: + exg_macro \2,d3 +ii_0xc\14: + exg_macro \2,d4 +ii_0xc\15: + exg_macro \2,d5 +ii_0xc\16: + exg_macro \2,d6 +ii_0xc\17: + exg_macro \2,d7 +.endm +ii_exg_to_ax:.macro +ii_0xc\18: + exg_macro \2,a0_off(a7) +ii_0xc\19: + exg_macro \2,a1_off(a7) +ii_0xc\1a: + exg_macro \2,a2 +ii_0xc\1b: + exg_macro \2,a3 +ii_0xc\1c: + exg_macro \2,a4 +ii_0xc\1d: + exg_macro \2,a5 +ii_0xc\1e: + exg_macro \2,a6 +ii_0xc\1f: + exg_macro \2,usp +.endm \ No newline at end of file diff --git a/BaS_codewarrior/firebeeV1/sources/ii_func.h b/BaS_codewarrior/firebeeV1/sources/ii_func.h new file mode 100644 index 0000000..f545f47 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/ii_func.h @@ -0,0 +1,945 @@ +//-------------------------------------------------------------------- +// functionen macros +//-------------------------------------------------------------------- +ii_lset_func:.macro +/******************************************************/ +// byt +/******************************************************/ +// func.b dy,dx + ii_lset_dx \1,00 // 0x1.22 -> z.B. 1=d2=4 ->0xd07c -> 0xde7c + ii_lset_dx \1,01 + ii_lset_dx \1,02 + ii_lset_dx \1,03 + ii_lset_dx \1,04 + ii_lset_dx \1,05 + ii_lset_dx \1,06 + ii_lset_dx \1,07 +// func.b ax,dx + ii_lset_dxu \1,08 + ii_lset_dxu \1,09 + ii_lset_dxu \1,0a + ii_lset_dxu \1,0b + ii_lset_dxu \1,0c + ii_lset_dxu \1,0d + ii_lset_dxu \1,0e + ii_lset_dxu \1,0f +// func.b (ax),dx + ii_lset_dx \1,10 + ii_lset_dx \1,11 + ii_lset_dx \1,12 + ii_lset_dx \1,13 + ii_lset_dx \1,14 + ii_lset_dx \1,15 + ii_lset_dx \1,16 + ii_lset_dx \1,17 +// func.b (ax)+,dx + ii_lset_dx \1,18 + ii_lset_dx \1,19 + ii_lset_dx \1,1a + ii_lset_dx \1,1b + ii_lset_dx \1,1c + ii_lset_dx \1,1d + ii_lset_dx \1,1e + ii_lset_dx \1,1f +// func.b -(ax),dx + ii_lset_dx \1,20 + ii_lset_dx \1,21 + ii_lset_dx \1,22 + ii_lset_dx \1,23 + ii_lset_dx \1,24 + ii_lset_dx \1,25 + ii_lset_dx \1,26 + ii_lset_dx \1,27 +// func.b d16(ax),dx + ii_lset_dx \1,28 + ii_lset_dx \1,29 + ii_lset_dx \1,2a + ii_lset_dx \1,2b + ii_lset_dx \1,2c + ii_lset_dx \1,2d + ii_lset_dx \1,2e + ii_lset_dx \1,2f +// func.b dd8(ax,dy),dx + ii_lset_dx \1,30 + ii_lset_dx \1,31 + ii_lset_dx \1,32 + ii_lset_dx \1,33 + ii_lset_dx \1,34 + ii_lset_dx \1,35 + ii_lset_dx \1,36 + ii_lset_dx \1,37 +// func.b xxx.w,dx + ii_lset_dx \1,38 // 0x1.22 -> z.B. 1=d2=4 ->0xd07c -> 0xde7c +// func.b xxx.l,dx + ii_lset_dx \1,39 // 0x1.22 -> z.B. 1=d2=4 ->0xd07c -> 0xde7c +// func.b d16(pc),dx + ii_lset_dxg \1,7a // 0x1.22 -> z.B. 1=d2=4 ->0xd07c -> 0xde7c +// func.b d8(pc,dy),dx + ii_lset_dxg \1,3b // 0x1.22 -> z.B. 1=d2=4 ->0xd07c -> 0xde7c +// func.b #im,dx + ii_lset_dxg \1,3c // 0x1.22 -> z.B. 1=d2=4 ->0xd07c -> 0xde7c +/******************************************************/ +// word +/******************************************************/ +// func.w dy,dx + ii_lset_dx \1,40 // 0x1.22 -> z.B. 1=d2=4 ->0xd07c -> 0xde7c + ii_lset_dx \1,41 + ii_lset_dx \1,42 + ii_lset_dx \1,43 + ii_lset_dx \1,44 + ii_lset_dx \1,45 + ii_lset_dx \1,46 + ii_lset_dx \1,47 +// func.w ax,dx + ii_lset_dx \1,48 + ii_lset_dx \1,49 + ii_lset_dx \1,4a + ii_lset_dx \1,4b + ii_lset_dx \1,4c + ii_lset_dx \1,4d + ii_lset_dx \1,4e + ii_lset_dx \1,4f +// func.w (ax),dx + ii_lset_dx \1,50 + ii_lset_dx \1,51 + ii_lset_dx \1,52 + ii_lset_dx \1,53 + ii_lset_dx \1,54 + ii_lset_dx \1,55 + ii_lset_dx \1,56 + ii_lset_dx \1,57 +// func.w (ax)+,dx + ii_lset_dx \1,58 + ii_lset_dx \1,59 + ii_lset_dx \1,5a + ii_lset_dx \1,5b + ii_lset_dx \1,5c + ii_lset_dx \1,5d + ii_lset_dx \1,5e + ii_lset_dx \1,5f +// func.w -(ax),dx + ii_lset_dx \1,60 + ii_lset_dx \1,61 + ii_lset_dx \1,62 + ii_lset_dx \1,63 + ii_lset_dx \1,64 + ii_lset_dx \1,65 + ii_lset_dx \1,66 + ii_lset_dx \1,67 +// func.w d16(ax),dx + ii_lset_dx \1,68 + ii_lset_dx \1,69 + ii_lset_dx \1,6a + ii_lset_dx \1,6b + ii_lset_dx \1,6c + ii_lset_dx \1,6d + ii_lset_dx \1,6e + ii_lset_dx \1,6f +// func.w d8(ax,dy),dx + ii_lset_dx \1,70 + ii_lset_dx \1,71 + ii_lset_dx \1,72 + ii_lset_dx \1,73 + ii_lset_dx \1,74 + ii_lset_dx \1,75 + ii_lset_dx \1,76 + ii_lset_dx \1,77 +// func.w xxx.w,dx + ii_lset_dx \1,78 // 0x1.22 -> z.B. 1=d2=4 ->0xd07c -> 0xde7c +// func.w xxx.l,dx + ii_lset_dx \1,79 // 0x1.22 -> z.B. 1=d2=4 ->0xd07c -> 0xde7c +// func.w d16(pc),dx + ii_lset_dxg \1,7a // 0x1.22 -> z.B. 1=d2=4 ->0xd07c -> 0xde7c +// func.w d8(pc,dy),dx + ii_lset_dxg \1,7b // 0x1.22 -> z.B. 1=d2=4 ->0xd07c -> 0xde7c +// func.w #im,dx + ii_lset_dxg \1,7c // 0x1.22 -> z.B. 1=d2=4 ->0xd07c -> 0xde7c +/******************************************************/ +// long +/******************************************************/ +// func.l ax,dx -> -(ay),-(ax) + ii_lset_dxu \1,c8 + ii_lset_dxu \1,c9 + ii_lset_dxu \1,ca + ii_lset_dxu \1,cb + ii_lset_dxu \1,cc + ii_lset_dxu \1,cd + ii_lset_dxu \1,ce + ii_lset_dxu \1,cf +// func.w d8(ax,dy),dx + ii_lset_dx \1,b0 + ii_lset_dx \1,b1 + ii_lset_dx \1,b2 + ii_lset_dx \1,b3 + ii_lset_dx \1,b4 + ii_lset_dx \1,b5 + ii_lset_dx \1,b6 + ii_lset_dx \1,b7 +// func.l d8(pc,dy),dx + ii_lset_dxg \1,bb // 0x1.22 -> z.B. 1=d2=4 ->0xd07c -> 0xde7c +/******************************************************/ +// adress register +/******************************************************/ +//func.w dy,ax + ii_lset_dxg \1,c0 + ii_lset_dxg \1,c1 + ii_lset_dxg \1,c2 + ii_lset_dxg \1,c3 + ii_lset_dxg \1,c4 + ii_lset_dxg \1,c5 + ii_lset_dxg \1,c6 + ii_lset_dxg \1,c7 +//func.w ay,ax + ii_lset_dxg \1,c8 + ii_lset_dxg \1,c9 + ii_lset_dxg \1,ca + ii_lset_dxg \1,cb + ii_lset_dxg \1,cc + ii_lset_dxg \1,cd + ii_lset_dxg \1,ce + ii_lset_dxg \1,cf +//func.w (ay),ax + ii_lset_dxg \1,d0 + ii_lset_dxg \1,d1 + ii_lset_dxg \1,d2 + ii_lset_dxg \1,d3 + ii_lset_dxg \1,d4 + ii_lset_dxg \1,d5 + ii_lset_dxg \1,d6 + ii_lset_dxg \1,d7 +//func.w (ay)+,ax + ii_lset_dxg \1,d8 + ii_lset_dxg \1,d9 + ii_lset_dxg \1,da + ii_lset_dxg \1,db + ii_lset_dxg \1,dc + ii_lset_dxg \1,dd + ii_lset_dxg \1,de + ii_lset_dxg \1,df +//func.w -(ay),ax + ii_lset_dxg \1,e0 + ii_lset_dxg \1,e1 + ii_lset_dxg \1,e2 + ii_lset_dxg \1,e3 + ii_lset_dxg \1,e4 + ii_lset_dxg \1,e5 + ii_lset_dxg \1,e6 + ii_lset_dxg \1,e7 +//func.w d16(ay),ax + ii_lset_dxg \1,e8 + ii_lset_dxg \1,e9 + ii_lset_dxg \1,ea + ii_lset_dxg \1,eb + ii_lset_dxg \1,ec + ii_lset_dxg \1,ed + ii_lset_dxg \1,ee + ii_lset_dxg \1,ef +//func.w d8(ay,dy),ax + ii_lset_dxg \1,f0 + ii_lset_dxg \1,f1 + ii_lset_dxg \1,f2 + ii_lset_dxg \1,f3 + ii_lset_dxg \1,f4 + ii_lset_dxg \1,f5 + ii_lset_dxg \1,f6 + ii_lset_dxg \1,f7 +// func.w xxx.w,ax + ii_lset_dxg \1,f8 +// func.w xxx.l,ax + ii_lset_dxg \1,f9 +// func.w d16(pc),ax + ii_lset_dxg \1,fa +// func.w d8(pc,dy),ax + ii_lset_dxg \1,fb +// func.w #im,ax + ii_lset_dxg \1,fc +//-------------------------------------------------------------------- +// ende + .endm; +/*****************************************************************************************/ +ii_func:.macro +//-------------------------------------------------------------------- +// byt +//-------------------------------------------------------------------- +///-------------------------------------------------------------------- +// func.b ds,dx +//-------------------------------------------------------------------- + funcbeadx \1,00,\2dd,d0_off+3(a7) + funcbeadx \1,01,\2dd,d1_off+3(a7) + funcbeadx \1,02,\2dd,d2 + funcbeadx \1,03,\2dd,d3 + funcbeadx \1,04,\2dd,d4 + funcbeadx \1,05,\2dd,d5 + funcbeadx \1,06,\2dd,d6 + funcbeadx \1,07,\2dd,d7 +//-------------------------------------------------------------------- +// func.b (ax),dx +//-------------------------------------------------------------------- + funcbeadx \1,10,\2dda,a0_off(a7) + funcbeadx \1,11,\2dda,a1_off(a7) + funcbeadx \1,12,\2dd,(a2) + funcbeadx \1,13,\2dd,(a3) + funcbeadx \1,14,\2dd,(a4) + funcbeadx \1,15,\2dd,(a5) + funcbeadx \1,16,\2dd,(a6) + funcbeadx \1,17,\2dda,usp +//-------------------------------------------------------------------- +// func.b (ax)+,dx +//-------------------------------------------------------------------- + funcbeadx \1,18,\2ddai,a0_off(a7) + funcbeadx \1,19,\2ddai,a1_off(a7) + funcbeadx \1,1a,\2dd,(a2)+ + funcbeadx \1,1b,\2dd,(a3)+ + funcbeadx \1,1c,\2dd,(a4)+ + funcbeadx \1,1d,\2dd,(a5)+ + funcbeadx \1,1e,\2dd,(a6)+ + funcbeadx \1,1f,\2ddai,usp +//-------------------------------------------------------------------- +// func.b -(ax),dx +//-------------------------------------------------------------------- + funcbeadx \1,20,\2ddad,a0_off(a7) + funcbeadx \1,21,\2ddad,a1_off(a7) + funcbeadx \1,22,\2dd,-(a2) + funcbeadx \1,23,\2dd,-(a3) + funcbeadx \1,24,\2dd,-(a4) + funcbeadx \1,25,\2dd,-(a5) + funcbeadx \1,26,\2dd,-(a6) + funcbeadx \1,27,\2ddad,usp +//-------------------------------------------------------------------- +// func.b d16(ax),dx +//-------------------------------------------------------------------- + funcbeadx \1,28,\2d16ad,a0_off(a7) + funcbeadx \1,29,\2d16ad,a1_off(a7) + funcbeadx \1,2a,\2d16ad,a2 + funcbeadx \1,2b,\2d16ad,a3 + funcbeadx \1,2c,\2d16ad,a4 + funcbeadx \1,2d,\2d16ad,a5 + funcbeadx \1,2e,\2d16ad,a6 + funcbeadx \1,2f,\2d16ad,usp +//-------------------------------------------------------------------- +// func.b d8(ax,dy),dx +//-------------------------------------------------------------------- + funcbeadx \1,30,\2d8ad,a0_off(a7) + funcbeadx \1,31,\2d8ad,a1_off(a7) + funcbeadx \1,32,\2d8ad,a2 + funcbeadx \1,33,\2d8ad,a3 + funcbeadx \1,34,\2d8ad,a4 + funcbeadx \1,35,\2d8ad,a5 + funcbeadx \1,36,\2d8ad,a6 + funcbeadx \1,37,\2d8ad,usp +//-------------------------------------------------------------------- +// func.b xxx.w,dx +//-------------------------------------------------------------------- + funcbeadx \1,38,\2xwd,(a0)+ +//-------------------------------------------------------------------- +// func.b xxx.w,dx +//-------------------------------------------------------------------- + funcbeadx \1,39,\2xld,(a0)+ +//-------------------------------------------------------------------- +// func.b d16(pc),dx +//-------------------------------------------------------------------- + funcbeadx \1,3a,\2d16pcd,(a0)+ +//-------------------------------------------------------------------- +// func.b d8(pc,dy),dx +//-------------------------------------------------------------------- + funcbeadx \1,3b,\2d8pcd,(a0)+ (a0 wird nicht verwendet) +//-------------------------------------------------------------------- +// func.b #im,dx +//-------------------------------------------------------------------- + funcbeadx \1,3c,\2bir_macro,(a0)+ +//-------------------------------------------------------------------- +// func.b dy,ea +//-------------------------------------------------------------------- +///-------------------------------------------------------------------- +// func.b dx,dd -> addx subx etc. src und dest vertauscht! +//-------------------------------------------------------------------- + funcbdxea \1,00,\2dx,d0_off+3(a7) + funcbdxea \1,01,\2dx,d1_off+3(a7) + funcbdxea \1,02,\2dx,d2 + funcbdxea \1,03,\2dx,d3 + funcbdxea \1,04,\2dx,d4 + funcbdxea \1,05,\2dx,d5 + funcbdxea \1,06,\2dx,d6 + funcbdxea \1,07,\2dx,d7 +//-------------------------------------------------------------------- +// func.b -(ax),-(ay) addx subx etc. src und dest vertauscht! +//-------------------------------------------------------------------- + funcaxay \1,08,\2dax,a0_off(a7),b + funcaxay \1,09,\2dax,a1_off(a7).b + funcaxay \1,0a,\2dax,a2,b + funcaxay \1,0b,\2dax,a3,b + funcaxay \1,0c,\2dax,a4,b + funcaxay \1,0d,\2dax,a5,b + funcaxay \1,0e,\2dax,a6,b + funcaxay \1,0f,\2dax,usp,b +//-------------------------------------------------------------------- +// func.b dy,(ax) +//-------------------------------------------------------------------- + funcbdxea \1,10,\2eda,a0_off(a7) + funcbdxea \1,11,\2eda,a1_off(a7) + funcbdxea \1,12,\2dd,(a2) + funcbdxea \1,13,\2dd,(a3) + funcbdxea \1,14,\2dd,(a4) + funcbdxea \1,15,\2dd,(a5) + funcbdxea \1,16,\2dd,(a6) + funcbdxea \1,17,\2eda,usp +//-------------------------------------------------------------------- +// func.b dy,(ax)+ +//-------------------------------------------------------------------- + funcbdxea \1,18,\2edai,a0_off(a7) + funcbdxea \1,19,\2edai,a1_off(a7) + funcbdxea \1,1a,\2edaid,(a2) + funcbdxea \1,1b,\2edaid,(a3) + funcbdxea \1,1c,\2edaid,(a4) + funcbdxea \1,1d,\2edaid,(a5) + funcbdxea \1,1e,\2edaid,(a6) + funcbdxea \1,1f,\2edai,usp +//-------------------------------------------------------------------- +// func.b dy,-(ax) +//-------------------------------------------------------------------- + funcbdxea \1,20,\2edad,a0_off(a7) + funcbdxea \1,21,\2edad,a1_off(a7) + funcbdxea \1,22,\2edadd,(a2) + funcbdxea \1,23,\2edadd,(a3) + funcbdxea \1,24,\2edadd,(a4) + funcbdxea \1,25,\2edadd,(a5) + funcbdxea \1,26,\2edadd,(a6) + funcbdxea \1,27,\2edad,usp +//-------------------------------------------------------------------- +// func.b dy,d16(ax) +//-------------------------------------------------------------------- + funcbdxea \1,28,\2e16ad,a0_off(a7) + funcbdxea \1,29,\2e16ad,a1_off(a7) + funcbdxea \1,2a,\2e16ad,a2 + funcbdxea \1,2b,\2e16ad,a3 + funcbdxea \1,2c,\2e16ad,a4 + funcbdxea \1,2d,\2e16ad,a5 + funcbdxea \1,2e,\2e16ad,a6 + funcbdxea \1,2f,\2e16ad,usp +//-------------------------------------------------------------------- +// func.b dy,d8(ax,dy) +//-------------------------------------------------------------------- + funcbdxea \1,30,\2e8ad,a0_off(a7) + funcbdxea \1,31,\2e8ad,a1_off(a7) + funcbdxea \1,32,\2e8ad,a2 + funcbdxea \1,33,\2e8ad,a3 + funcbdxea \1,34,\2e8ad,a4 + funcbdxea \1,35,\2e8ad,a5 + funcbdxea \1,36,\2e8ad,a6 + funcbdxea \1,37,\2e8ad,usp +//-------------------------------------------------------------------- +// func.w dy,xxx.w +//-------------------------------------------------------------------- + funcwdxea \1,38,\2xwe,(a0)+ +//-------------------------------------------------------------------- +// func.w dy,xxx.w +//-------------------------------------------------------------------- + funcwdxea \1,39,\2xld,(a0)+ +/*****************************************************************************************/ +// word +/*****************************************************************************************/ +// func.w ds,dx +//-------------------------------------------------------------------- + funcweadx \1,40,\2dd,d0_off+2(a7) + funcweadx \1,41,\2dd,d1_off+2(a7) + funcweadx \1,42,\2dd,d2 + funcweadx \1,43,\2dd,d3 + funcweadx \1,44,\2dd,d4 + funcweadx \1,45,\2dd,d5 + funcweadx \1,46,\2dd,d6 + funcweadx \1,47,\2dd,d7 +//-------------------------------------------------------------------- +// func.w ax,dx +//-------------------------------------------------------------------- + funcweadx \1,48,\2dd,a0_off+2(a7) + funcweadx \1,49,\2dd,a1_off+2(a7) + funcweadx \1,4a,\2dd,a2 + funcweadx \1,4b,\2dd,a3 + funcweadx \1,4c,\2dd,a4 + funcweadx \1,4d,\2dd,a5 + funcweadx \1,4e,\2dd,a6 + funcweadx \1,4f,\2ddd,usp +//-------------------------------------------------------------------- +// func.w (ax),dx +//-------------------------------------------------------------------- + funcweadx \1,50,\2dda,a0_off(a7) + funcweadx \1,51,\2dda,a1_off(a7) + funcweadx \1,52,\2dd,(a2) + funcweadx \1,53,\2dd,(a3) + funcweadx \1,54,\2dd,(a4) + funcweadx \1,55,\2dd,(a5) + funcweadx \1,56,\2dd,(a6) + funcweadx \1,57,\2dda,usp +//-------------------------------------------------------------------- +// func.w (ax)+,dx +//-------------------------------------------------------------------- + funcweadx \1,58,\2ddai,a0_off(a7) + funcweadx \1,59,\2ddai,a1_off(a7) + funcweadx \1,5a,\2dd,(a2)+ + funcweadx \1,5b,\2dd,(a3)+ + funcweadx \1,5c,\2dd,(a4)+ + funcweadx \1,5d,\2dd,(a5)+ + funcweadx \1,5e,\2dd,(a6)+ + funcweadx \1,5f,\2ddai,usp +//-------------------------------------------------------------------- +// func.w -(ax),dx +//-------------------------------------------------------------------- + funcweadx \1,60,\2ddad,a0_off(a7) + funcweadx \1,61,\2ddad,a1_off(a7) + funcweadx \1,62,\2dd,-(a2) + funcweadx \1,63,\2dd,-(a3) + funcweadx \1,64,\2dd,-(a4) + funcweadx \1,65,\2dd,-(a5) + funcweadx \1,66,\2dd,-(a6) + funcweadx \1,67,\2ddad,usp +//-------------------------------------------------------------------- +// func.w d16(ax),dx +//-------------------------------------------------------------------- + funcweadx \1,68,\2d16ad,a0_off(a7) + funcweadx \1,69,\2d16ad,a1_off(a7) + funcweadx \1,6a,\2d16ad,a2 + funcweadx \1,6b,\2d16ad,a3 + funcweadx \1,6c,\2d16ad,a4 + funcweadx \1,6d,\2d16ad,a5 + funcweadx \1,6e,\2d16ad,a6 + funcweadx \1,6f,\2d16ad,usp +//-------------------------------------------------------------------- +// func.w d8(ax,dy),dx +//-------------------------------------------------------------------- + funcweadx \1,70,\2d8ad,a0_off(a7) + funcweadx \1,71,\2d8ad,a1_off(a7) + funcweadx \1,72,\2d8ad,a2 + funcweadx \1,73,\2d8ad,a3 + funcweadx \1,74,\2d8ad,a4 + funcweadx \1,75,\2d8ad,a5 + funcweadx \1,76,\2d8ad,a6 + funcweadx \1,77,\2d8ad,usp +//-------------------------------------------------------------------- +// func.w xxx.w,dx +//-------------------------------------------------------------------- + funcweadx \1,78,\2xwd,(a0)+ +//-------------------------------------------------------------------- +// func.w xxx.w,dx +//-------------------------------------------------------------------- + funcweadx \1,79,\2xld,(a0)+ +//-------------------------------------------------------------------- +// func.w d16(pc),dx +//-------------------------------------------------------------------- + funcweadx \1,7a,\2d16pcd,(a0)+ +//-------------------------------------------------------------------- +// func.w d8(pc,dy),dx +//-------------------------------------------------------------------- + funcweadx \1,7b,\2d8pcd,(a0)+ (a0 wird nicht verwendet) +//-------------------------------------------------------------------- +// func.w #im,dx +//-------------------------------------------------------------------- + funcweadx \1,7c,\2dd,(a0)+ +//-------------------------------------------------------------------- +// func.w dy,ea +//-------------------------------------------------------------------- +///-------------------------------------------------------------------- +// func.w dx,dd -> addx subx etc. +//-------------------------------------------------------------------- +.ifnc \2,and //platz für exg + funcwdxea \1,40,\2dx,d0_off+2(a7) + funcwdxea \1,41,\2dx,d1_off+2(a7) + funcwdxea \1,42,\2dx,d2 + funcwdxea \1,43,\2dx,d3 + funcwdxea \1,44,\2dx,d4 + funcwdxea \1,45,\2dx,d5 + funcwdxea \1,46,\2dx,d6 + funcwdxea \1,47,\2dx,d7 +//-------------------------------------------------------------------- +// func.w -(ax),-(ay) -> addx,subx +//-------------------------------------------------------------------- + funcaxay \1,48,\2dax,a0_off(a7),w + funcaxay \1,49,\2dax,a1_off(a7).w + funcaxay \1,4a,\2dax,a2,w + funcaxay \1,4b,\2dax,a3,w + funcaxay \1,4c,\2dax,a4,w + funcaxay \1,4d,\2dax,a5,w + funcaxay \1,4e,\2dax,a6,w + funcaxay \1,4f,\2dax,usp,w +.endif +//-------------------------------------------------------------------- +// func.w dy,(ax) +//-------------------------------------------------------------------- + funcwdxea \1,50,\2eda,a0_off(a7) + funcwdxea \1,51,\2eda,a1_off(a7) + funcwdxea \1,52,\2dd,(a2) + funcwdxea \1,53,\2dd,(a3) + funcwdxea \1,54,\2dd,(a4) + funcwdxea \1,55,\2dd,(a5) + funcwdxea \1,56,\2dd,(a6) + funcwdxea \1,57,\2eda,usp +//-------------------------------------------------------------------- +// func.w dy,(ax)+ +//-------------------------------------------------------------------- + funcwdxea \1,58,\2edai,a0_off(a7) + funcwdxea \1,59,\2edai,a1_off(a7) + funcwdxea \1,5a,\2edaid,(a2) + funcwdxea \1,5b,\2edaid,(a3) + funcwdxea \1,5c,\2edaid,(a4) + funcwdxea \1,5d,\2edaid,(a5) + funcwdxea \1,5e,\2edaid,(a6) + funcwdxea \1,5f,\2edai,usp +//-------------------------------------------------------------------- +// func.w dy,-(ax) +//-------------------------------------------------------------------- + funcwdxea \1,60,\2edad,a0_off(a7) + funcwdxea \1,61,\2edad,a1_off(a7) + funcwdxea \1,62,\2edadd,(a2) + funcwdxea \1,63,\2edadd,(a3) + funcwdxea \1,64,\2edadd,(a4) + funcwdxea \1,65,\2edadd,(a5) + funcwdxea \1,66,\2edadd,(a6) + funcwdxea \1,67,\2edad,usp +//-------------------------------------------------------------------- +// func.w dy,d16(ax) +//-------------------------------------------------------------------- + funcwdxea \1,68,\2e16ad,a0_off(a7) + funcwdxea \1,69,\2e16ad,a1_off(a7) + funcwdxea \1,6a,\2e16ad,a2 + funcwdxea \1,6b,\2e16ad,a3 + funcwdxea \1,6c,\2e16ad,a4 + funcwdxea \1,6d,\2e16ad,a5 + funcwdxea \1,6e,\2e16ad,a6 + funcwdxea \1,6f,\2e16ad,usp +//-------------------------------------------------------------------- +// func.w dy,d8(ax,dy) +//-------------------------------------------------------------------- + funcwdxea \1,70,\2e8ad,a0_off(a7) + funcwdxea \1,71,\2e8ad,a1_off(a7) + funcwdxea \1,72,\2e8ad,a2 + funcwdxea \1,73,\2e8ad,a3 + funcwdxea \1,74,\2e8ad,a4 + funcwdxea \1,75,\2e8ad,a5 + funcwdxea \1,76,\2e8ad,a6 + funcwdxea \1,77,\2e8ad,usp +//-------------------------------------------------------------------- +// func.w dy,xxx.w +//-------------------------------------------------------------------- + funcwdxea \1,78,\2xwe,(a0)+ +//-------------------------------------------------------------------- +// func.w dy,xxx.w +//-------------------------------------------------------------------- + funcwdxea \1,79,\2xld,(a0)+ +/*****************************************************************************************/ +// long +/*****************************************************************************************/ +//-------------------------------------------------------------------- +// func.l -(ax),-(ay) +//-------------------------------------------------------------------- + funcaxay \1,c8,\2dax,a0_off(a7),l + funcaxay \1,c9,\2dax,a1_off(a7).l + funcaxay \1,ca,\2dax,a2,l + funcaxay \1,cb,\2dax,a3,l + funcaxay \1,cc,\2dax,a4,l + funcaxay \1,cd,\2dax,a5,l + funcaxay \1,ce,\2dax,a6,l + funcaxay \1,cf,\2dax,usp,l +//-------------------------------------------------------------------- +// func.l d8(ax,dy),dx +//-------------------------------------------------------------------- + funcleadx \1,b0,\2d8ad,a0_off(a7) + funcleadx \1,b1,\2d8ad,a1_off(a7) + funcleadx \1,b2,\2d8ad,a2 + funcleadx \1,b3,\2d8ad,a3 + funcleadx \1,b4,\2d8ad,a4 + funcleadx \1,b5,\2d8ad,a5 + funcleadx \1,b6,\2d8ad,a6 + funcleadx \1,b7,\2d8ad,usp +//-------------------------------------------------------------------- +// func.l d8(pc,dy),dx +//-------------------------------------------------------------------- + funcleadx \1,bb,\2d8pcd,(a0)+ (a0 wird nicht verwendet) +//-------------------------------------------------------------------- +// func.l dy,d8(ax,dy) +//-------------------------------------------------------------------- + funcldxea \1,b0,\2e8ad,a0_off(a7) + funcldxea \1,b1,\2e8ad,a1_off(a7) + funcldxea \1,b2,\2e8ad,a2 + funcldxea \1,b3,\2e8ad,a3 + funcldxea \1,b4,\2e8ad,a4 + funcldxea \1,b5,\2e8ad,a5 + funcldxea \1,b6,\2e8ad,a6 + funcldxea \1,b7,\2e8ad,usp +/******************************************************/ +// adress register +/******************************************************/ +//-------------------------------------------------------------------- +// func.w ea,ax +//-------------------------------------------------------------------- +//-------------------------------------------------------------------- +// func.w dx,ax +//-------------------------------------------------------------------- + funcweaax \1,c0,\2aw,d0 + funcweaax \1,c1,\2aw,d1 + funcweaax \1,c2,\2aw,d2 + funcweaax \1,c3,\2aw,d3 + funcweaax \1,c4,\2aw,d4 + funcweaax \1,c5,\2aw,d5 + funcweaax \1,c6,\2aw,d6 + funcweaax \1,c7,\2aw,d7 +//-------------------------------------------------------------------- +// func.w ay,ax +//-------------------------------------------------------------------- + funcweaax \1,c8,\2aw,a0 + funcweaax \1,c9,\2aw,a1 + funcweaax \1,ca,\2aw,a2 + funcweaax \1,cb,\2aw,a3 + funcweaax \1,cc,\2aw,a4 + funcweaax \1,cd,\2aw,a5 + funcweaax \1,ce,\2aw,a6 + funcweaax \1,cf,\2awu,a7 +//-------------------------------------------------------------------- +// func.w (ay),ax +//-------------------------------------------------------------------- + funcweaax \1,d0,\2aw,(a0) + funcweaax \1,d1,\2aw,(a1) + funcweaax \1,d2,\2aw,(a2) + funcweaax \1,d3,\2aw,(a3) + funcweaax \1,d4,\2aw,(a4) + funcweaax \1,d5,\2aw,(a5) + funcweaax \1,d6,\2aw,(a6) + funcweaax \1,d7,\2awu,(a7) +//-------------------------------------------------------------------- +// func.w (ay)+,ax +//-------------------------------------------------------------------- + funcweaax \1,d8,\2aw,(a0)+ + funcweaax \1,d9,\2aw,(a1)+ + funcweaax \1,da,\2aw,(a2)+ + funcweaax \1,db,\2aw,(a3)+ + funcweaax \1,dc,\2aw,(a4)+ + funcweaax \1,dd,\2aw,(a5)+ + funcweaax \1,de,\2aw,(a6)+ + funcweaax \1,df,\2awu,(a7)+ +//-------------------------------------------------------------------- +// func.w -(ay),ax +//-------------------------------------------------------------------- + funcweaax \1,e0,\2aw,-(a0) + funcweaax \1,e1,\2aw,-(a1) + funcweaax \1,e2,\2aw,-(a2) + funcweaax \1,e3,\2aw,-(a3) + funcweaax \1,e4,\2aw,-(a4) + funcweaax \1,e5,\2aw,-(a5) + funcweaax \1,e6,\2aw,-(a6) + funcweaax \1,e7,\2awu,-(a7) +//-------------------------------------------------------------------- +// func.w d16(ay),ax +//-------------------------------------------------------------------- + funcweaaxn \1,e8,\2awd16a,a0_off(a7) + funcweaaxn \1,e9,\2awd16a,a1_off(a7) + funcweaaxn \1,ea,\2awd16a,a2 + funcweaaxn \1,eb,\2awd16a,a3 + funcweaaxn \1,ec,\2awd16a,a4 + funcweaaxn \1,ed,\2awd16a,a5 + funcweaaxn \1,ee,\2awd16a,a6 + funcweaaxn \1,ef,\2awd16a,usp +//-------------------------------------------------------------------- +// func.w d8(ay,dy),ax +//-------------------------------------------------------------------- + funcweaaxn \1,f0,\2awd8a,a0_off(a7) + funcweaaxn \1,f1,\2awd8a,a1_off(a7) + funcweaaxn \1,f2,\2awd8a,a2 + funcweaaxn \1,f3,\2awd8a,a3 + funcweaaxn \1,f4,\2awd8a,a4 + funcweaaxn \1,f5,\2awd8a,a5 + funcweaaxn \1,f6,\2awd8a,a6 + funcweaaxn \1,f7,\2awd8a,usp +//-------------------------------------------------------------------- +// func.w xxx.w,ax +//-------------------------------------------------------------------- + funcweaaxn \1,f8,\2awxwax,(a0)+ +//-------------------------------------------------------------------- +// func.w xxxlw,ax +//-------------------------------------------------------------------- + funcweaaxn \1,f9,\2awxlax,(a0)+ +//-------------------------------------------------------------------- +// func.w d16(pc),ax +//-------------------------------------------------------------------- + funcweaaxn \1,fa,\2awd16pcax,(a0)+ +//-------------------------------------------------------------------- +// func.w d8(pc,dy),ax +//-------------------------------------------------------------------- + funcweaaxn \1,fb,\2awd8pcax,(a0)+ //(a0 wird nicht verwendet) +//-------------------------------------------------------------------- +// func.w #im,ax +//-------------------------------------------------------------------- + funcweaaxn \1,fc,\2awim,(a0)+ +//-------------------------------------------------------------------- +// ende + .endm; +//-------------------------------------------------------------------- +// byt +funcbeadx:.macro // function byt: im,dx +ii_0x\10\2: + \3 \4,d0_off+3(a7),b +ii_0x\12\2: + \3 \4,d1_off+3(a7),b +ii_0x\14\2: + \3 \4,d2,b +ii_0x\16\2: + \3 \4,d3,b +ii_0x\18\2: + \3 \4,d4,b +ii_0x\1a\2: + \3 \4,d5,b +ii_0x\1c\2: + \3 \4,d6,b +ii_0x\1e\2: + \3 \4,d7,b + .endm; +funcbdxea:.macro // ea(\4) function(\3) dx -> ea +ii_0x\11\2: + \3 d0_off+3(a7),\4,b +ii_0x\13\2: + \3 d1_off+3(a7),\4,b +ii_0x\15\2: + \3 d2,\4,b +ii_0x\17\2: + \3 d3,\4,b +ii_0x\19\2: + \3 d4,\4,b +ii_0x\1b\2: + \3 d5,\4,b +ii_0x\1d\2: + \3 d6,\4,b +ii_0x\1f\2: + \3 d7,\4,b + .endm; +//-------------------------------------------------------------------- +// word +funcweadx:.macro // dx function(\3) ea(\4) -> dx +ii_0x\10\2: + \3 \4,d0_off+2(a7),w +ii_0x\12\2: + \3 \4,d1_off+2(a7),w +ii_0x\14\2: + \3 \4,d2,w +ii_0x\16\2: + \3 \4,d3,w +ii_0x\18\2: + \3 \4,d4,w +ii_0x\1a\2: + \3 \4,d5,w +ii_0x\1c\2: + \3 \4,d6,w +ii_0x\1e\2: + \3 \4,d7,w + .endm; +funcwdxea:.macro // ea(\4) function(\3) dx -> ea +ii_0x\11\2: + \3 d0_off+2(a7),\4,w +ii_0x\13\2: + \3 d1_off+2(a7),\4,w +ii_0x\15\2: + \3 d2,\4,w +ii_0x\17\2: + \3 d3,\4,w +ii_0x\19\2: + \3 d4,\4,w +ii_0x\1b\2: + \3 d5,\4,w +ii_0x\1d\2: + \3 d6,\4,w +ii_0x\1f\2: + \3 d7,\4,w + .endm; +//-------------------------------------------------------------------- +// long +funcleadx:.macro // dx function(\3) ea(\4) -> dx +ii_0x\10\2: + \3 \4,d0_off(a7),w +ii_0x\12\2: + \3 \4,d1_off(a7),w +ii_0x\14\2: + \3 \4,d2,w +ii_0x\16\2: + \3 \4,d3,w +ii_0x\18\2: + \3 \4,d4,w +ii_0x\1a\2: + \3 \4,d5,w +ii_0x\1c\2: + \3 \4,d6,w +ii_0x\1e\2: + \3 \4,d7,w + .endm; +funcldxea:.macro // ea(\4) function(\3) dx -> ea +ii_0x\11\2: + \3 d0_off(a7),\4,w +ii_0x\13\2: + \3 d1_off(a7),\4,w +ii_0x\15\2: + \3 d2,\4,w +ii_0x\17\2: + \3 d3,\4,w +ii_0x\19\2: + \3 d4,\4,w +ii_0x\1b\2: + \3 d5,\4,w +ii_0x\1d\2: + \3 d6,\4,w +ii_0x\1f\2: + \3 d7,\4,w + .endm; +//-------------------------------------------------------------- +// address +funcweaax:.macro // ax function(\3) ea(\4)(ext long!) -> ax +ii_0x\10\2: + \3 \4,a0 +ii_0x\12\2: + \3 \4,a1 +ii_0x\14\2: + \3 \4,a2 +ii_0x\16\2: + \3 \4,a3 +ii_0x\18\2: + \3 \4,a4 +ii_0x\1a\2: + \3 \4,a5 +ii_0x\1c\2: + \3 \4,a6 +ii_0x\1e\2: + \3a7 \4,a7 // "a7" beachten wegen usp + .endm; +funcweaaxn:.macro // ax function(\3) ea(\4)(ext long!) -> ax +ii_0x\10\2: + \3 \4,a0_off(a7) +ii_0x\12\2: + \3 \4,a1_off(a7) +ii_0x\14\2: + \3 \4,a2 +ii_0x\16\2: + \3 \4,a3 +ii_0x\18\2: + \3 \4,a4 +ii_0x\1a\2: + \3 \4,a5 +ii_0x\1c\2: + \3 \4,a6 +ii_0x\1e\2: + \3 \4,usp + .endm; +//-------------------------------------------------------------- +// byt, word, long +//-------------------------------------------------------------- +funcaxay:.macro // ea(\4) function(\3) dx -> ea,\5 = size +ii_0x\11\2: + \3 a0_off(a7),\4,\5 +ii_0x\13\2: + \3 a1_off(a7),\4,\5 +ii_0x\15\2: + \3 a2,\4,\5 +ii_0x\17\2: + \3 a3,\4,\5 +ii_0x\19\2: + \3 a4,\4,\5 +ii_0x\1b\2: + \3 a5,\4,\5 +ii_0x\1d\2: + \3 a6,\4,\5 +ii_0x\1f\2: + \3 usp,\4,\5 + .endm; diff --git a/BaS_codewarrior/firebeeV1/sources/ii_jmp.h b/BaS_codewarrior/firebeeV1/sources/ii_jmp.h new file mode 100644 index 0000000..1896118 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/ii_jmp.h @@ -0,0 +1,59 @@ +//-------------------------------------------------------------------- +// extension word format missing +//-------------------------------------------------------------------- +ii_\1_func:.macro +ii_0x\20: +#ifdef halten_\1 + halt +#endif + move.l a0_off(a7),a1 + \1_macro +ii_0x\21: +#ifdef halten_\1 + halt +#endif + move.l a1_off(a7),a1 + \1_macro +ii_0x\22: +#ifdef halten_\1 + halt +#endif + move.l a2,a1 + \1_macro +ii_0x\23: +#ifdef halten_\1 + halt +#endif + move.l a3,a1 + \1_macro +ii_0x\24: +#ifdef halten_\1 + halt +#endif + move.l a4,a1 + \1_macro +ii_0x\25: +#ifdef halten_\1 + halt +#endif + move.l a5,a1 + \1_macro +ii_0x\26: +#ifdef halten_\1 + halt +#endif + move.l a6,a1 + \1_macro +ii_0x\27: +#ifdef halten_\1 + halt +#endif + move.l usp,a1 + \1_macro +ii_0x\2b: +#ifdef halten_\1 + halt +#endif + move.l a0,a1 + \1_macro +.endm diff --git a/BaS_codewarrior/firebeeV1/sources/ii_lea.h b/BaS_codewarrior/firebeeV1/sources/ii_lea.h new file mode 100644 index 0000000..7a422a7 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/ii_lea.h @@ -0,0 +1,105 @@ +//------------------------------------------------------------------- +// lea +//------------------------------------------------------------------- +.text +ii_lea_lset:.macro + ii_lset_dxu 4,f0 // lea d8(a0,dy.w),a0-a7 + ii_lset_dxu 4,f1 // lea d8(a1,dy.w),a0-a7 + ii_lset_dxu 4,f2 // lea d8(a2,dy.w),a0-a7 + ii_lset_dxu 4,f3 // lea d8(a3,dy.w),a0-a7 + ii_lset_dxu 4,f4 // lea d8(a4,dy.w),a0-a7 + ii_lset_dxu 4,f5 // lea d8(a5,dy.w),a0-a7 + ii_lset_dxu 4,f6 // lea d8(a6,dy.w),a0-a7 + ii_lset_dxu 4,f7 // lea d8(a7,dy.w),a0-a7 + ii_lset_dxu 4,fb // lea d8(pc,dy.w),a0-a7 +.endm + +//--------------------------------------------------------------------------------------------- +// function +//--------------------------------------------------------------------------------------------- +ii_lea_sub:.macro +ii_0x4\1\2: +#ifdef halten_lea + halt +#endif + move.l \4,a1 + jsr ewf + move.l a1,\3 + ii_end +.endm +ii_lea_func:.macro +//lea d8(ax,dy.w),a0-a7 + ii_lea_sub 1,f0,a0_off(a7),a0_off(a7) + ii_lea_sub 1,f1,a0_off(a7),a1_off(a7) + ii_lea_sub 1,f2,a0_off(a7),a2 + ii_lea_sub 1,f3,a0_off(a7),a3 + ii_lea_sub 1,f4,a0_off(a7),a4 + ii_lea_sub 1,f5,a0_off(a7),a5 + ii_lea_sub 1,f6,a0_off(a7),a6 + ii_lea_sub 1,f7,a0_off(a7),usp + ii_lea_sub 3,f0,a1_off(a7),a0_off(a7) + ii_lea_sub 3,f1,a1_off(a7),a1_off(a7) + ii_lea_sub 3,f2,a1_off(a7),a2 + ii_lea_sub 3,f3,a1_off(a7),a3 + ii_lea_sub 3,f4,a1_off(a7),a4 + ii_lea_sub 3,f5,a1_off(a7),a5 + ii_lea_sub 3,f6,a1_off(a7),a6 + ii_lea_sub 3,f7,a1_off(a7),usp + ii_lea_sub 5,f0,a2,a0_off(a7) + ii_lea_sub 5,f1,a2,a1_off(a7) + ii_lea_sub 5,f2,a2,a2 + ii_lea_sub 5,f3,a2,a3 + ii_lea_sub 5,f4,a2,a4 + ii_lea_sub 5,f5,a2,a5 + ii_lea_sub 5,f6,a2,a6 + ii_lea_sub 5,f7,a2,usp + ii_lea_sub 7,f0,a3,a0_off(a7) + ii_lea_sub 7,f1,a3,a1_off(a7) + ii_lea_sub 7,f2,a3,a2 + ii_lea_sub 7,f3,a3,a3 + ii_lea_sub 7,f4,a3,a4 + ii_lea_sub 7,f5,a3,a5 + ii_lea_sub 7,f6,a3,a6 + ii_lea_sub 7,f7,a3,usp + ii_lea_sub 9,f0,a4,a0_off(a7) + ii_lea_sub 9,f1,a4,a1_off(a7) + ii_lea_sub 9,f2,a4,a2 + ii_lea_sub 9,f3,a4,a3 + ii_lea_sub 9,f4,a4,a4 + ii_lea_sub 9,f5,a4,a5 + ii_lea_sub 9,f6,a4,a6 + ii_lea_sub 9,f7,a4,usp + ii_lea_sub b,f0,a5,a0_off(a7) + ii_lea_sub b,f1,a5,a1_off(a7) + ii_lea_sub b,f2,a5,a2 + ii_lea_sub b,f3,a5,a3 + ii_lea_sub b,f4,a5,a4 + ii_lea_sub b,f5,a5,a5 + ii_lea_sub b,f6,a5,a6 + ii_lea_sub b,f7,a6,usp + ii_lea_sub d,f0,a6,a0_off(a7) + ii_lea_sub d,f1,a6,a1_off(a7) + ii_lea_sub d,f2,a6,a2 + ii_lea_sub d,f3,a6,a3 + ii_lea_sub d,f4,a6,a4 + ii_lea_sub d,f5,a6,a5 + ii_lea_sub d,f6,a6,a6 + ii_lea_sub d,f7,a6,usp + ii_lea_sub f,f0,usp,a0_off(a7) + ii_lea_sub f,f1,usp,a1_off(a7) + ii_lea_sub f,f2,usp,a2 + ii_lea_sub f,f3,usp,a3 + ii_lea_sub f,f4,usp,a4 + ii_lea_sub f,f5,usp,a5 + ii_lea_sub f,f6,usp,a6 + ii_lea_sub f,f7,usp,usp +// lea d8(pc,dy.w),az + ii_lea_sub 1,fb,a0_off(a7),a0 + ii_lea_sub 3,fb,a1_off(a7),a0 + ii_lea_sub 5,fb,a2,a0 + ii_lea_sub 7,fb,a3,a0 + ii_lea_sub 9,fb,a4,a0 + ii_lea_sub b,fb,a5,a0 + ii_lea_sub d,fb,a6,a0 + ii_lea_sub f,fb,usp,a0 +.endm \ No newline at end of file diff --git a/BaS_codewarrior/firebeeV1/sources/ii_macro.h b/BaS_codewarrior/firebeeV1/sources/ii_macro.h new file mode 100644 index 0000000..5db7460 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/ii_macro.h @@ -0,0 +1,144 @@ +/*******************************************************/ +// constanten +/*******************************************************/ +.extern ___RAMBAR1 +.extern _rt_cacr +.extern _rt_mod +.extern _rt_ssp +.extern _rt_usp +.extern _rt_vbr +.extern _d0_save +.extern _a7_save + +ii_ss = 16 +d0_off = 0 +d1_off = 4 +a0_off = 8 +a1_off = 12 +format_off = 16 +sr_off = 18 +ccr_off = 19 +pc_off = 20 + +#define table 0x20000000-0x8000-0xF000*4 // Adresse Sprungtabelle -> 8000=Sprungbereich mod cod, 61k(ohne 0xFxxx!)x4= tabelle + +/*******************************************************/ +// allgemeine macros +/*******************************************************/ +ii_end: .macro + move.l a0,pc_off(a7) + movem.l (a7),d0/d1/a0/a1 + lea ii_ss(a7),a7 + rte + .endm; + +set_cc0:.macro + move.w ccr,d0 + move.b d0,ccr_off(a7) + .endm; + +ii_esr: .macro // geht nicht!!?? + movem.l (a7),d0/d1/a0/a1 + lea ii_ss+8(a7),a7 // stack erhöhen + move.w d0,_d0_save // d0.w sicheren + move.w -6(a7),d0 // sr holen + move.w d0,sr // sr setzen + nop + move.w _d0_save,d0 // d0.w zurück + .endm; + +ii_end_mvm:.macro + move.l a0_off(a7),a0 + lea 16(a7),a7 + rte + .endm; + +ii_endj:.macro + movem.l (a7),d0/d1/a0/a1 // register zurück + lea ii_ss(a7),a7 // korr + rte // ende + .endm; + +set_nzvc:.macro // set ccr bits nzvc + move.w ccr,d1 + bclr #4,d1 + btst #4,ccr_off(a7) + beq snzvc2\@ + bset #4,d1 +snzvc2\@: + move.b d1,ccr_off(a7) + .endm; + +set_cc1:.macro + move.w ccr,d1 + move.b d1,ccr_off(a7) + .endm; + +set_cc_b:.macro + move.w ccr,d1 + btst #7,d0 // byt negativ? + beq set_cc_b2\@ + bset #3,d1 // make negativ +set_cc_b2\@: + move.b d1,ccr_off(a7) + .endm; + +set_cc_w:.macro + move.w ccr,d1 + btst #15,d0 // byt negativ? + beq set_cc_w2\@ + bset #3,d1 // make negativ +set_cc_w2\@: + move.b d1,ccr_off(a7) + .endm; + +get_pc: .macro + lea.l (a0),a1 + .endm; + +//-------------------------------------------------------------------- +ii_lset:.macro + lea table+\1*4,a0 + move.l #ii_\1,(a0) + .endm; +ii_lset_dx:.macro // 0x1.22 -> z.B. 1=d,2=4 ->0xd040 -> 0xde40 + ii_lset_dxg \1,\2 + ii_lset_dxu \1,\2 + .endm; +ii_lset_dxg:.macro // gerade: 0x1.22 -> z.B. 1=d,2=4 ->0xd040 -> 0xde40 + lea table+0x\10\2*4,a0 + move.l #ii_0x\10\2,(a0) + lea 0x800(a0),a0 // 4 * 0x200 + move.l #ii_0x\12\2,(a0) + lea 0x800(a0),a0 + move.l #ii_0x\14\2,(a0) + lea 0x800(a0),a0 + move.l #ii_0x\16\2,(a0) + lea 0x800(a0),a0 + move.l #ii_0x\18\2,(a0) + lea 0x800(a0),a0 + move.l #ii_0x\1a\2,(a0) + lea 0x800(a0),a0 + move.l #ii_0x\1c\2,(a0) + lea 0x800(a0),a0 + move.l #ii_0x\1e\2,(a0) + .endm; +ii_lset_dxu:.macro // ungerade: 0x1.22 -> z.B. 1=d,2=4 ->0xd140 -> 0xdf40 + lea table+0x\11\2*4,a0 + move.l #ii_0x\11\2,(a0) + lea 0x800(a0),a0 + move.l #ii_0x\13\2,(a0) + lea 0x800(a0),a0 + move.l #ii_0x\15\2,(a0) + lea 0x800(a0),a0 + move.l #ii_0x\17\2,(a0) + lea 0x800(a0),a0 + move.l #ii_0x\19\2,(a0) + lea 0x800(a0),a0 + move.l #ii_0x\1b\2,(a0) + lea 0x800(a0),a0 + move.l #ii_0x\1d\2,(a0) + lea 0x800(a0),a0 + move.l #ii_0x\1f\2,(a0) + .endm; + diff --git a/BaS_codewarrior/firebeeV1/sources/ii_move.h b/BaS_codewarrior/firebeeV1/sources/ii_move.h new file mode 100644 index 0000000..1ae8213 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/ii_move.h @@ -0,0 +1,1271 @@ +//------------------------------------------------------------------- +// move +//------------------------------------------------------------------- +.extern ewf + +.text +ii_move_lset:.macro +//------------------------------------------------------------------------- +// 0x1000 move.b +//------------------------------------------------------------------------- +// move.x d16(ax),xxx.w 1=size 2=adress register + ii_lset_opeau 11,e +// move.x d16(ax),xxx.l + ii_lset_opeau 13,e +// move.x d16(pc),xxx.w + ii_lset 0x11fa +// move.x d16(pc),xxx.l + ii_lset 0x13fa +// move.x xxx.w,d16(ax) + ii_lset_dxu 1,78 +// move.x xxx.l,d16(ax) + ii_lset_dxu 1,79 +// move.x #xx,d16(ax) + ii_lset_dxu 1,7c +// move.x xxx.w,xxx.w; 1=size 2=size source adr 3=size dest adr 4=code + ii_lset 0x11f8 +// move.x xxx.l,xxx.w + ii_lset 0x11f9 +// move.x xxx.w,xxx.l + ii_lset 0x13f8 +// move.x xxx.l,xxx.l + ii_lset 0x13f9 +// move.x #xx,xxx.w //1=size 2=size dest adr 3=code + ii_lset 0x11fc +// move.x #xx,xxx.l //1=size 2=size dest adr 3=code + ii_lset 0x13fc +//--------------------------------------------------------------------- +// move.x ea,d8(ax,dy) ------------------------------------------- +//--------------------------------------------------------------------- +// move.x dx,d8(a0-a7,dy) + ii_lset_opeag 11,8 + ii_lset_opeag 13,8 + ii_lset_opeag 15,8 + ii_lset_opeag 17,8 + ii_lset_opeag 19,8 + ii_lset_opeag 1b,8 + ii_lset_opeag 1d,8 + ii_lset_opeag 1f,8 +// move.x (ax),d8(a0-a7,dy) +// move.x (ax)+,d8(a0-a7,dy) + ii_lset_opea 11,9 + ii_lset_opea 13,9 + ii_lset_opea 15,9 + ii_lset_opea 17,9 + ii_lset_opea 19,9 + ii_lset_opea 1b,9 + ii_lset_opea 1d,9 + ii_lset_opea 1f,9 +// move.x -(ax),d8(a0-a7,dy) + ii_lset_opeag 11,a + ii_lset_opeag 13,a + ii_lset_opeag 15,a + ii_lset_opeag 17,a + ii_lset_opeag 19,a + ii_lset_opeag 1b,a + ii_lset_opeag 1d,a + ii_lset_opeag 1f,a +//--------------------------------------------------------------------- +// move.x ea,d8(pc,dy) ------------------------------------------- +//--------------------------------------------------------------------- +// move.x dx,d8(pc,dy) + ii_lset_opeag 17,c +// move.x (ax),d8(pc,dy) +// move.x (ax)+,d8(pc,dy) + ii_lset_opea 17,d +// move.x -(ax),d8(pc,dy) + ii_lset_opeag 17,e +//--------------------------------------------------------------------- +// move.x d8(ax,dy),ea -------------------------------------------- +//--------------------------------------------------------------------- +// move.x d8(ax,dy),d0-d7 + ii_lset_opeag 10,3 + ii_lset_opeag 12,3 + ii_lset_opeag 14,3 + ii_lset_opeag 16,3 + ii_lset_opeag 18,3 + ii_lset_opeag 1a,3 + ii_lset_opeag 1c,3 + ii_lset_opeag 1e,3 +// move.x d8(ax,dy),a0-a7 + ii_lset_opeag 10,7 + ii_lset_opeag 12,7 + ii_lset_opeag 14,7 + ii_lset_opeag 16,7 + ii_lset_opeag 18,7 + ii_lset_opeag 1a,7 + ii_lset_opeag 1c,7 + ii_lset_opeag 1e,7 +// move.x d8(ax,dy),(a0)-(a7) + ii_lset_opeag 10,b + ii_lset_opeag 12,b + ii_lset_opeag 14,b + ii_lset_opeag 16,b + ii_lset_opeag 18,b + ii_lset_opeag 1a,b + ii_lset_opeag 1c,b + ii_lset_opeag 1e,b +// move.x d8(ax,dy),(a0)+-(a7)+ + ii_lset_opeag 10,f + ii_lset_opeag 12,f + ii_lset_opeag 14,f + ii_lset_opeag 16,f + ii_lset_opeag 18,f + ii_lset_opeag 1a,f + ii_lset_opeag 1c,f + ii_lset_opeag 1e,f +// move.x d8(ax,dy),-(a0) bis -(a7) + ii_lset_opeag 11,3 + ii_lset_opeag 13,3 + ii_lset_opeag 15,3 + ii_lset_opeag 17,3 + ii_lset_opeag 19,3 + ii_lset_opeag 1b,3 + ii_lset_opeag 1d,3 + ii_lset_opeag 1f,3 +//--------------------------------------------------------------------- +// move.x d8(pc,dy),ea -------------------------------------------- +//--------------------------------------------------------------------- +// move.x d8(pc,dy),d0-d7 + ii_lset_dxg 1,3b +// move.x d8(pc,dy),a0-a7 + ii_lset_dxg 1,7b +// move.x d8(pc,dy),(a0-a7) + ii_lset_dxg 1,bb +// move.x d8(pc,dy),(a0-a7)+ + ii_lset_dxg 1,fb +// move.x d8(pc,dy),(a0-a7)+ + ii_lset_dxu 1,3b +//------------------------------------------------------------------------- +// 0x2000 move.l +//------------------------------------------------------------------------- +// move.x d16(ax),xxx.w 1=size 2=adress register + ii_lset_opeau 21,e +// move.x d16(ax),xxx.l + ii_lset_opeau 23,e +// move.x d16(pc),xxx.w + ii_lset 0x21fa +// move.x d16(pc),xxx.l + ii_lset 0x23fa +// move.x xxx.w,d16(ax) + ii_lset_dxu 2,78 +// move.x xxx.l,d16(ax) + ii_lset_dxu 2,79 +// move.x #xx,d16(ax) + ii_lset_dxu 2,7c +// move.x xxx.w,xxx.w; 1=size 2=size source adr 3=size dest adr 4=code + ii_lset 0x21f8 +// move.x xxx.l,xxx.w + ii_lset 0x21f9 +// move.x xxx.w,xxx.l + ii_lset 0x23f8 +// move.x xxx.l,xxx.l + ii_lset 0x23f9 +// move.x #xx,xxx.w //1=size 2=size dest adr 3=code + ii_lset 0x21fc +// move.x #xx,xxx.l //1=size 2=size dest adr 3=code + ii_lset 0x23fc +// move.x ea,d8(ax,dy) ------------------------------------------- +// move.x dx,d8(a0-a7,dy) + ii_lset_opeag 21,8 + ii_lset_opeag 23,8 + ii_lset_opeag 25,8 + ii_lset_opeag 27,8 + ii_lset_opeag 29,8 + ii_lset_opeag 2b,8 + ii_lset_opeag 2d,8 + ii_lset_opeag 2f,8 +// move.x (ax),d8(a0-a7,dy) +// move.x (ax)+,d8(a0-a7,dy) + ii_lset_opea 21,9 + ii_lset_opea 23,9 + ii_lset_opea 25,9 + ii_lset_opea 27,9 + ii_lset_opea 29,9 + ii_lset_opea 2b,9 + ii_lset_opea 2d,9 + ii_lset_opea 2f,9 +// move.x -(ax),d8(a0-a7,dy) + ii_lset_opeag 21,a + ii_lset_opeag 23,a + ii_lset_opeag 25,a + ii_lset_opeag 27,a + ii_lset_opeag 29,a + ii_lset_opeag 2b,a + ii_lset_opeag 2d,a + ii_lset_opeag 2f,a +//--------------------------------------------------------------------- +// move.x ea,d8(pc,dy) ------------------------------------------- +//--------------------------------------------------------------------- +// move.x dx,d8(pc,dy) +// move.x ax,d8(pc,dy) + ii_lset_opea 27,c +// move.x (ax),d8(pc,dy) +// move.x (ax)+,d8(pc,dy) + ii_lset_opea 27,d +// move.x -(ax),d8(pc,dy) + ii_lset_opeag 27,e +//--------------------------------------------------------------------- +// move.x d8(ax,dy),ea -------------------------------------------- +//--------------------------------------------------------------------- +// move.x d8(ax,dy),d0-d7 + ii_lset_opeag 20,3 + ii_lset_opeag 22,3 + ii_lset_opeag 24,3 + ii_lset_opeag 26,3 + ii_lset_opeag 28,3 + ii_lset_opeag 2a,3 + ii_lset_opeag 2c,3 + ii_lset_opeag 2e,3 +// move.x d8(ax,dy),a0-a7 + ii_lset_opeag 20,7 + ii_lset_opeag 22,7 + ii_lset_opeag 24,7 + ii_lset_opeag 26,7 + ii_lset_opeag 28,7 + ii_lset_opeag 2a,7 + ii_lset_opeag 2c,7 + ii_lset_opeag 2e,7 +// move.x d8(ax,dy),(a0)-(a7) + ii_lset_opeag 20,b + ii_lset_opeag 22,b + ii_lset_opeag 24,b + ii_lset_opeag 26,b + ii_lset_opeag 28,b + ii_lset_opeag 2a,b + ii_lset_opeag 2c,b + ii_lset_opeag 2e,b +// move.x d8(ax,dy),(a0)+-(a7)+ + ii_lset_opeag 20,f + ii_lset_opeag 22,f + ii_lset_opeag 24,f + ii_lset_opeag 26,f + ii_lset_opeag 28,f + ii_lset_opeag 2a,f + ii_lset_opeag 2c,f + ii_lset_opeag 2e,f +// move.x d8(ax,dy),-(a0) bis -(a7) + ii_lset_opeag 21,3 + ii_lset_opeag 23,3 + ii_lset_opeag 25,3 + ii_lset_opeag 27,3 + ii_lset_opeag 29,3 + ii_lset_opeag 2b,3 + ii_lset_opeag 2d,3 + ii_lset_opeag 2f,3 +//--------------------------------------------------------------------- +// move.x d8(pc,dy),ea -------------------------------------------- +//--------------------------------------------------------------------- +// move.x d8(pc,dy),d0-d7 + ii_lset_dxg 2,3b +// move.x d8(pc,dy),a0-a7 + ii_lset_dxg 2,7b +// move.x d8(pc,dy),(a0-a7) + ii_lset_dxg 2,bb +// move.x d8(pc,dy),(a0-a7)+ + ii_lset_dxg 2,fb +// move.x d8(pc,dy),(a0-a7)+ + ii_lset_dxu 2,3b +//------------------------------------------------------------------------- +// 0x3000 move.w +///------------------------------------------------------------------------- +// move.x d16(ax),xxx.w 1=size 2=adress register + ii_lset_opeau 31,e +// move.x d16(ax),xxx.l + ii_lset_opeau 33,e +// move.x d16(pc),xxx.w + ii_lset 0x31fa +// move.x d16(pc),xxx.l + ii_lset 0x33fa +// move.x xxx.w,d16(ax) + ii_lset_dxu 3,78 +// move.x xxx.l,d16(ax) + ii_lset_dxu 3,79 +// move.x #xx,d16(ax) + ii_lset_dxu 3,7c +// move.x xxx.w,xxx.w; 1=size 2=size source adr 3=size dest adr 4=code + ii_lset 0x31f8 +// move.x xxx.l,xxx.w + ii_lset 0x31f9 +// move.x xxx.w,xxx.l + ii_lset 0x33f8 +// move.x xxx.l,xxx.l + ii_lset 0x33f9 +// move.x #xx,xxx.w //1=size 2=size dest adr 3=code + ii_lset 0x31fc +// move.x #xx,xxx.l //1=size 2=size dest adr 3=code + ii_lset 0x33fc +// move.x ea,d8(ax,dy) ------------------------------------------- +// move.x dx,d8(a0-a7,dy) + ii_lset_opeag 31,8 + ii_lset_opeag 33,8 + ii_lset_opeag 35,8 + ii_lset_opeag 37,8 + ii_lset_opeag 39,8 + ii_lset_opeag 3b,8 + ii_lset_opeag 3d,8 + ii_lset_opeag 3f,8 +// move.x (ax),d8(a0-a7,dy) +// move.x (ax)+,d8(a0-a7,dy) + ii_lset_opea 31,9 + ii_lset_opea 33,9 + ii_lset_opea 35,9 + ii_lset_opea 37,9 + ii_lset_opea 39,9 + ii_lset_opea 3b,9 + ii_lset_opea 3d,9 + ii_lset_opea 3f,9 +// move.x -(ax),d8(a0-a7,dy) + ii_lset_opeag 31,a + ii_lset_opeag 33,a + ii_lset_opeag 35,a + ii_lset_opeag 37,a + ii_lset_opeag 39,a + ii_lset_opeag 3b,a + ii_lset_opeag 3d,a + ii_lset_opeag 3f,a +//--------------------------------------------------------------------- +// move.x ea,d8(pc,dy) ------------------------------------------- +//--------------------------------------------------------------------- +// move.x dx,d8(pc,dy) +// move.x ax,d8(pc,dy) + ii_lset_opea 37,c +// move.x (ax),d8(pc,dy) +// move.x (ax)+,d8(pc,dy) + ii_lset_opea 37,d +// move.x -(ax),d8(pc,dy) + ii_lset_opeag 37,e +//--------------------------------------------------------------------- +// move.x d8(ax,dy),ea -------------------------------------------- +//--------------------------------------------------------------------- +// move.x d8(ax,dy),d0-d7 + ii_lset_opeag 30,3 + ii_lset_opeag 32,3 + ii_lset_opeag 34,3 + ii_lset_opeag 36,3 + ii_lset_opeag 38,3 + ii_lset_opeag 3a,3 + ii_lset_opeag 3c,3 + ii_lset_opeag 3e,3 +// move.x d8(ax,dy),a0-a7 + ii_lset_opeag 30,7 + ii_lset_opeag 32,7 + ii_lset_opeag 34,7 + ii_lset_opeag 36,7 + ii_lset_opeag 38,7 + ii_lset_opeag 3a,7 + ii_lset_opeag 3c,7 + ii_lset_opeag 3e,7 +// move.x d8(ax,dy),(a0)-(a7) + ii_lset_opeag 30,b + ii_lset_opeag 32,b + ii_lset_opeag 34,b + ii_lset_opeag 36,b + ii_lset_opeag 38,b + ii_lset_opeag 3a,b + ii_lset_opeag 3c,b + ii_lset_opeag 3e,b +// move.x d8(ax,dy),(a0)+-(a7)+ + ii_lset_opeag 30,f + ii_lset_opeag 32,f + ii_lset_opeag 34,f + ii_lset_opeag 36,f + ii_lset_opeag 38,f + ii_lset_opeag 3a,f + ii_lset_opeag 3c,f + ii_lset_opeag 3e,f +// move.x d8(ax,dy),-(a0) bis -(a7) + ii_lset_opeag 31,3 + ii_lset_opeag 33,3 + ii_lset_opeag 35,3 + ii_lset_opeag 37,3 + ii_lset_opeag 39,3 + ii_lset_opeag 3b,3 + ii_lset_opeag 3d,3 + ii_lset_opeag 3f,3 +//--------------------------------------------------------------------- +// move.x d8(pc,dy),ea -------------------------------------------- +//--------------------------------------------------------------------- +// move.x d8(pc,dy),d0-d7 + ii_lset_dxg 3,3b +// move.x d8(pc,dy),a0-a7 + ii_lset_dxg 3,7b +// move.x d8(pc,dy),(a0-a7) + ii_lset_dxg 3,bb +// move.x d8(pc,dy),(a0-a7)+ + ii_lset_dxg 3,fb +// move.x d8(pc,dy),(a0-a7)+ + ii_lset_dxu 3,3b +.endm +//--------------------------------------------------------------------------------------------- +// function +//--------------------------------------------------------------------------------------------- +ii_move_op:.macro +// move.x d16(ax),xxx.w 1=size 2=adress register + ii_move_d16ax_xxx 1e8,a0_off(a7),w + ii_move_d16ax_xxx 1e9,a1_off(a7),w + ii_move_d16ax_xxx 1ea,a2,w + ii_move_d16ax_xxx 1eb,a3,w + ii_move_d16ax_xxx 1ec,a4,w + ii_move_d16ax_xxx 1ed,a5,w + ii_move_d16ax_xxx 1ee,a6,w + ii_move_d16ax_xxx 1ef,usp,w +// move.x d16(ax),xxx.l + ii_move_d16ax_xxx 3e8,a0_off(a7),l + ii_move_d16ax_xxx 3e9,a1_off(a7),l + ii_move_d16ax_xxx 3ea,a2,l + ii_move_d16ax_xxx 3eb,a3,l + ii_move_d16ax_xxx 3ec,a4,l + ii_move_d16ax_xxx 3ed,a5,l + ii_move_d16ax_xxx 3ee,a6,l + ii_move_d16ax_xxx 3ef,usp,l +// move.x d16(pc),xxx.w + ii_move_d16ax_xxx 1fa,a0,w +// move.x d16(pc),xxx.l + ii_move_d16ax_xxx 3fa,a0,l +// move.x xxx.w,d16(ax) +// move.x xxx.l,d16(ax) +// move.x #xx,d16(ax) + ii_move_xxx_d16ax 1,a0_off(a7) + ii_move_xxx_d16ax 3,a1_off(a7) + ii_move_xxx_d16ax 5,a2 + ii_move_xxx_d16ax 7,a3 + ii_move_xxx_d16ax 9,a4 + ii_move_xxx_d16ax b,a5 + ii_move_xxx_d16ax d,a6 + ii_move_xxx_d16ax f,usp +// move.x xxx.w,xxx.w; 1=size 2=size source adr 3=size dest adr 4=code + ii_move_xxx_xxx b,w,w,11f8 + ii_move_xxx_xxx l,w,w,21f8 + ii_move_xxx_xxx w,w,w,31f8 +// move.x xxx.l,xxx.w + ii_move_xxx_xxx b,l,w,11f9 + ii_move_xxx_xxx l,l,w,21f9 + ii_move_xxx_xxx w,l,w,31f9 +// move.x xxx.w,xxx.l + ii_move_xxx_xxx b,w,l,13f8 + ii_move_xxx_xxx l,w,l,23f8 + ii_move_xxx_xxx w,w,l,33f8 +// move.x xxx.l,xxx.l + ii_move_xxx_xxx b,l,l,13f9 + ii_move_xxx_xxx l,l,l,23f9 + ii_move_xxx_xxx w,l,l,33f9 +// move.x #xx,xxx.w //1=size 2=size dest adr 3=code + ii_move_im_xxx b,w,11fc + ii_move_im_xxx l,w,21fc + ii_move_im_xxx w,w,31fc +// move.x #xx,xxx.l //1=size 2=size dest adr 3=code + ii_move_im_xxx b,l,13fc + ii_move_im_xxx l,l,23fc + ii_move_im_xxx w,l,33fc +//--------------------------------------------------------------------- +// move.x ea,d8(ax,dy) ------------------------------------------- +//--------------------------------------------------------------------- +// move.x dx,d8(ax/pc,dy) + ii_move_dxxia d0_off(a7),80,id,d,c0 + ii_move_dxxia d1_off(a7),81,id,d,c1 + ii_move_dxxia d2,82,d,d,c2 + ii_move_dxxia d3,83,d,d,c3 + ii_move_dxxia d4,84,d,d,c4 + ii_move_dxxia d5,85,d,d,c5 + ii_move_dxxia d6,86,d,d,c6 + ii_move_dxxia d7,87,d,d,c7 +// move.x ax,d8(ax/pc,dy) + ii_move_dxxia a0_off(a7),88,id,d,c8 + ii_move_dxxia a1_off(a7),89,id,d,c9 + ii_move_dxxia a2,8a,d,da,ca + ii_move_dxxia a3,8b,d,da,cb + ii_move_dxxia a4,8c,d,da,cc + ii_move_dxxia a5,8d,d,da,cd + ii_move_dxxia a6,8e,d,da,ce + ii_move_dxxia a7,8f,a7,da,cf +// move.x (ax),d8(ax/pc,dy) + ii_move_dxxia a0_off(a7),90,ia,d,d0 + ii_move_dxxia a1_off(a7),91,ia,d,d1 + ii_move_dxxia (a2),92,d,d,d2 + ii_move_dxxia (a3),93,d,d,d3 + ii_move_dxxia (a4),94,d,d,d4 + ii_move_dxxia (a5),95,d,d,d5 + ii_move_dxxia (a6),96,d,d,d6 + ii_move_dxxia (a7),97,a7,d,d7 +// move.x (ax)+,d8(ax/pc,dy) + ii_move_dxxia a0_off(a7),98,iap,d,d8 + ii_move_dxxia a1_off(a7),99,iap,d,d9 + ii_move_dxxia (a2)+,9a,d,d,da + ii_move_dxxia (a3)+,9b,d,d,db + ii_move_dxxia (a4)+,9c,d,d,dc + ii_move_dxxia (a5)+,9d,d,d,dd + ii_move_dxxia (a6)+,9e,d,d,de + ii_move_dxxia (a7)+,9f,a7,d,df +// move.x -(ax),d8(ax/pc,dy) + ii_move_dxxia a0_off(a7),a0,iam,d,e0 + ii_move_dxxia a1_off(a7),a1,iam,d,e1 + ii_move_dxxia -(a2),a2,d,d,e2 + ii_move_dxxia -(a3),a3,d,d,e3 + ii_move_dxxia -(a4),a4,d,d,e4 + ii_move_dxxia -(a5),a5,d,d,e5 + ii_move_dxxia -(a6),a6,d,d,e6 + ii_move_dxxia -(a7),a7,a7,d,e7 +//--------------------------------------------------------------------- +// move.x d8(ax/pc,dy),ea -------------------------------------------- +//--------------------------------------------------------------------- +// move.x d8(ax/pc,dy),dz + ii_move_d8_dest d0,id,03,dx + ii_move_d8_dest d1,id,23,dx + ii_move_d8_dest d2,d,43,dx + ii_move_d8_dest d3,d,63,dx + ii_move_d8_dest d4,d,83,dx + ii_move_d8_dest d5,d,a3,dx + ii_move_d8_dest d6,d,c3,dx + ii_move_d8_dest d7,d,e3,dx +// move.x d8(ax/pc,dy),az + ii_move_d8_dest a0,id,07,ax + ii_move_d8_dest a1,id,27,ax + ii_move_d8_dest a2,d,47,ax + ii_move_d8_dest a3,d,67,ax + ii_move_d8_dest a4,d,87,ax + ii_move_d8_dest a5,d,a7,ax + ii_move_d8_dest a6,d,c7,ax + ii_move_d8_dest usp,id,e7,ax +// move.x d8(ax/pc,dy),(az) + ii_move_d8_dest a0_off(a7),id,0b,ia + ii_move_d8_dest a1_off(a7),id,2b,ia + ii_move_d8_dest (a2),d,4b,ia + ii_move_d8_dest (a3),d,6b,ia + ii_move_d8_dest (a4),d,8b,ia + ii_move_d8_dest (a5),d,ab,ia + ii_move_d8_dest (a6),d,cb,ia + ii_move_d8_dest usp,id,eb,ia +// move.x d8(ax/pc,dy),(az)+ + ii_move_d8_dest a0_off(a7),id,0f,iap + ii_move_d8_dest a1_off(a7),id,2f,iap + ii_move_d8_dest (a2)+,d,4f,iap + ii_move_d8_dest (a3)+,d,6f,iap + ii_move_d8_dest (a4)+,d,8f,iap + ii_move_d8_dest (a5)+,d,af,iap + ii_move_d8_dest (a6)+,d,cf,iap + ii_move_d8_dest usp,id,ef,iap +// move.x d8(ax/pc,dy),-(az) + ii_move_d8_dest a0_off(a7),id,13,iam + ii_move_d8_dest a1_off(a7),id,33,iam + ii_move_d8_dest -(a2),d,53,iam + ii_move_d8_dest -(a3),d,73,iam + ii_move_d8_dest -(a4),d,93,iam + ii_move_d8_dest -(a5),d,b3,iam + ii_move_d8_dest -(a6),d,d3,iam + ii_move_d8_dest usp,id,f3,iam +.endm //end function +//==================================================================== +// subs ---------------------------------------------------------- +//==================================================================== +// move.x d16(ax),xxx.w/l 1=code 2=adress register 3=dest adr size +ii_move_d16ax_xxx:.macro +ii_0x1\1: //byt: +#ifdef halten_move + halt +#endif + mvs.w (a0)+,d0 + move.l \2,a1 + add.l d0,a1 + move.b (a1),d0 + move.\3 (a0)+,a1 + move.b d0,(a1) + set_cc0 + ii_end +ii_0x2\1: //long: +#ifdef halten_move + halt +#endif + mvs.w (a0)+,d0 + move.l \2,a1 + add.l d0,a1 + move.l (a1),d0 + move.\3 (a0)+,a1 + move.l d0,(a1) + set_cc0 + ii_end +ii_0x3\1: //word: +#ifdef halten_move + halt +#endif + mvs.w (a0)+,d0 + move.l \2,a1 + add.l d0,a1 + move.w (a1),d0 + move.\3 (a0)+,a1 + move.w d0,(a1) + set_cc0 + ii_end +.endm +//---------------------------------------- +// move.x xxx.w,d16(ax) +// move.x xxx.l,d16(ax) +// move.x #xx,d16(ax) +ii_move_xxx_d16ax:.macro //1=code 2=adress register +ii_0x1\178: //byt xxx.w +#ifdef halten_move + halt +#endif + move.w (a0)+,a1 + move.b (a1),d0 + move.l \2,a1 + mvs.w (a0)+,d1 + add.l d1,a1 + move.b d0,(a1) + set_cc0 + ii_end +ii_0x1\179: //byt xxx.l +#ifdef halten_move + halt +#endif + move.l (a0)+,a1 + move.b (a1),d0 + move.l \2,a1 + mvs.w (a0)+,d1 + add.l d1,a1 + move.b d0,(a1) + set_cc0 + ii_end +ii_0x1\17c: //byt #x +#ifdef halten_move + halt +#endif + mvs.b (a0)+,d0 + move.l \2,a1 + mvs.w (a0)+,d1 + add.l d1,a1 + move.b d0,(a1) + set_cc0 + ii_end +ii_0x2\178: //long xxx.w +#ifdef halten_move + halt +#endif + move.w (a0)+,a1 + move.l (a1),d0 + move.l \2,a1 + mvs.w (a0)+,d1 + add.l d1,a1 + move.l d0,(a1) + set_cc0 + ii_end +ii_0x2\179: //long xxx.l +#ifdef halten_move + halt +#endif + move.l (a0)+,a1 + move.l (a1),d0 + move.l \2,a1 + mvs.w (a0)+,d1 + add.l d1,a1 + move.l d0,(a1) + set_cc0 + ii_end +ii_0x2\17c: //long #x +#ifdef halten_move + halt +#endif + move.l (a0)+,d0 + move.l \2,a1 + mvs.w (a0)+,d1 + add.l d1,a1 + move.l d0,(a1) + set_cc0 + ii_end + ii_end +ii_0x3\178: //word xxx.w +#ifdef halten_move + halt +#endif + move.w (a0)+,a1 + move.w (a1),d0 + move.l \2,a1 + mvs.w (a0)+,d1 + add.l d1,a1 + move.w d0,(a1) + set_cc0 + ii_end +ii_0x3\179: //word xxx.l +#ifdef halten_move + halt +#endif + move.l (a0)+,a1 + move.w (a1),d0 + move.l \2,a1 + mvs.w (a0)+,d1 + add.l d1,a1 + move.w d0,(a1) + set_cc0 + ii_end +ii_0x3\17c: //word #x +#ifdef halten_move + halt +#endif + move.w (a0)+,d0 + move.l \2,a1 + mvs.w (a0)+,d1 + add.l d1,a1 + move.w d0,(a1) + set_cc0 + ii_end +.endm +// move.x xxx,xxx +ii_move_xxx_xxx:.macro //1=size 2=size source adr 3=size dest adr 4=code +ii_0x\4: +#ifdef halten_move + halt +#endif + move.\2 (a0)+,a1 + move.\1 (a1),d0 + move.\3 (a0)+,d1 + move.\1 d0,(a1) + set_cc0 + ii_end +.endm +// move.x im,xxx +ii_move_im_xxx:.macro //1=size 2=size dest adr 3=code +ii_0x\3: +#ifdef halten_move + halt +#endif +.ifc 1,b + move.w (a0)+,d0 +.else + move.\1 (a0)+,d0 +.endif + move.\2 (a0)+,a1 + move.\1 d0,(a1) + set_cc0 + ii_end +.endm +//--------------------------------------------------------------------- +// move.x ea,d8(ax,dy) ------------------------------------------- +//--------------------------------------------------------------------- +// ea=dx,ax,(ax),(ax)+,-(ax) +//--------------------------------------------------------------------- +ii_move_dxxia:.macro //1=source 2=code 1.stelle 3=code 2 letzte Stellen 4=art 5=code d8(pc,dy) +.ifc \3,id + ii_move_dxxi b,\1+3,1,\2,\3,\5 + ii_move_dxxi w,\1+2,2,\2,\3,\5 + ii_move_dxxi l,\1,3,\2,\3,\5 +.else + .ifc \4,da + ii_move_dxxi w,\1,2,\2,\3,\5 + ii_move_dxxi l,\1,3,\2,\3,\5 + .else + ii_move_dxxi b,\1,1,\2,\3,\5 + ii_move_dxxi w,\1,2,\2,\3,\5 + ii_move_dxxi l,\1,3,\2,\3,\5 + .endif +.endif +.endm + +ii_move_dxxi:.macro +ii_0x\31\4: //1=size 2=source 3=code 1.stelle 4=code 2 letzte Stellen +#ifdef halten_move + halt +#endif + move.l a0_off(a7),a1 + move_end \1,\2,\5 +ii_0x\33\4: //1=size 2=source 3=code 1.stelle 4=code 2 letzte Stellen +#ifdef halten_move + halt +#endif + move.l a1_off(a7),a1 + move_end \1,\2,\5 +ii_0x\35\4: //1=size 2=source 3=code 1.stelle 4=code 2 letzte Stellen +#ifdef halten_move + halt +#endif + move.l a2,a1 + move_end \1,\2,\5 +ii_0x\37\4: //1=size 2=source 3=code 1.stelle 4=code 2 letzte Stellen +#ifdef halten_move + halt +#endif + move.l a3,a1 + move_end \1,\2,\5 +ii_0x\39\4: //1=size 2=source 3=code 1.stelle 4=code 2 letzte Stellen +#ifdef halten_move + halt +#endif + move.l a4,a1 + move_end \1,\2,\5 +ii_0x\3b\4: //1=size 2=source 3=code 1.stelle 4=code 2 letzte Stellen +#ifdef halten_move + halt +#endif + move.l a5,a1 + move_end \1,\2,\5 +ii_0x\3d\4: //1=size 2=source 3=code 1.stelle 4=code 2 letzte Stellen +#ifdef halten_move + halt +#endif + move.l a6,a1 + move_end \1,\2,\5 +ii_0x\3f\4: //1=size 2=source 3=code 1.stelle 4=code 2 letzte Stellen +#ifdef halten_move + halt +#endif + move.l usp,a1 + move_end \1,\2,\5 +ii_0x\37\6: //1=size 2=source 3=code 1.stelle 4=code 2 letzte Stellen +#ifdef halten_move + halt +#endif + move.l a0,a1 + move_end \1,\2,\5 +.endm +//------------------------------------ +move_end:.macro + jsr ewf +.ifc 3,a7 + move.l a7,d1 // a7 sichern + move.l usp,a7 // a7 holen +.endif +.ifc 3,ia + move.l a2,d1 // a2 sichern + move.l \2,a2 + move.\2 (a2),(a1) + move.l d1,a2 // a2 zurück +.else + .ifc 3,iap + move.l a2,d1 // a2 sichern + move.l \2,a2 + move.\2 (a2)+,(a1) + .else + .ifc 3,iam + move.l a2,d1 // a2 sichern + move.l \2,a2 + move.\2 -(a2),(a1) + .else + move.\1 \2,(a1) + .endif + .endif +.endif +.ifc 3,a7 + movea.l a7,usp // a7 zurück + movea.l d1,a7 // a7 setzen +.endif + set_cc0 +.ifc 3,iap + move.l d1,a2 // a2 zurück +.endif +.ifc 3,iam + move.l d1,a2 // a2 zurück +.endif + ii_end +.endm +//--------------------------------------------------------------------- +// move.x ea,d8(pc,dy) +//--------------------------------------------------------------------- + +//--------------------------------------------------------------------- +// move.x d8(ax,dy),ea --------------------------------------------- +//--------------------------------------------------------------------- +ii_move_d8_dest:.macro //1=dest 2=art 3=code 2.+3.stelle 4=art adresse +//byt +ii_0x1\30: +#ifdef halten_move + halt +#endif + move.l a0_off(a7),a1 + moveb_a1_src\4 \1,\2 +ii_0x1\31: +#ifdef halten_move + halt +#endif + move.l a1_off(a7),a1 + moveb_a1_src\4 \1,\2 +ii_0x1\32: +#ifdef halten_move + halt +#endif + move.l a2,a1 + moveb_a1_src\4 \1,\2 +ii_0x1\33: +#ifdef halten_move + halt +#endif + move.l a3,a1 + moveb_a1_src\4 \1,\2 +ii_0x1\34: +#ifdef halten_move + halt +#endif + move.l a4,a1 + moveb_a1_src\4 \1,\2 +ii_0x1\35: +#ifdef halten_move + halt +#endif + move.l a5,a1 + moveb_a1_src\4 \1,\2 +ii_0x1\36: +#ifdef halten_move + halt +#endif + move.l a6,a1 + moveb_a1_src\4 \1,\2 +ii_0x1\37: +#ifdef halten_move + halt +#endif + move.l usp,a1 + moveb_a1_src\4 \1,\2 +ii_0x1\3b: +#ifdef halten_move + halt +#endif + move.l a0,a1 + moveb_a1_src\4 \1,\2 +//long +ii_0x2\30: +#ifdef halten_move + halt +#endif + move.l a0_off(a7),a1 + movel_a1_src\4 \1,\2 +ii_0x2\31: +#ifdef halten_move + halt +#endif + move.l a1_off(a7),a1 + movel_a1_src\4 \1,\2 +ii_0x2\32: +#ifdef halten_move + halt +#endif + move.l a2,a1 + movel_a1_src\4 \1,\2 +ii_0x2\33: +#ifdef halten_move + halt +#endif + move.l a3,a1 + movel_a1_src\4 \1,\2 +ii_0x2\34: +#ifdef halten_move + halt +#endif + move.l a4,a1 + movel_a1_src\4 \1,\2 +ii_0x2\35: +#ifdef halten_move + halt +#endif + move.l a5,a1 + movel_a1_src\4 \1,\2 +ii_0x2\36: +#ifdef halten_move + halt +#endif + move.l a6,a1 + movel_a1_src\4 \1,\2 +ii_0x2\37: +#ifdef halten_move + halt +#endif + move.l usp,a1 + movel_a1_src\4 \1,\2 +ii_0x2\3b: +#ifdef halten_move + halt +#endif + move.l a0,a1 + moveb_a1_src\4 \1,\2 +//word +ii_0x3\30: +#ifdef halten_move + halt +#endif + move.l a0_off(a7),a1 + movew_a1_src\4 \1,\2 +ii_0x3\31: +#ifdef halten_move + halt +#endif + move.l a1_off(a7),a1 + movew_a1_src\4 \1,\2 +ii_0x3\32: +#ifdef halten_move + halt +#endif + move.l a2,a1 + movew_a1_src\4 \1,\2 +ii_0x3\33: +#ifdef halten_move + halt +#endif + move.l a3,a1 + movew_a1_src\4 \1,\2 +ii_0x3\34: +#ifdef halten_move + halt +#endif + move.l a4,a1 + movew_a1_src\4 \1,\2 +ii_0x3\35: +#ifdef halten_move + halt +#endif + move.l a5,a1 + movew_a1_src\4 \1,\2 +ii_0x3\36: +#ifdef halten_move + halt +#endif + move.l a6,a1 + movew_a1_src\4 \1,\2 +ii_0x3\37: +#ifdef halten_move + halt +#endif + move.l usp,a1 + movew_a1_src\4 \1,\2 +ii_0x3\3b: +#ifdef halten_move + halt +#endif + move.l a0,a1 + moveb_a1_src\4 \1,\2 +.endm +//--------------------------------------------------------------------- +//dx +moveb_a1_srcdx:.macro + jsr ewf +.ifc \2,id + move.b (a1),\1_off+3(a7) +.else + move.b (a1),\1 +.endif + set_cc0 + ii_end +.endm +movel_a1_srcdx:.macro + jsr ewf +.ifc \2,id + move.l (a1),\1_off(a7) +.else + move.l (a1),\1 +.endif + set_cc0 + ii_end +.endm +movew_a1_srcdx:.macro + jsr ewf +.ifc \2,id + move.w (a1),\1_off+2(a7) +.else + move.w (a1),\1 +.endif + set_cc0 + ii_end +.endm +// ax +moveb_a1_srcax:.macro + jsr ewf +.ifc \2,id + .ifc \1,usp + move.w (a1),a1 + move.l a1,usp + .else + move.w (a1),\1_off+2(a7) + .endif +.else + move.w (a1),\1 +.endif + set_cc0 + ii_end +.endm +movel_a1_srcax:.macro + jsr ewf +.ifc \2,id + .ifc \1,usp + move.l (a1),a1 + move.l a1,usp + .else + move.l (a1),\1_off(a7) + .endif +.else + move.l (a1),\1 +.endif + set_cc0 + ii_end +.endm +movew_a1_srcax:.macro + jsr ewf +.ifc \2,id + .ifc \1,usp + move.w (a1),a1 + move.l a1,usp + .else + move.w (a1),\1_off+2(a7) + .endif +.else + move.w (a1),\1 +.endif + set_cc0 + ii_end +.endm +// (ax) +moveb_a1_srcia:.macro + jsr ewf +.ifc \2,id + move.b (a1),d0 + move.l \1,a1 + move.b d0,(a1) +.else + move.b (a1),\1 +.endif + set_cc0 + ii_end +.endm +movel_a1_srcia:.macro + jsr ewf +.ifc \2,id + move.l (a1),d0 + move.l \1,a1 + move.l d0,(a1) +.else + move.l (a1),\1 +.endif + set_cc0 + ii_end +.endm +movew_a1_srcia:.macro + jsr ewf +.ifc \2,id + move.w (a1),d0 + move.l \1,a1 + move.w d0,(a1) +.else + move.w (a1),\1 +.endif + set_cc0 + ii_end +.endm +// (ax)+ +moveb_a1_srciap:.macro + jsr ewf +.ifc \2,id + move.b (a1),d0 + move.l \1,a1 + move.b d0,(a1)+ + move.l a1,\1 +.else + move.b (a1),\1 +.endif + set_cc0 + ii_end +.endm +movel_a1_srciap:.macro + jsr ewf +.ifc \2,id + move.l (a1),d0 + move.l \1,a1 + move.l d0,(a1)+ + move.l a1,\1 +.else + move.l (a1),\1 +.endif + set_cc0 + ii_end +.endm +movew_a1_srciap:.macro + jsr ewf +.ifc \2,id + move.w (a1),d0 + move.l \1,a1 + move.w d0,(a1)+ + move.l a1,\1 +.else + move.w (a1),\1 +.endif + set_cc0 + ii_end +.endm +// -(ax) +moveb_a1_srciam:.macro + jsr ewf +.ifc \2,id + move.b (a1),d0 + move.l \1,a1 + move.b d0,-(a1) + move.l a1,\1 +.else + move.b (a1),\1 +.endif + set_cc0 + ii_end +.endm +movel_a1_srciam:.macro + jsr ewf +.ifc \2,id + move.l (a1),d0 + move.l \1,a1 + move.l d0,-(a1) + move.l a1,\1 +.else + move.l (a1),\1 +.endif + set_cc0 + ii_end +.endm +movew_a1_srciam:.macro + jsr ewf +.ifc \2,id + move.w (a1),d0 + move.l \1,a1 + move.w d0,-(a1) + move.l a1,\1 +.else + move.w (a1),\1 +.endif + set_cc0 + ii_end +.endm + +//--------------------------------------------------------------------- +// move.x d8(pc,dy),ea +//--------------------------------------------------------------------- + + + +/*============================================================ +// move.w dx,(a0,dx.w*SF) + ii_lset 0x3180 + ii_lset 0x3181 + ii_lset 0x3182 + ii_lset 0x3183 + ii_lset 0x3184 + ii_lset 0x3185 + ii_lset 0x3186 + ii_lset 0x3187 + +//-------------------------------------------------------------------- +// // move.w dx,d(ay,dz.w*sf) +//-------------------------------------------------------------------- +movew_ewfw:.macro + move.l \2,a1 + jsr ewf + move.w \1,(a1) + set_cc0 + ii_end + .endm +ii_0x3180: + movew_ewfw d0_off+2(a7),a0_off(a7) +ii_0x3181: + movew_ewfw d0_off+2(a7),a0_off(a7) +ii_0x3182: + movew_ewfw d2,a0_off(a7) +ii_0x3183: + movew_ewfw d3,a0_off(a7) +ii_0x3184: + movew_ewfw d4,a0_off(a7) +ii_0x3185: + movew_ewfw d5,a0_off(a7) +ii_0x3186: + movew_ewfw d6,a0_off(a7) +ii_0x3187: + movew_ewfw d7,a0_off(a7) diff --git a/BaS_codewarrior/firebeeV1/sources/ii_movem.h b/BaS_codewarrior/firebeeV1/sources/ii_movem.h new file mode 100644 index 0000000..5e8a470 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/ii_movem.h @@ -0,0 +1,374 @@ +//***********************************************************************************/ +// movem +//***********************************************************************************/ +ii_movem_lset: .macro +// movem.l rx,xxx.L + ii_lset 0x48f9 +// movem.l xxx.L,rx + ii_lset 0x4cf9 +// movem.w rx,xxx.L + ii_lset 0x48b9 +// movem.w xxx.L,rx + ii_lset 0x4cb9 +// movem.l rx,-(ax) + ii_lset 0x48e0 + ii_lset 0x48e1 + ii_lset 0x48e2 + ii_lset 0x48e3 + ii_lset 0x48e4 + ii_lset 0x48e5 + ii_lset 0x48e6 + ii_lset 0x48e7 +// movem.l (ax)+,rx + ii_lset 0x4cd8 + ii_lset 0x4cd9 + ii_lset 0x4cda + ii_lset 0x4cdb + ii_lset 0x4cdc + ii_lset 0x4cdd + ii_lset 0x4cde + ii_lset 0x4cdf +.endm +//***********************************************************************************/ +ii_movem_func: .macro +//------------------------------------------------------------------- +// movem.l +//-------------------------------------------------------------------- +// movem.l (ax)+,reg +//-------------------------------------------------------------------- + .long 0 +az_reg_table: + .byte 0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4 // 0-f + .byte 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5 // 10-1f + .byte 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5 // 20-2f + .byte 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6 // 30-3f + .byte 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5 // 40-4f + .byte 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6 // 50 + .byte 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6 // 60 + .byte 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7 // 70 + .byte 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5 // 80-8f + .byte 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6 // 90 + .byte 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6 // a0 + .byte 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7 // b0 + .byte 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6 // c0 + .byte 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7 // d0 + .byte 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7 // e0 + .byte 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8 // f0 +//------------------------------------------------------------------------------- +ii_0x48e0: // movem.l reglist,-(a0) + mvm_mem_macro 0x48d0,a0_off(a7),2 +ii_0x48e1: // movem.l reglist,-(a1) + mvm_mem_macro 0x48d1,a1_off(a7),2 +ii_0x48e2: // movem.l reglist,-(a2) + mvm_mem_macro 0x48d2,a2,2 +ii_0x48e3: // movem.l reglist,-(a3) + mvm_mem_macro 0x48d3,a3,2 +ii_0x48e4: // movem.l reglist,-(a4) + mvm_mem_macro 0x48d4,a4,2 +ii_0x48e5: // movem.l reglist,-(a5) + mvm_mem_macro 0x48d5,a5,2 +ii_0x48e6: // movem.l reglist,-(a6) + mvm_mem_macro 0x48d6,a6,2 +ii_0x48e7: // movem.l reglist,-(a7) + mvm_mem_macro 0x48d7,usp,2 +//------------------------------------------------------------------------------- +ii_0x4cd8: // movem.l (a0)+,reglist + mvm_reg_macro 0x4cd0,0x41e8,2 +ii_0x4cd9: // movem.l (a1)+,reglist + mvm_reg_macro 0x4cd1,0x43e9,2 +ii_0x4cda: // movem.l (a2)+,reglist + mvm_reg_macro 0x4cd2,0x45ea,2 +ii_0x4cdb: // movem.l (a3)+,reglist + mvm_reg_macro 0x4cd3,0x47eb,2 +ii_0x4cdc: // movem.l (a4)+,reglist + mvm_reg_macro 0x4cd4,0x49ec,2 +ii_0x4cdd: // movem.l (a5)+,reglist + mvm_reg_macro 0x4cd5,0x4bed,2 +ii_0x4cde: // movem.l (a6)+,reglist + mvm_reg_macro 0x4cd6,0x4dee,2 +ii_0x4cdf: // movem.l (a7)+,reglist + mvm_reg_macro 0x4cd7,0x4fef,2 +//---------------------------------------------------------------------------- +ii_0x48f9: // movem.l reg,xxx.L +#ifdef halten_movem + halt +#endif + move.w (a0)+,d0 + move.l (a0)+,a1 + movemrm_macro l +//--------------------------------------------------------------------------------------------- +ii_0x4cf9: // movem.l xxx.L,reg +#ifdef halten_movem + halt +#endif + move.w (a0)+,d0 + move.l (a0)+,a1 + movemmr_macro l +//---------------------------------------------------------------------------- +ii_0x48b9: // movem.w reg,xxx.L +#ifdef halten_movem + halt +#endif + move.w (a0)+,d0 + move.l (a0)+,a1 + movemrm_macro w +//--------------------------------------------------------------------------------------------- +ii_0x4cb9: // movem.w xxx.L,reg +#ifdef halten_movem + halt +#endif + move.w (a0)+,d0 + move.l (a0)+,a1 + movemmr_macro w +.endm +//============================================================== +mvm_mem_macro:.macro +#ifdef halten_movem + halt +#endif + lea az_reg_table,a1 + mvz.b (a0),d1 + mvz.b 0(a1,d1)+,d0 + mvz.b 1(a0),d1 + mvz.b 0(a1,d1)+,d1 + add.l d0,d1 + lsl.l #\3,d1 // * anzahl byts pro wert + move.l \2,a1 + sub.l d1,a1 // ax-anzahl byts + move.l a1,\2 + lea ___RAMBAR1,a1 + move.l a1,pc_off(a7) + move.l a1,d0 + addq.l #1,d0 + movec d0,RAMBAR1 + move.w #\1,(a1)+ // movem.x reg_list,-(a7) + move.w (a0)+,(a1)+ // register list + move.w #0x4ef9,(a1)+ // jmp.l + move.l a0,(a1) // rücksprungadresse + move.l #___RAMBAR1 + 0x81,d0 // instruction + movec d0,RAMBAR1 + movem.l (a7),d0/d1/a0/a1 + lea ii_ss(a7),a7 // stack erhöhen + rte +.endm +//--------------------------------------------------------------------------------- +mvm_reg_macro:.macro +#ifdef halten_movem + halt +#endif + lea az_reg_table,a1 + mvz.b (a0),d1 + mvz.b 0(a1,d1)+,d0 + mvz.b 1(a0),d1 + mvz.b 0(a1,d1)+,d1 + add.l d0,d1 + lea ___RAMBAR1,a1 + move.l a1,pc_off(a7) + move.l a1,d0 + addq.l #1,d0 + movec d0,RAMBAR1 + move.w #\1,(a1)+ // movem.x (ax),reg_list + move.w (a0)+,(a1)+ // register list + move.w #\2,(a1)+ // lea 0(ax),ax + lsl.l #\3,d1 // * anzahl byts pro wert + move.w d1,(a1)+ // offset von lea + move.w #0x4ef9,(a1)+ // jmp.l + move.l a0,(a1) // rücksprungadresse + move.l #___RAMBAR1 + 0x81,d0 // instruction + movec d0,RAMBAR1 + movem.l (a7),d0/d1/a0/a1 + lea ii_ss(a7),a7 // stack erhöhen + rte +.endm +//--------------------------------------------------------------------------------- +movemrm_macro:.macro // in d0 register liste, in a1 zieladresse +#ifdef halten_movem + halt +#endif + tst.b d0 // datenregister zu verschieben? + bne mrm_dx\@ // ja-> + lsr.l #8,d0 // sonst zu addressregister + jmp mmrm_nd7\@ // -> +mrm_dx\@: + lsr.l #1,d0 + bcc mmrm_nd0\@ +.ifc 1,l + move.l d0_off(a7),(a1)+ +.else + move.w d0_off+2(a7),(a1)+ +.endif +mmrm_nd0\@: + lsr.l #1,d0 + bcc mmrm_nd1\@ +.ifc 1,l + move.l d1_off(a7),(a1)+ +.else + move.w d1_off+2(a7),(a1)+ +.endif +mmrm_nd1\@: + lsr.l #1,d0 + bcc mmrm_nd2\@ + move.\1 d2,(a1)+ +mmrm_nd2\@: + lsr.l #1,d0 + bcc mmrm_nd3\@ + move.\1 d3,(a1)+ +mmrm_nd3\@: + lsr.l #1,d0 + bcc mmrm_nd4\@ + move.\1 d4,(a1)+ +mmrm_nd4\@: + lsr.l #1,d0 + bcc mmrm_nd5\@ + move.\1 d5,(a1)+ +mmrm_nd5\@: + lsr.l #1,d0 + bcc mmrm_nd6\@ + move.l d6,(a1)+ +mmrm_nd6\@: + lsr.l #1,d0 + bcc mmrm_nd7\@ + move.\1 d7,(a1)+ +mmrm_nd7\@: + tst.b d0 // addressregister zu verschieben? + beq mmrm_na7\@ + lsr.l #1,d0 + bcc mmrm_na0\@ +.ifc 1,l + move.l a0_off(a7),(a1)+ +.else + move.w a0_off+2(a7),(a1)+ +.endif +mmrm_na0\@: + lsr.l #1,d0 + bcc mmrm_na1\@ +.ifc 1,l + move.l a1_off(a7),(a1)+ +.else + move.w a1_off+2(a7),(a1)+ +.endif +mmrm_na1\@: + lsr.l #1,d0 + bcc mmrm_na2\@ + move.\1 a2,(a1)+ +mmrm_na2\@: + lsr.l #1,d0 + bcc mmrm_na3\@ + move.\1 a3,(a1)+ +mmrm_na3\@: + lsr.l #1,d0 + bcc mmrm_na4\@ + move.\1 a4,(a1)+ +mmrm_na4\@: + lsr.l #1,d0 + bcc mmrm_na5\@ + move.\1 a5,(a1)+ +mmrm_na5\@: + lsr.l #1,d0 + bcc mmrm_na6\@ + move.\1 a6,(a1)+ +mmrm_na6\@: + lsr.l #1,d0 + bcc mmrm_na7\@ + move.l a0,d1 // sichern + move.l usp,a0 // ist ja usp + move.\1 a0,(a1)+ // nach a0 + move.l d1,a0 // pc zurück +mmrm_na7\@: + ii_end + .endm +//--------------------------------------------------------------------------------------------- +movemmr_macro:.macro // in d0 register liste, in a1 source adr +#ifdef halten_movem + halt +#endif + tst.b d0 // datenregister zu verschieben? + bne mmr_dx\@ // ja-> + lsr.l #8,d0 // sonst zu addressregister + bra mmmr_nd7\@ // -> +mmr_dx\@: + lsr.l #1,d0 + bcc mmmr_nd0\@ +.ifc 1,l + move.l (a1)+,d0_off(a7) +.else + move.w (a1)+,d0_off+2(a7) +.endif +mmmr_nd0\@: + lsr.l #1,d0 + bcc mmmr_nd1\@ +.ifc 1,l + move.l (a1)+,d1_off(a7) +.else + move.w (a1)+,d1_off+2(a7) +.endif +mmmr_nd1\@: + lsr.l #1,d0 + bcc mmmr_nd2\@ + move.\1 (a1)+,d2 +mmmr_nd2\@: + lsr.l #1,d0 + bcc mmmr_nd3\@ + move.\1 (a1)+,d3 +mmmr_nd3\@: + lsr.l #1,d0 + bcc mmmr_nd4\@ + move.\1 (a1)+,d4 +mmmr_nd4\@: + lsr.l #1,d0 + bcc mmmr_nd5\@ + move.\1 (a1)+,d5 +mmmr_nd5\@: + lsr.l #1,d0 + bcc mmmr_nd6\@ + move.\1 (a1)+,d6 +mmmr_nd6\@: + lsr.l #1,d0 + bcc mmmr_nd7\@ + move.\1 (a1)+,d7 +mmmr_nd7\@: + tst.b d0 // addressregister zu verschieben? + beq mmmr_na7\@ // nein-> + lsr.l #1,d0 + bcc mmmr_na0\@ +.ifc 1,l + move.l (a1)+,a0_off(a7) +.else + move.w (a1)+,a0_off+2(a7) +.endif +mmmr_na0\@: + lsr.l #1,d0 + bcc mmmr_na1\@ +.ifc 1,l + move.l (a1)+,a1_off(a7) +.else + move.w (a1)+,a1_off+2(a7) +.endif +mmmr_na1\@: + lsr.l #1,d0 + bcc mmmr_na2\@ + move.\1 (a1)+,a2 +mmmr_na2\@: + lsr.l #1,d0 + bcc mmmr_na3\@ + move.\1 (a1)+,a3 +mmmr_na3\@: + lsr.l #1,d0 + bcc mmmr_na4\@ + move.\1 (a1)+,a4 +mmmr_na4\@: + lsr.l #1,d0 + bcc mmmr_na5\@ + move.\1 (a1)+,a5 +mmmr_na5\@: + lsr.l #1,d0 + bcc mmmr_na6\@ + move.\1 (a1)+,a6 +mmmr_na6\@: + lsr.l #1,d0 + bcc mmmr_na7\@ + move.\1 (a1)+,a1 // nach a0 + move.l a1,usp // war ja usp +mmmr_na7\@: + ii_end + .endm diff --git a/BaS_codewarrior/firebeeV1/sources/ii_movep.h b/BaS_codewarrior/firebeeV1/sources/ii_movep.h new file mode 100644 index 0000000..830fdf7 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/ii_movep.h @@ -0,0 +1,179 @@ +//-------------------------------------------------------------------- +// movep +//-------------------------------------------------------------------- +.text +ii_movep_lset:.macro + ii_lset_opeau 01,0 //movep.w d(a0-7),d0 + ii_lset_opeau 03,0 //movep.w d(a0-7),d1 + ii_lset_opeau 05,0 //movep.w d(a0-7),d2 + ii_lset_opeau 07,0 //movep.w d(a0-7),d3 + ii_lset_opeau 09,0 //movep.w d(a0-7),d4 + ii_lset_opeau 0b,0 //movep.w d(a0-7),d5 + ii_lset_opeau 0d,0 //movep.w d(a0-7),d6 + ii_lset_opeau 0f,0 //movep.w d(a0-7),d7 + + ii_lset_opeau 01,4 //movep.w d0,d(a0-7) + ii_lset_opeau 03,4 //movep.w d1,d(a0-7) + ii_lset_opeau 05,4 //movep.w d2,d(a0-7) + ii_lset_opeau 07,4 //movep.w d3,d(a0-7) + ii_lset_opeau 09,4 //movep.w d4,d(a0-7) + ii_lset_opeau 0b,4 //movep.w d5,d(a0-7) + ii_lset_opeau 0d,4 //movep.w d6,d(a0-7) + ii_lset_opeau 0f,4 //movep.w d7,d(a0-7) + + ii_lset_opeau 01,8 //movep.l d(a0-7),d0 + ii_lset_opeau 03,8 //movep.l d(a0-7),d1 + ii_lset_opeau 05,8 //movep.l d(a0-7),d2 + ii_lset_opeau 07,8 //movep.l d(a0-7),d3 + ii_lset_opeau 09,8 //movep.l d(a0-7),d4 + ii_lset_opeau 0b,8 //movep.l d(a0-7),d5 + ii_lset_opeau 0d,8 //movep.l d(a0-7),d6 + ii_lset_opeau 0f,8 //movep.l d(a0-7),d7 + + ii_lset_opeau 01,c //movep.l d0,d(a0-7) + ii_lset_opeau 03,c //movep.l d1,d(a0-7) + ii_lset_opeau 05,c //movep.l d2,d(a0-7) + ii_lset_opeau 07,c //movep.l d3,d(a0-7) + ii_lset_opeau 09,c //movep.l d4,d(a0-7) + ii_lset_opeau 0b,c //movep.l d5,d(a0-7) + ii_lset_opeau 0d,c //movep.l d6,d(a0-7) + ii_lset_opeau 0f,c //movep.l d7,d(a0-7) +.endm +//--------------------------------------------------------------------------------------------- +ii_movep_func:.macro +//movep.w d(a0-7),d0-7 + ii_movep 010,d0_off(a7),wad + ii_movep 030,d1_off(a7),wad + ii_movep 050,d2,wad + ii_movep 070,d3,wad + ii_movep 090,d4,wad + ii_movep 0b0,d5,wad + ii_movep 0d0,d6,wad + ii_movep 0f0,d7,wad +//movep.w d0-7,d(a0-7) + ii_movep 014,d0_off(a7),wda + ii_movep 034,d1_off(a7),wda + ii_movep 054,d2,wda + ii_movep 074,d3,wda + ii_movep 094,d4,wda + ii_movep 0b4,d5,wda + ii_movep 0d4,d6,wda + ii_movep 0f4,d7,wda +//movep.l d(a0-7),d0-7 + ii_movep 018,d0_off(a7),lad + ii_movep 038,d1_off(a7),lad + ii_movep 058,d2,lad + ii_movep 078,d3,lad + ii_movep 098,d4,lad + ii_movep 0b8,d5,lad + ii_movep 0d8,d6,lad + ii_movep 0f8,d7,lad +//movep.l d0-7,d(a0-7) + ii_movep 01c,d0_off(a7),lda + ii_movep 03c,d1_off(a7),lda + ii_movep 05c,d2,lda + ii_movep 07c,d3,lda + ii_movep 09c,d4,lda + ii_movep 0bc,d5,lda + ii_movep 0dc,d6,lda + ii_movep 0fc,d7,lda +.endm +//--------------------------------------------------------------------------------------------- +ii_movep:.macro //1=code ziffer 1-3 2=register 3=art +ii_0x\18: +#ifdef halten_movep + halt +#endif + move.l a0_off(a7),a1 + ii_movep\3_up1 \2 +ii_0x\19: +#ifdef halten_movep + halt +#endif + move.l a1_off(a7),a1 + ii_movep\3_up1 \2 +ii_0x\1a: +#ifdef halten_movep + halt +#endif + move.l a2,a1 + ii_movep\3_up1 \2 +ii_0x\1b: +#ifdef halten_movep + halt +#endif + move.l a3,a1 + ii_movep\3_up1 \2 +ii_0x\1c: +#ifdef halten_movep + halt +#endif + move.l a4,a1 + ii_movep\3_up1 \2 +ii_0x\1d: +#ifdef halten_movep + halt +#endif + move.l a5,a1 + ii_movep\3_up1 \2 +ii_0x\1e: +#ifdef halten_movep + halt +#endif + move.l a6,a1 + ii_movep\3_up1 \2 +ii_0x\1f: +#ifdef halten_movep + halt +#endif + move.l usp,a1 + ii_movep\3_up1 \2 +.endm + +ii_movepwad_up1:.macro + mvs.w (a0)+,d1 + add.l d1,a1 + move.b (a1),d0 + lsl.l #8,d0 + move.b 2(a1,d1.l),d0 + move.w d0,\1 + ii_end +.endm + +ii_movepwda_up1:.macro + mvs.w (a0)+,d1 + add.l d1,a1 + move.w \1,d0 + move.b d0,2(a1) + lsr.l #8,d0 + move.b d0,(a1) + ii_end +.endm + +ii_moveplad_up1:.macro + mvs.w (a0)+,d1 + add.l d1,a1 + move.b (a1),d0 + lsl.l #8,d0 + move.b 2(a1),d0 + lsl.l #8,d0 + move.b 4(a1),d0 + lsl.l #8,d0 + move.b 6(a1),d0 + move.l d0,\1 + ii_end +.endm + +ii_moveplda_up1:.macro + mvs.w (a0)+,d1 + add.l d1,a1 + move.l \1,d0 + move.b d0,6(a1) + lsr.l #8,d0 + move.b d0,4(a1) + lsr.l #8,d0 + move.b d0,2(a1) + lsr.l #8,d0 + move.b d0,(a1) + ii_end +.endm diff --git a/BaS_codewarrior/firebeeV1/sources/ii_op.h b/BaS_codewarrior/firebeeV1/sources/ii_op.h new file mode 100644 index 0000000..a3fc0cf --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/ii_op.h @@ -0,0 +1,661 @@ +/*****************************************************************************************/ +// opertionen +/*****************************************************************************************/ +ii_lset_op:.macro +//byt + ii_lset_opea \1,0 // dx,ax + ii_lset_opea \1,1 // (ax), (ax)+ + ii_lset_opea \1,2 // -(ax),d16(ax) + ii_lset_opeag \1,3 // d8(ax,dy) + lea table+0x\1\238*4,a0 + move.l #ii_0x\138,(a0)+ // xxx.w + move.l #ii_0x\139,(a0)+ // xxx.l +//word + ii_lset_opea \1,4 // dx,ax + ii_lset_opea \1,5 // (ax), (ax)+ + ii_lset_opea \1,6 // -(ax),d16(ax) + ii_lset_opeag \1,7 // d8(ax,dy) + lea table+0x\178*4,a0 + move.l #ii_0x\178,(a0)+ // xxx.w + move.l #ii_0x\179,(a0)+ // xxx.l +//long + ii_lset_opea \1,8 // dx,ax + ii_lset_opea \1,9 // (ax), (ax)+ + ii_lset_opea \1,a // -(ax),d16(ax) + ii_lset_opeag \1,b // d8(ax,dy) + lea table+0x\1b8*4,a0 + move.l #ii_0x\1b8,(a0)+ // xxx.w + move.l #ii_0x\1b9,(a0)+ // xxx.l + .endm + +ii_lset_opeag:.macro // 0x1120-0x1127 + lea table+0x\1\20*4,a0 + move.l #ii_0x\1\20,(a0)+ + move.l #ii_0x\1\21,(a0)+ + move.l #ii_0x\1\22,(a0)+ + move.l #ii_0x\1\23,(a0)+ + move.l #ii_0x\1\24,(a0)+ + move.l #ii_0x\1\25,(a0)+ + move.l #ii_0x\1\26,(a0)+ + move.l #ii_0x\1\27,(a0)+ + .endm; + +ii_lset_opeau:.macro // 0x1128-0x112f + lea table+0x\1\28*4,a0 + move.l #ii_0x\1\28,(a0)+ + move.l #ii_0x\1\29,(a0)+ + move.l #ii_0x\1\2a,(a0)+ + move.l #ii_0x\1\2b,(a0)+ + move.l #ii_0x\1\2c,(a0)+ + move.l #ii_0x\1\2d,(a0)+ + move.l #ii_0x\1\2e,(a0)+ + move.l #ii_0x\1\2f,(a0)+ + .endm; + +ii_lset_opea:.macro + ii_lset_opeag \1,\2 + ii_lset_opeau \1,\2 + .endm +/******************************************************/ +ii_op:.macro // 1=code 2=operation 3 = normal oder immediat/quick +// byt + opdx \1,\2,b,0,\3 // dx,ax + opia \1,\2,b,1,\3 // (ax),(ax)+ + opdia \1,\2,b,2,\3 // -(ax),d16(ax) + opd8a \1,\2,b,3,\3 // d8(ax),xxx +// word + opdx \1,\2,w,4,\3 // dx,ax + opia \1,\2,w,5,\3 // (ax),(ax)+ + opdia \1,\2,w,6,\3 // -(ax),d16(ax) + opd8a \1,\2,w,7,\3 // d8(ax),xxx +// long + opdx \1,\2,l,8,\3 // dx,ax + opia \1,\2,l,9,\3 // (ax),(ax)+ + opdia \1,\2,l,a,\3 // -(ax),d16(ax) + opd8a \1,\2,l,b,\3 // d8(ax),xxx + .endm +/******************************************************/ +// byt word long +/******************************************************/ +opdx: .macro //register: \1=code \2 = operation \3 = size \4=size and adressierungsart 5 = immediate oder normal +ii_0x\1\40: + .ifc \3,b + op\5smd \2,d0_off+3(a7),d0_off+3(a7),\3 + .else + .ifc \3,w + op\5smd \2,d0_off+2(a7),d0_off+2(a7),\3 + .else + op\5smd \2,d0_off(a7),d0_off(a7),\3 + .endif + .endif +ii_0x\1\41: + .ifc \3,b + op\5smd \2,d1_off+3(a7),d1_off+3(a7),\3 + .else + .ifc \3,w + op\5smd \2,d1_off+2(a7),d1_off+2(a7),\3 + .else + op\5smd \2,d1_off(a7),d1_off(a7),\3 + .endif +.endif +ii_0x\1\42: + op\5smd \2,d2,d2,\3 +ii_0x\1\43: + op\5smd \2,d3,d3,\3 +ii_0x\1\44: + op\5smd \2,d4,d4,\3 +ii_0x\1\45: + op\5smd \2,d5,d5,\3 +ii_0x\1\46: + op\5smd \2,d6,d6,\3 +ii_0x\1\47: + op\5smd \2,d7,d7,\3 +//ax +ii_0x\1\48: + opa\5smd \2,a0_off(a7),a0_off(a7),\3 +ii_0x\1\49: + opa\5smd \2,a1_off(a7),a1_off(a7),\3 +ii_0x\1\4a: + opa\5smd \2,a2,a2,\3 +ii_0x\1\4b: + opa\5smd \2,a3,a3,\3 +ii_0x\1\4c: + opa\5smd \2,a4,a4,\3 +ii_0x\1\4d: + opa\5smd \2,a5,a5,\3 +ii_0x\1\4e: + opa\5smd \2,a6,a6,\3 +ii_0x\1\4f: + opa\5smd \2,usp,usp,\3 +.endm; +//----------------------------------------------- +opia: .macro // (ax) \1=code \2 = operation \3 = size \4=size and adressierungsart 5 = immediate oder normal +//(ax) +ii_0x\1\40: + op\5sia \2,a0_off(a7),(a1),(a1),\3 +ii_0x\1\41: + op\5sia \2,a1_off(a7),(a1),(a1),\3 +ii_0x\1\42: + op\5smd \2,(a2),(a2),\3 +ii_0x\1\43: + op\5smd \2,(a3),(a3),\3 +ii_0x\1\44: + op\5smd \2,(a4),(a4),\3 +ii_0x\1\45: + op\5smd \2,(a5),(a5),\3 +ii_0x\1\46: + op\5smd \2,(a6),(a6),\3 +ii_0x\1\47: + op\5sia \2,usp,(a1),(a1),\3 +//(ax)+ +ii_0x\1\48: + op\5sia \2,a0_off(a7),(a1),(a1)+,\3 +ii_0x\1\49: + op\5sia \2,a1_off(a7),(a1),(a1)+,\3 +ii_0x\1\4a: + op\5smd \2,(a2),(a2)+,\3 +ii_0x\1\4b: + op\5smd \2,(a3),(a3)+,\3 +ii_0x\1\4c: + op\5smd \2,(a4),(a4)+,\3 +ii_0x\1\4d: + op\5smd \2,(a5),(a5)+,\3 +ii_0x\1\4e: + op\5smd \2,(a6),(a6)+,\3 +ii_0x\1\4f: + op\5sia \2,usp,(a1),(a1)+,\3 +.endm; +//----------------------------------------------- +opdia: .macro // -(ax) \1=code \2 = operation \3 = size \4 size and adressierungsart 5 = immediate oder normal +ii_0x\1\40: + op\5sia \2,a0_off(a7),-(a1),(a1),\3 +ii_0x\1\41: + op\5sia \2,a1_off(a7),-(a1),(a1),\3 +ii_0x\1\42: + op\5smd \2,-(a2),(a2),\3 +ii_0x\1\43: + op\5smd \2,-(a3),(a3),\3 +ii_0x\1\44: + op\5smd \2,-(a4),(a4),\3 +ii_0x\1\45: + op\5smd \2,-(a5),(a5),\3 +ii_0x\1\46: + op\5smd \2,-(a6),(a6),\3 +ii_0x\1\47: + op\5sia \2,usp,-(a1),(a1),\3 + +ii_0x\1\48: + op\5sd16a \2,a0_off(a7),\3 +ii_0x\1\49: + op\5sd16a \2,a1_off(a7),\3 +ii_0x\1\4a: + op\5sd16a \2,a2,\3 +ii_0x\1\4b: + op\5sd16a \2,a3,\3 +ii_0x\1\4c: + op\5sd16a \2,a4,\3 +ii_0x\1\4d: + op\5sd16a \2,a5,\3 +ii_0x\1\4e: + op\5sd16a \2,a6,\3 +ii_0x\1\4f: + op\5sd16a \2,usp,\3 +.endm; +//----------------------------------------------- +opd8a: .macro // d8(ax,dy) \1=code \2 = operation \3 = size \4=size and adressierungsart 5 = immediate oder normal +ii_0x\1\40: + op\5sd8a \2,a0_off(a7),\3 +ii_0x\1\41: + op\5sd8a \2,a1_off(a7),\3 +ii_0x\1\42: + op\5sd8a \2,a2,\3 +ii_0x\1\43: + op\5sd8a \2,a3,\3 +ii_0x\1\44: + op\5sd8a \2,a4,\3 +ii_0x\1\45: + op\5sd8a \2,a5,\3 +ii_0x\1\46: + op\5sd8a \2,a6,\3 +ii_0x\1\47: + op\5sd8a \2,usp,\3 + +ii_0x\1\48: + op\5sxx \2,\3,w +ii_0x\1\49: + op\5sxx \2,\3,l +.endm; +//----------------------------------------------- +opnsmd:.macro // direct dx: 1=operation 2=ea src 3=ea dest 4=size +#ifdef halten_op + halt +#endif +.ifc \4,l + move.l \2,d1 +.else + mvs.\4 \2,d1 +.endif + .ifc \1,negx + move.b sr_off+1(a7),d1 //ccr holen + move d1,ccr //setzen + .endif + \1 d1 + set_cc0 + move.\4 d1,\3 + ii_end + .endm; + +opansmd:.macro // direct ax: 1=operation 2=ea src 3=ea dest 4=size +#ifdef halten_op + halt +#endif + +.ifc \2,usp + move.l usp,a1 + move.l a1,d1 +.else + move.l \2,d1 +.endif + \1 d1 +.ifc \3,usp + move.l d1,a1 + move.l a1,usp +.else + move.l d1,\3 +.endif + ii_end +.endm; + +opnsia:.macro // indirect: 1=operation 2=adress register 3= src 4=dest 5=size +#ifdef halten_op + halt +#endif + move.l \2,a1 +.ifc \5,l + move.l \3,d1 +.else + mvs.\5 \3,d1 +.endif + .ifc \1,negx + move.b sr_off+1(a7),d1 //ccr holen + move d1,ccr //setzen + .endif + \1 d1 + set_cc0 + move.\5 d1,\4 + ii_end + .endm; + +opnsd16a:.macro // indirect: 1=operation 2=adress register 3=size +#ifdef halten_op + halt +#endif + move.l \2,a1 + mvs.w (a0)+,d1 + add.l d1,a1 +.ifc \3,l + move.l (a1),d1 +.else + mvs.\3 (a1),d1 +.endif + .ifc \1,negx + move.b sr_off+1(a7),d1 //ccr holen + move d1,ccr //setzen + .endif + \1 d1 + set_cc0 + move.\3 d1,(a1) + ii_end + .endm; + +opnsd8a:.macro // indirect: 1=operation 2=adress register 3=size +#ifdef halten_op + halt +#endif + move.l \2,a1 + jsr ewf +.ifc \3,l + move.l (a1),d1 +.else + mvs.\3 (a1),d1 +.endif + .ifc \1,negx + move.b sr_off+1(a7),d1 //ccr holen + move d1,ccr //setzen + .endif + \1 d1 + set_cc0 + move.\3 d1,(a1) + ii_end + .endm; + +opnsxx:.macro // indirect: 1=operation 2=size 3=size adresse +#ifdef halten_op + halt +#endif + +.ifc \2,l + move.l (a1),d1 +.else + mvs.\2 (a1),d1 +.endif + move.\3 (a0)+,a1 + .ifc \1,negx + move.b sr_off+1(a7),d1 //ccr holen + move d1,ccr //setzen + .endif + \1 d1 + set_cc0 + move.\2 d1,(a1) + ii_end + .endm; +//*******************************************************************************3 +opismd:.macro // immediate dx: 1=opieration 2=ea src 3=ea dest 4=size +#ifdef halten_op + halt +#endif + +.ifc \4,l + move.l (a0)+,d0 +.else + .ifc \4,w + mvs.w (a0)+,d0 + .else + move.w (a0)+,d0 + extb.l d0 + .endif +.endif +.ifc \4,l + move.l \2,d1 +.else + mvs.\4 \2,d1 +.endif + \1 d0,d1 + set_cc0 +.ifnc \1,cmp.l + move.\4 d1,\3 +.endif + ii_end +.endm; + +opaismd:.macro // immediate ax: 1=opieration 2=ea src 3=ea dest 4=size +#ifdef halten_op + halt +#endif + +.ifc \4,l + move.l (a0)+,d0 +.else + .ifc \4,w + mvs.w (a0)+,d0 + .else + move.w (a0)+,d0 + extb.l d0 + .endif +.endif +.ifc \2,usp + move.l usp,a1 + move.l a1,d1 +.else + move.l \2,d1 +.endif + \1 d0,d1 +.ifnc \1,cmp.l +.ifc \3,usp + move.l d1,a1 + move.l a1,usp +.else + move.l d1,\3 +.endif +.endif + ii_end +.endm; + +opisia:.macro // indirect: 1=opieration 2=adress register 3= src 4=dest 5=size +#ifdef halten_op + halt +#endif + +.ifc \5,l + move.l (a0)+,d0 +.else + .ifc \5,w + mvs.w (a0)+,d0 + .else + move.w (a0)+,d0 + extb.l d0 + .endif +.endif + move.l \2,a1 +.ifc \5,l + move.l \3,d1 +.else + mvs.\5 \3,d1 +.endif + \1 d0,d1 + set_cc0 +.ifnc \1,cmp.l + move.\5 d1,\4 +.endif + ii_end +.endm; + +opisd16a:.macro // indirect: 1=opieration 2=adress register 3=size +#ifdef halten_op + halt +#endif + +.ifc \3,l + move.l (a0)+,d0 +.else + .ifc \3,w + mvs.w (a0)+,d0 + .else + move.w (a0)+,d0 + extb.l d0 + .endif +.endif + move.l \2,a1 + mvs.w (a0)+,d1 + add.l d1,a1 +.ifc \3,l + move.l (a1),d1 +.else + mvs.\3 (a1),d1 +.endif + \1 d0,d1 + set_cc0 +.ifnc \1,cmp.l + move.\3 d1,(a1) +.endif + ii_end + .endm; + +opisd8a:.macro // indirect: 1=opieration 2=adress register 3=size +#ifdef halten_op + halt +#endif + +.ifc \3,l + move.l (a0)+,d0 +.else + .ifc \3,w + mvs.w (a0)+,d0 + .else + move.w (a0)+,d0 + extb.l d0 + .endif +.endif + move.l d0,_d0_save + move.l \2,a1 + jsr ewf + move.l _d0_save,d0 +.ifc \3,l + move.l (a1),d1 +.else + mvs.\3 (a1),d1 +.endif + \1 d0,d1 + set_cc0 +.ifnc \1,cmp.l + move.\3 d1,(a1) +.endif + ii_end + .endm; + +opisxx:.macro // immediate: 1=opieration 2=size 3=size adresse +.ifc \2,l + move.l (a0)+,d0 +.else + .ifc \2,w + mvs.w (a0)+,d0 + .else + move.w (a0)+,d0 + extb.l d0 + .endif +.endif + move.\3 (a0)+,a1 +.ifc \2,l + move.l (a1),d1 +.else + mvs.\2 (a1),d1 +.endif + \1 d0,d1 + set_cc0 +.ifnc \1,cmp.l + move.\2 d1,(a1) +.endif + ii_end + .endm; +//*******************************************************************************3 +opqsmd:.macro // quick: 1=opieration 2=ea src 3=ea dest 4=size +.ifc \4,l + move.l \2,d1 +.else + mvs.\4 \2,d1 +.endif +.ifc \1,eor.l d0 + move.l d0_off(a7),d0 +.endif +.ifc \1,eor.l d1 + move.l d1_off(a7),d1 +.endif + \1 ,d1 + set_cc0 + move.\4 d1,\3 + ii_end + .endm; + +opaqsmd:.macro // quick: 1=opieration 2=ea src 3=ea dest 4=size +.ifc \2,usp + move.l usp,a1 + move.l a1,d1 +.else + move.l \2,d1 +.endif + \1 ,d1 +.ifc \3,usp + move.l d1,a1 + move.l a1,usp +.else + move.l d1,\3 +.endif + ii_end + .endm; + +opqsia:.macro // indirect: 1=opieration 2=adress register 3= src 4=dest 5=size +#ifdef halten_op + halt +#endif + + move.l \2,a1 +.ifc \5,l + move.l \3,d1 +.else + mvs.\5 \3,d1 +.endif +.ifc \1,eor.l d0 + move.l d0_off(a7),d0 +.endif +.ifc \1,eor.l d1 + move.l d1_off(a7),d1 +.endif + \1 ,d1 + set_cc0 + move.\5 d1,\4 + ii_end + .endm; + +opqsd16a:.macro // indirect: 1=opieration 2=adress register 3=size +#ifdef halten_op + halt +#endif + + move.l \2,a1 + mvs.w (a0)+,d1 + add.l d1,a1 +.ifc \3,l + move.l (a1),d1 +.else + mvs.\3 (a1),d1 +.endif +.ifc \1,eor.l d0 + move.l d0_off(a7),d0 +.endif +.ifc \1,eor.l d1 + move.l d1_off(a7),d1 +.endif + \1 ,d1 + set_cc0 + move.\3 d1,(a1) + ii_end + .endm; + +opqsd8a:.macro // indirect: 1=opieration 2=adress register 3=size +#ifdef halten_op + halt +#endif + + move.l d0,_d0_save + move.l \2,a1 + jsr ewf + move.l _d0_save,d0 +.ifc \3,l + move.l (a1),d1 +.else + mvs.\3 (a1),d1 +.endif +.ifc \1,eor.l d0 + move.l d0_off(a7),d0 +.endif +.ifc \1,eor.l d1 + move.l d1_off(a7),d1 +.endif + \1 ,d1 + set_cc0 + move.\3 d1,(a1) + ii_end + .endm; + +opqsxx:.macro // quick: 1=opieration 2=size 3=size adresse +#ifdef halten_op + halt +#endif + + move.\3 (a0)+,a1 +.ifc \2,l + move.l (a1),d1 +.else + mvs.\2 (a1),d1 +.endif +.ifc \1,eor.l d0 + move.l d0_off(a7),d0 +.endif +.ifc \1,eor.l d1 + move.l d1_off(a7),d1 +.endif + \1 ,d1 + set_cc0 + move.\2 d1,(a1) + ii_end + .endm; diff --git a/BaS_codewarrior/firebeeV1/sources/ii_opc.h b/BaS_codewarrior/firebeeV1/sources/ii_opc.h new file mode 100644 index 0000000..8b887ce --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/ii_opc.h @@ -0,0 +1,263 @@ +/*****************************************************************************************/ +// functionen macros: fehlende adressierungsarte (MCF nur Dx support) ohne ax +// zusammen mit op.h +/*****************************************************************************************/ +ii_lset_opc:.macro + ii_lset_opeag \1,c // dx,ax + ii_lset_opea \1,d // (ax), (ax)+ + ii_lset_opea \1,e // -(ax),d16(ax) + ii_lset_opeag \1,f // d8(ax,dy) + lea table+0x\1b8*4,a0 + move.l #ii_0x\1b8,(a0)+ // xxx.w + move.l #ii_0x\1b9,(a0)+ // xxx.l + .endm + +/******************************************************/ +ii_opc:.macro // 1=code 2=operation 3 = normal oder immediat + opcdx \1,\2,l,c,\3 // dx,ax + opia \1,\2,l,d,\3 // (ax),(ax)+ + opdia \1,\2,l,e,\3 // -(ax),d16(ax) + opd8a \1,\2,l,f,\3 // d8(ax),xxx + .endm +//*******************************************************************************3 +/******************************************************/ +// byt word long +/******************************************************/ +opcdx: .macro //register: \1=code \2 = operation \3 = size \4=size and adressierungsart 5 = immediate oder normal +ii_0x\1\40: +#ifdef halten_opc + halt +#endif + .ifc \3,b + op\5smd \2,d0_off+3(a7),d0_off+3(a7),\3 + .else + .ifc \3,w + op\5smd \2,d0_off+2(a7),d0_off+2(a7),\3 + .else + op\5smd \2,d0_off(a7),d0_off(a7),\3 + .endif + .endif +ii_0x\1\41: + .ifc \3,b + op\5smd \2,d1_off+3(a7),d1_off+3(a7),\3 + .else + .ifc \3,w + op\5smd \2,d1_off+2(a7),d1_off+2(a7),\3 + .else + op\5smd \2,d1_off(a7),d1_off(a7),\3 + .endif +.endif +ii_0x\1\42: + op\5smd \2,d2,d2,\3 +ii_0x\1\43: + op\5smd \2,d3,d3,\3 +ii_0x\1\44: + op\5smd \2,d4,d4,\3 +ii_0x\1\45: + op\5smd \2,d5,d5,\3 +ii_0x\1\46: + op\5smd \2,d6,d6,\3 +ii_0x\1\47: + op\5smd \2,d7,d7,\3 +.endm +//----------------------------------------------------- +opcsmd:.macro // dx: 1=opieration 2=ea src 3=ea dest 4=size +#ifdef halten_opc + halt +#endif + +.ifc \4,l + move.l (a0)+,d0 +.else + .ifc \4,w + mvs.w (a0)+,d0 + .else + move.w (a0)+,d0 + extb.l d0 + .endif +.endif +.ifc \4,l + move.l \2,d1 +.else + mvs.\4 \2,d1 +.endif +.ifc \1,eor.l d0 + move.l d0_off(a7),d1 +.endif +.ifc \1,eor.l d1 + move.l d1_off(a7),d1 +.endif + \1 d1 + set_cc0 + move.\4 d1,\3 + ii_end + .endm; + +opacsmd:.macro // ax: 1=opieration 2=ea src 3=ea dest 4=size +#ifdef halten_opc + halt +#endif + +.ifc \4,l + move.l (a0)+,d0 +.else + .ifc \4,w + mvs.w (a0)+,d0 + .else + move.w (a0)+,d0 + extb.l d0 + .endif +.endif +.ifc \2,usp + move.l usp,a1 + move.l a1,d1 +.else + move.l \2,d1 +.endif + \1 d1 + set_cc0 +.ifc \3,usp + move.l d1,a1 + move.l a1,usp +.else + move.l d1,\3 +.endif + ii_end + .endm; + +opcsia:.macro // (ax) (ax)+ -(ax): 1=opieration 2=adress register 3= src 4=dest 5=size +#ifdef halten_opc + halt +#endif + +.ifc \4,l + move.l (a0)+,d0 +.else + .ifc \4,w + mvs.w (a0)+,d0 + .else + move.w (a0)+,d0 + extb.l d0 + .endif +.endif + move.l \2,a1 +.ifc \5,l + move.l \3,d1 +.else + mvs.\5 \3,d1 +.endif +.ifc \1,eor.l d0 + move.l d0_off(a7),d1 +.endif +.ifc \1,eor.l d1 + move.l d1_off(a7),d1 +.endif + \1 d1 + set_cc0 + move.\5 d1,\4 + ii_end + .endm; + +opcsd16a:.macro // d16(ax): 1=opieration 2=adress register 3=size +#ifdef halten_opc + halt +#endif + +.ifc \4,l + move.l (a0)+,d0 +.else + .ifc \4,w + mvs.w (a0)+,d0 + .else + move.w (a0)+,d0 + extb.l d0 + .endif +.endif + move.l \2,a1 + mvs.w (a0)+,d1 + add.l d1,a1 +.ifc \3,l + move.l (a1),d1 +.else + mvs.\3 (a1),d1 +.endif +.ifc \1,eor.l d0 + move.l d0_off(a7),d1 +.endif +.ifc \1,eor.l d1 + move.l d1_off(a7),d1 +.endif + \1 d1 + set_cc0 + move.\3 d1,(a1) + ii_end + .endm; + +opcsd8a:.macro // indirect: 1=opieration 2=adress register 3=size +#ifdef halten_opc + halt +#endif + +.ifc \4,l + move.l (a0)+,d0 +.else + .ifc \4,w + mvs.w (a0)+,d0 + .else + move.w (a0)+,d0 + extb.l d0 + .endif +.endif + move.l d0,_d0_save + move.l \2,a1 + jsr ewf + move.l _d0_save,d0 +.ifc \3,l + move.l (a1),d1 +.else + mvs.\3 (a1),d1 +.endif +.ifc \1,eor.l d0 + move.l d0_off(a7),d1 +.endif +.ifc \1,eor.l d1 + move.l d1_off(a7),d1 +.endif + \1 d1 + set_cc0 + move.\3 d1,(a1) + ii_end + .endm; + +opcsxx:.macro // indirect: 1=opieration 2=size 3=size adresse +#ifdef halten_opc + halt +#endif + +.ifc \2,l + move.l (a0)+,d0 +.else + .ifc \2,w + mvs.w (a0)+,d0 + .else + move.w (a0)+,d0 + extb.l d0 + .endif +.endif + move.\3 (a0)+,a1 +.ifc \2,l + move.l (a1),d1 +.else + mvs.\2 (a1),d1 +.endif +.ifc \1,eor.l d0 + move.l d0_off(a7),d1 +.endif +.ifc \1,eor.l d1 + move.l d1_off(a7),d1 +.endif + \1 d1 + set_cc0 + move.\2 d1,(a1) + ii_end + .endm; diff --git a/BaS_codewarrior/firebeeV1/sources/ii_or.h b/BaS_codewarrior/firebeeV1/sources/ii_or.h new file mode 100644 index 0000000..dfe4450 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/ii_or.h @@ -0,0 +1,442 @@ +//-------------------------------------------------------------------- +// or +//-------------------------------------------------------------------- +/*****************************************************************************************/ +//-------------------------------------------------------------------- +// byt +//-------------------------------------------------------------------- +//-------------------------------------------------------------------- +// or.b #im,dx +//-------------------------------------------------------------------- +orbir_macro:.macro +#ifdef halten_or + halt +#endif + move.w (a0)+,d0 + extb.l d0 + mvs.b \2,d1 + or.l d0,d1 + set_cc0 + move.b d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // or ea,dx +//-------------------------------------------------------------------- +ordd:.macro +#ifdef halten_or + halt +#endif + mvs.\3 \1,d0 + mvs.\3 \2,d1 + or.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // or ea(l)->dy(w),dx z.B. für USP +//-------------------------------------------------------------------- +orddd:.macro +#ifdef halten_or + halt +#endif + move.l \1,a1 + mvs.\3 a1,d0 + mvs.\3 \2,d1 + or.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // or (ea)->dy,dx +//-------------------------------------------------------------------- +ordda:.macro +#ifdef halten_or + halt +#endif + move.l \1,a1 + mvs.\3 (a1),d0 + mvs.\3 \2,d1 + or.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // or ea->ay,(ay)+,dx +//-------------------------------------------------------------------- +orddai:.macro +#ifdef halten_or + halt +#endif + move.l \1,a1 + mvs.\3 (a1)+,d0 + move.l a1,\1 + mvs.\3 \2,d1 + or.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // or ea->ay,-(ay),dx +//-------------------------------------------------------------------- +orddad:.macro +#ifdef halten_or + halt +#endif + move.l \1,a1 + mvs.\3 -(a1),d0 + move.l a1,\1 + mvs.\3 \2,d1 + or.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // or d16(ay),dx +//-------------------------------------------------------------------- +ord16ad:.macro +#ifdef halten_or + halt +#endif + move.l \1,a1 + mvs.w (a0)+,d0 + add.l d0,a1 + mvs.\3 (a1),d0 + mvs.\3 \2,d1 + or.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // or d8(ay,dy),dx +//-------------------------------------------------------------------- +ord8ad:.macro +#ifdef halten_or + halt +#endif + move.l \1,a1 + jsr ewf +.ifc \3,l + move.l (a1),d0 + move.l \2,d1 +.else + mvs.\3 (a1),d0 + mvs.\3 \2,d1 +.endif + or.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // or xxx.w,dx +//-------------------------------------------------------------------- +orxwd:.macro +#ifdef halten_or + halt +#endif + move.w (a0)+,a1 + mvs.\3 (a1),d0 + mvs.\3 \2,d1 + or.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // or xxx.l,dx +//-------------------------------------------------------------------- +orxld:.macro +#ifdef halten_or + halt +#endif + move.l (a0)+,a1 + mvs.\3 (a1),d0 + mvs.\3 \2,d1 + or.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // or d16(pc),dx +//-------------------------------------------------------------------- +ord16pcd:.macro + halt + move.l a0,a1 + mvs.w (a0)+,d0 + add.l d0,a1 + mvs.\3 (a1),d0 + mvs.\3 \2,d1 + or.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // or d8(pc,dy),dx +//-------------------------------------------------------------------- +ord8pcd:.macro +#ifdef halten_or + halt +#endif + move.l a0,a1 + jsr ewf +.ifc \3,l + move.l (a1),d0 + move.l \2,d1 +.else + mvs.\3 (a1),d0 + mvs.\3 \2,d1 +.endif + or.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// or dy,ea +//-------------------------------------------------------------------- +//-------------------------------------------------------------------- +// // or (ea)->dy,dx +//-------------------------------------------------------------------- +oreda:.macro +#ifdef halten_or + halt +#endif + mvs.\3 \1,d0 + move.l \2,a1 + mvs.\3 (a1),d1 + or.l d0,d1 + set_cc0 + move.\3 d1,(a1) + ii_end + .endm; +//-------------------------------------------------------------------- +// // or dx,ea->ay,(ay)+ +//-------------------------------------------------------------------- +oredai:.macro +#ifdef halten_or + halt +#endif + mvs.\3 \1,d0 + move.l \2,a1 + mvs.\3 (a1),d1 + or.l d0,d1 + set_cc0 + move.\3 d1,(a1)+ + move.l a1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // or dx,ea->ay,(ay)+ +//-------------------------------------------------------------------- +oredaid:.macro +#ifdef halten_or + halt +#endif + mvs.\3 \1,d0 + mvs.\3 \2,d1 + or.l d0,d1 + set_cc0 + move.\3 d1,\2+ + ii_end + .endm; +//-------------------------------------------------------------------- +// // or dx,ea->ay,-(ay) +//-------------------------------------------------------------------- +oredad:.macro +#ifdef halten_or + halt +#endif + mvs.\3 \1,d0 + move.l \2,a1 + mvs.\3 -(a1),d1 + move.l a1,\2 + or.l d0,d1 + set_cc0 + move.\3 d1,(a1) + ii_end + .endm; +//-------------------------------------------------------------------- +// // or dx,ea->ay,-(ay) +//-------------------------------------------------------------------- +oredadd:.macro +#ifdef halten_or + halt +#endif + mvs.\3 \1,d0 + mvs.\3 -\2,d1 + or.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // or dx,d16(ay) +//-------------------------------------------------------------------- +ore16ad:.macro +#ifdef halten_or + halt +#endif + mvs.\3 \1,d0 + move.l \2,a1 + mvs.w (a0)+,d1 + add.l d1,a1 + mvs.\3 (a1),d1 + or.l d0,d1 + set_cc0 + move.\3 d1,(a1) + ii_end + .endm; +//-------------------------------------------------------------------- +// // or.w dx,d8(ay,dy) +//-------------------------------------------------------------------- +ore8ad:.macro +#ifdef halten_or + halt +#endif + move.l \2,a1 + jsr ewf +.ifc \3,l + move.l (a1),d1 + move.l \1,d0 +.else + mvs.\3 (a1),d1 + mvs.\3 \1,d0 +.endif + or.l d0,d1 + set_cc0 + move.\3 d1,(a1) + ii_end + .endm; +//-------------------------------------------------------------------- +// // or dx,xxx.w +//-------------------------------------------------------------------- +orxwe:.macro +#ifdef halten_or + halt +#endif + mvs.\3 \1,d0 + move.w (a0)+,a1 + mvs.\3 (a1),d1 + or.l d0,d1 + set_cc0 + move.\3 d1,(a1) + ii_end + .endm; +//-------------------------------------------------------------------- +// // or dx,xxx.l +//-------------------------------------------------------------------- +orxle:.macro +#ifdef halten_or + halt +#endif + mvs.\3 \1,d0 + move.l (a0)+,a1 + mvs.\3 (a1),d1 + or.l d0,d1 + set_cc0 + move.\3 d1,(a1) + ii_end + .endm; +//-------------------------------------------------------------------- +// // ora.w ea,ax +//-------------------------------------------------------------------- +oraw:.macro + jmp ii_error + .endm; +//-------------------------------------------------------------------- +// or.w ea,usp +//-------------------------------------------------------------------- +orawa7:.macro + jmp ii_error + .endm; +//-------------------------------------------------------------------- +// // ora.w usp?,ax +//-------------------------------------------------------------------- +orawu:.macro + jmp ii_error + .endm; +//-------------------------------------------------------------------- +// // ora.w usp?,usp +//-------------------------------------------------------------------- +orawua7:.macro + orawu \1,\2 + .endm; +//-------------------------------------------------------------------- +// // ora.w d16(ay),ax +//-------------------------------------------------------------------- +orawd16a:.macro + jmp ii_error + .endm; +//-------------------------------------------------------------------- +// // ora.w d8(ay,dy),ax +//-------------------------------------------------------------------- +orawd8a:.macro + jmp ii_error + .endm; +//-------------------------------------------------------------------- +// // ora.w xxx.w,ax +//-------------------------------------------------------------------- +orawxwax:.macro + jmp ii_error + .endm; +//-------------------------------------------------------------------- +// // ora.w xxx.l,ax +//-------------------------------------------------------------------- +orawxlax:.macro + jmp ii_error + .endm; +//-------------------------------------------------------------------- +// // ora.w d16(pc),ax +//-------------------------------------------------------------------- +orawd16pcax:.macro + jmp ii_error + .endm; +//-------------------------------------------------------------------- +// // ora.w d8(pc,dy),ax +//-------------------------------------------------------------------- +orawd8pcax:.macro + jmp ii_error + .endm; +//-------------------------------------------------------------------- +// // ora.w #im,ax +//-------------------------------------------------------------------- +orawim:.macro + jmp ii_error + .endm; +//-------------------------------------------------------------------- +// // ora.l d8(ay,dy),ax +//-------------------------------------------------------------------- +orald8a:.macro + jmp ii_error + .endm; +//-------------------------------------------------------------------- +// // ora.l d8(pc,dy),ax +//-------------------------------------------------------------------- +orald8pcax:.macro + jmp ii_error + .endm; +//***************************************************************************************** +// spezial addx subx etc. +//-------------------------------------------------------------------- +//-------------------------------------------------------------------- +// // addx dy,dx +//-------------------------------------------------------------------- +ordx:.macro + jmp ii_error + .endm; +//-------------------------------------------------------------------- +// // addx -(ay),-(ax) +//-------------------------------------------------------------------- +ordax:.macro + jmp ii_error + .endm; +//-------------------------------------------------------------------- diff --git a/BaS_codewarrior/firebeeV1/sources/ii_pea.h b/BaS_codewarrior/firebeeV1/sources/ii_pea.h new file mode 100644 index 0000000..69f69d0 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/ii_pea.h @@ -0,0 +1,74 @@ +//-------------------------------------------------------------------- +// pea +//-------------------------------------------------------------------- +.text +ii_pea_lset:.macro + ii_lset_opeag 48,7 + ii_lset 0x487b +.endm +//--------------------------------------------------------------------------------------------- +ii_pea_func:.macro +ii_0x4870: +#ifdef halten_pea + halt +#endif + move.l a0_off(a7),a1 + pea_macro +ii_0x4871: +#ifdef halten_pea + halt +#endif + move.l a1_off(a7),a1 + pea_macro +ii_0x4872: +#ifdef halten_pea + halt +#endif + move.l a2,a1 + pea_macro +ii_0x4873: +#ifdef halten_pea + halt +#endif + move.l a3,a1 + pea_macro +ii_0x4874: +#ifdef halten_pea + halt +#endif + move.l a4,a1 + pea_macro +ii_0x4875: +#ifdef halten_pea + halt +#endif + move.l a5,a1 + pea_macro +ii_0x4876: +#ifdef halten_pea + halt +#endif + move.l a6,a1 + pea_macro +ii_0x4877: +#ifdef halten_pea + halt +#endif + move.l usp,a1 + pea_macro +ii_0x487b: +#ifdef halten_pea + halt +#endif + move.l a0,a1 + pea_macro +.endm +//--------------------------------------------------------------------------------------------- +pea_macro:.macro + jsr ewf + move.l (a1),d0 + move.l usp,a1 + move.l d0,-(a1) + move.l a1,usp + ii_end +.endm \ No newline at end of file diff --git a/BaS_codewarrior/firebeeV1/sources/ii_shd.h b/BaS_codewarrior/firebeeV1/sources/ii_shd.h new file mode 100644 index 0000000..ecace29 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/ii_shd.h @@ -0,0 +1,247 @@ +/*****************************************************************************************/ +// opertionen +/*****************************************************************************************/ +ii_lset_shd:.macro + ii_lset_shdx e0 //r d0 + ii_lset_shdx e2 //r d1 + ii_lset_shdx e4 //r d2 + ii_lset_shdx e6 //r d3 + ii_lset_shdx e8 //r d4 + ii_lset_shdx ea //r d5 + ii_lset_shdx ec //r d6 + ii_lset_shdx ee //r d7 + + ii_lset_shdx e1 //l d0 + ii_lset_shdx e3 //l d1 + ii_lset_shdx e4 //l d2 + ii_lset_shdx e5 //l d3 + ii_lset_shdx e9 //l d4 + ii_lset_shdx eb //l d5 + ii_lset_shdx ed //l d6 + ii_lset_shdx ef //l d7 + .endm + +ii_lset_shdx:.macro +//byt + ii_lset_opea \1,0 // as,ls #im,dx + ii_lset_opea \1,1 // rox,ro #im,dx + ii_lset_opea \1,2 // as,ls dy,dx + ii_lset_opea \1,3 // rox,ro dy,dx +//word + ii_lset_opea \1,4 // as,ls #im,dx + ii_lset_opea \1,5 // rox,ro #im,dx + ii_lset_opea \1,6 // as,ls dy,dx + ii_lset_opea \1,7 // rox,ro dy,dx +//long +// ii_lset_opea \1,8 // as,ls #im,dx -> vorhanden + ii_lset_opea \1,9 // rox,ro #im,dx +// ii_lset_opea \1,a // as,ls dy,dx -> vorhanden + ii_lset_opea \1,b // rox,ro dy,dx + .endm +/******************************************************/ +ii_shd:.macro // 1=code 2=operation 3 = normal, direct oder immediat +// byt + opdx \1,\2,b,0,\3 // dx +// word + opdx \1,\2,w,4,\3 // dx +// long + opdx \1,\2,l,8,\3 // dx + .endm +/******************************************************/ +// byt word long routinen +/******************************************************/ +sh_asr: .macro // asr -> 1=operation 2 = dx 3 = dy/im 4 = size b/w + mvs.\4 \2,d1 + sh_shal \1,\2,\3,\4 + .endm + +sh_lsr: .macro // asl -> 1=operation 2 = dx 3 = dy/im 4 = size b/w + mvz.\4 \2,d1 + sh_shal \1,\2,\3,\4 + .endm + +sh_shal:.macro + move.w \3,d0 + \1.l d0,d1 + set_cc0 + move.\4 d1,\2 + .endm + +sh_all: .macro // asl/lsl -> 1=operation 2 = dx 3 = dy/im 4 = size b/w + mvz.\4 \2,d1 +.ifc \4,b + byterev.l d1 +.else + swap.w d1 +.endif + sh_asr \1,\2,\3,\4 + .endm + +sh_ror: .macro // ror -> 1=operation 2 = dx 3 = dy/im 4 = size b/w/l + move.\4 \2,d1 / + move.w \3,d0 +.ifc \4,b + lsl.l #8,d1 + move.b \2,d1 + and.l #0x7,d0 + lsr.l d0,d1 +.else + .ifc \4,w + swap.w d1 + move.w \2,d1 + and.l #0xf,d0 + lsr.l d0,d1 + .else + and.l #0x1f,d0 + lsr.l d0,d1 + move.l d1,a1 + move.l \2,d1 + sub.l #32,d0 + neg.l d0 + lsl.l d0,d1 + add.l a1,d1 + .endif +.endif + move.\4 d1,\2 + move.w ccr,d0 + and.l #1,d1 // ist auch carry bit + or.l d1,d0 + move.b d0,ccr_off(a7) + .endm + +sh_rol: .macro // rol -> 1=operation 2 = dx 3 = dy/im 4 = size b/w/l + move.\4 \2,d1 + move.w \3,d0 +.ifc \4,b + lsl.l #8,d1 + move.b \2,d1 + and.l #0x7,d0 + lsl.l d0,d1 + lsr.l #8,d1 + moveq #7,d0 +.else + .ifc \4,w + swap.w d1 + move.w \2,d1 + and.l #0xf,d0 + lsr.l d0,d1 + swap.w d1 + moveq #15,d0 + .else + and.l #0x1f,d0 + lsl.l d0,d1 + move.l d1,a1 + move.l \2,d1 + sub.l #32,d0 + neg.l d0 + lsr.l d0,d1 + add.l a1,d1 + moveq #31,d0 + .endif +.endif + move.\4 d1,\2 + lsr.l d0,d1 // carry bit schieben + move.w ccr,d0 + and.l #1,d1 + or.l d1,d0 + move.b d0,ccr_off(a7) + .endm + +sh_roxr: .macro // roxr -> 1=operation 2 = dx 3 = dy/im 4 = size b/w/l + clr.l d0 + addx.l d0,d0 +ifc \4,b + mvz.b \2,d1 + lsl.l #1,d1 + add.l d0,d1 + lsl.l #8,d1 + move.b \2,d1 + move.w \3,d0 + and.l #0x7,d0 + lsr.l d0,d1 + set_cc0 +else + .ifc \4,w + mvz.b \2,d1 + lsl.l #1,d1 + add.l d0,d1 + lsl.l #8,d1 + lsl.l #8,d1 + move.w \2,d1 + move.w \3,d0 + and.l #0xf,d0 + lsr.l d0,d1 + set_cc0 + .else + bitrev.l d0 + move.l \2,d1 + lsr.l #1,d1 + add.l d0,d1 + move.w \3,d0 + subq.l #1,d0 + and.l #0x1f,d0 + lsr.l d0,d1 + move.l d1,a1 + set_cc1 + move.l \2,d1 + sub.l #32,d0 + neg.l d0 + lsl.l d0,d1 + add.l a1,d1 + .endif +.endif + move.\4 d1,\2 + .endm + +sh_roxl: .macro // roxl -> 1=operation 2 = dx 3 = dy/im 4 = size b/w/l + clr.l d0 + addx.l d0,d0 +ifc \4,b + mvz.b \2,d1 + lsl.l #1,d1 + add.l d0,d1 + lsl.l #8,d1 + move.b \2,d1 + lsl.l #8,d1 + lsl.l #7,d1 + move.w \3,d0 + and.l #0x7,d0 + lsl.l d0,d1 + set_cc0 + byterev.l d1 +else + .ifc \4,w + mvz.b \2,d1 + lsl.l #1,d1 + add.l d0,d1 + lsl.l #8,d1 + lsl.l #7,d1 + mvz.w \2,d0 + lsr.l #1,d0 + add.l d0,d1 + move.w \3,d0 + and.l #0xf,d0 + lsl.l d0,d1 + set_cc0 + swap.w d1 + .else + move.l \2,d1 + lsl.l #1,d1 + add.l d0,d1 + move.w \3,d0 + subq.l #1,d0 + and.l #0x1f,d0 + lsl.l d0,d1 + move.l d1,a1 + set_cc1 + move.l \2,d1 + sub.l #32,d0 + neg.l d0 + lsr.l d0,d1 + add.l a1,d1 + .endif +.endif + move.\4 d1,\2 + .endm + + \ No newline at end of file diff --git a/BaS_codewarrior/firebeeV1/sources/ii_shift.h b/BaS_codewarrior/firebeeV1/sources/ii_shift.h new file mode 100644 index 0000000..f83bfcb --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/ii_shift.h @@ -0,0 +1,687 @@ +/*****************************************************************************************/ +// opertionen +/*****************************************************************************************/ +ii_shift_lset:.macro +/******************************************************/ +// byt +/******************************************************/ +// asx.b #,dx + ii_lset_dx \1,00 // 0x1.22 -> z.B. 1=d2=4 ->0xd07c -> 0xde7c + ii_lset_dx \1,01 + ii_lset_dx \1,02 + ii_lset_dx \1,03 + ii_lset_dx \1,04 + ii_lset_dx \1,05 + ii_lset_dx \1,06 + ii_lset_dx \1,07 +// lsx.b #,dx + ii_lset_dxu \1,08 + ii_lset_dxu \1,09 + ii_lset_dxu \1,0a + ii_lset_dxu \1,0b + ii_lset_dxu \1,0c + ii_lset_dxu \1,0d + ii_lset_dxu \1,0e + ii_lset_dxu \1,0f +// roxx.b #,dx + ii_lset_dx \1,10 + ii_lset_dx \1,11 + ii_lset_dx \1,12 + ii_lset_dx \1,13 + ii_lset_dx \1,14 + ii_lset_dx \1,15 + ii_lset_dx \1,16 + ii_lset_dx \1,17 +// rox.b #,dx + ii_lset_dx \1,18 + ii_lset_dx \1,19 + ii_lset_dx \1,1a + ii_lset_dx \1,1b + ii_lset_dx \1,1c + ii_lset_dx \1,1d + ii_lset_dx \1,1e + ii_lset_dx \1,1f +// asx.b dy,dx + ii_lset_dx \1,20 + ii_lset_dx \1,21 + ii_lset_dx \1,22 + ii_lset_dx \1,23 + ii_lset_dx \1,24 + ii_lset_dx \1,25 + ii_lset_dx \1,26 + ii_lset_dx \1,27 +// lsx.b dy,dx + ii_lset_dx \1,28 + ii_lset_dx \1,29 + ii_lset_dx \1,2a + ii_lset_dx \1,2b + ii_lset_dx \1,2c + ii_lset_dx \1,2d + ii_lset_dx \1,2e + ii_lset_dx \1,2f +// roxx.dy,dx + ii_lset_dx \1,30 + ii_lset_dx \1,31 + ii_lset_dx \1,32 + ii_lset_dx \1,33 + ii_lset_dx \1,34 + ii_lset_dx \1,35 + ii_lset_dx \1,36 + ii_lset_dx \1,37 +// rox.b dy,dx + ii_lset_dx \1,38 + ii_lset_dx \1,39 + ii_lset_dx \1,3a + ii_lset_dx \1,3b + ii_lset_dx \1,3c + ii_lset_dx \1,3d + ii_lset_dx \1,3e + ii_lset_dx \1,3f +/******************************************************/ +// word +/******************************************************/ +// asx.w #x,dx + ii_lset_dx \1,40 // 0x1.22 -> z.B. 1=d2=4 ->0xd07c -> 0xde7c + ii_lset_dx \1,41 + ii_lset_dx \1,42 + ii_lset_dx \1,43 + ii_lset_dx \1,44 + ii_lset_dx \1,45 + ii_lset_dx \1,46 + ii_lset_dx \1,47 +// lsx.w #,dx + ii_lset_dx \1,48 + ii_lset_dx \1,49 + ii_lset_dx \1,4a + ii_lset_dx \1,4b + ii_lset_dx \1,4c + ii_lset_dx \1,4d + ii_lset_dx \1,4e + ii_lset_dx \1,4f +// roxx.w #,dx + ii_lset_dx \1,50 + ii_lset_dx \1,51 + ii_lset_dx \1,52 + ii_lset_dx \1,53 + ii_lset_dx \1,54 + ii_lset_dx \1,55 + ii_lset_dx \1,56 + ii_lset_dx \1,57 +// rox.w #xdx + ii_lset_dx \1,58 + ii_lset_dx \1,59 + ii_lset_dx \1,5a + ii_lset_dx \1,5b + ii_lset_dx \1,5c + ii_lset_dx \1,5d + ii_lset_dx \1,5e + ii_lset_dx \1,5f +// asx.w dy,dx + ii_lset_dx \1,60 + ii_lset_dx \1,61 + ii_lset_dx \1,62 + ii_lset_dx \1,63 + ii_lset_dx \1,64 + ii_lset_dx \1,65 + ii_lset_dx \1,66 + ii_lset_dx \1,67 +// lsx.w dy,dx + ii_lset_dx \1,68 + ii_lset_dx \1,69 + ii_lset_dx \1,6a + ii_lset_dx \1,6b + ii_lset_dx \1,6c + ii_lset_dx \1,6d + ii_lset_dx \1,6e + ii_lset_dx \1,6f +// roxx.w dy,dx + ii_lset_dx \1,70 + ii_lset_dx \1,71 + ii_lset_dx \1,72 + ii_lset_dx \1,73 + ii_lset_dx \1,74 + ii_lset_dx \1,75 + ii_lset_dx \1,76 + ii_lset_dx \1,77 +// rox.w dy,dx + ii_lset_dx \1,78 + ii_lset_dx \1,79 + ii_lset_dx \1,7a + ii_lset_dx \1,7b + ii_lset_dx \1,7c + ii_lset_dx \1,7d + ii_lset_dx \1,7e + ii_lset_dx \1,7f +/******************************************************/ +// long +/******************************************************/ +// roxx.l #,dx + ii_lset_dx \1,90 + ii_lset_dx \1,91 + ii_lset_dx \1,92 + ii_lset_dx \1,93 + ii_lset_dx \1,94 + ii_lset_dx \1,95 + ii_lset_dx \1,96 + ii_lset_dx \1,97 +// rox.l #xdx + ii_lset_dx \1,98 + ii_lset_dx \1,99 + ii_lset_dx \1,9a + ii_lset_dx \1,9b + ii_lset_dx \1,9c + ii_lset_dx \1,9d + ii_lset_dx \1,9e + ii_lset_dx \1,9f +// roxx.l dy,dx + ii_lset_dx \1,b0 + ii_lset_dx \1,b1 + ii_lset_dx \1,b2 + ii_lset_dx \1,b3 + ii_lset_dx \1,b4 + ii_lset_dx \1,b5 + ii_lset_dx \1,b6 + ii_lset_dx \1,b7 +// rox.l dy,dx + ii_lset_dx \1,b8 + ii_lset_dx \1,b9 + ii_lset_dx \1,ba + ii_lset_dx \1,bb + ii_lset_dx \1,bc + ii_lset_dx \1,bd + ii_lset_dx \1,be + ii_lset_dx \1,bf +//-------------------------------------------------------------------- +// asr.w ea + ii_lset_opea \10,d // (ax), (ax)+ + ii_lset_opea \10,e // -(ax),d16(ax) + ii_lset_opeag \10,f // d8(ax,dy) + lea table+0x\10\2f8*4,a0 + move.l #ii_0x\10f8,(a0)+ // xxx.w + move.l #ii_0x\10f9,(a0)+ // xxx.l +// asl.w ea + ii_lset_opea \11,d // (ax), (ax)+ + ii_lset_opea \11,e // -(ax),d16(ax) + ii_lset_opeag \11,f // d8(ax,dy) + lea table+0x\11\2f8*4,a0 + move.l #ii_0x\11f8,(a0)+ // xxx.w + move.l #ii_0x\11f9,(a0)+ // xxx.l +// lsr.w ea + ii_lset_opea \12,d // (ax), (ax)+ + ii_lset_opea \12,e // -(ax),d16(ax) + ii_lset_opeag \12,f // d8(ax,dy) + lea table+0x\12\2f8*4,a0 + move.l #ii_0x\12f8,(a0)+ // xxx.w + move.l #ii_0x\12f9,(a0)+ // xxx.l +// lsr.w ea + ii_lset_opea \13,d // (ax), (ax)+ + ii_lset_opea \13,e // -(ax),d16(ax) + ii_lset_opeag \13,f // d8(ax,dy) + lea table+0x\13\2f8*4,a0 + move.l #ii_0x\13f8,(a0)+ // xxx.w + move.l #ii_0x\13f9,(a0)+ // xxx.l +// roxr.w ea + ii_lset_opea \14,d // (ax), (ax)+ + ii_lset_opea \14,e // -(ax),d16(ax) + ii_lset_opeag \14,f // d8(ax,dy) + lea table+0x\14\2f8*4,a0 + move.l #ii_0x\14f8,(a0)+ // xxx.w + move.l #ii_0x\14f9,(a0)+ // xxx.l +// roxl.w ea + ii_lset_opea \15,e // (ax), (ax)+ + ii_lset_opea \15,e // -(ax),d16(ax) + ii_lset_opeag \15,f // d8(ax,dy) + lea table+0x\15\2f8*4,a0 + move.l #ii_0x\15f8,(a0)+ // xxx.w + move.l #ii_0x\15f9,(a0)+ // xxx.l +// ror.w ea + ii_lset_opea \16,d // (ax), (ax)+ + ii_lset_opea \16,e // -(ax),d16(ax) + ii_lset_opeag \16,f // d8(ax,dy) + lea table+0x\16\2f8*4,a0 + move.l #ii_0x\16f8,(a0)+ // xxx.w + move.l #ii_0x\16f9,(a0)+ // xxx.l +// rol.w ea + ii_lset_opea \17,d // (ax), (ax)+ + ii_lset_opea \17,e // -(ax),d16(ax) + ii_lset_opeag \17,f // d8(ax,dy) + lea table+0x\17\2f8*4,a0 + move.l #ii_0x\17f8,(a0)+ // xxx.w + move.l #ii_0x\17f9,(a0)+ // xxx.l +// ende +.endm; +/******************************************************/ +ii_shift_op:.macro // 1=code +//byt------------------------------- +//asx.b #x,dx + ii_shift_op2agb 0,as,a +//lsx.b #x,dx + ii_shift_op2aub 0,ls,a +//roxx.b #x,dx + ii_shift_op2agb 1,rox,a +//rox.b #x,dx + ii_shift_op2aub 1,ro,a +//asx.b dy,dx + ii_shift_op2agb 2,as,b +//lsx.b dy,dx + ii_shift_op2aub 2,ls,b +//roxx.b dy,dx + ii_shift_op2agb 3,rox,b +//rox.b dy,dx + ii_shift_op2aub 3,ro,b +// word --------------------------------------- +//asx.w #x,dx + ii_shift_op2agw 4,as,a +//lsx.w #x,dx + ii_shift_op2auw 4,ls,a +//roxx.w #x,dx + ii_shift_op2agw 5,rox,a +//rox.w #x,dx + ii_shift_op2auw 5,ro,a +//asx.w dy,dx + ii_shift_op2agw 6,as,b +//lsx.w dy,dx + ii_shift_op2auw 6,ls,b +//roxx.w dy,dx + ii_shift_op2agw 7,rox,b +//rox.w dy,dx + ii_shift_op2auw 7,ro,b +// long --------------------------------------- +//roxx.l #x,dx + ii_shift_op2agw 9,rox,a +//rox.l #x,dx + ii_shift_op2auw 9,ro,a +//roxx.l dy,dx + ii_shift_op2agw b,rox,b +//rox.l dy,dx + ii_shift_op2auw b,ro,b +// ea --------------------------------------- +//asr.w #1,ea + ii_shift_op2ea 0,asr +//asl.w #1,ea + ii_shift_op2ea 1,asl +//lsr.w #1,ea + ii_shift_op2ea 2,lsr, +//lsl.w #1,ea + ii_shift_op2ea 3,lsl +//roxr.w #1,ea + ii_shift_op2ea 4,roxr +//roxl.w #1,ea + ii_shift_op2ea 5,roxl +//ror.w #1,ea + ii_shift_op2ea 6,ror +//rol.w #1,ea + ii_shift_op2ea 7,rol +.endm +//byt ============================================ +ii_shift_op2agb:.macro //byt: 1=code 2=operation 3=quick(a) oder register(b) + ii_shift_op1\3b \1,0,\2,d0_off+3(a7) + ii_shift_op1\3b \1,1,\2,d1_off+3(a7) + ii_shift_op1\3b \1,2,\2,d2 + ii_shift_op1\3b \1,3,\2,d3 + ii_shift_op1\3b \1,4,\2,d4 + ii_shift_op1\3b \1,5,\2,d5 + ii_shift_op1\3b \1,6,\2,d6 + ii_shift_op1\3b \1,7,\2,d7 +.endm + +ii_shift_op2aub:.macro //byt: 1=code 2=operation + ii_shift_op1\3b \1,8,\2,d0_off+3(a7) + ii_shift_op1\3b \1,9,\2,d1_off+3(a7) + ii_shift_op1\3b \1,a,\2,d2 + ii_shift_op1\3b \1,b,\2,d3 + ii_shift_op1\3b \1,c,\2,d4 + ii_shift_op1\3b \1,d,\2,d5 + ii_shift_op1\3b \1,e,\2,d6 + ii_shift_op1\3b \1,f,\2,d7 +.endm + +ii_shift_op1ab:.macro // z.B. asr.w. #x,dx 1=code 3.ziffer 2=code 4.ziffer 3=shift art 4=dx + ii_shift_op0 0\1\2,b,\3r,#8,\4 + ii_shift_op0 2\1\2,b,\3r,#1,\4 + ii_shift_op0 4\1\2,b,\3r,#2,\4 + ii_shift_op0 6\1\2,b,\3r,#3,\4 + ii_shift_op0 8\1\2,b,\3r,#4,\4 + ii_shift_op0 a\1\2,b,\3r,#5,\4 + ii_shift_op0 c\1\2,b,\3r,#6,\4 + ii_shift_op0 e\1\2,b,\3r,#7,\4 + ii_shift_op0 1\1\2,b,\3l,#8,\4 + ii_shift_op0 3\1\2,b,\3l,#1,\4 + ii_shift_op0 5\1\2,b,\3l,#2,\4 + ii_shift_op0 7\1\2,b,\3l,#3,\4 + ii_shift_op0 9\1\2,b,\3l,#4,\4 + ii_shift_op0 b\1\2,b,\3l,#5,\4 + ii_shift_op0 d\1\2,b,\3l,#6,\4 + ii_shift_op0 f\1\2,b,\3l,#7,\4 +.endm + +ii_shift_op1bb:.macro // z.B. asr.w. #x,dx 1=code 3.ziffer 2=code 4.ziffer 3=shift art 4=dx + ii_shift_op0b 0\1\2,b,\3r,d0_off(a7),\4 + ii_shift_op0b 2\1\2,b,\3r,d1_off(a7),\4 + ii_shift_op0 4\1\2,b,\3r,d2,\4 + ii_shift_op0 6\1\2,b,\3r,d3,\4 + ii_shift_op0 8\1\2,b,\3r,d4,\4 + ii_shift_op0 a\1\2,b,\3r,d5,\4 + ii_shift_op0 c\1\2,b,\3r,d6,\4 + ii_shift_op0 e\1\2,b,\3r,d7,\4 + ii_shift_op0b 1\1\2,b,\3l,d0_off(a7),\4 + ii_shift_op0b 3\1\2,b,\3l,d1_off(a7),\4 + ii_shift_op0 5\1\2,b,\3l,d2,\4 + ii_shift_op0 7\1\2,b,\3l,d3,\4 + ii_shift_op0 9\1\2,b,\3l,d4,\4 + ii_shift_op0 b\1\2,b,\3l,d5,\4 + ii_shift_op0 d\1\2,b,\3l,d6,\4 + ii_shift_op0 f\1\2,b,\3l,d7,\4 +.endm +// word --------------------------------------- +ii_shift_op2agw:.macro //byt: 1=code 2=operation 3=quick(a) oder register(b) + ii_shift_op1\3w \1,0,\2,d0_off+2(a7) + ii_shift_op1\3w \1,1,\2,d1_off+2(a7) + ii_shift_op1\3w \1,2,\2,d2 + ii_shift_op1\3w \1,3,\2,d3 + ii_shift_op1\3w \1,4,\2,d4 + ii_shift_op1\3w \1,5,\2,d5 + ii_shift_op1\3w \1,6,\2,d6 + ii_shift_op1\3w \1,7,\2,d7 +.endm + +ii_shift_op2auw:.macro //byt: 1=code 2=operation + ii_shift_op1\3w \1,8,\2,d0_off+2(a7) + ii_shift_op1\3w \1,9,\2,d1_off+2(a7) + ii_shift_op1\3w \1,a,\2,d2 + ii_shift_op1\3w \1,b,\2,d3 + ii_shift_op1\3w \1,c,\2,d4 + ii_shift_op1\3w \1,d,\2,d5 + ii_shift_op1\3w \1,e,\2,d6 + ii_shift_op1\3w \1,f,\2,d7 +.endm + +ii_shift_op1aw:.macro // z.B. asr.w. #x,dx 1=code 3.ziffer 2=code 4.ziffer 3=shift art 4=dx + ii_shift_op0 0\1\2,w,\3r,#8,\4 + ii_shift_op0 2\1\2,w,\3r,#1,\4 + ii_shift_op0 4\1\2,w,\3r,#2,\4 + ii_shift_op0 6\1\2,w,\3r,#3,\4 + ii_shift_op0 8\1\2,w,\3r,#4,\4 + ii_shift_op0 a\1\2,w,\3r,#5,\4 + ii_shift_op0 c\1\2,w,\3r,#6,\4 + ii_shift_op0 e\1\2,w,\3r,#7,\4 + ii_shift_op0 1\1\2,w,\3l,#8,\4 + ii_shift_op0 3\1\2,w,\3l,#1,\4 + ii_shift_op0 5\1\2,w,\3l,#2,\4 + ii_shift_op0 7\1\2,w,\3l,#3,\4 + ii_shift_op0 9\1\2,w,\3l,#4,\4 + ii_shift_op0 b\1\2,w,\3l,#5,\4 + ii_shift_op0 d\1\2,w,\3l,#6,\4 + ii_shift_op0 f\1\2,w,\3l,#7,\4 +.endm + +ii_shift_op1bw:.macro // z.B. asr.w. #x,dx 1=code 3.ziffer 2=code 4.ziffer 3=shift art 4=dx + ii_shift_op0b 0\1\2,w,\3r,d0_off(a7),\4 + ii_shift_op0b 2\1\2,w,\3r,d1_off(a7),\4 + ii_shift_op0 4\1\2,w,\3r,d2,\4 + ii_shift_op0 6\1\2,w,\3r,d3,\4 + ii_shift_op0 8\1\2,w,\3r,d4,\4 + ii_shift_op0 a\1\2,w,\3r,d5,\4 + ii_shift_op0 c\1\2,w,\3r,d6,\4 + ii_shift_op0 e\1\2,w,\3r,d7,\4 + ii_shift_op0b 1\1\2,w,\3l,d0_off(a7),\4 + ii_shift_op0b 3\1\2,w,\3l,d1_off(a7),\4 + ii_shift_op0 5\1\2,w,\3l,d2,\4 + ii_shift_op0 7\1\2,w,\3l,d3,\4 + ii_shift_op0 9\1\2,w,\3l,d4,\4 + ii_shift_op0 b\1\2,w,\3l,d5,\4 + ii_shift_op0 d\1\2,w,\3l,d6,\4 + ii_shift_op0 f\1\2,w,\3l,d7,\4 +.endm +// long --------------------------------------- +ii_shift_op2agl:.macro //byt: 1=code 2=operation 3=quick(a) oder register(b) + ii_shift_op1\3l \1,0,\2,d0_off(a7) + ii_shift_op1\3l \1,1,\2,d1_off(a7) + ii_shift_op1\3l \1,2,\2,d2 + ii_shift_op1\3l \1,3,\2,d3 + ii_shift_op1\3l \1,4,\2,d4 + ii_shift_op1\3l \1,5,\2,d5 + ii_shift_op1\3l \1,6,\2,d6 + ii_shift_op1\3l \1,7,\2,d7 +.endm + +ii_shift_op2aul:.macro //byt: 1=code 2=operation + ii_shift_op1\3l \1,8,\2,d0_off(a7) + ii_shift_op1\3l \1,9,\2,d1_off(a7) + ii_shift_op1\3l \1,a,\2,d2 + ii_shift_op1\3l \1,b,\2,d3 + ii_shift_op1\3l \1,c,\2,d4 + ii_shift_op1\3l \1,d,\2,d5 + ii_shift_op1\3l \1,e,\2,d6 + ii_shift_op1\3l \1,f,\2,d7 +.endm + +ii_shift_op1al:.macro // z.B. asr.w. #x,dx 1=code 3.ziffer 2=code 4.ziffer 3=shift art 4=dx + ii_shift_op0 0\1\2,l,\3r,#8,\4 + ii_shift_op0 2\1\2,l,\3r,#1,\4 + ii_shift_op0 4\1\2,l,\3r,#2,\4 + ii_shift_op0 6\1\2,l,\3r,#3,\4 + ii_shift_op0 8\1\2,l,\3r,#4,\4 + ii_shift_op0 a\1\2,l,\3r,#5,\4 + ii_shift_op0 c\1\2,l,\3r,#6,\4 + ii_shift_op0 e\1\2,l,\3r,#7,\4 + ii_shift_op0 1\1\2,l,\3l,#8,\4 + ii_shift_op0 3\1\2,l,\3l,#1,\4 + ii_shift_op0 5\1\2,l,\3l,#2,\4 + ii_shift_op0 7\1\2,l,\3l,#3,\4 + ii_shift_op0 9\1\2,l,\3l,#4,\4 + ii_shift_op0 b\1\2,l,\3l,#5,\4 + ii_shift_op0 d\1\2,l,\3l,#6,\4 + ii_shift_op0 f\1\2,l,\3l,#7,\4 +.endm + +ii_shift_op1bl:.macro // z.B. asr.w. #x,dx 1=code 3.ziffer 2=code 4.ziffer 3=shift art 4=dx + ii_shift_op0b 0\1\2,l,\3r,d0_off(a7),\4 + ii_shift_op0b 2\1\2,l,\3r,d1_off(a7),\4 + ii_shift_op0 4\1\2,l,\3r,d2,\4 + ii_shift_op0 6\1\2,l,\3r,d3,\4 + ii_shift_op0 8\1\2,l,\3r,d4,\4 + ii_shift_op0 a\1\2,l,\3r,d5,\4 + ii_shift_op0 c\1\2,l,\3r,d6,\4 + ii_shift_op0 e\1\2,l,\3r,d7,\4 + ii_shift_op0b 1\1\2,l,\3l,d0_off(a7),\4 + ii_shift_op0b 3\1\2,l,\3l,d1_off(a7),\4 + ii_shift_op0 5\1\2,l,\3l,d2,\4 + ii_shift_op0 7\1\2,l,\3l,d3,\4 + ii_shift_op0 9\1\2,l,\3l,d4,\4 + ii_shift_op0 b\1\2,l,\3l,d5,\4 + ii_shift_op0 d\1\2,l,\3l,d6,\4 + ii_shift_op0 f\1\2,l,\3l,d7,\4 +.endm +// .word ea ============================================ +ii_shift_op2ea:.macro //1=code 2.ziffer 2=shiftart +// (a0) bis (a7) ---------------------------- +ii_0xe\1d0: + move.l a0_off(a7),a1 + ii_shift_typ w,\2,#1,(a1),(a1). +ii_0xe\1d1: + move.l a1_off(a7),a1 + ii_shift_typ w,\2,#1,(a1),(a1). +ii_0xe\1d2: + ii_shift_typ w,\2,#1,(a2),(a2). +ii_0xe\1d3: + ii_shift_typ w,\2,#1,(a3),(a3). +ii_0xe\1d4: + ii_shift_typ w,\2,#1,(a4),(a4). +ii_0xe\1d5: + ii_shift_typ w,\2,#1,(a5),(a5). +ii_0xe\1d6: + ii_shift_typ w,\2,#1,(a6),(a6). +ii_0xe\1d7: + move.l usp,a1 + ii_shift_typ w,\2,#1,(a1),(a1). +// (a0)+ bis (a7)+ ----------------------------- +ii_0xe\1d8: + move.l a0_off(a7),a1 + addq.l #2,a0_off(a7) + ii_shift_typ w,\2,#1,(a1),(a1). +ii_0xe\1d9: + move.l a1_off(a7),a1 + addq.l #2,a0_off(a7) + ii_shift_typ w,\2,#1,(a1),(a1). +ii_0xe\1da: + ii_shift_typ w,\2,#1,(a2),(a2)+. +ii_0xe\1db: + ii_shift_typ w,\2,#1,(a3),(a3)+ +ii_0xe\1dc: + ii_shift_typ w,\2,#1,(a4),(a4)+ +ii_0xe\1dd: + ii_shift_typ w,\2,#1,(a5),(a5)+ +ii_0xe\1de: + ii_shift_typ w,\2,#1,(a6),(a6)+ +ii_0xe\1df: + move.l usp,a1 + addq.l #2,a1 + move.l a1,usp + subq.l #2,a1 + ii_shift_typ w,\2,#1,(a1),(a1). +// -(a0) bis -(a7) ----------------------------- +ii_0xe\1e0: + move.l a0_off(a7),a1 + subq.l #2,a1 + move.l a1,a0_off(a7) + ii_shift_typ w,\2,#1,(a1),(a1). +ii_0xe\1e1: + move.l a1_off(a7),a1 + subq.l #2,a1 + move.l a1,a1_off(a7) + ii_shift_typ w,\2,#1,(a1),(a1). +ii_0xe\1e2: + ii_shift_typ w,\2,#1,-(a2),(a2). +ii_0xe\1e3: + ii_shift_typ w,\2,#1,-(a3),(a3) +ii_0xe\1e4: + ii_shift_typ w,\2,#1,-(a4),(a4) +ii_0xe\1e5: + ii_shift_typ w,\2,#1,-(a5),(a5) +ii_0xe\1e6: + ii_shift_typ w,\2,#1,-(a6),(a6) +ii_0xe\1e7: + move.l usp,a1 + subq.l #2,a1 + move.l a1,usp + ii_shift_typ w,\2,#1,(a1),(a1). +// d16(a0) bis d16(a7) ----------------------------- +ii_0xe\1e8: + move.w (a0)+,a1 + add.l a0_off(a7),a1 + ii_shift_typ w,\2,#1,(a1),(a1). +ii_0xe\1e9: + move.w (a0)+,a1 + add.l a1_off(a7),a1 + ii_shift_typ w,\2,#1,(a1),(a1). +ii_0xe\1ea: + move.w (a0)+,a1 + add.l a2,a1 + ii_shift_typ w,\2,#1,(a1),(a1). +ii_0xe\1eb: + move.w (a0)+,a1 + add.l a3,a1 + ii_shift_typ w,\2,#1,(a1),(a1) +ii_0xe\1ec: + move.w (a0)+,a1 + add.l a4,a1 + ii_shift_typ w,\2,#1,(a1),(a1) +ii_0xe\1ed: + move.w (a0)+,a1 + add.l a5,a1 + ii_shift_typ w,\2,#1,(a1),(a1) +ii_0xe\1ee: + move.w (a0)+,a1 + add.l a6,a1 + ii_shift_typ w,\2,#1,(a1),(a1) +ii_0xe\1ef: + mvs.w (a0)+,d0 + move.l usp,a1 + add.l d0,a1 + ii_shift_typ w,\2,#1,(a1),(a1). +// d8(a0,dy) bis d8(a7,dy) ----------------------------- +ii_0xe\1f0: + move.l a0_off(a0),a1 + jsr ewf + ii_shift_typ w,\2,#1,(a1),(a1). +ii_0xe\1f1: + move.l a1_off(a0),a1 + jsr ewf + ii_shift_typ w,\2,#1,(a1),(a1). +ii_0xe\1f2: + move.l a2,a1 + jsr ewf + ii_shift_typ w,\2,#1,(a1),(a1). +ii_0xe\1f3: + move.l a3,a1 + jsr ewf + ii_shift_typ w,\2,#1,(a1),(a1). +ii_0xe\1f4: + move.l a4,a1 + jsr ewf + ii_shift_typ w,\2,#1,(a1),(a1). +ii_0xe\1f5: + move.l a5,a1 + jsr ewf + ii_shift_typ w,\2,#1,(a1),(a1). +ii_0xe\1f6: + move.l a6,a1 + jsr ewf + ii_shift_typ w,\2,#1,(a1),(a1). +ii_0xe\1f7: + move.l usp,a1 + jsr ewf + ii_shift_typ w,\2,#1,(a1),(a1). +// xxx.w xxx.l +ii_0xe\1f8: + move.w (a0)+,a1 + ii_shift_typ w,\2,#1,(a1),(a1). +ii_0xe\1f9: + move.l (a0)+,a1 + ii_shift_typ w,\2,#1,(a1),(a1). +.endm +//============================================================================ +//subroutine +//------------------------------ +ii_shift_op0:.macro // shift: 1=code 2=size 3=shift art 4=shift wert 5=ea +ii_0xe\1: + ii_shift_typ \2,\3,\4,\5,\5 +.endm + +ii_shift_op0b:.macro // shift wert nach d0 holen: 1=code 2=size 3=shift art 4=shift wert 5=ea +ii_0xe\1: + move.l \4,d0 + ii_shift_typ \2,\3,d0,\5,\5 +.endm + +ii_shift_typ:.macro //1=size 2=shift art 3=shift wert 4=source 5=dest +#ifdef halten + halt +#endif +.ifc asr,\2 + mvs.\1 \4,d1 +.else + mvz.\1 \4,d1 +.endif +.ifc roxr,\2 + nop +.else + .ifc roxl,\2 + nop + .else + .ifc ror,\2 + nop + .else + .ifc rol,\2 + nop + .else + \2.l \3,d1 + .endif + .endif + .endif +.endif + set_cc0 + move.\1 d1,\5 + ii_end +.endm diff --git a/BaS_codewarrior/firebeeV1/sources/ii_sub.h b/BaS_codewarrior/firebeeV1/sources/ii_sub.h new file mode 100644 index 0000000..1405e1a --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/ii_sub.h @@ -0,0 +1,584 @@ +//-------------------------------------------------------------------- +// sub +//-------------------------------------------------------------------- +/*****************************************************************************************/ +//-------------------------------------------------------------------- +// byt +//-------------------------------------------------------------------- +//-------------------------------------------------------------------- +// sub.b #im,dx +//-------------------------------------------------------------------- +subbir_macro:.macro +#ifdef halten_sub + halt +#endif + move.w (a0)+,d0 + extb.l d0 + mvs.b \2,d1 + sub.l d0,d1 + set_cc0 + move.b d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // sub ea,dx +//-------------------------------------------------------------------- +subdd:.macro +#ifdef halten_sub + halt +#endif + mvs.\3 \1,d0 + mvs.\3 \2,d1 + sub.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // sub ea(l)->dy(w),dx z.B. für USP +//-------------------------------------------------------------------- +subddd:.macro +#ifdef halten_sub + halt +#endif + move.l \1,a1 + mvs.\3 a1,d0 + mvs.\3 \2,d1 + sub.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // sub (ea)->dy,dx +//-------------------------------------------------------------------- +subdda:.macro +#ifdef halten_sub + halt +#endif + move.l \1,a1 + mvs.\3 (a1),d0 + mvs.\3 \2,d1 + sub.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // sub ea->ay,(ay)+,dx +//-------------------------------------------------------------------- +subddai:.macro +#ifdef halten_sub + halt +#endif + move.l \1,a1 + mvs.\3 (a1)+,d0 + move.l a1,\1 + mvs.\3 \2,d1 + sub.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // sub ea->ay,-(ay),dx +//-------------------------------------------------------------------- +subddad:.macro +#ifdef halten_sub + halt +#endif + move.l \1,a1 + mvs.\3 -(a1),d0 + move.l a1,\1 + mvs.\3 \2,d1 + sub.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // sub d16(ay),dx +//-------------------------------------------------------------------- +subd16ad:.macro +#ifdef halten_sub + halt +#endif + move.l \1,a1 + mvs.w (a0)+,d0 + add.l d0,a1 + mvs.\3 (a1),d0 + mvs.\3 \2,d1 + sub.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // sub d8(ay,dy),dx +//-------------------------------------------------------------------- +subd8ad:.macro +#ifdef halten_sub + halt +#endif + move.l \1,a1 + jsr ewf +.ifc \3,l + move.l (a1),d0 + move.l \2,d1 +.else + mvs.\3 (a1),d0 + mvs.\3 \2,d1 +.endif + sub.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // sub xxx.w,dx +//-------------------------------------------------------------------- +subxwd:.macro +#ifdef halten_sub + halt +#endif + move.w (a0)+,a1 + mvs.\3 (a1),d0 + mvs.\3 \2,d1 + sub.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // sub xxx.l,dx +//-------------------------------------------------------------------- +subxld:.macro +#ifdef halten_sub + halt +#endif + move.l (a0)+,a1 + mvs.\3 (a1),d0 + mvs.\3 \2,d1 + sub.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // sub d16(pc),dx +//-------------------------------------------------------------------- +subd16pcd:.macro +#ifdef halten_sub + halt +#endif + move.l a0,a1 + mvs.w (a0)+,d0 + add.l d0,a1 + mvs.\3 (a1),d0 + mvs.\3 \2,d1 + sub.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // sub d8(pc,dy),dx +//-------------------------------------------------------------------- +subd8pcd:.macro +#ifdef halten_sub + halt +#endif + move.l a0,a1 + jsr ewf +.ifc \3,l + move.l (a1),d0 + move.l \2,d1 +.else + mvs.\3 (a1),d0 + mvs.\3 \2,d1 +.endif + sub.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// sub dy,ea +//-------------------------------------------------------------------- +//-------------------------------------------------------------------- +// // sub (ea)->dy,dx +//-------------------------------------------------------------------- +subeda:.macro +#ifdef halten_sub + halt +#endif + mvs.\3 \1,d0 + move.l \2,a1 + mvs.\3 (a1),d1 + sub.l d0,d1 + set_cc0 + move.\3 d1,(a1) + ii_end + .endm; +//-------------------------------------------------------------------- +// // sub dx,ea->ay,(ay)+ +//-------------------------------------------------------------------- +subedai:.macro +#ifdef halten_sub + halt +#endif + mvs.\3 \1,d0 + move.l \2,a1 + mvs.\3 (a1),d1 + sub.l d0,d1 + set_cc0 + move.\3 d1,(a1)+ + move.l a1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // sub dx,ea->ay,(ay)+ +//-------------------------------------------------------------------- +subedaid:.macro +#ifdef halten_sub + halt +#endif + mvs.\3 \1,d0 + mvs.\3 \2,d1 + sub.l d0,d1 + set_cc0 + move.\3 d1,\2+ + ii_end + .endm; +//-------------------------------------------------------------------- +// // sub dx,ea->ay,-(ay) +//-------------------------------------------------------------------- +subedad:.macro +#ifdef halten_sub + halt +#endif + mvs.\3 \1,d0 + move.l \2,a1 + mvs.\3 -(a1),d1 + move.l a1,\2 + sub.l d0,d1 + set_cc0 + move.\3 d1,(a1) + ii_end + .endm; +//-------------------------------------------------------------------- +// // sub dx,ea->ay,-(ay) +//-------------------------------------------------------------------- +subedadd:.macro +#ifdef halten_sub + halt +#endif + mvs.\3 \1,d0 + mvs.\3 -\2,d1 + sub.l d0,d1 + set_cc0 + move.\3 d1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // sub dx,d16(ay) +//-------------------------------------------------------------------- +sube16ad:.macro +#ifdef halten_sub + halt +#endif + mvs.\3 \1,d0 + move.l \2,a1 + mvs.w (a0)+,d1 + add.l d1,a1 + mvs.\3 (a1),d1 + sub.l d0,d1 + set_cc0 + move.\3 d1,(a1) + ii_end + .endm; +//-------------------------------------------------------------------- +// // sub dx,d8(ay,dy) +//-------------------------------------------------------------------- +sube8ad:.macro +#ifdef halten_sub + halt +#endif + move.l \2,a1 + jsr ewf +.ifc \3,l + move.l (a1),d1 + move.l \1,d0 +.else + mvs.\3 (a1),d1 + mvs.\3 \1,d0 +.endif + sub.l d0,d1 + set_cc0 + move.\3 d1,(a1) + ii_end + .endm; +//-------------------------------------------------------------------- +// // sub dx,xxx.w +//-------------------------------------------------------------------- +subxwe:.macro +#ifdef halten_sub + halt +#endif + mvs.\3 \1,d0 + move.w (a0)+,a1 + mvs.\3 (a1),d1 + sub.l d0,d1 + set_cc0 + move.\3 d1,(a1) + ii_end + .endm; +//-------------------------------------------------------------------- +// // sub dx,xxx.l +//-------------------------------------------------------------------- +subxle:.macro +#ifdef halten_sub + halt +#endif + mvs.\3 \1,d0 + move.l (a0)+,a1 + mvs.\3 (a1),d1 + sub.l d0,d1 + set_cc0 + move.\3 d1,(a1) + ii_end + .endm; +/******************************************************/ +// adress register +/******************************************************/ +//-------------------------------------------------------------------- +// // suba.w ea,ax +//-------------------------------------------------------------------- +subaw:.macro +#ifdef halten_sub + halt +#endif + move.l a0,pc_off(a7) // pc auf next + movem.l (a7),d0/d1/a0/a1 // register zurpück + mvs.w \1,d0 + suba.l d0,\2 + move.l d0_off(a7),d0 + lea ii_ss(a7),a7 // stack erhöhen + rte + .endm; +//-------------------------------------------------------------------- +// sub.w ea,usp +//-------------------------------------------------------------------- +subawa7:.macro +#ifdef halten_sub + halt +#endif + mvs.w \1,d0 + move.l usp,a1 + sub.l d0,a1 + move.l a1,usp + ii_end + .endm; +//-------------------------------------------------------------------- +// // suba.w usp?,ax +//-------------------------------------------------------------------- +subawu:.macro +#ifdef halten_sub + halt +#endif + move.l a0,pc_off(a7) // pc auf next + movem.l (a7),d0/d1/a0/a1 // register zurpück + move.l a7,_a7_save + move.l usp,a7 + move.l \1,d0 + suba.l d0,\2 + move.l a7,usp + move.l _a7_save,a7 + move.l d0_off(a7),d0 + lea ii_ss(a7),a7 // stack erhöhen + rte + .endm; +//-------------------------------------------------------------------- +// // suba.w usp?,usp +//-------------------------------------------------------------------- +subawua7:.macro + subawu \1,\2 + .endm; +//-------------------------------------------------------------------- +// // suba.w d16(ay),ax +//-------------------------------------------------------------------- +subawd16a:.macro +#ifdef halten_sub + halt +#endif + move.l \1,a1 + mvs.w (a0)+,d0 + adda.l d0,a1 + mvs.w (a1),d0 + move.l \2,a1 + sub.l d0,a1 + move.l a1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // suba.w d8(ay,dy),ax +//-------------------------------------------------------------------- +subawd8a:.macro +#ifdef halten_sub + halt +#endif + move.l \1,a1 + jsr ewf + mvs.w (a1),d0 + move.l \2,a1 + sub.l d0,a1 + move.l a1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // suba.w xxx.w,ax +//-------------------------------------------------------------------- +subawxwax:.macro +#ifdef halten_sub + halt +#endif + move.w (a0)+,a1 + mvs.w (a1),d0 + move.l \2,a1 + suba.l d0,a1 + move.l a1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // suba.w xxx.l,ax +//-------------------------------------------------------------------- +subawxlax:.macro +#ifdef halten_sub + halt +#endif + move.l (a0)+,a1 + mvs.w (a1),d0 + move.l \2,a1 + suba.l d0,a1 + move.l a1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // suba.w d16(pc),ax +//-------------------------------------------------------------------- +subawd16pcax:.macro +#ifdef halten_sub + halt +#endif + move.w (a0)+,a1 + adda.l a0,a1 + mvs.w (a1),d0 + move.l \2,a1 + suba.l d0,a1 + move.l a1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // suba.w d8(pc,dy),ax +//-------------------------------------------------------------------- +subawd8pcax:.macro +#ifdef halten_sub + halt +#endif + move.l a0,a1 + jsr ewf + mvs.w (a1),d0 + move.l \2,a1 + sub.l d0,a1 + move.l a1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // suba.w #im,ax +//-------------------------------------------------------------------- +subawim:.macro +#ifdef halten_sub + halt +#endif + mvs.w \1,d0 + move.l \2,a1 + sub.l d0,a1 + move.l a1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // suba.l d8(ay,dy),ax +//-------------------------------------------------------------------- +subald8a:.macro +#ifdef halten_sub + halt +#endif + move.l \1,a1 + jsr ewf + move.l (a1),d0 + move.l \2,a1 + sub.l d0,a1 + move.l a1,\2 + ii_end + .endm; +//-------------------------------------------------------------------- +// // suba.l d8(pc,dy),ax +//-------------------------------------------------------------------- +subakd8pcax:.macro +#ifdef halten_sub + halt +#endif + move.l a0,a1 + jsr ewf + move.l (a1),d0 + move.l \2,a1 + sub.l d0,a1 + move.l a1,\2 + ii_end + .endm; +//***************************************************************************************** +// subx +//***************************************************************************************** +//-------------------------------------------------------------------- +// // subx dy,dx +//-------------------------------------------------------------------- +subdx:.macro +#ifdef halten_sub + halt +#endif + move.b sr_off+1(a7),d0 //ccr holen + move d0,ccr //setzen + mvs.\3 \2,d0 + mvs.\3 \1,d1 + subx.l d0,d1 + set_cc0 + move.\3 d1,\1 + ii_end + .endm; +//-------------------------------------------------------------------- +// // subx -(ay),-(ax) +//-------------------------------------------------------------------- +subdax:.macro +#ifdef halten_sub + halt +#endif + move.b sr_off+1(a7),d0 //ccr holen + move d0,ccr //setzen + move.l \1,a1 +.ifc \3,l + move.l -(a1),d0 +.else + mvs.\3 -(a1),d0 +.endif + move.l \2,a1 +.ifc \3,l + move.l -(a1),d0 +.else + mvs.\3 -(a1),d1 +.endif + subx.l d0,d1 + set_cc0 + move.\3 d1,(a1) + ii_end + .endm; +//-------------------------------------------------------------------- diff --git a/BaS_codewarrior/firebeeV1/sources/illegal_instruction.s b/BaS_codewarrior/firebeeV1/sources/illegal_instruction.s new file mode 100644 index 0000000..21461b3 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/illegal_instruction.s @@ -0,0 +1,328 @@ +.public _illegal_instruction +.public _illegal_table_make + +.include "startcf.h" +.include "ii_macro.h" +.include "ii_func.h" +.include "ii_op.h" +.include "ii_opc.h" +.include "ii_add.h" +.include "ii_sub.h" +.include "ii_or.h" +.include "ii_and.h" +.include "ii_dbcc.h" +.include "ii_shd.h" +.include "ii_movem.h" +.include "ii_lea.h" +.include "ii_shift.h" +.include "ii_exg.h" +.include "ii_movep.h" +.include "ii_ewf.h" +.include "ii_move.h" + +.extern _ii_shift_vec +.extern ewf + +/*******************************************************/ +.text +ii_error: + nop + halt + nop + nop + +_illegal_instruction: +#ifdef ii_on + move.w #0x2700,sr + lea -ii_ss(a7),a7 + movem.l d0/d1/a0/a1,(a7) + move.l pc_off(a7),a0 // pc + mvz.w (a0)+,d0 // code + lea table,a1 + move.l 0(a1,d0*4),a1 + jmp (a1) +/*************************************************************************************************/ +#endif +_illegal_table_make: +#ifdef ii_on + lea table,a0 + moveq #0,d0 +_itm_loop: + move.l #ii_error,(a0)+ + addq.l #1,d0 + cmp.l #0xF000,d0 + bne _itm_loop +//------------------------------------------------------------------------- + ii_ewf_lset // diverse fehlende adressierungn +//------------------------------------------------------------------------- +// 0x0000 +// ori + ii_lset_op 00 +// andi + ii_lset_op 02 +// subi + ii_lset_op 04 +// addi + ii_lset_op 06 +// eori + ii_lset_op 0a +// cmpi + ii_lset_op 0c +// movep + ii_movep_lset +//------------------------------------------------------------------------- +// 0x1000 move.b +// 0x2000 move.l +// 0x3000 move.w + ii_move_lset +//------------------------------------------------------------------------- +// 0x4000 +//------------------------------------------------------------------------- +// negx + ii_lset_op 40 +// neg + ii_lset_op 44 +// not + ii_lset_op 46 +//--------------------------------------------------------------------------------------------- +// lea d8(ax,dy.w),az; d8(pc,dy.w),az +//------------------------------------------------------------------- + ii_lea_lset +//------------------------------------------------------------------- +// movem +//------------------------------------------------------------------- + ii_movem_lset +//------------------------------------------------------------------------- +// 0x5000 +//------------------------------------------------------------------------- +// addq, subq + ii_lset_op 50 + ii_lset_op 51 + ii_lset_op 52 + ii_lset_op 53 + ii_lset_op 54 + ii_lset_op 55 + ii_lset_op 56 + ii_lset_op 57 + ii_lset_op 58 + ii_lset_op 59 + ii_lset_op 5a + ii_lset_op 5b + ii_lset_op 5c + ii_lset_op 5d + ii_lset_op 5e + ii_lset_op 5f +// dbcc + ii_lset_dbcc +// scc + ii_lset_opc 50 + ii_lset_opc 51 + ii_lset_opc 52 + ii_lset_opc 53 + ii_lset_opc 54 + ii_lset_opc 55 + ii_lset_opc 56 + ii_lset_opc 57 + ii_lset_opc 58 + ii_lset_opc 59 + ii_lset_opc 5a + ii_lset_opc 5b + ii_lset_opc 5c + ii_lset_opc 5d + ii_lset_opc 5e + ii_lset_opc 5f +//------------------------------------------------------------------------- +// 0x8000 or +//------------------------------------------------------------------------- + ii_lset_func 8 +//------------------------------------------------------------------------- +// 0x9000 sub +//------------------------------------------------------------------------- + ii_lset_func 9 +//------------------------------------------------------------------------- +// 0xb000 +//------------------------------------------------------------------------- +// eor + ii_lset_op b1 + ii_lset_op b3 + ii_lset_op b5 + ii_lset_op b7 + ii_lset_op b9 + ii_lset_op bb + ii_lset_op bd + ii_lset_op bf +//------------------------------------------------------------------------- +// 0xc000 +//------------------------------------------------------------------------- +// and + ii_lset_func c +// exg + ii_exg_lset +//------------------------------------------------------------------------- +// 0xd000 add +//------------------------------------------------------------------------- + ii_lset_func d +//------------------------------------------------------------------------- +// 0xe000 +//------------------------------------------------------------------------- +// shift register + ii_shift_lset e +//------------------------------------------------- +// differenz zwischen orginal und gemoved korrigieren + lea ii_error(pc),a1 + move.l a1,d1 + sub.l #ii_error,d1 + lea table,a0 + moveq #0,d0 +_itkorr_loop: + add.l d1,(a0)+ + addq.l #1,d0 + cmp.l #0xF000,d0 + bne _itkorr_loop +#endif + rts +#ifdef ii_on +//***********************************************************************************/ +//------------------------------------------------------------------------- + ii_ewf_func // diverse fehlende adressierungn +//------------------------------------------------------------------------- +//--------------------------------------------------------------------------------------------- +// 0x0000 +//-------------------------------------------------------------------- +// ori 00 + ii_op 00,or.l,i +//-------------------------------------------------------------------- +// andi 02 + ii_op 02,and.l,i +//-------------------------------------------------------------------- +// subi 04 + ii_op 04,and.l,i +//-------------------------------------------------------------------- +// addi 06 + ii_op 06,add.l,i +//-------------------------------------------------------------------- +// eori 0a + ii_op 0a,eor.l,i +//-------------------------------------------------------------------- +// cmpi 0c + ii_op 0c,cmp.l,i +//-------------------------------------------------------------------- +// movep + ii_movep_func +///--------------------------------------------------------------------------------------------- +// 0x1000 move.b +// 0x2000 move.l +// 0x3000 move.w + ii_move_op +//--------------------------------------------------------------------------------------------- +// 0x4000 +//--------------------------------------------------------------------------------------------- +// neg 0x40.. + ii_op 40,negx.l,n +//--------------------------------------------------------------------------------------------- +// neg 0x44.. + ii_op 44,neg.l,n +//--------------------------------------------------------------------------------------------- +// not 0x46.. + ii_op 46,not.l,n +//--------------------------------------------------------------------------------------------- +// lea d8(ax,dy.w),az; d8(pc,dy.w),az +//------------------------------------------------------------------- + ii_lea_func +//------------------------------------------------------------------- +// movem +//-------------------------------------------------------------------- +ii_movem_func +//--------------------------------------------------------------------------------------------- +// 0x5000 +//--------------------------------------------------------------------------------------------- +//dbcc + ii_dbcc_func +// addq 0x5... + ii_op 50,addq.l #8,q + ii_op 52,addq.l #1,q + ii_op 54,addq.l #2,q + ii_op 56,addq.l #3,q + ii_op 58,addq.l #4,q + ii_op 5a,addq.l #5,q + ii_op 5c,addq.l #6,q + ii_op 5e,addq.l #7,q +//--------------------------------------------------------------------------------------------- +// subq 0x5... + ii_op 51,subq.l #8,q + ii_op 53,subq.l #1,q + ii_op 55,subq.l #2,q + ii_op 57,subq.l #3,q + ii_op 59,subq.l #4,q + ii_op 5b,subq.l #5,q + ii_op 5d,subq.l #6,q + ii_op 5f,subq.l #7,q +//--------------------------------------------------------------------------------------------- +// 0x5... scc + ii_opc 50,st,c + ii_opc 51,sf,c + ii_opc 52,shi,c + ii_opc 53,sls,c + ii_opc 54,scc,c + ii_opc 55,scs,c + ii_opc 56,sne,c + ii_opc 57,seq,c + ii_opc 58,svc,c + ii_opc 59,svs,c + ii_opc 5a,spl,c + ii_opc 5b,smi,c + ii_opc 5c,sge,c + ii_opc 5d,slt,c + ii_opc 5e,sgt,c + ii_opc 5f,sle,c +//--------------------------------------------------------------------------------------------- +// 0x6000 +//-------------------------------------------------------------------- +//--------------------------------------------------------------------------------------------- +// 0x7000 +//-------------------------------------------------------------------- +//--------------------------------------------------------------------------------------------- +// 0x8000 +//--------------------------------------------------------------------------------------------- +// or + ii_func 8,or +//--------------------------------------------------------------------------------------------- +// 0x9000 +//--------------------------------------------------------------------------------------------- +// sub + ii_func 9,sub +//--------------------------------------------------------------------------------------------- +// 0xa000 +//-------------------------------------------------------------------- +//--------------------------------------------------------------------------------------------- +// 0xb000 +//--------------------------------------------------------------------------------------------- +// eor + ii_op b1,eor.l d0,q + ii_op b3,eor.l d1,q + ii_op b5,eor.l d2,q + ii_op b7,eor.l d3,q + ii_op b9,eor.l d4,q + ii_op bb,eor.l d5,q + ii_op bd,eor.l d6,q + ii_op bf,eor.l d7,q +//--------------------------------------------------------------------------------------------- +// 0xc000 +//--------------------------------------------------------------------------------------------- +// and + ii_func c,and +// exg + ii_exg_func +//--------------------------------------------------------------------------------------------- +// 0xd000 +//--------------------------------------------------------------------------------------------- +// add + ii_func d,add +//--------------------------------------------------------------------------------------------- +// 0xe000 shift +//-------------------------------------------------------------------- + ii_shift_op +//-------------------------------------------------------------------- +// 0xf000 +//-------------------------------------------------------------------- +#endif \ No newline at end of file diff --git a/BaS_codewarrior/firebeeV1/sources/last.c b/BaS_codewarrior/firebeeV1/sources/last.c new file mode 100644 index 0000000..0cb3a3e --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/last.c @@ -0,0 +1,11 @@ +// letztes file der liste +// wichtig als endpunkt des kopierens + +void copy_end(void) +{ + asm + { +copy_end: + nop + } +} \ No newline at end of file diff --git a/BaS_codewarrior/firebeeV1/sources/last.s b/BaS_codewarrior/firebeeV1/sources/last.s new file mode 100644 index 0000000..c9dfe7a --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/last.s @@ -0,0 +1,10 @@ +// letztes file der liste +// wichtig als endpunkt des kopierens + +.global copy_end + +.text + nop +copy_end: + nop +.asciz 'ende copy'; \ No newline at end of file diff --git a/BaS_codewarrior/firebeeV1/sources/macro.h b/BaS_codewarrior/firebeeV1/sources/macro.h new file mode 100644 index 0000000..2afa44e --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/macro.h @@ -0,0 +1,10 @@ +/*******************************************************/ +// allgemeine macros +/*******************************************************/ +.text +wait_pll: .macro +wait1_pll\@: + tst.w (a1) + bmi wait1_pll\@ + rts +.endm diff --git a/BaS_codewarrior/firebeeV1/sources/mmu.s b/BaS_codewarrior/firebeeV1/sources/mmu.s new file mode 100644 index 0000000..0d3fade --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/mmu.s @@ -0,0 +1,196 @@ +/********************************************************************/ + /* INIT ACR und MMU /* +/********************************************************************/ + +.include "startcf.h" + +.extern _rt_vbr +.extern _rt_cacr +.extern _rt_asid +.extern _rt_acr0 +.extern _rt_acr1 +.extern _rt_acr2 +.extern _rt_acr3 +.extern _rt_mmubar +.extern ___MMUBAR +.extern cpusha +.extern _video_tlb +.extern _video_sbt + +/* Register read/write macros */ +#define MCF_MMU_MMUCR ___MMUBAR +#define MCF_MMU_MMUOR ___MMUBAR+0x04 +#define MCF_MMU_MMUSR ___MMUBAR+0x08 +#define MCF_MMU_MMUAR ___MMUBAR+0x10 +#define MCF_MMU_MMUTR ___MMUBAR+0x14 +#define MCF_MMU_MMUDR ___MMUBAR+0x18 + + +/* Bit definitions and macros for MCF_MMU_MMUCR */ +#define MCF_MMU_MMUCR_EN (0x1) +#define MCF_MMU_MMUCR_ASM (0x2) + +/* Bit definitions and macros for MCF_MMU_MMUOR */ +#define MCF_MMU_MMUOR_UAA (0x1) +#define MCF_MMU_MMUOR_ACC (0x2) +#define MCF_MMU_MMUOR_RW (0x4) +#define MCF_MMU_MMUOR_ADR (0x8) +#define MCF_MMU_MMUOR_ITLB (0x10) +#define MCF_MMU_MMUOR_CAS (0x20) +#define MCF_MMU_MMUOR_CNL (0x40) +#define MCF_MMU_MMUOR_CA (0x80) +#define MCF_MMU_MMUOR_STLB (0x100) +#define MCF_MMU_MMUOR_AA(x) (((x)&0xFFFF)<<0x10) + +/* Bit definitions and macros for MCF_MMU_MMUSR */ +#define MCF_MMU_MMUSR_HIT (0x2) +#define MCF_MMU_MMUSR_WF (0x8) +#define MCF_MMU_MMUSR_RF (0x10) +#define MCF_MMU_MMUSR_SPF (0x20) + +/* Bit definitions and macros for MCF_MMU_MMUAR */ +#define MCF_MMU_MMUAR_FA(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_MMU_MMUTR */ +#define MCF_MMU_MMUTR_V (0x1) +#define MCF_MMU_MMUTR_SG (0x2) +#define MCF_MMU_MMUTR_ID(x) (((x)&0xFF)<<0x2) +#define MCF_MMU_MMUTR_VA(x) (((x)&0x3FFFFF)<<0xA) + +/* Bit definitions and macros for MCF_MMU_MMUDR */ +#define MCF_MMU_MMUDR_LK (0x2) +#define MCF_MMU_MMUDR_X (0x4) +#define MCF_MMU_MMUDR_W (0x8) +#define MCF_MMU_MMUDR_R (0x10) +#define MCF_MMU_MMUDR_SP (0x20) +#define MCF_MMU_MMUDR_CM(x) (((x)&0x3)<<0x6) +#define MCF_MMU_MMUDR_SZ(x) (((x)&0x3)<<0x8) +#define MCF_MMU_MMUDR_PA(x) (((x)&0x3FFFFF)<<0xA) + +#define std_mmutr (MCF_MMU_MMUTR_SG|MCF_MMU_MMUTR_V) +#define mmuord_d ( MCF_MMU_MMUOR_ACC|MCF_MMU_MMUOR_UAA) +#define mmuord_i (MCF_MMU_MMUOR_ITLB|MCF_MMU_MMUOR_ACC|MCF_MMU_MMUOR_UAA) +#define wt_mmudr (MCF_MMU_MMUDR_SZ(00)|MCF_MMU_MMUDR_CM(00)|MCF_MMU_MMUDR_R|MCF_MMU_MMUDR_W|MCF_MMU_MMUDR_X) +#define cb_mmudr (MCF_MMU_MMUDR_SZ(00)|MCF_MMU_MMUDR_CM(01)|MCF_MMU_MMUDR_R|MCF_MMU_MMUDR_W|MCF_MMU_MMUDR_X) +#define nc_mmudr (MCF_MMU_MMUDR_SZ(00)|MCF_MMU_MMUDR_CM(10)|MCF_MMU_MMUDR_R|MCF_MMU_MMUDR_W|MCF_MMU_MMUDR_X) + +.public _mmu_init +.public _mmutr_miss + +.text +_mmu_init: + clr.l d0 + movec d0,ASID // ASID allways 0 + move.l d0,_rt_asid // sichern + movec d0,cacr // cache aus + move.l d0,_rt_cacr // sichern + nop + + move.l #0xC03FC040,d0 // data r/w precise c000'0000-ffff'ffff + movec d0,ACR0 + move.l d0,_rt_acr0 // sichern + + move.l #0x601FC000,d0 // data r/w wt 6000'0000-7fff'ffff + movec d0,ACR1 + move.l d0,_rt_acr1 // sichern + + move.l #0xe007C400,d0 // instruction r wt e000'0000-e07f'ffff + movec d0,ACR2 + move.l d0,_rt_acr2 // sichern + + clr.l d0 // acr3 aus + movec d0,ACR3 + move.l d0,_rt_acr3 // sichern + + move.l #___MMUBAR+1,d0 + movec d0,MMUBAR //mmubar setzen + move.l d0,_rt_mmubar // sichern + + nop + + move.l #MCF_MMU_MMUOR_CA,d0 // clear all entries, + move.l d0,MCF_MMU_MMUOR + nop +// 0000'0000 locked + moveq.l #0x00000000|std_mmutr,d0 + moveq.l #0x00000000|cb_mmudr|MCF_MMU_MMUDR_LK,d1 + moveq.l #mmuord_d,d2 // MMU update date + moveq.l #mmuord_i,d3 // MMU update instruction + move.l d0,MCF_MMU_MMUTR + move.l d1,MCF_MMU_MMUDR + move.l d2,MCF_MMU_MMUOR // MMU update date + move.l d3,MCF_MMU_MMUOR // MMU update instruction + +//--------------------------------------------------------------------------------------- +// 00d0'0000 locked ID=6 +// video ram: read write execute normal write true + move.l #0x00d00000|MCF_MMU_MMUTR_ID(sca_page_ID)|std_mmutr,d0 + move.l #0x60d00000|wt_mmudr|MCF_MMU_MMUDR_LK,d1 + move.l d0,MCF_MMU_MMUTR + move.l d1,MCF_MMU_MMUDR + move.l d2,MCF_MMU_MMUOR // MMU update date + move.l #0x00d00000|std_mmutr,d0 + move.l d3,MCF_MMU_MMUOR // MMU update instruction + + move.l #0x2000,d0 + move.l d0,_video_tlb // setze page als video page + clr.l _video_sbt // zeit löschen +//------------------------------------------------------------------------------------- +// 00e0'0000 locked + move.l #0x00e00000|std_mmutr,d0 + move.l #0x00e00000|cb_mmudr|MCF_MMU_MMUDR_LK,d1 + move.l d0,MCF_MMU_MMUTR + move.l d1,MCF_MMU_MMUDR + move.l d2,MCF_MMU_MMUOR // setzen read only ?????? noch nicht + move.l d3,MCF_MMU_MMUOR // setzen +// 00f0'0000 locked + move.l #0x00f00000|std_mmutr,d0 + move.l #0xfff00000|nc_mmudr|MCF_MMU_MMUDR_LK,d1 + move.l d0,MCF_MMU_MMUTR + move.l d1,MCF_MMU_MMUDR + move.l d2,MCF_MMU_MMUOR // maped to ffffxxx, precise, + move.l d3,MCF_MMU_MMUOR // maped to ffffxxx, precise, +// 1fe0'0000 locked + move.l #0x1FE00000|std_mmutr,d0 + move.l #0x1FE00000|cb_mmudr|MCF_MMU_MMUDR_LK,d1 + move.l d0,MCF_MMU_MMUTR + move.l d1,MCF_MMU_MMUDR + move.l d2,MCF_MMU_MMUOR // setzen data + move.l d3,MCF_MMU_MMUOR // setzen instr +// 1ff0'0000 locked + move.l #0x1FF00000|std_mmutr,d0 + move.l #0x1FF00000|cb_mmudr|MCF_MMU_MMUDR_LK,d1 + move.l d0,MCF_MMU_MMUTR + move.l d1,MCF_MMU_MMUDR + move.l d2,MCF_MMU_MMUOR // setzen data + move.l d3,MCF_MMU_MMUOR // setzen instr +// instr 0xFFF0'0000 nach 0x1FF0'0000 umleiten -->> short sprung +/* move.l #0xFFF00000|std_mmutr,d0 + move.l #0x1FF00000|cb_mmudr|MCF_MMU_MMUDR_LK,d1 + move.l d0,MCF_MMU_MMUTR + move.l d1,MCF_MMU_MMUDR + move.l d3,MCF_MMU_MMUOR // setzen instr +*/ + move.l #0xa10ca120,d0 + move.l d0,_rt_cacr // sichern + movec d0,cacr + nop + rts + +/********************************************************************/ + /* MMU table search /* +/********************************************************************/ +_mmutr_miss: + bsr cpusha + and.l #0xFFF00000,d0 + or.l #std_mmutr,d0 + move.l d0,MCF_MMU_MMUTR + and.l #0xFFF00000,d0 + or.l #cb_mmudr,d0 + move.l d0,MCF_MMU_MMUDR + moveq.l #mmuord_d,d0 // MMU update data + move.l d0,MCF_MMU_MMUOR // setzen + moveq.l #mmuord_i,d0 // MMU update instruction + move.l d0,MCF_MMU_MMUOR // setzen + move.l (sp)+,d0 + rte diff --git a/BaS_codewarrior/firebeeV1/sources/movem.h b/BaS_codewarrior/firebeeV1/sources/movem.h new file mode 100644 index 0000000..b79349d --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/movem.h @@ -0,0 +1,256 @@ +// movem +_ii_movem_lset: .macro +// movem rx,xxx.L + ii_lset 0x48f9 +// movem rx,-(ax) + +// movem (ax)+,rx + ii_lset 0x4cd8 + ii_lset 0x4cd9 + ii_lset 0x4cda + ii_lset 0x4cdb + ii_lset 0x4cdc + ii_lset 0x4cdd + ii_lset 0x4cde + ii_lset 0x4cdf +// movem xxx.L,rx + ii_lset 0x4cf9 +.endm +//***********************************************************************************/ +_ii_movem_func: .macro +//------------------------------------------------------------------- +// movem.l +//-------------------------------------------------------------------- +// movem.l (ax)+,reg +//-------------------------------------------------------------------- +//------------------------------------------------------------------------------- +ii_0x4cd8: // movem.l (a0)+,reglist + mvm_macro 0x4cd0,0x41e8,2 +ii_0x4cd9: // movem.l (a1)+,reglist + mvm_macro 0x4cd1,0x43e9,2 +ii_0x4cda: // movem.l (a2)+,reglist + mvm_macro 0x4cd2,0x45ea,2 +ii_0x4cdb: // movem.l (a3)+,reglist + mvm_macro 0x4cd3,0x47eb,2 +ii_0x4cdc: // movem.l (a4)+,reglist + mvm_macro 0x4cd4,0x49ec,2 +ii_0x4cdd: // movem.l (a5)+,reglist + mvm_macro 0x4cd5,0x4bed,2 +ii_0x4cde: // movem.l (a6)+,reglist + mvm_macro 0x4cd6,0x4dee,2 +ii_0x4cdf: // movem.l (a7)+,reglist + mvm_macro 0x4cd7,0x4fef,2 +//---------------------------------------------------------------------------- +ii_0x48f9: // movem.l reg,xxx.L + move.w (a0)+,d0 + move.l (a0)+,a1 + movemrm_macro + ii_end +//--------------------------------------------------------------------------------------------- +ii_0x4cf9: // movem.l xxx.L,reg + move.w (a0)+,d0 + move.l (a0)+,a1 + movemmr_macro + ii_end +.endm +//============================================================== +mvm_macro:.macro +halt + lea az_reg_table,a1 + mvz.b (a0),d1 + mvz.b 0(a1,d1)+,d0 + mvz.b 1(a0),d1 + mvz.b 0(a1,d1)+,d1 + add.l d0,d1 + lea ___RAMBAR1,a1 + move.l a1,pc_off(a7) + move.l a1,d0 + addq.l #1,d0 + movec d0,RAMBAR1 + move.w #\1,(a1)+ // movem.x (ax),reg_list + move.w (a0)+,(a1)+ // register list + move.w #\2,(a1)+ // lea 0(ax),ax + lsl.l #\3,d1 // * anzahl byts pro wert + move.w d1,(a1)+ // offset von lea + move.w #0x4ef9,(a1)+ // jmp.l + move.l a0,(a1) // rücksprungadresse + move.l #___RAMBAR1 + 0x81,d0 // instruction + movec d0,RAMBAR1 + movem.l (a7),d0/d1/a0/a1 + lea ii_ss(a7),a7 // stack erhöhen + rte + .endm + .long 0 +az_reg_table: + .byte 0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4 // 0-f + .byte 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5 // 10-1f + .byte 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5 // 20-2f + .byte 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6 // 30-3f + .byte 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5 // 40-4f + .byte 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6 // 50 + .byte 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6 // 60 + .byte 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7 // 70 + .byte 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5 // 80-8f + .byte 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6 // 90 + .byte 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6 // a0 + .byte 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7 // b0 + .byte 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6 // c0 + .byte 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7 // d0 + .byte 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7 // e0 + .byte 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8 // f0 +//--------------------------------------------------------------------------------- +movemrm_macro:.macro // in d0 register liste, in a1 zieladresse +halt + tst.b d0 // datenregister zu verschieben? + bne mrm_dx // ja-> + lsr.l #8,d0 // sonst zu addressregister + jmp mmrm_nd7 // -> +mrm_dx: + lsr.l #1,d0 + bcc mmrm_nd0 + move.l d0_off(a7),(a1)+ +mmrm_nd0: + lsr.l #1,d0 + bcc mmrm_nd1 + move.l d1_off(a7),(a1)+ +mmrm_nd1: + lsr.l #1,d0 + bcc mmrm_nd2 + move.l d2,(a1)+ +mmrm_nd2: + lsr.l #1,d0 + bcc mmrm_nd3 + move.l d3,(a1)+ +mmrm_nd3: + lsr.l #1,d0 + bcc mmrm_nd4 + move.l d4,(a1)+ +mmrm_nd4: + lsr.l #1,d0 + bcc mmrm_nd5 + move.l d5,(a1)+ +mmrm_nd5: + lsr.l #1,d0 + bcc mmrm_nd6 + move.l d6,(a1)+ +mmrm_nd6: + lsr.l #1,d0 + bcc mmrm_nd7 + move.l d7,(a1)+ +mmrm_nd7: + tst.b d0 // addressregister zu verschieben? + beq mmrm_na7 + lsr.l #1,d0 + bcc mmrm_na0 + move.l a0_off(a7),(a1)+ +mmrm_na0: + lsr.l #1,d0 + bcc mmrm_na1 + move.l a1_off(a7),(a1)+ +mmrm_na1: + lsr.l #1,d0 + bcc mmrm_na2 + move.l a2,(a1)+ +mmrm_na2: + lsr.l #1,d0 + bcc mmrm_na3 + move.l a3,(a1)+ +mmrm_na3: + lsr.l #1,d0 + bcc mmrm_na4 + move.l a4,(a1)+ +mmrm_na4: + lsr.l #1,d0 + bcc mmrm_na5 + move.l a5,(a1)+ +mmrm_na5: + lsr.l #1,d0 + bcc mmrm_na6 + move.l a6,(a1)+ +mmrm_na6: + lsr.l #1,d0 + bcc mmrm_na7 + move.l a0,d1 // sichern + move.l usp,a0 // ist ja usp + move.l a0,(a1)+ // nach a0 + move.l d1,a0 // pc zurück +mmrm_na7: + .endm +//--------------------------------------------------------------------------------------------- +movemmr_macro:.macro // in d0 register liste, in a1 source adr +halt + tst.b d0 // datenregister zu verschieben? + bne mmr_dx // ja-> + lsr.l #8,d0 // sonst zu addressregister + bra mmmr_nd7 // -> +mmr_dx: + lsr.l #1,d0 + bcc mmmr_nd0 + move.l (a1)+,d0_off(a7) +mmmr_nd0: + lsr.l #1,d0 + bcc mmmr_nd1 + move.l (a1)+,d1_off(a7) +mmmr_nd1: + lsr.l #1,d0 + bcc mmmr_nd2 + move.l (a1)+,d2 +mmmr_nd2: + lsr.l #1,d0 + bcc mmmr_nd3 + move.l (a1)+,d3 +mmmr_nd3: + lsr.l #1,d0 + bcc mmmr_nd4 + move.l (a1)+,d4 +mmmr_nd4: + lsr.l #1,d0 + bcc mmmr_nd5 + move.l (a1)+,d5 +mmmr_nd5: + lsr.l #1,d0 + bcc mmmr_nd6 + move.l (a1)+,d6 +mmmr_nd6: + lsr.l #1,d0 + bcc mmmr_nd7 + move.l (a1)+,d7 +mmmr_nd7: + tst.b d0 // addressregister zu verschieben? + beq mmmr_na7 // nein-> + lsr.l #1,d0 + bcc mmmr_na0 + move.l (a1)+,a0_off(a7) +mmmr_na0: + lsr.l #1,d0 + bcc mmmr_na1 + move.l (a1)+,a1_off(a7) +mmmr_na1: + lsr.l #1,d0 + bcc mmmr_na2 + move.l (a1)+,a2 +mmmr_na2: + lsr.l #1,d0 + bcc mmmr_na3 + move.l (a1)+,a3 +mmmr_na3: + lsr.l #1,d0 + bcc mmmr_na4 + move.l (a1)+,a4 +mmmr_na4: + lsr.l #1,d0 + bcc mmmr_na5 + move.l (a1)+,a5 +mmmr_na5: + lsr.l #1,d0 + bcc mmmr_na6 + move.l (a1)+,a6 +mmmr_na6: + lsr.l #1,d0 + bcc mmmr_na7 + move.l a0,d1 // sichern + move.l (a1)+,a0 // nach a0 + move.l a0,usp // war ja usp + move.l d1,a0 // pc zurück +mmmr_na7: + .endm diff --git a/BaS_codewarrior/firebeeV1/sources/sd_card.c b/BaS_codewarrior/firebeeV1/sources/sd_card.c new file mode 100644 index 0000000..58c48bd --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/sd_card.c @@ -0,0 +1,605 @@ +/********************************************************************/ +// sd card +/********************************************************************/ + +#define __MBAR 0xff000000 +#define MCF_SLT0_SCNT __MBAR + 0x908 +#define MCF_PSC0_PSCTB_8BIT __MBAR + 0x860C +#define MCF_PAD_PAR_DSPI __MBAR + 0xA50 +#define MCF_DSPI_DMCR __MBAR + 0x8A00 //dspi control + +#define dspi_dtar0 0x0c +#define dspi_dsr 0x2c +#define dspi_dtfr 0x34 +#define dspi_drfr 0x38 +#define time1us 1320 + + +void wait_10ms(void) +{ + asm + { +warte_10ms: + move.l d0,-(sp) + move.l MCF_SLT0_SCNT,d0 + sub.l #1320000,d0 + warte_d6: + cmp.l MCF_SLT0_SCNT,d0 + bcs warte_d6 + move.l (sp)+,d0 + } +} + +void sd_com(void) // byt senden und holen --------------------- +{ + + asm + { + + move.l d4,dspi_dtfr(a0) +wait_auf_complett: + btst.b #7,dspi_dsr(a0) + beq wait_auf_complett + move.l dspi_drfr(a0),d5 + mov3q.l #-1,dspi_dsr(a0) // clr status register + } +} + +void sd_get_status(void) // status holen ------------------------------- +{ + asm + { +sd_get_status: + move.b #0xff,d4 + bsr sd_com + cmp.b #0xff,d5 + beq sd_get_status + } +} + +void sd_rcv_info(void) // daten holen ---------------------------- +{ + asm + { + moveq #18,d3 // 16 byts + 2 byts crc + move.b #0xff,d4 +sd_rcv_rb_w: + bsr sd_get_status + cmp.b #0xfe,d5 // daten bereit? + bne sd_rcv_rb_w // nein-> +sd_rcv_rd_rb: + bsr sd_com + move.b d5,(a2)+ + subq.l #1,d3 + bne sd_rcv_rd_rb + } +} + +void sd_card_idle(void) +{ + + asm + { +// sd idle +// speed =400kHz + move.l #0x082000ff,d4 // tx vorbesetzen + lea MCF_DSPI_DMCR,a0 + move.l #0x38558897,d0 + move.l d0,dspi_dtar0(a0) // 400kHz + + move.b #0xff,d4 + bsr sd_com // clocks + move.b #0x40,d4 // cmd idle + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #0x95,d4 + bsr sd_com + } +} + +int sd_card_init(void) +{ + + long az_sectors; + + asm + { + lea MCF_PSC0_PSCTB_8BIT,a1 + move.l #'SD-C',(a1) + move.l #'ard ',(a1) + + move.l buffer,a5 // basis addresse (diesen bereich brauchen wir nicht mehr!) + move.l #0x1fffffff,d0 // normal dspi + move.l d0,MCF_PAD_PAR_DSPI + lea MCF_DSPI_DMCR,a0 + move.l #0x802d3c00,(a0) // 8 bit cs off clear fifo + move.l #0x38558897,d0 + move.l d0,dspi_dtar0(a0) // 400kHz + move.l #0x082000ff,d4 // tx vorbesetzen + move.l d4,dspi_dtfr // und setzen + mov3q.l #-1,dspi_dsr(a0) // status register löschen + + move.l #0xc00d3c00,(a0) // clock on cs ist on + bsr wait_10ms + move.l #0x802d3c00,(a0) // clock off cs off + bsr sd_com + bsr sd_com + bsr sd_com + bsr sd_com + bsr sd_com + bsr sd_com + bsr sd_com + bsr sd_com + bsr sd_com + bsr sd_com + move.l #0x800d3c00,(a0) // cs on + bsr sd_com + bsr sd_com + move.l #0x802d3c00,(a0) // cs off + bsr sd_com + bsr sd_com + bsr wait_10ms + +// sd idle + move.l #100,d6 // 100 versuche + move.l #10,d3 // 10 versuche +sd_idle: + bsr sd_card_idle + + move.l #10,d7 + move.b #0xff,d4 +sd_idle_leeren: + bsr sd_com + cmp.b #0x01,d5 + beq idle_end + subq.l #1,d7 + bne sd_idle_leeren + subq.l #1,d6 + beq sd_not + bra sd_idle +idle_end: + +// cdm 8 +read_ic: + move.b #0xff,d4 // clocks + bsr sd_com + move.b #0x48,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #0x01,d4 + bsr sd_com + move.b #0xaa,d4 + bsr sd_com + move.b #0x87,d4 + bsr sd_com + + bsr sd_get_status + cmp.b #5,d5 + beq sd_v1 + cmp.b #1,d5 + bne read_ic + + bsr sd_com // 4byts zum wegwerfen + bsr sd_com + bsr sd_com + bsr sd_com + cmp.b #0xaa,d5 // pattern zurückgekommen? + bne sd_testd3 // nein -> + + move.l #'SDHC',(a1) + move.b #' ',(a1) +sd_v1: + +// cdm 58 +read_ocr: + move.b #0xff,d4 // clocks + bsr sd_com + move.b #0x7a,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #0x00,d4 + bsr sd_com + move.b #0x00,d4 + bsr sd_com + move.b #0x01,d4 + bsr sd_com + + bsr sd_get_status + move.l #'Ver1',d6 + cmp.b #5,d5 + beq read_ocr + cmp.b #1,d5 + bne read_ocr + + bsr sd_com // 4 byts zum wegwerfen + bsr sd_com + bsr sd_com + bsr sd_com + +// acdm 41 + move.l #20000,d6 // 20000 versuche ready can bis 1 sec gehen +wait_of_aktiv: + move.b #0xff,d4 // clocks + bsr sd_com + move.b #0x77,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #0x95,d4 + bsr sd_com + + bsr sd_get_status + cmp.b #0x05,d5 + beq wait_of_aktiv + +wait_of_aktiv2: + move.b #0xff,d4 // clocks + bsr sd_com + move.b #0x69,d4 + bsr sd_com + move.b #0x40,d4 + bsr sd_com + move.b #0x00,d4 + bsr sd_com + move.b #0x00,d4 + bsr sd_com + move.b #0x00,d4 + bsr sd_com + move.b #0x95,d4 + bsr sd_com + + bsr sd_get_status + tst.b d5 + beq sd_init_ok + cmp.b #0x05,d5 + beq wait_of_aktiv2 + subq.l #1,d6 + bne wait_of_aktiv +sd_testd3: + subq.l #1,d3 + bne sd_idle + bra sd_error + +sd_init_ok: +// fullspeed + move.l #0x38551120,d0 // 22Mbit/sec + move.l d0,dspi_dtar0(a0) // setzen + +// cdm 10 +read_cid: + move.b #0xff,d4 // clocks + bsr sd_com + move.b #0x4a,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #0x00,d4 + bsr sd_com + move.b #0x00,d4 + bsr sd_com + move.b #0x95,d4 + bsr sd_com + + move.l a5,a2 // adresse setzen + bsr sd_rcv_info + +// name ausgeben + lea 1(a5),a2 + moveq #7,d7 +sd_nam_loop: + move.b (a2)+,(a1) + subq.l #1,d7 + bne sd_nam_loop + move.b #' ',(a1) + +// cdm 9 +read_csd: + move.b #0xff,d4 // clocks + bsr sd_com + move.b #0x49,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #0x00,d4 + bsr sd_com + move.b #0x00,d4 + bsr sd_com + move.b #0x01,d4 + bsr sd_com + + move.l a5,a2 // adresse setzen + bsr sd_rcv_info + + mvz.b (a5),d0 + lsr.l #6,d0 + + bne sd_csd2 // format v2 + move.l 6(a5),d1 + moveq #14,d0 // bit 73..62 c_size + lsr.l d0,d1 // bits extrahieren + and.l #0xfff,d1 // 12 bits + addq.l #1,d1 + mvz.w 9(a5),d0 + lsr.l #7,d0 // bits 49..47 + and.l #0x7,d0 // 3 bits + moveq.l #8,d2 // x256 (dif v1 v2) + sub.l d0,d2 + lsr.l d2,d1 + bra sd_print_size +sd_csd2: + mvz.w 8(a5),d1 + addq.l #1,d1 +sd_print_size: + swap d1 + move.l d1,d3 + lsr.l #6,d3 //x65636 /64 -> anzahl sectors + move.l d3,az_sectors + lsl.l #1,d1 + bcc sd_16G + move.l #'32GB',(a1) + bra sd_ok +sd_16G: + lsl.l #1,d1 + bcc sd_8G + move.l #'16GB',(a1) + bra sd_ok +sd_8G: + lsl.l #1,d1 + bcc sd_4G + move.l #' 8GB',(a1) + bra sd_ok +sd_4G: + lsl.l #1,d1 + bcc sd_2G + move.l #' 4GB',(a1) + bra sd_ok +sd_2G: + lsl.l #1,d1 + bcc sd_1G + move.l #' 2GB',(a1) + bra sd_ok +sd_1G: + lsl.l #1,d1 + bcc sd_512M + move.l #' 1GB',(a1) + bra sd_ok +sd_512M: + lsl.l #1,d1 + bcc sd_256M + move.b #'5',(a1) + move.l #'12MB',(a1) + bra sd_ok +sd_256M: + lsl.l #1,d1 + bcc sd_128M + move.b #'2',(a1) + move.l #'56MB',(a1) + bra sd_ok +sd_128M: + lsl.l #1,d1 + bcc sd_64M + move.b #'1',(a1) + move.l #'28MB',(a1) + bra sd_ok +sd_64M: + lsl.l #1,d1 + bcc sd_32M + move.l #'64MB',(a1) + bra sd_ok +sd_32M: + lsl.l #1,d1 + bcc sd_16M + move.l #'32MB',(a1) + bra sd_ok +sd_16M: + lsl.l #1,d1 + bcc sd_8M + move.l #'16MB',(a1) + bra sd_ok +sd_8M: + move.l #'<9MB',(a1) +sd_ok: + move.l #' OK!',(a1) + move.l #0x0a0d,(a1) + bra sd_c_ok +// subs ende ------------------------------- +sd_error: + move.l #'Erro',(a1) + move.l #'r!',(a1) + move.l #0x0a0d,(a1) + bra sd_c_error +sd_not: + move.l #'non!',(a1) + move.l #0x0a0d,(a1) + bra sd_c_not +buffer: dc.l 0,0,0,0,0,0,0,0 + } +sd_c_ok: + return az_sectors; +sd_c_not: + return -2; +sd_c_error: + return -1; +} + +void sd_rcv_sector(void) // 1 sector daten holen ---------------------------- +{ + asm + { + bsr sd_get_status + cmp.b #0xfe,d5 // daten bereit? + bne sd_rs_end // nein-> error + move.l #512,d3 // sonst 512 byts abholen +sd_rs_loop: + bsr sd_com + move.b d5,(a2)+ + subq.l #1,d3 + bne sd_rs_loop +// crc holen + bsr sd_com + bsr sd_com + clr.l d5 // alles ok +sd_rs_end: + } +} + +int sd_card_sector_read(long sec_nr,long buf_adr) +{ + int status ; + asm + { + lea MCF_DSPI_DMCR,a0 + move.l #0x082000ff,d4 // tx vorbesetzen + + move.l sec_nr,d0 + move.l buf_adr,a2 + + lsl.l #8,d0 + add.l d0,d0 // x 512 ! + move.l d0,d1 // byts kehren + swap d1 + move.l d1,d2 + lsr.l #8,d1 + + move.b #0xff,d4 // clocks + bsr sd_com + + move.b #0x51,d4 + bsr sd_com + move.b d1,d4 + bsr sd_com + move.b d2,d4 + bsr sd_com + move.l d0,d2 + lsr.l #8,d2 + move.b d2,d4 + bsr sd_com + move.b d0,d4 + bsr sd_com + move.b #0x01,d4 + bsr sd_com + + clr.l d5 // alles auf no error + clr.l status + + bsr sd_get_status // status holen + tst.b d5 + bne sd_csr_end // wenn nicht ok -> weg +// sector holen + bsr sd_rcv_sector +sd_csr_end: + tst.b d5 + beq sd_csr_ok + neg.l d5 // wenn nicht ok status auf negativ + move.l d5,status +sd_csr_ok: + } + return status; +} + +void sd_send_sector(void) // 1 sector daten senden ---------------------------- +{ + asm + { + move.l #512,d3 + move.b #0xfe,d4 // start token + bsr sd_com // senden +sd_send_wr_wb: + move.b (a2)+,d4 // data + bsr sd_com // senden + subq.l #1,d3 + bne sd_send_wr_wb +// send crc + move.b #1,d4 + bsr sd_com // crc 1.byt + move.b #1,d4 + bsr sd_com // crc 2.byt +sd_send_wr_ww: + bsr sd_get_status + and.l #0x1f,d5 + clr.l d6 //status auf OK + cmp.b #5,d5 //data accepted? + beq sd_send_end //ja -> + move.l d5,d6 //sonst status sichern +sd_send_end: + bsr sd_com + tst.b d5 // warte auf geschrieben + beq sd_send_end + move.l d6,d5 // status zurück + } +} + +int sd_card_sector_write(long sec_nr,long buf_adr) +{ + int status; + asm + { + lea MCF_DSPI_DMCR,a0 + move.l #0x082000ff,d4 // tx vorbesetzen + + move.l sec_nr,d0 + move.l buf_adr,a2 + + lsl.l #8,d0 + add.l d0,d0 // x 512 ! + move.l d0,d1 // byts kehren + swap d1 + move.l d1,d2 + lsr.l #8,d1 + + move.b #0xff,d4 // clocks + bsr sd_com + move.b #0x58,d4 + bsr sd_com + move.b d1,d4 + bsr sd_com + move.b d2,d4 + bsr sd_com + move.l d0,d2 + lsr.l #8,d2 + move.b d2,d4 + bsr sd_com + move.b d0,d4 + bsr sd_com + move.b #0x01,d4 + bsr sd_com + + clr.l d5 // alles auf no error + clr.l status + bsr sd_get_status // status holen + tst.b d5 + bne sd_csw_end // wenn nicht ok -> weg +// sector schreiben + bsr sd_send_sector +sd_csw_end: + tst.b d5 + beq sd_csw_ok + neg.l d5 // wenn nicht ok status auf negativ + move.l d5,status +sd_csw_ok: + } + return status; +} diff --git a/BaS_codewarrior/firebeeV1/sources/sd_card.s b/BaS_codewarrior/firebeeV1/sources/sd_card.s new file mode 100644 index 0000000..c51147c --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/sd_card.s @@ -0,0 +1,406 @@ +/********************************************************************/ +// sd card +/********************************************************************/ +#define dspi_dtar0 0x0c +#define dspi_dsr 0x2c +#define dspi_dtfr 0x34 +#define dspi_drfr 0x38 + +.text +sd_test: + lea MCF_PSC0_PSCTB_8BIT,a6 + move.l #'SD-C',(a6) + move.l #'ard ',(a6) + + move.l #__Bas_base,a5 // basis addresse (diesen bereich brauchen wir nicht mehr!) + move.l #0x1fffffff,d0 // normal dspi + move.l d0,MCF_PAD_PAR_DSPI + lea MCF_DSPI_DMCR,a0 + move.l #0x800d3c00,(a0) // 8 bit cs5 on + move.l #0x38558897,d0 + move.l d0,dspi_dtar0(a0) // 400kHz + move.l #0x082000ff,d4 // tx vorbesetzen + mov3q.l #-1,dspi_dsr(a0) + + bsr warte_1ms + move.l #0xc00d3c00,(a0) // 8 bit 4MHz clocken cs off + bsr warte_10ms + move.l #0x800d3c00,(a0) // 8 bit 4MHz normal cs on + bsr sd_com + bsr sd_com + bsr sd_com + bsr sd_com + bsr sd_com + bsr sd_com + bsr sd_com + bsr sd_com + bsr sd_com + bsr sd_com + move.l #0x802d3c00,(a0) // 8 bit 4MHz normal cs off + clr.b d4 + bsr sd_com + bsr sd_com + move.l #0x800d3c00,(a0) // 8 bit 4MHz normal cs on + move.b #0xff,d4 + bsr sd_com + bsr sd_com + move.l #0x802d3c00,(a0) // 8 bit 4MHz normal cs off + bsr warte_10ms + +// sd idle + move.l #100,d6 // 100 versuche + move.l #10,d3 // 10 versuche +sd_idle: + move.b #0xff,d4 // receive byt + bsr sd_com + move.b #0x40,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #0x95,d4 + bsr sd_com + + move.b #0xff,d4 // receive byt + bsr sd_com + cmp.b #0x01,d5 + beq idle_end + bsr sd_com + cmp.b #0x01,d5 + beq idle_end + bsr sd_com + cmp.b #0x01,d5 + beq idle_end + bsr sd_com + cmp.b #0x01,d5 + beq idle_end + bsr sd_com + cmp.b #0x01,d5 + beq idle_end + bsr sd_com + cmp.b #0x01,d5 + beq idle_end + subq.l #1,d6 + beq sd_not + bra sd_idle +idle_end: +// cdm 8 +read_ic: + move.b #0xff,d4 // receive byt + bsr sd_com + move.b #0x48,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #0x01,d4 + bsr sd_com + move.b #0xaa,d4 + bsr sd_com + move.b #0x87,d4 + bsr sd_com + + bsr sd_get_status + cmp.b #5,d5 + beq sd_v1 + cmp.b #1,d5 + bne read_ic + + move.b #0xff,d4 + bsr sd_com + move.b d5,d0 + bsr sd_com + move.b d5,d1 + bsr sd_com + move.b d5,d2 + bsr sd_com + cmp.b #0xaa,d5 + bne sd_testd3 + + move.l #'SDHC',(a6) + move.b #' ',(a6) +sd_v1: + +// cdm 58 +read_ocr: + move.b #0xff,d4 // receive byt + bsr sd_com + move.b #0x7a,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #0x00,d4 + bsr sd_com + move.b #0x00,d4 + bsr sd_com + move.b #0x01,d4 + bsr sd_com + + bsr sd_get_status + move.l #'Ver1',d6 + cmp.b #5,d5 + beq read_ocr + cmp.b #1,d5 + bne read_ocr + + move.b #0xff,d4 + bsr sd_com + move.b d5,d0 + bsr sd_com + move.b d5,d1 + bsr sd_com + move.b d5,d2 + bsr sd_com + +// acdm 41 + move.l #20000,d6 // 20000 versuche ready can bis 1 sec gehen +wait_of_aktiv: + move.b #0xff,d4 // receive byt + bsr sd_com + move.b #0x77,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #0x95,d4 + bsr sd_com + + bsr sd_get_status + cmp.b #0x05,d5 + beq wait_of_aktiv + +wait_of_aktiv2: + move.b #0xff,d4 // receive byt + bsr sd_com + move.b #0x69,d4 + bsr sd_com + move.b #0x40,d4 + bsr sd_com + move.b #0x00,d4 + bsr sd_com + move.b #0x00,d4 + bsr sd_com + move.b #0x00,d4 + bsr sd_com + move.b #0x95,d4 + bsr sd_com + + bsr sd_get_status + tst.b d5 + beq sd_init_ok + cmp.b #0x05,d5 + beq wait_of_aktiv2 + subq.l #1,d6 + bne wait_of_aktiv +sd_testd3: + subq.l #1,d3 + bne sd_idle + bra sd_error + +sd_init_ok: +// cdm 10 +read_cid: + move.b #0xff,d4 // receive byt + bsr sd_com + move.b #0x4a,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #0x00,d4 + bsr sd_com + move.b #0x00,d4 + bsr sd_com + move.b #0x95,d4 + bsr sd_com + + move.l a5,a4 // adresse setzen + bsr sd_rcv_info + +// name ausgeben + lea 1(a5),a4 + moveq #7,d7 +sd_nam_loop: + move.b (a4)+,(a6) + subq.l #1,d7 + bne sd_nam_loop + move.b #' ',(a6) + +// cdm 9 +read_csd: + move.b #0xff,d4 // receive byt + bsr sd_com + move.b #0x49,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #00,d4 + bsr sd_com + move.b #0x00,d4 + bsr sd_com + move.b #0x00,d4 + bsr sd_com + move.b #0x01,d4 + bsr sd_com + + move.l a5,a4 // adresse setzen + bsr sd_rcv_info + + mvz.b (a5),d0 + lsr.l #6,d0 + + bne sd_csd2 // format v2 + move.l 6(a5),d1 + moveq #14,d0 // bit 73..62 c_size + lsr.l d0,d1 // bits extrahieren + and.l #0xfff,d1 // 12 bits + addq.l #1,d1 + mvz.w 9(a5),d0 + lsr.l #7,d0 // bits 49..47 + and.l #0x7,d0 // 3 bits + moveq.l #8,d2 // x256 (dif v1 v2) + sub.l d0,d2 + lsr.l d2,d1 + bra sd_print_size +sd_csd2: + mvz.w 8(a5),d1 + addq.l #1,d1 +sd_print_size: + swap d1 + lsl.l #1,d1 + bcc sd_16G + move.l #'32GB',(a6) + bra sd_ok +sd_16G: + lsl.l #1,d1 + bcc sd_8G + move.l #'16GB',(a6) + bra sd_ok +sd_8G: + lsl.l #1,d1 + bcc sd_4G + move.l #' 8GB',(a6) + bra sd_ok +sd_4G: + lsl.l #1,d1 + bcc sd_2G + move.l #' 4GB',(a6) + bra sd_ok +sd_2G: + lsl.l #1,d1 + bcc sd_1G + move.l #' 2GB',(a6) + bra sd_ok +sd_1G: + lsl.l #1,d1 + bcc sd_512M + move.l #' 1GB',(a6) + bra sd_ok +sd_512M: + lsl.l #1,d1 + bcc sd_256M + move.b #'5',(a6) + move.l #'12MB',(a6) + bra sd_ok +sd_256M: + lsl.l #1,d1 + bcc sd_128M + move.b #'2',(a6) + move.l #'56MB',(a6) + bra sd_ok +sd_128M: + lsl.l #1,d1 + bcc sd_64M + move.b #'1',(a6) + move.l #'28MB',(a6) + bra sd_ok +sd_64M: + lsl.l #1,d1 + bcc sd_32M + move.l #'64MB',(a6) + bra sd_ok +sd_32M: + lsl.l #1,d1 + bcc sd_16M + move.l #'32MB',(a6) + bra sd_ok +sd_16M: + lsl.l #1,d1 + bcc sd_8M + move.l #'16MB',(a6) + bra sd_ok +sd_8M: + move.l #'<9MB',(a6) +sd_ok: + move.l #' OK!',(a6) + move.l #0x0a0d,(a6) + halt + halt + rts +// subs ende ------------------------------- +sd_V1: + move.l #'non!',(a6) + move.l #0x0a0d,(a6) + halt + halt + rts +sd_error: + move.l #'Erro',(a6) + move.l #'r!',(a6) + move.l #0x0a0d,(a6) + halt + halt + rts +sd_not: + move.l #'non!',(a6) + move.l #0x0a0d,(a6) + halt + halt + rts + +// status holen ------------------------------- +sd_get_status: + move.b #0xff,d4 + bsr sd_com + cmp.b #0xff,d5 + beq sd_get_status + rts +// byt senden und holen --------------------- +sd_com: + move.l d4,dspi_dtfr(a0) +wait_auf_complett: + btst.b #7,dspi_dsr(a0) + beq wait_auf_complett + move.l dspi_drfr(a0),d5 + mov3q.l #-1,dspi_dsr(a0) // clr status register + rts + +// daten holen ---------------------------- +sd_rcv_info: + moveq #18,d3 // 16 byts + 2 byts crc + move.b #0xff,d4 +sd_rcv_rb_w: + bsr sd_get_status + cmp.b #0xfe,d5 // daten bereit? + bne sd_rcv_rb_w // nein-> +sd_rcv_rd_rb: + bsr sd_com + move.b d5,(a4)+ + subq.l #1,d3 + bne sd_rcv_rd_rb + rts +/******************************************/ diff --git a/BaS_codewarrior/firebeeV1/sources/sd_ide.c b/BaS_codewarrior/firebeeV1/sources/sd_ide.c new file mode 100644 index 0000000..092f95e --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/sd_ide.c @@ -0,0 +1,543 @@ + + +#include "MCF5475.h" +#include "startcf.h" + +extern unsigned long far __SP_AFTER_RESET[]; +extern unsigned long far __Bas_base[]; + + /* imported routines */ +//extern int warten_20ms(); +//extern int warten_200us(); +//extern int warten_10us(); + +/********************************************************************/ +void asm sd_test(void) +{ + clr.w MCF_PAD_PAR_DSPI + lea MCF_GPIO_PPDSDR_DSPI,a2 // data in + lea MCF_GPIO_PODR_DSPI,a1 // data out + move.b #0x00,(a1) // alle auf 0 + lea MCF_GPIO_PDDR_DSPI,a0 + move.b #0x7d,(a0) // din = input rest output + + bsr warten_20ms + + move.b #0x7f,(a1) // alle auf 1 + + bsr sd_16clk + bsr sd_16clk + bsr sd_16clk + bsr sd_16clk + bsr sd_16clk + bsr sd_16clk + bsr sd_16clk + bsr sd_16clk +// sd idle +sd_idle: + bsr sd_16clk + moveq #0x40,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x95,d4 + bsr sd_com + + bsr sd_receive + + cmp.b #0x05,d5 + beq sd_test + cmp.b #0x01,d5 + beq wait_of_aktiv + cmp.b #0x04,d5 + beq sd_init_ok + cmp.b #0x00,d5 + beq sd_init_ok + bra sd_idle + +// acdm 41 +wait_of_aktiv: + bsr sd_16clk + + moveq #0x77,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x01,d4 + bsr sd_com + + bsr sd_receive + + bsr sd_16clk + + move.l #0xff,d6 + moveq #0x69,d4 + bsr sd_com + and d5,d6 + moveq #00,d4 + bsr sd_com + and d5,d6 + moveq #00,d4 + bsr sd_com + and d5,d6 + moveq #0x02,d4 + bsr sd_com + and d5,d6 + moveq #00,d4 + bsr sd_com + and d5,d6 + moveq #0x01,d4 + bsr sd_com + and d5,d6 + + bsr sd_receive + + cmp.b #0x00,d5 + beq sd_init_ok + cmp.b #0x05,d5 + beq sd_test + bra wait_of_aktiv + +sd_init_ok: + +// blockgrösse 512byt +sd_bg: + bsr sd_16clk + moveq #0x50,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #02,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x01,d4 + bsr sd_com + + bsr sd_receive + + cmp.b #0x00,d5 + bne sd_bg + +// read block +sd_rb: + bsr sd_16clk + moveq #0x51,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x08,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x01,d4 + bsr sd_com + + bsr sd_receive + + cmp.b #0x00,d5 + bne sd_rb + + lea 0xc00000,a4 + move.l #513,d7 +rd_rb: + bsr sd_receive + move.b d5,(a4)+ + subq.l #1,d7 + bne rd_rb + +// write block +sd_wb: + bsr sd_16clk + moveq #0x58,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x08,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x01,d4 + bsr sd_com + + bsr sd_receive + + cmp.b #0x00,d5 + bne sd_wb + + lea 0xc00000,a4 + move.l #513,d7 + moveq.l #0x66,d4 +wr_wb: + bsr sd_com +// subq.l #1,d4 + moveq #0x66,d4 + subq.l #1,d7 + bne wr_wb + + bsr sd_receive + +wr_wb_el: + moveq #0xff,d4 + bsr sd_com + cmp.b #0xff,d5 + bne wr_wb_el + + +// read block 2 +sd_rb2: + bsr sd_16clk + moveq #0x51,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x08,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x01,d4 + bsr sd_com + + bsr sd_receive + + cmp.b #0x00,d5 + bne sd_rb2 + + lea 0xc00400,a4 + move.l #513,d7 +rd_rb2: + bsr sd_receive + move.b d5,(a4)+ + subq.l #1,d7 + bne rd_rb2 + + + nop + nop + + rts + +sd_receive: + moveq #0xff,d4 + bsr sd_com + cmp.b #0xff,d5 + beq sd_receive + rts + +sd_com: + bclr.b #6,(a1) +sd_comb: + bsr warten_10us + moveq #7,d2 + clr.l d5 +sd_com_loop: + btst d2,d4 + beq sd_com2 + bset.b #0,(a1) + bra sd_com2_1 +sd_com2: + bclr.b #0,(a1) +sd_com2_1: + bsr sd_clk + and.l #0x02,d3 + beq sd_com3 + bset.b d2,d5 +sd_com3: + subq.l #1,d2 + bge sd_com_loop + bsr warten_10us + bset.b #6,(a1) + bset.b #0,(a1) + bsr warten_200us + rts +sd_clk: + tst.b 0xfffff700 + tst.b 0xfffff700 + bset.b #2,(a1) + tst.b 0xfffff700 + tst.b 0xfffff700 + move.b (a2),d3 + tst.b 0xfffff700 + bclr.b #2,(a1) + rts + +sd_15clk: + move #15,d0 + bra sd_16clk +sd_16clk: + moveq #16,d0 +sd_16clk1: + bsr sd_clk + subq.l #1,d0 + bne sd_16clk1 + bsr warten_10us + rts +// warteschleife ca. 20ms +warten_20ms: + move.l a0,-(sp) + move.l d6,-(sp) + move.l d1,-(sp) + move.l d0,-(sp) + lea MCF_SLT0_SCNT,a0 + move.l (a0),d0 + move.l #700000,d6 + bra warten_loop +// warteschleife ca. 200us +warten_200us: + move.l a0,-(sp) + move.l d6,-(sp) + move.l d1,-(sp) + move.l d0,-(sp) + lea MCF_SLT0_SCNT,a0 + move.l (a0),d0 + move.l #7000,d6 + bra warten_loop +// warteschleife ca. 10us +warten_10us: + move.l a0,-(sp) + move.l d6,-(sp) + move.l d1,-(sp) + move.l d0,-(sp) + lea MCF_SLT0_SCNT,a0 + move.l (a0),d0 + move.l #333,d6 +warten_loop: + move.l (a0),d1 + sub.l d0,d1 + add.l d6,d1 + bpl warten_loop + move.l (sp)+,d0 + move.l (sp)+,d1 + move.l (sp)+,d6 + move.l (sp)+,a0 + rts; +} + + +/**************************************************/ +void asm ide_test(void) +{ + lea MCF_PAD_PAR_DSPI,a0 + move.w #0x1fff,(a0) + lea MCF_DSPI_DCTAR0,a0 + move.l #0x38a644e4,(a0) + lea MCF_DSPI_DMCR,a0 + move.l #0x802d3c00,(a0) + clr.l MCF_DSPI_DTCR + bsr warten_20ms + lea MCF_DSPI_DTFR,a0 + lea MCF_DSPI_DRFR,a1 + + moveq #10,d0 +sd_reset: + move.l #0x000100ff,(a0) + bsr warten_20ms + and.l (a1),d0 + subq.l #1,d0 + bne sd_reset + + moveq #10,d1 +sd_loop1: + bsr warten_20ms + moveq #-1,d0 +// cmd 0 set to idle + move.l #0x00200040,(a0) + bsr warten_20ms + and.l (a1),d0 + move.l #0x00200000,(a0) + bsr warten_20ms + and.l (a1),d0 + move.l #0x00200000,(a0) + bsr warten_20ms + and.l (a1),d0 + move.l #0x00200000,(a0) + bsr warten_20ms + and.l (a1),d0 + move.l #0x00200000,(a0) + bsr warten_20ms + and.l (a1),d0 + move.l #0x00200095,(a0) + bsr warten_20ms + and.l (a1),d0 + cmp.w #0x0001,d0 + beq sd_loop2 + subq.l #1,d1 + bne sd_loop1 + moveq #10,d1 + bra sd_test +sd_loop2: + moveq #-1,d0 +// cmd 41 + move.l #0x00200069,(a0) + bsr warten_20ms + and.l (a1),d0 + move.l #0x00200000,(a0) + bsr warten_20ms + and.l (a1),d0 + move.l #0x00200000,(a0) + bsr warten_20ms + and.l (a1),d0 + move.l #0x00200000,(a0) + bsr warten_20ms + and.l (a1),d0 + move.l #0x00200000,(a0) + bsr warten_20ms + and.l (a1),d0 + move.l #0x00200001,(a0) + bsr warten_20ms + and.l (a1),d0 + tst.w d0 + bne sd_loop2 + + nop + nop +/********************************************************************/ +#define cmd_reg (0x1d) +#define status_reg (0x1d) +#define seccnt (0x09) + +ide_test: + lea 0xfff00040,a0 + lea 0xc00000,a1 + move.b #0xec,cmd_reg(a0) //identify devcie cmd + bsr wait_int + bsr ds_rx +// read sector normal + move.b #1,seccnt(a0) // 1 sector + move.b #0x20,cmd_reg(a0) // read cmd + bsr wait_int + bsr ds_rx + +// write testpattern sector + move.b #1,seccnt(a0) // 1 sector + move.b #0x30,cmd_reg(a0) // write cmd + bsr drq_wait +// write pattern + move.l #256,d0 +ide_test_loop3: + move.w #0xa55a,(a0) + subq.l #1,d0 + bne ide_test_loop3 + bsr wait_int +// read testpattern sector + move.b #1,seccnt(a0) // 1 sector + move.b #0x20,cmd_reg(a0) // read + bsr wait_int + bsr ds_rx +// sector restauriern + move.b #1,seccnt(a0) // 1 sector + move.b #0x30,cmd_reg(a0) // write + lea -0x400(a1),a1 // vorletzer + bsr drq_wait + bsr ds_tx + bsr wait_int +// fertig und zurück + nop + rts +// wait auf int +wait_int: + move.b 0xfffffa01,d0 + btst.b #5,d0 + bne wait_int + move.b status_reg(a0),d0 + rts +// wait auf drq +drq_wait: + move.b status_reg(a0),d0 + btst #3,d0 + beq drq_wait + rts + +// 1 sector lesen word +ds_rx: + move.l #256,d0 +ds_rx_loop: + move.w (a0),(a1)+ + subq.l #1,d0 + bne ds_rx_loop + rts +// 1 sector lesen long +ds_rxl: + move.l #128,d0 +ds_rxl_loop: + move.l (a0),(a1)+ + subq.l #1,d0 + bne ds_rxl_loop + rts +// 1 sector schreiben word +ds_tx: + move.l #256,d0 +ds_tx_loop: + move.w (a1)+,(a0) + subq.l #1,d0 + bne ds_tx_loop + rts +// 1 sector schreiben word +ds_txl: + move.l #128,d0 +ds_txl_loop: + move.l (a1)+,(a0) + subq.l #1,d0 + bne ds_txl_loop + rts +// warteschleife ca. 20ms +warten_20ms: + move.l a0,-(sp) + move.l d6,-(sp) + move.l d1,-(sp) + move.l d0,-(sp) + lea MCF_SLT0_SCNT,a0 + move.l (a0),d0 + move.l #700000,d6 + bra warten_loop +// warteschleife ca. 200us +warten_200us: + move.l a0,-(sp) + move.l d6,-(sp) + move.l d1,-(sp) + move.l d0,-(sp) + lea MCF_SLT0_SCNT,a0 + move.l (a0),d0 + move.l #7000,d6 + bra warten_loop +// warteschleife ca. 10us +warten_10us: + move.l a0,-(sp) + move.l d6,-(sp) + move.l d1,-(sp) + move.l d0,-(sp) + lea MCF_SLT0_SCNT,a0 + move.l (a0),d0 + move.l #333,d6 +warten_loop: + move.l (a0),d1 + sub.l d0,d1 + add.l d6,d1 + bpl warten_loop + move.l (sp)+,d0 + move.l (sp)+,d1 + move.l (sp)+,d6 + move.l (sp)+,a0 + rts; +} +/********************************************************************/ diff --git a/BaS_codewarrior/firebeeV1/sources/sd_ide.s b/BaS_codewarrior/firebeeV1/sources/sd_ide.s new file mode 100644 index 0000000..4d31184 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/sd_ide.s @@ -0,0 +1,458 @@ + + +//.include "startcf.h" + +//.extern ___MBAR +//#define MCF_SLT0_SCNT ___MBAR+0x908 + +//.global ide_test + +.text +/* +sd_test: + clr.w MCF_PAD_PAR_DSPI + lea MCF_GPIO_PPDSDR_DSPI,a2 // data in + lea MCF_GPIO_PODR_DSPI,a1 // data out + move.b #0x00,(a1) // alle auf 0 + lea MCF_GPIO_PDDR_DSPI,a0 + move.b #0x7d,(a0) // din = input rest output + + bsr warten_20ms + + move.b #0x7f,(a1) // alle auf 1 + + bsr sd_16clk + bsr sd_16clk + bsr sd_16clk + bsr sd_16clk + bsr sd_16clk + bsr sd_16clk + bsr sd_16clk + bsr sd_16clk +// sd idle +sd_idle: + bsr sd_16clk + moveq #0x40,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x95,d4 + bsr sd_com + + bsr sd_receive + + cmp.b #0x05,d5 + beq sd_test + cmp.b #0x01,d5 + beq wait_of_aktiv + cmp.b #0x04,d5 + beq sd_init_ok + cmp.b #0x00,d5 + beq sd_init_ok + bra sd_idle + +// acdm 41 +wait_of_aktiv: + bsr sd_16clk + + moveq #0x77,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x01,d4 + bsr sd_com + + bsr sd_receive + + bsr sd_16clk + + move.l #0xff,d6 + moveq #0x69,d4 + bsr sd_com + and d5,d6 + moveq #00,d4 + bsr sd_com + and d5,d6 + moveq #00,d4 + bsr sd_com + and d5,d6 + moveq #0x02,d4 + bsr sd_com + and d5,d6 + moveq #00,d4 + bsr sd_com + and d5,d6 + moveq #0x01,d4 + bsr sd_com + and d5,d6 + + bsr sd_receive + + cmp.b #0x00,d5 + beq sd_init_ok + cmp.b #0x05,d5 + beq sd_test + bra wait_of_aktiv + +sd_init_ok: + +// blockgrösse 512byt +sd_bg: + bsr sd_16clk + moveq #0x50,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #02,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x01,d4 + bsr sd_com + + bsr sd_receive + + cmp.b #0x00,d5 + bne sd_bg + +// read block +sd_rb: + bsr sd_16clk + moveq #0x51,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x08,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x01,d4 + bsr sd_com + + bsr sd_receive + + cmp.b #0x00,d5 + bne sd_rb + + lea 0xc00000,a4 + move.l #513,d7 +rd_rb: + bsr sd_receive + move.b d5,(a4)+ + subq.l #1,d7 + bne rd_rb + +// write block +sd_wb: + bsr sd_16clk + moveq #0x58,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x08,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x01,d4 + bsr sd_com + + bsr sd_receive + + cmp.b #0x00,d5 + bne sd_wb + + lea 0xc00000,a4 + move.l #513,d7 + moveq.l #0x66,d4 +wr_wb: + bsr sd_com +// subq.l #1,d4 + moveq #0x66,d4 + subq.l #1,d7 + bne wr_wb + + bsr sd_receive + +wr_wb_el: + moveq #0xff,d4 + bsr sd_com + cmp.b #0xff,d5 + bne wr_wb_el + + +// read block 2 +sd_rb2: + bsr sd_16clk + moveq #0x51,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x08,d4 + bsr sd_com + moveq #00,d4 + bsr sd_com + moveq #0x01,d4 + bsr sd_com + + bsr sd_receive + + cmp.b #0x00,d5 + bne sd_rb2 + + lea 0xc00400,a4 + move.l #513,d7 +rd_rb2: + bsr sd_receive + move.b d5,(a4)+ + subq.l #1,d7 + bne rd_rb2 + + + nop + nop + + rts + +sd_receive: + moveq #0xff,d4 + bsr sd_com + cmp.b #0xff,d5 + beq sd_receive + rts + +sd_com: + bclr.b #6,(a1) +sd_comb: + bsr warten_10us + moveq #7,d2 + clr.l d5 +sd_com_loop: + btst d2,d4 + beq sd_com2 + bset.b #0,(a1) + bra sd_com2_1 +sd_com2: + bclr.b #0,(a1) +sd_com2_1: + bsr sd_clk + and.l #0x02,d3 + beq sd_com3 + bset.b d2,d5 +sd_com3: + subq.l #1,d2 + bge sd_com_loop + bsr warten_10us + bset.b #6,(a1) + bset.b #0,(a1) + bsr warten_200us + rts +sd_clk: + tst.b 0xfffff700 + tst.b 0xfffff700 + bset.b #2,(a1) + tst.b 0xfffff700 + tst.b 0xfffff700 + move.b (a2),d3 + tst.b 0xfffff700 + bclr.b #2,(a1) + rts + +sd_15clk: + move #15,d0 + bra sd_16clk +sd_16clk: + moveq #16,d0 +sd_16clk1: + bsr sd_clk + subq.l #1,d0 + bne sd_16clk1 + bsr warten_10us + rts +// warteschleife ca. 20ms +warten_20ms: + move.l a0,-(sp) + move.l d6,-(sp) + move.l d1,-(sp) + move.l d0,-(sp) + lea MCF_SLT0_SCNT,a0 + move.l (a0),d0 + move.l #700000,d6 + bra warten_loop +// warteschleife ca. 200us +warten_200us: + move.l a0,-(sp) + move.l d6,-(sp) + move.l d1,-(sp) + move.l d0,-(sp) + lea MCF_SLT0_SCNT,a0 + move.l (a0),d0 + move.l #7000,d6 + bra warten_loop +// warteschleife ca. 10us +warten_10us: + move.l a0,-(sp) + move.l d6,-(sp) + move.l d1,-(sp) + move.l d0,-(sp) + lea MCF_SLT0_SCNT,a0 + move.l (a0),d0 + move.l #333,d6 +warten_loop: + move.l (a0),d1 + sub.l d0,d1 + add.l d6,d1 + bpl warten_loop + move.l (sp)+,d0 + move.l (sp)+,d1 + move.l (sp)+,d6 + move.l (sp)+,a0 + rts; +/********************************************************************/ +#define cmd_reg (0x1d) +#define status_reg (0x1d) +#define seccnt (0x09) + +ide_test: + lea 0xfff00040,a0 + lea 0xc00000,a1 + move.b #0xec,cmd_reg(a0) //identify devcie cmd + bsr wait_int + bsr ds_rx +// read sector normal + move.b #1,seccnt(a0) // 1 sector + move.b #0x20,cmd_reg(a0) // read cmd + bsr wait_int + bsr ds_rx + +// write testpattern sector + move.b #1,seccnt(a0) // 1 sector + move.b #0x30,cmd_reg(a0) // write cmd + bsr drq_wait +// write pattern + move.l #256,d0 +ide_test_loop3: + move.w #0xa55a,(a0) + subq.l #1,d0 + bne ide_test_loop3 + bsr wait_int +// read testpattern sector + move.b #1,seccnt(a0) // 1 sector + move.b #0x20,cmd_reg(a0) // read + bsr wait_int + bsr ds_rx +// sector restauriern + move.b #1,seccnt(a0) // 1 sector + move.b #0x30,cmd_reg(a0) // write + lea -0x400(a1),a1 // vorletzer + bsr drq_wait + bsr ds_tx + bsr wait_int +// fertig und zurück + nop + rts +// wait auf int +wait_int: + move.b 0xfffffa01,d0 + btst #5,d0 + bne wait_int + move.b status_reg(a0),d0 + rts +// wait auf drq +drq_wait: + move.b status_reg(a0),d0 + btst #3,d0 + beq drq_wait + rts + +// 1 sector lesen word +ds_rx: + move.l #256,d0 +ds_rx_loop: + move.w (a0),(a1)+ + subq.l #1,d0 + bne ds_rx_loop + rts +// 1 sector lesen long +ds_rxl: + move.l #128,d0 +ds_rxl_loop: + move.l (a0),(a1)+ + subq.l #1,d0 + bne ds_rxl_loop + rts +// 1 sector schreiben word +ds_tx: + move.l #256,d0 +ds_tx_loop: + move.w (a1)+,(a0) + subq.l #1,d0 + bne ds_tx_loop + rts +// 1 sector schreiben word +ds_txl: + move.l #128,d0 +ds_txl_loop: + move.l (a1)+,(a0) + subq.l #1,d0 + bne ds_txl_loop + rts +// warteschleife ca. 20ms +warten_20ms: + move.l a0,-(sp) + move.l d6,-(sp) + move.l d1,-(sp) + move.l d0,-(sp) + lea MCF_SLT0_SCNT,a0 + move.l (a0),d0 + move.l #700000,d6 + bra warten_loop +// warteschleife ca. 200us +warten_200us: + move.l a0,-(sp) + move.l d6,-(sp) + move.l d1,-(sp) + move.l d0,-(sp) + lea MCF_SLT0_SCNT,a0 + move.l (a0),d0 + move.l #7000,d6 + bra warten_loop +// warteschleife ca. 10us +warten_10us: + move.l a0,-(sp) + move.l d6,-(sp) + move.l d1,-(sp) + move.l d0,-(sp) + lea MCF_SLT0_SCNT,a0 + move.l (a0),d0 + move.l #333,d6 +warten_loop: + move.l (a0),d1 + sub.l d0,d1 + add.l d6,d1 + bpl warten_loop + move.l (sp)+,d0 + move.l (sp)+,d1 + move.l (sp)+,d6 + move.l (sp)+,a0 + rts; +/********************************************************************/ diff --git a/BaS_codewarrior/firebeeV1/sources/startcf.c b/BaS_codewarrior/firebeeV1/sources/startcf.c new file mode 100644 index 0000000..7249338 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/startcf.c @@ -0,0 +1,83 @@ +/* + * CF_Startup.c - Default init/startup/termination routines for + * Embedded Metrowerks C++ + * + * Copyright © 1993-1998 Metrowerks, Inc. All Rights Reserved. + * Copyright © 2005 Freescale semiConductor Inc. All Rights Reserved. + * + * + * THEORY OF OPERATION + * + * This version of thestartup code is intended for linker relocated + * executables. The startup code will assign the stack pointer to + * __SP_INIT, assign the address of the data relative base address + * to a5, initialize the .bss/.sbss sections to zero, call any + * static C++ initializers and then call main. Upon returning from + * main it will call C++ destructors and call exit to terminate. + */ + +#ifdef __cplusplus +#pragma cplusplus off +#endif +#pragma PID off +#pragma PIC off + +#include "MCF5475.h" + + + /* imported data */ + +extern unsigned long far _SP_INIT, _SDA_BASE; +extern unsigned long far _START_BSS, _END_BSS; +extern unsigned long far _START_SBSS, _END_SBSS; +extern unsigned long far __DATA_RAM, __DATA_ROM, __DATA_END; +extern unsigned long far __Bas_base; + +extern unsigned long far __SUP_SP,__BOOT_FLASH; +extern unsigned long far rt_mbar; + + /* imported routines */ + +extern int BaS(int, char **); + + /* exported routines */ +extern void __initialize_hardware(void); +extern void init_slt(void); + + +void _startup(void) +{ + asm +{ + bra warmstart + jmp __BOOT_FLASH + 8 // ist zugleich reset vector + /* disable interrupts */ +warmstart: +// disable interrupts + move.w #0x2700,sr +// Initialize MBAR + MOVE.L #__MBAR,D0 + MOVEC D0,MBAR + move.l d0,rt_mbar +// mmu off + move.l #__MMUBAR+1,d0 + movec d0,MMUBAR //mmubar setzen + clr.l d0 + move.l d0,MCF_MMU_MMUCR // mmu off + /* Initialize RAMBARs: locate SRAM and validate it */ \ + move.l #__RAMBAR0 + 0x7,d0 // supervisor only + movec d0,RAMBAR0 + move.l #__RAMBAR1 + 0x1,d0 // on for all + movec d0,RAMBAR1 + +// STACKPOINTER AUF ENDE SRAM1 + lea __SUP_SP,a7 + +// instruction cache on + move.l #0x000C8100,d0 + movec d0,cacr + nop +// initialize any hardware specific issues + bra __initialize_hardware +} +} \ No newline at end of file diff --git a/BaS_codewarrior/firebeeV1/sources/startcf.h b/BaS_codewarrior/firebeeV1/sources/startcf.h new file mode 100644 index 0000000..c538f16 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/startcf.h @@ -0,0 +1,47 @@ +/****************************************************************************** + FILE : startcf.h + PURPOSE : startup code for ColdFire + LANGUAGE: C + + + Notes: + 1) Default entry point is _startup. + . disable interrupts + . the SP is set to __SP_AFTER_RESET + . SP must be initialized to valid memory + in case the memory it points to is not valid using MEMORY_INIT macro + 2) __initialize_hardware is called. Here you can initialize memory and some peripherics + at this point global variables are not initialized yet + 3) After __initialize_hardware memory is setup; initialize SP to _SP_INIT and perform + needed initialisations for the language (clear memory, data rom copy). + 4) void __initialize_system(void); is called + to allow additional hardware initialization (UART, GPIOs, etc...) + 5) Jump to main + +*/ +/********************************************************************************/ + +#define cf_stack + +//#define ii_on +#define halten +#define halten_dbcc +#define halten_and +#define halten_add +#define halten_sub +#define halten_or +#define halten_op +#define halten_opc +#define halten_movem +#define halten_lea +#define halten_shift +#define halten_move +#define halten_exg +#define halten_movep +#define halten_ewf + +#define DIP_SWITCH (*(vuint8 *)(&__MBAR[0xA2C])) +#define DIP_SWITCHa ___MBAR + 0xA2C + +#define sca_page_ID 6 + diff --git a/BaS_codewarrior/firebeeV1/sources/supervisor.s b/BaS_codewarrior/firebeeV1/sources/supervisor.s new file mode 100644 index 0000000..29cd97f --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/supervisor.s @@ -0,0 +1,585 @@ +/********************************************************/ +/* user/supervisor handler +/********************************************************/ + +.include "startcf.h" + +.extern _rt_cacr; +.extern _rt_mod; +.extern _rt_ssp; +.extern _rt_usp; +.extern ___MMUBAR + +/* Register read/write macros */ +#define MCF_MMU_MMUCR ___MMUBAR +#define MCF_MMU_MMUOR ___MMUBAR+0x04 +#define MCF_MMU_MMUSR ___MMUBAR+0x08 +#define MCF_MMU_MMUAR ___MMUBAR+0x10 +#define MCF_MMU_MMUTR ___MMUBAR+0x14 +#define MCF_MMU_MMUDR ___MMUBAR+0x18 + +.public _privileg_violation +.public cpusha + +.text +_privileg_violation: + move.w #0x2700,sr + lea -12(a7),a7 + movem.l d0/a0/a5,(a7) +#ifndef cf_stack + lea 0x52f0,a0 + move.l #0x20,(a0) // set auf 68030 +#endif + lea _rt_mod,a0 // zugriff setzen + tst.b (a0) // vom rt_supervisormodus? + bne pv_work // ja-> +// tatsächlich privileg violation + mov3q.l #-1,(a0) // sr_mod setzen + move.l usp,a5 // usp holen + move.l a5,8(a0) // sichern + move.l 4(a0),a5 // rt_ssp holen +#ifdef cf_stack + move.l 16(a7),-(a5) // pc verschieben + move.l 12(a7),-(a5) // sr verschieben + bset #5,2(a5) // auf super setzen +#else + move.w 12(a7),-(a5) // vector nr. + move.l 16(a7),-(a5) // pc verschieben + move.w 14(a7),-(a5) // sr verschieben + bset #5,(a5) // auf super +#endif + move.l a5,usp + move.l 12(a0),a5 // rt_vbr + lea 0x18(a5),a5 // vector + move.l (a5),16(a7) // vector privileg violation + movem.l (a7),d0/a0/a5 // register zurück + lea 12(a7),a7 + rte +// privileg violation +pv_work: + move.l 16(a7),a5 // fault pc + move.b (a5),d0 // fault code + cmp.b #0x4e,d0 // 1.byt 0x4e + beq pv_4e // ja-> + cmp.b #0x46,d0 // 1.byt 0x46 + beq pv_46 // ja-> + cmp.b #0x40,d0 // 1.byt 0x40 + beq pv_40 // ja-> + cmp.b #0xf4,d0 // 0xf4? + beq pv_f4 + cmp.b #0xf3,d0 // 0xf3? + beq pv_f3 +// hierher sollt man nicht kommen + nop + halt + nop +// code 0x4exx ******************************************** +pv_4e: + move.b 1(a5),d0 + cmp.b #0x73,d0 //rte? + beq pv_rte //ja-> + cmp.b #0x72,d0 //stop? + beq pv_stop //ja-> + cmp.b #0x7B,d0 //movec? + beq pv_movec //ja-> +// move usp + btst #3,d0 // to or from + bne pv_usp_to_ax // usp -> ax +// move ax->usp + cmp.b #0x60,d0 //movec? + beq pv_a0_usp //ja-> + cmp.b #0x61,d0 //movec? + beq pv_a1_usp //ja-> + cmp.b #0x62,d0 //movec? + beq pv_a2_usp //ja-> + cmp.b #0x63,d0 //movec? + beq pv_a3_usp //ja-> + cmp.b #0x64,d0 //movec? + beq pv_a4_usp //ja-> + cmp.b #0x65,d0 //movec? + beq pv_a5_usp //ja-> + cmp.b #0x66,d0 //movec? + beq pv_a6_usp //ja-> + halt + bra pv_a7_usp //ja-> +// move usp->ax +pv_usp_to_ax: + move.l 8(a0),a5 //rt_usp holen + cmp.b #0x68,d0 //movec? + beq pv_usp_a0 //ja-> + cmp.b #0x69,d0 //movec? + beq pv_usp_a1 //ja-> + cmp.b #0x6a,d0 //movec? + beq pv_usp_a2 //ja-> + cmp.b #0x6b,d0 //movec? + beq pv_usp_a3 //ja-> + cmp.b #0x6c,d0 //movec? + beq pv_usp_a4 //ja-> + cmp.b #0x6d,d0 //movec? + beq pv_usp_a5 //ja-> + cmp.b #0x6e,d0 //movec? + beq pv_usp_a6 //ja-> +// usp->a7 + move.l a5,4(a0) // rt usp -> rt ssp + move.l a5,usp // und setzen + bra pv_usp_ax +// a0->usp +pv_a0_usp: move.l 4(a7),a5 + bra pv_ax_usp +// a1->usp +pv_a1_usp: move.l a1,a5 + bra pv_ax_usp +// a2->usp +pv_a2_usp: move.l a2,a5 + bra pv_ax_usp +// a3->usp +pv_a3_usp: move.l a3,a5 + bra pv_ax_usp +// a4->usp +pv_a4_usp: move.l a4,a5 + bra pv_ax_usp +// a5->usp +pv_a5_usp: move.l 8(a7),a5 + bra pv_ax_usp +// a6->usp +pv_a6_usp: move.l a6,a5 + bra pv_ax_usp +// a7->usp +pv_a7_usp: move.l 4(a0),a5 // rt_ssp -> a5 +pv_ax_usp: + move.l a5,8(a0) // usp -> rt_usp + addq.l #2,16(a7) // next + movem.l (a7),d0/a0/a5 // register zurück + lea 12(a7),a7 + rte +// usp->a0 +pv_usp_a0: + move.l a5,4(a7) + bra pv_usp_ax +pv_usp_a1: + move.l a5,a1 + bra pv_usp_ax +pv_usp_a2: + move.l a5,a2 + bra pv_usp_ax +pv_usp_a3: + move.l a5,a3 + bra pv_usp_ax +pv_usp_a4: + move.l a5,a4 + bra pv_usp_ax +pv_usp_a5: + move.l a5,8(a7) + bra pv_usp_ax +pv_usp_a6: + move.l a5,a6 +pv_usp_ax: + addq.l #2,16(a7) // next + movem.l (a7),d0/a0/a5 // register zurück + lea 12(a7),a7 + rte +// rte +pv_rte: + move.l usp,a5 +#ifdef cf_stack + move.l (a5)+,12(a7) // sr verschieben + move.l (a5)+,16(a7) // pc verschieben +#else + move.w (a5)+,14(a7) // sr verschieben + move.l (a5)+,16(a7) // pc verschieben + move.w (a5)+,12(a7) // vector +#endif + bclr #5,14(a7) // war es von super? + bne pv_rte_sup // ja-> + clr.l (a0) // rt_mod auf user + move.l a5,4(a0) // rt_ssp sichern + move.l 8(a0),a5 // rt_usp holen +pv_rte_sup: + move.l a5,usp // usp setzen + movem.l (a7),d0/a0/a5 // register zurück + lea 12(a7),a7 + rte +// stop +pv_stop: + move.b 2(a5),d0 // sr wert + and.l #0x0700,d0 // int mask + cmp.w #0x700,d0 + beq stop7 + cmp.w #0x600,d0 + beq stop6 + cmp.w #0x500,d0 + beq stop5 + cmp.w #0x400,d0 + beq stop4 + cmp.w #0x300,d0 + beq stop3 + cmp.w #0x200,d0 + beq stop2 + cmp.w #0x100,d0 + beq stop1 + stop #0x2000 + bra stop_weiter +stop1: + stop #0x2100 + bra stop_weiter +stop2: + stop #0x2200 + bra stop_weiter +stop3: + stop #0x2300 + bra stop_weiter +stop4: + stop #0x2400 + bra stop_weiter +stop5: + stop #0x2500 + bra stop_weiter +stop6: + stop #0x2600 + bra stop_weiter +stop7: + stop #0x2700 +stop_weiter: + addq.l #4,16(a7) // next + movem.l (a7),d0/a0/a5 // register zurück + lea 12(a7),a7 + rte +// movec ??????? +pv_movec: + move.w 2(a5),d0 // 2.word holen + and.l #0xf000,d0 + btst #15,d0 // addressregister? + bne pv_movec_ax // ja-> + tst.w d0 // d0? + bne pvm_d1 // nein-> + move.l (a7),-(a7) // d0 holen und sichern + bra pvm_me +pvm_d1: + cmp.w #0x1000,d0 // d1? + bne pvm_d2 // nein-> + move.l d1,-(a7) // d1 holen und sichern + bra pvm_me // fertig machen +pvm_d2: + cmp.w #0x2000,d0 // d1? + bne pvm_d3 // nein-> + move.l d2,-(a7) // d2 holen und sichern + bra pvm_me // fertig machen +pvm_d3: + cmp.w #0x3000,d0 // d1? + bne pvm_d4 // nein-> + move.l d3,-(a7) // d3 holen und sichern + bra pvm_me // fertig machen +pvm_d4: + cmp.w #0x4000,d0 // d1? + bne pvm_d5 // nein-> + move.l d4,-(a7) // d4 holen und sichern + bra pvm_me // fertig machen +pvm_d5: + cmp.w #0x5000,d0 // d1? + bne pvm_d6 // nein-> + move.l d5,-(a7) // d5 holen und sichern + bra pvm_me // fertig machen +pvm_d6: + cmp.w #0x6000,d0 // d1? + bne pvm_d7 // nein-> + move.l d6,-(a7) // d6 holen und sichern + bra pvm_me // fertig machen +pvm_d7: + move.l d7,-(a7) // d7 holen und sichern + bra pvm_me // fertig machen +pv_movec_ax: + cmp.w #0x8000,d0 // a0? + bne pvm_a1 // nein-> + move.l 4(a7),-(a7) // a0 holen und sichern + bra pvm_me // fertig machen +pvm_a1: + cmp.w #0x9000,d0 // a0? + bne pvm_a2 // nein-> + move.l a1,-(a7) // a1 holen und sichern + bra pvm_me // fertig machen +pvm_a2: + cmp.w #0xa000,d0 // a0? + bne pvm_a3 // nein-> + move.l a2,-(a7) // a2 holen und sichern + bra pvm_me // fertig machen +pvm_a3: + cmp.w #0xb000,d0 // a0? + bne pvm_a4 // nein-> + move.l a3,-(a7) // a3 holen und sichern + bra pvm_me // fertig machen +pvm_a4: + cmp.w #0xc000,d0 // a0? + bne pvm_a5 // nein-> + move.l a4,-(a7) // a4 holen und sichern + bra pvm_me // fertig machen +pvm_a5: + cmp.w #0xd000,d0 // a0? + bne pvm_a6 // nein-> + move.l 8(a7),-(a7) // a5 holen und sichern + bra pvm_me // fertig machen +pvm_a6: + cmp.w #0xe000,d0 // a0? + bne pvm_a7 // nein-> + move.l a6,-(a7) // a6 holen und sichern + bra pvm_me // fertig machen +pvm_a7: + move.l 4(a7),-(a7) // a7 holen und sichern +pvm_me: + move.w 2(a5),d0 // 2.word holen + andi.l #0xf,d0 // nur letzte 4 bits + move.l (a7)+,8(a0,d0*4) // start bei +8, *4 weil long + jsr cpusha // gesammten cache flushen + rte +// code 0x46xx ***************************************** +pv_46: + move.b 1(a5),d0 + cmp.b #0xfc,d0 //#d16->sr + beq im_sr //ja-> +//move dx->sr (sr und rt_mod ist supervisor sonst wäre es privileg violation + cmp.b #0xc0,d0 //d0->sr? + bne d1_sr //nein-> + move.w 2(a7),d0 //hier ist d0 gesichert + bra d0_sr +d1_sr: + cmp.b #0xc1,d0 //d1->sr? + bne d2_sr //nein-> + move.w d1,d0 + bra d0_sr +d2_sr: + cmp.b #0xc2,d0 //d2->sr? + bne d3_sr + move.w d2,d0 + bra d0_sr +d3_sr: + cmp.b #0xc3,d0 //d3->sr? + bne d4_sr + move.w d3,d0 + bra d0_sr +d4_sr: + cmp.b #0xc4,d0 //d4->sr? + bne d5_sr + move.w d4,d0 + bra d0_sr +d5_sr: + cmp.b #0xc5,d0 //d5->sr? + bne d6_sr + move.w d5,d0 + bra d0_sr +d6_sr: + cmp.b #0xc6,d0 //d6->sr? + bne d7_sr + move.w d6,d0 + bra d0_sr +d7_sr: + move.w d7,d0 // sonst d7->sr +d0_sr: + addq.l #2,16(a7) // next + bra pv_set_sr_end // fertig machen +// move #xxxx,sr +im_sr: + addq.l #4,16(a7) // next + move.w 2(a5),d0 // data +pv_set_sr_end: + bclr #13,d0 // war super? + bne pv_sre2 // ja -> + clr.l (a0) + move.l usp,a5 // usp + move.l a5,4(a0) // rt_ssp speichern + move.l 8(a0),a5 // rt_usp holen + move.l a5,usp // setzen +pv_sre2: + move.w d0,14(a7) // sr setzen + movem.l (a7),d0/a0/a5 // register zurück + lea 12(a7),a7 + rte +// code 0x40xx ***************************************** +pv_40: + move.b 1(a5),d0 // 2.byt + cmp.b #0xe7,d0 + beq pv_strldsr +// move sr->dx + move.l 12(a7),a5 // sr holen + tst.b (a0) // super? + beq pv_40_user // nein? + lea 0x2000(a5),a5 // super zuaddieren +pv_40_user: + cmp.b #0xc0,d0 + bne nsr_d1 + move.w a5,2(a7) + bra sr_dx_end +nsr_d1: + cmp.b #0xc1,d0 + bne nsr_d2 + move.w a5,d1 + bra sr_dx_end +nsr_d2: + cmp.b #0xc2,d0 + bne nsr_d3 + move.w a5,d2 + bra sr_dx_end +nsr_d3: + cmp.b #0xc3,d0 + bne nsr_d4 + move.w a5,d3 + bra sr_dx_end +nsr_d4: + cmp.b #0xc4,d0 + bne nsr_d5 + move.w a5,d4 + bra sr_dx_end +nsr_d5: + cmp.b #0xc5,d0 + bne nsr_d6 + move.w a5,d5 + bra sr_dx_end +nsr_d6: + cmp.b #0xc6,d0 + bne nsr_d7 + move.w a5,d6 + bra sr_dx_end +nsr_d7: + move.w a5,d7 + halt +sr_dx_end: + addq.l #2,16(a7) // next + movem.l (a7),d0/a0/a5 // register zurück + lea 12(a7),a7 + rte +// strldsr +pv_strldsr: + nop + halt + nop +// code 0xf4xx *********************************** +pv_f4: + addq.l #2,16(a7) // next instr + move.b 1(a5),d0 // 2.byt + bsr pv_ax_a0 // richtiges register + move.b 1(a5),d0 // 2.byt + cmp.b #0x30,d0 // >0xf430 + blo pv_intouch +// cpushl + cpushl bc,(a0) + movem.l (a7),d0/a0/a5 + lea 12(a7),a7 + rte +pv_intouch: + intouch (a0) + movem.l (a7),d0/a0/a5 + lea 12(a7),a7 + rte +// subroutine register ax->a0 +pv_ax_a0: + and.l #0x7,d0 // nur register nummer + subq.l #1,d0 + bmi pv_a0_a0 + subq.l #1,d0 + bmi pv_a1_a0 + subq.l #1,d0 + bmi pv_a2_a0 + subq.l #1,d0 + bmi pv_a3_a0 + subq.l #1,d0 + bmi pv_a4_a0 + subq.l #1,d0 + bmi pv_a5_a0 + subq.l #1,d0 + bmi pv_a6_a0 + move.l a7,a0 + rts +pv_a0_a0: + move.l 8(a7),a0 + rts +pv_a1_a0: + move.l a1,a0 + rts +pv_a2_a0: + move.l a2,a0 + rts +pv_a3_a0: + move.l a3,a0 + rts +pv_a4_a0: + move.l a4,a0 + rts +pv_a5_a0: + move.l 12(a7),a0 + rts +pv_a6_a0: + move.l a6,a0 + rts +// code 0xf4xx *********************************** +pv_f3: + addq.l #2,16(a7) // next instr + move.b 1(a5),d0 // 2. byt + cmp.b #0x40,d0 + bgt pv_frestore +//fsave (ax) oder d16(ax) + jsr pv_ax_a0 // richtiges register holen + move.b 1(a5),d0 + cmp.b #0x20,d0 +// +d16 + blt pv_f3_ax + addq.l #2,16(a7) // next instr + clr.l d0 + move.w 2(a0),d0 // d16 + add.l d0,a0 +pv_f3_ax: + fsave (a0) + movem.l (a7),d0/a0/a5 + lea 12(a7),a7 + rte +pv_frestore: + cmp.b #0x7a,d0 + beq pv_f_d16pc +// frestore (ax) oder d16(ax) + jsr pv_ax_a0 // richtiges register holen + move.b 1(a5),d0 + cmp.b #0x60,d0 + blt pv_frestore_ax +pv_fend: + addq.l #2,16(a7) // next instr + clr.l d0 + move.w 2(a0),d0 // d16 + add.l d0,a0 +pv_frestore_ax: + frestore (a0) + movem.l (a7),d0/a0/a5 + lea 12(a7),a7 + rte +// frestore d16(pc) +pv_f_d16pc: + move.l 16(a7),a0 // pc holen + bra pv_fend +//***************************************************** +cpusha: + lea -16(a7),a7 + movem.l d0-d2/a0,(a7) // register sichern + move sr,d2 + nop + move #0x2700,sr // no interrupts + + clr.l d0 + clr.l d1 + move.l d0,a0 +cfa_setloop: + cpushl bc,(a0) // flush + lea 0x10(a0),a0 // index+1 + addq.l #1,d1 // index+1 + cmpi.w #512,d1 // alle sets? + bne cfa_setloop // nein-> + clr.l d1 + addq.l #1,d0 + move.l d0,a0 + cmpi.w #4,d0 // all ways? + bne cfa_setloop // nein-> + nop + move.l _rt_cacr,d0 // holen + movec d0,cacr // setzen + move.w d2,sr // alte interrupt maske + movem.l (a7),d0-d2/a0 // register zurück + lea 16(a7),a7 + + rts +//*******************************************************33 + diff --git a/BaS_codewarrior/firebeeV1/sources/sysinit.c b/BaS_codewarrior/firebeeV1/sources/sysinit.c new file mode 100644 index 0000000..9d75090 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/sysinit.c @@ -0,0 +1,833 @@ +/* + * File: sysinit.c + * Purpose: Power-on Reset configuration of the COLDARI board. + * + * Notes: + * + */ +#include "MCF5475.h" +#include "startcf.h" + +extern unsigned long far __VRAM; +extern unsigned long far __Bas_base; +extern unsigned long far BaS; +extern unsigned long far __BOOT_FLASH[]; +extern int copy_end(); +extern int warte_10us(); +extern int warte_1ms(); +extern int warte_10ms(); +extern int warte_50us(); + +extern unsigned long far rt_cacr; + +/********************************************************************/ +// init SLICE TIMER 0 +// all = 32.538 sec = 30.736mHz +// BYT0 = 127.1ms/tick = 7.876Hz offset 0 +// BYT1 = 496.5us/tick = 2.014kHz offset 1 +// BYT2 = 1.939us/tick = 515.6kHz offset 2 +// BYT3 = 7.576ns/tick = 132.00MHz offset 3 +// count down!!! 132MHz!!! +/********************************************************************/ + +void init_slt(void) +{ + asm + { + lea MCF_SLT0_STCNT,a0 + move.l #0xffffffff,(a0) + lea MCF_SLT0_SCR,a0 + move.b #0x05,(a0) + + } + MCF_PSC0_PSCTB_8BIT = 'SLT '; + MCF_PSC0_PSCTB_8BIT = 'OK! '; + MCF_PSC0_PSCTB_8BIT = 0x0a0d; +} + +/********************************************************************/ +// init GPIO ETC. +/********************************************************************/ + +void init_gpio(void) +{ + + +// PAD REGISTER P.S.:FBCTL UND FBCS WERDEN RICHTIG GESETZT BEIM RESET + MCF_PAD_PAR_DMA = 0b11111111; // NORMAL ALS DREQ DACK + MCF_PAD_PAR_FECI2CIRQ = 0b1111001111001111; // FEC0 NORMAL, FEC1 ALS I/O, I2C, #INT5..6 + MCF_PAD_PAR_PCIBG = 0b0000001000111111; // #PCI_BG4=#TBST,#PIC_BG3=I/O,#PCI_BG2..0=NORMAL + MCF_PAD_PAR_PCIBR = 0b0000001000111111; // #PCI_BR4=#INT4,#PIC_BR3=INPUT,#PCI_BR2..0=NORMAL + MCF_PAD_PAR_PSC3 = 0b00001100; // PSC3=TX,RX CTS+RTS=I/O + MCF_PAD_PAR_PSC1 = 0b11111100; // PSC1 NORMAL SERIELL + MCF_PAD_PAR_PSC0 = 0b11111100; // PSC0 NORMAL SERIELL + MCF_PAD_PAR_DSPI = 0b0001111111111111; // DSPI NORMAL + MCF_PAD_PAR_TIMER = 0b00101101; // TIN3..2=#IRQ3..2;TOUT3..2=NORMAL +// ALLE OUTPUTS NORMAL LOW + +// ALLE DIR NORMAL INPUT = 0 + MCF_GPIO_PDDR_FEC1L = 0b00011110; // OUT: 4=LED,3=PRG_DQ0,2=#FPGA_CONFIG,1=PRG_CLK(FPGA) + +} + +/********************************************************************/ +// init seriel +/********************************************************************/ + +void init_seriel(void) +{ + +// PSC0: SER1 ---------- + MCF_PSC0_PSCSICR = 0; // UART + MCF_PSC0_PSCCSR = 0xDD; + MCF_PSC0_PSCCTUR = 0x00; + MCF_PSC0_PSCCTLR = 36; // BAUD RATE = 115200 + MCF_PSC0_PSCCR = 0x20; + MCF_PSC0_PSCCR = 0x30; + MCF_PSC0_PSCCR = 0x40; + MCF_PSC0_PSCCR = 0x50; + MCF_PSC0_PSCCR = 0x10; + MCF_PSC0_PSCIMR = 0x8700; + MCF_PSC0_PSCACR = 0x03; + MCF_PSC0_PSCMR1= 0xb3; + MCF_PSC0_PSCMR2= 0x07; + MCF_PSC0_PSCRFCR = 0x0F; + MCF_PSC0_PSCTFCR = 0x0F; + MCF_PSC0_PSCRFAR = 0x00F0; + MCF_PSC0_PSCTFAR = 0x00F0; + MCF_PSC0_PSCOPSET = 0x01; + MCF_PSC0_PSCCR = 0x05; +// PSC3: PIC ---------- + MCF_PSC3_PSCSICR = 0; // UART + MCF_PSC3_PSCCSR = 0xDD; + MCF_PSC3_PSCCTUR = 0x00; + MCF_PSC3_PSCCTLR = 36; // BAUD RATE = 115200 + MCF_PSC3_PSCCR = 0x20; + MCF_PSC3_PSCCR = 0x30; + MCF_PSC3_PSCCR = 0x40; + MCF_PSC3_PSCCR = 0x50; + MCF_PSC3_PSCCR = 0x10; + MCF_PSC3_PSCIMR = 0x0200; // receiver interrupt enable + MCF_PSC3_PSCACR = 0x03; + MCF_PSC3_PSCMR1= 0xb3; + MCF_PSC3_PSCMR2= 0x07; + MCF_PSC3_PSCRFCR = 0x0F; + MCF_PSC3_PSCTFCR = 0x0F; + MCF_PSC3_PSCRFAR = 0x00F0; + MCF_PSC3_PSCTFAR = 0x00F0; + MCF_PSC3_PSCOPSET = 0x01; + MCF_PSC3_PSCCR = 0x05; + MCF_INTC_ICR32 = 0x3F; //MAXIMALE PRIORITY/**********/ + + MCF_PSC0_PSCTB_8BIT = 0x0a0d; + MCF_PSC0_PSCTB_8BIT = 'SERI'; + MCF_PSC0_PSCTB_8BIT = 'AL O'; + MCF_PSC0_PSCTB_8BIT = 'K! '; + MCF_PSC0_PSCTB_8BIT = 0x0a0d; +} +/********************************************************************/ + /* Initialize DDR DIMMs on the EVB board */ +/********************************************************************/ + /* + * Check to see if the SDRAM has already been initialized + * by a run control tool + */ + + +void init_ddram(void) +{ + MCF_PSC0_PSCTB_8BIT = 'DDRA'; + if (!(MCF_SDRAMC_SDCR & MCF_SDRAMC_SDCR_REF)) + { + + /* Basic configuration and initialization */ + MCF_SDRAMC_SDRAMDS = 0x000002AA; // SDRAMDS configuration + MCF_SDRAMC_CS0CFG = 0x0000001A; // SDRAM CS0 configuration (128Mbytes 0000_0000 - 07FF_FFFF) + MCF_SDRAMC_CS1CFG = 0x0800001A; // SDRAM CS1 configuration (128Mbytes 0800_0000 - 0FFF_FFFF) + MCF_SDRAMC_CS2CFG = 0x1000001A; // SDRAM CS2 configuration (128Mbytes 1000_0000 - 07FF_FFFF) + MCF_SDRAMC_CS3CFG = 0x1800001A; // SDRAM CS3 configuration (128Mbytes 1800_0000 - 1FFF_FFFF) +// MCF_SDRAMC_SDCFG1 = 0x53722938; // SDCFG1 + MCF_SDRAMC_SDCFG1 = 0x73622830; // SDCFG1 +// MCF_SDRAMC_SDCFG2 = 0x24330000; // SDCFG2 + MCF_SDRAMC_SDCFG2 = 0x46770000; // SDCFG2 +// MCF_SDRAMC_SDCR = 0xE10F0002; // SDCR + IPALL + MCF_SDRAMC_SDCR = 0xE10D0002; // SDCR + IPALL + MCF_SDRAMC_SDMR = 0x40010000; // SDMR (write to LEMR) +// MCF_SDRAMC_SDMR = 0x05890000; // SDRM (write to LMR) + MCF_SDRAMC_SDMR = 0x048D0000; // SDRM (write to LMR) +// MCF_SDRAMC_SDCR = 0xE10F0002; // SDCR + IPALL + MCF_SDRAMC_SDCR = 0xE10D0002; // SDCR + IPALL +// MCF_SDRAMC_SDCR = 0xE10F0004; // SDCR + IREF (first refresh) + MCF_SDRAMC_SDCR = 0xE10D0004; // SDCR + IREF (first refresh) +// MCF_SDRAMC_SDCR = 0xE10F0004; // SDCR + IREF (second refresh) + MCF_SDRAMC_SDCR = 0xE10D0004; // SDCR + IREF (second refresh) +/// MCF_SDRAMC_SDMR = 0x01890000; // SDMR (write to LMR) + MCF_SDRAMC_SDMR = 0x008D0000; // SDMR (write to LMR) +// MCF_SDRAMC_SDCR = 0x710F0F00; // SDCR (lock SDMR and enable refresh) + MCF_SDRAMC_SDCR = 0x710D0F00; // SDCR (lock SDMR and enable refresh) + } + MCF_PSC0_PSCTB_8BIT = 'M OK'; + MCF_PSC0_PSCTB_8BIT = '! '; + MCF_PSC0_PSCTB_8BIT = 0x0a0d; +} +/********************************************************************/ + /* init FB_CSx /* +/********************************************************************/ +void init_fbcs() +{ + MCF_PSC0_PSCTB_8BIT = 'FBCS'; + /* Flash */ + MCF_FBCS0_CSAR = 0xE0000000; // FLASH ADRESS + MCF_FBCS0_CSCR = 0x00001180 // 16 bit 4ws aa + | MCF_FBCS_CSCR_RDAH(1); // READ HOLD TIME 1 CYCLUS + MCF_FBCS0_CSMR = 0x007F0001; // 8MB on + + MCF_FBCS1_CSAR = 0xFFF00000; // ATARI I/O ADRESS + MCF_FBCS1_CSCR = MCF_FBCS_CSCR_PS_16 // 16BIT PORT + | MCF_FBCS_CSCR_WS(8) // DEFAULT 8WS + | MCF_FBCS_CSCR_RDAH(1) // READ HOLD TIME 1 CYCLUS + | MCF_FBCS_CSCR_AA; // AA + MCF_FBCS1_CSMR = (MCF_FBCS_CSMR_BAM_1M + | MCF_FBCS_CSMR_V); + + MCF_FBCS2_CSAR = 0xF0000000; // NEUER I/O ADRESS-BEREICH + MCF_FBCS2_CSCR = MCF_FBCS_CSCR_PS_32 // 32BIT PORT + | MCF_FBCS_CSCR_WS(8) // DEFAULT 4WS + | MCF_FBCS_CSCR_RDAH(1) // READ HOLD TIME 1 CYCLUS + | MCF_FBCS_CSCR_AA; // AA + MCF_FBCS2_CSMR = (MCF_FBCS_CSMR_BAM_128M // F000'0000-F7FF'FFFF + | MCF_FBCS_CSMR_V); + + MCF_FBCS3_CSAR = 0xF8000000; // NEUER I/O ADRESS-BEREICH + MCF_FBCS3_CSCR = MCF_FBCS_CSCR_PS_16 // 16BIT PORT + | MCF_FBCS_CSCR_WS(0) // 0WS + | MCF_FBCS_CSCR_RDAH(1) // READ HOLD TIME 1 CYCLUS + | MCF_FBCS_CSCR_AA; // AA + MCF_FBCS3_CSMR = (MCF_FBCS_CSMR_BAM_64M // F800'0000-FBFF'FFFF + | MCF_FBCS_CSMR_V); + + MCF_FBCS4_CSAR = 0x40000000; // VIDEO RAM BEREICH, #FB_CS3 WIRD NICHT BENÜTZT, DECODE DIREKT AUF DEM FPGA + MCF_FBCS4_CSCR = MCF_FBCS_CSCR_PS_32 // 32BIT PORT + | MCF_FBCS_CSCR_BSTR // BURST READ ENABLE + | MCF_FBCS_CSCR_BSTW; // BURST WRITE ENABLE + MCF_FBCS4_CSMR = (MCF_FBCS_CSMR_BAM_1G // 4000'0000-7FFF'FFFF + | MCF_FBCS_CSMR_V); + + MCF_PSC0_PSCTB_8BIT = ' OK!'; + MCF_PSC0_PSCTB_8BIT = 0x0a0d; +} + +/********************************************************************/ + /* FPGA LADEN /* +/********************************************************************/ + + +void init_fpga(void) +{ + + MCF_PSC0_PSCTB_8BIT = 'FPGA'; +asm + { + lea MCF_GPIO_PODR_FEC1L,a1 // register adresse:write + lea MCF_GPIO_PPDSDR_FEC1L,a2 // reads + bclr #1,(a1) // clk auf low + bclr #2,(a1) // #config=low +test_nSTATUS: + btst #0,(a2) // nSTATUS==0 + bne test_nSTATUS // nein-> + btst #5,(a2) // conf done==0 + bne test_nSTATUS // nein-> + jsr warte_10us // warten + bset #2,(a1) // #config=high + jsr warte_10us // warten +test_STATUS: + btst #0,(a2) // status high? + beq test_STATUS // nein-> + jsr warte_10us // warten + + lea 0xE0700000,a0 // startadresse fpga daten +word_send_loop: + cmp.l #0xE0800000,a0 + bgt fpga_error + move.b (a0)+,d0 // 32 bit holen + moveq #8,d1 // 32 bit ausgeben +bit_send_loop: + lsr.l #1,d0 // bit rausschieben + bcs bit_is_1 + bclr #3,(a1) + bra bit_send +bit_is_1: + bset #3,(a1) +bit_send: + bset #1,(a1) // clock=high + bclr #1,(a1) // clock=low + subq.l #1,d1 + bne bit_send_loop // wiederholen bis fertig + btst #5,(a2) // fpga fertig, conf_done=high? + beq word_send_loop // nein, next word-> + move.l #4000,d1 +overclk: + bset #1,(a1) // clock=high + nop + bclr #1,(a1) // clock=low + subq.l #1,d1 + bne overclk // weiter bis fertig + bra init_fpga_end + +//--------------------------------------------------------- +wait_pll: + lea MCF_SLT0_SCNT,a3 + move.l (a3),d0 + move.l #100000,d6 // ca 1ms +wait_pll_loop: + tst.w (a1) + bpl wait_pll_ok + move.l (a3),d1 + sub.l d0,d1 + add.l d6,d1 + bpl wait_pll_loop +wait_pll_ok: + rts +// fertig +fpga_error: + } + MCF_PSC0_PSCTB_8BIT = ' NOT'; +init_fpga_end: + MCF_PSC0_PSCTB_8BIT = ' OK!'; + MCF_PSC0_PSCTB_8BIT = 0x0a0d; + +// init pll + MCF_PSC0_PSCTB_8BIT = 'PLL '; +asm +{ + lea 0xf0000600,a0 + lea 0xf0000800,a1 + bsr wait_pll + move.w #27,0x48(a0) // loopfilter r + bsr wait_pll + move.w #1,0x08(a0) // charge pump I + bsr wait_pll + move.w #12,0x0(a0) // N counter high = 12 + bsr wait_pll + move.w #12,0x40(a0) // N counter low = 12 + bsr wait_pll + move.w #1,0x114(a0) // ck1 bypass + bsr wait_pll + move.w #1,0x118(a0) // ck2 bypass + bsr wait_pll + move.w #1,0x11c(a0) // ck3 bypass + bsr wait_pll + move.w #1,0x10(a0) // ck0 high = 1 + bsr wait_pll + move.w #1,0x50(a0) // ck0 low = 1 + + bsr wait_pll + move.w #1,0x144(a0) // M odd division + bsr wait_pll + move.w #1,0x44(a0) // M low = 1 + + bsr wait_pll + move.w #165,0x04(a0) // M high = 145 = 146MHz + + bsr wait_pll + clr.b (a1) // set +} + MCF_PSC0_PSCTB_8BIT = 'SET!'; + MCF_PSC0_PSCTB_8BIT = 0x0a0d; +} + +/********************************************************************/ + /* INIT VIDEO DDR RAM /* +/********************************************************************/ + +void init_video_ddr(void) +{ + asm + { + +// init video ram + moveq.l #0xB,d0 + move.w d0,0xF0000400 //set cke=1, cs=1 config=1 + nop + lea __VRAM,a0 //zeiger auf video ram + nop + move.l #0x00050400,(a0) //IPALL + nop + move.l #0x00072000,(a0) //load EMR pll on + nop + move.l #0x00070122,(a0) //load MR: reset pll, cl=2 BURST=4lw + nop + move.l #0x00050400,(a0) //IPALL + nop + move.l #0x00060000,(a0) //auto refresh + nop + move.l #0x00060000,(a0) //auto refresh + nop + move.l #0000070022,(a0) //load MR dll on + nop + move.l #0x01070002,d0 // fifo on, refresh on, ddrcs und cke on, video dac on, + move.l d0,0xf0000400 + } +} + +/********************************************************************/ + /* video mit auflösung 1280x1000 137MHz /* +/********************************************************************/ + +void video_1280_1024(void) +{ +extern int wait_pll; + + asm + { + + +// SPEICHER FÜLLEM + +//testmuster 1 + lea __VRAM,a2 + lea __VRAM+0x600000,a3 + clr.l d0 + move.l #0x1000102,d1 +loop5: move.l d0,(a2)+ + move.l d0,(a2)+ + move.l d0,(a2)+ + move.l d0,(a2)+ + move.l d0,(a2)+ + move.l d0,(a2)+ + move.l d0,(a2)+ + move.l d0,(a2)+ + move.l d0,(a2)+ + move.l d0,(a2)+ + move.l d0,(a2)+ + move.l d0,(a2)+ + move.l d0,(a2)+ + move.l d0,(a2)+ + move.l d0,(a2)+ + move.l d0,(a2)+ + move.l d0,(a2)+ + move.l d0,(a2)+ + move.l d0,(a2)+ + move.l d0,(a2)+ + add.l d1,d0 +flo6: cmp.l a2,a3 + bgt loop5 + +// screen setzen +//horizontal 1280 + lea 0xffff8282,a0 + move.w #1800,(a0)+ + move.w #1380,(a0)+ + move.w #99,(a0)+ + move.w #100,(a0)+ + move.w #1379,(a0)+ + move.w #1500,(a0) +//vertical 1024 + lea 0xffff82a2,a0 + move.w #1150,(a0)+ + move.w #1074,(a0)+ + move.w #49,(a0)+ + move.w #50,(a0)+ + move.w #1073,(a0)+ + move.w #1100,(a0)+ +// acp video on + move.l #0x01070207,d0 + move.l d0,0xf0000400 + + +// clut setzen + lea 0xf0000000,a0 + move.l #0xffffffff,(a0)+ + move.l #0xff,(a0)+ + move.l #0xff00,(a0)+ + move.l #0xff0000,(a0) + +// halt + + } + +} +/********************************************************************/ + /* INIT PCI /* +/********************************************************************/ + +#define PCI_MEMORY_OFFSET (0x80000000) +#define PCI_MEMORY_SIZE (0x40000000) +#define PCI_IO_OFFSET (0xD0000000) +#define PCI_IO_SIZE (0x10000000) + + +void init_PCI(void) +{ + + MCF_PSC0_PSCTB_8BIT = 'PCI '; +asm + { + // Setup the arbiter + move.l #MCF_PCIARB_PACR_INTMPRI \ + + MCF_PCIARB_PACR_EXTMPRI(0x1F) \ + + MCF_PCIARB_PACR_INTMINTEN \ + + MCF_PCIARB_PACR_EXTMINTEN(0x1F),D0 + move.l D0,MCF_PCIARB_PACR + // Setup burst parameters + move.l #MCF_PCI_PCICR1_CACHELINESIZE(4) + MCF_PCI_PCICR1_LATTIMER(32),D0 + move.l D0,MCF_PCI_PCICR1 + move.l #MCF_PCI_PCICR2_MINGNT(16) + MCF_PCI_PCICR2_MAXLAT(16),D0 + move.l D0,MCF_PCI_PCICR2 + // Turn on error signaling + move.l #MCF_PCI_PCIICR_TAE + MCF_PCI_PCIICR_IAE + MCF_PCI_PCIICR_REE + 32,D0 + move.l D0,MCF_PCI_PCIICR + move.l #MCF_PCI_PCIGSCR_SEE,D0 + or.l D0,MCF_PCI_PCIGSCR + // Configure Initiator Windows */ + move.l #PCI_MEMORY_OFFSET + ((PCI_MEMORY_SIZE - 1) >> 8),D0 + clr.w D0 + move.l D0,MCF_PCI_PCIIW0BTAR // Initiator Window 0 Base / Translation Address Register + + move.l #PCI_IO_OFFSET+((PCI_IO_SIZE-1)>>8),D0 + clr.w D0 + move.l D0,MCF_PCI_PCIIW1BTAR // Initiator Window 1 Base / Translation Address Register + + clr.l MCF_PCI_PCIIW2BTAR // not used + + move.l #MCF_PCI_PCIIWCR_WINCTRL0_MEMRDLINE + MCF_PCI_PCIIWCR_WINCTRL1_IO,D0 + move.l D0,MCF_PCI_PCIIWCR // Initiator Window Configuration Register + + /* Clear PCI Reset and wait for devices to reset */ + move.l #~MCF_PCI_PCIGSCR_PR,D0 + and.l D0,MCF_PCI_PCIGSCR + } + + MCF_PSC0_PSCTB_8BIT = 'OK! '; + MCF_PSC0_PSCTB_8BIT = 0x0a0d; +} +/********************************************************************/ + /* test UPC720101 (USB) /* +/********************************************************************/ + +void test_upd720101(void) +{ + + MCF_PSC0_PSCTB_8BIT = 'NEC '; +asm + { + // SELECT UPD720101 AD17 + MOVE.L #MCF_PCI_PCICAR_E+MCF_PCI_PCICAR_DEVNUM(17)+MCF_PCI_PCICAR_FUNCNUM(0)+MCF_PCI_PCICAR_DWORD(0),D0 + MOVE.L D0,MCF_PCI_PCICAR + LEA PCI_IO_OFFSET,A0 + MOVE.L (A0),D1 + move.l #0x33103500,d0 + cmp.l d0,d1 + beq nec_ok + } + MCF_PSC0_PSCTB_8BIT = 'NOT '; + goto nec_not_ok; +nec_ok: + asm + { + MOVE.L #MCF_PCI_PCICAR_E+MCF_PCI_PCICAR_DEVNUM(17)+MCF_PCI_PCICAR_FUNCNUM(0)+MCF_PCI_PCICAR_DWORD(57),D0 + MOVE.L D0,MCF_PCI_PCICAR + move.b #0x20,(a0) + } +nec_not_ok: + asm + { + MOVE.L #MCF_PCI_PCICAR_DEVNUM(17)+MCF_PCI_PCICAR_FUNCNUM(0)+MCF_PCI_PCICAR_DWORD(57),D0 + MOVE.L D0,MCF_PCI_PCICAR + } + MCF_PSC0_PSCTB_8BIT = 'OK! '; + MCF_PSC0_PSCTB_8BIT = 0x0a0d; +} + +/********************************************************************/ + /* TFP410 (vdi) einschalten /* +/********************************************************************/ + +void vdi_on(void) +{ + uint8 RBYT, DBYT; + int versuche, startzeit; + + + MCF_PSC0_PSCTB_8BIT = 'DVI '; + MCF_I2C_I2FDR = 0x34; // 100kHz standard + versuche = 0; +loop_i2c: + if (versuche++>10) goto next; + MCF_I2C_I2ICR = 0x0; + MCF_I2C_I2CR = 0x0; + MCF_I2C_I2CR = 0xA; + RBYT = MCF_I2C_I2DR; + MCF_I2C_I2SR = 0x0; + MCF_I2C_I2CR = 0x0; + MCF_I2C_I2ICR = 0x01; + + MCF_I2C_I2CR = 0xb0; + MCF_I2C_I2DR = 0x7A; + warte_100us(); + if (MCF_I2C_I2SR!=0xa2 | MCF_I2C_I2CR!=0xb0) goto loop_i2c; + MCF_I2C_I2SR &= 0xfd; + + MCF_I2C_I2DR = 0x00; // SUB ADRESS 0 + while(!(MCF_I2C_I2SR & MCF_I2C_I2SR_IIF)) ; + MCF_I2C_I2SR &= 0xfd; + + MCF_I2C_I2CR |= 0x4; // repeat start + + MCF_I2C_I2DR = 0x7b; // beginn read + warte_100us(); + if (MCF_I2C_I2SR!=0xa6 | MCF_I2C_I2CR!=0xb0) goto loop_i2c; + MCF_I2C_I2SR &= 0xfd; + + MCF_I2C_I2CR &= 0xef; // switch to rx + DBYT = MCF_I2C_I2DR; // dummy read + + while(!(MCF_I2C_I2SR & MCF_I2C_I2SR_IIF)) ; + MCF_I2C_I2SR &= 0xfd; + + MCF_I2C_I2CR |= 0x08; // txak=1 + + warte_100us(); + RBYT = MCF_I2C_I2DR; + + while(!(MCF_I2C_I2SR & MCF_I2C_I2SR_IIF)) ; + MCF_I2C_I2SR &= 0xfd; + + MCF_I2C_I2CR = 0x0; // stop + DBYT = MCF_I2C_I2DR; // dummy read + + if (RBYT!=0x4c) goto loop_i2c; + + +i2c_ok: + MCF_I2C_I2CR = 0x0; // stop + MCF_I2C_I2SR = 0x0; // clear sr + while((MCF_I2C_I2SR & MCF_I2C_I2SR_IBB)) ; // wait auf bus free + + MCF_I2C_I2CR = 0xb0; // on tx master + MCF_I2C_I2DR = 0x7A; + warte_50us(); + if (MCF_I2C_I2SR!=0xa2 | MCF_I2C_I2CR!=0xb0) goto loop_i2c; + MCF_I2C_I2SR &= 0xfd; + + MCF_I2C_I2DR = 0x08; // SUB ADRESS 8 + while(!(MCF_I2C_I2SR & MCF_I2C_I2SR_IIF)) ; + MCF_I2C_I2SR &= 0xfd; + + MCF_I2C_I2DR = 0xbf; // ctl1: power on, T:M:D:S: enable + while(!(MCF_I2C_I2SR & MCF_I2C_I2SR_IIF)) ; + MCF_I2C_I2SR &= 0xfd; + + MCF_I2C_I2CR = 0x0; // stop + MCF_I2C_I2SR = 0x0; // clear sr + + while((MCF_I2C_I2SR & MCF_I2C_I2SR_IBB)) ; // wait auf bus free + + MCF_I2C_I2CR = 0xb0; + MCF_I2C_I2DR = 0x7A; + warte_50us(); + if (MCF_I2C_I2SR!=0xa2 | MCF_I2C_I2CR!=0xb0) goto loop_i2c; + MCF_I2C_I2SR &= 0xfd; + + MCF_I2C_I2DR = 0x08; // SUB ADRESS 8 + while(!(MCF_I2C_I2SR & MCF_I2C_I2SR_IIF)) ; + MCF_I2C_I2SR &= 0xfd; + + MCF_I2C_I2CR |= 0x4; // repeat start + MCF_I2C_I2DR = 0x7b; // beginn read + warte_50us(); + if (MCF_I2C_I2SR!=0xa6 | MCF_I2C_I2CR!=0xb0) goto loop_i2c; + MCF_I2C_I2SR &= 0xfd; + + MCF_I2C_I2CR &= 0xef; // switch to rx + + DBYT = MCF_I2C_I2DR; // dummy read + + while(!(MCF_I2C_I2SR & MCF_I2C_I2SR_IIF)) ; + MCF_I2C_I2SR &= 0xfd; + + MCF_I2C_I2CR |= 0x08; // txak=1 + + warte_50us(); + RBYT = MCF_I2C_I2DR; + + while(!(MCF_I2C_I2SR & MCF_I2C_I2SR_IIF)) ; + MCF_I2C_I2SR &= 0xfd; + + MCF_I2C_I2CR = 0x0; // stop + DBYT = MCF_I2C_I2DR; // dummy read + + if (RBYT!=0xbf) goto loop_i2c; + + goto dvi_ok; +next: + MCF_I2C_I2CR = 0x0; // stop + MCF_PSC0_PSCTB_8BIT = 'NOT '; +dvi_ok: + MCF_PSC0_PSCTB_8BIT = 'OK! '; + MCF_PSC0_PSCTB_8BIT = 0x0a0d; +} + +/********************************************************************/ + /* AC97 /* +/********************************************************************/ +void init_ac97(void) +{ +// PSC2: AC97 ---------- + int i,k,zm,x,va,vb,vc; + + MCF_PSC0_PSCTB_8BIT = 'AC97'; + MCF_PAD_PAR_PSC2 = MCF_PAD_PAR_PSC2_PAR_RTS2_RTS // PSC2=TX,RX BCLK,CTS->AC'97 + | MCF_PAD_PAR_PSC2_PAR_CTS2_BCLK + | MCF_PAD_PAR_PSC2_PAR_TXD2 + | MCF_PAD_PAR_PSC2_PAR_RXD2; + MCF_PSC2_PSCMR1 = 0x0; + MCF_PSC2_PSCMR2 = 0x0; + MCF_PSC2_PSCIMR = 0x0300; + MCF_PSC2_PSCSICR = 0x03; //AC97 + MCF_PSC2_PSCRFCR = 0x0f000000; + MCF_PSC2_PSCTFCR = 0x0f000000; + MCF_PSC2_PSCRFAR = 0x00F0; + MCF_PSC2_PSCTFAR = 0x00F0; + + for ( zm = 0; zm<100000; zm++) // wiederholen bis synchron + { + MCF_PSC2_PSCCR = 0x20; + MCF_PSC2_PSCCR = 0x30; + MCF_PSC2_PSCCR = 0x40; + MCF_PSC2_PSCCR = 0x05; +// MASTER VOLUME -0dB + MCF_PSC2_PSCTB_AC97 = 0xE0000000; //START SLOT1 + SLOT2, FIRST FRAME + MCF_PSC2_PSCTB_AC97 = 0x02000000; //SLOT1:WR REG MASTER VOLUME adr 0x02 + for ( i = 2; i<13; i++ ) + { + MCF_PSC2_PSCTB_AC97 = 0x0; //SLOT2-12:WR REG ALLES 0 + } + // read register + MCF_PSC2_PSCTB_AC97 = 0xc0000000; //START SLOT1 + SLOT2, FIRST FRAME + MCF_PSC2_PSCTB_AC97 = 0x82000000; //SLOT1:master volume + for ( i = 2; i<13; i++ ) + { + MCF_PSC2_PSCTB_AC97 = 0x00000000; //SLOT2-12:RD REG ALLES 0 + } + warte_50us(); + va = MCF_PSC2_PSCTB_AC97; + if ((va & 0x80000fff)==0x80000800) + { + vb = MCF_PSC2_PSCTB_AC97; + vc = MCF_PSC2_PSCTB_AC97; + if ((va & 0xE0000fff)==0xE0000800 & vb==0x02000000 & vc==0x00000000) + { + goto livo; + } + } + } + MCF_PSC0_PSCTB_8BIT = ' NOT'; +livo: +// AUX VOLUME ->-0dB + MCF_PSC2_PSCTB_AC97 = 0xE0000000; //START SLOT1 + SLOT2, FIRST FRAME + MCF_PSC2_PSCTB_AC97 = 0x16000000; //SLOT1:WR REG AUX VOLUME adr 0x16 + MCF_PSC2_PSCTB_AC97 = 0x06060000; //SLOT1:VOLUME + for ( i = 3; i<13; i++ ) + { + MCF_PSC2_PSCTB_AC97 = 0x0; //SLOT2-12:WR REG ALLES 0 + } + +// line in VOLUME +12dB + MCF_PSC2_PSCTB_AC97 = 0xE0000000; //START SLOT1 + SLOT2, FIRST FRAME + MCF_PSC2_PSCTB_AC97 = 0x10000000; //SLOT1:WR REG MASTER VOLUME adr 0x02 + for ( i = 2; i<13; i++ ) + { + MCF_PSC2_PSCTB_AC97 = 0x0; //SLOT2-12:WR REG ALLES 0 + } +// cd in VOLUME 0dB + MCF_PSC2_PSCTB_AC97 = 0xE0000000; //START SLOT1 + SLOT2, FIRST FRAME + MCF_PSC2_PSCTB_AC97 = 0x12000000; //SLOT1:WR REG MASTER VOLUME adr 0x02 + for ( i = 2; i<13; i++ ) + { + MCF_PSC2_PSCTB_AC97 = 0x0; //SLOT2-12:WR REG ALLES 0 + } +// mono out VOLUME 0dB + MCF_PSC2_PSCTB_AC97 = 0xE0000000; //START SLOT1 + SLOT2, FIRST FRAME + MCF_PSC2_PSCTB_AC97 = 0x06000000; //SLOT1:WR REG MASTER VOLUME adr 0x02 + MCF_PSC2_PSCTB_AC97 = 0x00000000; //SLOT1:WR REG MASTER VOLUME adr 0x02 + for ( i = 3; i<13; i++ ) + { + MCF_PSC2_PSCTB_AC97 = 0x0; //SLOT2-12:WR REG ALLES 0 + } + MCF_PSC2_PSCTFCR |= MCF_PSC_PSCTFCR_WFR; //set EOF + MCF_PSC2_PSCTB_AC97 = 0x00000000; //last data + +ac97_end: + MCF_PSC0_PSCTB_8BIT = ' OK!'; + MCF_PSC0_PSCTB_8BIT = 0x0a0d; + +} +/********************************************************************/ + +void __initialize_hardware(void) +{ +_init_hardware: +asm +{ + // instruction cache on + move.l #0x000C8120,d0 + move.l d0,rt_cacr + movec d0,cacr + nop +} + init_gpio(); + init_seriel(); + init_slt(); + init_fbcs(); + init_ddram(); +// Ports nicht initialisieren wenn DIP Switch 6 = on +asm +{ + move.b DIP_SWITCH,d0 // dip schalter adresse + btst.b #6,d0 + beq not_init_ports +} + init_PCI(); //pci braucht zeit + not_init_ports: + init_fpga(); + init_video_ddr(); + vdi_on(); +// Ports nicht initialisieren wenn DIP Switch 6 = on +asm +{ + move.b DIP_SWITCH,d0 // dip schalter adresse + btst.b #6,d0 + beq not_init_ports2 +} +// video_1280_1024(); + test_upd720101(); +not_init_ports2: + init_ac97(); + +asm +{ +/*****************************************************/ +/* BaS kopieren +/*****************************************************/ + lea copy_start,a0 + lea BaS,a1 + sub.l a0,a1 + move.l #__Bas_base,a2 + move.l a2,a3 + add.l a1,a3 + lea copy_end,a4 +BaS_kopieren_loop: // immer 16 bytes + move.l (a0)+,(a2)+ + move.l (a0)+,(a2)+ + move.l (a0)+,(a2)+ + move.l (a0)+,(a2)+ + cmp.l a4,a0 + blt BaS_kopieren_loop +/*****************************************************/ + jmp (a3) + copy_start: +/********************************************************************/ +} +} + diff --git a/BaS_codewarrior/firebeeV1/sources/sysinit.h b/BaS_codewarrior/firebeeV1/sources/sysinit.h new file mode 100644 index 0000000..70bc6da --- /dev/null +++ b/BaS_codewarrior/firebeeV1/sources/sysinit.h @@ -0,0 +1,87 @@ +/* + * File: sysinit.h + * Purpose: COLDARI Power-on Reset configuration + * + * Notes: + * + */ + +#ifndef __SYSINIT_H__ +#define __SYSINIT_H__ + +#ifdef __cplusplus +extern "C" { +#endif + + +#if ENABLE_UART_SUPPORT==1 + +/* + * System Bus Clock Info + */ +// 5475EVB has 133Mhz system clock +#define SYSTEM_CLOCK_KHZ 133000 /* system bus frequency in kHz */ + + +/*** + * Serial Port Info + * The baud rate to be : 19200 + * Data bits : 8 + * Parity : None + * Stop Bits : 1 + * Flow Control : None + */ +#define TERMINAL_PORT (0) /* PSC channel used as terminal */ +#define TERMINAL_BAUD kBaud19200 /* 115200 */ +#undef HARDWARE_FLOW_CONTROL /* Flow control ON or OFF */ +#endif + +/*** + * Board Memory map definitions from linker command files: + * __SDRAM,__SDRAM_SIZE, __FLASH, __FLASH_SIZE linker + * symbols must be defined in the linker command file. + */ +extern __declspec(system) uint8 __BOOT_FLASH[]; +extern __declspec(system) uint8 __BOOT_FLASH_SIZE[]; + +extern __declspec(system) uint8 __SDRAM[]; +extern __declspec(system) uint8 __SDRAM_SIZE[]; + + +#define BOOT_FLASH_ADDRESS (uint32)__BOOT_FLASH +#define BOOT_FLASH_SIZE (uint32)__BOOT_FLASH_SIZE + +#define SDRAM_ADDRESS (uint32)__SDRAM +#define SDRAM_SIZE (uint32)__SDRAM_SIZE + + + + +/********************************************************************/ +/* __initialize_hardware Startup code routine + * + * __initialize_hardware is called by the startup code right after reset, + * with interrupt disabled and SP pre-set to a valid memory area. + * Here you should initialize memory and some peripherics; + * at this point global variables are not initialized yet. + * The startup code will initialize SP on return of this function. + */ +void __initialize_hardware(void); + +/********************************************************************/ +/* __initialize_system Startup code routine + * + * __initialize_system is called by the startup code when all languages + * specific initialization are done to allow additional hardware setup. + */ +void __initialize_system(void); + + + +#ifdef __cplusplus +} +#endif + +#endif /* __SYSINIT_H__ */ + + diff --git a/BaS_codewarrior/workspace.cww b/BaS_codewarrior/workspace.cww new file mode 100644 index 0000000..2d84375 --- /dev/null +++ b/BaS_codewarrior/workspace.cww @@ -0,0 +1,413 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]> + + + + -1 + 0 + true + firebeeV1\firebeeV1.mcp + + 938 + 306 + + + 392 + 338 + + + 1 + 0 + 0 + 59420 + 1.000000 + 378 + + 0 + 0 + + + + + -1 + 1 + firebeeV1\sources\exceptions.s + + 8 + 34 + + + 549 + 895 + + + 0 + + + + + + + + + + + + + 1073741824 + 35 + + 60 + 205 + + + 582 + 392 + + + 0 + + + + + + + + + + + GlobalSession, cpu68K, osCWDS + C:\FireBee\codewarrior\firebeeV1\bin\DDRAM.elf + 2 + + + + 1073741824 + 35 + + 1586 + 31 + + + 484 + 907 + + + 0 + + + + + + + + + + + GlobalSession, cpu68K, osCWDS + C:\firebee\codewarrior\firebeeV1\bin\DDRAM.elf + 4 + + + + 1073741824 + 35 + + 1185 + 39 + + + 481 + 225 + + + 0 + + + + + + + + + + + GlobalSession, cpu68K, osCWDS + C:\firebee\codewarrior\firebeeV1\bin\DDRAM.elf + 5 + + + + 1073741824 + 35 + + 1100 + 691 + + + 481 + 225 + + + 0 + + + + + + + + + + + GlobalSession, cpu68K, osCWDS + C:\firebee\codewarrior\firebeeV1\bin\DDRAM.elf + 3 + + + + 1073741824 + 35 + + 645 + 600 + + + 481 + 225 + + + 0 + + + + + + + + + + + GlobalSession, cpu68K, osCWDS + C:\FireBee\codewarrior\firebeeV1\bin\DDRAM.elf + 1 + + + + -2147483648 + 24 + + 13 + 33 + + + 591 + 742 + + + 0 + + + + + + + + + + + + + -2147483648 + 28 + + 652 + 33 + + + 518 + 519 + + + 0 + + + + + + + + + + + GlobalSession, cpu68K, osCWDS + C:\FireBee\codewarrior\firebeeV1\bin\DDRAM.elf + 0 + 373 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1073741824 + 28 + + 652 + 33 + + + 518 + 519 + + + 0 + + + + + + + + + + + GlobalSession, cpu68K, osCWDS + C:\FireBee\codewarrior\firebeeV1\bin\DDRAM.elf + 0 + 373 + + + + + diff --git a/FPGA_quartus/Coldari1.qsf b/FPGA_quartus/Coldari1.qsf new file mode 100644 index 0000000..da581cf --- /dev/null +++ b/FPGA_quartus/Coldari1.qsf @@ -0,0 +1,44 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 1991-2009 Altera Corporation +# Your use of Altera Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Altera Program License +# Subscription Agreement, Altera MegaCore Function License +# Agreement, or other applicable license agreement, including, +# without limitation, that your use is for the sole purpose of +# programming logic devices manufactured by Altera and sold by +# Altera or its authorized distributors. Please refer to the +# applicable agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus II +# Version 9.1 Build 222 10/21/2009 SJ Web Edition +# Date created = 12:11:46 March 06, 2010 +# +# -------------------------------------------------------------------------- # +# +# Notes: +# +# 1) The default values for assignments are stored in the file: +# Coldari1_assignment_defaults.qdf +# If this file doesn't exist, see file: +# assignment_defaults.qdf +# +# 2) Altera recommends that you do not modify this file. This +# file is updated automatically by the Quartus II software +# and any changes you make may be lost or overwritten. +# +# -------------------------------------------------------------------------- # + + +set_global_assignment -name FAMILY "Stratix II" +set_global_assignment -name DEVICE AUTO +set_global_assignment -name TOP_LEVEL_ENTITY Coldari1 +set_global_assignment -name ORIGINAL_QUARTUS_VERSION 9.1 +set_global_assignment -name PROJECT_CREATION_TIME_DATE "12:11:46 MARCH 06, 2010" +set_global_assignment -name LAST_QUARTUS_VERSION 9.1 \ No newline at end of file diff --git a/FPGA_quartus/DSP/DSP.vhd b/FPGA_quartus/DSP/DSP.vhd new file mode 100644 index 0000000..26f8e2e --- /dev/null +++ b/FPGA_quartus/DSP/DSP.vhd @@ -0,0 +1,79 @@ +-- WARNING: Do NOT edit the input and output ports in this file in a text +-- editor if you plan to continue editing the block that represents it in +-- the Block Editor! File corruption is VERY likely to occur. + +-- Copyright (C) 1991-2008 Altera Corporation +-- Your use of Altera Corporation's design tools, logic functions +-- and other software and tools, and its AMPP partner logic +-- functions, and any output files from any of the foregoing +-- (including device programming or simulation files), and any +-- associated documentation or information are expressly subject +-- to the terms and conditions of the Altera Program License +-- Subscription Agreement, Altera MegaCore Function License +-- Agreement, or other applicable license agreement, including, +-- without limitation, that your use is for the sole purpose of +-- programming logic devices manufactured by Altera and sold by +-- Altera or its authorized distributors. Please refer to the +-- applicable agreement for further details. + + +-- Generated by Quartus II Version 8.1 (Build Build 163 10/28/2008) +-- Created on Tue Sep 08 16:24:57 2009 + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + + +-- Entity Declaration + +ENTITY DSP IS + -- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! + PORT + ( + CLK33M : IN STD_LOGIC; + MAIN_CLK : IN STD_LOGIC; + nFB_OE : IN STD_LOGIC; + nFB_WR : IN STD_LOGIC; + nFB_CS1 : IN STD_LOGIC; + nFB_CS2 : IN STD_LOGIC; + FB_SIZE0 : IN STD_LOGIC; + FB_SIZE1 : IN STD_LOGIC; + nFB_BURST : IN STD_LOGIC; + FB_ADR : IN STD_LOGIC_VECTOR(31 downto 0); + nRSTO : IN STD_LOGIC; + nFB_CS3 : IN STD_LOGIC; + nSRCS : INOUT STD_LOGIC; + nSRBLE : OUT STD_LOGIC; + nSRBHE : OUT STD_LOGIC; + nSRWE : OUT STD_LOGIC; + nSROE : OUT STD_LOGIC; + DSP_INT : OUT STD_LOGIC; + DSP_TA : OUT STD_LOGIC; + FB_AD : INOUT STD_LOGIC_VECTOR(31 downto 0); + IO : INOUT STD_LOGIC_VECTOR(17 downto 0); + SRD : INOUT STD_LOGIC_VECTOR(15 downto 0) + ); + -- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! + +END DSP; + + +-- Architecture Body + +ARCHITECTURE DSP_architecture OF DSP IS + + +BEGIN + nSRCS <= '0' when nFB_CS2 = '0' and FB_ADR(27 downto 24) = x"4" else '1'; --nFB_CS3; + nSRBHE <= '0' when FB_ADR(0 downto 0) = "0" else '1'; + nSRBLE <= '1' when FB_ADR(0 downto 0) = "0" and FB_SIZE1 = '0' and FB_SIZE0 = '1' else '0'; + nSRWE <= '0' when nFB_WR = '0' and nSRCS = '0' and MAIN_CLK = '0' else '1'; + nSROE <= '0' when nFB_OE = '0' and nSRCS = '0' else '1'; + DSP_INT <= '0'; + DSP_TA <= '0'; + IO(17 downto 0) <= FB_ADR(18 downto 1); + SRD(15 downto 0) <= FB_AD(31 downto 16) when nFB_WR = '0' and nSRCS = '0' else "ZZZZZZZZZZZZZZZZ"; + FB_AD(31 downto 16) <= SRD(15 downto 0) when nFB_OE = '0' and nSRCS = '0' else "ZZZZZZZZZZZZZZZZ"; + + +END DSP_architecture; diff --git a/FPGA_quartus/DSP/DSP.vhd.bak b/FPGA_quartus/DSP/DSP.vhd.bak new file mode 100644 index 0000000..2d4811a --- /dev/null +++ b/FPGA_quartus/DSP/DSP.vhd.bak @@ -0,0 +1,79 @@ +-- WARNING: Do NOT edit the input and output ports in this file in a text +-- editor if you plan to continue editing the block that represents it in +-- the Block Editor! File corruption is VERY likely to occur. + +-- Copyright (C) 1991-2008 Altera Corporation +-- Your use of Altera Corporation's design tools, logic functions +-- and other software and tools, and its AMPP partner logic +-- functions, and any output files from any of the foregoing +-- (including device programming or simulation files), and any +-- associated documentation or information are expressly subject +-- to the terms and conditions of the Altera Program License +-- Subscription Agreement, Altera MegaCore Function License +-- Agreement, or other applicable license agreement, including, +-- without limitation, that your use is for the sole purpose of +-- programming logic devices manufactured by Altera and sold by +-- Altera or its authorized distributors. Please refer to the +-- applicable agreement for further details. + + +-- Generated by Quartus II Version 8.1 (Build Build 163 10/28/2008) +-- Created on Tue Sep 08 16:24:57 2009 + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + + +-- Entity Declaration + +ENTITY DSP IS + -- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! + PORT + ( + CLK33M : IN STD_LOGIC; + MAIN_CLK : IN STD_LOGIC; + nFB_OE : IN STD_LOGIC; + nFB_WR : IN STD_LOGIC; + nFB_CS1 : IN STD_LOGIC; + nFB_CS2 : IN STD_LOGIC; + FB_SIZE0 : IN STD_LOGIC; + FB_SIZE1 : IN STD_LOGIC; + nFB_BURST : IN STD_LOGIC; + FB_ADR : IN STD_LOGIC_VECTOR(31 downto 0); + nRSTO : IN STD_LOGIC; + nFB_CS3 : IN STD_LOGIC; + nSRCS : OUT STD_LOGIC; + nSRBLE : OUT STD_LOGIC; + nSRBHE : OUT STD_LOGIC; + nSRWE : OUT STD_LOGIC; + nSROE : OUT STD_LOGIC; + DSP_INT : OUT STD_LOGIC; + DSP_TA : OUT STD_LOGIC; + FB_AD : INOUT STD_LOGIC_VECTOR(31 downto 0); + IO : INOUT STD_LOGIC_VECTOR(17 downto 0); + SRD : INOUT STD_LOGIC_VECTOR(15 downto 0) + ); + -- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! + +END DSP; + + +-- Architecture Body + +ARCHITECTURE DSP_architecture OF DSP IS + + +BEGIN + nSRCS <= '0' when nFB_CS2 = '0' and FB_ADR(27 downto 24) = x"4" else '1'; --nFB_CS3; + nSRBHE <= '0' when FB_ADR(0 downto 0) = "0" else '1'; + nSRBLE <= '1' when FB_ADR(0 downto 0) = "0" and FB_SIZE1 = '0' and FB_SIZE0 = '1' else '0'; + nSRWE <= '0' when nFB_WR = '0' and nSRCS = '0' and MAIN_CLK = '0' else '1'; + nSROE <= '0' when nFB_OE = '0' and nSRCS = '0' else '1'; + DSP_INT <= '0'; + DSP_TA <= '0'; + IO(17 downto 0) <= FB_ADR(18 downto 1); + SRD(15 downto 0) <= FB_AD(31 downto 16) when nFB_WR = '0' and nSRCS = '0' else "ZZZZZZZZZZZZZZZZ"; + FB_AD(31 downto 16) <= SRD(15 downto 0) when nFB_OE = '0' and nSRCS = '0' else "ZZZZZZZZZZZZZZZZ"; + + +END DSP_architecture; diff --git a/FPGA_quartus/DSP/dsp56k.zip b/FPGA_quartus/DSP/dsp56k.zip new file mode 100644 index 0000000000000000000000000000000000000000..6522299f5635ba5560150e498fbbdf0fde8328f5 GIT binary patch literal 39208 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%0DHs z+wXEY)x-fArkp*i1uwJ^t8EK9&zy<=srmZYc@^ ztX5OMt;gcbit1)^I%I?{W`YYDa&z@|O{L-Ka0dpZ59tgQ7f8#=i?oK!F*huB4y@TAQ=^bZTlBOEnl`FM6JW%O{*oEEh~FNe-xxu7f1Clc06PUR zT-I*o4Yc|`yxs-*!XYvT5P-+-0@Ue0B=UyODk%<`l`>>jFzEf^HHaw+U+qqXvw2R1 zVyGH6C8g_gc75H&JHvp5Re?N^45!%U0zJf{Ehn*g@tacQsOSdKoN1nr8p3!+hIk{G zzbvn7<@-K6GkV`Wxx{mu2?<8N$qJFK(03GKdHWxgtZ|3o0)7vA`f}JY=|6q$m%@=$ zCf9yKEg`dsg9E)-mu4rUkMFfee&R==VJYdJQ7lQFVU5dkRQ!QE5jx6?rdvu?-*dTR zm9lYE5IL@3k7^fXbtAEU;n=^xsqmcOQ8Nt!6{$NTS&j(cBwOgGO2_>ACQ5&pl}NBH zk%cC{&G-COpx}mlWJ_2qp)7c%(MW`rAjO04HUjzM=}3c+g0O5ZY?&FYjRB7wRVeWq z{iO}s%+Qw2UU4=O$MZDnybd*Vn=)gLbYwXeY)V=zzNq3GEPIxZZOukcJugYB%|k?a zWDuB57hFsj)sCt?XMiO7Hy!2h*mGf>NiP2PM=>!YViktEJviOLJhl#Fdei&Rg|^&K zum^FKZ5wmzbY3&jP~E9Cj#FT#LQ@Vg&!%V9T=IqD)pGk0vpUn6E!rn<;l|J7LRG$P zKX%o)fbT~cOH&=PD2E!Da3z#*D@U(Zl6KWfpEg6EyRb#^D?A4CGaX+kh|E*VJL&q&z;lc2xi+yNI zEyBP+o}r1!XmU&ZkC>Y6?wRkM{YB#lVPbQSc= zh0n{7k1QPd<9`DF#}zna*l~dm&2(V=a|NKV0080teTNwv>zmman(G@I+8F=mCR2Xs zkc|9?|MmqjY8!F~49LEA-A03ORp48}nQEr*D#U~3Q5xgkCYzSldtAC3l#Tj52bQj%1;3V6SWqmfREN%o7CX^m{qU`FzWX0~K^Q=}}B!wR$m~z`_ zpQ#&dOAZ4p+J&O{_S>mYglidFwzDpm4CCr@ycG=u@oC$smVJ7ZtoKF=s3`XfsI`9x^Xmni#oI&+ zXWmv2A?f0B2-}ME^9@+4mGPab-!-pzHlHPQ7JIMa26b5+&LuWY!O{pKI;?hYB{p5b z$m0gL4x1+F(K(Uf^7i|%<%GQC0_H?%t(Zd>Ze0NJ799LxVP{%(ptUJnsknWnpwvOLY^e09aEAhuvF zjwP+luMAfTs5crm6&VnBn;l%kp%w@hc^WKe=z@;fF)rrYlD78|hYKC^`>-zzJUnyy zncM3z66tpa`uDjRs*S;B^ipkd7q)bmyvdBJu2;?{++{yrPYPJypzs=LiR8FEDQoXBTM5pdIJ*Z+~eXr6ty68IvaPW2hwxwkV&G!6NNSesre-?E~}`mziNR^9k@N5=ww#g2XDL z69%ejbA9%00loyGybyuxyI7tsN+dIU7GO4`hLh8QKNlD#?D}a3cZTd)hg>Mrj+AVuw~znw@SD!d zok5(N6$b8cpF$mOIzgg|V7AV=(b~|24dC-mLM8Ug1RUOQu1i?z0jpTY5FXc&eq$4AuM=Bk5G=VSOmEYS^1u zaPi_F@c88sY<44iw`G;-#`sk#=l6*-RPCQY--1f{fzYjH2wd1Dx=rGKy?&v1t<9o8 z*f|5kcp_fBURV_yD`-_Pmsykfo;#7btq2|P2lJos|DK^7KVTLy<)(4(hx>#B3jhG) z|Gg3Xgfu!h|7(Iq{SPeLtRZcW&5pn)-5bcM31mWUm4tWJ5nx>^07wjb0mMsJrYl7> zsB0%tqx$(i89zbV9;YFxfFI4unRU#LABN^#SjL4ojnSFIp0QR-Z5t^wiaXQz_?FtL zt`ct1XeCu*03Ey;YmtIe%*Da^(NR%eK*}s*`e=ymvdZgRk&dT1V_FPbEz`tqp0ax+ zvg!w8JC6&zVj|l{)~sU2n0vTaMNRSCmG zNrqxNL&L5_>-(0Da;JeQ`In~CS%uP5YI^Mvj7C@ka~P(%_^09tz_O?z22za zH}$0Du89I=fopkd?EBW<&CBomW%u;diI)cwQ+YU-|GCJByQbbrn@+=oS@RjtHht__ zb81nog2`A_QGyzmyv3wgh1^9fyc}vN=5L{hFT_}C458tcc9pJ<;H>nUE4{^~Y2*^` zpVg`)N|M(|nLkcLQUFF|ca-T$Xx?6DASI?8)Pc!K=@s28k~8y?y`ttmzjGghbCX6b zo2^}ApX4gY_d98xyy4aXwFm0~XZy1%yy1P4GsPGSq6wV1g^--f7+z#R{aah2G-*S2 zmf)($I2@EhWI~3EX~u&lgOf*@2gU*T;xj5DpBS|Tg3pItXeYppJ$>s%vZp@2eAcXR> zFb`g&SDvfQ;(EL!(XegCKX#I~j3wol%<0w`BV%pYt)V@4^xm`iqlwNpJcHPj0D0*1 zD*u7TXL*bEI#|HXpIw%Z6H!~Xq|VB5p>(uv4ztF9VaLO;8`a0p{qmR;U>=O4nw$Q;FM^!j-(lzr z5E;APzwE^WO!mHM8g!ZrMiI96WZ3DJGS}BLsa3hkm>+fki!n3)) z$g}yF;2;(vINT898XO=a=tO8JFe=Zfu*vPOIMh29EzgtPUw{ z5y?lKnxkC!+S)}}Z4acEU?wuHP-gfq1_K)}kv z$L_w*`shLPecxHN&RsYzNzVib%l@e9GZ3Ig>F>0`1npX0=*-iL-QPZOadSGE+zyrw zOlIJtk=4Zh&F3aN>hlytW`VGv9J;S-1`841PEQpR3oE(DN)Mv^AG) zatqizkM#G^YcT#8qzu?e`qW>TI_<09p9%ipKm%rqz2)5Bl1IO}%d@Byt@<XfL3F$yXxFvv*u5H`&j}HC$EmXvke*`1!N6%&eYx&CENZL7C&oxfffW=C(d(5>D7guPGC?ej#75(s8!NADS2el|>< z1t)RJjt6{JH%;J8raccks`X$v?2E&2Ld#Ue0@F1BMYI|rhVWaq?kI1<pwX{FjV)zaHW;Lx0z*-8p8e!-4>`_q zT^!Q}ipg3ddLuh|K|7iYC7Y7~OYTE4;E<;~+o1LilKqK<1Pi^}eM$D(7eKR{4hSjn zzpU9xCsWx4rs*(3Tt0{JuHQSM(rOM2FtP&fC_*}`p>+|> zlrhfJ(oa^Wx_BOkHS~H8Ruw%#?*1*Hc#Ek3TyZkt>VG4?%{$-)i+I>mR_fEgKv_R! zvYb73^>6*OYmfE+Lux`!ui$^#GXx} z_i8aXyhrk|9gI1qW!(?t6m$0(X_}%_I4r|&roXpXx)`MTZaRU>0ktkoiWO;kd(nQr z)a%>TW#fcUvhcU>(rQKB@?w~3;mutIHzxkD+~TE3{cb;68ijGcTZ=|*9+Y0H+@UOE zDAE9u6zTvi&O|)_Mf0J_C#Z$xNh1%fUuREKtQ#Wz4P(>v_sTr+bG2xlUH~P1RY?)> z*xa1WG>Sdy{rm~HMb+-fCKF#jR-)hlqvwwwq&aB71DVrboy{{}_^1s~-J?CWV-CPf zSR6TmI+N$qi1*TkHM&WUUUYp#jV_zrqod-w4*R`Cy*l z&5NjGz%jd|7AtQb=e{_6mxTCUpi<*dJdvF6G7!=rvy9*~aeYnU8neRZY$+h*57s9L zR!`Ug!yJfOCV@(wewHkU5~EaP;FyJ%mdZ!t9@e&LaK~rg7YZ5$f&y42t6`aH$cn+{ zL2lc<@-!lc42%!1fh8xxPzm>VDOiWjh25-D`LGjM{V(90gCT^H11Dld`1->6zUD}$ z4M{z4*jg3KOUOZ3Yk7%_eykWS&ES&mSTb+xGGE2Y95B>S_e)!*pRGGiuaqC?|3-Kr zKmMXn(^VqZFaQ7nS^u82wx+iFKa@W%PWCqc0(V$MeUipM`Ja>aQrFskLk#Vc<`arY zGY`oMtZN{w%%lvDn4}`mxYV*o zeC@`GbEx!;-sV){t1U*@+{M+sENW2d5WM?t&09CF-Ja@)!DeV{cgwn*h0qtDmLaJTvdeEOKBVG8aP z0PQ&^Hhnr`VWCZXx5`Y}whNdqerU16)0ek(665yIj)>OKrK$4}>;ZenE zZA;Nn3-$X&yJEN|e*>d0ndu*$FWu#7LA_!v9Ym94tMJIYF+3U7cXw;oy5;tp>fZAV zEQz5O*BE=N^iR!m;B1@BZroekTB4FKT@}uT?={zd8v8*tX{}&4>%tmbU5( z37KG_K*mFnB_w_Eok9a%`08@^qy<>BKhnbYy(>T3J}5s-`B`m$6xb8j+aC)Z!ySd4 z3+YlADxv?%7GQl0%tKpV4Z-2B+k^BK#zWXzJ2{XR>4KjQcKzSd?*2D+01jme7Y?~B@5f%cb6qjo)L?&-$| z`|;3}H5Fhko?O1G(|`-Ew1&OQ)`zH%gs&R-<S zRm=>~xbp$xz*MH>CRP5UFqGV++SrHA^`-&WUFtNNBlRZ<_<)GzP~%uM(~#*2quDp9NkQ#geTRQSh~((R{W9T%r$sW{wPZ}+K&HbD8LmZ;IHHH zSUscGX7TMVPmjz%g$z9-_9yY}o(Z=54R=q+&+R|*w+)sWE7O$pnW4?66z43@rKzI( z7bpWsS<91LkHO%OZ~+@8DrA?M!o4u2pJN zUTkm|kx1pTh@-?gAw83XG2~0z=!@kUUxBCoG$d}9YQ2-nKuitR*XXPH4Grl#crqx? zgL_a(Z+<2^DPy$t(3AZrXs3H7DaMjZaOo+}8CGiN>xZDtK!qS>gQId}G!>TCs2%Un znZ&f%Cr_DEDzm@T3reTN!w1+RBq%C-^>l;U@s8RYdppw;Z zX4pV;fTb-QGxjxOTc_>dZ%B41M>aTfx*D~Ss1y>^*5bMXjYW2|6%Fp|RJOI*p}#Io z$s0O)?W!8>h2&Vp^`?XcctH+`^LhgEAf&P(gcu=Ag(<*=+7Y0PatO{K_j2Aysj}0O zKPiuu7|W|4dVBSCFtfv5{X~J7E!r?xbfTN%jBNn+0Wi?}egTw#8+ZdO@WuUtRxd7xL_KNzi z`oC|L9;829tF;x5bo8#}S zf&Y2}%=zD%$9#Rx_&e?JH=E$Uu7G)-0dw8~W_@1dmDxxsVVF zB_fbYh9{GVNFx!EK`JH%k4g$XkPrqYB8W zk%(v~YUx1b;q`MAP(vdA4yKS6Dk3FZPegE(4DTQj(L*YrheS*ZrjQXLAtS^}LP(Gd zA14tpLn>f~M9c`LkQFK-Bh*SlsFw_1ClRqjDqx31%nGKE6Cxoe%t-qGo&|tH-pHVQP()eCh5vs_*2`I2>YU>#UqVs#XT7rpLvgja{V})EqX*)rj0}3; zi?|pO{dk5b}zX*X=u0gln`yLcnfwea;8N(ca&DaDsfucwq$is{UaHC!qZP0eU_} zwT7XHP`zRz#9<3V5Hez_M)n2Jr5F1#T)NXah8C0AXCJ zGdJtYhRpdkn?*lWvKlw(S7R1_TCs*bRYv?gv>vwT)nXQVUy2QA(wBW-`d`J=qA#oR z`;yFmz5RcG(F{ZSzJ&Kh=*wzdD;K0+&6J3HUl~!3N;9qs_h}_WEz11;v)!0pDNo~3 zy{gnKQ}L?`s}vV&mG?I(R4e}>Dbp%ei7CD_lxEHWc1S$#GjswFs#=uNB__Mt=GDN{5*{L=^}UFoGcjK!QrfcVxy5wW0MJI%N=d{shyLFY@ z7(J$8wHmc0ht{Q9W~OFa7bLSt)&ptlbMa8;>W(k(?K4y1TI#Fkkk?~W3g_D|R?e8F zwno_s@yYAb?J~8I`7+?2-A1$9_}CBj zp0mB@dDr)^#NeMnMzj1l*bm^mC)=*G jK{+bOV*50vsqm6_UbnR=_}C~*X)JJ% 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 literal 0 HcmV?d00001 diff --git a/FPGA_quartus/DSP/src/adgen_stage.vhd b/FPGA_quartus/DSP/src/adgen_stage.vhd new file mode 100644 index 0000000..1ff7e59 --- /dev/null +++ b/FPGA_quartus/DSP/src/adgen_stage.vhd @@ -0,0 +1,216 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity adgen_stage is port( + activate_adgen : in std_logic; + activate_x_mem : in std_logic; + activate_y_mem : in std_logic; + activate_l_mem : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + optional_ea_word : in std_logic_vector(23 downto 0); + register_file : in register_file_type; + adgen_mode_a : in adgen_mode_type; + adgen_mode_b : in adgen_mode_type; + address_out_x : out unsigned(BW_ADDRESS-1 downto 0); + address_out_y : out unsigned(BW_ADDRESS-1 downto 0); + wr_R_port_A_valid : out std_logic; + wr_R_port_A : out addr_wr_port_type; + wr_R_port_B_valid : out std_logic; + wr_R_port_B : out addr_wr_port_type +); +end entity; + + +architecture rtl of adgen_stage is + + signal address_out_x_int : unsigned(BW_ADDRESS-1 downto 0); + + +begin + + address_out_x <= address_out_x_int; + + address_generator_X: process(activate_adgen, instr_word, register_file, adgen_mode_a) is + variable r_reg_local : unsigned(BW_ADDRESS-1 downto 0); + variable n_reg_local : unsigned(BW_ADDRESS-1 downto 0); + variable m_reg_local : unsigned(BW_ADDRESS-1 downto 0); + variable op1 : unsigned(BW_ADDRESS-1 downto 0); + variable op2 : unsigned(BW_ADDRESS-1 downto 0); + variable addr_mod : unsigned(BW_ADDRESS-1 downto 0); + variable new_r_reg : unsigned(BW_ADDRESS-1 downto 0); + variable new_r_reg_interm : unsigned(BW_ADDRESS-1 downto 0); + variable modulo_bitmask : std_logic_vector(BW_ADDRESS-1 downto 0); + variable bit_set : std_logic; + begin + r_reg_local := register_file.addr_r(to_integer(unsigned(instr_word(10 downto 8)))); + n_reg_local := register_file.addr_n(to_integer(unsigned(instr_word(10 downto 8)))); + m_reg_local := register_file.addr_m(to_integer(unsigned(instr_word(10 downto 8)))); + + -- select the operands for the calculation + case adgen_mode_a is + -- (Rn) - Nn + when POST_MIN_N => addr_mod := unsigned(- signed(n_reg_local)); + -- (Rn) + Nn + when POST_PLUS_N => addr_mod := n_reg_local; + -- (Rn)- + when POST_MIN_1 => addr_mod := (others => '1'); -- -1 + -- (Rn)+ + when POST_PLUS_1 => addr_mod := to_unsigned(1, BW_ADDRESS); + -- (Rn) + when NOP => addr_mod := (others => '0'); + -- (Rn + Nn) + when INDEXED_N => addr_mod := n_reg_local; + -- -(Rn) + when PRE_MIN_1 => addr_mod := (others => '1'); -- - 1 + -- absolute address (appended to instruction word) + when ABSOLUTE => addr_mod := (others => '0'); + when IMMEDIATE => addr_mod := (others => '0'); + end case; + + op1 := r_reg_local; + op2 := addr_mod; + -- linear addressing + if m_reg_local = 2**BW_ADDRESS-1 then + op1 := r_reg_local; + op2 := addr_mod; + -- bit reverse operation + elsif m_reg_local = 0 then + -- reverse the input to the adder bit wise + -- so we just need to use a single adder + for i in 0 to BW_ADDRESS-1 loop + op1(BW_ADDRESS - 1 - i) := r_reg_local(i); + op2(BW_ADDRESS - 1 - i) := addr_mod(i); + end loop; + -- modulo arithmetic + else + bit_set := '0'; + for i in BW_ADDRESS-1 downto 0 loop + if m_reg_local(i) = '1' then + bit_set := '1'; + end if; + if bit_set = '1' then + modulo_bitmask(i) := '0'; + else + modulo_bitmask(i) := '1'; + end if; + end loop; + end if; + + new_r_reg_interm := op1 + op2; + + new_r_reg := new_r_reg_interm; + -- linear addressing + if m_reg_local = 2**BW_ADDRESS-1 then + new_r_reg := new_r_reg_interm; + -- bit reverse operation + elsif m_reg_local = 0 then + for i in 0 to BW_ADDRESS-1 loop + new_r_reg(BW_ADDRESS - 1 - i) := new_r_reg_interm(i); + end loop; + else + + end if; + + -- store the updated register in the global register file + -- do not store when we do nothing or there is nothing to update + -- LUA instructions DO NOT UPDATE the source register!! + if (adgen_mode_a = NOP or adgen_mode_a = ABSOLUTE or adgen_mode_a = IMMEDIATE or instr_array = INSTR_LUA) then + wr_R_port_A_valid <= '0'; + else + wr_R_port_A_valid <= '1'; + end if; + wr_R_port_A.reg_number <= unsigned(instr_word(10 downto 8)); + wr_R_port_A.reg_value <= new_r_reg; + + -- select the output of the AGU + case adgen_mode_a is + -- (Rn) - Nn + when POST_MIN_N => address_out_x_int <= r_reg_local; + -- (Rn) + Nn + when POST_PLUS_N => address_out_x_int <= r_reg_local; + -- (Rn)- + when POST_MIN_1 => address_out_x_int <= r_reg_local; + -- (Rn)+ + when POST_PLUS_1 => address_out_x_int <= r_reg_local; + -- (Rn) + when NOP => address_out_x_int <= r_reg_local; + -- (Rn + Nn) + when INDEXED_N => address_out_x_int <= new_r_reg; + -- -(Rn) + when PRE_MIN_1 => address_out_x_int <= new_r_reg; + -- absolute address (appended to instruction word) + when ABSOLUTE => address_out_x_int <= unsigned(optional_ea_word(BW_ADDRESS-1 downto 0)); + when IMMEDIATE => address_out_x_int <= r_reg_local; -- Done externally, value never used + end case; + -- LUA instructions only use the updated address! + if instr_array = INSTR_LUA then + address_out_x_int <= new_r_reg; + end if; + + end process address_generator_X; + + address_generator_Y: process(activate_adgen, activate_x_mem, activate_y_mem, activate_l_mem, instr_word, + register_file, adgen_mode_b, address_out_x_int) is + variable r_reg_local : unsigned(BW_ADDRESS-1 downto 0); + variable n_reg_local : unsigned(BW_ADDRESS-1 downto 0); + variable m_reg_local : unsigned(BW_ADDRESS-1 downto 0); + variable op2 : unsigned(BW_ADDRESS-1 downto 0); + variable new_r_reg : unsigned(BW_ADDRESS-1 downto 0); + begin + r_reg_local := register_file.addr_r(to_integer(unsigned((not instr_word(10)) & instr_word(14 downto 13)))); + n_reg_local := register_file.addr_n(to_integer(unsigned((not instr_word(10)) & instr_word(14 downto 13)))); + m_reg_local := register_file.addr_m(to_integer(unsigned((not instr_word(10)) & instr_word(14 downto 13)))); + + -- select the operands for the calculation + case adgen_mode_b is + -- (Rn) + Nn + when POST_PLUS_N => op2 := n_reg_local; + -- (Rn)- + when POST_MIN_1 => op2 := (others => '1'); -- -1 + -- (Rn)+ + when POST_PLUS_1 => op2 := to_unsigned(1, BW_ADDRESS); + -- (Rn) + when others => op2 := (others => '0'); + end case; + + new_r_reg := r_reg_local + op2; + -- TODO: USE modifier register! + + -- store the updated register in the global register file + -- do not store when we do nothing or there is nothing to update + if adgen_mode_b = NOP then + wr_R_port_B_valid <= '0'; + else + wr_R_port_B_valid <= '1'; + end if; + wr_R_port_B.reg_number <= unsigned((not instr_word(10)) & instr_word(14 downto 13)); + wr_R_port_B.reg_value <= new_r_reg; + + -- the address for the y memory is calculated in the first AGU if the x memory is not accessed! + -- so use the other output as address output for the y memory! + -- Furthermore, use the same address for L memory accesses (X and Y memory access the same address!) + if (activate_y_mem = '1' and activate_x_mem = '0') or activate_l_mem = '1' then + address_out_y <= address_out_x_int; + -- in any other case use the locally computed value + else + -- select the output of the AGU + case adgen_mode_b is + -- (Rn) + Nn + when POST_PLUS_N => address_out_y <= r_reg_local; + -- (Rn)- + when POST_MIN_1 => address_out_y <= r_reg_local; + -- (Rn)+ + when POST_PLUS_1 => address_out_y <= r_reg_local; + -- (Rn) + when others => address_out_y <= r_reg_local; + end case; + end if; + end process address_generator_Y; + +end architecture; diff --git a/FPGA_quartus/DSP/src/constants_pkg.vhd b/FPGA_quartus/DSP/src/constants_pkg.vhd new file mode 100644 index 0000000..4b8122d --- /dev/null +++ b/FPGA_quartus/DSP/src/constants_pkg.vhd @@ -0,0 +1,62 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; + + +package constants_pkg is + + ------------------------- + -- Flags in CCR register + ------------------------- + constant C_FLAG : natural := 0; + constant V_FLAG : natural := 1; + constant Z_FLAG : natural := 2; + constant N_FLAG : natural := 3; + constant U_FLAG : natural := 4; + constant E_FLAG : natural := 5; + constant L_FLAG : natural := 6; + constant S_FLAG : natural := 7; + + ------------------- + -- Pipeline stages + ------------------- + constant ST_FETCH : natural := 0; + constant ST_FETCH2 : natural := 1; + constant ST_DECODE : natural := 2; + constant ST_ADGEN : natural := 3; + constant ST_EXEC : natural := 4; + + ---------------------- + -- Activation signals + ---------------------- + constant ACT_ADGEN : natural := 0; -- Run the address generator + constant ACT_ALU : natural := 1; -- Activation of ALU results in modification of the status register + constant ACT_EXEC_BRA : natural := 2; -- Branch (in execute stage) + constant ACT_EXEC_CR_MOD : natural := 3; -- Control Register Modification (in execute stage) + constant ACT_EXEC_LOOP : natural := 4; -- Loop instruction (REP, DO) + constant ACT_X_MEM_RD : natural := 5; -- Init read from X memory + constant ACT_Y_MEM_RD : natural := 6; -- Init read from Y memory + constant ACT_P_MEM_RD : natural := 7; -- Init read from P memory + constant ACT_X_MEM_WR : natural := 8; -- Init write to X memory + constant ACT_Y_MEM_WR : natural := 9; -- Init write to Y memory + constant ACT_P_MEM_WR : natural := 10; -- Init write to P memory + constant ACT_REG_RD : natural := 11; -- Read from register (6 bit addressing) + constant ACT_REG_WR : natural := 12; -- Write to register (6 bit addressing) + constant ACT_IMM_8BIT : natural := 13; -- 8 bit immediate operand (in instruction word) + constant ACT_IMM_12BIT : natural := 14; -- 12 bit immediate operand (in instruction word) + constant ACT_IMM_LONG : natural := 15; -- 24 bit immediate operant (in optional instruction word) + constant ACT_X_BUS_RD : natural := 16; -- Read data via X-bus (from x0,x1,a,b) + constant ACT_X_BUS_WR : natural := 17; -- Write data via X-bus (to x0,x1,a,b) + constant ACT_Y_BUS_RD : natural := 18; -- Read data via Y-bus (from y0,y1,a,b) + constant ACT_Y_BUS_WR : natural := 19; -- Write data via Y-bus (to y0,y1,a,b) + constant ACT_L_BUS_RD : natural := 20; -- Read data via L-bus (from a10, b10,x,y,a,b,ab,ba) + constant ACT_L_BUS_WR : natural := 21; -- Write data via L-bus (to a10, b10,x,y,a,b,ab,ba) + constant ACT_BIT_MOD_WR : natural := 22; -- Bit modify write (to set for BSET, BCLR, BCHG) + constant ACT_REG_WR_CC : natural := 23; -- Write to register file conditionally (Tcc) + constant ACT_ALU_WR_CC : natural := 24; -- Write ALU result conditionally (Tcc) + constant ACT_NORM : natural := 25; -- NORM instruction needs special handling + +end package constants_pkg; diff --git a/FPGA_quartus/DSP/src/decode_stage.vhd b/FPGA_quartus/DSP/src/decode_stage.vhd new file mode 100644 index 0000000..0c62149 --- /dev/null +++ b/FPGA_quartus/DSP/src/decode_stage.vhd @@ -0,0 +1,1221 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity decode_stage is port( + activate_dec : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + dble_word_instr : out std_logic; + instr_array : out instructions_type; + act_array : out std_logic_vector(NUM_ACT_SIGNALS-1 downto 0); + reg_wr_addr : out std_logic_vector(5 downto 0); + reg_rd_addr : out std_logic_vector(5 downto 0); + x_bus_rd_addr : out std_logic_vector(1 downto 0); + x_bus_wr_addr : out std_logic_vector(1 downto 0); + y_bus_rd_addr : out std_logic_vector(1 downto 0); + y_bus_wr_addr : out std_logic_vector(1 downto 0); + l_bus_addr : out std_logic_vector(2 downto 0); + adgen_mode_a : out adgen_mode_type; + adgen_mode_b : out adgen_mode_type; + alu_ctrl : out alu_ctrl_type +); +end entity; + + +architecture rtl of decode_stage is + + signal instr_array_int : instructions_type; +-- signal activate_pm_int : std_logic; + type adgen_bittype_type is (NOP, SINGLE_X, SINGLE_X_SHORT, DOUBLE_X_Y); + -- SINGLE_X : MMMRRR + -- SINGLE_X_SHORT : MMRRR + -- DOUBLE_X_Y : mmrrMMRRR + signal adgen_bittype : adgen_bittype_type; + + signal ea_extension_available : std_logic; + + signal alu_tcc_decoded : std_logic; + signal alu_div_decoded : std_logic; + signal alu_norm_decoded : std_logic; + +begin + + + -- output the decoded instruction + instr_array <= instr_array_int; + + -- calculate whether this is a double word instruction + dble_word_instr <= '1' when ea_extension_available = '1' or + instr_array_int = INSTR_DO or + instr_array_int = INSTR_JCLR or + instr_array_int = INSTR_JSCLR or + instr_array_int = INSTR_JSET or + instr_array_int = INSTR_JSSET else + '0'; + + alu_instruction_decoder: process(instr_word, activate_dec, alu_tcc_decoded, + alu_div_decoded, alu_norm_decoded) is + variable instr_word_var : std_logic_vector(23 downto 0); + begin + if activate_dec = '1' then + instr_word_var := instr_word; + else + instr_word_var := (others => '0'); + end if; + + alu_ctrl.mul_op1 <= (others => '0'); + alu_ctrl.mul_op2 <= (others => '0'); + alu_ctrl.rotate <= '0'; + alu_ctrl.div_instr <= '0'; + alu_ctrl.norm_instr <= '0'; + alu_ctrl.shift_src <= '0'; + alu_ctrl.shift_src_sign <= (others => '0'); + alu_ctrl.shift_mode <= ZEROS; + alu_ctrl.add_src_stage_1 <= (others => '0'); + alu_ctrl.add_src_stage_2 <= (others => '0'); + alu_ctrl.add_src_sign <= (others => '0'); + alu_ctrl.logic_function <= (others => '0'); + alu_ctrl.word_24_update <= '0'; + alu_ctrl.rounding_used <= (others => '0'); + alu_ctrl.store_result <= '0'; + for i in 0 to 7 loop -- by default do not touch any of the ccr flags (L;E;U;N;Z;V;C) + alu_ctrl.ccr_flags_ctrl(i) <= DONT_TOUCH; + end loop; + alu_ctrl.dst_accu <= instr_word_var(3); -- default value for all alu operations + + -- check wether instruction that allows parallel moves + -- has to be decoded, then it is an ALU operation in the 8 LSBs + -- Only exceptions are DIV, NORM, and Tcc + if instr_word_var(23 downto 20) /= "0000" then + -- ABS + if instr_word_var(7 downto 4) = "0010" and instr_word_var(2 downto 0) = "110" then + -- Read accu + alu_ctrl.shift_mode <= NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- source/dst are the same register + alu_ctrl.shift_src_sign <= "10"; -- the sign of the operand depends on the operand + -- negative operand will negate the content of the accu as + -- needed by the ABS instruction + alu_ctrl.add_src_stage_2 <= "00"; -- select zero + alu_ctrl.store_result <= '1'; -- store the result + -- set all flags but carry + for i in 1 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- ADC + if instr_word_var(7 downto 5) = "001" and instr_word_var(2 downto 0) = "001" then + -- Read accu + alu_ctrl.shift_mode <= NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with the original sign + -- Read S + alu_ctrl.add_src_stage_1 <= "01" & instr_word_var(4); -- X or Y + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "00"; -- with original sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "10"; -- add carry to result of addition + -- set all flags + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- ADD + if instr_word_var(7) = '0' and instr_word_var(2 downto 0) = "000" and instr_word_var(6 downto 4) /= "000" then + -- Read accu + alu_ctrl.shift_mode <= NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with the original sign + -- Read S + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 4); -- source register (JJJ encoding) + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "00"; -- with original sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set all flags + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- ADDL + if instr_word_var(7 downto 4) = "0001" and instr_word_var(2 downto 0) = "010" then + -- Read accu + alu_ctrl.shift_mode <= SHIFT_LEFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with the original sign + -- Read S + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 4); -- source register (JJJ encoding) (here: A,B) + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "00"; -- with original sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set all flags + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- ADDR + if instr_word_var(7 downto 4) = "0000" and instr_word_var(2 downto 0) = "010" then + -- Read accu + alu_ctrl.shift_mode <= SHIFT_RIGHT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with the original sign + -- Read S + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 5) & '1'; -- source register (JJJ encoding) (here: A,B) + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "00"; -- with original sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set all flags + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- AND / OR / EOR + if instr_word_var(7 downto 6) = "01" and (instr_word_var(2 downto 0) = "110" or -- and + instr_word_var(2 downto 0) = "010" or -- or + instr_word_var(2 downto 0) = "011") then -- eor + alu_ctrl.logic_function <= instr_word_var(2 downto 0); -- 000: none, 110: and, 010: or, 011: eor, 111: not + alu_ctrl.word_24_update <= '1'; -- only accumulator bits 47 downto 24 affected? + -- Read accu + alu_ctrl.shift_mode <= NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with the original sign + -- Read S + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 4); -- source register (JJJ encoding) (here: A,B) + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "00"; -- with original sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set following flags + alu_ctrl.ccr_flags_ctrl(N_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(Z_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(V_FLAG) <= CLEAR; + end if; + -- ASL + if instr_word_var(7 downto 4) = "0011" and instr_word_var(2 downto 0) = "010" then + -- Read accu + alu_ctrl.shift_mode <= SHIFT_LEFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with the original sign + -- Read S + alu_ctrl.add_src_stage_2 <= "00"; -- select zero as operand + alu_ctrl.add_src_sign <= "00"; -- with original sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set all flags + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- ASR + if instr_word_var(7 downto 4) = "0010" and instr_word_var(2 downto 0) = "010" then + -- Read accu + alu_ctrl.shift_mode <= SHIFT_RIGHT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with the original sign + -- Read S + alu_ctrl.add_src_stage_2 <= "00"; -- select zero as operand + alu_ctrl.add_src_sign <= "00"; -- with original sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set following flags +-- alu_ctrl.ccr_flags_ctrl(S_FLAG) <= MODIFY; +-- alu_ctrl.ccr_flags_ctrl(E_FLAG) <= MODIFY; +-- alu_ctrl.ccr_flags_ctrl(U_FLAG) <= MODIFY; +-- alu_ctrl.ccr_flags_ctrl(N_FLAG) <= MODIFY; +-- alu_ctrl.ccr_flags_ctrl(Z_FLAG) <= MODIFY; +-- alu_ctrl.ccr_flags_ctrl(V_FLAG) <= CLEAR; +-- alu_ctrl.ccr_flags_ctrl(C_FLAG) <= MODIFY; + -- set all flags, V-flag will be cleared due to shifting + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- CLR + if instr_word_var(7 downto 4) = "0001" and instr_word_var(2 downto 0) = "011" then + -- Read accu + alu_ctrl.shift_mode <= ZEROS; + -- Read S + alu_ctrl.add_src_stage_2 <= "00"; -- select zero as operand + alu_ctrl.add_src_sign <= "00"; -- with original sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set following flags + alu_ctrl.ccr_flags_ctrl(S_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(E_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(U_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(N_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(Z_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(V_FLAG) <= CLEAR; + end if; + -- CMP + if instr_word_var(7) = '0' and instr_word_var(6 downto 5) /= "01" and + instr_word_var(2 downto 0) = "101" then + -- Read accu + alu_ctrl.shift_mode <= NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with the original sign + -- Read S + if instr_word_var(6) = '1' then + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 4); -- source register (JJJ encoding) x0,x1,y0,y1 + else + alu_ctrl.add_src_stage_1 <= "001"; -- select opposite accu (JJJ encoding) + end if; + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "01"; -- with negative sign + alu_ctrl.store_result <= '0'; -- do not store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set all flags + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- CMPM + if instr_word_var(7) = '0' and instr_word_var(6 downto 5) /= "01" and + instr_word_var(2 downto 0) = "111" then + -- Read accu + alu_ctrl.shift_mode <= NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "10"; -- with the sign dependant sign (magnitude!) + -- Read S + if instr_word_var(6) = '1' then + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 4); -- source register (JJJ encoding) x0,x1,y0,y1 + else + alu_ctrl.add_src_stage_1 <= "001"; -- select opposite accu (JJJ encoding) + end if; + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "10"; -- with sign dependant sign (magnitude!) + alu_ctrl.store_result <= '0'; -- do not store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set all flags + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- LSL + if instr_word_var(7 downto 4) = "0011" and instr_word_var(2 downto 0) = "011" then + alu_ctrl.word_24_update <= '1'; + -- Read accu + alu_ctrl.shift_mode <= SHIFT_LEFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with normal sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + alu_ctrl.add_src_stage_2 <= "00"; -- select zero as second operand + -- set N,Z,V,C flags + for i in 0 to 3 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- LSR + if instr_word_var(7 downto 4) = "0010" and instr_word_var(2 downto 0) = "011" then + alu_ctrl.word_24_update <= '1'; + -- Read accu + alu_ctrl.shift_mode <= SHIFT_RIGHT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with normal sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + alu_ctrl.add_src_stage_2 <= "00"; -- select zero as second operand + -- set N,Z,V,C flags + for i in 0 to 3 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- MPY, MPYR, MAC, MACR + if instr_word_var(7) = '1' then + case instr_word_var(6 downto 4) is + when "000" => alu_ctrl.mul_op1 <= "00"; alu_ctrl.mul_op2 <= "00"; -- x0,x0 + when "001" => alu_ctrl.mul_op1 <= "10"; alu_ctrl.mul_op2 <= "10"; -- y0,y0 + when "010" => alu_ctrl.mul_op1 <= "01"; alu_ctrl.mul_op2 <= "00"; -- x1,x0 + when "011" => alu_ctrl.mul_op1 <= "11"; alu_ctrl.mul_op2 <= "10"; -- y1,y0 + when "100" => alu_ctrl.mul_op1 <= "00"; alu_ctrl.mul_op2 <= "11"; -- x0,y1 + when "101" => alu_ctrl.mul_op1 <= "10"; alu_ctrl.mul_op2 <= "00"; -- y0,x0 + when "110" => alu_ctrl.mul_op1 <= "01"; alu_ctrl.mul_op2 <= "10"; -- x1,y0 + when others => alu_ctrl.mul_op1 <= "11"; alu_ctrl.mul_op2 <= "01"; -- y1,x1 + end case; + alu_ctrl.store_result <= '1'; -- store result in accu + alu_ctrl.add_src_stage_2 <= "10"; -- select mul out for adder! + alu_ctrl.add_src_sign <= '0' & instr_word_var(2); -- select +/- + alu_ctrl.rounding_used <= '0' & instr_word_var(0); -- rounding is determined by that bit! + if instr_word_var(1) = '0' then -- MPY(R) + alu_ctrl.shift_mode <= ZEROS; + else -- MAC(R) + alu_ctrl.shift_mode <= NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with the original sign + end if; + -- set all flags but carry! + for i in 1 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- NEG + if instr_word_var(7 downto 4) = "0011" and instr_word_var(2 downto 0) = "110" then + -- Read accu + alu_ctrl.shift_mode <= ZEROS; +-- alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to +-- alu_ctrl.shift_src_sign <= "01"; -- with negative sign + -- Read Accu + alu_ctrl.add_src_stage_1 <= "000"; -- source register equal to dst_register + alu_ctrl.add_src_stage_2 <= "01"; -- select register as operand + alu_ctrl.add_src_sign <= "01"; -- with negative sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set all flags but carry! + for i in 1 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- NOT + if instr_word_var(7 downto 4) = "0001" and instr_word_var(2 downto 0) = "111" then + alu_ctrl.word_24_update <= '1'; + -- Read accu + alu_ctrl.shift_mode <= NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with normal sign + alu_ctrl.logic_function <= instr_word_var(2 downto 0); -- select not operation + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set following flags + alu_ctrl.ccr_flags_ctrl(N_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(Z_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(V_FLAG) <= CLEAR; + end if; + -- RND + if instr_word_var(7 downto 4) = "0001" and instr_word_var(2 downto 0) = "001" then + -- Read accu + alu_ctrl.shift_mode <= NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with normal sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "01"; -- normal rounding needed + alu_ctrl.add_src_stage_2 <= "00"; -- select zero as second operand + -- set all flags but carry! + for i in 1 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- ROL + if instr_word_var(7 downto 4) = "0011" and instr_word_var(2 downto 0) = "111" then + alu_ctrl.word_24_update <= '1'; + alu_ctrl.rotate <= '1'; + -- Read accu + alu_ctrl.shift_mode <= SHIFT_LEFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with normal sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + alu_ctrl.add_src_stage_2 <= "00"; -- select zero as second operand + -- set the following flags + alu_ctrl.ccr_flags_ctrl(C_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(V_FLAG) <= CLEAR; + alu_ctrl.ccr_flags_ctrl(Z_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(N_FLAG) <= MODIFY; + end if; + -- ROR + if instr_word_var(7 downto 4) = "0010" and instr_word_var(2 downto 0) = "111" then + alu_ctrl.word_24_update <= '1'; + alu_ctrl.rotate <= '1'; + -- Read accu + alu_ctrl.shift_mode <= SHIFT_RIGHT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with normal sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + alu_ctrl.add_src_stage_2 <= "00"; -- select zero as second operand + -- set the following flags + alu_ctrl.ccr_flags_ctrl(C_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(V_FLAG) <= CLEAR; + alu_ctrl.ccr_flags_ctrl(Z_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(N_FLAG) <= MODIFY; + end if; + -- SBC + if instr_word_var(7 downto 5) = "001" and instr_word_var(2 downto 0) = "101" then + -- Read accu + alu_ctrl.shift_mode <= NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with normal sign + -- Read S + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 4); -- source register (JJJ encoding) X,Y + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "01"; -- with negative sign + alu_ctrl.rounding_used <= "11"; -- subtract carry + alu_ctrl.store_result <= '1'; -- store the result + -- set all flags! + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- SUB + if instr_word_var(7) = '0' and instr_word_var(2 downto 0) = "100" then + -- Read accu + alu_ctrl.shift_mode <= NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with normal sign + -- Read S + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 4); -- source register (JJJ encoding) + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "01"; -- with negative sign + alu_ctrl.rounding_used <= "00"; -- no rounding needed + alu_ctrl.store_result <= '1'; -- store the result + -- set all flags! + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- SUBL + if instr_word_var(7 downto 4) = "0001" and instr_word_var(2 downto 0) = "110" then + -- Read accu + alu_ctrl.shift_mode <= SHIFT_LEFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with normal sign + -- Read S + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 4); -- source register (JJJ encoding) + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "01"; -- with negative sign + alu_ctrl.rounding_used <= "00"; -- no rounding needed + alu_ctrl.store_result <= '1'; -- store the result + -- set all flags! + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- SUBR + if instr_word_var(7 downto 4) = "0000" and instr_word_var(2 downto 0) = "110" then + -- Read accu + alu_ctrl.shift_mode <= SHIFT_RIGHT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with normal sign + -- Read S + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 5) & '1'; -- source register (JJJ encoding) + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "01"; -- with negative sign + alu_ctrl.rounding_used <= "00"; -- no rounding needed + alu_ctrl.store_result <= '1'; -- store the result + -- set all flags! + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- TFR + if instr_word_var(7) = '0' and instr_word_var(6 downto 5) /= "01" and + instr_word_var(6 downto 4) /= "001" and instr_word_var(2 downto 0) = "001" then + -- do not read accu + alu_ctrl.shift_mode <= ZEROS; + -- Read S + if instr_word_var(6) = '1' then + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 4); -- source register (JJJ encoding) + else + alu_ctrl.add_src_stage_1 <= "001"; -- B,A or A,B (depending on dest. accu) + end if; + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "00"; -- with positive sign + alu_ctrl.rounding_used <= "00"; -- no rounding needed + alu_ctrl.store_result <= '1'; -- store the result + -- do not set any flag at all! + end if; + -- TST + if instr_word_var(7 downto 4) = "0000" and instr_word_var(2 downto 0) = "011" then + -- do not read accu + alu_ctrl.shift_mode <= NO_SHIFT; -- no shift + alu_ctrl.shift_src <= instr_word_var(3); -- read source accu + alu_ctrl.shift_src_sign <= "00"; -- sign unchanged + -- Read S + alu_ctrl.add_src_stage_2 <= "00"; -- select zero + alu_ctrl.add_src_sign <= "00"; -- with positive sign + alu_ctrl.rounding_used <= "00"; -- no rounding needed + alu_ctrl.store_result <= '0'; -- do not store the result + -- set all flags but carry! + for i in 1 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + end if; -- Parallel move ALU instructions + + -- Tcc + if alu_tcc_decoded = '1' then + -- Read source + if instr_word_var(6) = '1' then + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 4); -- source register (JJJ encoding) + else + alu_ctrl.add_src_stage_1 <= "001"; -- B,A or A,B (depending on dest. accu) + end if; + alu_ctrl.add_src_stage_2 <= "01"; -- select the registers as source + -- The .store_result flag is generated in the execute stage + -- depending on the condition codes + -- do not set any flag at all! + end if; +--mul_op1 : std_logic_vector(1 downto 0); -- x0,x1,y0,y1 +--mul_op2 : std_logic_vector(1 downto 0); -- x0,x1,y0,y1 +--shift_src : std_logic; -- a,b +--shift_src_sign : std_logic_vector(1 downto 0); -- 00: pos, 01: neg, 10: sign dependant, 11: reserved +--shift_mode : alu_shift_mode; +--add_src_stage_1 : std_logic_vector(2 downto 0); -- x0,x1,y0,y1,x,y,a,b +--add_src_stage_2 : std_logic_vector(1 downto 0); -- 00: 0 , 01: add_src_1, 10: mul_result, 11: reserved +--add_src_sign : std_logic_vector(1 downto 0); -- 00: pos, 01: neg, 10: sign dependant, 11: div instruction! +--logic_function : std_logic_vector(2 downto 0); -- 000: none, 110: and, 010: or, 011: eor, 111: not +--word_24_update : std_logic; -- only accumulator bits 47 downto 24 affected? +--rounding_used : std_logic_vector(1 downto 0); -- 00: no rounding, 01: rounding, 10: add carry, 11: subtract carry +--store_result : std_logic; -- 0: do not update accumulator, 1: update accumulator +--dst_accu : std_logic; -- 0: a, 1: b + -- DIV + if alu_div_decoded = '1' then + alu_ctrl.store_result <= '1'; -- do store the result + -- shifter operation + alu_ctrl.shift_mode <= SHIFT_LEFT; -- shift left + alu_ctrl.shift_src <= instr_word_var(3); -- read source accu + alu_ctrl.div_instr <= '1'; -- this is THE div instruction, special handling needed + -- source operand loading + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 4); -- source register (JJJ encoding) + alu_ctrl.add_src_stage_2 <= "01"; -- select the registers as source + alu_ctrl.add_src_sign <= "11"; -- div instruction, sign dependant on D[55] XOR S[23] + -- if 1: positive, if 0: negative + alu_ctrl.ccr_flags_ctrl(C_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(V_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(L_FLAG) <= MODIFY; + end if; + -- NORM + if alu_norm_decoded = '1' then + -- set all alu-ctrl signals to ASL/ASR already here + -- depending on the condition code registers the flags + -- will be completed in the execute stage + alu_ctrl.norm_instr <= '1'; + -- Read accu + --alu_ctrl.shift_mode <= SHIFT_RIGHT/SHIFT_LEFT/NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with the original sign + -- Read S + alu_ctrl.add_src_stage_2 <= "00"; -- select zero as operand + alu_ctrl.add_src_sign <= "00"; -- with original sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set all flags, V-flag will be cleared due to shifting + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + + end if; + end process; + + + instruction_decoder: process(instr_word, activate_dec) is + variable instr_word_var : std_logic_vector(23 downto 0); + procedure activate_AGU is + begin + -- check for immediate long addressing + if instr_word_var(13 downto 8) = "110100" then + act_array(ACT_IMM_LONG) <= '1'; + act_array(ACT_X_MEM_RD) <= '0'; -- No memory accesses for Immediate addressing! + act_array(ACT_Y_MEM_RD) <= '0'; + act_array(ACT_X_MEM_WR) <= '0'; + act_array(ACT_Y_MEM_WR) <= '0'; + else + act_array(ACT_ADGEN) <= '1'; + end if; + end procedure activate_AGU; + begin + instr_array_int <= INSTR_NOP; + act_array <= (others => '0'); + adgen_bittype <= NOP; + reg_rd_addr <= (others => '0'); + reg_wr_addr <= (others => '0'); + x_bus_rd_addr <= (others => '0'); + x_bus_wr_addr <= (others => '0'); + y_bus_rd_addr <= (others => '0'); + y_bus_wr_addr <= (others => '0'); + l_bus_addr <= instr_word_var(19) & instr_word_var(17 downto 16); + + alu_tcc_decoded <= '0'; + alu_div_decoded <= '0'; + alu_norm_decoded <= '0'; + + -- in case the decoding is not activated we insert a nop + if activate_dec = '1' then + instr_word_var := instr_word; + else + instr_word_var := (others => '0'); + end if; + + if instr_word_var(23 downto 16) = X"00" then + case instr_word_var(15 downto 0) is + when X"0000" => instr_array_int <= INSTR_NOP; + when X"0004" => instr_array_int <= INSTR_RTI; act_array(ACT_EXEC_BRA) <= '1'; + when X"0005" => instr_array_int <= INSTR_ILLEGAL; + when X"0006" => instr_array_int <= INSTR_SWI; + when X"000C" => instr_array_int <= INSTR_RTS; act_array(ACT_EXEC_BRA) <= '1'; + when X"0084" => instr_array_int <= INSTR_RESET; + when X"0086" => instr_array_int <= INSTR_WAIT; + when X"0087" => instr_array_int <= INSTR_STOP; + when X"008C" => instr_array_int <= INSTR_ENDDO; + act_array(ACT_EXEC_LOOP) <= '1'; + when others => + act_array(ACT_EXEC_CR_MOD) <= '1'; -- modify control register + if instr_word_var(7 downto 2) = "101110" then + instr_array_int <= INSTR_ANDI; + elsif instr_word_var(7 downto 2) = "111110" then + instr_array_int <= INSTR_ORI; + end if; + end case; + end if; + --------------------------------------------------------- + -- DIV and NORM + --------------------------------------------------------- + if instr_word_var(23 downto 16) = X"01" then + -- DIV + if instr_word_var(15 downto 6) = "1000000001" and instr_word_var(2 downto 0) = "000" then + alu_div_decoded <= '1'; + act_array(ACT_ALU) <= '1'; -- force ALU to update status register + end if; + -- NORM + if instr_word_var(15 downto 11) = "11011" and instr_word_var(7 downto 4) = "0001" and + instr_word_var(2 downto 0) = "101" then + alu_norm_decoded <= '1'; + act_array(ACT_NORM) <= '1'; -- NORM instruction decoded, + -- special handling in exec-stage is caused + act_array(ACT_REG_RD) <= '1'; + reg_rd_addr <= instr_word_var(13 downto 12) & '0' & instr_word_var(10 downto 8); -- Write same Rn + act_array(ACT_REG_WR) <= '1'; + reg_wr_addr <= instr_word_var(13 downto 12) & '0' & instr_word_var(10 downto 8); -- Write same Rn + end if; + end if; + --------------------------------------------------------- + -- Tcc + --------------------------------------------------------- + if instr_word_var(23 downto 16) = X"02" or instr_word_var(23 downto 16) = X"03" then + -- Tcc S1, D1 S2, D2 (ALU/Reg file) + if instr_word_var(16) = '0' and instr_word_var(11 downto 7) = "00000" and + instr_word_var(2 downto 0) = "000" then + act_array(ACT_ALU_WR_CC) <= '1'; + alu_tcc_decoded <= '1'; + -- Tcc S1, D1 S2, D2 (ALU/Reg file) + elsif instr_word_var(16) = '1' and instr_word_var(11) = '0' and + instr_word_var(7) = '0' then + act_array(ACT_ALU_WR_CC) <= '1'; + alu_tcc_decoded <= '1'; + act_array(ACT_REG_WR_CC) <= '1'; + reg_rd_addr <= "010" & instr_word_var(10 downto 8); -- Read Rn + reg_wr_addr <= "010" & instr_word_var( 2 downto 0); -- Write to other Rn + end if; + end if; + --------------------------------------------------------- + -- MOVEC and LUA instruction with registers + --------------------------------------------------------- + if instr_word_var(23 downto 16) = X"04" then + act_array(ACT_REG_WR) <= '1'; + -- LUA instruction + if instr_word_var(15 downto 13) = "010" and instr_word_var(7 downto 4) = "0001" then + instr_array_int <= INSTR_LUA; + act_array(ACT_ADGEN) <= '1'; + adgen_bittype <= SINGLE_X_SHORT; + reg_wr_addr <= instr_word_var(5 downto 0); + end if; + -- MOVEC instruction (S1, D2) or (S2, D1) + if instr_word_var(14) = '1' and instr_word_var(7 downto 5) = "101" then + instr_array_int <= INSTR_MOVEC; + act_array(ACT_REG_RD) <= '1'; + -- Write D1 + if instr_word_var(15) = '1' then + reg_wr_addr <= instr_word_var(5 downto 0); + reg_rd_addr <= instr_word_var(13 downto 8); + -- Read S1 + else + reg_wr_addr <= instr_word_var(13 downto 8); + reg_rd_addr <= instr_word_var(5 downto 0); + end if; + end if; + end if; + ------------------------------------------------------------------------- + -- MOVEC instruction with memory access/absolute address + ------------------------------------------------------------------------- + if instr_word_var(23 downto 16) = X"05" and + instr_word_var(7) = '0' and instr_word_var(5) = '1' then + + instr_array_int <= INSTR_MOVEC; + -- read from memory, write to register + if instr_word_var(15) = '1' then + act_array(ACT_REG_WR) <= '1'; + reg_wr_addr <= instr_word_var(5 downto 0); + -- X Memory read? + if instr_word_var(6) = '0' then + act_array(ACT_X_MEM_RD) <= '1'; + -- Y Memory read? + else + act_array(ACT_Y_MEM_RD) <= '1'; + end if; + -- write to memory, read register + else + act_array(ACT_REG_RD) <= '1'; + reg_rd_addr <= instr_word_var(5 downto 0); + -- X Memory write? + if instr_word_var(6) = '0' then + act_array(ACT_X_MEM_WR) <= '1'; + -- Y Memory write? + else + act_array(ACT_Y_MEM_WR) <= '1'; + end if; + end if; + -- AGU needed? + if instr_word_var(14) = '1' then + -- detect whether two word instruction! + adgen_bittype <= SINGLE_X; + -- check for immediate long addressing + if instr_word_var(13 downto 8) = "110100" then + act_array(ACT_IMM_LONG) <= '1'; + act_array(ACT_X_MEM_RD) <= '0'; -- No memory accesses for Immediate addressing! + act_array(ACT_Y_MEM_RD) <= '0'; + act_array(ACT_X_MEM_WR) <= '0'; + act_array(ACT_Y_MEM_WR) <= '0'; + else + act_array(ACT_ADGEN) <= '1'; + end if; + else + -- X:/Y:aa short is done in the adgen-stage automatically + end if; + end if; + ------------------------------------------------------------------------- + -- MOVEC instruction with immediate + ------------------------------------------------------------------------- + if instr_word_var(23 downto 16) = X"05" and instr_word_var(7 downto 5) = "101" then + instr_array_int <= INSTR_MOVEC; + act_array(ACT_IMM_8BIT) <= '1'; + act_array(ACT_REG_WR) <= '1'; + reg_wr_addr <= instr_word_var(5 downto 0); + end if; + --------------------------------- + -- REP or DO loop? + --------------------------------- + if instr_word_var(23 downto 16) = X"06" then + -- Instruction encoding is the same for both except of this bit + if instr_word_var(5) = '1' then + instr_array_int <= INSTR_REP; + else + instr_array_int <= INSTR_DO; + end if; + act_array(ACT_EXEC_LOOP) <= '1'; + -- Init reading of loop counter from memory + if instr_word_var(15) = '0' and instr_word_var(7) = '0' then + -- X/Y: ea? + if instr_word_var(14) = '1' then + act_array(ACT_ADGEN) <= '1'; + end if; + -- X/Y: aa? + -- Done automatically in the ADGEN stage by testing whether the ADGEN unit activated or not! + -- If not the absolute address stored in the instruction word is used. + ------- + -- only a single memory access is required + adgen_bittype <= SINGLE_X; + -- X/Y as source? + if instr_word_var(6) = '0' then + act_array(ACT_X_MEM_RD) <= '1'; + else + act_array(ACT_Y_MEM_RD) <= '1'; + end if; + elsif instr_word_var(15) = '1' and instr_word_var(7) = '0' then + -- S (register as source) + reg_rd_addr <= instr_word_var(13 downto 8); + act_array(ACT_REG_RD) <= '1'; + -- #xxx ,12 bit immediate + elsif instr_word_var(7 downto 6) = "10" and instr_word_var(4) = '0' then + act_array(ACT_IMM_12BIT) <= '1'; + end if; + end if; + -------------------------------- + -- MOVEM (Program memory move) + -------------------------------- + if instr_word_var(23 downto 16) = X"07" then + -- read memory, write reg + if instr_word_var(15) = '1' then + act_array(ACT_REG_WR) <= '1'; + reg_wr_addr <= instr_word_var(5 downto 0); + act_array(ACT_P_MEM_RD) <= '1'; + -- read reg, write memory + elsif instr_word_var(15) = '0' then + act_array(ACT_REG_RD) <= '1'; + reg_rd_addr <= instr_word_var(5 downto 0); + act_array(ACT_P_MEM_WR) <= '1'; + end if; + -- AGU needed? + if instr_word_var(14) = '1' and instr_word_var(7 downto 6) = "10" then + adgen_bittype <= SINGLE_X; + -- activate AGU and test whether immediate data is used + activate_AGU; + elsif instr_word_var(14) = '0' and instr_word_var(7 downto 6) = "00" then + -- X:/Y:aa short is done in the adgen-stage automatically + end if; + end if; + -------------------------------- + -- MOVEP (Peripheral memory move) + -------------------------------- + if instr_word_var(23 downto 16) = "0000100-" then + -- TODO?? Why parallel moves in software model?? + case instr_word_var(15 downto 0) is +-- when "-1------1-------" => instr_array_int(INSTR_MOVEP) <= '1'; +-- when "-1------01------" => instr_array_int(INSTR_MOVEP) <= '1'; +-- when "-1------00------" => instr_array_int(INSTR_MOVEP) <= '1'; + when others => + end case; + end if; + -- BSET, BCLR, BCHG, BTST, JCLR, JSET, JSCLR, JSSET, JMP, JCC, JSCC, JSR + if instr_word_var(23 downto 16) = X"0A" or instr_word_var(23 downto 16) = X"0B" then + + reg_rd_addr <= instr_word_var(13 downto 8); + reg_wr_addr <= instr_word_var(13 downto 8); + + if instr_word_var(16) = '0' then + if instr_word_var(7) = '0' and instr_word_var(5) = '0' then + instr_array_int <= INSTR_BCLR; + elsif instr_word_var(7) = '0' and instr_word_var(5) = '1' then + instr_array_int <= INSTR_BSET; + elsif instr_word_var(7) = '1' and instr_word_var(5) = '0' then + instr_array_int <= INSTR_JCLR; + elsif instr_word_var(7) = '1' and instr_word_var(5) = '1' then + instr_array_int <= INSTR_JSET; + end if; + elsif instr_word_var(16) = '1' then + if instr_word_var(7) = '0' and instr_word_var(5) = '0' then + instr_array_int <= INSTR_BCHG; + elsif instr_word_var(7) = '0' and instr_word_var(5) = '1' then + instr_array_int <= INSTR_BTST; + elsif instr_word_var(7) = '1' and instr_word_var(5) = '0' then + instr_array_int <= INSTR_JSCLR; + elsif instr_word_var(7) = '1' and instr_word_var(5) = '1' then + instr_array_int <= INSTR_JSSET; + end if; + end if; + if instr_word_var(7) = '1' then + act_array(ACT_EXEC_BRA) <= '1'; + end if; + + -- memory access? + if instr_word_var(15) = '0' then + -- X: + if instr_word_var(6) = '0' then + act_array(ACT_X_MEM_RD) <= '1'; + -- if not a jump instruction and not BTST write back the result + if instr_word_var(7) = '0' and not(instr_word_var(16) = '1' and instr_word_var(5) = '1') then + act_array(ACT_X_MEM_WR) <= '1'; + end if; + -- Y: + else + act_array(ACT_Y_MEM_RD) <= '1'; + -- if not a jump instruction and not BTST write back the result + if instr_word_var(7) = '0' and not(instr_word_var(16) = '1' and instr_word_var(5) = '1') then + act_array(ACT_Y_MEM_WR) <= '1'; + end if; + end if; + end if; + + case instr_word_var(15 downto 14) is + -- X:/Y: aa + when "00" => + + -- X:/Y: ea + when "01" => + act_array(ACT_ADGEN) <= '1'; + adgen_bittype <= SINGLE_X; + + -- X:/Y: pp + -- TODO! + when "10" => + + when others => -- "11" + if instr_word_var(7 downto 0) = "10000000" then + -- JMP/JSR ea + act_array(ACT_EXEC_BRA) <= '1'; + act_array(ACT_ADGEN) <= '1'; + adgen_bittype <= SINGLE_X; + if instr_word_var(16) = '0' then + instr_array_int <= INSTR_JMP; + elsif instr_word_var(16) = '1' then + instr_array_int <= INSTR_JSR; + end if; + elsif instr_word_var(7 downto 4) = "1010" then + -- JCC/JSCC ea + act_array(ACT_EXEC_BRA) <= '1'; + act_array(ACT_ADGEN) <= '1'; + adgen_bittype <= SINGLE_X; + if instr_word_var(16) = '0' then + instr_array_int <= INSTR_JCC; + elsif instr_word_var(16) = '1' then + instr_array_int <= INSTR_JSCC; + end if; + -- JSCLR,JSET,JCLR,JSSET,BTST,BCLR,BSET,BCHG S/D + else + act_array(ACT_REG_RD) <= '1'; + -- if not a jump instruction and not BTST write back the result + if instr_word_var(7) = '0' and not(instr_word_var(16) = '1' and instr_word_var(5) = '1') then + act_array(ACT_REG_WR) <= '1'; + end if; + end if; + end case; + end if; + -- JMP xxx (absoulute short) + if instr_word_var(23 downto 16) = X"0C" then + if instr_word_var(15 downto 12) = "0000" then + instr_array_int <= INSTR_JMP; + act_array(ACT_EXEC_BRA) <= '1'; + end if; + end if; + -- JSR xxx (absolute short) + if instr_word_var(23 downto 16) = X"0D" then + if instr_word_var(15 downto 12) = "0000" then + instr_array_int <= INSTR_JSR; + act_array(ACT_EXEC_BRA) <= '1'; + end if; + end if; + -- JCC xxx (absolute short) + if instr_word_var(23 downto 16) = X"0E" then + instr_array_int <= INSTR_JCC; + act_array(ACT_EXEC_BRA) <= '1'; + end if; + -- JSCC xxx (absolute short) + if instr_word_var(23 downto 16) = X"0F" then + instr_array_int <= INSTR_JSCC; + act_array(ACT_EXEC_BRA) <= '1'; + end if; + + ------------------------------------------------ + -- PARALLEL MOVE SECTION!! + ------------------------------------------------ + -- Here are the ALU operations that allow for parallel moves + if instr_word_var(23 downto 20) /= "0000" then + act_array(ACT_ALU) <= '1'; -- force ALU to update status register + end if; + -- PM: I + if instr_word_var(23 downto 21) = "001" and instr_word_var(20 downto 18) /= "000" then + act_array(ACT_IMM_8BIT) <= '1'; + act_array(ACT_REG_WR) <= '1'; + reg_wr_addr <= '0' & instr_word_var(20 downto 16); + end if; + -- PM: R + if instr_word_var(23 downto 18) = "001000" then + act_array(ACT_REG_WR) <= '1'; + reg_wr_addr <= '0' & instr_word_var(12 downto 8); + act_array(ACT_REG_RD) <= '1'; + reg_rd_addr <= '0' & instr_word_var(17 downto 13); + end if; + -- PM: U + if instr_word_var(23 downto 13) = "00100000010" then + act_array(ACT_ADGEN) <= '1'; + adgen_bittype <= SINGLE_X_SHORT; + end if; + -- PM: X or PM:Y + if instr_word_var(23 downto 22) = "01" and + -- Check whether L: type parallel move. If so do not enter this branch! + not (instr_word_var(21 downto 20) = "00" and instr_word_var(18) = '0') then + -- read memory, write reg + if instr_word_var(15) = '1' then + act_array(ACT_REG_WR) <= '1'; + reg_wr_addr <= '0' & instr_word_var(21 downto 20) & instr_word_var(18 downto 16); -- TODO: CHECK!! + -- X Memory read? + if instr_word_var(19) = '0' then + act_array(ACT_X_MEM_RD) <= '1'; + -- Y Memory read? + else + act_array(ACT_Y_MEM_RD) <= '1'; + end if; + -- read reg, write memory + elsif instr_word_var(15) = '0' then + act_array(ACT_REG_RD) <= '1'; + reg_rd_addr <= '0' & instr_word_var(21 downto 20) & instr_word_var(18 downto 16); -- TODO: CHECK!! + -- X Memory write? + if instr_word_var(19) = '0' then + act_array(ACT_X_MEM_WR) <= '1'; + -- Y Memory write? + else + act_array(ACT_Y_MEM_WR) <= '1'; + end if; + end if; + -- AGU needed? + if instr_word_var(14) = '1' then + -- detect whether two word instruction! + adgen_bittype <= SINGLE_X; + -- activate AGU and test whether immediate data is used + activate_AGU; + else + -- X:/Y:aa short is done in the adgen-stage automatically + end if; + end if; + -- PM: X:R or R:Y (Class I) + if instr_word_var(23 downto 20) = "0001" then + adgen_bittype <= SINGLE_X; + -- X:R + if instr_word_var(14) = '0' then + x_bus_rd_addr <= instr_word_var(19 downto 18); + x_bus_wr_addr <= instr_word_var(19 downto 18); + y_bus_rd_addr <= '1' & instr_word_var(17); + y_bus_wr_addr <= '0' & instr_word_var(16); -- TODO: Check encoding, manual uses three fs! + -- S2,D2 in any case! + act_array(ACT_Y_BUS_RD) <= '1'; + act_array(ACT_Y_BUS_WR) <= '1'; + -- Write D1? + if instr_word_var(15) = '1' then + act_array(ACT_X_MEM_RD) <= '1'; + act_array(ACT_X_BUS_WR) <= '1'; + else + -- Read S1? + act_array(ACT_X_MEM_WR) <= '1'; + act_array(ACT_X_BUS_RD) <= '1'; + end if; + -- R:Y + elsif instr_word_var(14) = '1' then + x_bus_rd_addr <= '1' & instr_word_var(19); + x_bus_wr_addr <= '0' & instr_word_var(18); + y_bus_rd_addr <= instr_word_var(17 downto 16); + y_bus_wr_addr <= instr_word_var(17 downto 16); + -- S1,D1 in any case! + act_array(ACT_X_BUS_RD) <= '1'; + act_array(ACT_X_BUS_WR) <= '1'; + -- Write D1? + if instr_word_var(15) = '1' then + act_array(ACT_Y_MEM_RD) <= '1'; + act_array(ACT_Y_BUS_WR) <= '1'; + else + -- Read S1? + act_array(ACT_Y_MEM_WR) <= '1'; + act_array(ACT_Y_BUS_RD) <= '1'; + end if; + + end if; + -- detect whether two word instruction! + adgen_bittype <= SINGLE_X; + -- activate AGU and test whether immediate data is used + activate_AGU; + end if; + -- PM: X:R or R:Y (Class II) + if instr_word_var(23 downto 17) = "0000100" and instr_word_var(14) = '0' then + act_array(ACT_REG_RD) <= '1'; + -- X:R + if instr_word_var(15) = '0' then + reg_rd_addr <= "00111" & instr_word_var(16); -- read A or B + act_array(ACT_X_MEM_WR) <= '1'; -- and store it in X memory + x_bus_rd_addr <= "00"; -- read x0 + x_bus_wr_addr <= '1' & instr_word_var(16); -- and write to A or B + act_array(ACT_X_BUS_RD) <= '1'; + act_array(ACT_X_BUS_WR) <= '1'; + -- R:Y + elsif instr_word_var(15) = '1' then + reg_rd_addr <= "00111" & instr_word_var(16); -- read A or B + act_array(ACT_Y_MEM_WR) <= '1'; -- and store it in Y memory + y_bus_rd_addr <= "00"; -- read y0 + y_bus_wr_addr <= '1' & instr_word_var(16); -- and write to A or B + act_array(ACT_Y_BUS_RD) <= '1'; + act_array(ACT_Y_BUS_WR) <= '1'; + end if; + -- detect whether two word instruction! + adgen_bittype <= SINGLE_X; + -- activate AGU and test whether immediate data is used + activate_AGU; + end if; + -- PM: L: + l_bus_addr <= instr_word_var(19) & instr_word_var(17 downto 16); + if instr_word_var(23 downto 20) = "0100" and instr_word_var(18) = '0' then + -- Read S? + if instr_word_var(15) = '0' then + act_array(ACT_L_BUS_RD) <= '1'; + act_array(ACT_X_MEM_WR) <= '1'; + act_array(ACT_Y_MEM_WR) <= '1'; + else -- Write D + act_array(ACT_L_BUS_WR) <= '1'; + act_array(ACT_X_MEM_RD) <= '1'; + act_array(ACT_Y_MEM_RD) <= '1'; + end if; + if instr_word_var(14) = '1' then + adgen_bittype <= SINGLE_X; + activate_AGU; + else + -- L:aa automatically performed in ADGEN stage + end if; + end if; + -- PM: X: Y: + if instr_word_var(23) = '1' then + adgen_bittype <= DOUBLE_X_Y; + -- No immediate value allowed, so activate in any case! + act_array(ACT_ADGEN) <= '1'; + -- S1, X: + if instr_word_var(15) = '0' then + act_array(ACT_X_BUS_RD) <= '1'; + x_bus_rd_addr <= instr_word_var(19 downto 18); + act_array(ACT_X_MEM_WR) <= '1'; + -- X:, D1 + else + act_array(ACT_X_BUS_WR) <= '1'; + x_bus_wr_addr <= instr_word_var(19 downto 18); + act_array(ACT_X_MEM_RD) <= '1'; + end if; + -- S2, Y: + if instr_word_var(22) = '0' then + act_array(ACT_Y_BUS_RD) <= '1'; + y_bus_rd_addr <= instr_word_var(17 downto 16); + act_array(ACT_Y_MEM_WR) <= '1'; + -- Y:, D2 + else + act_array(ACT_Y_BUS_WR) <= '1'; + y_bus_wr_addr <= instr_word_var(17 downto 16); + act_array(ACT_Y_MEM_RD) <= '1'; + end if; + end if; + end process; + + adgen_decoder: process(adgen_bittype, instr_word) is + begin + adgen_mode_a <= NOP; + adgen_mode_b <= NOP; + ea_extension_available <= '0'; + + case adgen_bittype is + when SINGLE_X => + case instr_word(13 downto 11) is + when "000" => adgen_mode_a <= POST_MIN_N; + when "001" => adgen_mode_a <= POST_PLUS_N; + when "010" => adgen_mode_a <= POST_MIN_1; + when "011" => adgen_mode_a <= POST_PLUS_1; + when "100" => adgen_mode_a <= NOP; + when "101" => adgen_mode_a <= INDEXED_N; + when "111" => adgen_mode_a <= PRE_MIN_1; + when "110" => + if instr_word(10 downto 8) = "000" then + adgen_mode_a <= ABSOLUTE; + ea_extension_available <= '1'; + elsif instr_word(10 downto 8) = "100" then + adgen_mode_a <= IMMEDIATE; + ea_extension_available <= '1'; + else + adgen_mode_a <= NOP; -- INVALID OPCODE! + end if; + when others => + end case; + when SINGLE_X_SHORT => + case instr_word(12 downto 11) is + when "00" => adgen_mode_a <= POST_MIN_N; + when "01" => adgen_mode_a <= POST_PLUS_N; + when "10" => adgen_mode_a <= POST_MIN_1; + when "11" => adgen_mode_a <= POST_PLUS_1; + when others => + end case; + when DOUBLE_X_Y => + case instr_word(12 downto 11) is + when "00" => adgen_mode_a <= NOP; + when "01" => adgen_mode_a <= POST_PLUS_N; + when "10" => adgen_mode_a <= POST_MIN_1; + when "11" => adgen_mode_a <= POST_PLUS_1; + when others => + end case; + case instr_word(21 downto 20) is + when "00" => adgen_mode_b <= NOP; + when "01" => adgen_mode_b <= POST_PLUS_N; + when "10" => adgen_mode_b <= POST_MIN_1; + when "11" => adgen_mode_b <= POST_PLUS_1; + when others => + end case; + when others => + end case; + end process adgen_decoder; + +end architecture rtl; + diff --git a/FPGA_quartus/DSP/src/exec_stage_alu.vhd b/FPGA_quartus/DSP/src/exec_stage_alu.vhd new file mode 100644 index 0000000..9f3c3b9 --- /dev/null +++ b/FPGA_quartus/DSP/src/exec_stage_alu.vhd @@ -0,0 +1,603 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity exec_stage_alu is port( + alu_activate : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + alu_ctrl : in alu_ctrl_type; + register_file : in register_file_type; + addr_r_in : in unsigned(BW_ADDRESS-1 downto 0); + addr_r_out : out unsigned(BW_ADDRESS-1 downto 0); + modify_accu : out std_logic; + dst_accu : out std_logic; + modified_accu : out signed(55 downto 0); + modify_sr : out std_logic; + modified_sr : out std_logic_vector(15 downto 0) +); +end entity; + +architecture rtl of exec_stage_alu is + + signal alu_shifter_out : signed(55 downto 0); + signal alu_shifter_carry_out : std_logic; + signal alu_shifter_overflow_out : std_logic; + + signal alu_logic_conj : signed(55 downto 0); + signal alu_multiplier_out : signed(55 downto 0); + signal alu_src_op : signed(55 downto 0); + signal alu_add_result : signed(56 downto 0); + signal alu_add_carry_out : std_logic; + signal alu_post_adder_result : signed(56 downto 0); + + signal scaling_mode : std_logic_vector(1 downto 0); + + signal modified_accu_int : signed(55 downto 0); + + signal norm_instr_asl : std_logic; + signal norm_instr_asr : std_logic; + signal norm_instr_nop : std_logic; + signal norm_update_ccr : std_logic; + +begin + + + -- store calculated value? + modify_accu <= alu_ctrl.store_result; + modified_accu <= modified_accu_int; + -- for the norm instruction we first need to determine whether we have to + -- update the CCR register or not + modify_sr <= alu_activate when alu_ctrl.norm_instr = '0' else + norm_update_ccr; + dst_accu <= alu_ctrl.dst_accu; + + scaling_mode <= register_file.sr(11 downto 10); + + + calcule_ccr_flags: process(register_file, alu_ctrl, alu_shifter_carry_out, + alu_post_adder_result, modified_accu_int, alu_add_carry_out) is + begin + -- by default do not modify the flags in the status register + modified_sr <= register_file.sr; + + -- Carry flag generation + ------------------------- + case alu_ctrl.ccr_flags_ctrl(C_FLAG) is + when CLEAR => modified_sr(C_FLAG) <= '0'; + when SET => modified_sr(C_FLAG) <= '1'; + when MODIFY => + -- the carry flag can stem from the shifter or from the post adder + -- in case we shift and add only a zero to the shift result (ASL, ASR, LSL, LSR, ROL, ROR) + -- take the carry flag from the shifter, else from the post adder + if (alu_ctrl.shift_mode = SHIFT_LEFT or alu_ctrl.shift_mode = SHIFT_RIGHT) and + alu_ctrl.add_src_stage_2 = "00" then -- add zero after shifting? + modified_sr(C_FLAG) <= alu_shifter_carry_out; + elsif alu_ctrl.div_instr = '1' then + modified_sr(C_FLAG) <= not std_logic(alu_post_adder_result(55)); + else +-- modified_sr(C_FLAG) <= std_logic(alu_post_adder_result(57)); + modified_sr(C_FLAG) <= alu_add_carry_out; + end if; + when others => -- Don't touch + end case; + + -- Overflow flag generation + ---------------------------- + case alu_ctrl.ccr_flags_ctrl(V_FLAG) is + when CLEAR => modified_sr(V_FLAG) <= '0'; + when SET => modified_sr(V_FLAG) <= '1'; + when MODIFY => + -- There are two sources for the overflow flag: + -- 1) + -- in case the result cannot be represented using 56 bits set + -- the overflow flag. this is the case when the two MSBs of + -- the 57 bit result are different + -- 2) + -- The shifter circuit performs a 56 bit left shift. In case the + -- two MSBs of the operand are different set the overflow flag as well + if (alu_ctrl.div_instr = '0' and alu_post_adder_result(56) /= alu_post_adder_result(55)) or + (alu_ctrl.shift_mode = SHIFT_LEFT and alu_ctrl.word_24_update = '0' and + alu_shifter_overflow_out = '1' ) then + modified_sr(V_FLAG) <= '1'; + else + modified_sr(V_FLAG) <= '0'; + end if; + when others => -- Don't touch + end case; + + -- Zero flag generation + ---------------------------- + case alu_ctrl.ccr_flags_ctrl(Z_FLAG) is + when CLEAR => modified_sr(Z_FLAG) <= '0'; + when SET => modified_sr(Z_FLAG) <= '1'; + when MODIFY => + -- in case the result is zero set this flag + -- distinguish between 24 bit and 56 bit ALU operations + -- 24 bit instructions are LSL, LSR, ROR, ROL, OR, EOR, NOT, AND + if (alu_ctrl.word_24_update = '1' and modified_accu_int(47 downto 24) = 0) or + (alu_ctrl.word_24_update = '0' and modified_accu_int(55 downto 0) = 0) then + modified_sr(Z_FLAG) <= '1'; + else + modified_sr(Z_FLAG) <= '0'; + end if; + when others => -- Don't touch + end case; + + -- Negative flag generation + ---------------------------- + case alu_ctrl.ccr_flags_ctrl(N_FLAG) is + when CLEAR => modified_sr(N_FLAG) <= '0'; + when SET => modified_sr(N_FLAG) <= '1'; + when MODIFY => + -- in case the result is negative set this flag + -- distinguish between 24 bit and 56 bit ALU operations + -- 24 bit instructions are LSL, LSR, ROR, ROL, OR, EOR, NOT, AND + if alu_ctrl.word_24_update = '1' then + modified_sr(N_FLAG) <= std_logic(modified_accu_int(47)); + else + modified_sr(N_FLAG) <= std_logic(modified_accu_int(55)); + end if; + when others => -- Don't touch + end case; + + -- Unnormalized flag generation + ---------------------------- + case alu_ctrl.ccr_flags_ctrl(U_FLAG) is + when CLEAR => modified_sr(U_FLAG) <= '0'; + when SET => modified_sr(U_FLAG) <= '1'; + when MODIFY => + -- Set unnormalized bit according to the scaling mode + if (scaling_mode = "00" and alu_post_adder_result(47) = alu_post_adder_result(46)) or + (scaling_mode = "01" and alu_post_adder_result(48) = alu_post_adder_result(47)) or + (scaling_mode = "10" and alu_post_adder_result(46) = alu_post_adder_result(45)) then + modified_sr(U_FLAG) <= '1'; + else + modified_sr(U_FLAG) <= '0'; + end if; + when others => -- Don't touch + end case; + + -- Extension flag generation + ---------------------------- + case alu_ctrl.ccr_flags_ctrl(E_FLAG) is + when CLEAR => modified_sr(E_FLAG) <= '0'; + when SET => modified_sr(E_FLAG) <= '1'; + when MODIFY => + -- Set extension flag by default + modified_sr(E_FLAG) <= '1'; + -- Clear extension flag according to the scaling mode + case scaling_mode is + when "00" => + if alu_post_adder_result(55 downto 47) = "111111111" or alu_post_adder_result(55 downto 47) = "000000000" then + modified_sr(E_FLAG) <= '0'; + end if; + when "01" => + if alu_post_adder_result(55 downto 48) = "11111111" or alu_post_adder_result(55 downto 48) = "00000000" then + modified_sr(E_FLAG) <= '0'; + end if; + when "10" => + if alu_post_adder_result(55 downto 46) = "1111111111" or alu_post_adder_result(55 downto 46) = "0000000000" then + modified_sr(E_FLAG) <= '0'; + end if; + when others => + modified_sr(E_FLAG) <= '0'; + end case; + when others => -- Don't touch + end case; + + -- Limit flag generation (equals overflow flag generaton!) + -- Clearing of the Limit flag has to be done by the user! + ----------------------------------------------------------- + case alu_ctrl.ccr_flags_ctrl(L_FLAG) is + when CLEAR => modified_sr(L_FLAG) <= '0'; + when SET => modified_sr(L_FLAG) <= '1'; + when MODIFY => + -- There are two sources for the overflow flag: + -- 1) + -- in case the result cannot be represented using 56 bits set + -- the overflow flag. this is the case when the two MSBs of + -- the 57 bit result are different + -- 2) + -- The shifter circuit performs a 56 bit left shift. In case the + -- two MSBs of the operand are different set the overflow flag as well + if (alu_ctrl.div_instr = '0' and alu_post_adder_result(56) /= alu_post_adder_result(55)) or + (alu_ctrl.shift_mode = SHIFT_LEFT and alu_ctrl.word_24_update = '0' and + alu_shifter_overflow_out = '1' ) then + modified_sr(L_FLAG) <= '1'; + end if; + when others => -- Don't touch + end case; + + -- Scaling flag generation (DSP56002 and up) + -------------------------------------------- + -- Scaling flag is not generated in the ALU, but when A or B are read to the XDB or YDB + + end process; + + + src_operand_select: process(register_file, alu_ctrl) is + begin + -- decoding according similar to JJJ representation + case alu_ctrl.add_src_stage_1 is + when "000" => + -- select depending on destination accu + if alu_ctrl.dst_accu = '0' then + alu_src_op <= register_file.a; + else + alu_src_op <= register_file.b; + end if; + when "001" => -- A,B or B,A + -- select depending on destination accu + if alu_ctrl.dst_accu = '0' then + alu_src_op <= register_file.b; + else + alu_src_op <= register_file.a; + end if; + when "010" => -- X + alu_src_op(55 downto 48) <= (others => register_file.x1(23)); + alu_src_op(47 downto 0) <= register_file.x1 & register_file.x0; + when "011" => -- Y + alu_src_op(55 downto 48) <= (others => register_file.y1(23)); + alu_src_op(47 downto 0) <= register_file.y1 & register_file.y0; + when "100" => -- x0 + alu_src_op(55 downto 48) <= (others => register_file.x0(23)); + alu_src_op(47 downto 24) <= register_file.x0; + alu_src_op(23 downto 0) <= (others => '0'); + when "101" => -- y0 + alu_src_op(55 downto 48) <= (others => register_file.y0(23)); + alu_src_op(47 downto 24) <= register_file.y0; + alu_src_op(23 downto 0) <= (others => '0'); + when "110" => -- x1 + alu_src_op(55 downto 48) <= (others => register_file.x1(23)); + alu_src_op(47 downto 24) <= register_file.x1; + alu_src_op(23 downto 0) <= (others => '0'); + when "111" => -- y1 + alu_src_op(55 downto 48) <= (others => register_file.y1(23)); + alu_src_op(47 downto 24) <= register_file.y1; + alu_src_op(23 downto 0) <= (others => '0'); + when others => + end case; + end process; + + alu_logical_functions: process(alu_ctrl, alu_src_op, alu_shifter_out) is + begin + alu_logic_conj <= alu_shifter_out; + case alu_ctrl.logic_function is + when "110" => + alu_logic_conj(47 downto 24) <= alu_shifter_out(47 downto 24) and alu_src_op(47 downto 24); + when "010" => + alu_logic_conj(47 downto 24) <= alu_shifter_out(47 downto 24) or alu_src_op(47 downto 24); + when "011" => + alu_logic_conj(47 downto 24) <= alu_shifter_out(47 downto 24) xor alu_src_op(47 downto 24); + when "111" => + alu_logic_conj(47 downto 24) <= not alu_shifter_out(47 downto 24); + when others => + end case; + end process; + + alu_adder : process(alu_ctrl, alu_src_op, alu_multiplier_out, alu_shifter_out) is + variable add_src_op_1 : signed(56 downto 0); + variable add_src_op_2 : signed(56 downto 0); + variable carry_const : signed(56 downto 0); + variable alu_shifter_out_57 : signed(56 downto 0); + variable alu_add_result_58 : signed(57 downto 0); + variable alu_add_result_interm : signed(56 downto 0); + variable invert_carry_flag : std_logic; + begin + + -- by default do not invert the carry + invert_carry_flag := '0'; + + -- determine whether to use multiplier output, the operand defined above, or zeros! + -- resizing is done here already. Like that we can see whether an overflow + -- occurs due to negating the source operand + case alu_ctrl.add_src_stage_2 is + when "00" => add_src_op_1 := (others => '0'); + when "10" => add_src_op_1 := resize(alu_multiplier_out, 57); + when others => add_src_op_1 := resize(alu_src_op, 57); + end case; + + -- determine the sign for the 1st operand! + case alu_ctrl.add_src_sign is + -- normal operation + when "00" => add_src_op_1 := add_src_op_1; + -- negative sign + when "01" => add_src_op_1 := - add_src_op_1; + invert_carry_flag := not invert_carry_flag; + -- change according to sign + -- performs - | accu | for the CMPM instruction + when "10" => + -- we subtract in any case, so invert the carry! + invert_carry_flag := not invert_carry_flag; + if add_src_op_1(55) = '0' then + add_src_op_1 := - add_src_op_1; + else + add_src_op_1 := add_src_op_1; + end if; + -- div instruction! + -- sign dependant of D[55] XOR S[23], if 1 => positive , if 0 => negative + -- add_src_op_1 holds S[23] (sign extension!) + when others => + if (alu_ctrl.shift_src = '0' and add_src_op_1(55) /= register_file.a(55)) or + (alu_ctrl.shift_src = '1' and add_src_op_1(55) /= register_file.b(55)) then + add_src_op_1 := add_src_op_1; + else + add_src_op_1 := - add_src_op_1; +-- invert_carry_flag := not invert_carry_flag; + end if; + end case; + + alu_shifter_out_57 := resize(alu_shifter_out, 57); + + -- determine the sign for the 2nd operand (coming from the shifter)! + case alu_ctrl.shift_src_sign is + -- negative sign + when "01" => + add_src_op_2 := - alu_shifter_out_57; + -- change according to sign + -- this allows to build the magnitude (ABS, CMPM) + when "10" => + if alu_shifter_out(55) = '1' then + add_src_op_2 := - alu_shifter_out_57; + else + add_src_op_2 := alu_shifter_out_57; + end if; + when others => + add_src_op_2 := alu_shifter_out_57; + end case; + + -- determine whether carry flag has to be added or subtracted + if alu_ctrl.rounding_used = "10" then + -- add carry flag + carry_const(0) := register_file.sr(C_FLAG); + elsif alu_ctrl.rounding_used = "11" then + -- subtract carry flag + carry_const := (others => register_file.sr(0)); -- carry flag + else + carry_const := (others => '0'); + end if; + + -- add the values and calculate the carry bit + alu_add_result_interm := ('0' & add_src_op_1(55 downto 0)) + + ('0' & add_src_op_2(55 downto 0)) + + ('0' & carry_const(55 downto 0)); + + -- here pops the new carry out of the adder + if invert_carry_flag = '0' then + alu_add_carry_out <= alu_add_result_interm(56); + else + alu_add_carry_out <= not alu_add_result_interm(56); + end if; + + -- calculate the last bit (56), in order to test for overflow later on + alu_add_result(55 downto 0) <= alu_add_result_interm(55 downto 0); +-- alu_add_result(56) <= add_src_op_1(56) xor add_src_op_2(56) xor alu_add_result_interm(56); + alu_add_result(56) <= add_src_op_1(56) xor add_src_op_2(56) + xor carry_const(56) xor alu_add_result_interm(56); + + end process alu_adder; + + + -- Adder after the normal arithmetic adder + -- This adder is responsible for +-- -- 1) carry addition +-- -- 2) carry subtration + -- 3) convergent rounding + alu_post_adder: process(alu_add_result, scaling_mode, alu_ctrl) is + variable post_adder_constant : signed(56 downto 0); + variable testing_constant : signed(24 downto 0); + begin + -- by default add nothing + post_adder_constant := (others => '0'); + + case alu_ctrl.rounding_used is + -- rounding dependant on scaling bits + when "01" => + case scaling_mode is + -- no scaling + when "00" => testing_constant := alu_add_result(23 downto 0) & '0'; + -- scale down + when "01" => testing_constant := alu_add_result(24 downto 0); + -- scale up + when "10" => testing_constant := alu_add_result(22 downto 0) & "00"; + when others => + testing_constant := alu_add_result(23 downto 0) & '0'; + end case; + + -- Special case! + if testing_constant(24) = '1' and testing_constant(23 downto 0) = X"000000" then + -- add depending on bit left to the rounding position + case scaling_mode is + -- no scaling + when "00" => post_adder_constant(23) := alu_add_result(24); + -- scale down + when "01" => post_adder_constant(24) := alu_add_result(25); + -- scale up + when "10" => post_adder_constant(22) := alu_add_result(23); + when others => + end case; + else -- testing_constant /= X"1000000" + -- add rounding constant depending on scaling mode + -- results in round up if MSB of testing constant is set, else nothing happens + case scaling_mode is + -- no scaling + when "00" => post_adder_constant(23) := '1'; + -- scale down + when "01" => post_adder_constant(24) := '1'; + -- scale up + when "10" => post_adder_constant(22) := '1'; + when others => + end case; + end if; + -- no rounding + when others => + post_adder_constant := (others => '0'); + + end case; + + -- Add the result of the first adder to the constant (e.g., carry flag) + alu_post_adder_result <= alu_add_result + post_adder_constant; + + -- When rounding is used set 24 LSBs to zero! + if alu_ctrl.rounding_used = "01" then + alu_post_adder_result(23 downto 0) <= (others => '0'); + end if; + end process; + + + + alu_select_new_accu: process(alu_post_adder_result, alu_logic_conj, alu_ctrl) is + begin + if alu_ctrl.logic_function /= "000" then + modified_accu_int <= alu_logic_conj; + else + modified_accu_int <= alu_post_adder_result(55 downto 0); + end if; + end process; + + + -- contains the 24*24 bit fractional multiplier + alu_multiplier : process(register_file, alu_ctrl) is + variable src_op1: signed(23 downto 0); + variable src_op2: signed(23 downto 0); + variable mul_result_interm : signed(47 downto 0); + begin + -- select source operands for multiplication + case alu_ctrl.mul_op1 is + when "00" => src_op1 := register_file.x0; + when "01" => src_op1 := register_file.x1; + when "10" => src_op1 := register_file.y0; + when others => src_op1 := register_file.y1; + end case; + case alu_ctrl.mul_op2 is + when "00" => src_op2 := register_file.x0; + when "01" => src_op2 := register_file.x1; + when "10" => src_op2 := register_file.y0; + when others => src_op2 := register_file.y1; + end case; + + -- perform integer multiplication + mul_result_interm := src_op1 * src_op2; + + -- sign extension of result + alu_multiplier_out(55 downto 48) <= (others => mul_result_interm(47)); + -- convert from two's complement representation to fractional format + -- signed integer multiplication delivers twice the sign bit, but only one is needed for the + -- fractional multiplication, so remove one and append a zero to the result + alu_multiplier_out(47 downto 0) <= mul_result_interm(46 downto 0) & '0'; + + end process alu_multiplier; + + + -- contains the data shifter + alu_shifter: process(register_file, alu_ctrl, norm_instr_asl, norm_instr_asr) is + variable src_accu : signed(55 downto 0); + variable shift_to_perform : alu_shift_mode; + begin + -- read source accumulator + if alu_ctrl.shift_src = '0' then + src_accu := register_file.a; + else + src_accu := register_file.b; + end if; + + alu_shifter_carry_out <= '0'; + alu_shifter_overflow_out <= '0'; + + -- NORM instruction determines the shift value just + -- in time, so overwrite the flag from the alu_ctrl + -- for this instruction by the calculated value + if alu_ctrl.norm_instr = '0' then + shift_to_perform := alu_ctrl.shift_mode; + else + if norm_instr_asl = '1' then + shift_to_perform := SHIFT_LEFT; + elsif norm_instr_asr = '1' then + shift_to_perform := SHIFT_RIGHT; + else + shift_to_perform := NO_SHIFT; + end if; + end if; + + case shift_to_perform is + when NO_SHIFT => + alu_shifter_out <= src_accu; + when SHIFT_LEFT => + -- ASL, ADDL, DIV? + if alu_ctrl.word_24_update = '0' then + -- special handling for div instruction required + if alu_ctrl.div_instr = '1' then + alu_shifter_out <= src_accu(54 downto 0) & register_file.sr(C_FLAG); + else + alu_shifter_out <= src_accu(54 downto 0) & '0'; + end if; + alu_shifter_carry_out <= src_accu(55); + -- detect overflow that results from left shifting + -- Needed for ASL, ADDL, DIV instructions + if src_accu(55) /= src_accu(54) then + alu_shifter_overflow_out <= '1'; + end if; + -- LSL/ROL? + elsif alu_ctrl.word_24_update = '1' then + alu_shifter_out(55 downto 48) <= src_accu(55 downto 48); + alu_shifter_out(23 downto 0) <= src_accu(23 downto 0); + alu_shifter_carry_out <= src_accu(47); + if alu_ctrl.rotate = '0' then -- LSL ? + alu_shifter_out(47 downto 24) <= src_accu(46 downto 24) & '0'; + else -- ROL ? + alu_shifter_out(47 downto 24) <= src_accu(46 downto 24) & register_file.sr(C_FLAG); + end if; + end if; + when SHIFT_RIGHT => + -- ASR? + if alu_ctrl.word_24_update = '0' then + alu_shifter_out <= src_accu(55) & src_accu(55 downto 1); + alu_shifter_carry_out <= src_accu(0); + -- LSR/ROR? + elsif alu_ctrl.word_24_update = '1' then + alu_shifter_out(55 downto 48) <= src_accu(55 downto 48); + alu_shifter_out(23 downto 0) <= src_accu(23 downto 0); + alu_shifter_carry_out <= src_accu(24); + if alu_ctrl.rotate = '0' then -- LSR + alu_shifter_out(47 downto 24) <= '0' & src_accu(47 downto 25); + else -- ROR + alu_shifter_out(47 downto 24) <= register_file.sr(C_FLAG) & src_accu(47 downto 25); + end if; + end if; + when ZEROS => + alu_shifter_out <= (others => '0'); + end case; + end process alu_shifter; + + + -- Special handling for NORM instruction + -- Determine which case occurs (see User's Manual for more information) + norm_instr_logic: process(register_file, addr_r_in) is + begin + norm_instr_asl <= '0'; + norm_instr_asr <= '0'; + + -- Either left shift + if register_file.sr(E_FLAG) = '0' and + register_file.sr(U_FLAG) = '1' and + register_file.sr(Z_FLAG) = '0' then + norm_instr_asl <= '1'; + norm_update_ccr <= '1'; + addr_r_out <= addr_r_in - 1; + -- Or right shift + elsif register_file.sr(E_FLAG) = '1' then + norm_instr_asr <= '1'; + norm_update_ccr <= '1'; + addr_r_out <= addr_r_in + 1; + -- Or do nothing! + else + norm_update_ccr <= '0'; + addr_r_out <= addr_r_in; + end if; + end process; + +end architecture; diff --git a/FPGA_quartus/DSP/src/exec_stage_bit_modify.vhd b/FPGA_quartus/DSP/src/exec_stage_bit_modify.vhd new file mode 100644 index 0000000..68fecbb --- /dev/null +++ b/FPGA_quartus/DSP/src/exec_stage_bit_modify.vhd @@ -0,0 +1,79 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity exec_stage_bit_modify is port( + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + src_operand : in std_logic_vector(23 downto 0); + register_file : in register_file_type; + dst_operand : out std_logic_vector(23 downto 0); + bit_cond_met : out std_logic; + modify_sr : out std_logic; + modified_sr : out std_logic_vector(15 downto 0) +); +end entity; + + +architecture rtl of exec_stage_bit_modify is + + signal operand_bit : std_logic; + signal src_operand_32 : std_logic_vector(31 downto 0); + +begin + + -- this is just a helper signal to prevent the simulator + -- to stop when accessing a bit > 23. + src_operand_32 <= "00000000" & src_operand; + -- read the bit we want to test (and modify) + operand_bit <= src_operand_32(to_integer(unsigned(instr_word(4 downto 0)))); + + -- modify the Carry flag only for the bit modify instructions! + modify_sr <= '1' when instr_array = INSTR_BCLR or instr_array = INSTR_BSET or instr_array = INSTR_BCHG or instr_array = INSTR_BTST else '0'; + modified_sr <= register_file.sr(15 downto 1) & operand_bit; + + bit_operation: process(instr_word, instr_array, src_operand, operand_bit) is + variable new_bit : std_logic; + begin + -- do nothing by default! + dst_operand <= src_operand; + bit_cond_met <= '0'; + + -- determine which bit to write + if instr_array = INSTR_BCLR then + new_bit := '0'; + elsif instr_array = INSTR_BSET then + new_bit := '1'; + else -- BCHG + new_bit := not operand_bit; + end if; + + if instr_array = INSTR_BCLR or instr_array = INSTR_BSET or instr_array = INSTR_BCHG then + dst_operand(to_integer(unsigned(instr_word(4 downto 0)))) <= new_bit; + end if; + + + -- check for the jump instructions whether condition is met or not! + if instr_array = INSTR_JCLR or instr_array = INSTR_JSCLR then + if operand_bit = '0' then + bit_cond_met <= '1'; + else + bit_cond_met <= '0'; + end if; + end if; + if instr_array = INSTR_JSET or instr_array = INSTR_JSSET then + if operand_bit = '0' then + bit_cond_met <= '0'; + else + bit_cond_met <= '1'; + end if; + end if; + + end process; + + +end architecture; diff --git a/FPGA_quartus/DSP/src/exec_stage_branch.vhd b/FPGA_quartus/DSP/src/exec_stage_branch.vhd new file mode 100644 index 0000000..9b07913 --- /dev/null +++ b/FPGA_quartus/DSP/src/exec_stage_branch.vhd @@ -0,0 +1,117 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity exec_stage_branch is port( + activate_exec_bra : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + register_file : in register_file_type; + jump_address : in unsigned(BW_ADDRESS-1 downto 0); + bit_cond_met : in std_logic; + cc_flag_set : in std_logic; + push_stack : out push_stack_type; + pop_stack : out pop_stack_type; + modify_pc : out std_logic; + modified_pc : out unsigned(BW_ADDRESS-1 downto 0); + modify_sr : out std_logic; + modified_sr : out std_logic_vector(15 downto 0) +); +end entity; + + +architecture rtl of exec_stage_branch is + + signal branch_condition_met : std_logic; + signal modify_pc_int : std_logic; + +begin + + modify_pc_int <= '1' when activate_exec_bra = '1' and branch_condition_met = '1' else '0'; + modify_pc <= modify_pc_int; + + calculate_branch_condition : process(instr_word, instr_array, register_file, bit_cond_met) + begin + branch_condition_met <= '0'; + + -- unconditional jumps + if instr_array = INSTR_JMP or + instr_array = INSTR_JSR or + instr_array = INSTR_RTI or + instr_array = INSTR_RTS then + -- jump always + branch_condition_met <= '1'; + end if; + -- then see whether the branch condition is satisfied + if instr_array = INSTR_JCC or instr_array = INSTR_JSCC then + branch_condition_met <= cc_flag_set; + end if; + -- jmp that is executed according to a certain bit condition + if instr_array = INSTR_JCLR or instr_array = INSTR_JSCLR or + instr_array = INSTR_JSET or instr_array = INSTR_JSSET then + branch_condition_met <= bit_cond_met; + end if; + end process calculate_branch_condition; + + + calculate_branch_target : process(instr_array, instr_word, jump_address) + begin + modified_pc <= jump_address; + + -- address calculation is the same for the following instructions + if instr_array = INSTR_JMP or + instr_array = INSTR_JCC or + instr_array = INSTR_JSCC or + instr_array = INSTR_JSR then + if instr_word(18) = '1' then + -- short jump address included in opcode (bits 11 downto 0) + modified_pc(11 downto 0) <= unsigned(instr_word(11 downto 0)); + elsif instr_word(18) = '0' then + -- effective address defined by opcode and coming from address generator unit + modified_pc <= jump_address; + end if; + end if; + + -- jump address contains the obligatory address of the second + -- instruction word + if instr_array = INSTR_JCLR or + instr_array = INSTR_JSET or + instr_array = INSTR_JSCLR or + instr_array = INSTR_JSSET then + modified_pc <= jump_address; + end if; + + -- target address is stored on the stack + if instr_array = INSTR_RTS or + instr_array = INSTR_RTI then + modified_pc <= unsigned(register_file.current_ssh); + end if; + end process calculate_branch_target; + + -- Subroutine functions need to store PC and SR on the stack + push_stack.valid <= '1' when modify_pc_int = '1' and (instr_array = INSTR_JSCC or instr_array = INSTR_JSR or + instr_array = INSTR_JSCLR or instr_array = INSTR_JSSET) else '0'; + push_stack.content <= PC_AND_SR; + -- pc is set externally! + push_stack.pc <= (others => '0'); + + -- RTI/RTS instructions need to read from the stack + pop_stack.valid <= '1' when modify_pc_int = '1' and (instr_array = INSTR_RTI or instr_array = INSTR_RTS) else '0'; + + -- some instructions require to set the SR + calculate_status_register : process(instr_array) + begin + modify_sr <= '0'; + modified_sr <= (others => '0'); + if instr_array = INSTR_RTI then + modify_sr <= '1'; + modified_sr <= register_file.current_ssl; + end if; + end process calculate_status_register; + + +end architecture rtl; diff --git a/FPGA_quartus/DSP/src/exec_stage_cc_flag_calc.vhd b/FPGA_quartus/DSP/src/exec_stage_cc_flag_calc.vhd new file mode 100644 index 0000000..63a0b2c --- /dev/null +++ b/FPGA_quartus/DSP/src/exec_stage_cc_flag_calc.vhd @@ -0,0 +1,75 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity exec_stage_cc_flag_calc is port( + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + register_file : in register_file_type; + cc_flag_set : out std_logic +); +end entity; + + +architecture rtl of exec_stage_cc_flag_calc is + + +begin + + calculate_cc_flag : process(instr_word, instr_array, register_file) + + variable cc_select : std_logic_vector(3 downto 0); + + procedure calculate_cc_flag(cc: std_logic_vector(3 downto 0)) is + variable c_flag : std_logic := register_file.ccr(0); + variable v_flag : std_logic := register_file.ccr(1); + variable z_flag : std_logic := register_file.ccr(2); + variable n_flag : std_logic := register_file.ccr(3); + variable u_flag : std_logic := register_file.ccr(4); + variable e_flag : std_logic := register_file.ccr(5); + variable l_flag : std_logic := register_file.ccr(6); + + begin + if (cc = "0000" and c_flag = '0') or -- CC: carry clear + (cc = "1000" and c_flag = '1') or -- CS: carry set + (cc = "0101" and e_flag = '0') or -- EC: extension clear + (cc = "1010" and z_flag = '1') or -- EQ: equal + (cc = "1101" and e_flag = '1') or -- ES: extension set + (cc = "0001" and (n_flag = v_flag)) or -- GE: greater than or equal + (cc = "0001" and ((n_flag xor v_flag) or z_flag) = '0') or -- GT: greater than + (cc = "0110" and l_flag = '0') or -- LC: limit clear + (cc = "1111" and ((n_flag xor v_flag) or z_flag ) = '1') or -- LE: less or equal + (cc = "1110" and l_flag = '1') or -- LS: limit set + (cc = "1001" and (n_flag /= v_flag)) or -- LT: less than + (cc = "1011" and n_flag = '1') or -- MI: minus + (cc = "0010" and z_flag = '0') or -- NE: not equal + (cc = "1100" and (( not u_flag and not e_flag) or z_flag) = '1') or -- NR: normalized + (cc = "0011" and n_flag = '0') or -- PL: plus + (cc = "0100" and (( not u_flag and not e_flag ) or z_flag) = '0') -- NN: not normalized + then + cc_flag_set <= '1'; + end if; + end procedure; + + begin + + cc_flag_set <= '0'; + + -- Rip the flags we have to test for from the instruction word + if (instr_array = INSTR_JCC and instr_word(18) = '0') or + (instr_array = INSTR_JSCC) then + cc_select := instr_word(3 downto 0); + else + cc_select := instr_word(15 downto 12); + end if; + + calculate_cc_flag(cc_select); + + end process; + + +end architecture; diff --git a/FPGA_quartus/DSP/src/exec_stage_cr_mod.vhd b/FPGA_quartus/DSP/src/exec_stage_cr_mod.vhd new file mode 100644 index 0000000..c236db7 --- /dev/null +++ b/FPGA_quartus/DSP/src/exec_stage_cr_mod.vhd @@ -0,0 +1,72 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity exec_stage_cr_mod is port ( + activate_exec_cr_mod : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + register_file : in register_file_type; + modify_sr : out std_logic; + modified_sr : out std_logic_vector(15 downto 0); + modify_omr : out std_logic; + modified_omr : out std_logic_vector(7 downto 0) +); +end exec_stage_cr_mod; + + +architecture rtl of exec_stage_cr_mod is + +begin + + process(activate_exec_cr_mod, instr_word, instr_array, register_file) is + variable imm8 : std_logic_vector(7 downto 0); + variable op8 : std_logic_vector(7 downto 0); + variable res8 : std_logic_vector(7 downto 0); + begin + modify_sr <= '0'; + modify_omr <= '0'; + modified_sr <= (others => '0'); + modified_omr <= (others => '0'); + + imm8 := instr_word(15 downto 8); + if instr_word(1 downto 0) = "00" then + -- read MR + op8 := register_file.mr; + elsif instr_word(1 downto 0) = "01" then + -- read CCR + op8 := register_file.ccr; + else -- instr_word(1 downto 0) = "10" + -- read OMR + op8 := register_file.omr; + end if; + + if instr_array = INSTR_ANDI then + res8 := imm8 and op8; + else -- instr_array = INSTR_ORI + res8 := imm8 or op8; + end if; + + -- only write the result when activated + if activate_exec_cr_mod = '1' then + if instr_word(1 downto 0) = "00" then + -- update MR + modify_sr <= '1'; + modified_sr <= res8 & register_file.ccr; + elsif instr_word(1 downto 0) = "01" then + -- update CCR + modify_sr <= '1'; + modified_sr <= register_file.mr & res8; + elsif instr_word(1 downto 0) = "10" then + -- update OMR + modify_omr <= '1'; + modified_omr <= res8; + end if; + end if; + end process; + +end architecture; diff --git a/FPGA_quartus/DSP/src/exec_stage_loops.vhd b/FPGA_quartus/DSP/src/exec_stage_loops.vhd new file mode 100644 index 0000000..cc32692 --- /dev/null +++ b/FPGA_quartus/DSP/src/exec_stage_loops.vhd @@ -0,0 +1,200 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity exec_stage_loop is port( + clk, rst : in std_logic; + activate_exec_loop : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + loop_iterations : in unsigned(15 downto 0); + loop_address : in unsigned(BW_ADDRESS-1 downto 0); + loop_start_address: in unsigned(BW_ADDRESS-1 downto 0); + register_file : in register_file_type; + fetch_perform_enddo: in std_logic; + memory_stall : in std_logic; + push_stack : out push_stack_type; + pop_stack : out pop_stack_type; + stall_rep : out std_logic; + stall_do : out std_logic; + decrement_lc : out std_logic; + modify_lc : out std_logic; + modified_lc : out unsigned(15 downto 0); + modify_la : out std_logic; + modified_la : out unsigned(15 downto 0); + modify_pc : out std_logic; + modified_pc : out unsigned(BW_ADDRESS-1 downto 0); + modify_sr : out std_logic; + modified_sr : out std_logic_vector(15 downto 0) +); +end entity; + + +architecture rtl of exec_stage_loop is + + signal rep_loop_polling : std_logic; + signal do_loop_polling : std_logic; + signal enddo_polling : std_logic; + signal lc_temp : unsigned(15 downto 0); + signal rf_lc_eq_1 : std_logic; + signal memory_stall_t : std_logic; + +begin + + modified_pc <= loop_start_address; + + + -- loop counter in register file equal to 1? + rf_lc_eq_1 <= '1' when register_file.lc = 1 else '0'; + + process(activate_exec_loop, instr_array, register_file, fetch_perform_enddo, + rep_loop_polling, loop_iterations, rf_lc_eq_1, loop_start_address) is + begin + stall_rep <= '0'; + stall_do <= '0'; + + modify_la <= '0'; + modify_lc <= '0'; + modify_pc <= '0'; + modify_sr <= '0'; + modified_la <= loop_address; + modified_lc <= loop_iterations; -- default + -- set the loop flag LF (bit 15) of Status register + modified_sr(15) <= '1'; + modified_sr(14 downto 0) <= register_file.sr(14 downto 0); + + push_stack.valid <= '0'; -- push PC and SR on the stack + push_stack.pc <= loop_start_address; + push_stack.content <= LA_AND_LC; + + pop_stack.valid <= '0'; + decrement_lc <= '0'; + ------------------ + -- DO instruction + ------------------ + if activate_exec_loop = '1' and instr_array = INSTR_DO then + -- first instruction of the do loop instruction? + if do_loop_polling = '0' then + stall_do <= '1'; + modify_lc <= '1'; -- store the new loop counter + modify_la <= '1'; -- store the new loop address + push_stack.valid <= '1'; -- push LA and LC on the stack + push_stack.content <= LA_AND_LC; + else -- second clock cycle of the do loop instruction ? + push_stack.valid <= '1'; -- push PC and SR on the stack + push_stack.pc <= loop_start_address; + push_stack.content <= PC_AND_SR; + -- set the PC to the first instruction of the loop + -- the already fetched instruction are flushed from the pipeline + -- this prevents problems, when the loop consists of only one or two instructions + modify_pc <= '1'; + -- set the loop flag + modify_sr <= '1'; + end if; + end if; + ----------------------------------------------- + -- ENDDO instruction / loop end in fetch stage + ----------------------------------------------- + if (activate_exec_loop = '1' and instr_array = INSTR_ENDDO) or fetch_perform_enddo = '1' or enddo_polling = '1' then + pop_stack.valid <= '1'; + if enddo_polling = '0' then + -- only restore the LF from the stack + modified_sr(15) <= register_file.current_ssl(15); + modify_sr <= '1'; + stall_do <= '1'; -- stall one clock cycle + else + -- restore loop counter and loop address in second clock cycle + modified_lc <= unsigned(register_file.current_ssl); + modify_lc <= '1'; + modified_la <= unsigned(register_file.current_ssh); + modify_la <= '1'; + end if; + end if; + ------------------- + -- REP instruction + ------------------- + if activate_exec_loop = '1' and instr_array = INSTR_REP then + -- only do something when there are more than 1 iterations + -- the first execution is already on the way + if loop_iterations /= 1 then + stall_rep <= '1'; -- stall the fetch and decode stages + modify_lc <= '1'; -- store the loop counter + modified_lc <= loop_iterations - 1; + end if; + end if; + + -- keep processing the single instruction + if rep_loop_polling = '1' then + stall_rep <= '1'; + -- if the REP instruction cause a stall do not modify the lc! + if memory_stall_t = '0' then + if rf_lc_eq_1 = '0' then + decrement_lc <= '1'; + -- when the instruction to repeat caused a memory stall + -- do not continue! + else + -- finish the REP instruction by restoring the LC + stall_rep <= '0'; + modify_lc <= '1'; + modified_lc <= lc_temp; + end if; + end if; + end if; + end process; + + + -- process that allows to remember that we are processing a REP/DO instruction + -- even though the REP instruction is not available in the pipeline anymore + -- also store the old loop counter + process(clk) is + begin + if rising_edge(clk) then + if rst = '1' then + rep_loop_polling <= '0'; + do_loop_polling <= '0'; + enddo_polling <= '0'; + lc_temp <= (others => '0'); + memory_stall_t <= '0'; + else + memory_stall_t <= memory_stall; + + if activate_exec_loop = '1' and instr_array = INSTR_REP then + -- only do something when there are more than 1 iterations + -- the first execution is already on the way + if loop_iterations /= 1 then + rep_loop_polling <= '1'; + lc_temp <= register_file.lc; + end if; + end if; + -- test whether the REP instruction has been executed + if rep_loop_polling = '1' and rf_lc_eq_1 = '1' and memory_stall_t = '0' then + rep_loop_polling <= '0'; + end if; + + -- do loop execution takes two clock cycles + -- in the first clock cycle we store loop address and loop counter on the stack + -- in the second clock cycle we store programm counter and status register on the stack + if activate_exec_loop = '1' and instr_array = INSTR_DO then + do_loop_polling <= '1'; + end if; + -- clear the flag immediately again (only two cycles execution time!) + if do_loop_polling = '1' then + do_loop_polling <= '0'; + end if; + + -- ENDDO instructions take two clock cycles as well! + if (activate_exec_loop = '1' and instr_array = INSTR_ENDDO) or fetch_perform_enddo = '1' then + enddo_polling <= '1'; + end if; + if enddo_polling = '1' then + enddo_polling <= '0'; + end if; + end if; + end if; + end process; + +end architecture; diff --git a/FPGA_quartus/DSP/src/fetch_stage.vhd b/FPGA_quartus/DSP/src/fetch_stage.vhd new file mode 100644 index 0000000..6b22f09 --- /dev/null +++ b/FPGA_quartus/DSP/src/fetch_stage.vhd @@ -0,0 +1,60 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; + + +entity fetch_stage is port( + + pc_old : in unsigned(BW_ADDRESS-1 downto 0); + pc_new : out unsigned(BW_ADDRESS-1 downto 0); + modify_pc : in std_logic; + modified_pc : in unsigned(BW_ADDRESS-1 downto 0); + register_file : in register_file_type; + decrement_lc : out std_logic; + perform_enddo : out std_logic + +); +end fetch_stage; + + +architecture rtl of fetch_stage is + + +begin + + pc_calculation: process(pc_old, modify_pc, modified_pc, register_file) is + begin + decrement_lc <= '0'; + perform_enddo <= '0'; + + -- by default increment pc by one + pc_new <= pc_old + 1; + if modify_pc = '1' then + pc_new <= modified_pc; + end if; + -- Loop Flag set? + if register_file.sr(15) = '1' then + if register_file.la = pc_old then + -- Loop not finished? + -- => start from the beginning if necessary + if register_file.lc /= 1 then + -- if the last address was LA and the loop is not finished yet, we have to + -- read now from the beginning of the loop again + pc_new <= unsigned(register_file.current_ssh(BW_ADDRESS-1 downto 0)); + -- decrement loop counter + decrement_lc <= '1'; + else + -- loop done! + -- => tell the loop controller in the exec stage to perform the enddo operation + -- (without flushing of the pipeline!) + perform_enddo <= '1'; + end if; + end if; + end if; + end process pc_calculation; + +end architecture rtl; + diff --git a/FPGA_quartus/DSP/src/mem_control.vhd b/FPGA_quartus/DSP/src/mem_control.vhd new file mode 100644 index 0000000..091fcf0 --- /dev/null +++ b/FPGA_quartus/DSP/src/mem_control.vhd @@ -0,0 +1,1519 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; + +entity mem_control is + generic( + mem_type : memory_type := P_MEM + ); + port( + clk, rst : in std_logic; + rd_addr : in unsigned(BW_ADDRESS-1 downto 0); + rd_en : in std_logic; + data_out : out std_logic_vector(23 downto 0); + data_out_valid : out std_logic; + wr_addr : in unsigned(BW_ADDRESS-1 downto 0); + wr_en : in std_logic; + wr_accomplished : out std_logic; + data_in : in std_logic_vector(23 downto 0) + ); +end entity mem_control; + + +architecture rtl of mem_control is + + signal int_mem_rd_addr : std_logic_vector(7 downto 0); + type int_mem_type is array(0 to 255) of std_logic_vector(23 downto 0); + signal int_mem : int_mem_type; + signal int_pmem : int_mem_type := ( +-- ABS begin +--X"0000B9", +--X"56F400", +--X"200000", +--X"200026", +--X"56F400", +--X"E00000", +--X"200026", +--X"56F400", +--X"000000", +--X"200026", +--X"52F400", +--X"000080", +--X"200026", +-- ABS end + +-- ADC begin +--X"46F400", +--X"000000", +--X"47F400", +--X"000001", +--X"20001B", +--X"51F400", +--X"000001", +--X"0000B9", +--X"0001F9", +--X"200039", +--X"47F400", +--X"800000", +--X"53F400", +--X"000080", +--X"200039", +-- ADC end + +-- ADD begin +--X"46F400", +--X"000000", +--X"47F400", +--X"000001", +--X"20001B", +--X"51F400", +--X"000001", +--X"0000B9", +--X"0001F9", +--X"200038", +--X"47F400", +--X"800000", +--X"53F400", +--X"000080", +--X"200038", +-- ADD end + +-- ADDL begin +--X"56F400", +--X"000055", +--X"20001B", +--X"51F400", +--X"000055", +--X"0000B9", +--X"20001A", +--X"56F400", +--X"0000AA", +--X"20001A", +--X"53F400", +--X"000080", +--X"20001A", +-- ADDL end + +-- ADDR begin +--X"56F400", +--X"000055", +--X"20001B", +--X"51F400", +--X"000055", +--X"0000B9", +--X"20000A", +--X"56F400", +--X"0000AA", +--X"20000A", +--X"53F400", +--X"000080", +--X"20000A", +-- ADDR end + +-- AND begin +--X"46F400", +--X"000FFF", +--X"57F400", +--X"FFFFFF", +--X"0000B9", +--X"20005E", +--X"46F400", +--X"FFF000", +--X"57F400", +--X"FFFFFF", +--X"0000B9", +--X"20005E", +--X"46F400", +--X"000000", +--X"57F400", +--X"FFFFFF", +--X"0000B9", +--X"20005E", +-- AND end + +-- EOR begin +--X"46F400", +--X"000FFF", +--X"57F400", +--X"FF00FF", +--X"0000B9", +--X"20005B", +--X"46F400", +--X"FFFFFF", +--X"57F400", +--X"FFFFFF", +--X"0000B9", +--X"20005B", +-- EOR end + +-- OR begin +--X"46F400", +--X"000FFF", +--X"57F400", +--X"FF00FF", +--X"0000B9", +--X"20005A", +--X"46F400", +--X"000000", +--X"57F400", +--X"000000", +--X"0000B9", +--X"20005A", +-- OR end + +-- NOT begin +--X"46F400", +--X"000FFF", +--X"57F400", +--X"7F00FF", +--X"0000B9", +--X"20001F", +--X"46F400", +--X"000000", +--X"57F400", +--X"FFFFFF", +--X"0000B9", +--X"20001F", +-- NOT end + +-- ASL begin +--X"20001B", +--X"51F400", +--X"0000A5", +--X"55F400", +--X"0000A5", +--X"53F400", +--X"0000A5", +--X"0000B9", +--X"20003A", +-- ASL end + +-- ASR begin +--X"20001B", +--X"51F400", +--X"0000A5", +--X"55F400", +--X"0000A5", +--X"53F400", +--X"0000A5", +--X"0000B9", +--X"20002A", +-- ASR end + +-- CLR begin +--X"0000B9", +--X"56F400", +--X"200000", +--X"200013", +--X"56F400", +--X"E00000", +--X"0000B9", +--X"0001F9", +--X"200013", +-- CLR end + +-- CMP begin +--X"2F2000", +--X"262400", +--X"0000B9", +--X"20005D", +--X"2F2000", +--X"262000", +--X"0000B9", +--X"20005D", +--X"2F2400", +--X"262000", +--X"0000B9", +--X"20005D", +--X"57F400", +--X"800AAA", +--X"262000", +--X"0000B9", +--X"20005D", +--X"46F400", +--X"800AAA", +--X"2F2000", +--X"0000B9", +--X"20005D", +-- CMP end + +-- CMPM begin +--X"2F2000", +--X"262400", +--X"0000B9", +--X"20005F", +--X"2F2000", +--X"262000", +--X"0000B9", +--X"20005F", +--X"2F2400", +--X"262000", +--X"0000B9", +--X"20005F", +--X"57F400", +--X"800AAA", +--X"262000", +--X"0000B9", +--X"20005F", +--X"46F400", +--X"800AAA", +--X"2F2000", +--X"0000B9", +--X"20005F", +-- CMPM end + +-- DIV begin +--X"00FEB9", +--X"44F400", +--X"600000", +--X"56F400", +--X"200000", +--X"0618A0", +--X"018040", +--X"210E00", +-- DIV end + +-- LSL begin +--X"0000B9", +--X"56F400", +--X"200000", +--X"56F400", +--X"AAAAAA", +--X"50F400", +--X"BCDEFA", +--X"0618A0", +--X"200033", +-- LSL end + +-- LSR begin +--X"0000B9", +--X"56F400", +--X"200000", +--X"56F400", +--X"AAAAAA", +--X"50F400", +--X"BCDEFA", +--X"0618A0", +--X"200023", +-- LSR end + +-- MPY begin +--X"0000B9", +--X"44F400", +--X"200000", +--X"46F400", +--X"400000", +--X"2000D0", +--X"44F400", +--X"E00000", +--X"46F400", +--X"B9999A", +--X"2000D0", +--X"44F400", +--X"E66666", +--X"46F400", +--X"466666", +--X"2000D0", +--X"44F400", +--X"E66666", +--X"46F400", +--X"466666", +--X"2000D4", +-- MPY end + +-- MAC begin +--X"0000B9", +--X"200013", +--X"2A8000", +--X"44F400", +--X"200000", +--X"46F400", +--X"400000", +--X"2000D6", +--X"44F400", +--X"E00000", +--X"46F400", +--X"B9999A", +--X"2000D2", +--X"44F400", +--X"E66666", +--X"46F400", +--X"466666", +--X"2000D2", +--X"44F400", +--X"E66666", +--X"46F400", +--X"466666", +--X"2000D6", +-- MAC end + +-- MACR begin +--X"0000B9", +--X"200013", +--X"2E1000", +--X"44F400", +--X"123456", +--X"46F400", +--X"123456", +--X"2000D3", +--X"56F400", +--X"100001", +--X"44F400", +--X"123456", +--X"46F400", +--X"123456", +--X"2000D3", +--X"2E1000", +--X"50F400", +--X"800000", +--X"44F400", +--X"123456", +--X"46F400", +--X"123456", +--X"2000D3", +-- MACR end + +-- MPYR begin +--X"0000B9", +--X"46F400", +--X"654321", +--X"200095", +-- MPYR end + +-- NEG begin +--X"0000B9", +--X"56F400", +--X"654321", +--X"200036", +--X"200013", +--X"52F400", +--X"000080", +--X"200036", +--X"56F400", +--X"800000", +--X"200036", +-- NEG end + +-- NORM begin +X"200013", +X"2C0100", +X"200003", +X"062FA0", +X"01DB15", +X"200013", +X"2EFF00", +X"2A8400", +X"200003", +X"062FA0", +X"01D915", +X"200013", +X"062FA0", +X"01DA15", +-- NORM end + +-- RND begin +--X"0000B9", +--X"54F400", +--X"123456", +--X"50F400", +--X"789ABC", +--X"200011", +--X"54F400", +--X"123456", +--X"50F400", +--X"800000", +--X"200011", +--X"54F400", +--X"123455", +--X"50F400", +--X"800000", +--X"200011", +-- RND end + +-- ROR begin +--X"0000B9", +--X"56F400", +--X"AAAAAA", +--X"50F400", +--X"BCDEFA", +--X"0618A0", +--X"200027", +-- ROR end + +-- ROL begin +--X"0000B9", +--X"56F400", +--X"AAAAAA", +--X"50F400", +--X"BCDEFA", +--X"0618A0", +--X"200037", +-- ROL end + + +-- SUB begin +--X"46F400", +--X"000000", +--X"47F400", +--X"000001", +--X"20001B", +--X"51F400", +--X"000001", +--X"0000B9", +--X"0001F9", +--X"20003C", +--X"47F400", +--X"800000", +--X"53F400", +--X"000080", +--X"20003C", +--X"20001B", +--X"53F400", +--X"000080", +--X"47F400", +--X"000001", +--X"20007C", +-- SUB end + +-- SUBL begin +--X"50F400", +--X"000000", +--X"54F400", +--X"000001", +--X"20001B", +--X"51F400", +--X"000001", +--X"0000B9", +--X"0001F9", +--X"20001E", +--X"54F400", +--X"800000", +--X"53F400", +--X"000080", +--X"20001E", +--X"20001B", +--X"53F400", +--X"000080", +--X"54F400", +--X"000001", +--X"20001E", +-- SUBL end + +-- SUBR begin +--X"50F400", +--X"000000", +--X"54F400", +--X"000001", +--X"20001B", +--X"51F400", +--X"000001", +--X"0000B9", +--X"0001F9", +--X"20000E", +--X"54F400", +--X"800000", +--X"53F400", +--X"000080", +--X"20000E", +--X"20001B", +--X"53F400", +--X"000080", +--X"54F400", +--X"000001", +--X"20000E", +-- SUBR end + +-- SBC begin +--X"46F400", +--X"000000", +--X"47F400", +--X"000001", +--X"20001B", +--X"51F400", +--X"000001", +--X"0000B9", +--X"0001F9", +--X"20003D", +--X"47F400", +--X"800000", +--X"53F400", +--X"000080", +--X"20003D", +--X"20001B", +--X"53F400", +--X"000080", +--X"47F400", +--X"000001", +--X"20003D", +-- SBC end + +-- TCC begin +--X"311400", +--X"44F400", +--X"ABCDEF", +--X"57F400", +--X"123456", +--X"0000B9", +--X"038143", +--X"03014A", +--X"0004F9", +--X"03A143", +--X"03214A", +-- TCC end + +-- TFR begin +--X"56F400", +--X"ABCDEF", +--X"57F400", +--X"123456", +--X"21EE09", +--X"44F400", +--X"555555", +--X"47F400", +--X"AAAAAA", +--X"21C441", +--X"21E679", +-- TFR end + +-- TST begin +--X"20001B", +--X"20000B", +--X"0000B9", +--X"0001F9", +--X"53F400", +--X"000080", +--X"20000B", +--X"53F400", +--X"00007F", +--X"20000B", +-- TST end + + +--X"2AFF00", +--X"54F400", +--X"FFFFFF", +--X"50F400", +--X"FFFFF2", +--X"200026", +--X"000000", +--X"000000", +--X"000000", +--X"000000", +--X"000000", +--X"000000", +--X"000000", +--X"000000", +--X"000000", +--X"000000", +X"000000", +X"000000", +X"000000", +X"000000", +X"000000", +X"000000", +X"000000", +X"000000", +X"000000", +--X"44F400", +--X"100010", +--X"45F400", +--X"100011", +--X"0B5880", +--X"000017", +--X"46F400", +--X"100026", +--X"47F400", +--X"100027", +--X"425800", +--X"435800", +--X"420A00", +--X"431F00", +--X"437000", +--X"0000A0", +--X"427000", +--X"00004F", +-- X"42F800", +-- X"43F800", +-- X"428A00", +-- X"439F00", +-- "001100000100100000000000", -- 0 move #72,r0 +-- "001110000000100000000000", -- 1 move #8,n0 +-- "000001010000000010100000", -- 2 move #0,m0 +-- "000001010001000010100001", -- 3 move #16,m1 +-- "000001101110000100100000", -- 4 rep m1 +-- "010001001100100000000000", -- 5 move x:(r0)+n0,x0 +-- "000000000000000000000000", -- 6 +-- "000000000000000000000000", -- 7 +-- "000000000000000000000000", -- 8 +-- "000000000000000000000000", -- 9 +-- "000000000000000000000000", -- 10 +-- "000000000000000000000000", -- 11 +-- "000000000000000000000000", -- 12 +-- "000000000000000000000000", -- 13 +-- "000000000000000000000000", -- 14 +-- "000000000000000000000000", -- 15 +-- "000000000000000000000000", -- 16 +-- "000000000000000000000000", -- 17 +-- "000000000000000000000000", -- 18 +-- "000000000000000000000000", -- 19 +-- "000010101101101010000000", -- 20 -- JMP (r2)+ +-- "000000000000000000000000", -- 20 +-- "000000000000000000000000", -- 21 +-- "000000000000000000000000", -- 22 + "000000000000000000000000", -- 23 + "000000000000000000000000", -- 24 + "000000000000000000000000", -- 25 + "000000000000000000000000", -- 26 + "000000000000000000000000", -- 27 + "000000000000000000000000", -- 28 + "000000000000000000000000", -- 29 + "000000000000000000000000", -- 30 + "000000000000000000000000", -- 31 +-- "000000000000000000000000", -- 32 +-- "000011010000000000000000", -- 32 -- JSR #0 + "000010111111000010000000", -- 32 -- JSR absolute + "000000000000000001000000", -- 33 -- #64 + "000000000000000000000000", -- 34 + "000000000000000000000000", -- 35 + "000000000000000000000000", -- 36 + "000000000000000000000000", -- 37 + "000000000000000000000000", -- 38 + "000000000000000000000000", -- 39 + "000000000000000000000000", -- 40 + "000000000000000000000000", -- 41 + "000000000000000000000000", -- 42 + "000000000000000000000000", -- 43 + "000000000000000000000000", -- 44 + "000000000000000000000000", -- 45 + "000000000000000000000000", -- 46 + "000000000000000000000000", -- 47 + "000000000000000000000000", -- 48 + "000000000000000000000000", -- 49 + "000000000000000000000000", -- 50 + "000000000000000000000000", -- 51 + "000000000000000000000000", -- 52 + "000000000000000000000000", -- 53 + "000000000000000000000000", -- 54 + "000000000000000000000000", -- 55 + "000000000000000000000000", -- 56 + "000000000000000000000000", -- 57 + "000000000000000000000000", -- 58 + "000000000000000000000000", -- 59 + "000000000000000000000000", -- 60 + "000000000000000000000000", -- 61 + "000000000000000000000000", -- 62 + "000000000000000000000000", -- 63 + "000000000000000000000000", -- 64 + "000000000000000000000000", -- 65 + "000000000000000000000000", -- 66 + "000000000000000000000000", -- 67 + "000000000000000000000000", -- 68 + "000000000000000000000000", -- 69 + "000000000000000000000100", -- 70 -- RTI + "000000000000000000000000", -- 71 + "000000000000000000000000", -- 72 + "000000000000000000000000", -- 73 + "000000000000000000000000", -- 74 + "000000000000000000000000", -- 75 + "000000000000000000000000", -- 76 + "000000000000000000000000", -- 77 + "000000000000000000000000", -- 78 + "000000000000000000000000", -- 79 + "000000000000000000000000", -- 80 + "000000000000000000000000", -- 81 + "000000000000000000000000", -- 82 + "000000000000000000000000", -- 83 + "000000000000000000000000", -- 84 + "000000000000000000000000", -- 85 + "000000000000000000000000", -- 86 + "000000000000000000000000", -- 87 + "000000000000000000000000", -- 88 + "000000000000000000000000", -- 89 + "000000000000000000000000", -- 90 + "000000000000000000000000", -- 91 + "000000000000000000000000", -- 92 + "000000000000000000000000", -- 93 + "000000000000000000000000", -- 94 + "000000000000000000000000", -- 95 + "000000000000000000000000", -- 96 + "000000000000000000000000", -- 97 + "000000000000000000000000", -- 98 + "000000000000000000000000", -- 99 + "000000000000000000000000", -- 100 + "000000000000000000000000", -- 101 + "000000000000000000000000", -- 102 + "000000000000000000000000", -- 103 + "000000000000000000000000", -- 104 + "000000000000000000000000", -- 105 + "000000000000000000000000", -- 106 + "000000000000000000000000", -- 107 + "000000000000000000000000", -- 108 + "000000000000000000000000", -- 109 + "000000000000000000000000", -- 110 + "000000000000000000000000", -- 111 + "000000000000000000000000", -- 112 + "000000000000000000000000", -- 113 + "000000000000000000000000", -- 114 + "000000000000000000000000", -- 115 + "000000000000000000000000", -- 116 + "000000000000000000000000", -- 117 + "000000000000000000000000", -- 118 + "000000000000000000000000", -- 119 + "000000000000000000000000", -- 120 + "000000000000000000000000", -- 121 + "000000000000000000000000", -- 122 + "000000000000000000000000", -- 123 + "000000000000000000000000", -- 124 + "000000000000000000000000", -- 125 + "000000000000000000000000", -- 126 + "000000000000000000000000", -- 127 + "000000000000000000000000", -- 128 + "000000000000000000000000", -- 129 + "000000000000000000000000", -- 130 + "000000000000000000000000", -- 131 + "000000000000000000000000", -- 132 + "000000000000000000000000", -- 133 + "000000000000000000000000", -- 134 + "000000000000000000000000", -- 135 + "000000000000000000000000", -- 136 + "000000000000000000000000", -- 137 + "000000000000000000000000", -- 138 + "000000000000000000000000", -- 139 + "000000000000000000000000", -- 140 + "000000000000000000000000", -- 141 + "000000000000000000000000", -- 142 + "000000000000000000000000", -- 143 + "000000000000000000000000", -- 144 + "000000000000000000000000", -- 145 + "000000000000000000000000", -- 146 + "000000000000000000000000", -- 147 + "000000000000000000000000", -- 148 + "000000000000000000000000", -- 149 + "000000000000000000000000", -- 150 + "000000000000000000000000", -- 151 + "000000000000000000000000", -- 152 + "000000000000000000000000", -- 153 + "000000000000000000000000", -- 154 + "000000000000000000000000", -- 155 + "000000000000000000000000", -- 156 + "000000000000000000000000", -- 157 + "000000000000000000000000", -- 158 + "000000000000000000000000", -- 159 + "000000000000000000000000", -- 160 + "000000000000000000000000", -- 161 + "000000000000000000000000", -- 162 + "000000000000000000000000", -- 163 + "000000000000000000000000", -- 164 + "000000000000000000000000", -- 165 + "000000000000000000000000", -- 166 + "000000000000000000000000", -- 167 + "000000000000000000000000", -- 168 + "000000000000000000000000", -- 169 + "000000000000000000000000", -- 170 + "000000000000000000000000", -- 171 + "000000000000000000000000", -- 172 + "000000000000000000000000", -- 173 + "000000000000000000000000", -- 174 + "000000000000000000000000", -- 175 + "000000000000000000000000", -- 176 + "000000000000000000000000", -- 177 + "000000000000000000000000", -- 178 + "000000000000000000000000", -- 179 + "000000000000000000000000", -- 180 + "000000000000000000000000", -- 181 + "000000000000000000000000", -- 182 + "000000000000000000000000", -- 183 + "000000000000000000000000", -- 184 + "000000000000000000000000", -- 185 + "000000000000000000000000", -- 186 + "000000000000000000000000", -- 187 + "000000000000000000000000", -- 188 + "000000000000000000000000", -- 189 + "000000000000000000000000", -- 190 + "000000000000000000000000", -- 191 + "000000000000000000000000", -- 192 + "000000000000000000000000", -- 193 + "000000000000000000000000", -- 194 + "000000000000000000000000", -- 195 + "000000000000000000000000", -- 196 + "000000000000000000000000", -- 197 + "000000000000000000000000", -- 198 + "000000000000000000000000", -- 199 + "000000000000000000000000", -- 200 + "000000000000000000000000", -- 201 + "000000000000000000000000", -- 202 + "000000000000000000000000", -- 203 + "000000000000000000000000", -- 204 + "000000000000000000000000", -- 205 + "000000000000000000000000", -- 206 + "000000000000000000000000", -- 207 + "000000000000000000000000", -- 208 + "000000000000000000000000", -- 209 + "000000000000000000000000", -- 210 + "000000000000000000000000", -- 211 + "000000000000000000000000", -- 212 + "000000000000000000000000", -- 213 + "000000000000000000000000", -- 214 + "000000000000000000000000", -- 215 + "000000000000000000000000", -- 216 + "000000000000000000000000", -- 217 + "000000000000000000000000", -- 218 + "000000000000000000000000", -- 219 + "000000000000000000000000", -- 220 + "000000000000000000000000", -- 221 + "000000000000000000000000", -- 222 + "000000000000000000000000", -- 223 + "000000000000000000000000", -- 224 + "000000000000000000000000", -- 225 + "000000000000000000000000", -- 226 + "000000000000000000000000", -- 227 + "000000000000000000000000", -- 228 + "000000000000000000000000", -- 229 + "000000000000000000000000", -- 230 + "000000000000000000000000", -- 231 + "000000000000000000000000", -- 232 + "000000000000000000000000", -- 233 + "000000000000000000000000", -- 234 + "000000000000000000000000", -- 235 + "000000000000000000000000", -- 236 + "000000000000000000000000", -- 237 + "000000000000000000000000", -- 238 + "000000000000000000000000", -- 239 + "000000000000000000000000", -- 240 + "000000000000000000000000", -- 241 + "000000000000000000000000", -- 242 + "000000000000000000000000", -- 243 + "000000000000000000000000", -- 244 + "000000000000000000000000", -- 245 + "000000000000000000000000", -- 246 + "000000000000000000000000", -- 247 + "000000000000000000000000", -- 248 + "000000000000000000000000", -- 249 + "000000000000000000000000", -- 250 + "000000000000000000000000", -- 251 + "000000000000000000000000", -- 252 + "000000000000000000000000", -- 253 + "000000000000000000000000", -- 254 + "000000000000000000000000"); -- 255 + signal int_xmem : int_mem_type := ( +-- when "11------10000000" => instr_array(JMP_INSTR) <= '1'; +-- "000000000000111011111001", -- 0 -- ORI #$0E, CCR + "000000000000000000001100", -- 0 -- REP + "000000000000000000000101", -- 1 -- ORI #$0E, MR + "000000000000111011111010", -- 2 -- ORI #$0E, OMR + "000000000000100010111010", -- 3 -- ANDI #$08, OMR +-- "000010101111000010000000", -- 1 -- JMP absolute +-- "000000000000000000011111", -- 2 -- #31 +-- "000011000000000000010000", -- 3 -- JMP #16 + "000000000000000000000000", -- 4 + "000000000000000000000000", -- 5 + "000000000000000000000000", -- 6 + "000000000000000000000000", -- 7 + "000000000000000000000000", -- 8 + "000000000000000000000000", -- 9 + "000000000000000000000000", -- 10 + "000000000000000000000000", -- 11 + "000000000000000000000000", -- 12 + "000000000000000000000000", -- 13 + "000000000000000000000000", -- 14 + "000000000000000000000000", -- 15 + "000000000000000000000000", -- 16 +-- "000000000000000000000000", -- 17 + "000010101101010110100000", -- 17 -- JCC (r5)- + "000000000000000000000000", -- 18 + "000000000000000000000000", -- 19 + "000010101101101010000000", -- 20 -- JMP (r2)+ + "000000000000000000000000", -- 21 + "000000000000000000000000", -- 22 + "000000000000000000000000", -- 23 + "000000000000000000000000", -- 24 + "000000000000000000000000", -- 25 + "000000000000000000000000", -- 26 + "000000000000000000000000", -- 27 + "000000000000000000000000", -- 28 + "000000000000000000000000", -- 29 + "000000000000000000000000", -- 30 + "000000000000000000000000", -- 31 +-- "000000000000000000000000", -- 32 +-- "000011010000000000000000", -- 32 -- JSR #0 + "000010111111000010000000", -- 32 -- JSR absolute + "000000000000000001000000", -- 33 -- #64 + "000000000000000000000000", -- 34 + "000000000000000000000000", -- 35 + "000000000000000000000000", -- 36 + "000000000000000000000000", -- 37 + "000000000000000000000000", -- 38 + "000000000000000000000000", -- 39 + "000000000000000000000000", -- 40 + "000000000000000000000000", -- 41 + "000000000000000000000000", -- 42 + "000000000000000000000000", -- 43 + "000000000000000000000000", -- 44 + "000000000000000000000000", -- 45 + "000000000000000000000000", -- 46 + "000000000000000000000000", -- 47 + "000000000000000000000000", -- 48 + "000000000000000000000000", -- 49 + "000000000000000000000000", -- 50 + "000000000000000000000000", -- 51 + "000000000000000000000000", -- 52 + "000000000000000000000000", -- 53 + "000000000000000000000000", -- 54 + "000000000000000000000000", -- 55 + "000000000000000000000000", -- 56 + "000000000000000000000000", -- 57 + "000000000000000000000000", -- 58 + "000000000000000000000000", -- 59 + "000000000000000000000000", -- 60 + "000000000000000000000000", -- 61 + "000000000000000000000000", -- 62 + "000000000000000000000000", -- 63 + "000000000000000000000000", -- 64 + "000000000000000000000000", -- 65 + "000000000000000000000000", -- 66 + "000000000000000000000000", -- 67 + "000000000000000000000000", -- 68 + "000000000000000000000000", -- 69 + "000000000000000000000100", -- 70 -- RTI + "000000000000000000000000", -- 71 + "000000000000000000000000", -- 72 + "000000000000000000000000", -- 73 + "000000000000000000000000", -- 74 + "000000000000000000000000", -- 75 + "000000000000000000000000", -- 76 + "000000000000000000000000", -- 77 + "000000000000000000000000", -- 78 + "000000000000000000000000", -- 79 + "000000000000000000000000", -- 80 + "000000000000000000000000", -- 81 + "000000000000000000000000", -- 82 + "000000000000000000000000", -- 83 + "000000000000000000000000", -- 84 + "000000000000000000000000", -- 85 + "000000000000000000000000", -- 86 + "000000000000000000000000", -- 87 + "000000000000000000000000", -- 88 + "000000000000000000000000", -- 89 + "000000000000000000000000", -- 90 + "000000000000000000000000", -- 91 + "000000000000000000000000", -- 92 + "000000000000000000000000", -- 93 + "000000000000000000000000", -- 94 + "000000000000000000000000", -- 95 + "000000000000000000000000", -- 96 + "000000000000000000000000", -- 97 + "000000000000000000000000", -- 98 + "000000000000000000000000", -- 99 + "000000000000000000000000", -- 100 + "000000000000000000000000", -- 101 + "000000000000000000000000", -- 102 + "000000000000000000000000", -- 103 + "000000000000000000000000", -- 104 + "000000000000000000000000", -- 105 + "000000000000000000000000", -- 106 + "000000000000000000000000", -- 107 + "000000000000000000000000", -- 108 + "000000000000000000000000", -- 109 + "000000000000000000000000", -- 110 + "000000000000000000000000", -- 111 + "000000000000000000000000", -- 112 + "000000000000000000000000", -- 113 + "000000000000000000000000", -- 114 + "000000000000000000000000", -- 115 + "000000000000000000000000", -- 116 + "000000000000000000000000", -- 117 + "000000000000000000000000", -- 118 + "000000000000000000000000", -- 119 + "000000000000000000000000", -- 120 + "000000000000000000000000", -- 121 + "000000000000000000000000", -- 122 + "000000000000000000000000", -- 123 + "000000000000000000000000", -- 124 + "000000000000000000000000", -- 125 + "000000000000000000000000", -- 126 + "000000000000000000000000", -- 127 + "000000000000000000000000", -- 128 + "000000000000000000000000", -- 129 + "000000000000000000000000", -- 130 + "000000000000000000000000", -- 131 + "000000000000000000000000", -- 132 + "000000000000000000000000", -- 133 + "000000000000000000000000", -- 134 + "000000000000000000000000", -- 135 + "000000000000000000000000", -- 136 + "000000000000000000000000", -- 137 + "000000000000000000000000", -- 138 + "000000000000000000000000", -- 139 + "000000000000000000000000", -- 140 + "000000000000000000000000", -- 141 + "000000000000000000000000", -- 142 + "000000000000000000000000", -- 143 + "000000000000000000000000", -- 144 + "000000000000000000000000", -- 145 + "000000000000000000000000", -- 146 + "000000000000000000000000", -- 147 + "000000000000000000000000", -- 148 + "000000000000000000000000", -- 149 + "000000000000000000000000", -- 150 + "000000000000000000000000", -- 151 + "000000000000000000000000", -- 152 + "000000000000000000000000", -- 153 + "000000000000000000000000", -- 154 + "000000000000000000000000", -- 155 + "000000000000000000000000", -- 156 + "000000000000000000000000", -- 157 + "000000000000000000000000", -- 158 + "000000000000000000000000", -- 159 + "000000000000000000000000", -- 160 + "000000000000000000000000", -- 161 + "000000000000000000000000", -- 162 + "000000000000000000000000", -- 163 + "000000000000000000000000", -- 164 + "000000000000000000000000", -- 165 + "000000000000000000000000", -- 166 + "000000000000000000000000", -- 167 + "000000000000000000000000", -- 168 + "000000000000000000000000", -- 169 + "000000000000000000000000", -- 170 + "000000000000000000000000", -- 171 + "000000000000000000000000", -- 172 + "000000000000000000000000", -- 173 + "000000000000000000000000", -- 174 + "000000000000000000000000", -- 175 + "000000000000000000000000", -- 176 + "000000000000000000000000", -- 177 + "000000000000000000000000", -- 178 + "000000000000000000000000", -- 179 + "000000000000000000000000", -- 180 + "000000000000000000000000", -- 181 + "000000000000000000000000", -- 182 + "000000000000000000000000", -- 183 + "000000000000000000000000", -- 184 + "000000000000000000000000", -- 185 + "000000000000000000000000", -- 186 + "000000000000000000000000", -- 187 + "000000000000000000000000", -- 188 + "000000000000000000000000", -- 189 + "000000000000000000000000", -- 190 + "000000000000000000000000", -- 191 + "000000000000000000000000", -- 192 + "000000000000000000000000", -- 193 + "000000000000000000000000", -- 194 + "000000000000000000000000", -- 195 + "000000000000000000000000", -- 196 + "000000000000000000000000", -- 197 + "000000000000000000000000", -- 198 + "000000000000000000000000", -- 199 + "000000000000000000000000", -- 200 + "000000000000000000000000", -- 201 + "000000000000000000000000", -- 202 + "000000000000000000000000", -- 203 + "000000000000000000000000", -- 204 + "000000000000000000000000", -- 205 + "000000000000000000000000", -- 206 + "000000000000000000000000", -- 207 + "000000000000000000000000", -- 208 + "000000000000000000000000", -- 209 + "000000000000000000000000", -- 210 + "000000000000000000000000", -- 211 + "000000000000000000000000", -- 212 + "000000000000000000000000", -- 213 + "000000000000000000000000", -- 214 + "000000000000000000000000", -- 215 + "000000000000000000000000", -- 216 + "000000000000000000000000", -- 217 + "000000000000000000000000", -- 218 + "000000000000000000000000", -- 219 + "000000000000000000000000", -- 220 + "000000000000000000000000", -- 221 + "000000000000000000000000", -- 222 + "000000000000000000000000", -- 223 + "000000000000000000000000", -- 224 + "000000000000000000000000", -- 225 + "000000000000000000000000", -- 226 + "000000000000000000000000", -- 227 + "000000000000000000000000", -- 228 + "000000000000000000000000", -- 229 + "000000000000000000000000", -- 230 + "000000000000000000000000", -- 231 + "000000000000000000000000", -- 232 + "000000000000000000000000", -- 233 + "000000000000000000000000", -- 234 + "000000000000000000000000", -- 235 + "000000000000000000000000", -- 236 + "000000000000000000000000", -- 237 + "000000000000000000000000", -- 238 + "000000000000000000000000", -- 239 + "000000000000000000000000", -- 240 + "000000000000000000000000", -- 241 + "000000000000000000000000", -- 242 + "000000000000000000000000", -- 243 + "000000000000000000000000", -- 244 + "000000000000000000000000", -- 245 + "000000000000000000000000", -- 246 + "000000000000000000000000", -- 247 + "000000000000000000000000", -- 248 + "000000000000000000000000", -- 249 + "000000000000000000000000", -- 250 + "000000000000000000000000", -- 251 + "000000000000000000000000", -- 252 + "000000000000000000000000", -- 253 + "000000000000000000000000", -- 254 + "000000000000000000000000"); -- 255 + signal int_ymem : int_mem_type := ( +-- when "11------10000000" => instr_array(JMP_INSTR) <= '1'; +-- "000000000000111011111001", -- 0 -- ORI #$0E, CCR + "000000000000000000000001", -- 0 -- REP + "000000000000000000000010", -- 1 -- ORI #$0E, MR + "000000000000000000000011", -- 2 -- ORI #$0E, OMR + "000000000000000000000100", -- 3 -- ANDI #$08, OMR +-- "000010101111000010000000", -- 1 -- JMP absolute +-- "000000000000000000011111", -- 2 -- #31 +-- "000011000000000000010000", -- 3 -- JMP #16 + "000000000000000000000101", -- 4 + "000000000000000000000110", -- 5 + "000000000000000000000111", -- 6 + "000000000000000000001000", -- 7 + "000000000000000000001001", -- 8 + "000000000000000000001010", -- 9 + "000000000000000000001011", -- 10 + "000000000000000000001100", -- 11 + "000000000000000000001101", -- 12 + "000000000000000000001110", -- 13 + "000000000000000000001111", -- 14 + "000000000000000000010000", -- 15 + "000000000000000000010001", -- 16 +-- "000000000000000000000000", -- 17 + "000010101101010110100000", -- 17 -- JCC (r5)- + "000000000000000000000000", -- 18 + "000000000000000000000000", -- 19 + "000010101101101010000000", -- 20 -- JMP (r2)+ + "000000000000000000000000", -- 21 + "000000000000000000000000", -- 22 + "000000000000000000000000", -- 23 + "000000000000000000000000", -- 24 + "000000000000000000000000", -- 25 + "000000000000000000000000", -- 26 + "000000000000000000000000", -- 27 + "000000000000000000000000", -- 28 + "000000000000000000000000", -- 29 + "000000000000000000000000", -- 30 + "000000000000000000000000", -- 31 +-- "000000000000000000000000", -- 32 +-- "000011010000000000000000", -- 32 -- JSR #0 + "000010111111000010000000", -- 32 -- JSR absolute + "000000000000000001000000", -- 33 -- #64 + "000000000000000000000000", -- 34 + "000000000000000000000000", -- 35 + "000000000000000000000000", -- 36 + "000000000000000000000000", -- 37 + "000000000000000000000000", -- 38 + "000000000000000000000000", -- 39 + "000000000000000000000000", -- 40 + "000000000000000000000000", -- 41 + "000000000000000000000000", -- 42 + "000000000000000000000000", -- 43 + "000000000000000000000000", -- 44 + "000000000000000000000000", -- 45 + "000000000000000000000000", -- 46 + "000000000000000000000000", -- 47 + "000000000000000000000000", -- 48 + "000000000000000000000000", -- 49 + "000000000000000000000000", -- 50 + "000000000000000000000000", -- 51 + "000000000000000000000000", -- 52 + "000000000000000000000000", -- 53 + "000000000000000000000000", -- 54 + "000000000000000000000000", -- 55 + "000000000000000000000000", -- 56 + "000000000000000000000000", -- 57 + "000000000000000000000000", -- 58 + "000000000000000000000000", -- 59 + "000000000000000000000000", -- 60 + "000000000000000000000000", -- 61 + "000000000000000000000000", -- 62 + "000000000000000000000000", -- 63 + "000000000000000000000000", -- 64 + "000000000000000000000000", -- 65 + "000000000000000000000000", -- 66 + "000000000000000000000000", -- 67 + "000000000000000000000000", -- 68 + "000000000000000000000000", -- 69 + "000000000000000000000100", -- 70 -- RTI + "000000000000000000000000", -- 71 + "000000000000000000000000", -- 72 + "000000000000000000000000", -- 73 + "000000000000000000000000", -- 74 + "000000000000000000000000", -- 75 + "000000000000000000000000", -- 76 + "000000000000000000000000", -- 77 + "000000000000000000000000", -- 78 + "000000000000000000000000", -- 79 + "000000000000000000000000", -- 80 + "000000000000000000000000", -- 81 + "000000000000000000000000", -- 82 + "000000000000000000000000", -- 83 + "000000000000000000000000", -- 84 + "000000000000000000000000", -- 85 + "000000000000000000000000", -- 86 + "000000000000000000000000", -- 87 + "000000000000000000000000", -- 88 + "000000000000000000000000", -- 89 + "000000000000000000000000", -- 90 + "000000000000000000000000", -- 91 + "000000000000000000000000", -- 92 + "000000000000000000000000", -- 93 + "000000000000000000000000", -- 94 + "000000000000000000000000", -- 95 + "000000000000000000000000", -- 96 + "000000000000000000000000", -- 97 + "000000000000000000000000", -- 98 + "000000000000000000000000", -- 99 + "000000000000000000000000", -- 100 + "000000000000000000000000", -- 101 + "000000000000000000000000", -- 102 + "000000000000000000000000", -- 103 + "000000000000000000000000", -- 104 + "000000000000000000000000", -- 105 + "000000000000000000000000", -- 106 + "000000000000000000000000", -- 107 + "000000000000000000000000", -- 108 + "000000000000000000000000", -- 109 + "000000000000000000000000", -- 110 + "000000000000000000000000", -- 111 + "000000000000000000000000", -- 112 + "000000000000000000000000", -- 113 + "000000000000000000000000", -- 114 + "000000000000000000000000", -- 115 + "000000000000000000000000", -- 116 + "000000000000000000000000", -- 117 + "000000000000000000000000", -- 118 + "000000000000000000000000", -- 119 + "000000000000000000000000", -- 120 + "000000000000000000000000", -- 121 + "000000000000000000000000", -- 122 + "000000000000000000000000", -- 123 + "000000000000000000000000", -- 124 + "000000000000000000000000", -- 125 + "000000000000000000000000", -- 126 + "000000000000000000000000", -- 127 + "000000000000000000000000", -- 128 + "000000000000000000000000", -- 129 + "000000000000000000000000", -- 130 + "000000000000000000000000", -- 131 + "000000000000000000000000", -- 132 + "000000000000000000000000", -- 133 + "000000000000000000000000", -- 134 + "000000000000000000000000", -- 135 + "000000000000000000000000", -- 136 + "000000000000000000000000", -- 137 + "000000000000000000000000", -- 138 + "000000000000000000000000", -- 139 + "000000000000000000000000", -- 140 + "000000000000000000000000", -- 141 + "000000000000000000000000", -- 142 + "000000000000000000000000", -- 143 + "000000000000000000000000", -- 144 + "000000000000000000000000", -- 145 + "000000000000000000000000", -- 146 + "000000000000000000000000", -- 147 + "000000000000000000000000", -- 148 + "000000000000000000000000", -- 149 + "000000000000000000000000", -- 150 + "000000000000000000000000", -- 151 + "000000000000000000000000", -- 152 + "000000000000000000000000", -- 153 + "000000000000000000000000", -- 154 + "000000000000000000000000", -- 155 + "000000000000000000000000", -- 156 + "000000000000000000000000", -- 157 + "000000000000000000000000", -- 158 + "000000000000000000000000", -- 159 + "000000000000000000000000", -- 160 + "000000000000000000000000", -- 161 + "000000000000000000000000", -- 162 + "000000000000000000000000", -- 163 + "000000000000000000000000", -- 164 + "000000000000000000000000", -- 165 + "000000000000000000000000", -- 166 + "000000000000000000000000", -- 167 + "000000000000000000000000", -- 168 + "000000000000000000000000", -- 169 + "000000000000000000000000", -- 170 + "000000000000000000000000", -- 171 + "000000000000000000000000", -- 172 + "000000000000000000000000", -- 173 + "000000000000000000000000", -- 174 + "000000000000000000000000", -- 175 + "000000000000000000000000", -- 176 + "000000000000000000000000", -- 177 + "000000000000000000000000", -- 178 + "000000000000000000000000", -- 179 + "000000000000000000000000", -- 180 + "000000000000000000000000", -- 181 + "000000000000000000000000", -- 182 + "000000000000000000000000", -- 183 + "000000000000000000000000", -- 184 + "000000000000000000000000", -- 185 + "000000000000000000000000", -- 186 + "000000000000000000000000", -- 187 + "000000000000000000000000", -- 188 + "000000000000000000000000", -- 189 + "000000000000000000000000", -- 190 + "000000000000000000000000", -- 191 + "000000000000000000000000", -- 192 + "000000000000000000000000", -- 193 + "000000000000000000000000", -- 194 + "000000000000000000000000", -- 195 + "000000000000000000000000", -- 196 + "000000000000000000000000", -- 197 + "000000000000000000000000", -- 198 + "000000000000000000000000", -- 199 + "000000000000000000000000", -- 200 + "000000000000000000000000", -- 201 + "000000000000000000000000", -- 202 + "000000000000000000000000", -- 203 + "000000000000000000000000", -- 204 + "000000000000000000000000", -- 205 + "000000000000000000000000", -- 206 + "000000000000000000000000", -- 207 + "000000000000000000000000", -- 208 + "000000000000000000000000", -- 209 + "000000000000000000000000", -- 210 + "000000000000000000000000", -- 211 + "000000000000000000000000", -- 212 + "000000000000000000000000", -- 213 + "000000000000000000000000", -- 214 + "000000000000000000000000", -- 215 + "000000000000000000000000", -- 216 + "000000000000000000000000", -- 217 + "000000000000000000000000", -- 218 + "000000000000000000000000", -- 219 + "000000000000000000000000", -- 220 + "000000000000000000000000", -- 221 + "000000000000000000000000", -- 222 + "000000000000000000000000", -- 223 + "000000000000000000000000", -- 224 + "000000000000000000000000", -- 225 + "000000000000000000000000", -- 226 + "000000000000000000000000", -- 227 + "000000000000000000000000", -- 228 + "000000000000000000000000", -- 229 + "000000000000000000000000", -- 230 + "000000000000000000000000", -- 231 + "000000000000000000000000", -- 232 + "000000000000000000000000", -- 233 + "000000000000000000000000", -- 234 + "000000000000000000000000", -- 235 + "000000000000000000000000", -- 236 + "000000000000000000000000", -- 237 + "000000000000000000000000", -- 238 + "000000000000000000000000", -- 239 + "000000000000000000000000", -- 240 + "000000000000000000000000", -- 241 + "000000000000000000000000", -- 242 + "000000000000000000000000", -- 243 + "000000000000000000000000", -- 244 + "000000000000000000000000", -- 245 + "000000000000000000000000", -- 246 + "000000000000000000000000", -- 247 + "000000000000000000000000", -- 248 + "000000000000000000000000", -- 249 + "000000000000000000000000", -- 250 + "000000000000000000000000", -- 251 + "000000000000000000000000", -- 252 + "000000000000000000000000", -- 253 + "000000000000000000000000", -- 254 + "000000000000000000000000"); -- 255 + +begin + +-- int_mem <= int_pmem when mem_type = P_MEM else +-- int_xmem when mem_type = X_MEM else +-- int_ymem when mem_type = Y_MEM; + + wr_accomplished <= wr_en; + + PMEM_GEN: if mem_type = P_MEM generate + data_out <= int_pmem(to_integer(unsigned(int_mem_rd_addr))); + process(clk) is + begin + if rising_edge(clk) then +-- if rst = '1' then +-- data_out_valid <= '0'; +-- int_mem_rd_addr <= (others => '0'); +-- else + int_mem_rd_addr <= std_logic_vector(rd_addr(7 downto 0)); + data_out_valid <= rd_en; + if wr_en = '1' then + int_pmem(to_integer(wr_addr)) <= data_in; + end if; +-- end if; + end if; + end process; + end generate; + + XMEM_GEN: if mem_type = X_MEM generate + data_out <= int_xmem(to_integer(unsigned(int_mem_rd_addr))); + process(clk) is + begin + if rising_edge(clk) then +-- if rst = '1' then +-- data_out_valid <= '0'; +-- int_mem_rd_addr <= (others => '0'); +-- else + int_mem_rd_addr <= std_logic_vector(rd_addr(7 downto 0)); + data_out_valid <= rd_en; + if wr_en = '1' then + int_xmem(to_integer(wr_addr)) <= data_in; + end if; +-- end if; + end if; + end process; + end generate; + + YMEM_GEN: if mem_type = Y_MEM generate + data_out <= int_ymem(to_integer(unsigned(int_mem_rd_addr))); + process(clk) is + begin + if rising_edge(clk) then +-- if rst = '1' then +-- data_out_valid <= '0'; +-- int_mem_rd_addr <= (others => '0'); +-- else + int_mem_rd_addr <= std_logic_vector(rd_addr(7 downto 0)); + data_out_valid <= rd_en; + if wr_en = '1' then + int_ymem(to_integer(wr_addr)) <= data_in; + end if; +-- end if; + end if; + end process; + end generate; +-- process(clk, rst) is +-- begin +-- if rising_edge(clk) then +-- if rst = '1' then +-- data_out_valid <= '0'; +-- int_mem_rd_addr <= (others => '0'); +-- else +-- int_mem_rd_addr <= std_logic_vector(rd_addr(7 downto 0)); +-- data_out_valid <= rd_en; +-- if wr_en = '1' then +-- if mem_type = P_MEM then +-- int_pmem(to_integer(wr_addr)) <= data_in; +-- elsif mem_type = X_MEM then +-- int_xmem(to_integer(wr_addr)) <= data_in; +-- elsif mem_type = Y_MEM then +-- int_ymem(to_integer(wr_addr)) <= data_in; +-- end if; +-- end if; +-- end if; +-- end if; +-- end process; + +end architecture rtl; + diff --git a/FPGA_quartus/DSP/src/memory_management.vhd b/FPGA_quartus/DSP/src/memory_management.vhd new file mode 100644 index 0000000..6a25ac8 --- /dev/null +++ b/FPGA_quartus/DSP/src/memory_management.vhd @@ -0,0 +1,206 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity memory_management is port ( + clk, rst : in std_logic; + stall_flags : in std_logic_vector(PIPELINE_DEPTH-1 downto 0); + memory_stall : out std_logic; + data_rom_enable: in std_logic; + pmem_ctrl_in : in mem_ctrl_type_in; + pmem_ctrl_out : out mem_ctrl_type_out; + xmem_ctrl_in : in mem_ctrl_type_in; + xmem_ctrl_out : out mem_ctrl_type_out; + ymem_ctrl_in : in mem_ctrl_type_in; + ymem_ctrl_out : out mem_ctrl_type_out +); +end memory_management; + + +architecture rtl of memory_management is + + + component mem_control is + generic( + mem_type : memory_type + ); + port( + clk, rst : in std_logic; + rd_addr : in unsigned(BW_ADDRESS-1 downto 0); + rd_en : in std_logic; + data_out : out std_logic_vector(23 downto 0); + data_out_valid : out std_logic; + wr_addr : in unsigned(BW_ADDRESS-1 downto 0); + wr_en : in std_logic; + wr_accomplished : out std_logic; + data_in : in std_logic_vector(23 downto 0) + ); + end component mem_control; + + signal pmem_data_out : std_logic_vector(23 downto 0); + signal pmem_data_out_valid : std_logic; + + signal pmem_rd_addr : unsigned(BW_ADDRESS-1 downto 0); + signal pmem_rd_en : std_logic; + + signal xmem_rd_en : std_logic; + signal xmem_data_out : std_logic_vector(23 downto 0); + signal xmem_data_out_valid : std_logic; + signal xmem_rd_polling : std_logic; + + signal ymem_rd_en : std_logic; + signal ymem_data_out : std_logic_vector(23 downto 0); + signal ymem_data_out_valid : std_logic; + signal ymem_rd_polling : std_logic; + + signal pmem_stall_buffer : std_logic_vector(23 downto 0); + signal pmem_stall_buffer_valid : std_logic; + signal xmem_stall_buffer : std_logic_vector(23 downto 0); + signal ymem_stall_buffer : std_logic_vector(23 downto 0); + + signal stall_flags_d : std_logic_vector(PIPELINE_DEPTH-1 downto 0); + +begin + + -- here it is necessary to store the output of the pmem/xmem/ymem when the pipeline enters a stall + -- when the pipeline wakes up, this temporal result is inserted into the pipeline + stall_buffer: process(clk) is + begin + if rising_edge(clk) then + if rst = '1' then + pmem_stall_buffer <= (others => '0'); + pmem_stall_buffer_valid <= '0'; + xmem_stall_buffer <= (others => '0'); + ymem_stall_buffer <= (others => '0'); + stall_flags_d <= (others => '0'); + else + stall_flags_d <= stall_flags; + if stall_flags(ST_FETCH2) = '1' and stall_flags_d(ST_FETCH2) = '0' then + if pmem_data_out_valid = '1' then + pmem_stall_buffer <= pmem_data_out; + pmem_stall_buffer_valid <= '1'; + end if; + end if; + if stall_flags(ST_FETCH2) = '0' and stall_flags_d(ST_FETCH2) = '1' then + pmem_stall_buffer_valid <= '0'; + end if; + + + end if; + end if; + end process stall_buffer; + + memory_stall <= '1' when ( xmem_rd_en = '1' or (xmem_rd_polling = '1' and xmem_data_out_valid = '0') ) or + ( ymem_rd_en = '1' or (ymem_rd_polling = '1' and ymem_data_out_valid = '0') ) else + '0'; + + ------------------------------- + -- PMEM CONTROLLER + ------------------------------- + inst_pmem_ctrl : mem_control + generic map( + mem_type => P_MEM + ) + port map( + clk => clk, + rst => rst, + rd_addr => pmem_ctrl_in.rd_addr, + rd_en => pmem_ctrl_in.rd_en, + data_out => pmem_data_out, + data_out_valid => pmem_data_out_valid, + wr_addr => pmem_ctrl_in.wr_addr, + wr_en => pmem_ctrl_in.wr_en, + data_in => pmem_ctrl_in.data_in + ); + + -- In case we wake up from a stall use the buffered value + pmem_ctrl_out.data_out <= pmem_stall_buffer when stall_flags(ST_FETCH2) = '0' and + stall_flags_d(ST_FETCH2) = '1' and + pmem_stall_buffer_valid = '1' else + pmem_data_out; + + pmem_ctrl_out.data_out_valid <= pmem_stall_buffer_valid when stall_flags(ST_FETCH2) = '0' and + stall_flags_d(ST_FETCH2) = '1' else + '0' when stall_flags(ST_FETCH2) = '1' else + pmem_data_out_valid; + + ------------------------------- + -- XMEM CONTROLLER + ------------------------------- + inst_xmem_ctrl : mem_control + generic map( + mem_type => X_MEM + ) + port map( + clk => clk, + rst => rst, + rd_addr => xmem_ctrl_in.rd_addr, + rd_en => xmem_rd_en, + data_out => xmem_data_out, + data_out_valid => xmem_data_out_valid, + wr_addr => xmem_ctrl_in.wr_addr, + wr_en => xmem_ctrl_in.wr_en, + data_in => xmem_ctrl_in.data_in + ); + + xmem_rd_en <= '1' when xmem_rd_polling = '0' and xmem_ctrl_in.rd_en = '1' else '0'; + + xmem_ctrl_out.data_out <= xmem_data_out; + xmem_ctrl_out.data_out_valid <= xmem_data_out_valid; + + ------------------------------- + -- YMEM CONTROLLER + ------------------------------- + inst_ymem_ctrl : mem_control + generic map( + mem_type => Y_MEM + ) + port map( + clk => clk, + rst => rst, + rd_addr => ymem_ctrl_in.rd_addr, + rd_en => ymem_rd_en, + data_out => ymem_data_out, + data_out_valid => ymem_data_out_valid, + wr_addr => ymem_ctrl_in.wr_addr, + wr_en => ymem_ctrl_in.wr_en, + data_in => ymem_ctrl_in.data_in + ); + + ymem_rd_en <= '1' when ymem_rd_polling = '0' and ymem_ctrl_in.rd_en = '1' else '0'; + + ymem_ctrl_out.data_out <= ymem_data_out; + ymem_ctrl_out.data_out_valid <= ymem_data_out_valid; + + mem_stall_control: process(clk) is + begin + if rising_edge(clk) then + if rst = '1' then + xmem_rd_polling <= '0'; + ymem_rd_polling <= '0'; + else + if xmem_rd_en = '1' then + xmem_rd_polling <= '1'; + end if; + + if xmem_data_out_valid = '1' then + xmem_rd_polling <= '0'; + end if; + + if ymem_rd_en = '1' then + ymem_rd_polling <= '1'; + end if; + + if ymem_data_out_valid = '1' then + ymem_rd_polling <= '0'; + end if; + + end if; + end if; + end process; +end architecture; + diff --git a/FPGA_quartus/DSP/src/parameter_pkg.vhd b/FPGA_quartus/DSP/src/parameter_pkg.vhd new file mode 100644 index 0000000..9e3c301 --- /dev/null +++ b/FPGA_quartus/DSP/src/parameter_pkg.vhd @@ -0,0 +1,10 @@ + +package parameter_pkg is + + constant BW_ADDRESS : natural := 16; + + constant PIPELINE_DEPTH : natural := 5; + + constant NUM_ACT_SIGNALS : natural := 26; + +end package; diff --git a/FPGA_quartus/DSP/src/pipeline.vhd b/FPGA_quartus/DSP/src/pipeline.vhd new file mode 100644 index 0000000..5b5a98e --- /dev/null +++ b/FPGA_quartus/DSP/src/pipeline.vhd @@ -0,0 +1,968 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity pipeline is port ( + clk, rst : in std_logic; + register_file_out : out register_file_type + +); +end pipeline; + +-- TODOs: +-- External memory accesses +-- ROM tables +-- Reading from SSH flag has to modify stack pointer +-- Memory access (x,y,p) and talling accordingly +-- Address Generator: ring buffers are not yet supported + +-- List of BUGS: +-- - Reading from address one clock cycle after writing to the same address might result in corrupted data!! +-- - SBC instruction has errorneous carry flag calculation + +-- List of probable issues: +-- - Reading from XMEM/YMEM with stalls probably results in corrupted data +-- - ENDDO instruction probably has to flush the pipeline afterwards +-- - Writing to memory occurs twice, when stalls occur + +-- Things to optimize: +-- - RTS/RTI could be executed in the ADGEN Stage already +-- - DO loops always flush the pipeline. This is necessary in case we have a very short loop. +-- The single instruction of the loop then has passed the fetch stage already without the branch + + +architecture rtl of pipeline is + + signal pipeline_regs : pipeline_type; + signal stall_flags : std_logic_vector(PIPELINE_DEPTH-1 downto 0); + + component fetch_stage is port( + pc_old : in unsigned(BW_ADDRESS-1 downto 0); + pc_new : out unsigned(BW_ADDRESS-1 downto 0); + modify_pc : in std_logic; + modified_pc : in unsigned(BW_ADDRESS-1 downto 0); + register_file : in register_file_type; + decrement_lc : out std_logic; + perform_enddo : out std_logic + ); + end component fetch_stage; + + signal pc_old, pc_new : unsigned(BW_ADDRESS-1 downto 0); + signal fetch_modify_pc : std_logic; + signal fetch_modified_pc : unsigned(BW_ADDRESS-1 downto 0); + signal fetch_perform_enddo: std_logic; + signal fetch_decrement_lc: std_logic; + + + component decode_stage is port( + activate_dec : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + dble_word_instr : out std_logic; + instr_array : out instructions_type; + act_array : out std_logic_vector(NUM_ACT_SIGNALS-1 downto 0); + reg_wr_addr : out std_logic_vector(5 downto 0); + reg_rd_addr : out std_logic_vector(5 downto 0); + x_bus_rd_addr : out std_logic_vector(1 downto 0); + x_bus_wr_addr : out std_logic_vector(1 downto 0); + y_bus_rd_addr : out std_logic_vector(1 downto 0); + y_bus_wr_addr : out std_logic_vector(1 downto 0); + l_bus_addr : out std_logic_vector(2 downto 0); + adgen_mode_a : out adgen_mode_type; + adgen_mode_b : out adgen_mode_type; + alu_ctrl : out alu_ctrl_type + ); + end component decode_stage; + + signal dec_activate : std_logic; + signal dec_instr_word : std_logic_vector(23 downto 0); + signal dec_dble_word_instr : std_logic; + signal dec_instr_array : instructions_type; + signal dec_act_array : std_logic_vector(NUM_ACT_SIGNALS-1 downto 0); + signal dec_reg_wr_addr : std_logic_vector(5 downto 0); + signal dec_reg_rd_addr : std_logic_vector(5 downto 0); + signal dec_x_bus_wr_addr : std_logic_vector(1 downto 0); + signal dec_x_bus_rd_addr : std_logic_vector(1 downto 0); + signal dec_y_bus_wr_addr : std_logic_vector(1 downto 0); + signal dec_y_bus_rd_addr : std_logic_vector(1 downto 0); + signal dec_l_bus_addr : std_logic_vector(2 downto 0); + signal dec_adgen_mode_a : adgen_mode_type; + signal dec_adgen_mode_b : adgen_mode_type; + signal dec_alu_ctrl : alu_ctrl_type; + + component adgen_stage is port( + activate_adgen : in std_logic; + activate_x_mem : in std_logic; + activate_y_mem : in std_logic; + activate_l_mem : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + optional_ea_word : in std_logic_vector(23 downto 0); + register_file : in register_file_type; + adgen_mode_a : in adgen_mode_type; + adgen_mode_b : in adgen_mode_type; + address_out_x : out unsigned(BW_ADDRESS-1 downto 0); + address_out_y : out unsigned(BW_ADDRESS-1 downto 0); + wr_R_port_A_valid : out std_logic; + wr_R_port_A : out addr_wr_port_type; + wr_R_port_B_valid : out std_logic; + wr_R_port_B : out addr_wr_port_type + ); + end component adgen_stage; + + signal adgen_activate : std_logic; + signal adgen_activate_x_mem : std_logic; + signal adgen_activate_y_mem : std_logic; + signal adgen_activate_l_mem : std_logic; + signal adgen_instr_word : std_logic_vector(23 downto 0); + signal adgen_instr_array : instructions_type; + signal adgen_optional_ea_word : std_logic_vector(23 downto 0); + signal adgen_register_file : register_file_type; + signal adgen_mode_a : adgen_mode_type; + signal adgen_mode_b : adgen_mode_type; + signal adgen_address_out_x : unsigned(BW_ADDRESS-1 downto 0); + signal adgen_address_out_y : unsigned(BW_ADDRESS-1 downto 0); + signal adgen_wr_R_port_A_valid : std_logic; + signal adgen_wr_R_port_A : addr_wr_port_type; + signal adgen_wr_R_port_B_valid : std_logic; + signal adgen_wr_R_port_B : addr_wr_port_type; + + component exec_stage_bit_modify is port( + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + src_operand : in std_logic_vector(23 downto 0); + register_file : in register_file_type; + dst_operand : out std_logic_vector(23 downto 0); + bit_cond_met : out std_logic; + modify_sr : out std_logic; + modified_sr : out std_logic_vector(15 downto 0) + ); + end component exec_stage_bit_modify; + + signal exec_bit_modify_instr_word : std_logic_vector(23 downto 0); + signal exec_bit_modify_instr_array : instructions_type; + signal exec_bit_modify_src_operand : std_logic_vector(23 downto 0); + signal exec_bit_modify_dst_operand : std_logic_vector(23 downto 0); + signal exec_bit_modify_bit_cond_met : std_logic; + signal exec_bit_modify_modify_sr : std_logic; + signal exec_bit_modify_modified_sr : std_logic_vector(15 downto 0); + + component exec_stage_branch is port( + activate_exec_bra : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + register_file : in register_file_type; + jump_address : in unsigned(BW_ADDRESS-1 downto 0); + bit_cond_met : in std_logic; + cc_flag_set : in std_logic; + push_stack : out push_stack_type; + pop_stack : out pop_stack_type; + modify_pc : out std_logic; + modified_pc : out unsigned(BW_ADDRESS-1 downto 0); + modify_sr : out std_logic; + modified_sr : out std_logic_vector(15 downto 0) + ); + end component exec_stage_branch; + + signal exec_bra_activate : std_logic; + signal exec_bra_instr_word : std_logic_vector(23 downto 0); + signal exec_bra_instr_array : instructions_type; + signal exec_bra_jump_address : unsigned(BW_ADDRESS-1 downto 0); + signal exec_bra_bit_cond_met : std_logic; + signal exec_bra_push_stack : push_stack_type; + signal exec_bra_pop_stack : pop_stack_type; + signal exec_bra_modify_pc : std_logic; + signal exec_bra_modified_pc : unsigned(BW_ADDRESS-1 downto 0); + signal exec_bra_modify_sr : std_logic; + signal exec_bra_modified_sr : std_logic_vector(15 downto 0); + + component exec_stage_cr_mod is port( + activate_exec_cr_mod : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + register_file : in register_file_type; + modify_sr : out std_logic; + modified_sr : out std_logic_vector(15 downto 0); + modify_omr : out std_logic; + modified_omr : out std_logic_vector(7 downto 0) + ); + end component exec_stage_cr_mod; + + signal exec_cr_mod_activate : std_logic; + signal exec_cr_mod_instr_word : std_logic_vector(23 downto 0); + signal exec_cr_mod_instr_array : instructions_type; + signal exec_cr_mod_modify_sr : std_logic; + signal exec_cr_mod_modified_sr : std_logic_vector(15 downto 0); + signal exec_cr_mod_modify_omr : std_logic; + signal exec_cr_mod_modified_omr : std_logic_vector(7 downto 0); + + component exec_stage_loop is port( + clk, rst : in std_logic; + activate_exec_loop : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + loop_iterations : in unsigned(15 downto 0); + loop_address : in unsigned(BW_ADDRESS-1 downto 0); + loop_start_address: in unsigned(BW_ADDRESS-1 downto 0); + register_file : in register_file_type; + fetch_perform_enddo: in std_logic; + memory_stall : in std_logic; + push_stack : out push_stack_type; + pop_stack : out pop_stack_type; + stall_rep : out std_logic; + stall_do : out std_logic; + decrement_lc : out std_logic; + modify_lc : out std_logic; + modified_lc : out unsigned(15 downto 0); + modify_la : out std_logic; + modified_la : out unsigned(15 downto 0); + modify_pc : out std_logic; + modified_pc : out unsigned(BW_ADDRESS-1 downto 0); + modify_sr : out std_logic; + modified_sr : out std_logic_vector(15 downto 0) + ); + end component exec_stage_loop; + + signal exec_loop_activate : std_logic; + signal exec_loop_instr_word : std_logic_vector(23 downto 0); + signal exec_loop_instr_array : instructions_type; + signal exec_loop_iterations : unsigned(15 downto 0); + signal exec_loop_address : unsigned(BW_ADDRESS-1 downto 0); + signal exec_loop_start_address : unsigned(BW_ADDRESS-1 downto 0); + signal exec_loop_register_file : register_file_type; + signal exec_loop_push_stack : push_stack_type; + signal exec_loop_pop_stack : pop_stack_type; + signal exec_loop_stall_rep : std_logic; + signal exec_loop_stall_do : std_logic; + signal exec_loop_decrement_lc : std_logic; + signal exec_loop_modify_lc : std_logic; + signal exec_loop_modified_lc : unsigned(15 downto 0); + signal exec_loop_modify_la : std_logic; + signal exec_loop_modified_la : unsigned(BW_ADDRESS-1 downto 0); + signal exec_loop_modify_pc : std_logic; + signal exec_loop_modified_pc : unsigned(BW_ADDRESS-1 downto 0); + signal exec_loop_modify_sr : std_logic; + signal exec_loop_modified_sr : std_logic_vector(BW_ADDRESS-1 downto 0); + + component exec_stage_alu is port( + alu_activate : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + alu_ctrl : in alu_ctrl_type; + register_file : in register_file_type; + addr_r_in : in unsigned(BW_ADDRESS-1 downto 0); + addr_r_out : out unsigned(BW_ADDRESS-1 downto 0); + modify_accu : out std_logic; + dst_accu : out std_logic; + modified_accu : out signed(55 downto 0); + modify_sr : out std_logic; + modified_sr : out std_logic_vector(15 downto 0) + ); + end component exec_stage_alu; + + signal exec_alu_activate : std_logic; + signal exec_alu_instr_word : std_logic_vector(23 downto 0); + signal exec_alu_ctrl : alu_ctrl_type; + signal exec_alu_addr_r_in : unsigned(BW_ADDRESS-1 downto 0); + signal exec_alu_addr_r_out : unsigned(BW_ADDRESS-1 downto 0); + signal exec_alu_modify_accu : std_logic; + signal exec_alu_dst_accu : std_logic; + signal exec_alu_modified_accu : signed(55 downto 0); + signal exec_alu_modify_sr : std_logic; + signal exec_alu_modified_sr : std_logic_vector(15 downto 0); + + signal exec_imm_8bit : std_logic_vector(23 downto 0); + signal exec_imm_12bit : std_logic_vector(23 downto 0); + signal exec_src_operand : std_logic_vector(23 downto 0); + signal exec_dst_operand : std_logic_vector(23 downto 0); + + component exec_stage_cc_flag_calc is port( + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + register_file : in register_file_type; + cc_flag_set : out std_logic + ); + end component exec_stage_cc_flag_calc; + + signal exec_cc_flag_calc_instr_word : std_logic_vector(23 downto 0); + signal exec_cc_flag_calc_instr_array : instructions_type; + signal exec_cc_flag_set : std_logic; + + component reg_file is port( + clk, rst : in std_logic; + register_file : out register_file_type; + wr_R_port_A_valid : in std_logic; + wr_R_port_A : in addr_wr_port_type; + wr_R_port_B_valid : in std_logic; + wr_R_port_B : in addr_wr_port_type; + alu_wr_valid : in std_logic; + alu_wr_addr : in std_logic; + alu_wr_data : in signed(55 downto 0); + reg_wr_addr : in std_logic_vector(5 downto 0); + reg_wr_addr_valid : in std_logic; + reg_wr_data : in std_Logic_vector(23 downto 0); + reg_rd_addr : in std_logic_vector(5 downto 0); + reg_rd_data : out std_Logic_vector(23 downto 0); + X_bus_rd_addr : in std_logic_vector(1 downto 0); + X_bus_data_out : out std_logic_vector(23 downto 0); + X_bus_wr_addr : in std_logic_vector(1 downto 0); + X_bus_wr_valid : in std_logic; + X_bus_data_in : in std_logic_vector(23 downto 0); + Y_bus_rd_addr : in std_logic_vector(1 downto 0); + Y_bus_data_out : out std_logic_vector(23 downto 0); + Y_bus_wr_addr : in std_logic_vector(1 downto 0); + Y_bus_wr_valid : in std_logic; + Y_bus_data_in : in std_logic_vector(23 downto 0); + L_bus_rd_addr : in std_logic_vector(2 downto 0); + L_bus_rd_valid : in std_logic; + L_bus_wr_addr : in std_logic_vector(2 downto 0); + L_bus_wr_valid : in std_logic; + push_stack : in push_stack_type; + pop_stack : in pop_stack_type; + set_sr : in std_logic; + new_sr : in std_logic_vector(15 downto 0); + set_omr : in std_logic; + new_omr : in std_logic_vector(7 downto 0); + set_lc : in std_logic; + new_lc : in unsigned(15 downto 0); + dec_lc : in std_logic; + set_la : in std_logic; + new_la : in unsigned(BW_ADDRESS-1 downto 0) + ); + end component reg_file; + + signal register_file : register_file_type; + signal rf_wr_R_port_A_valid : std_logic; + signal rf_wr_R_port_B_valid : std_logic; + signal rf_reg_wr_addr : std_logic_vector(5 downto 0); + signal rf_reg_wr_addr_valid : std_logic; + signal rf_reg_wr_data : std_logic_vector(23 downto 0); + signal rf_reg_rd_addr : std_logic_vector(5 downto 0); + signal rf_reg_rd_data : std_logic_vector(23 downto 0); + signal rf_X_bus_rd_addr : std_logic_vector(1 downto 0); + signal rf_X_bus_data_out : std_logic_vector(23 downto 0); + signal rf_X_bus_wr_addr : std_logic_vector(1 downto 0); + signal rf_X_bus_wr_valid : std_logic; + signal rf_X_bus_data_in : std_logic_vector(23 downto 0); + signal rf_Y_bus_rd_addr : std_logic_vector(1 downto 0); + signal rf_Y_bus_data_out : std_logic_vector(23 downto 0); + signal rf_Y_bus_wr_addr : std_logic_vector(1 downto 0); + signal rf_Y_bus_wr_valid : std_logic; + signal rf_Y_bus_data_in : std_logic_vector(23 downto 0); + signal rf_L_bus_rd_addr : std_logic_vector(2 downto 0); + signal rf_L_bus_rd_valid : std_logic; + signal rf_L_bus_wr_addr : std_logic_vector(2 downto 0); + signal rf_L_bus_wr_valid : std_logic; + signal push_stack : push_stack_type; + signal pop_stack : pop_stack_type; + signal rf_set_sr : std_logic; + signal rf_new_sr : std_logic_vector(15 downto 0); + signal rf_set_omr : std_logic; + signal rf_new_omr : std_logic_vector(7 downto 0); + signal rf_dec_lc : std_logic; + signal rf_set_lc : std_logic; + signal rf_new_lc : unsigned(15 downto 0); + signal rf_set_la : std_logic; + signal rf_new_la : unsigned(BW_ADDRESS-1 downto 0); + signal rf_alu_wr_valid : std_logic; + + component memory_management is port ( + clk, rst : in std_logic; + stall_flags : in std_logic_vector(PIPELINE_DEPTH-1 downto 0); + memory_stall : out std_logic; + data_rom_enable: in std_logic; + pmem_ctrl_in : in mem_ctrl_type_in; + pmem_ctrl_out : out mem_ctrl_type_out; + xmem_ctrl_in : in mem_ctrl_type_in; + xmem_ctrl_out : out mem_ctrl_type_out; + ymem_ctrl_in : in mem_ctrl_type_in; + ymem_ctrl_out : out mem_ctrl_type_out + ); + end component memory_management; + + signal memory_stall : std_logic; + signal pmem_ctrl_in : mem_ctrl_type_in; + signal pmem_ctrl_out : mem_ctrl_type_out; + signal xmem_ctrl_in : mem_ctrl_type_in; + signal xmem_ctrl_out : mem_ctrl_type_out; + signal ymem_ctrl_in : mem_ctrl_type_in; + signal ymem_ctrl_out : mem_ctrl_type_out; + + signal pmem_data_out : std_logic_vector(23 downto 0); + signal pmem_data_out_valid : std_logic; + signal xmem_data_out : std_logic_vector(23 downto 0); + signal xmem_data_out_valid : std_logic; + signal ymem_data_out : std_logic_vector(23 downto 0); + signal ymem_data_out_valid : std_logic; + +begin + register_file_out <= register_file; + + -- merge all stall sources + stall_flags(ST_FETCH) <= '1' when exec_loop_stall_rep = '1' or + memory_stall = '1' or + exec_loop_stall_do = '1' else '0'; + stall_flags(ST_FETCH2) <= '1' when exec_loop_stall_rep = '1' or + memory_stall = '1' or + exec_loop_stall_do = '1' else '0'; + stall_flags(ST_DECODE) <= '1' when exec_loop_stall_rep = '1' or + memory_stall = '1' or + exec_loop_stall_do = '1' else '0'; + stall_flags(ST_ADGEN) <= exec_loop_stall_do; +-- stall_flags(ST_ADGEN) <= '1' when memory_stall = '1' or +-- exec_loop_stall_do = '1' else '0'; +-- stall_flags(ST_EXEC) <= '0'; + stall_flags(ST_EXEC) <= exec_loop_stall_do; +-- stall_flags(ST_EXEC) <= '1' when memory_stall = '1' or +-- exec_loop_stall_do = '1' else '0'; + + shift_pipeline: process(clk, rst) is + procedure flush_pipeline_stage(stage: natural) is + begin + pipeline_regs(stage).pc <= (others => '1'); + pipeline_regs(stage).instr_word <= (others => '0'); + pipeline_regs(stage).act_array <= (others => '0'); + pipeline_regs(stage).instr_array <= INSTR_NOP; + pipeline_regs(stage).dble_word_instr <= '0'; + pipeline_regs(stage).dec_activate <= '0'; + pipeline_regs(stage).adgen_mode_a <= NOP; + pipeline_regs(stage).adgen_mode_b <= NOP; + pipeline_regs(stage).reg_wr_addr <= (others => '0'); + pipeline_regs(stage).reg_rd_addr <= (others => '0'); + pipeline_regs(stage).x_bus_rd_addr <= (others => '0'); + pipeline_regs(stage).x_bus_wr_addr <= (others => '0'); + pipeline_regs(stage).y_bus_rd_addr <= (others => '0'); + pipeline_regs(stage).y_bus_wr_addr <= (others => '0'); + pipeline_regs(stage).l_bus_addr <= (others => '0'); + pipeline_regs(stage).adgen_address_x <= (others => '0'); + pipeline_regs(stage).adgen_address_y <= (others => '0'); + pipeline_regs(stage).RAM_out_x <= (others => '0'); + pipeline_regs(stage).RAM_out_y <= (others => '0'); + pipeline_regs(stage).alu_ctrl.store_result <= '0'; + end procedure flush_pipeline_stage; + begin + if rising_edge(clk) then + if rst = '1' then + for i in 0 to PIPELINE_DEPTH-1 loop + flush_pipeline_stage(i); + end loop; + else + -- shift the pipeline registers when no stall applies + for i in 1 to PIPELINE_DEPTH-1 loop + if stall_flags(i) = '0' then + -- do not copy the pipeline registers from a stalled pipeline stage + -- for REP we do not flush +-- if stall_flags(i-1) = '1' then + if (stall_flags(i-1) = '1' and exec_loop_stall_rep = '0') or + (i = ST_ADGEN and memory_stall = '1' and exec_loop_stall_rep = '1') then + flush_pipeline_stage(i); + else + pipeline_regs(i) <= pipeline_regs(i-1); + end if; + end if; + end loop; + -- FETCH Pipeline Registers + if stall_flags(ST_FETCH) = '0' then + pipeline_regs(ST_FETCH).pc <= pc_new; + pipeline_regs(ST_FETCH).dec_activate <= '1'; + end if; + + -- FETCH2 Pipeline Registers + if stall_flags(ST_FETCH2) = '0' then + -- Normal pipeline operation? + -- Buffering of RAM output when stalling is performed in the memory management + if pmem_data_out_valid = '1' then + pipeline_regs(ST_FETCH2).instr_word <= pmem_data_out; + end if; + end if; + + -- DECODE Pipeline registers + if stall_flags(ST_DECODE) = '0' then + pipeline_regs(ST_DECODE).act_array <= dec_act_array; + pipeline_regs(ST_DECODE).instr_array <= dec_instr_array; + pipeline_regs(ST_DECODE).dble_word_instr <= dec_dble_word_instr; + pipeline_regs(ST_DECODE).reg_wr_addr <= dec_reg_wr_addr; + pipeline_regs(ST_DECODE).reg_rd_addr <= dec_reg_rd_addr; + pipeline_regs(ST_DECODE).x_bus_wr_addr <= dec_x_bus_wr_addr; + pipeline_regs(ST_DECODE).x_bus_rd_addr <= dec_x_bus_rd_addr; + pipeline_regs(ST_DECODE).y_bus_wr_addr <= dec_y_bus_wr_addr; + pipeline_regs(ST_DECODE).y_bus_rd_addr <= dec_y_bus_rd_addr; + pipeline_regs(ST_DECODE).l_bus_addr <= dec_l_bus_addr; + pipeline_regs(ST_DECODE).adgen_mode_a <= dec_adgen_mode_a; + pipeline_regs(ST_DECODE).adgen_mode_b <= dec_adgen_mode_b; + pipeline_regs(ST_DECODE).alu_ctrl <= dec_alu_ctrl; + end if; + + -- ADGEN Pipeline registers + if stall_flags(ST_ADGEN) = '0' then + pipeline_regs(ST_ADGEN).adgen_address_x <= adgen_address_out_x; + pipeline_regs(ST_ADGEN).adgen_address_y <= adgen_address_out_y; + end if; + if xmem_data_out_valid = '1' then + pipeline_regs(ST_ADGEN).RAM_out_x <= xmem_data_out; + end if; + if ymem_data_out_valid = '1' then + pipeline_regs(ST_ADGEN).RAM_out_y <= ymem_data_out; + end if; + + -- EXEC Pipeline stuff + if exec_bra_modify_pc = '1' or exec_loop_modify_pc = '1' then + -- clear the following pipeline stages, + -- since we modified the pc. + -- Do not flush ST_FETCH - it will hold the correct pc. + flush_pipeline_stage(ST_FETCH2); + flush_pipeline_stage(ST_DECODE); + flush_pipeline_stage(ST_ADGEN); + end if; + end if; + end if; + end process shift_pipeline; + + ------------------------------- + -- FETCH STAGE INSTANTIATION + ------------------------------- + inst_fetch_stage: fetch_stage port map( + pc_old => pc_old, + pc_new => pc_new, + modify_pc => fetch_modify_pc, + modified_pc => fetch_modified_pc, + register_file => register_file, + decrement_lc => fetch_decrement_lc, + perform_enddo => fetch_perform_enddo + ); + + pc_old <= pipeline_regs(ST_FETCH).pc; + + fetch_modify_pc <= '1' when exec_bra_modify_pc = '1' or exec_loop_modify_pc = '1' else '0'; + fetch_modified_pc <= exec_bra_modified_pc when exec_bra_modify_pc = '1' else + exec_loop_modified_pc; + + ------------------------------- + -- DECODE STAGE INSTANTIATION + ------------------------------- + inst_decode_stage : decode_stage port map( + activate_dec => dec_activate, + instr_word => dec_instr_word, + dble_word_instr => dec_dble_word_instr, + instr_array => dec_instr_array, + act_array => dec_act_array, + reg_wr_addr => dec_reg_wr_addr, + reg_rd_addr => dec_reg_rd_addr, + x_bus_wr_addr => dec_x_bus_wr_addr, + x_bus_rd_addr => dec_x_bus_rd_addr, + y_bus_wr_addr => dec_y_bus_wr_addr, + y_bus_rd_addr => dec_y_bus_rd_addr, + l_bus_addr => dec_l_bus_addr, + adgen_mode_a => dec_adgen_mode_a, + adgen_mode_b => dec_adgen_mode_b, + alu_ctrl => dec_alu_ctrl + ); + + dec_instr_word <= pipeline_regs(ST_DECODE-1).instr_word; + -- do not decode, when we have no valid instruction. This can happen when + -- 1) the pipeline just started its operation + -- 2) the pipeline was flushed due to a jump + -- 3) we are processing a instruction that consists of two words + dec_activate <= '1' when pipeline_regs(ST_DECODE-1).dec_activate = '1' and pipeline_regs(ST_DECODE).dble_word_instr = '0' else '0'; + + ------------------------------- + -- AGU STAGE INSTANTIATION + ------------------------------- + inst_adgen_stage: adgen_stage port map( + activate_adgen => adgen_activate, + activate_x_mem => adgen_activate_x_mem, + activate_y_mem => adgen_activate_y_mem, + activate_l_mem => adgen_activate_l_mem, + instr_word => adgen_instr_word, + instr_array => adgen_instr_array, + optional_ea_word => adgen_optional_ea_word, + register_file => register_file, + adgen_mode_a => adgen_mode_a, + adgen_mode_b => adgen_mode_b, + address_out_x => adgen_address_out_x, + address_out_y => adgen_address_out_y, + wr_R_port_A_valid => adgen_wr_R_port_A_valid, + wr_R_port_A => adgen_wr_R_port_A, + wr_R_port_B_valid => adgen_wr_R_port_B_valid, + wr_R_port_B => adgen_wr_R_port_B + ); + + adgen_activate <= pipeline_regs(ST_ADGEN-1).act_array(ACT_ADGEN); + adgen_activate_x_mem <= '1' when pipeline_regs(ST_ADGEN-1).act_array(ACT_X_MEM_RD) = '1' or + pipeline_regs(ST_ADGEN-1).act_array(ACT_X_MEM_WR) = '1' else '0'; + adgen_activate_y_mem <= '1' when pipeline_regs(ST_ADGEN-1).act_array(ACT_Y_MEM_RD) = '1' or + pipeline_regs(ST_ADGEN-1).act_array(ACT_Y_MEM_WR) = '1' else '0'; + adgen_activate_l_mem <= '1' when pipeline_regs(ST_ADGEN-1).act_array(ACT_L_BUS_RD) = '1' or + pipeline_regs(ST_ADGEN-1).act_array(ACT_L_BUS_WR) = '1' else '0'; + adgen_instr_word <= pipeline_regs(ST_ADGEN-1).instr_word; + adgen_instr_array <= pipeline_regs(ST_ADGEN-1).instr_array; + adgen_optional_ea_word <= pipeline_regs(ST_ADGEN-2).instr_word; + adgen_mode_a <= pipeline_regs(ST_ADGEN-1).adgen_mode_a; + adgen_mode_b <= pipeline_regs(ST_ADGEN-1).adgen_mode_b; + + ------------------------------- + -- EXECUTE STAGE INSTANTIATIONS + ------------------------------- + inst_exec_stage_alu: exec_stage_alu port map( + alu_activate => exec_alu_activate, + instr_word => exec_alu_instr_word, + alu_ctrl => exec_alu_ctrl, + register_file => register_file, + addr_r_in => exec_alu_addr_r_in, + addr_r_out => exec_alu_addr_r_out, + modify_accu => exec_alu_modify_accu, + dst_accu => exec_alu_dst_accu, + modified_accu => exec_alu_modified_accu, + modify_sr => exec_alu_modify_sr, + modified_sr => exec_alu_modified_sr + ); + + exec_alu_activate <= pipeline_regs(ST_EXEC-1).act_array(ACT_ALU); + exec_alu_instr_word <= pipeline_regs(ST_EXEC-1).instr_word; + exec_alu_ctrl <= pipeline_regs(ST_EXEC-1).alu_ctrl; + + exec_alu_addr_r_in <= unsigned(rf_reg_rd_data(BW_ADDRESS-1 downto 0)); + + inst_exec_stage_bit_modify: exec_stage_bit_modify port map( + instr_word => exec_bit_modify_instr_word, + instr_array => exec_bit_modify_instr_array, + src_operand => exec_bit_modify_src_operand, + register_file => register_file, + dst_operand => exec_bit_modify_dst_operand, + bit_cond_met => exec_bit_modify_bit_cond_met, + modify_sr => exec_bit_modify_modify_sr, + modified_sr => exec_bit_modify_modified_sr + ); + + exec_bit_modify_instr_word <= pipeline_regs(ST_EXEC-1).instr_word; + exec_bit_modify_instr_array <= pipeline_regs(ST_EXEC-1).instr_array; + exec_bit_modify_src_operand <= exec_src_operand; + + -- Writing to the register file using the 6 bit addressing scheme + -- sources are: + -- 1) X-RAM output + -- 2) Y-RAM output + -- 3) register file itself + -- 4) short immediate value (8 bit stored in instruction word) + -- 5) long immediate value (from optional effective address extension) + -- 5) address generated by the address generation unit (LUA instr) + exec_src_operand <= pipeline_regs(ST_EXEC-1).RAM_out_x when pipeline_regs(ST_EXEC-1).act_array(ACT_X_MEM_RD) = '1' else + pipeline_regs(ST_EXEC-1).RAM_out_y when pipeline_regs(ST_EXEC-1).act_array(ACT_Y_MEM_RD) = '1' else + rf_reg_rd_data when pipeline_regs(ST_EXEC-1).act_array(ACT_REG_RD) = '1' else + exec_imm_8bit when pipeline_regs(ST_EXEC-1).act_array(ACT_IMM_8BIT) = '1' else + exec_imm_12bit when pipeline_regs(ST_EXEC-1).act_array(ACT_IMM_12BIT) = '1' else + pipeline_regs(ST_EXEC-2).instr_word when pipeline_regs(ST_EXEC-1).act_array(ACT_IMM_LONG) = '1' else + std_logic_vector(resize(pipeline_regs(ST_EXEC-1).adgen_address_x, 24)); -- for LUA instr. + + -- Destination for the register file using the 6 bit addressing scheme. + -- Either read the bit modified version of the read value + -- or use the modified Rn in case of a NORM instruction +-- exec_dst_operand <= exec_bit_modify_dst_operand; + exec_dst_operand <= exec_bit_modify_dst_operand when pipeline_regs(ST_EXEC-1).act_array(ACT_NORM) = '0' else + std_logic_vector(resize(exec_alu_addr_r_out,24)); + + -- Unit to check whether cc (in Jcc, JScc, Tcc, ...) is true + inst_exec_stage_cc_flag_calc: exec_stage_cc_flag_calc port map( + instr_word => exec_cc_flag_calc_instr_word, + instr_array => exec_cc_flag_calc_instr_array, + register_file => register_file, + cc_flag_set => exec_cc_flag_set + ); + + exec_cc_flag_calc_instr_word <= pipeline_regs(ST_EXEC-1).instr_word; + exec_cc_flag_calc_instr_array <= pipeline_regs(ST_EXEC-1).instr_array; + + + inst_exec_stage_branch : exec_stage_branch port map( + activate_exec_bra => exec_bra_activate, + instr_word => exec_bra_instr_word, + instr_array => exec_bra_instr_array, + register_file => register_file, + jump_address => exec_bra_jump_address, + bit_cond_met => exec_bra_bit_cond_met, + cc_flag_set => exec_cc_flag_set, + push_stack => exec_bra_push_stack, + pop_stack => exec_bra_pop_stack, + modify_pc => exec_bra_modify_pc, + modified_pc => exec_bra_modified_pc, + modify_sr => exec_bra_modify_sr, + modified_sr => exec_bra_modified_sr + ); + + exec_bra_activate <= pipeline_regs(ST_EXEC-1).act_array(ACT_EXEC_BRA); + exec_bra_instr_word <= pipeline_regs(ST_EXEC-1).instr_word; + exec_bra_instr_array <= pipeline_regs(ST_EXEC-1).instr_array; + exec_bra_jump_address <= pipeline_regs(ST_EXEC-1).adgen_address_x when pipeline_regs(ST_EXEC-1).dble_word_instr = '0' else + unsigned(pipeline_regs(ST_EXEC-2).instr_word(BW_ADDRESS-1 downto 0)); + exec_bra_bit_cond_met <= exec_bit_modify_bit_cond_met; + + inst_exec_stage_cr_mod : exec_stage_cr_mod port map( + activate_exec_cr_mod => exec_cr_mod_activate, + instr_word => exec_cr_mod_instr_word, + instr_array => exec_cr_mod_instr_array, + register_file => register_file, + modify_sr => exec_cr_mod_modify_sr, + modified_sr => exec_cr_mod_modified_sr, + modify_omr => exec_cr_mod_modify_omr, + modified_omr => exec_cr_mod_modified_omr + ); + + exec_cr_mod_activate <= pipeline_regs(ST_EXEC-1).act_array(ACT_EXEC_CR_MOD); + exec_cr_mod_instr_word <= pipeline_regs(ST_EXEC-1).instr_word; + exec_cr_mod_instr_array <= pipeline_regs(ST_EXEC-1).instr_array; + + inst_exec_stage_loop: exec_stage_loop port map( + clk => clk, + rst => rst, + activate_exec_loop => exec_loop_activate, + instr_word => exec_loop_instr_word, + instr_array => exec_loop_instr_array, + loop_iterations => exec_loop_iterations, + loop_address => exec_loop_address, + loop_start_address => exec_loop_start_address, + register_file => register_file, + fetch_perform_enddo=> fetch_perform_enddo, + memory_stall => memory_stall, + push_stack => exec_loop_push_stack, + pop_stack => exec_loop_pop_stack, + stall_rep => exec_loop_stall_rep, + stall_do => exec_loop_stall_do, + modify_lc => exec_loop_modify_lc, + decrement_lc => exec_loop_decrement_lc, + modified_lc => exec_loop_modified_lc, + modify_la => exec_loop_modify_la, + modified_la => exec_loop_modified_la, + modify_pc => exec_loop_modify_pc, + modified_pc => exec_loop_modified_pc, + modify_sr => exec_loop_modify_sr, + modified_sr => exec_loop_modified_sr + ); + + exec_loop_activate <= pipeline_regs(ST_EXEC-1).act_array(ACT_EXEC_LOOP); + exec_loop_instr_word <= pipeline_regs(ST_EXEC-1).instr_word; + exec_loop_instr_array <= pipeline_regs(ST_EXEC-1).instr_array; + exec_loop_iterations <= unsigned(exec_src_operand(15 downto 0)); + -- from which source is our operand? + -- - XMEM + -- - YMEM + -- - Any register + -- - Immediate (from instruction word) +-- exec_src_operand <= unsigned(pipeline_regs(ST_EXEC-1).RAM_out_x(BW_ADDRESS-1 downto 0)) when +-- pipeline_regs(ST_EXEC-1).act_array(ACT_X_MEM_RD) = '1' else +-- unsigned(pipeline_regs(ST_EXEC-1).RAM_out_y(BW_ADDRESS-1 downto 0)) when +-- pipeline_regs(ST_EXEC-1).act_array(ACT_Y_MEM_RD) = '1' else +-- unsigned(rf_reg_rd_data(15 downto 0)) when +-- pipeline_regs(ST_EXEC-1).act_array(ACT_REG_RD) = '1' else +-- "00000000" & unsigned(pipeline_regs(ST_EXEC-1).instr_word(15 downto 8)); + + -- Loop address is given by the second instruction word of the DO instruction. + -- This address is available one previous stage within the pipeline + exec_loop_address <= unsigned(pipeline_regs(ST_EXEC-2).instr_word(BW_ADDRESS-1 downto 0)) - 1; + -- one more stage before we find the programm counter of the first instruction to be executed in a DO loop + exec_loop_start_address <= unsigned(pipeline_regs(ST_EXEC-3).pc); + + -- For the 8 bit immediate is can be either a fractional (registers x0,x1,y0,y1,a,b) or an unsigned (the rest) + exec_imm_8bit(23 downto 16) <= (others => '0') when rf_reg_wr_addr(5 downto 2) /= "0001" and rf_reg_wr_addr(5 downto 1) /= "00111" else + pipeline_regs(ST_EXEC-1).instr_word(15 downto 8); + exec_imm_8bit(15 downto 8) <= (others => '0'); + exec_imm_8bit( 7 downto 0) <= (others => '0') when rf_reg_wr_addr(5 downto 2) = "0001" or rf_reg_wr_addr(5 downto 1) = "00111" else + pipeline_regs(ST_EXEC-1).instr_word(15 downto 8); + -- The 12 bit immediate stems from the instruction word + exec_imm_12bit(23 downto 12) <= (others => '0'); + exec_imm_12bit(11 downto 0) <= pipeline_regs(ST_EXEC-1).instr_word(3 downto 0) & pipeline_regs(ST_EXEC-1).instr_word(15 downto 8); + ----------------- + -- REGISTER FILE + ----------------- + inst_reg_file: reg_file port map( + clk => clk, + rst => rst, + register_file => register_file, + wr_R_port_A_valid => rf_wr_R_port_A_valid, + wr_R_port_A => adgen_wr_R_port_A, + wr_R_port_B_valid => rf_wr_R_port_B_valid, + wr_R_port_B => adgen_wr_R_port_B, + reg_wr_addr => rf_reg_wr_addr, + reg_wr_addr_valid => rf_reg_wr_addr_valid, + reg_wr_data => rf_reg_wr_data, + reg_rd_addr => rf_reg_rd_addr, + reg_rd_data => rf_reg_rd_data, + alu_wr_valid => rf_alu_wr_valid, + alu_wr_addr => exec_alu_dst_accu, + alu_wr_data => exec_alu_modified_accu, + X_bus_rd_addr => rf_X_bus_rd_addr, + X_bus_data_out => rf_X_bus_data_out, + X_bus_wr_addr => rf_X_bus_wr_addr , + X_bus_wr_valid => rf_X_bus_wr_valid, + X_bus_data_in => rf_X_bus_data_in , + Y_bus_rd_addr => rf_Y_bus_rd_addr , + Y_bus_data_out => rf_Y_bus_data_out, + Y_bus_wr_addr => rf_Y_bus_wr_addr , + Y_bus_wr_valid => rf_Y_bus_wr_valid, + Y_bus_data_in => rf_Y_bus_data_in , + L_bus_rd_addr => rf_L_bus_rd_addr , + L_bus_rd_valid => rf_L_bus_rd_valid, + L_bus_wr_addr => rf_L_bus_wr_addr , + L_bus_wr_valid => rf_L_bus_wr_valid, + push_stack => push_stack, + pop_stack => pop_stack, + set_sr => rf_set_sr, + new_sr => rf_new_sr, + set_omr => rf_set_omr, + new_omr => rf_new_omr, + set_la => rf_set_la, + new_la => rf_new_la, + dec_lc => rf_dec_lc, + set_lc => rf_set_lc, + new_lc => rf_new_lc + ); + + ----------------- + -- BUSES (X,Y,L) + ----------------- + rf_X_bus_wr_valid <= pipeline_regs(ST_EXEC-1).act_array(ACT_X_BUS_WR); + rf_X_bus_wr_addr <= pipeline_regs(ST_EXEC-1).x_bus_wr_addr; + rf_X_bus_rd_addr <= pipeline_regs(ST_EXEC-1).x_bus_rd_addr; + rf_X_bus_data_in <= rf_X_bus_data_out when pipeline_regs(ST_EXEC-1).act_array(ACT_X_BUS_RD) = '1' else + pipeline_regs(ST_EXEC-1).RAM_out_x; -- when pipeline_regs(ST_EXEC-1).act_array(ACT_X_MEM_RD) = '1' else + + rf_Y_bus_wr_valid <= pipeline_regs(ST_EXEC-1).act_array(ACT_Y_BUS_WR); + rf_Y_bus_wr_addr <= pipeline_regs(ST_EXEC-1).y_bus_wr_addr; + rf_Y_bus_rd_addr <= pipeline_regs(ST_EXEC-1).y_bus_rd_addr; + rf_Y_bus_data_in <= rf_Y_bus_data_out when pipeline_regs(ST_EXEC-1).act_array(ACT_Y_BUS_RD) = '1' else + pipeline_regs(ST_EXEC-1).RAM_out_y; -- when pipeline_regs(ST_EXEC-1).act_array(ACT_Y_MEM_RD) = '1' else + + rf_L_bus_wr_valid <= pipeline_regs(ST_EXEC-1).act_array(ACT_L_BUS_WR); + rf_L_bus_rd_valid <= pipeline_regs(ST_EXEC-1).act_array(ACT_L_BUS_RD); + rf_L_bus_wr_addr <= pipeline_regs(ST_EXEC-1).l_bus_addr; -- equal to bits in instruction word + rf_L_bus_rd_addr <= pipeline_regs(ST_EXEC-1).l_bus_addr; -- could be simplified by taking these bits.. + + -- writing to the R registers within the ADGEN stage has to be prevented when + -- 1) a jump is currently being executed (which is detected in the exec stage) + -- 2) stall cycles occur. In this case the write will happen in the last cycle, when we stop stalling. + -- 3) a memory access results in a stall (e.g. caused by the instruction to REP) + rf_wr_R_port_A_valid <= '0' when stall_flags(ST_ADGEN) = '1' or + exec_bra_modify_pc = '1' or + memory_stall = '1' else + adgen_wr_R_port_A_valid; + rf_wr_R_port_B_valid <= '0' when stall_flags(ST_ADGEN) = '1' or + exec_bra_modify_pc = '1' or + memory_stall = '1' else + adgen_wr_R_port_B_valid; + + + rf_reg_wr_addr <= pipeline_regs(ST_EXEC-1).reg_wr_addr; + -- can be set due to + -- 1) normal write operation (e.g., move) + -- 2) conditional move (Tcc) + rf_reg_wr_addr_valid <= '1' when pipeline_regs(ST_EXEC-1).act_array(ACT_REG_WR) = '1' else + exec_cc_flag_set when pipeline_regs(ST_EXEC-1).act_array(ACT_REG_WR_CC) = '1' else '0'; + rf_reg_wr_data <= exec_dst_operand; + + rf_reg_rd_addr <= pipeline_regs(ST_EXEC-1).reg_rd_addr; + + -- Writing from the ALU can depend on the condition code (Tcc) instruction + rf_alu_wr_valid <= exec_cc_flag_set when pipeline_regs(ST_EXEC-1).act_array(ACT_ALU_WR_CC) = '1' else + exec_alu_modify_accu; + + push_stack.valid <= '1' when exec_bra_push_stack.valid = '1' or exec_loop_push_stack.valid = '1' else '0'; + push_stack.content <= exec_bra_push_stack.content when exec_bra_push_stack.valid = '1' else + exec_loop_push_stack.content; + -- for jump to subroutine store the pc of the subsequent instruction + push_stack.pc <= pipeline_regs(ST_EXEC-2).pc when exec_bra_push_stack.valid = '1' and pipeline_regs(ST_EXEC-1).dble_word_instr = '0' else + pipeline_regs(ST_EXEC-3).pc when exec_bra_push_stack.valid = '1' and pipeline_regs(ST_EXEC-1).dble_word_instr = '1' else + exec_loop_push_stack.pc when exec_loop_push_stack.valid = '1' else + (others => '0'); + + pop_stack.valid <= '1' when exec_bra_pop_stack.valid = '1' or exec_loop_pop_stack.valid = '1' else '0'; + + rf_set_sr <= '1' when exec_bra_modify_sr = '1' or + exec_cr_mod_modify_sr = '1' or + exec_loop_modify_sr = '1' or + exec_alu_modify_sr = '1' or + exec_bit_modify_modify_sr = '1' else '0'; + rf_new_sr <= exec_bra_modified_sr when exec_bra_modify_sr = '1' else + exec_cr_mod_modified_sr when exec_cr_mod_modify_sr = '1' else + exec_loop_modified_sr when exec_loop_modify_sr = '1' else + exec_alu_modified_sr when exec_alu_modify_sr = '1' else + exec_bit_modify_modified_sr; -- when exec_bit_modify_modify_sr = '1' else + + rf_set_omr <= exec_cr_mod_modify_omr; + rf_new_omr <= exec_cr_mod_modified_omr; + rf_set_lc <= exec_loop_modify_lc; + rf_new_lc <= exec_loop_modified_lc; + rf_set_la <= exec_loop_modify_la; + rf_new_la <= exec_loop_modified_la; + + rf_dec_lc <= '1' when exec_loop_decrement_lc = '1' or fetch_decrement_lc = '1' else '0'; + + --------------------- + -- MEMORY MANAGEMENT + --------------------- + MMU_inst: memory_management port map ( + clk => clk, + rst => rst, + stall_flags => stall_flags, + memory_stall => memory_stall, + data_rom_enable => register_file.omr(2), + pmem_ctrl_in => pmem_ctrl_in, + pmem_ctrl_out => pmem_ctrl_out, + xmem_ctrl_in => xmem_ctrl_in, + xmem_ctrl_out => xmem_ctrl_out, + ymem_ctrl_in => ymem_ctrl_in, + ymem_ctrl_out => ymem_ctrl_out + ); + + ------------------ + -- Program Memory + ------------------ + pmem_ctrl_in.rd_addr <= pc_new; + pmem_ctrl_in.rd_en <= '1' when stall_flags(ST_FETCH) = '0' else '0'; + -- TODO: Writing to PMEM! + pmem_ctrl_in.wr_addr <= (others => '0'); + pmem_ctrl_in.wr_en <= '0'; + pmem_ctrl_in.data_in <= (others => '0'); + + pmem_data_out <= pmem_ctrl_out.data_out; + pmem_data_out_valid <= pmem_ctrl_out.data_out_valid; + + + ------------------ + -- X Memory + ------------------ + -- Either take the result of the AGU or use the short absolute value stored in the instruction word + xmem_ctrl_in.rd_addr <= adgen_address_out_x when pipeline_regs(ST_ADGEN-1).act_array(ACT_ADGEN) = '1' else + "0000000000" & unsigned(pipeline_regs(ST_ADGEN-1).instr_word(13 downto 8)); + xmem_ctrl_in.rd_en <= '1' when pipeline_regs(ST_ADGEN-1).act_array(ACT_X_MEM_RD) = '1' else '0'; + -- Either take the result of the AGU or use the absolute value stored in the instruction word + xmem_ctrl_in.wr_addr <= pipeline_regs(ST_EXEC-1).adgen_address_x when pipeline_regs(ST_EXEC-1).act_array(ACT_ADGEN) = '1' else + "0000000000" & unsigned(pipeline_regs(ST_EXEC-1).instr_word(13 downto 8)); + xmem_ctrl_in.wr_en <= '1' when pipeline_regs(ST_EXEC-1).act_array(ACT_X_MEM_WR) = '1' else '0'; + xmem_ctrl_in.data_in <= rf_X_bus_data_out when pipeline_regs(ST_EXEC-1).act_array(ACT_X_BUS_RD) = '1' or + pipeline_regs(ST_EXEC-1).act_array(ACT_L_BUS_RD) = '1' else + exec_dst_operand; + + xmem_data_out <= xmem_ctrl_out.data_out; + xmem_data_out_valid <= xmem_ctrl_out.data_out_valid; + + ------------------ + -- Y Memory + ------------------ + -- Either take the result of the AGU or use the absolute value stored in the instruction word + ymem_ctrl_in.rd_addr <= adgen_address_out_y when pipeline_regs(ST_ADGEN-1).act_array(ACT_ADGEN) = '1' else + "0000000000" & unsigned(pipeline_regs(ST_ADGEN-1).instr_word(13 downto 8)); + ymem_ctrl_in.rd_en <= '1' when pipeline_regs(ST_ADGEN-1).act_array(ACT_Y_MEM_RD) = '1' else '0'; + -- Either take the result of the AGU or use the absolute value stored in the instruction word + ymem_ctrl_in.wr_addr <= pipeline_regs(ST_EXEC-1).adgen_address_y when pipeline_regs(ST_EXEC-1).act_array(ACT_ADGEN) = '1' else + "0000000000" & unsigned(pipeline_regs(ST_EXEC-1).instr_word(13 downto 8)); + ymem_ctrl_in.wr_en <= '1' when pipeline_regs(ST_EXEC-1).act_array(ACT_Y_MEM_WR) = '1' else '0'; + ymem_ctrl_in.data_in <= rf_Y_bus_data_out when pipeline_regs(ST_EXEC-1).act_array(ACT_Y_BUS_RD) = '1' or + pipeline_regs(ST_EXEC-1).act_array(ACT_L_BUS_RD) = '1' else + exec_dst_operand; + + ymem_data_out <= ymem_ctrl_out.data_out; + ymem_data_out_valid <= ymem_ctrl_out.data_out_valid; + + +end architecture rtl; diff --git a/FPGA_quartus/DSP/src/reg_file.vhd b/FPGA_quartus/DSP/src/reg_file.vhd new file mode 100644 index 0000000..7f3244c --- /dev/null +++ b/FPGA_quartus/DSP/src/reg_file.vhd @@ -0,0 +1,679 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity reg_file is port( + clk, rst : in std_logic; + register_file : out register_file_type; + wr_R_port_A_valid : in std_logic; + wr_R_port_A : in addr_wr_port_type; + wr_R_port_B_valid : in std_logic; + wr_R_port_B : in addr_wr_port_type; + alu_wr_valid : in std_logic; + alu_wr_addr : in std_logic; + alu_wr_data : in signed(55 downto 0); + reg_wr_addr : in std_logic_vector(5 downto 0); + reg_wr_addr_valid : in std_logic; + reg_wr_data : in std_Logic_vector(23 downto 0); + reg_rd_addr : in std_logic_vector(5 downto 0); + reg_rd_data : out std_Logic_vector(23 downto 0); + X_bus_rd_addr : in std_logic_vector(1 downto 0); + X_bus_data_out : out std_logic_vector(23 downto 0); + X_bus_wr_addr : in std_logic_vector(1 downto 0); + X_bus_wr_valid : in std_logic; + X_bus_data_in : in std_logic_vector(23 downto 0); + Y_bus_rd_addr : in std_logic_vector(1 downto 0); + Y_bus_data_out : out std_logic_vector(23 downto 0); + Y_bus_wr_addr : in std_logic_vector(1 downto 0); + Y_bus_wr_valid : in std_logic; + Y_bus_data_in : in std_logic_vector(23 downto 0); + L_bus_rd_addr : in std_logic_vector(2 downto 0); + L_bus_rd_valid : in std_logic; + L_bus_wr_addr : in std_logic_vector(2 downto 0); + L_bus_wr_valid : in std_logic; + push_stack : in push_stack_type; + pop_stack : in pop_stack_type; + set_sr : in std_logic; + new_sr : in std_logic_vector(15 downto 0); + set_omr : in std_logic; + new_omr : in std_logic_vector(7 downto 0); + dec_lc : in std_logic; + set_lc : in std_logic; + new_lc : in unsigned(15 downto 0); + set_la : in std_logic; + new_la : in unsigned(BW_ADDRESS-1 downto 0) +); +end entity; + + +architecture rtl of reg_file is + + signal addr_r : addr_array; + signal addr_m : addr_array; + signal addr_n : addr_array; + + signal loop_address : unsigned(BW_ADDRESS-1 downto 0); + signal loop_counter : unsigned(15 downto 0); + + -- condition code register + signal ccr : std_logic_vector(7 downto 0); + -- mode register + signal mr : std_logic_vector(7 downto 0); + -- status register = mode register + condition code register + signal sr : std_logic_vector(15 downto 0); + -- operation mode register + signal omr : std_logic_vector(7 downto 0); + + signal stack_pointer : unsigned(5 downto 0); + signal system_stack_ssh : stack_array_type; + signal system_stack_ssl : stack_array_type; + + signal x0 : signed(23 downto 0); + signal x1 : signed(23 downto 0); + signal y0 : signed(23 downto 0); + signal y1 : signed(23 downto 0); + + signal a0 : signed(23 downto 0); + signal a1 : signed(23 downto 0); + signal a2 : signed(7 downto 0); + + signal b0 : signed(23 downto 0); + signal b1 : signed(23 downto 0); + signal b2 : signed(7 downto 0); + + signal limited_a1 : signed(23 downto 0); + signal limited_b1 : signed(23 downto 0); + signal limited_a0 : signed(23 downto 0); + signal limited_b0 : signed(23 downto 0); + signal set_limiting_flag : std_logic; + signal X_bus_rd_limited_a : std_logic; + signal X_bus_rd_limited_b : std_logic; + signal Y_bus_rd_limited_a : std_logic; + signal Y_bus_rd_limited_b : std_logic; + signal reg_rd_limited_a : std_logic; + signal reg_rd_limited_b : std_logic; + signal rd_limited_a : std_logic; + signal rd_limited_b : std_logic; + +begin + + + + sr <= mr & ccr; + + register_file.addr_r <= addr_r; + register_file.addr_n <= addr_n; + register_file.addr_m <= addr_m; + register_file.lc <= loop_counter; + register_file.la <= loop_address; + register_file.ccr <= ccr; + register_file.mr <= mr; + register_file.sr <= sr; + register_file.omr <= omr; + register_file.stack_pointer <= stack_pointer; + register_file.current_ssh <= system_stack_ssh(to_integer(stack_pointer(3 downto 0))); + register_file.current_ssl <= system_stack_ssl(to_integer(stack_pointer(3 downto 0))); + register_file.a <= a2 & a1 & a0; + register_file.b <= b2 & b1 & b0; + register_file.x0 <= x0; + register_file.x1 <= x1; + register_file.y0 <= y0; + register_file.y1 <= y1; + + + global_register_file: process(clk) is + variable stack_pointer_plus_1 : unsigned(3 downto 0); + variable reg_addr : integer range 0 to 7; + begin + if rising_edge(clk) then + if rst = '1' then + addr_r <= (others => (others => '0')); + addr_n <= (others => (others => '0')); + addr_m <= (others => (others => '1')); + ccr <= (others => '0'); + mr <= (others => '0'); + omr <= (others => '0'); + system_stack_ssl <= (others => (others => '0')); + system_stack_ssh <= (others => (others => '0')); + stack_pointer <= (others => '0'); + loop_counter <= (others => '0'); + loop_address <= (others => '0'); + x0 <= (others => '0'); + x1 <= (others => '0'); + y0 <= (others => '0'); + y1 <= (others => '0'); + a0 <= (others => '0'); + a1 <= (others => '0'); + a2 <= (others => '0'); + b0 <= (others => '0'); + b1 <= (others => '0'); + b2 <= (others => '0'); + else + reg_addr := to_integer(unsigned(reg_wr_addr(2 downto 0))); + ----------------------------------------------------------------------- + -- General write port to register file using 6 bit addressing scheme + ----------------------------------------------------------------------- + if reg_wr_addr_valid = '1' then + case reg_wr_addr(5 downto 3) is + -- X0, X1, Y0, Y1 + when "000" => + case reg_wr_addr(2 downto 0) is + when "100" => + x0 <= signed(reg_wr_data); + when "101" => + x1 <= signed(reg_wr_data); + when "110" => + y0 <= signed(reg_wr_data); + when "111" => + y1 <= signed(reg_wr_data); + when others => + end case; + + -- A0, B0, A2, B2, A1, B1, A, B + when "001" => + case reg_wr_addr(2 downto 0) is + when "000" => + a0 <= signed(reg_wr_data); + when "001" => + b0 <= signed(reg_wr_data); + when "010" => + a2 <= signed(reg_wr_data(7 downto 0)); + when "011" => + b2 <= signed(reg_wr_data(7 downto 0)); + when "100" => + a1 <= signed(reg_wr_data); + when "101" => + b1 <= signed(reg_wr_data); + when "110" => + a2 <= (others => reg_wr_data(23)); + a1 <= signed(reg_wr_data); + a0 <= (others => '0'); + when "111" => + b2 <= (others => reg_wr_data(23)); + b1 <= signed(reg_wr_data); + b0 <= (others => '0'); + when others => + end case; + + -- R0-R7 + when "010" => + addr_r(reg_addr) <= unsigned(reg_wr_data(BW_ADDRESS-1 downto 0)); + + -- N0-N7 + when "011" => + addr_n(reg_addr) <= unsigned(reg_wr_data(BW_ADDRESS-1 downto 0)); + + -- M0-M7 + when "100" => + addr_m(reg_addr) <= unsigned(reg_wr_data(BW_ADDRESS-1 downto 0)); + + -- SR, OMR, SP, SSH, SSL, LA, LC + when "111" => + case reg_wr_addr(2 downto 0) is + -- SR + when "001" => + mr <= reg_wr_data(15 downto 8); + ccr <= reg_wr_data( 7 downto 0); + + -- OMR + when "010" => + omr <= reg_wr_data(7 downto 0); + + -- SP + when "011" => + stack_pointer <= unsigned(reg_wr_data(5 downto 0)); + + -- SSH + when "100" => + system_stack_ssh(to_integer(stack_pointer_plus_1)) <= reg_wr_data(BW_ADDRESS-1 downto 0); + -- increase stack after writing + stack_pointer(3 downto 0) <= stack_pointer_plus_1; + -- test whether stack is full, if so set the stack error flag (SE) + if stack_pointer(3 downto 0) = "1111" then + stack_pointer(4) <= '1'; + end if; + + -- SSL + when "101" => + system_stack_ssl(to_integer(stack_pointer)) <= reg_wr_data(BW_ADDRESS-1 downto 0); + + -- LA + when "110" => + loop_address <= unsigned(reg_wr_data(BW_ADDRESS-1 downto 0)); + + -- LC + when "111" => + loop_counter <= unsigned(reg_wr_data(15 downto 0)); + + when others => + end case; + when others => + end case; + end if; + + ---------------- + -- X BUS Write + ---------------- + if X_bus_wr_valid = '1' then + case X_bus_wr_addr is + when "00" => + x0 <= signed(X_bus_data_in); + when "01" => + x1 <= signed(X_bus_data_in); + when "10" => + a2 <= (others => X_bus_data_in(23)); + a1 <= signed(X_bus_data_in); + a0 <= (others => '0'); + when others => + b2 <= (others => X_bus_data_in(23)); + b1 <= signed(X_bus_data_in); + b0 <= (others => '0'); + end case; + end if; + ---------------- + -- Y BUS Write + ---------------- + if Y_bus_wr_valid = '1' then + case Y_bus_wr_addr is + when "00" => + y0 <= signed(Y_bus_data_in); + when "01" => + y1 <= signed(Y_bus_data_in); + when "10" => + a2 <= (others => Y_bus_data_in(23)); + a1 <= signed(Y_bus_data_in); + a0 <= (others => '0'); + when others => + b2 <= (others => Y_bus_data_in(23)); + b1 <= signed(Y_bus_data_in); + b0 <= (others => '0'); + end case; + end if; + ------------------ + -- L BUS Write + ------------------ + if L_bus_wr_valid = '1' then + case L_bus_wr_addr is + -- A10 + when "000" => + a1 <= signed(X_bus_data_in); + a0 <= signed(Y_bus_data_in); + -- B10 + when "001" => + b1 <= signed(X_bus_data_in); + b0 <= signed(Y_bus_data_in); + -- X + when "010" => + x1 <= signed(X_bus_data_in); + x0 <= signed(Y_bus_data_in); + -- Y + when "011" => + y1 <= signed(X_bus_data_in); + y0 <= signed(Y_bus_data_in); + -- A + when "100" => + a2 <= (others => X_bus_data_in(23)); + a1 <= signed(X_bus_data_in); + a0 <= signed(Y_bus_data_in); + -- B + when "101" => + b2 <= (others => X_bus_data_in(23)); + b1 <= signed(X_bus_data_in); + b0 <= signed(Y_bus_data_in); + -- AB + when "110" => + a2 <= (others => X_bus_data_in(23)); + a1 <= signed(X_bus_data_in); + a0 <= (others => '0'); + b2 <= (others => Y_bus_data_in(23)); + b1 <= signed(Y_bus_data_in); + b0 <= (others => '0'); + -- BA + when others => + a2 <= (others => Y_bus_data_in(23)); + a1 <= signed(Y_bus_data_in); + a0 <= (others => '0'); + b2 <= (others => X_bus_data_in(23)); + b1 <= signed(X_bus_data_in); + b0 <= (others => '0'); + end case; + end if; + + --------------------- + -- STATUS REGISTERS + --------------------- + if set_sr = '1' then + ccr <= new_sr( 7 downto 0); + mr <= new_sr(15 downto 8); + end if; + if set_omr = '1' then + omr <= new_omr; + end if; + -- data limiter active? + -- listing this statement after the set_sr test results + -- in the correct behaviour for ALU operations with parallel move + if set_limiting_flag = '1' then + ccr(6) <= '1'; + end if; + + -------------------- + -- LOOP REGISTERS + -------------------- + if set_la = '1' then + loop_address <= new_la; + end if; + if set_lc = '1' then + loop_counter <= new_lc; + end if; + if dec_lc = '1' then + loop_counter <= loop_counter - 1; + end if; + + --------------------- + -- ADDRESS REGISTER + --------------------- + if wr_R_port_A_valid = '1' then + addr_r(to_integer(wr_R_port_A.reg_number)) <= wr_R_port_A.reg_value; + end if; + if wr_R_port_B_valid = '1' then + addr_r(to_integer(wr_R_port_B.reg_number)) <= wr_R_port_B.reg_value; + end if; + + ------------------------- + -- ALU ACCUMULATOR WRITE + ------------------------- + if alu_wr_valid = '1' then + if alu_wr_addr = '0' then + a2 <= alu_wr_data(55 downto 48); + a1 <= alu_wr_data(47 downto 24); + a0 <= alu_wr_data(23 downto 0); + else + b2 <= alu_wr_data(55 downto 48); + b1 <= alu_wr_data(47 downto 24); + b0 <= alu_wr_data(23 downto 0); + end if; + end if; + + --------------------- + -- STACK CONTROLLER + --------------------- + stack_pointer_plus_1 := stack_pointer(3 downto 0) + 1; + if push_stack.valid = '1' then + -- increase stack after writing + stack_pointer(3 downto 0) <= stack_pointer_plus_1; + -- test whether stack is full, if so set the stack error flag (SE) + if stack_pointer(3 downto 0) = "1111" then + stack_pointer(4) <= '1'; + end if; + case push_stack.content is + when PC => + system_stack_ssh(to_integer(stack_pointer_plus_1)) <= std_logic_vector(push_stack.pc); + + when PC_AND_SR => + system_stack_ssh(to_integer(stack_pointer_plus_1)) <= std_logic_vector(push_stack.pc); + system_stack_ssl(to_integer(stack_pointer_plus_1)) <= SR; + + when LA_AND_LC => + system_stack_ssh(to_integer(stack_pointer_plus_1)) <= std_logic_vector(loop_address); + system_stack_ssl(to_integer(stack_pointer_plus_1)) <= std_logic_vector(loop_counter); + + end case; + end if; + + -- decrease stack pointer + if pop_stack.valid = '1' then + stack_pointer(3 downto 0) <= stack_pointer(3 downto 0) - 1; + -- if stack is empty set the underflow flag (bit 5, UF) and the stack error flag (bit 4, SE) + if stack_pointer(3 downto 0) = "0000" then + stack_pointer(5) <= '1'; + stack_pointer(4) <= '1'; + end if; + end if; + end if; + end if; + end process; + + + x_bus_rd_port: process(X_bus_rd_addr,x0,x1,a1,b1,limited_a1,limited_b1, + L_bus_rd_addr,L_bus_rd_valid,y1) is + begin + X_bus_rd_limited_a <= '0'; + X_bus_rd_limited_b <= '0'; + case X_bus_rd_addr is + when "00" => X_bus_data_out <= std_logic_vector(x0); + when "01" => X_bus_data_out <= std_logic_vector(x1); + when "10" => X_bus_data_out <= std_logic_vector(limited_a1); X_bus_rd_limited_a <= '1'; + when others => X_bus_data_out <= std_logic_vector(limited_b1); X_bus_rd_limited_b <= '1'; + end case; + if L_bus_rd_valid = '1' then + case L_bus_rd_addr is + when "000" => X_bus_data_out <= std_logic_vector(a1); + when "001" => X_bus_data_out <= std_logic_vector(b1); + when "010" => X_bus_data_out <= std_logic_vector(x1); + when "011" => X_bus_data_out <= std_logic_vector(y1); + when "100" => X_bus_data_out <= std_logic_vector(limited_a1); X_bus_rd_limited_a <= '1'; + when "101" => X_bus_data_out <= std_logic_vector(limited_b1); X_bus_rd_limited_b <= '1'; + when "110" => X_bus_data_out <= std_logic_vector(limited_a1); X_bus_rd_limited_a <= '1'; + when others => X_bus_data_out <= std_logic_vector(limited_b1); X_bus_rd_limited_b <= '1'; + end case; + end if; + end process x_bus_rd_port; + + y_bus_rd_port: process(Y_bus_rd_addr,y0,y1,a1,b1,limited_a1,limited_b1, + L_bus_rd_addr,L_bus_rd_valid,a0,b0,x0,limited_a0,limited_b0) is + begin + Y_bus_rd_limited_a <= '0'; + Y_bus_rd_limited_b <= '0'; + case Y_bus_rd_addr is + when "00" => Y_bus_data_out <= std_logic_vector(y0); + when "01" => Y_bus_data_out <= std_logic_vector(y1); + when "10" => Y_bus_data_out <= std_logic_vector(limited_a1); Y_bus_rd_limited_a <= '1'; + when others => Y_bus_data_out <= std_logic_vector(limited_b1); Y_bus_rd_limited_b <= '1'; + end case; + if L_bus_rd_valid = '1' then + case L_bus_rd_addr is + when "000" => Y_bus_data_out <= std_logic_vector(a0); + when "001" => Y_bus_data_out <= std_logic_vector(b0); + when "010" => Y_bus_data_out <= std_logic_vector(x0); + when "011" => Y_bus_data_out <= std_logic_vector(y0); + when "100" => Y_bus_data_out <= std_logic_vector(limited_a0); Y_bus_rd_limited_a <= '1'; + when "101" => Y_bus_data_out <= std_logic_vector(limited_b0); Y_bus_rd_limited_b <= '1'; + when "110" => Y_bus_data_out <= std_logic_vector(limited_b1); Y_bus_rd_limited_b <= '1'; + when others => Y_bus_data_out <= std_logic_vector(limited_a1); Y_bus_rd_limited_a <= '1'; + end case; + end if; + end process y_bus_rd_port; + + + reg_rd_port: process(reg_rd_addr, x0,x1,y0,y1,a0,a1,a2,b0,b1,b2, + omr,ccr,mr,addr_r,addr_n,addr_m,stack_pointer, + loop_address,loop_counter,system_stack_ssl,system_stack_ssh) is + variable reg_addr : integer range 0 to 7; + begin + reg_addr := to_integer(unsigned(reg_rd_addr(2 downto 0))); + reg_rd_data <= (others => '0'); + reg_rd_limited_a <= '0'; + reg_rd_limited_b <= '0'; + + case reg_rd_addr(5 downto 3) is + -- X0, X1, Y0, Y1 + when "000" => + case reg_rd_addr(2 downto 0) is + when "100" => + reg_rd_data <= std_logic_vector(x0); + when "101" => + reg_rd_data <= std_logic_vector(x1); + when "110" => + reg_rd_data <= std_logic_vector(y0); + when "111" => + reg_rd_data <= std_logic_vector(y1); + when others => + end case; + + -- A0, B0, A2, B2, A1, B1, A, B + when "001" => + case reg_rd_addr(2 downto 0) is + when "000" => + reg_rd_data <= std_logic_vector(a0); + when "001" => + reg_rd_data <= std_logic_vector(b0); + when "010" => + -- MSBs are read as zero! + reg_rd_data(23 downto 8) <= (others => '0'); + reg_rd_data(7 downto 0) <= std_logic_vector(a2); + when "011" => + -- MSBs are read as zero! + reg_rd_data(23 downto 8) <= (others => '0'); + reg_rd_data(7 downto 0) <= std_logic_vector(b2); + when "100" => + reg_rd_data <= std_logic_vector(a1); + when "101" => + reg_rd_data <= std_logic_vector(b1); + when "110" => + reg_rd_data <= std_logic_vector(limited_a1); + reg_rd_limited_a <= '1'; + when "111" => + reg_rd_data <= std_logic_vector(limited_b1); + reg_rd_limited_b <= '1'; + when others => + end case; + + -- R0-R7 + when "010" => + reg_rd_data <= std_logic_vector(resize(addr_r(reg_addr), 24)); + + -- N0-N7 + when "011" => + reg_rd_data <= std_logic_vector(resize(addr_n(reg_addr), 24)); + + -- M0-M7 + when "100" => + reg_rd_data <= std_logic_vector(resize(addr_m(reg_addr), 24)); + + -- SR, OMR, SP, SSH, SSL, LA, LC + when "111" => + case reg_wr_addr(2 downto 0) is + -- SR + when "001" => + reg_rd_data(23 downto 16) <= (others => '0'); + reg_rd_data(15 downto 0) <= mr & ccr; + + -- OMR + when "010" => + reg_rd_data(23 downto 8) <= (others => '0'); + reg_rd_data( 7 downto 0) <= omr; + + -- SP + when "011" => + reg_rd_data(23 downto 6) <= (others => '0'); + reg_rd_data(5 downto 0) <= std_logic_vector(stack_pointer); + + -- SSH + when "100" => +-- TODO! +-- system_stack_ssh(to_integer(stack_pointer_plus_1)) <= reg_wr_data(BW_ADDRESS-1 downto 0); +-- -- increase stack after writing +-- stack_pointer(3 downto 0) <= stack_pointer_plus_1; +-- -- test whether stack is full, if so set the stack error flag (SE) +-- if stack_pointer(3 downto 0) = "1111" then +-- stack_pointer(4) <= '1'; +-- end if; + + -- SSL + when "101" => + reg_rd_data <= (others => '0'); + reg_rd_data(BW_ADDRESS-1 downto 0) <= std_logic_vector(system_stack_ssl(to_integer(stack_pointer))); + + -- LA + when "110" => + reg_rd_data <= (others => '0'); + reg_rd_data(BW_ADDRESS-1 downto 0) <= std_logic_vector(loop_address); + + -- LC + when "111" => + reg_rd_data <= (others => '0'); + reg_rd_data(15 downto 0) <= std_logic_vector(loop_counter); + + when others => + end case; + when others => + end case; + end process; + + rd_limited_a <= '1' when reg_rd_limited_a = '1' or X_bus_rd_limited_a = '1' or Y_bus_rd_limited_a = '1' else '0'; + rd_limited_b <= '1' when reg_rd_limited_b = '1' or X_bus_rd_limited_b = '1' or Y_bus_rd_limited_b = '1' else '0'; + + data_shifter_limiter: process(a2,a1,a0,b2,b1,b0,sr,rd_limited_a,rd_limited_b) is + variable scaled_a : signed(55 downto 0); + variable scaled_b : signed(55 downto 0); + begin + + set_limiting_flag <= '0'; + ----------------- + -- DATA SCALING + ----------------- + -- test against scaling bits S1, S0 + case sr(11 downto 10) is + -- scale down (right shift) + when "01" => + scaled_a := a2(7) & a2 & a1 & a0(23 downto 1); + scaled_b := b2(7) & b2 & b1 & b0(23 downto 1); + -- scale up (arithmetic left shift) + when "10" => + scaled_a := a2(6 downto 0) & a1 & a0 & '0'; + scaled_b := b2(6 downto 0) & b1 & b0 & '0'; + -- "00" do not scale! + when others => + scaled_a := a2 & a1 & a0; + scaled_b := b2 & b1 & b0; + end case; + + -- only sign extension stored in a2? + -- Yes: No limiting needed! + if scaled_a(55 downto 47) = "111111111" or scaled_a(55 downto 47) = "000000000" then + limited_a1 <= scaled_a(47 downto 24); + limited_a0 <= scaled_a(23 downto 0); + else + -- positive value in a? + if scaled_a(55) = '0' then + limited_a1 <= X"7FFFFF"; + limited_a0 <= X"FFFFFF"; + -- negative value in a? + else + limited_a1 <= X"800000"; + limited_a0 <= X"000000"; + end if; + -- set the limit flag in the status register + if rd_limited_a = '1' then + set_limiting_flag <= '1'; + end if; + end if; + -- only sign extension stored in b2? + -- Yes: No limiting needed! + if scaled_b(55 downto 47) = "111111111" or scaled_b(55 downto 47) = "000000000" then + limited_b1 <= scaled_b(47 downto 24); + limited_b0 <= scaled_b(23 downto 0); + else + -- positive value in b? + if scaled_b(55) = '0' then + limited_b1 <= X"7FFFFF"; + limited_b0 <= X"FFFFFF"; + -- negative value in b? + else + limited_b1 <= X"800000"; + limited_b0 <= X"000000"; + end if; + -- set the limit flag in the status register + if rd_limited_b = '1' then + set_limiting_flag <= '1'; + end if; + end if; + + end process; + + +end architecture rtl; diff --git a/FPGA_quartus/DSP/src/types_pkg.vhd b/FPGA_quartus/DSP/src/types_pkg.vhd new file mode 100644 index 0000000..131f7fa --- /dev/null +++ b/FPGA_quartus/DSP/src/types_pkg.vhd @@ -0,0 +1,167 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; + + + +package types_pkg is + + -- the different addressing modes + type adgen_mode_type is (NOP, POST_MIN_N, POST_PLUS_N, POST_MIN_1, POST_PLUS_1, INDEXED_N, PRE_MIN_1, ABSOLUTE, IMMEDIATE); + ------------------------ + -- Decoded instructions + ------------------------ + type instructions_type is ( + INSTR_NOP , + INSTR_RTI , + INSTR_ILLEGAL , + INSTR_SWI , + INSTR_RTS , + INSTR_RESET , + INSTR_WAIT , + INSTR_STOP , + INSTR_ENDDO , + INSTR_ANDI , + INSTR_ORI , + INSTR_DIV , + INSTR_NORM , + INSTR_LUA , + INSTR_MOVEC , + INSTR_REP , + INSTR_DO , + INSTR_MOVEM , + INSTR_MOVEP , + INSTR_PM_MOVEM, + INSTR_BCLR , + INSTR_BSET , + INSTR_JCLR , + INSTR_JSET , + INSTR_JMP , + INSTR_JCC , + INSTR_BCHG , + INSTR_BTST , + INSTR_JSCLR , + INSTR_JSSET , + INSTR_JSR , + INSTR_JSCC ); + + type addr_array is array(0 to 7) of unsigned(BW_ADDRESS-1 downto 0); + + type alu_shift_mode is (NO_SHIFT, SHIFT_LEFT, SHIFT_RIGHT, ZEROS); + type alu_ccr_flag is (DONT_TOUCH, CLEAR, MODIFY, SET); + type alu_ccr_flag_array is array(7 downto 0) of alu_ccr_flag; + + type alu_ctrl_type is record + mul_op1 : std_logic_vector(1 downto 0); -- x0,x1,y0,y1 + mul_op2 : std_logic_vector(1 downto 0); -- x0,x1,y0,y1 + shift_src : std_logic; -- a,b + shift_src_sign : std_logic_vector(1 downto 0); -- 00: pos, 01: neg, 10: sign dependant, 11: reserved + shift_mode : alu_shift_mode; + rotate : std_logic; -- 0: logical shift, 1: rotate shift + add_src_stage_1 : std_logic_vector(2 downto 0); -- x0,x1,y0,y1,x,y,a,b + add_src_stage_2 : std_logic_vector(1 downto 0); -- 00: 0 , 01: add_src_1, 10: mul_result, 11: reserved + add_src_sign : std_logic_vector(1 downto 0); -- 00: pos, 01: neg, 10: sign dependant, 11: reserved + logic_function : std_logic_vector(2 downto 0); -- 000: none, 001: and, 010: or, 011: eor, 100: not + word_24_update : std_logic; -- only accumulator bits 47 downto 24 affected? + rounding_used : std_logic_vector(1 downto 0); -- 00: no rounding, 01: rounding, 10: add carry, 11: subtract carry + store_result : std_logic; -- 0: do not update accumulator, 1: update accumulator + dst_accu : std_logic; -- 0: a, 1: b + div_instr : std_logic; -- DIV instruction? Special ALU operations needed! + norm_instr : std_logic; -- NORM instruction? Special ALU operations needed! + ccr_flags_ctrl : alu_ccr_flag_array; + end record; + + type pipeline_signals is record + instr_word: std_logic_vector(23 downto 0); + pc : unsigned(BW_ADDRESS-1 downto 0); + dble_word_instr : std_logic; + instr_array : instructions_type; + act_array : std_logic_vector(NUM_ACT_SIGNALS-1 downto 0); + dec_activate : std_logic; + adgen_mode_a : adgen_mode_type; + adgen_mode_b : adgen_mode_type; + reg_wr_addr : std_logic_vector(5 downto 0); + reg_rd_addr : std_logic_vector(5 downto 0); + x_bus_rd_addr : std_logic_vector(1 downto 0); + x_bus_wr_addr : std_logic_vector(1 downto 0); + y_bus_rd_addr : std_logic_vector(1 downto 0); + y_bus_wr_addr : std_logic_vector(1 downto 0); + l_bus_addr : std_logic_vector(2 downto 0); + adgen_address_x : unsigned(BW_ADDRESS-1 downto 0); + adgen_address_y : unsigned(BW_ADDRESS-1 downto 0); + RAM_out_x : std_logic_vector(23 downto 0); + RAM_out_y : std_logic_vector(23 downto 0); + alu_ctrl : alu_ctrl_type; + end record; + + type pipeline_type is array(0 to PIPELINE_DEPTH-1) of pipeline_signals; + + + type register_file_type is record + a : signed(55 downto 0); + b : signed(55 downto 0); + x0 : signed(23 downto 0); + x1 : signed(23 downto 0); + y0 : signed(23 downto 0); + y1 : signed(23 downto 0); + la : unsigned(BW_ADDRESS-1 downto 0); + lc : unsigned(15 downto 0); + addr_r : addr_array; + addr_n : addr_array; + addr_m : addr_array; + ccr : std_logic_vector(7 downto 0); + mr : std_logic_vector(7 downto 0); + sr : std_logic_vector(15 downto 0); + omr : std_logic_vector(7 downto 0); + stack_pointer : unsigned(5 downto 0); +-- system_stack_ssh : stack_array_type; +-- system_stack_ssl : stack_array_type; + current_ssh : std_logic_vector(BW_ADDRESS-1 downto 0); + current_ssl : std_logic_vector(BW_ADDRESS-1 downto 0); + + end record; + + type addr_wr_port_type is record +-- write_valid : std_logic; + reg_number : unsigned(2 downto 0); + reg_value : unsigned(15 downto 0); + end record; + + type mem_ctrl_type_in is record + rd_addr : unsigned(BW_ADDRESS-1 downto 0); + rd_en : std_logic; + wr_addr : unsigned(BW_ADDRESS-1 downto 0); + wr_en : std_logic; + data_in : std_logic_vector(23 downto 0); + end record; + + type mem_ctrl_type_out is record + data_out : std_logic_vector(23 downto 0); + data_out_valid : std_logic; + end record; + + type memory_type is (X_MEM, Y_MEM, P_MEM); + --------------- + -- STACK TYPES + --------------- + type stack_array_type is array(0 to 15) of std_logic_vector(BW_ADDRESS-1 downto 0); + + type push_stack_content_type is (PC, PC_AND_SR, LA_AND_LC); + + type push_stack_type is record + valid : std_logic; + pc : unsigned(BW_ADDRESS-1 downto 0); + content : push_stack_content_type; + end record; + +-- type pop_stack_content_type is (PC, PC_AND_SR, SR, LA_AND_LC); + +-- type pop_stack_type is std_logic; + type pop_stack_type is record + valid : std_logic; +-- content : pop_stack_content_type; + end record; + +end package types_pkg; diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF.vhd new file mode 100644 index 0000000..b2b8dbb --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF.vhd @@ -0,0 +1,971 @@ +-- WARNING: Do NOT edit the input and output ports in this file in a text +-- editor if you plan to continue editing the block that represents it in +-- the Block Editor! File corruption is VERY likely to occur. + +-- Copyright (C) 1991-2008 Altera Corporation +-- Your use of Altera Corporation's design tools, logic functions +-- and other software and tools, and its AMPP partner logic +-- functions, and any output files from any of the foregoing +-- (including device programming or simulation files), and any +-- associated documentation or information are expressly subject +-- to the terms and conditions of the Altera Program License +-- Subscription Agreement, Altera MegaCore Function License +-- Agreement, or other applicable license agreement, including, +-- without limitation, that your use is for the sole purpose of +-- programming logic devices manufactured by Altera and sold by +-- Altera or its authorized distributors. Please refer to the +-- applicable agreement for further details. + + +-- Generated by Quartus II Version 8.1 (Build Build 163 10/28/2008) +-- Created on Tue Sep 08 16:24:20 2009 + +library work; +use work.FalconIO_SDCard_IDE_CF_pkg.all; + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + + +-- Entity Declaration + + +-- Entity Declaration + +ENTITY FalconIO_SDCard_IDE_CF IS + -- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! + PORT + ( + CLK33M : IN STD_LOGIC; + MAIN_CLK : IN STD_LOGIC; + CLK2M : IN STD_LOGIC; + CLK500k : IN STD_LOGIC; + nFB_CS1 : IN STD_LOGIC; + FB_SIZE0 : IN STD_LOGIC; + FB_SIZE1 : IN STD_LOGIC; + nFB_BURST : IN STD_LOGIC; + FB_ADR : IN STD_LOGIC_VECTOR(31 downto 0); + LP_BUSY : IN STD_LOGIC; + nACSI_DRQ : IN STD_LOGIC; + nACSI_INT : IN STD_LOGIC; + nSCSI_DRQ : IN STD_LOGIC; + nSCSI_MSG : IN STD_LOGIC; + MIDI_IN : IN STD_LOGIC; + RxD : IN STD_LOGIC; + CTS : IN STD_LOGIC; + RI : IN STD_LOGIC; + DCD : IN STD_LOGIC; + AMKB_RX : IN STD_LOGIC; + PIC_AMKB_RX : IN STD_LOGIC; + IDE_RDY : IN STD_LOGIC; + IDE_INT : IN STD_LOGIC; + WP_CS_CARD : IN STD_LOGIC; + nINDEX : IN STD_LOGIC; + TRACK00 : IN STD_LOGIC; + nRD_DATA : IN STD_LOGIC; + nDCHG : IN STD_LOGIC; + SD_DATA0 : IN STD_LOGIC; + SD_DATA1 : IN STD_LOGIC; + SD_DATA2 : IN STD_LOGIC; + SD_CARD_DEDECT : IN STD_LOGIC; + SD_WP : IN STD_LOGIC; + nDACK0 : IN STD_LOGIC; + nFB_WR : INOUT STD_LOGIC; + WP_CF_CARD : IN STD_LOGIC; + nWP : IN STD_LOGIC; + nFB_CS2 : IN STD_LOGIC; + nRSTO : IN STD_LOGIC; + HD_DD : IN STD_LOGIC; + nSCSI_C_D : IN STD_LOGIC; + nSCSI_I_O : IN STD_LOGIC; + CLK2M4576 : IN STD_LOGIC; + nFB_OE : IN STD_LOGIC; + VSYNC : IN STD_LOGIC; + HSYNC : IN STD_LOGIC; + DSP_INT : IN STD_LOGIC; + nBLANK : IN STD_LOGIC; + FDC_CLK : IN STD_LOGIC; + FB_ALE : IN STD_LOGIC; + ACP_CONF : IN STD_LOGIC_VECTOR(31 downto 24); + nIDE_CS1 : OUT STD_LOGIC; + nIDE_CS0 : OUT STD_LOGIC; + LP_STR : OUT STD_LOGIC; + LP_DIR : OUT STD_LOGIC; + nACSI_ACK : OUT STD_LOGIC; + nACSI_RESET : OUT STD_LOGIC; + nACSI_CS : OUT STD_LOGIC; + ACSI_DIR : OUT STD_LOGIC; + ACSI_A1 : OUT STD_LOGIC; + nSCSI_ACK : OUT STD_LOGIC; + nSCSI_ATN : OUT STD_LOGIC; + SCSI_DIR : OUT STD_LOGIC; + SD_CLK : OUT STD_LOGIC; + YM_QA : OUT STD_LOGIC; + YM_QC : OUT STD_LOGIC; + YM_QB : OUT STD_LOGIC; + nSDSEL : OUT STD_LOGIC; + STEP : OUT STD_LOGIC; + MOT_ON : OUT STD_LOGIC; + nRP_LDS : OUT STD_LOGIC; + nRP_UDS : OUT STD_LOGIC; + nROM4 : OUT STD_LOGIC; + nROM3 : OUT STD_LOGIC; + nCF_CS1 : OUT STD_LOGIC; + nCF_CS0 : OUT STD_LOGIC; + nIDE_RD : INOUT STD_LOGIC; + nIDE_WR : INOUT STD_LOGIC; + AMKB_TX : OUT STD_LOGIC; + IDE_RES : OUT STD_LOGIC; + DTR : OUT STD_LOGIC; + RTS : OUT STD_LOGIC; + TxD : OUT STD_LOGIC; + MIDI_OLR : OUT STD_LOGIC; + MIDI_TLR : OUT STD_LOGIC; + nDREQ0 : OUT STD_LOGIC; + DSA_D : OUT STD_LOGIC; + nMFP_INT : OUT STD_LOGIC; + FALCON_IO_TA : OUT STD_LOGIC; + STEP_DIR : OUT STD_LOGIC; + WR_DATA : OUT STD_LOGIC; + WR_GATE : OUT STD_LOGIC; + DMA_DRQ : OUT STD_LOGIC; + FB_AD : INOUT STD_LOGIC_VECTOR(31 downto 0); + LP_D : INOUT STD_LOGIC_VECTOR(7 downto 0); + ACSI_D : INOUT STD_LOGIC_VECTOR(7 downto 0); + SCSI_D : INOUT STD_LOGIC_VECTOR(7 downto 0); + SCSI_PAR : INOUT STD_LOGIC; + nSCSI_SEL : INOUT STD_LOGIC; + nSCSI_BUSY : INOUT STD_LOGIC; + nSCSI_RST : INOUT STD_LOGIC; + SD_CD_DATA3 : INOUT STD_LOGIC; + SD_CDM_D1 : INOUT STD_LOGIC + ); + -- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! + +END FalconIO_SDCard_IDE_CF; + + +-- Architecture Body + +ARCHITECTURE FalconIO_SDCard_IDE_CF_architecture OF FalconIO_SDCard_IDE_CF IS +-- system +signal SYS_CLK : STD_LOGIC; +signal RESETn : STD_LOGIC; +signal FB_B0 : STD_LOGIC; -- UPPER BYT BEI 16BIT BUS +signal FB_B1 : STD_LOGIC; -- LOWER BYT BEI 16BIT BUS +signal BYT : STD_LOGIC; -- WENN BYT -> 1 +signal LONG : STD_LOGIC; -- WENN -> 1 +-- KEYBOARD MIDI +signal ACIA_CS_I : STD_LOGIC; +signal IRQ_KEYBDn : STD_LOGIC; +signal IRQ_MIDIn : STD_LOGIC; +signal KEYB_RxD : STD_LOGIC; +signal AMKB_REG : STD_LOGIC_VECTOR(4 downto 0); +signal MIDI_OUT : STD_LOGIC; +signal DATA_OUT_ACIA_I : STD_LOGIC_VECTOR(7 downto 0); +signal DATA_OUT_ACIA_II : STD_LOGIC_VECTOR(7 downto 0); +-- MFP +signal MFP_CS : STD_LOGIC; +signal MFP_INTACK : STD_LOGIC; +signal LDS : STD_LOGIC; +signal DTACK_OUT_MFPn : STD_LOGIC; +signal IRQ_ACIAn : STD_LOGIC; +signal DINTn : STD_LOGIC; +signal DATA_OUT_MFP : STD_LOGIC_VECTOR(7 downto 0); +signal TDO : STD_LOGIC; +-- SOUND +signal SNDCS : STD_LOGIC; +signal SNDCS_I : STD_LOGIC; +signal SNDIR_I : STD_LOGIC; +signal LP_DIR_X : STD_LOGIC; +signal DA_OUT_X : STD_LOGIC_VECTOR(7 downto 0); +signal LP_D_X : STD_LOGIC_VECTOR(7 downto 0); +-- DIV +signal SUB_BUS : STD_LOGIC; -- SUB BUS MIT ROM-PORT, CF UND IDE +signal ROM_CS : STD_LOGIC; +-- DMA UND FLOPPY +signal DMA_DATEN_CS : STD_LOGIC; +signal DMA_MODUS_CS : STD_LOGIC; +signal DMA_MODUS : STD_LOGIC_VECTOR(15 downto 0); +signal WDC_BSL_CS : STD_LOGIC; +signal WDC_BSL : STD_LOGIC_VECTOR(1 DOWNTO 0); +signal HD_DD_OUT : STD_LOGIC; +signal FDCS_In : STD_LOGIC; +signal CA0 : STD_LOGIC; +signal CA1 : STD_LOGIC; +signal CA2 : STD_LOGIC; +signal FDINT : STD_LOGIC; +signal FDRQ : STD_LOGIC; +signal CD_OUT_FDC : STD_LOGIC_VECTOR(7 downto 0); +signal CD_IN_FDC : STD_LOGIC_VECTOR(7 downto 0); +signal DMA_TOP_CS : STD_LOGIC; +signal DMA_TOP : STD_LOGIC_VECTOR(7 downto 0); +signal DMA_HIGH_CS : STD_LOGIC; +signal DMA_HIGH : STD_LOGIC_VECTOR(7 downto 0); +signal DMA_MID_CS : STD_LOGIC; +signal DMA_MID : STD_LOGIC_VECTOR(7 downto 0); +signal DMA_LOW_CS : STD_LOGIC; +signal DMA_LOW : STD_LOGIC_VECTOR(7 downto 0); +signal DMA_DIRM_CS : STD_LOGIC; +signal DMA_ADR_CS : STD_LOGIC; +signal DMA_STATUS : STD_LOGIC_VECTOR(2 downto 0); +signal DMA_DIR_OLD : STD_LOGIC; +signal DMA_BYT_CNT_CS : STD_LOGIC; +signal DMA_BYT_CNT : STD_LOGIC_VECTOR(31 downto 0); +signal CLR_FIFO : STD_LOGIC; +signal DMA_DRQ_I : STD_LOGIC; +signal DMA_DRQ_REG : STD_LOGIC_VECTOR(1 downto 0); +signal DMA_DRQQ : STD_LOGIC; +signal DMA_DRQ_Q : STD_LOGIC; +signal RDF_DOUT : STD_LOGIC_VECTOR(31 downto 0); +signal RDF_AZ : STD_LOGIC_VECTOR(9 downto 0); +signal RDF_RDE : STD_LOGIC; +signal RDF_WRE : STD_LOGIC; +signal RDF_DIN : STD_LOGIC_VECTOR(7 downto 0); +signal WRF_DOUT : STD_LOGIC_VECTOR(7 downto 0); +signal WRF_AZ : STD_LOGIC_VECTOR(9 downto 0); +signal WRF_RDE : STD_LOGIC; +signal WRF_WRE : STD_LOGIC; +signal nFDC_WR : STD_LOGIC; +type FCF_STATES is( FCF_IDLE, FCF_T0, FCF_T1, FCF_T2, FCF_T3, FCF_T6, FCF_T7); +signal FCF_STATE : FCF_STATES; +signal NEXT_FCF_STATE : FCF_STATES; +signal DMA_REQ : STD_LOGIC; +signal FDC_CS : STD_LOGIC; +signal FCF_CS : STD_LOGIC; +signal FCF_APH : STD_LOGIC; +signal DMA_AZ_CS : STD_LOGIC; +signal DMA_ACTIV : STD_LOGIC; +signal DMA_ACTIV_NEW : STD_LOGIC; +signal FDC_OUT : STD_LOGIC_VECTOR(7 downto 0); +-- SCSI +signal SCSI_CS : STD_LOGIC; +signal SCSI_CSn : STD_LOGIC; +signal SCSI_DOUT : STD_LOGIC_VECTOR(7 downto 0); +signal nSCSI_DACK : STD_LOGIC; +signal SCSI_DRQ : STD_LOGIC; +signal SCSI_INT : STD_LOGIC; +signal DB_OUTn : STD_LOGIC_VECTOR(7 downto 0); +signal DB_EN : STD_LOGIC; +signal DBP_OUTn : STD_LOGIC; +signal DBP_EN : STD_LOGIC; +signal RST_OUTn : STD_LOGIC; +signal RST_EN : STD_LOGIC; +signal BSY_OUTn : STD_LOGIC; +signal BSY_EN : STD_LOGIC; +signal SEL_OUTn : STD_LOGIC; +signal SEL_EN : STD_LOGIC; +-- IDE +signal nnIDE_RES : STD_LOGIC; +signal IDE_CF_CS : STD_LOGIC; +signal IDE_CF_TA : STD_LOGIC; +signal NEXT_nIDE_RD : STD_LOGIC; +signal NEXT_nIDE_WR : STD_LOGIC; +type CMD_STATES is( IDLE, T1, T6, T7); +signal CMD_STATE : CMD_STATES; +signal NEXT_CMD_STATE : CMD_STATES; + + +BEGIN +LONG <= '1' when FB_SIZE1 = '0' and FB_SIZE0 = '0' else '0'; +BYT <= '1' when FB_SIZE1 = '0' and FB_SIZE0 = '1' else '0'; +FB_B0 <= '1' when FB_ADR(0) = '0' or BYT = '0' else '0'; +FB_B1 <= '1' when FB_ADR(0) = '1' or BYT = '0' else '0'; + +FALCON_IO_TA <= '1' when SNDCS = '1' or DTACK_OUT_MFPn = '0' or ACIA_CS_I = '1' or DMA_MODUS_CS ='1' + or DMA_ADR_CS = '1' or DMA_DIRM_CS = '1' or DMA_BYT_CNT_CS = '1' or FCF_CS = '1' or IDE_CF_TA = '1' else '0'; +SUB_BUS <= '1' when nFB_WR = '1' and ROM_CS = '1' ELSE + '1' when nFB_WR = '1' and IDE_CF_CS = '1' ELSE + '1' when nFB_WR = '0' and nIDE_WR = '0' ELSE '0'; +nRP_UDS <= '0' when SUB_BUS = '1' and FB_B0 = '1' else '1'; +nRP_LDS <= '0' when SUB_BUS = '1' and FB_B1 = '1' else '1'; +nDREQ0 <= '0'; +---------------------------------------------------------------------------- +-- SD +---------------------------------------------------------------------------- +SD_CLK <= 'Z'; +SD_CD_DATA3 <= 'Z'; +SD_CDM_D1 <= 'Z'; +---------------------------------------------------------------------------- +-- IDE +---------------------------------------------------------------------------- +CMD_REG: process(nRSTO, MAIN_CLK, CMD_STATE, NEXT_CMD_STATE) + begin + if nRSTO = '0' then + CMD_STATE <= IDLE; + elsif rising_edge(MAIN_CLK) then + CMD_STATE <= NEXT_CMD_STATE; -- go to next + nIDE_RD <= NEXT_nIDE_RD; -- go to next + nIDE_WR <= NEXT_nIDE_WR; -- go to next + else + CMD_STATE <= CMD_STATE; -- halten + nIDE_RD <= nIDE_RD; -- halten + nIDE_WR <= nIDE_WR; -- halten + end if; + end process CMD_REG; + + CMD_DECODER: process(CMD_STATE, NEXT_CMD_STATE, NEXT_nIDE_RD, NEXT_nIDE_WR, IDE_RDY, IDE_CF_TA) + begin + case CMD_STATE is + when IDLE => + IDE_CF_TA <= '0'; + if IDE_CF_CS = '1' then + NEXT_nIDE_RD <= not nFB_WR; + NEXT_nIDE_WR <= nFB_WR; + NEXT_CMD_STATE <= T1; + else + NEXT_nIDE_RD <= '1'; + NEXT_nIDE_WR <= '1'; + NEXT_CMD_STATE <= IDLE; + end if; + when T1 => + IDE_CF_TA <= '0'; + NEXT_nIDE_RD <= not nFB_WR; + NEXT_nIDE_WR <= nFB_WR; + NEXT_CMD_STATE <= T6; + when T6 => + IF IDE_RDY = '1' then + IDE_CF_TA <= '1'; + NEXT_nIDE_RD <= '1'; + NEXT_nIDE_WR <= '1'; + NEXT_CMD_STATE <= T7; + else + IDE_CF_TA <= '0'; + NEXT_nIDE_RD <= not nFB_WR; + NEXT_nIDE_WR <= nFB_WR; + NEXT_CMD_STATE <= T6; + end if; + when T7 => + IDE_CF_TA <= '0'; + NEXT_nIDE_RD <= '1'; + NEXT_nIDE_WR <= '1'; + NEXT_CMD_STATE <= IDLE; + end case; + end process CMD_DECODER; + +IDE_RES <= not nnIDE_RES and nRSTO; +IDE_CF_CS <= '1' when nFB_CS1 = '0' and FB_ADR(19 downto 7) = x"0" else '0'; -- FFF0'0000/80 +nCF_CS0 <= '0' when ACP_CONF(31) = '0' and FB_ADR(19 downto 5) = x"0" else -- FFFO'0000-FFF0'001F + '0' when ACP_CONF(31) = '1' and FB_ADR(19 downto 5) = x"2" else '1'; -- FFFO'0040-FFF0'005F +nCF_CS1 <= '0' when ACP_CONF(31) = '0' and FB_ADR(19 downto 5) = x"1" else -- FFF0'0020-FFF0'003F + '0' when ACP_CONF(31) = '1' and FB_ADR(19 downto 5) = x"3" else '1'; -- FFFO'0060-FFF0'007F +nIDE_CS0 <= '0' when ACP_CONF(30) = '0' and FB_ADR(19 downto 5) = x"2" else -- FFF0'0040-FFF0'005F + '0' when ACP_CONF(30) = '1' and FB_ADR(19 downto 5) = x"0" else '1'; -- FFFO'0000-FFF0'001F +nIDE_CS1 <= '0' when ACP_CONF(30) = '0' and FB_ADR(19 downto 5) = x"3" else -- FFF0'0060-FFF0'007F + '0' when ACP_CONF(30) = '1' and FB_ADR(19 downto 5) = x"1" else '1'; -- FFFO'0020-FFF0'003F +----------------------------------------------------------------------------------------------------------------------------------------- +-- ACSI, SCSI UND FLOPPY WD1772 +------------------------------------------------------------------------------------------------------------------------------------------- +-- daten read fifo + RDF: dcfifo0 + port map( + aclr => CLR_FIFO, + data => RDF_DIN, + rdclk => MAIN_CLK, + rdreq => RDF_RDE, + wrclk => FDC_CLK, + wrreq => RDF_WRE, + q => RDF_DOUT, + wrusedw => RDF_AZ + ); +FCF_CS <= '1' when nFB_CS2 = '0' and FB_ADR(26 downto 0) = x"0020110" and LONG = '1' else '0'; -- F002'0110 LONG ONLY +FCF_APH <= '1' when FB_ALE = '1' and FB_AD(31 downto 0) = x"F0020110" and LONG = '1' else '0'; -- ADRESSPHASE F0020110 LONG ONLY +RDF_RDE <= '1' when FCF_APH = '1' and nFB_WR = '1' else '0'; -- AKTIVIEREN IN ADRESSPHASE +FB_AD <= RDF_DOUT(7 downto 0) & RDF_DOUT(15 downto 8) & RDF_DOUT(23 downto 16) & RDF_DOUT(31 downto 24) when FCF_CS = '1' and nFB_OE = '0' else "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"; +RDF_DIN <= CD_OUT_FDC when DMA_MODUS(7) = '1' else SCSI_DOUT; +-- daten write fifo + WRF: dcfifo1 + port map( + aclr => CLR_FIFO, + data => FB_AD(7 downto 0) & FB_AD(15 downto 8) & FB_AD(23 downto 16) & FB_AD(31 downto 24), + rdclk => FDC_CLK, + rdreq => WRF_RDE, + wrclk => MAIN_CLK, + wrreq => WRF_WRE, + q => WRF_DOUT, + rdusedw => WRF_AZ + ); +CD_IN_FDC <= WRF_DOUT when DMA_ACTIV = '1' and DMA_MODUS(8) = '1' else FB_AD(23 downto 16); -- BEI DMA WRITE <-FIFO SONST <-FB +DMA_AZ_CS <= '1' when nFB_CS2 = '0' and FB_ADR(26 downto 0) = x"002010C" else '0'; -- F002'010C LONG +FB_AD <= DMA_DRQ_Q & DMA_DRQ_REG & IDE_INT & FDINT & SCSI_INT & RDF_AZ & "0" & DMA_STATUS & "00" & WRF_AZ when DMA_AZ_CS = '1' and nFB_OE = '0' else "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"; +DMA_DRQ_Q <= '1' when DMA_DRQ_REG = "11" and DMA_MODUS(6) = '0' else '0'; +-- FIFO WRITE: GENAU 1 MAIN_CLK ------------------------------------------------------------------------- + process(MAIN_CLK, nRSTO, WRF_WRE, nFB_WR, FCF_APH) + begin + if nRSTO = '0' THEN + WRF_WRE <= '0'; + elsif rising_edge(MAIN_CLK) then + IF FCF_APH = '1' and nFB_WR = '0' then + WRF_WRE <= '1'; + else + WRF_WRE <= '0'; + end if; + else + WRF_WRE <= WRF_WRE; + end if; + END PROCESS; + +FCF_REG: process(nRSTO, FDC_CLK, FCF_STATE, NEXT_FCF_STATE, DMA_ACTIV) + begin + if nRSTO = '0' then + FCF_STATE <= FCF_IDLE; + DMA_ACTIV <= '0'; + elsif rising_edge(FDC_CLK) then + FCF_STATE <= NEXT_FCF_STATE; -- go to next + DMA_ACTIV <= DMA_ACTIV_NEW; + else + FCF_STATE <= FCF_STATE; -- halten + DMA_ACTIV <= DMA_ACTIV; + end if; + end process FCF_REG; + +FDC_REG: process(nRSTO, FDC_CLK, FDC_OUT, FDCS_In, CD_OUT_FDC) + begin + if nRSTO = '0' then + FDC_OUT <= x"00"; + elsif rising_edge(FDC_CLK) and FDCS_In = '0' then + FDC_OUT <= CD_OUT_FDC; -- set + else + FDC_OUT <= FDC_OUT; -- halten + end if; + end process FDC_REG; + +DMA_REQ <= '1' when ((DMA_DRQ_I = '1' and DMA_MODUS(7) = '1') or (SCSI_DRQ = '1' and DMA_MODUS(7) = '0')) and DMA_STATUS(1) = '1' and DMA_MODUS(6) = '0' and CLR_FIFO = '0' else '0'; +FDC_CS <= '1' when DMA_DATEN_CS = '1' and DMA_MODUS(4 downto 3) = "00" and FB_B1 = '1' else '0'; +SCSI_CS <= '1' when DMA_DATEN_CS = '1' and DMA_MODUS(4 downto 3) = "01" and FB_B1 = '1' else '0'; + + FCF_DECODER: process(FCF_STATE, NEXT_FCF_STATE, DMA_REQ,FDC_CS, RDF_WRE, WRF_RDE, SCSI_DRQ, nSCSI_DACK, DMA_MODUS, DMA_ACTIV, FDCS_In,SCSI_CS, SCSI_CSn) + begin + case FCF_STATE is + when FCF_IDLE => + SCSI_CSn <= '1'; + FDCS_In <= '1'; + RDF_WRE <= '0'; + WRF_RDE <= '0'; + nSCSI_DACK <= '1'; + if DMA_REQ = '1' or FDC_CS = '1' or SCSI_CS = '1' then + DMA_ACTIV_NEW <= DMA_REQ; + NEXT_FCF_STATE <= FCF_T0; + else + DMA_ACTIV_NEW <= '0'; + NEXT_FCF_STATE <= FCF_IDLE; + end if; + when FCF_T0 => + SCSI_CSn <= '1'; + FDCS_In <= '1'; + RDF_WRE <= '0'; + nSCSI_DACK <= '1'; + DMA_ACTIV_NEW <= DMA_REQ; + WRF_RDE <= DMA_MODUS(8) and DMA_REQ; -- WRITE -> READ FROM FIFO + if DMA_REQ = '0' and DMA_ACTIV = '1' THEN -- spike? + NEXT_FCF_STATE <= FCF_IDLE; -- ja -> zum start + else + NEXT_FCF_STATE <= FCF_T1; + end if; + when FCF_T1 => + RDF_WRE <= '0'; + WRF_RDE <= '0'; + DMA_ACTIV_NEW <= DMA_ACTIV; + SCSI_CSn <= not SCSI_CS; + FDCS_In <= DMA_MODUS(4) or DMA_MODUS(3); + nSCSI_DACK <= DMA_MODUS(7) and DMA_ACTIV; + NEXT_FCF_STATE <= FCF_T2; + when FCF_T2 => + RDF_WRE <= '0'; + WRF_RDE <= '0'; + DMA_ACTIV_NEW <= DMA_ACTIV; + SCSI_CSn <= not SCSI_CS; + FDCS_In <= DMA_MODUS(4) or DMA_MODUS(3); + nSCSI_DACK <= DMA_MODUS(7) and DMA_ACTIV; + NEXT_FCF_STATE <= FCF_T3; + when FCF_T3 => + RDF_WRE <= '0'; + WRF_RDE <= '0'; + DMA_ACTIV_NEW <= DMA_ACTIV; + SCSI_CSn <= not SCSI_CS; + FDCS_In <= DMA_MODUS(4) or DMA_MODUS(3); + nSCSI_DACK <= DMA_MODUS(7) and DMA_ACTIV; + NEXT_FCF_STATE <= FCF_T6; + when FCF_T6 => + WRF_RDE <= '0'; + DMA_ACTIV_NEW <= DMA_ACTIV; + SCSI_CSn <= not SCSI_CS; + FDCS_In <= DMA_MODUS(4) or DMA_MODUS(3); + nSCSI_DACK <= DMA_MODUS(7) and DMA_ACTIV; + RDF_WRE <= not DMA_MODUS(8) and DMA_ACTIV; -- READ -> WRITE IN FIFO + NEXT_FCF_STATE <= FCF_T7; + when FCF_T7 => + SCSI_CSn <= '1'; + FDCS_In <= '1'; + RDF_WRE <= '0'; + WRF_RDE <= '0'; + nSCSI_DACK <= '1'; + DMA_ACTIV_NEW <= '0'; + if FDC_CS = '1' and DMA_REQ = '0' then + NEXT_FCF_STATE <= FCF_T7; + else + NEXT_FCF_STATE <= FCF_IDLE; + end if; + end case; + end process FCF_DECODER; + + I_FDC: WF1772IP_TOP_SOC + port map( + CLK => FDC_CLK, + RESETn => nRSTO, + CSn => FDCS_In, + RWn => nFDC_WR, + A1 => CA2, + A0 => CA1, + DATA_IN => CD_IN_FDC, + DATA_OUT => CD_OUT_FDC, +-- DATA_EN => CD_EN_FDC, + RDn => nRD_DATA, + TR00n => TRACK00, + IPn => nINDEX, + WPRTn => nWP, + DDEn => '0', -- Fixed to MFM. + HDTYPE => HD_DD_OUT, + MO => MOT_ON, + WG => WR_GATE, + WD => WR_DATA, + STEP => STEP, + DIRC => STEP_DIR, + DRQ => DMA_DRQ_I, + INTRQ => FDINT + ); +DMA_DATEN_CS <= '1' when nFB_CS1 = '0' and FB_ADR(19 downto 1) = x"7C302" else '0'; -- F8604/2 +DMA_MODUS_CS <= '1' when nFB_CS1 = '0' and FB_ADR(19 downto 1) = x"7C303" else '0'; -- F8606/2 +WDC_BSL_CS <= '1' when nFB_CS1 = '0' and FB_ADR(19 downto 1) = x"7C307" else '0'; -- F860E/2 +HD_DD_OUT <= HD_DD WHEN ACP_CONF(29) = '0' ELSE WDC_BSL(0); +nFDC_WR <= (not DMA_MODUS(8)) when DMA_ACTIV = '1' else nFB_WR; +CA0 <= '1' when DMA_ACTIV = '1' ELSE DMA_MODUS(0); +CA1 <= '1' when DMA_ACTIV = '1' ELSE DMA_MODUS(1); +CA2 <= '1' when DMA_ACTIV = '1' ELSE DMA_MODUS(2); +FB_AD(23 downto 16) <= "0000" & (not DMA_STATUS(1)) & "0" & WDC_BSL(1) & HD_DD when WDC_BSL_CS = '1' and nFB_OE = '0' else "ZZZZZZZZ"; +FB_AD(31 downto 24) <= "00000000" when DMA_DATEN_CS = '1' and nFB_OE = '0' else "ZZZZZZZZ"; +FB_AD(23 downto 16) <= FDC_OUT when DMA_DATEN_CS = '1' and DMA_MODUS(4 downto 3) = "00" and nFB_OE = '0' else + SCSI_DOUT when DMA_DATEN_CS = '1' and DMA_MODUS(4 downto 3) = "01" and nFB_OE = '0' else + DMA_BYT_CNT(16 downto 9) when DMA_DATEN_CS = '1' and DMA_MODUS(4) = '1' and nFB_OE = '0' else "ZZZZZZZZ"; +--- WDC BSL REGISTER ------------------------------------------------------- + process(MAIN_CLK, nRSTO, WDC_BSL_CS, WDC_BSL, nFB_WR, FB_B0, FB_B1) + begin + if nRSTO = '0' THEN + WDC_BSL <= "00"; + elsif rising_edge(MAIN_CLK) and WDC_BSL_CS = '1' and nFB_WR = '0' then + IF FB_B0 = '1' THEN + WDC_BSL(1 DOWNTO 0) <= FB_AD(25 DOWNTO 24); + else + WDC_BSL(1 DOWNTO 0) <= WDC_BSL(1 DOWNTO 0); + end if; + end if; + END PROCESS; +--- DMA MODUS REGISTER ------------------------------------------------------- + process(MAIN_CLK, nRSTO, DMA_MODUS_CS, DMA_MODUS, nFB_WR, FB_B0, FB_B1) + begin + if nRSTO = '0' THEN + DMA_MODUS <= x"0000"; + elsif rising_edge(MAIN_CLK) and DMA_MODUS_CS = '1' and nFB_WR = '0' then + IF FB_B0 = '1' THEN + DMA_MODUS(15 downto 8) <= FB_AD(31 downto 24); + else + DMA_MODUS(15 downto 8) <= DMA_MODUS(15 downto 8); + end if; + IF FB_B1 = '1' THEN + DMA_MODUS(7 downto 0) <= FB_AD(23 downto 16); + else + DMA_MODUS(7 downto 0) <= DMA_MODUS(7 downto 0); + end if; + else + DMA_MODUS <= DMA_MODUS; + end if; + END PROCESS; +-- BYT COUNTER, SECTOR COUNTER ---------------------------------------------------- + process(MAIN_CLK, nRSTO, DMA_DATEN_CS, DMA_BYT_CNT_CS, DMA_BYT_CNT, nFB_WR, FB_B0, FB_B1, DMA_MODUS, CLR_FIFO) + begin + if nRSTO = '0' or CLR_FIFO = '1' THEN + DMA_BYT_CNT <= x"00000000"; + elsif rising_edge(MAIN_CLK) and nFB_WR = '0' and DMA_DATEN_CS = '1' and nFB_WR = '0' and DMA_MODUS(4) = '1' and FB_B1 = '1' then + DMA_BYT_CNT(31 downto 17) <= "000000000000000"; + DMA_BYT_CNT(16 downto 9) <= FB_AD(23 downto 16); + DMA_BYT_CNT(8 downto 0) <= "000000000"; + elsif rising_edge(MAIN_CLK) and nFB_WR = '0' and DMA_BYT_CNT_CS = '1' then + DMA_BYT_CNT <= FB_AD; + else + DMA_BYT_CNT <= DMA_BYT_CNT; + end if; + END PROCESS; +-------------------------------------------------------------------- +FB_AD(31 downto 16) <= "0000000000000" & DMA_STATUS when DMA_MODUS_CS = '1' and nFB_OE = '0' else "ZZZZZZZZZZZZZZZZ"; +DMA_STATUS(0) <= '1'; -- DMA OK +DMA_STATUS(1) <= '1' when DMA_BYT_CNT /= 0 and DMA_BYT_CNT(31) = '0' else '0'; -- WENN byts UND NICHT MINUS +DMA_STATUS(2) <= '0' when DMA_DRQ_I = '1' or SCSI_DRQ = '1' else '0'; +DMA_DRQQ <= '1' when DMA_STATUS(1) = '1' and DMA_MODUS(8) = '0' and RDF_AZ > 15 and DMA_MODUS(6) = '0' else + '1' when DMA_STATUS(1) = '1' and DMA_MODUS(8) = '1' and WRF_AZ < 512 and DMA_MODUS(6) = '0' else '0'; +DMA_DRQ <= '1' when DMA_DRQ_REG = "11" and DMA_MODUS(6) = '0' else '0'; +-- DMA REQUEST: SPIKES AUSFILTERN ------------------------------------------ + process(FDC_CLK, nRSTO, DMA_DRQ_REG) + begin + if nRSTO = '0' THEN + DMA_DRQ_REG <= "00"; + elsif rising_edge(FDC_CLK) then + DMA_DRQ_REG(0) <= DMA_DRQQ; + DMA_DRQ_REG(1) <= DMA_DRQ_REG(0) and DMA_DRQQ; + else + DMA_DRQ_REG <= DMA_DRQ_REG; + end if; + END PROCESS; +-- DMA ADRESSE ------------------------------------------------------ + process(MAIN_CLK, nRSTO, DMA_TOP_CS, DMA_TOP, nFB_WR, DMA_ADR_CS) + begin + if nRSTO = '0' THEN + DMA_TOP <= x"00"; + elsif rising_edge(MAIN_CLK) and nFB_WR = '0' and (DMA_TOP_CS = '1' or DMA_ADR_CS = '1') then + DMA_TOP <= FB_AD(31 downto 24); + else + DMA_TOP <= DMA_TOP; + end if; + END PROCESS; + process(MAIN_CLK, nRSTO, DMA_HIGH_CS, DMA_HIGH, nFB_WR, DMA_ADR_CS) + begin + if nRSTO = '0' THEN + DMA_HIGH <= x"00"; + elsif rising_edge(MAIN_CLK) and nFB_WR = '0' and (DMA_HIGH_CS = '1' or DMA_ADR_CS = '1') then + DMA_HIGH <= FB_AD(23 downto 16); + else + DMA_HIGH <= DMA_HIGH; + end if; + END PROCESS; + process(MAIN_CLK, nRSTO, DMA_MID_CS, DMA_MID, nFB_WR) + begin + DMA_MID <= DMA_MID; + if nRSTO = '0' THEN + DMA_MID <= x"00"; + elsif rising_edge(MAIN_CLK) and nFB_WR = '0' then + if DMA_MID_CS = '1' then + DMA_MID <= FB_AD(23 downto 16); + elsif DMA_ADR_CS = '1' then + DMA_MID <= FB_AD(15 downto 8); + end if; + end if; + END PROCESS; + process(MAIN_CLK, nRSTO, DMA_LOW_CS, DMA_LOW, nFB_WR) + begin + DMA_LOW <= DMA_LOW; + if nRSTO = '0' THEN + DMA_LOW <= x"00"; + elsif rising_edge(MAIN_CLK) and nFB_WR = '0' then + if DMA_LOW_CS = '1'then + DMA_LOW <= FB_AD(23 downto 16); + elsif DMA_ADR_CS = '1' then + DMA_LOW <= FB_AD(7 downto 0); + end if; + end if; + END PROCESS; +-------------------------------------------------------------------------------------------- +DMA_TOP_CS <= '1' when nFB_CS1 = '0' and FB_ADR(19 downto 1) = x"7C304" and FB_B0 = '1' else '0'; -- F8608/2 +DMA_HIGH_CS <= '1' when nFB_CS1 = '0' and FB_ADR(19 downto 1) = x"7C304" and FB_B1 = '1' else '0'; -- F8609/2 +DMA_MID_CS <= '1' when nFB_CS1 = '0' and FB_ADR(19 downto 1) = x"7C305" and FB_B1 = '1' else '0'; -- F860B/2 +DMA_LOW_CS <= '1' when nFB_CS1 = '0' and FB_ADR(19 downto 1) = x"7C306" and FB_B1 = '1' else '0'; -- F860D/2 +FB_AD(31 downto 24) <= DMA_TOP when DMA_TOP_CS = '1' and nFB_OE = '0' else "ZZZZZZZZ"; +FB_AD(23 downto 16) <= DMA_HIGH when DMA_HIGH_CS = '1' and nFB_OE = '0' else "ZZZZZZZZ"; +FB_AD(23 downto 16) <= DMA_MID when DMA_MID_CS = '1' and nFB_OE = '0' else "ZZZZZZZZ"; +FB_AD(23 downto 16) <= DMA_LOW when DMA_LOW_CS = '1' and nFB_OE = '0' else "ZZZZZZZZ"; +-- DIRECTZUGRIFF +DMA_DIRM_CS <= '1' when nFB_CS2 = '0' and FB_ADR(26 downto 0) = x"20100" else '0'; -- F002'0100 WORD +DMA_ADR_CS <= '1' when nFB_CS2 = '0' and FB_ADR(26 downto 0) = x"20104" else '0'; -- F002'0104 LONG +DMA_BYT_CNT_CS <= '1' when nFB_CS2 = '0' and FB_ADR(26 downto 0) = x"20108" else '0'; -- F002'0108 LONG +FB_AD <= DMA_TOP & DMA_HIGH & DMA_MID & DMA_LOW when DMA_ADR_CS = '1' and nFB_OE = '0' else "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"; +FB_AD(31 downto 16) <= DMA_MODUS when DMA_DIRM_CS = '1' and nFB_OE = '0' else "ZZZZZZZZZZZZZZZZ"; +FB_AD <= DMA_BYT_CNT when DMA_BYT_CNT_CS = '1' and nFB_OE = '0' else "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"; +-- DMA RW TOGGLE ------------------------------------------ + process(MAIN_CLK, nRSTO, DMA_MODUS_CS, DMA_MODUS, DMA_DIR_OLD) + begin + if nRSTO = '0' THEN + DMA_DIR_OLD <= '0'; + elsif rising_edge(MAIN_CLK) and DMA_MODUS_CS = '0' then + DMA_DIR_OLD <= DMA_MODUS(8); + else + DMA_DIR_OLD <= DMA_DIR_OLD; + end if; + END PROCESS; +CLR_FIFO <= DMA_MODUS(8) xor DMA_DIR_OLD; +-- SCSI ---------------------------------------------------------------------------------- + I_SCSI: WF5380_TOP_SOC + port map( + CLK => FDC_CLK, + RESETn => nRSTO, + ADR => CA2 & CA1 & CA0, + DATA_IN => CD_IN_FDC, + DATA_OUT => SCSI_DOUT, + --DATA_EN : out bit; + -- Bus and DMA controls: + CSn => '1', --SCSI_CSn, ABGESCHALTET + RDn => (not nFDC_WR) or (not SCSI_CS), + WRn => nFDC_WR or (not SCSI_CS), + EOPn => '1', + DACKn => nSCSI_DACK, + DRQ => SCSI_DRQ, + INT => SCSI_INT, +-- READY => + -- SCSI bus: + DB_INn => SCSI_D, + DB_OUTn => DB_OUTn, + DB_EN => DB_EN, + DBP_INn => SCSI_PAR, + DBP_OUTn => DBP_OUTn, + DBP_EN => DBP_EN, -- wenn 1 dann output + RST_INn => nSCSI_RST, + RST_OUTn => RST_OUTn, + RST_EN => RST_EN, + BSY_INn => nSCSI_BUSY, + BSY_OUTn => BSY_OUTn, + BSY_EN => BSY_EN, + SEL_INn => nSCSI_SEL, + SEL_OUTn => SEL_OUTn, + SEL_EN => SEL_EN, + ACK_INn => '1', + ACK_OUTn => nSCSI_ACK, +-- ACK_EN => ACK_EN, + ATN_INn => '1', + ATN_OUTn => nSCSI_ATN, +-- ATN_EN => ATN_EN, + REQ_INn => nSCSI_DRQ, +-- REQ_OUTn => REQ_OUTn, +-- REQ_EN => REQ_EN, + IOn_IN => nSCSI_I_O, +-- IOn_OUT => IOn_OUT, +-- IO_EN => IO_EN, + CDn_IN => nSCSI_C_D, +-- CDn_OUT => CDn_OUT, +-- CD_EN => CD_EN, + MSG_INn => nSCSI_MSG +-- MSG_OUTn => MSG_OUTn, +-- MSG_EN => MSG_EN + ); +-- SCSI ACSI --------------------------------------------------------------- +SCSI_D <= DB_OUTn when DB_EN = '1' else "ZZZZZZZZ"; +SCSI_DIR <= '1'; --'0' when DB_EN = '1' else '1'; --ABGESCHALTET +SCSI_PAR <= DBP_OUTn when DBP_EN = '1' else 'Z'; +nSCSI_RST <= RST_OUTn when RST_EN = '1' else 'Z'; +nSCSI_BUSY <= BSY_OUTn when BSY_EN = '1' else 'Z'; +nSCSI_SEL <= SEL_OUTn when SEL_EN = '1' else 'Z'; +ACSI_DIR <= '0'; +ACSI_D <= "ZZZZZZZZ"; +nACSI_CS <= '1'; +ACSI_A1 <= CA1; +nACSI_RESET <= nRSTO; +nACSI_ACK <= '1'; +---------------------------------------------------------------------------- +-- ROM-PORT TA KOMMT FROM DEFAULT TA = 16 BUSCYCLEN = 500ns +---------------------------------------------------------------------------- +ROM_CS <= '1' when nFB_CS1 = '0' and nFB_WR = '1' and FB_ADR(19 downto 17) = x"5" else '0'; -- FFF A'0000/2'0000 +nROM4 <= '0' when ROM_CS = '1' and FB_ADR(16) = '0' else '1'; +nROM3 <= '0' when ROM_CS = '1' and FB_ADR(16) = '1' else '1'; +---------------------------------------------------------------------------- +-- ACIA KEYBOARD +---------------------------------------------------------------------------- + I_ACIA_KEYBOARD: WF6850IP_TOP_SOC + port map( + CLK => MAIN_CLK, + RESETn => nRSTO, + + CS2n => FB_ADR(2), + CS1 => '1', + CS0 => ACIA_CS_I, + E => ACIA_CS_I, + RWn => nFB_WR, + RS => FB_ADR(1), + + DATA_IN => FB_AD(31 downto 24), + DATA_OUT => DATA_OUT_ACIA_I, +-- DATA_EN => DATA_EN_ACIA_I, + + TXCLK => CLK500k, + RXCLK => CLK500k, + RXDATA => KEYB_RxD, + + CTSn => '0', + DCDn => '0', + + IRQn => IRQ_KEYBDn, + TXDATA => AMKB_TX + --RTSn => -- Not used. + ); +ACIA_CS_I <= '1' when nFB_CS1 = '0'and FB_ADR(19 downto 3) = x"1FF80" else '0'; -- FFC00-FFC07 FFC00/8 +KEYB_RxD <= '1' when AMKB_REG(3) = '1' or PIC_AMKB_RX = '0' else '0'; -- TASTATUR DATEN VOM PIC(PS2) OR NORMAL +FB_AD(31 downto 24) <= DATA_OUT_ACIA_I when ACIA_CS_I = '1' and FB_ADR(2) = '0' and nFB_OE = '0' else "ZZZZZZZZ"; +-- AMKB_TX: SPIKES AUSFILTERN ------------------------------------------ + process(CLK2M, AMKB_RX, AMKB_REG) + begin + if rising_edge(CLK2M) then + IF AMKB_RX = '0' THEN + IF AMKB_REG < 16 THEN + AMKB_REG <= "00000"; + ELSE + AMKB_REG <= AMKB_REG - 1; + END IF; + ELSE + IF AMKB_REG > 15 THEN + AMKB_REG <= "11111"; + ELSE + AMKB_REG <= AMKB_REG + 1; + END IF; + END IF; + ELSE + AMKB_REG <= AMKB_REG; + end if; + END PROCESS; +---------------------------------------------------------------------------- +-- ACIA MIDI +---------------------------------------------------------------------------- + I_ACIA_MIDI: WF6850IP_TOP_SOC + port map( + CLK => MAIN_CLK, + RESETn => nRSTO, + + CS2n => '0', + CS1 => FB_ADR(2), + CS0 => ACIA_CS_I, + E => ACIA_CS_I, + RWn => nFB_WR, + RS => FB_ADR(1), + + DATA_IN => FB_AD(31 downto 24), + DATA_OUT => DATA_OUT_ACIA_II, +-- DATA_EN => DATA_EN_ACIA_II, + + TXCLK => CLK500k, + RXCLK => CLK500k, + RXDATA => MIDI_IN, + CTSn => '0', + DCDn => '0', + + IRQn => IRQ_MIDIn, + TXDATA => MIDI_OUT + --RTSn => -- Not used. + ); +MIDI_TLR <= MIDI_OUT; +MIDI_OLR <= MIDI_OUT; +FB_AD(31 downto 24) <= DATA_OUT_ACIA_II when ACIA_CS_I = '1' and FB_ADR(2) = '1' and nFB_OE = '0' else "ZZZZZZZZ"; +---------------------------------------------------------------------------- +-- MFP +---------------------------------------------------------------------------- + I_MFP: WF68901IP_TOP_SOC + port map( + -- System control: + CLK => MAIN_CLK, + RESETn => nRSTO, + -- Asynchronous bus control: + DSn => not LDS, + CSn => not MFP_CS, + RWn => nFB_WR, + DTACKn => DTACK_OUT_MFPn, + -- Data and Adresses: + RS => FB_ADR(5 downto 1), + DATA_IN => FB_AD(23 downto 16), + DATA_OUT => DATA_OUT_MFP, +-- DATA_EN => DATA_EN_MFP, + GPIP_IN(7) => not DMA_DRQ_Q, + GPIP_IN(6) => not RI, + GPIP_IN(5) => DINTn, + GPIP_IN(4) => IRQ_ACIAn, + GPIP_IN(3) => DSP_INT, + GPIP_IN(2) => not CTS, + GPIP_IN(1) => not DCD, + GPIP_IN(0) => LP_BUSY, + -- GPIP_OUT =>, -- Not used; all GPIPs are direction input. + -- GPIP_EN =>, -- Not used; all GPIPs are direction input. + -- Interrupt control: + IACKn => not MFP_INTACK, + IEIn => '0', + -- IEOn =>, -- Not used. + IRQn => nMFP_INT, + -- Timers and timer control: + XTAL1 => CLK2M4576, + TAI => '0', + TBI => nBLANK, + -- TAO =>, + -- TBO =>, + -- TCO =>, + TDO => TDO, + -- Serial I/O control: + RC => TDO, + TC => TDO, + SI => RxD, + SO => TxD + -- SO_EN => MFP_SO_EN + -- DMA control: + -- RRn =>, + -- TRn => + ); + +MFP_CS <= '1' when nFB_CS1 = '0' and FB_ADR(19 downto 6) = x"3FE8" else '0'; -- FFA00/40 +MFP_INTACK <= '1' when nFB_CS2 = '0' and FB_ADR(26 downto 0) = x"20000" else '0'; --F002'0000 +LDS <= '1' when MFP_CS = '1' or MFP_INTACK = '1' else '0'; +FB_AD(23 downto 16) <= DATA_OUT_MFP when MFP_CS = '1' and nFB_OE = '0' else "ZZZZZZZZ"; +FB_AD(31 downto 10) <= "0000000000000000000000" when MFP_INTACK = '1' and nFB_OE = '0' else "ZZZZZZZZZZZZZZZZZZZZZZ"; +FB_AD(9 downto 2) <= DATA_OUT_MFP when MFP_INTACK = '1' and nFB_OE = '0' else "ZZZZZZZZ"; +FB_AD(1 downto 0) <= "00" when MFP_INTACK = '1' and nFB_OE = '0' else "ZZ"; +DINTn <= '0' when IDE_INT = '1' AND ACP_CONF(28) = '1' else + '0' when FDINT = '1' else + '0' when SCSI_INT = '1' AND ACP_CONF(28) = '1' else '1'; +-- TASTATUR UND KEYBOARD INTERRUPT: SPIKES AUSFILTERN ------------------------------------------ + process(MAIN_CLK,nRSTO,IRQ_ACIAn,IRQ_KEYBDn,IRQ_MIDIn) + begin + if nRSTO = '0' THEN + IRQ_ACIAn <= '1'; + elsif rising_edge(MAIN_CLK) then + IRQ_ACIAn <= IRQ_KEYBDn and IRQ_MIDIn; + else + IRQ_ACIAn <= IRQ_ACIAn; + end if; + END PROCESS; +---------------------------------------------------------------------------- +-- Sound +---------------------------------------------------------------------------- + I_SOUND: WF2149IP_TOP_SOC + port map( + SYS_CLK => MAIN_CLK, + RESETn => nRSTO, + + WAV_CLK => CLK2M, + SELn => '1', + + BDIR => SNDIR_I, + BC2 => '1', + BC1 => SNDCS_I, + + A9n => '0', + A8 => '1', + DA_IN => FB_AD(31 downto 24), + DA_OUT => DA_OUT_X, + + IO_A_IN => x"00", -- All port pins are dedicated outputs. + IO_A_OUT(7) => nnIDE_RES, + IO_A_OUT(6) => LP_DIR_X, + IO_A_OUT(5) => LP_STR, + IO_A_OUT(4) => DTR, + IO_A_OUT(3) => RTS, +-- IO_A_OUT(2) => FDD_D1SEL, + IO_A_OUT(1) => DSA_D, + IO_A_OUT(0) => nSDSEL, + -- IO_A_EN =>, -- Not required. + IO_B_IN => LP_D, + IO_B_OUT => LP_D_X, + -- IO_B_EN => IO_B_EN, + + OUT_A => YM_QA, + OUT_B => YM_QB, + OUT_C => YM_QC + ); + +SNDCS <= '1' when nFB_CS1 = '0' and FB_ADR(19 downto 2) = x"3E200" else '0'; -- 8800-8803 F8800/4 +SNDCS_I <= '1' when SNDCS = '1' and FB_ADR (1 downto 1) = "0" else '0'; +SNDIR_I <= '1' when SNDCS = '1' and nFB_WR = '0' else '0'; +FB_AD(31 downto 24) <= DA_OUT_X when SNDCS_I = '1' and nFB_OE = '0' else "ZZZZZZZZ"; +LP_D <= LP_D_X when LP_DIR_X = '0' else "ZZZZZZZZ"; +LP_DIR <= LP_DIR_X; + +END FalconIO_SDCard_IDE_CF_architecture; diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF.vhd.bak b/FPGA_quartus/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF.vhd.bak new file mode 100644 index 0000000..a339eda --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF.vhd.bak @@ -0,0 +1,971 @@ +-- WARNING: Do NOT edit the input and output ports in this file in a text +-- editor if you plan to continue editing the block that represents it in +-- the Block Editor! File corruption is VERY likely to occur. + +-- Copyright (C) 1991-2008 Altera Corporation +-- Your use of Altera Corporation's design tools, logic functions +-- and other software and tools, and its AMPP partner logic +-- functions, and any output files from any of the foregoing +-- (including device programming or simulation files), and any +-- associated documentation or information are expressly subject +-- to the terms and conditions of the Altera Program License +-- Subscription Agreement, Altera MegaCore Function License +-- Agreement, or other applicable license agreement, including, +-- without limitation, that your use is for the sole purpose of +-- programming logic devices manufactured by Altera and sold by +-- Altera or its authorized distributors. Please refer to the +-- applicable agreement for further details. + + +-- Generated by Quartus II Version 8.1 (Build Build 163 10/28/2008) +-- Created on Tue Sep 08 16:24:20 2009 + +library work; +use work.FalconIO_SDCard_IDE_CF_pkg.all; + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + + +-- Entity Declaration + + +-- Entity Declaration + +ENTITY FalconIO_SDCard_IDE_CF IS + -- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! + PORT + ( + CLK33M : IN STD_LOGIC; + MAIN_CLK : IN STD_LOGIC; + CLK2M : IN STD_LOGIC; + CLK500k : IN STD_LOGIC; + nFB_CS1 : IN STD_LOGIC; + FB_SIZE0 : IN STD_LOGIC; + FB_SIZE1 : IN STD_LOGIC; + nFB_BURST : IN STD_LOGIC; + FB_ADR : IN STD_LOGIC_VECTOR(31 downto 0); + LP_BUSY : IN STD_LOGIC; + nACSI_DRQ : IN STD_LOGIC; + nACSI_INT : IN STD_LOGIC; + nSCSI_DRQ : IN STD_LOGIC; + nSCSI_MSG : IN STD_LOGIC; + MIDI_IN : IN STD_LOGIC; + RxD : IN STD_LOGIC; + CTS : IN STD_LOGIC; + RI : IN STD_LOGIC; + DCD : IN STD_LOGIC; + AMKB_RX : IN STD_LOGIC; + PIC_AMKB_RX : IN STD_LOGIC; + IDE_RDY : IN STD_LOGIC; + IDE_INT : IN STD_LOGIC; + WP_CS_CARD : IN STD_LOGIC; + nINDEX : IN STD_LOGIC; + TRACK00 : IN STD_LOGIC; + nRD_DATA : IN STD_LOGIC; + nDCHG : IN STD_LOGIC; + SD_DATA0 : IN STD_LOGIC; + SD_DATA1 : IN STD_LOGIC; + SD_DATA2 : IN STD_LOGIC; + SD_CARD_DEDECT : IN STD_LOGIC; + SD_WP : IN STD_LOGIC; + nDACK0 : IN STD_LOGIC; + nFB_WR : INOUT STD_LOGIC; + WP_CF_CARD : IN STD_LOGIC; + nWP : IN STD_LOGIC; + nFB_CS2 : IN STD_LOGIC; + nRSTO : IN STD_LOGIC; + HD_DD : IN STD_LOGIC; + nSCSI_C_D : IN STD_LOGIC; + nSCSI_I_O : IN STD_LOGIC; + CLK2M4576 : IN STD_LOGIC; + nFB_OE : IN STD_LOGIC; + VSYNC : IN STD_LOGIC; + HSYNC : IN STD_LOGIC; + DSP_INT : IN STD_LOGIC; + nBLANK : IN STD_LOGIC; + FDC_CLK : IN STD_LOGIC; + FB_ALE : IN STD_LOGIC; + ACP_CONF : IN STD_LOGIC_VECTOR(31 downto 24); + nIDE_CS1 : OUT STD_LOGIC; + nIDE_CS0 : OUT STD_LOGIC; + LP_STR : OUT STD_LOGIC; + LP_DIR : OUT STD_LOGIC; + nACSI_ACK : OUT STD_LOGIC; + nACSI_RESET : OUT STD_LOGIC; + nACSI_CS : OUT STD_LOGIC; + ACSI_DIR : OUT STD_LOGIC; + ACSI_A1 : OUT STD_LOGIC; + nSCSI_ACK : OUT STD_LOGIC; + nSCSI_ATN : OUT STD_LOGIC; + SCSI_DIR : OUT STD_LOGIC; + SD_CLK : OUT STD_LOGIC; + YM_QA : OUT STD_LOGIC; + YM_QC : OUT STD_LOGIC; + YM_QB : OUT STD_LOGIC; + nSDSEL : OUT STD_LOGIC; + STEP : OUT STD_LOGIC; + MOT_ON : OUT STD_LOGIC; + nRP_LDS : OUT STD_LOGIC; + nRP_UDS : OUT STD_LOGIC; + nROM4 : OUT STD_LOGIC; + nROM3 : OUT STD_LOGIC; + nCF_CS1 : OUT STD_LOGIC; + nCF_CS0 : OUT STD_LOGIC; + nIDE_RD : INOUT STD_LOGIC; + nIDE_WR : INOUT STD_LOGIC; + AMKB_TX : OUT STD_LOGIC; + IDE_RES : OUT STD_LOGIC; + DTR : OUT STD_LOGIC; + RTS : OUT STD_LOGIC; + TxD : OUT STD_LOGIC; + MIDI_OLR : OUT STD_LOGIC; + MIDI_TLR : OUT STD_LOGIC; + nDREQ0 : OUT STD_LOGIC; + DSA_D : OUT STD_LOGIC; + nMFP_INT : OUT STD_LOGIC; + FALCON_IO_TA : OUT STD_LOGIC; + STEP_DIR : OUT STD_LOGIC; + WR_DATA : OUT STD_LOGIC; + WR_GATE : OUT STD_LOGIC; + DMA_DRQ : OUT STD_LOGIC; + FB_AD : INOUT STD_LOGIC_VECTOR(31 downto 0); + LP_D : INOUT STD_LOGIC_VECTOR(7 downto 0); + ACSI_D : INOUT STD_LOGIC_VECTOR(7 downto 0); + SCSI_D : INOUT STD_LOGIC_VECTOR(7 downto 0); + SCSI_PAR : INOUT STD_LOGIC; + nSCSI_SEL : INOUT STD_LOGIC; + nSCSI_BUSY : INOUT STD_LOGIC; + nSCSI_RST : INOUT STD_LOGIC; + SD_CD_DATA3 : INOUT STD_LOGIC; + SD_CDM_D1 : INOUT STD_LOGIC + ); + -- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! + +END FalconIO_SDCard_IDE_CF; + + +-- Architecture Body + +ARCHITECTURE FalconIO_SDCard_IDE_CF_architecture OF FalconIO_SDCard_IDE_CF IS +-- system +signal SYS_CLK : STD_LOGIC; +signal RESETn : STD_LOGIC; +signal FB_B0 : STD_LOGIC; -- UPPER BYT BEI 16BIT BUS +signal FB_B1 : STD_LOGIC; -- LOWER BYT BEI 16BIT BUS +signal BYT : STD_LOGIC; -- WENN BYT -> 1 +signal LONG : STD_LOGIC; -- WENN -> 1 +-- KEYBOARD MIDI +signal ACIA_CS_I : STD_LOGIC; +signal IRQ_KEYBDn : STD_LOGIC; +signal IRQ_MIDIn : STD_LOGIC; +signal KEYB_RxD : STD_LOGIC; +signal AMKB_REG : STD_LOGIC_VECTOR(4 downto 0); +signal MIDI_OUT : STD_LOGIC; +signal DATA_OUT_ACIA_I : STD_LOGIC_VECTOR(7 downto 0); +signal DATA_OUT_ACIA_II : STD_LOGIC_VECTOR(7 downto 0); +-- MFP +signal MFP_CS : STD_LOGIC; +signal MFP_INTACK : STD_LOGIC; +signal LDS : STD_LOGIC; +signal DTACK_OUT_MFPn : STD_LOGIC; +signal IRQ_ACIAn : STD_LOGIC; +signal DINTn : STD_LOGIC; +signal DATA_OUT_MFP : STD_LOGIC_VECTOR(7 downto 0); +signal TDO : STD_LOGIC; +-- SOUND +signal SNDCS : STD_LOGIC; +signal SNDCS_I : STD_LOGIC; +signal SNDIR_I : STD_LOGIC; +signal LP_DIR_X : STD_LOGIC; +signal DA_OUT_X : STD_LOGIC_VECTOR(7 downto 0); +signal LP_D_X : STD_LOGIC_VECTOR(7 downto 0); +-- DIV +signal SUB_BUS : STD_LOGIC; -- SUB BUS MIT ROM-PORT, CF UND IDE +signal ROM_CS : STD_LOGIC; +-- DMA UND FLOPPY +signal DMA_DATEN_CS : STD_LOGIC; +signal DMA_MODUS_CS : STD_LOGIC; +signal DMA_MODUS : STD_LOGIC_VECTOR(15 downto 0); +signal WDC_BSL_CS : STD_LOGIC; +signal WDC_BSL : STD_LOGIC_VECTOR(1 DOWNTO 0); +signal HD_DD_OUT : STD_LOGIC; +signal FDCS_In : STD_LOGIC; +signal CA0 : STD_LOGIC; +signal CA1 : STD_LOGIC; +signal CA2 : STD_LOGIC; +signal FDINT : STD_LOGIC; +signal FDRQ : STD_LOGIC; +signal CD_OUT_FDC : STD_LOGIC_VECTOR(7 downto 0); +signal CD_IN_FDC : STD_LOGIC_VECTOR(7 downto 0); +signal DMA_TOP_CS : STD_LOGIC; +signal DMA_TOP : STD_LOGIC_VECTOR(7 downto 0); +signal DMA_HIGH_CS : STD_LOGIC; +signal DMA_HIGH : STD_LOGIC_VECTOR(7 downto 0); +signal DMA_MID_CS : STD_LOGIC; +signal DMA_MID : STD_LOGIC_VECTOR(7 downto 0); +signal DMA_LOW_CS : STD_LOGIC; +signal DMA_LOW : STD_LOGIC_VECTOR(7 downto 0); +signal DMA_DIRM_CS : STD_LOGIC; +signal DMA_ADR_CS : STD_LOGIC; +signal DMA_STATUS : STD_LOGIC_VECTOR(2 downto 0); +signal DMA_DIR_OLD : STD_LOGIC; +signal DMA_BYT_CNT_CS : STD_LOGIC; +signal DMA_BYT_CNT : STD_LOGIC_VECTOR(31 downto 0); +signal CLR_FIFO : STD_LOGIC; +signal DMA_DRQ_I : STD_LOGIC; +signal DMA_DRQ_REG : STD_LOGIC_VECTOR(1 downto 0); +signal DMA_DRQQ : STD_LOGIC; +signal DMA_DRQ_Q : STD_LOGIC; +signal RDF_DOUT : STD_LOGIC_VECTOR(31 downto 0); +signal RDF_AZ : STD_LOGIC_VECTOR(9 downto 0); +signal RDF_RDE : STD_LOGIC; +signal RDF_WRE : STD_LOGIC; +signal RDF_DIN : STD_LOGIC_VECTOR(7 downto 0); +signal WRF_DOUT : STD_LOGIC_VECTOR(7 downto 0); +signal WRF_AZ : STD_LOGIC_VECTOR(9 downto 0); +signal WRF_RDE : STD_LOGIC; +signal WRF_WRE : STD_LOGIC; +signal nFDC_WR : STD_LOGIC; +type FCF_STATES is( FCF_IDLE, FCF_T0, FCF_T1, FCF_T2, FCF_T3, FCF_T6, FCF_T7); +signal FCF_STATE : FCF_STATES; +signal NEXT_FCF_STATE : FCF_STATES; +signal DMA_REQ : STD_LOGIC; +signal FDC_CS : STD_LOGIC; +signal FCF_CS : STD_LOGIC; +signal FCF_APH : STD_LOGIC; +signal DMA_AZ_CS : STD_LOGIC; +signal DMA_ACTIV : STD_LOGIC; +signal DMA_ACTIV_NEW : STD_LOGIC; +signal FDC_OUT : STD_LOGIC_VECTOR(7 downto 0); +-- SCSI +signal SCSI_CS : STD_LOGIC; +signal SCSI_CSn : STD_LOGIC; +signal SCSI_DOUT : STD_LOGIC_VECTOR(7 downto 0); +signal nSCSI_DACK : STD_LOGIC; +signal SCSI_DRQ : STD_LOGIC; +signal SCSI_INT : STD_LOGIC; +signal DB_OUTn : STD_LOGIC_VECTOR(7 downto 0); +signal DB_EN : STD_LOGIC; +signal DBP_OUTn : STD_LOGIC; +signal DBP_EN : STD_LOGIC; +signal RST_OUTn : STD_LOGIC; +signal RST_EN : STD_LOGIC; +signal BSY_OUTn : STD_LOGIC; +signal BSY_EN : STD_LOGIC; +signal SEL_OUTn : STD_LOGIC; +signal SEL_EN : STD_LOGIC; +-- IDE +signal nnIDE_RES : STD_LOGIC; +signal IDE_CF_CS : STD_LOGIC; +signal IDE_CF_TA : STD_LOGIC; +signal NEXT_nIDE_RD : STD_LOGIC; +signal NEXT_nIDE_WR : STD_LOGIC; +type CMD_STATES is( IDLE, T1, T6, T7); +signal CMD_STATE : CMD_STATES; +signal NEXT_CMD_STATE : CMD_STATES; + + +BEGIN +LONG <= '1' when FB_SIZE1 = '0' and FB_SIZE0 = '0' else '0'; +BYT <= '1' when FB_SIZE1 = '0' and FB_SIZE0 = '1' else '0'; +FB_B0 <= '1' when FB_ADR(0) = '0' or BYT = '0' else '0'; +FB_B1 <= '1' when FB_ADR(0) = '1' or BYT = '0' else '0'; + +FALCON_IO_TA <= '1' when SNDCS = '1' or DTACK_OUT_MFPn = '0' or ACIA_CS_I = '1' or DMA_MODUS_CS ='1' + or DMA_ADR_CS = '1' or DMA_DIRM_CS = '1' or DMA_BYT_CNT_CS = '1' or FCF_CS = '1' or IDE_CF_TA = '1' else '0'; +SUB_BUS <= '1' when nFB_WR = '1' and ROM_CS = '1' ELSE + '1' when nFB_WR = '1' and IDE_CF_CS = '1' ELSE + '1' when nFB_WR = '0' and nIDE_WR = '0' ELSE '0'; +nRP_UDS <= '0' when SUB_BUS = '1' and FB_B0 = '1' else '1'; +nRP_LDS <= '0' when SUB_BUS = '1' and FB_B1 = '1' else '1'; +nDREQ0 <= '0'; +---------------------------------------------------------------------------- +-- SD +---------------------------------------------------------------------------- +SD_CLK <= 'Z'; +SD_CD_DATA3 <= 'Z'; +SD_CDM_D1 <= 'Z'; +---------------------------------------------------------------------------- +-- IDE +---------------------------------------------------------------------------- +CMD_REG: process(nRSTO, MAIN_CLK, CMD_STATE, NEXT_CMD_STATE) + begin + if nRSTO = '0' then + CMD_STATE <= IDLE; + elsif rising_edge(MAIN_CLK) then + CMD_STATE <= NEXT_CMD_STATE; -- go to next + nIDE_RD <= NEXT_nIDE_RD; -- go to next + nIDE_WR <= NEXT_nIDE_WR; -- go to next + else + CMD_STATE <= CMD_STATE; -- halten + nIDE_RD <= nIDE_RD; -- halten + nIDE_WR <= nIDE_WR; -- halten + end if; + end process CMD_REG; + + CMD_DECODER: process(CMD_STATE, NEXT_CMD_STATE, NEXT_nIDE_RD, NEXT_nIDE_WR, IDE_RDY, IDE_CF_TA) + begin + case CMD_STATE is + when IDLE => + IDE_CF_TA <= '0'; + if IDE_CF_CS = '1' then + NEXT_nIDE_RD <= not nFB_WR; + NEXT_nIDE_WR <= nFB_WR; + NEXT_CMD_STATE <= T1; + else + NEXT_nIDE_RD <= '1'; + NEXT_nIDE_WR <= '1'; + NEXT_CMD_STATE <= IDLE; + end if; + when T1 => + IDE_CF_TA <= '0'; + NEXT_nIDE_RD <= not nFB_WR; + NEXT_nIDE_WR <= nFB_WR; + NEXT_CMD_STATE <= T6; + when T6 => + IF IDE_RDY = '1' then + IDE_CF_TA <= '1'; + NEXT_nIDE_RD <= '1'; + NEXT_nIDE_WR <= '1'; + NEXT_CMD_STATE <= T7; + else + IDE_CF_TA <= '0'; + NEXT_nIDE_RD <= not nFB_WR; + NEXT_nIDE_WR <= nFB_WR; + NEXT_CMD_STATE <= T6; + end if; + when T7 => + IDE_CF_TA <= '0'; + NEXT_nIDE_RD <= '1'; + NEXT_nIDE_WR <= '1'; + NEXT_CMD_STATE <= IDLE; + end case; + end process CMD_DECODER; + +IDE_RES <= not nnIDE_RES and nRSTO; +IDE_CF_CS <= '1' when nFB_CS1 = '0' and FB_ADR(19 downto 7) = x"0" else '0'; -- FFF0'0000/80 +nCF_CS0 <= '0' when ACP_CONF(31) = '0' and FB_ADR(19 downto 5) = x"0" else -- FFFO'0000-FFF0'001F + '0' when ACP_CONF(31) = '1' and FB_ADR(19 downto 5) = x"2" else '1'; -- FFFO'0040-FFF0'005F +nCF_CS1 <= '0' when ACP_CONF(31) = '0' and FB_ADR(19 downto 5) = x"1" else -- FFF0'0020-FFF0'003F + '0' when ACP_CONF(31) = '1' and FB_ADR(19 downto 5) = x"3" else '1'; -- FFFO'0060-FFF0'007F +nIDE_CS0 <= '0' when ACP_CONF(30) = '0' and FB_ADR(19 downto 5) = x"2" else -- FFF0'0040-FFF0'005F + '0' when ACP_CONF(30) = '1' and FB_ADR(19 downto 5) = x"0" else '1'; -- FFFO'0000-FFF0'001F +nIDE_CS1 <= '0' when ACP_CONF(30) = '0' and FB_ADR(19 downto 5) = x"3" else -- FFF0'0060-FFF0'007F + '0' when ACP_CONF(30) = '1' and FB_ADR(19 downto 5) = x"1" else '1'; -- FFFO'0020-FFF0'003F +----------------------------------------------------------------------------------------------------------------------------------------- +-- ACSI, SCSI UND FLOPPY WD1772 +------------------------------------------------------------------------------------------------------------------------------------------- +-- daten read fifo + RDF: dcfifo0 + port map( + aclr => CLR_FIFO, + data => RDF_DIN, + rdclk => MAIN_CLK, + rdreq => RDF_RDE, + wrclk => FDC_CLK, + wrreq => RDF_WRE, + q => RDF_DOUT, + wrusedw => RDF_AZ + ); +FCF_CS <= '1' when nFB_CS2 = '0' and FB_ADR(26 downto 0) = x"0020110" and LONG = '1' else '0'; -- F002'0110 LONG ONLY +FCF_APH <= '1' when FB_ALE = '1' and FB_AD(31 downto 0) = x"F0020110" and LONG = '1' else '0'; -- ADRESSPHASE F0020110 LONG ONLY +RDF_RDE <= '1' when FCF_APH = '1' and nFB_WR = '1' else '0'; -- AKTIVIEREN IN ADRESSPHASE +FB_AD <= RDF_DOUT(7 downto 0) & RDF_DOUT(15 downto 8) & RDF_DOUT(23 downto 16) & RDF_DOUT(31 downto 24) when FCF_CS = '1' and nFB_OE = '0' else "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"; +RDF_DIN <= CD_OUT_FDC when DMA_MODUS(7) = '1' else SCSI_DOUT; +-- daten write fifo + WRF: dcfifo1 + port map( + aclr => CLR_FIFO, + data => FB_AD(7 downto 0) & FB_AD(15 downto 8) & FB_AD(23 downto 16) & FB_AD(31 downto 24), + rdclk => FDC_CLK, + rdreq => WRF_RDE, + wrclk => MAIN_CLK, + wrreq => WRF_WRE, + q => WRF_DOUT, + rdusedw => WRF_AZ + ); +CD_IN_FDC <= WRF_DOUT when DMA_ACTIV = '1' and DMA_MODUS(8) = '1' else FB_AD(23 downto 16); -- BEI DMA WRITE <-FIFO SONST <-FB +DMA_AZ_CS <= '1' when nFB_CS2 = '0' and FB_ADR(26 downto 0) = x"002010C" else '0'; -- F002'010C LONG +FB_AD <= DMA_DRQ_Q & DMA_DRQ_REG & IDE_INT & FDINT & SCSI_INT & RDF_AZ & "0" & DMA_STATUS & "00" & WRF_AZ when DMA_AZ_CS = '1' and nFB_OE = '0' else "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"; +DMA_DRQ_Q <= '1' when DMA_DRQ_REG = "11" and DMA_MODUS(6) = '0' else '0'; +-- FIFO WRITE: GENAU 1 MAIN_CLK ------------------------------------------------------------------------- + process(MAIN_CLK, nRSTO, WRF_WRE, nFB_WR, FCF_APH) + begin + if nRSTO = '0' THEN + WRF_WRE <= '0'; + elsif rising_edge(MAIN_CLK) then + IF FCF_APH = '1' and nFB_WR = '0' then + WRF_WRE <= '1'; + else + WRF_WRE <= '0'; + end if; + else + WRF_WRE <= WRF_WRE; + end if; + END PROCESS; + +FCF_REG: process(nRSTO, FDC_CLK, FCF_STATE, NEXT_FCF_STATE, DMA_ACTIV) + begin + if nRSTO = '0' then + FCF_STATE <= FCF_IDLE; + DMA_ACTIV <= '0'; + elsif rising_edge(FDC_CLK) then + FCF_STATE <= NEXT_FCF_STATE; -- go to next + DMA_ACTIV <= DMA_ACTIV_NEW; + else + FCF_STATE <= FCF_STATE; -- halten + DMA_ACTIV <= DMA_ACTIV; + end if; + end process FCF_REG; + +FDC_REG: process(nRSTO, FDC_CLK, FDC_OUT, FDCS_In, CD_OUT_FDC) + begin + if nRSTO = '0' then + FDC_OUT <= x"00"; + elsif rising_edge(FDC_CLK) and FDCS_In = '0' then + FDC_OUT <= CD_OUT_FDC; -- set + else + FDC_OUT <= FDC_OUT; -- halten + end if; + end process FDC_REG; + +DMA_REQ <= '1' when ((DMA_DRQ_I = '1' and DMA_MODUS(7) = '1') or (SCSI_DRQ = '1' and DMA_MODUS(7) = '0')) and DMA_STATUS(1) = '1' and DMA_MODUS(6) = '0' and CLR_FIFO = '0' else '0'; +FDC_CS <= '1' when DMA_DATEN_CS = '1' and DMA_MODUS(4 downto 3) = "00" and FB_B1 = '1' else '0'; +SCSI_CS <= '1' when DMA_DATEN_CS = '1' and DMA_MODUS(4 downto 3) = "01" and FB_B1 = '1' else '0'; + + FCF_DECODER: process(FCF_STATE, NEXT_FCF_STATE, DMA_REQ,FDC_CS, RDF_WRE, WRF_RDE, SCSI_DRQ, nSCSI_DACK, DMA_MODUS, DMA_ACTIV, FDCS_In,SCSI_CS, SCSI_CSn) + begin + case FCF_STATE is + when FCF_IDLE => + SCSI_CSn <= '1'; + FDCS_In <= '1'; + RDF_WRE <= '0'; + WRF_RDE <= '0'; + nSCSI_DACK <= '1'; + if DMA_REQ = '1' or FDC_CS = '1' or SCSI_CS = '1' then + DMA_ACTIV_NEW <= DMA_REQ; + NEXT_FCF_STATE <= FCF_T0; + else + DMA_ACTIV_NEW <= '0'; + NEXT_FCF_STATE <= FCF_IDLE; + end if; + when FCF_T0 => + SCSI_CSn <= '1'; + FDCS_In <= '1'; + RDF_WRE <= '0'; + nSCSI_DACK <= '1'; + DMA_ACTIV_NEW <= DMA_REQ; + WRF_RDE <= DMA_MODUS(8) and DMA_REQ; -- WRITE -> READ FROM FIFO + if DMA_REQ = '0' and DMA_ACTIV = '1' THEN -- spike? + NEXT_FCF_STATE <= FCF_IDLE; -- ja -> zum start + else + NEXT_FCF_STATE <= FCF_T1; + end if; + when FCF_T1 => + RDF_WRE <= '0'; + WRF_RDE <= '0'; + DMA_ACTIV_NEW <= DMA_ACTIV; + SCSI_CSn <= not SCSI_CS; + FDCS_In <= DMA_MODUS(4) or DMA_MODUS(3); + nSCSI_DACK <= DMA_MODUS(7) and DMA_ACTIV; + NEXT_FCF_STATE <= FCF_T2; + when FCF_T2 => + RDF_WRE <= '0'; + WRF_RDE <= '0'; + DMA_ACTIV_NEW <= DMA_ACTIV; + SCSI_CSn <= not SCSI_CS; + FDCS_In <= DMA_MODUS(4) or DMA_MODUS(3); + nSCSI_DACK <= DMA_MODUS(7) and DMA_ACTIV; + NEXT_FCF_STATE <= FCF_T3; + when FCF_T3 => + RDF_WRE <= '0'; + WRF_RDE <= '0'; + DMA_ACTIV_NEW <= DMA_ACTIV; + SCSI_CSn <= not SCSI_CS; + FDCS_In <= DMA_MODUS(4) or DMA_MODUS(3); + nSCSI_DACK <= DMA_MODUS(7) and DMA_ACTIV; + NEXT_FCF_STATE <= FCF_T6; + when FCF_T6 => + WRF_RDE <= '0'; + DMA_ACTIV_NEW <= DMA_ACTIV; + SCSI_CSn <= not SCSI_CS; + FDCS_In <= DMA_MODUS(4) or DMA_MODUS(3); + nSCSI_DACK <= DMA_MODUS(7) and DMA_ACTIV; + RDF_WRE <= not DMA_MODUS(8) and DMA_ACTIV; -- READ -> WRITE IN FIFO + NEXT_FCF_STATE <= FCF_T7; + when FCF_T7 => + SCSI_CSn <= '1'; + FDCS_In <= '1'; + RDF_WRE <= '0'; + WRF_RDE <= '0'; + nSCSI_DACK <= '1'; + DMA_ACTIV_NEW <= '0'; + if FDC_CS = '1' and DMA_REQ = '0' then + NEXT_FCF_STATE <= FCF_T7; + else + NEXT_FCF_STATE <= FCF_IDLE; + end if; + end case; + end process FCF_DECODER; + + I_FDC: WF1772IP_TOP_SOC + port map( + CLK => FDC_CLK, + RESETn => nRSTO, + CSn => FDCS_In, + RWn => nFDC_WR, + A1 => CA2, + A0 => CA1, + DATA_IN => CD_IN_FDC, + DATA_OUT => CD_OUT_FDC, +-- DATA_EN => CD_EN_FDC, + RDn => nRD_DATA, + TR00n => TRACK00, + IPn => nINDEX, + WPRTn => nWP, + DDEn => '0', -- Fixed to MFM. + HDTYPE => HD_DD_OUT, + MO => MOT_ON, + WG => WR_GATE, + WD => WR_DATA, + STEP => STEP, + DIRC => STEP_DIR, + DRQ => DMA_DRQ_I, + INTRQ => FDINT + ); +DMA_DATEN_CS <= '1' when nFB_CS1 = '0' and FB_ADR(19 downto 1) = x"7C302" else '0'; -- F8604/2 +DMA_MODUS_CS <= '1' when nFB_CS1 = '0' and FB_ADR(19 downto 1) = x"7C303" else '0'; -- F8606/2 +WDC_BSL_CS <= '1' when nFB_CS1 = '0' and FB_ADR(19 downto 1) = x"7C307" else '0'; -- F860E/2 +HD_DD_OUT <= HD_DD WHEN ACP_CONF(29) = '0' ELSE WDC_BSL(0); +nFDC_WR <= (not DMA_MODUS(8)) when DMA_ACTIV = '1' else nFB_WR; +CA0 <= '1' when DMA_ACTIV = '1' ELSE DMA_MODUS(0); +CA1 <= '1' when DMA_ACTIV = '1' ELSE DMA_MODUS(1); +CA2 <= '1' when DMA_ACTIV = '1' ELSE DMA_MODUS(2); +FB_AD(23 downto 16) <= "0000" & (not DMA_STATUS(1)) & "0" & WDC_BSL(1) & HD_DD when WDC_BSL_CS = '1' and nFB_OE = '0' else "ZZZZZZZZ"; +FB_AD(31 downto 24) <= "00000000" when DMA_DATEN_CS = '1' and nFB_OE = '0' else "ZZZZZZZZ"; +FB_AD(23 downto 16) <= FDC_OUT when DMA_DATEN_CS = '1' and DMA_MODUS(4 downto 3) = "00" and nFB_OE = '0' else + SCSI_DOUT when DMA_DATEN_CS = '1' and DMA_MODUS(4 downto 3) = "01" and nFB_OE = '0' else + DMA_BYT_CNT(16 downto 9) when DMA_DATEN_CS = '1' and DMA_MODUS(4) = '1' and nFB_OE = '0' else "ZZZZZZZZ"; +--- WDC BSL REGISTER ------------------------------------------------------- + process(MAIN_CLK, nRSTO, WDC_BSL_CS, WDC_BSL, nFB_WR, FB_B0, FB_B1) + begin + if nRSTO = '0' THEN + WDC_BSL <= "00"; + elsif rising_edge(MAIN_CLK) and WDC_BSL_CS = '1' and nFB_WR = '0' then + IF FB_B0 = '1' THEN + WDC_BSL(1 DOWNTO 0) <= FB_AD(25 DOWNTO 24); + else + WDC_BSL(1 DOWNTO 0) <= WDC_BSL(1 DOWNTO 0); + end if; + end if; + END PROCESS; +--- DMA MODUS REGISTER ------------------------------------------------------- + process(MAIN_CLK, nRSTO, DMA_MODUS_CS, DMA_MODUS, nFB_WR, FB_B0, FB_B1) + begin + if nRSTO = '0' THEN + DMA_MODUS <= x"0000"; + elsif rising_edge(MAIN_CLK) and DMA_MODUS_CS = '1' and nFB_WR = '0' then + IF FB_B0 = '1' THEN + DMA_MODUS(15 downto 8) <= FB_AD(31 downto 24); + else + DMA_MODUS(15 downto 8) <= DMA_MODUS(15 downto 8); + end if; + IF FB_B1 = '1' THEN + DMA_MODUS(7 downto 0) <= FB_AD(23 downto 16); + else + DMA_MODUS(7 downto 0) <= DMA_MODUS(7 downto 0); + end if; + else + DMA_MODUS <= DMA_MODUS; + end if; + END PROCESS; +-- BYT COUNTER, SECTOR COUNTER ---------------------------------------------------- + process(MAIN_CLK, nRSTO, DMA_DATEN_CS, DMA_BYT_CNT_CS, DMA_BYT_CNT, nFB_WR, FB_B0, FB_B1, DMA_MODUS, CLR_FIFO) + begin + if nRSTO = '0' or CLR_FIFO = '1' THEN + DMA_BYT_CNT <= x"00000000"; + elsif rising_edge(MAIN_CLK) and nFB_WR = '0' and DMA_DATEN_CS = '1' and nFB_WR = '0' and DMA_MODUS(4) = '1' and FB_B1 = '1' then + DMA_BYT_CNT(31 downto 17) <= "000000000000000"; + DMA_BYT_CNT(16 downto 9) <= FB_AD(23 downto 16); + DMA_BYT_CNT(8 downto 0) <= "000000000"; + elsif rising_edge(MAIN_CLK) and nFB_WR = '0' and DMA_BYT_CNT_CS = '1' then + DMA_BYT_CNT <= FB_AD; + else + DMA_BYT_CNT <= DMA_BYT_CNT; + end if; + END PROCESS; +-------------------------------------------------------------------- +FB_AD(31 downto 16) <= "0000000000000" & DMA_STATUS when DMA_MODUS_CS = '1' and nFB_OE = '0' else "ZZZZZZZZZZZZZZZZ"; +DMA_STATUS(0) <= '1'; -- DMA OK +DMA_STATUS(1) <= '1' when DMA_BYT_CNT /= 0 and DMA_BYT_CNT(31) = '0' else '0'; -- WENN byts UND NICHT MINUS +DMA_STATUS(2) <= '0' when DMA_DRQ_I = '1' or SCSI_DRQ = '1' else '0'; +DMA_DRQQ <= '1' when DMA_STATUS(1) = '1' and DMA_MODUS(8) = '0' and RDF_AZ > 15 and DMA_MODUS(6) = '0' else + '1' when DMA_STATUS(1) = '1' and DMA_MODUS(8) = '1' and WRF_AZ < 512 and DMA_MODUS(6) = '0' else '0'; +DMA_DRQ <= '1' when DMA_DRQ_REG = "11" and DMA_MODUS(6) = '0' else '0'; +-- DMA REQUEST: SPIKES AUSFILTERN ------------------------------------------ + process(FDC_CLK, nRSTO, DMA_DRQ_REG) + begin + if nRSTO = '0' THEN + DMA_DRQ_REG <= "00"; + elsif rising_edge(FDC_CLK) then + DMA_DRQ_REG(0) <= DMA_DRQQ; + DMA_DRQ_REG(1) <= DMA_DRQ_REG(0) and DMA_DRQQ; + else + DMA_DRQ_REG <= DMA_DRQ_REG; + end if; + END PROCESS; +-- DMA ADRESSE ------------------------------------------------------ + process(MAIN_CLK, nRSTO, DMA_TOP_CS, DMA_TOP, nFB_WR, DMA_ADR_CS) + begin + if nRSTO = '0' THEN + DMA_TOP <= x"00"; + elsif rising_edge(MAIN_CLK) and nFB_WR = '0' and (DMA_TOP_CS = '1' or DMA_ADR_CS = '1') then + DMA_TOP <= FB_AD(31 downto 24); + else + DMA_TOP <= DMA_TOP; + end if; + END PROCESS; + process(MAIN_CLK, nRSTO, DMA_HIGH_CS, DMA_HIGH, nFB_WR, DMA_ADR_CS) + begin + if nRSTO = '0' THEN + DMA_HIGH <= x"00"; + elsif rising_edge(MAIN_CLK) and nFB_WR = '0' and (DMA_HIGH_CS = '1' or DMA_ADR_CS = '1') then + DMA_HIGH <= FB_AD(23 downto 16); + else + DMA_HIGH <= DMA_HIGH; + end if; + END PROCESS; + process(MAIN_CLK, nRSTO, DMA_MID_CS, DMA_MID, nFB_WR) + begin + DMA_MID <= DMA_MID; + if nRSTO = '0' THEN + DMA_MID <= x"00"; + elsif rising_edge(MAIN_CLK) and nFB_WR = '0' then + if DMA_MID_CS = '1' then + DMA_MID <= FB_AD(23 downto 16); + elsif DMA_ADR_CS = '1' then + DMA_MID <= FB_AD(15 downto 8); + end if; + end if; + END PROCESS; + process(MAIN_CLK, nRSTO, DMA_LOW_CS, DMA_LOW, nFB_WR) + begin + DMA_LOW <= DMA_LOW; + if nRSTO = '0' THEN + DMA_LOW <= x"00"; + elsif rising_edge(MAIN_CLK) and nFB_WR = '0' then + if DMA_LOW_CS = '1'then + DMA_LOW <= FB_AD(23 downto 16); + elsif DMA_ADR_CS = '1' then + DMA_LOW <= FB_AD(7 downto 0); + end if; + end if; + END PROCESS; +-------------------------------------------------------------------------------------------- +DMA_TOP_CS <= '1' when nFB_CS1 = '0' and FB_ADR(19 downto 1) = x"7C304" and FB_B0 = '1' else '0'; -- F8608/2 +DMA_HIGH_CS <= '1' when nFB_CS1 = '0' and FB_ADR(19 downto 1) = x"7C304" and FB_B1 = '1' else '0'; -- F8609/2 +DMA_MID_CS <= '1' when nFB_CS1 = '0' and FB_ADR(19 downto 1) = x"7C305" and FB_B1 = '1' else '0'; -- F860B/2 +DMA_LOW_CS <= '1' when nFB_CS1 = '0' and FB_ADR(19 downto 1) = x"7C306" and FB_B1 = '1' else '0'; -- F860D/2 +FB_AD(31 downto 24) <= DMA_TOP when DMA_TOP_CS = '1' and nFB_OE = '0' else "ZZZZZZZZ"; +FB_AD(23 downto 16) <= DMA_HIGH when DMA_HIGH_CS = '1' and nFB_OE = '0' else "ZZZZZZZZ"; +FB_AD(23 downto 16) <= DMA_MID when DMA_MID_CS = '1' and nFB_OE = '0' else "ZZZZZZZZ"; +FB_AD(23 downto 16) <= DMA_LOW when DMA_LOW_CS = '1' and nFB_OE = '0' else "ZZZZZZZZ"; +-- DIRECTZUGRIFF +DMA_DIRM_CS <= '1' when nFB_CS2 = '0' and FB_ADR(26 downto 0) = x"20100" else '0'; -- F002'0100 WORD +DMA_ADR_CS <= '1' when nFB_CS2 = '0' and FB_ADR(26 downto 0) = x"20104" else '0'; -- F002'0104 LONG +DMA_BYT_CNT_CS <= '1' when nFB_CS2 = '0' and FB_ADR(26 downto 0) = x"20108" else '0'; -- F002'0108 LONG +FB_AD <= DMA_TOP & DMA_HIGH & DMA_MID & DMA_LOW when DMA_ADR_CS = '1' and nFB_OE = '0' else "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"; +FB_AD(31 downto 16) <= DMA_MODUS when DMA_DIRM_CS = '1' and nFB_OE = '0' else "ZZZZZZZZZZZZZZZZ"; +FB_AD <= DMA_BYT_CNT when DMA_BYT_CNT_CS = '1' and nFB_OE = '0' else "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"; +-- DMA RW TOGGLE ------------------------------------------ + process(MAIN_CLK, nRSTO, DMA_MODUS_CS, DMA_MODUS, DMA_DIR_OLD) + begin + if nRSTO = '0' THEN + DMA_DIR_OLD <= '0'; + elsif rising_edge(MAIN_CLK) and DMA_MODUS_CS = '0' then + DMA_DIR_OLD <= DMA_MODUS(8); + else + DMA_DIR_OLD <= DMA_DIR_OLD; + end if; + END PROCESS; +CLR_FIFO <= DMA_MODUS(8) xor DMA_DIR_OLD; +-- SCSI ---------------------------------------------------------------------------------- + I_SCSI: WF5380_TOP_SOC + port map( + CLK => FDC_CLK, + RESETn => nRSTO, + ADR => CA2 & CA1 & CA0, + DATA_IN => CD_IN_FDC, + DATA_OUT => SCSI_DOUT, + --DATA_EN : out bit; + -- Bus and DMA controls: + CSn => '1', --SCSI_CSn, ABGESCHALTET + RDn => (not nFDC_WR) or (not SCSI_CS), + WRn => nFDC_WR or (not SCSI_CS), + EOPn => '1', + DACKn => nSCSI_DACK, + DRQ => SCSI_DRQ, + INT => SCSI_INT, +-- READY => + -- SCSI bus: + DB_INn => SCSI_D, + DB_OUTn => DB_OUTn, + DB_EN => DB_EN, + DBP_INn => SCSI_PAR, + DBP_OUTn => DBP_OUTn, + DBP_EN => DBP_EN, -- wenn 1 dann output + RST_INn => nSCSI_RST, + RST_OUTn => RST_OUTn, + RST_EN => RST_EN, + BSY_INn => nSCSI_BUSY, + BSY_OUTn => BSY_OUTn, + BSY_EN => BSY_EN, + SEL_INn => nSCSI_SEL, + SEL_OUTn => SEL_OUTn, + SEL_EN => SEL_EN, + ACK_INn => '1', + ACK_OUTn => nSCSI_ACK, +-- ACK_EN => ACK_EN, + ATN_INn => '1', + ATN_OUTn => nSCSI_ATN, +-- ATN_EN => ATN_EN, + REQ_INn => nSCSI_DRQ, +-- REQ_OUTn => REQ_OUTn, +-- REQ_EN => REQ_EN, + IOn_IN => nSCSI_I_O, +-- IOn_OUT => IOn_OUT, +-- IO_EN => IO_EN, + CDn_IN => nSCSI_C_D, +-- CDn_OUT => CDn_OUT, +-- CD_EN => CD_EN, + MSG_INn => nSCSI_MSG +-- MSG_OUTn => MSG_OUTn, +-- MSG_EN => MSG_EN + ); +-- SCSI ACSI --------------------------------------------------------------- +SCSI_D <= DB_OUTn when DB_EN = '1' else "ZZZZZZZZ"; +SCSI_DIR <= '1'; --'0' when DB_EN = '1' else '1'; --ABGESCHALTET +SCSI_PAR <= DBP_OUTn when DBP_EN = '1' else 'Z'; +nSCSI_RST <= RST_OUTn when RST_EN = '1' else 'Z'; +nSCSI_BUSY <= BSY_OUTn when BSY_EN = '1' else 'Z'; +nSCSI_SEL <= SEL_OUTn when SEL_EN = '1' else 'Z'; +ACSI_DIR <= '0'; +ACSI_D <= "ZZZZZZZZ"; +nACSI_CS <= '1'; +ACSI_A1 <= CA1; +nACSI_RESET <= nRSTO; +nACSI_ACK <= '1'; +---------------------------------------------------------------------------- +-- ROM-PORT TA KOMMT FROM DEFAULT TA = 16 BUSCYCLEN = 500ns +---------------------------------------------------------------------------- +ROM_CS <= '1' when nFB_CS1 = '0' and nFB_WR = '1' and FB_ADR(19 downto 17) = x"5" else '0'; -- FFF A'0000/2'0000 +nROM4 <= '0' when ROM_CS = '1' and FB_ADR(16) = '0' else '1'; +nROM3 <= '0' when ROM_CS = '1' and FB_ADR(16) = '1' else '1'; +---------------------------------------------------------------------------- +-- ACIA KEYBOARD +---------------------------------------------------------------------------- + I_ACIA_KEYBOARD: WF6850IP_TOP_SOC + port map( + CLK => MAIN_CLK, + RESETn => nRSTO, + + CS2n => FB_ADR(2), + CS1 => '1', + CS0 => ACIA_CS_I, + E => ACIA_CS_I, + RWn => nFB_WR, + RS => FB_ADR(1), + + DATA_IN => FB_AD(31 downto 24), + DATA_OUT => DATA_OUT_ACIA_I, +-- DATA_EN => DATA_EN_ACIA_I, + + TXCLK => CLK500k, + RXCLK => CLK500k, + RXDATA => KEYB_RxD, + + CTSn => '0', + DCDn => '0', + + IRQn => IRQ_KEYBDn, + TXDATA => AMKB_TX + --RTSn => -- Not used. + ); +ACIA_CS_I <= '1' when nFB_CS1 = '0'and FB_ADR(19 downto 3) = x"1FF80" else '0'; -- FFC00-FFC07 FFC00/8 +KEYB_RxD <= '1' when AMKB_REG(3) = '1' or PIC_AMKB_RX = '0' else '0'; -- TASTATUR DATEN VOM PIC(PS2) OR NORMAL +FB_AD(31 downto 24) <= DATA_OUT_ACIA_I when ACIA_CS_I = '1' and FB_ADR(2) = '0' and nFB_OE = '0' else "ZZZZZZZZ"; +-- AMKB_TX: SPIKES AUSFILTERN ------------------------------------------ + process(CLK2M, AMKB_RX, AMKB_REG) + begin + if rising_edge(CLK2M) then + IF AMKB_RX = '0' THEN + IF AMKB_REG < 16 THEN + AMKB_REG <= "00000"; + ELSE + AMKB_REG <= AMKB_REG - 1; + END IF; + ELSE + IF AMKB_REG > 15 THEN + AMKB_REG <= "11111"; + ELSE + AMKB_REG <= AMKB_REG + 1; + END IF; + END IF; + ELSE + AMKB_REG <= AMKB_REG; + end if; + END PROCESS; +---------------------------------------------------------------------------- +-- ACIA MIDI +---------------------------------------------------------------------------- + I_ACIA_MIDI: WF6850IP_TOP_SOC + port map( + CLK => MAIN_CLK, + RESETn => nRSTO, + + CS2n => '0', + CS1 => FB_ADR(2), + CS0 => ACIA_CS_I, + E => ACIA_CS_I, + RWn => nFB_WR, + RS => FB_ADR(1), + + DATA_IN => FB_AD(31 downto 24), + DATA_OUT => DATA_OUT_ACIA_II, +-- DATA_EN => DATA_EN_ACIA_II, + + TXCLK => CLK500k, + RXCLK => CLK500k, + RXDATA => MIDI_IN, + CTSn => '0', + DCDn => '0', + + IRQn => IRQ_MIDIn, + TXDATA => MIDI_OUT + --RTSn => -- Not used. + ); +MIDI_TLR <= MIDI_OUT; +MIDI_OLR <= MIDI_OUT; +FB_AD(31 downto 24) <= DATA_OUT_ACIA_II when ACIA_CS_I = '1' and FB_ADR(2) = '1' and nFB_OE = '0' else "ZZZZZZZZ"; +---------------------------------------------------------------------------- +-- MFP +---------------------------------------------------------------------------- + I_MFP: WF68901IP_TOP_SOC + port map( + -- System control: + CLK => MAIN_CLK, + RESETn => nRSTO, + -- Asynchronous bus control: + DSn => not LDS, + CSn => not MFP_CS, + RWn => nFB_WR, + DTACKn => DTACK_OUT_MFPn, + -- Data and Adresses: + RS => FB_ADR(5 downto 1), + DATA_IN => FB_AD(23 downto 16), + DATA_OUT => DATA_OUT_MFP, +-- DATA_EN => DATA_EN_MFP, + GPIP_IN(7) => not DMA_DRQ_Q, + GPIP_IN(6) => not RI, + GPIP_IN(5) => DINTn, + GPIP_IN(4) => IRQ_ACIAn, + GPIP_IN(3) => DSP_INT, + GPIP_IN(2) => not CTS, + GPIP_IN(1) => not DCD, + GPIP_IN(0) => LP_BUSY, + -- GPIP_OUT =>, -- Not used; all GPIPs are direction input. + -- GPIP_EN =>, -- Not used; all GPIPs are direction input. + -- Interrupt control: + IACKn => not MFP_INTACK, + IEIn => '0', + -- IEOn =>, -- Not used. + IRQn => nMFP_INT, + -- Timers and timer control: + XTAL1 => CLK2M4576, + TAI => '0', + TBI => nBLANK, + -- TAO =>, + -- TBO =>, + -- TCO =>, + TDO => TDO, + -- Serial I/O control: + RC => TDO, + TC => TDO, + SI => RxD, + SO => TxD + -- SO_EN => MFP_SO_EN + -- DMA control: + -- RRn =>, + -- TRn => + ); + +MFP_CS <= '1' when nFB_CS1 = '0' and FB_ADR(19 downto 6) = x"3FE8" else '0'; -- FFA00/40 +MFP_INTACK <= '1' when nFB_CS2 = '0' and FB_ADR(26 downto 0) = x"20000" else '0'; --F002'0000 +LDS <= '1' when MFP_CS = '1' or MFP_INTACK = '1' else '0'; +FB_AD(23 downto 16) <= DATA_OUT_MFP when MFP_CS = '1' and nFB_OE = '0' else "ZZZZZZZZ"; +FB_AD(31 downto 10) <= "0000000000000000000000" when MFP_INTACK = '1' and nFB_OE = '0' else "ZZZZZZZZZZZZZZZZZZZZZZ"; +FB_AD(9 downto 2) <= DATA_OUT_MFP when MFP_INTACK = '1' and nFB_OE = '0' else "ZZZZZZZZ"; +FB_AD(1 downto 0) <= "00" when MFP_INTACK = '1' and nFB_OE = '0' else "ZZ"; +DINTn <= '0' when IDE_INT = '1' AND ACP_CONFIG[28] = '1' else + '0' when FDINT = '1' else + '0' when SCSI_INT = '1' AND ACP_CONFIG[28] = '1' else '1'; +-- TASTATUR UND KEYBOARD INTERRUPT: SPIKES AUSFILTERN ------------------------------------------ + process(MAIN_CLK,nRSTO,IRQ_ACIAn,IRQ_KEYBDn,IRQ_MIDIn) + begin + if nRSTO = '0' THEN + IRQ_ACIAn <= '1'; + elsif rising_edge(MAIN_CLK) then + IRQ_ACIAn <= IRQ_KEYBDn and IRQ_MIDIn; + else + IRQ_ACIAn <= IRQ_ACIAn; + end if; + END PROCESS; +---------------------------------------------------------------------------- +-- Sound +---------------------------------------------------------------------------- + I_SOUND: WF2149IP_TOP_SOC + port map( + SYS_CLK => MAIN_CLK, + RESETn => nRSTO, + + WAV_CLK => CLK2M, + SELn => '1', + + BDIR => SNDIR_I, + BC2 => '1', + BC1 => SNDCS_I, + + A9n => '0', + A8 => '1', + DA_IN => FB_AD(31 downto 24), + DA_OUT => DA_OUT_X, + + IO_A_IN => x"00", -- All port pins are dedicated outputs. + IO_A_OUT(7) => nnIDE_RES, + IO_A_OUT(6) => LP_DIR_X, + IO_A_OUT(5) => LP_STR, + IO_A_OUT(4) => DTR, + IO_A_OUT(3) => RTS, +-- IO_A_OUT(2) => FDD_D1SEL, + IO_A_OUT(1) => DSA_D, + IO_A_OUT(0) => nSDSEL, + -- IO_A_EN =>, -- Not required. + IO_B_IN => LP_D, + IO_B_OUT => LP_D_X, + -- IO_B_EN => IO_B_EN, + + OUT_A => YM_QA, + OUT_B => YM_QB, + OUT_C => YM_QC + ); + +SNDCS <= '1' when nFB_CS1 = '0' and FB_ADR(19 downto 2) = x"3E200" else '0'; -- 8800-8803 F8800/4 +SNDCS_I <= '1' when SNDCS = '1' and FB_ADR (1 downto 1) = "0" else '0'; +SNDIR_I <= '1' when SNDCS = '1' and nFB_WR = '0' else '0'; +FB_AD(31 downto 24) <= DA_OUT_X when SNDCS_I = '1' and nFB_OE = '0' else "ZZZZZZZZ"; +LP_D <= LP_D_X when LP_DIR_X = '0' else "ZZZZZZZZ"; +LP_DIR <= LP_DIR_X; + +END FalconIO_SDCard_IDE_CF_architecture; diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF_pgk.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF_pgk.vhd new file mode 100644 index 0000000..edef447 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF_pgk.vhd @@ -0,0 +1,406 @@ +---------------------------------------------------------------------- +---- ---- +---- Atari Coldfire IP Core ---- +---- ---- +---- This file is part of the Atari Coldfire project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- ---- +---- ---- +---- ---- +---- ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2009 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- 1.0 Initial Release, 20090925. +-- + +library ieee; +use ieee.std_logic_1164.all; + +package FalconIO_SDCard_IDE_CF_PKG is + component WF25915IP_TOP_V1_SOC -- GLUE. + port ( + -- Clock system: + GL_CLK : in std_logic; -- Originally 8MHz. + GL_CLK_016 : in std_logic; -- One sixteenth of GL_CLK. + + -- Core address select: + GL_ROMSEL_FC_E0n : in std_logic; + EN_RAM_14MB : in std_logic; + -- Adress decoder outputs: + GL_ROM_6n : out std_logic; -- STE. + GL_ROM_5n : out std_logic; -- STE. + GL_ROM_4n : out std_logic; -- ST. + GL_ROM_3n : out std_logic; -- ST. + GL_ROM_2n : out std_logic; + GL_ROM_1n : out std_logic; + GL_ROM_0n : out std_logic; + + GL_ACIACS : out std_logic; + GL_MFPCSn : out std_logic; + GL_SNDCSn : out std_logic; + GL_FCSn : out std_logic; + + GL_STE_SNDCS : out std_logic; -- STE: Sound chip select. + GL_STE_SNDIR : out std_logic; -- STE: Data flow direction control. + + GL_STE_RTCCSn : out std_logic; --STE only. + GL_STE_RTC_WRn : out std_logic; --STE only. + GL_STE_RTC_RDn : out std_logic; --STE only. + + -- 6800 peripheral control, + GL_VPAn : out std_logic; + GL_VMAn : in std_logic; + + GL_DMA_SYNC : in std_logic; + GL_DEVn : out std_logic; + GL_RAMn : out std_logic; + GL_DMAn : out std_logic; + + -- Interrupt system: + -- Comment out GL_AVECn for CPUs which do not provide the VMAn signal. + GL_AVECn : out std_logic; + GL_STE_FDINT : in std_logic; -- Floppy disk interrupt; STE only. + GL_STE_HDINTn : in std_logic; -- Hard disk interrupt; STE only. + GL_MFPINTn : in std_logic; -- ST. + GL_STE_EINT3n : in std_logic; --STE only. + GL_STE_EINT5n : in std_logic; --STE only. + GL_STE_EINT7n : in std_logic; --STE only. + GL_STE_DINTn : out std_logic; -- Disk interrupt (floppy or hard disk); STE only. + GL_IACKn : out std_logic; -- ST. + GL_STE_IPL2n : out std_logic; --STE only. + GL_STE_IPL1n : out std_logic; --STE only. + GL_STE_IPL0n : out std_logic; --STE only. + + -- Video timing: + GL_BLANKn : out std_logic; + GL_DE : out std_logic; + GL_MULTISYNC : in std_logic_vector(3 downto 2); + GL_VIDEO_HIMODE : out std_logic; + GL_HSYNC_INn : in std_logic; + GL_HSYNC_OUTn : out std_logic; + GL_VSYNC_INn : in std_logic; + GL_VSYNC_OUTn : out std_logic; + GL_SYNC_OUT_EN : out std_logic; + + -- Bus arstd_logicration control: + GL_RDY_INn : in std_logic; + GL_RDY_OUTn : out std_logic; + GL_BRn : out std_logic; + GL_BGIn : in std_logic; + GL_BGOn : out std_logic; + GL_BGACK_INn : in std_logic; + GL_BGACK_OUTn : out std_logic; + + -- Adress and data bus: + GL_ADDRESS : in std_logic_vector(23 downto 1); + -- ST: put the data bus to 1 downto 0. + -- STE: put the data out bus to 15 downto 0. + GL_DATA_IN : in std_logic_vector(7 downto 0); + GL_DATA_OUT : out std_logic_vector(15 downto 0); + GL_DATA_EN : out std_logic; + + -- Asynchronous bus control: + GL_RWn_IN : in std_logic; + GL_RWn_OUT : out std_logic; + GL_AS_INn : in std_logic; + GL_AS_OUTn : out std_logic; + GL_UDS_INn : in std_logic; + GL_UDS_OUTn : out std_logic; + GL_LDS_INn : in std_logic; + GL_LDS_OUTn : out std_logic; + GL_DTACK_INn : in std_logic; + GL_DTACK_OUTn : out std_logic; + GL_CTRL_EN : out std_logic; + + -- System control: + GL_RESETn : in std_logic; + GL_BERRn : out std_logic; + + -- Processor function codes: + GL_FC : in std_logic_vector(2 downto 0); + + -- STE enhancements: + GL_STE_FDDS : out std_logic; -- Floppy type select (HD or DD). + GL_STE_FCCLK : out std_logic; -- Floppy controller clock select. + GL_STE_JOY_RHn : out std_logic; -- Read only FF9202 high byte. + GL_STE_JOY_RLn : out std_logic; -- Read only FF9202 low byte. + GL_STE_JOY_WL : out std_logic; -- Write only FF9202 low byte. + GL_STE_JOY_WEn : out std_logic; -- Write only FF9202 output enable. + GL_STE_BUTTONn : out std_logic; -- Read only FF9000 low byte. + GL_STE_PAD0Xn : in std_logic; -- Counter input for the Paddle 0X. + GL_STE_PAD0Yn : in std_logic; -- Counter input for the Paddle 0Y. + GL_STE_PAD1Xn : in std_logic; -- Counter input for the Paddle 1X. + GL_STE_PAD1Yn : in std_logic; -- Counter input for the Paddle 1Y. + GL_STE_PADRSTn : out std_logic; -- Paddle monoflops reset. + GL_STE_PENn : in std_logic; -- Input of the light pen. + GL_STE_SCCn : out std_logic; -- Select signal for the STE or TT SCC chip. + GL_STE_CPROGn : out std_logic -- Select signal for the STE's cache processor. + ); + end component WF25915IP_TOP_V1_SOC; + + component WF5380_TOP_SOC + port ( + CLK : in std_logic; + RESETn : in std_logic; + ADR : in std_logic_vector(2 downto 0); + DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); + DATA_EN : out std_logic; + CSn : in std_logic; + RDn : in std_logic; + WRn : in std_logic; + EOPn : in std_logic; + DACKn : in std_logic; + DRQ : out std_logic; + INT : out std_logic; + READY : out std_logic; + DB_INn : in std_logic_vector(7 downto 0); + DB_OUTn : out std_logic_vector(7 downto 0); + DB_EN : out std_logic; + DBP_INn : in std_logic; + DBP_OUTn : out std_logic; + DBP_EN : out std_logic; + RST_INn : in std_logic; + RST_OUTn : out std_logic; + RST_EN : out std_logic; + BSY_INn : in std_logic; + BSY_OUTn : out std_logic; + BSY_EN : out std_logic; + SEL_INn : in std_logic; + SEL_OUTn : out std_logic; + SEL_EN : out std_logic; + ACK_INn : in std_logic; + ACK_OUTn : out std_logic; + ACK_EN : out std_logic; + ATN_INn : in std_logic; + ATN_OUTn : out std_logic; + ATN_EN : out std_logic; + REQ_INn : in std_logic; + REQ_OUTn : out std_logic; + REQ_EN : out std_logic; + IOn_IN : in std_logic; + IOn_OUT : out std_logic; + IO_EN : out std_logic; + CDn_IN : in std_logic; + CDn_OUT : out std_logic; + CD_EN : out std_logic; + MSG_INn : in std_logic; + MSG_OUTn : out std_logic; + MSG_EN : out std_logic + ); + end component WF5380_TOP_SOC; + + component WF1772IP_TOP_SOC -- FDC. + port ( + CLK : in std_logic; -- 16MHz clock! + RESETn : in std_logic; + CSn : in std_logic; + RWn : in std_logic; + A1, A0 : in std_logic; + DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); + DATA_EN : out std_logic; + RDn : in std_logic; + TR00n : in std_logic; + IPn : in std_logic; + WPRTn : in std_logic; + DDEn : in std_logic; + HDTYPE : in std_logic; -- '0' = DD disks, '1' = HD disks. + MO : out std_logic; + WG : out std_logic; + WD : out std_logic; + STEP : out std_logic; + DIRC : out std_logic; + DRQ : out std_logic; + INTRQ : out std_logic + ); + end component WF1772IP_TOP_SOC; + + component WF68901IP_TOP_SOC -- MFP. + port ( -- System control: + CLK : in std_logic; + RESETn : in std_logic; + + -- Asynchronous bus control: + DSn : in std_logic; + CSn : in std_logic; + RWn : in std_logic; + DTACKn : out std_logic; + + -- Data and Adresses: + RS : in std_logic_vector(5 downto 1); + DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); + DATA_EN : out std_logic; + GPIP_IN : in std_logic_vector(7 downto 0); + GPIP_OUT : out std_logic_vector(7 downto 0); + GPIP_EN : out std_logic_vector(7 downto 0); + + -- Interrupt control: + IACKn : in std_logic; + IEIn : in std_logic; + IEOn : out std_logic; + IRQn : out std_logic; + + -- Timers and timer control: + XTAL1 : in std_logic; -- Use an oszillator instead of a quartz. + TAI : in std_logic; + TBI : in std_logic; + TAO : out std_logic; + TBO : out std_logic; + TCO : out std_logic; + TDO : out std_logic; + + -- Serial I/O control: + RC : in std_logic; + TC : in std_logic; + SI : in std_logic; + SO : out std_logic; + SO_EN : out std_logic; + + -- DMA control: + RRn : out std_logic; + TRn : out std_logic + ); + end component WF68901IP_TOP_SOC; + + component WF2149IP_TOP_SOC -- Sound. + port( + + SYS_CLK : in std_logic; -- Read the inforation in the header! + RESETn : in std_logic; + + WAV_CLK : in std_logic; -- Read the inforation in the header! + SELn : in std_logic; + + BDIR : in std_logic; + BC2, BC1 : in std_logic; + + A9n, A8 : in std_logic; + DA_IN : in std_logic_vector(7 downto 0); + DA_OUT : out std_logic_vector(7 downto 0); + DA_EN : out std_logic; + + IO_A_IN : in std_logic_vector(7 downto 0); + IO_A_OUT : out std_logic_vector(7 downto 0); + IO_A_EN : out std_logic; + IO_B_IN : in std_logic_vector(7 downto 0); + IO_B_OUT : out std_logic_vector(7 downto 0); + IO_B_EN : out std_logic; + + OUT_A : out std_logic; -- Analog (PWM) outputs. + OUT_B : out std_logic; + OUT_C : out std_logic + ); + end component WF2149IP_TOP_SOC; + + component WF6850IP_TOP_SOC -- ACIA. + port ( + CLK : in std_logic; + RESETn : in std_logic; + + CS2n, CS1, CS0 : in std_logic; + E : in std_logic; + RWn : in std_logic; + RS : in std_logic; + + DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); + DATA_EN : out std_logic; + + TXCLK : in std_logic; + RXCLK : in std_logic; + RXDATA : in std_logic; + CTSn : in std_logic; + DCDn : in std_logic; + + IRQn : out std_logic; + TXDATA : out std_logic; + RTSn : out std_logic + ); + end component WF6850IP_TOP_SOC; + + component WF_SD_CARD + port ( + RESETn : in std_logic; + CLK : in std_logic; + ACSI_A1 : in std_logic; + ACSI_CSn : in std_logic; + ACSI_ACKn : in std_logic; + ACSI_INTn : out std_logic; + ACSI_DRQn : out std_logic; + ACSI_D_IN : in std_logic_vector(7 downto 0); + ACSI_D_OUT : out std_logic_vector(7 downto 0); + ACSI_D_EN : out std_logic; + MC_DO : in std_logic; + MC_PIO_DMAn : in std_logic; + MC_RWn : in std_logic; + MC_CLR_CMD : in std_logic; + MC_DONE : out std_logic; + MC_GOT_CMD : out std_logic; + MC_D_IN : in std_logic_vector(7 downto 0); + MC_D_OUT : out std_logic_vector(7 downto 0); + MC_D_EN : out std_logic + ); + end component WF_SD_CARD; + + component dcfifo0 + PORT ( + aclr : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + rdclk : IN STD_LOGIC ; + rdreq : IN STD_LOGIC ; + wrclk : IN STD_LOGIC ; + wrreq : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (31 DOWNTO 0); + wrusedw : OUT STD_LOGIC_VECTOR (9 DOWNTO 0) + ); + end component dcfifo0; + + component dcfifo1 + PORT ( + aclr : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + rdclk : IN STD_LOGIC ; + rdreq : IN STD_LOGIC ; + wrclk : IN STD_LOGIC ; + wrreq : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0); + rdusedw : OUT STD_LOGIC_VECTOR (9 DOWNTO 0) + ); + end component; + + +end FalconIO_SDCard_IDE_CF_PKG; diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF_pgk.vhd.bak b/FPGA_quartus/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF_pgk.vhd.bak new file mode 100644 index 0000000..4f42cf2 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF_pgk.vhd.bak @@ -0,0 +1,406 @@ +---------------------------------------------------------------------- +---- ---- +---- Atari Coldfire IP Core ---- +---- ---- +---- This file is part of the Atari Coldfire project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- ---- +---- ---- +---- ---- +---- ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2009 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- 1.0 Initial Release, 20090925. +-- + +library ieee; +use ieee.std_logic_1164.all; + +package FalconIO_SDCard_IDE_CF_PKG is + component WF25915IP_TOP_V1_SOC -- GLUE. + port ( + -- Clock system: + GL_CLK : in std_logic; -- Originally 8MHz. + GL_CLK_016 : in std_logic; -- One sixteenth of GL_CLK. + + -- Core address select: + GL_ROMSEL_FC_E0n : in std_logic; + EN_RAM_14MB : in std_logic; + -- Adress decoder outputs: + GL_ROM_6n : out std_logic; -- STE. + GL_ROM_5n : out std_logic; -- STE. + GL_ROM_4n : out std_logic; -- ST. + GL_ROM_3n : out std_logic; -- ST. + GL_ROM_2n : out std_logic; + GL_ROM_1n : out std_logic; + GL_ROM_0n : out std_logic; + + GL_ACIACS : out std_logic; + GL_MFPCSn : out std_logic; + GL_SNDCSn : out std_logic; + GL_FCSn : out std_logic; + + GL_STE_SNDCS : out std_logic; -- STE: Sound chip select. + GL_STE_SNDIR : out std_logic; -- STE: Data flow direction control. + + GL_STE_RTCCSn : out std_logic; --STE only. + GL_STE_RTC_WRn : out std_logic; --STE only. + GL_STE_RTC_RDn : out std_logic; --STE only. + + -- 6800 peripheral control, + GL_VPAn : out std_logic; + GL_VMAn : in std_logic; + + GL_DMA_SYNC : in std_logic; + GL_DEVn : out std_logic; + GL_RAMn : out std_logic; + GL_DMAn : out std_logic; + + -- Interrupt system: + -- Comment out GL_AVECn for CPUs which do not provide the VMAn signal. + GL_AVECn : out std_logic; + GL_STE_FDINT : in std_logic; -- Floppy disk interrupt; STE only. + GL_STE_HDINTn : in std_logic; -- Hard disk interrupt; STE only. + GL_MFPINTn : in std_logic; -- ST. + GL_STE_EINT3n : in std_logic; --STE only. + GL_STE_EINT5n : in std_logic; --STE only. + GL_STE_EINT7n : in std_logic; --STE only. + GL_STE_DINTn : out std_logic; -- Disk interrupt (floppy or hard disk); STE only. + GL_IACKn : out std_logic; -- ST. + GL_STE_IPL2n : out std_logic; --STE only. + GL_STE_IPL1n : out std_logic; --STE only. + GL_STE_IPL0n : out std_logic; --STE only. + + -- Video timing: + GL_BLANKn : out std_logic; + GL_DE : out std_logic; + GL_MULTISYNC : in std_logic_vector(3 downto 2); + GL_VIDEO_HIMODE : out std_logic; + GL_HSYNC_INn : in std_logic; + GL_HSYNC_OUTn : out std_logic; + GL_VSYNC_INn : in std_logic; + GL_VSYNC_OUTn : out std_logic; + GL_SYNC_OUT_EN : out std_logic; + + -- Bus arstd_logicration control: + GL_RDY_INn : in std_logic; + GL_RDY_OUTn : out std_logic; + GL_BRn : out std_logic; + GL_BGIn : in std_logic; + GL_BGOn : out std_logic; + GL_BGACK_INn : in std_logic; + GL_BGACK_OUTn : out std_logic; + + -- Adress and data bus: + GL_ADDRESS : in std_logic_vector(23 downto 1); + -- ST: put the data bus to 1 downto 0. + -- STE: put the data out bus to 15 downto 0. + GL_DATA_IN : in std_logic_vector(7 downto 0); + GL_DATA_OUT : out std_logic_vector(15 downto 0); + GL_DATA_EN : out std_logic; + + -- Asynchronous bus control: + GL_RWn_IN : in std_logic; + GL_RWn_OUT : out std_logic; + GL_AS_INn : in std_logic; + GL_AS_OUTn : out std_logic; + GL_UDS_INn : in std_logic; + GL_UDS_OUTn : out std_logic; + GL_LDS_INn : in std_logic; + GL_LDS_OUTn : out std_logic; + GL_DTACK_INn : in std_logic; + GL_DTACK_OUTn : out std_logic; + GL_CTRL_EN : out std_logic; + + -- System control: + GL_RESETn : in std_logic; + GL_BERRn : out std_logic; + + -- Processor function codes: + GL_FC : in std_logic_vector(2 downto 0); + + -- STE enhancements: + GL_STE_FDDS : out std_logic; -- Floppy type select (HD or DD). + GL_STE_FCCLK : out std_logic; -- Floppy controller clock select. + GL_STE_JOY_RHn : out std_logic; -- Read only FF9202 high byte. + GL_STE_JOY_RLn : out std_logic; -- Read only FF9202 low byte. + GL_STE_JOY_WL : out std_logic; -- Write only FF9202 low byte. + GL_STE_JOY_WEn : out std_logic; -- Write only FF9202 output enable. + GL_STE_BUTTONn : out std_logic; -- Read only FF9000 low byte. + GL_STE_PAD0Xn : in std_logic; -- Counter input for the Paddle 0X. + GL_STE_PAD0Yn : in std_logic; -- Counter input for the Paddle 0Y. + GL_STE_PAD1Xn : in std_logic; -- Counter input for the Paddle 1X. + GL_STE_PAD1Yn : in std_logic; -- Counter input for the Paddle 1Y. + GL_STE_PADRSTn : out std_logic; -- Paddle monoflops reset. + GL_STE_PENn : in std_logic; -- Input of the light pen. + GL_STE_SCCn : out std_logic; -- Select signal for the STE or TT SCC chip. + GL_STE_CPROGn : out std_logic -- Select signal for the STE's cache processor. + ); + end component WF25915IP_TOP_V1_SOC; + + component WF5380_TOP_SOC + port ( + CLK : in std_logic; + RESETn : in std_logic; + ADR : in std_logic_vector(2 downto 0); + DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); + DATA_EN : out std_logic; + CSn : in std_logic; + RDn : in std_logic; + WRn : in std_logic; + EOPn : in std_logic; + DACKn : in std_logic; + DRQ : out std_logic; + INT : out std_logic; + READY : out std_logic; + DB_INn : in std_logic_vector(7 downto 0); + DB_OUTn : out std_logic_vector(7 downto 0); + DB_EN : out std_logic; + DBP_INn : in std_logic; + DBP_OUTn : out std_logic; + DBP_EN : out std_logic; + RST_INn : in std_logic; + RST_OUTn : out std_logic; + RST_EN : out std_logic; + BSY_INn : in std_logic; + BSY_OUTn : out std_logic; + BSY_EN : out std_logic; + SEL_INn : in std_logic; + SEL_OUTn : out std_logic; + SEL_EN : out std_logic; + ACK_INn : in std_logic; + ACK_OUTn : out std_logic; + ACK_EN : out std_logic; + ATN_INn : in std_logic; + ATN_OUTn : out std_logic; + ATN_EN : out std_logic; + REQ_INn : in std_logic; + REQ_OUTn : out std_logic; + REQ_EN : out std_logic; + IOn_IN : in std_logic; + IOn_OUT : out std_logic; + IO_EN : out std_logic; + CDn_IN : in std_logic; + CDn_OUT : out std_logic; + CD_EN : out std_logic; + MSG_INn : in std_logic; + MSG_OUTn : out std_logic; + MSG_EN : out std_logic + ); + end component WF5380_TOP_SOC; + + component WF1772IP_TOP_SOC -- FDC. + port ( + CLK : in std_logic; -- 16MHz clock! + RESETn : in std_logic; + CSn : in std_logic; + RWn : in std_logic; + A1, A0 : in std_logic; + DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); + DATA_EN : out std_logic; + RDn : in std_logic; + TR00n : in std_logic; + IPn : in std_logic; + WPRTn : in std_logic; + DDEn : in std_logic; + HDTYPE : in std_logic; -- '0' = DD disks, '1' = HD disks. + MO : out std_logic; + WG : out std_logic; + WD : out std_logic; + STEP : out std_logic; + DIRC : out std_logic; + DRQ : out std_logic; + INTRQ : out std_logic + ); + end component WF1772IP_TOP_SOC; + + component WF68901IP_TOP_SOC -- MFP. + port ( -- System control: + CLK : in std_logic; + RESETn : in std_logic; + + -- Asynchronous bus control: + DSn : in std_logic; + CSn : in std_logic; + RWn : in std_logic; + DTACKn : out std_logic; + + -- Data and Adresses: + RS : in std_logic_vector(5 downto 1); + DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); + DATA_EN : out std_logic; + GPIP_IN : in std_logic_vector(7 downto 0); + GPIP_OUT : out std_logic_vector(7 downto 0); + GPIP_EN : out std_logic_vector(7 downto 0); + + -- Interrupt control: + IACKn : in std_logic; + IEIn : in std_logic; + IEOn : out std_logic; + IRQn : out std_logic; + + -- Timers and timer control: + XTAL1 : in std_logic; -- Use an oszillator instead of a quartz. + TAI : in std_logic; + TBI : in std_logic; + TAO : out std_logic; + TBO : out std_logic; + TCO : out std_logic; + TDO : out std_logic; + + -- Serial I/O control: + RC : in std_logic; + TC : in std_logic; + SI : in std_logic; + SO : out std_logic; + SO_EN : out std_logic; + + -- DMA control: + RRn : out std_logic; + TRn : out std_logic + ); + end component WF68901IP_TOP_SOC; + + component WF2149IP_TOP_SOC -- Sound. + port( + + SYS_CLK : in std_logic; -- Read the inforation in the header! + RESETn : in std_logic; + + WAV_CLK : in std_logic; -- Read the inforation in the header! + SELn : in std_logic; + + BDIR : in std_logic; + BC2, BC1 : in std_logic; + + A9n, A8 : in std_logic; + DA_IN : in std_logic_vector(7 downto 0); + DA_OUT : out std_logic_vector(7 downto 0); + DA_EN : out std_logic; + + IO_A_IN : in std_logic_vector(7 downto 0); + IO_A_OUT : out std_logic_vector(7 downto 0); + IO_A_EN : out std_logic; + IO_B_IN : in std_logic_vector(7 downto 0); + IO_B_OUT : out std_logic_vector(7 downto 0); + IO_B_EN : out std_logic; + + OUT_A : out std_logic; -- Analog (PWM) outputs. + OUT_B : out std_logic; + OUT_C : out std_logic + ); + end component WF2149IP_TOP_SOC; + + component WF6850IP_TOP_SOC -- ACIA. + port ( + CLK : in std_logic; + RESETn : in std_logic; + + CS2n, CS1, CS0 : in std_logic; + E : in std_logic; + RWn : in std_logic; + RS : in std_logic; + + DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); + DATA_EN : out std_logic; + + TXCLK : in std_logic; + RXCLK : in std_logic; + RXDATA : in std_logic; + CTSn : in std_logic; + DCDn : in std_logic; + + IRQn : out std_logic; + TXDATA : out std_logic; + RTSn : out std_logic + ); + end component WF6850IP_TOP_SOC; + + component WF_SD_CARD + port ( + RESETn : in std_logic; + CLK : in std_logic; + ACSI_A1 : in std_logic; + ACSI_CSn : in std_logic; + ACSI_ACKn : in std_logic; + ACSI_INTn : out std_logic; + ACSI_DRQn : out std_logic; + ACSI_D_IN : in std_logic_vector(7 downto 0); + ACSI_D_OUT : out std_logic_vector(7 downto 0); + ACSI_D_EN : out std_logic; + MC_DO : in std_logic; + MC_PIO_DMAn : in std_logic; + MC_RWn : in std_logic; + MC_CLR_CMD : in std_logic; + MC_DONE : out std_logic; + MC_GOT_CMD : out std_logic; + MC_D_IN : in std_logic_vector(7 downto 0); + MC_D_OUT : out std_logic_vector(7 downto 0); + MC_D_EN : out std_logic + ); + end component WF_SD_CARD; + + component dcfifo0 + PORT ( + aclr : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + rdclk : IN STD_LOGIC ; + rdreq : IN STD_LOGIC ; + wrclk : IN STD_LOGIC ; + wrreq : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (31 DOWNTO 0); + wrusedw : OUT STD_LOGIC_VECTOR (5 DOWNTO 0) + ); + end component dcfifo0; + + component dcfifo1 + PORT ( + aclr : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + rdclk : IN STD_LOGIC ; + rdreq : IN STD_LOGIC ; + wrclk : IN STD_LOGIC ; + wrreq : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0); + rdusedw : OUT STD_LOGIC_VECTOR (5 DOWNTO 0) + ); + end component; + + +end FalconIO_SDCard_IDE_CF_PKG; diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF5380/wf5380_control.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF5380/wf5380_control.vhd new file mode 100644 index 0000000..4453332 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF5380/wf5380_control.vhd @@ -0,0 +1,631 @@ +---------------------------------------------------------------------- +---- ---- +---- WF5380 IP Core ---- +---- ---- +---- Description: ---- +---- This model provides an asynchronous SCSI interface compa- ---- +---- tible to the DP5380 from National Semiconductor and others. ---- +---- ---- +---- This file is the 5380's system controller. ---- +---- ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2009 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K9A 2009/06/20 WF +-- Initial Release. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF5380_CONTROL is + port ( + -- System controls: + CLK : in bit; + RESETn : in bit; -- System reset. + + -- System controls: + BSY_INn : in bit; -- SCSI BSY_INn bit. + BSY_OUTn : out bit; -- SCSI BSY_INn bit. + DATA_EN : out bit; -- Enable the SCSI data lines. + SEL_INn : in bit; -- SCSI SEL_INn bit. + ARB_EN : in bit; -- Arbitration enable. + BSY_DISn : in bit; -- BSY monitoring enable. + RSTn : in bit; -- SCSI reset. + + ARB : out bit; -- Arbitration flag. + AIP : out bit; -- Arbitration in progress flag. + LA : out bit; -- Lost arbitration flag. + + ACK_INn : in bit; + ACK_OUTn : out bit; + REQ_INn : in bit; + REQ_OUTn : out bit; + + DACKn : in bit; -- Data acknowledge. + READY : out bit; + DRQ : out bit; -- Data request. + + TARG : in bit; -- Target mode indicator. + BLK : in bit; -- Block mode indicator. + PINT_EN : in bit; -- Parity interrupt enable. + SPER : in bit; -- Parity error. + SER_ID : in bit; -- SER matches ODR bits. + RPI : in bit; -- Reset interrupts. + DMA_EN : in bit; -- DMA mode enable. + SDS : in bit; -- Start DMA send, write only. + SDT : in bit; -- Start DMA target receive, write only. + SDI : in bit; -- Start DMA initiator receive, write only. + EOP_EN : in bit; -- EOP interrupt enable. + EOPn : in bit; -- End of process indicator. + PHSM : in bit; -- Phase match flag. + + INT : out bit; -- Interrupt. + IDR_WR : out bit; -- Write input data register during DMA. + ODR_WR : out bit; -- Write output data register, during DMA. + CHK_PAR : out bit; -- Check Parity during DMA operation. + BSY_ERR : out bit; -- Busy monitoring error. + DMA_SND : out bit; -- Indicates direction of target DMA. + DMA_ACTIVE : out bit -- DMA is active. + ); +end entity WF5380_CONTROL; + +architecture BEHAVIOUR of WF5380_CONTROL is +type CTRL_STATES is (IDLE, WAIT_800ns, WAIT_2200ns, DMA_SEND, DMA_TARG_RCV, DMA_INIT_RCV); +type DMA_STATES is (IDLE, DMA_STEP_1, DMA_STEP_2, DMA_STEP_3, DMA_STEP_4); +signal CTRL_STATE : CTRL_STATES; +signal NEXT_CTRL_STATE : CTRL_STATES; +signal DMA_STATE : DMA_STATES; +signal NEXT_DMA_STATE : DMA_STATES; +signal BUS_FREE : bit; +signal DELAY_800ns : boolean; +signal DELAY_2200ns : boolean; +signal DMA_ACTIVE_I : bit; +signal EOP_In : bit; +begin + IN_BUFFER: process + -- This buffer shall prevent some signals against + -- setup hold effects and thus the state machine + -- against unpredictable behaviour. + begin + wait until CLK = '1' and CLK' event; + EOP_In <= EOPn; + end process IN_BUFFER; + + STATE_REGISTERS: process(RESETn, CLK) + -- This is the controller's state machine register. + variable BSY_LOCK : boolean; + begin + if RESETn = '0' then + CTRL_STATE <= IDLE; + DMA_STATE <= IDLE; + elsif CLK = '1' and CLK' event then + if RSTn = '0' then -- SCSI reset. + CTRL_STATE <= IDLE; + DMA_STATE <= IDLE; + else + CTRL_STATE <= NEXT_CTRL_STATE; + DMA_STATE <= NEXT_DMA_STATE; + end if; + -- + if DMA_EN = '0' then + DMA_STATE <= IDLE; + end if; + end if; + end process STATE_REGISTERS; + + CTRL_DECODER: process(CTRL_STATE, ARB_EN, BUS_FREE, DELAY_800ns, SEL_INn, DMA_ACTIVE_I, SDS, SDT, SDI) + -- This is the controller's state machine decoder. + variable BSY_LOCK : boolean; + begin + -- Defaults. + DMA_SND <= '0'; + -- + case CTRL_STATE is + when IDLE => + if ARB_EN = '1' and BUS_FREE = '1' then + NEXT_CTRL_STATE <= WAIT_800ns; + else + NEXT_CTRL_STATE <= IDLE; + end if; + when WAIT_800ns => + if DELAY_800ns = true then + NEXT_CTRL_STATE <= WAIT_2200ns; + else + NEXT_CTRL_STATE <= WAIT_800ns; + end if; + when WAIT_2200ns => + -- In this state the delay is provided by the + -- microprocessor and is at least 2.2us. The + -- delay is released by deasserting SELn. + if SEL_INn = '1' and SDS = '1' then + NEXT_CTRL_STATE <= DMA_SEND; + elsif SEL_INn = '1' and SDT = '1' then + NEXT_CTRL_STATE <= DMA_TARG_RCV; + elsif SEL_INn = '1' and SDI = '1' then + NEXT_CTRL_STATE <= DMA_INIT_RCV; + else + NEXT_CTRL_STATE <= WAIT_2200ns; + end if; + when DMA_SEND => + if DMA_ACTIVE_I = '0' then + NEXT_CTRL_STATE <= IDLE; + else + NEXT_CTRL_STATE <= DMA_SEND; + end if; + -- + DMA_SND <= '1'; + when DMA_TARG_RCV => + if DMA_ACTIVE_I = '0' then + NEXT_CTRL_STATE <= IDLE; + else + NEXT_CTRL_STATE <= DMA_TARG_RCV; + end if; + when DMA_INIT_RCV => + if DMA_ACTIVE_I = '0' then + NEXT_CTRL_STATE <= IDLE; + else + NEXT_CTRL_STATE <= DMA_INIT_RCV; + end if; + end case; + end process CTRL_DECODER; + + DMA_DECODER: process(CTRL_STATE, DMA_STATE, TARG, BLK, DACKn, REQ_INn, ACK_INn) + -- This is the DMA state machine decoder. + begin + -- Defaults: + IDR_WR <= '0'; + ODR_WR <= '0'; + CHK_PAR <= '0'; + -- + case DMA_STATE is + when IDLE => + if CTRL_STATE = DMA_SEND then + NEXT_DMA_STATE <= DMA_STEP_1; + elsif CTRL_STATE = DMA_INIT_RCV then + NEXT_DMA_STATE <= DMA_STEP_1; + elsif CTRL_STATE = DMA_TARG_RCV then + NEXT_DMA_STATE <= DMA_STEP_1; + else + NEXT_DMA_STATE <= IDLE; + end if; + when DMA_STEP_1 => + -- Initiator modes: + if CTRL_STATE = DMA_SEND and TARG = '0' and BLK = '0' and DACKn = '0' then + NEXT_DMA_STATE <= DMA_STEP_2; -- Wait for DACKn asserted. + ODR_WR <= '1'; + elsif CTRL_STATE = DMA_SEND and TARG = '0' and BLK = '1' and DACKn = '0' then + NEXT_DMA_STATE <= DMA_STEP_2; -- Wait for DACKn asserted. + ODR_WR <= '1'; + elsif CTRL_STATE = DMA_INIT_RCV and BLK = '0' and REQ_INn = '0' then + NEXT_DMA_STATE <= DMA_STEP_2; -- Wait for REQn asserted. + IDR_WR <= '1'; + elsif CTRL_STATE = DMA_INIT_RCV and BLK = '1' and REQ_INn = '0' then + NEXT_DMA_STATE <= DMA_STEP_2; -- Wait for REQn asserted. + IDR_WR <= '1'; + -- Target modes: + elsif CTRL_STATE = DMA_SEND and TARG = '1' and BLK = '0' and DACKn = '0' then + NEXT_DMA_STATE <= DMA_STEP_2; -- Wait for DACKn asserted. + ODR_WR <= '1'; + elsif CTRL_STATE = DMA_SEND and TARG = '0' and BLK = '1' and DACKn = '0' then + NEXT_DMA_STATE <= DMA_STEP_2; -- Wait for DACKn asserted. + ODR_WR <= '1'; + elsif CTRL_STATE = DMA_TARG_RCV and BLK = '0' and ACK_INn = '0' then + NEXT_DMA_STATE <= DMA_STEP_2; -- Wait for ACKn asserted. + IDR_WR <= '1'; + elsif CTRL_STATE = DMA_TARG_RCV and BLK = '1' and ACK_INn = '0' then + NEXT_DMA_STATE <= DMA_STEP_2; -- Wait for ACKn asserted. + IDR_WR <= '1'; + else + NEXT_DMA_STATE <= DMA_STEP_1; + end if; + when DMA_STEP_2 => + -- Initiator modes: + if CTRL_STATE = DMA_SEND and TARG = '0' and BLK = '0' and DACKn = '1' then + NEXT_DMA_STATE <= DMA_STEP_3; -- Wait for DACKn deasserted. + elsif CTRL_STATE = DMA_SEND and TARG = '0' and BLK = '1' and DACKn = '1' then + NEXT_DMA_STATE <= DMA_STEP_3; -- Wait for DACKn deasserted. + elsif CTRL_STATE = DMA_INIT_RCV and BLK = '0' and REQ_INn = '1' then + NEXT_DMA_STATE <= DMA_STEP_3; -- Wait for REQn deasserted. + elsif CTRL_STATE = DMA_INIT_RCV and BLK = '1' and REQ_INn = '1' then + NEXT_DMA_STATE <= DMA_STEP_3; -- Wait for REQn deasserted. + -- Target modes: + elsif CTRL_STATE = DMA_SEND and TARG = '1' and BLK = '0' and DACKn = '1' then + NEXT_DMA_STATE <= DMA_STEP_3; -- Wait for DACKn deasserted. + elsif CTRL_STATE = DMA_SEND and TARG = '0' and BLK = '1' and DACKn = '1' then + NEXT_DMA_STATE <= DMA_STEP_3; -- Wait for DACKn deasserted. + elsif CTRL_STATE = DMA_TARG_RCV and BLK = '0' and ACK_INn = '1' then + NEXT_DMA_STATE <= DMA_STEP_3; -- Wait for ACKn deasserted. + elsif CTRL_STATE = DMA_TARG_RCV and BLK = '1' and ACK_INn = '1' then + NEXT_DMA_STATE <= DMA_STEP_3; -- Wait for ACKn deasserted. + else + NEXT_DMA_STATE <= DMA_STEP_2; + end if; + when DMA_STEP_3 => + -- Initiator modes: + if CTRL_STATE = DMA_SEND and TARG = '0' and BLK = '0' and REQ_INn = '0' then + NEXT_DMA_STATE <= DMA_STEP_4; -- Wait REQn asserted. + elsif CTRL_STATE = DMA_SEND and TARG = '0' and BLK = '1' and REQ_INn = '0' then + NEXT_DMA_STATE <= DMA_STEP_4; -- Wait REQn asserted. + elsif CTRL_STATE = DMA_INIT_RCV and BLK = '0' and DACKn = '0' then + NEXT_DMA_STATE <= DMA_STEP_4; -- Wait DACKn asserted. + CHK_PAR <= '1'; + elsif CTRL_STATE = DMA_INIT_RCV and BLK = '1' and DACKn = '0' then + NEXT_DMA_STATE <= DMA_STEP_4; -- Wait DACKn asserted. + CHK_PAR <= '1'; + -- Target modes: + elsif CTRL_STATE = DMA_SEND and TARG = '1' and BLK = '0' and ACK_INn = '0' then + NEXT_DMA_STATE <= DMA_STEP_4; -- Wait ACKn asserted. + elsif CTRL_STATE = DMA_SEND and TARG = '1' and BLK = '1' and ACK_INn = '0' then + NEXT_DMA_STATE <= DMA_STEP_4; -- Wait ACKn asserted. + elsif CTRL_STATE = DMA_TARG_RCV and BLK = '0' and DACKn = '0' then + NEXT_DMA_STATE <= DMA_STEP_4; -- Wait DACKn asserted. + CHK_PAR <= '1'; + elsif CTRL_STATE = DMA_TARG_RCV and BLK = '1' and DACKn = '0' then + NEXT_DMA_STATE <= DMA_STEP_4; -- Wait DACKn asserted. + CHK_PAR <= '1'; + else + NEXT_DMA_STATE <= DMA_STEP_3; + end if; + when DMA_STEP_4 => + -- Initiator modes: + if CTRL_STATE = DMA_SEND and TARG = '0' and BLK = '0' and REQ_INn = '1' then + NEXT_DMA_STATE <= DMA_STEP_1; -- Wait REQn deasserted. + elsif CTRL_STATE = DMA_SEND and TARG = '0' and BLK = '1' and REQ_INn = '1' then + NEXT_DMA_STATE <= DMA_STEP_1; -- Wait REQn deasserted. + elsif CTRL_STATE = DMA_INIT_RCV and BLK = '0' and DACKn = '1' then + NEXT_DMA_STATE <= DMA_STEP_1; -- Wait DACKn deasserted. + elsif CTRL_STATE = DMA_INIT_RCV and BLK = '1' and DACKn = '1' then + NEXT_DMA_STATE <= DMA_STEP_1; -- Wait DACKn deasserted. + -- Target modes: + elsif CTRL_STATE = DMA_SEND and TARG = '1' and BLK = '0' and ACK_INn = '1' then + NEXT_DMA_STATE <= DMA_STEP_1; -- Wait ACKn deasserted. + elsif CTRL_STATE = DMA_SEND and TARG = '1' and BLK = '1' and ACK_INn = '1' then + NEXT_DMA_STATE <= DMA_STEP_1; -- Wait ACKn deasserted. + elsif CTRL_STATE = DMA_TARG_RCV and BLK = '0' and DACKn = '1' then + NEXT_DMA_STATE <= DMA_STEP_1; -- Wait DACKn deasserted. + elsif CTRL_STATE = DMA_TARG_RCV and BLK = '1' and DACKn = '1' then + NEXT_DMA_STATE <= DMA_STEP_1; -- Wait DACKn deasserted. + else + NEXT_DMA_STATE <= DMA_STEP_4; + end if; + end case; + end process DMA_DECODER; + + P_REQn: process(DMA_STATE, CTRL_STATE, TARG, BLK) + -- This logic controls the REQn output in target mode. + begin + if DMA_STATE = DMA_STEP_1 and CTRL_STATE = DMA_TARG_RCV and BLK = '0' then + REQ_OUTn <= '0'; + elsif DMA_STATE = DMA_STEP_1 and CTRL_STATE = DMA_TARG_RCV and BLK = '1' then + REQ_OUTn <= '0'; + elsif DMA_STATE = DMA_STEP_3 and CTRL_STATE = DMA_SEND and TARG = '1' and BLK = '0' then + REQ_OUTn <= '0'; + elsif DMA_STATE = DMA_STEP_3 and CTRL_STATE = DMA_SEND and TARG = '1' and BLK = '1' then + REQ_OUTn <= '0'; + else + REQ_OUTn <= '1'; + end if; + end process P_REQn; + + P_ACKn: process(DMA_STATE, CTRL_STATE, TARG, BLK) + -- This logic controls the ACKn output in initiator mode. + begin + if DMA_STATE = DMA_STEP_2 and CTRL_STATE = DMA_INIT_RCV and BLK = '0' then + ACK_OUTn <= '0'; + elsif DMA_STATE = DMA_STEP_2 and CTRL_STATE = DMA_INIT_RCV and BLK = '1' then + ACK_OUTn <= '0'; + elsif DMA_STATE = DMA_STEP_4 and CTRL_STATE = DMA_SEND and TARG = '0' and BLK = '0' then + ACK_OUTn <= '0'; + elsif DMA_STATE = DMA_STEP_4 and CTRL_STATE = DMA_SEND and TARG = '0' and BLK = '1' then + ACK_OUTn <= '0'; + else + ACK_OUTn <= '1'; + end if; + end process P_ACKn; + + P_READY: process(DMA_STATE, CTRL_STATE, TARG, BLK) + -- This logic controls the READY output in initiator and target block mode. + begin + if DMA_STATE = DMA_STEP_1 and CTRL_STATE = DMA_SEND and TARG = '1' and BLK = '1' then + READY <= '1'; + elsif DMA_STATE = DMA_STEP_1 and CTRL_STATE = DMA_TARG_RCV and BLK = '1' then + READY <= '1'; + elsif DMA_STATE = DMA_STEP_3 and CTRL_STATE = DMA_SEND and TARG = '0' and BLK = '1' then + READY <= '1'; + elsif DMA_STATE = DMA_STEP_3 and CTRL_STATE = DMA_INIT_RCV and BLK = '1' then + READY <= '1'; + else + READY <= '0'; + end if; + end process P_READY; + + P_DRQ: process(RESETn, CLK) + -- This flip flop controls the DRQ flag during all initiator and all target modes + -- for both block mode and non block mode operation. + variable LOCK : boolean; + begin + if RESETn = '0' then + DRQ <= '0'; + LOCK := false; + elsif CLK = '1' and CLK' event then + -- Initiator modes: + if DMA_STATE = DMA_STEP_1 and CTRL_STATE = DMA_SEND and TARG = '0' and BLK = '0' then + DRQ <= '1'; + elsif DMA_STATE = DMA_STEP_1 and CTRL_STATE = DMA_SEND and TARG = '0' and BLK = '1' and LOCK = false then + DRQ <= '1'; + LOCK := true; + elsif DMA_STATE = DMA_STEP_3 and CTRL_STATE = DMA_INIT_RCV and BLK = '0' then + DRQ <= '1'; + elsif DMA_STATE = DMA_STEP_3 and CTRL_STATE = DMA_INIT_RCV and BLK = '1' then + DRQ <= '1'; + LOCK := true; + -- Target modes: + elsif DMA_STATE = DMA_STEP_3 and CTRL_STATE = DMA_SEND and TARG = '1' and BLK = '0' then + DRQ <= '1'; + elsif DMA_STATE = DMA_STEP_3 and CTRL_STATE = DMA_SEND and TARG = '1' and BLK = '1' then + DRQ <= '1'; + LOCK := true; + elsif DMA_STATE = DMA_STEP_1 and CTRL_STATE = DMA_TARG_RCV and BLK = '0' then + DRQ <= '1'; + elsif DMA_STATE = DMA_STEP_1 and CTRL_STATE = DMA_TARG_RCV and BLK = '1' then + DRQ <= '1'; + LOCK := true; + elsif DACKn = '0' and LOCK = false then + DRQ <= '0'; + elsif EOPn = '0' and DACKn = '0' then + DRQ <= '0'; + LOCK := false; + end if; + end if; + end process P_DRQ; + + P_BUSFREE: process(RESETn, CLK) + -- This is the logic for the bus free signal. + -- A bus free is valid if the BSY_INn signal is + -- at least 437.5ns inactive ans SEL_INn is inactive. + -- The delay are 7 clock cycles of 16MHz. + variable TMP : std_logic_vector(2 downto 0); + begin + if RESETn = '0' then + BUS_FREE <= '0'; + TMP := "000"; + elsif CLK = '1' and CLK' event then + if BSY_INn = '1' and TMP < x"111" then + TMP := TMP + '1'; + elsif BSY_INn = '0' then + TMP := "000"; + end if; + -- + if RSTn = '0' then -- SCSI reset. + BUS_FREE <= '0'; + elsif SEL_INn = '1' and TMP = "111" then + BUS_FREE <= '1'; + else + BUS_FREE <= '0'; + end if; + end if; + end process P_BUSFREE; + + DELAY_800: process(RESETn, CLK) + -- This is the delay of 812.5ns. + -- It is derived from 13 16MHz clock cycles. + variable TMP : std_logic_vector(3 downto 0); + begin + if RESETn = '0' then + DELAY_800ns <= false; + TMP := x"0"; + elsif CLK = '1' and CLK' event then + if CTRL_STATE /= WAIT_800ns then + TMP := x"0"; + elsif TMP <= x"D" then + TMP := TMP + '1'; + end if; + -- + if TMP = x"D" then + DELAY_800ns <= true; + else + DELAY_800ns <= false; + end if; + end if; + end process DELAY_800; + + P_ARB: process(RESETn, CLK) + -- This flip flop controls the ARB flag read back + -- by the microcontroller. + begin + if RESETn = '0' then + ARB <= '0'; + elsif CLK = '1' and CLK' event then + if CTRL_STATE /= WAIT_800ns and NEXT_CTRL_STATE = WAIT_800ns then + ARB <= '1'; + elsif ARB_EN = '0' then + ARB <= '0'; + end if; + end if; + end process P_ARB; + + P_AIP: process(RESETn, CLK) + -- This flip flop controls the AIP flag read back + -- by the microcontroller. + begin + if RESETn = '0' then + AIP <= '0'; + elsif CLK = '1' and CLK' event then + if CTRL_STATE = WAIT_800ns and NEXT_CTRL_STATE /= WAIT_800ns then + AIP <= '1'; + elsif ARB_EN = '0' then + AIP <= '0'; + end if; + end if; + end process P_AIP; + + P_BSY: process + -- This flip flop controls the BSYn output + -- to the SCSI bus. + begin + wait until CLK = '1' and CLK' event; + if RESETn = '0' then + BSY_OUTn <= '1'; + elsif CTRL_STATE = WAIT_800ns and NEXT_CTRL_STATE /= WAIT_800ns then + BSY_OUTn <= '0'; + elsif ARB_EN = '0' then + BSY_OUTn <= '1'; + end if; + end process P_BSY; + + P_DATA_EN: process(RESETn, CLK) + -- This flip flop controls the data enable + -- of the SCSI bus. + begin + if RESETn = '0' then + DATA_EN <= '0'; + elsif CLK = '1' and CLK' event then + if CTRL_STATE = WAIT_800ns and NEXT_CTRL_STATE /= WAIT_800ns then + DATA_EN <= '1'; + elsif ARB_EN = '0' then + DATA_EN <= '0'; + end if; + end if; + end process P_DATA_EN; + + P_LA: process(RESETn, CLK) + -- This flip flop controls the LA + -- (lost arbitration) flag. + begin + if RESETn = '0' then + LA <= '0'; + elsif CLK = '1' and CLK' event then + if (CTRL_STATE = WAIT_800ns or CTRL_STATE = WAIT_2200ns) and SEL_INn = '0' then + LA <= '1'; + elsif ARB_EN = '0' then + LA <= '0'; + end if; + end if; + end process P_LA; + + P_DMA_ACTIVE: process(RESETn, CLK, DMA_ACTIVE_I) + -- This is the Flip Flop indicating if there is DMA + -- operation. + begin + if RESETn = '0' then + DMA_ACTIVE_I <= '0'; + elsif CLK = '1' and CLK' event then + if DMA_EN = '1' and SDS = '1' then + DMA_ACTIVE_I <= '1'; -- Start DMA send. + elsif DMA_EN = '1' and SDT = '1' then + DMA_ACTIVE_I <= '1'; -- Start DMA target receive. + elsif DMA_EN = '1' and SDI = '1' then + DMA_ACTIVE_I <= '1'; -- Start DMA initiator receive. + elsif DMA_EN = '0' then + DMA_ACTIVE_I <= '0'; -- Halt DMA via DMA flag in MR2. + elsif EOP_In = '0' then + DMA_ACTIVE_I <= '0'; -- Halt DMA via EOPn. + elsif PHSM = '0' then + DMA_ACTIVE_I <= '0'; -- Halt DMA via phase mismatch. + end if; + end if; + -- + DMA_ACTIVE <= DMA_ACTIVE_I; + end process P_DMA_ACTIVE; + + INTERRUPTS: process(RESETn, CLK) + -- This is the logic for all DP5380's interrupt sources. + -- A busy interrupt occurs if the BSY_INn signal is at + -- least 437.5ns inactive. The delay are 7 clock cycles + -- of 16MHz. This logic also provides the respective + -- error flags for the BSR. + variable TMP : std_logic_vector(2 downto 0); + begin + if RESETn = '0' then + INT <= '0'; + BSY_ERR <= '0'; + TMP := "000"; + elsif CLK = '1' and CLK' event then + if SPER = '1' and PINT_EN = '1' then + INT <= '1'; -- Parity interrupt. + elsif RPI = '0' then -- Reset interrupts. + INT <= '0'; + end if; + -- + if EOP_In = '0' and CTRL_STATE = DMA_SEND then + BSY_ERR <= '1'; -- End of DMA error. + elsif EOP_In = '0' and CTRL_STATE = DMA_TARG_RCV then + BSY_ERR <= '1'; -- End of DMA error. + elsif EOP_In = '0' and CTRL_STATE = DMA_INIT_RCV then + BSY_ERR <= '1'; -- End of DMA error. + elsif DMA_EN = '0' then -- Reset error. + INT <= '0'; + end if; + -- + if EOP_EN = '1' and EOP_In = '0' and CTRL_STATE = DMA_SEND then + INT <= '1'; -- End of DMA interrupt. + elsif EOP_EN = '1' and EOP_In = '0' and CTRL_STATE = DMA_TARG_RCV then + INT <= '1'; -- End of DMA interrupt. + elsif EOP_EN = '1' and EOP_In = '0' and CTRL_STATE = DMA_INIT_RCV then + INT <= '1'; -- End of DMA interrupt. + elsif DMA_EN = '0' then -- Reset interrupt. + INT <= '0'; + end if; + + -- + if PHSM = '0' then + INT <= '1'; -- Phase mismatch interrupt. + elsif DMA_EN = '0' then -- Reset interrupts. + INT <= '0'; + end if; + -- + if SEL_INn = '0' and BSY_INn = '1' and SER_ID = '1' then + INT <= '1'; -- (Re)Selection interrupt. + elsif RPI = '1' then -- Reset interrupts. + INT <= '0'; + end if; + -- + if BSY_INn = '1' and TMP < x"111" then + TMP := TMP + '1'; -- Bus settle delay. + elsif BSY_INn = '0' then + TMP := "000"; + end if; + -- + if BSY_DISn = '1' and BSY_INn = '1' and TMP = x"111" then + INT <= '1'; -- Busy monitoring interrupt. + BSY_ERR <= '1'; + elsif RPI = '1' then -- Reset interrupts. + INT <= '0'; + BSY_ERR <= '0'; + end if; + -- + end if; + end process INTERRUPTS; +end BEHAVIOUR; \ No newline at end of file diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF5380/wf5380_pkg.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF5380/wf5380_pkg.vhd new file mode 100644 index 0000000..57cf305 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF5380/wf5380_pkg.vhd @@ -0,0 +1,139 @@ +---------------------------------------------------------------------- +---- ---- +---- WF5380 IP Core ---- +---- ---- +---- Description: ---- +---- This model provides an asynchronous SCSI interface compa- ---- +---- tible to the DP5380 from National Semiconductor and others. ---- +---- ---- +---- This file is the package file of the ip core. ---- +---- ---- +---- ---- +---- ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2009 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K9A 2009/06/20 WF +-- Initial Release. + +library ieee; +use ieee.std_logic_1164.all; + +package WF5380_PKG is + component WF5380_REGISTERS + port ( + CLK : in bit; + RESETn : in bit; + ADR : in bit_vector(2 downto 0); + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_EN : out bit; + CSn : in bit; + RDn : in bit; + WRn : in bit; + RSTn : in bit; + RST : out bit; + ARB_EN : out bit; + DMA_ACTIVE : in bit; + DMA_EN : out bit; + BSY_DISn : out bit; + EOP_EN : out bit; + PINT_EN : out bit; + SPER : out bit; + TARG : out bit; + BLK : out bit; + DMA_DIS : in bit; + IDR_WR : in bit; + ODR_WR : in bit; + CHK_PAR : in bit; + AIP : in bit; + ARB : in bit; + LA : in bit; + CSD : in bit_vector(7 downto 0); + CSB : in bit_vector(7 downto 0); + BSR : in bit_vector(7 downto 0); + ODR_OUT : out bit_vector(7 downto 0); + ICR_OUT : out bit_vector(7 downto 0); + TCR_OUT : out bit_vector(3 downto 0); + SER_OUT : out bit_vector(7 downto 0); + SDS : out bit; + SDT : out bit; + SDI : out bit; + RPI : out bit + ); + end component; + + component WF5380_CONTROL + port ( + CLK : in bit; + RESETn : in bit; + BSY_INn : in bit; + BSY_OUTn : out bit; + DATA_EN : out bit; + SEL_INn : in bit; + ARB_EN : in bit; + BSY_DISn : in bit; + RSTn : in bit; + ARB : out bit; + AIP : out bit; + LA : out bit; + ACK_INn : in bit; + ACK_OUTn : out bit; + REQ_INn : in bit; + REQ_OUTn : out bit; + DACKn : in bit; + READY : out bit; + DRQ : out bit; + TARG : in bit; + BLK : in bit; + PINT_EN : in bit; + SPER : in bit; + SER_ID : in bit; + RPI : in bit; + DMA_EN : in bit; + SDS : in bit; + SDT : in bit; + SDI : in bit; + EOP_EN : in bit; + EOPn : in bit; + PHSM : in bit; + INT : out bit; + IDR_WR : out bit; + ODR_WR : out bit; + CHK_PAR : out bit; + BSY_ERR : out bit; + DMA_SND : out bit; + DMA_ACTIVE : out bit + ); + end component; +end WF5380_PKG; diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF5380/wf5380_registers.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF5380/wf5380_registers.vhd new file mode 100644 index 0000000..2c21c12 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF5380/wf5380_registers.vhd @@ -0,0 +1,265 @@ +---------------------------------------------------------------------- +---- ---- +---- WF5380 IP Core ---- +---- ---- +---- Description: ---- +---- This model provides an asynchronous SCSI interface compa- ---- +---- tible to the DP5380 from National Semiconductor and others. ---- +---- ---- +---- This file is the 5380's register model. ---- +---- ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Register description (for more information see the DP5380 ---- +---- data sheet: ---- +---- ODR (address 0) Output data register, write only. ---- +---- CSD (address 0) Current SCSI data, read only. ---- +---- ICR (address 1) Initiator command register, read/write. ---- +---- MR2 (address 2) Mode register 2, read/write. ---- +---- TCR (address 3) Target command register, read/write. ---- +---- SER (address 4) Select enable register, write only. ---- +---- CSB (address 4) Current SCSI bus status, read only. ---- +---- BSR (address 5) Start DMA send, write only. ---- +---- SDS (address 5) Bus and status, read only. ---- +---- SDT (address 6) Start DMA target receive, write only. ---- +---- IDR (address 6) Input data register, read only. ---- +---- SDI (address 7) Start DMA initiator recive, write only. ---- +---- RPI (address 7) Reset parity / interrupts, read only. ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2009 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K9A 2009/06/20 WF +-- Initial Release. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF5380_REGISTERS is + port ( + -- System controls: + CLK : in bit; + RESETn : in bit; -- System reset. + + -- Address and data: + ADR : in bit_vector(2 downto 0); + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_EN : out bit; + + -- Bus and DMA controls: + CSn : in bit; + RDn : in bit; + WRn : in bit; + + -- Core controls: + RSTn : in bit; -- SCSI reset. + RST : out bit; -- Programmed SCSI reset. + ARB_EN : out bit; -- Arbitration enable. + DMA_ACTIVE : in bit; -- DMA is running. + DMA_EN : out bit; -- DMA mode enable. + BSY_DISn : out bit; -- BSY monitoring enable. + EOP_EN : out bit; -- EOP interrupt enable. + PINT_EN : out bit; -- Parity interrupt enable. + SPER : out bit; -- Parity error. + TARG : out bit; -- Target mode. + BLK : out bit; -- Block DMA mode. + DMA_DIS : in bit; -- Reset the DMA_EN by this signal. + IDR_WR : in bit; -- Write input data register during DMA. + ODR_WR : in bit; -- Write output data register, during DMA. + CHK_PAR : in bit; -- Check Parity during DMA operation. + AIP : in bit; -- Arbitration in progress. + ARB : in bit; -- Arbitration. + LA : in bit; -- Lost arbitration. + + CSD : in bit_vector(7 downto 0); -- SCSI data. + CSB : in bit_vector(7 downto 0); -- Current SCSI bus status. + BSR : in bit_vector(7 downto 0); -- Bus and status. + + ODR_OUT : out bit_vector(7 downto 0); -- This is the ODR register. + ICR_OUT : out bit_vector(7 downto 0); -- This is the ICR register. + TCR_OUT : out bit_vector(3 downto 0); -- This is the TCR register. + SER_OUT : out bit_vector(7 downto 0); -- This is the SER register. + + SDS : out bit; -- Start DMA send, write only. + SDT : out bit; -- Start DMA target receive, write only. + SDI : out bit; -- Start DMA initiator receive, write only. + RPI : out bit + ); +end entity WF5380_REGISTERS; + +architecture BEHAVIOUR of WF5380_REGISTERS is +signal ICR : bit_vector(7 downto 0); -- Initiator command register, read/write. +signal IDR : bit_vector(7 downto 0); -- Input data register. +signal MR2 : bit_vector(7 downto 0); -- Mode register 2, read/write. +signal ODR : bit_vector(7 downto 0); -- Output data register, write only. +signal SER : bit_vector(7 downto 0); -- Select enable register, write only. +signal TCR : bit_vector(3 downto 0); -- Target command register, read/write. +begin + REGISTERS: process(RESETn, CLK) + -- This process reflects all registers in the 5380. + variable BSY_LOCK : boolean; + begin + if RESETn = '0' then + ODR <= (others => '0'); + ICR <= (others => '0'); + MR2 <= (others => '0'); + TCR <= (others => '0'); + SER <= (others => '0'); + BSY_LOCK := false; + elsif CLK = '1' and CLK' event then + if RSTn = '0' then -- SCSI reset. + ODR <= (others => '0'); + ICR(6 downto 0) <= (others => '0'); + MR2(7) <= '0'; + MR2(5 downto 0) <= (others => '0'); + TCR <= (others => '0'); + SER <= (others => '0'); + BSY_LOCK := false; + elsif ADR = "000" and CSn = '0' and WRn = '0' then + ODR <= DATA_IN; + elsif ADR = "001" and CSn = '0' and WRn = '0' then + ICR <= DATA_IN; + elsif ADR = "010" and CSn = '0' and WRn = '0' then + MR2 <= DATA_IN; + elsif ADR = "011" and CSn = '0' and WRn = '0' then + TCR <= DATA_IN(3 downto 0); + elsif ADR = "100" and CSn = '0' and WRn = '0' then + SER <= DATA_IN; + end if; + -- + if ODR_WR = '1' then + ODR <= DATA_IN; + end if; + -- + -- This reset function is edge triggered on the 'Monitor Busy' + -- MR2(2). + if MR2(2) = '1' and BSY_LOCK = false then + ICR(5 downto 0) <= "000000"; + BSY_LOCK := true; + elsif MR2(2) = '0' then + BSY_LOCK := false; + end if; + -- + if DMA_DIS = '1' then + MR2(1) <= '0'; + end if; + end if; + end process REGISTERS; + + IDR_REGISTER: process(RESETn, CLK) + begin + if RESETn = '0' then + IDR <= x"00"; + elsif CLK = '1' and CLK' event then + if RSTn = '0' or ICR(7) = '1' then + IDR <= x"00"; -- SCSI reset. + elsif IDR_WR = '1' then + IDR <= CSD; + end if; + end if; + end process IDR_REGISTER; + + PARITY: process(RESETn, CLK) + -- This is the parity generating logic with it's related + -- error generation. + variable PAR_VAR : bit; + variable LOCK : boolean; + begin + if RESETn = '0' then + SPER <= '0'; + LOCK := false; + elsif CLK = '1' and CLK' event then + -- Parity checked during 'Read from CSD' + -- (registered I/O and selection/reselection): + if ADR = "000" and CSn = '0' and RDn = '0' and LOCK = false then + for i in 1 to 7 loop + PAR_VAR := CSD(i) xor CSD(i-1); + end loop; + SPER <= not PAR_VAR; + LOCK := true; + end if; + -- + -- Parity checking during DMA operation: + if DMA_ACTIVE = '1' and CHK_PAR = '1' then + for i in 1 to 7 loop + PAR_VAR := IDR(i) xor IDR(i-1); + end loop; + SPER <= not PAR_VAR; + LOCK := true; + end if; + -- + -- Reset parity flag: + if MR2(5) <= '0' then -- MR2(5) = PCHK (disabled). + SPER <= '0'; + elsif ADR = "111" and CSn = '0' and RDn = '0' then -- Reset parity/interrupts. + SPER <= '0'; + LOCK := false; + end if; + end if; + end process PARITY; + + DATA_EN <= '1' when ADR < "101" and CSn = '0' and WRn = '0' else '0'; + + SDS <= '1' when ADR = "101" and CSn = '0' and WRn = '0' else '0'; + SDT <= '1' when ADR = "110" and CSn = '0' and WRn = '0' else '0'; + SDI <= '1' when ADR = "111" and CSn = '0' and WRn = '0' else '0'; + + ICR_OUT <= ICR; + TCR_OUT <= TCR; + SER_OUT <= SER; + ODR_OUT <= ODR; + + ARB_EN <= MR2(0); + DMA_EN <= MR2(1); + BSY_DISn <= MR2(2); + EOP_EN <= MR2(3); + PINT_EN <= MR2(4); + TARG <= MR2(6); + BLK <= MR2(7); + + RST <= ICR(7); + + -- Readback, unused bit positions are read back zero. + DATA_OUT <= CSD when ADR = "000" and CSn = '0' and RDn = '0' else -- Current SCSI data. + ICR(7) & AIP & LA & ICR(4 downto 0) when ADR = "001" and CSn = '0' and RDn = '0' else + MR2 when ADR = "010" and CSn = '0' and RDn = '0' else + x"0" & TCR when ADR = "011" and CSn = '0' and RDn = '0' else + CSB when ADR = "100" and CSn = '0' and RDn = '0' else -- Current SCSI bus status. + BSR when ADR = "101" and CSn = '0' and RDn = '0' else -- Bus and status. + IDR when ADR = "110" and CSn = '0' and RDn = '0' else x"00"; -- Input data register. + + RPI <= '1' when ADR = "111" and CSn = '0' and RDn = '0' else '0'; -- Reset parity/interrupts. +end BEHAVIOUR; \ No newline at end of file diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF5380/wf5380_soc_top.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF5380/wf5380_soc_top.vhd new file mode 100644 index 0000000..abc0400 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF5380/wf5380_soc_top.vhd @@ -0,0 +1,300 @@ +---------------------------------------------------------------------- +---- ---- +---- WF5380 IP Core ---- +---- ---- +---- Description: ---- +---- This model provides an asynchronous SCSI interface compa- ---- +---- tible to the DP5380 from National Semiconductor and others. ---- +---- ---- +---- Some remarks to the required input clock: ---- +---- This core is provided for a 16MHz input clock. To use other ---- +---- frequencies, it is necessary to modify the following proces- ---- +---- ses in the control file section: ---- +---- P_BUSFREE, DELAY_800, INTERRUPTS. ---- +---- ---- +---- This file is the top level file without tree state buses for ---- +---- use in 'systems on chip' designs. ---- +---- ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2009 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K9A 2009/06/20 WF +-- Initial Release. +-- + +library work; +use work.wf5380_pkg.all; + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF5380_TOP_SOC is + port ( + -- System controls: + CLK : in bit; -- Use a 16MHz Clock. + RESETn : in bit; + + -- Address and data: + ADR : in bit_vector(2 downto 0); + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_EN : out bit; + + -- Bus and DMA controls: + CSn : in bit; + RDn : in bit; + WRn : in bit; + EOPn : in bit; + DACKn : in bit; + DRQ : out bit; + INT : out bit; + READY : out bit; + + -- SCSI bus: + DB_INn : in bit_vector(7 downto 0); + DB_OUTn : out bit_vector(7 downto 0); + DB_EN : out bit; + DBP_INn : in bit; + DBP_OUTn : out bit; + DBP_EN : out bit; + RST_INn : in bit; + RST_OUTn : out bit; + RST_EN : out bit; + BSY_INn : in bit; + BSY_OUTn : out bit; + BSY_EN : out bit; + SEL_INn : in bit; + SEL_OUTn : out bit; + SEL_EN : out bit; + ACK_INn : in bit; + ACK_OUTn : out bit; + ACK_EN : out bit; + ATN_INn : in bit; + ATN_OUTn : out bit; + ATN_EN : out bit; + REQ_INn : in bit; + REQ_OUTn : out bit; + REQ_EN : out bit; + IOn_IN : in bit; + IOn_OUT : out bit; + IO_EN : out bit; + CDn_IN : in bit; + CDn_OUT : out bit; + CD_EN : out bit; + MSG_INn : in bit; + MSG_OUTn : out bit; + MSG_EN : out bit + ); +end entity WF5380_TOP_SOC; + +architecture STRUCTURE of WF5380_TOP_SOC is +signal ACK_OUT_CTRLn : bit; +signal AIP : bit; +signal ARB : bit; +signal ARB_EN : bit; +signal BLK : bit; +signal BSR : bit_vector(7 downto 0); +signal BSY_DISn : bit; +signal BSY_ERR : bit; +signal BSY_OUT_CTRLn : bit; +signal CHK_PAR : bit; +signal CSD : bit_vector(7 downto 0); +signal CSB : bit_vector(7 downto 0); +signal DATA_EN_CTRL : bit; +signal DB_EN_I : bit; +signal DMA_ACTIVE : bit; +signal DMA_EN : bit; +signal DMA_DIS : bit; +signal DMA_SND : bit; +signal DRQ_I : bit; +signal EDMA : bit; +signal EOP_EN : bit; +signal ICR : bit_vector(7 downto 0); +signal IDR_WR : bit; +signal INT_I : bit; +signal LA : bit; +signal ODR : bit_vector(7 downto 0); +signal ODR_WR : bit; +signal PCHK : bit; +signal PHSM : bit; +signal PINT_EN : bit; +signal REQ_OUT_CTRLn : bit; +signal RPI : bit; +signal RST : bit; +signal SDI : bit; +signal SDS : bit; +signal SDT : bit; +signal SER : bit_vector(7 downto 0); +signal SER_ID : bit; +signal SPER : bit; +signal TARG : bit; +signal TCR : bit_vector(3 downto 0); +begin + EDMA <= '1' when EOPn = '0' and DACKn = '0' and RDn = '0' else + '1' when EOPn = '0' and DACKn = '0' and WRn = '0' else '0'; + + PHSM <= '1' when DMA_ACTIVE = '0' else -- Always true, if there is no DMA. + '1' when DMA_ACTIVE = '1' and REQ_INn = '0' and CDn_In = TCR(1) and IOn_IN = TCR(0) and MSG_INn = TCR(2) else '0'; -- Phasematch. + + DMA_DIS <= '1' when DMA_ACTIVE = '1' and BSY_INn = '1' else '0'; + + SER_ID <= '1' when SER /= x"00" and SER = not CSD else '0'; + + DRQ <= DRQ_I; + INT <= INT_I; + + -- Pay attention: the SCSI bus is driven with inverted signals. + ACK_OUTn <= ACK_OUT_CTRLn when DMA_ACTIVE = '1' else not ICR(4); -- Valid in initiator mode. + REQ_OUTn <= REQ_OUT_CTRLn when DMA_ACTIVE = '1' else not TCR(3); -- Valid in Target mode. + BSY_OUTn <= '0' when BSY_OUT_CTRLn = '0' and TARG = '0' else -- Valid in initiator mode. + '0' when ICR(3) = '1' else '1'; + ATN_OUTn <= not ICR(1); -- Valid in initiator mode. + SEL_OUTn <= not ICR(2); -- Valid in initiator mode. + IOn_OUT <= not TCR(0); -- Valid in Target mode. + CDn_OUT <= not TCR(1); -- Valid in Target mode. + MSG_OUTn <= not TCR(2); -- Valid in Target mode. + RST_OUTn <= not RST; + + DB_OUTn <= not ODR; + DBP_OUTn <= not SPER; + + CSD <= not DB_INn; + CSB <= not RST_INn & not BSY_INn & not REQ_INn & not MSG_INn & not CDn_IN & not IOn_IN & not SEL_INn & not DBP_INn; + BSR <= EDMA & DRQ_I & SPER & INT_I & PHSM & BSY_ERR & not ATN_INn & not ACK_INn; + + -- Hi impedance control: + ATN_EN <= '1' when TARG = '0' else '0'; -- Initiator mode. + SEL_EN <= '1' when TARG = '0' else '0'; -- Initiator mode. + BSY_EN <= '1' when TARG = '0' else '0'; -- Initiator mode. + ACK_EN <= '1' when TARG = '0' else '0'; -- Initiator mode. + IO_EN <= '1' when TARG = '1' else '0'; -- Target mode. + CD_EN <= '1' when TARG = '1' else '0'; -- Target mode. + MSG_EN <= '1' when TARG = '1' else '0'; -- Target mode. + REQ_EN <= '1' when TARG = '1' else '0'; -- Target mode. + RST_EN <= '1' when RST = '1' else '0'; -- Open drain control. + + -- Data enables: + DB_EN_I <= '1' when DATA_EN_CTRL = '1' else -- During Arbitration. + '1' when ICR(0) = '1' and TARG = '1' and DMA_SND = '1' else -- Target 'Send' mode. + '1' when ICR(0) = '1' and TARG = '0' and IOn_IN = '0' and PHSM = '1' else + '1' when ICR(6) = '1' else '0'; -- Test mode enable. + + DB_EN <= DB_EN_I; + DBP_EN <= DB_EN_I; + + I_REGISTERS: WF5380_REGISTERS + port map( + CLK => CLK, + RESETn => RESETn, + ADR => ADR, + DATA_IN => DATA_IN, + DATA_OUT => DATA_OUT, + DATA_EN => DATA_EN, + CSn => CSn, + RDn => RDn, + WRn => WRn, + RSTn => RST_INn, + RST => RST, + ARB_EN => ARB_EN, + DMA_ACTIVE => DMA_ACTIVE, + DMA_EN => DMA_EN, + BSY_DISn => BSY_DISn, + EOP_EN => EOP_EN, + PINT_EN => PINT_EN, + SPER => SPER, + TARG => TARG, + BLK => BLK, + DMA_DIS => DMA_DIS, + IDR_WR => IDR_WR, + ODR_WR => ODR_WR, + CHK_PAR => CHK_PAR, + AIP => AIP, + ARB => ARB, + LA => LA, + CSD => CSD, + CSB => CSB, + BSR => BSR, + ODR_OUT => ODR, + ICR_OUT => ICR, + TCR_OUT => TCR, + SER_OUT => SER, + SDS => SDS, + SDT => SDT, + SDI => SDI, + RPI => RPI + ); + + I_CONTROL: WF5380_CONTROL + port map( + CLK => CLK, + RESETn => RESETn, + BSY_INn => BSY_INn, + BSY_OUTn => BSY_OUT_CTRLn, + DATA_EN => DATA_EN_CTRL, + SEL_INn => SEL_INn, + ARB_EN => ARB_EN, + BSY_DISn => BSY_DISn, + RSTn => RST_INn, + ARB => ARB, + AIP => AIP, + LA => LA, + ACK_INn => ACK_INn, + ACK_OUTn => ACK_OUT_CTRLn, + REQ_INn => REQ_INn, + REQ_OUTn => REQ_OUT_CTRLn, + DACKn => DACKn, + READY => READY, + DRQ => DRQ_I, + TARG => TARG, + BLK => BLK, + PINT_EN => PINT_EN, + SPER => SPER, + SER_ID => SER_ID, + RPI => RPI, + DMA_EN => DMA_EN, + SDS => SDS, + SDT => SDT, + SDI => SDI, + EOP_EN => EOP_EN, + EOPn => EOPn, + PHSM => PHSM, + INT => INT_I, + IDR_WR => IDR_WR, + ODR_WR => ODR_WR, + CHK_PAR => CHK_PAR, + BSY_ERR => BSY_ERR, + DMA_SND => DMA_SND, + DMA_ACTIVE => DMA_ACTIVE + ); +end STRUCTURE; diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF5380/wf5380_top.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF5380/wf5380_top.vhd new file mode 100644 index 0000000..bfb31fb --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF5380/wf5380_top.vhd @@ -0,0 +1,275 @@ +---------------------------------------------------------------------- +---- ---- +---- WF5380 IP Core ---- +---- ---- +---- Description: ---- +---- This model provides an asynchronous SCSI interface compa- ---- +---- tible to the DP5380 from National Semiconductor and others. ---- +---- ---- +---- This file is the top level file with tree state buses. ---- +---- ---- +---- ---- +---- ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2009 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K9A 2009/06/20 WF +-- Initial Release. +-- + +library work; +use work.wf5380_pkg.all; + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF5380_TOP is + port ( + -- System controls: + CLK : in bit; + RESETn : in bit; + + -- Address and data: + ADR : in std_logic_vector(2 downto 0); + DATA : inout std_logic_vector(7 downto 0); + + -- Bus and DMA controls: + CSn : in bit; + RDn : in bit; + WRn : in bit; + EOPn : in bit; + DACKn : in bit; + DRQ : out bit; + INT : out bit; + READY : out bit; + + -- SCSI bus: + DBn : inout std_logic_vector(7 downto 0); + DBPn : inout std_logic; + RSTn : inout std_logic; + BSYn : inout std_logic; + SELn : inout std_logic; + ACKn : inout std_logic; + ATNn : inout std_logic; + REQn : inout std_logic; + IOn : inout std_logic; + CDn : inout std_logic; + MSGn : inout std_logic + ); +end entity WF5380_TOP; + +architecture STRUCTURE of WF5380_TOP is +component WF5380_TOP_SOC + port ( + -- System controls: + CLK : in bit; + RESETn : in bit; + ADR : in bit_vector(2 downto 0); + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_EN : out bit; + CSn : in bit; + RDn : in bit; + WRn : in bit; + EOPn : in bit; + DACKn : in bit; + DRQ : out bit; + INT : out bit; + READY : out bit; + DB_INn : in bit_vector(7 downto 0); + DB_OUTn : out bit_vector(7 downto 0); + DB_EN : out bit; + DBP_INn : in bit; + DBP_OUTn : out bit; + DBP_EN : out bit; + RST_INn : in bit; + RST_OUTn : out bit; + RST_EN : out bit; + BSY_INn : in bit; + BSY_OUTn : out bit; + BSY_EN : out bit; + SEL_INn : in bit; + SEL_OUTn : out bit; + SEL_EN : out bit; + ACK_INn : in bit; + ACK_OUTn : out bit; + ACK_EN : out bit; + ATN_INn : in bit; + ATN_OUTn : out bit; + ATN_EN : out bit; + REQ_INn : in bit; + REQ_OUTn : out bit; + REQ_EN : out bit; + IOn_IN : in bit; + IOn_OUT : out bit; + IO_EN : out bit; + CDn_IN : in bit; + CDn_OUT : out bit; + CD_EN : out bit; + MSG_INn : in bit; + MSG_OUTn : out bit; + MSG_EN : out bit + ); +end component; +-- +signal ADR_IN : bit_vector(2 downto 0); +signal DATA_IN : bit_vector(7 downto 0); +signal DATA_OUT : bit_vector(7 downto 0); +signal DATA_EN : bit; +signal DB_INn : bit_vector(7 downto 0); +signal DB_OUTn : bit_vector(7 downto 0); +signal DB_EN : bit; +signal DBP_INn : bit; +signal DBP_OUTn : bit; +signal DBP_EN : bit; +signal RST_INn : bit; +signal RST_OUTn : bit; +signal RST_EN : bit; +signal BSY_INn : bit; +signal BSY_OUTn : bit; +signal BSY_EN : bit; +signal SEL_INn : bit; +signal SEL_OUTn : bit; +signal SEL_EN : bit; +signal ACK_INn : bit; +signal ACK_OUTn : bit; +signal ACK_EN : bit; +signal ATN_INn : bit; +signal ATN_OUTn : bit; +signal ATN_EN : bit; +signal REQ_INn : bit; +signal REQ_OUTn : bit; +signal REQ_EN : bit; +signal IOn_IN : bit; +signal IOn_OUT : bit; +signal IO_EN : bit; +signal CDn_IN : bit; +signal CDn_OUT : bit; +signal CD_EN : bit; +signal MSG_INn : bit; +signal MSG_OUTn : bit; +signal MSG_EN : bit; +begin + ADR_IN <= To_BitVector(ADR); + + DATA_IN <= To_BitVector(DATA); + DATA <= To_StdLogicVector(DATA_OUT) when DATA_EN = '1' else (others => 'Z'); + + DB_INn <= To_BitVector(DBn); + DBn <= To_StdLogicVector(DB_OUTn) when DB_EN = '1' else (others => 'Z'); + + DBP_INn <= To_Bit(DBPn); + + RST_INn <= To_Bit(RSTn); + BSY_INn <= To_Bit(BSYn); + SEL_INn <= To_Bit(SELn); + ACK_INn <= To_Bit(ACKn); + ATN_INn <= To_Bit(ATNn); + REQ_INn <= To_Bit(REQn); + IOn_IN <= To_Bit(IOn); + CDn_IN <= To_Bit(CDn); + MSG_INn <= To_Bit(MSGn); + + DBPn <= '1' when DBP_OUTn = '1' and DBP_EN = '1' else + '0' when DBP_OUTn = '0' and DBP_EN = '1' else 'Z'; + RSTn <= '1' when RST_OUTn = '1' and RST_EN = '1'else + '0' when RST_OUTn = '0' and RST_EN = '1' else 'Z'; + BSYn <= '1' when BSY_OUTn = '1' and BSY_EN = '1' else + '0' when BSY_OUTn = '0' and BSY_EN = '1' else 'Z'; + SELn <= '1' when SEL_OUTn = '1' and SEL_EN = '1' else + '0' when SEL_OUTn = '0' and SEL_EN = '1' else 'Z'; + ACKn <= '1' when ACK_OUTn = '1' and ACK_EN = '1' else + '0' when ACK_OUTn = '0' and ACK_EN = '1' else 'Z'; + ATNn <= '1' when ATN_OUTn = '1' and ATN_EN = '1' else + '0' when ATN_OUTn = '0' and ATN_EN = '1' else 'Z'; + REQn <= '1' when REQ_OUTn = '1' and REQ_EN = '1' else + '0' when REQ_OUTn = '0' and REQ_EN = '1' else 'Z'; + IOn <= '1' when IOn_OUT = '1' and IO_EN = '1' else + '0' when IOn_OUT = '0' and IO_EN = '1' else 'Z'; + CDn <= '1' when CDn_OUT = '1' and CD_EN = '1' else + '0' when CDn_OUT = '0' and CD_EN = '1' else 'Z'; + MSGn <= '1' when MSG_OUTn = '1' and MSG_EN = '1' else + '0' when MSG_OUTn = '0' and MSG_EN = '1' else 'Z'; + + I_5380: WF5380_TOP_SOC + port map( + CLK => CLK, + RESETn => RESETn, + ADR => ADR_IN, + DATA_IN => DATA_IN, + DATA_OUT => DATA_OUT, + DATA_EN => DATA_EN, + CSn => CSn, + RDn => RDn, + WRn => WRn, + EOPn => EOPn, + DACKn => DACKn, + DRQ => DRQ, + INT => INT, + READY => READY, + DB_INn => DB_INn, + DB_OUTn => DB_OUTn, + DB_EN => DB_EN, + DBP_INn => DBP_INn, + DBP_OUTn => DBP_OUTn, + DBP_EN => DBP_EN, + RST_INn => RST_INn, + RST_OUTn => RST_OUTn, + RST_EN => RST_EN, + BSY_INn => BSY_INn, + BSY_OUTn => BSY_OUTn, + BSY_EN => BSY_EN, + SEL_INn => SEL_INn, + SEL_OUTn => SEL_OUTn, + SEL_EN => SEL_EN, + ACK_INn => ACK_INn, + ACK_OUTn => ACK_OUTn, + ACK_EN => ACK_EN, + ATN_INn => ATN_INn, + ATN_OUTn => ATN_OUTn, + ATN_EN => ATN_EN, + REQ_INn => REQ_INn, + REQ_OUTn => REQ_OUTn, + REQ_EN => REQ_EN, + IOn_IN => IOn_IN, + IOn_OUT => IOn_OUT, + IO_EN => IO_EN, + CDn_IN => CDn_IN, + CDn_OUT => CDn_OUT, + CD_EN => CD_EN, + MSG_INn => MSG_INn, + MSG_OUTn => MSG_OUTn, + MSG_EN => MSG_EN + ); +end STRUCTURE; diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_am_detector.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_am_detector.vhd new file mode 100644 index 0000000..10a86f9 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_am_detector.vhd @@ -0,0 +1,253 @@ +---------------------------------------------------------------------- +---- ---- +---- WD1772 compatible floppy disk controller IP Core. ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- Floppy disk controller with all features of the Western ---- +---- Digital WD1772-02 controller. ---- +---- ---- +---- Address mark detector file. This part detects the address ---- +---- mark in the incoming data stream in FM and also in MFM mode ---- +---- and provides therewith synchronisation information for the ---- +---- control state machine and for the data separator in the ---- +---- transceiver unit. ---- +---- ---- +------------------------------- Some theory ------------------------------------- +---- Frequency modulation FM: ---- +---- The frequency modulation works as follows: ---- +---- 1. every first pulse of the clock and data line is a clock. ---- +---- 2. every second pulse is a data. ---- +---- 3. a logic 1 is represented by two consecutive pulses (clock and data). ---- +---- 4. a logic 0 is represented by one clock pulse and no data pulse. ---- +---- 5. Hence there are a maximum of two pulses per data bit. ---- +---- 6. one clock and one data pulse come together in one bit cell. ---- +---- 7. the duration of a bit cell in FM is 4 microseconds. ---- +---- 8. an ID address mark is represented as data FE with clock C7. ---- +---- 9. a DATA address mark is represented as data FB with clock C7. ---- +---- Examples: ---- +---- Binary data 1 1 0 0 1 0 1 1 is represented in FM as follows: ---- +---- 1111101011101111 ---- +---- the FE data 1 1 1 1 1 1 1 0 is represented as follows: ---- +---- 1111111111111110 ---- +---- with C7 clock mask 1 1 0 0 0 1 1 1 which masks the clock pulses there ---- +---- results: 1111010101111110 this is the ID address mark. ---- +---- the FB data 1 1 1 1 1 0 1 1 is represented as follows: ---- +---- 1111111111101111 ---- +---- with C7 clock mask 1 1 0 0 0 1 1 1 which masks the clock pulses there ---- +---- results: 1111010101101111 this is the DATA address mark. ---- +---- the F8 data 1 1 1 1 1 0 0 0 is represented as follows: ---- +---- 1111111111101010 ---- +---- with C7 clock mask 1 1 0 0 0 1 1 1 which masks the clock pulses there ---- +---- results: 1111010101101010 this is the deleted DATA mark. ---- +---- ---- +---- ---- +---- Modified frequency modulation MFM: ---- +---- The modified frequency modulation works as follows: ---- +---- 1. every first pulse of the clock and data line is a clock. ---- +---- 2. every second pulse is a data. ---- +---- 3. a logic 1 is represented by no clock but a data pulse. ---- +---- 4. a logic 0 is represented by a clock pulse and no data pulse if ---- +---- following a 0. ---- +---- 5. a logic 0 is represented by no pulse if following a 1. ---- +---- 6. Hence there are a maximum of one pulse per data bit. ---- +---- 7. one clock and one data pulse form together one bit cell. ---- +---- 8. the duration of a bit cell in MFM is 2 microseconds. ---- +---- 9. an address mark sync is represented as data A1 with missing clock ---- +---- pulse between bit 4 and 5. ---- +---- Examples: ---- +---- Binary data FE 1 1 1 1 1 1 1 0 is represented in MFM as follows: ---- +---- 0101010101010100 this is the ID address mark. ---- +---- Binary data FB 1 1 1 1 1 0 1 1 is represented in MFM as follows: ---- +---- 0101010101000101 this is the DATA address mark. ---- +---- Binary data F8 1 1 1 1 1 0 0 0 is represented in MFM as follows: ---- +---- 0101010101001010 this is the deleted DATA address mark. ---- +---- the A1 data 1 0 1 0 0 0 0 1 is represented as follows: ---- +---- 0100010010101001 ---- +---- with the missing clock pulse between bits 4 and 5 there results: ---- +---- results: 0100010010001001 this is the address mark sync. ---- +---- ---- +---- Both MFM and FM are during read and write shifted with most significant ---- +---- bit (MSB) first. During the FM address marks are written without a ---- +---- SYNC pulse the MFM coded data requires a synchronisation (A1 with ---- +---- missing clock pulse because at the beginning of the data stream it is ---- +---- not defined wether a clock pulse or a data pulse appears first. In FM ---- +---- coding the first pulse is in any case a clock pulse. ---- +--------------------------------------------------------------------------------- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2006A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/05 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF1772IP_AM_DETECTOR is + port( + -- System control + CLK : in bit; + RESETn : in bit; + + -- Controls: + DDEn : in bit; + + -- Serial data and clock: + DATA : in bit; + DATA_STRB : in bit; + + -- Address mark detector: + ID_AM : out bit; -- ID address mark strobe. + DATA_AM : out bit; -- Data address mark strobe. + DDATA_AM : out bit -- Deleted data address mark strobe. + ); +end WF1772IP_AM_DETECTOR; + +architecture BEHAVIOR of WF1772IP_AM_DETECTOR is +signal SHIFT : bit_vector(15 downto 0); +signal SYNC : boolean; +signal ID_AM_I : bit; +signal DATA_AM_I : bit; +signal DDATA_AM_I : bit; +begin + SHIFTREG: process(RESETn, CLK) + begin + if RESETn = '0' then + SHIFT <= (others => '0'); + elsif CLK = '1' and CLK' event then + if DATA_STRB = '1' then + -- MSB first leads to a shift left operation. + SHIFT <= SHIFT(14 downto 0) & DATA; + elsif DDEn = '0' and SHIFT = "0100010010001001" then -- This is the synchronisation in MFM. + SHIFT <= (others => '0'); + end if; + end if; + end process SHIFTREG; + + MFM_SYNCLOCK: process(RESETn, CLK) + -- The SYNC pulse is generated in MFM mode only when the sync character + -- appears in the shift register (A1 sync mark, see file header). + -- After the sync character is detected, the sync time counter is loaded + -- with a value of 17. During counting the following 17 read clock pulses + -- down, the SYNC is true. After exactly 16 pulses the address mark is + -- detected if the pattern in the shift register fits one of the address + -- marks. The address mark pulses are valid for one read clock cycle until + -- SYNC goes low again. This mechanism is used to detect the correct address + -- marks in the MFM data stream during the type III read track command. + -- This is an improvement over the original WD1772 chip. + variable TMP : std_logic_vector(4 downto 0); + begin + if RESETn = '0' then + TMP := "00000"; + elsif CLK = '1' and CLK' event then + if SHIFT = "0100010010001001" and DDEn = '0' then + TMP := "10001"; -- Load sync time counter. + elsif DATA_STRB = '1' and TMP > "00000" then + TMP := TMP - '1'; + end if; + end if; + case TMP is + when "00000" => SYNC <= false; + when others => SYNC <= true; + end case; + end process MFM_SYNCLOCK; + + -- The addressmark is nominally valid for one data pulse cycle (1us, 2us, 4us). + -- The pulse is shorter due to the fact that the detected address marks change the + -- state of the control state machine and so clear the address mark shift register... + ID_AM_I <= '1' when DDEn = '1' and SHIFT = "1111010101111110" else + '1' when DDEn = '0' and SHIFT = "0101010101010100" and SYNC = true else '0'; + DATA_AM_I <= '1' when DDEn = '1' and SHIFT = "1111010101101111" else + -- Normal data address mark... + '1' when DDEn = '0' and SHIFT = "0101010101000101" and SYNC = true else '0'; + DDATA_AM_I <= '1' when DDEn = '1' and SHIFT = "1111010101101010" else + -- ... and deleted address mark in MFM mode: + '1' when DDEn = '0' and SHIFT = "0101010101001010" and SYNC = true else '0'; + + ADRMARK_STROBES: process(RESETn, CLK) + -- ... nevertheless The controller and the transceiver require ID address mark strobes + -- and DATA address mark strobes. Therefore this process provides these strobe + -- signals independant of any 'feedbacks' like pulse shortening by the controller + -- state machine itself. + variable ID_AM_LOCK, DATA_AM_LOCK, DDATA_AM_LOCK : boolean; + begin + if RESETn = '0' then + ID_AM_LOCK := false; + DATA_AM_LOCK := false; + ID_AM <= '0'; + DATA_AM <= '0'; + elsif CLK = '1' and CLK' event then + -- ID address mark: + if ID_AM_I = '1' and ID_AM_LOCK = false then + ID_AM <= '1'; + ID_AM_LOCK := true; + elsif ID_AM_I = '0' then + ID_AM <= '0'; + ID_AM_LOCK := false; + else + ID_AM <= '0'; + end if; + -- Data address mark: + if DATA_AM_I = '1' and DATA_AM_LOCK = false then + DATA_AM <= '1'; + DATA_AM_LOCK := true; + elsif DATA_AM_I = '0' then + DATA_AM <= '0'; + DATA_AM_LOCK := false; + else + DATA_AM <= '0'; + end if; + -- Deleted data address mark: + if DDATA_AM_I = '1' and DDATA_AM_LOCK = false then + DDATA_AM <= '1'; + DDATA_AM_LOCK := true; + elsif DDATA_AM_I = '0' then + DDATA_AM <= '0'; + DDATA_AM_LOCK := false; + else + DDATA_AM <= '0'; + end if; + end if; + end process ADRMARK_STROBES; +end architecture BEHAVIOR; diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_control.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_control.vhd new file mode 100644 index 0000000..ce4c346 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_control.vhd @@ -0,0 +1,1463 @@ +---------------------------------------------------------------------- +---- ---- +---- WD1772 compatible floppy disk controller IP Core. ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- Floppy disk controller with all features of the Western ---- +---- Digital WD1772-02 controller. ---- +---- ---- +---- This is file the control unit providing all signals for the ---- +---- data processing units like registers, addressmark detector, ---- +---- data separator, CRC redundancy checker or transceiver. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2006A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/05 WF +-- Modified Source to compile with the Xilinx ISE. +-- Fixed the polarity of the precompensation flag. +-- The flag is no active '0'. Thanks to Jorma +-- Oksanen for the information. +-- Revision 2K8A 2008/02/26 WF +-- Fixed a bug in the 6ms delay. Thanks to Lyndon Amsdon. +-- Revision 2K8B 2008/12/24 WF +-- Bugfixes to avoid hanging state machine. +-- Changed DELAY_30MS to DELAY_15MS, which is the correct value. Thanks to L. Amsdon for the information. +-- Removed CRC_BUSY. +-- Fixed a bug in the Delay for the state T2_VERIFY_AM. +-- Revision 2K9A 2009/06/20 WF +-- Fix to provide correct LOST_DATA_TR00 flag during seek command. + + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF1772IP_CONTROL is + port( + -- System control: + CLK : in bit; + RESETn : in bit; + + -- Chip control signals: + A1, A0 : in bit; + RWn : in bit; + CSn : in bit; + DDEn : in bit; + + -- Registers: + DR : in bit_vector(7 downto 0); -- Data register. + CMD : in std_logic_vector(7 downto 0); -- Command register. + DSR : in std_logic_vector(7 downto 0); -- Shift register. + TR : in std_logic_vector(7 downto 0); -- Track register. + SR : in std_logic_vector(7 downto 0); -- Sector register. + + -- Status flags: + MO : buffer bit; -- Motor on status flag. + WR_PR : out bit; -- Write protect status flag. + SPINUP_RECTYPE : out bit; -- Spin up / record type status flag. + SEEK_RNF : out bit; -- Seek error / record not found status flag. + CRC_ERRFLAG : out bit; -- CRC status flag. + LOST_DATA_TR00 : out bit; -- Status flag indicates lost data or track 00 position. + DRQ : out bit; -- Data request. + DRQ_IPn : out bit; -- Data request status flag. + BUSY : buffer bit; -- BUSY status flag. + + -- Address mark detector controls: + AM_2_DISK : out bit; -- Enables / disables the address mark detector. + ID_AM : in bit; -- Address mark of the ID field + DATA_AM : in bit; -- Address mark of the data field + DDATA_AM : in bit; -- Address mark of a deleted data field + + -- CRC unit controls: + CRC_ERR : in bit; -- CRC decoder's error. + CRC_PRES : out bit; -- Preset CRC during write operations. + + -- Track register controls: + TR_PRES : out bit; -- Set x"FF". + TR_CLR : out bit; -- Clear. + TR_INC : out bit; -- Increment. + TR_DEC : out bit; -- Decrement. + + -- Sector register control: + SR_LOAD : out bit; -- Load. + SR_INC : out bit; -- Increment. + -- The TRACK_NR is required during the type III command + -- 'Read Address'. TRACK_NR is the content of the TRACKMEM. + TRACK_NR : out std_logic_vector(7 downto 0); + + -- DATA register control: + DR_CLR : out bit; -- Clear. + DR_LOAD : out bit; -- LOAD. + + -- Shift register control: + SHFT_LOAD_ND : out bit; -- Load normal data. + SHFT_LOAD_SD : out bit; -- Load special data. + + -- Transceiver controls: + CRC_2_DISK : out bit; -- Cause the Transceiver to write out CRC data. + DSR_2_DISK : out bit; -- Cause the Transceiver to write normal data. + FF_2_DISK : out bit; -- Cause the Transceiver to write x"FF" bytes. + PRECOMP_EN : out bit; -- Enables the write precompensation. + + -- Miscellaneous Controls: + DATA_STRB : in bit; -- Data strobe (read and write operation) + WPRTn : in bit; -- Write protect flag + IPn : in bit; -- Index pulse flag + TRACK00n : in bit; -- Track zero flag + DISK_RWn : out bit; -- This signal reflects the data direction. + DIRC : out bit; -- Step direction control. + STEP : out bit; -- Step pulse. + WG : out bit; -- Write gate control. + INTRQ : out bit -- Interrupt request flag. + ); +end WF1772IP_CONTROL; + +architecture BEHAVIOR of WF1772IP_CONTROL is +-- The control state machine for the three command types I, II and III +-- (10 commands) has 73 states: +type CMD_STATES is( IDLE, INIT, SPINUP, DELAY_15MS, DECODE, T1_SEEK_RESTORE, T1_STEPPING, + T1_LOAD_SHFT, T1_COMP_TR_DSR, T1_CHECK_DIR, T1_HEAD_CTRL, T1_STEP, T1_TRAP, T1_STEP_DELAY, + T1_SPINDOWN, T1_SCAN_TRACK, T1_SCAN_CRC, T1_VERIFY_DELAY, T1_VERIFY_CRC, T2_RD_WR_SECT, + T2_INIT, T2_SCAN_TRACK, T2_SCAN_SECT, T2_SCAN_LEN, T2_VERIFY_CRC_1, T2_VERIFY_AM, T2_FIRSTBYTE, + T2_LOAD_DATA, T2_NEXTBYTE, T2_VERIFY_DRQ_1, T2_RDSTAT, T2_VERIFY_CRC_2, + T2_MULTISECT, T2_DELAY_B2, T2_SET_DRQ, T2_DELAY_B8, T2_VERIFY_DRQ_2, + T2_DELAY_B1, T2_CHECK_MODE, T2_DELAY_B11, T2_WR_LEADIN, T2_WR_AM, + T2_LOAD_SHFT, T2_WR_BYTE, T2_VERIFY_DRQ_3, T2_DATALOST, T2_WRSTAT, T2_WR_CRC, + T2_WR_FF, T3_WR, T3_DELAY_B3, T3_VERIFY_DRQ, T3_CHECK_INDEX_1, T3_LOAD_SHFT, + T3_WR_DATA, T3_CHECK_INDEX_2, T3_DATALOST, T3_RD_TRACK, T3_SHIFT, + T3_CHECK_INDEX_3, T3_DETECT_AM, T3_CHECK_BYTE, T3_CHECK_DR, T3_LOAD_DATA_1, + T3_SET_DRQ_1, T3_RD_ADR, T3_VERIFY_AM, T3_SHIFT_ADR, T3_LOAD_DATA_2, + T3_SET_DRQ_2, T3_CHECK_RD, T3_LOAD_SR, T3_VERIFY_CRC); +signal CMD_STATE : CMD_STATES; +signal NEXT_CMD_STATE : CMD_STATES; +signal DATA_WR : boolean; +signal DATA_RD : boolean; +signal CMD_WR : boolean; +signal STAT_RD : boolean; +signal DELAY : boolean; +signal DRQ_I : bit; +signal INDEX_CNT : boolean; +signal DIR : bit; +signal INDEX_MARK : bit; +signal STEP_TRAP : boolean; +signal TYPE_IV_BREAK : boolean; +signal BYTE_RDY : boolean; +signal SECT_LEN : std_logic_vector(10 downto 0); +signal TRACKMEM : std_logic_vector(7 downto 0); +signal T3_TRADR : boolean; +signal T3_DATATYPE : bit_vector(7 downto 0); +begin + -- The Forced interrupt stops any command at the end of an internal micro instruction. + -- Forced interrupt waits until ALU operations in progress are complete (CRC calculations, + -- compares etc.). the TYPE_IV_BREAK controls this behavior. + TYPE_IV_BREAK <= true when CMD(7 downto 4) = x"D" and DELAY = true else false; + + CMD_REG: process(RESETn, CLK) + begin + if RESETn = '0' then + CMD_STATE <= IDLE; + elsif CLK = '1' and CLK' event then + if TYPE_IV_BREAK = true then + CMD_STATE <= IDLE; -- Forced interrupt break. + else + CMD_STATE <= NEXT_CMD_STATE; -- Normal operation. + end if; + end if; + end process CMD_REG; + + CMD_DECODER: process(CMD_STATE, CMD, DSR, TR, SR, INDEX_CNT, IPn, INDEX_MARK, DELAY, DIR, MO, CMD_WR, DRQ_I, + DDEn, CRC_ERR, TRACK00n, STEP_TRAP, ID_AM, DATA_AM, DDATA_AM, WPRTn, SECT_LEN, BYTE_RDY, + T3_TRADR) + begin + case CMD_STATE is + -------------------------------------------------------------------- + ------------------ type1, -2, -3 command stuff --------------------- + -------------------------------------------------------------------- + when IDLE => + -- The write access to the command register indicates a new command. + -- Any command received (type1, -2 or -3 but not type4): + if CMD_WR = true and CMD /= x"FF" and CMD(7 downto 4) /= "1101" then + NEXT_CMD_STATE <= INIT; + else + NEXT_CMD_STATE <= IDLE; -- No CMD detected. + end if; + when INIT => + -- The process goes on when the CMD_WR flag is released. + if CMD_WR = false and CMD(3) = '0' and MO = '0' then + -- Do not enter the SPINUP sequence + -- when the motor is already on (MO = '1'). + NEXT_CMD_STATE <= SPINUP; + elsif CMD_WR = false then + -- Proceed with the DELAY_15MS when the motor was + -- already on or when the SPINUP sequence is + -- disabled (CMD(3) = '1'). + NEXT_CMD_STATE <= DELAY_15MS; + else + NEXT_CMD_STATE <= INIT; + end if; + when SPINUP => + if INDEX_CNT = true then -- proceed after 6 revolutions + NEXT_CMD_STATE <= DELAY_15MS; + else + NEXT_CMD_STATE <= SPINUP; + end if; + when DELAY_15MS => + if CMD(7) = '0' then -- No delay for type1 commands. + NEXT_CMD_STATE <= DECODE; + elsif CMD(7) = '1' and CMD(2) = '0' then -- Delay for type2 and -3 disabled. + NEXT_CMD_STATE <= DECODE; + elsif CMD(7) = '1' and CMD(2) = '1' and DELAY = true then -- Delay enabled by CMD(2). + NEXT_CMD_STATE <= DECODE; + else + NEXT_CMD_STATE <= DELAY_15MS; + end if; + when DECODE => + case CMD(7 downto 5) is + when "000" => -- 'restore', 'seek'. + NEXT_CMD_STATE <= T1_SEEK_RESTORE; + when "001" |"010" | "011" => -- 'step', 'step in', 'step out'. + NEXT_CMD_STATE <= T1_STEPPING; + when "100" | "101" => -- 'read sector', 'write sector' + NEXT_CMD_STATE <= T2_RD_WR_SECT; + when "110" => -- 'read address'. + -- "110" is also used by the 'force interrupt'. + -- There will result no wrong encoding because + -- the 'force intterrupt' is predecoded in IDLE. + NEXT_CMD_STATE <= T3_RD_ADR; + when "111" => -- 'read track', 'write track'. + case CMD(4) is + when '0' => NEXT_CMD_STATE <= T3_RD_TRACK; + when '1' => NEXT_CMD_STATE <= T3_WR; + when others => NEXT_CMD_STATE <= T3_WR; -- Dummy for U, X, Z, W, H, L, -. + end case; + when others => + -- The following NEXT_CMD_STATE is chosen to compile fine with + -- the Xilinx ISE not to produce a latch. + NEXT_CMD_STATE <= IDLE; -- Never true due to IDLE preselection. + end case; + -------------------------------------------------------------------- + ------------------ special type1 command stuff --------------------- + -------------------------------------------------------------------- + when T1_SEEK_RESTORE => + -- In this state, the data register and the track register are updated, if the + -- command is a RESTORE. The update is done further down with the track register + -- and the data register controls. + NEXT_CMD_STATE <= T1_LOAD_SHFT; + when T1_STEPPING => + if CMD(4) = '1' then -- '1' means update track register. + NEXT_CMD_STATE <= T1_CHECK_DIR; + else + NEXT_CMD_STATE <= T1_HEAD_CTRL; + end if; + when T1_LOAD_SHFT => + NEXT_CMD_STATE <= T1_COMP_TR_DSR; + when T1_COMP_TR_DSR => + if DSR = TR then + NEXT_CMD_STATE <= T1_VERIFY_DELAY; + else + -- The direction control is done further down. + NEXT_CMD_STATE <= T1_CHECK_DIR; + end if; + when T1_CHECK_DIR => + -- Track register modifications are done in + -- statements further down. + -- The delay is to provide the timing of the WD1772 which is DIR to step = + -- 24us in MFM mode and 48us in FM mode. + if DELAY = true then + NEXT_CMD_STATE <= T1_HEAD_CTRL; + else + NEXT_CMD_STATE <= T1_CHECK_DIR; + end if; + when T1_HEAD_CTRL => + if TRACK00n = '0' and DIR = '0' then + NEXT_CMD_STATE <= T1_VERIFY_DELAY; + else + NEXT_CMD_STATE <= T1_STEP; + end if; + when T1_STEP => + NEXT_CMD_STATE <= T1_TRAP; + when T1_TRAP => + if STEP_TRAP = true then + NEXT_CMD_STATE <= IDLE; -- Break due to seek error. + else + NEXT_CMD_STATE <= T1_STEP_DELAY; + end if; + when T1_STEP_DELAY => + -- The delay in here is according to the CMD(1 downto 0) as follows: + -- "11" = 3ms, "10" = 2ms, "01" = 12ms, "00" = 6ms. + if DELAY = true then + case CMD(7 downto 5) is + when "001" | "010" | "011" => -- STEP - STEP IN - STEP OUT. + NEXT_CMD_STATE <= T1_VERIFY_DELAY; + when others => -- Seek or restore command. + NEXT_CMD_STATE <= T1_LOAD_SHFT; + end case; + else + NEXT_CMD_STATE <= T1_STEP_DELAY; + end if; + when T1_VERIFY_DELAY => + if CMD(2) = '0' then -- No verify. + NEXT_CMD_STATE <= IDLE; + else + if DELAY = true then -- Wait, if verify is active. + NEXT_CMD_STATE <= T1_SPINDOWN; + else + NEXT_CMD_STATE <= T1_VERIFY_DELAY; + end if; + end if; + when T1_SPINDOWN => -- Detect ID address mark in here. + if INDEX_CNT = true then + NEXT_CMD_STATE <= IDLE; -- Break due to timeout. + elsif ID_AM = '1' then -- Addressmark found. + NEXT_CMD_STATE <= T1_SCAN_TRACK; + else + NEXT_CMD_STATE <= T1_SPINDOWN; + end if; + when T1_SCAN_TRACK => + if DELAY = true then + -- Track found if shift register (DSR) equals track register (TR). + if DSR = TR then + NEXT_CMD_STATE <= T1_SCAN_CRC; + else + NEXT_CMD_STATE <= T1_SPINDOWN; + end if; + else + NEXT_CMD_STATE <= T1_SCAN_TRACK; + end if; + when T1_SCAN_CRC => + -- Scan the rest of the data header for correct CRC generation (3 Bytes). + -- Sector number side select byte and data length byte. + if DELAY = true then + NEXT_CMD_STATE <= T1_VERIFY_CRC; + else + NEXT_CMD_STATE <= T1_SCAN_CRC; + end if; + when T1_VERIFY_CRC => + -- The CRC logic starts during T1_SPINDOWN (missing clock transitions). + if DELAY = true then + if CRC_ERR = '1' then + NEXT_CMD_STATE <= T1_SPINDOWN; -- CRC error. + else + NEXT_CMD_STATE <= IDLE; -- Operation finished. + end if; + else + NEXT_CMD_STATE <= T1_VERIFY_CRC; -- Wait until CRC logic is ready. + end if; + -------------------------------------------------------------------- + ------------------ special type2 command stuff --------------------- + -------------------------------------------------------------------- + when T2_RD_WR_SECT => + if CMD(7 downto 5) = "101" and WPRTn = '0' then + NEXT_CMD_STATE <= IDLE; -- Break due to write protected disk. + else + NEXT_CMD_STATE <= T2_INIT; + end if; + when T2_INIT => + if INDEX_CNT = true then + NEXT_CMD_STATE <= IDLE; -- Break due to timeout. + elsif ID_AM = '0' then + NEXT_CMD_STATE <= T2_INIT; -- Wait for address mark. + else -- INDEX_CNT = false and ID_AM = '1' -> ID address mark detected + NEXT_CMD_STATE <= T2_SCAN_TRACK; + end if; + when T2_SCAN_TRACK => + -- Track found if shift register (DSR) equals track register (TR). + if DELAY = true then + if DSR = TR then + NEXT_CMD_STATE <= T2_SCAN_SECT; + else + NEXT_CMD_STATE <= T2_INIT; + end if; + else + NEXT_CMD_STATE <= T2_SCAN_TRACK; + end if; + when T2_SCAN_SECT => + -- Sector found if shift register (DSR) equals sector register (SR). + if DELAY = true then + if DSR = SR then + NEXT_CMD_STATE <= T2_SCAN_LEN; + else + NEXT_CMD_STATE <= T2_INIT; + end if; + else + NEXT_CMD_STATE <= T2_SCAN_SECT; + end if; + when T2_SCAN_LEN => + if DELAY = true then + NEXT_CMD_STATE <= T2_VERIFY_CRC_1; + else + NEXT_CMD_STATE <= T2_SCAN_LEN; + end if; + when T2_VERIFY_CRC_1 => + -- The CRC logic starts after T2_INIT (missing clock transitions). + if DELAY = true then + if CRC_ERR = '1' then + NEXT_CMD_STATE <= T2_INIT; -- CRC error. + elsif CRC_ERR = '0' and CMD(7 downto 5) = "101" then + NEXT_CMD_STATE <= T2_DELAY_B2; -- Comand is a write. + else -- Command is a read. + NEXT_CMD_STATE <= T2_VERIFY_AM; + end if; + else + NEXT_CMD_STATE <= T2_VERIFY_CRC_1; -- Wait until CRC logic is ready. + end if; + when T2_VERIFY_AM => + if DATA_AM = '1' or DDATA_AM = '1' then -- Data address mark detected, go on. + NEXT_CMD_STATE <= T2_FIRSTBYTE; + elsif DELAY = false then -- Stay in this state. + NEXT_CMD_STATE <= T2_VERIFY_AM; + else + NEXT_CMD_STATE <= T2_INIT; -- No addressmark detected. + end if; + when T2_FIRSTBYTE => + if DELAY = true then + NEXT_CMD_STATE <= T2_LOAD_DATA; + else + NEXT_CMD_STATE <= T2_FIRSTBYTE; + end if; + when T2_LOAD_DATA => + NEXT_CMD_STATE <= T2_NEXTBYTE; + when T2_NEXTBYTE => + if DELAY = true then + NEXT_CMD_STATE <= T2_VERIFY_DRQ_1; + else + NEXT_CMD_STATE <= T2_NEXTBYTE; + end if; + when T2_VERIFY_DRQ_1 => + NEXT_CMD_STATE <= T2_RDSTAT; + when T2_RDSTAT => + if SECT_LEN = "00000000000" then + NEXT_CMD_STATE <= T2_VERIFY_CRC_2; + else + NEXT_CMD_STATE <= T2_LOAD_DATA; + end if; + when T2_VERIFY_CRC_2 => + -- The CRC logic starts after T2_VERIFY_AM (missing clock transitions). + if DELAY = true then + if CRC_ERR = '1' then + NEXT_CMD_STATE <= IDLE; -- Break due to CRC error. + else + NEXT_CMD_STATE <= T2_MULTISECT; + end if; + else + NEXT_CMD_STATE <= T2_VERIFY_CRC_2; -- Wait until CRC logic is ready. + end if; + when T2_MULTISECT => + if CMD(4) = '1' then + NEXT_CMD_STATE <= T2_RD_WR_SECT; + else + NEXT_CMD_STATE <= IDLE; -- Operation finished. + end if; + when T2_DELAY_B2 => + if DELAY = true then + NEXT_CMD_STATE <= T2_SET_DRQ; + else + NEXT_CMD_STATE <= T2_DELAY_B2; + end if; + when T2_SET_DRQ => + NEXT_CMD_STATE <= T2_DELAY_B8; + when T2_DELAY_B8 => + if DELAY = true then + NEXT_CMD_STATE <= T2_VERIFY_DRQ_2; + else + NEXT_CMD_STATE <= T2_DELAY_B8; + end if; + when T2_VERIFY_DRQ_2 => + if DRQ_I = '0' then + NEXT_CMD_STATE <= T2_DELAY_B1; + else + NEXT_CMD_STATE <= IDLE; -- Break due to lost data (no new data by host). + end if; + when T2_DELAY_B1 => + if DELAY = true then + NEXT_CMD_STATE <= T2_CHECK_MODE; + else + NEXT_CMD_STATE <= T2_DELAY_B1; + end if; + when T2_CHECK_MODE => + if DDEn = '1' then -- FM mode + NEXT_CMD_STATE <= T2_WR_LEADIN; + else + NEXT_CMD_STATE <= T2_DELAY_B11; + end if; + when T2_DELAY_B11 => + if DELAY = true then + NEXT_CMD_STATE <= T2_WR_LEADIN; + else + NEXT_CMD_STATE <= T2_DELAY_B11; + end if; + when T2_WR_LEADIN => + if DELAY = true then + NEXT_CMD_STATE <= T2_WR_AM; + else + NEXT_CMD_STATE <= T2_WR_LEADIN; + end if; + when T2_WR_AM => -- Write data address mark. + if DELAY = true then + NEXT_CMD_STATE <= T2_LOAD_SHFT; + else + NEXT_CMD_STATE <= T2_WR_AM; + end if; + when T2_LOAD_SHFT => + NEXT_CMD_STATE <= T2_WR_BYTE; + when T2_WR_BYTE => + if DELAY = true then + NEXT_CMD_STATE <= T2_VERIFY_DRQ_3; + else + NEXT_CMD_STATE <= T2_WR_BYTE; + end if; + when T2_VERIFY_DRQ_3 => + if DRQ_I = '0' then + NEXT_CMD_STATE <= T2_WRSTAT; + else + NEXT_CMD_STATE <= T2_DATALOST; + end if; + when T2_DATALOST => + if DELAY = true then + NEXT_CMD_STATE <= T2_WRSTAT; + else + NEXT_CMD_STATE <= T2_DATALOST; + end if; + when T2_WRSTAT => + if SECT_LEN = "00000000000" then + NEXT_CMD_STATE <= T2_WR_CRC; -- Write operation finished. + else + NEXT_CMD_STATE <= T2_LOAD_SHFT; + end if; + when T2_WR_CRC => + if DELAY = true then + NEXT_CMD_STATE <= T2_WR_FF; + else + NEXT_CMD_STATE <= T2_WR_CRC; + end if; + when T2_WR_FF => + if DELAY = true then + NEXT_CMD_STATE <= T2_MULTISECT; + else + NEXT_CMD_STATE <= T2_WR_FF; + end if; + -------------------------------------------------------------------- + ---------------- type3 write track command stuff ------------------- + -------------------------------------------------------------------- + when T3_WR => + if WPRTn = '0' then + NEXT_CMD_STATE <= IDLE; -- Break due to write protected disk. + else + NEXT_CMD_STATE <= T3_DELAY_B3; + end if; + when T3_DELAY_B3 => + if DELAY = true then + NEXT_CMD_STATE <= T3_VERIFY_DRQ; + else + NEXT_CMD_STATE <= T3_DELAY_B3; + end if; + when T3_VERIFY_DRQ => + if DRQ_I = '0' then + NEXT_CMD_STATE <= T3_CHECK_INDEX_1; + else + NEXT_CMD_STATE <= IDLE; -- Break due to lost data (no new data by host). + end if; + when T3_CHECK_INDEX_1 => + if IPn = '0' then + NEXT_CMD_STATE <= T3_LOAD_SHFT; + else + NEXT_CMD_STATE <= T3_CHECK_INDEX_1; + end if; + when T3_LOAD_SHFT => + NEXT_CMD_STATE <= T3_WR_DATA; + when T3_WR_DATA => + if DELAY = true then + NEXT_CMD_STATE <= T3_CHECK_INDEX_2; + else + NEXT_CMD_STATE <= T3_WR_DATA; + end if; + when T3_CHECK_INDEX_2 => + if INDEX_MARK = '1' then + NEXT_CMD_STATE <= IDLE; -- End of track reached. + elsif DRQ_I = '0' then -- New data has been loaded. + NEXT_CMD_STATE <= T3_LOAD_SHFT; -- Fetch new data. + else + NEXT_CMD_STATE <= T3_DATALOST; -- Fill in nullbyte. + end if; + when T3_DATALOST => + if DELAY = true then + NEXT_CMD_STATE <= T3_CHECK_INDEX_2; + else + NEXT_CMD_STATE <= T3_DATALOST; + end if; + -------------------------------------------------------------------- + --------------- type3 read track command stuff -------------------- + -------------------------------------------------------------------- + when T3_RD_TRACK => + -- wait for index pulse: + if IPn = '0' then + NEXT_CMD_STATE <= T3_SHIFT; + else + NEXT_CMD_STATE <= T3_RD_TRACK; + end if; + when T3_SHIFT => + if DELAY = true then + NEXT_CMD_STATE <= T3_CHECK_INDEX_3; + else + NEXT_CMD_STATE <= T3_SHIFT; + end if; + when T3_CHECK_INDEX_3 => + if INDEX_MARK = '1' then + NEXT_CMD_STATE <= IDLE; -- End of track reached. + else + NEXT_CMD_STATE <= T3_DETECT_AM; + end if; + when T3_DETECT_AM => -- Detect for ID address mark. + if ID_AM = '1' then + NEXT_CMD_STATE <= T3_CHECK_DR; + else + NEXT_CMD_STATE <= T3_CHECK_BYTE; + end if; + when T3_CHECK_BYTE => + if BYTE_RDY = true then + NEXT_CMD_STATE <= T3_CHECK_DR; + else + NEXT_CMD_STATE <= T3_SHIFT; + end if; + when T3_CHECK_DR => + NEXT_CMD_STATE <= T3_LOAD_DATA_1; + when T3_LOAD_DATA_1 => + NEXT_CMD_STATE <= T3_SET_DRQ_1; + when T3_SET_DRQ_1 => + NEXT_CMD_STATE <= T3_SHIFT; + -------------------------------------------------------------------- + ---------------- type3 read address command stuff ------------------ + -------------------------------------------------------------------- + when T3_RD_ADR => + -- check for 6 index holes + if INDEX_CNT = true then + NEXT_CMD_STATE <= IDLE; -- Break due to timeout. + else + NEXT_CMD_STATE <= T3_VERIFY_AM; + end if; + when T3_VERIFY_AM => -- Check for existing ID address mark + if ID_AM = '1' then + NEXT_CMD_STATE <= T3_SHIFT_ADR; + else + NEXT_CMD_STATE <= T3_RD_ADR; + end if; + when T3_SHIFT_ADR => + if DELAY = true then + NEXT_CMD_STATE <= T3_LOAD_DATA_2; + else + NEXT_CMD_STATE <= T3_SHIFT_ADR; + end if; + when T3_LOAD_DATA_2 => + NEXT_CMD_STATE <= T3_SET_DRQ_2; + when T3_SET_DRQ_2 => + NEXT_CMD_STATE <= T3_CHECK_RD; + when T3_CHECK_RD => + if T3_TRADR = true then + NEXT_CMD_STATE <= T3_LOAD_SR; + else + NEXT_CMD_STATE <= T3_SHIFT_ADR; + end if; + when T3_LOAD_SR => + NEXT_CMD_STATE <= T3_VERIFY_CRC; + when T3_VERIFY_CRC => + -- The CRC logic starts during T3_VERIFY_AM (missing clock transitions). + if DELAY = true then + NEXT_CMD_STATE <= IDLE; -- Operation finished (with or without CRC error). + else + NEXT_CMD_STATE <= T3_VERIFY_CRC; -- Wait until CRC logic is ready. + end if; + end case; + end process CMD_DECODER; + + P_DELAY: process(RESETn, CLK, CMD_STATE, T3_DATATYPE, DDEn, CMD) + -- This process is responsible to control the DELAY signal in the different command + -- states of the main state machine. These states finish, if the signal DELAY is + -- asserted. The condition for asserted DELAY is the correct number of data strobes + -- which are supervised by the DATA_STRB inputs. + -- Another condition is a time delay required in the following states: + -- In DELAY_15MS there is a delay of 30ms. + -- In T1_STEP_PULSE the delay is according to the CMD(1 downto 0) as follows: + -- "11" = 3ms, "10" = 2ms, "01" = 12ms, "00" = 6ms. + -- In T1_VERIFY_DELAY there is a delay of 30ms. + variable DELCNT : std_logic_vector(19 downto 0); + begin + if RESETn = '0' then + DELCNT := (others => '0'); + elsif CLK = '1' and CLK' event then + -- Reset the delay right after it occurs: + if DELAY = true then + DELCNT := (others => '0'); + elsif DATA_AM = '1' or DDATA_AM = '1' then -- Reset in command state T2_VERIFY_AM. + DELCNT := (others => '0'); + else + case CMD_STATE is + -- Time delays work on CLK edges. + when DELAY_15MS | T1_CHECK_DIR | T1_STEP_DELAY | T1_VERIFY_DELAY => + DELCNT := DELCNT + '1'; + -- Bit count delays work on data strobes. + -- Read from disk operation: + when T1_SCAN_TRACK | T1_SCAN_CRC | T1_VERIFY_CRC | T2_SCAN_TRACK | T2_SCAN_SECT | + T2_SCAN_LEN | T2_VERIFY_CRC_1 | T2_VERIFY_AM | T2_FIRSTBYTE | + T2_NEXTBYTE | T2_VERIFY_CRC_2 | T3_SHIFT | T3_SHIFT_ADR | T3_VERIFY_CRC => + if DATA_STRB = '1' then + DELCNT := DELCNT + '1'; + end if; + -- Write to disk operation: + when T2_DELAY_B2 | T2_DELAY_B8 | T2_WR_LEADIN | + T2_WR_AM | T2_DELAY_B1 |T2_DELAY_B11 | T2_WR_BYTE | T2_DATALOST | + T2_WR_CRC | T2_WR_FF | T3_DELAY_B3 | T3_WR_DATA | T3_DATALOST => + if DATA_STRB = '1' then + DELCNT := DELCNT + '1'; + end if; + when others => + DELCNT := (others => '0'); -- Clear the delay counter if not used. + end case; + end if; + end if; + + case CMD_STATE is + when DELAY_15MS | T1_VERIFY_DELAY => + case DELCNT is + --when x"75300" => DELAY <= true; -- 30ms + when x"3A980" => DELAY <= true; -- 15ms, thanks to L. Amsdon. + when others => DELAY <= false; + end case; + when T1_CHECK_DIR => + if DDEn = '1' and DELCNT = x"00300" then -- 48us in FM + DELAY <= true; + elsif DDEn = '0' and DELCNT = x"00180" then -- 24us in MFM. + DELAY <= true; + else + DELAY <= false; + end if; + when T1_STEP_DELAY => + if CMD(1 downto 0) = "11" and DELCNT >= x"0BB80" then -- 3ms + DELAY <= true; + elsif CMD(1 downto 0) = "10" and DELCNT >= x"07D00" then -- 2ms + DELAY <= true; + elsif CMD(1 downto 0) = "01" and DELCNT >= x"2EE00" then -- 12ms + DELAY <= true; + elsif CMD(1 downto 0) = "00" and DELCNT >= x"17700" then -- 6ms + DELAY <= true; + else + DELAY <= false; + end if; + when T1_SCAN_TRACK | T2_SCAN_TRACK | T2_SCAN_LEN | T2_FIRSTBYTE | T2_NEXTBYTE | + T2_WR_BYTE | T2_DATALOST | T2_WR_FF | T3_DATALOST | T3_SHIFT_ADR => + case DELCNT is + when x"00008" => DELAY <= true; -- The delay in this case is 8 bit times. + when others => DELAY <= false; + end case; + when T1_SCAN_CRC => + case DELCNT is + when x"00018" => DELAY <= true; -- Scan for 3 bytes. + when others => DELAY <= false; + end case; + when T2_WR_AM => + if DDEn = '1' and DELCNT = x"00008" then -- Wait for 8 address mark bits (FM mode). + DELAY <= true; + elsif DDEn = '0' and DELCNT = x"00020" then -- Wait for 32 sync and address mark bits (MFM mode). + DELAY <= true; + else + DELAY <= false; + end if; + when T2_VERIFY_AM => + if DDEn = '1' and DELCNT >= x"00148" then -- FM mode. + DELAY <= true; -- (11+6+1)+1 = 19 Byte Times, plus 10 Byte times uncertainty. + elsif DDEn = '0' and DELCNT >= x"00188" then -- MFM mode. + DELAY <= true; -- (22+12+3+1)+1 = 39 Byte Times, plus 10 Byte times uncertainty. + else + DELAY <= false; + end if; + when T2_WR_LEADIN => + if DDEn = '1' and DELCNT = x"00030" then -- Scan for 48 zero bits in FM mode. + DELAY <= true; + elsif DDEn = '0' and DELCNT = x"00060" then -- Scan for 96 zero bits in MFM mode. + DELAY <= true; + else + DELAY <= false; + end if; + when T2_DELAY_B1 => + case DELCNT is + when x"00008" => DELAY <= true; -- Delay is 1 byte. + when others => DELAY <= false; + end case; + when T3_DELAY_B3 => + case DELCNT is + when x"00018" => DELAY <= true; -- Delay is 3 bytes. + when others => DELAY <= false; + end case; + when T2_DELAY_B8 => + case DELCNT is + when x"00040" => DELAY <= true; -- Delay is 8 bytes. + when others => DELAY <= false; + end case; + when T2_DELAY_B11 => + case DELCNT is + when x"00058" => DELAY <= true; -- Delay is 11 bytes. + when others => DELAY <= false; + end case; + when T2_VERIFY_CRC_2 => + -- In this state the original WD1772 state machine causes the CRC data to appear 1 byte + -- too early. The reason is the construction of the states T2_LOAD_DATA and T2_NEXTBYTE + -- where the length counter and the DRQ flag are serviced in T2_LOAD_DATA. Therefore the + -- delay is only 1 byte instead of 2. + case DELCNT is + when x"00008" => DELAY <= true; -- Scan for 2 bytes but wait only 1 byte. + when others => DELAY <= false; + end case; + when T1_VERIFY_CRC | T2_SCAN_SECT | T2_VERIFY_CRC_1 | T2_DELAY_B2 | T2_WR_CRC | T3_VERIFY_CRC => + case DELCNT is + when x"00010" => DELAY <= true; -- Scan for 2 bytes (e. g. side and sector in T2_SCAN_SECT). + when others => DELAY <= false; + end case; + when T3_WR_DATA => + if T3_DATATYPE = x"F7" and DELCNT = x"00010" then -- Wait for 16 CRC bits. + DELAY <= true; + elsif T3_DATATYPE /= x"F7" and DELCNT = x"00008" then -- Wait for 8 data bits. + DELAY <= true; + else + DELAY <= false; + end if; + when T3_SHIFT => + case DELCNT is + when x"00001" => DELAY <= true; -- Scan just one data bit. + when others => DELAY <= false; + end case; + when others => + DELAY <= false; + end case; + end process P_DELAY; + + INDEX_COUNTER: process(RESETn, CLK, CMD_STATE) + -- This process is intended to control some command states via the index pulse behavior. + -- In the original WD177x there is foreseen a delay of several index pulses (about 1s). + -- It is achieved by counting the index pulses of the disk. This encounters problems, + -- if the disk is not inserted. For this reason there is additionally to the index counter + -- a timeout which is active if there are no index pulses. + variable CNT : std_logic_vector(3 downto 0); + variable TIMEOUT : std_logic_vector(27 downto 0); + variable LOCK : boolean; + begin + if RESETn = '0' then + CNT := x"0"; + TIMEOUT := (others => '0'); + LOCK := false; + elsif CLK = '1' and CLK' event then + case CMD_STATE is + -- Be aware that there must sometimes checked several states for the presence of IPn! + when SPINUP | T1_SPINDOWN | T1_SCAN_TRACK | T1_SCAN_CRC | T1_VERIFY_CRC | + T2_INIT | T2_SCAN_TRACK | T2_SCAN_SECT |T2_SCAN_LEN | T2_VERIFY_CRC_1 | T3_RD_ADR | T3_VERIFY_AM => + if IPn = '0' and LOCK = false then -- Count the index pulses. + CNT := CNT + '1'; + LOCK := true; + elsif IPn = '1' then + LOCK := false; + end if; + -- + if TIMEOUT < x"17FFFFF" then -- Timeout of about 1.5s. + TIMEOUT := TIMEOUT + '1'; + end if; + when others => + CNT := x"0"; + TIMEOUT := (others => '0'); + end case; + end if; + -- + if CMD_STATE = SPINUP and (CNT = "110" or TIMEOUT = x"17FFFFF") then -- 6 pulses or timeout. + INDEX_CNT <= true; + elsif CMD_STATE = T1_SPINDOWN and (CNT = "110" or TIMEOUT = x"17FFFFF") then -- 6 pulses or timeout. + INDEX_CNT <= true; + elsif CMD_STATE = T2_INIT and (CNT = "101" or TIMEOUT = x"17FFFFF") then -- 5 pulses or timeout. + INDEX_CNT <= true; + elsif CMD_STATE = T3_RD_ADR and (CNT = "110" or TIMEOUT = x"17FFFFF") then -- 6 pulses or timeout. + INDEX_CNT <= true; + else + INDEX_CNT <= false; + end if; + end process INDEX_COUNTER; + + P_INDEX_MARK: process + -- This process controls the occurence of an index pulse during read track + -- and write track commands. The flag INDEX_MARK is cleared at the + -- beginning of these two commands during the first check for an index + -- pulse and is set right after the next index pulse occurs, which means + -- track processing has completed. + variable LOCK: boolean; + begin + wait until CLK = '1' and CLK' event; + if CMD_STATE = T3_RD_TRACK and IPn = '0' then + INDEX_MARK <= '0'; -- Reset the flag. + LOCK := true; + elsif CMD_STATE = T3_CHECK_INDEX_1 and IPn = '0' then + INDEX_MARK <= '0'; -- Reset the flag. + LOCK := true; + elsif IPn = '0' and LOCK = false then + INDEX_MARK <= '1'; -- Index pulse has passed. + LOCK := true; + elsif IPn = '1' then + LOCK := false; + end if; + end process P_INDEX_MARK; + + P_T3_DATATYPE: process(RESETn, CLK) + -- In type 3 write track command, it is necessary to store the information, which data + -- has to be written to disk (in command state T3_WR_DATA. This information is sampled + -- in the command state T3_LOAD_SHFT which preceeds the command state T3_WR_DATA. + begin + if RESETn = '0' then + T3_DATATYPE <= x"00"; + elsif CLK = '1' and CLK' event then + if CMD_STATE = T3_LOAD_SHFT then + T3_DATATYPE <= DR; + end if; + end if; + end process P_T3_DATATYPE; + + CNT_T3BYTES: process(RESETn, CLK, CMD_STATE) + -- This process counts the bytes read in the type III read address + -- command during the command states T3_SHIFT_ADR, T3_LOAD_DATA2, + -- T3_SET_DRQ_2 and T3_CHECK_RD. + variable CNT : std_logic_vector(2 downto 0); + begin + if RESETn = '0' then + CNT := "000"; + elsif CLK = '1' and CLK' event then + case CMD_STATE is + when T3_VERIFY_AM => + CNT := "000"; -- Clear the counter right befor the count operation. + when T3_SET_DRQ_2 => + CNT := CNT + '1'; -- Increment after each read cycle. + when others => + null; + end case; + end if; + case CNT is + when "100" => T3_TRADR <= true; + when others => T3_TRADR <= false; + end case; + end process CNT_T3BYTES; + + BYTEASMBLY: process(RESETn, CLK) + -- This process controls the condition in the CMD_STATE T3_CHECK_DR. + -- Therefore the bits shifted into the DSR in command state T3_SHIFT are counted. + -- The count condition is entering the command state T3_CHECK_INDEX_3. The clear + -- condition is either the command state IDLE or the command state T3_CHECK_DR. + variable CNT : std_logic_vector(3 downto 0); + begin + if RESETn = '0' then + CNT := x"0"; + elsif CLK = '1' and CLK' event then + case CMD_STATE is + when IDLE => CNT := x"0"; + when T3_CHECK_INDEX_3 => CNT := CNT + '1'; + when T3_CHECK_DR => CNT := (others => '0'); + when others => null; + end case; + end if; + case CNT is + when x"8" => BYTE_RDY <= true; + when others => BYTE_RDY <= false; + end case; + end process BYTEASMBLY; + + P_DIR: process(RESETn, CLK, DIR) + -- This portion of code is responsible to control the right stepping + -- direction in type I commands. + begin + if RESETn = '0' then + DIR <= '0'; + elsif CLK = '1' and CLK' event then + if CMD_STATE = DECODE and CMD(7 downto 5) = "010" then -- Step in. + DIR <= '1'; + elsif CMD_STATE = DECODE and CMD(7 downto 5) = "011" then -- Step out. + DIR <= '0'; + elsif CMD_STATE = T1_COMP_TR_DSR and DSR > TR then -- Seek. + DIR <= '1'; + elsif CMD_STATE = T1_COMP_TR_DSR and DSR < TR then -- Seek. + DIR <= '0'; + end if; + end if; + DIRC <= DIR; -- Copy signal to the output. + end process P_DIR; + + P_DRQ: process(RESETn, CLK, DRQ_I) + begin + if RESETn = '0' then + DRQ_I <= '0'; + elsif CLK = '1' and CLK' event then + case CMD_STATE is + when INIT => + DRQ_I <= '0'; + when T2_LOAD_DATA | T2_SET_DRQ | T2_LOAD_SHFT => + DRQ_I <= '1'; + when T3_WR | T3_LOAD_SHFT | T3_SET_DRQ_1 | T3_SET_DRQ_2 => + DRQ_I <= '1'; + when others => + null; + end case; + -- The data request bit is also cleared by reading or writing the + -- data register (direct memory access operation). + if (DATA_RD = true or DATA_WR = true) then + DRQ_I <= '0'; + end if; + end if; + -- + DRQ <= DRQ_I; -- Copy to entity. + -- + end process P_DRQ; + + -- The DRQ_IPn detects the index pulse during type I commands and a forced interrupt or + -- DRQ during type II and III commands. + -- The index pulse flag is active high and can be used for the detection of an inserted disk. + DRQ_IPn <= not IPn when CMD(7) = '0' else + not IPn when CMD(7 downto 4) = x"D" and BUSY = '0' else DRQ_I; + + P_BUSY: process(RESETn, CLK) + begin + if RESETn = '0' then + BUSY <= '0'; + elsif CLK = '1' and CLK' event then + -- During forced interrupt, the busy flag is reset when the command + -- state machine enters the IDLE state. + if CMD_STATE = INIT then + BUSY <= '1'; -- set BUSY flag for all command types I ... III. + elsif CMD_STATE = IDLE then + BUSY <= '0'; -- Reset BUSY after entering IDLE in any case. + end if; + end if; + end process P_BUSY; + + P_SEEK_RNF: process(RESETn, CLK) + -- Seek error or record not found error flag. + begin + if RESETn = '0' then + SEEK_RNF <= '0'; + elsif CLK = '1' and CLK' event then + if CMD_STATE = INIT then + SEEK_RNF <= '0'; -- Clear the flag for all command types I ... III. + elsif CMD_STATE = T1_TRAP and STEP_TRAP = true then + SEEK_RNF <= '1'; -- Seek error (SEEK). + elsif CMD_STATE = T1_SPINDOWN and INDEX_CNT = true then + SEEK_RNF <= '1'; -- Seek error (SEEK). + elsif CMD_STATE = T2_INIT and INDEX_CNT = true then + SEEK_RNF <= '1'; -- Record not found (RNF). + elsif CMD_STATE = T3_RD_ADR and INDEX_CNT = true then + SEEK_RNF <= '1'; -- Record not found (RNF). + end if; + end if; + end process P_SEEK_RNF; + + P_INTRQ: process(RESETn, CLK) + begin + if RESETn = '0' then + INTRQ <= '0'; + elsif CLK = '1' and CLK' event then + -- Interrupt reset conditions: + if STAT_RD = true and CMD /= x"D8" then + -- No clear during immediately forced interrupt. + INTRQ <= '0'; -- Clear the flag when status register is read. + elsif CMD_WR = true and CMD = x"D0" then + -- Clear with the next write access to the command register after the + -- forced interrupt x"D0" was written. + INTRQ <= '0'; + elsif CMD_STATE = INIT and CMD(7 downto 6) /= "11" then + INTRQ <= '0'; -- Clear the flag for type I and type II commands during start of execution. + -- Interrupt set conditions. + elsif CMD = x"D8" and CMD_STATE = IDLE then + INTRQ <= '1'; -- Force interrupt immediately (after the break took affect). + elsif CMD = x"D4" and IPn = '0' and CMD_STATE = IDLE then + INTRQ <= '1'; -- Force interrupt on next index pulse (after the break took affect). + elsif CMD_STATE = T1_TRAP and STEP_TRAP = true then + INTRQ <= '1'; -- Indicate interrupt request due to seek error. + elsif CMD_STATE = T1_VERIFY_DELAY and CMD(2) = '0' then + INTRQ <= '1'; -- Indicate interrupt: command finished or interrupted. + elsif CMD_STATE = T1_SPINDOWN and INDEX_CNT = true then + INTRQ <= '1'; -- Indicate interrupt request, reason: seek error. + elsif CMD_STATE = T1_VERIFY_CRC and CRC_ERR = '0' then + INTRQ <= '1'; -- Indicate interrupt request; command correct, no CRC error. + elsif CMD_STATE = T2_RD_WR_SECT and CMD(7 downto 5) = "101" and WPRTn = '0' then + INTRQ <= '1'; -- Indicate interrupt request because disk is write protected. + elsif CMD_STATE = T2_INIT and INDEX_CNT = true then + INTRQ <= '1'; -- Indicate interrupt request, reason: timeout. + elsif CMD_STATE = T2_VERIFY_CRC_2 and DELAY = true and CRC_ERR = '1' then + INTRQ <= '1'; -- Indicate interrupt request due to CRC error. + elsif CMD_STATE = T2_MULTISECT and CMD(4) = '0' then + INTRQ <= '1'; -- Indicate interrupt request, command correct finished. + elsif CMD_STATE = T2_VERIFY_DRQ_2 and DRQ_I = '1' then + INTRQ <= '1'; -- Indicate interrupt request, reason: lost data. + elsif CMD_STATE = T3_WR and WPRTn = '0' then + INTRQ <= '1'; -- Indicate interrupt request, reason: disk is write protected. + elsif CMD_STATE = T3_VERIFY_DRQ and DRQ_I = '1' then + INTRQ <= '1'; -- Indicate interrupt request due to lost data. + elsif CMD_STATE = T3_CHECK_INDEX_2 and INDEX_MARK = '1' then + INTRQ <= '1'; -- Indicate interrupt request, reason: command finished correctly. + elsif CMD_STATE = T3_CHECK_INDEX_3 and INDEX_MARK = '1' then + INTRQ <= '1'; -- Indicate interrupt request, reason: command finished correctly. + elsif CMD_STATE = T3_RD_ADR and INDEX_CNT = true then + INTRQ <= '1'; -- Indicate interrupt request because record was not found. + elsif CMD_STATE = T3_VERIFY_CRC then + INTRQ <= '1'; -- Indicate interrupt request; command finished with or without CRC error. + end if; + end if; + end process P_INTRQ; + + P_LOST_DATA_TR00: process(RESETn, CLK) + -- Logic for the status bit number 2: + -- The TRACK00 flag is used to detect wether a floppy disk drive + -- is connected or not. + begin + if RESETn = '0' then + LOST_DATA_TR00 <= '0'; + elsif CLK = '1' and CLK' event then + if CMD(7 downto 4) = x"D" and BUSY = '0' then -- Forced interrupt. + LOST_DATA_TR00 <= not TRACK00n; + elsif CMD_STATE = INIT then + LOST_DATA_TR00 <= '0'; + elsif CMD_STATE = T1_VERIFY_DELAY then + LOST_DATA_TR00 <= not TRACK00n; + elsif CMD_STATE = T2_VERIFY_DRQ_1 and DRQ_I = '1' then + LOST_DATA_TR00 <= '1'; + elsif CMD_STATE = T2_VERIFY_DRQ_2 and DRQ_I = '1' then + LOST_DATA_TR00 <= '1'; + elsif CMD_STATE = T2_VERIFY_DRQ_3 and DRQ_I = '1' then + LOST_DATA_TR00 <= '1'; + elsif CMD_STATE = T3_VERIFY_DRQ and DRQ_I = '1' then + LOST_DATA_TR00 <= '1'; + elsif CMD_STATE = T3_DATALOST then + LOST_DATA_TR00 <= '1'; + elsif CMD_STATE = T3_CHECK_DR and DRQ_I = '1' then + LOST_DATA_TR00 <= '1'; + end if; + end if; + end process P_LOST_DATA_TR00; + + MOTORSWITCH: process(RESETn, CLK) + variable INDEXCNT : std_logic_vector(3 downto 0); + variable LOCK : boolean; + begin + if RESETn = '0' then + MO <= '0'; + INDEXCNT := x"0"; + LOCK := false; + elsif CLK = '1' and CLK' event then + if CMD_STATE /= IDLE then + INDEXCNT := x"9"; -- Initialise the index counter. + LOCK := false; + elsif LOCK = false and IPn = '0' and INDEXCNT > x"0" then + INDEXCNT := INDEXCNT - '1'; -- Count the index pulses in the IDLE state. + LOCK := true; + elsif IPn = '1' then + LOCK := false; + end if; + -- + if CMD_STATE = INIT and CMD_WR = false then + MO <= '1'; -- Start the motor for all command types I ... III in this state. + elsif INDEXCNT = x"0" then + MO <= '0'; -- The motor stops after 9 index pulses in idle state. + end if; + end if; + end process MOTORSWITCH; + + WRITE_PROTECT: process(RESETn, CLK) + begin + if RESETn = '0' then + WR_PR <= '0'; + elsif CLK = '1' and CLK' event then + if CMD_STATE = INIT and CMD(7) = '1' then + WR_PR <= '0'; -- Clear the flag for type II and type III commands. + elsif CMD_STATE = T2_RD_WR_SECT and WPRTn = '0' then + WR_PR <= '1'; + elsif CMD_STATE = T3_WR and WPRTn = '0' then + WR_PR <= '1'; + end if; + end if; + end process WRITE_PROTECT; + + RECTYPE_SPINUP: process(RESETn, CLK) + begin + if RESETn = '0' then + SPINUP_RECTYPE <= '0'; + elsif CLK = '1' and CLK' event then + if CMD_STATE = INIT then + SPINUP_RECTYPE <= '0'; -- Clear the flag for type II...III commands. + elsif CMD_STATE = SPINUP and CMD(7) = '0' and INDEX_CNT = true then + SPINUP_RECTYPE <= '1'; -- SPINUP SEQUENCE for type I commands has finished. + elsif CMD_STATE = T2_VERIFY_AM and (DATA_AM = '1' or DDATA_AM = '1') then + case DSR is + when x"F8" => SPINUP_RECTYPE <= '1'; -- Deleted data address mark. + when x"FB" => SPINUP_RECTYPE <= '0'; -- Normal data address mark. + when others => null; -- Forbidden, should never appear. + end case; + end if; + end if; + end process RECTYPE_SPINUP; + + WRITEGATE: process(RESETn, CLK) + begin + if RESETn = '0' then + WG <= '0'; + elsif CLK = '1' and CLK' event then + case CMD_STATE is + when T2_WR_LEADIN | T3_LOAD_SHFT => + WG <= '1'; + when T2_MULTISECT | IDLE => + WG <= '0'; + when others => + null; + end case; + end if; + end process WRITEGATE; + + RESTORE_TRAP: process(RESETn, CLK) + -- This process is responsible to supervise the RESTORE command. + -- If after 255 stepping pulses no TRACK00n was not detected, the + -- RESTORE command is terminated and the interrupt request and the + -- seek error are set. + variable STEP_CNT : std_logic_vector(7 downto 0); + begin + if RESETn = '0' then + STEP_CNT := (others => '0'); + elsif CLK = '1' and CLK' event then + if CMD_STATE = IDLE then + STEP_CNT := x"00"; + elsif CMD(7 downto 4) /= "0000" then -- No RESTORE command. + STEP_CNT := x"00"; + elsif CMD_STATE = T1_STEP and STEP_CNT < x"FF" then + STEP_CNT := STEP_CNT + '1'; + end if; + end if; + -- + case STEP_CNT is + when x"FF" => STEP_TRAP <= true; + when others => STEP_TRAP <= false; + end case; + end process RESTORE_TRAP; + + STEPPULSE: process(RESETn, CLK) + -- The step pulse duration is in the original WD1772 4us in MFM mode and 8 us. + -- in FM mode This process is responsible to provide the correct pulse lengths. + variable CNT : std_logic_vector(7 downto 0); + begin + if RESETn = '0' then + CNT := (others => '0'); + elsif CLK = '1' and CLK' event then + if CMD_STATE = T1_STEP then + case DDEn is + when '1' => CNT := x"80"; --Start counter for FM step pulse. + when '0' => CNT := x"40"; --Start counter for MFM step pulse. + end case; + elsif CNT > x"00" then + CNT := CNT -1; -- Count 63 or 127 CLK cycles ... + end if; + case CNT is + when x"00" => STEP <= '0'; + when others => STEP <= '1'; --...result in 3.875us or 7.75us pulse. + end case; + end if; + end process STEPPULSE; + + TRACK_MEM: process(RESETn, CLK, TRACKMEM) + -- This process is necessary to store the actual track number in the + -- type III command 'read address' because the track number is written + -- to the sector register some byte times after the detection of the + -- track number from disk. + begin + if RESETn = '0' then + TRACKMEM <= x"00"; + elsif CLK = '1' and CLK' event then + case CMD_STATE is + when IDLE => + TRACKMEM <= x"00"; -- Clear the Track memory. + when T3_LOAD_DATA_2 => + TRACKMEM <= DSR; -- Store the actual track number. + when others => + null; + end case; + end if; + TRACK_NR <= TRACKMEM; -- Output the TRACKMEM. + end process TRACK_MEM; + + SECT_LENGTH: process(RESETn, CLK, SECT_LEN) + -- This process supervises the read sector and write sector + -- commands. If the sector read or write are equal to the + -- sector length, the commands read sector and write sector + -- are ready. + begin + if RESETn = '0' then + SECT_LEN <= "00000000000"; + elsif CLK = '1' and CLK' event then + case CMD_STATE is + when T2_SCAN_LEN => + -- Bring in the correct sector length. + case DSR(1 downto 0) is + when "00" => SECT_LEN <= "00010000000"; -- 128 Byte per sector. + when "01" => SECT_LEN <= "00100000000"; -- 256 Byte per sector. + when "10" => SECT_LEN <= "01000000000"; -- 512 Byte per sector. + when "11" => SECT_LEN <= "10000000000"; -- 1024 Byte per sector. + when others => SECT_LEN <= "10000000000"; -- Dummy for U, X, Z, W, H, L, -. + end case; + when T2_LOAD_DATA | T2_LOAD_SHFT => + SECT_LEN <= SECT_LEN - '1'; + when others => + null; + end case; + end if; + end process SECT_LENGTH; + + P_CRC_ERR: process(RESETn, CLK) + -- This code checks the CRC status in the right command states + -- and sets or resets the CRC error status flag. + begin + if RESETn = '0' then + CRC_ERRFLAG <= '0'; + elsif CLK = '1' and CLK' event then + case CMD_STATE is + when INIT => + if CMD(7) = '0' then + CRC_ERRFLAG <= '0'; -- Reset for type I commands only. + end if; + when T1_VERIFY_CRC | T2_VERIFY_CRC_1 => + if CRC_ERR = '1' and DELAY = true then + CRC_ERRFLAG <= '1'; -- Set CRC error flag... + elsif CRC_ERR = '0' and DELAY = true then + CRC_ERRFLAG <= '0'; -- ... or reset CRC error flag. + end if; + when T2_VERIFY_CRC_2 | T3_VERIFY_CRC => + if CRC_ERR = '1' and DELAY = true then + -- Set CRC error flag but no reset in here. + -- The CRC is already reset by the previous checks. + CRC_ERRFLAG <= '1'; + end if; + when others => + null; + end case; + end if; + end process P_CRC_ERR; + + CMD_WR <= true when CSn = '0' and A1 = '0' and A0 = '0' and RWn = '0' else false; -- Command register write. + STAT_RD <= true when CSn = '0' and A1 = '0' and A0 = '0' and RWn = '1' else false; -- Status register read. + DATA_WR <= true when CSn = '0' and A1 = '1' and A0 = '1' and RWn = '0' else false; -- Data register write. + DATA_RD <= true when CSn = '0' and A1 = '1' and A0 = '1' and RWn = '1' else false; -- Data register read. + + -- Track register arithmetics controls: + TR_PRES <= '1' when CMD_STATE = T1_SEEK_RESTORE and CMD(7 downto 4) = "0000" else '0'; -- Restore command. + TR_CLR <= '1' when CMD_STATE = T1_HEAD_CTRL and TRACK00n = '0' and DIR = '0' else '0'; + TR_INC <= '1' when CMD_STATE = T1_CHECK_DIR and DELAY = true and DIR = '1' else '0'; + TR_DEC <= '1' when CMD_STATE = T1_CHECK_DIR and DELAY = true and DIR = '0' else '0'; + + -- Sector register arithmetics: + SR_INC <= '1' when CMD_STATE = T2_MULTISECT and CMD(4) = '1' else '0'; -- Multi sector enabled. + SR_LOAD <= '1' when CMD_STATE = T3_LOAD_SR else '0'; + + -- Data register arithmetics controls: + DR_CLR <= '1' when CMD_STATE = T1_SEEK_RESTORE and CMD(7 downto 4) = "0000" else '0'; -- Restore command. + DR_LOAD <= '1' when CMD_STATE = T2_LOAD_DATA else + '1' when CMD_STATE = T3_LOAD_DATA_1 else + '1' when CMD_STATE = T3_LOAD_DATA_2 else '0'; + + -- Shift register arithmetics controls: + -- During type I and type II commands all characters are allowed as data. + -- During the type III write track command, there are some special characters + -- which may not appear as normal data. See the register file for more information. + SHFT_LOAD_SD <= '1' when CMD_STATE = T3_LOAD_SHFT else '0'; -- Special data. + SHFT_LOAD_ND <= '1' when CMD_STATE = T1_LOAD_SHFT else + '1' when CMD_STATE = T2_LOAD_SHFT else '0'; -- Normal data. + + P_CRC_PRES: process(RESETn, CLK) + -- CRC preset during write sector and write track commands. + variable LOCK : boolean; + begin + if RESETn = '0' then + CRC_PRES <= '0'; + LOCK := false; + elsif CLK = '1' and CLK' event then + -- In write track command, the CRC is initialised at the beginning of the + -- first A1 data and released during shifting the CRC out. + if CMD_STATE = T2_WR_AM and LOCK = false then + CRC_PRES <= '1'; -- Write sector command. + LOCK := true; + elsif CMD_STATE = T3_LOAD_SHFT and DR = x"F5" and LOCK = false then -- x"F5" means write A1. + CRC_PRES <= '1'; -- Write track command. + LOCK := true; + elsif CMD_STATE = T2_WR_CRC then + CRC_PRES <= '0'; -- Write sector command. + LOCK := false; + elsif CMD_STATE = T3_LOAD_SHFT and DR = x"F7" then + CRC_PRES <= '0'; -- Write track command. + LOCK := false; + else + CRC_PRES <= '0'; + end if; + end if; + end process P_CRC_PRES; + + -- Write control signals: + AM_2_DISK <= '1' when CMD_STATE = T2_WR_AM else '0'; + FF_2_DISK <= '1' when CMD_STATE = T2_WR_FF else '0'; + DSR_2_DISK <= '1' when CMD_STATE = T2_WR_BYTE else + '1' when CMD_STATE = T3_WR_DATA and T3_DATATYPE /= x"F7" else '0'; -- not during CRC. + CRC_2_DISK <= '1' when CMD_STATE = T2_WR_CRC else + '1' when CMD_STATE = T3_WR_DATA and T3_DATATYPE = x"F7" else '0'; + + -- Write precompensation control: + PRECOMP_EN <= '1' when CMD(7 downto 4) = x"A" and CMD(1) = '0' else -- Write single sector. + '1' when CMD(7 downto 4) = x"B" and CMD(1) = '0' else -- Write multiple sector. + '1' when CMD(7 downto 4) = x"F" and CMD(1) = '0' else '0'; -- Write track. + + -- Disk data flow direction: + DISK_RWn <= -- Write sector command: + '0' when CMD_STATE = T2_WR_LEADIN else + '0' when CMD_STATE = T2_WR_AM else + '0' when CMD_STATE = T2_LOAD_SHFT else + '0' when CMD_STATE = T2_WR_BYTE else + '0' when CMD_STATE = T2_VERIFY_DRQ_3 else + '0' when CMD_STATE = T2_DATALOST else + '0' when CMD_STATE = T2_WRSTAT else + '0' when CMD_STATE = T2_WR_CRC else + '0' when CMD_STATE = T2_WR_FF else + -- Write track command: + '0' when CMD_STATE = T3_LOAD_SHFT else + '0' when CMD_STATE = T3_WR_DATA else + '0' when CMD_STATE = T3_CHECK_INDEX_2 else + '0' when CMD_STATE = T3_DATALOST else '1'; +end BEHAVIOR; \ No newline at end of file diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_crc_logic.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_crc_logic.vhd new file mode 100644 index 0000000..54b2060 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_crc_logic.vhd @@ -0,0 +1,162 @@ +---------------------------------------------------------------------- +---- ---- +---- WD1772 compatible floppy disk controller IP Core. ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- Floppy disk controller with all features of the Western ---- +---- Digital WD1772-02 controller. ---- +---- ---- +---- The CRC cyclic redundancy checker unit. Further description ---- +---- see below. ---- +---- ---- +---- Working principle of the CRC generator and verify unit: ---- +---- During read operation: ---- +---- The CRC generator is switched on via after the detection of ---- +---- the address ID of the data ID mark. The CRC generation last ---- +---- in case of the address ID until the lenght byte is read. ---- +---- In case of generation after the data address mark the CRC ---- +---- generator is activated until the last data byte is read. ---- +---- The number of data bytes to be read depends on the LENGHT ---- +---- information in the header file. After generation of the CRC ---- +---- the CRC_GEN is switched off and the VERIFY procedure begins ---- +---- by activating CRC_VERIFY. The previously generated CRC is ---- +---- then compared (serially) with the two consecutive read CRC ---- +---- bytes. The CRC error appeas, when the comparision fails. ---- +---- During write operation: ---- +---- The CRC generator is switched on via after the detection of ---- +---- the address ID of the data ID mark. The CRC generation last ---- +---- in case of the address ID until the lenght byte is read. ---- +---- In case of generation after the data address mark the CRC ---- +---- generator is activated until the last data byte is read. ---- +---- The number of data bytes to be read depends on the LENGHT ---- +---- information in the header file. After the generation of the ---- +---- two CRC bytes, the write out process begins by activating ---- +---- CRC_SHFTOUT. The CRC data appears in this case serially on ---- +---- the CRC_SDOUT. ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2006A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/05 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- Revision 2K9A 2009/06/20 WF +-- CRC_SHIFT has now synchronous reset to meeet preset behaviour. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF1772IP_CRC_LOGIC is + port( + -- System control + CLK : in bit; + RESETn : in bit; + DISK_RWn : in bit; + + -- Preset controls: + DDEn : in bit; + ID_AM : in bit; + DATA_AM : in Bit; + DDATA_AM : in Bit; + + -- CRC unit: + SD : in bit; -- Serial data input. + CRC_STRB : in bit; -- Data strobe. + CRC_2_DISK : in bit; -- Forces the unit to flush the CRC remainder. + CRC_PRES : in bit; -- Presets the CRC unit during write to disk. + CRC_SDOUT : out bit; -- Serial data output. + CRC_ERR : out bit -- Indicates CRC error. + ); +end WF1772IP_CRC_LOGIC; + +architecture BEHAVIOR of WF1772IP_CRC_LOGIC is +signal CRC_SHIFT : bit_vector(15 downto 0); +begin + P_CRC: process + -- The shift register is initialised with appropriate values in HD or DD mode. + -- In theory the shift register should be preset to ones. Due to a latency of one byte + -- in FM mode or 4 bytes in MFM mode it is necessary to preset the shift register with + -- the CRC values of this ID address mark, data address mark and the A1 sync bytes. The + -- latency is caused by the addressmark detector which needs one or 4 byte time(s) for + -- detection. The CRC unit therefore starts with every detection of an address mark and + -- ends if the CRC unit is flushed. + begin + wait until CLK = '1' and CLK' event; + if RESETn = '0' then + CRC_SHIFT <= (others => '1'); + elsif CRC_2_DISK = '1' then + if CRC_STRB = '1' then + CRC_SHIFT <= CRC_SHIFT(14 downto 0) & '0'; + end if; + elsif CRC_PRES = '1' then -- Preset during write sector or write track command. + CRC_SHIFT <= x"FFFF"; + elsif DDEn = '1' and ID_AM = '1' then -- DD mode and ID address mark detected. + CRC_SHIFT <= x"EF21"; -- The CRC-CCITT for data x"FE" is x"EF21" + elsif DDEn = '1' and DATA_AM = '1' then -- DD mode and data address mark detected. + CRC_SHIFT <= x"BF84"; -- The CRC-CCITT for data x"FB" is x"BF84" + elsif DDEn = '1' and DDATA_AM = '1' then -- DD mode and deleted data address mark detected. + CRC_SHIFT <= x"8FE7"; -- The CRC-CCITT for data x"F8" is x"8FE7" + elsif DDEn = '0' and ID_AM = '1' then -- HD mode and ID address mark detected. + CRC_SHIFT <= x"B230"; -- The CRC-CCITT for data x"A1A1A1FE" is x"B230" + elsif DDEn = '0' and DATA_AM = '1' then -- HD mode and data address mark detected. + CRC_SHIFT <= x"E295"; -- The CRC-CCITT for data x"A1A1A1FB" is x"E295" + elsif DDEn = '0' and DDATA_AM = '1' then -- HD mode and deleted data address mark detected. + CRC_SHIFT <= x"D2F6"; -- The CRC-CCITT for data x"A1A1A1F8" is x"D2F6" + elsif CRC_STRB = '1' then + -- CRC-CCITT (xFFFF): + -- the polynomial is G(x) = x^16 + x^12 + x^5 + 1 + -- In this mode the CRC is encoded. In read from disk mode, the encoding works as CRC + -- verification. In this operating condition the ID or the data field is compared + -- against the CRC checksum. if there are no errors, the shift register's value is + -- x"0000" after the last bit of the checksum is shifted in. In write to disk mode the + -- CRC linear feedback shift register (lfsr) works to generate the CRC remainder of the + -- ID or data field. + CRC_SHIFT <= CRC_SHIFT(14 downto 12) & (CRC_SHIFT(15) xor CRC_SHIFT(11) xor SD) & + CRC_SHIFT(10 downto 5) & (CRC_SHIFT(15) xor CRC_SHIFT(4) xor SD) & + CRC_SHIFT(3 downto 0) & (CRC_SHIFT(15) xor SD); + end if; + end process P_CRC; + + CRC_SDOUT <= CRC_SHIFT(15); + CRC_ERR <= '0' when CRC_SHIFT = x"0000" else '1'; +end architecture BEHAVIOR; diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_digital_pll.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_digital_pll.vhd new file mode 100644 index 0000000..95ce08c --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_digital_pll.vhd @@ -0,0 +1,426 @@ +---------------------------------------------------------------------- +---- ---- +---- WD1772 compatible floppy disk controller IP Core. ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- Floppy disk controller with all features of the Western ---- +---- Digital WD1772-02 controller. ---- +---- ---- +---- The digital PLL is responsible to detect the incoming serial ---- +---- data stream and provide a system clock synchronous signal ---- +---- containing the data and clock information. ---- +---- To understand how the code works in detail refer to the free ---- +---- US patent no. 4,780,844. ---- +---- ---- +---- Attention: The settings for TOP and BOTTOM, which control ---- +---- the PLL frequency and for PHASE_CORR which control the PLL ---- +---- phase are rather critical for a good read condition! To test ---- +---- the PLL in the WD1772 compatible core do the following: ---- +---- Sample on an oscilloscope on one channel the falling edge of ---- +---- the RDn pulse and on the other channel the PLL_DSTRB. The ---- +---- RDn must be located exactly between the PLL_DSTRB pulses. ---- +---- Otherwise, the parameters TOP, BOTTOM and PHASE_CORR have to ---- +---- be optimized. ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2006A 2006/06/03 WF +-- Initial Release: the MFM portion for HD and DD floppies is tested. +-- The FM mode (DDEn = '1') is not completely tested due to lack of FM +-- drives. +-- Revision 2K6B 2006/11/05 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K7B 2006/12/29 WF +-- Introduced several improvements based on a very good examination +-- of the pll code by Jean Louis-Guerin. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- Revision 2K8B 2008/12/24 WF +-- Improvement of the INPORT process. +-- Bugfix of the FREQ_AMOUNT counter: now stops if its value is zero. +-- Several changes concerning the PLL parameters to improve the +-- stability of the PLL. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF1772IP_DIGITAL_PLL is + generic( + -- The valid range of the period counter of the PLL is given by the TOP and BOTTOM + -- limits. The counter range is therefore BOTTOM <= counter value <= TOP. + -- The generic PHASE_CORR is responsible fo the center setting of PLL_DSTRB concerning + -- the RDn period. + -- The nominal frequency setting is 128. So it is recommended to use TOP and BOTTOM + -- settings symmetrically around 128. If TOP = BOTTOM = 128, the frequency control + -- is disabled. TOP + PHASE_CORR may not exceed a value of 255. BOTTOM - PHASE_CORR + -- may not drop below zero. + TOP : integer range 0 to 255 := 152; -- +18.0% + BOTTOM : integer range 0 to 255 := 104; -- -18.0% + PHASE_CORR : integer range 0 to 128 := 75 + ); + port( + -- System control + CLK : in bit; -- 16MHz clock. + RESETn : in bit; + + -- Controls + DDEn : in bit; -- Double density enable. + HDTYPE : in bit; -- This control is '1' when HD disks are inserted. + DISK_RWn : in bit; -- Read write control. + + -- Data and clock lines + RDn : in bit; -- Read signal from the disk. + PLL_D : out bit; -- Synchronous read signal. + PLL_DSTRB : out bit -- Read strobe. + ); +end WF1772IP_DIGITAL_PLL; + +architecture BEHAVIOR of WF1772IP_DIGITAL_PLL is +signal RD_In : bit; +signal UP, DOWN : bit; +signal PHASE_DECREASE : bit; +signal PHASE_INCREASE : bit; +signal HI_STOP, LOW_STOP : bit; +signal PER_CNT : std_logic_vector(7 downto 0); +signal ADDER_IN : std_logic_vector(7 downto 0); +signal ADDER_MSBs : bit_vector(2 downto 0); +signal RD_PULSE : bit; +signal ROLL_OVER : bit; +signal HISTORY_REG : bit_vector(1 downto 0); +signal ERROR_HISTORY : integer range 0 to 2; +begin + INPORT: process + -- This process is necessary due to the poor quality of the rising + -- edge of RDn. Let it work on the negative clock edge. + begin + wait until CLK = '0' and CLK' event; + RD_In <= RDn; + end process INPORT; + + EDGEDETECT: process(RESETn, CLK) + -- This process forms a falling edge detector for the incoming + -- data read port. The output (RD_PULSE) goes high for exactly + -- one clock period after the RDn is low and the positive + -- clock edge is detected. + variable LOCK : boolean; + begin + if RESETn = '0' then + RD_PULSE <= '0'; + LOCK := false; + elsif CLK = '1' and CLK' event then + if DISK_RWn = '0' then -- Disable detector in write mode. + RD_PULSE <= '0'; + elsif RD_In = '0' and LOCK = false then + RD_PULSE <= '1'; -- READ_PULSE is inverted against RDn + LOCK := true; + elsif RD_In = '1' then + LOCK := false; + RD_PULSE <= '0'; + else + RD_PULSE <= '0'; + end if; + end if; + end process EDGEDETECT; + + PERIOD_CNT: process(RESETn, CLK) + -- This process provides the nominal variable added to the adder. To achieve a good + -- settling time of the PLL in all cases, the period counter is controlled via the DDEn + -- and HDTYPE flags respective to its added value. Be aware, that in case of adding "10" + -- or "11", the TOP value may be exceeded or the period counter may drop below the BOTTOM + -- value. The higher the value added, the faster will be the settling time of phase locked + -- loop . + begin + if RESETn = '0' then + PER_CNT <= "10000000"; -- Initial value is 128. + elsif CLK = '1' and CLK' event then + if UP = '1' then + PER_CNT <= PER_CNT + '1'; + elsif DOWN = '1' then + PER_CNT <= PER_CNT - '1'; + end if; + end if; + end process PERIOD_CNT; + + HI_STOP <= '1' when PER_CNT >= TOP else '0'; + LOW_STOP <= '1' when PER_CNT <= BOTTOM else '0'; + + ADDER_IN <= -- This DISK_RWn = '0' implementation keeps the last phase information + -- of the PLL in read from disk mode. It should be a good solution concer- + -- ning alternative read write cycles. + "10000000" when DISK_RWn = '0' else -- Nominal value for write to disk. + PER_CNT + PHASE_CORR when PHASE_INCREASE = '1' else -- Phase lags. + PER_CNT - PHASE_CORR when PHASE_DECREASE = '1' else -- Phase leeds. + PER_CNT; -- No phase correction; + + ADDER: process(RESETn, CLK, DDEn, HDTYPE) + -- Clock adjustment: The clock cycle is 62.5ns for the 16MHz system clock. + -- The offset (LSBs) of the adder input is chosen to be conform with the required + -- rollover period in the different DDEn and HDTYPE modi as follows: + -- With a nominal adder input term of 128: + -- The adder rolls over every 4us for DDEn = 1 and HDTYPE = 0. + -- The adder rolls over every 2us for DDEn = 1 and HDTYPE = 1. + -- The adder rolls over every 2us for DDEn = 0 and HDTYPE = 0. + -- The adder rolls over every 1us for DDEn = 0 and HDTYPE = 1. + -- The given times are the half of a data period time in MFM or FM. + variable ADDER_DATA : std_logic_vector(12 downto 0); + begin + if RESETn = '0' then + ADDER_DATA := (others => '0'); + elsif CLK = '1' and CLK' event then + ADDER_DATA := ADDER_DATA + ADDER_IN; + end if; + -- + case DDEn & HDTYPE is + when "01" => -- MFM mode using HD disks, results in 1us inspection period: + ADDER_MSBs <= To_BitVector(ADDER_DATA(10 downto 8)); + when "00" => -- MFM mode using DD disks, results in 2us inspection period: + ADDER_MSBs <= To_BitVector(ADDER_DATA(11 downto 9)); + when "11" => -- FM mode using HD disks, results in 2us inspection period: + ADDER_MSBs <= To_BitVector(ADDER_DATA(11 downto 9)); + when "10" => -- FM mode using DD disks, results in 4us inspection period: + ADDER_MSBs <= To_BitVector(ADDER_DATA(12 downto 10)); + end case; + end process ADDER; + + ROLLOVER: process(RESETn, CLK) + -- This process forms a falling edge detector for the detection + -- of the adder's rollover time. The output goes low for exactly + -- one clock period after the rollover is detected and the positive + -- clock edge appears. + variable LOCK : boolean; + begin + if RESETn = '0' then + ROLL_OVER <= '0'; + LOCK := false; + elsif CLK = '1' and CLK' event then + if ADDER_MSBs /= "111" and LOCK = false then + ROLL_OVER <= '1'; + LOCK := true; + elsif ADDER_MSBs = "111" then + LOCK := false; + ROLL_OVER <= '0'; + else + ROLL_OVER <= '0'; + end if; + end if; + end process ROLLOVER; + PLL_DSTRB <= ROLL_OVER; + + DATA_FLIP_FLOP: process(RESETn, CLK, RD_PULSE) + -- This flip-flop is responsible for 'catching' the read pulses of the + -- serial data input. + begin + if RESETn = '0' then + PLL_D <= '0'; -- Asynchronous reset. + elsif CLK = '1' and CLK' event then + if RD_PULSE = '1' then + PLL_D <= '1'; -- Read pulse detected. + elsif ROLL_OVER = '1' then + PLL_D <= '0'; + end if; + end if; + end process DATA_FLIP_FLOP; + + WIN_HISTORY: process(RESETn, CLK) + begin + if RESETn = '0' then + HISTORY_REG <= "00"; + elsif CLK = '1' and CLK' event then + if RD_PULSE = '1' then + HISTORY_REG <= ADDER_MSBs(2) & HISTORY_REG(1); + end if; + end if; + end process WIN_HISTORY; + + -- Error history: + -- This signal indicates the number of consequtive levels of the adder's + -- MSB and the history register as shown in the following table. The default + -- setting of 0 was added to compile with the Xilinx ISE. + ERROR_HISTORY <= 2 when ADDER_MSBs(2) = '0' and HISTORY_REG = "00" else -- Speed strongly up. + 1 when ADDER_MSBs(2) = '0' and HISTORY_REG = "01" else -- Speed up. + 0 when ADDER_MSBs(2) = '0' and HISTORY_REG = "10" else -- o.k. + 0 when ADDER_MSBs(2) = '0' and HISTORY_REG = "11" else -- Now adjusted. + 0 when ADDER_MSBs(2) = '1' and HISTORY_REG = "00" else -- Now adjusted. + 0 when ADDER_MSBs(2) = '1' and HISTORY_REG = "01" else -- o.k. + 1 when ADDER_MSBs(2) = '1' and HISTORY_REG = "10" else -- Slow down. + 2 when ADDER_MSBs(2) = '1' and HISTORY_REG = "11" else 0; -- Slow strongly down. + + FREQUENCY_DECODER: process(RESETn, CLK, HI_STOP, LOW_STOP) + -- The frequency decoder controls the period of the data inspection window respective to the + -- ERROR_HISTORY for the 11 bit adder is as follows: + -- ERROR_HISTORY = 0: + -- -> no correction necessary <- + -- ERROR_HISTORY = 1: + -- MSBs input: 7 6 5 4 3 2 1 0 + -- Correction output: -3 -2 -1 0 0 +1 +2 +3 + -- ERROR_HISTORY = 2: + -- MSBs input: 7 6 5 4 3 2 1 0 + -- Correction output: -4 -3 -2 -1 +1 +2 +3 +4 + -- The most significant bit of the FREQ_AMOUNT controls incrementation or decrementation + -- of the adder (0 is up). + variable FREQ_AMOUNT: std_logic_vector(3 downto 0); + begin + if RESETn = '0' then + FREQ_AMOUNT := "0000"; + elsif CLK = '1' and CLK' event then + if RD_PULSE = '1' then -- Load the frequency amount register. + case ERROR_HISTORY is + when 2 => + case ADDER_MSBs is + when "000" => FREQ_AMOUNT := "0100"; + when "001" => FREQ_AMOUNT := "0011"; + when "010" => FREQ_AMOUNT := "0010"; + when "011" => FREQ_AMOUNT := "0001"; + when "100" => FREQ_AMOUNT := "1001"; + when "101" => FREQ_AMOUNT := "1010"; + when "110" => FREQ_AMOUNT := "1011"; + when "111" => FREQ_AMOUNT := "1100"; + end case; + when 1 => + case ADDER_MSBs is + when "000" => FREQ_AMOUNT := "0011"; + when "001" => FREQ_AMOUNT := "0010"; + when "010" => FREQ_AMOUNT := "0001"; + when "011" => FREQ_AMOUNT := "0000"; + when "100" => FREQ_AMOUNT := "1000"; + when "101" => FREQ_AMOUNT := "1001"; + when "110" => FREQ_AMOUNT := "1010"; + when "111" => FREQ_AMOUNT := "1011"; + end case; + when others => + FREQ_AMOUNT := "0000"; + end case; + elsif FREQ_AMOUNT(2 downto 0) > "000" then + FREQ_AMOUNT := FREQ_AMOUNT - '1'; -- Modify the frequency amount register. + end if; + end if; + -- + if FREQ_AMOUNT(3) = '0' and FREQ_AMOUNT(2 downto 0) /= "000" and HI_STOP = '0' then + -- FREQ_AMOUNT(3) = '0' means Frequency is too low. Count up when counter is not at HI_STOP. + UP <= '1'; + DOWN <= '0'; + elsif FREQ_AMOUNT(3) = '1' and FREQ_AMOUNT (2 downto 0) /= "000" and LOW_STOP = '0' then + -- FREQ_AMOUNT(3) = '1' means Frequency is too high. Count down when counter is not at LOW_STOP. + UP <= '0'; + DOWN <= '1'; + else + UP <= '0'; + DOWN <= '0'; + end if; + end process FREQUENCY_DECODER; + + PHASE_DECODER: process(RESETn, CLK) + -- The phase decoder depends on the value of ADDER_MSBs. If the phase leeds, the most significant bit + -- of PHASE_AMOUNT indicates with a '0', that the next rollover should appear earlier. In case of a + -- phase lag, the next rollover should come later (indicated by a '1' of the most significant bit of + -- PHASE_AMOUNT). + -- This implementation gives the freedom to adjust the phase amount individually for every mode + -- depending on DDEn and HDTYPE. + variable PHASE_AMOUNT: std_logic_vector(5 downto 0); + begin + if RESETn = '0' then + PHASE_AMOUNT := "000000"; + elsif CLK = '1' and CLK' event then + if RD_PULSE = '1' and DDEn = '1' and HDTYPE = '0' then -- FM mode, single density. + case ADDER_MSBs is -- Multiplier: 4. + when "000" => PHASE_AMOUNT := "010000"; + when "001" => PHASE_AMOUNT := "001101"; + when "010" => PHASE_AMOUNT := "001000"; + when "011" => PHASE_AMOUNT := "000100"; + when "100" => PHASE_AMOUNT := "100100"; + when "101" => PHASE_AMOUNT := "101000"; + when "110" => PHASE_AMOUNT := "101100"; + when "111" => PHASE_AMOUNT := "110000"; + end case; + elsif RD_PULSE = '1' and DDEn = '1' and HDTYPE = '1' then -- FM mode, double density + case ADDER_MSBs is -- Multiplier: 2. + when "000" => PHASE_AMOUNT := "001000"; + when "001" => PHASE_AMOUNT := "000110"; + when "010" => PHASE_AMOUNT := "000100"; + when "011" => PHASE_AMOUNT := "000010"; + when "100" => PHASE_AMOUNT := "100010"; + when "101" => PHASE_AMOUNT := "100100"; + when "110" => PHASE_AMOUNT := "100110"; + when "111" => PHASE_AMOUNT := "101000"; + end case; + elsif RD_PULSE = '1' and DDEn = '0' and HDTYPE = '0' then -- MFM mode, single density + case ADDER_MSBs is -- Multiplier: 2. + when "000" => PHASE_AMOUNT := "000110"; + when "001" => PHASE_AMOUNT := "000100"; + when "010" => PHASE_AMOUNT := "000011"; + when "011" => PHASE_AMOUNT := "000010"; + when "100" => PHASE_AMOUNT := "100010"; + when "101" => PHASE_AMOUNT := "100011"; + when "110" => PHASE_AMOUNT := "100100"; + when "111" => PHASE_AMOUNT := "100110"; + end case; + elsif RD_PULSE = '1' and DDEn = '0' and HDTYPE = '1' then -- MFM mode, double density. + case ADDER_MSBs is -- Multiplier: 1. + when "000" => PHASE_AMOUNT := "000100"; + when "001" => PHASE_AMOUNT := "000011"; + when "010" => PHASE_AMOUNT := "000010"; + when "011" => PHASE_AMOUNT := "000001"; + when "100" => PHASE_AMOUNT := "100001"; + when "101" => PHASE_AMOUNT := "100010"; + when "110" => PHASE_AMOUNT := "100011"; + when "111" => PHASE_AMOUNT := "100100"; + end case; + else -- Modify phase amount register: + if PHASE_AMOUNT(4 downto 0) > x"0" then + PHASE_AMOUNT := PHASE_AMOUNT - 1; + end if; + end if; + end if; + -- + if PHASE_AMOUNT(5) = '0' and PHASE_AMOUNT(4 downto 0) > x"0" then + -- PHASE_AMOUNT(5) = '0' means, that the phase leeds. + PHASE_INCREASE <= '1'; -- Speed phase up, accelerate next rollover. + PHASE_DECREASE <= '0'; + elsif PHASE_AMOUNT(5) = '1' and PHASE_AMOUNT(4 downto 0) > x"0" then + -- PHASE_AMOUNT(5) = '1' means, that the phase lags. + PHASE_INCREASE <= '0'; + PHASE_DECREASE <= '1'; -- Speed phase down, delay of next rollover. + else + PHASE_INCREASE <= '0'; + PHASE_DECREASE <= '0'; + end if; + end process PHASE_DECODER; +end architecture BEHAVIOR; \ No newline at end of file diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_pkg.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_pkg.vhd new file mode 100644 index 0000000..b365b3d --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_pkg.vhd @@ -0,0 +1,232 @@ +---------------------------------------------------------------------- +---- ---- +---- WD1772 compatible floppy disk controller IP Core. ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- Floppy disk controller with all features of the Western ---- +---- Digital WD1772-02 controller. ---- +---- ---- +---- This is the package file containing the component ---- +---- declarations. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2006A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/05 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- Removed CRC_BUSY. + + +library ieee; +use ieee.std_logic_1164.all; + +package WF1772IP_PKG is +-- component declarations: +component WF1772IP_AM_DETECTOR + port( + CLK : in bit; + RESETn : in bit; + DDEn : in bit; + DATA : in bit; + DATA_STRB : in bit; + ID_AM : out bit; + DATA_AM : out bit; + DDATA_AM : out bit + ); +end component; + +component WF1772IP_CONTROL + port( + CLK : in bit; + RESETn : in bit; + A1, A0 : in bit; + RWn : in bit; + CSn : in bit; + DDEn : in bit; + DR : in bit_vector(7 downto 0); + CMD : in std_logic_vector(7 downto 0); + DSR : in std_logic_vector(7 downto 0); + TR : in std_logic_vector(7 downto 0); + SR : in std_logic_vector(7 downto 0); + MO : out bit; + WR_PR : out bit; + SPINUP_RECTYPE : out bit; + SEEK_RNF : out bit; + CRC_ERRFLAG : out bit; + LOST_DATA_TR00 : out bit; + DRQ : out bit; + DRQ_IPn : out bit; + BUSY : out bit; + AM_2_DISK : out bit; + ID_AM : in bit; + DATA_AM : in bit; + DDATA_AM : in bit; + CRC_ERR : in bit; + CRC_PRES : out bit; + TR_PRES : out bit; + TR_CLR : out bit; + TR_INC : out bit; + TR_DEC : out bit; + SR_LOAD : out bit; + SR_INC : out bit; + TRACK_NR : out std_logic_vector(7 downto 0); + DR_CLR : out bit; + DR_LOAD : out bit; + SHFT_LOAD_SD : out bit; + SHFT_LOAD_ND : out bit; + CRC_2_DISK : out bit; + DSR_2_DISK : out bit; + FF_2_DISK : out bit; + PRECOMP_EN : out bit; + DATA_STRB : in bit; + DISK_RWn : out bit; + WPRTn : in bit; + TRACK00n : in bit; + IPn : in bit; + DIRC : out bit; + STEP : out bit; + WG : out bit; + INTRQ : out bit + ); +end component; + +component WF1772IP_CRC_LOGIC + port( + CLK : in bit; + RESETn : in bit; + DDEn : in bit; + DISK_RWn : in bit; + ID_AM : in bit; + DATA_AM : in bit; + DDATA_AM : in bit; + SD : in bit; + CRC_STRB : in bit; + CRC_2_DISK : in bit; + CRC_PRES : in bit; + CRC_SDOUT : out bit; + CRC_ERR : out bit + ); +end component; + +component WF1772IP_DIGITAL_PLL + port( + CLK : in bit; + RESETn : in bit; + DDEn : in bit; + HDTYPE : in bit; + DISK_RWn : in bit; + RDn : in bit; + PLL_D : out bit; + PLL_DSTRB : out bit + ); +end component; + +component WF1772IP_REGISTERS + port( + CLK : in bit; + RESETn : in bit; + CSn : in bit; + ADR : in bit_vector(1 downto 0); + RWn : in bit; + DATA_IN : in std_logic_vector (7 downto 0); + DATA_OUT : out std_logic_vector (7 downto 0); + DATA_EN : out bit; + CMD : out std_logic_vector(7 downto 0); + SR : out std_logic_vector(7 downto 0); + TR : out std_logic_vector(7 downto 0); + DSR : out std_logic_vector(7 downto 0); + DR : out bit_vector(7 downto 0); + SD_R : in bit; + DATA_STRB : in bit; + DR_CLR : in bit; + DR_LOAD : in bit; + TR_PRES : in bit; + TR_CLR : in bit; + TR_INC : in bit; + TR_DEC : in bit; + TRACK_NR : in std_logic_vector(7 downto 0); + SR_LOAD : in bit; + SR_INC : in bit; + SHFT_LOAD_SD : in bit; + SHFT_LOAD_ND : in bit; + MOTOR_ON : in bit; + WRITE_PROTECT : in bit; + SPINUP_RECTYPE : in bit; + SEEK_RNF : in bit; + CRC_ERRFLAG : in bit; + LOST_DATA_TR00 : in bit; + DRQ : in bit; + DRQ_IPn : in bit; + BUSY : in bit; + DDEn : in bit + ); +end component; + +component WF1772IP_TRANSCEIVER + port( + CLK : in bit; + RESETn : in bit; + DDEn : in bit; + HDTYPE : in bit; + ID_AM : in bit; + DATA_AM : in bit; + DDATA_AM : in bit; + SHFT_LOAD_SD : in bit; + DR : in bit_vector(7 downto 0); + PRECOMP_EN : in bit; + AM_TYPE : in bit; + AM_2_DISK : in bit; + CRC_2_DISK : in bit; + DSR_2_DISK : in bit; + FF_2_DISK : in bit; + SR_SDOUT : in std_logic; + CRC_SDOUT : in bit; + WRn : out bit; + PLL_DSTRB : in bit; + PLL_D : in bit; + WDATA : out bit; + DATA_STRB : out bit; + SD_R : out bit + ); +end component; +end WF1772IP_PKG; diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_registers.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_registers.vhd new file mode 100644 index 0000000..7556fe5 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_registers.vhd @@ -0,0 +1,264 @@ +---------------------------------------------------------------------- +---- ---- +---- WD1772 compatible floppy disk controller IP Core. ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- Floppy disk controller with all features of the Western ---- +---- Digital WD1772-02 controller. ---- +---- ---- +---- This file models all the five WD1772 registers: DATA-, ---- +---- COMMAND-, SECTOR-, TRACK- and STATUS register as also the ---- +---- shift register. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2006A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/05 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF1772IP_REGISTERS is + port( + -- System control: + CLK : in bit; + RESETn : in bit; + + -- Bus interface: + CSn : in bit; + ADR : in bit_vector(1 downto 0); + RWn : in bit; + DATA_IN : in std_logic_vector (7 downto 0); + DATA_OUT : out std_logic_vector (7 downto 0); + DATA_EN : out bit; + + -- FDC data: + CMD : out std_logic_vector(7 downto 0); -- Command register. + SR : out std_logic_vector(7 downto 0); -- Sector register. + TR : out std_logic_vector(7 downto 0); -- Track register. + DSR : out std_logic_vector(7 downto 0); -- Data shift register. + DR : out bit_vector(7 downto 0); -- Data register. + + -- Serial data and clock strobes (in and out): + DATA_STRB : in bit; -- Strobe for the incoming data. + SD_R : in bit; -- Serial data input. + + -- DATA register control: + DR_CLR : in bit; -- Clear. + DR_LOAD : in bit; -- LOAD. + + -- Track register controls: + TR_PRES : in bit; -- Set x"FF". + TR_CLR : in bit; -- Clear. + TR_INC : in bit; -- Increment. + TR_DEC : in bit; -- Decrement. + + -- Sector register control: + TRACK_NR : in std_logic_vector(7 downto 0); + SR_LOAD : in bit; -- Load. + SR_INC : in bit; -- Increment. + + -- Shift register control: + SHFT_LOAD_SD : in bit; + SHFT_LOAD_ND : in bit; + + -- Status register stuff + MOTOR_ON : in bit; + WRITE_PROTECT : in bit; + SPINUP_RECTYPE : in bit; -- Disk is on speed / data mark status. + SEEK_RNF : in bit; -- Seek error / record not found status flag. + CRC_ERRFLAG : in bit; -- CRC status flag. + LOST_DATA_TR00 : in bit; + DRQ : in bit; + DRQ_IPn : in bit; + BUSY : in bit; + + -- Others: + DDEn : in bit + ); +end WF1772IP_REGISTERS; + +architecture BEHAVIOR of WF1772IP_REGISTERS is +-- Remark: In the original data sheet 'WD17X-00' there is the following statement: +-- "After any register is written to, the same register cannot be read from until +-- 16us in MFM or 32us in FMMM have elapsed." If this is a hint for a hardware read +-- lock ... this lock is not implemented in this code. +signal SHIFT_REG : std_logic_vector(7 downto 0); +signal DATA_REG : std_logic_vector(7 downto 0); +signal COMMAND_REG : std_logic_vector(7 downto 0); +signal SECTOR_REG : std_logic_vector(7 downto 0); +signal TRACK_REG : std_logic_vector(7 downto 0); +signal STATUS_REG : bit_vector(7 downto 0); +signal SD_R_I : std_logic; +begin + -- Type conversion To_Std_Logic: + SD_R_I <= '1' when SD_R = '1' else '0'; + + P_SHIFTREG: process(RESETn, CLK) + begin + if RESETn = '0' then + SHIFT_REG <= x"00"; + elsif CLK = '1' and CLK' event then + if SHFT_LOAD_ND = '1' then + SHIFT_REG <= DATA_REG; -- Load data register stuff. + elsif SHFT_LOAD_SD = '1' and DDEn = '1' then + SHIFT_REG <= DATA_REG; -- Normal data in FM mode. + elsif SHFT_LOAD_SD = '1' and DDEn = '0' then -- MFM mode: + case DATA_REG is + when x"F5" => SHIFT_REG <= x"A1"; -- Special character. + when x"F6" => SHIFT_REG <= x"C2"; -- Special character. + when others => SHIFT_REG <= DATA_REG; -- Normal MFM data. + end case; + elsif DATA_STRB = '1' then -- Shift left during read from disk or write to disk. + SHIFT_REG <= SHIFT_REG(6 downto 0) & SD_R_I; -- for write operation SD_R_I is a dummy. + end if; + end if; + end process P_SHIFTREG; + DSR <= SHIFT_REG; + + DATAREG: process(RESETn, CLK) + begin + if RESETn = '0' then + DATA_REG <= x"00"; + elsif CLK = '1' and CLK' event then + if CSn = '0' and ADR = "11" and RWn = '0' then + DATA_REG <= DATA_IN; -- Write bus data to register + elsif DR_LOAD = '1' and DRQ = '0' then + DATA_REG <= SHIFT_REG; -- Correct data loaded to shift register. + elsif DR_LOAD = '1' and DRQ = '1' then + DATA_REG <= x"00"; -- Dummy byte due to lost data loaded to shift register. + elsif DR_CLR = '1' then + DATA_REG <= (others => '0'); + end if; + end if; + end process DATAREG; + -- Data register buffered for further data processing. + DR <= To_BitVector(DATA_REG); + + SECTORREG: process(RESETn, CLK) + begin + if RESETn = '0' then + SECTOR_REG <= x"00"; + elsif CLK = '1' and CLK' event then + if CSn = '0' and ADR = "10" and RWn = '0' and BUSY = '0' then + SECTOR_REG <= DATA_IN; -- Write to register when device is not busy. + elsif SR_LOAD = '1' then + -- Load the track number to the sector register in the type III command + -- 'Read Address'. + SECTOR_REG <= TRACK_NR; + elsif SR_INC = '1' then + SECTOR_REG <= SECTOR_REG + '1'; + end if; + end if; + end process SECTORREG; + SR <= SECTOR_REG; + + TRACKREG: process(RESETn, CLK) + begin + if RESETn = '0' then + TRACK_REG <= x"00"; + elsif CLK = '1' and CLK' event then + if CSn = '0' and ADR = "01" and RWn = '0' and BUSY = '0' then + TRACK_REG <= DATA_IN; -- Write to register when device is busy. + elsif TR_PRES = '1' then + TRACK_REG <= (others => '1'); -- Preset the track register. + elsif TR_CLR = '1' then + TRACK_REG <= (others => '0'); -- Reset the track register. + elsif TR_INC = '1' then + TRACK_REG <= TRACK_REG + '1'; -- Increment register contents. + elsif TR_DEC = '1' then + TRACK_REG <= TRACK_REG - '1'; -- Decrement register contents. + end if; + end if; + end process TRACKREG; + TR <= TRACK_REG; + + COMMANDREG: process(RESETn, CLK) + -- The command register is write only. + begin + if RESETn = '0' then + COMMAND_REG <= x"00"; + elsif CLK = '1' and CLK' event then + if CSn = '0' and ADR = "00" and RWn = '0' and BUSY = '0' then + COMMAND_REG <= DATA_IN; -- Write to register when device is not busy. + -- Write 'force interrupt' to register even when device is busy: + elsif CSn = '0' and ADR = "00" and RWn = '0' and DATA_IN(7 downto 4) = x"D" then + COMMAND_REG <= DATA_IN; + end if; + end if; + end process COMMANDREG; + CMD <= COMMAND_REG; + + STATUSREG: process(RESETn, CLK) + -- The status register is read only to the data bus. + begin + -- Status register wiring: + if RESETn = '0' then + STATUS_REG <= x"00"; + elsif CLK = '1' and CLK' event then + STATUS_REG(7) <= MOTOR_ON; + STATUS_REG(6) <= WRITE_PROTECT; + STATUS_REG(5) <= SPINUP_RECTYPE; + STATUS_REG(4) <= SEEK_RNF; + STATUS_REG(3) <= CRC_ERRFLAG; + STATUS_REG(2) <= LOST_DATA_TR00; + STATUS_REG(1) <= DRQ_IPn; + STATUS_REG(0) <= BUSY; + end if; + end process STATUSREG; + -- Read from track, sector or data register: + -- The register data after writing to the track register is valid at least + -- after 32us in FM mode and after 16us in MFM mode. + -- Read from status register. This register is read only: + -- Be aware, that the status register data bits 7 to 1 after writing + -- the command regsiter are valid at least after 64us in FM mode or 32us in MFM mode and + -- the bit 0 (BUSY) is valid after 48us in FM mode or 24us in MFM mode. + DATA_OUT <= TRACK_REG when CSn = '0' and ADR = "01" and RWn = '1' else + SECTOR_REG when CSn = '0' and ADR = "10" and RWn = '1' else + DATA_REG when CSn = '0' and ADR = "11" and RWn = '1' else + To_StdLogicVector(STATUS_REG) when CSn = '0' and ADR = "00" and RWn = '1' else (others => '0'); + DATA_EN <= '1' when CSn = '0' and RWn = '1' else '0'; +end architecture BEHAVIOR; \ No newline at end of file diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_top.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_top.vhd new file mode 100644 index 0000000..71ef3f3 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_top.vhd @@ -0,0 +1,154 @@ +---------------------------------------------------------------------- +---- ---- +---- WD1772 compatible floppy disk controller IP Core. ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- Floppy disk controller with all features of the Western ---- +---- Digital WD1772-02 controller. ---- +---- ---- +---- This is the top level file. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - Test of the FM portion of the code (if there is any need). ---- +---- - Test of the read track command. ---- +---- - Test of the read address command. ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2006A 2006/06/03 WF +-- Initial Release: the MFM portion for HD and DD floppies is tested. +-- The FM mode (DDEn = '1') is not completely tested due to the lack +-- of FM drives. +-- Revision 2K6B 2006/11/05 WF +-- Modified Source to compile with the Xilinx ISE. +-- Fixed the polarity of the precompensation flag. +-- The flag is no active '0'. Thanks to Jorma +-- Oksanen for the information. +-- Revision 2K7B 2006/12/29 WF +-- Introduced several improvements based on a very good examination +-- of the pll code by Jean Louis-Guerin. +-- Revision 2K8B 2008/12/24 WF +-- Rewritten this top level file as a wrapper for the top_soc file. + +library work; +use work.WF1772IP_PKG.all; + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF1772IP_TOP is + port ( + CLK : in bit; -- 16MHz clock! + MRn : in bit; + CSn : in bit; + RWn : in bit; + A1, A0 : in bit; + DATA : inout std_logic_vector(7 downto 0); + RDn : in bit; + TR00n : in bit; + IPn : in bit; + WPRTn : in bit; + DDEn : in bit; + HDTYPE : in bit; -- '0' = DD disks, '1' = HD disks. + MO : out bit; + WG : out bit; + WD : out bit; + STEP : out bit; + DIRC : out bit; + DRQ : out bit; + INTRQ : out bit + ); +end entity WF1772IP_TOP; + +architecture STRUCTURE of WF1772IP_TOP is +component WF1772IP_TOP_SOC + port ( + CLK : in bit; + RESETn : in bit; + CSn : in bit; + RWn : in bit; + A1, A0 : in bit; + DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); + DATA_EN : out bit; + RDn : in bit; + TR00n : in bit; + IPn : in bit; + WPRTn : in bit; + DDEn : in bit; + HDTYPE : in bit; + MO : out bit; + WG : out bit; + WD : out bit; + STEP : out bit; + DIRC : out bit; + DRQ : out bit; + INTRQ : out bit + ); +end component; +signal DATA_OUT : std_logic_vector(7 downto 0); +signal DATA_EN : bit; +begin + DATA <= DATA_OUT when DATA_EN = '1' else (others => 'Z'); + + I_1772: WF1772IP_TOP_SOC + port map( + CLK => CLK, + RESETn => MRn, + CSn => CSn, + RWn => RWn, + A1 => A1, + A0 => A0, + DATA_IN => DATA, + DATA_OUT => DATA_OUT, + DATA_EN => DATA_EN, + RDn => RDn, + TR00n => TR00n, + IPn => IPn, + WPRTn => WPRTn, + DDEn => DDEn, + HDTYPE => HDTYPE, + MO => MO, + WG => WG, + WD => WD, + STEP => STEP, + DIRC => DIRC, + DRQ => DRQ, + INTRQ => INTRQ + ); +end architecture STRUCTURE; \ No newline at end of file diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_top_soc.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_top_soc.vhd new file mode 100644 index 0000000..9cfd111 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_top_soc.vhd @@ -0,0 +1,333 @@ +---------------------------------------------------------------------- +---- ---- +---- WD1772 compatible floppy disk controller IP Core. ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- Floppy disk controller with all features of the Western ---- +---- Digital WD1772-02 controller. ---- +---- ---- +---- Top level file for use in systems on programmable chips. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - Test of the FM portion of the code (if there is any need). ---- +---- - Test of the read track command. ---- +---- - Test of the read address command. ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2006A 2006/06/03 WF +-- Initial Release: the MFM portion for HD and DD floppies is tested. +-- The FM mode (DDEn = '1') is not completely tested due to the lack +-- of FM drives. +-- Revision 2K6B 2006/11/05 WF +-- Modified Source to compile with the Xilinx ISE. +-- Fixed the polarity of the precompensation flag. +-- The flag is no active '0'. Thanks to Jorma Oksanen for the information. +-- Top level file provided for SOC (systems on programmable chips). +-- Revision 2K7B 2006/12/29 WF +-- Introduced several improvements based on a very good examination +-- of the pll code by Jean Louis-Guerin. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- Revision 2K8B 2008/12/24 WF +-- Bugfixes in the controller due to hanging state machine. +-- Removed CRC_BUSY. +-- + +library work; +use work.WF1772IP_PKG.all; + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF1772IP_TOP_SOC is + port ( + CLK : in bit; -- 16MHz clock! + RESETn : in bit; + CSn : in bit; + RWn : in bit; + A1, A0 : in bit; + DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); + DATA_EN : out bit; + RDn : in bit; + TR00n : in bit; + IPn : in bit; + WPRTn : in bit; + DDEn : in bit; + HDTYPE : in bit; -- '0' = DD disks, '1' = HD disks. + MO : out bit; + WG : out bit; + WD : out bit; + STEP : out bit; + DIRC : out bit; + DRQ : out bit; + INTRQ : out bit + ); +end entity WF1772IP_TOP_SOC; + +architecture STRUCTURE of WF1772IP_TOP_SOC is +signal DATA_OUT_REG : std_logic_vector(7 downto 0); +signal DATA_EN_REG : bit; +signal CMD_I : std_logic_vector(7 downto 0); +signal DR_I : bit_vector(7 downto 0); +signal DSR_I : std_logic_vector(7 downto 0); +signal TR_I : std_logic_vector(7 downto 0); +signal SR_I : std_logic_vector(7 downto 0); +signal ID_AM_I : bit; +signal DATA_AM_I : bit; +signal DDATA_AM_I : bit; +signal AM_TYPE_I : bit; +signal AM_2_DISK_I : bit; +signal DATA_STRB_I : bit; +signal BUSY_I : bit; +signal DRQ_I : bit; +signal DRQ_IPn_I : bit; +signal LD_TR00_I : bit; +signal SP_RT_I : bit; +signal SEEK_RNF_I : bit; +signal WR_PR_I : bit; +signal MO_I : bit; +signal PLL_DSTRB_I : bit; +signal PLL_D_I : bit; +signal CRC_SD_I : bit; +signal CRC_ERR_I : bit; +signal CRC_PRES_I : bit; +signal CRC_ERRFLAG_I : bit; +signal SD_R_I : bit; +signal CRC_SDOUT_I : bit; +signal SHFT_LOAD_SD_I : bit; +signal SHFT_LOAD_ND_I : bit; +signal WR_In : bit; +signal TR_PRES_I : bit; +signal TR_CLR_I : bit; +signal TR_INC_I : bit; +signal TR_DEC_I : bit; +signal SR_LOAD_I : bit; +signal SR_INC_I : bit; +signal DR_CLR_I : bit; +signal DR_LOAD_I : bit; +signal TRACK_NR_I : std_logic_vector(7 downto 0); +signal CRC_2_DISK_I : bit; +signal DSR_2_DISK_I : bit; +signal FF_2_DISK_I : bit; +signal PRECOMP_EN_I : bit; +signal DISK_RWn_I : bit; +signal WDATA_I : bit; +begin + -- Three state data bus: + DATA_OUT <= DATA_OUT_REG when DATA_EN_REG = '1' else (others => '0'); + DATA_EN <= DATA_EN_REG; + + -- Some signals copied to the outputs: + WD <= not WR_In; + MO <= MO_I; + DRQ <= DRQ_I; + + -- Write deleted data address mark in MFM mode in 'Write Sector' command in + -- case of asserted command bit 0. + AM_TYPE_I <= '0' when CMD_I(7 downto 5) = "101" and CMD_I(0) = '1' else '1'; + + -- The CRC unit is used during read from disk and write to disk. + -- This is the data multiplexer for the data stream to encode. + CRC_SD_I <= SD_R_I when DISK_RWn_I = '1' else WDATA_I; + + I_CONTROL: WF1772IP_CONTROL + port map( + CLK => CLK, + RESETn => RESETn, + A1 => A0, + A0 => A1, + RWn => RWn, + CSn => CSn, + DDEn => DDEn, + DR => DR_I, + CMD => CMD_I, + DSR => DSR_I, + TR => TR_I, + SR => SR_I, + MO => MO_I, + WR_PR => WR_PR_I, + SPINUP_RECTYPE => SP_RT_I, + SEEK_RNF => SEEK_RNF_I, + CRC_ERRFLAG => CRC_ERRFLAG_I, + LOST_DATA_TR00 => LD_TR00_I, + DRQ => DRQ_I, + DRQ_IPn => DRQ_IPn_I, + BUSY => BUSY_I, + AM_2_DISK => AM_2_DISK_I, + ID_AM => ID_AM_I, + DATA_AM => DATA_AM_I, + DDATA_AM => DDATA_AM_I, + CRC_ERR => CRC_ERR_I, + CRC_PRES => CRC_PRES_I, + TR_PRES => TR_PRES_I, + TR_CLR => TR_CLR_I, + TR_INC => TR_INC_I, + TR_DEC => TR_DEC_I, + SR_LOAD => SR_LOAD_I, + SR_INC => SR_INC_I, + TRACK_NR => TRACK_NR_I, + DR_CLR => DR_CLR_I, + DR_LOAD => DR_LOAD_I, + SHFT_LOAD_SD => SHFT_LOAD_SD_I, + SHFT_LOAD_ND => SHFT_LOAD_ND_I, + CRC_2_DISK => CRC_2_DISK_I, + DSR_2_DISK => DSR_2_DISK_I, + FF_2_DISK => FF_2_DISK_I, + PRECOMP_EN => PRECOMP_EN_I, + DATA_STRB => DATA_STRB_I, + DISK_RWn => DISK_RWn_I, + WPRTn => WPRTn, + TRACK00n => TR00n, + IPn => IPn, + DIRC => DIRC, + STEP => STEP, + WG => WG, + INTRQ => INTRQ + ); + + I_REGISTERS: WF1772IP_REGISTERS + port map( + CLK => CLK, + RESETn => RESETn, + CSn => CSn, + ADR(1) => A1, + ADR(0) => A0, + RWn => RWn, + DATA_IN => DATA_IN, + DATA_OUT => DATA_OUT_REG, + DATA_EN => DATA_EN_REG, + CMD => CMD_I, + TR => TR_I, + SR => SR_I, + DSR => DSR_I, + DR => DR_I, + SD_R => SD_R_I, + DATA_STRB => DATA_STRB_I, + DR_CLR => DR_CLR_I, + DR_LOAD => DR_LOAD_I, + TR_PRES => TR_PRES_I, + TR_CLR => TR_CLR_I, + TR_INC => TR_INC_I, + TR_DEC => TR_DEC_I, + TRACK_NR => TRACK_NR_I, + SR_LOAD => SR_LOAD_I, + SR_INC => SR_INC_I, + SHFT_LOAD_SD => SHFT_LOAD_SD_I, + SHFT_LOAD_ND => SHFT_LOAD_ND_I, + MOTOR_ON => MO_I, + WRITE_PROTECT => WR_PR_I, + SPINUP_RECTYPE => SP_RT_I, + SEEK_RNF => SEEK_RNF_I, + CRC_ERRFLAG => CRC_ERRFLAG_I, + LOST_DATA_TR00 => LD_TR00_I, + DRQ => DRQ_I, + DRQ_IPn => DRQ_IPn_I, + BUSY => BUSY_I, + DDEn => DDEn + ); + + I_DIGITAL_PLL: WF1772IP_DIGITAL_PLL + port map( + CLK => CLK, + RESETn => RESETn, + DDEn => DDEn, + HDTYPE => HDTYPE, + DISK_RWn => DISK_RWn_I, + RDn => RDn, + PLL_D => PLL_D_I, + PLL_DSTRB => PLL_DSTRB_I + ); + + I_AM_DETECTOR: WF1772IP_AM_DETECTOR + port map( + CLK => CLK, + RESETn => RESETn, + DDEn => DDEn, + DATA => PLL_D_I, + DATA_STRB => PLL_DSTRB_I, + ID_AM => ID_AM_I, + DATA_AM => DATA_AM_I, + DDATA_AM => DDATA_AM_I + ); + + I_CRC_LOGIC: WF1772IP_CRC_LOGIC + port map( + CLK => CLK, + RESETn => RESETn, + DDEn => DDEn, + DISK_RWn => DISK_RWn_I, + ID_AM => ID_AM_I, + DATA_AM => DATA_AM_I, + DDATA_AM => DDATA_AM_I, + SD => CRC_SD_I, + CRC_STRB => DATA_STRB_I, + CRC_2_DISK => CRC_2_DISK_I, + CRC_PRES => CRC_PRES_I, + CRC_SDOUT => CRC_SDOUT_I, + CRC_ERR => CRC_ERR_I + ); + + I_TRANSCEIVER: WF1772IP_TRANSCEIVER + port map( + CLK => CLK, + RESETn => RESETn, + DDEn => DDEn, + HDTYPE => HDTYPE, + ID_AM => ID_AM_I, + DATA_AM => DATA_AM_I, + DDATA_AM => DDATA_AM_I, + SHFT_LOAD_SD => SHFT_LOAD_SD_I, + DR => DR_I, + PRECOMP_EN => PRECOMP_EN_I, + AM_TYPE => AM_TYPE_I, + AM_2_DISK => AM_2_DISK_I, + CRC_2_DISK => CRC_2_DISK_I, + DSR_2_DISK => DSR_2_DISK_I, + FF_2_DISK => FF_2_DISK_I, + SR_SDOUT => DSR_I(7), + CRC_SDOUT => CRC_SDOUT_I, + WRn => WR_In, + WDATA => WDATA_I, + PLL_DSTRB => PLL_DSTRB_I, + PLL_D => PLL_D_I, + DATA_STRB => DATA_STRB_I, + SD_R => SD_R_I + ); +end architecture STRUCTURE; \ No newline at end of file diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_transceiver.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_transceiver.vhd new file mode 100644 index 0000000..c836716 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_transceiver.vhd @@ -0,0 +1,517 @@ +---------------------------------------------------------------------- +---- ---- +---- WD1772 compatible floppy disk controller IP Core. ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- Floppy disk controller with all features of the Western ---- +---- Digital WD1772-02 controller. ---- +---- ---- +---- The transceiver unit contains on the one hand the receiver ---- +---- part which strips off the clock signal from the data stream ---- +---- and on the other hand the transmitter unit which provides in ---- +---- the different modes (FM and MFM) all functions which are ---- +---- necessary to send data, CRC bytes, 'FF', '00' or the address ---- +---- marks. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2006A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/05 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- Revision 2K9A 2009/06/20 WF +-- MFM_In and MASK_SHFT have now synchronous reset to meet preset requirement. +-- + + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF1772IP_TRANSCEIVER is + port( + -- System control + CLK : in bit; -- must be 16MHz + RESETn : in bit; + + -- Data and Control: + HDTYPE : in bit; -- Floppy type HD or DD. + DDEn : in bit; -- Double density select (FM or MFM). + ID_AM : in bit; -- ID addressmark strobe. + DATA_AM : in Bit; -- Data addressmark strobe. + DDATA_AM : in Bit; -- Deleted data addressmark strobe. + SHFT_LOAD_SD : in bit; -- Indication for shift register load time. + DR : in bit_vector(7 downto 0); -- Content of the data register. + + -- Data strobes: + PLL_DSTRB : in bit; -- Clock strobe for RD serial data input. + DATA_STRB : buffer bit; + + -- Data strobe and data for the CRC during write operation: + WDATA : buffer bit; + + -- Encoder (logic to disk): + PRECOMP_EN : in bit; -- control signal for MFM write precompensation. + AM_TYPE : in bit; -- Write deleted address mark in MFM mode when 0. + AM_2_DISK : in bit; + DSR_2_DISK : in bit; + FF_2_DISK : in bit; + CRC_2_DISK : in bit; + SR_SDOUT : in std_logic; -- encoder's data input from the shift register (serial). + CRC_SDOUT : in bit; -- encoder's data input from the CRC unit (serial). + WRn : out bit; -- write output for the MFM drive containing clock and data. + + -- Decoder (disk to logic): + PLL_D : in bit; -- Serial data input. + SD_R : out bit -- Serial (decoded) data output. + ); +end WF1772IP_TRANSCEIVER; + +architecture BEHAVIOR of WF1772IP_TRANSCEIVER is +type MFM_STATES is (A_00, B_01, C_10); +type PRECOMP_VALUES is (EARLY, NOMINAL, LATE); +type DEC_STATES is (CLK_PHASE, DATA_PHASE); + +signal MFM_STATE : MFM_STATES; +signal NEXT_MFM_STATE : MFM_STATES; +signal PRECOMP : PRECOMP_VALUES; +signal DEC_STATE : DEC_STATES; +signal NEXT_DEC_STATE : DEC_STATES; + +signal FM_In : bit; + +signal CLKMASK : bit; -- Control for suppression of FM clock transitions. + +signal MFM_10_STRB : bit; +signal MFM_01_STRB : bit; + +signal WR_CNT : std_logic_vector(3 downto 0); +signal MFM_In : bit; + +signal AM_SHFT : bit_vector(31 downto 0); + +begin + -- ####################### encoder stuff ########################### + ADRMARK: process(RESETn, CLK) + -- This process provides the address mark data for both FM and MFM in + -- write to disk mode. In FM only one byte is written where in MFM + -- 3 sync bytes x"A1" and one data address mark is written. + -- In this process only the data address mark is provided. The only way + -- writing the ID address mark is the write track command. + begin + if RESETn = '0' then + AM_SHFT <= (others => '0'); + elsif CLK = '1' and CLK' event then + if AM_2_DISK = '1' and DATA_STRB = '1' then + AM_SHFT <= AM_SHFT (30 downto 0) & '0'; -- Shift out. + elsif AM_2_DISK = '0' and DDEn = '1' and AM_TYPE = '0' then -- FM mode. + AM_SHFT <= x"F8000000"; -- Load deleted FM address mark. + elsif AM_2_DISK = '0' and DDEn = '1' and AM_TYPE = '1' then -- FM mode. + AM_SHFT <= x"FB000000"; -- Load normal FM address mark. + elsif AM_2_DISK = '0' and DDEn = '0' and AM_TYPE = '0' then -- MFM mode deleted data mark. + AM_SHFT <= x"A1A1A1F8"; -- Load MFM syncs and address mark. + elsif AM_2_DISK = '0' and DDEn = '0' and AM_TYPE = '1' then -- Default: MFM mode normal data mark. + AM_SHFT <= x"A1A1A1FB"; -- Load MFM syncs and address mark. + end if; + end if; + end process ADRMARK; + + -- Input multiplexer: + WDATA <= AM_SHFT(31) when AM_2_DISK = '1' else -- Address mark data data. + To_Bit(SR_SDOUT) when DSR_2_DISK = '1' else -- Shift register data. + CRC_SDOUT when CRC_2_DISK = '1' else -- CRC data. + '1' when FF_2_DISK = '1' else '0'; -- Write zeros is default. + + -- Output multiplexer: + WRn <= '0' when FM_In = '0' and DDEn = '1' else -- FM portion. + '0' when MFM_In = '0' and DDEn = '0' else '1'; -- MFM portion and default. + + CLK_MASK: process(CLK) + -- This part of software controls the suppression of the clock pulses + -- during transmission of several FM special characters. During writing + -- 'normal' data to the disk, only 8 mask bits of the shift register are + -- used. During writing MFM sync and address mark bits, the register is + -- used with 32 mask bits. + variable MASK_SHFT : bit_vector(23 downto 0); + variable LOCK : boolean; + begin + if CLK = '1' and CLK' event then + if RESETn = '0' then + MASK_SHFT := (others => '1'); + LOCK := false; + -- Load the mask shift register just in time when the shift register is + -- loaded with valid data from the data register. + elsif SHFT_LOAD_SD = '1' and DDEn = '1' then -- FM mode. + case DR is + when x"F8" | x"F9" | x"FA" | x"FB" | x"FE" => MASK_SHFT := x"C7FFFF"; + when x"FC" => MASK_SHFT := x"D7FFFF"; + when x"F5" | x"F6" => MASK_SHFT := (others => '0'); -- Not allowed. + when others => MASK_SHFT := x"FFFFFF"; -- Normal data. + end case; + elsif SHFT_LOAD_SD = '1' and DDEn = '0' then -- MFM mode. + case DR is + when x"F5" => MASK_SHFT := x"FBFFFF"; -- Suppress clock pulse between bits 4 and 5. + when x"F6" => MASK_SHFT := x"F7FFFF"; -- Suppress clock pulse between bits 3 and 4. + when others => MASK_SHFT := x"FFFFFF"; -- Normal data. + end case; + elsif AM_2_DISK = '1' and DDEn = '1' and LOCK = false then -- FM mode. + MASK_SHFT := x"C7FFFF"; -- Load just once per AM_2_DISK rising edge. + LOCK := true; + elsif AM_2_DISK = '1' and DDEn = '0' and LOCK = false then -- MFM mode. + MASK_SHFT := x"FBFBFB"; -- Three syncs with suppressed clock pulse then transparent mask. + LOCK := true; + elsif DATA_STRB = '1' then -- shift as long as transmission is active + -- The Shift register is shifted left. After shifting the clockmasks out it is + -- transparent due to the '1's filled up from the left. + MASK_SHFT := MASK_SHFT(22 downto 0) & '1'; -- Shift left. + elsif AM_2_DISK = '0' then + LOCK := false; -- Release the lock after address mark has been written. + end if; + end if; + CLKMASK <= MASK_SHFT(23); + end process CLK_MASK; + + FM_ENCODER: process (RESETn, DATA_STRB, CLK) + -- For DD type floppies the data rate is 125kBps. Therefore there are 128 16-MHz clocks cycles + -- per FM bit. + -- For HD type floppies the data rate is 250kBps. Therefore there are 64 16-MHz clocks cycles + -- per FM bit. + -- The FM write pulse width is 1.375us for DD and 0.750us HD type floppies. + -- This process provides the FM encoded signal. The first pulse is in any case the clock + -- pulse and the second pulse is due to data. The FM encoding is very simple and therefore + -- self explaining. + variable CNT : std_logic_vector(7 downto 0); + begin + if RESETn = '0' then + FM_In <= '1'; + CNT := x"00"; + elsif CLK = '1' and CLK' event then + -- In case of HD type floppies the counter reaches a value of b"0100000" + -- In case of DD type floppies the counter reaches a value of b"1000000" + if DATA_STRB = '1' then + CNT := x"00"; + else + CNT := CNT + '1'; + end if; + -- The flux reversal pulses are centered between the DATA_STRB pulses. + -- In detail: the clock pulse appears in the middle of the first half + -- of the DATA_STRB period and the data pulse appears in the middle of + -- the second half. + case HDTYPE is + when '0' => -- DD type floppies: + if CNT > "00010101" and CNT <= "00101011" then + FM_In <= not CLKMASK; -- FM clock. + elsif CNT > "01010101" and CNT <= "01101011" then + FM_In <= not WDATA; -- FM data. + else + FM_In <= '1'; + end if; + when '1' => -- HD type floppies: + if CNT > "00001010" and CNT <= "00010110" then + FM_In <= not CLKMASK; -- FM clock. + elsif CNT > "00101010" and CNT <= "00110110" then + FM_In <= not WDATA; -- FM data. + else + FM_In <= '1'; + end if; + end case; + end if; + end process FM_ENCODER; + + MFM_ENCODE_REG: process(RESETn, CLK) + -- This process is the first portion of the more complicated MFM encoder. It can be interpreted + -- as a Moore machine. This part is the current state register. + begin + if RESETn = '0' then + MFM_STATE <= A_00; + elsif CLK = '1' and CLK' event then + MFM_STATE <= NEXT_MFM_STATE; + end if; + end process MFM_ENCODE_REG; + + MFM_ENCODE_LOGIC: process(MFM_STATE, WDATA, DATA_STRB) + -- Rules for Encoding: + -- transitions are never located at the mid point of a 'zero'. + -- transistions are always located at the mid point of a '1'. + -- no transitions at the borders of a '1'. + -- transitions appear between two adjacent 'zeros'. + -- states are as follows: + -- A_00: idle state, no transition. + -- B_01: transistion between the MFM clock edges. + -- C_10: transition on the leading MFM clock edges. + -- The timing of the MFM output is done in the process MFM_WR_OUT. + begin + case MFM_STATE is + when A_00 => + if WDATA = '0' and DATA_STRB = '1' then + NEXT_MFM_STATE <= C_10; + elsif WDATA = '1' and DATA_STRB = '1' then + NEXT_MFM_STATE <= B_01; + else + NEXT_MFM_STATE <= A_00; -- Stay, if there is no strobe. + end if; + when C_10 => + if WDATA = '0' and DATA_STRB = '1' then + NEXT_MFM_STATE <= C_10; + elsif WDATA = '1' and DATA_STRB = '1' then + NEXT_MFM_STATE <= B_01; + else + NEXT_MFM_STATE <= C_10; -- Stay, if there is no strobe. + end if; + when B_01 => + if WDATA = '0' and DATA_STRB = '1' then + NEXT_MFM_STATE <= A_00; + elsif WDATA = '1' and DATA_STRB = '1' then + NEXT_MFM_STATE <= B_01; + else + NEXT_MFM_STATE <= B_01; -- Stay, if there is no strobe. + end if; + end case; + end process MFM_ENCODE_LOGIC; + + MFM_PRECOMPENSATION: process(RESETn, CLK) + -- The write pattern is adjusted in the MFM write timing process as follows: + -- after DATA_STRB (the duty cycle of this strobe is exactly one CLK) the + -- incoming data is bufferd in WRITEPATTERN. After the following DATA_STRB + -- the WDATA is shifted through WRITEPATTERN. After further DATA_STRBs the + -- WRITEPATTERN consists of previous, current and next WDATA like this: + -- WRITEPATTERN(3) is the second previous WDATA. + -- WRITEPATTERN(2) is the previous WDATA. + -- WRITEPATTERN(1) is the current WDATA to be sent. + -- WRITEPATTERN(0) is the next WDATA to be sent. + variable WRITEPATTERN : bit_vector(3 downto 0); + begin + if RESETn = '0' then + PRECOMP <= NOMINAL; + WRITEPATTERN := "0000"; + elsif CLK = '1' and CLK' event then + if DATA_STRB = '1' then + WRITEPATTERN := WRITEPATTERN(2 downto 0) & WDATA; -- shift left + end if; + if PRECOMP_EN = '0' then + PRECOMP <= NOMINAL; -- no precompensation + else + case WRITEPATTERN is + when "1110" | "0110" => PRECOMP <= EARLY; + when "1011" | "0011" => PRECOMP <= LATE; + when "0001" => PRECOMP <= EARLY; + when "1000" => PRECOMP <= LATE; + when others => PRECOMP <= NOMINAL; + end case; + end if; + end if; + end process MFM_PRECOMPENSATION; + + MFM_STROBES: process (RESETn, DATA_STRB, CLK) + -- For the MFM frequency is 250 kBps for DD type floppies, there are 64 + -- 16 MHz clock cycles per MFM bit and for HD type floppies, which have + -- 500 kBps there are 32 16MHz clock pulses for one MFM bit. + -- The MFM state machine (Moore) switches on the DATA_STRB. + -- During one cycle there are the two further strobes MFM_10_STRB and + -- MFM_01_STRB which control the MFM output in the process MFM_WR_OUT. + -- The strobes are centered in the middle of the first half and in the + -- middle of the second half of the DATA_STRB cycle. + variable CNT : std_logic_vector(5 downto 0); + begin + if RESETn = '0' then + CNT := "000000"; + elsif CLK = '1' and CLK' event then + if DATA_STRB = '1' then + CNT := (others => '0'); + else + CNT := CNT + '1'; + end if; + if HDTYPE = '1' then + case CNT is + -- encoder timing for MFM and HD type floppies. + when "000100" => MFM_10_STRB <= '1'; MFM_01_STRB <= '0'; -- Pulse centered in the first half. + when "010100" => MFM_10_STRB <= '0'; MFM_01_STRB <= '1'; -- Pulse centered in the second half. + when others => MFM_10_STRB <= '0'; MFM_01_STRB <= '0'; + end case; + else + case CNT is + -- encoder timing for MFM and DD type floppies. + when "001010" => MFM_10_STRB <= '1'; MFM_01_STRB <= '0'; -- Pulse centered in the first half. + when "101000" => MFM_10_STRB <= '0'; MFM_01_STRB <= '1'; -- Pulse centered in the second half. + when others => MFM_10_STRB <= '0'; MFM_01_STRB <= '0'; + end case; + end if; + end if; + end process MFM_STROBES; + + -- MFM_WR_TIMING generates the timing for the write pulses which are + -- required by a MFM device like floppy disk drive. The pulse timing + -- meets the timing of the MFM data with pulse width of 700ns +/- 100ns + -- depending on write precompensation. + -- The original WD1772 (CLK = 8MHz) data timing was as follows: + -- The output is asserted as long as CNT is active; in detail + -- this are 4,5; 5,5 or 6,5 CLK cycles depending on the write + -- precompensation. + -- The new design which works with a 16MHz clock requires the following + -- timing: 9; 11 or 13 CLK cycles depending on the writeprecompensation + -- for DD floppies and 5; 6 or 7 CLK cycles depending on the write + -- precompensation for HD floppies. + -- To meet the timing requirements of half clocks + -- the WRn is controlled by the following three processes where the one + -- syncs on the positive clock edge and the other on the negative. + -- For more information on the WTn timing see the datasheet of the + -- WD177x floppy disc controller. + + MFM_WR_TIMING: process(RESETn, CLK) + variable CLKMASK_MFM : bit; + begin + if RESETn = '0' then + WR_CNT <= x"F"; + elsif CLK = '1' and CLK' event then + if DATA_STRB = '1' then + -- The CLKMASK_MFM is synchronised to DATA_STRB. This brings one strobe latency. + -- The timing in connection with the data is correct because the MFM encoder state machine + -- causes the data to be 1 DATA_STRB late too. + CLKMASK_MFM := CLKMASK; + end if; + if MFM_STATE = C_10 and MFM_10_STRB = '1' and CLKMASK_MFM = '1' then + WR_CNT <= x"0"; + elsif MFM_STATE = B_01 and MFM_01_STRB = '1' then + WR_CNT <= x"0"; + elsif WR_CNT < x"F" then + WR_CNT <= WR_CNT + '1'; + end if; + end if; + end process MFM_WR_TIMING; + + MFM_WR_OUT: process + begin + wait until CLK = '1' and CLK' event; + if RESETn = '0' then + MFM_In <= '1'; + else + case HDTYPE is + when '1' => -- HD type. + if PRECOMP = EARLY and WR_CNT > x"0" and WR_CNT <= x"9" then + MFM_In <= '0'; -- 9,0 clock cycles for WRn --> early timing + elsif PRECOMP = NOMINAL and WR_CNT > x"0" and WR_CNT <= x"8" then + MFM_In <= '0'; -- 8,0 clock cycles for WRn --> nominal timing + elsif PRECOMP = LATE and WR_CNT > x"0" and WR_CNT <= x"7" then + MFM_In <= '0'; -- 7,0 clock cycles for WRn --> late timing + else + MFM_In <= '1'; + end if; + when '0' => -- DD type. + if PRECOMP = EARLY and WR_CNT > x"0" and WR_CNT <= x"D" then + MFM_In <= '0'; -- 13,0 clock cycles for WRn --> early timing + elsif PRECOMP = NOMINAL and WR_CNT > x"0" and WR_CNT <= x"B" then + MFM_In <= '0'; -- 11,0 clock cycles for WRn --> nominal timing + elsif PRECOMP = LATE and WR_CNT > x"0" and WR_CNT <= x"9" then + MFM_In <= '0'; -- 9,0 clock cycles for WRn --> late timing + else + MFM_In <= '1'; + end if; + end case; + end if; + end process MFM_WR_OUT; + + -- ####################### Decoder stuff ########################### + -- The decoding of the serial FM or MFM encoded data stream + -- is done in the following two processes (Moore machine). + -- The decoder works in principle like a simple toggle Flip-Flop. + -- It is important to synchronise it in a way, that the clock + -- pulses are separated from the data pulses. The principle + -- works for both FM and MFM data due to the digital phase + -- locked loop, which delivers the serial data and the clock + -- strobe. In general this decoder can be understood as the + -- data separator where the digital phase locked loop provides + -- the FM or the MFM decoding. The data separation lives from + -- the fact, that FM and also MFM encoded signals consist of a + -- mixture of alternating data and clock pulses. + -- FM works as follows: + -- every first pulse of the FM signal is a clock pulse and every + -- second pulse is a logic '1' of the data. A missing second + -- pulse represents a logic '0' of the data. + -- MFM works as follows: + -- every first pulse of the MFM signal is a clock pulse. The coding + -- principle causes clock pulses to be absent in some conditions. + -- Every second pulse is a logic '1' of the data. A missing second + -- pulse represents a logic '0' of the data. + -- So FM and MFM compared, the data is represented directly by the + -- second pulses and the data separator has to look only for these. + -- The missing MFM clock pulses do not cause a problem because the + -- digital PLL used in conjunction with this data separator fills + -- up the clock pulses and delivers a PLL_DSTRB containing aequidistant + -- clock strobes and data strobes. + + DEC_REG: process(RESETn, CLK) + begin + if RESETn = '0' then + DEC_STATE <= CLK_PHASE; + elsif CLK = '1' and CLK' event then + DEC_STATE <= NEXT_DEC_STATE; + end if; + end process DEC_REG; + + DEC_LOGIC: process(DEC_STATE, ID_AM, DATA_AM, DDATA_AM, PLL_DSTRB, PLL_D) + begin + case DEC_STATE is + when CLK_PHASE => + if PLL_DSTRB = '1' then + NEXT_DEC_STATE <= DATA_PHASE; + else + NEXT_DEC_STATE <= CLK_PHASE; + end if; + DATA_STRB <= '0'; -- Inactive during clock pulse time. + SD_R <= '0'; -- Inactive during clock pulse time. + when DATA_PHASE => + if ID_AM = '1' or DATA_AM = '1' or DDATA_AM = '1' then + -- Here the state machine is synchronised + -- to separate data and clock pulses correctly. + NEXT_DEC_STATE <= CLK_PHASE; + elsif PLL_DSTRB = '1' then + NEXT_DEC_STATE <= CLK_PHASE; + else + NEXT_DEC_STATE <= DATA_PHASE; + end if; + -- During the data phase valid data appears at SD. + -- The data is valid during DATA_STRB. + DATA_STRB <= PLL_DSTRB; + SD_R <= PLL_D; + end case; + end process DEC_LOGIC; +end architecture BEHAVIOR; diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_gpio.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_gpio.vhd new file mode 100644 index 0000000..7660aa2 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_gpio.vhd @@ -0,0 +1,141 @@ +---------------------------------------------------------------------- +---- ---- +---- ATARI MFP compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- MC68901 compatible multi function port core. ---- +---- ---- +---- This are the SUSKA MFP IP core's general purpose I/Os. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF68901IP_GPIO is + port ( -- System control: + CLK : in bit; + RESETn : in bit; + + -- Asynchronous bus control: + DSn : in bit; + CSn : in bit; + RWn : in bit; + + -- Data and Adresses: + RS : in bit_vector(5 downto 1); + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_OUT_EN : out bit; + + -- Timer controls: + AER_4 : out bit; + AER_3 : out bit; + + GPIP_IN : in bit_vector(7 downto 0); + GPIP_OUT : out bit_vector(7 downto 0); + GPIP_OUT_EN : buffer bit_vector(7 downto 0); + GP_INT : out bit_vector(7 downto 0) + ); +end entity WF68901IP_GPIO; + +architecture BEHAVIOR of WF68901IP_GPIO is +signal GPDR : bit_vector(7 downto 0); +signal DDR : bit_vector(7 downto 0); +signal AER : bit_vector(7 downto 0); +signal GPDR_I : bit_vector(7 downto 0); +begin + -- These two bits control the timers A and B pulse width operation and the + -- timers A and B event count operation. + AER_4 <= AER(4); + AER_3 <= AER(3); + -- This statement provides 8 XOR units setting the desired interrupt polarity. + -- While the level control is done here, the edge triggering is provided by + -- the interrupt control hardware. The level control is individually for each + -- GPIP port pin. The interrupt edge trigger unit must operate in any case on + -- the low to high transistion of the respective port pin. + GP_INT <= AER xnor GPIP_IN; + + GPIO_REGISTERS: process(RESETn, CLK) + begin + if RESETn = '0' then + GPDR <= (others => '0'); + DDR <= (others => '0'); + AER <= (others => '0'); + elsif CLK = '1' and CLK' event then + if CSn = '0' and DSn = '0' and RWn = '0' then + case RS is + when "00000" => GPDR <= DATA_IN; + when "00001" => AER <= DATA_IN; + when "00010" => DDR <= DATA_IN; + when others => null; + end case; + end if; + end if; + end process GPIO_REGISTERS; + GPIP_OUT <= GPDR; -- Port outputs. + GPIP_OUT_EN <= DDR; -- The DDR is capable to control bitwise the GPIP. + DATA_OUT_EN <= '1' when CSn = '0' and DSn = '0' and RWn = '1' and RS <= "00010" else '0'; + DATA_OUT <= DDR when CSn = '0' and DSn = '0' and RWn = '1' and RS = "00010" else + AER when CSn = '0' and DSn = '0' and RWn = '1' and RS = "00001" else + GPDR_I when CSn = '0' and DSn = '0' and RWn = '1' and RS = "00000" else (others => '0'); + + P_GPDR: process(GPIP_IN, GPIP_OUT_EN, GPDR) + -- Read back control: Read the port pins, if the data direction is configured as input. + -- Read the respective GPDR register bit, if the data direction is configured as output. + begin + for i in 7 downto 0 loop + if GPIP_OUT_EN(i) = '1' then -- Port is configured output. + GPDR_I(i) <= GPDR(i); + else + GPDR_I(i) <= GPIP_IN(i); -- Port is configured input. + end if; + end loop; + end process P_GPDR; +end architecture BEHAVIOR; diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_interrupts.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_interrupts.vhd new file mode 100644 index 0000000..91417f8 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_interrupts.vhd @@ -0,0 +1,391 @@ +---------------------------------------------------------------------- +---- ---- +---- ATARI MFP compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- MC68901 compatible multi function port core. ---- +---- ---- +---- This is the SUSKA MFP IP core interrupt logic file. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/06/03 WF +-- Fixed Pending register logic. +-- Revision 2K9A 2009/06/20 WF +-- Fixed interrupt polarity for TA_I and TB_I. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF68901IP_INTERRUPTS is + port ( -- System control: + CLK : in bit; + RESETn : in bit; + + -- Asynchronous bus control: + DSn : in bit; + CSn : in bit; + RWn : in bit; + + -- Data and Adresses: + RS : in bit_vector(5 downto 1); + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_OUT_EN : out bit; + + -- Interrupt control: + IACKn : in bit; + IEIn : in bit; + IEOn : out bit; + IRQn : out bit; + + -- Interrupt sources: + GP_INT : in bit_vector(7 downto 0); + + AER_4 : in bit; + AER_3 : in bit; + TAI : in bit; + TBI : in bit; + TA_PWM : in bit; + TB_PWM : in bit; + TIMER_A_INT : in bit; + TIMER_B_INT : in bit; + TIMER_C_INT : in bit; + TIMER_D_INT : in bit; + + RCV_ERR : in bit; + TRM_ERR : in bit; + RCV_BUF_F : in bit; + TRM_BUF_E : in bit + ); +end entity WF68901IP_INTERRUPTS; + +architecture BEHAVIOR of WF68901IP_INTERRUPTS is +-- Interrupt state machine: +type INT_STATES is (SCAN, REQUEST, VECTOR_OUT); +signal INT_STATE : INT_STATES; +-- The registers: +signal IERA : bit_vector(7 downto 0); +signal IERB : bit_vector(7 downto 0); +signal IPRA : bit_vector(7 downto 0); +signal IPRB : bit_vector(7 downto 0); +signal ISRA : bit_vector(7 downto 0); +signal ISRB : bit_vector(7 downto 0); +signal IMRA : bit_vector(7 downto 0); +signal IMRB : bit_vector(7 downto 0); +signal VR : bit_vector(7 downto 3); +-- Interconnect: +signal VECT_NUMBER : bit_vector(7 downto 0); +signal INT_SRC : bit_vector(15 downto 0); +signal INT_SRC_EDGE : bit_vector(15 downto 0); +signal INT_ENA : bit_vector(15 downto 0); +signal INT_MASK : bit_vector(15 downto 0); +signal INT_PENDING : bit_vector(15 downto 0); +signal INT_SERVICE : bit_vector(15 downto 0); +signal INT_PASS : bit_vector(15 downto 0); +signal INT_OUT : bit_vector(15 downto 0); +signal GP_INT_4 : bit; +signal GP_INT_3 : bit; +begin + -- Interrupt source for the GPI_4 and GPI_3 is normally the respective port pin. + -- But when the timers operate in their PWM modes, the GPI_4 and GPI_3 are associated + -- to timer A and timer B. + -- The xor logic provides polarity control for the interrupt transition. Be aware, + -- that the PWM signals cause an interrupt on the opposite transition like the + -- respective GPIP port pins (with the same AER settings). + --GP_INT_4 <= GP_INT(4) when TA_PWM = '0' else TAI xor AER_4; + --GP_INT_3 <= GP_INT(3) when TB_PWM = '0' else TBI xor AER_3; + GP_INT_4 <= GP_INT(4) when TA_PWM = '0' else TAI xnor AER_4; -- This should be correct. + GP_INT_3 <= GP_INT(3) when TB_PWM = '0' else TBI xnor AER_3; + + + -- Interrupt source priority sorted (15 = highest): + INT_SRC <= GP_INT(7 downto 6) & TIMER_A_INT & RCV_BUF_F & RCV_ERR & TRM_BUF_E & TRM_ERR & TIMER_B_INT & + GP_INT(5) & GP_INT_4 & TIMER_C_INT & TIMER_D_INT & GP_INT_3 & GP_INT(2 downto 0); + + INT_ENA <= IERA & IERB; + INT_MASK <= IMRA & IMRB; + INT_PENDING <= IPRA & IPRB; + INT_SERVICE <= ISRA & ISRB; + INT_OUT <= INT_PENDING and INT_MASK; -- Masking: + + -- Enable the daisy chain, if there is no pending interrupt and + -- the interrupt state machine is not in service. + IEOn <= '0' when INT_OUT = x"0000" and INT_STATE = SCAN else '1'; + + -- Interrupt request: + IRQn <= '0' when INT_OUT /= x"0000" and INT_STATE = REQUEST else '1'; + + EDGE_ENA: process(RESETn, CLK) + -- These are the 16 edge detectors of the 16 interrupt input sources. This + -- process also provides the disabling or enabling via the IERA and IERB registers. + variable LOCK : bit_vector(15 downto 0); + begin + if RESETn = '0' then + INT_SRC_EDGE <= x"0000"; + LOCK := x"0000"; + elsif CLK = '1' and CLK' event then + for i in 15 downto 0 loop + if INT_SRC(i) = '1' and INT_ENA(i) = '1' and LOCK(i) = '0' then + LOCK(i) := '1'; + INT_SRC_EDGE(i) <= '1'; + elsif INT_SRC(i) = '0' then + LOCK(i) := '0'; + INT_SRC_EDGE(i) <= '0'; + else + INT_SRC_EDGE(i) <= '0'; + end if; + end loop; + end if; + end process EDGE_ENA; + + INT_REGISTERS: process(RESETn, CLK) + begin + if RESETn = '0' then + IERA <= (others => '0'); + IERB <= (others => '0'); + IPRA <= (others => '0'); + IPRB <= (others => '0'); + ISRA <= (others => '0'); + ISRB <= (others => '0'); + IMRA <= (others => '0'); + IMRB <= (others => '0'); + elsif CLK = '1' and CLK' event then + if CSn = '0' and DSn = '0' and RWn = '0' then + case RS is + when "00011" => IERA <= DATA_IN; -- Enable A. + when "00100" => IERB <= DATA_IN; -- Enable B. + when "00101" => + -- Only a '0' can be written to the pending register. + for i in 7 downto 0 loop + if DATA_IN(i) = '0' then + IPRA(i) <= '0'; -- Pending A. + end if; + end loop; + when "00110" => + -- Only a '0' can be written to the pending register. + for i in 7 downto 0 loop + if DATA_IN(i) = '0' then + IPRB(i) <= '0'; -- Pending B. + end if; + end loop; + when "00111" => + -- Only a '0' can be written to the in service register. + for i in 7 downto 0 loop + if DATA_IN(i) = '0' then + ISRA(i) <= '0'; -- In Service A. + end if; + end loop; + when "01000" => + -- Only a '0' can be written to the in service register. + for i in 7 downto 0 loop + if DATA_IN(i) = '0' then + ISRB(i) <= '0'; -- In Service B. + end if; + end loop; + when "01001" => IMRA <= DATA_IN; -- Mask A. + when "01010" => IMRB <= DATA_IN; -- Mask B. + when "01011" => VR <= DATA_IN(7 downto 3); -- Vector register. + when others => null; + end case; + end if; + + -- Pending register: + -- set and clear bit logic. + for i in 15 downto 8 loop + if INT_SRC_EDGE(i) = '1' then + IPRA(i-8) <= '1'; + elsif INT_ENA(i) = '0' then + IPRA(i-8) <= '0'; -- Clear by disabling the channel. + elsif INT_PASS(i) = '1' then + IPRA(i-8) <= '0'; -- Clear by passing the interrupt. + end if; + end loop; + for i in 7 downto 0 loop + if INT_SRC_EDGE(i) = '1' then + IPRB(i) <= '1'; + elsif INT_ENA(i) = '0' then + IPRB(i) <= '0'; -- Clear by disabling the channel. + elsif INT_PASS(i) = '1' then + IPRB(i) <= '0'; -- Clear by passing the interrupt. + end if; + end loop; + + -- In-Service register: + -- Set bit logic, VR(3) is the service register enable. + for i in 15 downto 8 loop + if INT_OUT(i) = '1' and INT_PASS(i) = '1' and VR(3) = '1' then + ISRA(i-8) <= '1'; + end if; + end loop; + for i in 7 downto 0 loop + if INT_OUT(i) = '1' and INT_PASS(i) = '1' and VR(3) = '1' then + ISRB(i) <= '1'; + end if; + end loop; + end if; + end process INT_REGISTERS; + DATA_OUT_EN <= '1' when CSn = '0' and DSn = '0' and RWn = '1' and RS > "00010" and RS <= "01011" else '1' when INT_STATE = VECTOR_OUT else '0'; + + DATA_OUT <= IERA when CSn = '0' and DSn = '0' and RWn = '1' and RS = "00011" else + IERB when CSn = '0' and DSn = '0' and RWn = '1' and RS = "00100" else + IPRA when CSn = '0' and DSn = '0' and RWn = '1' and RS = "00101" else + IPRB when CSn = '0' and DSn = '0' and RWn = '1' and RS = "00110" else + ISRA when CSn = '0' and DSn = '0' and RWn = '1' and RS = "00111" else + ISRB when CSn = '0' and DSn = '0' and RWn = '1' and RS = "01000" else + IMRA when CSn = '0' and DSn = '0' and RWn = '1' and RS = "01001" else + IMRB when CSn = '0' and DSn = '0' and RWn = '1' and RS = "01010" else + VR & "000" when CSn = '0' and DSn = '0' and RWn = '1' and RS = "01011" else + VECT_NUMBER when INT_STATE = VECTOR_OUT else x"00"; + + P_INT_STATE : process(RESETn, CLK) + begin + if RESETn = '0' then + INT_STATE <= SCAN; + elsif CLK = '1' and CLK' event then + case INT_STATE is + when SCAN => + INT_PASS <= x"0000"; + -- Automatic End of Interrupt mode. Service register disabled. + -- The MFP does not respond for an interrupt acknowledge cycle for an uninitialized + -- vector number (VR(7 downto 4) = x"0"). + if INT_OUT /= x"0000" and VR(7 downto 4) /= x"0" and VR(3) = '0' and IEIn = '0' then + INT_STATE <= REQUEST; -- Non masked interrupt is pending. + -- The following 16 are the Software end of interrupt mode. Service register enabled. + -- The MFP does not respond for an interrupt acknowledge cycle for an uninitialized + -- vector number (VR(7 downto 4) = x"0"). The interrupts are prioritized. + elsif INT_OUT /= x"0000" and VR(7 downto 4) /= x"0" and VR(3) = '1' and IEIn = '0' then + if INT_OUT (15) = '1' and INT_SERVICE(15) = '0' then + INT_STATE <= REQUEST; + elsif INT_OUT (14) = '1' and INT_SERVICE(15 downto 14) = "00" then + INT_STATE <= REQUEST; + elsif INT_OUT (13) = '1' and INT_SERVICE(15 downto 13) = "000" then + INT_STATE <= REQUEST; + elsif INT_OUT (12) = '1' and INT_SERVICE(15 downto 12) = x"0" then + INT_STATE <= REQUEST; + elsif INT_OUT (11) = '1' and INT_SERVICE(15 downto 11) = x"0" & '0' then + INT_STATE <= REQUEST; + elsif INT_OUT (10) = '1' and INT_SERVICE(15 downto 10) = x"0" & "00" then + INT_STATE <= REQUEST; + elsif INT_OUT (9) = '1' and INT_SERVICE(15 downto 9) = x"0" & "000" then + INT_STATE <= REQUEST; + elsif INT_OUT (8) = '1' and INT_SERVICE(15 downto 8) = x"00" then + INT_STATE <= REQUEST; + elsif INT_OUT (7) = '1' and INT_SERVICE(15 downto 7) = x"00" & '0' then + INT_STATE <= REQUEST; + elsif INT_OUT (6) = '1' and INT_SERVICE(15 downto 6) = x"00" & "00" then + INT_STATE <= REQUEST; + elsif INT_OUT (5) = '1' and INT_SERVICE(15 downto 5) = x"00" & "000" then + INT_STATE <= REQUEST; + elsif INT_OUT (4) = '1' and INT_SERVICE(15 downto 4) = x"000" then + INT_STATE <= REQUEST; + elsif INT_OUT (3) = '1' and INT_SERVICE(15 downto 3) = x"000" & '0' then + INT_STATE <= REQUEST; + elsif INT_OUT (2) = '1' and INT_SERVICE(15 downto 2) = x"000" & "00" then + INT_STATE <= REQUEST; + elsif INT_OUT (1) = '1' and INT_SERVICE(15 downto 1) = x"000" & "000" then + INT_STATE <= REQUEST; + elsif INT_OUT (0) = '1' and INT_SERVICE(15 downto 0) = x"0000" then + INT_STATE <= REQUEST; + else + INT_STATE <= SCAN; -- Wait for interrupt. + end if; + else + INT_STATE <= SCAN; + end if; + when REQUEST => + if IACKn = '0' and DSn = '0' then -- Vectored interrupt mode. + INT_STATE <= VECTOR_OUT; -- Non masked interrupt is pending. + if INT_OUT(15) = '1' then + INT_PASS(15) <= '1'; VECT_NUMBER <= VR(7 downto 4) & x"F"; -- GPI 7. + elsif INT_OUT(14) = '1' then + INT_PASS(14) <= '1'; VECT_NUMBER <= VR(7 downto 4) & x"E"; -- GPI 6. + elsif INT_OUT(13) = '1' then + INT_PASS(13) <= '1'; VECT_NUMBER <= VR(7 downto 4) & x"D"; -- TIMER A. + elsif INT_OUT(12) = '1' then + INT_PASS(12) <= '1'; VECT_NUMBER <= VR(7 downto 4) & x"C"; -- Receive buffer full. + elsif INT_OUT(11) = '1' then + INT_PASS(11) <= '1'; VECT_NUMBER <= VR(7 downto 4) & x"B"; -- Receiver error. + elsif INT_OUT(10) = '1' then + INT_PASS(10) <= '1'; VECT_NUMBER <= VR(7 downto 4) & x"A"; -- Transmit buffer empty. + elsif INT_OUT(9) = '1' then + INT_PASS(9) <= '1'; VECT_NUMBER <= VR(7 downto 4) & x"9"; -- Transmit error. + elsif INT_OUT(8) = '1' then + INT_PASS(8) <= '1'; VECT_NUMBER <= VR(7 downto 4) & x"8"; -- Timer B. + elsif INT_OUT(7) = '1' then + INT_PASS(7) <= '1'; VECT_NUMBER <= VR(7 downto 4) & x"7"; -- GPI 5. + elsif INT_OUT(6) = '1' then + INT_PASS(6) <= '1'; VECT_NUMBER <= VR(7 downto 4) & x"6"; -- GPI 4. + elsif INT_OUT(5) = '1' then + INT_PASS(5) <= '1'; VECT_NUMBER <= VR(7 downto 4) & x"5"; -- Timer C. + elsif INT_OUT(4) = '1' then + INT_PASS(4) <= '1'; VECT_NUMBER <= VR(7 downto 4) & x"4"; -- Timer D. + elsif INT_OUT(3) = '1' then + INT_PASS(3) <= '1'; VECT_NUMBER <= VR(7 downto 4) & x"3"; -- GPI 3. + elsif INT_OUT(2) = '1' then + INT_PASS(2) <= '1'; VECT_NUMBER <= VR(7 downto 4) & x"2"; -- GPI 2. + elsif INT_OUT(1) = '1' then + INT_PASS(1) <= '1'; VECT_NUMBER <= VR(7 downto 4) & x"1"; -- GPI 1. + elsif INT_OUT(0) = '1' then + INT_PASS(0) <= '1'; VECT_NUMBER <= VR(7 downto 4) & x"0"; -- GPI 0. + end if; + -- Polled interrupt mode: End of interrupt by writing to the pending registers. + elsif CSn = '0' and DSn = '0' and RWn = '0' and (RS = "00101" or RS = "00110") then + INT_STATE <= SCAN; + else + INT_STATE <= REQUEST; -- Wait. + end if; + when VECTOR_OUT => + INT_PASS <= x"0000"; + if DSn = '1' or IACKn = '1' then + INT_STATE <= SCAN; -- Finished. + else + INT_STATE <= VECTOR_OUT; -- Wait for processor to read the vector. + end if; + end case; + end if; + end process P_INT_STATE; +end architecture BEHAVIOR; diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_pkg.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_pkg.vhd new file mode 100644 index 0000000..73c0cdc --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_pkg.vhd @@ -0,0 +1,263 @@ +---------------------------------------------------------------------- +---- ---- +---- ATARI MFP compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- MC68901 compatible multi function port core. ---- +---- ---- +---- This is the package file containing the component ---- +---- declarations. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- + +library ieee; +use ieee.std_logic_1164.all; + +package WF68901IP_PKG is +component WF68901IP_USART_TOP + port ( CLK : in bit; + RESETn : in bit; + DSn : in bit; + CSn : in bit; + RWn : in bit; + RS : in bit_vector(5 downto 1); + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_OUT_EN : out bit; + RC : in bit; + TC : in bit; + SI : in bit; + SO : out bit; + SO_EN : out bit; + RX_ERR_INT : out bit; + RX_BUFF_INT : out bit; + TX_ERR_INT : out bit; + TX_BUFF_INT : out bit; + RRn : out bit; + TRn : out bit + ); +end component; + +component WF68901IP_USART_CTRL + port ( + CLK : in bit; + RESETn : in bit; + DSn : in bit; + CSn : in bit; + RWn : in bit; + RS : in bit_vector(5 downto 1); + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_OUT_EN : out bit; + RX_SAMPLE : in bit; + RX_DATA : in bit_vector(7 downto 0); + TX_DATA : out bit_vector(7 downto 0); + SCR_OUT : out bit_vector(7 downto 0); + BF : in bit; + BE : in bit; + FE : in bit; + OE : in bit; + UE : in bit; + PE : in bit; + M_CIP : in bit; + FS_B : in bit; + TX_END : in bit; + CL : out bit_vector(1 downto 0); + ST : out bit_vector(1 downto 0); + FS_CLR : out bit; + RSR_READ : out bit; + TSR_READ : out bit; + UDR_READ : out bit; + UDR_WRITE : out bit; + LOOPBACK : out bit; + SDOUT_EN : out bit; + SD_LEVEL : out bit; + CLK_MODE : out bit; + RE : out bit; + TE : out bit; + P_ENA : out bit; + P_EOn : out bit; + SS : out bit; + BR : out bit + ); +end component; + +component WF68901IP_USART_TX + port ( + CLK : in bit; + RESETn : in bit; + SCR : in bit_vector(7 downto 0); + TX_DATA : in bit_vector(7 downto 0); + SDATA_OUT : out bit; + TXCLK : in bit; + CL : in bit_vector(1 downto 0); + ST : in bit_vector(1 downto 0); + TE : in bit; + BR : in bit; + P_ENA : in bit; + P_EOn : in bit; + UDR_WRITE : in bit; + TSR_READ : in bit; + CLK_MODE : in bit; + TX_END : out bit; + UE : out bit; + BE : out bit + ); +end component; + +component WF68901IP_USART_RX + port ( + CLK : in bit; + RESETn : in bit; + SCR : in bit_vector(7 downto 0); + RX_SAMPLE : out bit; + RX_DATA : out bit_vector(7 downto 0); + RXCLK : in bit; + SDATA_IN : in bit; + CL : in bit_vector(1 downto 0); + ST : in bit_vector(1 downto 0); + P_ENA : in bit; + P_EOn : in bit; + CLK_MODE : in bit; + RE : in bit; + FS_CLR : in bit; + SS : in bit; + RSR_READ : in bit; + UDR_READ : in bit; + M_CIP : out bit; + FS_B : out bit; + BF : out bit; + OE : out bit; + PE : out bit; + FE : out bit + ); +end component; + +component WF68901IP_INTERRUPTS + port ( + CLK : in bit; + RESETn : in bit; + DSn : in bit; + CSn : in bit; + RWn : in bit; + RS : in bit_vector(5 downto 1); + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_OUT_EN : out bit; + IACKn : in bit; + IEIn : in bit; + IEOn : out bit; + IRQn : out bit; + GP_INT : in bit_vector(7 downto 0); + AER_4 : in bit; + AER_3 : in bit; + TAI : in bit; + TBI : in bit; + TA_PWM : in bit; + TB_PWM : in bit; + TIMER_A_INT : in bit; + TIMER_B_INT : in bit; + TIMER_C_INT : in bit; + TIMER_D_INT : in bit; + RCV_ERR : in bit; + TRM_ERR : in bit; + RCV_BUF_F : in bit; + TRM_BUF_E : in bit + ); +end component; + +component WF68901IP_GPIO + port ( + CLK : in bit; + RESETn : in bit; + DSn : in bit; + CSn : in bit; + RWn : in bit; + RS : in bit_vector(5 downto 1); + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_OUT_EN : out bit; + AER_4 : out bit; + AER_3 : out bit; + GPIP_IN : in bit_vector(7 downto 0); + GPIP_OUT : out bit_vector(7 downto 0); + GPIP_OUT_EN : out bit_vector(7 downto 0); + GP_INT : out bit_vector(7 downto 0) + ); +end component; + +component WF68901IP_TIMERS + port ( + CLK : in bit; + RESETn : in bit; + DSn : in bit; + CSn : in bit; + RWn : in bit; + RS : in bit_vector(5 downto 1); + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_OUT_EN : out bit; + XTAL1 : in bit; + TAI : in bit; + TBI : in bit; + AER_4 : in bit; + AER_3 : in bit; + TA_PWM : out bit; + TB_PWM : out bit; + TAO : out bit; + TBO : out bit; + TCO : out bit; + TDO : out bit; + TIMER_A_INT : out bit; + TIMER_B_INT : out bit; + TIMER_C_INT : out bit; + TIMER_D_INT : out bit + ); +end component; + +end WF68901IP_PKG; diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_timers.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_timers.vhd new file mode 100644 index 0000000..b339af5 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_timers.vhd @@ -0,0 +1,533 @@ +---------------------------------------------------------------------- +---- ---- +---- ATARI MFP compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- MC68901 compatible multi function port core. ---- +---- ---- +---- This is the SUSKA MFP IP core timers logic file. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K7A 2006/12/28 WF +-- The timer is modified to work on the CLK instead +-- of XTAL1. This modification is done to provide +-- a synchronous design. +-- Revision 2K8A 2008/02/29 WF +-- Fixed a serious prescaler bug. +-- Revision 2K9A 20090620 WF +-- Introduced timer readback registers. +-- TIMER_x_INT is now a strobe. +-- Minor improvements. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF68901IP_TIMERS is + port ( -- System control: + CLK : in bit; + RESETn : in bit; + + -- Asynchronous bus control: + DSn : in bit; + CSn : in bit; + RWn : in bit; + + -- Data and Adresses: + RS : in bit_vector(5 downto 1); + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_OUT_EN : out bit; + + -- Timers and timer control: + XTAL1 : in bit; -- Use an oszillator instead of a quartz. + TAI : in bit; + TBI : in bit; + AER_4 : in bit; + AER_3 : in bit; + TA_PWM : out bit; -- Indicates, that timer A is in PWM mode (used in Interrupt logic). + TB_PWM : out bit; -- Indicates, that timer B is in PWM mode (used in Interrupt logic). + TAO : buffer bit; + TBO : buffer bit; + TCO : buffer bit; + TDO : buffer bit; + TIMER_A_INT : out bit; + TIMER_B_INT : out bit; + TIMER_C_INT : out bit; + TIMER_D_INT : out bit + ); +end entity WF68901IP_TIMERS; + +architecture BEHAVIOR of WF68901IP_TIMERS is +signal XTAL1_S : bit; +signal XTAL_STRB : bit; +signal TACR : bit_vector(4 downto 0); -- Timer A control register. +signal TBCR : bit_vector(4 downto 0); -- Timer B control register. +signal TCDCR : bit_vector(5 downto 0); -- Timer C and D control register. +signal TADR : bit_vector(7 downto 0); -- Timer A data register. +signal TBDR : bit_vector(7 downto 0); -- Timer B data register. +signal TCDR : bit_vector(7 downto 0); -- Timer C data register. +signal TDDR : bit_vector(7 downto 0); -- Timer D data register. +signal TIMER_A : std_logic_vector(7 downto 0); -- Timer A count register. +signal TIMER_B : std_logic_vector(7 downto 0); -- Timer B count register. +signal TIMER_C : std_logic_vector(7 downto 0); -- Timer C count register. +signal TIMER_D : std_logic_vector(7 downto 0); -- Timer D count register. +signal TIMER_R_A : bit_vector(7 downto 0); -- Timer A readback register. +signal TIMER_R_B : bit_vector(7 downto 0); -- Timer B readback register. +signal TIMER_R_C : bit_vector(7 downto 0); -- Timer C readback register. +signal TIMER_R_D : bit_vector(7 downto 0); -- Timer D readback register. +signal A_CNTSTRB : bit; +signal B_CNTSTRB : bit; +signal C_CNTSTRB : bit; +signal D_CNTSTRB : bit; +signal TAI_I : bit; +signal TBI_I : bit; +signal TAI_STRB : bit; -- Strobe for the event counter mode. +signal TBI_STRB : bit; -- Strobe for the event counter mode. +signal TAO_I : bit; -- Timer A output signal. +signal TBO_I : bit; -- Timer A output signal. +begin + SYNC: process + -- This process provides a 'clean' XTAL1. + -- Without this sync, the edge detector for + -- XTAL_STRB does not work properly. + begin + wait until CLK = '1' and CLK' event; + XTAL1_S <= XTAL1; + -- Polarity control for the event counter and the PWM mode: + TAI_I <= TAI xnor AER_4; + TBI_I <= TBI xnor AER_3; + end process SYNC; + + -- Output enables for timer A and timer B: + -- The outputs are held low for asserted reset flags in the control registers TACR + -- and TBCR but also during a write operation to these registers. + TAO <= '0' when TACR(4) = '1' else + '0' when CSn = '0' and DSn = '0' and RWn = '0' and RS = "01100" else TAO_I; + TBO <= '0' when TBCR(4) = '1' else + '0' when CSn = '0' and DSn = '0' and RWn = '0' and RS = "01101" else TBO_I; + + -- Control outputs for the PWM modi of the timers A and B. These + -- controls are used in the interrupt logic to select the interrupt + -- sources GPIP4 or TAI repective GPIP3 or TBI. + TA_PWM <= '1' when TACR(3 downto 0) > x"8" else '0'; + TB_PWM <= '1' when TBCR(3 downto 0) > x"8" else '0'; + + TIMER_REGISTERS: process(RESETn, CLK) + begin + if RESETn = '0' then + TACR <= (others => '0'); + TBCR <= (others => '0'); + TCDCR <= (others => '0'); + -- TADR <= Do not clear during reset! + -- TBDR <= Do not clear during reset! + -- TCDR <= Do not clear during reset! + -- TDDR <= Do not clear during reset! + elsif CLK = '1' and CLK' event then + if CSn = '0' and DSn = '0' and RWn = '0' then + case RS is + when "01100" => TACR <= DATA_IN(4 downto 0); + when "01101" => TBCR <= DATA_IN(4 downto 0); + when "01110" => TCDCR <= DATA_IN(6 downto 4) & DATA_IN(2 downto 0); + when "01111" => TADR <= DATA_IN; + when "10000" => TBDR <= DATA_IN; + when "10001" => TCDR <= DATA_IN; + when "10010" => TDDR <= DATA_IN; + when others => null; + end case; + end if; + end if; + end process TIMER_REGISTERS; + + TIMER_READBACK : process(RESETn, CLK) + -- This process provides the readback information for the + -- timers A to D. The information read is the information + -- last clocked into the timer read register when the DSn + -- pin had last gone high prior to the current read cycle. + variable READ_A : boolean; + variable READ_B : boolean; + variable READ_C : boolean; + variable READ_D : boolean; + begin + if RESETn = '0' then + TIMER_R_A <= x"00"; + TIMER_R_B <= x"00"; + TIMER_R_C <= x"00"; + TIMER_R_D <= x"00"; + elsif CLK = '1' and CLK' event then + if DSn = '0' and RS = "01111" then + READ_A := true; + elsif DSn = '0' and RS = "10000" then + READ_B := true; + elsif DSn = '0' and RS = "10001" then + READ_C := true; + elsif DSn = '0' and RS = "10010" then + READ_D := true; + elsif DSn = '1' and READ_A = true then + TIMER_R_A <= To_BitVector(TIMER_A); + READ_A := false; + elsif DSn = '1' and READ_B = true then + TIMER_R_B <= To_BitVector(TIMER_B); + READ_B := false; + elsif DSn = '1' and READ_C = true then + TIMER_R_C <= To_BitVector(TIMER_C); + READ_C := false; + elsif DSn = '1' and READ_D = true then + TIMER_R_D <= To_BitVector(TIMER_D); + READ_D := false; + end if; + end if; + end process TIMER_READBACK; + + DATA_OUT_EN <= '1' when CSn = '0' and DSn = '0' and RWn = '1' and RS > "01011" and RS <= "10010" else '0'; + DATA_OUT <= "000" & TACR when CSn = '0' and DSn = '0' and RWn = '1' and RS = "01100" else + "000" & TBCR when CSn = '0' and DSn = '0' and RWn = '1' and RS = "01101" else + '0' & TCDCR(5 downto 3) & '0' & TCDCR(2 downto 0) when CSn = '0' and DSn = '0' and RWn = '1' and RS = "01110" else + TIMER_R_A when CSn = '0' and DSn = '0' and RWn = '1' and RS = "01111" else + TIMER_R_B when CSn = '0' and DSn = '0' and RWn = '1' and RS = "10000" else + TIMER_R_C when CSn = '0' and DSn = '0' and RWn = '1' and RS = "10001" else + TIMER_R_D when CSn = '0' and DSn = '0' and RWn = '1' and RS = "10010" else (others => '0'); + + XTAL_STROBE: process(RESETn, CLK) + -- This process provides a strobe with 1 clock cycle + -- (CLK) length after every rising edge of XTAL1. + variable LOCK : boolean; + begin + if RESETn = '0' then + XTAL_STRB <= '0'; + elsif CLK = '1' and CLK' event then + if XTAL1_S = '1' and LOCK = false then + XTAL_STRB <= '1'; + LOCK := true; + elsif XTAL1_S = '0' then + XTAL_STRB <= '0'; + LOCK := false; + else + XTAL_STRB <= '0'; + end if; + end if; + end process XTAL_STROBE; + + TAI_STROBE: process(RESETn, CLK) + variable LOCK : boolean; + begin + if RESETn = '0' then + TAI_STRB <= '0'; + elsif CLK = '1' and CLK' event then + if TAI_I = '1' and XTAL_STRB = '1' and LOCK = false then + LOCK := true; + TAI_STRB <= '1'; + elsif TAI_I = '0' then + LOCK := false; + TAI_STRB <= '0'; + else + TAI_STRB <= '0'; + end if; + end if; + end process TAI_STROBE; + + TBI_STROBE: process(RESETn, CLK) + variable LOCK : boolean; + begin + if RESETn = '0' then + TBI_STRB <= '0'; + elsif CLK = '1' and CLK' event then + if TBI_I = '1' and XTAL_STRB = '1' and LOCK = false then + LOCK := true; + TBI_STRB <= '1'; + elsif TBI_I = '0' then + LOCK := false; + TBI_STRB <= '0'; + else + TBI_STRB <= '0'; + end if; + end if; + end process TBI_STROBE; + + PRESCALE_A: process + -- The prescalers work even if the RESETn is asserted. + variable PRESCALE : std_logic_vector(7 downto 0); + begin + wait until CLK = '1' and CLK' event; + A_CNTSTRB <= '0'; + if PRESCALE > x"00" and XTAL_STRB = '1' then + PRESCALE := PRESCALE - '1'; + elsif XTAL_STRB = '1' then + case TACR(2 downto 0) is + when "111" => PRESCALE := x"C7"; -- Prescaler = 200. + when "110" => PRESCALE := x"63"; -- Prescaler = 100. + when "101" => PRESCALE := x"3F"; -- Prescaler = 64. + when "100" => PRESCALE := x"31"; -- Prescaler = 50. + when "011" => PRESCALE := x"0F"; -- Prescaler = 16. + when "010" => PRESCALE := x"09"; -- Prescaler = 10. + when "001" => PRESCALE := x"03"; -- Prescaler = 4. + when "000" => PRESCALE := x"00"; -- Timer stopped or event count mode. + end case; + A_CNTSTRB <= '1'; + end if; + end process PRESCALE_A; + + PRESCALE_B: process + -- The prescalers work even if the RESETn is asserted. + variable PRESCALE : std_logic_vector(7 downto 0); + begin + wait until CLK = '1' and CLK' event; + B_CNTSTRB <= '0'; + if PRESCALE > x"00" and XTAL_STRB = '1' then + PRESCALE := PRESCALE - '1'; + elsif XTAL_STRB = '1' then + case TBCR(2 downto 0) is + when "111" => PRESCALE := x"C7"; -- Prescaler = 200. + when "110" => PRESCALE := x"63"; -- Prescaler = 100. + when "101" => PRESCALE := x"3F"; -- Prescaler = 64. + when "100" => PRESCALE := x"31"; -- Prescaler = 50. + when "011" => PRESCALE := x"0F"; -- Prescaler = 16. + when "010" => PRESCALE := x"09"; -- Prescaler = 10. + when "001" => PRESCALE := x"03"; -- Prescaler = 4. + when "000" => PRESCALE := x"00"; -- Timer stopped or event count mode. + end case; + B_CNTSTRB <= '1'; + end if; + end process PRESCALE_B; + + PRESCALE_C: process + -- The prescalers work even if the RESETn is asserted. + variable PRESCALE : std_logic_vector(7 downto 0); + begin + wait until CLK = '1' and CLK' event; + C_CNTSTRB <= '0'; + if PRESCALE > x"00" and XTAL_STRB = '1' then + PRESCALE := PRESCALE - '1'; + elsif XTAL_STRB = '1' then + case TCDCR(5 downto 3) is + when "111" => PRESCALE := x"C7"; -- Prescaler = 200. + when "110" => PRESCALE := x"63"; -- Prescaler = 100. + when "101" => PRESCALE := x"3F"; -- Prescaler = 64. + when "100" => PRESCALE := x"31"; -- Prescaler = 50. + when "011" => PRESCALE := x"0F"; -- Prescaler = 16. + when "010" => PRESCALE := x"09"; -- Prescaler = 10. + when "001" => PRESCALE := x"03"; -- Prescaler = 4. + when "000" => PRESCALE := x"00"; -- Timer stopped. + end case; + C_CNTSTRB <= '1'; + end if; + end process PRESCALE_C; + + PRESCALE_D: process + -- The prescalers work even if the RESETn is asserted. + variable PRESCALE : std_logic_vector(7 downto 0); + begin + wait until CLK = '1' and CLK' event; + D_CNTSTRB <= '0'; + if PRESCALE > x"00" and XTAL_STRB = '1' then + PRESCALE := PRESCALE - '1'; + elsif XTAL_STRB = '1' then + case TCDCR(2 downto 0) is + when "111" => PRESCALE := x"C7"; -- Prescaler = 200. + when "110" => PRESCALE := x"63"; -- Prescaler = 100. + when "101" => PRESCALE := x"3F"; -- Prescaler = 64. + when "100" => PRESCALE := x"31"; -- Prescaler = 50. + when "011" => PRESCALE := x"0F"; -- Prescaler = 16. + when "010" => PRESCALE := x"09"; -- Prescaler = 10. + when "001" => PRESCALE := x"03"; -- Prescaler = 4. + when "000" => PRESCALE := x"00"; -- Timer stopped. + end case; + D_CNTSTRB <= '1'; + end if; + end process PRESCALE_D; + + TIMERA: process(RESETn, CLK) + begin + if RESETn = '0' then + -- Do not clear the timer registers during system reset. + TAO_I <= '0'; + TIMER_A_INT <= '0'; + elsif CLK = '1' and CLK' event then + TIMER_A_INT <= '0'; + -- + if CSn = '0' and DSn = '0' and RWn = '0' and RS = "01111" and TACR(3 downto 0) = x"0" then + -- The timer is reloaded simultaneously to it's timer data register, if it is off. + -- The loading works asynchronous due to the possibly low XTAL1 clock. + TIMER_A <= To_StdLogicVector(DATA_IN); + else + case TACR(3 downto 0) is + when x"0" => -- Timer is off. + TAO_I <= '0'; + when x"1" | x"2" | x"3" | x"4" | x"5" | x"6" | x"7" => -- Delay counter mode. + if A_CNTSTRB = '1' and TIMER_A /= x"01" then -- Count. + TIMER_A <= TIMER_A - '1'; + elsif A_CNTSTRB = '1' and TIMER_A = x"01" then -- Reload. + TIMER_A <= To_StdLogicVector(TADR); + TAO_I <= not TAO_I; -- Toggle the timer A output pin. + TIMER_A_INT <= '1'; + end if; + when x"8" => -- Event count operation. + if TAI_STRB = '1' and TIMER_A /= x"01" then -- Count. + TIMER_A <= TIMER_A - '1'; + elsif TAI_STRB = '1' and TIMER_A = x"01" then -- Reload. + TIMER_A <= To_StdLogicVector(TADR); + TAO_I <= not TAO_I; -- Toggle the timer A output pin. + TIMER_A_INT <= '1'; + end if; + when x"9" | x"A" | x"B" | x"C" | x"D" | x"E" | x"F" => -- PWM mode. + if TAI_I = '1' and A_CNTSTRB = '1' and TIMER_A /= x"01" then -- Count. + TIMER_A <= TIMER_A - '1'; + elsif TAI_I = '1' and A_CNTSTRB = '1' and TIMER_A = x"01" then -- Reload. + TIMER_A <= To_StdLogicVector(TADR); + TAO_I <= not TAO_I; -- Toggle the timer A output pin. + TIMER_A_INT <= '1'; + end if; + end case; + end if; + end if; + end process TIMERA; + + TIMERB: process(RESETn, CLK) + begin + if RESETn = '0' then + -- Do not clear the timer registers during system reset. + TBO_I <= '0'; + TIMER_B_INT <= '0'; + elsif CLK = '1' and CLK' event then + TIMER_B_INT <= '0'; + -- + if CSn = '0' and DSn = '0' and RWn = '0' and RS = "10000" and TBCR(3 downto 0) = x"0" then + -- The timer is reloaded simultaneously to it's timer data register, if it is off. + -- The loading works asynchronous due to the possibly low XTAL1 clock. + TIMER_B <= To_StdLogicVector(DATA_IN); + else + case TBCR(3 downto 0) is + when x"0" => -- Timer is off. + TBO_I <= '0'; + when x"1" | x"2" | x"3" | x"4" | x"5" | x"6" | x"7" => -- Delay counter mode. + if B_CNTSTRB = '1' and TIMER_B /= x"01" then -- Count. + TIMER_B <= TIMER_B - '1'; + elsif B_CNTSTRB = '1' and TIMER_B = x"01" then -- Reload. + TIMER_B <= To_StdLogicVector(TBDR); + TBO_I <= not TBO_I; -- Toggle the timer B output pin. + TIMER_B_INT <= '1'; + end if; + when x"8" => -- Event count operation. + if TBI_STRB = '1' and TIMER_B /= x"01" then -- Count. + TIMER_B <= TIMER_B - '1'; + elsif TBI_STRB = '1' and TIMER_B = x"01" then -- Reload. + TIMER_B <= To_StdLogicVector(TBDR); + TBO_I <= not TBO_I; -- Toggle the timer B output pin. + TIMER_B_INT <= '1'; + end if; + when x"9" | x"A" | x"B" | x"C" | x"D" | x"E" | x"F" => -- PWM mode. + if TBI_I = '1' and B_CNTSTRB = '1' and TIMER_B /= x"01" then -- Count. + TIMER_B <= TIMER_B - '1'; + elsif TBI_I = '1' and B_CNTSTRB = '1' and TIMER_B = x"01" then -- Reload. + TIMER_B <= To_StdLogicVector(TBDR); + TBO_I <= not TBO_I; -- Toggle the timer B output pin. + TIMER_B_INT <= '1'; + end if; + end case; + end if; + end if; + end process TIMERB; + + TIMERC: process(RESETn, CLK) + begin + if RESETn = '0' then + -- Do not clear the timer registers during system reset. + TCO <= '0'; + TIMER_C_INT <= '0'; + elsif CLK = '1' and CLK' event then + TIMER_C_INT <= '0'; + -- + if CSn = '0' and DSn = '0' and RWn = '0' and RS = "10001" and TCDCR(5 downto 3) = "000" then + -- The timer is reloaded simultaneously to it's timer data register, if it is off. + -- The loading works asynchronous due to the possibly low XTAL1 clock. + TIMER_C <= To_StdLogicVector(DATA_IN); + else + case TCDCR(5 downto 3) is + when "000" => -- Timer is off. + TCO <= '0'; + when others => -- Delay counter mode. + if C_CNTSTRB = '1' and TIMER_C /= x"01" then -- Count. + TIMER_C <= TIMER_C - '1'; + elsif C_CNTSTRB = '1' and TIMER_C = x"01" then -- Reload. + TIMER_C <= To_StdLogicVector(TCDR); + TCO <= not TCO; -- Toggle the timer C output pin. + TIMER_C_INT <= '1'; + end if; + end case; + end if; + end if; + end process TIMERC; + + TIMERD: process(RESETn, CLK) + begin + if RESETn = '0' then + -- Do not clear the timer registers during system reset. + TDO <= '0'; + TIMER_D_INT <= '0'; + elsif CLK = '1' and CLK' event then + TIMER_D_INT <= '0'; + -- + if CSn = '0' and DSn = '0' and RWn = '0' and RS = "10010" and TCDCR(2 downto 0) = "000" then + -- The timer is reloaded simultaneously to it's timer data register, if it is off. + -- The loading works asynchronous due to the possibly low XTAL1 clock. + TIMER_D <= To_StdLogicVector(DATA_IN); + else + case TCDCR(2 downto 0) is + when "000" => -- Timer is off. + TDO <= '0'; + when others => -- Delay counter mode. + if D_CNTSTRB = '1' and TIMER_D /= x"01" then -- Count. + TIMER_D <= TIMER_D - '1'; + elsif D_CNTSTRB = '1' and TIMER_D = x"01" then -- Reload. + TIMER_D <= To_StdLogicVector(TDDR); + TDO <= not TDO; -- Toggle the timer D output pin. + TIMER_D_INT <= '1'; + end if; + end case; + end if; + end if; + end process TIMERD; +end architecture BEHAVIOR; \ No newline at end of file diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_top.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_top.vhd new file mode 100644 index 0000000..783ba56 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_top.vhd @@ -0,0 +1,213 @@ +---------------------------------------------------------------------- +---- ---- +---- ATARI MFP compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- MC68901 compatible multi function port core. ---- +---- ---- +---- This is the SUSKA MFP IP core top level file. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K7A 2006/12/28 WF +-- The timer is modified to work on the CLK instead +-- of XTAL1. This modification is done to provide +-- a synchronous design. +-- Revision 2K8B 2008/12/24 WF +-- Rewritten this top level file as a wrapper for the top_soc file. +-- + +use work.wf68901ip_pkg.all; + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF68901IP_TOP is + port ( -- System control: + CLK : in bit; + RESETn : in bit; + + -- Asynchronous bus control: + DSn : in bit; + CSn : in bit; + RWn : in bit; + DTACKn : out std_logic; + + -- Data and Adresses: + RS : in bit_vector(5 downto 1); + DATA : inout std_logic_vector(7 downto 0); + GPIP : inout std_logic_vector(7 downto 0); + + -- Interrupt control: + IACKn : in bit; + IEIn : in bit; + IEOn : out bit; + IRQn : out std_logic; + + -- Timers and timer control: + XTAL1 : in bit; -- Use an oszillator instead of a quartz. + TAI : in bit; + TBI : in bit; + TAO : out bit; + TBO : out bit; + TCO : out bit; + TDO : out bit; + + -- Serial I/O control: + RC : in bit; + TC : in bit; + SI : in bit; + SO : out std_logic; + + -- DMA control: + RRn : out bit; + TRn : out bit + ); +end entity WF68901IP_TOP; + +architecture STRUCTURE of WF68901IP_TOP is +component WF68901IP_TOP_SOC + port(CLK : in bit; + RESETn : in bit; + DSn : in bit; + CSn : in bit; + RWn : in bit; + DTACKn : out bit; + RS : in bit_vector(5 downto 1); + DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); + DATA_EN : out bit; + GPIP_IN : in bit_vector(7 downto 0); + GPIP_OUT : out bit_vector(7 downto 0); + GPIP_EN : out bit_vector(7 downto 0); + IACKn : in bit; + IEIn : in bit; + IEOn : out bit; + IRQn : out bit; + XTAL1 : in bit; + TAI : in bit; + TBI : in bit; + TAO : out bit; + TBO : out bit; + TCO : out bit; + TDO : out bit; + RC : in bit; + TC : in bit; + SI : in bit; + SO : out bit; + SO_EN : out bit; + RRn : out bit; + TRn : out bit + ); +end component; +-- +signal DTACK_In : bit; +signal IRQ_In : bit; +signal DATA_OUT : std_logic_vector(7 downto 0); +signal DATA_EN : bit; +signal GPIP_IN : bit_vector(7 downto 0); +signal GPIP_OUT : bit_vector(7 downto 0); +signal GPIP_EN : bit_vector(7 downto 0); +signal SO_I : bit; +signal SO_EN : bit; +begin + DTACKn <= '0' when DTACK_In = '0' else 'Z'; -- Open drain. + IRQn <= '0' when IRQ_In = '0' else 'Z'; -- Open drain. + + DATA <= DATA_OUT when DATA_EN = '1' else (others => 'Z'); + + GPIP_IN <= To_BitVector(GPIP); + + P_GPIP_OUT: process(GPIP_OUT, GPIP_EN) + begin + for i in 7 downto 0 loop + if GPIP_EN(i) = '1' then + case GPIP_OUT(i) is + when '0' => GPIP(i) <= '0'; + when others => GPIP(i) <= '1'; + end case; + else + GPIP(i) <= 'Z'; + end if; + end loop; + end process P_GPIP_OUT; + + SO <= '0' when SO_I = '0' and SO_EN = '1' else + '1' when SO_I = '1' and SO_EN = '1' else 'Z'; + + I_MFP: WF68901IP_TOP_SOC + port map(CLK => CLK, + RESETn => RESETn, + DSn => DSn, + CSn => CSn, + RWn => RWn, + DTACKn => DTACK_In, + RS => RS, + DATA_IN => DATA, + DATA_OUT => DATA_OUT, + DATA_EN => DATA_EN, + GPIP_IN => GPIP_IN, + GPIP_OUT => GPIP_OUT, + GPIP_EN => GPIP_EN, + IACKn => IACKn, + IEIn => IEIn, + IEOn => IEOn, + IRQn => IRQ_In, + XTAL1 => XTAL1, + TAI => TAI, + TBI => TBI, + TAO => TAO, + TBO => TBO, + TCO => TCO, + TDO => TDO, + RC => RC, + TC => TC, + SI => SI, + SO => SO_I, + SO_EN => SO_EN, + RRn => RRn, + TRn => TRn + ); +end architecture STRUCTURE; diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_top_soc.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_top_soc.vhd new file mode 100644 index 0000000..1e559d9 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_top_soc.vhd @@ -0,0 +1,309 @@ +---------------------------------------------------------------------- +---- ---- +---- ATARI MFP compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- MC68901 compatible multi function port core. ---- +---- ---- +---- This is the SUSKA MFP IP core top level file. ---- +---- Top level file for use in systems on programmable chips. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Top level file provided for SOC (systems on programmable chips). +-- Revision 2K7A 2006/12/28 WF +-- The timer is modified to work on the CLK instead +-- of XTAL1. This modification is done to provide +-- a synchronous design. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- Revision 2K9A 2009/06/20 WF +-- DTACK_OUTn has now synchronous reset to meet preset requirement. +-- +-- + +use work.wf68901ip_pkg.all; + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF68901IP_TOP_SOC is + port ( -- System control: + CLK : in bit; + RESETn : in bit; + + -- Asynchronous bus control: + DSn : in bit; + CSn : in bit; + RWn : in bit; + DTACKn : out bit; + + -- Data and Adresses: + RS : in bit_vector(5 downto 1); + DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); + DATA_EN : out bit; + GPIP_IN : in bit_vector(7 downto 0); + GPIP_OUT : out bit_vector(7 downto 0); + GPIP_EN : out bit_vector(7 downto 0); + + -- Interrupt control: + IACKn : in bit; + IEIn : in bit; + IEOn : out bit; + IRQn : out bit; + + -- Timers and timer control: + XTAL1 : in bit; -- Use an oszillator instead of a quartz. + TAI : in bit; + TBI : in bit; + TAO : out bit; + TBO : out bit; + TCO : out bit; + TDO : out bit; + + -- Serial I/O control: + RC : in bit; + TC : in bit; + SI : in bit; + SO : out bit; + SO_EN : out bit; + + -- DMA control: + RRn : out bit; + TRn : out bit + ); +end entity WF68901IP_TOP_SOC; + +architecture STRUCTURE of WF68901IP_TOP_SOC is +signal DATA_IN_I : bit_vector(7 downto 0); +signal DTACK_In : bit; +signal DTACK_LOCK : boolean; +signal DTACK_OUTn : bit; +signal RX_ERR_INT_I : bit; +signal TX_ERR_INT_I : bit; +signal RX_BUFF_INT_I : bit; +signal TX_BUFF_INT_I : bit; +signal DATA_OUT_USART_I : bit_vector(7 downto 0); +signal DATA_OUT_EN_USART_I : bit; +signal DATA_OUT_INT_I : bit_vector(7 downto 0); +signal DATA_OUT_EN_INT_I : bit; +signal DATA_OUT_GPIO_I : bit_vector(7 downto 0); +signal DATA_OUT_EN_GPIO_I : bit; +signal DATA_OUT_TIMERS_I : bit_vector(7 downto 0); +signal DATA_OUT_EN_TIMERS_I : bit; +signal SO_I : bit; +signal SO_EN_I : bit; +signal GPIP_IN_I : bit_vector(7 downto 0); +signal GPIP_OUT_I : bit_vector(7 downto 0); +signal GPIP_EN_I : bit_vector(7 downto 0); +signal GP_INT_I : bit_vector(7 downto 0); +signal TIMER_A_INT_I : bit; +signal TIMER_B_INT_I : bit; +signal TIMER_C_INT_I : bit; +signal TIMER_D_INT_I : bit; +signal IRQ_In : bit; +signal AER_4_I : bit; +signal AER_3_I : bit; +signal TA_PWM_I : bit; +signal TB_PWM_I : bit; +begin + -- Interrupt request (open drain): + IRQn <= IRQ_In; + + -- Serial data output: + SO <= SO_I; + SO_EN <= SO_EN_I and RESETn; + + -- General purpose port: + GPIP_IN_I <= GPIP_IN; + GPIP_OUT <= GPIP_OUT_I; + GPIP_EN <= GPIP_EN_I; + + DATA_IN_I <= To_BitVector(DATA_IN); + DATA_EN <= DATA_OUT_EN_USART_I or DATA_OUT_EN_INT_I or DATA_OUT_EN_GPIO_I or DATA_OUT_EN_TIMERS_I; + -- Output data multiplexer: + DATA_OUT <= To_StdLogicVector(DATA_OUT_USART_I) when DATA_OUT_EN_USART_I = '1' else + To_StdLogicVector(DATA_OUT_INT_I) when DATA_OUT_EN_INT_I = '1' else + To_StdLogicVector(DATA_OUT_GPIO_I) when DATA_OUT_EN_GPIO_I = '1' else + To_StdLogicVector(DATA_OUT_TIMERS_I) when DATA_OUT_EN_TIMERS_I = '1' else (others => '1'); + + -- Data acknowledge handshake is provided by the following statement and the consecutive two + -- processes. For more information refer to the M68000 family reference manual. + DTACK_In <= '0' when CSn = '0' and DSn = '0' and RS <= "10111" else -- Read and write operation. + '0' when IACKn = '0' and DSn = '0' and IEIn = '0' else '1'; -- Interrupt vector data acknowledge. + + P_DTACK_LOCK: process + -- This process releases a data acknowledge detect, one rising clock + -- edge after the DTACK_In occured. This is necessary to ensure write + -- data to registers for there is one rising clock edge required. + begin + wait until CLK = '1' and CLK' event; + if DTACK_In = '0' then + DTACK_LOCK <= false; + else + DTACK_LOCK <= true; + end if; + end process P_DTACK_LOCK; + + DTACK_OUT: process + -- The DTACKn port pin is released on the falling clock edge after the data + -- acknowledge detect (DTACK_LOCK) is asserted. The DTACKn is deasserted + -- immediately when there is no further register access DTACK_In = '1'; + begin + wait until CLK = '0' and CLK' event; + if RESETn = '0' then + DTACK_OUTn <= '1'; + elsif DTACK_In = '1' then + DTACK_OUTn <= '1'; + elsif DTACK_LOCK = false then + DTACK_OUTn <= '0'; + end if; + end process DTACK_OUT; + DTACKn <= '0' when DTACK_OUTn = '0' else '1'; + + I_USART: WF68901IP_USART_TOP + port map( + CLK => CLK, + RESETn => RESETn, + DSn => DSn, + CSn => CSn, + RWn => RWn, + RS => RS, + DATA_IN => DATA_IN_I, + DATA_OUT => DATA_OUT_USART_I, + DATA_OUT_EN => DATA_OUT_EN_USART_I, + RC => RC, + TC => TC, + SI => SI, + SO => SO_I, + SO_EN => SO_EN_I, + RX_ERR_INT => RX_ERR_INT_I, + RX_BUFF_INT => RX_BUFF_INT_I, + TX_ERR_INT => TX_ERR_INT_I, + TX_BUFF_INT => TX_BUFF_INT_I, + RRn => RRn, + TRn => TRn + ); + + I_INTERRUPTS: WF68901IP_INTERRUPTS + port map( + CLK => CLK, + RESETn => RESETn, + DSn => DSn, + CSn => CSn, + RWn => RWn, + RS => RS, + DATA_IN => DATA_IN_I, + DATA_OUT => DATA_OUT_INT_I, + DATA_OUT_EN => DATA_OUT_EN_INT_I, + IACKn => IACKn, + IEIn => IEIn, + IEOn => IEOn, + IRQn => IRQ_In, + GP_INT => GP_INT_I, + AER_4 => AER_4_I, + AER_3 => AER_3_I, + TAI => TAI, + TBI => TBI, + TA_PWM => TA_PWM_I, + TB_PWM => TB_PWM_I, + TIMER_A_INT => TIMER_A_INT_I, + TIMER_B_INT => TIMER_B_INT_I, + TIMER_C_INT => TIMER_C_INT_I, + TIMER_D_INT => TIMER_D_INT_I, + RCV_ERR => RX_ERR_INT_I, + TRM_ERR => TX_ERR_INT_I, + RCV_BUF_F => RX_BUFF_INT_I, + TRM_BUF_E => TX_BUFF_INT_I + ); + + I_GPIO: WF68901IP_GPIO + port map( + CLK => CLK, + RESETn => RESETn, + DSn => DSn, + CSn => CSn, + RWn => RWn, + RS => RS, + DATA_IN => DATA_IN_I, + DATA_OUT => DATA_OUT_GPIO_I, + DATA_OUT_EN => DATA_OUT_EN_GPIO_I, + AER_4 => AER_4_I, + AER_3 => AER_3_I, + GPIP_IN => GPIP_IN_I, + GPIP_OUT => GPIP_OUT_I, + GPIP_OUT_EN => GPIP_EN_I, + GP_INT => GP_INT_I + ); + + I_TIMERS: WF68901IP_TIMERS + port map( + CLK => CLK, + RESETn => RESETn, + DSn => DSn, + CSn => CSn, + RWn => RWn, + RS => RS, + DATA_IN => DATA_IN_I, + DATA_OUT => DATA_OUT_TIMERS_I, + DATA_OUT_EN => DATA_OUT_EN_TIMERS_I, + XTAL1 => XTAL1, + AER_4 => AER_4_I, + AER_3 => AER_3_I, + TAI => TAI, + TBI => TBI, + TAO => TAO, + TBO => TBO, + TCO => TCO, + TDO => TDO, + TA_PWM => TA_PWM_I, + TB_PWM => TB_PWM_I, + TIMER_A_INT => TIMER_A_INT_I, + TIMER_B_INT => TIMER_B_INT_I, + TIMER_C_INT => TIMER_C_INT_I, + TIMER_D_INT => TIMER_D_INT_I + ); +end architecture STRUCTURE; diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_ctrl.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_ctrl.vhd new file mode 100644 index 0000000..8e7c3cc --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_ctrl.vhd @@ -0,0 +1,191 @@ +---------------------------------------------------------------------- +---- ---- +---- ATARI MFP compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- This is the SUSKA MFP IP core USART control file. ---- +---- ---- +---- Control unit and status logic. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF68901IP_USART_CTRL is + port ( + -- System Control: + CLK : in bit; + RESETn : in bit; + + -- Bus control: + DSn : in bit; + CSn : in bit; + RWn : in bit; + RS : in bit_vector(5 downto 1); + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_OUT_EN : out bit; + + -- USART data register + RX_SAMPLE : in bit; + RX_DATA : in bit_vector(7 downto 0); + TX_DATA : out bit_vector(7 downto 0); + SCR_OUT : out bit_vector(7 downto 0); + + -- USART control inputs: + BF : in bit; + BE : in bit; + FE : in bit; + OE : in bit; + UE : in bit; + PE : in bit; + M_CIP : in bit; + FS_B : in bit; + TX_END : in bit; + + -- USART control outputs: + CL : out bit_vector(1 downto 0); + ST : out bit_vector(1 downto 0); + FS_CLR : out bit; + UDR_WRITE : out bit; + UDR_READ : out bit; + RSR_READ : out bit; + TSR_READ : out bit; + LOOPBACK : out bit; + SDOUT_EN : out bit; + SD_LEVEL : out bit; + CLK_MODE : out bit; + RE : out bit; + TE : out bit; + P_ENA : out bit; + P_EOn : out bit; + SS : out bit; + BR : out bit + ); +end entity WF68901IP_USART_CTRL; + +architecture BEHAVIOR of WF68901IP_USART_CTRL is +signal SCR : bit_vector(7 downto 0); -- Synchronous data register. +signal UCR : bit_vector(7 downto 1); -- USART control register. +signal RSR : bit_vector(7 downto 0); -- Receiver status register. +signal TSR : bit_vector(7 downto 0); -- Transmitter status register. +signal UDR : bit_vector(7 downto 0); -- USART data register. +begin + USART_REGISTERS: process(RESETn, CLK) + begin + if RESETn = '0' then + SCR <= (others => '0'); + UCR <= (others => '0'); + RSR <= (others => '0'); + -- TSR and UDR are not cleared during an asserted RESETn + elsif CLK = '1' and CLK' event then + -- Loading via receiver shift register + -- has priority over data buss access: + if RX_SAMPLE = '1' then + UDR <= RX_DATA; + elsif CSn = '0' and DSn = '0' and RWn = '0' then + case RS is + when "10011" => SCR <= DATA_IN; + when "10100" => UCR <= DATA_IN(7 downto 1); + when "10101" => RSR(1 downto 0) <= DATA_IN(1 downto 0); -- Only the two LSB are read/write. + when "10110" => TSR(5) <= DATA_IN(5); TSR(3 downto 0) <= DATA_IN(3 downto 0); + when "10111" => UDR <= DATA_IN; + when others => null; + end case; + end if; + RSR(7 downto 2) <= BF & OE & PE & FE & FS_B & M_CIP; + TSR(7 downto 6) <= BE & UE; + TSR(4) <= TX_END; + TX_DATA <= UDR; + end if; + end process USART_REGISTERS; + DATA_OUT_EN <= '1' when CSn = '0' and DSn = '0' and RWn = '1' and RS >= "10011" and RS <= "10111" else '0'; + DATA_OUT <= SCR when CSn = '0' and DSn = '0' and RWn = '1' and RS = "10011" else + UCR & '0' when CSn = '0' and DSn = '0' and RWn = '1' and RS = "10100" else + RSR when CSn = '0' and DSn = '0' and RWn = '1' and RS = "10101" else + TSR when CSn = '0' and DSn = '0' and RWn = '1' and RS = "10110" else + UDR when CSn = '0' and DSn = '0' and RWn = '1' and RS = "10111" else x"00"; + + UDR_WRITE <= '1' when CSn = '0' and DSn = '0' and RWn = '0' and RS = "10111" else '0'; + UDR_READ <= '1' when CSn = '0' and DSn = '0' and RWn = '1' and RS = "10111" else '0'; + RSR_READ <= '1' when CSn = '0' and DSn = '0' and RWn = '1' and RS = "10101" else '0'; + TSR_READ <= '1' when CSn = '0' and DSn = '0' and RWn = '1' and RS = "10110" else '0'; + FS_CLR <= '1' when CSn = '0' and DSn = '0' and RWn = '0' and RS = "10011" else '0'; + + RE <= '1' when RSR(0) = '1' else -- Receiver enable. + '1' when TSR(5) = '1' and TX_END = '1' else '0'; -- Auto Turnaround. + SS <= RSR(1); -- Synchronous strip enable. + BR <= TSR(3); -- Send break. + TE <= TSR(0); -- Transmitter enable. + + SCR_OUT <= SCR; + + CLK_MODE <= UCR(7); -- Clock mode. + CL <= UCR(6 downto 5); -- Character length. + ST <= UCR(4 downto 3); -- Start/Stop configuration. + P_ENA <= UCR(2); -- Parity enable. + P_EOn <= UCR(1); -- Even or odd parity. + + SOUT_CONFIG: process + begin + wait until CLK = '1' and CLK' event; + -- Do not change the output configuration until the transmitter is disabled and + -- current character has been transmitted (TX_END = '1'). + if TX_END = '1' then + case TSR(2 downto 1) is + when "00" => LOOPBACK <= '0'; SD_LEVEL <= '0'; SDOUT_EN <= '0'; + when "01" => LOOPBACK <= '0'; SD_LEVEL <= '0'; SDOUT_EN <= '1'; + when "10" => LOOPBACK <= '0'; SD_LEVEL <= '1'; SDOUT_EN <= '1'; + when "11" => LOOPBACK <= '1'; SD_LEVEL <= '1'; SDOUT_EN <= '1'; + end case; + end if; + end process SOUT_CONFIG; +end architecture BEHAVIOR; + diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_rx.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_rx.vhd new file mode 100644 index 0000000..eb00a11 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_rx.vhd @@ -0,0 +1,590 @@ +---------------------------------------------------------------------- +---- ---- +---- ATARI MFP compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- This is the SUSKA MFP IP core USART receiver file. ---- +---- ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- Revision 2K9A 2009/06/20 WF +-- Process P_STARTBIT has now synchronous reset to meet preset requirement. +-- Process P_SAMPLE has now synchronous reset to meet preset requirement. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF68901IP_USART_RX is + port ( + CLK : in bit; + RESETn : in bit; + + SCR : in bit_vector(7 downto 0); -- Synchronous character. + RX_SAMPLE : buffer bit; -- Flag indicating valid shift register data. + RX_DATA : out bit_vector(7 downto 0); -- Received data. + + RXCLK : in bit; -- Receiver clock. + SDATA_IN : in bit; -- Serial data input. + + CL : in bit_vector(1 downto 0); -- Character length. + ST : in bit_vector(1 downto 0); -- Start and stop bit configuration. + P_ENA : in bit; -- Parity enable. + P_EOn : in bit; -- Even or odd parity. + CLK_MODE : in bit; -- Clock mode configuration bit. + RE : in bit; -- Receiver enable. + FS_CLR : in bit; -- Clear the Found/Search flag for resynchronisation purpose. + SS : in bit; -- Synchronous strip enable. + UDR_READ : in bit; -- Flag indicating reading the data register. + RSR_READ : in bit; -- Flag indicating reading the receiver status register. + + M_CIP : out bit; -- Match/Character in progress. + FS_B : buffer bit; -- Find/Search or Break detect flag. + BF : out bit; -- Buffer full. + OE : out bit; -- Overrun error. + PE : out bit; -- Parity error. + FE : out bit -- Framing error. + ); +end entity WF68901IP_USART_RX; + +architecture BEHAVIOR of WF68901IP_USART_RX is +type RCV_STATES is (IDLE, WAIT_START, SAMPLE, PARITY, STOP1, STOP2, SYNC); +signal RCV_STATE, RCV_NEXT_STATE : RCV_STATES; +signal SDATA_DIV16 : bit; +signal SDATA_IN_I : bit; +signal SDATA_EDGE : bit; +signal SHIFT_REG : bit_vector(7 downto 0); +signal CLK_STRB : bit; +signal CLK_2_STRB : bit; +signal BITCNT : std_logic_vector(2 downto 0); +signal BREAK : boolean; +signal RDRF : bit; +signal STARTBIT : boolean; +begin + BF <= RDRF; -- Buffer full = Receiver Data Register Full. + RX_SAMPLE <= '1' when RCV_STATE = SYNC and ST /= "00" else -- Asynchronous mode: + -- Synchronous modes: + '1' when RCV_STATE = SYNC and ST = "00" and SS = '0' else + '1' when RCV_STATE = SYNC and ST = "00" and SS = '1' and SHIFT_REG /= SCR else '0'; + + -- Data multiplexer for the received data: + RX_DATA <= "000" & SHIFT_REG(7 downto 3) when RX_SAMPLE = '1' and CL = "11" else -- 5 databits. + "00" & SHIFT_REG(7 downto 2) when RX_SAMPLE = '1' and CL = "10" else -- 6 databits. + '0' & SHIFT_REG(7 downto 1) when RX_SAMPLE = '1' and CL = "01" else -- 6 databits. + SHIFT_REG when RX_SAMPLE = '1' and CL = "00" else x"00"; -- 8 databits. + + P_SAMPLE: process + -- This process provides the 'valid transition logic' of the originally MC68901. For further + -- details see the 'M68000 FAMILY REFERENCE MANUAL'. + variable LOW_FLT : std_logic_vector(1 downto 0); + variable HI_FLT : std_logic_vector(1 downto 0); + variable CLK_LOCK : boolean; + variable EDGE_LOCK : boolean; + variable TIMER : std_logic_vector(2 downto 0); + variable TIMER_LOCK : boolean; + variable NEW_SDATA : bit; + begin + wait until CLK = '1' and CLK' event; + if RESETn = '0' or RE = '0' then + -- The reset condition assumes the SDATA_IN logic high. Otherwise + -- one not valid SDATA_EDGE pulse occurs during system startup. + CLK_LOCK := true; + EDGE_LOCK := true; + HI_FLT := "11"; + LOW_FLT := "11"; + SDATA_EDGE <= '0'; + NEW_SDATA := '1'; + -- Positive or negative edge detector for the incoming data. + -- Any transition must be valid for at least three receiver clock + -- cycles. The TIMER locking inhibits detecting four receiver + -- clock cycles after a valid transition. + elsif RXCLK = '1' and SDATA_IN = '0' and CLK_LOCK = false and LOW_FLT > "00" then + CLK_LOCK := true; + EDGE_LOCK := false; + HI_FLT := "00"; + LOW_FLT := LOW_FLT - '1'; + elsif RXCLK = '1' and SDATA_IN = '1' and CLK_LOCK = false and HI_FLT < "11" then + CLK_LOCK := true; + EDGE_LOCK := false; + LOW_FLT := "11"; + HI_FLT := HI_FLT + '1'; + elsif RXCLK = '1' and EDGE_LOCK = false and LOW_FLT = "00" then + EDGE_LOCK := true; + SDATA_EDGE <= '1'; -- Falling edge detected. + NEW_SDATA := '0'; + elsif RXCLK = '1' and EDGE_LOCK = false and HI_FLT = "11" then + EDGE_LOCK := true; + SDATA_EDGE <= '1'; -- Rising edge detected. + NEW_SDATA := '1'; + elsif RXCLK = '1' and CLK_LOCK = false then + CLK_LOCK := true; + SDATA_EDGE <= '0'; + elsif RXCLK = '0' then + CLK_LOCK := false; + end if; + -- + if RESETn = '0' or RE = '0' then + -- The reset condition assumes the SDATA_IN logic high. Otherwise + -- one not valid SDATA_EDGE pulse occurs during system startup. + TIMER := "111"; + TIMER_LOCK := true; + SDATA_DIV16 <= '1'; + -- The timer controls the SDATA in a way, that after a detected valid + -- Transistion, the serial data is sampled on the 8th receiver clock + -- edge after the initial valid transition occured. + elsif RXCLK = '1' and SDATA_EDGE = '1' and TIMER_LOCK = false then + TIMER_LOCK := true; + TIMER := "000"; -- Resynchronisation. + elsif RXCLK = '1' and TIMER = "011" and TIMER_LOCK = false then + TIMER_LOCK := true; + SDATA_DIV16 <= NEW_SDATA; -- Scan the new data. + TIMER := TIMER + '1'; -- Timing is active. + elsif RXCLK = '1' and TIMER < "111" and TIMER_LOCK = false then + TIMER_LOCK := true; + TIMER := TIMER + '1'; -- Timing is active. + elsif RXCLK = '0' then + TIMER_LOCK := false; + end if; + end process P_SAMPLE; + + P_START_BIT: process(CLK) + -- This is the valid start bit logic of the original MC68901 multi function + -- port's USART receiver. + variable TMP : std_logic_vector(2 downto 0); + variable LOCK : boolean; + begin + if CLK = '1' and CLK' event then + if RESETn = '0' then + TMP := "000"; + LOCK := true; + elsif RE = '0' or RCV_STATE /= IDLE then -- Start bit logic disabled. + TMP := "000"; + LOCK := true; + elsif SDATA_EDGE = '1' then + TMP := "000"; -- (Re)-Initialize. + LOCK := false; -- Start counting. + elsif RXCLK = '1' and SDATA_IN = '0' and TMP < "111" and LOCK = false then + LOCK := true; + TMP := TMP + '1'; -- Count 8 low bits to declare start condition valid. + elsif RXCLK = '0' then + LOCK := false; + end if; + end if; + + case TMP is + when "111" => STARTBIT <= true; + when others => STARTBIT <= false; + end case; + end process P_START_BIT; + + SDATA_IN_I <= SDATA_IN when CLK_MODE = '0' else -- Clock div by 1 mode. + SDATA_IN when ST = "00" else SDATA_DIV16; -- Synchronous mode. + + CLKDIV: process + variable CLK_LOCK : boolean; + variable STRB_LOCK : boolean; + variable CLK_DIVCNT : std_logic_vector(4 downto 0); + begin + wait until CLK = '1' and CLK' event; + if CLK_MODE = '0' then -- Divider off. + if RXCLK = '1' and STRB_LOCK = false then + CLK_STRB <= '1'; + STRB_LOCK := true; + elsif RXCLK = '0' then + CLK_STRB <= '0'; + STRB_LOCK := false; + else + CLK_STRB <= '0'; + end if; + CLK_2_STRB <= '0'; -- No 1 1/2 stop bits in no div by 16 mode. + elsif SDATA_EDGE = '1' then +CLK_DIVCNT := "01100"; -- Div by 16 mode. + CLK_STRB <= '0'; -- Default. + CLK_2_STRB <= '0'; -- Default. + else + CLK_STRB <= '0'; -- Default. + CLK_2_STRB <= '0'; -- Default. + if CLK_DIVCNT > "00000" and RXCLK = '1' and CLK_LOCK = false then + CLK_DIVCNT := CLK_DIVCNT - '1'; + CLK_LOCK := true; + if CLK_DIVCNT = "01000" then + -- This strobe is asserted at half of the clock cycle. + -- It is used for the stop bit timing. + CLK_2_STRB <= '1'; + end if; + elsif CLK_DIVCNT = "00000" then + CLK_DIVCNT := "10000"; -- Div by 16 mode. + if STRB_LOCK = false then + STRB_LOCK := true; + CLK_STRB <= '1'; + end if; + elsif RXCLK = '0' then + CLK_LOCK := false; + STRB_LOCK := false; + end if; + end if; + end process CLKDIV; + + SHIFTREG: process(RESETn, CLK) + begin + if RESETn = '0' then + SHIFT_REG <= x"00"; + elsif CLK = '1' and CLK' event then + if RE = '0' then + SHIFT_REG <= x"00"; + elsif RCV_STATE = SAMPLE and CLK_STRB = '1' then + SHIFT_REG <= SDATA_IN_I & SHIFT_REG(7 downto 1); -- Shift right. + end if; + end if; + end process SHIFTREG; + + P_M_CIP: process(RESETn, CLK) + -- In Synchronous mode this flag indicates wether a synchronous character M_CIP = '1' + -- or another character (M_CIP = '0') is transferred to the receive buffer. + -- In asynchronous mode the flag indicates sampling condition. + begin + if RESETn = '0' then + M_CIP <= '0'; + elsif CLK = '0' and CLK' event then + if RE = '0' then + M_CIP <= '0'; + elsif ST = "00" then -- Synchronous mode. + if RCV_STATE = SYNC and SHIFT_REG = SCR and RDRF = '0' then + M_CIP <= '1'; -- SCR transferred. + elsif RCV_STATE = SYNC and RDRF = '0' then + M_CIP <= '0'; -- No SCR transferred. + end if; + else -- Asynchronous mode. + case RCV_STATE is + when SAMPLE | PARITY | STOP1 | STOP2 => M_CIP <= '1'; -- Sampling. + when others => M_CIP <= '0'; -- No Sampling. + end case; + end if; + end if; + end process P_M_CIP; + + BREAK_DETECT: process(RESETn, CLK) + -- A break condition occurs, if there is no STOP1 bit and the + -- shift register contains zero data. + begin + if RESETn = '0' then + BREAK <= false; + elsif CLK = '1' and CLK' event then + if RE = '0' then + BREAK <= false; + elsif CLK_STRB = '1' then + if RCV_STATE = STOP1 and SDATA_IN_I = '0' and SHIFT_REG = x"00" then + BREAK <= true; -- Break detected (empty shift register and no stop bit). + elsif RCV_STATE = STOP1 and SDATA_IN_I = '1' then + BREAK <= false; -- UPDATE. + elsif RCV_STATE = STOP1 and SDATA_IN_I = '0' and SHIFT_REG /= x"00" then + BREAK <= false; -- UPDATE, but framing error. + end if; + end if; + end if; + end process BREAK_DETECT; + + P_FS_B: process(RESETn, CLK) + -- In the synchronous mode, this process provides the flag detecting the synchronous + -- character. In the asynchronous mode, the flag indicates a break condition. + variable FS_B_I : bit; + variable FIRST_READ : boolean; + begin + if RESETn = '0' then + FS_B <= '0'; + FIRST_READ := false; + FS_B_I := '0'; + elsif CLK = '0' and CLK' event then + if RE = '0' then + FS_B <= '0'; + FS_B_I := '0'; + else + if ST = "00" then -- Synchronous operation. + if FS_CLR = '1' then + FS_B <= '0'; -- Clear during writing to the SCR. + elsif SHIFT_REG = SCR then + FS_B <= '1'; -- SCR detected. + end if; + else -- Asynchronous operation. + if RX_SAMPLE = '1' and BREAK = true then -- Break condition detected. + FS_B_I := '1'; -- Update. + elsif RX_SAMPLE = '1' then -- No break condition. + FS_B_I := '0'; -- Update. + elsif RSR_READ = '1' and FS_B_I = '1' then + -- If a break condition was detected, the concerning flag is + -- set when the valid data word in the receiver data + -- register is read. Thereafter the break flag is reset + -- and the break condition disappears after a second read + -- (in time) of the receiver status register. + if FIRST_READ = false then + FS_B <= '1'; + FIRST_READ := true; + else + FS_B <= '0'; + FIRST_READ := false; + end if; + end if; + end if; + end if; + end if; + end process P_FS_B; + + P_BITCNT: process + begin + wait until CLK = '1' and CLK' event; + if RCV_STATE = SAMPLE and CLK_STRB = '1' and ST /= "00" then -- Asynchronous mode. + BITCNT <= BITCNT + '1'; + elsif RCV_STATE = SAMPLE and CLK_STRB = '1' and ST = "00" and FS_B = '1' then -- Synchronous mode. + BITCNT <= BITCNT + '1'; -- Count, if matched data found (FS_B = '1'). + elsif RCV_STATE /= SAMPLE then + BITCNT <= (others => '0'); + end if; + end process P_BITCNT; + + BUFFER_FULL: process(RESETn, CLK) + -- Receive data register full flag. + begin + if RESETn = '0' then + RDRF <= '0'; + elsif CLK = '1' and CLK' event then + if RE = '0' then + RDRF <= '0'; + elsif RX_SAMPLE = '1' then + RDRF <= '1'; -- Data register is full until now! + elsif UDR_READ = '1' then + RDRF <= '0'; -- After reading the data register ... + end if; + end if; + end process BUFFER_FULL; + + OVERRUN: process(RESETn, CLK) + variable OE_I : bit; + variable FIRST_READ : boolean; + begin + if RESETn = '0' then + OE_I := '0'; + OE <= '0'; + FIRST_READ := false; + elsif CLK = '1' and CLK' event then + if RESETn = '0' then + OE_I := '0'; + OE <= '0'; + FIRST_READ := false; + elsif CLK_STRB = '1' and RCV_STATE = SYNC and BREAK = false then + -- Overrun appears if RDRF is '1' in this state and there + -- is no break condition. + OE_I := RDRF; + end if; + if RSR_READ = '1' and OE_I = '1' then + -- if an overrun was detected, the concerning flag is + -- set when the valid data word in the receiver data + -- register is read. Thereafter the RDRF flag is reset + -- and the overrun disappears (OE_I goes low) after + -- a second read (in time) of the receiver data register. + if FIRST_READ = false then + OE <= '1'; + FIRST_READ := true; + else + OE <= '0'; + FIRST_READ := false; + end if; + end if; + end if; + end process OVERRUN; + + PARITY_TEST: process(RESETn, CLK) + variable PAR_TMP : bit; + variable P_ERR : bit; + begin + if RESETn = '0' then + PE <= '0'; + elsif CLK = '1' and CLK' event then + if RE = '0' then + PE <= '0'; + elsif RX_SAMPLE = '1' then + PE <= P_ERR; -- Update on load shift register to data register. + elsif CLK_STRB = '1' then -- Sample parity on clock strobe. + P_ERR := '0'; -- Initialise. + if RCV_STATE = PARITY then + for i in 1 to 7 loop + if i = 1 then + PAR_TMP := SHIFT_REG(i-1) xor SHIFT_REG(i); + else + PAR_TMP := PAR_TMP xor SHIFT_REG(i); + end if; + end loop; + if P_ENA = '1' and P_EOn = '1' then -- Even parity. + P_ERR := PAR_TMP xor SDATA_IN_I; + elsif P_ENA = '1' and P_EOn = '0' then -- Odd parity. + P_ERR := not PAR_TMP xor SDATA_IN_I; + elsif P_ENA = '0' then -- No parity. + P_ERR := '0'; + end if; + end if; + end if; + end if; + end process PARITY_TEST; + + FRAME_ERR: process(RESETn, CLK) + -- This module detects a framing error + -- during stop bit 1 and stop bit 2. + variable FE_I: bit; + begin + if RESETn = '0' then + FE_I := '0'; + FE <= '0'; + elsif CLK = '1' and CLK' event then + if RE = '0' then + FE_I := '0'; + FE <= '0'; + elsif CLK_STRB = '1' then + if RCV_STATE = STOP1 and SDATA_IN_I = '0' and SHIFT_REG /= x"00" then + FE_I := '1'; + elsif RCV_STATE = STOP2 and SDATA_IN_I = '0' and SHIFT_REG /= x"00" then + FE_I := '1'; + elsif RCV_STATE = STOP1 or RCV_STATE = STOP2 then + FE_I := '0'; -- Error resets when correct data appears. + end if; + end if; + if RCV_STATE = SYNC then + FE <= FE_I; -- Update the FE every SYNC time. + end if; + end if; + end process FRAME_ERR; + + RCV_STATEREG: process(RESETn, CLK) + begin + if RESETn = '0' then + RCV_STATE <= IDLE; + elsif CLK = '1' and CLK' event then + if RE = '0' then + RCV_STATE <= IDLE; + else + RCV_STATE <= RCV_NEXT_STATE; + end if; + end if; + end process RCV_STATEREG; + + RCV_STATEDEC: process(RCV_STATE, SDATA_IN_I, BITCNT, CLK_STRB, STARTBIT, + CLK_2_STRB, ST, CLK_MODE, CL, P_ENA, SHIFT_REG) + begin + case RCV_STATE is + when IDLE => + if ST = "00" then + RCV_NEXT_STATE <= SAMPLE; -- Synchronous mode. + elsif SDATA_IN_I = '0' and CLK_MODE = '0' then + RCV_NEXT_STATE <= SAMPLE; -- Startbit detected in div by 1 mode. + elsif STARTBIT = true and CLK_MODE = '1' then + RCV_NEXT_STATE <= WAIT_START; -- Startbit detected in div by 16 mode. + else + RCV_NEXT_STATE <= IDLE; -- No startbit; sleep well :-) + end if; + when WAIT_START => + -- This state delays the sample process by one CLK_STRB pulse + -- to eliminate the start bit. + if CLK_STRB = '1' then + RCV_NEXT_STATE <= SAMPLE; + else + RCV_NEXT_STATE <= WAIT_START; + end if; + when SAMPLE => + if CLK_STRB = '1' then + if CL = "11" and BITCNT < "100" then + RCV_NEXT_STATE <= SAMPLE; -- Go on sampling 5 data bits. + elsif CL = "10" and BITCNT < "101" then + RCV_NEXT_STATE <= SAMPLE; -- Go on sampling 6 data bits. + elsif CL = "01" and BITCNT < "110" then + RCV_NEXT_STATE <= SAMPLE; -- Go on sampling 7 data bits. + elsif CL = "00" and BITCNT < "111" then + RCV_NEXT_STATE <= SAMPLE; -- Go on sampling 8 data bits. + elsif ST = "00" and P_ENA = '0' then -- Synchronous mode (no stop bits). + RCV_NEXT_STATE <= IDLE; -- No parity check enabled. + elsif P_ENA = '0' then + RCV_NEXT_STATE <= STOP1; -- No parity check enabled. + else + RCV_NEXT_STATE <= PARITY; -- Parity enabled. + end if; + else + RCV_NEXT_STATE <= SAMPLE; -- Stay in sample mode. + end if; + when PARITY => + if CLK_STRB = '1' then + if ST = "00" then -- Synchronous mode (no stop bits). + RCV_NEXT_STATE <= IDLE; + else + RCV_NEXT_STATE <= STOP1; + end if; + else + RCV_NEXT_STATE <= PARITY; + end if; + when STOP1 => + if CLK_STRB = '1' then + if SHIFT_REG > x"00" and SDATA_IN_I = '0' then -- No Stop bit after non zero data. + RCV_NEXT_STATE <= SYNC; -- Framing error detected. + elsif ST = "11" or ST = "10" then + RCV_NEXT_STATE <= STOP2; -- More than one stop bits selected. + else + RCV_NEXT_STATE <= SYNC; -- One stop bit selected. + end if; + else + RCV_NEXT_STATE <= STOP1; + end if; + when STOP2 => + if CLK_2_STRB = '1' and ST = "10" then + RCV_NEXT_STATE <= SYNC; -- One and a half stop bits selected. + elsif CLK_STRB = '1' then + RCV_NEXT_STATE <= SYNC; -- Two stop bits selected. + else + RCV_NEXT_STATE <= STOP2; + end if; + when SYNC => + RCV_NEXT_STATE <= IDLE; + end case; + end process RCV_STATEDEC; +end architecture BEHAVIOR; + diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_top.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_top.vhd new file mode 100644 index 0000000..fd06bf1 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_top.vhd @@ -0,0 +1,238 @@ +---------------------------------------------------------------------- +---- ---- +---- ATARI MFP compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- MC68901 compatible multi function port core. ---- +---- ---- +---- This is the SUSKA MFP IP core USART top level file. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- + +use work.wf68901ip_pkg.all; + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF68901IP_USART_TOP is + port ( -- System control: + CLK : in bit; + RESETn : in bit; + + -- Asynchronous bus control: + DSn : in bit; + CSn : in bit; + RWn : in bit; + + -- Data and Adresses: + RS : in bit_vector(5 downto 1); + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_OUT_EN : out bit; + + -- Serial I/O control: + RC : in bit; -- Receiver clock. + TC : in bit; -- Transmitter clock. + SI : in bit; -- Serial input. + SO : out bit; -- Serial output. + SO_EN : out bit; -- Serial output enable. + + -- Interrupt channels: + RX_ERR_INT : out bit; -- Receiver errors. + RX_BUFF_INT : out bit; -- Receiver buffer full. + TX_ERR_INT : out bit; -- Transmitter errors. + TX_BUFF_INT : out bit; -- Transmitter buffer empty. + + -- DMA control: + RRn : out bit; + TRn : out bit + ); +end entity WF68901IP_USART_TOP; + +architecture STRUCTURE of WF68901IP_USART_TOP is + signal BF_I : bit; + signal BE_I : bit; + signal FE_I : bit; + signal OE_I : bit; + signal UE_I : bit; + signal PE_I : bit; + signal LOOPBACK_I : bit; + signal SD_LEVEL_I : bit; + signal SDATA_IN_I : bit; + signal SDATA_OUT_I : bit; + signal RXCLK_I : bit; + signal CLK_MODE_I : bit; + signal SCR_I : bit_vector(7 downto 0); + signal RX_SAMPLE_I : bit; + signal RX_DATA_I : bit_vector(7 downto 0); + signal TX_DATA_I : bit_vector(7 downto 0); + signal CL_I : bit_vector(1 downto 0); + signal ST_I : bit_vector(1 downto 0); + signal P_ENA_I : bit; + signal P_EOn_I : bit; + signal RE_I : bit; + signal TE_I : bit; + signal FS_CLR_I : bit; + signal SS_I : bit; + signal M_CIP_I : bit; + signal FS_B_I : bit; + signal BR_I : bit; + signal UDR_READ_I : bit; + signal UDR_WRITE_I : bit; + signal RSR_READ_I : bit; + signal TSR_READ_I : bit; + signal TX_END_I : bit; +begin + SO <= SDATA_OUT_I when TE_I = '1' else SD_LEVEL_I; + -- Loopback mode: + SDATA_IN_I <= SDATA_OUT_I when LOOPBACK_I = '1' and TE_I = '1' else -- Loopback, transmitter enabled. + '1' when LOOPBACK_I = '1' and TE_I = '0' else SI; -- Loopback, transmitter disabled. + + RXCLK_I <= TC when LOOPBACK_I = '1' else RC; + RRn <= '0' when BF_I = '1' and PE_I = '0' and FE_I = '0' else '1'; + TRn <= not BE_I; + + -- Interrupt sources: + RX_ERR_INT <= OE_I or PE_I or FE_I or FS_B_I; + RX_BUFF_INT <= BF_I; + TX_ERR_INT <= UE_I or TX_END_I; + TX_BUFF_INT <= BE_I; + + I_USART_CTRL: WF68901IP_USART_CTRL + port map( + CLK => CLK, + RESETn => RESETn, + DSn => DSn, + CSn => CSn, + RWn => RWn, + RS => RS, + DATA_IN => DATA_IN, + DATA_OUT => DATA_OUT, + DATA_OUT_EN => DATA_OUT_EN, + LOOPBACK => LOOPBACK_I, + SDOUT_EN => SO_EN, + SD_LEVEL => SD_LEVEL_I, + CLK_MODE => CLK_MODE_I, + RE => RE_I, + TE => TE_I, + P_ENA => P_ENA_I, + P_EOn => P_EOn_I, + BF => BF_I, + BE => BE_I, + FE => FE_I, + OE => OE_I, + UE => UE_I, + PE => PE_I, + M_CIP => M_CIP_I, + FS_B => FS_B_I, + SCR_OUT => SCR_I, + TX_DATA => TX_DATA_I, + RX_SAMPLE => RX_SAMPLE_I, + RX_DATA => RX_DATA_I, + SS => SS_I, + BR => BR_I, + CL => CL_I, + ST => ST_I, + FS_CLR => FS_CLR_I, + UDR_READ => UDR_READ_I, + UDR_WRITE => UDR_WRITE_I, + RSR_READ => RSR_READ_I, + TSR_READ => TSR_READ_I, + TX_END => TX_END_I + ); + + I_USART_RECEIVE: WF68901IP_USART_RX + port map ( + CLK => CLK, + RESETn => RESETn, + SCR => SCR_I, + RX_SAMPLE => RX_SAMPLE_I, + RX_DATA => RX_DATA_I, + CL => CL_I, + ST => ST_I, + P_ENA => P_ENA_I, + P_EOn => P_EOn_I, + CLK_MODE => CLK_MODE_I, + RE => RE_I, + FS_CLR => FS_CLR_I, + SS => SS_I, + RXCLK => RXCLK_I, + SDATA_IN => SDATA_IN_I, + RSR_READ => RSR_READ_I, + UDR_READ => UDR_READ_I, + M_CIP => M_CIP_I, + FS_B => FS_B_I, + BF => BF_I, + OE => OE_I, + PE => PE_I, + FE => FE_I + ); + + I_USART_TRANSMIT: WF68901IP_USART_TX + port map ( + CLK => CLK, + RESETn => RESETn, + SCR => SCR_I, + TX_DATA => TX_DATA_I, + SDATA_OUT => SDATA_OUT_I, + TXCLK => TC, + CL => CL_I, + ST => ST_I, + TE => TE_I, + BR => BR_I, + P_ENA => P_ENA_I, + P_EOn => P_EOn_I, + UDR_WRITE => UDR_WRITE_I, + TSR_READ => TSR_READ_I, + CLK_MODE => CLK_MODE_I, + TX_END => TX_END_I, + UE => UE_I, + BE => BE_I + ); +end architecture STRUCTURE; diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_tx.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_tx.vhd new file mode 100644 index 0000000..8de27f3 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_tx.vhd @@ -0,0 +1,387 @@ +---------------------------------------------------------------------- +---- ---- +---- ATARI MFP compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- This is the SUSKA MFP IP core USART transmitter file. ---- +---- ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- Revision 2K9A 2009/06/20 WF +-- TDRE has now synchronous reset to meet preset requirement. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF68901IP_USART_TX is + port ( + CLK : in bit; + RESETn : in bit; + + SCR : in bit_vector(7 downto 0); -- Synchronous character. + TX_DATA : in bit_vector(7 downto 0); -- Normal data. + + SDATA_OUT : out bit; -- Serial data output. + TXCLK : in bit; -- Transmitter clock. + + CL : in bit_vector(1 downto 0); -- Character length. + ST : in bit_vector(1 downto 0); -- Start and stop bit configuration. + TE : in bit; -- Transmitter enable. + BR : in bit; -- BREAK character send enable (all '0' without stop bit). + P_ENA : in bit; -- Parity enable. + P_EOn : in bit; -- Even or odd parity. + UDR_WRITE : in bit; -- Flag indicating writing the data register. + TSR_READ : in bit; -- Flag indicating reading the transmitter status register. + CLK_MODE : in bit; -- Transmitter clock mode. + + TX_END : out bit; -- End of transmission flag. + UE : out bit; -- Underrun Flag. + BE : out bit -- Buffer empty flag. + ); +end entity WF68901IP_USART_TX; + +architecture BEHAVIOR of WF68901IP_USART_TX is +type TR_STATES is (IDLE, CHECK_BREAK, LOAD_SHFT, START, SHIFTOUT, PARITY, STOP1, STOP2); +signal TR_STATE, TR_NEXT_STATE : TR_STATES; +signal CLK_STRB : bit; +signal CLK_2_STRB : bit; +signal SHIFT_REG : bit_vector(7 downto 0); +signal BITCNT : std_logic_vector(2 downto 0); +signal PARITY_I : bit; +signal TDRE : bit; +signal BREAK : bit; +begin + BE <= TDRE; -- Buffer empty flag. + + -- The default condition in this statement is to ensure + -- to cover all possibilities for example if there is a + -- one hot decoding of the state machine with wrong states + -- (e.g. not one of the given here). + SDATA_OUT <= '0' when BREAK = '1' else + '1' when TR_STATE = IDLE else + '1' when TR_STATE = LOAD_SHFT else + '0' when TR_STATE = START else + SHIFT_REG(0) when TR_STATE = SHIFTOUT else + PARITY_I when TR_STATE = PARITY else + '1' when TR_STATE = STOP1 else + '1' when TR_STATE = STOP2 else '1'; + + P_BREAK : process(RESETn, CLK) + -- This process is responsible to control the BREAK signal. After the break request + -- is asserted via BR, the break character will be sent after the current transmission has + -- finished. The BREAK character is sent until the BR is disabled. + variable LOCK : boolean; + begin + if RESETn = '0' then + BREAK <= '0'; + elsif CLK = '1' and CLK' event then + -- Break is only available in the asynchronous mode (ST /= "00"). + -- The LOCK mechanism is reponsible for sending the BREAK character just once. + if TE = '1' and BR = '1' and ST /= "00" and TR_STATE = IDLE and LOCK = false then + BREAK <= '1'; -- Break for the case that there is no current transmission. + LOCK := true; + elsif BR = '1' and ST /= "00" and TR_STATE = STOP1 then + BREAK <= '0'; -- Break character sent. + elsif BR = '0' then + BREAK <= '0'; + LOCK := false; + else + BREAK <= '0'; + end if; + end if; + end process P_BREAK; + + CLKDIV: process + variable CLK_LOCK : boolean; + variable STRB_LOCK : boolean; + variable CLK_DIVCNT : std_logic_vector(4 downto 0); + begin + wait until CLK = '1' and CLK' event; + if CLK_MODE = '0' then -- Divider off. + if TXCLK = '0' and STRB_LOCK = false then -- Works on negative TXCLK edge. + CLK_STRB <= '1'; + STRB_LOCK := true; + elsif TXCLK = '1' then + CLK_STRB <= '0'; + STRB_LOCK := false; + else + CLK_STRB <= '0'; + end if; + CLK_2_STRB <= '0'; -- No 1 1/2 stop bits in no div by 16 mode. + elsif TR_STATE = IDLE then + CLK_DIVCNT := "10000"; -- Div by 16 mode. + CLK_STRB <= '0'; + else + CLK_STRB <= '0'; -- Default. + CLK_2_STRB <= '0'; -- Default. + -- Works on negative TXCLK edge: + if CLK_DIVCNT > "00000" and TXCLK = '0' and CLK_LOCK = false then + CLK_DIVCNT := CLK_DIVCNT - '1'; + CLK_LOCK := true; + if CLK_DIVCNT = "01000" then + -- This strobe is asserted at half of the clock cycle. + -- It is used for the stop bit timing. + CLK_2_STRB <= '1'; + end if; + elsif CLK_DIVCNT = "00000" then + CLK_DIVCNT := "10000"; -- Div by 16 mode. + if STRB_LOCK = false then + STRB_LOCK := true; + CLK_STRB <= '1'; + end if; + elsif TXCLK = '1' then + CLK_LOCK := false; + STRB_LOCK := false; + end if; + end if; + end process CLKDIV; + + SHIFTREG: process(RESETn, CLK) + begin + if RESETn = '0' then + SHIFT_REG <= x"00"; + elsif CLK = '1' and CLK' event then + if TR_STATE = LOAD_SHFT and TDRE = '1' then -- Lost data ... + case ST is + when "00" => -- Synchronous mode. + SHIFT_REG <= SCR; -- Send the synchronous character. + when others => -- Asynchronous mode. + SHIFT_REG <= x"5A"; -- Load the shift register with a mark (underrun). + end case; + elsif TR_STATE = LOAD_SHFT then + -- Load 'normal' data if there is no break condition: + case CL is + when "11" => SHIFT_REG <= "000" & TX_DATA(4 downto 0); -- 5 databits. + when "10" => SHIFT_REG <= "00" & TX_DATA(5 downto 0); -- 6 databits. + when "01" => SHIFT_REG <= '0' & TX_DATA(6 downto 0); -- 7 databits. + when "00" => SHIFT_REG <= TX_DATA; -- 8 databits. + end case; + elsif TR_STATE = SHIFTOUT and CLK_STRB = '1' then + SHIFT_REG <= '0' & SHIFT_REG(7 downto 1); -- Shift right. + end if; + end if; + end process SHIFTREG; + + P_BITCNT: process + -- Counter for the data bits transmitted. + begin + wait until CLK = '1' and CLK' event; + if TR_STATE = SHIFTOUT and CLK_STRB = '1' then + BITCNT <= BITCNT + '1'; + elsif TR_STATE /= SHIFTOUT then + BITCNT <= "000"; + end if; + end process P_BITCNT; + + BUFFER_EMPTY: process + -- Transmit data register empty flag. + begin + wait until CLK = '1' and CLK' event; + if RESETn = '0' then + TDRE <= '1'; + elsif TE = '0' then + TDRE <= '1'; + elsif TR_STATE = START and BREAK = '0' then + -- Data has been loaded to the shift register, + -- thus data register is free again. + -- If the BREAK flag is enabled, the BE flag + -- respective TDRE flag cannot be set. + TDRE <= '1'; + elsif UDR_WRITE = '1' then + TDRE <= '0'; + end if; + end process BUFFER_EMPTY; + + UNDERRUN: process(RESETn, CLK) + variable LOCK : boolean; + begin + if RESETn = '0' then + UE <= '0'; + LOCK := false; + elsif CLK = '1' and CLK' event then + if TE = '0' then + UE <= '0'; + LOCK := false; + elsif CLK_STRB = '1' and TR_STATE = START then + -- Underrun appears if TDRE is '0' at the end of this state. + UE <= TDRE; -- Never true for enabled BREAK flag. See alos process BUFFER_EMPTY. + LOCK := true; + elsif CLK_STRB = '1' then + LOCK := false; -- Disables clearing UE one transmit clock cycle. + elsif TSR_READ = '1' and LOCK = false then + UE <= '0'; + end if; + end if; + end process UNDERRUN; + + P_TX_END: process(RESETn, CLK) + begin + if RESETn = '0' then + TX_END <= '0'; + elsif CLK = '1' and CLK' event then + if TE = '1' then -- Transmitter enabled. + TX_END <= '0'; + elsif TE = '0' and TR_STATE = IDLE then + TX_END <= '1'; + end if; + end if; + end process P_TX_END; + + PARITY_GEN: process + variable PAR_TMP : bit; + begin + wait until CLK = '1' and CLK' event; + if TR_STATE = START then -- Calculate the parity during the start phase. + for i in 1 to 7 loop + if i = 1 then + PAR_TMP := SHIFT_REG(i-1) xor SHIFT_REG(i); + else + PAR_TMP := PAR_TMP xor SHIFT_REG(i); + end if; + end loop; + if P_ENA = '1' and P_EOn = '1' then -- Even parity. + PARITY_I <= PAR_TMP; + elsif P_ENA = '1' and P_EOn = '0' then -- Odd parity. + PARITY_I <= not PAR_TMP; + else -- No parity. + PARITY_I <= '0'; + end if; + end if; + end process PARITY_GEN; + + TR_STATEREG: process(RESETn, CLK) + begin + if RESETn = '0' then + TR_STATE <= IDLE; + elsif CLK = '1' and CLK' event then + TR_STATE <= TR_NEXT_STATE; + end if; + end process TR_STATEREG; + + TR_STATEDEC: process(TR_STATE, CLK_STRB, CLK_2_STRB, BITCNT, TDRE, BREAK, TE, ST, P_ENA, CL, BR) + begin + case TR_STATE is + when IDLE => + -- This IDLE state is just one clock cycle and is required to give the + -- break process time to set the BREAK flag. + TR_NEXT_STATE <= CHECK_BREAK; + when CHECK_BREAK => + if BREAK = '1' then -- Send break character. + -- Do not load any data to the shift register, go directly + -- to the START state. + TR_NEXT_STATE <= START; + -- Start enabled transmitter, if the data register is not empty. + -- Do not send any further data for the case of an asserted BR flag. + elsif TE = '1' and TDRE = '0' and BR = '0' then + TR_NEXT_STATE <= LOAD_SHFT; + else + TR_NEXT_STATE <= IDLE; -- Go back, scan for BREAK. + end if; + when LOAD_SHFT => + TR_NEXT_STATE <= START; + when START => -- Send the start bit. + if CLK_STRB = '1' then + TR_NEXT_STATE <= SHIFTOUT; + else + TR_NEXT_STATE <= START; + end if; + when SHIFTOUT => + if CLK_STRB = '1' then + if BITCNT < "100" and CL = "11" then + TR_NEXT_STATE <= SHIFTOUT; -- Transmit 5 data bits. + elsif BITCNT < "101" and CL = "10" then + TR_NEXT_STATE <= SHIFTOUT; -- Transmit 6 data bits. + elsif BITCNT < "110" and CL = "01" then + TR_NEXT_STATE <= SHIFTOUT; -- Transmit 7 data bits. + elsif BITCNT < "111" and CL = "00" then + TR_NEXT_STATE <= SHIFTOUT; -- Transmit 8 data bits. + elsif P_ENA = '0' and BREAK = '1' then + TR_NEXT_STATE <= IDLE; -- Break condition, no parity check enabled, no stop bits. + elsif P_ENA = '0' and ST = "00" then + TR_NEXT_STATE <= IDLE; -- Synchronous mode, no parity check enabled. + elsif P_ENA = '0' then + TR_NEXT_STATE <= STOP1; -- Asynchronous mode, no parity check enabled. + else + TR_NEXT_STATE <= PARITY; -- Parity enabled. + end if; + else + TR_NEXT_STATE <= SHIFTOUT; + end if; + when PARITY => + if CLK_STRB = '1' then + if ST = "00" then -- Synchronous mode (no stop bits). + TR_NEXT_STATE <= IDLE; + elsif BREAK = '1' then -- No stop bits during break condition. + TR_NEXT_STATE <= IDLE; + else + TR_NEXT_STATE <= STOP1; + end if; + else + TR_NEXT_STATE <= PARITY; + end if; + when STOP1 => + if CLK_STRB = '1' and (ST = "11" or ST = "10") then + TR_NEXT_STATE <= STOP2; -- More than one stop bits selected. + elsif CLK_STRB = '1' then + TR_NEXT_STATE <= IDLE; -- One stop bits selected. + else + TR_NEXT_STATE <= STOP1; + end if; + when STOP2 => + if CLK_2_STRB = '1' and ST = "10" then + TR_NEXT_STATE <= IDLE; -- One and a half stop bits selected. + elsif CLK_STRB = '1' then + TR_NEXT_STATE <= IDLE; -- Two stop bits detected. + else + TR_NEXT_STATE <= STOP2; + end if; + end case; + end process TR_STATEDEC; +end architecture BEHAVIOR; + diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_SDC_IF/sd-card-interface.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_SDC_IF/sd-card-interface.vhd new file mode 100644 index 0000000..685fc02 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_SDC_IF/sd-card-interface.vhd @@ -0,0 +1,228 @@ +---------------------------------------------------------------------- +---- ---- +---- ATARI IP Core peripheral Add-On ---- +---- ---- +---- This file is part of the FPGA-ATARI project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- This hardware provides an interface to connect to a SD-Card. ---- +---- ---- +---- This interface is based on the project 'SatanDisk' of ---- +---- Miroslav Nohaj 'Jookie'. The code is an interpretation of ---- +---- the original code, written in VERILOG. It is provided for ---- +---- the use in a system on programmable chips (SOPC). ---- +---- ---- +---- Timing: Use a clock frequency of 16MHz for this component. ---- +---- Use the same clock frequency for the connected AVR ---- +---- microcontroller. ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2007 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +---- This hardware works with the original ATARI ---- +---- hard dik driver. ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 1.0 2007/01/05 WF +-- Initial Release. + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF_SD_CARD is + port ( + -- System: + RESETn : in bit; + CLK : in bit; -- 16MHz, see above. + + -- ACSI section: + ACSI_A1 : in bit; + ACSI_CSn : in bit; + ACSI_ACKn : in bit; + ACSI_INTn : out bit; + ACSI_DRQn : out bit; + ACSI_D : inout std_logic_vector(7 downto 0); + + -- Microcontroller interface: + MC_D : inout std_logic_vector(7 downto 0); + MC_DO : in bit; + MC_PIO_DMAn : in bit; + MC_RWn : in bit; + MC_CLR_CMD : in bit; + MC_DONE : out bit; + MC_GOT_CMD : out bit + ); +end WF_SD_CARD; + +architecture BEHAVIOR of WF_SD_CARD is +signal DATA_REG : std_logic_vector(7 downto 0); +signal D0_REG : bit; +signal INT_REG : bit; +signal DRQ_REG : bit; +signal DONE_REG : bit; +signal GOT_CMD_REG : bit; +signal HOLD : bit; +signal PREV_CSn : bit; +signal PREV_ACKn : bit; +begin + MC_D <= DATA_REG when MC_RWn = '0' and DONE_REG = '1' else (others => 'Z'); + ACSI_D <= DATA_REG when MC_RWn = '1' and (ACSI_CSn = '0' or ACSI_ACKn = '0' or HOLD = '1') else (others => 'Z'); + ACSI_INTn <= INT_REG; + ACSI_DRQn <= DRQ_REG; + MC_DONE <= DONE_REG; + MC_GOT_CMD <= GOT_CMD_REG; + + P_DATA: process(RESETn, CLK) + begin + if RESETn = '0' then + DATA_REG <= (others => '0'); + elsif CLK = '1' and CLK' event then + if D0_REG = '0' and MC_DO = '1' and MC_RWn = '1' then + DATA_REG <= MC_D; -- Read from AVR to ACSI. + end if; + -- + if PREV_CSn = '0' and ACSI_CSn = '0' and MC_RWn = '0' and DONE_REG = '0' then + DATA_REG <= ACSI_D; -- Write from ACSI to AVR. + elsif PREV_ACKn = '0' and ACSI_ACKn = '0' and MC_RWn = '0' and DONE_REG = '0' then + DATA_REG <= ACSI_D; -- Write from ACSI to AVR. + end if; + end if; + end process P_DATA; + + P_SYNC: process + begin + wait until CLK = '1' and CLK' event; + PREV_CSn <= ACSI_CSn; + PREV_ACKn <= ACSI_ACKn; + end process P_SYNC; + + P_INT_DRQ: process(RESETn, CLK) + begin + if RESETn = '0' then + INT_REG <= '1'; -- No interrupt. + DRQ_REG <= '1'; -- No data request. + elsif CLK = '1' and CLK' event then + if D0_REG = '0' and MC_DO = '1' and MC_PIO_DMAn = '1' then -- Positive MC_DO edge. + INT_REG <= '0'; -- Release an interrupt. + DRQ_REG <= '1'; + elsif D0_REG = '0' and MC_DO = '1' then + INT_REG <= '1'; + DRQ_REG <= '0'; -- Release a data request. + end if; + -- + if MC_CLR_CMD = '1' then -- Clear done. + INT_REG <= '1'; -- Restore INT_REG. + DRQ_REG <= '1'; -- Restore DRQ_REG. + end if; + -- + if (PREV_CSn = '0' and ACSI_CSn = '0') or (PREV_ACKn = '0' and ACSI_ACKn = '0') then + if ACSI_CSn = '0' then + INT_REG <= '1'; + end if; + -- + if ACSI_ACKn = '0' then + DRQ_REG <= '1'; + end if; + end if; + end if; + end process P_INT_DRQ; + + P_HOLD: process(RESETn, CLK) + begin + if RESETn = '0' then + HOLD <= '0'; + elsif CLK = '1' and CLK' event then + if (PREV_CSn = '0' and ACSI_CSn = '0') or (PREV_ACKn = '0' and ACSI_ACKn = '0') then + HOLD <= '1'; + elsif PREV_CSn = '1' and ACSI_CSn = '1' then -- If signal is high. + HOLD <= '0'; + elsif PREV_ACKn = '1' and ACSI_ACKn = '1' then -- If signal is high. + HOLD <= '0'; + elsif PREV_CSn = '0' and ACSI_CSn = '1' then -- Rising edge. + HOLD <= '1'; + elsif PREV_ACKn = '0' and ACSI_ACKn = '1' then -- Rising edge. + HOLD <= '1'; + elsif MC_CLR_CMD = '1' then -- Clear done. + HOLD <= '0'; + end if; + end if; + end process P_HOLD; + + P_DONE: process(RESETn, CLK) + begin + if RESETn = '0' then + DONE_REG <= '0'; + elsif CLK = '1' and CLK' event then + if (PREV_CSn = '0' and ACSI_CSn = '0') or (PREV_ACKn = '0' and ACSI_ACKn = '0') then + DONE_REG <= '1'; + elsif MC_CLR_CMD = '1' then -- Clear done. + DONE_REG <= '0'; + elsif D0_REG = '0' and MC_DO = '1' then -- Positive MC_DO edge. + DONE_REG <= '0'; + elsif D0_REG = '1' and MC_DO = '0' then -- Negative MC_DO edge. + DONE_REG <= '0'; + end if; + end if; + end process P_DONE; + + P_DO_REG: process(RESETn, CLK) + begin + if RESETn = '0' then + D0_REG <= '0'; + elsif CLK = '1' and CLK' event then + if D0_REG = '0' and MC_DO = '1' then -- Positive MC_DO edge. + D0_REG <= MC_DO; + elsif D0_REG = '1' and MC_DO = '0' then -- Negative MC_DO edge. + D0_REG <= MC_DO; + end if; + end if; + end process P_DO_REG; + + P_GOT_CMD: process(RESETn, CLK) + begin + if RESETn = '0' then + GOT_CMD_REG <= '0'; + elsif CLK = '1' and CLK' event then + if PREV_CSn = '0' and ACSI_CSn = '0' and ACSI_CSn = '0' and ACSI_A1 = '0' then + GOT_CMD_REG <= '1'; -- If command was received. + elsif PREV_ACKn = '0' and ACSI_ACKn = '0' and ACSI_CSn = '0' and ACSI_A1 = '0' then + GOT_CMD_REG <= '1'; -- If command was received. + elsif MC_CLR_CMD = '1' then -- Clear done. + GOT_CMD_REG <= '0'; + end if; + end if; + end process P_GOT_CMD; +end architecture BEHAVIOR; \ No newline at end of file diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_SDC_IF/sd-card-interface_soc.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_SDC_IF/sd-card-interface_soc.vhd new file mode 100644 index 0000000..b1dfe91 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_SDC_IF/sd-card-interface_soc.vhd @@ -0,0 +1,240 @@ +---------------------------------------------------------------------- +---- ---- +---- ATARI IP Core peripheral Add-On ---- +---- ---- +---- This file is part of the FPGA-ATARI project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- This hardware provides an interface to connect to a SD-Card. ---- +---- ---- +---- This interface is based on the project 'SatanDisk' of ---- +---- Miroslav Nohaj 'Jookie'. The code is an interpretation of ---- +---- the original code, written in VERILOG. It is provided for ---- +---- the use in a system on programmable chips (SOPC). ---- +---- ---- +---- Timing: Use a clock frequency of 16MHz for this component. ---- +---- Use the same clock frequency for the connected AVR ---- +---- microcontroller. ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2007 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +---- This hardware works with the original ATARI ---- +---- hard dik driver. ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K7A 2007/01/05 WF +-- Initial Release. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF_SD_CARD is + port ( + -- System: + RESETn : in bit; + CLK : in bit; -- 16MHz, see above. + + -- ACSI section: + ACSI_A1 : in bit; + ACSI_CSn : in bit; + ACSI_ACKn : in bit; + ACSI_INTn : out bit; + ACSI_DRQn : out bit; + ACSI_D_IN : in std_logic_vector(7 downto 0); + ACSI_D_OUT : out std_logic_vector(7 downto 0); + ACSI_D_EN : out bit; + + -- Microcontroller interface: + MC_DO : in bit; + MC_PIO_DMAn : in bit; + MC_RWn : in bit; + MC_CLR_CMD : in bit; + MC_DONE : out bit; + MC_GOT_CMD : out bit; + MC_D_IN : in std_logic_vector(7 downto 0); + MC_D_OUT : out std_logic_vector(7 downto 0); + MC_D_EN : out bit + ); +end WF_SD_CARD; + +architecture BEHAVIOR of WF_SD_CARD is +signal DATA_REG : std_logic_vector(7 downto 0); +signal D0_REG : bit; +signal INT_REG : bit; +signal DRQ_REG : bit; +signal DONE_REG : bit; +signal GOT_CMD_REG : bit; +signal HOLD : bit; +signal PREV_CSn : bit; +signal PREV_ACKn : bit; +begin + MC_D_OUT <= DATA_REG when MC_RWn = '0' and DONE_REG = '1' else (others => '0'); + MC_D_EN <= '1' when MC_RWn = '0' and DONE_REG = '1' else '0'; + ACSI_D_OUT <= DATA_REG when MC_RWn = '1' and (ACSI_CSn = '0' or ACSI_ACKn = '0' or HOLD = '1') else (others => '0'); +--ACSI_D_EN <= '1' when MC_RWn = '1' and (ACSI_CSn = '0' or ACSI_ACKn = '0' or HOLD = '1') else '0'; +ACSI_D_EN <= '0'; -- Disabled. +--ACSI_INTn <= INT_REG; +ACSI_INTn <= '1'; -- Disabled. +--ACSI_DRQn <= DRQ_REG; +ACSI_DRQn <= '1'; -- Disabled. + MC_DONE <= DONE_REG; + MC_GOT_CMD <= GOT_CMD_REG; + + P_DATA: process(RESETn, CLK) + begin + if RESETn = '0' then + DATA_REG <= (others => '0'); + elsif CLK = '1' and CLK' event then + if D0_REG = '0' and MC_DO = '1' and MC_RWn = '1' then + DATA_REG <= MC_D_IN; -- Read from AVR to ACSI. + end if; + -- + if PREV_CSn = '0' and ACSI_CSn = '0' and MC_RWn = '0' and DONE_REG = '0' then + DATA_REG <= ACSI_D_IN; -- Write from ACSI to AVR. + elsif PREV_ACKn = '0' and ACSI_ACKn = '0' and MC_RWn = '0' and DONE_REG = '0' then + DATA_REG <= ACSI_D_IN; -- Write from ACSI to AVR. + end if; + end if; + end process P_DATA; + + P_SYNC: process + begin + wait until CLK = '1' and CLK' event; + PREV_CSn <= ACSI_CSn; + PREV_ACKn <= ACSI_ACKn; + end process P_SYNC; + + P_INT_DRQ: process(RESETn, CLK) + begin + if RESETn = '0' then + INT_REG <= '1'; -- No interrupt. + DRQ_REG <= '1'; -- No data request. + elsif CLK = '1' and CLK' event then + if D0_REG = '0' and MC_DO = '1' and MC_PIO_DMAn = '1' then -- Positive MC_DO edge. + INT_REG <= '0'; -- Release an interrupt. + DRQ_REG <= '1'; + elsif D0_REG = '0' and MC_DO = '1' then + INT_REG <= '1'; + DRQ_REG <= '0'; -- Release a data request. + end if; + -- + if MC_CLR_CMD = '1' then -- Clear done. + INT_REG <= '1'; -- Restore INT_REG. + DRQ_REG <= '1'; -- Restore DRQ_REG. + end if; + -- + if (PREV_CSn = '0' and ACSI_CSn = '0') or (PREV_ACKn = '0' and ACSI_ACKn = '0') then + if ACSI_CSn = '0' then + INT_REG <= '1'; + end if; + -- + if ACSI_ACKn = '0' then + DRQ_REG <= '1'; + end if; + end if; + end if; + end process P_INT_DRQ; + + P_HOLD: process(RESETn, CLK) + begin + if RESETn = '0' then + HOLD <= '0'; + elsif CLK = '1' and CLK' event then + if (PREV_CSn = '0' and ACSI_CSn = '0') or (PREV_ACKn = '0' and ACSI_ACKn = '0') then + HOLD <= '1'; + elsif PREV_CSn = '1' and ACSI_CSn = '1' then -- If signal is high. + HOLD <= '0'; + elsif PREV_ACKn = '1' and ACSI_ACKn = '1' then -- If signal is high. + HOLD <= '0'; + elsif PREV_CSn = '0' and ACSI_CSn = '1' then -- Rising edge. + HOLD <= '1'; + elsif PREV_ACKn = '0' and ACSI_ACKn = '1' then -- Rising edge. + HOLD <= '1'; + elsif MC_CLR_CMD = '1' then -- Clear done. + HOLD <= '0'; + end if; + end if; + end process P_HOLD; + + P_DONE: process(RESETn, CLK) + begin + if RESETn = '0' then + DONE_REG <= '0'; + elsif CLK = '1' and CLK' event then + if (PREV_CSn = '0' and ACSI_CSn = '0') or (PREV_ACKn = '0' and ACSI_ACKn = '0') then + DONE_REG <= '1'; + elsif MC_CLR_CMD = '1' then -- Clear done. + DONE_REG <= '0'; + elsif D0_REG = '0' and MC_DO = '1' then -- Positive MC_DO edge. + DONE_REG <= '0'; + elsif D0_REG = '1' and MC_DO = '0' then -- Negative MC_DO edge. + DONE_REG <= '0'; + end if; + end if; + end process P_DONE; + + P_DO_REG: process(RESETn, CLK) + begin + if RESETn = '0' then + D0_REG <= '0'; + elsif CLK = '1' and CLK' event then + if D0_REG = '0' and MC_DO = '1' then -- Positive MC_DO edge. + D0_REG <= MC_DO; + elsif D0_REG = '1' and MC_DO = '0' then -- Negative MC_DO edge. + D0_REG <= MC_DO; + end if; + end if; + end process P_DO_REG; + + P_GOT_CMD: process(RESETn, CLK) + begin + if RESETn = '0' then + GOT_CMD_REG <= '0'; + elsif CLK = '1' and CLK' event then +-- ?? ACSI_CSn doppelt! +if PREV_CSn = '0' and ACSI_CSn = '0' and ACSI_CSn = '0' and ACSI_A1 = '0' then + GOT_CMD_REG <= '1'; -- If command was received. + elsif PREV_ACKn = '0' and ACSI_ACKn = '0' and ACSI_CSn = '0' and ACSI_A1 = '0' then + GOT_CMD_REG <= '1'; -- If command was received. + elsif MC_CLR_CMD = '1' then -- Clear done. + GOT_CMD_REG <= '0'; + end if; + end if; + end process P_GOT_CMD; +end architecture BEHAVIOR; \ No newline at end of file diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_SDC_IF/sd-card-interface_soc.vhd.bak b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_SDC_IF/sd-card-interface_soc.vhd.bak new file mode 100644 index 0000000..0200dea --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_SDC_IF/sd-card-interface_soc.vhd.bak @@ -0,0 +1,239 @@ +---------------------------------------------------------------------- +---- ---- +---- ATARI IP Core peripheral Add-On ---- +---- ---- +---- This file is part of the FPGA-ATARI project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- This hardware provides an interface to connect to a SD-Card. ---- +---- ---- +---- This interface is based on the project 'SatanDisk' of ---- +---- Miroslav Nohaj 'Jookie'. The code is an interpretation of ---- +---- the original code, written in VERILOG. It is provided for ---- +---- the use in a system on programmable chips (SOPC). ---- +---- ---- +---- Timing: Use a clock frequency of 16MHz for this component. ---- +---- Use the same clock frequency for the connected AVR ---- +---- microcontroller. ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2007 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +---- This hardware works with the original ATARI ---- +---- hard dik driver. ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K7A 2007/01/05 WF +-- Initial Release. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF_SD_CARD is + port ( + -- System: + RESETn : in bit; + CLK : in bit; -- 16MHz, see above. + + -- ACSI section: + ACSI_A1 : in bit; + ACSI_CSn : in bit; + ACSI_ACKn : in bit; + ACSI_INTn : out bit; + ACSI_DRQn : out bit; + ACSI_D_IN : in std_logic_vector(7 downto 0); + ACSI_D_OUT : out std_logic_vector(7 downto 0); + ACSI_D_EN : out bit; + + -- Microcontroller interface: + MC_DO : in bit; + MC_PIO_DMAn : in bit; + MC_RWn : in bit; + MC_CLR_CMD : in bit; + MC_DONE : out bit; + MC_GOT_CMD : out bit; + MC_D_IN : in std_logic_vector(7 downto 0); + MC_D_OUT : out std_logic_vector(7 downto 0); + MC_D_EN : out bit + ); +end WF_SD_CARD; + +architecture BEHAVIOR of WF_SD_CARD is +signal DATA_REG : std_logic_vector(7 downto 0); +signal D0_REG : bit; +signal INT_REG : bit; +signal DRQ_REG : bit; +signal DONE_REG : bit; +signal GOT_CMD_REG : bit; +signal HOLD : bit; +signal PREV_CSn : bit; +signal PREV_ACKn : bit; +begin + MC_D_OUT <= DATA_REG when MC_RWn = '0' and DONE_REG = '1' else (others => '0'); + MC_D_EN <= '1' when MC_RWn = '0' and DONE_REG = '1' else '0'; + ACSI_D_OUT <= DATA_REG when MC_RWn = '1' and (ACSI_CSn = '0' or ACSI_ACKn = '0' or HOLD = '1') else (others => '0'); +-- ???: +--ACSI_D_EN <= '1' when MC_RWn = '1' and (ACSI_CSn = '0' or ACSI_ACKn = '0' or HOLD = '1') else '0'; +ACSI_D_EN <= '0'; + ACSI_INTn <= INT_REG; + ACSI_DRQn <= DRQ_REG; + MC_DONE <= DONE_REG; + MC_GOT_CMD <= GOT_CMD_REG; + + P_DATA: process(RESETn, CLK) + begin + if RESETn = '0' then + DATA_REG <= (others => '0'); + elsif CLK = '1' and CLK' event then + if D0_REG = '0' and MC_DO = '1' and MC_RWn = '1' then + DATA_REG <= MC_D_IN; -- Read from AVR to ACSI. + end if; + -- + if PREV_CSn = '0' and ACSI_CSn = '0' and MC_RWn = '0' and DONE_REG = '0' then + DATA_REG <= ACSI_D_IN; -- Write from ACSI to AVR. + elsif PREV_ACKn = '0' and ACSI_ACKn = '0' and MC_RWn = '0' and DONE_REG = '0' then + DATA_REG <= ACSI_D_IN; -- Write from ACSI to AVR. + end if; + end if; + end process P_DATA; + + P_SYNC: process + begin + wait until CLK = '1' and CLK' event; + PREV_CSn <= ACSI_CSn; + PREV_ACKn <= ACSI_ACKn; + end process P_SYNC; + + P_INT_DRQ: process(RESETn, CLK) + begin + if RESETn = '0' then + INT_REG <= '1'; -- No interrupt. + DRQ_REG <= '1'; -- No data request. + elsif CLK = '1' and CLK' event then + if D0_REG = '0' and MC_DO = '1' and MC_PIO_DMAn = '1' then -- Positive MC_DO edge. + INT_REG <= '0'; -- Release an interrupt. + DRQ_REG <= '1'; + elsif D0_REG = '0' and MC_DO = '1' then + INT_REG <= '1'; + DRQ_REG <= '0'; -- Release a data request. + end if; + -- + if MC_CLR_CMD = '1' then -- Clear done. + INT_REG <= '1'; -- Restore INT_REG. + DRQ_REG <= '1'; -- Restore DRQ_REG. + end if; + -- + if (PREV_CSn = '0' and ACSI_CSn = '0') or (PREV_ACKn = '0' and ACSI_ACKn = '0') then + if ACSI_CSn = '0' then + INT_REG <= '1'; + end if; + -- + if ACSI_ACKn = '0' then + DRQ_REG <= '1'; + end if; + end if; + end if; + end process P_INT_DRQ; + + P_HOLD: process(RESETn, CLK) + begin + if RESETn = '0' then + HOLD <= '0'; + elsif CLK = '1' and CLK' event then + if (PREV_CSn = '0' and ACSI_CSn = '0') or (PREV_ACKn = '0' and ACSI_ACKn = '0') then + HOLD <= '1'; + elsif PREV_CSn = '1' and ACSI_CSn = '1' then -- If signal is high. + HOLD <= '0'; + elsif PREV_ACKn = '1' and ACSI_ACKn = '1' then -- If signal is high. + HOLD <= '0'; + elsif PREV_CSn = '0' and ACSI_CSn = '1' then -- Rising edge. + HOLD <= '1'; + elsif PREV_ACKn = '0' and ACSI_ACKn = '1' then -- Rising edge. + HOLD <= '1'; + elsif MC_CLR_CMD = '1' then -- Clear done. + HOLD <= '0'; + end if; + end if; + end process P_HOLD; + + P_DONE: process(RESETn, CLK) + begin + if RESETn = '0' then + DONE_REG <= '0'; + elsif CLK = '1' and CLK' event then + if (PREV_CSn = '0' and ACSI_CSn = '0') or (PREV_ACKn = '0' and ACSI_ACKn = '0') then + DONE_REG <= '1'; + elsif MC_CLR_CMD = '1' then -- Clear done. + DONE_REG <= '0'; + elsif D0_REG = '0' and MC_DO = '1' then -- Positive MC_DO edge. + DONE_REG <= '0'; + elsif D0_REG = '1' and MC_DO = '0' then -- Negative MC_DO edge. + DONE_REG <= '0'; + end if; + end if; + end process P_DONE; + + P_DO_REG: process(RESETn, CLK) + begin + if RESETn = '0' then + D0_REG <= '0'; + elsif CLK = '1' and CLK' event then + if D0_REG = '0' and MC_DO = '1' then -- Positive MC_DO edge. + D0_REG <= MC_DO; + elsif D0_REG = '1' and MC_DO = '0' then -- Negative MC_DO edge. + D0_REG <= MC_DO; + end if; + end if; + end process P_DO_REG; + + P_GOT_CMD: process(RESETn, CLK) + begin + if RESETn = '0' then + GOT_CMD_REG <= '0'; + elsif CLK = '1' and CLK' event then +-- ?? ACSI_CSn doppelt! +--if PREV_CSn = '0' and ACSI_CSn = '0' and ACSI_CSn = '0' and ACSI_A1 = '0' then + GOT_CMD_REG <= '1'; -- If command was received. + elsif PREV_ACKn = '0' and ACSI_ACKn = '0' and ACSI_CSn = '0' and ACSI_A1 = '0' then + GOT_CMD_REG <= '1'; -- If command was received. + elsif MC_CLR_CMD = '1' then -- Clear done. + GOT_CMD_REG <= '0'; + end if; + end if; + end process P_GOT_CMD; +end architecture BEHAVIOR; \ No newline at end of file diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_pkg.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_pkg.vhd new file mode 100644 index 0000000..9d048de --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_pkg.vhd @@ -0,0 +1,84 @@ +---------------------------------------------------------------------- +---- ---- +---- YM2149 compatible sound generator. ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- Model of the ST or STE's YM2149 sound generator. ---- +---- ---- +---- This is the package file containing the component ---- +---- declarations. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- + +library ieee; +use ieee.std_logic_1164.all; + +package WF2149IP_PKG is +type BUSCYCLES is (INACTIVE, R_READ, R_WRITE, ADDRESS); + +component WF2149IP_WAVE + port( + RESETn : in bit; + SYS_CLK : in bit; + + WAV_STRB : in bit; + + ADR : in bit_vector(3 downto 0); + DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); + DATA_EN : out bit; + + BUSCYCLE : in BUSCYCLES; + CTRL_REG : in bit_vector(5 downto 0); + + OUT_A : out bit; + OUT_B : out bit; + OUT_C : out bit + ); +end component; +end WF2149IP_PKG; \ No newline at end of file diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_top.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_top.vhd new file mode 100644 index 0000000..3f5024a --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_top.vhd @@ -0,0 +1,170 @@ +---------------------------------------------------------------------- +---- ---- +---- YM2149 compatible sound generator. ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- Model of the ST or STE's YM2149 sound generator. ---- +---- This IP core of the sound generator differs slightly from ---- +---- the original. Firstly it is a synchronous design without any ---- +---- latches (like assumed in the original chip). This required ---- +---- the introduction of a system adequate clock. In detail this ---- +---- SYS_CLK should on the one hand be fast enough to meet the ---- +---- timing requirements of the system's bus cycle and should one ---- +---- the other hand drive the PWM modules correctly. To meet both ---- +---- a SYS_CLK of 16MHz or above is recommended. ---- +---- Secondly, the original chip has an implemented DA converter. ---- +---- This feature is not possible in today's FPGAs. Therefore the ---- +---- converter is replaced by pulse width modulators. This solu- ---- +---- tion is very simple in comparison to other approaches like ---- +---- external DA converters with wave tables etc. The soltution ---- +---- with the pulse width modulators is probably not as accurate ---- +---- DAs with wavetables. For a detailed descrition of the hard- ---- +---- ware PWM filter look at the end of the wave file, where the ---- +---- pulse width modulators can be found. ---- +---- For a proper operation it is required, that the wave clock ---- +---- is lower than the system clock. A good choice is for example ---- +---- 2MHz for the wave clock and 16MHz for the system clock. ---- +---- ---- +---- Main module file. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8B 2008/12/24 WF +-- Rewritten this top level file as a wrapper for the top_soc file. +-- + +library ieee; +use ieee.std_logic_1164.all; +use work.wf2149ip_pkg.all; + +entity WF2149IP_TOP is + port( + + SYS_CLK : in bit; -- Read the inforation in the header! + RESETn : in bit; + + WAV_CLK : in bit; -- Read the inforation in the header! + SELn : in bit; + + BDIR : in bit; + BC2, BC1 : in bit; + + A9n, A8 : in bit; + DA : inout std_logic_vector(7 downto 0); + + IO_A : inout std_logic_vector(7 downto 0); + IO_B : inout std_logic_vector(7 downto 0); + + OUT_A : out bit; -- Analog (PWM) outputs. + OUT_B : out bit; + OUT_C : out bit + ); +end WF2149IP_TOP; + +architecture STRUCTURE of WF2149IP_TOP is +component WF2149IP_TOP_SOC + port( + SYS_CLK : in bit; + RESETn : in bit; + WAV_CLK : in bit; + SELn : in bit; + BDIR : in bit; + BC2, BC1 : in bit; + A9n, A8 : in bit; + DA_IN : in std_logic_vector(7 downto 0); + DA_OUT : out std_logic_vector(7 downto 0); + DA_EN : out bit; + IO_A_IN : in bit_vector(7 downto 0); + IO_A_OUT : out bit_vector(7 downto 0); + IO_A_EN : out bit; + IO_B_IN : in bit_vector(7 downto 0); + IO_B_OUT : out bit_vector(7 downto 0); + IO_B_EN : out bit; + OUT_A : out bit; + OUT_B : out bit; + OUT_C : out bit + ); +end component; +-- +signal DA_OUT : std_logic_vector(7 downto 0); +signal DA_EN : bit; +signal IO_A_IN : bit_vector(7 downto 0); +signal IO_A_OUT : bit_vector(7 downto 0); +signal IO_A_EN : bit; +signal IO_B_IN : bit_vector(7 downto 0); +signal IO_B_OUT : bit_vector(7 downto 0); +signal IO_B_EN : bit; +begin + IO_A_IN <= To_BitVector(IO_A); + IO_B_IN <= To_BitVector(IO_B); + + IO_A <= To_StdLogicVector(IO_A_OUT) when IO_A_EN = '1' else (others => 'Z'); + IO_B <= To_StdLogicVector(IO_B_OUT) when IO_B_EN = '1' else (others => 'Z'); + + DA <= DA_OUT when DA_EN = '1' else (others => 'Z'); + + I_SOUND: WF2149IP_TOP_SOC + port map(SYS_CLK => SYS_CLK, + RESETn => RESETn, + WAV_CLK => WAV_CLK, + SELn => SELn, + BDIR => BDIR, + BC2 => BC2, + BC1 => BC1, + A9n => A9n, + A8 => A8, + DA_IN => DA, + DA_OUT => DA_OUT, + DA_EN => DA_EN, + IO_A_IN => IO_A_IN, + IO_A_OUT => IO_A_OUT, + IO_A_EN => IO_A_EN, + IO_B_IN => IO_B_IN, + IO_B_OUT => IO_B_OUT, + IO_B_EN => IO_B_EN, + OUT_A => OUT_A, + OUT_B => OUT_B, + OUT_C => OUT_C + ); +end STRUCTURE; diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_top_soc.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_top_soc.vhd new file mode 100644 index 0000000..77ea5ef --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_top_soc.vhd @@ -0,0 +1,229 @@ +---------------------------------------------------------------------- +---- ---- +---- YM2149 compatible sound generator. ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- Model of the ST or STE's YM2149 sound generator. ---- +---- This IP core of the sound generator differs slightly from ---- +---- the original. Firstly it is a synchronous design without any ---- +---- latches (like assumed in the original chip). This required ---- +---- the introduction of a system adequate clock. In detail this ---- +---- SYS_CLK should on the one hand be fast enough to meet the ---- +---- timing requirements of the system's bus cycle and should one ---- +---- the other hand drive the PWM modules correctly. To meet both ---- +---- a SYS_CLK of 16MHz or above is recommended. ---- +---- Secondly, the original chip has an implemented DA converter. ---- +---- This feature is not possible in today's FPGAs. Therefore the ---- +---- converter is replaced by pulse width modulators. This solu- ---- +---- tion is very simple in comparison to other approaches like ---- +---- external DA converters with wave tables etc. The soltution ---- +---- with the pulse width modulators is probably not as accurate ---- +---- DAs with wavetables. For a detailed descrition of the hard- ---- +---- ware PWM filter look at the end of the wave file, where the ---- +---- pulse width modulators can be found. ---- +---- For a proper operation it is required, that the wave clock ---- +---- is lower than the system clock. A good choice is for example ---- +---- 2MHz for the wave clock and 16MHz for the system clock. ---- +---- ---- +---- Main module file. ---- +---- Top level file for use in systems on programmable chips. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Top level file provided for SOC (systems on programmable chips). +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- + +library ieee; +use ieee.std_logic_1164.all; +use work.wf2149ip_pkg.all; + +entity WF2149IP_TOP_SOC is + port( + + SYS_CLK : in bit; -- Read the inforation in the header! + RESETn : in bit; + + WAV_CLK : in bit; -- Read the inforation in the header! + SELn : in bit; + + BDIR : in bit; + BC2, BC1 : in bit; + + A9n, A8 : in bit; + DA_IN : in std_logic_vector(7 downto 0); + DA_OUT : out std_logic_vector(7 downto 0); + DA_EN : out bit; + + IO_A_IN : in bit_vector(7 downto 0); + IO_A_OUT : out bit_vector(7 downto 0); + IO_A_EN : out bit; + IO_B_IN : in bit_vector(7 downto 0); + IO_B_OUT : out bit_vector(7 downto 0); + IO_B_EN : out bit; + + OUT_A : out bit; -- Analog (PWM) outputs. + OUT_B : out bit; + OUT_C : out bit + ); +end WF2149IP_TOP_SOC; + +architecture STRUCTURE of WF2149IP_TOP_SOC is +signal BUSCYCLE : BUSCYCLES; +signal DATA_OUT_I : std_logic_vector(7 downto 0); +signal DATA_EN_I : bit; +signal WAV_STRB : bit; +signal ADR_I : bit_vector(3 downto 0); +signal CTRL_REG : bit_vector(7 downto 0); +signal PORT_A : bit_vector(7 downto 0); +signal PORT_B : bit_vector(7 downto 0); +begin + P_WAVSTRB: process(RESETn, SYS_CLK) + variable LOCK : boolean; + variable TMP : bit; + begin + if RESETn = '0' then + LOCK := false; + TMP := '0'; + elsif SYS_CLK = '1' and SYS_CLK' event then + if WAV_CLK = '1' and LOCK = false then + LOCK := true; + TMP := not TMP; -- Divider by 2. + case SELn is + when '1' => WAV_STRB <= '1'; + when others => WAV_STRB <= TMP; + end case; + elsif WAV_CLK = '0' then + LOCK := false; + WAV_STRB <= '0'; + else + WAV_STRB <= '0'; + end if; + end if; + end process P_WAVSTRB; + + with BDIR & BC2 & BC1 select + BUSCYCLE <= INACTIVE when "000" | "010" | "101", + ADDRESS when "001" | "100" | "111", + R_READ when "011", + R_WRITE when "110"; + + ADDRESSLATCH: process(RESETn, SYS_CLK) + -- This process is responsible to store the desired register + -- address. The default (after reset) is channel A fine tone + -- adjustment. + begin + if RESETn = '0' then + ADR_I <= (others => '0'); + elsif SYS_CLK = '1' and SYS_CLK' event then + if BUSCYCLE = ADDRESS and A9n = '0' and A8 = '1' and DA_IN(7 downto 4) = x"0" then + ADR_I <= To_BitVector(DA_IN(3 downto 0)); + end if; + end if; + end process ADDRESSLATCH; + + P_CTRL_REG: process(RESETn, SYS_CLK) + -- THIS is the Control register for the mixer and for the I/O ports. + begin + if RESETn = '0' then + CTRL_REG <= x"00"; + elsif SYS_CLK = '1' and SYS_CLK' event then + if BUSCYCLE = R_WRITE and ADR_I = x"7" then + CTRL_REG <= To_BitVector(DA_IN); + end if; + end if; + end process P_CTRL_REG; + + DIG_PORTS: process(RESETn, SYS_CLK) + begin + if RESETn = '0' then + PORT_A <= x"00"; + PORT_B <= x"00"; + elsif SYS_CLK = '1' and SYS_CLK' event then + if BUSCYCLE = R_WRITE and ADR_I = x"E" then + PORT_A <= To_BitVector(DA_IN); + elsif BUSCYCLE = R_WRITE and ADR_I = x"F" then + PORT_B <= To_BitVector(DA_IN); + end if; + end if; + end process DIG_PORTS; + -- Set port direction to input or to output: + IO_A_EN <= '1' when CTRL_REG(6) = '1' else '0'; + IO_B_EN <= '1' when CTRL_REG(7) = '1' else '0'; + IO_A_OUT <= PORT_A; + IO_B_OUT <= PORT_B; + + I_PSG_WAVE: WF2149IP_WAVE + port map( + RESETn => RESETn, + SYS_CLK => SYS_CLK, + + WAV_STRB => WAV_STRB, + + ADR => ADR_I, + DATA_IN => DA_IN, + DATA_OUT => DATA_OUT_I, + DATA_EN => DATA_EN_I, + + BUSCYCLE => BUSCYCLE, + CTRL_REG => CTRL_REG(5 downto 0), + + OUT_A => OUT_A, + OUT_B => OUT_B, + OUT_C => OUT_C + ); + + -- Read the ports and registers: + DA_EN <= '1' when DATA_EN_I = '1' else + '1' when BUSCYCLE = R_READ and ADR_I = x"7" else + '1' when BUSCYCLE = R_READ and ADR_I = x"E" else + '1' when BUSCYCLE = R_READ and ADR_I = x"F" else '0'; + + DA_OUT <= DATA_OUT_I when DATA_EN_I = '1' else -- WAV stuff. + To_StdLogicVector(IO_A_IN) when BUSCYCLE = R_READ and ADR_I = x"E" else + To_StdLogicVector(IO_B_IN) when BUSCYCLE = R_READ and ADR_I = x"F" else + To_StdLogicVector(CTRL_REG) when BUSCYCLE = R_READ and ADR_I = x"7" else (others => '0'); + +end STRUCTURE; diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_wave.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_wave.vhd new file mode 100644 index 0000000..d829f9b --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_wave.vhd @@ -0,0 +1,533 @@ +---------------------------------------------------------------------- +---- ---- +---- YM2149 compatible sound generator. ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- Model of the ST or STE's YM2149 sound generator. ---- +---- ---- +---- Waveform generator. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- Revision 2K9A 2009/06/20 WF +-- NOISE_OUT has now synchronous reset to meet preset requirement. +-- Fixed a bug in the envelope generator. Thanks to Lyndon Amsdon finding it. +-- Correction of the schematic given in the end of this file. + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; +use work.wf2149ip_pkg.all; + +entity WF2149IP_WAVE is + port( + RESETn : in bit; + SYS_CLK : in bit; + + WAV_STRB : in bit; + + ADR : in bit_vector(3 downto 0); + DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); + DATA_EN : out bit; + + BUSCYCLE : in BUSCYCLES; + CTRL_REG : in bit_vector(5 downto 0); + + OUT_A : out bit; + OUT_B : out bit; + OUT_C : out bit + ); +end entity WF2149IP_WAVE; + +architecture BEHAVIOR of WF2149IP_WAVE is +signal FREQUENCY_A : std_logic_vector(11 downto 0); +signal FREQUENCY_B : std_logic_vector(11 downto 0); +signal FREQUENCY_C : std_logic_vector(11 downto 0); +signal NOISE_FREQ : std_logic_vector(4 downto 0); +signal LEVEL_A : std_logic_vector(4 downto 0); +signal LEVEL_B : std_logic_vector(4 downto 0); +signal LEVEL_C : std_logic_vector(4 downto 0); +signal ENV_FREQ : std_logic_vector(15 downto 0); +signal ENV_SHAPE : std_logic_vector(3 downto 0); +signal ENV_RESET : boolean; +signal ENV_STRB : bit; +signal OSC_A_OUT : bit; +signal OSC_B_OUT : bit; +signal OSC_C_OUT : bit; +signal NOISE_OUT : bit; +signal AUDIO_A : bit; +signal AUDIO_B : bit; +signal AUDIO_C : bit; +signal VOL_ENV : std_logic_vector(4 downto 0); +signal AMPLITUDE_A : std_logic_vector(4 downto 0); +signal AMPLITUDE_B : std_logic_vector(4 downto 0); +signal AMPLITUDE_C : std_logic_vector(4 downto 0); +signal VOLUME_A : std_logic_vector(7 downto 0); +signal VOLUME_B : std_logic_vector(7 downto 0); +signal VOLUME_C : std_logic_vector(7 downto 0); +signal PWM_RAMP : std_logic_vector(7 downto 0); +begin + REGISTERS: process(RESETn, SYS_CLK) + -- This process is responsible for initialisation + -- and write access to the configuration registers. + begin + if RESETn = '0' then + FREQUENCY_A <= x"000"; + FREQUENCY_B <= x"000"; + FREQUENCY_C <= x"000"; + NOISE_FREQ <= "00000"; + LEVEL_A <= "00000"; + LEVEL_B <= "00000"; + LEVEL_C <= "00000"; + ENV_FREQ <= (others => '0'); + ENV_SHAPE <= "0000"; + elsif SYS_CLK = '1' and SYS_CLK' event then + ENV_RESET <= false; -- Initialize signal. + if BUSCYCLE = R_WRITE then + case ADR is + when x"0" => FREQUENCY_A(7 downto 0) <= DATA_IN; + when x"1" => FREQUENCY_A(11 downto 8) <= DATA_IN(3 downto 0); + when x"2" => FREQUENCY_B(7 downto 0) <= DATA_IN; + when x"3" => FREQUENCY_B(11 downto 8) <= DATA_IN(3 downto 0); + when x"4" => FREQUENCY_C(7 downto 0) <= DATA_IN; + when x"5" => FREQUENCY_C(11 downto 8) <= DATA_IN(3 downto 0); + when x"6" => NOISE_FREQ <= DATA_IN(4 downto 0); + when x"8" => LEVEL_A <= DATA_IN(4 downto 0); + when x"9" => LEVEL_B <= DATA_IN(4 downto 0); + when x"A" => LEVEL_C <= DATA_IN(4 downto 0); + when x"B" => ENV_FREQ(7 downto 0) <= DATA_IN; + when x"C" => ENV_FREQ(15 downto 8) <= DATA_IN; + ENV_RESET <= true; -- Initialize the envelope generator. + when x"D" => ENV_SHAPE <= DATA_IN(3 downto 0); + when others => null; + end case; + end if; + end if; + end process REGISTERS; + + -- Read back the configuration registers: + DATA_OUT <= FREQUENCY_A(7 downto 0) when BUSCYCLE = R_READ and ADR = x"0" else + "0000" & FREQUENCY_A(11 downto 8) when BUSCYCLE = R_READ and ADR = x"1" else + FREQUENCY_B(7 downto 0) when BUSCYCLE = R_READ and ADR = x"2" else + "0000" & FREQUENCY_B(11 downto 8) when BUSCYCLE = R_READ and ADR = x"3" else + FREQUENCY_C(7 downto 0) when BUSCYCLE = R_READ and ADR = x"4" else + "0000" & FREQUENCY_C(11 downto 8) when BUSCYCLE = R_READ and ADR = x"5" else + "000" & NOISE_FREQ when BUSCYCLE = R_READ and ADR = x"6" else + "000" & LEVEL_A when BUSCYCLE = R_READ and ADR = x"8" else + "000" & LEVEL_B when BUSCYCLE = R_READ and ADR = x"9" else + "000" & LEVEL_C when BUSCYCLE = R_READ and ADR = x"A" else + ENV_FREQ(7 downto 0) when BUSCYCLE = R_READ and ADR = x"B" else + ENV_FREQ(15 downto 8) when BUSCYCLE = R_READ and ADR = x"C" else + x"0" & ENV_SHAPE when BUSCYCLE = R_READ and ADR = x"D" else (others => '0'); + DATA_EN <= '1' when BUSCYCLE = R_READ and ADR >= x"0" and ADR <= x"6" else + '1' when BUSCYCLE = R_READ and ADR >= x"8" and ADR <= x"D" else '0'; + + MUSICGENERATOR: process(RESETn, SYS_CLK) + variable CLK_DIV : std_logic_vector(2 downto 0); + variable CNT_CH_A : std_logic_vector(11 downto 0); + variable CNT_CH_B : std_logic_vector(11 downto 0); + variable CNT_CH_C : std_logic_vector(11 downto 0); + begin + if RESETn = '0' then + CLK_DIV := "000"; + CNT_CH_A := (others => '0'); + CNT_CH_B := (others => '0'); + CNT_CH_C := (others => '0'); + OSC_A_OUT <= '0'; + OSC_B_OUT <= '0'; + OSC_C_OUT <= '0'; + elsif SYS_CLK = '1' and SYS_CLK' event then + if WAV_STRB = '1' then + -- Divider by 8 for the oscillators brings in connection + -- with the toggle flip flops CH_x_OUT the required divider + -- ratio of 16. + CLK_DIV := CLK_DIV + '1'; + + if CLK_DIV = "000" then + if FREQUENCY_A = x"000" then + CNT_CH_A := (others => '0'); + OSC_A_OUT <= '0'; + elsif CNT_CH_A = x"000" then + CNT_CH_A := FREQUENCY_A - '1' ; + OSC_A_OUT <= not OSC_A_OUT; + else + CNT_CH_A := CNT_CH_A - '1'; + end if; + + if FREQUENCY_B = x"000" then + CNT_CH_B := (others => '0'); + OSC_B_OUT <= '0'; + elsif CNT_CH_B = x"000" then + CNT_CH_B := FREQUENCY_B - '1' ; + OSC_B_OUT <= not OSC_B_OUT; + else + CNT_CH_B := CNT_CH_B - '1'; + end if; + + if FREQUENCY_C = x"000" then + CNT_CH_C := (others => '0'); + OSC_C_OUT <= '0'; + elsif CNT_CH_C = x"000" then + CNT_CH_C := FREQUENCY_C - '1' ; + OSC_C_OUT <= not OSC_C_OUT; + else + CNT_CH_C := CNT_CH_C - '1'; + end if; + end if; + end if; + end if; + end process MUSICGENERATOR; + + NOISEGENERATOR: process + -- The noise shift polynomial is taken from a template of Kazuhiro TSUJIKAWA's + -- (ESE Artists' factory) approach for a 2149 equivalent. But the implementation + -- is done in another way. + -- LFSR (linear feedback shift register polynomial: f(x) = x^17 + x^14 + 1. + variable CLK_DIV : std_logic_vector(3 downto 0); + variable CNT_NOISE : std_logic_vector(4 downto 0); + variable N_SHFT : std_logic_vector(16 downto 0); + begin + wait until SYS_CLK = '1' and SYS_CLK' event; + if RESETn = '0' then + CLK_DIV := x"0"; + CNT_NOISE := (others => '1'); -- Preset the polynomial shift register. + NOISE_OUT <= '1'; + elsif WAV_STRB = '1' then + -- Divider by 16 for the noise generator. + CLK_DIV := CLK_DIV + '1'; + if CLK_DIV = x"0" then + -- Noise frequency counter. + if NOISE_FREQ = "00000" then + CNT_NOISE := (others => '0'); + elsif CNT_NOISE = "00000" then + CNT_NOISE := NOISE_FREQ - '1' ; + N_SHFT := N_SHFT(15 downto 14) & not(N_SHFT(16) xor N_SHFT(13)) & + N_SHFT(12 downto 0) & not N_SHFT(16); + else + CNT_NOISE := CNT_NOISE - '1'; + end if; + end if; + end if; + NOISE_OUT <= To_Bit(N_SHFT(16)); + end process NOISEGENERATOR; + + ENVELOPE_PERIOD: process(RESETn, SYS_CLK) + -- The envelope period is controlled by the Envelope Frequency and the divider ratio which is + -- 256/32 = 8. For further information see the original data sheet. + variable ENV_CLK : std_logic_vector(18 downto 0); + variable LOCK : boolean; + begin + if RESETn = '0' then + ENV_STRB <= '0'; + ENV_CLK := (others => '0'); + LOCK := false; + elsif SYS_CLK = '1' and SYS_CLK' event then + if WAV_STRB = '1' and LOCK = false then + LOCK := true; + if ENV_FREQ = x"0000" then + ENV_STRB <= '0'; + elsif ENV_CLK = x"0000" & "000" then + ENV_CLK := (ENV_FREQ & "111") - '1' ; + ENV_STRB <= '1'; + else + ENV_CLK := ENV_CLK - '1'; + ENV_STRB <= '0'; + end if; + elsif WAV_STRB = '0' then + LOCK := false; + ENV_STRB <= '0'; + else + ENV_STRB <= '0'; + end if; + end if; + end process ENVELOPE_PERIOD; + + ENVELOPE: process(RESETn, SYS_CLK) + -- Envelope shapes: + -- case ENV_SHAPE: + -- + -- 0 0 x x \___ + -- + -- 0 1 x x /|___ + -- + -- 1 0 0 0 _|\|\|\|\| + -- + -- 1 0 0 1 \___ + -- + -- 1 0 1 0 \/\/ + -- ___ + -- 1 0 1 1 \| + -- + -- 1 1 0 0 /|/|/|/| + -- ___ + -- 1 1 0 1 / + -- + -- 1 1 1 0 /\/\ + -- + -- 1 1 1 1 /|___ + -- + variable ENV_STOP : boolean; + variable ENV_UP_DNn : bit; + begin + if RESETn = '0' then + VOL_ENV <= (others => '0'); + ENV_UP_DNn := '0'; + ENV_STOP := false; + elsif SYS_CLK = '1' and SYS_CLK' event then + if ENV_RESET = true then + ENV_STOP := false; + case ENV_SHAPE is + when "1011" | "1010" | "1001" | "1000" | "0011" | "0010" | "0001" | "0000" => + VOL_ENV <= "11111"; -- Start on top. + ENV_UP_DNn := '0'; + when others => + VOL_ENV <= "00000"; -- Start at bottom. + ENV_UP_DNn := '1'; + end case; + elsif ENV_STRB = '1' then + case ENV_SHAPE is + when "1001" | "0011" | "0010" | "0001" | "0000" => + if VOL_ENV > "00000" then + VOL_ENV <= VOL_ENV - '1'; + end if; + when "1111" | "0111" | "0110" | "0101" | "0100" => + if VOL_ENV < "11111" and ENV_STOP = false then + VOL_ENV <= VOL_ENV + '1'; + else + VOL_ENV <= "00000"; + ENV_STOP := true; + end if; + when "1000" => + VOL_ENV <= VOL_ENV - '1'; + when "1110" | "1010" => + if ENV_UP_DNn = '0' then + VOL_ENV <= VOL_ENV - '1'; + else + VOL_ENV <= VOL_ENV + '1'; + end if; + -- + if VOL_ENV = "00001" then + ENV_UP_DNn := '1'; + elsif VOL_ENV = "11110" then + ENV_UP_DNn := '0'; + end if; + when "1011" => + if VOL_ENV > "00000" and ENV_STOP = false then + VOL_ENV <= VOL_ENV - '1'; + else + VOL_ENV <= "11111"; + ENV_STOP := true; + end if; + when "1100" => + VOL_ENV <= VOL_ENV + '1'; + when "1101" => + if VOL_ENV < "11111" then + VOL_ENV <= VOL_ENV + '1'; + end if; + when others => null; -- Covers U, X, Z, W, H, L, -. + end case; + end if; + end if; + end process ENVELOPE; + + --MIXER: + -- The mixer controls are dependant on the mixer settings and the output of the + -- audio data for all three channels. The noise generator and the square wave + -- generators A, B and C are mixed together by a simple boolean OR. + AUDIO_A <= (OSC_A_OUT and not CTRL_REG(0)) or (NOISE_OUT and not CTRL_REG(3)); + AUDIO_B <= (OSC_B_OUT and not CTRL_REG(1)) or (NOISE_OUT and not CTRL_REG(4)); + AUDIO_C <= (OSC_C_OUT and not CTRL_REG(2)) or (NOISE_OUT and not CTRL_REG(5)); + + --LEVEL (e.g. volume control): + -- The linear amplitude for the DA converters of channel A, B or C are fixed + -- (LEVEL(3 downto 0)) or delivered by the envelope generator. + -- The following behavior is taken from the 2149 IP core of Mike J (www.fpgaarcade.com): + -- "make sure level 31 (env) = level 15 (tone)" + -- Thus there is a resulting & '1' modeling if LEVEL amplitudes are selected. + AMPLITUDE_A <= LEVEL_A(3 downto 0) & '1' when LEVEL_A(4) = '0' and AUDIO_A = '1' else + VOL_ENV when LEVEL_A(4) = '1' and AUDIO_A = '1' else "00000"; + AMPLITUDE_B <= LEVEL_B(3 downto 0) & '1' when LEVEL_B(4) = '0' and AUDIO_B = '1' else + VOL_ENV when LEVEL_B(4) = '1' and AUDIO_B = '1' else "00000"; + AMPLITUDE_C <= LEVEL_C(3 downto 0) & '1' when LEVEL_C(4) = '0' and AUDIO_C = '1' else + VOL_ENV when LEVEL_C(4) = '1' and AUDIO_C = '1' else "00000"; + + -- The values for the logarithmic DA converter volume controls are taken from the linear + -- mixer of Mike J's 2149 IP core (www.fpgaarcade.com). + with AMPLITUDE_A select + VOLUME_A <= x"FF" when "11111", + x"D9" when "11110", + x"BA" when "11101", + x"9F" when "11100", + x"88" when "11011", + x"74" when "11010", + x"63" when "11001", + x"54" when "11000", + x"48" when "10111", + x"3D" when "10110", + x"34" when "10101", + x"2C" when "10100", + x"25" when "10011", + x"1F" when "10010", + x"1A" when "10001", + x"16" when "10000", + x"13" when "01111", + x"10" when "01110", + x"0D" when "01101", + x"0B" when "01100", + x"09" when "01011", + x"08" when "01010", + x"07" when "01001", + x"06" when "01000", + x"05" when "00111", + x"04" when "00110", + x"03" when "00101", + x"03" when "00100", + x"02" when "00011", + x"02" when "00010", + x"01" when "00001", + x"00" when others; -- Also covers U, X, Z, W, H, L, -. + + with AMPLITUDE_B select + VOLUME_B <= x"FF" when "11111", + x"D9" when "11110", + x"BA" when "11101", + x"9F" when "11100", + x"88" when "11011", + x"74" when "11010", + x"63" when "11001", + x"54" when "11000", + x"48" when "10111", + x"3D" when "10110", + x"34" when "10101", + x"2C" when "10100", + x"25" when "10011", + x"1F" when "10010", + x"1A" when "10001", + x"16" when "10000", + x"13" when "01111", + x"10" when "01110", + x"0D" when "01101", + x"0B" when "01100", + x"09" when "01011", + x"08" when "01010", + x"07" when "01001", + x"06" when "01000", + x"05" when "00111", + x"04" when "00110", + x"03" when "00101", + x"03" when "00100", + x"02" when "00011", + x"02" when "00010", + x"01" when "00001", + x"00" when others; -- Also covers U, X, Z, W, H, L, -. + + with AMPLITUDE_C select + VOLUME_C <= x"FF" when "11111", + x"D9" when "11110", + x"BA" when "11101", + x"9F" when "11100", + x"88" when "11011", + x"74" when "11010", + x"63" when "11001", + x"54" when "11000", + x"48" when "10111", + x"3D" when "10110", + x"34" when "10101", + x"2C" when "10100", + x"25" when "10011", + x"1F" when "10010", + x"1A" when "10001", + x"16" when "10000", + x"13" when "01111", + x"10" when "01110", + x"0D" when "01101", + x"0B" when "01100", + x"09" when "01011", + x"08" when "01010", + x"07" when "01001", + x"06" when "01000", + x"05" when "00111", + x"04" when "00110", + x"03" when "00101", + x"03" when "00100", + x"02" when "00011", + x"02" when "00010", + x"01" when "00001", + x"00" when others; -- Also covers U, X, Z, W, H, L, -. + + DA_CONVERSION: process + -- The DA conversion for the three analog outputs is originally performed by a built in DA converter. + -- For this is not possible in current FPGA designs, the converter is replaced by three PWM units + -- operating at a frequency which is 100 times higher than the highest noise or music frequency which + -- is 2MHz/16 = 125kHz. So the PWM frequency requires about 12.5MHz or more. The design is done for + -- a PWM frequency of 16MHz). + begin + wait until SYS_CLK = '1' and SYS_CLK' event; + PWM_RAMP <= PWM_RAMP + '1'; + end process DA_CONVERSION; + OUT_A <= '0' when VOLUME_A = x"00" else '1' when PWM_RAMP < VOLUME_A else '0'; + OUT_B <= '0' when VOLUME_B = x"00" else '1' when PWM_RAMP < VOLUME_B else '0'; + OUT_C <= '0' when VOLUME_C = x"00" else '1' when PWM_RAMP < VOLUME_C else '0'; + -- + -- To obtain proper analog output it is necessary to install analog RC filters to the pulse width + -- outputs. An example is given for the direct wiring of the three analog outputs and for a system + -- clock frequency of 16MHz. The output circuitry looks in this case as follows: + -- + -- OUT_A ---------|1kOhm|-----------| |\ e.g. LM741 + -- |----------------------|+\ || + -- OUT_B ---------|1kOhm|-----------| | OP------||--- Analog Signal + -- | |-----|-/ | || + -- OUT_C ---------|1kOhm|-----------| | |/ | 4u7 + -- | |__________| + -- | + -- --- 10nF. + -- --- + -- | + -- | + -- --- + -- WF. +end architecture BEHAVIOR; diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_ctrl_status.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_ctrl_status.vhd new file mode 100644 index 0000000..e60cc43 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_ctrl_status.vhd @@ -0,0 +1,244 @@ +---------------------------------------------------------------------- +---- ---- +---- 6850 compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- UART 6850 compatible IP core ---- +---- ---- +---- Control unit and status logic. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- Revision 2K9A 2009/06/20 WF +-- CTRL_REG has now synchronous reset to meet preset requirements. +-- Process P_DCD has now synchronous reset to meet preset requirements. +-- IRQ_In has now synchronous reset to meet preset requirement. +-- Revision 2K9B 2009/12/24 WF +-- Fixed the interrupt logic. +-- Introduced a minor RTSn correction. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF6850IP_CTRL_STATUS is + port ( + CLK : in bit; + RESETn : in bit; + + CS : in bit_vector(2 downto 0); -- Active if "011". + E : in bit; + RWn : in bit; + RS : in bit; + + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_EN : out bit; + + -- Status register stuff: + RDRF : in bit; -- Receive data register full. + TDRE : in bit; -- Transmit data register empty. + DCDn : in bit; -- Data carrier detect. + CTSn : in bit; -- Clear to send. + FE : in bit; -- Framing error. + OVR : in bit; -- Overrun error. + PE : in bit; -- Parity error. + + -- Control register stuff: + MCLR : buffer bit; -- Master clear (high active). + RTSn : out bit; -- Request to send. + CDS : out bit_vector(1 downto 0); -- Clock control. + WS : out bit_vector(2 downto 0); -- Word select. + TC : out bit_vector(1 downto 0); -- Transmit control. + IRQn : out bit -- Interrupt request. + ); +end entity WF6850IP_CTRL_STATUS; + +architecture BEHAVIOR of WF6850IP_CTRL_STATUS is +signal CTRL_REG : bit_vector(7 downto 0); +signal STATUS_REG : bit_vector(7 downto 0); +signal RIE : bit; +signal IRQ_I : bit; +signal CTS_In : bit; +signal DCD_In : bit; +signal DCD_FLAGn : bit; +begin + P_SAMPLE: process + begin + wait until CLK = '0' and CLK' event; + CTS_In <= CTSn; -- Sample CTSn on the negative clock edge. + DCD_In <= DCDn; -- Sample DCDn on the negative clock edge. + end process P_SAMPLE; + + STATUS_REG(7) <= IRQ_I; + STATUS_REG(6) <= PE; + STATUS_REG(5) <= OVR; + STATUS_REG(4) <= FE; + STATUS_REG(3) <= CTS_In; -- Reflexion of the input pin. + STATUS_REG(2) <= DCD_FLAGn; + STATUS_REG(1) <= TDRE and not CTS_In; -- No TDRE for CTSn = '1'. + STATUS_REG(0) <= RDRF and not DCD_In; -- DCDn = '1' indicates empty. + + DATA_OUT <= STATUS_REG when CS = "011" and RWn = '1' and RS = '0' and E = '1' else (others => '0'); + DATA_EN <= '1' when CS = "011" and RWn = '1' and RS = '0' and E = '1' else '0'; + + MCLR <= '1' when CTRL_REG(1 downto 0) = "11" else '0'; + RTSn <= '0' when CTRL_REG(6 downto 5) /= "10" else '1'; + + CDS <= CTRL_REG(1 downto 0); + WS <= CTRL_REG(4 downto 2); + TC <= CTRL_REG(6 downto 5); + RIE <= CTRL_REG(7); + + P_IRQ: process + variable DCD_OVR_LOCK : boolean; + variable DCD_LOCK : boolean; + variable DCD_TRANS : boolean; + begin + wait until CLK = '1' and CLK' event; + if RESETn = '0' then + DCD_OVR_LOCK := false; + IRQn <= '1'; + IRQ_I <= '0'; + elsif CS = "011" and RWn = '1' and RS = '0' and E = '1' then + DCD_OVR_LOCK := false; -- Enable reset by reading the status. + end if; + + -- Clear interrupts when disabled. + if CTRL_REG(7) = '0' then + IRQn <= '1'; + IRQ_I <= '0'; + elsif CTRL_REG(6 downto 5) /= "01" then + IRQn <= '1'; + IRQ_I <= '0'; + end if; + + -- Transmitter interrupt: + if TDRE = '1' and CTRL_REG(6 downto 5) = "01" and CTS_In = '0' then + IRQn <= '0'; + IRQ_I <= '1'; + elsif CS = "011" and RWn = '0' and RS = '1' and E = '1' then + IRQn <= '1'; -- Clear by writing to the transmit data register. + end if; + + -- Receiver interrupts: + if RDRF = '1' and RIE = '1' and DCD_In = '0' then + IRQn <= '0'; + IRQ_I <= '1'; + elsif CS = "011" and RWn = '1' and RS = '1' and E = '1' then + IRQn <= '1'; -- Clear by reading the receive data register. + end if; + + if OVR = '1' and RIE = '1' then + IRQn <= '0'; + IRQ_I <= '1'; + DCD_OVR_LOCK := true; + elsif CS = "011" and RWn = '1' and RS = '1' and E = '1' and DCD_OVR_LOCK = false then + IRQn <= '1'; -- Clear by reading the receive data register after the status. + end if; + + if DCD_In = '1' and RIE = '1' and DCD_TRANS = false then + IRQn <= '0'; + IRQ_I <= '1'; + -- DCD_TRANS is used to detect a low to high transition of DCDn. + DCD_TRANS := true; + DCD_OVR_LOCK := true; + elsif CS = "011" and RWn = '1' and RS = '1' and E = '1' and DCD_OVR_LOCK = false then + IRQn <= '1'; -- Clear by reading the receive data register after the status. + elsif DCD_In = '0' then + DCD_TRANS := false; + end if; + + -- The reset of the IRQ status flag: + -- Clear by writing to the transmit data register. + -- Clear by reading the receive data register. + if CS = "011" and RS = '1' and E = '1' then + IRQ_I <= '0'; + end if; + end process P_IRQ; + + CONTROL: process + begin + wait until CLK = '1' and CLK' event; + if RESETn = '0' then + CTRL_REG <= "01000000"; + elsif CS = "011" and RWn = '0' and RS = '0' and E = '1' then + CTRL_REG <= DATA_IN; + end if; + end process CONTROL; + + P_DCD: process + -- This process is some kind of tricky. Refer to the MC6850 data + -- sheet for more information. + variable READ_LOCK : boolean; + variable DCD_RELEASE : boolean; + begin + wait until CLK = '1' and CLK' event; + if RESETn = '0' then + DCD_FLAGn <= '0'; -- This interrupt source must initialise low. + READ_LOCK := true; + DCD_RELEASE := false; + elsif MCLR = '1' then + DCD_FLAGn <= DCD_In; + READ_LOCK := true; + elsif DCD_In = '1' then + DCD_FLAGn <= '1'; + elsif CS = "011" and RWn = '1' and RS = '0' and E = '1' then + READ_LOCK := false; -- Un-READ_LOCK if receiver data register is read. + elsif CS = "011" and RWn = '1' and RS = '1' and E = '1' and READ_LOCK = false then + -- Clear if receiver status register read access. + -- After data register has ben read and READ_LOCK again. + DCD_RELEASE := true; + READ_LOCK := true; + DCD_FLAGn <= DCD_In; + elsif DCD_In = '0' and DCD_RELEASE = true then + DCD_FLAGn <= '0'; + DCD_RELEASE := false; + end if; + end process P_DCD; +end architecture BEHAVIOR; + diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_ctrl_status.vhd.bak b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_ctrl_status.vhd.bak new file mode 100644 index 0000000..a0ea9e4 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_ctrl_status.vhd.bak @@ -0,0 +1,244 @@ +---------------------------------------------------------------------- +---- ---- +---- 6850 compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- UART 6850 compatible IP core ---- +---- ---- +---- Control unit and status logic. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- Revision 2K9A 2009/06/20 WF +-- CTRL_REG has now synchronous reset to meet preset requirements. +-- Process P_DCD has now synchronous reset to meet preset requirements. +-- IRQ_In has now synchronous reset to meet preset requirement. +-- Revision 2K9B 2009/12/24 WF +-- Fixed the interrupt logic. +-- Introduced a minor RTSn correction. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF6850IP_CTRL_STATUS is + port ( + CLK : in bit; + RESETn : in bit; + + CS : in bit_vector(2 downto 0); -- Active if "011". + E : in bit; + RWn : in bit; + RS : in bit; + + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_EN : out bit; + + -- Status register stuff: + RDRF : in bit; -- Receive data register full. + TDRE : in bit; -- Transmit data register empty. + DCDn : in bit; -- Data carrier detect. + CTSn : in bit; -- Clear to send. + FE : in bit; -- Framing error. + OVR : in bit; -- Overrun error. + PE : in bit; -- Parity error. + + -- Control register stuff: + MCLR : buffer bit; -- Master clear (high active). + RTSn : out bit; -- Request to send. + CDS : out bit_vector(1 downto 0); -- Clock control. + WS : out bit_vector(2 downto 0); -- Word select. + TC : out bit_vector(1 downto 0); -- Transmit control. + IRQn : out bit -- Interrupt request. + ); +end entity WF6850IP_CTRL_STATUS; + +architecture BEHAVIOR of WF6850IP_CTRL_STATUS is +signal CTRL_REG : bit_vector(7 downto 0); +signal STATUS_REG : bit_vector(7 downto 0); +signal RIE : bit; +signal IRQ_I : bit; +signal CTS_In : bit; +signal DCD_In : bit; +signal DCD_FLAGn : bit; +begin + P_SAMPLE: process + begin + wait until CLK = '0' and CLK' event; + CTS_In <= CTSn; -- Sample CTSn on the negative clock edge. + DCD_In <= DCDn; -- Sample DCDn on the negative clock edge. + end process P_SAMPLE; + + STATUS_REG(7) <= IRQ_I; + STATUS_REG(6) <= PE; + STATUS_REG(5) <= OVR; + STATUS_REG(4) <= FE; + STATUS_REG(3) <= CTS_In; -- Reflexion of the input pin. + STATUS_REG(2) <= DCD_FLAGn; + STATUS_REG(1) <= TDRE and not CTS_In; -- No TDRE for CTSn = '1'. + STATUS_REG(0) <= RDRF and not DCD_In; -- DCDn = '1' indicates empty. + + DATA_OUT <= STATUS_REG when CS = "011" and RWn = '1' and RS = '0' and E = '1' else (others => '0'); + DATA_EN <= '1' when CS = "011" and RWn = '1' and RS = '0' and E = '1' else '0'; + + MCLR <= '1' when CTRL_REG(1 downto 0) = "11" else '0'; + RTSn <= '0' when CTRL_REG(6 downto 5) /= "10" else '1'; + + CDS <= CTRL_REG(1 downto 0); + WS <= CTRL_REG(4 downto 2); + TC <= CTRL_REG(6 downto 5); + RIE <= CTRL_REG(7); + + P_IRQ: process + variable DCD_OVR_LOCK : boolean; + variable DCD_LOCK : boolean; + variable DCD_TRANS : boolean; + begin + wait until CLK = '1' and CLK' event; + if RESETn = '0' then + DCD_OVR_LOCK := false; + IRQn <= '1'; + IRQ_I <= '0'; + elsif CS = "011" and RWn = '1' and RS = '0' and E = '1' then + DCD_OVR_LOCK := false; -- Enable reset by reading the status. + end if; + +-- Clear interrupts when disabled. +if CTRL_REG(7) = '0' then + IRQn <= '1'; + IRQ_I <= '0'; +elsif CTRL_REG(6 downto 5) /= "01" then + IRQn <= '1'; + IRQ_I <= '0'; +end if; + + -- Transmitter interrupt: + if TDRE = '1' and CTRL_REG(6 downto 5) = "01" and CTS_In = '0' then + IRQn <= '0'; + IRQ_I <= '1'; + elsif CS = "011" and RWn = '0' and RS = '1' and E = '1' then + IRQn <= '1'; -- Clear by writing to the transmit data register. + end if; + + -- Receiver interrupts: + if RDRF = '1' and RIE = '1' and DCD_In = '0' then + IRQn <= '0'; + IRQ_I <= '1'; + elsif CS = "011" and RWn = '1' and RS = '1' and E = '1' then + IRQn <= '1'; -- Clear by reading the receive data register. + end if; + + if OVR = '1' and RIE = '1' then + IRQn <= '0'; + IRQ_I <= '1'; + DCD_OVR_LOCK := true; + elsif CS = "011" and RWn = '1' and RS = '1' and E = '1' and DCD_OVR_LOCK = false then + IRQn <= '1'; -- Clear by reading the receive data register after the status. + end if; + + if DCD_In = '1' and RIE = '1' and DCD_TRANS = false then + IRQn <= '0'; + IRQ_I <= '1'; + -- DCD_TRANS is used to detect a low to high transition of DCDn. + DCD_TRANS := true; + DCD_OVR_LOCK := true; + elsif CS = "011" and RWn = '1' and RS = '1' and E = '1' and DCD_OVR_LOCK = false then + IRQn <= '1'; -- Clear by reading the receive data register after the status. + elsif DCD_In = '0' then + DCD_TRANS := false; + end if; + + -- The reset of the IRQ status flag: + -- Clear by writing to the transmit data register. + -- Clear by reading the receive data register. + if CS = "011" and RS = '1' and E = '1' then + IRQ_I <= '0'; + end if; + end process P_IRQ; + + CONTROL: process + begin + wait until CLK = '1' and CLK' event; + if RESETn = '0' then + CTRL_REG <= "01000000"; + elsif CS = "011" and RWn = '0' and RS = '0' and E = '1' then + CTRL_REG <= DATA_IN; + end if; + end process CONTROL; + + P_DCD: process + -- This process is some kind of tricky. Refer to the MC6850 data + -- sheet for more information. + variable READ_LOCK : boolean; + variable DCD_RELEASE : boolean; + begin + wait until CLK = '1' and CLK' event; + if RESETn = '0' then + DCD_FLAGn <= '0'; -- This interrupt source must initialise low. + READ_LOCK := true; + DCD_RELEASE := false; + elsif MCLR = '1' then + DCD_FLAGn <= DCD_In; + READ_LOCK := true; + elsif DCD_In = '1' then + DCD_FLAGn <= '1'; + elsif CS = "011" and RWn = '1' and RS = '0' and E = '1' then + READ_LOCK := false; -- Un-READ_LOCK if receiver data register is read. + elsif CS = "011" and RWn = '1' and RS = '1' and E = '1' and READ_LOCK = false then + -- Clear if receiver status register read access. + -- After data register has ben read and READ_LOCK again. + DCD_RELEASE := true; + READ_LOCK := true; + DCD_FLAGn <= DCD_In; + elsif DCD_In = '0' and DCD_RELEASE = true then + DCD_FLAGn <= '0'; + DCD_RELEASE := false; + end if; + end process P_DCD; +end architecture BEHAVIOR; + diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_receive.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_receive.vhd new file mode 100644 index 0000000..755e018 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_receive.vhd @@ -0,0 +1,415 @@ +---------------------------------------------------------------------- +---- ---- +---- 6850 compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- UART 6850 compatible IP core ---- +---- ---- +---- 6850's receiver unit. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF6850IP_RECEIVE is + port ( + CLK : in bit; + RESETn : in bit; + MCLR : in bit; + + CS : in bit_vector(2 downto 0); + E : in bit; + RWn : in bit; + RS : in bit; + + DATA_OUT : out bit_vector(7 downto 0); + DATA_EN : out bit; + + WS : in bit_vector(2 downto 0); + CDS : in bit_vector(1 downto 0); + + RXCLK : in bit; + RXDATA : in bit; + + RDRF : buffer bit; + OVR : out bit; + PE : out bit; + FE : out bit + ); +end entity WF6850IP_RECEIVE; + +architecture BEHAVIOR of WF6850IP_RECEIVE is +type RCV_STATES is (IDLE, WAIT_START, SAMPLE, PARITY, STOP1, STOP2, SYNC); +signal RCV_STATE, RCV_NEXT_STATE : RCV_STATES; +signal RXDATA_I : bit; +signal RXDATA_S : bit; +signal DATA_REG : bit_vector(7 downto 0); +signal SHIFT_REG : bit_vector(7 downto 0); +signal CLK_STRB : bit; +signal BITCNT : std_logic_vector(2 downto 0); +begin + P_SAMPLE: process + -- This filter provides a synchronisation to the system + -- clock, even for random baud rates of the received data + -- stream. + variable FLT_TMP : integer range 0 to 2; + begin + wait until CLK = '1' and CLK' event; + -- + RXDATA_I <= RXDATA; + -- + if RXDATA_I = '1' and FLT_TMP < 2 then + FLT_TMP := FLT_TMP + 1; + elsif RXDATA_I = '1' then + RXDATA_S <= '1'; + elsif RXDATA_I = '0' and FLT_TMP > 0 then + FLT_TMP := FLT_TMP - 1; + elsif RXDATA_I = '0' then + RXDATA_S <= '0'; + end if; + end process P_SAMPLE; + + CLKDIV: process + variable CLK_LOCK : boolean; + variable STRB_LOCK : boolean; + variable CLK_DIVCNT : std_logic_vector(6 downto 0); + begin + wait until CLK = '1' and CLK' event; + if CDS = "00" then -- Divider off. + if RXCLK = '1' and STRB_LOCK = false then + CLK_STRB <= '1'; + STRB_LOCK := true; + elsif RXCLK = '0' then + CLK_STRB <= '0'; + STRB_LOCK := false; + else + CLK_STRB <= '0'; + end if; + elsif RCV_STATE = IDLE then + -- Preset the CLKDIV with the start delays. + if CDS = "01" then + CLK_DIVCNT := "0001000"; -- Half of div by 16 mode. + elsif CDS = "10" then + CLK_DIVCNT := "0100000"; -- Half of div by 64 mode. + end if; + CLK_STRB <= '0'; + else + if CLK_DIVCNT > "0000000" and RXCLK = '1' and CLK_LOCK = false then + CLK_DIVCNT := CLK_DIVCNT - '1'; + CLK_STRB <= '0'; + CLK_LOCK := true; + elsif CDS = "01" and CLK_DIVCNT = "0000000" then + CLK_DIVCNT := "0010000"; -- Div by 16 mode. + -- + if STRB_LOCK = false then + STRB_LOCK := true; + CLK_STRB <= '1'; + else + CLK_STRB <= '0'; + end if; + elsif CDS = "10" and CLK_DIVCNT = "0000000" then + CLK_DIVCNT := "1000000"; -- Div by 64 mode. + if STRB_LOCK = false then + STRB_LOCK := true; + CLK_STRB <= '1'; + else + CLK_STRB <= '0'; + end if; + elsif RXCLK = '0' then + CLK_LOCK := false; + STRB_LOCK := false; + CLK_STRB <= '0'; + else + CLK_STRB <= '0'; + end if; + end if; + end process CLKDIV; + + DATAREG: process(RESETn, CLK) + begin + if RESETn = '0' then + DATA_REG <= x"00"; + elsif CLK = '1' and CLK' event then + if MCLR = '1' then + DATA_REG <= x"00"; + elsif RCV_STATE = SYNC and WS(2) = '0' and RDRF = '0' then -- 7 bit data. + -- Transfer from shift- to data register only if + -- data register is empty (RDRF = '0'). + DATA_REG <= '0' & SHIFT_REG(7 downto 1); + elsif RCV_STATE = SYNC and WS(2) = '1' and RDRF = '0' then -- 8 bit data. + -- Transfer from shift- to data register only if + -- data register is empty (RDRF = '0'). + DATA_REG <= SHIFT_REG; + end if; + end if; + end process DATAREG; + DATA_OUT <= DATA_REG when CS = "011" and RWn = '1' and RS = '1' and E = '1' else (others => '0'); + DATA_EN <= '1' when CS = "011" and RWn = '1' and RS = '1' and E = '1' else '0'; + + SHIFTREG: process(RESETn, CLK) + begin + if RESETn = '0' then + SHIFT_REG <= x"00"; + elsif CLK = '1' and CLK' event then + if MCLR = '1' then + SHIFT_REG <= x"00"; + elsif RCV_STATE = SAMPLE and CLK_STRB = '1' then + SHIFT_REG <= RXDATA_S & SHIFT_REG(7 downto 1); -- Shift right. + end if; + end if; + end process SHIFTREG; + + P_BITCNT: process + begin + wait until CLK = '1' and CLK' event; + if RCV_STATE = SAMPLE and CLK_STRB = '1' then + BITCNT <= BITCNT + '1'; + elsif RCV_STATE /= SAMPLE then + BITCNT <= (others => '0'); + end if; + end process P_BITCNT; + + FRAME_ERR: process(RESETn, CLK) + -- This module detects a framing error + -- during stop bit 1 and stop bit 2. + variable FE_I: bit; + begin + if RESETn = '0' then + FE_I := '0'; + FE <= '0'; + elsif CLK = '1' and CLK' event then + if MCLR = '1' then + FE_I := '0'; + FE <= '0'; + elsif CLK_STRB = '1' then + if RCV_STATE = STOP1 and RXDATA_S = '0' then + FE_I := '1'; + elsif RCV_STATE = STOP2 and RXDATA_S = '0' then + FE_I := '1'; + elsif RCV_STATE = STOP1 or RCV_STATE = STOP2 then + FE_I := '0'; -- Error resets when correct data appears. + end if; + end if; + if RCV_STATE = SYNC then + FE <= FE_I; -- Update the FE every SYNC time. + end if; + end if; + end process FRAME_ERR; + + OVERRUN: process(RESETn, CLK) + variable OVR_I : bit; + variable FIRST_READ : boolean; + begin + if RESETn = '0' then + OVR_I := '0'; + OVR <= '0'; + FIRST_READ := false; + elsif CLK = '1' and CLK' event then + if MCLR = '1' then + OVR_I := '0'; + OVR <= '0'; + FIRST_READ := false; + elsif CLK_STRB = '1' and RCV_STATE = STOP1 then + -- Overrun appears if RDRF is '1' in this state. + OVR_I := RDRF; + end if; + if CS = "011" and RWn = '1' and RS = '1' and E = '1' and OVR_I = '1' then + -- If an overrun was detected, the concerning flag is + -- set when the valid data word in the receiver data + -- register is read. Thereafter the RDRF flag is reset + -- and the overrun disappears (OVR_I goes low) after + -- a second read (in time) of the receiver data register. + if FIRST_READ = false then + OVR <= '1'; + FIRST_READ := true; + else + OVR <= '0'; + FIRST_READ := false; + end if; + end if; + end if; + end process OVERRUN; + + PARITY_TEST: process(RESETn, CLK) + variable PAR_TMP : bit; + variable PE_I : bit; + begin + if RESETn = '0' then + PE <= '0'; + elsif CLK = '1' and CLK' event then + if MCLR = '1' then + PE <= '0'; + elsif CLK_STRB = '1' then -- Sample parity on clock strobe. + PE_I := '0'; -- Initialise. + if RCV_STATE = PARITY then + for i in 1 to 7 loop + if i = 1 then + PAR_TMP := SHIFT_REG(i-1) xor SHIFT_REG(i); + else + PAR_TMP := PAR_TMP xor SHIFT_REG(i); + end if; + end loop; + if WS = "000" or WS = "010" or WS = "110" then -- Even parity. + PE_I := PAR_TMP xor RXDATA_S; + elsif WS = "001" or WS = "011" or WS = "111" then -- Odd parity. + PE_I := not PAR_TMP xor RXDATA_S; + else -- No parity for WS = "100" and WS = "101". + PE_I := '0'; + end if; + end if; + end if; + -- Transmit the parity flag together with the data + -- In other words: no parity to the status register + -- when RDRF inhibits the data transfer to the + -- receiver data register. + if RCV_STATE = SYNC and RDRF = '0' then + PE <= PE_I; + elsif CS = "011" and RWn = '1' and RS = '1' and E = '1' then + PE <= '0'; -- Clear when reading the data register. + end if; + end if; + end process PARITY_TEST; + + P_RDRF: process(RESETn, CLK) + -- Receive data register full flag. + begin + if RESETn = '0' then + RDRF <= '0'; + elsif CLK = '1' and CLK' event then + if MCLR = '1' then + RDRF <= '0'; + elsif RCV_STATE = SYNC then + RDRF <= '1'; -- Data register is full until now! + elsif CS = "011" and RWn = '1' and RS = '1' and E = '1' then + RDRF <= '0'; -- After reading the data register ... + end if; + end if; + end process P_RDRF; + + RCV_STATEREG: process(RESETn, CLK) + begin + if RESETn = '0' then + RCV_STATE <= IDLE; + elsif CLK = '1' and CLK' event then + if MCLR = '1' then + RCV_STATE <= IDLE; + else + RCV_STATE <= RCV_NEXT_STATE; + end if; + end if; + end process RCV_STATEREG; + + RCV_STATEDEC: process(RCV_STATE, RXDATA_S, CDS, WS, BITCNT, CLK_STRB) + begin + case RCV_STATE is + when IDLE => + if RXDATA_S = '0' and CDS = "00" then + RCV_NEXT_STATE <= SAMPLE; -- Startbit detected in div by 1 mode. + elsif RXDATA_S = '0' and CDS = "01" then + RCV_NEXT_STATE <= WAIT_START; -- Startbit detected in div by 16 mode. + elsif RXDATA_S = '0' and CDS = "10" then + RCV_NEXT_STATE <= WAIT_START; -- Startbit detected in div by 64 mode. + else + RCV_NEXT_STATE <= IDLE; -- No startbit; sleep well :-) + end if; + when WAIT_START => + if CLK_STRB = '1' then + if RXDATA_S = '0' then + RCV_NEXT_STATE <= SAMPLE; -- Start condition in no div by 1 modes. + else + RCV_NEXT_STATE <= IDLE; -- No valid start condition, go back. + end if; + else + RCV_NEXT_STATE <= WAIT_START; -- Stay. + end if; + when SAMPLE => + if CLK_STRB = '1' then + if BITCNT < "110" and WS(2) = '0' then + RCV_NEXT_STATE <= SAMPLE; -- Go on sampling 7 data bits. + elsif BITCNT < "111" and WS(2) = '1' then + RCV_NEXT_STATE <= SAMPLE; -- Go on sampling 8 data bits. + elsif WS = "100" or WS = "101" then + RCV_NEXT_STATE <= STOP1; -- No parity check enabled. + else + RCV_NEXT_STATE <= PARITY; -- Parity enabled. + end if; + else + RCV_NEXT_STATE <= SAMPLE; -- Stay in sample mode. + end if; + when PARITY => + if CLK_STRB = '1' then + RCV_NEXT_STATE <= STOP1; + else + RCV_NEXT_STATE <= PARITY; + end if; + when STOP1 => + if CLK_STRB = '1' then + if RXDATA_S = '0' then + RCV_NEXT_STATE <= SYNC; -- Framing error detected. + elsif WS = "000" or WS = "001" or WS = "100" then + RCV_NEXT_STATE <= STOP2; -- Two stop bits selected. + else + RCV_NEXT_STATE <= SYNC; -- One stop bit selected. + end if; + else + RCV_NEXT_STATE <= STOP1; + end if; + when STOP2 => + if CLK_STRB = '1' then + RCV_NEXT_STATE <= SYNC; + else + RCV_NEXT_STATE <= STOP2; + end if; + when SYNC => + RCV_NEXT_STATE <= IDLE; + end case; + end process RCV_STATEDEC; +end architecture BEHAVIOR; + diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_receive.vhd.bak b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_receive.vhd.bak new file mode 100644 index 0000000..e8c82b2 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_receive.vhd.bak @@ -0,0 +1,415 @@ +---------------------------------------------------------------------- +---- ---- +---- 6850 compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- UART 6850 compatible IP core ---- +---- ---- +---- 6850's receiver unit. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF6850IP_RECEIVE is + port ( + CLK : in bit; + RESETn : in bit; + MCLR : in bit; + + CS : in bit_vector(2 downto 0); + E : in bit; + RWn : in bit; + RS : in bit; + + DATA_OUT : out bit_vector(7 downto 0); + DATA_EN : out bit; + + WS : in bit_vector(2 downto 0); + CDS : in bit_vector(1 downto 0); + + RXCLK : in bit; + RXDATA : in bit; + + RDRF : buffer bit; + OVR : out bit; + PE : out bit; + FE : out bit + ); +end entity WF6850IP_RECEIVE; + +architecture BEHAVIOR of WF6850IP_RECEIVE is +type RCV_STATES is (IDLE, WAIT_START, SAMPLE, PARITY, STOP1, STOP2, SYNC); +signal RCV_STATE, RCV_NEXT_STATE : RCV_STATES; +signal RXDATA_I : bit; +signal RXDATA_S : bit; +signal DATA_REG : bit_vector(7 downto 0); +signal SHIFT_REG : bit_vector(7 downto 0); +signal CLK_STRB : bit; +signal BITCNT : std_logic_vector(2 downto 0); +begin + P_SAMPLE: process + -- This filter provides a synchronisation to the system + -- clock, even for random baud rates of the received data + -- stream. + variable FLT_TMP : integer range 0 to 2; + begin + wait until CLK = '1' and CLK' event; + -- + RXDATA_I <= RXDATA; + -- + if RXDATA_I = '1' and FLT_TMP < 2 then + FLT_TMP := FLT_TMP + 1; + elsif RXDATA_I = '1' then + RXDATA_S <= '1'; + elsif RXDATA_I = '0' and FLT_TMP > 0 then + FLT_TMP := FLT_TMP - 1; + elsif RXDATA_I = '0' then + RXDATA_S <= '0'; + end if; + end process P_SAMPLE; + + CLKDIV: process + variable CLK_LOCK : boolean; + variable STRB_LOCK : boolean; + variable CLK_DIVCNT : std_logic_vector(6 downto 0); + begin + wait until CLK = '1' and CLK' event; + if CDS = "00" then -- Divider off. + if RXCLK = '1' and STRB_LOCK = false then + CLK_STRB <= '1'; + STRB_LOCK := true; + elsif RXCLK = '0' then + CLK_STRB <= '0'; + STRB_LOCK := false; + else + CLK_STRB <= '0'; + end if; + elsif RCV_STATE = IDLE then + -- Preset the CLKDIV with the start delays. + if CDS = "01" then + CLK_DIVCNT := "0001000"; -- Half of div by 16 mode. + elsif CDS = "10" then + CLK_DIVCNT := "0100000"; -- Half of div by 64 mode. + end if; + CLK_STRB <= '0'; + else + if CLK_DIVCNT > "0000000" and RXCLK = '1' and CLK_LOCK = false then + CLK_DIVCNT := CLK_DIVCNT - '1'; + CLK_STRB <= '0'; + CLK_LOCK := true; + elsif CDS = "01" and CLK_DIVCNT = "0000000" then + CLK_DIVCNT := "0010000"; -- Div by 16 mode. + -- + if STRB_LOCK = false then + STRB_LOCK := true; + CLK_STRB <= '1'; + else + CLK_STRB <= '0'; + end if; + elsif CDS = "10" and CLK_DIVCNT = "0000000" then + CLK_DIVCNT := "1000000"; -- Div by 64 mode. + if STRB_LOCK = false then + STRB_LOCK := true; + CLK_STRB <= '1'; + else + CLK_STRB <= '0'; + end if; + elsif RXCLK = '0' then + CLK_LOCK := false; + STRB_LOCK := false; + CLK_STRB <= '0'; + else + CLK_STRB <= '0'; + end if; + end if; + end process CLKDIV; + + DATAREG: process(RESETn, CLK) + begin + if RESETn = '0' then + DATA_REG <= x"00"; + elsif CLK = '1' and CLK' event then + if MCLR = '1' then + DATA_REG <= x"00"; + elsif RCV_STATE = SYNC and WS(2) = '0' and RDRF = '0' then -- 7 bit data. + -- Transfer from shift- to data register only if + -- data register is empty (RDRF = '0'). + DATA_REG <= '0' & SHIFT_REG(7 downto 1); + elsif RCV_STATE = SYNC and WS(2) = '1' and RDRF = '0' then -- 8 bit data. + -- Transfer from shift- to data register only if + -- data register is empty (RDRF = '0'). + DATA_REG <= SHIFT_REG; + end if; + end if; + end process DATAREG; +--DATA_OUT <= DATA_REG when CS = "011" and RWn = '1' and RS = '1' and E = '1' else (others => '0'); +--DATA_EN <= '1' when CS = "011" and RWn = '1' and RS = '1' and E = '1' else '0'; +DATA_OUT <= DATA_REG when CS = "011" and RWn = '1' and RS = '1' else (others => '0'); +DATA_EN <= '1' when CS = "011" and RWn = '1' and RS = '1' else '0'; + + SHIFTREG: process(RESETn, CLK) + begin + if RESETn = '0' then + SHIFT_REG <= x"00"; + elsif CLK = '1' and CLK' event then + if MCLR = '1' then + SHIFT_REG <= x"00"; + elsif RCV_STATE = SAMPLE and CLK_STRB = '1' then + SHIFT_REG <= RXDATA_S & SHIFT_REG(7 downto 1); -- Shift right. + end if; + end if; + end process SHIFTREG; + + P_BITCNT: process + begin + wait until CLK = '1' and CLK' event; + if RCV_STATE = SAMPLE and CLK_STRB = '1' then + BITCNT <= BITCNT + '1'; + elsif RCV_STATE /= SAMPLE then + BITCNT <= (others => '0'); + end if; + end process P_BITCNT; + + FRAME_ERR: process(RESETn, CLK) + -- This module detects a framing error + -- during stop bit 1 and stop bit 2. + variable FE_I: bit; + begin + if RESETn = '0' then + FE_I := '0'; + FE <= '0'; + elsif CLK = '1' and CLK' event then + if MCLR = '1' then + FE_I := '0'; + FE <= '0'; + elsif CLK_STRB = '1' then + if RCV_STATE = STOP1 and RXDATA_S = '0' then + FE_I := '1'; + elsif RCV_STATE = STOP2 and RXDATA_S = '0' then + FE_I := '1'; + elsif RCV_STATE = STOP1 or RCV_STATE = STOP2 then + FE_I := '0'; -- Error resets when correct data appears. + end if; + end if; + if RCV_STATE = SYNC then + FE <= FE_I; -- Update the FE every SYNC time. + end if; + end if; + end process FRAME_ERR; + + OVERRUN: process(RESETn, CLK) + variable OVR_I : bit; + variable FIRST_READ : boolean; + begin + if RESETn = '0' then + OVR_I := '0'; + OVR <= '0'; + FIRST_READ := false; + elsif CLK = '1' and CLK' event then + if MCLR = '1' then + OVR_I := '0'; + OVR <= '0'; + FIRST_READ := false; + elsif CLK_STRB = '1' and RCV_STATE = STOP1 then + -- Overrun appears if RDRF is '1' in this state. + OVR_I := RDRF; + end if; + if CS = "011" and RWn = '1' and RS = '1' and E = '1' and OVR_I = '1' then + -- If an overrun was detected, the concerning flag is + -- set when the valid data word in the receiver data + -- register is read. Thereafter the RDRF flag is reset + -- and the overrun disappears (OVR_I goes low) after + -- a second read (in time) of the receiver data register. + if FIRST_READ = false then + OVR <= '1'; + FIRST_READ := true; + else + OVR <= '0'; + FIRST_READ := false; + end if; + end if; + end if; + end process OVERRUN; + + PARITY_TEST: process(RESETn, CLK) + variable PAR_TMP : bit; + variable PE_I : bit; + begin + if RESETn = '0' then + PE <= '0'; + elsif CLK = '1' and CLK' event then + if MCLR = '1' then + PE <= '0'; + elsif CLK_STRB = '1' then -- Sample parity on clock strobe. + PE_I := '0'; -- Initialise. + if RCV_STATE = PARITY then + for i in 1 to 7 loop + if i = 1 then + PAR_TMP := SHIFT_REG(i-1) xor SHIFT_REG(i); + else + PAR_TMP := PAR_TMP xor SHIFT_REG(i); + end if; + end loop; + if WS = "000" or WS = "010" or WS = "110" then -- Even parity. + PE_I := PAR_TMP xor RXDATA_S; + elsif WS = "001" or WS = "011" or WS = "111" then -- Odd parity. + PE_I := not PAR_TMP xor RXDATA_S; + else -- No parity for WS = "100" and WS = "101". + PE_I := '0'; + end if; + end if; + end if; + -- Transmit the parity flag together with the data + -- In other words: no parity to the status register + -- when RDRF inhibits the data transfer to the + -- receiver data register. + if RCV_STATE = SYNC and RDRF = '0' then + PE <= PE_I; + elsif CS = "011" and RWn = '1' and RS = '1' and E = '1' then + PE <= '0'; -- Clear when reading the data register. + end if; + end if; + end process PARITY_TEST; + + P_RDRF: process(RESETn, CLK) + -- Receive data register full flag. + begin + if RESETn = '0' then + RDRF <= '0'; + elsif CLK = '1' and CLK' event then + if MCLR = '1' then + RDRF <= '0'; + elsif RCV_STATE = SYNC then + RDRF <= '1'; -- Data register is full until now! + elsif CS = "011" and RWn = '1' and RS = '1' and E = '1' then + RDRF <= '0'; -- After reading the data register ... + end if; + end if; + end process P_RDRF; + + RCV_STATEREG: process(RESETn, CLK) + begin + if RESETn = '0' then + RCV_STATE <= IDLE; + elsif CLK = '1' and CLK' event then + if MCLR = '1' then + RCV_STATE <= IDLE; + else + RCV_STATE <= RCV_NEXT_STATE; + end if; + end if; + end process RCV_STATEREG; + + RCV_STATEDEC: process(RCV_STATE, RXDATA_S, CDS, WS, BITCNT, CLK_STRB) + begin + case RCV_STATE is + when IDLE => + if RXDATA_S = '0' and CDS = "00" then + RCV_NEXT_STATE <= SAMPLE; -- Startbit detected in div by 1 mode. + elsif RXDATA_S = '0' and CDS = "01" then + RCV_NEXT_STATE <= WAIT_START; -- Startbit detected in div by 16 mode. + elsif RXDATA_S = '0' and CDS = "10" then + RCV_NEXT_STATE <= WAIT_START; -- Startbit detected in div by 64 mode. + else + RCV_NEXT_STATE <= IDLE; -- No startbit; sleep well :-) + end if; + when WAIT_START => + if CLK_STRB = '1' then + if RXDATA_S = '0' then + RCV_NEXT_STATE <= SAMPLE; -- Start condition in no div by 1 modes. + else + RCV_NEXT_STATE <= IDLE; -- No valid start condition, go back. + end if; + else + RCV_NEXT_STATE <= WAIT_START; -- Stay. + end if; + when SAMPLE => + if CLK_STRB = '1' then + if BITCNT < "110" and WS(2) = '0' then + RCV_NEXT_STATE <= SAMPLE; -- Go on sampling 7 data bits. + elsif BITCNT < "111" and WS(2) = '1' then + RCV_NEXT_STATE <= SAMPLE; -- Go on sampling 8 data bits. + elsif WS = "100" or WS = "101" then + RCV_NEXT_STATE <= STOP1; -- No parity check enabled. + else + RCV_NEXT_STATE <= PARITY; -- Parity enabled. + end if; + else + RCV_NEXT_STATE <= SAMPLE; -- Stay in sample mode. + end if; + when PARITY => + if CLK_STRB = '1' then + RCV_NEXT_STATE <= STOP1; + else + RCV_NEXT_STATE <= PARITY; + end if; + when STOP1 => + if CLK_STRB = '1' then + if RXDATA_S = '0' then + RCV_NEXT_STATE <= SYNC; -- Framing error detected. + elsif WS = "000" or WS = "001" or WS = "100" then + RCV_NEXT_STATE <= STOP2; -- Two stop bits selected. + else + RCV_NEXT_STATE <= SYNC; -- One stop bit selected. + end if; + else + RCV_NEXT_STATE <= STOP1; + end if; + when STOP2 => + if CLK_STRB = '1' then + RCV_NEXT_STATE <= SYNC; + else + RCV_NEXT_STATE <= STOP2; + end if; + when SYNC => + RCV_NEXT_STATE <= IDLE; + end case; + end process RCV_STATEDEC; +end architecture BEHAVIOR; + diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top.vhd new file mode 100644 index 0000000..60a7885 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top.vhd @@ -0,0 +1,135 @@ +---------------------------------------------------------------------- +---- ---- +---- 6850 compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- UART 6850 compatible IP core ---- +---- ---- +---- This is the top level file. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8B 2008/12/24 WF +-- Rewritten this top level file as a wrapper for the top_soc file. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF6850IP_TOP is + port ( + CLK : in bit; + RESETn : in bit; + + CS2n, CS1, CS0 : in bit; + E : in bit; + RWn : in bit; + RS : in bit; + + DATA : inout std_logic_vector(7 downto 0); + + TXCLK : in bit; + RXCLK : in bit; + RXDATA : in bit; + CTSn : in bit; + DCDn : in bit; + + IRQn : out std_logic; + TXDATA : out bit; + RTSn : out bit + ); +end entity WF6850IP_TOP; + +architecture STRUCTURE of WF6850IP_TOP is +component WF6850IP_TOP_SOC + port ( + CLK : in bit; + RESETn : in bit; + CS2n, CS1, CS0 : in bit; + E : in bit; + RWn : in bit; + RS : in bit; + DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); + DATA_EN : out bit; + TXCLK : in bit; + RXCLK : in bit; + RXDATA : in bit; + CTSn : in bit; + DCDn : in bit; + IRQn : out bit; + TXDATA : out bit; + RTSn : out bit + ); +end component; +signal DATA_OUT : std_logic_vector(7 downto 0); +signal DATA_EN : bit; +signal IRQ_In : bit; +begin + DATA <= DATA_OUT when DATA_EN = '1' else (others => 'Z'); + IRQn <= '0' when IRQ_In = '0' else 'Z'; -- Open drain. + + I_UART: WF6850IP_TOP_SOC + port map(CLK => CLK, + RESETn => RESETn, + CS2n => CS2n, + CS1 => CS1, + CS0 => CS0, + E => E, + RWn => RWn, + RS => RS, + DATA_IN => DATA, + DATA_OUT => DATA_OUT, + DATA_EN => DATA_EN, + TXCLK => TXCLK, + RXCLK => RXCLK, + RXDATA => RXDATA, + CTSn => CTSn, + DCDn => DCDn, + IRQn => IRQ_In, + TXDATA => TXDATA, + RTSn => RTSn + ); +end architecture STRUCTURE; \ No newline at end of file diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top_soc.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top_soc.vhd new file mode 100644 index 0000000..cbca6bd --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top_soc.vhd @@ -0,0 +1,255 @@ +---------------------------------------------------------------------- +---- ---- +---- 6850 compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- UART 6850 compatible IP core ---- +---- ---- +---- This is the top level file. ---- +---- Top level file for use in systems on programmable chips. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Top level file provided for SOC (systems on programmable chips). +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- Revision 2K9B 2009/12/24 WF +-- Fixed the interrupt logic. +-- Introduced a minor RTSn correction. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF6850IP_TOP_SOC is + port ( + CLK : in bit; + RESETn : in bit; + + CS2n, CS1, CS0 : in bit; + E : in bit; + RWn : in bit; + RS : in bit; + + DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); + DATA_EN : out bit; + + TXCLK : in bit; + RXCLK : in bit; + RXDATA : in bit; + CTSn : in bit; + DCDn : in bit; + + IRQn : out bit; + TXDATA : out bit; + RTSn : out bit + ); +end entity WF6850IP_TOP_SOC; + +architecture STRUCTURE of WF6850IP_TOP_SOC is +component WF6850IP_CTRL_STATUS + port ( + CLK : in bit; + RESETn : in bit; + CS : in bit_vector(2 downto 0); + E : in bit; + RWn : in bit; + RS : in bit; + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_EN : out bit; + RDRF : in bit; + TDRE : in bit; + DCDn : in bit; + CTSn : in bit; + FE : in bit; + OVR : in bit; + PE : in bit; + MCLR : out bit; + RTSn : out bit; + CDS : out bit_vector(1 downto 0); + WS : out bit_vector(2 downto 0); + TC : out bit_vector(1 downto 0); + IRQn : out bit + ); +end component; + +component WF6850IP_RECEIVE + port ( + CLK : in bit; + RESETn : in bit; + MCLR : in bit; + CS : in bit_vector(2 downto 0); + E : in bit; + RWn : in bit; + RS : in bit; + DATA_OUT : out bit_vector(7 downto 0); + DATA_EN : out bit; + WS : in bit_vector(2 downto 0); + CDS : in bit_vector(1 downto 0); + RXCLK : in bit; + RXDATA : in bit; + RDRF : out bit; + OVR : out bit; + PE : out bit; + FE : out bit + ); +end component; + +component WF6850IP_TRANSMIT + port ( + CLK : in bit; + RESETn : in bit; + MCLR : in bit; + CS : in bit_vector(2 downto 0); + E : in bit; + RWn : in bit; + RS : in bit; + DATA_IN : in bit_vector(7 downto 0); + CTSn : in bit; + TC : in bit_vector(1 downto 0); + WS : in bit_vector(2 downto 0); + CDS : in bit_vector(1 downto 0); + TXCLK : in bit; + TDRE : out bit; + TXDATA : out bit + ); +end component; +signal DATA_IN_I : bit_vector(7 downto 0); +signal DATA_RX : bit_vector(7 downto 0); +signal DATA_RX_EN : bit; +signal DATA_CTRL : bit_vector(7 downto 0); +signal DATA_CTRL_EN : bit; +signal RDRF_I : bit; +signal TDRE_I : bit; +signal FE_I : bit; +signal OVR_I : bit; +signal PE_I : bit; +signal MCLR_I : bit; +signal CDS_I : bit_vector(1 downto 0); +signal WS_I : bit_vector(2 downto 0); +signal TC_I : bit_vector(1 downto 0); +signal IRQ_In : bit; +begin + DATA_IN_I <= To_BitVector(DATA_IN); + DATA_EN <= DATA_RX_EN or DATA_CTRL_EN; + DATA_OUT <= To_StdLogicVector(DATA_RX) when DATA_RX_EN = '1' else + To_StdLogicVector(DATA_CTRL) when DATA_CTRL_EN = '1' else (others => '0'); + + IRQn <= '0' when IRQ_In = '0' else '1'; + + I_UART_CTRL_STATUS: WF6850IP_CTRL_STATUS + port map( + CLK => CLK, + RESETn => RESETn, + CS(2) => CS2n, + CS(1) => CS1, + CS(0) => CS0, + E => E, + RWn => RWn, + RS => RS, + DATA_IN => DATA_IN_I, + DATA_OUT => DATA_CTRL, + DATA_EN => DATA_CTRL_EN, + RDRF => RDRF_I, + TDRE => TDRE_I, + DCDn => DCDn, + CTSn => CTSn, + FE => FE_I, + OVR => OVR_I, + PE => PE_I, + MCLR => MCLR_I, + RTSn => RTSn, + CDS => CDS_I, + WS => WS_I, + TC => TC_I, + IRQn => IRQ_In + ); + + I_UART_RECEIVE: WF6850IP_RECEIVE + port map ( + CLK => CLK, + RESETn => RESETn, + MCLR => MCLR_I, + CS(2) => CS2n, + CS(1) => CS1, + CS(0) => CS0, + E => E, + RWn => RWn, + RS => RS, + DATA_OUT => DATA_RX, + DATA_EN => DATA_RX_EN, + WS => WS_I, + CDS => CDS_I, + RXCLK => RXCLK, + RXDATA => RXDATA, + RDRF => RDRF_I, + OVR => OVR_I, + PE => PE_I, + FE => FE_I + ); + + I_UART_TRANSMIT: WF6850IP_TRANSMIT + port map ( + CLK => CLK, + RESETn => RESETn, + MCLR => MCLR_I, + CS(2) => CS2n, + CS(1) => CS1, + CS(0) => CS0, + E => E, + RWn => RWn, + RS => RS, + DATA_IN => DATA_IN_I, + CTSn => CTSn, + TC => TC_I, + WS => WS_I, + CDS => CDS_I, + TDRE => TDRE_I, + TXCLK => TXCLK, + TXDATA => TXDATA + ); +end architecture STRUCTURE; \ No newline at end of file diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top_soc.vhd.bak b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top_soc.vhd.bak new file mode 100644 index 0000000..6f80a67 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top_soc.vhd.bak @@ -0,0 +1,252 @@ +---------------------------------------------------------------------- +---- ---- +---- 6850 compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- UART 6850 compatible IP core ---- +---- ---- +---- This is the top level file. ---- +---- Top level file for use in systems on programmable chips. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Top level file provided for SOC (systems on programmable chips). +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF6850IP_TOP_SOC is + port ( + CLK : in bit; + RESETn : in bit; + + CS2n, CS1, CS0 : in bit; + E : in bit; + RWn : in bit; + RS : in bit; + + DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); + DATA_EN : out bit; + + TXCLK : in bit; + RXCLK : in bit; + RXDATA : in bit; + CTSn : in bit; + DCDn : in bit; + + IRQn : out bit; + TXDATA : out bit; + RTSn : out bit + ); +end entity WF6850IP_TOP_SOC; + +architecture STRUCTURE of WF6850IP_TOP_SOC is +component WF6850IP_CTRL_STATUS + port ( + CLK : in bit; + RESETn : in bit; + CS : in bit_vector(2 downto 0); + E : in bit; + RWn : in bit; + RS : in bit; + DATA_IN : in bit_vector(7 downto 0); + DATA_OUT : out bit_vector(7 downto 0); + DATA_EN : out bit; + RDRF : in bit; + TDRE : in bit; + DCDn : in bit; + CTSn : in bit; + FE : in bit; + OVR : in bit; + PE : in bit; + MCLR : out bit; + RTSn : out bit; + CDS : out bit_vector(1 downto 0); + WS : out bit_vector(2 downto 0); + TC : out bit_vector(1 downto 0); + IRQn : out bit + ); +end component; + +component WF6850IP_RECEIVE + port ( + CLK : in bit; + RESETn : in bit; + MCLR : in bit; + CS : in bit_vector(2 downto 0); + E : in bit; + RWn : in bit; + RS : in bit; + DATA_OUT : out bit_vector(7 downto 0); + DATA_EN : out bit; + WS : in bit_vector(2 downto 0); + CDS : in bit_vector(1 downto 0); + RXCLK : in bit; + RXDATA : in bit; + RDRF : out bit; + OVR : out bit; + PE : out bit; + FE : out bit + ); +end component; + +component WF6850IP_TRANSMIT + port ( + CLK : in bit; + RESETn : in bit; + MCLR : in bit; + CS : in bit_vector(2 downto 0); + E : in bit; + RWn : in bit; + RS : in bit; + DATA_IN : in bit_vector(7 downto 0); + CTSn : in bit; + TC : in bit_vector(1 downto 0); + WS : in bit_vector(2 downto 0); + CDS : in bit_vector(1 downto 0); + TXCLK : in bit; + TDRE : out bit; + TXDATA : out bit + ); +end component; +signal DATA_IN_I : bit_vector(7 downto 0); +signal DATA_RX : bit_vector(7 downto 0); +signal DATA_RX_EN : bit; +signal DATA_CTRL : bit_vector(7 downto 0); +signal DATA_CTRL_EN : bit; +signal RDRF_I : bit; +signal TDRE_I : bit; +signal FE_I : bit; +signal OVR_I : bit; +signal PE_I : bit; +signal MCLR_I : bit; +signal CDS_I : bit_vector(1 downto 0); +signal WS_I : bit_vector(2 downto 0); +signal TC_I : bit_vector(1 downto 0); +signal IRQ_In : bit; +begin + DATA_IN_I <= To_BitVector(DATA_IN); + DATA_EN <= DATA_RX_EN or DATA_CTRL_EN; + DATA_OUT <= To_StdLogicVector(DATA_RX) when DATA_RX_EN = '1' else + To_StdLogicVector(DATA_CTRL) when DATA_CTRL_EN = '1' else (others => '0'); + + IRQn <= '0' when IRQ_In = '0' else '1'; + + I_UART_CTRL_STATUS: WF6850IP_CTRL_STATUS + port map( + CLK => CLK, + RESETn => RESETn, + CS(2) => CS2n, + CS(1) => CS1, + CS(0) => CS0, + E => E, + RWn => RWn, + RS => RS, + DATA_IN => DATA_IN_I, + DATA_OUT => DATA_CTRL, + DATA_EN => DATA_CTRL_EN, + RDRF => RDRF_I, + TDRE => TDRE_I, + DCDn => DCDn, + CTSn => CTSn, + FE => FE_I, + OVR => OVR_I, + PE => PE_I, + MCLR => MCLR_I, + RTSn => RTSn, + CDS => CDS_I, + WS => WS_I, + TC => TC_I, + IRQn => IRQ_In + ); + + I_UART_RECEIVE: WF6850IP_RECEIVE + port map ( + CLK => CLK, + RESETn => RESETn, + MCLR => MCLR_I, + CS(2) => CS2n, + CS(1) => CS1, + CS(0) => CS0, + E => E, + RWn => RWn, + RS => RS, + DATA_OUT => DATA_RX, + DATA_EN => DATA_RX_EN, + WS => WS_I, + CDS => CDS_I, + RXCLK => RXCLK, + RXDATA => RXDATA, + RDRF => RDRF_I, + OVR => OVR_I, + PE => PE_I, + FE => FE_I + ); + + I_UART_TRANSMIT: WF6850IP_TRANSMIT + port map ( + CLK => CLK, + RESETn => RESETn, + MCLR => MCLR_I, + CS(2) => CS2n, + CS(1) => CS1, + CS(0) => CS0, + E => E, + RWn => RWn, + RS => RS, + DATA_IN => DATA_IN_I, + CTSn => CTSn, + TC => TC_I, + WS => WS_I, + CDS => CDS_I, + TDRE => TDRE_I, + TXCLK => TXCLK, + TXDATA => TXDATA + ); +end architecture STRUCTURE; \ No newline at end of file diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_transmit.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_transmit.vhd new file mode 100644 index 0000000..c8ae6fc --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_transmit.vhd @@ -0,0 +1,339 @@ +---------------------------------------------------------------------- +---- ---- +---- 6850 compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- UART 6850 compatible IP core ---- +---- ---- +---- 6850's transmitter unit. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- Revision 2K8B 2008/11/01 WF +-- Fixed the T_DRE process concerning the TDRE <= '1' setting. +-- Thanks to Lyndon Amsdon finding the bug. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF6850IP_TRANSMIT is + port ( + CLK : in bit; + RESETn : in bit; + MCLR : in bit; + + CS : in bit_vector(2 downto 0); + E : in bit; + RWn : in bit; + RS : in bit; + + DATA_IN : in bit_vector(7 downto 0); + + CTSn : in bit; + + TC : in bit_vector(1 downto 0); + WS : in bit_vector(2 downto 0); + CDS : in bit_vector(1 downto 0); + + TXCLK : in bit; + + TDRE : buffer bit; + TXDATA : out bit + ); +end entity WF6850IP_TRANSMIT; + +architecture BEHAVIOR of WF6850IP_TRANSMIT is +type TR_STATES is (IDLE, LOAD_SHFT, START, SHIFTOUT, PARITY, STOP1, STOP2); +signal TR_STATE, TR_NEXT_STATE : TR_STATES; +signal CLK_STRB : bit; +signal DATA_REG : bit_vector(7 downto 0); +signal SHIFT_REG : bit_vector(7 downto 0); +signal BITCNT : std_logic_vector(2 downto 0); +signal PARITY_I : bit; +begin + -- The default condition in this statement is to ensure + -- to cover all possibilities for example if there is a + -- one hot decoding of the state machine with wrong states + -- (e.g. not one of the given here). + TXDATA <= '1' when TR_STATE = IDLE else + '1' when TR_STATE = LOAD_SHFT else + '0' when TR_STATE = START else + SHIFT_REG(0) when TR_STATE = SHIFTOUT else + PARITY_I when TR_STATE = PARITY else + '1' when TR_STATE = STOP1 else + '1' when TR_STATE = STOP2 else '1'; + + CLKDIV: process + variable CLK_LOCK : boolean; + variable STRB_LOCK : boolean; + variable CLK_DIVCNT : std_logic_vector(6 downto 0); + begin + wait until CLK = '1' and CLK' event; + if CDS = "00" then -- divider off + if TXCLK = '0' and STRB_LOCK = false then -- Works on negative TXCLK edge. + CLK_STRB <= '1'; + STRB_LOCK := true; + elsif TXCLK = '1' then + CLK_STRB <= '0'; + STRB_LOCK := false; + else + CLK_STRB <= '0'; + end if; + elsif TR_STATE = IDLE then + -- preset the CLKDIV with the start delays + if CDS = "01" then + CLK_DIVCNT := "0010000"; -- div by 16 mode + elsif CDS = "10" then + CLK_DIVCNT := "1000000"; -- div by 64 mode + end if; + CLK_STRB <= '0'; + else + -- Works on negative TXCLK edge: + if CLK_DIVCNT > "0000000" and TXCLK = '0' and CLK_LOCK = false then + CLK_DIVCNT := CLK_DIVCNT - '1'; + CLK_STRB <= '0'; + CLK_LOCK := true; + elsif CDS = "01" and CLK_DIVCNT = "0000000" then + CLK_DIVCNT := "0010000"; -- Div by 16 mode. + if STRB_LOCK = false then + STRB_LOCK := true; + CLK_STRB <= '1'; + else + CLK_STRB <= '0'; + end if; + elsif CDS = "10" and CLK_DIVCNT = "0000000" then + CLK_DIVCNT := "1000000"; -- Div by 64 mode. + if STRB_LOCK = false then + STRB_LOCK := true; + CLK_STRB <= '1'; + else + CLK_STRB <= '0'; + end if; + elsif TXCLK = '1' then + CLK_LOCK := false; + STRB_LOCK := false; + CLK_STRB <= '0'; + else + CLK_STRB <= '0'; + end if; + end if; + end process CLKDIV; + + DATAREG: process(RESETn, CLK) + begin + if RESETn = '0' then + DATA_REG <= x"00"; + elsif CLK = '1' and CLK' event then + if MCLR = '1' then + DATA_REG <= x"00"; + elsif WS(2) = '0' and CS = "011" and RWn = '0' and RS = '1' and E = '1' then + DATA_REG <= '0' & DATA_IN(6 downto 0); -- 7 bit data mode. + elsif WS(2) = '1' and CS = "011" and RWn = '0' and RS = '1' and E = '1' then + DATA_REG <= DATA_IN; -- 8 bit data mode. + end if; + end if; + end process DATAREG; + + SHIFTREG: process(RESETn, CLK) + begin + if RESETn = '0' then + SHIFT_REG <= x"00"; + elsif CLK = '1' and CLK' event then + if MCLR = '1' then + SHIFT_REG <= x"00"; + elsif TR_STATE = LOAD_SHFT and TDRE = '0' then + -- If during LOAD_SHIFT the transmitter data register + -- is empty (TDRE = '1') the shift register will not + -- be loaded. When additionally TC = "11", the break + -- character (zero data and no stop bits) is sent. + SHIFT_REG <= DATA_REG; + elsif TR_STATE = SHIFTOUT and CLK_STRB = '1' then + SHIFT_REG <= '0' & SHIFT_REG(7 downto 1); -- Shift right. + end if; + end if; + end process SHIFTREG; + + P_BITCNT: process + -- Counter for the data bits transmitted. + begin + wait until CLK = '1' and CLK' event; + if TR_STATE = SHIFTOUT and CLK_STRB = '1' then + BITCNT <= BITCNT + '1'; + elsif TR_STATE /= SHIFTOUT then + BITCNT <= "000"; + end if; + end process P_BITCNT; + + P_TDRE: process(RESETn, CLK) + -- Transmit data register empty flag. + variable LOCK : boolean; + begin + if RESETn = '0' then + TDRE <= '1'; + LOCK := false; + elsif CLK = '1' and CLK' event then + if MCLR = '1' then + TDRE <= '1'; + elsif TR_NEXT_STATE = START and TR_STATE /= START then + -- Data has been loaded to shift register, thus data register is free again. + -- Thanks to Lyndon Amsdon for finding a bug here. The TDRE is set to one once + -- entering the state now. + TDRE <= '1'; + elsif CS = "011" and RWn = '0' and RS = '1' and E = '1' and LOCK = false then + LOCK := true; + elsif E = '0' and LOCK = true then + -- This construction clears TDRE after the falling edge of E + -- and after the transmit data register has been written to. + TDRE <= '0'; + LOCK := false; + end if; + end if; + end process P_TDRE; + + PARITY_GEN: process + variable PAR_TMP : bit; + begin + wait until CLK = '1' and CLK' event; + if TR_STATE = START then -- Calculate the parity during the start phase. + for i in 1 to 7 loop + if i = 1 then + PAR_TMP := SHIFT_REG(i-1) xor SHIFT_REG(i); + else + PAR_TMP := PAR_TMP xor SHIFT_REG(i); + end if; + end loop; + if WS = "000" or WS = "010" or WS = "110" then -- Even parity. + PARITY_I <= PAR_TMP; + elsif WS = "001" or WS = "011" or WS = "111" then -- Odd parity. + PARITY_I <= not PAR_TMP; + else -- No parity for WS = "100" and WS = "101". + PARITY_I <= '0'; + end if; + end if; + end process PARITY_GEN; + + TR_STATEREG: process(RESETn, CLK) + begin + if RESETn = '0' then + TR_STATE <= IDLE; + elsif CLK = '1' and CLK' event then + if MCLR = '1' then + TR_STATE <= IDLE; + else + TR_STATE <= TR_NEXT_STATE; + end if; + end if; + end process TR_STATEREG; + + TR_STATEDEC: process(TR_STATE, CLK_STRB, TC, BITCNT, WS, TDRE, CTSn) + begin + case TR_STATE is + when IDLE => + if TDRE = '1' and TC = "11" then + TR_NEXT_STATE <= LOAD_SHFT; + elsif TDRE = '0' and CTSn = '0' then -- Start if data register is not empty. + TR_NEXT_STATE <= LOAD_SHFT; + else + TR_NEXT_STATE <= IDLE; + end if; + when LOAD_SHFT => + TR_NEXT_STATE <= START; + when START => + if CLK_STRB = '1' then + TR_NEXT_STATE <= SHIFTOUT; + else + TR_NEXT_STATE <= START; + end if; + when SHIFTOUT => + if CLK_STRB = '1' then + if BITCNT < "110" and WS(2) = '0' then + TR_NEXT_STATE <= SHIFTOUT; -- Transmit 7 data bits. + elsif BITCNT < "111" and WS(2) = '1' then + TR_NEXT_STATE <= SHIFTOUT; -- Transmit 8 data bits. + elsif WS = "100" or WS = "101" then + if TDRE = '1' and TC = "11" then + -- Break condition, do not send a stop bit. + TR_NEXT_STATE <= IDLE; + else + TR_NEXT_STATE <= STOP1; -- No parity check enabled. + end if; + else + TR_NEXT_STATE <= PARITY; -- Parity enabled. + end if; + else + TR_NEXT_STATE <= SHIFTOUT; + end if; + when PARITY => + if CLK_STRB = '1' then + if TDRE = '1' and TC = "11" then + -- Break condition, do not send a stop bit. + TR_NEXT_STATE <= IDLE; + else + TR_NEXT_STATE <= STOP1; -- No parity check enabled. + end if; + else + TR_NEXT_STATE <= PARITY; + end if; + when STOP1 => + if CLK_STRB = '1' and (WS = "000" or WS = "001" or WS = "100") then + TR_NEXT_STATE <= STOP2; -- Two stop bits selected. + elsif CLK_STRB = '1' then + TR_NEXT_STATE <= IDLE; -- One stop bits selected. + else + TR_NEXT_STATE <= STOP1; + end if; + when STOP2 => + if CLK_STRB = '1' then + TR_NEXT_STATE <= IDLE; + else + TR_NEXT_STATE <= STOP2; + end if; + end case; + end process TR_STATEDEC; +end architecture BEHAVIOR; + diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_transmit.vhd.bak b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_transmit.vhd.bak new file mode 100644 index 0000000..bcff094 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_transmit.vhd.bak @@ -0,0 +1,339 @@ +---------------------------------------------------------------------- +---- ---- +---- 6850 compatible IP Core ---- +---- ---- +---- This file is part of the SUSKA ATARI clone project. ---- +---- http://www.experiment-s.de ---- +---- ---- +---- Description: ---- +---- UART 6850 compatible IP core ---- +---- ---- +---- 6850's transmitter unit. ---- +---- ---- +---- ---- +---- To Do: ---- +---- - ---- +---- ---- +---- Author(s): ---- +---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ---- +---- ---- +---------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2006 - 2008 Wolfgang Foerster ---- +---- ---- +---- This source file may be used and distributed without ---- +---- restriction provided that this copyright statement is not ---- +---- removed from the file and that any derivative work contains ---- +---- the original copyright notice and the associated disclaimer. ---- +---- ---- +---- This source file is free software; you can redistribute it ---- +---- and/or modify it under the terms of the GNU Lesser General ---- +---- Public License as published by the Free Software Foundation; ---- +---- either version 2.1 of the License, or (at your option) any ---- +---- later version. ---- +---- ---- +---- This source is distributed in the hope that it will be ---- +---- useful, but WITHOUT ANY WARRANTY; without even the implied ---- +---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ---- +---- PURPOSE. See the GNU Lesser General Public License for more ---- +---- details. ---- +---- ---- +---- You should have received a copy of the GNU Lesser General ---- +---- Public License along with this source; if not, download it ---- +---- from http://www.gnu.org/licenses/lgpl.html ---- +---- ---- +---------------------------------------------------------------------- +-- +-- Revision History +-- +-- Revision 2K6A 2006/06/03 WF +-- Initial Release. +-- Revision 2K6B 2006/11/07 WF +-- Modified Source to compile with the Xilinx ISE. +-- Revision 2K8A 2008/07/14 WF +-- Minor changes. +-- Revision 2K8B 2008/11/01 WF +-- Fixed the T_DRE process concerning the TDRE <= '1' setting. +-- Thanks to Lyndon Amsdon finding the bug. +-- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity WF6850IP_TRANSMIT is + port ( + CLK : in bit; + RESETn : in bit; + MCLR : in bit; + + CS : in bit_vector(2 downto 0); + E : in bit; + RWn : in bit; + RS : in bit; + + DATA_IN : in bit_vector(7 downto 0); + + CTSn : in bit; + + TC : in bit_vector(1 downto 0); + WS : in bit_vector(2 downto 0); + CDS : in bit_vector(1 downto 0); + + TXCLK : in bit; + + TDRE : buffer bit; + TXDATA : out bit + ); +end entity WF6850IP_TRANSMIT; + +architecture BEHAVIOR of WF6850IP_TRANSMIT is +type TR_STATES is (IDLE, LOAD_SHFT, START, SHIFTOUT, PARITY, STOP1, STOP2); +signal TR_STATE, TR_NEXT_STATE : TR_STATES; +signal CLK_STRB : bit; +signal DATA_REG : bit_vector(7 downto 0); +signal SHIFT_REG : bit_vector(7 downto 0); +signal BITCNT : std_logic_vector(2 downto 0); +signal PARITY_I : bit; +begin + -- The default condition in this statement is to ensure + -- to cover all possibilities for example if there is a + -- one hot decoding of the state machine with wrong states + -- (e.g. not one of the given here). + TXDATA <= '1' when TR_STATE = IDLE else + '1' when TR_STATE = LOAD_SHFT else + '0' when TR_STATE = START else + SHIFT_REG(0) when TR_STATE = SHIFTOUT else + PARITY_I when TR_STATE = PARITY else + '1' when TR_STATE = STOP1 else + '1' when TR_STATE = STOP2 else '1'; + + CLKDIV: process + variable CLK_LOCK : boolean; + variable STRB_LOCK : boolean; + variable CLK_DIVCNT : std_logic_vector(6 downto 0); + begin + wait until CLK = '1' and CLK' event; + if CDS = "00" then -- divider off + if TXCLK = '0' and STRB_LOCK = false then -- Works on negative TXCLK edge. + CLK_STRB <= '1'; + STRB_LOCK := true; + elsif TXCLK = '1' then + CLK_STRB <= '0'; + STRB_LOCK := false; + else + CLK_STRB <= '0'; + end if; + elsif TR_STATE = IDLE then + -- preset the CLKDIV with the start delays + if CDS = "01" then + CLK_DIVCNT := "0010000"; -- div by 16 mode + elsif CDS = "10" then + CLK_DIVCNT := "1000000"; -- div by 64 mode + end if; + CLK_STRB <= '0'; + else + -- Works on negative TXCLK edge: + if CLK_DIVCNT > "0000000" and TXCLK = '0' and CLK_LOCK = false then + CLK_DIVCNT := CLK_DIVCNT - '1'; + CLK_STRB <= '0'; + CLK_LOCK := true; + elsif CDS = "01" and CLK_DIVCNT = "0000000" then + CLK_DIVCNT := "0010000"; -- Div by 16 mode. + if STRB_LOCK = false then + STRB_LOCK := true; + CLK_STRB <= '1'; + else + CLK_STRB <= '0'; + end if; + elsif CDS = "10" and CLK_DIVCNT = "0000000" then + CLK_DIVCNT := "1000000"; -- Div by 64 mode. + if STRB_LOCK = false then + STRB_LOCK := true; + CLK_STRB <= '1'; + else + CLK_STRB <= '0'; + end if; + elsif TXCLK = '1' then + CLK_LOCK := false; + STRB_LOCK := false; + CLK_STRB <= '0'; + else + CLK_STRB <= '0'; + end if; + end if; + end process CLKDIV; + + DATAREG: process(RESETn, CLK) + begin + if RESETn = '0' then + DATA_REG <= x"00"; + elsif CLK = '1' and CLK' event then + if MCLR = '1' then + DATA_REG <= x"00"; + elsif WS(2) = '0' and CS = "011" and RWn = '0' and RS = '1' and E = '1' then + DATA_REG <= '0' & DATA_IN(6 downto 0); -- 7 bit data mode. + elsif WS(2) = '1' and CS = "011" and RWn = '0' and RS = '1' and E = '1' then + DATA_REG <= DATA_IN; -- 8 bit data mode. + end if; + end if; + end process DATAREG; + + SHIFTREG: process(RESETn, CLK) + begin + if RESETn = '0' then + SHIFT_REG <= x"00"; + elsif CLK = '1' and CLK' event then + if MCLR = '1' then + SHIFT_REG <= x"00"; + elsif TR_STATE = LOAD_SHFT and TDRE = '0' then + -- If during LOAD_SHIFT the transmitter data register + -- is empty (TDRE = '1') the shift register will not + -- be loaded. When additionally TC = "11", the break + -- character (zero data and no stop bits) is sent. + SHIFT_REG <= DATA_REG; + elsif TR_STATE = SHIFTOUT and CLK_STRB = '1' then + SHIFT_REG <= '0' & SHIFT_REG(7 downto 1); -- Shift right. + end if; + end if; + end process SHIFTREG; + + P_BITCNT: process + -- Counter for the data bits transmitted. + begin + wait until CLK = '1' and CLK' event; + if TR_STATE = SHIFTOUT and CLK_STRB = '1' then + BITCNT <= BITCNT + '1'; + elsif TR_STATE /= SHIFTOUT then + BITCNT <= "000"; + end if; + end process P_BITCNT; + + P_TDRE: process(RESETn, CLK) + -- Transmit data register empty flag. + variable LOCK : boolean; + begin + if RESETn = '0' then + TDRE <= '1'; + LOCK := false; + elsif CLK = '1' and CLK' event then + if MCLR = '1' then + TDRE <= '1'; + elsif TR_NEXT_STATE = START and TR_STATE /= START then + -- Data has been loaded to shift register, thus data register is free again. + -- Thanks to Lyndon Amsdon for finding a bug here. The TDRE is set to one once + -- entering the state now. + TDRE <= '1'; + elsif CS = "011" and RWn = '0' and RS = '1' and E = '1' and LOCK = false then + LOCK := true; + elsif E = '0' and LOCK = true and CS /= "011" then + -- This construction clears TDRE after the falling edge of E + -- and after the transmit data register has been written to. + TDRE <= '0'; + LOCK := false; + end if; + end if; + end process P_TDRE; + + PARITY_GEN: process + variable PAR_TMP : bit; + begin + wait until CLK = '1' and CLK' event; + if TR_STATE = START then -- Calculate the parity during the start phase. + for i in 1 to 7 loop + if i = 1 then + PAR_TMP := SHIFT_REG(i-1) xor SHIFT_REG(i); + else + PAR_TMP := PAR_TMP xor SHIFT_REG(i); + end if; + end loop; + if WS = "000" or WS = "010" or WS = "110" then -- Even parity. + PARITY_I <= PAR_TMP; + elsif WS = "001" or WS = "011" or WS = "111" then -- Odd parity. + PARITY_I <= not PAR_TMP; + else -- No parity for WS = "100" and WS = "101". + PARITY_I <= '0'; + end if; + end if; + end process PARITY_GEN; + + TR_STATEREG: process(RESETn, CLK) + begin + if RESETn = '0' then + TR_STATE <= IDLE; + elsif CLK = '1' and CLK' event then + if MCLR = '1' then + TR_STATE <= IDLE; + else + TR_STATE <= TR_NEXT_STATE; + end if; + end if; + end process TR_STATEREG; + + TR_STATEDEC: process(TR_STATE, CLK_STRB, TC, BITCNT, WS, TDRE, CTSn) + begin + case TR_STATE is + when IDLE => + if TDRE = '1' and TC = "11" then + TR_NEXT_STATE <= LOAD_SHFT; + elsif TDRE = '0' and CTSn = '0' then -- Start if data register is not empty. + TR_NEXT_STATE <= LOAD_SHFT; + else + TR_NEXT_STATE <= IDLE; + end if; + when LOAD_SHFT => + TR_NEXT_STATE <= START; + when START => + if CLK_STRB = '1' then + TR_NEXT_STATE <= SHIFTOUT; + else + TR_NEXT_STATE <= START; + end if; + when SHIFTOUT => + if CLK_STRB = '1' then + if BITCNT < "110" and WS(2) = '0' then + TR_NEXT_STATE <= SHIFTOUT; -- Transmit 7 data bits. + elsif BITCNT < "111" and WS(2) = '1' then + TR_NEXT_STATE <= SHIFTOUT; -- Transmit 8 data bits. + elsif WS = "100" or WS = "101" then + if TDRE = '1' and TC = "11" then + -- Break condition, do not send a stop bit. + TR_NEXT_STATE <= IDLE; + else + TR_NEXT_STATE <= STOP1; -- No parity check enabled. + end if; + else + TR_NEXT_STATE <= PARITY; -- Parity enabled. + end if; + else + TR_NEXT_STATE <= SHIFTOUT; + end if; + when PARITY => + if CLK_STRB = '1' then + if TDRE = '1' and TC = "11" then + -- Break condition, do not send a stop bit. + TR_NEXT_STATE <= IDLE; + else + TR_NEXT_STATE <= STOP1; -- No parity check enabled. + end if; + else + TR_NEXT_STATE <= PARITY; + end if; + when STOP1 => + if CLK_STRB = '1' and (WS = "000" or WS = "001" or WS = "100") then + TR_NEXT_STATE <= STOP2; -- Two stop bits selected. + elsif CLK_STRB = '1' then + TR_NEXT_STATE <= IDLE; -- One stop bits selected. + else + TR_NEXT_STATE <= STOP1; + end if; + when STOP2 => + if CLK_STRB = '1' then + TR_NEXT_STATE <= IDLE; + else + TR_NEXT_STATE <= STOP2; + end if; + end case; + end process TR_STATEDEC; +end architecture BEHAVIOR; + diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo0.bsf b/FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo0.bsf new file mode 100644 index 0000000..f4d66a5 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo0.bsf @@ -0,0 +1,95 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2009 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 160 168) + (text "dcfifo0" (rect 62 1 105 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 152 25 164)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[7..0]" (rect 0 0 53 14)(font "Arial" (font_size 8))) + (text "data[7..0]" (rect 20 26 65 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "wrreq" (rect 0 0 35 14)(font "Arial" (font_size 8))) + (text "wrreq" (rect 20 50 45 63)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 16 56)(line_width 1)) + ) + (port + (pt 0 72) + (input) + (text "wrclk" (rect 0 0 31 14)(font "Arial" (font_size 8))) + (text "wrclk" (rect 26 66 48 79)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 16 72)(line_width 1)) + ) + (port + (pt 0 104) + (input) + (text "rdreq" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "rdreq" (rect 20 98 44 111)(font "Arial" (font_size 8))) + (line (pt 0 104)(pt 16 104)(line_width 1)) + ) + (port + (pt 0 120) + (input) + (text "rdclk" (rect 0 0 27 14)(font "Arial" (font_size 8))) + (text "rdclk" (rect 26 114 47 127)(font "Arial" (font_size 8))) + (line (pt 0 120)(pt 16 120)(line_width 1)) + ) + (port + (pt 0 144) + (input) + (text "aclr" (rect 0 0 21 14)(font "Arial" (font_size 8))) + (text "aclr" (rect 20 138 37 151)(font "Arial" (font_size 8))) + (line (pt 0 144)(pt 16 144)(line_width 1)) + ) + (port + (pt 160 72) + (output) + (text "wrusedw[9..0]" (rect 0 0 84 14)(font "Arial" (font_size 8))) + (text "wrusedw[9..0]" (rect 69 66 132 79)(font "Arial" (font_size 8))) + (line (pt 160 72)(pt 144 72)(line_width 3)) + ) + (port + (pt 160 96) + (output) + (text "q[31..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "q[31..0]" (rect 105 90 141 103)(font "Arial" (font_size 8))) + (line (pt 160 96)(pt 144 96)(line_width 3)) + ) + (drawing + (text "8 bits x 1024 words" (rect 63 140 144 152)(font "Arial" )) + (line (pt 16 16)(pt 144 16)(line_width 1)) + (line (pt 144 16)(pt 144 152)(line_width 1)) + (line (pt 144 152)(pt 16 152)(line_width 1)) + (line (pt 16 152)(pt 16 16)(line_width 1)) + (line (pt 16 84)(pt 144 84)(line_width 1)) + (line (pt 16 132)(pt 144 132)(line_width 1)) + (line (pt 16 66)(pt 22 72)(line_width 1)) + (line (pt 22 72)(pt 16 78)(line_width 1)) + (line (pt 16 114)(pt 22 120)(line_width 1)) + (line (pt 22 120)(pt 16 126)(line_width 1)) + ) +) diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo0.cmp b/FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo0.cmp new file mode 100644 index 0000000..1f8ad52 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo0.cmp @@ -0,0 +1,28 @@ +--Copyright (C) 1991-2009 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component dcfifo0 + PORT + ( + aclr : IN STD_LOGIC := '0'; + data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + rdclk : IN STD_LOGIC ; + rdreq : IN STD_LOGIC ; + wrclk : IN STD_LOGIC ; + wrreq : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (31 DOWNTO 0); + wrusedw : OUT STD_LOGIC_VECTOR (9 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo0.qip b/FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo0.qip new file mode 100644 index 0000000..a22ffe4 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo0.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_FIFO+" +set_global_assignment -name IP_TOOL_VERSION "9.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "dcfifo0.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "dcfifo0.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "dcfifo0.cmp"] diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo0.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo0.vhd new file mode 100644 index 0000000..9db22fa --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo0.vhd @@ -0,0 +1,202 @@ +-- megafunction wizard: %LPM_FIFO+% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: dcfifo_mixed_widths + +-- ============================================================ +-- File Name: dcfifo0.vhd +-- Megafunction Name(s): +-- dcfifo_mixed_widths +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 9.1 Build 222 10/21/2009 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2009 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY dcfifo0 IS + PORT + ( + aclr : IN STD_LOGIC := '0'; + data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + rdclk : IN STD_LOGIC ; + rdreq : IN STD_LOGIC ; + wrclk : IN STD_LOGIC ; + wrreq : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (31 DOWNTO 0); + wrusedw : OUT STD_LOGIC_VECTOR (9 DOWNTO 0) + ); +END dcfifo0; + + +ARCHITECTURE SYN OF dcfifo0 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (9 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (31 DOWNTO 0); + + + + COMPONENT dcfifo_mixed_widths + GENERIC ( + intended_device_family : STRING; + lpm_numwords : NATURAL; + lpm_showahead : STRING; + lpm_type : STRING; + lpm_width : NATURAL; + lpm_widthu : NATURAL; + lpm_widthu_r : NATURAL; + lpm_width_r : NATURAL; + overflow_checking : STRING; + rdsync_delaypipe : NATURAL; + underflow_checking : STRING; + use_eab : STRING; + write_aclr_synch : STRING; + wrsync_delaypipe : NATURAL + ); + PORT ( + wrclk : IN STD_LOGIC ; + rdreq : IN STD_LOGIC ; + wrusedw : OUT STD_LOGIC_VECTOR (9 DOWNTO 0); + aclr : IN STD_LOGIC ; + rdclk : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (31 DOWNTO 0); + wrreq : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (7 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + wrusedw <= sub_wire0(9 DOWNTO 0); + q <= sub_wire1(31 DOWNTO 0); + + dcfifo_mixed_widths_component : dcfifo_mixed_widths + GENERIC MAP ( + intended_device_family => "Cyclone III", + lpm_numwords => 1024, + lpm_showahead => "OFF", + lpm_type => "dcfifo", + lpm_width => 8, + lpm_widthu => 10, + lpm_widthu_r => 8, + lpm_width_r => 32, + overflow_checking => "ON", + rdsync_delaypipe => 5, + underflow_checking => "ON", + use_eab => "ON", + write_aclr_synch => "OFF", + wrsync_delaypipe => 5 + ) + PORT MAP ( + wrclk => wrclk, + rdreq => rdreq, + aclr => aclr, + rdclk => rdclk, + wrreq => wrreq, + data => data, + wrusedw => sub_wire0, + q => sub_wire1 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: AlmostEmpty NUMERIC "0" +-- Retrieval info: PRIVATE: AlmostEmptyThr NUMERIC "-1" +-- Retrieval info: PRIVATE: AlmostFull NUMERIC "0" +-- Retrieval info: PRIVATE: AlmostFullThr NUMERIC "-1" +-- Retrieval info: PRIVATE: CLOCKS_ARE_SYNCHRONIZED NUMERIC "0" +-- Retrieval info: PRIVATE: Clock NUMERIC "4" +-- Retrieval info: PRIVATE: Depth NUMERIC "1024" +-- Retrieval info: PRIVATE: Empty NUMERIC "1" +-- Retrieval info: PRIVATE: Full NUMERIC "1" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: LE_BasedFIFO NUMERIC "0" +-- Retrieval info: PRIVATE: LegacyRREQ NUMERIC "1" +-- Retrieval info: PRIVATE: MAX_DEPTH_BY_9 NUMERIC "0" +-- Retrieval info: PRIVATE: OVERFLOW_CHECKING NUMERIC "0" +-- Retrieval info: PRIVATE: Optimize NUMERIC "1" +-- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: UNDERFLOW_CHECKING NUMERIC "0" +-- Retrieval info: PRIVATE: UsedW NUMERIC "1" +-- Retrieval info: PRIVATE: Width NUMERIC "8" +-- Retrieval info: PRIVATE: dc_aclr NUMERIC "1" +-- Retrieval info: PRIVATE: diff_widths NUMERIC "1" +-- Retrieval info: PRIVATE: msb_usedw NUMERIC "0" +-- Retrieval info: PRIVATE: output_width NUMERIC "32" +-- Retrieval info: PRIVATE: rsEmpty NUMERIC "0" +-- Retrieval info: PRIVATE: rsFull NUMERIC "0" +-- Retrieval info: PRIVATE: rsUsedW NUMERIC "0" +-- Retrieval info: PRIVATE: sc_aclr NUMERIC "0" +-- Retrieval info: PRIVATE: sc_sclr NUMERIC "0" +-- Retrieval info: PRIVATE: wsEmpty NUMERIC "0" +-- Retrieval info: PRIVATE: wsFull NUMERIC "0" +-- Retrieval info: PRIVATE: wsUsedW NUMERIC "1" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_NUMWORDS NUMERIC "1024" +-- Retrieval info: CONSTANT: LPM_SHOWAHEAD STRING "OFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "dcfifo" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "8" +-- Retrieval info: CONSTANT: LPM_WIDTHU NUMERIC "10" +-- Retrieval info: CONSTANT: LPM_WIDTHU_R NUMERIC "8" +-- Retrieval info: CONSTANT: LPM_WIDTH_R NUMERIC "32" +-- Retrieval info: CONSTANT: OVERFLOW_CHECKING STRING "ON" +-- Retrieval info: CONSTANT: RDSYNC_DELAYPIPE NUMERIC "5" +-- Retrieval info: CONSTANT: UNDERFLOW_CHECKING STRING "ON" +-- Retrieval info: CONSTANT: USE_EAB STRING "ON" +-- Retrieval info: CONSTANT: WRITE_ACLR_SYNCH STRING "OFF" +-- Retrieval info: CONSTANT: WRSYNC_DELAYPIPE NUMERIC "5" +-- Retrieval info: USED_PORT: aclr 0 0 0 0 INPUT GND aclr +-- Retrieval info: USED_PORT: data 0 0 8 0 INPUT NODEFVAL data[7..0] +-- Retrieval info: USED_PORT: q 0 0 32 0 OUTPUT NODEFVAL q[31..0] +-- Retrieval info: USED_PORT: rdclk 0 0 0 0 INPUT NODEFVAL rdclk +-- Retrieval info: USED_PORT: rdreq 0 0 0 0 INPUT NODEFVAL rdreq +-- Retrieval info: USED_PORT: wrclk 0 0 0 0 INPUT NODEFVAL wrclk +-- Retrieval info: USED_PORT: wrreq 0 0 0 0 INPUT NODEFVAL wrreq +-- Retrieval info: USED_PORT: wrusedw 0 0 10 0 OUTPUT NODEFVAL wrusedw[9..0] +-- Retrieval info: CONNECT: @data 0 0 8 0 data 0 0 8 0 +-- Retrieval info: CONNECT: q 0 0 32 0 @q 0 0 32 0 +-- Retrieval info: CONNECT: @wrreq 0 0 0 0 wrreq 0 0 0 0 +-- Retrieval info: CONNECT: @rdreq 0 0 0 0 rdreq 0 0 0 0 +-- Retrieval info: CONNECT: @rdclk 0 0 0 0 rdclk 0 0 0 0 +-- Retrieval info: CONNECT: @wrclk 0 0 0 0 wrclk 0 0 0 0 +-- Retrieval info: CONNECT: wrusedw 0 0 10 0 @wrusedw 0 0 10 0 +-- Retrieval info: CONNECT: @aclr 0 0 0 0 aclr 0 0 0 0 +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo0.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo0.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo0.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo0.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo0_inst.vhd FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo0_waveforms.html FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo0_wave*.jpg FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo0.vhd.bak b/FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo0.vhd.bak new file mode 100644 index 0000000..c3ca670 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo0.vhd.bak @@ -0,0 +1,202 @@ +-- megafunction wizard: %LPM_FIFO+% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: dcfifo_mixed_widths + +-- ============================================================ +-- File Name: dcfifo0.vhd +-- Megafunction Name(s): +-- dcfifo_mixed_widths +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 9.1 Build 222 10/21/2009 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2009 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY dcfifo0 IS + PORT + ( + aclr : IN STD_LOGIC := '0'; + data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + rdclk : IN STD_LOGIC ; + rdreq : IN STD_LOGIC ; + wrclk : IN STD_LOGIC ; + wrreq : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (15 DOWNTO 0); + wrusedw : OUT STD_LOGIC_VECTOR (4 DOWNTO 0) + ); +END dcfifo0; + + +ARCHITECTURE SYN OF dcfifo0 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (4 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (15 DOWNTO 0); + + + + COMPONENT dcfifo_mixed_widths + GENERIC ( + intended_device_family : STRING; + lpm_numwords : NATURAL; + lpm_showahead : STRING; + lpm_type : STRING; + lpm_width : NATURAL; + lpm_widthu : NATURAL; + lpm_widthu_r : NATURAL; + lpm_width_r : NATURAL; + overflow_checking : STRING; + rdsync_delaypipe : NATURAL; + underflow_checking : STRING; + use_eab : STRING; + write_aclr_synch : STRING; + wrsync_delaypipe : NATURAL + ); + PORT ( + wrclk : IN STD_LOGIC ; + rdreq : IN STD_LOGIC ; + wrusedw : OUT STD_LOGIC_VECTOR (4 DOWNTO 0); + aclr : IN STD_LOGIC ; + rdclk : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (15 DOWNTO 0); + wrreq : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (7 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + wrusedw <= sub_wire0(4 DOWNTO 0); + q <= sub_wire1(15 DOWNTO 0); + + dcfifo_mixed_widths_component : dcfifo_mixed_widths + GENERIC MAP ( + intended_device_family => "Cyclone III", + lpm_numwords => 32, + lpm_showahead => "OFF", + lpm_type => "dcfifo", + lpm_width => 8, + lpm_widthu => 5, + lpm_widthu_r => 4, + lpm_width_r => 16, + overflow_checking => "ON", + rdsync_delaypipe => 5, + underflow_checking => "ON", + use_eab => "ON", + write_aclr_synch => "OFF", + wrsync_delaypipe => 5 + ) + PORT MAP ( + wrclk => wrclk, + rdreq => rdreq, + aclr => aclr, + rdclk => rdclk, + wrreq => wrreq, + data => data, + wrusedw => sub_wire0, + q => sub_wire1 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: AlmostEmpty NUMERIC "0" +-- Retrieval info: PRIVATE: AlmostEmptyThr NUMERIC "-1" +-- Retrieval info: PRIVATE: AlmostFull NUMERIC "0" +-- Retrieval info: PRIVATE: AlmostFullThr NUMERIC "-1" +-- Retrieval info: PRIVATE: CLOCKS_ARE_SYNCHRONIZED NUMERIC "0" +-- Retrieval info: PRIVATE: Clock NUMERIC "4" +-- Retrieval info: PRIVATE: Depth NUMERIC "32" +-- Retrieval info: PRIVATE: Empty NUMERIC "1" +-- Retrieval info: PRIVATE: Full NUMERIC "1" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: LE_BasedFIFO NUMERIC "0" +-- Retrieval info: PRIVATE: LegacyRREQ NUMERIC "1" +-- Retrieval info: PRIVATE: MAX_DEPTH_BY_9 NUMERIC "0" +-- Retrieval info: PRIVATE: OVERFLOW_CHECKING NUMERIC "0" +-- Retrieval info: PRIVATE: Optimize NUMERIC "1" +-- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: UNDERFLOW_CHECKING NUMERIC "0" +-- Retrieval info: PRIVATE: UsedW NUMERIC "1" +-- Retrieval info: PRIVATE: Width NUMERIC "8" +-- Retrieval info: PRIVATE: dc_aclr NUMERIC "1" +-- Retrieval info: PRIVATE: diff_widths NUMERIC "1" +-- Retrieval info: PRIVATE: msb_usedw NUMERIC "0" +-- Retrieval info: PRIVATE: output_width NUMERIC "16" +-- Retrieval info: PRIVATE: rsEmpty NUMERIC "0" +-- Retrieval info: PRIVATE: rsFull NUMERIC "0" +-- Retrieval info: PRIVATE: rsUsedW NUMERIC "0" +-- Retrieval info: PRIVATE: sc_aclr NUMERIC "0" +-- Retrieval info: PRIVATE: sc_sclr NUMERIC "0" +-- Retrieval info: PRIVATE: wsEmpty NUMERIC "0" +-- Retrieval info: PRIVATE: wsFull NUMERIC "0" +-- Retrieval info: PRIVATE: wsUsedW NUMERIC "1" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_NUMWORDS NUMERIC "32" +-- Retrieval info: CONSTANT: LPM_SHOWAHEAD STRING "OFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "dcfifo" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "8" +-- Retrieval info: CONSTANT: LPM_WIDTHU NUMERIC "5" +-- Retrieval info: CONSTANT: LPM_WIDTHU_R NUMERIC "4" +-- Retrieval info: CONSTANT: LPM_WIDTH_R NUMERIC "16" +-- Retrieval info: CONSTANT: OVERFLOW_CHECKING STRING "ON" +-- Retrieval info: CONSTANT: RDSYNC_DELAYPIPE NUMERIC "5" +-- Retrieval info: CONSTANT: UNDERFLOW_CHECKING STRING "ON" +-- Retrieval info: CONSTANT: USE_EAB STRING "ON" +-- Retrieval info: CONSTANT: WRITE_ACLR_SYNCH STRING "OFF" +-- Retrieval info: CONSTANT: WRSYNC_DELAYPIPE NUMERIC "5" +-- Retrieval info: USED_PORT: aclr 0 0 0 0 INPUT GND aclr +-- Retrieval info: USED_PORT: data 0 0 8 0 INPUT NODEFVAL data[7..0] +-- Retrieval info: USED_PORT: q 0 0 16 0 OUTPUT NODEFVAL q[15..0] +-- Retrieval info: USED_PORT: rdclk 0 0 0 0 INPUT NODEFVAL rdclk +-- Retrieval info: USED_PORT: rdreq 0 0 0 0 INPUT NODEFVAL rdreq +-- Retrieval info: USED_PORT: wrclk 0 0 0 0 INPUT NODEFVAL wrclk +-- Retrieval info: USED_PORT: wrreq 0 0 0 0 INPUT NODEFVAL wrreq +-- Retrieval info: USED_PORT: wrusedw 0 0 5 0 OUTPUT NODEFVAL wrusedw[4..0] +-- Retrieval info: CONNECT: @data 0 0 8 0 data 0 0 8 0 +-- Retrieval info: CONNECT: q 0 0 16 0 @q 0 0 16 0 +-- Retrieval info: CONNECT: @wrreq 0 0 0 0 wrreq 0 0 0 0 +-- Retrieval info: CONNECT: @rdreq 0 0 0 0 rdreq 0 0 0 0 +-- Retrieval info: CONNECT: @rdclk 0 0 0 0 rdclk 0 0 0 0 +-- Retrieval info: CONNECT: @wrclk 0 0 0 0 wrclk 0 0 0 0 +-- Retrieval info: CONNECT: wrusedw 0 0 5 0 @wrusedw 0 0 5 0 +-- Retrieval info: CONNECT: @aclr 0 0 0 0 aclr 0 0 0 0 +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo0.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo0.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo0.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo0.bsf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo0_inst.vhd FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo0_waveforms.html FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo0_wave*.jpg FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo1.bsf b/FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo1.bsf new file mode 100644 index 0000000..7a4a386 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo1.bsf @@ -0,0 +1,95 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2009 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 160 168) + (text "dcfifo1" (rect 62 1 105 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 152 25 164)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[31..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "data[31..0]" (rect 20 26 71 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "wrreq" (rect 0 0 35 14)(font "Arial" (font_size 8))) + (text "wrreq" (rect 20 50 45 63)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 16 56)(line_width 1)) + ) + (port + (pt 0 72) + (input) + (text "wrclk" (rect 0 0 31 14)(font "Arial" (font_size 8))) + (text "wrclk" (rect 26 66 48 79)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 16 72)(line_width 1)) + ) + (port + (pt 0 104) + (input) + (text "rdreq" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "rdreq" (rect 20 98 44 111)(font "Arial" (font_size 8))) + (line (pt 0 104)(pt 16 104)(line_width 1)) + ) + (port + (pt 0 120) + (input) + (text "rdclk" (rect 0 0 27 14)(font "Arial" (font_size 8))) + (text "rdclk" (rect 26 114 47 127)(font "Arial" (font_size 8))) + (line (pt 0 120)(pt 16 120)(line_width 1)) + ) + (port + (pt 0 144) + (input) + (text "aclr" (rect 0 0 21 14)(font "Arial" (font_size 8))) + (text "aclr" (rect 20 138 37 151)(font "Arial" (font_size 8))) + (line (pt 0 144)(pt 16 144)(line_width 1)) + ) + (port + (pt 160 96) + (output) + (text "q[7..0]" (rect 0 0 35 14)(font "Arial" (font_size 8))) + (text "q[7..0]" (rect 111 90 141 103)(font "Arial" (font_size 8))) + (line (pt 160 96)(pt 144 96)(line_width 3)) + ) + (port + (pt 160 120) + (output) + (text "rdusedw[9..0]" (rect 0 0 80 14)(font "Arial" (font_size 8))) + (text "rdusedw[9..0]" (rect 73 114 135 127)(font "Arial" (font_size 8))) + (line (pt 160 120)(pt 144 120)(line_width 3)) + ) + (drawing + (text "32 bits x 256 words" (rect 63 140 144 152)(font "Arial" )) + (line (pt 16 16)(pt 144 16)(line_width 1)) + (line (pt 144 16)(pt 144 152)(line_width 1)) + (line (pt 144 152)(pt 16 152)(line_width 1)) + (line (pt 16 152)(pt 16 16)(line_width 1)) + (line (pt 16 84)(pt 144 84)(line_width 1)) + (line (pt 16 132)(pt 144 132)(line_width 1)) + (line (pt 16 66)(pt 22 72)(line_width 1)) + (line (pt 22 72)(pt 16 78)(line_width 1)) + (line (pt 16 114)(pt 22 120)(line_width 1)) + (line (pt 22 120)(pt 16 126)(line_width 1)) + ) +) diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo1.cmp b/FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo1.cmp new file mode 100644 index 0000000..a1b8d55 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo1.cmp @@ -0,0 +1,28 @@ +--Copyright (C) 1991-2009 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component dcfifo1 + PORT + ( + aclr : IN STD_LOGIC := '0'; + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + rdclk : IN STD_LOGIC ; + rdreq : IN STD_LOGIC ; + wrclk : IN STD_LOGIC ; + wrreq : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0); + rdusedw : OUT STD_LOGIC_VECTOR (9 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo1.qip b/FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo1.qip new file mode 100644 index 0000000..bf1428c --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo1.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_FIFO+" +set_global_assignment -name IP_TOOL_VERSION "9.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "dcfifo1.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "dcfifo1.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "dcfifo1.cmp"] diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo1.vhd b/FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo1.vhd new file mode 100644 index 0000000..d05dd0a --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo1.vhd @@ -0,0 +1,202 @@ +-- megafunction wizard: %LPM_FIFO+% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: dcfifo_mixed_widths + +-- ============================================================ +-- File Name: dcfifo1.vhd +-- Megafunction Name(s): +-- dcfifo_mixed_widths +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 9.1 Build 222 10/21/2009 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2009 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY dcfifo1 IS + PORT + ( + aclr : IN STD_LOGIC := '0'; + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + rdclk : IN STD_LOGIC ; + rdreq : IN STD_LOGIC ; + wrclk : IN STD_LOGIC ; + wrreq : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0); + rdusedw : OUT STD_LOGIC_VECTOR (9 DOWNTO 0) + ); +END dcfifo1; + + +ARCHITECTURE SYN OF dcfifo1 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (9 DOWNTO 0); + + + + COMPONENT dcfifo_mixed_widths + GENERIC ( + intended_device_family : STRING; + lpm_numwords : NATURAL; + lpm_showahead : STRING; + lpm_type : STRING; + lpm_width : NATURAL; + lpm_widthu : NATURAL; + lpm_widthu_r : NATURAL; + lpm_width_r : NATURAL; + overflow_checking : STRING; + rdsync_delaypipe : NATURAL; + underflow_checking : STRING; + use_eab : STRING; + write_aclr_synch : STRING; + wrsync_delaypipe : NATURAL + ); + PORT ( + wrclk : IN STD_LOGIC ; + rdreq : IN STD_LOGIC ; + aclr : IN STD_LOGIC ; + rdclk : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0); + wrreq : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + rdusedw : OUT STD_LOGIC_VECTOR (9 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(7 DOWNTO 0); + rdusedw <= sub_wire1(9 DOWNTO 0); + + dcfifo_mixed_widths_component : dcfifo_mixed_widths + GENERIC MAP ( + intended_device_family => "Cyclone III", + lpm_numwords => 256, + lpm_showahead => "OFF", + lpm_type => "dcfifo", + lpm_width => 32, + lpm_widthu => 8, + lpm_widthu_r => 10, + lpm_width_r => 8, + overflow_checking => "ON", + rdsync_delaypipe => 5, + underflow_checking => "ON", + use_eab => "ON", + write_aclr_synch => "OFF", + wrsync_delaypipe => 5 + ) + PORT MAP ( + wrclk => wrclk, + rdreq => rdreq, + aclr => aclr, + rdclk => rdclk, + wrreq => wrreq, + data => data, + q => sub_wire0, + rdusedw => sub_wire1 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: AlmostEmpty NUMERIC "0" +-- Retrieval info: PRIVATE: AlmostEmptyThr NUMERIC "-1" +-- Retrieval info: PRIVATE: AlmostFull NUMERIC "0" +-- Retrieval info: PRIVATE: AlmostFullThr NUMERIC "-1" +-- Retrieval info: PRIVATE: CLOCKS_ARE_SYNCHRONIZED NUMERIC "0" +-- Retrieval info: PRIVATE: Clock NUMERIC "4" +-- Retrieval info: PRIVATE: Depth NUMERIC "256" +-- Retrieval info: PRIVATE: Empty NUMERIC "1" +-- Retrieval info: PRIVATE: Full NUMERIC "1" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: LE_BasedFIFO NUMERIC "0" +-- Retrieval info: PRIVATE: LegacyRREQ NUMERIC "1" +-- Retrieval info: PRIVATE: MAX_DEPTH_BY_9 NUMERIC "0" +-- Retrieval info: PRIVATE: OVERFLOW_CHECKING NUMERIC "0" +-- Retrieval info: PRIVATE: Optimize NUMERIC "1" +-- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: UNDERFLOW_CHECKING NUMERIC "0" +-- Retrieval info: PRIVATE: UsedW NUMERIC "1" +-- Retrieval info: PRIVATE: Width NUMERIC "32" +-- Retrieval info: PRIVATE: dc_aclr NUMERIC "1" +-- Retrieval info: PRIVATE: diff_widths NUMERIC "1" +-- Retrieval info: PRIVATE: msb_usedw NUMERIC "0" +-- Retrieval info: PRIVATE: output_width NUMERIC "8" +-- Retrieval info: PRIVATE: rsEmpty NUMERIC "0" +-- Retrieval info: PRIVATE: rsFull NUMERIC "0" +-- Retrieval info: PRIVATE: rsUsedW NUMERIC "1" +-- Retrieval info: PRIVATE: sc_aclr NUMERIC "0" +-- Retrieval info: PRIVATE: sc_sclr NUMERIC "0" +-- Retrieval info: PRIVATE: wsEmpty NUMERIC "0" +-- Retrieval info: PRIVATE: wsFull NUMERIC "0" +-- Retrieval info: PRIVATE: wsUsedW NUMERIC "0" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_NUMWORDS NUMERIC "256" +-- Retrieval info: CONSTANT: LPM_SHOWAHEAD STRING "OFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "dcfifo" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "32" +-- Retrieval info: CONSTANT: LPM_WIDTHU NUMERIC "8" +-- Retrieval info: CONSTANT: LPM_WIDTHU_R NUMERIC "10" +-- Retrieval info: CONSTANT: LPM_WIDTH_R NUMERIC "8" +-- Retrieval info: CONSTANT: OVERFLOW_CHECKING STRING "ON" +-- Retrieval info: CONSTANT: RDSYNC_DELAYPIPE NUMERIC "5" +-- Retrieval info: CONSTANT: UNDERFLOW_CHECKING STRING "ON" +-- Retrieval info: CONSTANT: USE_EAB STRING "ON" +-- Retrieval info: CONSTANT: WRITE_ACLR_SYNCH STRING "OFF" +-- Retrieval info: CONSTANT: WRSYNC_DELAYPIPE NUMERIC "5" +-- Retrieval info: USED_PORT: aclr 0 0 0 0 INPUT GND aclr +-- Retrieval info: USED_PORT: data 0 0 32 0 INPUT NODEFVAL data[31..0] +-- Retrieval info: USED_PORT: q 0 0 8 0 OUTPUT NODEFVAL q[7..0] +-- Retrieval info: USED_PORT: rdclk 0 0 0 0 INPUT NODEFVAL rdclk +-- Retrieval info: USED_PORT: rdreq 0 0 0 0 INPUT NODEFVAL rdreq +-- Retrieval info: USED_PORT: rdusedw 0 0 10 0 OUTPUT NODEFVAL rdusedw[9..0] +-- Retrieval info: USED_PORT: wrclk 0 0 0 0 INPUT NODEFVAL wrclk +-- Retrieval info: USED_PORT: wrreq 0 0 0 0 INPUT NODEFVAL wrreq +-- Retrieval info: CONNECT: @data 0 0 32 0 data 0 0 32 0 +-- Retrieval info: CONNECT: q 0 0 8 0 @q 0 0 8 0 +-- Retrieval info: CONNECT: @wrreq 0 0 0 0 wrreq 0 0 0 0 +-- Retrieval info: CONNECT: @rdreq 0 0 0 0 rdreq 0 0 0 0 +-- Retrieval info: CONNECT: @rdclk 0 0 0 0 rdclk 0 0 0 0 +-- Retrieval info: CONNECT: @wrclk 0 0 0 0 wrclk 0 0 0 0 +-- Retrieval info: CONNECT: rdusedw 0 0 10 0 @rdusedw 0 0 10 0 +-- Retrieval info: CONNECT: @aclr 0 0 0 0 aclr 0 0 0 0 +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo1.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo1.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo1.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo1.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo1_inst.vhd FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo1_waveforms.html FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo1_wave*.jpg FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo1.vhd.bak b/FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo1.vhd.bak new file mode 100644 index 0000000..e7c6ae6 --- /dev/null +++ b/FPGA_quartus/FalconIO_SDCard_IDE_CF/dcfifo1.vhd.bak @@ -0,0 +1,202 @@ +-- megafunction wizard: %LPM_FIFO+% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: dcfifo_mixed_widths + +-- ============================================================ +-- File Name: dcfifo1.vhd +-- Megafunction Name(s): +-- dcfifo_mixed_widths +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 9.1 Build 222 10/21/2009 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2009 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY dcfifo1 IS + PORT + ( + aclr : IN STD_LOGIC := '0'; + data : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + rdclk : IN STD_LOGIC ; + rdreq : IN STD_LOGIC ; + wrclk : IN STD_LOGIC ; + wrreq : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0); + wrusedw : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) + ); +END dcfifo1; + + +ARCHITECTURE SYN OF dcfifo1 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (3 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (7 DOWNTO 0); + + + + COMPONENT dcfifo_mixed_widths + GENERIC ( + intended_device_family : STRING; + lpm_numwords : NATURAL; + lpm_showahead : STRING; + lpm_type : STRING; + lpm_width : NATURAL; + lpm_widthu : NATURAL; + lpm_widthu_r : NATURAL; + lpm_width_r : NATURAL; + overflow_checking : STRING; + rdsync_delaypipe : NATURAL; + underflow_checking : STRING; + use_eab : STRING; + write_aclr_synch : STRING; + wrsync_delaypipe : NATURAL + ); + PORT ( + wrclk : IN STD_LOGIC ; + rdreq : IN STD_LOGIC ; + wrusedw : OUT STD_LOGIC_VECTOR (3 DOWNTO 0); + aclr : IN STD_LOGIC ; + rdclk : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0); + wrreq : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (15 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + wrusedw <= sub_wire0(3 DOWNTO 0); + q <= sub_wire1(7 DOWNTO 0); + + dcfifo_mixed_widths_component : dcfifo_mixed_widths + GENERIC MAP ( + intended_device_family => "Cyclone III", + lpm_numwords => 16, + lpm_showahead => "OFF", + lpm_type => "dcfifo", + lpm_width => 16, + lpm_widthu => 4, + lpm_widthu_r => 5, + lpm_width_r => 8, + overflow_checking => "ON", + rdsync_delaypipe => 5, + underflow_checking => "ON", + use_eab => "ON", + write_aclr_synch => "OFF", + wrsync_delaypipe => 5 + ) + PORT MAP ( + wrclk => wrclk, + rdreq => rdreq, + aclr => aclr, + rdclk => rdclk, + wrreq => wrreq, + data => data, + wrusedw => sub_wire0, + q => sub_wire1 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: AlmostEmpty NUMERIC "0" +-- Retrieval info: PRIVATE: AlmostEmptyThr NUMERIC "-1" +-- Retrieval info: PRIVATE: AlmostFull NUMERIC "0" +-- Retrieval info: PRIVATE: AlmostFullThr NUMERIC "-1" +-- Retrieval info: PRIVATE: CLOCKS_ARE_SYNCHRONIZED NUMERIC "0" +-- Retrieval info: PRIVATE: Clock NUMERIC "4" +-- Retrieval info: PRIVATE: Depth NUMERIC "16" +-- Retrieval info: PRIVATE: Empty NUMERIC "1" +-- Retrieval info: PRIVATE: Full NUMERIC "1" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: LE_BasedFIFO NUMERIC "0" +-- Retrieval info: PRIVATE: LegacyRREQ NUMERIC "1" +-- Retrieval info: PRIVATE: MAX_DEPTH_BY_9 NUMERIC "0" +-- Retrieval info: PRIVATE: OVERFLOW_CHECKING NUMERIC "0" +-- Retrieval info: PRIVATE: Optimize NUMERIC "1" +-- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: UNDERFLOW_CHECKING NUMERIC "0" +-- Retrieval info: PRIVATE: UsedW NUMERIC "1" +-- Retrieval info: PRIVATE: Width NUMERIC "16" +-- Retrieval info: PRIVATE: dc_aclr NUMERIC "1" +-- Retrieval info: PRIVATE: diff_widths NUMERIC "1" +-- Retrieval info: PRIVATE: msb_usedw NUMERIC "0" +-- Retrieval info: PRIVATE: output_width NUMERIC "8" +-- Retrieval info: PRIVATE: rsEmpty NUMERIC "0" +-- Retrieval info: PRIVATE: rsFull NUMERIC "0" +-- Retrieval info: PRIVATE: rsUsedW NUMERIC "0" +-- Retrieval info: PRIVATE: sc_aclr NUMERIC "0" +-- Retrieval info: PRIVATE: sc_sclr NUMERIC "0" +-- Retrieval info: PRIVATE: wsEmpty NUMERIC "0" +-- Retrieval info: PRIVATE: wsFull NUMERIC "0" +-- Retrieval info: PRIVATE: wsUsedW NUMERIC "1" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_NUMWORDS NUMERIC "16" +-- Retrieval info: CONSTANT: LPM_SHOWAHEAD STRING "OFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "dcfifo" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "16" +-- Retrieval info: CONSTANT: LPM_WIDTHU NUMERIC "4" +-- Retrieval info: CONSTANT: LPM_WIDTHU_R NUMERIC "5" +-- Retrieval info: CONSTANT: LPM_WIDTH_R NUMERIC "8" +-- Retrieval info: CONSTANT: OVERFLOW_CHECKING STRING "ON" +-- Retrieval info: CONSTANT: RDSYNC_DELAYPIPE NUMERIC "5" +-- Retrieval info: CONSTANT: UNDERFLOW_CHECKING STRING "ON" +-- Retrieval info: CONSTANT: USE_EAB STRING "ON" +-- Retrieval info: CONSTANT: WRITE_ACLR_SYNCH STRING "OFF" +-- Retrieval info: CONSTANT: WRSYNC_DELAYPIPE NUMERIC "5" +-- Retrieval info: USED_PORT: aclr 0 0 0 0 INPUT GND aclr +-- Retrieval info: USED_PORT: data 0 0 16 0 INPUT NODEFVAL data[15..0] +-- Retrieval info: USED_PORT: q 0 0 8 0 OUTPUT NODEFVAL q[7..0] +-- Retrieval info: USED_PORT: rdclk 0 0 0 0 INPUT NODEFVAL rdclk +-- Retrieval info: USED_PORT: rdreq 0 0 0 0 INPUT NODEFVAL rdreq +-- Retrieval info: USED_PORT: wrclk 0 0 0 0 INPUT NODEFVAL wrclk +-- Retrieval info: USED_PORT: wrreq 0 0 0 0 INPUT NODEFVAL wrreq +-- Retrieval info: USED_PORT: wrusedw 0 0 4 0 OUTPUT NODEFVAL wrusedw[3..0] +-- Retrieval info: CONNECT: @data 0 0 16 0 data 0 0 16 0 +-- Retrieval info: CONNECT: q 0 0 8 0 @q 0 0 8 0 +-- Retrieval info: CONNECT: @wrreq 0 0 0 0 wrreq 0 0 0 0 +-- Retrieval info: CONNECT: @rdreq 0 0 0 0 rdreq 0 0 0 0 +-- Retrieval info: CONNECT: @rdclk 0 0 0 0 rdclk 0 0 0 0 +-- Retrieval info: CONNECT: @wrclk 0 0 0 0 wrclk 0 0 0 0 +-- Retrieval info: CONNECT: wrusedw 0 0 4 0 @wrusedw 0 0 4 0 +-- Retrieval info: CONNECT: @aclr 0 0 0 0 aclr 0 0 0 0 +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo1.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo1.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo1.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo1.bsf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo1_inst.vhd FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo1_waveforms.html FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dcfifo1_wave*.jpg FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_quartus/Interrupt_Handler/interrupt_handler.tdf b/FPGA_quartus/Interrupt_Handler/interrupt_handler.tdf new file mode 100644 index 0000000..a455469 --- /dev/null +++ b/FPGA_quartus/Interrupt_Handler/interrupt_handler.tdf @@ -0,0 +1,478 @@ +TITLE "INTERRUPT HANDLER UND C1287"; + +-- CREATED BY FREDI ASCHWANDEN + +INCLUDE "lpm_bustri_LONG.inc"; +INCLUDE "lpm_bustri_BYT.inc"; + + +-- Parameters Statement (optional) + +-- {{ALTERA_PARAMETERS_BEGIN}} DO NOT REMOVE THIS LINE! +-- {{ALTERA_PARAMETERS_END}} DO NOT REMOVE THIS LINE! + + +-- Subdesign Section + +SUBDESIGN interrupt_handler +( + -- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! + MAIN_CLK : INPUT; + nFB_WR : INPUT; + nFB_CS1 : INPUT; + nFB_CS2 : INPUT; + FB_SIZE0 : INPUT; + FB_SIZE1 : INPUT; + FB_ADR[31..0] : INPUT; + PIC_INT : INPUT; + E0_INT : INPUT; + DVI_INT : INPUT; + nPCI_INTA : INPUT; + nPCI_INTB : INPUT; + nPCI_INTC : INPUT; + nPCI_INTD : INPUT; + nMFP_INT : INPUT; + nFB_OE : INPUT; + DSP_INT : INPUT; + VSYNC : INPUT; + HSYNC : INPUT; + DMA_DRQ : INPUT; + nIRQ[7..2] : OUTPUT; + INT_HANDLER_TA : OUTPUT; + ACP_CONF[31..0] : OUTPUT; + TIN0 : OUTPUT; + FB_AD[31..0] : BIDIR; + -- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! +) + +VARIABLE + FB_B[3..0] :NODE; + INT_CTR[31..0] :DFFE; + INT_CTR_CS :NODE; + INT_LATCH[31..0] :DFF; + INT_LATCH_CS :NODE; + INT_CLEAR[31..0] :DFF; + INT_CLEAR_CS :NODE; + INT_IN[31..0] :NODE; + INT_ENA[31..0] :DFFE; + INT_ENA_CS :NODE; + ACP_CONF[31..0] :DFFE; + ACP_CONF_CS :NODE; + PSEUDO_BUS_ERROR :NODE; + UHR_AS :NODE; + UHR_DS :NODE; + RTC_ADR[5..0] :DFFE; + ACHTELSEKUNDEN[2..0] :DFFE; + WERTE[7..0][63..0] :DFFE; -- WERTE REGISTER 0-63 + PIC_INT_SYNC[2..0] :DFF; + INC_SEC :NODE; + INC_MIN :NODE; + INC_STD :NODE; + INC_TAG :NODE; + ANZAHL_TAGE_DES_MONATS[7..0]:NODE; + WINTERZEIT :NODE; + SOMMERZEIT :NODE; + INC_MONAT :NODE; + INC_JAHR :NODE; + UPDATE_ON :NODE; + +BEGIN +-- BYT SELECT + FB_B0 = FB_SIZE1 & !FB_SIZE0 & !FB_ADR1 -- HWORD + # !FB_SIZE1 & FB_SIZE0 & !FB_ADR1 & !FB_ADR0 -- HHBYT + # !FB_SIZE1 & !FB_SIZE0 # FB_SIZE1 & FB_SIZE0; -- LONG UND LINE + FB_B1 = FB_SIZE1 & !FB_SIZE0 & !FB_ADR1 -- HWORD + # !FB_SIZE1 & FB_SIZE0 & !FB_ADR1 & FB_ADR0 -- HLBYT + # !FB_SIZE1 & !FB_SIZE0 # FB_SIZE1 & FB_SIZE0; -- LONG UND LINE + FB_B2 = FB_SIZE1 & !FB_SIZE0 & FB_ADR1 -- LWORD + # !FB_SIZE1 & FB_SIZE0 & FB_ADR1 & !FB_ADR0 -- LHBYT + # !FB_SIZE1 & !FB_SIZE0 # FB_SIZE1 & FB_SIZE0; -- LONG UND LINE + FB_B3 = FB_SIZE1 & !FB_SIZE0 & FB_ADR1 -- LWORD + # !FB_SIZE1 & FB_SIZE0 & FB_ADR1 & FB_ADR0 -- LLBYT + # !FB_SIZE1 & !FB_SIZE0 # FB_SIZE1 & FB_SIZE0; -- LONG UND LINE + +-- INTERRUPT CONTROL REGISTER: BIT0=INT5 AUSLÖSEN, 1=INT7 AUSLÖSEN + INT_CTR[].CLK = MAIN_CLK; + INT_CTR_CS = !nFB_CS2 & FB_ADR[27..2]==H"4000"; -- $10000/4 + INT_CTR[] = FB_AD[]; + INT_CTR[31..24].ENA = INT_CTR_CS & FB_B0 & !nFB_WR; + INT_CTR[23..16].ENA = INT_CTR_CS & FB_B1 & !nFB_WR; + INT_CTR[15..8].ENA = INT_CTR_CS & FB_B2 & !nFB_WR; + INT_CTR[7..0].ENA = INT_CTR_CS & FB_B3 & !nFB_WR; +-- INTERRUPT ENABLE REGISTER BIT31=INT7,30=INT6,29=INT5,28=INT4,27=INT3,26=INT2 + INT_ENA[].CLK = MAIN_CLK; + INT_ENA_CS = !nFB_CS2 & FB_ADR[27..2]==H"4001"; -- $10004/4 + INT_ENA[] = FB_AD[]; + INT_ENA[31..24].ENA = INT_ENA_CS & FB_B0 & !nFB_WR; + INT_ENA[23..16].ENA = INT_ENA_CS & FB_B1 & !nFB_WR; + INT_ENA[15..8].ENA = INT_ENA_CS & FB_B2 & !nFB_WR; + INT_ENA[7..0].ENA = INT_ENA_CS & FB_B3 & !nFB_WR; +-- INTERRUPT CLEAR REGISTER WRITE ONLY 1=INTERRUPT CLEAR + INT_CLEAR[].CLK = MAIN_CLK; + INT_CLEAR_CS = !nFB_CS2 & FB_ADR[27..2]==H"4002"; -- $10008/4 + INT_CLEAR[31..24] = FB_AD[31..24] & INT_CLEAR_CS & FB_B0 & !nFB_WR; + INT_CLEAR[23..16] = FB_AD[23..16] & INT_CLEAR_CS & FB_B1 & !nFB_WR; + INT_CLEAR[15..8] = FB_AD[15..8] & INT_CLEAR_CS & FB_B2 & !nFB_WR; + INT_CLEAR[7..0] = FB_AD[7..0] & INT_CLEAR_CS & FB_B3 & !nFB_WR; +-- INTERRUPT LATCH REGISTER READ ONLY + INT_LATCH_CS = !nFB_CS2 & FB_ADR[27..2]==H"4003"; -- $1000C/4 +-- INTERRUPT + !nIRQ2 = HSYNC & INT_ENA[26]; + !nIRQ3 = INT_CTR0 & INT_ENA[27]; + !nIRQ4 = VSYNC & INT_ENA[28]; + nIRQ5 = INT_LATCH[]==H"00000000" & INT_ENA[29]; + !nIRQ6 = !nMFP_INT & INT_ENA[30]; + !nIRQ7 = PSEUDO_BUS_ERROR & INT_ENA[31]; + +PSEUDO_BUS_ERROR = !nFB_CS1 & (FB_ADR[19..4]==H"F8C8" -- SCC + # FB_ADR[19..4]==H"F8E0" -- VME + # FB_ADR[19..4]==H"F920" -- PADDLE + # FB_ADR[19..4]==H"F921" -- PADDLE + # FB_ADR[19..4]==H"F922" -- PADDLE + # FB_ADR[19..4]==H"FFA8" -- MFP2 + # FB_ADR[19..4]==H"FFA9" -- MFP2 + # FB_ADR[19..4]==H"FFAA" -- MFP2 + # FB_ADR[19..4]==H"FFA8" -- MFP2 + # FB_ADR[19..8]==H"F87" -- TT SCSI + # FB_ADR[19..4]==H"FFC2" -- ST UHR + # FB_ADR[19..4]==H"FFC3" -- ST UHR + # FB_ADR[19..4]==H"F890" -- DMA SOUND + # FB_ADR[19..4]==H"F891" -- DMA SOUND + # FB_ADR[19..4]==H"F892"); -- DMA SOUND +-- IF VIDEO ADR CHANGE +TIN0 = !nFB_CS1 & FB_ADR[19..1]==H"7C100" & !nFB_WR; -- WRITE VIDEO BASE ADR HIGH 0xFFFF8201/2 + +-- INTERRUPT LATCH + INT_LATCH[] = H"FFFFFFFF"; + INT_LATCH0.CLK = PIC_INT & INT_ENA[0]; + INT_LATCH1.CLK = E0_INT & INT_ENA[1]; + INT_LATCH2.CLK = DVI_INT & INT_ENA[2]; + INT_LATCH3.CLK = !nPCI_INTA & INT_ENA[3]; + INT_LATCH4.CLK = !nPCI_INTB & INT_ENA[4]; + INT_LATCH5.CLK = !nPCI_INTC & INT_ENA[5]; + INT_LATCH6.CLK = !nPCI_INTD & INT_ENA[6]; + INT_LATCH7.CLK = DSP_INT & INT_ENA[7]; + INT_LATCH8.CLK = VSYNC & INT_ENA[8]; + INT_LATCH9.CLK = HSYNC & INT_ENA[9]; + +-- INTERRUPT CLEAR + INT_LATCH[].CLRN = !INT_CLEAR[]; + +-- INT_IN + INT_IN0 = PIC_INT; + INT_IN1 = E0_INT; + INT_IN2 = DVI_INT; + INT_IN3 = !nPCI_INTA; + INT_IN4 = !nPCI_INTB; + INT_IN5 = !nPCI_INTC; + INT_IN6 = !nPCI_INTD; + INT_IN7 = DSP_INT; + INT_IN8 = VSYNC; + INT_IN9 = HSYNC; + INT_IN[25..10] = H"0"; + INT_IN26 = HSYNC; + INT_IN27 = INT_CTR0; + INT_IN28 = VSYNC; + INT_IN29 = INT_LATCH[]!=H"00000000"; + INT_IN30 = !nMFP_INT; + INT_IN31 = DMA_DRQ; +--*************************************************************************************** +-- ACP CONFIG REGISTER: BIT 31-> 0=CF 1=IDE + ACP_CONF[].CLK = MAIN_CLK; + ACP_CONF_CS = !nFB_CS2 & FB_ADR[27..2]==H"10000"; -- $4'0000/4 + ACP_CONF[] = FB_AD[]; + ACP_CONF[31..24].ENA = ACP_CONF_CS & FB_B0 & !nFB_WR; + ACP_CONF[23..16].ENA = ACP_CONF_CS & FB_B1 & !nFB_WR; + ACP_CONF[15..8].ENA = ACP_CONF_CS & FB_B2 & !nFB_WR; + ACP_CONF[7..0].ENA = ACP_CONF_CS & FB_B3 & !nFB_WR; +--*************************************************************************************** + +-------------------------------------------------------------- +-- C1287 0=SEK 2=MIN 4=STD 6=WOCHENTAG 7=TAG 8=MONAT 9=JAHR +---------------------------------------------------------- + RTC_ADR[].CLK = MAIN_CLK; + RTC_ADR[] = FB_AD[21..16]; + UHR_AS = !nFB_CS1 & FB_ADR[19..1]==H"7C4B0" & FB_B1; -- FFFF8961 + UHR_DS = !nFB_CS1 & FB_ADR[19..1]==H"7C4B1" & FB_B3; -- FFFF8963 + RTC_ADR[].ENA = UHR_AS & !nFB_WR; + WERTE[][].CLK = MAIN_CLK; + WERTE[7..0][0] = FB_AD[23..16] & RTC_ADR[]==0 & UHR_DS & !nFB_WR; + WERTE[7..0][1] = FB_AD[23..16]; + WERTE[7..0][2] = FB_AD[23..16] & RTC_ADR[]==2 & UHR_DS & !nFB_WR; + WERTE[7..0][3] = FB_AD[23..16]; + WERTE[7..0][4] = FB_AD[23..16] & RTC_ADR[]==4 & UHR_DS & !nFB_WR; + WERTE[7..0][5] = FB_AD[23..16]; + WERTE[7..0][6] = FB_AD[23..16] & RTC_ADR[]==6 & UHR_DS & !nFB_WR; + WERTE[7..0][7] = FB_AD[23..16] & RTC_ADR[]==7 & UHR_DS & !nFB_WR; + WERTE[7..0][8] = FB_AD[23..16] & RTC_ADR[]==8 & UHR_DS & !nFB_WR; + WERTE[7..0][9] = FB_AD[23..16] & RTC_ADR[]==9 & UHR_DS & !nFB_WR; + WERTE[7..0][10] = FB_AD[23..16]; + WERTE[7..0][11] = FB_AD[23..16]; + WERTE[7..0][12] = FB_AD[23..16]; + WERTE[7..0][13] = FB_AD[23..16]; + WERTE[7..0][14] = FB_AD[23..16]; + WERTE[7..0][15] = FB_AD[23..16]; + WERTE[7..0][16] = FB_AD[23..16]; + WERTE[7..0][17] = FB_AD[23..16]; + WERTE[7..0][18] = FB_AD[23..16]; + WERTE[7..0][19] = FB_AD[23..16]; + WERTE[7..0][20] = FB_AD[23..16]; + WERTE[7..0][21] = FB_AD[23..16]; + WERTE[7..0][22] = FB_AD[23..16]; + WERTE[7..0][23] = FB_AD[23..16]; + WERTE[7..0][24] = FB_AD[23..16]; + WERTE[7..0][25] = FB_AD[23..16]; + WERTE[7..0][26] = FB_AD[23..16]; + WERTE[7..0][27] = FB_AD[23..16]; + WERTE[7..0][28] = FB_AD[23..16]; + WERTE[7..0][29] = FB_AD[23..16]; + WERTE[7..0][30] = FB_AD[23..16]; + WERTE[7..0][31] = FB_AD[23..16]; + WERTE[7..0][32] = FB_AD[23..16]; + WERTE[7..0][33] = FB_AD[23..16]; + WERTE[7..0][34] = FB_AD[23..16]; + WERTE[7..0][35] = FB_AD[23..16]; + WERTE[7..0][36] = FB_AD[23..16]; + WERTE[7..0][37] = FB_AD[23..16]; + WERTE[7..0][38] = FB_AD[23..16]; + WERTE[7..0][39] = FB_AD[23..16]; + WERTE[7..0][40] = FB_AD[23..16]; + WERTE[7..0][41] = FB_AD[23..16]; + WERTE[7..0][42] = FB_AD[23..16]; + WERTE[7..0][43] = FB_AD[23..16]; + WERTE[7..0][44] = FB_AD[23..16]; + WERTE[7..0][45] = FB_AD[23..16]; + WERTE[7..0][46] = FB_AD[23..16]; + WERTE[7..0][47] = FB_AD[23..16]; + WERTE[7..0][48] = FB_AD[23..16]; + WERTE[7..0][49] = FB_AD[23..16]; + WERTE[7..0][50] = FB_AD[23..16]; + WERTE[7..0][51] = FB_AD[23..16]; + WERTE[7..0][52] = FB_AD[23..16]; + WERTE[7..0][53] = FB_AD[23..16]; + WERTE[7..0][54] = FB_AD[23..16]; + WERTE[7..0][55] = FB_AD[23..16]; + WERTE[7..0][56] = FB_AD[23..16]; + WERTE[7..0][57] = FB_AD[23..16]; + WERTE[7..0][58] = FB_AD[23..16]; + WERTE[7..0][59] = FB_AD[23..16]; + WERTE[7..0][60] = FB_AD[23..16]; + WERTE[7..0][61] = FB_AD[23..16]; + WERTE[7..0][62] = FB_AD[23..16]; + WERTE[7..0][63] = FB_AD[23..16]; + WERTE[][0].ENA = RTC_ADR[]==0 & UHR_DS & !nFB_WR; + WERTE[][1].ENA = RTC_ADR[]==1 & UHR_DS & !nFB_WR; + WERTE[][2].ENA = RTC_ADR[]==2 & UHR_DS & !nFB_WR; + WERTE[][3].ENA = RTC_ADR[]==3 & UHR_DS & !nFB_WR; + WERTE[][4].ENA = RTC_ADR[]==4 & UHR_DS & !nFB_WR; + WERTE[][5].ENA = RTC_ADR[]==5 & UHR_DS & !nFB_WR; + WERTE[][6].ENA = RTC_ADR[]==6 & UHR_DS & !nFB_WR; + WERTE[][7].ENA = RTC_ADR[]==7 & UHR_DS & !nFB_WR; + WERTE[][8].ENA = RTC_ADR[]==8 & UHR_DS & !nFB_WR; + WERTE[][9].ENA = RTC_ADR[]==9 & UHR_DS & !nFB_WR; + WERTE[][10].ENA = RTC_ADR[]==10 & UHR_DS & !nFB_WR; + WERTE[][11].ENA = RTC_ADR[]==11 & UHR_DS & !nFB_WR; + WERTE[][12].ENA = RTC_ADR[]==12 & UHR_DS & !nFB_WR; + WERTE[][13].ENA = RTC_ADR[]==13 & UHR_DS & !nFB_WR; + WERTE[][14].ENA = RTC_ADR[]==14 & UHR_DS & !nFB_WR; + WERTE[][15].ENA = RTC_ADR[]==15 & UHR_DS & !nFB_WR; + WERTE[][16].ENA = RTC_ADR[]==16 & UHR_DS & !nFB_WR; + WERTE[][17].ENA = RTC_ADR[]==17 & UHR_DS & !nFB_WR; + WERTE[][18].ENA = RTC_ADR[]==18 & UHR_DS & !nFB_WR; + WERTE[][19].ENA = RTC_ADR[]==19 & UHR_DS & !nFB_WR; + WERTE[][20].ENA = RTC_ADR[]==20 & UHR_DS & !nFB_WR; + WERTE[][21].ENA = RTC_ADR[]==21 & UHR_DS & !nFB_WR; + WERTE[][22].ENA = RTC_ADR[]==22 & UHR_DS & !nFB_WR; + WERTE[][23].ENA = RTC_ADR[]==23 & UHR_DS & !nFB_WR; + WERTE[][24].ENA = RTC_ADR[]==24 & UHR_DS & !nFB_WR; + WERTE[][25].ENA = RTC_ADR[]==25 & UHR_DS & !nFB_WR; + WERTE[][26].ENA = RTC_ADR[]==26 & UHR_DS & !nFB_WR; + WERTE[][27].ENA = RTC_ADR[]==27 & UHR_DS & !nFB_WR; + WERTE[][28].ENA = RTC_ADR[]==28 & UHR_DS & !nFB_WR; + WERTE[][29].ENA = RTC_ADR[]==29 & UHR_DS & !nFB_WR; + WERTE[][30].ENA = RTC_ADR[]==30 & UHR_DS & !nFB_WR; + WERTE[][31].ENA = RTC_ADR[]==31 & UHR_DS & !nFB_WR; + WERTE[][32].ENA = RTC_ADR[]==32 & UHR_DS & !nFB_WR; + WERTE[][33].ENA = RTC_ADR[]==33 & UHR_DS & !nFB_WR; + WERTE[][34].ENA = RTC_ADR[]==34 & UHR_DS & !nFB_WR; + WERTE[][35].ENA = RTC_ADR[]==35 & UHR_DS & !nFB_WR; + WERTE[][36].ENA = RTC_ADR[]==36 & UHR_DS & !nFB_WR; + WERTE[][37].ENA = RTC_ADR[]==37 & UHR_DS & !nFB_WR; + WERTE[][38].ENA = RTC_ADR[]==38 & UHR_DS & !nFB_WR; + WERTE[][39].ENA = RTC_ADR[]==39 & UHR_DS & !nFB_WR; + WERTE[][40].ENA = RTC_ADR[]==40 & UHR_DS & !nFB_WR; + WERTE[][41].ENA = RTC_ADR[]==41 & UHR_DS & !nFB_WR; + WERTE[][42].ENA = RTC_ADR[]==42 & UHR_DS & !nFB_WR; + WERTE[][43].ENA = RTC_ADR[]==43 & UHR_DS & !nFB_WR; + WERTE[][44].ENA = RTC_ADR[]==44 & UHR_DS & !nFB_WR; + WERTE[][45].ENA = RTC_ADR[]==45 & UHR_DS & !nFB_WR; + WERTE[][46].ENA = RTC_ADR[]==46 & UHR_DS & !nFB_WR; + WERTE[][47].ENA = RTC_ADR[]==47 & UHR_DS & !nFB_WR; + WERTE[][48].ENA = RTC_ADR[]==48 & UHR_DS & !nFB_WR; + WERTE[][49].ENA = RTC_ADR[]==49 & UHR_DS & !nFB_WR; + WERTE[][50].ENA = RTC_ADR[]==50 & UHR_DS & !nFB_WR; + WERTE[][51].ENA = RTC_ADR[]==51 & UHR_DS & !nFB_WR; + WERTE[][52].ENA = RTC_ADR[]==52 & UHR_DS & !nFB_WR; + WERTE[][53].ENA = RTC_ADR[]==53 & UHR_DS & !nFB_WR; + WERTE[][54].ENA = RTC_ADR[]==54 & UHR_DS & !nFB_WR; + WERTE[][55].ENA = RTC_ADR[]==55 & UHR_DS & !nFB_WR; + WERTE[][56].ENA = RTC_ADR[]==56 & UHR_DS & !nFB_WR; + WERTE[][57].ENA = RTC_ADR[]==57 & UHR_DS & !nFB_WR; + WERTE[][58].ENA = RTC_ADR[]==58 & UHR_DS & !nFB_WR; + WERTE[][59].ENA = RTC_ADR[]==59 & UHR_DS & !nFB_WR; + WERTE[][60].ENA = RTC_ADR[]==60 & UHR_DS & !nFB_WR; + WERTE[][61].ENA = RTC_ADR[]==61 & UHR_DS & !nFB_WR; + WERTE[][62].ENA = RTC_ADR[]==62 & UHR_DS & !nFB_WR; + WERTE[][63].ENA = RTC_ADR[]==63 & UHR_DS & !nFB_WR; + PIC_INT_SYNC[].CLK = MAIN_CLK; PIC_INT_SYNC[0] = PIC_INT; + PIC_INT_SYNC[1] = PIC_INT_SYNC[0]; + PIC_INT_SYNC[2] = !PIC_INT_SYNC[1] & PIC_INT_SYNC[0]; + UPDATE_ON = !WERTE[7][11]; + WERTE[6][10].CLRN = GND; -- KEIN UIP + UPDATE_ON = !WERTE[7][11]; -- UPDATE ON OFF + WERTE[2][11] = VCC; -- IMMER BINARY + WERTE[1][11] = VCC; -- IMMER 24H FORMAT + WERTE[0][11] = VCC; -- IMMER SOMMERZEITKORREKTUR + WERTE[7][13] = VCC; -- IMMER RICHTIG +-- SOMMER WINTERZEIT: BIT 0 IM REGISTER D IST DIE INFORMATION OB SOMMERZEIT IST (BRAUCHT MAN FÜR RÜCKSCHALTUNG) + SOMMERZEIT = WERTE[][6]==1 & WERTE[][4]==1 & WERTE[][8]==4 & WERTE[][7]>23; --LETZTER SONNTAG IM APRIL + WERTE[0][13] = SOMMERZEIT; + WERTE[0][13].ENA = INC_STD & (SOMMERZEIT # WINTERZEIT); + WINTERZEIT = WERTE[][6]==1 & WERTE[][4]==1 & WERTE[][8]==10 & WERTE[][7]>24 & WERTE[0][13]; --LETZTER SONNTAG IM OKTOBER +-- ACHTELSEKUNDEN + ACHTELSEKUNDEN[].CLK = MAIN_CLK; + ACHTELSEKUNDEN[] = ACHTELSEKUNDEN[]+1; + ACHTELSEKUNDEN[].ENA = PIC_INT_SYNC[2] & UPDATE_ON; +-- SEKUNDEN + INC_SEC = ACHTELSEKUNDEN[]==7 & PIC_INT_SYNC[2] & UPDATE_ON; + WERTE[][0] = (WERTE[][0]+1) & WERTE[][0]!=59 & !(RTC_ADR[]==0 & UHR_DS & !nFB_WR); -- SEKUNDEN ZÄHLEN BIS 59 + WERTE[][0].ENA = INC_SEC & !(RTC_ADR[]==0 & UHR_DS & !nFB_WR); +-- MINUTEN + INC_MIN = INC_SEC & WERTE[][0]==59; -- + WERTE[][2] = (WERTE[][2]+1) & WERTE[][2]!=59 & !(RTC_ADR[]==2 & UHR_DS & !nFB_WR); -- MINUTEN ZÄHLEN BIS 59 + WERTE[][2].ENA = INC_MIN & !(RTC_ADR[]==2 & UHR_DS & !nFB_WR); -- +-- STUNDEN + INC_STD = INC_MIN & WERTE[][2]==59; + WERTE[][4] = (WERTE[][4]+1+(1 & SOMMERZEIT)) & WERTE[][4]!=23 & !(RTC_ADR[]==4 & UHR_DS & !nFB_WR); -- STUNDEN ZÄHLEN BIS 23 + WERTE[][4].ENA = INC_STD & !(WINTERZEIT & WERTE[0][12]) & !(RTC_ADR[]==4 & UHR_DS & !nFB_WR); -- EINE STUNDE AUSLASSEN WENN WINTERZEITUMSCHALTUNG UND NOCH SOMMERZEIT +-- WOCHENTAG UND TAG + INC_TAG = INC_STD & WERTE[][2]==23; + WERTE[][6] = (WERTE[][6]+1) & WERTE[][6]!=7 & !(RTC_ADR[]==6 & UHR_DS & !nFB_WR) -- WOCHENTAG ZÄHLEN BIS 7 + # 1 & WERTE[][6]==7 & !(RTC_ADR[]==6 & UHR_DS & !nFB_WR); -- DANN BEI 1 WEITER + WERTE[][6].ENA = INC_TAG & !(RTC_ADR[]==6 & UHR_DS & !nFB_WR); + ANZAHL_TAGE_DES_MONATS[] = 31 & (WERTE[][8]==1 # WERTE[][8]==3 # WERTE[][8]==5 # WERTE[][8]==7 # WERTE[][8]==8 # WERTE[][8]==10 # WERTE[][8]==12) + # 30 & (WERTE[][8]==4 # WERTE[][8]==6 # WERTE[][8]==9 # WERTE[][8]==11) + # 29 & WERTE[][8]==2 & WERTE[1..0][9]==0 + # 28 & WERTE[][8]==2 & WERTE[1..0][9]!=0; + WERTE[][7] = (WERTE[][7]+1) & WERTE[][7]!=ANZAHL_TAGE_DES_MONATS[] & !(RTC_ADR[]==7 & UHR_DS & !nFB_WR) -- TAG ZÄHLEN BIS MONATSENDE + # 1 & WERTE[][7]==ANZAHL_TAGE_DES_MONATS[] & !(RTC_ADR[]==7 & UHR_DS & !nFB_WR); -- DANN BEI 1 WEITER + WERTE[][7].ENA = INC_TAG & !(RTC_ADR[]==7 & UHR_DS & !nFB_WR); -- +-- MONATE + INC_MONAT = INC_TAG & WERTE[][7]==ANZAHL_TAGE_DES_MONATS[]; -- + WERTE[][8] = (WERTE[][8]+1) & WERTE[][8]!=12 & !(RTC_ADR[]==8 & UHR_DS & !nFB_WR) -- MONATE ZÄHLEN BIS 12 + # 1 & WERTE[][8]==12 & !(RTC_ADR[]==8 & UHR_DS & !nFB_WR); -- DANN BEI 1 WEITER + WERTE[][8].ENA = INC_MONAT & !(RTC_ADR[]==8 & UHR_DS & !nFB_WR); +-- JAHR + INC_JAHR = INC_MONAT & WERTE[][8]==12; -- + WERTE[][9] = (WERTE[][9]+1) & WERTE[][9]!=99 & !(RTC_ADR[]==9 & UHR_DS & !nFB_WR); -- JAHRE ZÄHLEN BIS 99 + WERTE[][9].ENA = INC_JAHR & !(RTC_ADR[]==9 & UHR_DS & !nFB_WR); +-- TRISTATE OUTPUT + + FB_AD[31..24] = lpm_bustri_BYT( + INT_CTR_CS & INT_CTR[31..24] + # INT_ENA_CS & INT_ENA[31..24] + # INT_LATCH_CS & INT_LATCH[31..24] + # INT_CLEAR_CS & INT_IN[31..24] + # ACP_CONF_CS & ACP_CONF[31..24] + ,(INT_CTR_CS # INT_ENA_CS # INT_LATCH_CS # INT_CLEAR_CS # ACP_CONF_CS) & !nFB_OE); + FB_AD[23..16] = lpm_bustri_BYT( + WERTE[][0] & RTC_ADR[]==0 & UHR_DS + # WERTE[][1] & RTC_ADR[]==1 & UHR_DS + # WERTE[][2] & RTC_ADR[]==2 & UHR_DS + # WERTE[][3] & RTC_ADR[]==3 & UHR_DS + # WERTE[][4] & RTC_ADR[]==4 & UHR_DS + # WERTE[][5] & RTC_ADR[]==5 & UHR_DS + # WERTE[][6] & RTC_ADR[]==6 & UHR_DS + # WERTE[][7] & RTC_ADR[]==7 & UHR_DS + # WERTE[][8] & RTC_ADR[]==8 & UHR_DS + # WERTE[][9] & RTC_ADR[]==9 & UHR_DS + # WERTE[][10] & RTC_ADR[]==10 & UHR_DS + # WERTE[][11] & RTC_ADR[]==11 & UHR_DS + # WERTE[][12] & RTC_ADR[]==12 & UHR_DS + # WERTE[][13] & RTC_ADR[]==13 & UHR_DS + # WERTE[][14] & RTC_ADR[]==14 & UHR_DS + # WERTE[][15] & RTC_ADR[]==15 & UHR_DS + # WERTE[][16] & RTC_ADR[]==16 & UHR_DS + # WERTE[][17] & RTC_ADR[]==17 & UHR_DS + # WERTE[][18] & RTC_ADR[]==18 & UHR_DS + # WERTE[][19] & RTC_ADR[]==19 & UHR_DS + # WERTE[][20] & RTC_ADR[]==20 & UHR_DS + # WERTE[][21] & RTC_ADR[]==21 & UHR_DS + # WERTE[][22] & RTC_ADR[]==22 & UHR_DS + # WERTE[][23] & RTC_ADR[]==23 & UHR_DS + # WERTE[][24] & RTC_ADR[]==24 & UHR_DS + # WERTE[][25] & RTC_ADR[]==25 & UHR_DS + # WERTE[][26] & RTC_ADR[]==26 & UHR_DS + # WERTE[][27] & RTC_ADR[]==27 & UHR_DS + # WERTE[][28] & RTC_ADR[]==28 & UHR_DS + # WERTE[][29] & RTC_ADR[]==29 & UHR_DS + # WERTE[][30] & RTC_ADR[]==30 & UHR_DS + # WERTE[][31] & RTC_ADR[]==31 & UHR_DS + # WERTE[][32] & RTC_ADR[]==32 & UHR_DS + # WERTE[][33] & RTC_ADR[]==33 & UHR_DS + # WERTE[][34] & RTC_ADR[]==34 & UHR_DS + # WERTE[][35] & RTC_ADR[]==35 & UHR_DS + # WERTE[][36] & RTC_ADR[]==36 & UHR_DS + # WERTE[][37] & RTC_ADR[]==37 & UHR_DS + # WERTE[][38] & RTC_ADR[]==38 & UHR_DS + # WERTE[][39] & RTC_ADR[]==39 & UHR_DS + # WERTE[][40] & RTC_ADR[]==40 & UHR_DS + # WERTE[][41] & RTC_ADR[]==41 & UHR_DS + # WERTE[][42] & RTC_ADR[]==42 & UHR_DS + # WERTE[][43] & RTC_ADR[]==43 & UHR_DS + # WERTE[][44] & RTC_ADR[]==44 & UHR_DS + # WERTE[][45] & RTC_ADR[]==45 & UHR_DS + # WERTE[][46] & RTC_ADR[]==46 & UHR_DS + # WERTE[][47] & RTC_ADR[]==47 & UHR_DS + # WERTE[][48] & RTC_ADR[]==48 & UHR_DS + # WERTE[][49] & RTC_ADR[]==49 & UHR_DS + # WERTE[][50] & RTC_ADR[]==50 & UHR_DS + # WERTE[][51] & RTC_ADR[]==51 & UHR_DS + # WERTE[][52] & RTC_ADR[]==52 & UHR_DS + # WERTE[][53] & RTC_ADR[]==53 & UHR_DS + # WERTE[][54] & RTC_ADR[]==54 & UHR_DS + # WERTE[][55] & RTC_ADR[]==55 & UHR_DS + # WERTE[][56] & RTC_ADR[]==56 & UHR_DS + # WERTE[][57] & RTC_ADR[]==57 & UHR_DS + # WERTE[][58] & RTC_ADR[]==58 & UHR_DS + # WERTE[][59] & RTC_ADR[]==59 & UHR_DS + # WERTE[][60] & RTC_ADR[]==60 & UHR_DS + # WERTE[][61] & RTC_ADR[]==61 & UHR_DS + # WERTE[][62] & RTC_ADR[]==62 & UHR_DS + # WERTE[][63] & RTC_ADR[]==63 & UHR_DS + # (0,RTC_ADR[]) & UHR_AS + # INT_CTR_CS & INT_CTR[23..16] + # INT_ENA_CS & INT_ENA[23..16] + # INT_LATCH_CS & INT_LATCH[23..16] + # INT_CLEAR_CS & INT_IN[23..16] + # ACP_CONF_CS & ACP_CONF[23..16] + ,(UHR_DS # UHR_AS # INT_CTR_CS # INT_ENA_CS # INT_LATCH_CS # INT_CLEAR_CS # ACP_CONF_CS) & !nFB_OE); + FB_AD[15..8] = lpm_bustri_BYT( + INT_CTR_CS & INT_CTR[15..8] + # INT_ENA_CS & INT_ENA[15..8] + # INT_LATCH_CS & INT_LATCH[15..8] + # INT_CLEAR_CS & INT_IN[15..8] + # ACP_CONF_CS & ACP_CONF[15..8] + ,(INT_CTR_CS # INT_ENA_CS # INT_LATCH_CS # INT_CLEAR_CS # ACP_CONF_CS) & !nFB_OE); + FB_AD[7..0] = lpm_bustri_BYT( + INT_CTR_CS & INT_CTR[7..0] + # INT_ENA_CS & INT_ENA[7..0] + # INT_LATCH_CS & INT_LATCH[7..0] + # INT_CLEAR_CS & INT_IN[7..0] + # ACP_CONF_CS & ACP_CONF[7..0] + ,(INT_CTR_CS # INT_ENA_CS # INT_LATCH_CS # INT_CLEAR_CS # ACP_CONF_CS) & !nFB_OE); + + INT_HANDLER_TA = INT_CTR_CS # INT_ENA_CS # INT_LATCH_CS # INT_CLEAR_CS; +END; + + diff --git a/FPGA_quartus/Interrupt_Handler/interrupt_handler.tdf.bak b/FPGA_quartus/Interrupt_Handler/interrupt_handler.tdf.bak new file mode 100644 index 0000000..e3e49eb --- /dev/null +++ b/FPGA_quartus/Interrupt_Handler/interrupt_handler.tdf.bak @@ -0,0 +1,478 @@ +TITLE "INTERRUPT HANDLER UND C1287"; + +-- CREATED BY FREDI ASCHWANDEN + +INCLUDE "lpm_bustri_LONG.inc"; +INCLUDE "lpm_bustri_BYT.inc"; + + +-- Parameters Statement (optional) + +-- {{ALTERA_PARAMETERS_BEGIN}} DO NOT REMOVE THIS LINE! +-- {{ALTERA_PARAMETERS_END}} DO NOT REMOVE THIS LINE! + + +-- Subdesign Section + +SUBDESIGN interrupt_handler +( + -- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! + MAIN_CLK : INPUT; + nFB_WR : INPUT; + nFB_CS1 : INPUT; + nFB_CS2 : INPUT; + FB_SIZE0 : INPUT; + FB_SIZE1 : INPUT; + FB_ADR[31..0] : INPUT; + PIC_INT : INPUT; + E0_INT : INPUT; + DVI_INT : INPUT; + nPCI_INTA : INPUT; + nPCI_INTB : INPUT; + nPCI_INTC : INPUT; + nPCI_INTD : INPUT; + nMFP_INT : INPUT; + nFB_OE : INPUT; + DSP_INT : INPUT; + VSYNC : INPUT; + HSYNC : INPUT; + DMA_DRQ : INPUT; + nIRQ[7..2] : OUTPUT; + INT_HANDLER_TA : OUTPUT; + ACP_CONF[31..0] : OUTPUT; + TIN0 : OUTPUT; + FB_AD[31..0] : BIDIR; + -- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! +) + +VARIABLE + FB_B[3..0] :NODE; + INT_CTR[31..0] :DFFE; + INT_CTR_CS :NODE; + INT_LATCH[31..0] :DFF; + INT_LATCH_CS :NODE; + INT_CLEAR[31..0] :DFF; + INT_CLEAR_CS :NODE; + INT_IN[31..0] :NODE; + INT_ENA[31..0] :DFFE; + INT_ENA_CS :NODE; + ACP_CONF[31..0] :DFFE; + ACP_CONF_CS :NODE; + PSEUDO_BUS_ERROR :NODE; + UHR_AS :NODE; + UHR_DS :NODE; + RTC_ADR[5..0] :DFFE; + ACHTELSEKUNDEN[2..0] :DFFE; + WERTE[7..0][63..0] :DFFE; -- WERTE REGISTER 0-63 + PIC_INT_SYNC[2..0] :DFF; + INC_SEC :NODE; + INC_MIN :NODE; + INC_STD :NODE; + INC_TAG :NODE; + ANZAHL_TAGE_DES_MONATS[7..0]:NODE; + WINTERZEIT :NODE; + SOMMERZEIT :NODE; + INC_MONAT :NODE; + INC_JAHR :NODE; + UPDATE_ON :NODE; + +BEGIN +-- BYT SELECT + FB_B0 = FB_SIZE1 & !FB_SIZE0 & !FB_ADR1 -- HWORD + # !FB_SIZE1 & FB_SIZE0 & !FB_ADR1 & !FB_ADR0 -- HHBYT + # !FB_SIZE1 & !FB_SIZE0 # FB_SIZE1 & FB_SIZE0; -- LONG UND LINE + FB_B1 = FB_SIZE1 & !FB_SIZE0 & !FB_ADR1 -- HWORD + # !FB_SIZE1 & FB_SIZE0 & !FB_ADR1 & FB_ADR0 -- HLBYT + # !FB_SIZE1 & !FB_SIZE0 # FB_SIZE1 & FB_SIZE0; -- LONG UND LINE + FB_B2 = FB_SIZE1 & !FB_SIZE0 & FB_ADR1 -- LWORD + # !FB_SIZE1 & FB_SIZE0 & FB_ADR1 & !FB_ADR0 -- LHBYT + # !FB_SIZE1 & !FB_SIZE0 # FB_SIZE1 & FB_SIZE0; -- LONG UND LINE + FB_B3 = FB_SIZE1 & !FB_SIZE0 & FB_ADR1 -- LWORD + # !FB_SIZE1 & FB_SIZE0 & FB_ADR1 & FB_ADR0 -- LLBYT + # !FB_SIZE1 & !FB_SIZE0 # FB_SIZE1 & FB_SIZE0; -- LONG UND LINE + +-- INTERRUPT CONTROL REGISTER: BIT0=INT5 AUSLÖSEN, 1=INT7 AUSLÖSEN + INT_CTR[].CLK = MAIN_CLK; + INT_CTR_CS = !nFB_CS2 & FB_ADR[27..2]==H"4000"; -- $10000/4 + INT_CTR[] = FB_AD[]; + INT_CTR[31..24].ENA = INT_CTR_CS & FB_B0 & !nFB_WR; + INT_CTR[23..16].ENA = INT_CTR_CS & FB_B1 & !nFB_WR; + INT_CTR[15..8].ENA = INT_CTR_CS & FB_B2 & !nFB_WR; + INT_CTR[7..0].ENA = INT_CTR_CS & FB_B3 & !nFB_WR; +-- INTERRUPT ENABLE REGISTER BIT31=INT7,30=INT6,29=INT5,28=INT4,27=INT3,26=INT2 + INT_ENA[].CLK = MAIN_CLK; + INT_ENA_CS = !nFB_CS2 & FB_ADR[27..2]==H"4001"; -- $10004/4 + INT_ENA[] = FB_AD[]; + INT_ENA[31..24].ENA = INT_ENA_CS & FB_B0 & !nFB_WR; + INT_ENA[23..16].ENA = INT_ENA_CS & FB_B1 & !nFB_WR; + INT_ENA[15..8].ENA = INT_ENA_CS & FB_B2 & !nFB_WR; + INT_ENA[7..0].ENA = INT_ENA_CS & FB_B3 & !nFB_WR; +-- INTERRUPT CLEAR REGISTER WRITE ONLY 1=INTERRUPT CLEAR + INT_CLEAR[].CLK = MAIN_CLK; + INT_CLEAR_CS = !nFB_CS2 & FB_ADR[27..2]==H"4002"; -- $10008/4 + INT_CLEAR[31..24] = FB_AD[31..24] & INT_CLEAR_CS & FB_B0 & !nFB_WR; + INT_CLEAR[23..16] = FB_AD[23..16] & INT_CLEAR_CS & FB_B1 & !nFB_WR; + INT_CLEAR[15..8] = FB_AD[15..8] & INT_CLEAR_CS & FB_B2 & !nFB_WR; + INT_CLEAR[7..0] = FB_AD[7..0] & INT_CLEAR_CS & FB_B3 & !nFB_WR; +-- INTERRUPT LATCH REGISTER READ ONLY + INT_LATCH_CS = !nFB_CS2 & FB_ADR[27..2]==H"4003"; -- $1000C/4 +-- INTERRUPT + !nIRQ2 = HSYNC & INT_ENA[26]; + !nIRQ3 = INT_CTR0 & INT_ENA[27]; + !nIRQ4 = VSYNC & INT_ENA[28]; + nIRQ5 = INT_LATCH[]==H"00000000" & INT_ENA[29]; + !nIRQ6 = !nMFP_INT & INT_ENA[30]; + !nIRQ7 = PSEUDO_BUS_ERROR & INT_ENA[31]; + +PSEUDO_BUS_ERROR = !nFB_CS1 & (FB_ADR[19..4]==H"F8C8" -- SCC + # FB_ADR[19..4]==H"F8E0" -- VME + # FB_ADR[19..4]==H"F920" -- PADDLE + # FB_ADR[19..4]==H"F921" -- PADDLE + # FB_ADR[19..4]==H"F922" -- PADDLE + # FB_ADR[19..4]==H"FFA8" -- MFP2 + # FB_ADR[19..4]==H"FFA9" -- MFP2 + # FB_ADR[19..4]==H"FFAA" -- MFP2 + # FB_ADR[19..4]==H"FFA8" -- MFP2 + # FB_ADR[19..8]==H"F87" -- TT SCSI + # FB_ADR[19..4]==H"FFC2" -- ST UHR + # FB_ADR[19..4]==H"FFC3" -- ST UHR + # FB_ADR[19..4]==H"F890" -- DMA SOUND + # FB_ADR[19..4]==H"F891" -- DMA SOUND + # FB_ADR[19..4]==H"F892"); -- DMA SOUND +-- IF VIDEO ADR CHANGE +TIN0 = !nFB_CS1 & FB_ADR[19..1]==H"7C100"; -- VIDEO BASE ADR HIGH 0xFFFF8201/2 + +-- INTERRUPT LATCH + INT_LATCH[] = H"FFFFFFFF"; + INT_LATCH0.CLK = PIC_INT & INT_ENA[0]; + INT_LATCH1.CLK = E0_INT & INT_ENA[1]; + INT_LATCH2.CLK = DVI_INT & INT_ENA[2]; + INT_LATCH3.CLK = !nPCI_INTA & INT_ENA[3]; + INT_LATCH4.CLK = !nPCI_INTB & INT_ENA[4]; + INT_LATCH5.CLK = !nPCI_INTC & INT_ENA[5]; + INT_LATCH6.CLK = !nPCI_INTD & INT_ENA[6]; + INT_LATCH7.CLK = DSP_INT & INT_ENA[7]; + INT_LATCH8.CLK = VSYNC & INT_ENA[8]; + INT_LATCH9.CLK = HSYNC & INT_ENA[9]; + +-- INTERRUPT CLEAR + INT_LATCH[].CLRN = !INT_CLEAR[]; + +-- INT_IN + INT_IN0 = PIC_INT; + INT_IN1 = E0_INT; + INT_IN2 = DVI_INT; + INT_IN3 = !nPCI_INTA; + INT_IN4 = !nPCI_INTB; + INT_IN5 = !nPCI_INTC; + INT_IN6 = !nPCI_INTD; + INT_IN7 = DSP_INT; + INT_IN8 = VSYNC; + INT_IN9 = HSYNC; + INT_IN[25..10] = H"0"; + INT_IN26 = HSYNC; + INT_IN27 = INT_CTR0; + INT_IN28 = VSYNC; + INT_IN29 = INT_LATCH[]!=H"00000000"; + INT_IN30 = !nMFP_INT; + INT_IN31 = DMA_DRQ; +--*************************************************************************************** +-- ACP CONFIG REGISTER: BIT 31-> 0=CF 1=IDE + ACP_CONF[].CLK = MAIN_CLK; + ACP_CONF_CS = !nFB_CS2 & FB_ADR[27..2]==H"10000"; -- $4'0000/4 + ACP_CONF[] = FB_AD[]; + ACP_CONF[31..24].ENA = ACP_CONF_CS & FB_B0 & !nFB_WR; + ACP_CONF[23..16].ENA = ACP_CONF_CS & FB_B1 & !nFB_WR; + ACP_CONF[15..8].ENA = ACP_CONF_CS & FB_B2 & !nFB_WR; + ACP_CONF[7..0].ENA = ACP_CONF_CS & FB_B3 & !nFB_WR; +--*************************************************************************************** + +-------------------------------------------------------------- +-- C1287 0=SEK 2=MIN 4=STD 6=WOCHENTAG 7=TAG 8=MONAT 9=JAHR +---------------------------------------------------------- + RTC_ADR[].CLK = MAIN_CLK; + RTC_ADR[] = FB_AD[21..16]; + UHR_AS = !nFB_CS1 & FB_ADR[19..1]==H"7C4B0" & FB_B1; -- FFFF8961 + UHR_DS = !nFB_CS1 & FB_ADR[19..1]==H"7C4B1" & FB_B3; -- FFFF8963 + RTC_ADR[].ENA = UHR_AS & !nFB_WR; + WERTE[][].CLK = MAIN_CLK; + WERTE[7..0][0] = FB_AD[23..16] & RTC_ADR[]==0 & UHR_DS & !nFB_WR; + WERTE[7..0][1] = FB_AD[23..16]; + WERTE[7..0][2] = FB_AD[23..16] & RTC_ADR[]==2 & UHR_DS & !nFB_WR; + WERTE[7..0][3] = FB_AD[23..16]; + WERTE[7..0][4] = FB_AD[23..16] & RTC_ADR[]==4 & UHR_DS & !nFB_WR; + WERTE[7..0][5] = FB_AD[23..16]; + WERTE[7..0][6] = FB_AD[23..16] & RTC_ADR[]==6 & UHR_DS & !nFB_WR; + WERTE[7..0][7] = FB_AD[23..16] & RTC_ADR[]==7 & UHR_DS & !nFB_WR; + WERTE[7..0][8] = FB_AD[23..16] & RTC_ADR[]==8 & UHR_DS & !nFB_WR; + WERTE[7..0][9] = FB_AD[23..16] & RTC_ADR[]==9 & UHR_DS & !nFB_WR; + WERTE[7..0][10] = FB_AD[23..16]; + WERTE[7..0][11] = FB_AD[23..16]; + WERTE[7..0][12] = FB_AD[23..16]; + WERTE[7..0][13] = FB_AD[23..16]; + WERTE[7..0][14] = FB_AD[23..16]; + WERTE[7..0][15] = FB_AD[23..16]; + WERTE[7..0][16] = FB_AD[23..16]; + WERTE[7..0][17] = FB_AD[23..16]; + WERTE[7..0][18] = FB_AD[23..16]; + WERTE[7..0][19] = FB_AD[23..16]; + WERTE[7..0][20] = FB_AD[23..16]; + WERTE[7..0][21] = FB_AD[23..16]; + WERTE[7..0][22] = FB_AD[23..16]; + WERTE[7..0][23] = FB_AD[23..16]; + WERTE[7..0][24] = FB_AD[23..16]; + WERTE[7..0][25] = FB_AD[23..16]; + WERTE[7..0][26] = FB_AD[23..16]; + WERTE[7..0][27] = FB_AD[23..16]; + WERTE[7..0][28] = FB_AD[23..16]; + WERTE[7..0][29] = FB_AD[23..16]; + WERTE[7..0][30] = FB_AD[23..16]; + WERTE[7..0][31] = FB_AD[23..16]; + WERTE[7..0][32] = FB_AD[23..16]; + WERTE[7..0][33] = FB_AD[23..16]; + WERTE[7..0][34] = FB_AD[23..16]; + WERTE[7..0][35] = FB_AD[23..16]; + WERTE[7..0][36] = FB_AD[23..16]; + WERTE[7..0][37] = FB_AD[23..16]; + WERTE[7..0][38] = FB_AD[23..16]; + WERTE[7..0][39] = FB_AD[23..16]; + WERTE[7..0][40] = FB_AD[23..16]; + WERTE[7..0][41] = FB_AD[23..16]; + WERTE[7..0][42] = FB_AD[23..16]; + WERTE[7..0][43] = FB_AD[23..16]; + WERTE[7..0][44] = FB_AD[23..16]; + WERTE[7..0][45] = FB_AD[23..16]; + WERTE[7..0][46] = FB_AD[23..16]; + WERTE[7..0][47] = FB_AD[23..16]; + WERTE[7..0][48] = FB_AD[23..16]; + WERTE[7..0][49] = FB_AD[23..16]; + WERTE[7..0][50] = FB_AD[23..16]; + WERTE[7..0][51] = FB_AD[23..16]; + WERTE[7..0][52] = FB_AD[23..16]; + WERTE[7..0][53] = FB_AD[23..16]; + WERTE[7..0][54] = FB_AD[23..16]; + WERTE[7..0][55] = FB_AD[23..16]; + WERTE[7..0][56] = FB_AD[23..16]; + WERTE[7..0][57] = FB_AD[23..16]; + WERTE[7..0][58] = FB_AD[23..16]; + WERTE[7..0][59] = FB_AD[23..16]; + WERTE[7..0][60] = FB_AD[23..16]; + WERTE[7..0][61] = FB_AD[23..16]; + WERTE[7..0][62] = FB_AD[23..16]; + WERTE[7..0][63] = FB_AD[23..16]; + WERTE[][0].ENA = RTC_ADR[]==0 & UHR_DS & !nFB_WR; + WERTE[][1].ENA = RTC_ADR[]==1 & UHR_DS & !nFB_WR; + WERTE[][2].ENA = RTC_ADR[]==2 & UHR_DS & !nFB_WR; + WERTE[][3].ENA = RTC_ADR[]==3 & UHR_DS & !nFB_WR; + WERTE[][4].ENA = RTC_ADR[]==4 & UHR_DS & !nFB_WR; + WERTE[][5].ENA = RTC_ADR[]==5 & UHR_DS & !nFB_WR; + WERTE[][6].ENA = RTC_ADR[]==6 & UHR_DS & !nFB_WR; + WERTE[][7].ENA = RTC_ADR[]==7 & UHR_DS & !nFB_WR; + WERTE[][8].ENA = RTC_ADR[]==8 & UHR_DS & !nFB_WR; + WERTE[][9].ENA = RTC_ADR[]==9 & UHR_DS & !nFB_WR; + WERTE[][10].ENA = RTC_ADR[]==10 & UHR_DS & !nFB_WR; + WERTE[][11].ENA = RTC_ADR[]==11 & UHR_DS & !nFB_WR; + WERTE[][12].ENA = RTC_ADR[]==12 & UHR_DS & !nFB_WR; + WERTE[][13].ENA = RTC_ADR[]==13 & UHR_DS & !nFB_WR; + WERTE[][14].ENA = RTC_ADR[]==14 & UHR_DS & !nFB_WR; + WERTE[][15].ENA = RTC_ADR[]==15 & UHR_DS & !nFB_WR; + WERTE[][16].ENA = RTC_ADR[]==16 & UHR_DS & !nFB_WR; + WERTE[][17].ENA = RTC_ADR[]==17 & UHR_DS & !nFB_WR; + WERTE[][18].ENA = RTC_ADR[]==18 & UHR_DS & !nFB_WR; + WERTE[][19].ENA = RTC_ADR[]==19 & UHR_DS & !nFB_WR; + WERTE[][20].ENA = RTC_ADR[]==20 & UHR_DS & !nFB_WR; + WERTE[][21].ENA = RTC_ADR[]==21 & UHR_DS & !nFB_WR; + WERTE[][22].ENA = RTC_ADR[]==22 & UHR_DS & !nFB_WR; + WERTE[][23].ENA = RTC_ADR[]==23 & UHR_DS & !nFB_WR; + WERTE[][24].ENA = RTC_ADR[]==24 & UHR_DS & !nFB_WR; + WERTE[][25].ENA = RTC_ADR[]==25 & UHR_DS & !nFB_WR; + WERTE[][26].ENA = RTC_ADR[]==26 & UHR_DS & !nFB_WR; + WERTE[][27].ENA = RTC_ADR[]==27 & UHR_DS & !nFB_WR; + WERTE[][28].ENA = RTC_ADR[]==28 & UHR_DS & !nFB_WR; + WERTE[][29].ENA = RTC_ADR[]==29 & UHR_DS & !nFB_WR; + WERTE[][30].ENA = RTC_ADR[]==30 & UHR_DS & !nFB_WR; + WERTE[][31].ENA = RTC_ADR[]==31 & UHR_DS & !nFB_WR; + WERTE[][32].ENA = RTC_ADR[]==32 & UHR_DS & !nFB_WR; + WERTE[][33].ENA = RTC_ADR[]==33 & UHR_DS & !nFB_WR; + WERTE[][34].ENA = RTC_ADR[]==34 & UHR_DS & !nFB_WR; + WERTE[][35].ENA = RTC_ADR[]==35 & UHR_DS & !nFB_WR; + WERTE[][36].ENA = RTC_ADR[]==36 & UHR_DS & !nFB_WR; + WERTE[][37].ENA = RTC_ADR[]==37 & UHR_DS & !nFB_WR; + WERTE[][38].ENA = RTC_ADR[]==38 & UHR_DS & !nFB_WR; + WERTE[][39].ENA = RTC_ADR[]==39 & UHR_DS & !nFB_WR; + WERTE[][40].ENA = RTC_ADR[]==40 & UHR_DS & !nFB_WR; + WERTE[][41].ENA = RTC_ADR[]==41 & UHR_DS & !nFB_WR; + WERTE[][42].ENA = RTC_ADR[]==42 & UHR_DS & !nFB_WR; + WERTE[][43].ENA = RTC_ADR[]==43 & UHR_DS & !nFB_WR; + WERTE[][44].ENA = RTC_ADR[]==44 & UHR_DS & !nFB_WR; + WERTE[][45].ENA = RTC_ADR[]==45 & UHR_DS & !nFB_WR; + WERTE[][46].ENA = RTC_ADR[]==46 & UHR_DS & !nFB_WR; + WERTE[][47].ENA = RTC_ADR[]==47 & UHR_DS & !nFB_WR; + WERTE[][48].ENA = RTC_ADR[]==48 & UHR_DS & !nFB_WR; + WERTE[][49].ENA = RTC_ADR[]==49 & UHR_DS & !nFB_WR; + WERTE[][50].ENA = RTC_ADR[]==50 & UHR_DS & !nFB_WR; + WERTE[][51].ENA = RTC_ADR[]==51 & UHR_DS & !nFB_WR; + WERTE[][52].ENA = RTC_ADR[]==52 & UHR_DS & !nFB_WR; + WERTE[][53].ENA = RTC_ADR[]==53 & UHR_DS & !nFB_WR; + WERTE[][54].ENA = RTC_ADR[]==54 & UHR_DS & !nFB_WR; + WERTE[][55].ENA = RTC_ADR[]==55 & UHR_DS & !nFB_WR; + WERTE[][56].ENA = RTC_ADR[]==56 & UHR_DS & !nFB_WR; + WERTE[][57].ENA = RTC_ADR[]==57 & UHR_DS & !nFB_WR; + WERTE[][58].ENA = RTC_ADR[]==58 & UHR_DS & !nFB_WR; + WERTE[][59].ENA = RTC_ADR[]==59 & UHR_DS & !nFB_WR; + WERTE[][60].ENA = RTC_ADR[]==60 & UHR_DS & !nFB_WR; + WERTE[][61].ENA = RTC_ADR[]==61 & UHR_DS & !nFB_WR; + WERTE[][62].ENA = RTC_ADR[]==62 & UHR_DS & !nFB_WR; + WERTE[][63].ENA = RTC_ADR[]==63 & UHR_DS & !nFB_WR; + PIC_INT_SYNC[].CLK = MAIN_CLK; PIC_INT_SYNC[0] = PIC_INT; + PIC_INT_SYNC[1] = PIC_INT_SYNC[0]; + PIC_INT_SYNC[2] = !PIC_INT_SYNC[1] & PIC_INT_SYNC[0]; + UPDATE_ON = !WERTE[7][11]; + WERTE[6][10].CLRN = GND; -- KEIN UIP + UPDATE_ON = !WERTE[7][11]; -- UPDATE ON OFF + WERTE[2][11] = VCC; -- IMMER BINARY + WERTE[1][11] = VCC; -- IMMER 24H FORMAT + WERTE[0][11] = VCC; -- IMMER SOMMERZEITKORREKTUR + WERTE[7][13] = VCC; -- IMMER RICHTIG +-- SOMMER WINTERZEIT: BIT 0 IM REGISTER D IST DIE INFORMATION OB SOMMERZEIT IST (BRAUCHT MAN FÜR RÜCKSCHALTUNG) + SOMMERZEIT = WERTE[][6]==1 & WERTE[][4]==1 & WERTE[][8]==4 & WERTE[][7]>23; --LETZTER SONNTAG IM APRIL + WERTE[0][13] = SOMMERZEIT; + WERTE[0][13].ENA = INC_STD & (SOMMERZEIT # WINTERZEIT); + WINTERZEIT = WERTE[][6]==1 & WERTE[][4]==1 & WERTE[][8]==10 & WERTE[][7]>24 & WERTE[0][13]; --LETZTER SONNTAG IM OKTOBER +-- ACHTELSEKUNDEN + ACHTELSEKUNDEN[].CLK = MAIN_CLK; + ACHTELSEKUNDEN[] = ACHTELSEKUNDEN[]+1; + ACHTELSEKUNDEN[].ENA = PIC_INT_SYNC[2] & UPDATE_ON; +-- SEKUNDEN + INC_SEC = ACHTELSEKUNDEN[]==7 & PIC_INT_SYNC[2] & UPDATE_ON; + WERTE[][0] = (WERTE[][0]+1) & WERTE[][0]!=59 & !(RTC_ADR[]==0 & UHR_DS & !nFB_WR); -- SEKUNDEN ZÄHLEN BIS 59 + WERTE[][0].ENA = INC_SEC & !(RTC_ADR[]==0 & UHR_DS & !nFB_WR); +-- MINUTEN + INC_MIN = INC_SEC & WERTE[][0]==59; -- + WERTE[][2] = (WERTE[][2]+1) & WERTE[][2]!=59 & !(RTC_ADR[]==2 & UHR_DS & !nFB_WR); -- MINUTEN ZÄHLEN BIS 59 + WERTE[][2].ENA = INC_MIN & !(RTC_ADR[]==2 & UHR_DS & !nFB_WR); -- +-- STUNDEN + INC_STD = INC_MIN & WERTE[][2]==59; + WERTE[][4] = (WERTE[][4]+1+(1 & SOMMERZEIT)) & WERTE[][4]!=23 & !(RTC_ADR[]==4 & UHR_DS & !nFB_WR); -- STUNDEN ZÄHLEN BIS 23 + WERTE[][4].ENA = INC_STD & !(WINTERZEIT & WERTE[0][12]) & !(RTC_ADR[]==4 & UHR_DS & !nFB_WR); -- EINE STUNDE AUSLASSEN WENN WINTERZEITUMSCHALTUNG UND NOCH SOMMERZEIT +-- WOCHENTAG UND TAG + INC_TAG = INC_STD & WERTE[][2]==23; + WERTE[][6] = (WERTE[][6]+1) & WERTE[][6]!=7 & !(RTC_ADR[]==6 & UHR_DS & !nFB_WR) -- WOCHENTAG ZÄHLEN BIS 7 + # 1 & WERTE[][6]==7 & !(RTC_ADR[]==6 & UHR_DS & !nFB_WR); -- DANN BEI 1 WEITER + WERTE[][6].ENA = INC_TAG & !(RTC_ADR[]==6 & UHR_DS & !nFB_WR); + ANZAHL_TAGE_DES_MONATS[] = 31 & (WERTE[][8]==1 # WERTE[][8]==3 # WERTE[][8]==5 # WERTE[][8]==7 # WERTE[][8]==8 # WERTE[][8]==10 # WERTE[][8]==12) + # 30 & (WERTE[][8]==4 # WERTE[][8]==6 # WERTE[][8]==9 # WERTE[][8]==11) + # 29 & WERTE[][8]==2 & WERTE[1..0][9]==0 + # 28 & WERTE[][8]==2 & WERTE[1..0][9]!=0; + WERTE[][7] = (WERTE[][7]+1) & WERTE[][7]!=ANZAHL_TAGE_DES_MONATS[] & !(RTC_ADR[]==7 & UHR_DS & !nFB_WR) -- TAG ZÄHLEN BIS MONATSENDE + # 1 & WERTE[][7]==ANZAHL_TAGE_DES_MONATS[] & !(RTC_ADR[]==7 & UHR_DS & !nFB_WR); -- DANN BEI 1 WEITER + WERTE[][7].ENA = INC_TAG & !(RTC_ADR[]==7 & UHR_DS & !nFB_WR); -- +-- MONATE + INC_MONAT = INC_TAG & WERTE[][7]==ANZAHL_TAGE_DES_MONATS[]; -- + WERTE[][8] = (WERTE[][8]+1) & WERTE[][8]!=12 & !(RTC_ADR[]==8 & UHR_DS & !nFB_WR) -- MONATE ZÄHLEN BIS 12 + # 1 & WERTE[][8]==12 & !(RTC_ADR[]==8 & UHR_DS & !nFB_WR); -- DANN BEI 1 WEITER + WERTE[][8].ENA = INC_MONAT & !(RTC_ADR[]==8 & UHR_DS & !nFB_WR); +-- JAHR + INC_JAHR = INC_MONAT & WERTE[][8]==12; -- + WERTE[][9] = (WERTE[][9]+1) & WERTE[][9]!=99 & !(RTC_ADR[]==9 & UHR_DS & !nFB_WR); -- JAHRE ZÄHLEN BIS 99 + WERTE[][9].ENA = INC_JAHR & !(RTC_ADR[]==9 & UHR_DS & !nFB_WR); +-- TRISTATE OUTPUT + + FB_AD[31..24] = lpm_bustri_BYT( + INT_CTR_CS & INT_CTR[31..24] + # INT_ENA_CS & INT_ENA[31..24] + # INT_LATCH_CS & INT_LATCH[31..24] + # INT_CLEAR_CS & INT_IN[31..24] + # ACP_CONF_CS & ACP_CONF[31..24] + ,(INT_CTR_CS # INT_ENA_CS # INT_LATCH_CS # INT_CLEAR_CS # ACP_CONF_CS) & !nFB_OE); + FB_AD[23..16] = lpm_bustri_BYT( + WERTE[][0] & RTC_ADR[]==0 & UHR_DS + # WERTE[][1] & RTC_ADR[]==1 & UHR_DS + # WERTE[][2] & RTC_ADR[]==2 & UHR_DS + # WERTE[][3] & RTC_ADR[]==3 & UHR_DS + # WERTE[][4] & RTC_ADR[]==4 & UHR_DS + # WERTE[][5] & RTC_ADR[]==5 & UHR_DS + # WERTE[][6] & RTC_ADR[]==6 & UHR_DS + # WERTE[][7] & RTC_ADR[]==7 & UHR_DS + # WERTE[][8] & RTC_ADR[]==8 & UHR_DS + # WERTE[][9] & RTC_ADR[]==9 & UHR_DS + # WERTE[][10] & RTC_ADR[]==10 & UHR_DS + # WERTE[][11] & RTC_ADR[]==11 & UHR_DS + # WERTE[][12] & RTC_ADR[]==12 & UHR_DS + # WERTE[][13] & RTC_ADR[]==13 & UHR_DS + # WERTE[][14] & RTC_ADR[]==14 & UHR_DS + # WERTE[][15] & RTC_ADR[]==15 & UHR_DS + # WERTE[][16] & RTC_ADR[]==16 & UHR_DS + # WERTE[][17] & RTC_ADR[]==17 & UHR_DS + # WERTE[][18] & RTC_ADR[]==18 & UHR_DS + # WERTE[][19] & RTC_ADR[]==19 & UHR_DS + # WERTE[][20] & RTC_ADR[]==20 & UHR_DS + # WERTE[][21] & RTC_ADR[]==21 & UHR_DS + # WERTE[][22] & RTC_ADR[]==22 & UHR_DS + # WERTE[][23] & RTC_ADR[]==23 & UHR_DS + # WERTE[][24] & RTC_ADR[]==24 & UHR_DS + # WERTE[][25] & RTC_ADR[]==25 & UHR_DS + # WERTE[][26] & RTC_ADR[]==26 & UHR_DS + # WERTE[][27] & RTC_ADR[]==27 & UHR_DS + # WERTE[][28] & RTC_ADR[]==28 & UHR_DS + # WERTE[][29] & RTC_ADR[]==29 & UHR_DS + # WERTE[][30] & RTC_ADR[]==30 & UHR_DS + # WERTE[][31] & RTC_ADR[]==31 & UHR_DS + # WERTE[][32] & RTC_ADR[]==32 & UHR_DS + # WERTE[][33] & RTC_ADR[]==33 & UHR_DS + # WERTE[][34] & RTC_ADR[]==34 & UHR_DS + # WERTE[][35] & RTC_ADR[]==35 & UHR_DS + # WERTE[][36] & RTC_ADR[]==36 & UHR_DS + # WERTE[][37] & RTC_ADR[]==37 & UHR_DS + # WERTE[][38] & RTC_ADR[]==38 & UHR_DS + # WERTE[][39] & RTC_ADR[]==39 & UHR_DS + # WERTE[][40] & RTC_ADR[]==40 & UHR_DS + # WERTE[][41] & RTC_ADR[]==41 & UHR_DS + # WERTE[][42] & RTC_ADR[]==42 & UHR_DS + # WERTE[][43] & RTC_ADR[]==43 & UHR_DS + # WERTE[][44] & RTC_ADR[]==44 & UHR_DS + # WERTE[][45] & RTC_ADR[]==45 & UHR_DS + # WERTE[][46] & RTC_ADR[]==46 & UHR_DS + # WERTE[][47] & RTC_ADR[]==47 & UHR_DS + # WERTE[][48] & RTC_ADR[]==48 & UHR_DS + # WERTE[][49] & RTC_ADR[]==49 & UHR_DS + # WERTE[][50] & RTC_ADR[]==50 & UHR_DS + # WERTE[][51] & RTC_ADR[]==51 & UHR_DS + # WERTE[][52] & RTC_ADR[]==52 & UHR_DS + # WERTE[][53] & RTC_ADR[]==53 & UHR_DS + # WERTE[][54] & RTC_ADR[]==54 & UHR_DS + # WERTE[][55] & RTC_ADR[]==55 & UHR_DS + # WERTE[][56] & RTC_ADR[]==56 & UHR_DS + # WERTE[][57] & RTC_ADR[]==57 & UHR_DS + # WERTE[][58] & RTC_ADR[]==58 & UHR_DS + # WERTE[][59] & RTC_ADR[]==59 & UHR_DS + # WERTE[][60] & RTC_ADR[]==60 & UHR_DS + # WERTE[][61] & RTC_ADR[]==61 & UHR_DS + # WERTE[][62] & RTC_ADR[]==62 & UHR_DS + # WERTE[][63] & RTC_ADR[]==63 & UHR_DS + # (0,RTC_ADR[]) & UHR_AS + # INT_CTR_CS & INT_CTR[23..16] + # INT_ENA_CS & INT_ENA[23..16] + # INT_LATCH_CS & INT_LATCH[23..16] + # INT_CLEAR_CS & INT_IN[23..16] + # ACP_CONF_CS & ACP_CONF[23..16] + ,(UHR_DS # UHR_AS # INT_CTR_CS # INT_ENA_CS # INT_LATCH_CS # INT_CLEAR_CS # ACP_CONF_CS) & !nFB_OE); + FB_AD[15..8] = lpm_bustri_BYT( + INT_CTR_CS & INT_CTR[15..8] + # INT_ENA_CS & INT_ENA[15..8] + # INT_LATCH_CS & INT_LATCH[15..8] + # INT_CLEAR_CS & INT_IN[15..8] + # ACP_CONF_CS & ACP_CONF[15..8] + ,(INT_CTR_CS # INT_ENA_CS # INT_LATCH_CS # INT_CLEAR_CS # ACP_CONF_CS) & !nFB_OE); + FB_AD[7..0] = lpm_bustri_BYT( + INT_CTR_CS & INT_CTR[7..0] + # INT_ENA_CS & INT_ENA[7..0] + # INT_LATCH_CS & INT_LATCH[7..0] + # INT_CLEAR_CS & INT_IN[7..0] + # ACP_CONF_CS & ACP_CONF[7..0] + ,(INT_CTR_CS # INT_ENA_CS # INT_LATCH_CS # INT_CLEAR_CS # ACP_CONF_CS) & !nFB_OE); + + INT_HANDLER_TA = INT_CTR_CS # INT_ENA_CS # INT_LATCH_CS # INT_CLEAR_CS; +END; + + diff --git a/FPGA_quartus/UNUSED b/FPGA_quartus/UNUSED new file mode 100644 index 0000000..3a7d9e6 --- /dev/null +++ b/FPGA_quartus/UNUSED @@ -0,0 +1,27 @@ + +-- Clearbox generated Memory Initialization File (.mif) + +WIDTH=3; +DEPTH=16; + +ADDRESS_RADIX=HEX; +DATA_RADIX=HEX; + +CONTENT BEGIN + 00 : 7; + 01 : 6; + 02 : 5; + 03 : 4; + 04 : 3; + 05 : 2; + 06 : 1; + 07 : 0; + 08 : 7; + 09 : 6; + 0a : 5; + 0b : 4; + 0c : 3; + 0d : 2; + 0e : 1; + 0f : 0; +END; diff --git a/FPGA_quartus/Video/BLITTER/BLITTER.vhd b/FPGA_quartus/Video/BLITTER/BLITTER.vhd new file mode 100644 index 0000000..e09ed0b --- /dev/null +++ b/FPGA_quartus/Video/BLITTER/BLITTER.vhd @@ -0,0 +1,75 @@ +-- WARNING: Do NOT edit the input and output ports in this file in a text +-- editor if you plan to continue editing the block that represents it in +-- the Block Editor! File corruption is VERY likely to occur. + +-- Copyright (C) 1991-2008 Altera Corporation +-- Your use of Altera Corporation's design tools, logic functions +-- and other software and tools, and its AMPP partner logic +-- functions, and any output files from any of the foregoing +-- (including device programming or simulation files), and any +-- associated documentation or information are expressly subject +-- to the terms and conditions of the Altera Program License +-- Subscription Agreement, Altera MegaCore Function License +-- Agreement, or other applicable license agreement, including, +-- without limitation, that your use is for the sole purpose of +-- programming logic devices manufactured by Altera and sold by +-- Altera or its authorized distributors. Please refer to the +-- applicable agreement for further details. + + +-- Generated by Quartus II Version 8.1 (Build Build 163 10/28/2008) +-- Created on Fri Oct 16 15:40:59 2009 + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + + +-- Entity Declaration + +ENTITY BLITTER IS + -- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! + PORT + ( + nRSTO : IN STD_LOGIC; + MAIN_CLK : IN STD_LOGIC; + FB_ALE : IN STD_LOGIC; + nFB_WR : IN STD_LOGIC; + nFB_OE : IN STD_LOGIC; + FB_SIZE0 : IN STD_LOGIC; + FB_SIZE1 : IN STD_LOGIC; + VIDEO_RAM_CTR : IN STD_LOGIC_VECTOR(15 downto 0); + BLITTER_ON : IN STD_LOGIC; + FB_ADR : IN STD_LOGIC_VECTOR(31 downto 0); + nFB_CS1 : IN STD_LOGIC; + nFB_CS2 : IN STD_LOGIC; + nFB_CS3 : IN STD_LOGIC; + DDRCLK0 : IN STD_LOGIC; + BLITTER_DIN : IN STD_LOGIC_VECTOR(127 downto 0); + BLITTER_DACK : IN STD_LOGIC_VECTOR(4 downto 0); + BLITTER_RUN : OUT STD_LOGIC; + BLITTER_DOUT : OUT STD_LOGIC_VECTOR(127 downto 0); + BLITTER_ADR : OUT STD_LOGIC_VECTOR(31 downto 0); + BLITTER_SIG : OUT STD_LOGIC; + BLITTER_WR : OUT STD_LOGIC; + BLITTER_TA : OUT STD_LOGIC; + FB_AD : INOUT STD_LOGIC_VECTOR(31 downto 0) + ); + -- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! + +END BLITTER; + + +-- Architecture Body + +ARCHITECTURE BLITTER_architecture OF BLITTER IS + + +BEGIN + BLITTER_RUN <= '0'; + BLITTER_DOUT <= x"FEDCBA9876543210F0F0F0F0F0F0F0F0"; + BLITTER_ADR <= x"76543210"; + BLITTER_SIG <= '0'; + BLITTER_WR <= '0'; + BLITTER_TA <= '0'; + +END BLITTER_architecture; diff --git a/FPGA_quartus/Video/BLITTER/BLITTER.vhd.bak b/FPGA_quartus/Video/BLITTER/BLITTER.vhd.bak new file mode 100644 index 0000000..f674080 --- /dev/null +++ b/FPGA_quartus/Video/BLITTER/BLITTER.vhd.bak @@ -0,0 +1,75 @@ +-- WARNING: Do NOT edit the input and output ports in this file in a text +-- editor if you plan to continue editing the block that represents it in +-- the Block Editor! File corruption is VERY likely to occur. + +-- Copyright (C) 1991-2008 Altera Corporation +-- Your use of Altera Corporation's design tools, logic functions +-- and other software and tools, and its AMPP partner logic +-- functions, and any output files from any of the foregoing +-- (including device programming or simulation files), and any +-- associated documentation or information are expressly subject +-- to the terms and conditions of the Altera Program License +-- Subscription Agreement, Altera MegaCore Function License +-- Agreement, or other applicable license agreement, including, +-- without limitation, that your use is for the sole purpose of +-- programming logic devices manufactured by Altera and sold by +-- Altera or its authorized distributors. Please refer to the +-- applicable agreement for further details. + + +-- Generated by Quartus II Version 8.1 (Build Build 163 10/28/2008) +-- Created on Fri Oct 16 15:40:59 2009 + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + + +-- Entity Declaration + +ENTITY BLITTER IS + -- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! + PORT + ( + nRSTO : IN STD_LOGIC; + MAIN_CLK : IN STD_LOGIC; + FB_ALE : IN STD_LOGIC; + nFB_WR : IN STD_LOGIC; + nFB_OE : IN STD_LOGIC; + FB_SIZE0 : IN STD_LOGIC; + FB_SIZE1 : IN STD_LOGIC; + VIDEO_RAM_CTR : IN STD_LOGIC_VECTOR(15 downto 0); + BLITTER_ON : IN STD_LOGIC; + FB_ADR : IN STD_LOGIC_VECTOR(31 downto 0); + nFB_CS1 : IN STD_LOGIC; + nFB_CS2 : IN STD_LOGIC; + nFB_CS3 : IN STD_LOGIC; + DDRCLK0 : IN STD_LOGIC; + BLITTER_DIN : IN STD_LOGIC_VECTOR(127 downto 0); + BLITTER_DACK : IN STD_LOGIC_VECTOR(4 downto 0); + BLITTER_RUN : OUT STD_LOGIC; + BLITTER_DOUT : OUT STD_LOGIC_VECTOR(127 downto 0); + BLITTER_ADR : OUT STD_LOGIC_VECTOR(31 downto 0); + BLITTER_SIG : OUT STD_LOGIC; + BLITTER_WR : OUT STD_LOGIC; + BLITTER_TA : OUT STD_LOGIC; + FB_AD : INOUT STD_LOGIC_VECTOR(31 downto 0) + ); + -- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! + +END BLITTER; + + +-- Architecture Body + +ARCHITECTURE BLITTER_architecture OF BLITTER IS + + +BEGIN + BLITTER_RUN <= '0'; + BLITTER_DOUT <= x"FEDCBA9876543210F0F0F0F0F0F0F0F0"; + BLITTER_ADR <= x"FEDCBA9876543210"; + BLITTER_SIG <= '0'; + BLITTER_WR <= '0'; + BLITTER_TA <= '0'; + +END BLITTER_architecture; diff --git a/FPGA_quartus/Video/DDR_CTR.tdf b/FPGA_quartus/Video/DDR_CTR.tdf new file mode 100644 index 0000000..d5b5ec2 --- /dev/null +++ b/FPGA_quartus/Video/DDR_CTR.tdf @@ -0,0 +1,659 @@ +TITLE "DDR_CTR"; + +-- CREATED BY FREDI ASCHWANDEN + +INCLUDE "lpm_bustri_BYT.inc"; + +-- FIFO WATER MARK +CONSTANT FIFO_LWM = 0; +CONSTANT FIFO_MWM = 200; +CONSTANT FIFO_HWM = 500; + +-- {{ALTERA_PARAMETERS_BEGIN}} DO NOT REMOVE THIS LINE! +-- {{ALTERA_PARAMETERS_END}} DO NOT REMOVE THIS LINE! + +SUBDESIGN DDR_CTR +( + -- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! + FB_ADR[31..0] : INPUT; + nFB_CS1 : INPUT; + nFB_CS2 : INPUT; + nFB_CS3 : INPUT; + nFB_OE : INPUT; + FB_SIZE0 : INPUT; + FB_SIZE1 : INPUT; + nRSTO : INPUT; + MAIN_CLK : INPUT; + FB_ALE : INPUT; + nFB_WR : INPUT; + DDR_SYNC_66M : INPUT; + CLR_FIFO : INPUT; + VIDEO_RAM_CTR[15..0] : INPUT; + BLITTER_ADR[31..0] : INPUT; + BLITTER_SIG : INPUT; + BLITTER_WR : INPUT; + DDRCLK0 : INPUT; + CLK33M : INPUT; + FIFO_MW[8..0] : INPUT; + VA[12..0] : OUTPUT; + nVWE : OUTPUT; + nVRAS : OUTPUT; + nVCS : OUTPUT; + VCKE : OUTPUT; + nVCAS : OUTPUT; + FB_LE[3..0] : OUTPUT; + FB_VDOE[3..0] : OUTPUT; + SR_FIFO_WRE : OUTPUT; + SR_DDR_FB : OUTPUT; + SR_DDR_WR : OUTPUT; + SR_DDRWR_D_SEL : OUTPUT; + SR_VDMP[7..0] : OUTPUT; + VIDEO_DDR_TA : OUTPUT; + SR_BLITTER_DACK : OUTPUT; + BA[1..0] : OUTPUT; + DDRWR_D_SEL1 : OUTPUT; + VDM_SEL[3..0] : OUTPUT; + FB_AD[31..0] : BIDIR; + -- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! +) + +VARIABLE + FB_REGDDR :MACHINE WITH STATES(FR_WAIT,FR_S0,FR_S1,FR_S2,FR_S3); + DDR_SM :MACHINE WITH STATES(DS_T1,DS_T2A,DS_T2B,DS_T3,DS_N5,DS_N6, DS_N7, DS_N8, -- START (NORMAL 8 CYCLES TOTAL = 60ns) + DS_C2,DS_C3,DS_C4, DS_C5, DS_C6, DS_C7, -- CONFIG + DS_T4R,DS_T5R, -- READ CPU UND BLITTER, + DS_T4W,DS_T5W,DS_T6W,DS_T7W,DS_T8W,DS_T9W, -- WRITE CPU UND BLITTER + DS_T4F,DS_T5F,DS_T6F,DS_T7F,DS_T8F,DS_T9F,DS_T10F, -- READ FIFO + DS_CB6, DS_CB8, -- CLOSE FIFO BANK + DS_R2,DS_R3,DS_R4, DS_R5, DS_R6); -- REFRESH 10X7.5NS=75NS + LINE :NODE; + FB_B[3..0] :NODE; + VCAS :NODE; + VRAS :NODE; + VWE :NODE; + VA_P[12..0] :DFF; + BA_P[1..0] :DFF; + VA_S[12..0] :DFF; + BA_S[1..0] :DFF; + MCS[1..0] :DFF; + CPU_DDR_SYNC :DFF; + DDR_SEL :NODE; + DDR_CS :DFFE; + DDR_CONFIG :NODE; + SR_DDR_WR :DFF; + SR_DDRWR_D_SEL :DFF; + SR_VDMP[7..0] :DFF; + CPU_ROW_ADR[12..0] :NODE; + CPU_BA[1..0] :NODE; + CPU_COL_ADR[9..0] :NODE; + CPU_SIG :NODE; + CPU_REQ :DFF; + CPU_AC :DFF; + BUS_CYC :DFF; + BUS_CYC_END :NODE; + BLITTER_REQ :DFF; + BLITTER_AC :DFF; + BLITTER_ROW_ADR[12..0] :NODE; + BLITTER_BA[1..0] :NODE; + BLITTER_COL_ADR[9..0] :NODE; + FIFO_REQ :DFF; + FIFO_AC :DFF; + FIFO_ROW_ADR[12..0] :NODE; + FIFO_BA[1..0] :NODE; + FIFO_COL_ADR[9..0] :NODE; + FIFO_ACTIVE :NODE; + CLR_FIFO_SYNC :DFF; + CLEAR_FIFO_CNT :DFF; + STOP :DFF; + SR_FIFO_WRE :DFF; + FIFO_BANK_OK :DFF; + FIFO_BANK_NOT_OK :NODE; + DDR_REFRESH_ON :NODE; + DDR_REFRESH_CNT[10..0] :DFF; + DDR_REFRESH_REQ :DFF; + DDR_REFRESH_SIG[3..0] :DFFE; + REFRESH_TIME :DFF; + VIDEO_BASE_L_D[7..0] :DFFE; + VIDEO_BASE_L :NODE; + VIDEO_BASE_M_D[7..0] :DFFE; + VIDEO_BASE_M :NODE; + VIDEO_BASE_H_D[7..0] :DFFE; + VIDEO_BASE_H :NODE; + VIDEO_BASE_X_D[2..0] :DFFE; + VIDEO_ADR_CNT[22..0] :DFFE; + VIDEO_CNT_L :NODE; + VIDEO_CNT_M :NODE; + VIDEO_CNT_H :NODE; + VIDEO_BASE_ADR[22..0] :NODE; + VIDEO_ACT_ADR[26..0] :NODE; + +BEGIN + LINE = FB_SIZE0 & FB_SIZE1; +-- BYT SELECT + FB_B0 = FB_ADR[1..0]==0 -- ADR==0 + # FB_SIZE1 & FB_SIZE0 # !FB_SIZE1 & !FB_SIZE0; -- LONG UND LINE + FB_B1 = FB_ADR[1..0]==1 -- ADR==1 + # FB_SIZE1 & !FB_SIZE0 & !FB_ADR1 -- HIGH WORD + # FB_SIZE1 & FB_SIZE0 # !FB_SIZE1 & !FB_SIZE0; -- LONG UND LINE + FB_B2 = FB_ADR[1..0]==2 -- ADR==2 + # FB_SIZE1 & FB_SIZE0 # !FB_SIZE1 & !FB_SIZE0; -- LONG UND LINE + FB_B3 = FB_ADR[1..0]==3 -- ADR==3 + # FB_SIZE1 & !FB_SIZE0 & FB_ADR1 -- LOW WORD + # FB_SIZE1 & FB_SIZE0 # !FB_SIZE1 & !FB_SIZE0; -- LONG UND LINE +-- CPU READ (REG DDR => CPU) AND WRITE (CPU => REG DDR) -------------------------------------------------- + FB_REGDDR.CLK = MAIN_CLK; + CASE FB_REGDDR IS + WHEN FR_WAIT => + FB_LE0 = !nFB_WR; + IF BUS_CYC # DDR_SEL & LINE & !nFB_WR THEN -- LOS WENN BEREIT ODER IMMER BEI LINE WRITE + FB_REGDDR = FR_S0; + ELSE + FB_REGDDR = FR_WAIT; + END IF; + WHEN FR_S0 => + IF DDR_CS THEN + FB_LE0 = !nFB_WR; + VIDEO_DDR_TA = VCC; + IF LINE THEN + FB_VDOE0 = !nFB_OE & !DDR_CONFIG; + FB_REGDDR = FR_S1; + ELSE + BUS_CYC_END = VCC; + FB_VDOE0 = !nFB_OE & !MAIN_CLK & !DDR_CONFIG; + FB_REGDDR = FR_WAIT; + END IF; + ELSE + FB_REGDDR = FR_WAIT; + END IF; + WHEN FR_S1 => + IF DDR_CS THEN + FB_VDOE1 = !nFB_OE & !DDR_CONFIG; + FB_LE1 = !nFB_WR; + VIDEO_DDR_TA = VCC; + FB_REGDDR = FR_S2; + ELSE + FB_REGDDR = FR_WAIT; + END IF; + WHEN FR_S2 => + IF DDR_CS THEN + FB_VDOE2 = !nFB_OE & !DDR_CONFIG; + FB_LE2 = !nFB_WR; + IF !BUS_CYC & LINE & !nFB_WR THEN -- BEI LINE WRITE EVT. WARTEN + FB_REGDDR = FR_S2; + ELSE + VIDEO_DDR_TA = VCC; + FB_REGDDR = FR_S3; + END IF; + ELSE + FB_REGDDR = FR_WAIT; + END IF; + WHEN FR_S3 => + IF DDR_CS THEN + FB_VDOE3 = !nFB_OE & !MAIN_CLK & !DDR_CONFIG; + FB_LE3 = !nFB_WR; + VIDEO_DDR_TA = VCC; + BUS_CYC_END = VCC; + FB_REGDDR = FR_WAIT; + ELSE + FB_REGDDR = FR_WAIT; + END IF; + END CASE; +-- DDR STEUERUNG ----------------------------------------------------- +-- VIDEO RAM CONTROL REGISTER (IST IN VIDEO_MUX_CTR) $F0000400: BIT 0: VCKE; 1: !nVCS ;2:REFRESH ON , (0=FIFO UND CNT CLEAR); 3: CONFIG; 8: FIFO_ACTIVE; + VCKE = VIDEO_RAM_CTR0; + nVCS = !VIDEO_RAM_CTR1; + DDR_REFRESH_ON = VIDEO_RAM_CTR2; + DDR_CONFIG = VIDEO_RAM_CTR3; + FIFO_ACTIVE = VIDEO_RAM_CTR8; +-------------------------------- + CPU_ROW_ADR[] = FB_ADR[26..14]; + CPU_BA[] = FB_ADR[13..12]; + CPU_COL_ADR[] = FB_ADR[11..2]; + nVRAS = !VRAS; + nVCAS = !VCAS; + nVWE = !VWE; + SR_DDR_WR.CLK = DDRCLK0; + SR_DDRWR_D_SEL.CLK = DDRCLK0; + SR_VDMP[7..0].CLK = DDRCLK0; + SR_FIFO_WRE.CLK = DDRCLK0; + CPU_AC.CLK = DDRCLK0; + FIFO_AC.CLK = DDRCLK0; + BLITTER_AC.CLK = DDRCLK0; + DDRWR_D_SEL1 = BLITTER_AC; +-- SELECT LOGIC + DDR_SEL = FB_ALE & FB_AD[31..30]==B"01"; + DDR_CS.CLK = MAIN_CLK; + DDR_CS.ENA = FB_ALE; + DDR_CS = DDR_SEL; +-- WENN READ ODER WRITE B,W,L DDR SOFORT ANFORDERN, BEI WRITE LINE SPÄTER + CPU_SIG = DDR_SEL & (nFB_WR # !LINE) & !DDR_CONFIG -- NICHT LINE ODER READ SOFORT LOS WENN NICHT CONFIG + # DDR_SEL & DDR_CONFIG -- CONFIG SOFORT LOS + # FB_REGDDR==FR_S1 & !nFB_WR; -- LINE WRITE SPÄTER + CPU_REQ.CLK = DDR_SYNC_66M; + CPU_REQ = CPU_SIG + # CPU_REQ & FB_REGDDR!=FR_S1 & FB_REGDDR!=FR_S3 & !BUS_CYC_END & !BUS_CYC; -- HALTEN BUS CYC BEGONNEN ODER FERTIG + BUS_CYC.CLK = DDRCLK0; + BUS_CYC = BUS_CYC & !BUS_CYC_END; + -- STATE MACHINE SYNCHRONISIEREN ----------------- + MCS[].CLK = DDRCLK0; + MCS0 = MAIN_CLK; + MCS1 = MCS0; + CPU_DDR_SYNC.CLK = DDRCLK0; + CPU_DDR_SYNC = MCS[]==2 & VCKE & !nVCS; -- NUR 1 WENN EIN + --------------------------------------------------- + VA_S[].CLK = DDRCLK0; + BA_S[].CLK = DDRCLK0; + VA[] = VA_S[]; + BA[] = BA_S[]; + VA_P[].CLK = DDRCLK0; + BA_P[].CLK = DDRCLK0; +-- DDR STATE MACHINE ----------------------------------------------- + DDR_SM.CLK = DDRCLK0; + CASE DDR_SM IS + WHEN DS_T1 => + IF DDR_REFRESH_REQ THEN + DDR_SM = DS_R2; + ELSE + IF CPU_DDR_SYNC THEN -- SYNCHRON UND EIN? + IF DDR_CONFIG THEN -- JA + DDR_SM = DS_C2; + ELSE + IF CPU_REQ THEN -- BEI WAIT UND LINE WRITE + VA_S[] = CPU_ROW_ADR[]; + BA_S[] = CPU_BA[]; + CPU_AC = VCC; + BUS_CYC = VCC; + DDR_SM = DS_T2B; + ELSE + IF FIFO_REQ # !BLITTER_REQ THEN -- FIFO IST DEFAULT + VA_P[] = FIFO_ROW_ADR[]; + BA_P[] = FIFO_BA[]; + FIFO_AC = VCC; -- VORBESETZEN + ELSE + VA_P[] = BLITTER_ROW_ADR[]; + BA_P[] = BLITTER_BA[]; + BLITTER_AC = VCC; -- VORBESETZEN + END IF; + DDR_SM = DS_T2A; + END IF; + END IF; + ELSE + DDR_SM = DS_T1; -- NEIN ->SYNCHRONISIEREN + END IF; + END IF; + + WHEN DS_T2A => -- SCHNELLZUGRIFF *** HIER IST PAGE IMMER NOT OK *** + IF DDR_SEL & (nFB_WR # !LINE) THEN + VRAS = VCC; + VA[] = FB_AD[26..14]; + BA[] = FB_AD[13..12]; + VA_S[10] = VCC; -- AUTO PRECHARGE DA NICHT FIFO PAGE + CPU_AC = VCC; + BUS_CYC = VCC; -- BUS CYCLUS LOSTRETEN + ELSE + VRAS = FIFO_AC & FIFO_REQ # BLITTER_AC & BLITTER_REQ; + VA[] = VA_P[]; + BA[] = BA_P[]; + VA_S[10] = !(FIFO_AC & FIFO_REQ); + FIFO_BANK_OK = FIFO_AC & FIFO_REQ; + FIFO_AC = FIFO_AC & FIFO_REQ; + BLITTER_AC = BLITTER_AC & BLITTER_REQ; + END IF; + DDR_SM = DS_T3; + + WHEN DS_T2B => + VRAS = VCC; + FIFO_BANK_NOT_OK = VCC; + CPU_AC = VCC; + BUS_CYC = VCC; -- BUS CYCLUS LOSTRETEN + DDR_SM = DS_T3; + + WHEN DS_T3 => + CPU_AC = CPU_AC; + FIFO_AC = FIFO_AC; + BLITTER_AC = BLITTER_AC; + VA_S[10] = VA_S[10]; -- AUTO PRECHARGE WENN NICHT FIFO PAGE + IF !nFB_WR & CPU_AC # BLITTER_WR & BLITTER_AC THEN + DDR_SM = DS_T4W; + ELSE + IF CPU_AC THEN -- CPU? + VA_S[9..0] = CPU_COL_ADR[]; + BA_S[] = CPU_BA[]; + DDR_SM = DS_T4R; + ELSE + IF FIFO_AC THEN -- FIFO? + VA_S[9..0] = FIFO_COL_ADR[]; + BA_S[] = FIFO_BA[]; + DDR_SM = DS_T4F; + ELSE + IF BLITTER_AC THEN + VA_S[9..0] = BLITTER_COL_ADR[]; + BA_S[] = BLITTER_BA[]; + DDR_SM = DS_T4R; + ELSE + DDR_SM = DS_N8; + END IF; + END IF; + END IF; + END IF; +-- READ + WHEN DS_T4R => + CPU_AC = CPU_AC; + BLITTER_AC = BLITTER_AC; + VCAS = VCC; + SR_DDR_FB = CPU_AC; -- READ DATEN FÜR CPU + SR_BLITTER_DACK = BLITTER_AC; -- BLITTER DACK AND BLITTER LATCH DATEN + DDR_SM = DS_T5R; + + WHEN DS_T5R => + CPU_AC = CPU_AC; + BLITTER_AC = BLITTER_AC; + IF FIFO_REQ & FIFO_BANK_OK THEN -- FIFO READ EINSCHIEBEN WENN BANK OK + VA_S[9..0] = FIFO_COL_ADR[]; + VA_S[10] = GND; -- MANUEL PRECHARGE + BA_S[] = FIFO_BA[]; + DDR_SM = DS_T6F; + ELSE + VA_S[10] = VCC; -- ALLE PAGES SCHLIESSEN + DDR_SM = DS_CB6; + END IF; +-- WRITE + WHEN DS_T4W => + CPU_AC = CPU_AC; + BLITTER_AC = BLITTER_AC; + SR_BLITTER_DACK = BLITTER_AC; -- BLITTER ACK AND BLITTER LATCH DATEN + VA_S[10] = VA_S[10]; -- AUTO PRECHARGE WENN NICHT FIFO PAGE + DDR_SM = DS_T5W; + + WHEN DS_T5W => + CPU_AC = CPU_AC; + BLITTER_AC = BLITTER_AC; + VA_S[9..0] = CPU_AC & CPU_COL_ADR[] + # BLITTER_AC & BLITTER_COL_ADR[]; + VA_S[10] = VA_S[10]; -- AUTO PRECHARGE WENN NICHT FIFO PAGE + BA_S[] = CPU_AC & CPU_BA[] + # BLITTER_AC & BLITTER_BA[]; + SR_VDMP[7..4] = FB_B[]; -- BYTE ENABLE WRITE + SR_VDMP[3..0] = LINE & B"1111"; -- LINE ENABLE WRITE + DDR_SM = DS_T6W; + + WHEN DS_T6W => + CPU_AC = CPU_AC; + BLITTER_AC = BLITTER_AC; + VCAS = VCC; + VWE = VCC; + SR_DDR_WR = VCC; -- WRITE COMMAND CPU UND BLITTER IF WRITER + SR_DDRWR_D_SEL = VCC; -- 2. HÄLFTE WRITE DATEN SELEKTIEREN + SR_VDMP[] = LINE & B"11111111"; -- WENN LINE DANN ACTIV + DDR_SM = DS_T7W; + + WHEN DS_T7W => + CPU_AC = CPU_AC; + BLITTER_AC = BLITTER_AC; + SR_DDR_WR = VCC; -- WRITE COMMAND CPU UND BLITTER IF WRITE + SR_DDRWR_D_SEL = VCC; -- 2. HÄLFTE WRITE DATEN SELEKTIEREN + DDR_SM = DS_T8W; + + WHEN DS_T8W => + DDR_SM = DS_T9W; + + WHEN DS_T9W => + IF FIFO_REQ & FIFO_BANK_OK THEN + VA_S[9..0] = FIFO_COL_ADR[]; + VA_S[10] = GND; -- NON AUTO PRECHARGE + BA_S[] = FIFO_BA[]; + DDR_SM = DS_T6F; + ELSE + VA_S[10] = VCC; -- ALLE PAGES SCHLIESSEN + DDR_SM = DS_CB6; + END IF; +-- FIFO READ + WHEN DS_T4F => + VCAS = VCC; + SR_FIFO_WRE = VCC; -- DATEN WRITE FIFO + DDR_SM = DS_T5F; + + WHEN DS_T5F => + IF FIFO_REQ THEN + IF VIDEO_ADR_CNT[7..0]==H"FF" THEN -- NEUE PAGE? + VA_S[10] = VCC; -- ALLE PAGES SCHLIESSEN + DDR_SM = DS_CB6; -- BANK SCHLIESSEN + ELSE + VA_S[9..0] = FIFO_COL_ADR[]+4; + VA_S[10] = GND; -- NON AUTO PRECHARGE + BA_S[] = FIFO_BA[]; + DDR_SM = DS_T6F; + END IF; + ELSE + VA_S[10] = VCC; -- ALLE PAGES SCHLIESSEN + DDR_SM = DS_CB6; -- NOCH OFFEN LASSEN + END IF; + + WHEN DS_T6F => + VCAS = VCC; + SR_FIFO_WRE = VCC; -- DATEN WRITE FIFO + DDR_SM = DS_T7F; + + WHEN DS_T7F => + IF CPU_REQ & FIFO_MW[]>FIFO_LWM THEN + VA_S[10] = VCC; -- ALLE PAGES SCHLIESEN + DDR_SM = DS_CB8; -- BANK SCHLIESSEN + ELSE + IF FIFO_REQ THEN + IF VIDEO_ADR_CNT[7..0]==H"FF" THEN -- NEUE PAGE? + VA_S[10] = VCC; -- ALLE PAGES SCHLIESSEN + DDR_SM = DS_CB8; -- BANK SCHLIESSEN + ELSE + VA_S[9..0] = FIFO_COL_ADR[]+4; + VA_S[10] = GND; -- NON AUTO PRECHARGE + BA_S[] = FIFO_BA[]; + DDR_SM = DS_T8F; + END IF; + ELSE + VA_S[10] = VCC; -- ALLE PAGES SCHLIESEN + DDR_SM = DS_CB8; -- BANK SCHLIESSEN + END IF; + END IF; + + WHEN DS_T8F => + VCAS = VCC; + SR_FIFO_WRE = VCC; -- DATEN WRITE FIFO + IF FIFO_MW[] + ELSE + DDR_SM = DS_T9F; + END IF; + + WHEN DS_T9F => + IF FIFO_REQ THEN + IF VIDEO_ADR_CNT[7..0]==H"FF" THEN -- NEUE PAGE? + VA_S[10] = VCC; -- ALLE BANKS SCHLIESEN + DDR_SM = DS_CB6; -- BANK SCHLIESSEN + ELSE + VA_P[9..0] = FIFO_COL_ADR[]+4; + VA_P[10] = GND; -- NON AUTO PRECHARGE + BA_P[] = FIFO_BA[]; + DDR_SM = DS_T10F; + END IF; + ELSE + VA_S[10] = VCC; -- ALLE BANKS SCHLIESEN + DDR_SM = DS_CB6; -- BANK SCHLIESSEN + END IF; + + WHEN DS_T10F => + IF DDR_SEL & (nFB_WR # !LINE) & FB_AD[13..12]!=FIFO_BA[] THEN + VRAS = VCC; + VA[] = FB_AD[26..14]; + BA[] = FB_AD[13..12]; + CPU_AC = VCC; + BUS_CYC = VCC; -- BUS CYCLUS LOSTRETEN + VA_S[10] = VCC; -- AUTO PRECHARGE DA NICHT FIFO BANK + DDR_SM = DS_T3; + ELSE + VCAS = VCC; + VA[] = VA_P[]; + BA[] = BA_P[]; + SR_FIFO_WRE = VCC; -- DATEN WRITE FIFO + DDR_SM = DS_T7F; + END IF; + +-- CONFIG CYCLUS + WHEN DS_C2 => + DDR_SM = DS_C3; + WHEN DS_C3 => + BUS_CYC = CPU_REQ; + DDR_SM = DS_C4; + WHEN DS_C4 => + IF CPU_REQ THEN + DDR_SM = DS_C5; + ELSE + DDR_SM = DS_T1; + END IF; + WHEN DS_C5 => + DDR_SM = DS_C6; + WHEN DS_C6 => + VA_S[] = FB_AD[12..0]; + BA_S[] = FB_AD[14..13]; + DDR_SM = DS_C7; + WHEN DS_C7 => + VRAS = FB_AD18 & !nFB_WR & !FB_SIZE0 & !FB_SIZE1; -- NUR BEI LONG WRITE + VCAS = FB_AD17 & !nFB_WR & !FB_SIZE0 & !FB_SIZE1; -- NUR BEI LONG WRITE + VWE = FB_AD16 & !nFB_WR & !FB_SIZE0 & !FB_SIZE1; -- NUR BEI LONG WRITE + DDR_SM = DS_N8; +-- CLOSE FIFO BANK + WHEN DS_CB6 => + FIFO_BANK_NOT_OK = VCC; -- AUF NOT OK + VRAS = VCC; -- BÄNKE SCHLIESSEN + VWE = VCC; + DDR_SM = DS_N7; + WHEN DS_CB8 => + FIFO_BANK_NOT_OK = VCC; -- AUF NOT OK + VRAS = VCC; -- BÄNKE SCHLIESSEN + VWE = VCC; + DDR_SM = DS_T1; +-- REFRESH 70NS = 10 ZYCLEN + WHEN DS_R2 => + IF DDR_REFRESH_SIG[]==9 THEN -- EIN CYCLUS VORLAUF UM BANKS ZU SCHLIESSEN + VRAS = VCC; -- ALLE BANKS SCHLIESSEN + VWE = VCC; + VA[10] = VCC; + FIFO_BANK_NOT_OK = VCC; + DDR_SM = DS_R4; + ELSE + VCAS = VCC; + VRAS = VCC; + DDR_SM = DS_R3; + END IF; + WHEN DS_R3 => + DDR_SM = DS_R4; + WHEN DS_R4 => + DDR_SM = DS_R5; + WHEN DS_R5 => + DDR_SM = DS_R6; + WHEN DS_R6 => + DDR_SM = DS_N5; +-- LEERSCHLAUFE + WHEN DS_N5 => + DDR_SM = DS_N6; + WHEN DS_N6 => + DDR_SM = DS_N7; + WHEN DS_N7 => + DDR_SM = DS_N8; + WHEN DS_N8 => + DDR_SM = DS_T1; + END CASE; + +--------------------------------------------------------------- +-- BLITTER ---------------------- +----------------------------------------- + BLITTER_REQ.CLK = DDRCLK0; + BLITTER_REQ = BLITTER_SIG & !DDR_CONFIG & VCKE & !nVCS; + BLITTER_ROW_ADR[] = BLITTER_ADR[26..14]; + BLITTER_BA1 = BLITTER_ADR13; + BLITTER_BA0 = BLITTER_ADR12; + BLITTER_COL_ADR[] = BLITTER_ADR[11..2]; +------------------------------------------------------------------------------ +-- FIFO --------------------------------- +-------------------------------------------------------- + FIFO_REQ.CLK = DDRCLK0; + FIFO_REQ = (FIFO_MW[]2048 33MHz CLOCKS +----------------------------------------------------------------------------------------- + DDR_REFRESH_CNT[].CLK = CLK33M; + DDR_REFRESH_CNT[] = DDR_REFRESH_CNT[]+1; -- ZÄHLEN 0-2047 + REFRESH_TIME.CLK = DDRCLK0; + REFRESH_TIME = DDR_REFRESH_CNT[]==0 & !MAIN_CLK; -- SYNC + DDR_REFRESH_SIG[].CLK = DDRCLK0; + DDR_REFRESH_SIG[].ENA = REFRESH_TIME # DDR_SM==DS_R6; + DDR_REFRESH_SIG[] = REFRESH_TIME & 9 & DDR_REFRESH_ON & !DDR_CONFIG -- 9 STÜCK (8 REFRESH UND 1 ALS VORLAUF) + # !REFRESH_TIME & (DDR_REFRESH_SIG[]-1) & DDR_REFRESH_ON & !DDR_CONFIG; -- MINUS 1 WENN GEMACHT + DDR_REFRESH_REQ.CLK = DDRCLK0; + DDR_REFRESH_REQ = DDR_REFRESH_SIG[]!=0 & DDR_REFRESH_ON & !REFRESH_TIME & !DDR_CONFIG; +----------------------------------------------------------- +-- VIDEO REGISTER ----------------------- +--------------------------------------------------------------------------------------------------------------------- + VIDEO_BASE_L_D[].CLK = MAIN_CLK; + VIDEO_BASE_L = !nFB_CS1 & FB_ADR[19..1]==H"7C106"; -- 820D/2 + VIDEO_BASE_L_D[] = FB_AD[23..16]; -- SORRY, NUR 16 BYT GRENZEN + VIDEO_BASE_L_D[].ENA = !nFB_WR & VIDEO_BASE_L & FB_B1; + + VIDEO_BASE_M_D[].CLK = MAIN_CLK; + VIDEO_BASE_M = !nFB_CS1 & FB_ADR[19..1]==H"7C101"; -- 8203/2 + VIDEO_BASE_M_D[] = FB_AD[23..16]; + VIDEO_BASE_M_D[].ENA = !nFB_WR & VIDEO_BASE_M & FB_B3; + + VIDEO_BASE_H_D[].CLK = MAIN_CLK; + VIDEO_BASE_H = !nFB_CS1 & FB_ADR[19..1]==H"7C100"; -- 8200-1/2 + VIDEO_BASE_H_D[] = FB_AD[23..16]; + VIDEO_BASE_H_D[].ENA = !nFB_WR & VIDEO_BASE_H & FB_B1; + VIDEO_BASE_X_D[].CLK = MAIN_CLK; + VIDEO_BASE_X_D[] = FB_AD[26..24]; + VIDEO_BASE_X_D[].ENA = !nFB_WR & VIDEO_BASE_H & FB_B0; + + VIDEO_CNT_L = !nFB_CS1 & FB_ADR[19..1]==H"7C104"; -- 8209/2 + VIDEO_CNT_M = !nFB_CS1 & FB_ADR[19..1]==H"7C103"; -- 8207/2 + VIDEO_CNT_H = !nFB_CS1 & FB_ADR[19..1]==H"7C102"; -- 8204,5/2 + + FB_AD[31..24] = lpm_bustri_BYT( + VIDEO_BASE_H & (0,VIDEO_BASE_X_D[]) + # VIDEO_CNT_H & (0,VIDEO_ACT_ADR[26..24]) + ,(VIDEO_BASE_H # VIDEO_CNT_H) & !nFB_OE); + + FB_AD[23..16] = lpm_bustri_BYT( + VIDEO_BASE_L & VIDEO_BASE_L_D[] + # VIDEO_BASE_M & VIDEO_BASE_M_D[] + # VIDEO_BASE_H & VIDEO_BASE_H_D[] + # VIDEO_CNT_L & VIDEO_ACT_ADR[7..0] + # VIDEO_CNT_M & VIDEO_ACT_ADR[15..8] + # VIDEO_CNT_H & VIDEO_ACT_ADR[23..16] + ,(VIDEO_BASE_L # VIDEO_BASE_M # VIDEO_BASE_H # VIDEO_CNT_L # VIDEO_CNT_M # VIDEO_CNT_H) & !nFB_OE); +END; + diff --git a/FPGA_quartus/Video/DDR_CTR.tdf.bak b/FPGA_quartus/Video/DDR_CTR.tdf.bak new file mode 100644 index 0000000..ead66e8 --- /dev/null +++ b/FPGA_quartus/Video/DDR_CTR.tdf.bak @@ -0,0 +1,660 @@ +TITLE "DDR_CTR"; + +-- CREATED BY FREDI ASCHWANDEN + +INCLUDE "lpm_bustri_BYT.inc"; + +-- FIFO WATER MARK +CONSTANT FIFO_LWM = 0; +CONSTANT FIFO_MWM = 200; +CONSTANT FIFO_HWM = 500; + +-- {{ALTERA_PARAMETERS_BEGIN}} DO NOT REMOVE THIS LINE! +-- {{ALTERA_PARAMETERS_END}} DO NOT REMOVE THIS LINE! + +SUBDESIGN DDR_CTR +( + -- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! + FB_ADR[31..0] : INPUT; + nFB_CS1 : INPUT; + nFB_CS2 : INPUT; + nFB_CS3 : INPUT; + nFB_OE : INPUT; + FB_SIZE0 : INPUT; + FB_SIZE1 : INPUT; + nRSTO : INPUT; + MAIN_CLK : INPUT; + FB_ALE : INPUT; + nFB_WR : INPUT; + DDR_SYNC_66M : INPUT; + CLR_FIFO : INPUT; + VIDEO_RAM_CTR[15..0] : INPUT; + BLITTER_ADR[31..0] : INPUT; + BLITTER_SIG : INPUT; + BLITTER_WR : INPUT; + DDRCLK0 : INPUT; + CLK33M : INPUT; + FIFO_MW[8..0] : INPUT; + VA[12..0] : OUTPUT; + nVWE : OUTPUT; + nVRAS : OUTPUT; + nVCS : OUTPUT; + VCKE : OUTPUT; + nVCAS : OUTPUT; + FB_LE[3..0] : OUTPUT; + FB_VDOE[3..0] : OUTPUT; + CLEAR_FIFO_CNT : OUTPUT; + SR_FIFO_WRE : OUTPUT; + SR_DDR_FB : OUTPUT; + SR_DDR_WR : OUTPUT; + SR_DDRWR_D_SEL : OUTPUT; + SR_VDMP[7..0] : OUTPUT; + VIDEO_DDR_TA : OUTPUT; + SR_BLITTER_DACK : OUTPUT; + BA[1..0] : OUTPUT; + DDRWR_D_SEL1 : OUTPUT; + VDM_SEL[3..0] : OUTPUT; + FB_AD[31..0] : BIDIR; + -- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! +) + +VARIABLE + FB_REGDDR :MACHINE WITH STATES(FR_WAIT,FR_S0,FR_S1,FR_S2,FR_S3); + DDR_SM :MACHINE WITH STATES(DS_T1,DS_T2A,DS_T2B,DS_T3,DS_N5,DS_N6, DS_N7, DS_N8, -- START (NORMAL 8 CYCLES TOTAL = 60ns) + DS_C2,DS_C3,DS_C4, DS_C5, DS_C6, DS_C7, -- CONFIG + DS_T4R,DS_T5R, -- READ CPU UND BLITTER, + DS_T4W,DS_T5W,DS_T6W,DS_T7W,DS_T8W,DS_T9W, -- WRITE CPU UND BLITTER + DS_T4F,DS_T5F,DS_T6F,DS_T7F,DS_T8F,DS_T9F,DS_T10F, -- READ FIFO + DS_CB6, DS_CB8, -- CLOSE FIFO BANK + DS_R2,DS_R3,DS_R4, DS_R5, DS_R6); -- REFRESH 10X7.5NS=75NS + LINE :NODE; + FB_B[3..0] :NODE; + VCAS :NODE; + VRAS :NODE; + VWE :NODE; + VA_P[12..0] :DFF; + BA_P[1..0] :DFF; + VA_S[12..0] :DFF; + BA_S[1..0] :DFF; + MCS[1..0] :DFF; + CPU_DDR_SYNC :DFF; + DDR_SEL :NODE; + DDR_CS :DFFE; + DDR_CONFIG :NODE; + SR_DDR_WR :DFF; + SR_DDRWR_D_SEL :DFF; + SR_VDMP[7..0] :DFF; + CPU_ROW_ADR[12..0] :NODE; + CPU_BA[1..0] :NODE; + CPU_COL_ADR[9..0] :NODE; + CPU_SIG :NODE; + CPU_REQ :DFF; + CPU_AC :DFF; + BUS_CYC :DFF; + BUS_CYC_END :NODE; + BLITTER_REQ :DFF; + BLITTER_AC :DFF; + BLITTER_ROW_ADR[12..0] :NODE; + BLITTER_BA[1..0] :NODE; + BLITTER_COL_ADR[9..0] :NODE; + FIFO_REQ :DFF; + FIFO_AC :DFF; + FIFO_ROW_ADR[12..0] :NODE; + FIFO_BA[1..0] :NODE; + FIFO_COL_ADR[9..0] :NODE; + FIFO_ACTIVE :NODE; + CLR_FIFO_SYNC :DFF; + CLEAR_FIFO_CNT :DFF; + STOP :DFF; + SR_FIFO_WRE :DFF; + FIFO_BANK_OK :DFF; + FIFO_BANK_NOT_OK :NODE; + DDR_REFRESH_ON :NODE; + DDR_REFRESH_CNT[10..0] :DFF; + DDR_REFRESH_REQ :DFF; + DDR_REFRESH_SIG[3..0] :DFFE; + REFRESH_TIME :DFF; + VIDEO_BASE_L_D[7..0] :DFFE; + VIDEO_BASE_L :NODE; + VIDEO_BASE_M_D[7..0] :DFFE; + VIDEO_BASE_M :NODE; + VIDEO_BASE_H_D[7..0] :DFFE; + VIDEO_BASE_H :NODE; + VIDEO_BASE_X_D[2..0] :DFFE; + VIDEO_ADR_CNT[22..0] :DFFE; + VIDEO_CNT_L :NODE; + VIDEO_CNT_M :NODE; + VIDEO_CNT_H :NODE; + VIDEO_BASE_ADR[22..0] :NODE; + VIDEO_ACT_ADR[26..0] :NODE; + +BEGIN + LINE = FB_SIZE0 & FB_SIZE1; +-- BYT SELECT + FB_B0 = FB_ADR[1..0]==0 -- ADR==0 + # FB_SIZE1 & FB_SIZE0 # !FB_SIZE1 & !FB_SIZE0; -- LONG UND LINE + FB_B1 = FB_ADR[1..0]==1 -- ADR==1 + # FB_SIZE1 & !FB_SIZE0 & !FB_ADR1 -- HIGH WORD + # FB_SIZE1 & FB_SIZE0 # !FB_SIZE1 & !FB_SIZE0; -- LONG UND LINE + FB_B2 = FB_ADR[1..0]==2 -- ADR==2 + # FB_SIZE1 & FB_SIZE0 # !FB_SIZE1 & !FB_SIZE0; -- LONG UND LINE + FB_B3 = FB_ADR[1..0]==3 -- ADR==3 + # FB_SIZE1 & !FB_SIZE0 & FB_ADR1 -- LOW WORD + # FB_SIZE1 & FB_SIZE0 # !FB_SIZE1 & !FB_SIZE0; -- LONG UND LINE +-- CPU READ (REG DDR => CPU) AND WRITE (CPU => REG DDR) -------------------------------------------------- + FB_REGDDR.CLK = MAIN_CLK; + CASE FB_REGDDR IS + WHEN FR_WAIT => + FB_LE0 = !nFB_WR; + IF BUS_CYC # DDR_SEL & LINE & !nFB_WR THEN -- LOS WENN BEREIT ODER IMMER BEI LINE WRITE + FB_REGDDR = FR_S0; + ELSE + FB_REGDDR = FR_WAIT; + END IF; + WHEN FR_S0 => + IF DDR_CS THEN + FB_LE0 = !nFB_WR; + VIDEO_DDR_TA = VCC; + IF LINE THEN + FB_VDOE0 = !nFB_OE & !DDR_CONFIG; + FB_REGDDR = FR_S1; + ELSE + BUS_CYC_END = VCC; + FB_VDOE0 = !nFB_OE & !MAIN_CLK & !DDR_CONFIG; + FB_REGDDR = FR_WAIT; + END IF; + ELSE + FB_REGDDR = FR_WAIT; + END IF; + WHEN FR_S1 => + IF DDR_CS THEN + FB_VDOE1 = !nFB_OE & !DDR_CONFIG; + FB_LE1 = !nFB_WR; + VIDEO_DDR_TA = VCC; + FB_REGDDR = FR_S2; + ELSE + FB_REGDDR = FR_WAIT; + END IF; + WHEN FR_S2 => + IF DDR_CS THEN + FB_VDOE2 = !nFB_OE & !DDR_CONFIG; + FB_LE2 = !nFB_WR; + IF !BUS_CYC & LINE & !nFB_WR THEN -- BEI LINE WRITE EVT. WARTEN + FB_REGDDR = FR_S2; + ELSE + VIDEO_DDR_TA = VCC; + FB_REGDDR = FR_S3; + END IF; + ELSE + FB_REGDDR = FR_WAIT; + END IF; + WHEN FR_S3 => + IF DDR_CS THEN + FB_VDOE3 = !nFB_OE & !MAIN_CLK & !DDR_CONFIG; + FB_LE3 = !nFB_WR; + VIDEO_DDR_TA = VCC; + BUS_CYC_END = VCC; + FB_REGDDR = FR_WAIT; + ELSE + FB_REGDDR = FR_WAIT; + END IF; + END CASE; +-- DDR STEUERUNG ----------------------------------------------------- +-- VIDEO RAM CONTROL REGISTER (IST IN VIDEO_MUX_CTR) $F0000400: BIT 0: VCKE; 1: !nVCS ;2:REFRESH ON , (0=FIFO UND CNT CLEAR); 3: CONFIG; 8: FIFO_ACTIVE; + VCKE = VIDEO_RAM_CTR0; + nVCS = !VIDEO_RAM_CTR1; + DDR_REFRESH_ON = VIDEO_RAM_CTR2; + DDR_CONFIG = VIDEO_RAM_CTR3; + FIFO_ACTIVE = VIDEO_RAM_CTR8; +-------------------------------- + CPU_ROW_ADR[] = FB_ADR[26..14]; + CPU_BA[] = FB_ADR[13..12]; + CPU_COL_ADR[] = FB_ADR[11..2]; + nVRAS = !VRAS; + nVCAS = !VCAS; + nVWE = !VWE; + SR_DDR_WR.CLK = DDRCLK0; + SR_DDRWR_D_SEL.CLK = DDRCLK0; + SR_VDMP[7..0].CLK = DDRCLK0; + SR_FIFO_WRE.CLK = DDRCLK0; + CPU_AC.CLK = DDRCLK0; + FIFO_AC.CLK = DDRCLK0; + BLITTER_AC.CLK = DDRCLK0; + DDRWR_D_SEL1 = BLITTER_AC; +-- SELECT LOGIC + DDR_SEL = FB_ALE & FB_AD[31..30]==B"01"; + DDR_CS.CLK = MAIN_CLK; + DDR_CS.ENA = FB_ALE; + DDR_CS = DDR_SEL; +-- WENN READ ODER WRITE B,W,L DDR SOFORT ANFORDERN, BEI WRITE LINE SPÄTER + CPU_SIG = DDR_SEL & (nFB_WR # !LINE) & !DDR_CONFIG -- NICHT LINE ODER READ SOFORT LOS WENN NICHT CONFIG + # DDR_SEL & DDR_CONFIG -- CONFIG SOFORT LOS + # FB_REGDDR==FR_S1 & !nFB_WR; -- LINE WRITE SPÄTER + CPU_REQ.CLK = DDR_SYNC_66M; + CPU_REQ = CPU_SIG + # CPU_REQ & FB_REGDDR!=FR_S1 & FB_REGDDR!=FR_S3 & !BUS_CYC_END & !BUS_CYC; -- HALTEN BUS CYC BEGONNEN ODER FERTIG + BUS_CYC.CLK = DDRCLK0; + BUS_CYC = BUS_CYC & !BUS_CYC_END; + -- STATE MACHINE SYNCHRONISIEREN ----------------- + MCS[].CLK = DDRCLK0; + MCS0 = MAIN_CLK; + MCS1 = MCS0; + CPU_DDR_SYNC.CLK = DDRCLK0; + CPU_DDR_SYNC = MCS[]==2 & VCKE & !nVCS; -- NUR 1 WENN EIN + --------------------------------------------------- + VA_S[].CLK = DDRCLK0; + BA_S[].CLK = DDRCLK0; + VA[] = VA_S[]; + BA[] = BA_S[]; + VA_P[].CLK = DDRCLK0; + BA_P[].CLK = DDRCLK0; +-- DDR STATE MACHINE ----------------------------------------------- + DDR_SM.CLK = DDRCLK0; + CASE DDR_SM IS + WHEN DS_T1 => + IF DDR_REFRESH_REQ THEN + DDR_SM = DS_R2; + ELSE + IF CPU_DDR_SYNC THEN -- SYNCHRON UND EIN? + IF DDR_CONFIG THEN -- JA + DDR_SM = DS_C2; + ELSE + IF CPU_REQ THEN -- BEI WAIT UND LINE WRITE + VA_S[] = CPU_ROW_ADR[]; + BA_S[] = CPU_BA[]; + CPU_AC = VCC; + BUS_CYC = VCC; + DDR_SM = DS_T2B; + ELSE + IF FIFO_REQ # !BLITTER_REQ THEN -- FIFO IST DEFAULT + VA_P[] = FIFO_ROW_ADR[]; + BA_P[] = FIFO_BA[]; + FIFO_AC = VCC; -- VORBESETZEN + ELSE + VA_P[] = BLITTER_ROW_ADR[]; + BA_P[] = BLITTER_BA[]; + BLITTER_AC = VCC; -- VORBESETZEN + END IF; + DDR_SM = DS_T2A; + END IF; + END IF; + ELSE + DDR_SM = DS_T1; -- NEIN ->SYNCHRONISIEREN + END IF; + END IF; + + WHEN DS_T2A => -- SCHNELLZUGRIFF *** HIER IST PAGE IMMER NOT OK *** + IF DDR_SEL & (nFB_WR # !LINE) THEN + VRAS = VCC; + VA[] = FB_AD[26..14]; + BA[] = FB_AD[13..12]; + VA_S[10] = VCC; -- AUTO PRECHARGE DA NICHT FIFO PAGE + CPU_AC = VCC; + BUS_CYC = VCC; -- BUS CYCLUS LOSTRETEN + ELSE + VRAS = FIFO_AC & FIFO_REQ # BLITTER_AC & BLITTER_REQ; + VA[] = VA_P[]; + BA[] = BA_P[]; + VA_S[10] = !(FIFO_AC & FIFO_REQ); + FIFO_BANK_OK = FIFO_AC & FIFO_REQ; + FIFO_AC = FIFO_AC & FIFO_REQ; + BLITTER_AC = BLITTER_AC & BLITTER_REQ; + END IF; + DDR_SM = DS_T3; + + WHEN DS_T2B => + VRAS = VCC; + FIFO_BANK_NOT_OK = VCC; + CPU_AC = VCC; + BUS_CYC = VCC; -- BUS CYCLUS LOSTRETEN + DDR_SM = DS_T3; + + WHEN DS_T3 => + CPU_AC = CPU_AC; + FIFO_AC = FIFO_AC; + BLITTER_AC = BLITTER_AC; + VA_S[10] = VA_S[10]; -- AUTO PRECHARGE WENN NICHT FIFO PAGE + IF !nFB_WR & CPU_AC # BLITTER_WR & BLITTER_AC THEN + DDR_SM = DS_T4W; + ELSE + IF CPU_AC THEN -- CPU? + VA_S[9..0] = CPU_COL_ADR[]; + BA_S[] = CPU_BA[]; + DDR_SM = DS_T4R; + ELSE + IF FIFO_AC THEN -- FIFO? + VA_S[9..0] = FIFO_COL_ADR[]; + BA_S[] = FIFO_BA[]; + DDR_SM = DS_T4F; + ELSE + IF BLITTER_AC THEN + VA_S[9..0] = BLITTER_COL_ADR[]; + BA_S[] = BLITTER_BA[]; + DDR_SM = DS_T4R; + ELSE + DDR_SM = DS_N8; + END IF; + END IF; + END IF; + END IF; +-- READ + WHEN DS_T4R => + CPU_AC = CPU_AC; + BLITTER_AC = BLITTER_AC; + VCAS = VCC; + SR_DDR_FB = CPU_AC; -- READ DATEN FÜR CPU + SR_BLITTER_DACK = BLITTER_AC; -- BLITTER DACK AND BLITTER LATCH DATEN + DDR_SM = DS_T5R; + + WHEN DS_T5R => + CPU_AC = CPU_AC; + BLITTER_AC = BLITTER_AC; + IF FIFO_REQ & FIFO_BANK_OK THEN -- FIFO READ EINSCHIEBEN WENN BANK OK + VA_S[9..0] = FIFO_COL_ADR[]; + VA_S[10] = GND; -- MANUEL PRECHARGE + BA_S[] = FIFO_BA[]; + DDR_SM = DS_T6F; + ELSE + VA_S[10] = VCC; -- ALLE PAGES SCHLIESSEN + DDR_SM = DS_CB6; + END IF; +-- WRITE + WHEN DS_T4W => + CPU_AC = CPU_AC; + BLITTER_AC = BLITTER_AC; + SR_BLITTER_DACK = BLITTER_AC; -- BLITTER ACK AND BLITTER LATCH DATEN + VA_S[10] = VA_S[10]; -- AUTO PRECHARGE WENN NICHT FIFO PAGE + DDR_SM = DS_T5W; + + WHEN DS_T5W => + CPU_AC = CPU_AC; + BLITTER_AC = BLITTER_AC; + VA_S[9..0] = CPU_AC & CPU_COL_ADR[] + # BLITTER_AC & BLITTER_COL_ADR[]; + VA_S[10] = VA_S[10]; -- AUTO PRECHARGE WENN NICHT FIFO PAGE + BA_S[] = CPU_AC & CPU_BA[] + # BLITTER_AC & BLITTER_BA[]; + SR_VDMP[7..4] = FB_B[]; -- BYTE ENABLE WRITE + SR_VDMP[3..0] = LINE & B"1111"; -- LINE ENABLE WRITE + DDR_SM = DS_T6W; + + WHEN DS_T6W => + CPU_AC = CPU_AC; + BLITTER_AC = BLITTER_AC; + VCAS = VCC; + VWE = VCC; + SR_DDR_WR = VCC; -- WRITE COMMAND CPU UND BLITTER IF WRITER + SR_DDRWR_D_SEL = VCC; -- 2. HÄLFTE WRITE DATEN SELEKTIEREN + SR_VDMP[] = LINE & B"11111111"; -- WENN LINE DANN ACTIV + DDR_SM = DS_T7W; + + WHEN DS_T7W => + CPU_AC = CPU_AC; + BLITTER_AC = BLITTER_AC; + SR_DDR_WR = VCC; -- WRITE COMMAND CPU UND BLITTER IF WRITE + SR_DDRWR_D_SEL = VCC; -- 2. HÄLFTE WRITE DATEN SELEKTIEREN + DDR_SM = DS_T8W; + + WHEN DS_T8W => + DDR_SM = DS_T9W; + + WHEN DS_T9W => + IF FIFO_REQ & FIFO_BANK_OK THEN + VA_S[9..0] = FIFO_COL_ADR[]; + VA_S[10] = GND; -- NON AUTO PRECHARGE + BA_S[] = FIFO_BA[]; + DDR_SM = DS_T6F; + ELSE + VA_S[10] = VCC; -- ALLE PAGES SCHLIESSEN + DDR_SM = DS_CB6; + END IF; +-- FIFO READ + WHEN DS_T4F => + VCAS = VCC; + SR_FIFO_WRE = VCC; -- DATEN WRITE FIFO + DDR_SM = DS_T5F; + + WHEN DS_T5F => + IF FIFO_REQ THEN + IF VIDEO_ADR_CNT[7..0]==H"FF" THEN -- NEUE PAGE? + VA_S[10] = VCC; -- ALLE PAGES SCHLIESSEN + DDR_SM = DS_CB6; -- BANK SCHLIESSEN + ELSE + VA_S[9..0] = FIFO_COL_ADR[]+4; + VA_S[10] = GND; -- NON AUTO PRECHARGE + BA_S[] = FIFO_BA[]; + DDR_SM = DS_T6F; + END IF; + ELSE + VA_S[10] = VCC; -- ALLE PAGES SCHLIESSEN + DDR_SM = DS_CB6; -- NOCH OFFEN LASSEN + END IF; + + WHEN DS_T6F => + VCAS = VCC; + SR_FIFO_WRE = VCC; -- DATEN WRITE FIFO + DDR_SM = DS_T7F; + + WHEN DS_T7F => + IF CPU_REQ & FIFO_MW[]>FIFO_LWM THEN + VA_S[10] = VCC; -- ALLE PAGES SCHLIESEN + DDR_SM = DS_CB8; -- BANK SCHLIESSEN + ELSE + IF FIFO_REQ THEN + IF VIDEO_ADR_CNT[7..0]==H"FF" THEN -- NEUE PAGE? + VA_S[10] = VCC; -- ALLE PAGES SCHLIESSEN + DDR_SM = DS_CB8; -- BANK SCHLIESSEN + ELSE + VA_S[9..0] = FIFO_COL_ADR[]+4; + VA_S[10] = GND; -- NON AUTO PRECHARGE + BA_S[] = FIFO_BA[]; + DDR_SM = DS_T8F; + END IF; + ELSE + VA_S[10] = VCC; -- ALLE PAGES SCHLIESEN + DDR_SM = DS_CB8; -- BANK SCHLIESSEN + END IF; + END IF; + + WHEN DS_T8F => + VCAS = VCC; + SR_FIFO_WRE = VCC; -- DATEN WRITE FIFO + IF FIFO_MW[] + ELSE + DDR_SM = DS_T9F; + END IF; + + WHEN DS_T9F => + IF FIFO_REQ THEN + IF VIDEO_ADR_CNT[7..0]==H"FF" THEN -- NEUE PAGE? + VA_S[10] = VCC; -- ALLE BANKS SCHLIESEN + DDR_SM = DS_CB6; -- BANK SCHLIESSEN + ELSE + VA_P[9..0] = FIFO_COL_ADR[]+4; + VA_P[10] = GND; -- NON AUTO PRECHARGE + BA_P[] = FIFO_BA[]; + DDR_SM = DS_T10F; + END IF; + ELSE + VA_S[10] = VCC; -- ALLE BANKS SCHLIESEN + DDR_SM = DS_CB6; -- BANK SCHLIESSEN + END IF; + + WHEN DS_T10F => + IF DDR_SEL & (nFB_WR # !LINE) & FB_AD[13..12]!=FIFO_BA[] THEN + VRAS = VCC; + VA[] = FB_AD[26..14]; + BA[] = FB_AD[13..12]; + CPU_AC = VCC; + BUS_CYC = VCC; -- BUS CYCLUS LOSTRETEN + VA_S[10] = VCC; -- AUTO PRECHARGE DA NICHT FIFO BANK + DDR_SM = DS_T3; + ELSE + VCAS = VCC; + VA[] = VA_P[]; + BA[] = BA_P[]; + SR_FIFO_WRE = VCC; -- DATEN WRITE FIFO + DDR_SM = DS_T7F; + END IF; + +-- CONFIG CYCLUS + WHEN DS_C2 => + DDR_SM = DS_C3; + WHEN DS_C3 => + BUS_CYC = CPU_REQ; + DDR_SM = DS_C4; + WHEN DS_C4 => + IF CPU_REQ THEN + DDR_SM = DS_C5; + ELSE + DDR_SM = DS_T1; + END IF; + WHEN DS_C5 => + DDR_SM = DS_C6; + WHEN DS_C6 => + VA_S[] = FB_AD[12..0]; + BA_S[] = FB_AD[14..13]; + DDR_SM = DS_C7; + WHEN DS_C7 => + VRAS = FB_AD18 & !nFB_WR & !FB_SIZE0 & !FB_SIZE1; -- NUR BEI LONG WRITE + VCAS = FB_AD17 & !nFB_WR & !FB_SIZE0 & !FB_SIZE1; -- NUR BEI LONG WRITE + VWE = FB_AD16 & !nFB_WR & !FB_SIZE0 & !FB_SIZE1; -- NUR BEI LONG WRITE + DDR_SM = DS_N8; +-- CLOSE FIFO BANK + WHEN DS_CB6 => + FIFO_BANK_NOT_OK = VCC; -- AUF NOT OK + VRAS = VCC; -- BÄNKE SCHLIESSEN + VWE = VCC; + DDR_SM = DS_N7; + WHEN DS_CB8 => + FIFO_BANK_NOT_OK = VCC; -- AUF NOT OK + VRAS = VCC; -- BÄNKE SCHLIESSEN + VWE = VCC; + DDR_SM = DS_T1; +-- REFRESH 70NS = 10 ZYCLEN + WHEN DS_R2 => + IF DDR_REFRESH_SIG[]==9 THEN -- EIN CYCLUS VORLAUF UM BANKS ZU SCHLIESSEN + VRAS = VCC; -- ALLE BANKS SCHLIESSEN + VWE = VCC; + VA[10] = VCC; + FIFO_BANK_NOT_OK = VCC; + DDR_SM = DS_R4; + ELSE + VCAS = VCC; + VRAS = VCC; + DDR_SM = DS_R3; + END IF; + WHEN DS_R3 => + DDR_SM = DS_R4; + WHEN DS_R4 => + DDR_SM = DS_R5; + WHEN DS_R5 => + DDR_SM = DS_R6; + WHEN DS_R6 => + DDR_SM = DS_N5; +-- LEERSCHLAUFE + WHEN DS_N5 => + DDR_SM = DS_N6; + WHEN DS_N6 => + DDR_SM = DS_N7; + WHEN DS_N7 => + DDR_SM = DS_N8; + WHEN DS_N8 => + DDR_SM = DS_T1; + END CASE; + +--------------------------------------------------------------- +-- BLITTER ---------------------- +----------------------------------------- + BLITTER_REQ.CLK = DDRCLK0; + BLITTER_REQ = BLITTER_SIG & !DDR_CONFIG & VCKE & !nVCS; + BLITTER_ROW_ADR[] = BLITTER_ADR[26..14]; + BLITTER_BA1 = BLITTER_ADR13; + BLITTER_BA0 = BLITTER_ADR12; + BLITTER_COL_ADR[] = BLITTER_ADR[11..2]; +------------------------------------------------------------------------------ +-- FIFO --------------------------------- +-------------------------------------------------------- + FIFO_REQ.CLK = DDRCLK0; + FIFO_REQ = (FIFO_MW[]2048 33MHz CLOCKS +----------------------------------------------------------------------------------------- + DDR_REFRESH_CNT[].CLK = CLK33M; + DDR_REFRESH_CNT[] = DDR_REFRESH_CNT[]+1; -- ZÄHLEN 0-2047 + REFRESH_TIME.CLK = DDRCLK0; + REFRESH_TIME = DDR_REFRESH_CNT[]==0 & !MAIN_CLK; -- SYNC + DDR_REFRESH_SIG[].CLK = DDRCLK0; + DDR_REFRESH_SIG[].ENA = REFRESH_TIME # DDR_SM==DS_R6; + DDR_REFRESH_SIG[] = REFRESH_TIME & 9 & DDR_REFRESH_ON & !DDR_CONFIG -- 9 STÜCK (8 REFRESH UND 1 ALS VORLAUF) + # !REFRESH_TIME & (DDR_REFRESH_SIG[]-1) & DDR_REFRESH_ON & !DDR_CONFIG; -- MINUS 1 WENN GEMACHT + DDR_REFRESH_REQ.CLK = DDRCLK0; + DDR_REFRESH_REQ = DDR_REFRESH_SIG[]!=0 & DDR_REFRESH_ON & !REFRESH_TIME & !DDR_CONFIG; +----------------------------------------------------------- +-- VIDEO REGISTER ----------------------- +--------------------------------------------------------------------------------------------------------------------- + VIDEO_BASE_L_D[].CLK = MAIN_CLK; + VIDEO_BASE_L = !nFB_CS1 & FB_ADR[19..1]==H"7C106"; -- 820D/2 + VIDEO_BASE_L_D[] = FB_AD[23..16]; -- SORRY, NUR 16 BYT GRENZEN + VIDEO_BASE_L_D[].ENA = !nFB_WR & VIDEO_BASE_L & FB_B1; + + VIDEO_BASE_M_D[].CLK = MAIN_CLK; + VIDEO_BASE_M = !nFB_CS1 & FB_ADR[19..1]==H"7C101"; -- 8203/2 + VIDEO_BASE_M_D[] = FB_AD[23..16]; + VIDEO_BASE_M_D[].ENA = !nFB_WR & VIDEO_BASE_M & FB_B3; + + VIDEO_BASE_H_D[].CLK = MAIN_CLK; + VIDEO_BASE_H = !nFB_CS1 & FB_ADR[19..1]==H"7C100"; -- 8200-1/2 + VIDEO_BASE_H_D[] = FB_AD[23..16]; + VIDEO_BASE_H_D[].ENA = !nFB_WR & VIDEO_BASE_H & FB_B1; + VIDEO_BASE_X_D[].CLK = MAIN_CLK; + VIDEO_BASE_X_D[] = FB_AD[26..24]; + VIDEO_BASE_X_D[].ENA = !nFB_WR & VIDEO_BASE_H & FB_B0; + + VIDEO_CNT_L = !nFB_CS1 & FB_ADR[19..1]==H"7C104"; -- 8209/2 + VIDEO_CNT_M = !nFB_CS1 & FB_ADR[19..1]==H"7C103"; -- 8207/2 + VIDEO_CNT_H = !nFB_CS1 & FB_ADR[19..1]==H"7C102"; -- 8204,5/2 + + FB_AD[31..24] = lpm_bustri_BYT( + VIDEO_BASE_H & (0,VIDEO_BASE_X_D[]) + # VIDEO_CNT_H & (0,VIDEO_ACT_ADR[26..24]) + ,(VIDEO_BASE_H # VIDEO_CNT_H) & !nFB_OE); + + FB_AD[23..16] = lpm_bustri_BYT( + VIDEO_BASE_L & VIDEO_BASE_L_D[] + # VIDEO_BASE_M & VIDEO_BASE_M_D[] + # VIDEO_BASE_H & VIDEO_BASE_H_D[] + # VIDEO_CNT_L & VIDEO_ACT_ADR[7..0] + # VIDEO_CNT_M & VIDEO_ACT_ADR[15..8] + # VIDEO_CNT_H & VIDEO_ACT_ADR[23..16] + ,(VIDEO_BASE_L # VIDEO_BASE_M # VIDEO_BASE_H # VIDEO_CNT_L # VIDEO_CNT_M # VIDEO_CNT_H) & !nFB_OE); +END; + diff --git a/FPGA_quartus/Video/DDR_CTR_BLITTER.tdf.bak b/FPGA_quartus/Video/DDR_CTR_BLITTER.tdf.bak new file mode 100644 index 0000000..03052b4 --- /dev/null +++ b/FPGA_quartus/Video/DDR_CTR_BLITTER.tdf.bak @@ -0,0 +1,352 @@ +TITLE "DDR_CTR_BLITTER"; + +-- CREATED BY FREDI ASCHWANDEN + +INCLUDE "lpm_bustri_BYT.inc"; + + +-- {{ALTERA_PARAMETERS_BEGIN}} DO NOT REMOVE THIS LINE! +-- {{ALTERA_PARAMETERS_END}} DO NOT REMOVE THIS LINE! + +SUBDESIGN DDR_CTR_BLITTER +( + -- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! + FB_ADR[31..0] : INPUT; + nFB_CS1 : INPUT; + nFB_CS2 : INPUT; + nFB_CS3 : INPUT; + nFB_OE : INPUT; + FB_SIZE0 : INPUT; + FB_SIZE1 : INPUT; + nRSTO : INPUT; + MAIN_CLK : INPUT; + FIFO_FULL : INPUT; + FB_ALE : INPUT; + nFB_WR : INPUT; + DDR_SYNC_66M : INPUT; + VSYNC : INPUT; + BLITTER_ON : INPUT; + VIDEO_RAM_CTR[15..0] : INPUT; + VDVZ[127..0] : INPUT; + DDRCLK[3..0] : INPUT; + BA0 : OUTPUT; + BA1 : OUTPUT; + VA[12..0] : OUTPUT; + nVWE : OUTPUT; + nVRAS : OUTPUT; + nVCS : OUTPUT; + VCKE : OUTPUT; + nVCAS : OUTPUT; + FIFO_WRE : OUTPUT; + FB_LE[3..0] : OUTPUT; + FB_VDOE[3..0] : OUTPUT; + START_CYC_RDWR : OUTPUT; + DDR_WR : OUTPUT; + CLEAR_FIFO_CNT : OUTPUT; + BLITTER_RUN : OUTPUT; + BLITTER_DOUT[127..0] : OUTPUT; + BLITTER_LE[3..0] : OUTPUT; + BLITTER_RDE : OUTPUT; + DDRWR_D_SEL[1..0] : OUTPUT; + VDMP[7..0] : OUTPUT; + FB_AD[31..0] : BIDIR; + -- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! +) + +VARIABLE + FB_REGDDR :MACHINE WITH STATES(FR_WAIT,FR_S0,FR_S1,FR_S2,FR_S3); + DDR_SM :MACHINE WITH STATES(DS_T1,DS_T2,DS_T3,DS_T4,DS_T5,DS_T6,DS_T7,DS_T8,DS_LS); + LINE :NODE; + FB_B[3..0] :NODE; + VCAS :NODE; + VRAS :NODE; + VWE :NODE; + VA[12..0] :NODE; + BA0 :NODE; + BA1 :NODE; + DDR_WR :DFF; + DDR_SEL :NODE; + DDR_CONFIG :NODE; + DDRWR_D_SEL[1..0] :DFF; + CPU_ROW_ADR[12..0] :NODE; + CPU_BA0 :NODE; + CPU_BA1 :NODE; + CPU_COL_ADR[9..0] :NODE; + CPU_SIG :NODE; + CPU_REQ :DFF; + BLITTER_SIG :NODE; + BLITTER_REQ :DFF; + BLITTER_RUN :DFF; + BLITTER_WR :DFF; + BLITTER_ROW_ADR[12..0] :NODE; + BLITTER_BA0 :NODE; + BLITTER_BA1 :NODE; + BLITTER_COL_ADR[9..0] :NODE; + FIFO_SIG :NODE; + FIFO_REQ :DFF; + FIFO_ROW_ADR[12..0] :NODE; + FIFO_BA0 :NODE; + FIFO_BA1 :NODE; + FIFO_COL_ADR[9..0] :NODE; + FIFO_WRE :DFF; + FIFO_ACTIVE :NODE; + CLEAR_FIFO_CNT :DFF; + STOP :DFF; + DDR_REFRESH_ON :NODE; + VIDEO_BASE_L_D[3..0] :DFFE; + VIDEO_BASE_L :NODE; + VIDEO_BASE_M_D[7..0] :DFFE; + VIDEO_BASE_M :NODE; + VIDEO_BASE_H_D[7..0] :DFFE; + VIDEO_BASE_H :NODE; + VIDEO_BASE_X_D[7..0] :DFFE; + VIDEO_ADR_CNT[27..0] :DFFE; + VIDEO_CNT_L :NODE; + VIDEO_CNT_M :NODE; + VIDEO_CNT_H :NODE; + VIDEO_BASE_ADR[27..0] :NODE; + +BEGIN + LINE = FB_SIZE0 & FB_SIZE1; +-- BYT SELECT + FB_B0 = FB_ADR[1..0]==0; -- ADR==0 + FB_B1 = FB_ADR[1..0]==1 -- ADR==1 + # FB_SIZE1 & !FB_SIZE0 & !FB_ADR1 -- HIGH WORD + # FB_SIZE1 & FB_SIZE0 # !FB_SIZE1 & !FB_SIZE0; -- LONG UND LINE + FB_B2 = FB_ADR[1..0]==2 -- ADR==2 + # FB_SIZE1 & FB_SIZE0 # !FB_SIZE1 & !FB_SIZE0; -- LONG UND LINE + FB_B3 = FB_ADR[1..0]==3 -- ADR==3 + # FB_SIZE1 & !FB_SIZE0 & FB_ADR1 -- LOW WORD + # FB_SIZE1 & FB_SIZE0 # !FB_SIZE1 & !FB_SIZE0; -- LONG UND LINE +-- CPU READ (REG DDR => CPU) AND WRITE (CPU => REG DDR) -------------------------------------------------- + FB_REGDDR.CLK = MAIN_CLK; + CASE FB_REGDDR IS + WHEN FR_WAIT => + IF DDR_SEL THEN + FB_REGDDR = FR_S0; + ELSE + FB_REGDDR = FR_WAIT; + END IF; + WHEN FR_S0 => + FB_VDOE0 = !nFB_OE & !DDR_CONFIG; + FB_LE0 = !nFB_WR; + IF LINE THEN + FB_REGDDR = FR_S1; + ELSE + FB_REGDDR = FR_WAIT; + END IF; + WHEN FR_S1 => + FB_VDOE1 = !nFB_OE & !DDR_CONFIG; + FB_LE1 = !nFB_WR; + FB_REGDDR = FR_S2; + WHEN FR_S2 => + FB_VDOE2 = !nFB_OE & !DDR_CONFIG; + FB_LE2 = !nFB_WR; + FB_REGDDR = FR_S3; + WHEN FR_S3 => + FB_VDOE3 = !nFB_OE & !DDR_CONFIG; + FB_LE3 = !nFB_WR; + FB_REGDDR = FR_WAIT; + END CASE; +-- DDR STEUERUNG ----------------------------------------------------- +-- VIDEO RAM CONTROL REGISTER (IST IN VIDEO_MUX_CTR) $F0000400: BIT 0=VCKE,1=!nVCS,2=FIFO_ACTIVE,3=FIFO UND CNT CLEAR,15..11=VIDEO RAM BASE + VCKE = VIDEO_RAM_CTR0; + nVCS = !VIDEO_RAM_CTR1; + FIFO_ACTIVE = VIDEO_RAM_CTR2; + DDR_CONFIG = VIDEO_RAM_CTR3; + DDR_REFRESH_ON = VIDEO_RAM_CTR4; +-------------------------------- + CPU_ROW_ADR[] = FB_ADR[26..14]; + CPU_BA1 = FB_ADR13; + CPU_BA0 = FB_ADR12; + CPU_COL_ADR[] = FB_ADR[11..2]; + nVRAS = !VRAS; + nVCAS = !VCAS; + nVWE = !VWE; + DDR_WR.CLK = DDRCLK0; +-- SELECT LOGIC + DDR_SEL = FB_ALE & FB_AD[31..29]==B"011"; +-- WENN READ ODER WRITE B,W,L DDR SOFORT ANFORDERN, BEI WRITE LINE SPÄTER + CPU_SIG = DDR_SEL & nFB_WR & !DDR_CONFIG -- READ SOFORT LOS + # FR_S0 & !nFB_WR -- WRITE SPÄTER AUCH CONFIG + # FR_S3 & !nFB_WR & LINE & !DDR_CONFIG; -- LINE WRITE + CPU_REQ = CPU_SIG; + CPU_REQ.CLK = DDR_SYNC_66M; + DDR_D_SEL[].CLK = DDRCLK3; +-- DDR STATE MACHINE ----------------------------------------------- + DDR_SM.CLK = DDRCLK0; + CASE DDR_SM IS + WHEN DS_T1 => + IF MAIN_CLK THEN + DDR_WR = DDR_WR; -- WRITE HALTEN (VON T4) + DDR_SM = DS_T2; + ELSE + DDR_SM = DS_LS; -- SYNCHRONISIEREN + END IF; + WHEN DS_T2 => + IF !DDR_CONFIG THEN + VRAS = CPU_SIG # BLITTER_SIG # FIFO_SIG # DDR_REFRESH_ON; + VA[] = CPU_SIG & CPU_ROW_ADR[] + # BLITTER_SIG & BLITTER_ROW_ADR[] + # FIFO_SIG & FIFO_ROW_ADR[]; + BA0 = CPU_SIG & CPU_BA0 + # BLITTER_SIG & BLITTER_BA0 + # FIFO_SIG & FIFO_BA0; + BA1 = CPU_SIG & CPU_BA1 + # BLITTER_SIG & BLITTER_BA1 + # FIFO_SIG & FIFO_BA1; + VCAS = !CPU_SIG & !BLITTER_SIG & !FIFO_SIG & DDR_REFRESH_ON; -- AUTO REFRESH WENN SONST NICHTS + BLITTER_REQ = BLITTER_SIG; + FIFO_REQ = FIFO_SIG; + END IF; + IF MAIN_CLK THEN + DDR_SM = DS_T3; + ELSE + DDR_SM = DS_LS; + END IF; + WHEN DS_T3 => + IF DDR_CONFIG & CPU_REQ THEN + VRAS = FB_AD18; + VCAS = FB_AD17; + VWE = FB_AD16; + BA1 = FB_AD14; + BA0 = FB_AD13; + VA[] = FB_AD[12..0]; + END IF; + IF !CPU_REQ & !BLITTER_REQ & !FIFO_REQ # DDR_CONFIG THEN + DDR_SM = DS_LS; + ELSE + BLITTER_REQ = BLITTER_SIG; + FIFO_REQ = FIFO_SIG; + DDR_SM = DS_T4; + END IF; + WHEN DS_T4 => + FIFO_REQ = FIFO_SIG; + VCAS = VCC; + VWE = !nFB_WR & CPU_REQ # BLITTER_WR & BLITTER_REQ; + VA[9..0] = CPU_REQ & CPU_COL_ADR[] + # BLITTER_REQ & BLITTER_COL_ADR[] + # FIFO_REQ & FIFO_COL_ADR[]; + VA10 = VCC; -- AUTO PRECHARGE + BA0 = CPU_REQ & CPU_BA0 + # BLITTER_REQ & BLITTER_BA0 + # FIFO_REQ & FIFO_BA0; + BA1 = CPU_REQ & CPU_BA1 + # BLITTER_REQ & BLITTER_BA1 + # FIFO_REQ & FIFO_BA1; + DDR_WR = !nFB_WR & CPU_REQ # BLITTER_WR & BLITTER_REQ; + FIFO_REQ = FIFO_SIG; + IF FIFO_REQ & FIFO_COL_ADR[]!= H"3FF" THEN -- GLEICHE PAGE? + DDR_SM = DS_T5; -- JA-> + ELSE + DDR_SM = DS_T1; -- SONST NEUE PAGE AUFMACHEN + END IF; + WHEN DS_T5 => + FIFO_REQ = FIFO_SIG; + DDR_SM = DS_T6; + WHEN DS_T6 => + IF CPU_SIG THEN -- SOFORT UMSCHALTEN WENN CPU REQ + VRAS = VCC; + VA[] = CPU_ROW_ADR[]; + BA1 = CPU_BA1; + BA0 = CPU_BA0; + DDR_SM = DS_T3; + ELSE + FIFO_REQ = FIFO_SIG; + VCAS = VCC; + VA[9..0] = FIFO_COL_ADR[]; + VA10 = VCC; -- AUTO PRECHARGE + BA0 = FIFO_BA0; + BA1 = FIFO_BA1; + FIFO_WRE = FIFO_REQ; -- ODER FIFO LATCH IN 5 CYC 133 + IF FIFO_REQ & FIFO_COL_ADR[]!= H"3FF" THEN -- GLEICHE PAGE? + DDR_SM = DS_T5; -- JA-> + ELSE + DDR_SM = DS_T1; -- SONST NEUE PAGE AUFMACHEN + END IF; + END IF; + WHEN DS_LS => + IF !MAIN_CLK THEN -- LEERSTATE UND SYNC + DDR_SM = DS_T1; + ELSE + DDR_SM = DS_LS; + END IF; + END CASE; +------------------------------------------------------------------------------ +-- FIFO --------------------------------- + FIFO_SIG = FIFO_ACTIVE & !FIFO_FULL & !BLITTER_SIG & !CPU_SIG; + FIFO_REQ.CLK = DDR_SYNC_66M; + FIFO_ROW_ADR[] = VIDEO_ADR_CNT[24..12]; + FIFO_BA1 = VIDEO_ADR_CNT11; + FIFO_BA0 = VIDEO_ADR_CNT10; + FIFO_COL_ADR[] = VIDEO_ADR_CNT[9..0]; + -- ZÄHLER RÜCKSETZEN WENN VSYNC ---------------- + CLEAR_FIFO_CNT.CLK = DDRCLK0; + CLEAR_FIFO_CNT = VSYNC # !FIFO_ACTIVE; + STOP.CLK = DDRCLK0; + STOP = VSYNC # CLEAR_FIFO_CNT; + VIDEO_ADR_CNT[].CLK = DDRCLK0; + VIDEO_ADR_CNT[] = CLEAR_FIFO_CNT & VIDEO_BASE_ADR[] -- SET + # !CLEAR_FIFO_CNT & (VIDEO_ADR_CNT[]+1); -- NEXT 16 BYTS + VIDEO_ADR_CNT[].ENA = CLEAR_FIFO_CNT # FIFO_WRE; + FIFO_WRE.CLK = DDRCLK0; +--------------------------------------------------------------- +-- BLITTER BUS IST 128 BIT BREIT ------ + BLITTER_SIG = GND & !CPU_SIG; + BLITTER_REQ.CLK = DDR_SYNC_66M; + BLITTER_RUN.CLK = DDRCLK0; + BLITTER_RUN = GND; + BLITTER_WR.CLK = DDRCLK0; + BLITTER_WR = GND; + DDRWR_D_SEL1 = BLITTER_WR; + BLITTER_ROW_ADR[] = H"0"; + BLITTER_BA1 = GND; + BLITTER_BA0 = GND; + BLITTER_COL_ADR[] = H"0"; + BLITTER_DOUT[] = H"0"; + BLITTER_LE[] = H"0"; +----------------------------------------------------------- +-- VIDEO REGISTER ----------------------- +--------------------------------------------------------------------------------------------------------------------- + VIDEO_BASE_L_D[].CLK = MAIN_CLK; + VIDEO_BASE_L = !nFB_CS1 & FB_ADR[15..1]==H"4106"; -- 820D/2 + VIDEO_BASE_L_D[] = FB_AD[23..20]; -- SORRY, NUR 16 BYT GRENZEN + VIDEO_BASE_L_D[].ENA = !nFB_WR & VIDEO_BASE_L & FB_B1; + + VIDEO_BASE_M_D[].CLK = MAIN_CLK; + VIDEO_BASE_M = !nFB_CS1 & FB_ADR[15..1]==H"4101"; -- 8203/2 + VIDEO_BASE_M_D[] = FB_AD[23..16]; + VIDEO_BASE_M_D[].ENA = !nFB_WR & VIDEO_BASE_M & FB_B3; + + VIDEO_BASE_H_D[].CLK = MAIN_CLK; + VIDEO_BASE_H = !nFB_CS1 & FB_ADR[15..1]==H"4100"; -- 8200-1/2 + VIDEO_BASE_H_D[] = FB_AD[23..16]; + VIDEO_BASE_H_D[].ENA = !nFB_WR & VIDEO_BASE_H & FB_B1; + VIDEO_BASE_X_D[].CLK = MAIN_CLK; + VIDEO_BASE_X_D[] = FB_AD[31..24]; + VIDEO_BASE_X_D[].ENA = !nFB_WR & VIDEO_BASE_H & FB_B0; + + VIDEO_CNT_L = !nFB_CS1 & FB_ADR[15..1]==H"4104"; -- 8209/2 + VIDEO_CNT_M = !nFB_CS1 & FB_ADR[15..1]==H"4103"; -- 8207/2 + VIDEO_CNT_H = !nFB_CS1 & FB_ADR[15..1]==H"4102"; -- 8205/2 + + FB_AD[31..24] = lpm_bustri_BYT( + VIDEO_BASE_H & VIDEO_BASE_X_D[] + # VIDEO_CNT_H & VIDEO_ADR_CNT[27..20] + ,(VIDEO_BASE_H # VIDEO_CNT_H) & !nFB_OE); + + FB_AD[23..16] = lpm_bustri_BYT( + VIDEO_BASE_L & (VIDEO_BASE_L_D[],B"0000") + # VIDEO_BASE_M & VIDEO_BASE_M_D[] + # VIDEO_BASE_H & VIDEO_BASE_H_D[] + # VIDEO_CNT_L & (VIDEO_ADR_CNT[3..0],B"0000") + # VIDEO_CNT_M & VIDEO_ADR_CNT[11..4] + # VIDEO_CNT_H & VIDEO_ADR_CNT[19..12] + ,(VIDEO_BASE_L # VIDEO_BASE_M # VIDEO_BASE_H # VIDEO_CNT_L # VIDEO_CNT_M # VIDEO_CNT_H) & !nFB_OE); + + VIDEO_BASE_ADR[27..20] = VIDEO_BASE_X_D[]; + VIDEO_BASE_ADR[19..12] = VIDEO_BASE_H_D[]; + VIDEO_BASE_ADR[11..4] = VIDEO_BASE_M_D[]; + VIDEO_BASE_ADR[3..0] = VIDEO_BASE_L_D[]; +END; + diff --git a/FPGA_quartus/Video/UNUSED b/FPGA_quartus/Video/UNUSED new file mode 100644 index 0000000..12f424b --- /dev/null +++ b/FPGA_quartus/Video/UNUSED @@ -0,0 +1,267 @@ + +-- Clearbox generated Memory Initialization File (.mif) + +WIDTH=6; +DEPTH=256; + +ADDRESS_RADIX=HEX; +DATA_RADIX=HEX; + +CONTENT BEGIN + 000 : 0F; + 001 : 0E; + 002 : 0D; + 003 : 0C; + 004 : 0B; + 005 : 0A; + 006 : 09; + 007 : 08; + 008 : 07; + 009 : 06; + 00a : 05; + 00b : 04; + 00c : 03; + 00d : 02; + 00e : 01; + 00f : 00; + 010 : 0F; + 011 : 0E; + 012 : 0D; + 013 : 0C; + 014 : 0B; + 015 : 0A; + 016 : 09; + 017 : 08; + 018 : 07; + 019 : 06; + 01a : 05; + 01b : 04; + 01c : 03; + 01d : 02; + 01e : 01; + 01f : 00; + 020 : 0F; + 021 : 0E; + 022 : 0D; + 023 : 0C; + 024 : 0B; + 025 : 0A; + 026 : 09; + 027 : 08; + 028 : 07; + 029 : 06; + 02a : 05; + 02b : 04; + 02c : 03; + 02d : 02; + 02e : 01; + 02f : 00; + 030 : 0F; + 031 : 0E; + 032 : 0D; + 033 : 0C; + 034 : 0B; + 035 : 0A; + 036 : 09; + 037 : 08; + 038 : 07; + 039 : 06; + 03a : 05; + 03b : 04; + 03c : 03; + 03d : 02; + 03e : 01; + 03f : 00; + 040 : 0F; + 041 : 0E; + 042 : 0D; + 043 : 0C; + 044 : 0B; + 045 : 0A; + 046 : 09; + 047 : 08; + 048 : 07; + 049 : 06; + 04a : 05; + 04b : 04; + 04c : 03; + 04d : 02; + 04e : 01; + 04f : 00; + 050 : 0F; + 051 : 0E; + 052 : 0D; + 053 : 0C; + 054 : 0B; + 055 : 0A; + 056 : 09; + 057 : 08; + 058 : 07; + 059 : 06; + 05a : 05; + 05b : 04; + 05c : 03; + 05d : 02; + 05e : 01; + 05f : 00; + 060 : 0F; + 061 : 0E; + 062 : 0D; + 063 : 0C; + 064 : 0B; + 065 : 0A; + 066 : 09; + 067 : 08; + 068 : 07; + 069 : 06; + 06a : 05; + 06b : 04; + 06c : 03; + 06d : 02; + 06e : 01; + 06f : 00; + 070 : 0F; + 071 : 0E; + 072 : 0D; + 073 : 0C; + 074 : 0B; + 075 : 0A; + 076 : 09; + 077 : 08; + 078 : 07; + 079 : 06; + 07a : 05; + 07b : 04; + 07c : 03; + 07d : 02; + 07e : 01; + 07f : 00; + 080 : 0F; + 081 : 0E; + 082 : 0D; + 083 : 0C; + 084 : 0B; + 085 : 0A; + 086 : 09; + 087 : 08; + 088 : 07; + 089 : 06; + 08a : 05; + 08b : 04; + 08c : 03; + 08d : 02; + 08e : 01; + 08f : 00; + 090 : 0F; + 091 : 0E; + 092 : 0D; + 093 : 0C; + 094 : 0B; + 095 : 0A; + 096 : 09; + 097 : 08; + 098 : 07; + 099 : 06; + 09a : 05; + 09b : 04; + 09c : 03; + 09d : 02; + 09e : 01; + 09f : 00; + 0a0 : 0F; + 0a1 : 0E; + 0a2 : 0D; + 0a3 : 0C; + 0a4 : 0B; + 0a5 : 0A; + 0a6 : 09; + 0a7 : 08; + 0a8 : 07; + 0a9 : 06; + 0aa : 05; + 0ab : 04; + 0ac : 03; + 0ad : 02; + 0ae : 01; + 0af : 00; + 0b0 : 0F; + 0b1 : 0E; + 0b2 : 0D; + 0b3 : 0C; + 0b4 : 0B; + 0b5 : 0A; + 0b6 : 09; + 0b7 : 08; + 0b8 : 07; + 0b9 : 06; + 0ba : 05; + 0bb : 04; + 0bc : 03; + 0bd : 02; + 0be : 01; + 0bf : 00; + 0c0 : 0F; + 0c1 : 0E; + 0c2 : 0D; + 0c3 : 0C; + 0c4 : 0B; + 0c5 : 0A; + 0c6 : 09; + 0c7 : 08; + 0c8 : 07; + 0c9 : 06; + 0ca : 05; + 0cb : 04; + 0cc : 03; + 0cd : 02; + 0ce : 01; + 0cf : 00; + 0d0 : 0F; + 0d1 : 0E; + 0d2 : 0D; + 0d3 : 0C; + 0d4 : 0B; + 0d5 : 0A; + 0d6 : 09; + 0d7 : 08; + 0d8 : 07; + 0d9 : 06; + 0da : 05; + 0db : 04; + 0dc : 03; + 0dd : 02; + 0de : 01; + 0df : 00; + 0e0 : 0F; + 0e1 : 0E; + 0e2 : 0D; + 0e3 : 0C; + 0e4 : 0B; + 0e5 : 0A; + 0e6 : 09; + 0e7 : 08; + 0e8 : 07; + 0e9 : 06; + 0ea : 05; + 0eb : 04; + 0ec : 03; + 0ed : 02; + 0ee : 01; + 0ef : 00; + 0f0 : 0F; + 0f1 : 0E; + 0f2 : 0D; + 0f3 : 0C; + 0f4 : 0B; + 0f5 : 0A; + 0f6 : 09; + 0f7 : 08; + 0f8 : 07; + 0f9 : 06; + 0fa : 05; + 0fb : 04; + 0fc : 03; + 0fd : 02; + 0fe : 01; + 0ff : 00; +END; diff --git a/FPGA_quartus/Video/VIDEO_MOD_MUX_CLUTCTR.tdf b/FPGA_quartus/Video/VIDEO_MOD_MUX_CLUTCTR.tdf new file mode 100644 index 0000000..2c9adcc --- /dev/null +++ b/FPGA_quartus/Video/VIDEO_MOD_MUX_CLUTCTR.tdf @@ -0,0 +1,675 @@ +TITLE "VIDEO MODUSE UND CLUT CONTROL"; + +-- CREATED BY FREDI ASCHWANDEN + +INCLUDE "lpm_bustri_WORD.inc"; +INCLUDE "lpm_bustri_BYT.inc"; + +-- {{ALTERA_PARAMETERS_BEGIN}} DO NOT REMOVE THIS LINE! +-- {{ALTERA_PARAMETERS_END}} DO NOT REMOVE THIS LINE! + +SUBDESIGN VIDEO_MOD_MUX_CLUTCTR +( + -- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! + nRSTO : INPUT; + MAIN_CLK : INPUT; + nFB_CS1 : INPUT; + nFB_CS2 : INPUT; + nFB_CS3 : INPUT; + nFB_WR : INPUT; + nFB_OE : INPUT; + FB_SIZE0 : INPUT; + FB_SIZE1 : INPUT; + nFB_BURST : INPUT; + FB_ADR[31..0] : INPUT; + CLK33M : INPUT; + CLK25M : INPUT; + BLITTER_RUN : INPUT; + CLK_VIDEO : INPUT; + VR_D[8..0] : INPUT; + VR_BUSY : INPUT; + COLOR8 : OUTPUT; + ACP_CLUT_RD : OUTPUT; + COLOR1 : OUTPUT; + FALCON_CLUT_RDH : OUTPUT; + FALCON_CLUT_RDL : OUTPUT; + FALCON_CLUT_WR[3..0] : OUTPUT; + ST_CLUT_RD : OUTPUT; + ST_CLUT_WR[1..0] : OUTPUT; + CLUT_MUX_ADR[3..0] : OUTPUT; + HSYNC : OUTPUT; + VSYNC : OUTPUT; + nBLANK : OUTPUT; + nSYNC : OUTPUT; + nPD_VGA : OUTPUT; + FIFO_RDE : OUTPUT; + COLOR2 : OUTPUT; + COLOR4 : OUTPUT; + PIXEL_CLK : OUTPUT; + CLUT_OFF[3..0] : OUTPUT; + BLITTER_ON : OUTPUT; + VIDEO_RAM_CTR[15..0] : OUTPUT; + VIDEO_MOD_TA : OUTPUT; + CCR[23..0] : OUTPUT; + CCSEL[2..0] : OUTPUT; + ACP_CLUT_WR[3..0] : OUTPUT; + INTER_ZEI : OUTPUT; + DOP_FIFO_CLR : OUTPUT; + VIDEO_RECONFIG : OUTPUT; + VR_WR : OUTPUT; + VR_RD : OUTPUT; + CLR_FIFO : OUTPUT; + FB_AD[31..0] : BIDIR; + -- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! +) + +VARIABLE + CLK17M :DFF; + CLK13M :DFF; + ACP_CLUT_CS :NODE; + ACP_CLUT :NODE; + VIDEO_PLL_CONFIG_CS :NODE; + VR_WR :DFF; + VR_DOUT[8..0] :DFFE; + VR_FRQ[7..0] :DFFE; + VIDEO_PLL_RECONFIG_CS :NODE; + VIDEO_RECONFIG :DFF; + FALCON_CLUT_CS :NODE; + FALCON_CLUT :NODE; + ST_CLUT_CS :NODE; + ST_CLUT :NODE; + FB_B[3..0] :NODE; + FB_16B[1..0] :NODE; + ST_SHIFT_MODE[1..0] :DFFE; + ST_SHIFT_MODE_CS :NODE; + FALCON_SHIFT_MODE[10..0] :DFFE; + FALCON_SHIFT_MODE_CS :NODE; + CLUT_MUX_ADR[3..0] :DFF; + CLUT_MUX_AV[1..0][3..0] :DFF; + ACP_VCTR_CS :NODE; + ACP_VCTR[31..0] :DFFE; + CCR_CS :NODE; + CCR[23..0] :DFFE; + ACP_VIDEO_ON :NODE; + SYS_CTR[6..0] :DFFE; + SYS_CTR_CS :NODE; + VDL_LOF[15..0] :DFFE; + VDL_LOF_CS :NODE; + VDL_LWD[15..0] :DFFE; + VDL_LWD_CS :NODE; +-- DIV. CONTROL REGISTER + CLUT_TA :DFF; -- BRAUCHT EIN WAITSTAT + HSYNC :DFF; + HSYNC_I[7..0] :DFF; + HSY_LEN[7..0] :DFF; -- LÄNGE HSYNC PULS IN PIXEL_CLK + HSYNC_START :DFF; + LAST :DFF; -- LETZTES PIXEL EINER ZEILE ERREICHT + VSYNC :DFF; + VSYNC_START :DFFE; + VSYNC_I[2..0] :DFFE; + nBLANK :DFF; + DISP_ON :DFF; + DPO_ZL :DFFE; + DPO_ON :DFF; + DPO_OFF :DFF; + VDTRON :DFF; + VDO_ZL :DFFE; + VDO_ON :DFF; + VDO_OFF :DFF; + VHCNT[11..0] :DFF; + SUB_PIXEL_CNT[6..0] :DFFE; + VVCNT[10..0] :DFFE; + VERZ[2..0][9..0] :DFF; + RAND[6..0] :DFF; + RAND_ON :NODE; + FIFO_RDE :DFF; + CLR_FIFO :DFFE; + START_ZEILE :DFFE; + SYNC_PIX :DFF; + SYNC_PIX1 :DFF; + SYNC_PIX2 :DFF; + CCSEL[2..0] :DFF; + COLOR16 :NODE; + COLOR24 :NODE; +-- ATARI RESOLUTION + ATARI_SYNC :NODE; + ATARI_HH[31..0] :DFFE; -- HORIZONTAL TIMING 640x480 + ATARI_HH_CS :NODE; + ATARI_VH[31..0] :DFFE; -- VERTIKAL TIMING 640x480 + ATARI_VH_CS :NODE; + ATARI_HL[31..0] :DFFE; -- HORIZONTAL TIMING 320x240 + ATARI_HL_CS :NODE; + ATARI_VL[31..0] :DFFE; -- VERTIKAL TIMING 320x240 + ATARI_VL_CS :NODE; +-- HORIZONTAL + RAND_LINKS[11..0] :NODE; + HDIS_START[11..0] :NODE; + HDIS_END[11..0] :NODE; + RAND_RECHTS[11..0] :NODE; + HS_START[11..0] :NODE; + H_TOTAL[11..0] :NODE; + HDIS_LEN[11..0] :NODE; + MULF[5..0] :NODE; + VDL_HHT[11..0] :DFFE; + VDL_HHT_CS :NODE; + VDL_HBE[11..0] :DFFE; + VDL_HBE_CS :NODE; + VDL_HDB[11..0] :DFFE; + VDL_HDB_CS :NODE; + VDL_HDE[11..0] :DFFE; + VDL_HDE_CS :NODE; + VDL_HBB[11..0] :DFFE; + VDL_HBB_CS :NODE; + VDL_HSS[11..0] :DFFE; + VDL_HSS_CS :NODE; +-- VERTIKAL + RAND_OBEN[10..0] :NODE; + VDIS_START[10..0] :NODE; + VDIS_END[10..0] :NODE; + RAND_UNTEN[10..0] :NODE; + VS_START[10..0] :NODE; + V_TOTAL[10..0] :NODE; + FALCON_VIDEO :NODE; + ST_VIDEO :NODE; + INTER_ZEI :DFF; + DOP_ZEI :DFF; + DOP_FIFO_CLR :DFF; + + VDL_VBE[10..0] :DFFE; + VDL_VBE_CS :NODE; + VDL_VDB[10..0] :DFFE; + VDL_VDB_CS :NODE; + VDL_VDE[10..0] :DFFE; + VDL_VDE_CS :NODE; + VDL_VBB[10..0] :DFFE; + VDL_VBB_CS :NODE; + VDL_VSS[10..0] :DFFE; + VDL_VSS_CS :NODE; + VDL_VFT[10..0] :DFFE; + VDL_VFT_CS :NODE; + VDL_VCT[8..0] :DFFE; + VDL_VCT_CS :NODE; + VDL_VMD[3..0] :DFFE; + VDL_VMD_CS :NODE; + +BEGIN +-- BYT SELECT 32 BIT + FB_B0 = FB_ADR[1..0]==0; -- ADR==0 + FB_B1 = FB_ADR[1..0]==1 -- ADR==1 + # FB_SIZE1 & !FB_SIZE0 & !FB_ADR1 -- HIGH WORD + # FB_SIZE1 & FB_SIZE0 # !FB_SIZE1 & !FB_SIZE0; -- LONG UND LINE + FB_B2 = FB_ADR[1..0]==2 -- ADR==2 + # FB_SIZE1 & FB_SIZE0 # !FB_SIZE1 & !FB_SIZE0; -- LONG UND LINE + FB_B3 = FB_ADR[1..0]==3 -- ADR==3 + # FB_SIZE1 & !FB_SIZE0 & FB_ADR1 -- LOW WORD + # FB_SIZE1 & FB_SIZE0 # !FB_SIZE1 & !FB_SIZE0; -- LONG UND LINE +-- BYT SELECT 16 BIT + FB_16B0 = FB_ADR[0]==0; -- ADR==0 + FB_16B1 = FB_ADR[0]==1 -- ADR==1 + # !(!FB_SIZE1 & FB_SIZE0); -- NOT BYT +-- ACP CLUT -- + ACP_CLUT_CS = !nFB_CS2 & FB_ADR[27..10]==H"0"; -- 0-3FF/1024 + ACP_CLUT_RD = ACP_CLUT_CS & !nFB_OE; + ACP_CLUT_WR[] = FB_B[] & ACP_CLUT_CS & !nFB_WR; + CLUT_TA.CLK = MAIN_CLK; + CLUT_TA = (ACP_CLUT_CS # FALCON_CLUT_CS # ST_CLUT_CS) & !VIDEO_MOD_TA; +--FALCON CLUT -- + FALCON_CLUT_CS = !nFB_CS1 & FB_ADR[19..10]==H"3E6"; -- $F9800/$400 + FALCON_CLUT_RDH = FALCON_CLUT_CS & !nFB_OE & !FB_ADR1; -- HIGH WORD + FALCON_CLUT_RDL = FALCON_CLUT_CS & !nFB_OE & FB_ADR1; -- LOW WORD + FALCON_CLUT_WR[1..0] = FB_16B[] & !FB_ADR1 & FALCON_CLUT_CS & !nFB_WR; + FALCON_CLUT_WR[3..2] = FB_16B[] & FB_ADR1 & FALCON_CLUT_CS & !nFB_WR; +-- ST CLUT -- + ST_CLUT_CS = !nFB_CS1 & FB_ADR[19..5]==H"7C12"; -- $F8240/$20 + ST_CLUT_RD = ST_CLUT_CS & !nFB_OE; + ST_CLUT_WR[] = FB_16B[] & ST_CLUT_CS & !nFB_WR; +-- ST SHIFT MODE + ST_SHIFT_MODE[].CLK = MAIN_CLK; + ST_SHIFT_MODE_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C130"; -- $F8260/2 + ST_SHIFT_MODE[] = FB_AD[25..24]; + ST_SHIFT_MODE[].ENA = ST_SHIFT_MODE_CS & !nFB_WR & FB_B0; + COLOR1 = ST_SHIFT_MODE[]==B"10" & !COLOR8 & ST_VIDEO & !ACP_VIDEO_ON; -- MONO + COLOR2 = ST_SHIFT_MODE[]==B"01" & !COLOR8 & ST_VIDEO & !ACP_VIDEO_ON; -- 4 FARBEN + COLOR4 = ST_SHIFT_MODE[]==B"00" & !COLOR8 & ST_VIDEO & !ACP_VIDEO_ON; -- 16 FARBEN +-- FALCON SHIFT MODE + FALCON_SHIFT_MODE[].CLK = MAIN_CLK; + FALCON_SHIFT_MODE_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C133"; -- $F8266/2 + FALCON_SHIFT_MODE[] = FB_AD[26..16]; + FALCON_SHIFT_MODE[10..8].ENA = FALCON_SHIFT_MODE_CS & !nFB_WR & FB_B2; + FALCON_SHIFT_MODE[7..0].ENA = FALCON_SHIFT_MODE_CS & !nFB_WR & FB_B3; + CLUT_OFF[3..0] = FALCON_SHIFT_MODE[3..0] & COLOR4; + COLOR1 = FALCON_SHIFT_MODE10 & !COLOR16 & !COLOR8 & FALCON_VIDEO & !ACP_VIDEO_ON; + COLOR8 = FALCON_SHIFT_MODE4 & !COLOR16 & FALCON_VIDEO & !ACP_VIDEO_ON; + COLOR16 = FALCON_SHIFT_MODE8 & FALCON_VIDEO & !ACP_VIDEO_ON; + COLOR4 = !COLOR1 & !COLOR16 & !COLOR8 & FALCON_VIDEO & !ACP_VIDEO_ON; +-- ACP VIDEO CONTROL BIT 0=ACP VIDEO ON, 1=POWER ON VIDEO DAC, 2=ACP 24BIT,3=ACP 16BIT,4=ACP 8BIT,5=ACP 1BIT, 6=FALCON SHIFT MODE;7=ST SHIFT MODE;9..8= VCLK FREQUENZ;15=-SYNC ALLOWED; 31..16=VIDEO_RAM_CTR,25=RANDFARBE EINSCHALTEN, 26=STANDARD ATARI SYNCS + ACP_VCTR[].CLK = MAIN_CLK; + ACP_VCTR_CS = !nFB_CS2 & FB_ADR[27..2]==H"100"; -- $400/4 + ACP_VCTR[31..8] = FB_AD[31..8]; + ACP_VCTR[5..0] = FB_AD[5..0]; + ACP_VCTR[31..24].ENA = ACP_VCTR_CS & FB_B0 & !nFB_WR; + ACP_VCTR[23..16].ENA = ACP_VCTR_CS & FB_B1 & !nFB_WR; + ACP_VCTR[15..8].ENA = ACP_VCTR_CS & FB_B2 & !nFB_WR; + ACP_VCTR[5..0].ENA = ACP_VCTR_CS & FB_B3 & !nFB_WR; + ACP_VIDEO_ON = ACP_VCTR0; + nPD_VGA = ACP_VCTR1; + -- ATARI MODUS + ATARI_SYNC = ACP_VCTR26; -- WENN 1 AUTOMATISCHE AUFLÖSUNG + -- HORIZONTAL TIMING 640x480 + ATARI_HH[].CLK = MAIN_CLK; + ATARI_HH_CS = !nFB_CS2 & FB_ADR[27..2]==H"104"; -- $410/4 + ATARI_HH[] = FB_AD[]; + ATARI_HH[31..24].ENA = ATARI_HH_CS & FB_B0 & !nFB_WR; + ATARI_HH[23..16].ENA = ATARI_HH_CS & FB_B1 & !nFB_WR; + ATARI_HH[15..8].ENA = ATARI_HH_CS & FB_B2 & !nFB_WR; + ATARI_HH[7..0].ENA = ATARI_HH_CS & FB_B3 & !nFB_WR; + -- VERTIKAL TIMING 640x480 + ATARI_VH[].CLK = MAIN_CLK; + ATARI_VH_CS = !nFB_CS2 & FB_ADR[27..2]==H"105"; -- $414/4 + ATARI_VH[] = FB_AD[]; + ATARI_VH[31..24].ENA = ATARI_VH_CS & FB_B0 & !nFB_WR; + ATARI_VH[23..16].ENA = ATARI_VH_CS & FB_B1 & !nFB_WR; + ATARI_VH[15..8].ENA = ATARI_VH_CS & FB_B2 & !nFB_WR; + ATARI_VH[7..0].ENA = ATARI_VH_CS & FB_B3 & !nFB_WR; + -- HORIZONTAL TIMING 320x240 + ATARI_HL[].CLK = MAIN_CLK; + ATARI_HL_CS = !nFB_CS2 & FB_ADR[27..2]==H"106"; -- $418/4 + ATARI_HL[] = FB_AD[]; + ATARI_HL[31..24].ENA = ATARI_HL_CS & FB_B0 & !nFB_WR; + ATARI_HL[23..16].ENA = ATARI_HL_CS & FB_B1 & !nFB_WR; + ATARI_HL[15..8].ENA = ATARI_HL_CS & FB_B2 & !nFB_WR; + ATARI_HL[7..0].ENA = ATARI_HL_CS & FB_B3 & !nFB_WR; + -- VERTIKAL TIMING 320x240 + ATARI_VL[].CLK = MAIN_CLK; + ATARI_VL_CS = !nFB_CS2 & FB_ADR[27..2]==H"107"; -- $41C/4 + ATARI_VL[] = FB_AD[]; + ATARI_VL[31..24].ENA = ATARI_VL_CS & FB_B0 & !nFB_WR; + ATARI_VL[23..16].ENA = ATARI_VL_CS & FB_B1 & !nFB_WR; + ATARI_VL[15..8].ENA = ATARI_VL_CS & FB_B2 & !nFB_WR; + ATARI_VL[7..0].ENA = ATARI_VL_CS & FB_B3 & !nFB_WR; +-- VIDEO PLL CONFIG + VIDEO_PLL_CONFIG_CS = !nFB_CS2 & FB_ADR[27..9]==H"3" & FB_B0 & FB_B1; -- $(F)000'0600-7FF ->6/2 WORD RESP LONG ONLY + VR_WR.CLK = MAIN_CLK; + VR_WR = VIDEO_PLL_CONFIG_CS & !nFB_WR & !VR_BUSY & !VR_WR; + VR_RD = VIDEO_PLL_CONFIG_CS & nFB_WR & !VR_BUSY; + VR_DOUT[].CLK = MAIN_CLK; + VR_DOUT[].ENA = !VR_BUSY; + VR_DOUT[] = VR_D[]; + VR_FRQ[].CLK = MAIN_CLK; + VR_FRQ[].ENA = VR_WR & FB_ADR[8..0]==H"04"; + VR_FRQ[] = FB_AD[23..16]; +-- VIDEO PLL RECONFIG + VIDEO_PLL_RECONFIG_CS = !nFB_CS2 & FB_ADR[27..0]==H"800" & FB_B0; -- $(F)000'0800 + VIDEO_RECONFIG.CLK = MAIN_CLK; + VIDEO_RECONFIG = VIDEO_PLL_RECONFIG_CS & !nFB_WR & !VR_BUSY & !VIDEO_RECONFIG; +------------------------------------------------------------------------------------------------------------------------ + VIDEO_RAM_CTR[] = ACP_VCTR[31..16]; +-------------- COLOR MODE IM ACP SETZEN + COLOR1 = ACP_VCTR5 & !ACP_VCTR4 & !ACP_VCTR3 & !ACP_VCTR2 & ACP_VIDEO_ON; + COLOR8 = ACP_VCTR4 & !ACP_VCTR3 & !ACP_VCTR2 & ACP_VIDEO_ON; + COLOR16 = ACP_VCTR3 & !ACP_VCTR2 & ACP_VIDEO_ON; + COLOR24 = ACP_VCTR2 & ACP_VIDEO_ON; + ACP_CLUT = ACP_VIDEO_ON & (COLOR1 # COLOR8) # ST_VIDEO & COLOR1; +-- ST ODER FALCON SHIFT MODE SETZEN WENN WRITE X..SHIFT REGISTER + ACP_VCTR7 = FALCON_SHIFT_MODE_CS & !nFB_WR & !ACP_VIDEO_ON; + ACP_VCTR6 = ST_SHIFT_MODE_CS & !nFB_WR & !ACP_VIDEO_ON; + ACP_VCTR[7..6].ENA = FALCON_SHIFT_MODE_CS & !nFB_WR # ST_SHIFT_MODE_CS & !nFB_WR # ACP_VCTR_CS & FB_B3 & !nFB_WR & FB_AD0; + FALCON_VIDEO = ACP_VCTR7; + FALCON_CLUT = FALCON_VIDEO & !ACP_VIDEO_ON & !COLOR16; + ST_VIDEO = ACP_VCTR6; + ST_CLUT = ST_VIDEO & !ACP_VIDEO_ON & !FALCON_CLUT & !COLOR1; + CCSEL[].CLK = PIXEL_CLK; + CCSEL[] = B"000" & ST_CLUT -- ONLY FOR INFORMATION + # B"001" & FALCON_CLUT + # B"100" & ACP_CLUT + # B"101" & COLOR16 + # B"110" & COLOR24 + # B"111" & RAND_ON; +-- DIVERSE (VIDEO)-REGISTER ---------------------------- +-- RANDFARBE + CCR[].CLK = MAIN_CLK; + CCR_CS = !nFB_CS2 & FB_ADR[27..2]==H"101"; -- $404/4 + CCR[] = FB_AD[23..0]; + CCR[23..16].ENA = CCR_CS & FB_B1 & !nFB_WR; + CCR[15..8].ENA = CCR_CS & FB_B2 & !nFB_WR; + CCR[7..0].ENA = CCR_CS & FB_B3 & !nFB_WR; +--SYS CTR + SYS_CTR_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C003"; -- $8006/2 + SYS_CTR[].CLK = MAIN_CLK; + SYS_CTR[6..0] = FB_AD[22..16]; + SYS_CTR[6..0].ENA = SYS_CTR_CS & !nFB_WR & FB_B3; + BLITTER_ON = !SYS_CTR3; +--VDL_LOF + VDL_LOF_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C107"; -- $820E/2 + VDL_LOF[].CLK = MAIN_CLK; + VDL_LOF[] = FB_AD[31..16]; + VDL_LOF[15..8].ENA = VDL_LOF_CS & !nFB_WR & FB_B2; + VDL_LOF[7..0].ENA = VDL_LOF_CS & !nFB_WR & FB_B3; +--VDL_LWD + VDL_LWD_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C108"; -- $8210/2 + VDL_LWD[].CLK = MAIN_CLK; + VDL_LWD[] = FB_AD[31..16]; + VDL_LWD[15..8].ENA = VDL_LWD_CS & !nFB_WR & FB_B0; + VDL_LWD[7..0].ENA = VDL_LWD_CS & !nFB_WR & FB_B1; +-- HORIZONTAL +-- VDL_HHT + VDL_HHT_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C141"; -- $8282/2 + VDL_HHT[].CLK = MAIN_CLK; + VDL_HHT[] = FB_AD[27..16]; + VDL_HHT[11..8].ENA = VDL_HHT_CS & !nFB_WR & FB_B2; + VDL_HHT[7..0].ENA = VDL_HHT_CS & !nFB_WR & FB_B3; +-- VDL_HBE + VDL_HBE_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C143"; -- $8286/2 + VDL_HBE[].CLK = MAIN_CLK; + VDL_HBE[] = FB_AD[27..16]; + VDL_HBE[11..8].ENA = VDL_HBE_CS & !nFB_WR & FB_B2; + VDL_HBE[7..0].ENA = VDL_HBE_CS & !nFB_WR & FB_B3; +-- VDL_HDB + VDL_HDB_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C144"; -- $8288/2 + VDL_HDB[].CLK = MAIN_CLK; + VDL_HDB[] = FB_AD[27..16]; + VDL_HDB[11..8].ENA = VDL_HDB_CS & !nFB_WR & FB_B0; + VDL_HDB[7..0].ENA = VDL_HDB_CS & !nFB_WR & FB_B1; +-- VDL_HDE + VDL_HDE_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C145"; -- $828A/2 + VDL_HDE[].CLK = MAIN_CLK; + VDL_HDE[] = FB_AD[27..16]; + VDL_HDE[11..8].ENA = VDL_HDE_CS & !nFB_WR & FB_B2; + VDL_HDE[7..0].ENA = VDL_HDE_CS & !nFB_WR & FB_B3; +-- VDL_HBB + VDL_HBB_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C142"; -- $8284/2 + VDL_HBB[].CLK = MAIN_CLK; + VDL_HBB[] = FB_AD[27..16]; + VDL_HBB[11..8].ENA = VDL_HBB_CS & !nFB_WR & FB_B0; + VDL_HBB[7..0].ENA = VDL_HBB_CS & !nFB_WR & FB_B1; +-- VDL_HSS + VDL_HSS_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C146"; -- $828C/2 + VDL_HSS[].CLK = MAIN_CLK; + VDL_HSS[] = FB_AD[27..16]; + VDL_HSS[11..8].ENA = VDL_HSS_CS & !nFB_WR & FB_B0; + VDL_HSS[7..0].ENA = VDL_HSS_CS & !nFB_WR & FB_B1; +-- VERTIKAL +-- VDL_VBE + VDL_VBE_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C153"; -- $82A6/2 + VDL_VBE[].CLK = MAIN_CLK; + VDL_VBE[] = FB_AD[26..16]; + VDL_VBE[10..8].ENA = VDL_VBE_CS & !nFB_WR & FB_B2; + VDL_VBE[7..0].ENA = VDL_VBE_CS & !nFB_WR & FB_B3; +-- VDL_VDB + VDL_VDB_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C154"; -- $82A8/2 + VDL_VDB[].CLK = MAIN_CLK; + VDL_VDB[] = FB_AD[26..16]; + VDL_VDB[10..8].ENA = VDL_VDB_CS & !nFB_WR & FB_B0; + VDL_VDB[7..0].ENA = VDL_VDB_CS & !nFB_WR & FB_B1; +-- VDL_VDE + VDL_VDE_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C155"; -- $82AA/2 + VDL_VDE[].CLK = MAIN_CLK; + VDL_VDE[] = FB_AD[26..16]; + VDL_VDE[10..8].ENA = VDL_VDE_CS & !nFB_WR & FB_B2; + VDL_VDE[7..0].ENA = VDL_VDE_CS & !nFB_WR & FB_B3; +-- VDL_VBB + VDL_VBB_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C152"; -- $82A4/2 + VDL_VBB[].CLK = MAIN_CLK; + VDL_VBB[] = FB_AD[26..16]; + VDL_VBB[10..8].ENA = VDL_VBB_CS & !nFB_WR & FB_B0; + VDL_VBB[7..0].ENA = VDL_VBB_CS & !nFB_WR & FB_B1; +-- VDL_VSS + VDL_VSS_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C156"; -- $82AC/2 + VDL_VSS[].CLK = MAIN_CLK; + VDL_VSS[] = FB_AD[26..16]; + VDL_VSS[10..8].ENA = VDL_VSS_CS & !nFB_WR & FB_B0; + VDL_VSS[7..0].ENA = VDL_VSS_CS & !nFB_WR & FB_B1; +-- VDL_VFT + VDL_VFT_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C151"; -- $82A2/2 + VDL_VFT[].CLK = MAIN_CLK; + VDL_VFT[] = FB_AD[26..16]; + VDL_VFT[10..8].ENA = VDL_VFT_CS & !nFB_WR & FB_B2; + VDL_VFT[7..0].ENA = VDL_VFT_CS & !nFB_WR & FB_B3; +-- VDL_VCT + VDL_VCT_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C160"; -- $82C0/2 + VDL_VCT[].CLK = MAIN_CLK; + VDL_VCT[] = FB_AD[24..16]; + VDL_VCT[8].ENA = VDL_VCT_CS & !nFB_WR & FB_B0; + VDL_VCT[7..0].ENA = VDL_VCT_CS & !nFB_WR & FB_B1; +-- VDL_VMD + VDL_VMD_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C161"; -- $82C2/2 + VDL_VMD[].CLK = MAIN_CLK; + VDL_VMD[] = FB_AD[19..16]; + VDL_VMD[3..0].ENA = VDL_VMD_CS & !nFB_WR & FB_B3; +--- REGISTER OUT + FB_AD[31..16] = lpm_bustri_WORD( + ST_SHIFT_MODE_CS & (0,ST_SHIFT_MODE[],B"00000000") + # FALCON_SHIFT_MODE_CS & (0,FALCON_SHIFT_MODE[]) + # SYS_CTR_CS & (B"100000000",SYS_CTR[6..4],!BLITTER_RUN,SYS_CTR[2..0]) + # VDL_LOF_CS & VDL_LOF[] + # VDL_LWD_CS & VDL_LWD[] + # VDL_HBE_CS & (0,VDL_HBE[]) + # VDL_HDB_CS & (0,VDL_HDB[]) + # VDL_HDE_CS & (0,VDL_HDE[]) + # VDL_HBB_CS & (0,VDL_HBB[]) + # VDL_HSS_CS & (0,VDL_HSS[]) + # VDL_HHT_CS & (0,VDL_HHT[]) + # VDL_VBE_CS & (0,VDL_VBE[]) + # VDL_VDB_CS & (0,VDL_VDB[]) + # VDL_VDE_CS & (0,VDL_VDE[]) + # VDL_VBB_CS & (0,VDL_VBB[]) + # VDL_VSS_CS & (0,VDL_VSS[]) + # VDL_VFT_CS & (0,VDL_VFT[]) + # VDL_VCT_CS & (0,VDL_VCT[]) + # VDL_VMD_CS & (0,VDL_VMD[]) + # ACP_VCTR_CS & ACP_VCTR[31..16] + # ATARI_HH_CS & ATARI_HH[31..16] + # ATARI_VH_CS & ATARI_VH[31..16] + # ATARI_HL_CS & ATARI_HL[31..16] + # ATARI_VL_CS & ATARI_VL[31..16] + # CCR_CS & (0,CCR[23..16]) + # VIDEO_PLL_CONFIG_CS & (0,VR_DOUT[]) + # VIDEO_PLL_RECONFIG_CS & (VR_BUSY,B"0000",VR_WR,VR_RD,VIDEO_RECONFIG,H"FA") + ,(ST_SHIFT_MODE_CS # FALCON_SHIFT_MODE_CS # ACP_VCTR_CS # CCR_CS # SYS_CTR_CS # VDL_LOF_CS # VDL_LWD_CS + # VDL_HBE_CS # VDL_HDB_CS # VDL_HDE_CS # VDL_HBB_CS # VDL_HSS_CS # VDL_HHT_CS + # ATARI_HH_CS # ATARI_VH_CS # ATARI_HL_CS # ATARI_VL_CS # VIDEO_PLL_CONFIG_CS # VIDEO_PLL_RECONFIG_CS + # VDL_VBE_CS # VDL_VDB_CS # VDL_VDE_CS # VDL_VBB_CS # VDL_VSS_CS # VDL_VFT_CS # VDL_VCT_CS # VDL_VMD_CS) & !nFB_OE); + + FB_AD[15..0] = lpm_bustri_WORD( + ACP_VCTR_CS & ACP_VCTR[15..0] + # ATARI_HH_CS & ATARI_HH[15..0] + # ATARI_VH_CS & ATARI_VH[15..0] + # ATARI_HL_CS & ATARI_HL[15..0] + # ATARI_VL_CS & ATARI_VL[15..0] + # CCR_CS & CCR[15..0] + ,(ACP_VCTR_CS # CCR_CS # ATARI_HH_CS # ATARI_VH_CS # ATARI_HL_CS # ATARI_VL_CS ) & !nFB_OE); + + VIDEO_MOD_TA = CLUT_TA # ST_SHIFT_MODE_CS # FALCON_SHIFT_MODE_CS # ACP_VCTR_CS # SYS_CTR_CS # VDL_LOF_CS # VDL_LWD_CS + # VDL_HBE_CS # VDL_HDB_CS # VDL_HDE_CS # VDL_HBB_CS # VDL_HSS_CS # VDL_HHT_CS + # ATARI_HH_CS # ATARI_VH_CS # ATARI_HL_CS # ATARI_VL_CS + # VDL_VBE_CS # VDL_VDB_CS # VDL_VDE_CS # VDL_VBB_CS # VDL_VSS_CS # VDL_VFT_CS # VDL_VCT_CS # VDL_VMD_CS; + +-- VIDEO AUSGABE SETZEN + CLK17M.CLK = CLK33M; + CLK17M = !CLK17M; + CLK13M.CLK = CLK25M; + CLK13M = !CLK13M; + PIXEL_CLK = CLK13M & !ACP_VIDEO_ON & (FALCON_VIDEO # ST_VIDEO) & ( VDL_VMD2 & VDL_VCT2 # VDL_VCT0) + # CLK17M & !ACP_VIDEO_ON & (FALCON_VIDEO # ST_VIDEO) & ( VDL_VMD2 & !VDL_VCT2 # VDL_VCT0) + # CLK25M & !ACP_VIDEO_ON & (FALCON_VIDEO # ST_VIDEO) & !VDL_VMD2 & VDL_VCT2 & !VDL_VCT0 + # CLK33M & !ACP_VIDEO_ON & (FALCON_VIDEO # ST_VIDEO) & !VDL_VMD2 & !VDL_VCT2 & !VDL_VCT0 + # CLK25M & ACP_VIDEO_ON & ACP_VCTR[9..8]==B"00" + # CLK33M & ACP_VIDEO_ON & ACP_VCTR[9..8]==B"01" + # CLK_VIDEO & ACP_VIDEO_ON & ACP_VCTR[9]; +-------------------------------------------------------------- +-- HORIZONTALE SYNC LÄNGE in PIXEL_CLK +---------------------------------------------------------------- + HSY_LEN[].CLK = MAIN_CLK; + HSY_LEN[] = 14 & !ACP_VIDEO_ON & (FALCON_VIDEO # ST_VIDEO) & ( VDL_VMD2 & VDL_VCT2 # VDL_VCT0) + # 16 & !ACP_VIDEO_ON & (FALCON_VIDEO # ST_VIDEO) & ( VDL_VMD2 & !VDL_VCT2 # VDL_VCT0) + # 28 & !ACP_VIDEO_ON & (FALCON_VIDEO # ST_VIDEO) & !VDL_VMD2 & VDL_VCT2 & !VDL_VCT0 + # 32 & !ACP_VIDEO_ON & (FALCON_VIDEO # ST_VIDEO) & !VDL_VMD2 & !VDL_VCT2 & !VDL_VCT0 + # 28 & ACP_VIDEO_ON & ACP_VCTR[9..8]==B"00" + # 32 & ACP_VIDEO_ON & ACP_VCTR[9..8]==B"01" + # 16 + (0,VR_FRQ[7..1]) & ACP_VIDEO_ON & ACP_VCTR[9]; -- hsync puls length in pixeln=frequenz/ = 500ns + + MULF[] = 2 & !ST_VIDEO & VDL_VMD2 -- MULTIPLIKATIONS FAKTOR + # 4 & !ST_VIDEO & !VDL_VMD2 + # 16 & ST_VIDEO & VDL_VMD2 + # 32 & ST_VIDEO & !VDL_VMD2; + + + HDIS_LEN[] = 320 & VDL_VMD2 -- BREITE IN PIXELN + # 640 & !VDL_VMD2; + +-- DOPPELZEILENMODUS + DOP_ZEI.CLK = MAIN_CLK; + DOP_ZEI = VDL_VMD0 & ST_VIDEO; -- ZEILENVERDOPPELUNG EIN AUS + INTER_ZEI.CLK = PIXEL_CLK; + INTER_ZEI = DOP_ZEI & VVCNT0!=VDIS_START0 & VVCNT[]!=0 & VHCNT[]<(HDIS_END[]-1) -- EINSCHIEBEZEILE AUF "DOPPEL" ZEILEN UND ZEILE NULL WEGEN SYNC + # DOP_ZEI & VVCNT0==VDIS_START0 & VVCNT[]!=0 & VHCNT[]>(HDIS_END[]-2); -- EINSCHIEBEZEILE AUF "NORMAL" ZEILEN UND ZEILE NULL WEGEN SYNC + DOP_FIFO_CLR.CLK = PIXEL_CLK; + DOP_FIFO_CLR = INTER_ZEI & HSYNC_START # SYNC_PIX; -- DOPPELZEILENFIFO LÖSCHEN AM ENDE DER DOPPELZEILE UND BEI MAIN FIFO START + + RAND_LINKS[] = VDL_HBE[] & ACP_VIDEO_ON + # 21 & !ACP_VIDEO_ON & ATARI_SYNC & VDL_VMD2 + # 42 & !ACP_VIDEO_ON & ATARI_SYNC & !VDL_VMD2 + # VDL_HBE[] * (0,MULF[5..1]) & !ACP_VIDEO_ON & !ATARI_SYNC; -- + HDIS_START[] = VDL_HDB[] & ACP_VIDEO_ON + # RAND_LINKS[]+1 & !ACP_VIDEO_ON; -- + HDIS_END[] = VDL_HDE[] & ACP_VIDEO_ON + # RAND_LINKS[]+HDIS_LEN[] & !ACP_VIDEO_ON; -- + RAND_RECHTS[] = VDL_HBB[] & ACP_VIDEO_ON + # HDIS_END[]+1 & !ACP_VIDEO_ON; -- + HS_START[] = VDL_HSS[] & ACP_VIDEO_ON + # ATARI_HL[11..0] & !ACP_VIDEO_ON & ATARI_SYNC & VDL_VMD2 + # ATARI_HH[11..0] & !ACP_VIDEO_ON & ATARI_SYNC & !VDL_VMD2 + # (VDL_HHT[]+1+VDL_HSS[]) * (0,MULF[5..1]) & !ACP_VIDEO_ON & !ATARI_SYNC; -- + H_TOTAL[] = VDL_HHT[] & ACP_VIDEO_ON + # ATARI_HL[27..16] & !ACP_VIDEO_ON & ATARI_SYNC & VDL_VMD2 + # ATARI_HH[27..16] & !ACP_VIDEO_ON & ATARI_SYNC & !VDL_VMD2 + # (VDL_HHT[]+2) * (0,MULF[]) & !ACP_VIDEO_ON & !ATARI_SYNC; -- + + RAND_OBEN[] = VDL_VBE[] & ACP_VIDEO_ON + # 31 & !ACP_VIDEO_ON & ATARI_SYNC + # (0,VDL_VBE[10..1]) & !ACP_VIDEO_ON & !ATARI_SYNC; + VDIS_START[] = VDL_VDB[] & ACP_VIDEO_ON + # 32 & !ACP_VIDEO_ON & ATARI_SYNC + # (0,VDL_VDB[10..1])+1 & !ACP_VIDEO_ON & !ATARI_SYNC; + VDIS_END[] = VDL_VDE[] & ACP_VIDEO_ON + # 431 & !ACP_VIDEO_ON & ATARI_SYNC & ST_VIDEO + # 511 & !ACP_VIDEO_ON & ATARI_SYNC & !ST_VIDEO + # (0,VDL_VDE[10..1]) & !ACP_VIDEO_ON & !ATARI_SYNC; + RAND_UNTEN[] = VDL_VBB[] & ACP_VIDEO_ON + # VDIS_END[]+1 & !ACP_VIDEO_ON & ATARI_SYNC + # (0,VDL_VBB[10..1])+1 & !ACP_VIDEO_ON & !ATARI_SYNC; + VS_START[] = VDL_VSS[] & ACP_VIDEO_ON + # ATARI_VL[10..0] & !ACP_VIDEO_ON & ATARI_SYNC & VDL_VMD2 + # ATARI_VH[10..0] & !ACP_VIDEO_ON & ATARI_SYNC & !VDL_VMD2 + # (0,VDL_VSS[10..1]) & !ACP_VIDEO_ON & !ATARI_SYNC; + V_TOTAL[] = VDL_VFT[] & ACP_VIDEO_ON + # ATARI_VL[26..16] & !ACP_VIDEO_ON & ATARI_SYNC & VDL_VMD2 + # ATARI_VH[26..16] & !ACP_VIDEO_ON & ATARI_SYNC & !VDL_VMD2 + # (0,VDL_VFT[10..1]) & !ACP_VIDEO_ON & !ATARI_SYNC; +-- ZÄHLER + LAST.CLK = PIXEL_CLK; + LAST = VHCNT[]==(H_TOTAL[]-2); + VHCNT[].CLK = PIXEL_CLK; + VHCNT[] = (VHCNT[] + 1) & !LAST; + VVCNT[].CLK = PIXEL_CLK; + VVCNT[].ENA = LAST; + VVCNT[] = (VVCNT[] + 1) & (VVCNT[]!=V_TOTAL[]-1); +-- DISPLAY ON OFF + DPO_ZL.CLK = PIXEL_CLK; + DPO_ZL = (VVCNT[]>RAND_OBEN[]-1) & (VVCNT[]=(VDIS_START[]-1)) & (VVCNT[]6/2 WORD RESP LONG ONLY + VR_WR.CLK = MAIN_CLK; + VR_WR = VIDEO_PLL_CONFIG_CS & !nFB_WR & !VR_BUSY & !VR_WR; + VR_RD = VIDEO_PLL_CONFIG_CS & nFB_WR & !VR_BUSY; + VR_DOUT[].CLK = MAIN_CLK; + VR_DOUT[].ENA = !VR_BUSY; + VR_DOUT[] = VR_D[]; + VR_FRQ[].CLK = MAIN_CLK; + VR_FRQ[].ENA = VR_WR & FB_ADR[8..0]==H"04"; + VR_FRQ[] = FB_AD[23..16]; +-- VIDEO PLL RECONFIG + VIDEO_PLL_RECONFIG_CS = !nFB_CS2 & FB_ADR[27..0]==H"800" & FB_B0; -- $(F)000'0800 + VIDEO_RECONFIG.CLK = MAIN_CLK; + VIDEO_RECONFIG = VIDEO_PLL_RECONFIG_CS & !nFB_WR & !VR_BUSY & !VIDEO_RECONFIG; +------------------------------------------------------------------------------------------------------------------------ + VIDEO_RAM_CTR[] = ACP_VCTR[31..16]; +-------------- COLOR MODE IM ACP SETZEN + COLOR1 = ACP_VCTR5 & !ACP_VCTR4 & !ACP_VCTR3 & !ACP_VCTR2 & ACP_VIDEO_ON; + COLOR8 = ACP_VCTR4 & !ACP_VCTR3 & !ACP_VCTR2 & ACP_VIDEO_ON; + COLOR16 = ACP_VCTR3 & !ACP_VCTR2 & ACP_VIDEO_ON; + COLOR24 = ACP_VCTR2 & ACP_VIDEO_ON; + ACP_CLUT = ACP_VIDEO_ON & (COLOR1 # COLOR8) # ST_VIDEO & COLOR1; +-- ST ODER FALCON SHIFT MODE SETZEN WENN WRITE X..SHIFT REGISTER + ACP_VCTR7 = FALCON_SHIFT_MODE_CS & !nFB_WR & !ACP_VIDEO_ON; + ACP_VCTR6 = ST_SHIFT_MODE_CS & !nFB_WR & !ACP_VIDEO_ON; + ACP_VCTR[7..6].ENA = FALCON_SHIFT_MODE_CS & !nFB_WR # ST_SHIFT_MODE_CS & !nFB_WR # ACP_VCTR_CS & FB_B3 & !nFB_WR & FB_AD0; + FALCON_VIDEO = ACP_VCTR7; + FALCON_CLUT = FALCON_VIDEO & !ACP_VIDEO_ON & !COLOR16; + ST_VIDEO = ACP_VCTR6; + ST_CLUT = ST_VIDEO & !ACP_VIDEO_ON & !FALCON_CLUT & !COLOR1; + CCSEL[].CLK = PIXEL_CLK; + CCSEL[] = B"000" & ST_CLUT -- ONLY FOR INFORMATION + # B"001" & FALCON_CLUT + # B"100" & ACP_CLUT + # B"101" & COLOR16 + # B"110" & COLOR24 + # B"111" & RAND_ON; +-- DIVERSE (VIDEO)-REGISTER ---------------------------- +-- RANDFARBE + CCR[].CLK = MAIN_CLK; + CCR_CS = !nFB_CS2 & FB_ADR[27..2]==H"101"; -- $404/4 + CCR[] = FB_AD[23..0]; + CCR[23..16].ENA = CCR_CS & FB_B1 & !nFB_WR; + CCR[15..8].ENA = CCR_CS & FB_B2 & !nFB_WR; + CCR[7..0].ENA = CCR_CS & FB_B3 & !nFB_WR; +--SYS CTR + SYS_CTR_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C003"; -- $8006/2 + SYS_CTR[].CLK = MAIN_CLK; + SYS_CTR[6..0] = FB_AD[22..16]; + SYS_CTR[6..0].ENA = SYS_CTR_CS & !nFB_WR & FB_B3; + BLITTER_ON = !SYS_CTR3; +--VDL_LOF + VDL_LOF_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C107"; -- $820E/2 + VDL_LOF[].CLK = MAIN_CLK; + VDL_LOF[] = FB_AD[31..16]; + VDL_LOF[15..8].ENA = VDL_LOF_CS & !nFB_WR & FB_B2; + VDL_LOF[7..0].ENA = VDL_LOF_CS & !nFB_WR & FB_B3; +--VDL_LWD + VDL_LWD_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C108"; -- $8210/2 + VDL_LWD[].CLK = MAIN_CLK; + VDL_LWD[] = FB_AD[31..16]; + VDL_LWD[15..8].ENA = VDL_LWD_CS & !nFB_WR & FB_B0; + VDL_LWD[7..0].ENA = VDL_LWD_CS & !nFB_WR & FB_B1; +-- HORIZONTAL +-- VDL_HHT + VDL_HHT_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C141"; -- $8282/2 + VDL_HHT[].CLK = MAIN_CLK; + VDL_HHT[] = FB_AD[27..16]; + VDL_HHT[11..8].ENA = VDL_HHT_CS & !nFB_WR & FB_B2; + VDL_HHT[7..0].ENA = VDL_HHT_CS & !nFB_WR & FB_B3; +-- VDL_HBE + VDL_HBE_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C143"; -- $8286/2 + VDL_HBE[].CLK = MAIN_CLK; + VDL_HBE[] = FB_AD[27..16]; + VDL_HBE[11..8].ENA = VDL_HBE_CS & !nFB_WR & FB_B2; + VDL_HBE[7..0].ENA = VDL_HBE_CS & !nFB_WR & FB_B3; +-- VDL_HDB + VDL_HDB_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C144"; -- $8288/2 + VDL_HDB[].CLK = MAIN_CLK; + VDL_HDB[] = FB_AD[27..16]; + VDL_HDB[11..8].ENA = VDL_HDB_CS & !nFB_WR & FB_B0; + VDL_HDB[7..0].ENA = VDL_HDB_CS & !nFB_WR & FB_B1; +-- VDL_HDE + VDL_HDE_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C145"; -- $828A/2 + VDL_HDE[].CLK = MAIN_CLK; + VDL_HDE[] = FB_AD[27..16]; + VDL_HDE[11..8].ENA = VDL_HDE_CS & !nFB_WR & FB_B2; + VDL_HDE[7..0].ENA = VDL_HDE_CS & !nFB_WR & FB_B3; +-- VDL_HBB + VDL_HBB_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C142"; -- $8284/2 + VDL_HBB[].CLK = MAIN_CLK; + VDL_HBB[] = FB_AD[27..16]; + VDL_HBB[11..8].ENA = VDL_HBB_CS & !nFB_WR & FB_B0; + VDL_HBB[7..0].ENA = VDL_HBB_CS & !nFB_WR & FB_B1; +-- VDL_HSS + VDL_HSS_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C146"; -- $828C/2 + VDL_HSS[].CLK = MAIN_CLK; + VDL_HSS[] = FB_AD[27..16]; + VDL_HSS[11..8].ENA = VDL_HSS_CS & !nFB_WR & FB_B0; + VDL_HSS[7..0].ENA = VDL_HSS_CS & !nFB_WR & FB_B1; +-- VERTIKAL +-- VDL_VBE + VDL_VBE_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C153"; -- $82A6/2 + VDL_VBE[].CLK = MAIN_CLK; + VDL_VBE[] = FB_AD[26..16]; + VDL_VBE[10..8].ENA = VDL_VBE_CS & !nFB_WR & FB_B2; + VDL_VBE[7..0].ENA = VDL_VBE_CS & !nFB_WR & FB_B3; +-- VDL_VDB + VDL_VDB_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C154"; -- $82A8/2 + VDL_VDB[].CLK = MAIN_CLK; + VDL_VDB[] = FB_AD[26..16]; + VDL_VDB[10..8].ENA = VDL_VDB_CS & !nFB_WR & FB_B0; + VDL_VDB[7..0].ENA = VDL_VDB_CS & !nFB_WR & FB_B1; +-- VDL_VDE + VDL_VDE_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C155"; -- $82AA/2 + VDL_VDE[].CLK = MAIN_CLK; + VDL_VDE[] = FB_AD[26..16]; + VDL_VDE[10..8].ENA = VDL_VDE_CS & !nFB_WR & FB_B2; + VDL_VDE[7..0].ENA = VDL_VDE_CS & !nFB_WR & FB_B3; +-- VDL_VBB + VDL_VBB_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C152"; -- $82A4/2 + VDL_VBB[].CLK = MAIN_CLK; + VDL_VBB[] = FB_AD[26..16]; + VDL_VBB[10..8].ENA = VDL_VBB_CS & !nFB_WR & FB_B0; + VDL_VBB[7..0].ENA = VDL_VBB_CS & !nFB_WR & FB_B1; +-- VDL_VSS + VDL_VSS_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C156"; -- $82AC/2 + VDL_VSS[].CLK = MAIN_CLK; + VDL_VSS[] = FB_AD[26..16]; + VDL_VSS[10..8].ENA = VDL_VSS_CS & !nFB_WR & FB_B0; + VDL_VSS[7..0].ENA = VDL_VSS_CS & !nFB_WR & FB_B1; +-- VDL_VFT + VDL_VFT_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C151"; -- $82A2/2 + VDL_VFT[].CLK = MAIN_CLK; + VDL_VFT[] = FB_AD[26..16]; + VDL_VFT[10..8].ENA = VDL_VFT_CS & !nFB_WR & FB_B2; + VDL_VFT[7..0].ENA = VDL_VFT_CS & !nFB_WR & FB_B3; +-- VDL_VCT + VDL_VCT_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C160"; -- $82C0/2 + VDL_VCT[].CLK = MAIN_CLK; + VDL_VCT[] = FB_AD[24..16]; + VDL_VCT[8].ENA = VDL_VCT_CS & !nFB_WR & FB_B0; + VDL_VCT[7..0].ENA = VDL_VCT_CS & !nFB_WR & FB_B1; +-- VDL_VMD + VDL_VMD_CS = !nFB_CS1 & FB_ADR[19..1]==H"7C161"; -- $82C2/2 + VDL_VMD[].CLK = MAIN_CLK; + VDL_VMD[] = FB_AD[19..16]; + VDL_VMD[3..0].ENA = VDL_VMD_CS & !nFB_WR & FB_B3; +--- REGISTER OUT + FB_AD[31..16] = lpm_bustri_WORD( + ST_SHIFT_MODE_CS & (0,ST_SHIFT_MODE[],B"00000000") + # FALCON_SHIFT_MODE_CS & (0,FALCON_SHIFT_MODE[]) + # SYS_CTR_CS & (B"100000000",SYS_CTR[6..4],!BLITTER_RUN,SYS_CTR[2..0]) + # VDL_LOF_CS & VDL_LOF[] + # VDL_LWD_CS & VDL_LWD[] + # VDL_HBE_CS & (0,VDL_HBE[]) + # VDL_HDB_CS & (0,VDL_HDB[]) + # VDL_HDE_CS & (0,VDL_HDE[]) + # VDL_HBB_CS & (0,VDL_HBB[]) + # VDL_HSS_CS & (0,VDL_HSS[]) + # VDL_HHT_CS & (0,VDL_HHT[]) + # VDL_VBE_CS & (0,VDL_VBE[]) + # VDL_VDB_CS & (0,VDL_VDB[]) + # VDL_VDE_CS & (0,VDL_VDE[]) + # VDL_VBB_CS & (0,VDL_VBB[]) + # VDL_VSS_CS & (0,VDL_VSS[]) + # VDL_VFT_CS & (0,VDL_VFT[]) + # VDL_VCT_CS & (0,VDL_VCT[]) + # VDL_VMD_CS & (0,VDL_VMD[]) + # ACP_VCTR_CS & ACP_VCTR[31..16] + # ATARI_HH_CS & ATARI_HH[31..16] + # ATARI_VH_CS & ATARI_VH[31..16] + # ATARI_HL_CS & ATARI_HL[31..16] + # ATARI_VL_CS & ATARI_VL[31..16] + # CCR_CS & (0,CCR[23..16]) + # VIDEO_PLL_CONFIG_CS & (0,VR_DOUT[]) + # VIDEO_PLL_RECONFIG_CS & (VR_BUSY,B"0000",VR_WR,VR_RD,VIDEO_RECONFIG,H"FA") + ,(ST_SHIFT_MODE_CS # FALCON_SHIFT_MODE_CS # ACP_VCTR_CS # CCR_CS # SYS_CTR_CS # VDL_LOF_CS # VDL_LWD_CS + # VDL_HBE_CS # VDL_HDB_CS # VDL_HDE_CS # VDL_HBB_CS # VDL_HSS_CS # VDL_HHT_CS + # ATARI_HH_CS # ATARI_VH_CS # ATARI_HL_CS # ATARI_VL_CS # VIDEO_PLL_CONFIG_CS # VIDEO_PLL_RECONFIG_CS + # VDL_VBE_CS # VDL_VDB_CS # VDL_VDE_CS # VDL_VBB_CS # VDL_VSS_CS # VDL_VFT_CS # VDL_VCT_CS # VDL_VMD_CS) & !nFB_OE); + + FB_AD[15..0] = lpm_bustri_WORD( + ACP_VCTR_CS & ACP_VCTR[15..0] + # ATARI_HH_CS & ATARI_HH[15..0] + # ATARI_VH_CS & ATARI_VH[15..0] + # ATARI_HL_CS & ATARI_HL[15..0] + # ATARI_VL_CS & ATARI_VL[15..0] + # CCR_CS & CCR[15..0] + ,(ACP_VCTR_CS # CCR_CS # ATARI_HH_CS # ATARI_VH_CS # ATARI_HL_CS # ATARI_VL_CS ) & !nFB_OE); + + VIDEO_MOD_TA = CLUT_TA # ST_SHIFT_MODE_CS # FALCON_SHIFT_MODE_CS # ACP_VCTR_CS # SYS_CTR_CS # VDL_LOF_CS # VDL_LWD_CS + # VDL_HBE_CS # VDL_HDB_CS # VDL_HDE_CS # VDL_HBB_CS # VDL_HSS_CS # VDL_HHT_CS + # ATARI_HH_CS # ATARI_VH_CS # ATARI_HL_CS # ATARI_VL_CS + # VDL_VBE_CS # VDL_VDB_CS # VDL_VDE_CS # VDL_VBB_CS # VDL_VSS_CS # VDL_VFT_CS # VDL_VCT_CS # VDL_VMD_CS; + +-- VIDEO AUSGABE SETZEN + CLK17M.CLK = CLK33M; + CLK17M = !CLK17M; + CLK13M.CLK = CLK25M; + CLK13M = !CLK13M; + PIXEL_CLK = CLK13M & !ACP_VIDEO_ON & (FALCON_VIDEO # ST_VIDEO) & ( VDL_VMD2 & VDL_VCT2 # VDL_VCT0) + # CLK17M & !ACP_VIDEO_ON & (FALCON_VIDEO # ST_VIDEO) & ( VDL_VMD2 & !VDL_VCT2 # VDL_VCT0) + # CLK25M & !ACP_VIDEO_ON & (FALCON_VIDEO # ST_VIDEO) & !VDL_VMD2 & VDL_VCT2 & !VDL_VCT0 + # CLK33M & !ACP_VIDEO_ON & (FALCON_VIDEO # ST_VIDEO) & !VDL_VMD2 & !VDL_VCT2 & !VDL_VCT0 + # CLK25M & ACP_VIDEO_ON & ACP_VCTR[9..8]==B"00" + # CLK33M & ACP_VIDEO_ON & ACP_VCTR[9..8]==B"01" + # CLK_VIDEO & ACP_VIDEO_ON & ACP_VCTR[9]; +-------------------------------------------------------------- +-- HORIZONTALE SYNC LÄNGE in PIXEL_CLK +---------------------------------------------------------------- + HSY_LEN[].CLK = MAIN_CLK; + HSY_LEN[] = 14 & !ACP_VIDEO_ON & (FALCON_VIDEO # ST_VIDEO) & ( VDL_VMD2 & VDL_VCT2 # VDL_VCT0) + # 16 & !ACP_VIDEO_ON & (FALCON_VIDEO # ST_VIDEO) & ( VDL_VMD2 & !VDL_VCT2 # VDL_VCT0) + # 28 & !ACP_VIDEO_ON & (FALCON_VIDEO # ST_VIDEO) & !VDL_VMD2 & VDL_VCT2 & !VDL_VCT0 + # 32 & !ACP_VIDEO_ON & (FALCON_VIDEO # ST_VIDEO) & !VDL_VMD2 & !VDL_VCT2 & !VDL_VCT0 + # 28 & ACP_VIDEO_ON & ACP_VCTR[9..8]==B"00" + # 32 & ACP_VIDEO_ON & ACP_VCTR[9..8]==B"01" + # 16 + (0,VR_FRQ[7..1]) & ACP_VIDEO_ON & ACP_VCTR[9]; -- hsync puls length in pixeln=frequenz/ = 500ns + + MULF[] = 2 & !ST_VIDEO & VDL_VMD2 -- MULTIPLIKATIONS FAKTOR + # 4 & !ST_VIDEO & !VDL_VMD2 + # 16 & ST_VIDEO & VDL_VMD2 + # 32 & ST_VIDEO & !VDL_VMD2; + + + HDIS_LEN[] = 320 & VDL_VMD2 -- BREITE IN PIXELN + # 640 & !VDL_VMD2; + +-- DOPPELZEILENMODUS + DOP_ZEI.CLK = MAIN_CLK; + DOP_ZEI = VDL_VMD0 & ST_VIDEO; -- ZEILENVERDOPPELUNG EIN AUS + INTER_ZEI.CLK = PIXEL_CLK; + INTER_ZEI = DOP_ZEI & VVCNT0!=VDIS_START0 & VVCNT[]!=0 & VHCNT[]<(HDIS_END[]-1) -- EINSCHIEBEZEILE AUF "DOPPEL" ZEILEN UND ZEILE NULL WEGEN SYNC + # DOP_ZEI & VVCNT0==VDIS_START0 & VVCNT[]!=0 & VHCNT[]>(HDIS_END[]-2); -- EINSCHIEBEZEILE AUF "NORMAL" ZEILEN UND ZEILE NULL WEGEN SYNC + DOP_FIFO_CLR.CLK = PIXEL_CLK; + DOP_FIFO_CLR = INTER_ZEI & HSYNC_START # SYNC_PIX; -- DOPPELZEILENFIFO LÖSCHEN AM ENDE DER DOPPELZEILE UND BEI MAIN FIFO START + + RAND_LINKS[] = VDL_HBE[] & ACP_VIDEO_ON + # 21 & !ACP_VIDEO_ON & ATARI_SYNC & VDL_VMD2 + # 42 & !ACP_VIDEO_ON & ATARI_SYNC & !VDL_VMD2 + # VDL_HBE[] * (0,MULF[5..1]) & !ACP_VIDEO_ON & !ATARI_SYNC; -- + HDIS_START[] = VDL_HDB[] & ACP_VIDEO_ON + # RAND_LINKS[]+1 & !ACP_VIDEO_ON; -- + HDIS_END[] = VDL_HDE[] & ACP_VIDEO_ON + # RAND_LINKS[]+HDIS_LEN[] & !ACP_VIDEO_ON; -- + RAND_RECHTS[] = VDL_HBB[] & ACP_VIDEO_ON + # HDIS_END[]+1 & !ACP_VIDEO_ON; -- + HS_START[] = VDL_HSS[] & ACP_VIDEO_ON + # ATARI_HL[11..0] & !ACP_VIDEO_ON & ATARI_SYNC & VDL_VMD2 + # ATARI_HH[11..0] & !ACP_VIDEO_ON & ATARI_SYNC & !VDL_VMD2 + # (VDL_HHT[]+1+VDL_HSS[]) * (0,MULF[5..1]) & !ACP_VIDEO_ON & !ATARI_SYNC; -- + H_TOTAL[] = VDL_HHT[] & ACP_VIDEO_ON + # ATARI_HL[27..16] & !ACP_VIDEO_ON & ATARI_SYNC & VDL_VMD2 + # ATARI_HH[27..16] & !ACP_VIDEO_ON & ATARI_SYNC & !VDL_VMD2 + # (VDL_HHT[]+2) * (0,MULF[]) & !ACP_VIDEO_ON & !ATARI_SYNC; -- + + RAND_OBEN[] = VDL_VBE[] & ACP_VIDEO_ON + # 31 & !ACP_VIDEO_ON & ATARI_SYNC + # (0,VDL_VBE[10..1]) & !ACP_VIDEO_ON & !ATARI_SYNC; + VDIS_START[] = VDL_VDB[] & ACP_VIDEO_ON + # 32 & !ACP_VIDEO_ON & ATARI_SYNC + # (0,VDL_VDB[10..1])+1 & !ACP_VIDEO_ON & !ATARI_SYNC; + VDIS_END[] = VDL_VDE[] & ACP_VIDEO_ON + # 431 & !ACP_VIDEO_ON & ATARI_SYNC & ST_VIDEO + # 511 & !ACP_VIDEO_ON & ATARI_SYNC & !ST_VIDEO + # (0,VDL_VDE[10..1]) & !ACP_VIDEO_ON & !ATARI_SYNC; + RAND_UNTEN[] = VDL_VBB[] & ACP_VIDEO_ON + # VDIS_END[]+1 & !ACP_VIDEO_ON & ATARI_SYNC + # (0,VDL_VBB[10..1])+1 & !ACP_VIDEO_ON & !ATARI_SYNC; + VS_START[] = VDL_VSS[] & ACP_VIDEO_ON + # ATARI_VL[10..0] & !ACP_VIDEO_ON & ATARI_SYNC & VDL_VMD2 + # ATARI_VH[10..0] & !ACP_VIDEO_ON & ATARI_SYNC & !VDL_VMD2 + # (0,VDL_VSS[10..1]) & !ACP_VIDEO_ON & !ATARI_SYNC; + V_TOTAL[] = VDL_VFT[] & ACP_VIDEO_ON + # ATARI_VL[26..16] & !ACP_VIDEO_ON & ATARI_SYNC & VDL_VMD2 + # ATARI_VH[26..16] & !ACP_VIDEO_ON & ATARI_SYNC & !VDL_VMD2 + # (0,VDL_VFT[10..1]) & !ACP_VIDEO_ON & !ATARI_SYNC; +-- ZÄHLER + LAST.CLK = PIXEL_CLK; + LAST = VHCNT[]==(H_TOTAL[]-2); + VHCNT[].CLK = PIXEL_CLK; + VHCNT[] = (VHCNT[] + 1) & !LAST; + VVCNT[].CLK = PIXEL_CLK; + VVCNT[].ENA = LAST; + VVCNT[] = (VVCNT[] + 1) & (VVCNT[]!=V_TOTAL[]-1); +-- DISPLAY ON OFF + DPO_ZL.CLK = PIXEL_CLK; + DPO_ZL = (VVCNT[]>RAND_OBEN[]-1) & (VVCNT[]=(VDIS_START[]-1)) & (VVCNT[] + + + + + + + + + + + + + + + diff --git a/FPGA_quartus/Video/altddio_bidir0.qip b/FPGA_quartus/Video/altddio_bidir0.qip new file mode 100644 index 0000000..3339057 --- /dev/null +++ b/FPGA_quartus/Video/altddio_bidir0.qip @@ -0,0 +1,7 @@ +set_global_assignment -name IP_TOOL_NAME "ALTDDIO_BIDIR" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "altddio_bidir0.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_bidir0.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_bidir0.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_bidir0.cmp"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_bidir0.ppf"] diff --git a/FPGA_quartus/Video/altddio_bidir0.vhd b/FPGA_quartus/Video/altddio_bidir0.vhd new file mode 100644 index 0000000..a0ae0e0 --- /dev/null +++ b/FPGA_quartus/Video/altddio_bidir0.vhd @@ -0,0 +1,172 @@ +-- megafunction wizard: %ALTDDIO_BIDIR% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altddio_bidir + +-- ============================================================ +-- File Name: altddio_bidir0.vhd +-- Megafunction Name(s): +-- altddio_bidir +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY altddio_bidir0 IS + PORT + ( + datain_h : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + datain_l : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + inclock : IN STD_LOGIC ; + oe : IN STD_LOGIC := '1'; + outclock : IN STD_LOGIC ; + combout : OUT STD_LOGIC_VECTOR (31 DOWNTO 0); + dataout_h : OUT STD_LOGIC_VECTOR (31 DOWNTO 0); + dataout_l : OUT STD_LOGIC_VECTOR (31 DOWNTO 0); + padio : INOUT STD_LOGIC_VECTOR (31 DOWNTO 0) + ); +END altddio_bidir0; + + +ARCHITECTURE SYN OF altddio_bidir0 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (31 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (31 DOWNTO 0); + SIGNAL sub_wire2 : STD_LOGIC_VECTOR (31 DOWNTO 0); + + + + COMPONENT altddio_bidir + GENERIC ( + extend_oe_disable : STRING; + implement_input_in_lcell : STRING; + intended_device_family : STRING; + invert_output : STRING; + lpm_type : STRING; + oe_reg : STRING; + power_up_high : STRING; + width : NATURAL + ); + PORT ( + outclock : IN STD_LOGIC ; + padio : INOUT STD_LOGIC_VECTOR (31 DOWNTO 0); + inclock : IN STD_LOGIC ; + dataout_h : OUT STD_LOGIC_VECTOR (31 DOWNTO 0); + oe : IN STD_LOGIC ; + datain_h : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + combout : OUT STD_LOGIC_VECTOR (31 DOWNTO 0); + dataout_l : OUT STD_LOGIC_VECTOR (31 DOWNTO 0); + datain_l : IN STD_LOGIC_VECTOR (31 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + dataout_h <= sub_wire0(31 DOWNTO 0); + combout <= sub_wire1(31 DOWNTO 0); + dataout_l <= sub_wire2(31 DOWNTO 0); + + altddio_bidir_component : altddio_bidir + GENERIC MAP ( + extend_oe_disable => "UNUSED", + implement_input_in_lcell => "ON", + intended_device_family => "Cyclone III", + invert_output => "OFF", + lpm_type => "altddio_bidir", + oe_reg => "UNUSED", + power_up_high => "OFF", + width => 32 + ) + PORT MAP ( + outclock => outclock, + inclock => inclock, + oe => oe, + datain_h => datain_h, + datain_l => datain_l, + dataout_h => sub_wire0, + combout => sub_wire1, + dataout_l => sub_wire2, + padio => padio + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ARESET_MODE NUMERIC "2" +-- Retrieval info: PRIVATE: CLKEN NUMERIC "0" +-- Retrieval info: PRIVATE: EXTEND_OE_DISABLE NUMERIC "0" +-- Retrieval info: PRIVATE: IMPLEMENT_INPUT_IN_LCELL NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: OE NUMERIC "1" +-- Retrieval info: PRIVATE: OE_REG NUMERIC "0" +-- Retrieval info: PRIVATE: POWER_UP_HIGH NUMERIC "0" +-- Retrieval info: PRIVATE: SRESET_MODE NUMERIC "2" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: USE_COMBOUT NUMERIC "1" +-- Retrieval info: PRIVATE: USE_DATAOUT NUMERIC "1" +-- Retrieval info: PRIVATE: USE_DQS_UNDELAYOUT NUMERIC "0" +-- Retrieval info: PRIVATE: WIDTH NUMERIC "32" +-- Retrieval info: CONSTANT: EXTEND_OE_DISABLE STRING "UNUSED" +-- Retrieval info: CONSTANT: IMPLEMENT_INPUT_IN_LCELL STRING "ON" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: INVERT_OUTPUT STRING "OFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altddio_bidir" +-- Retrieval info: CONSTANT: OE_REG STRING "UNUSED" +-- Retrieval info: CONSTANT: POWER_UP_HIGH STRING "OFF" +-- Retrieval info: CONSTANT: WIDTH NUMERIC "32" +-- Retrieval info: USED_PORT: combout 0 0 32 0 OUTPUT NODEFVAL combout[31..0] +-- Retrieval info: USED_PORT: datain_h 0 0 32 0 INPUT NODEFVAL datain_h[31..0] +-- Retrieval info: USED_PORT: datain_l 0 0 32 0 INPUT NODEFVAL datain_l[31..0] +-- Retrieval info: USED_PORT: dataout_h 0 0 32 0 OUTPUT NODEFVAL dataout_h[31..0] +-- Retrieval info: USED_PORT: dataout_l 0 0 32 0 OUTPUT NODEFVAL dataout_l[31..0] +-- Retrieval info: USED_PORT: inclock 0 0 0 0 INPUT_CLK_EXT NODEFVAL inclock +-- Retrieval info: USED_PORT: oe 0 0 0 0 INPUT VCC oe +-- Retrieval info: USED_PORT: outclock 0 0 0 0 INPUT_CLK_EXT NODEFVAL outclock +-- Retrieval info: USED_PORT: padio 0 0 32 0 BIDIR NODEFVAL padio[31..0] +-- Retrieval info: CONNECT: @datain_h 0 0 32 0 datain_h 0 0 32 0 +-- Retrieval info: CONNECT: @datain_l 0 0 32 0 datain_l 0 0 32 0 +-- Retrieval info: CONNECT: padio 0 0 32 0 @padio 0 0 32 0 +-- Retrieval info: CONNECT: @outclock 0 0 0 0 outclock 0 0 0 0 +-- Retrieval info: CONNECT: @oe 0 0 0 0 oe 0 0 0 0 +-- Retrieval info: CONNECT: dataout_h 0 0 32 0 @dataout_h 0 0 32 0 +-- Retrieval info: CONNECT: dataout_l 0 0 32 0 @dataout_l 0 0 32 0 +-- Retrieval info: CONNECT: @inclock 0 0 0 0 inclock 0 0 0 0 +-- Retrieval info: CONNECT: combout 0 0 32 0 @combout 0 0 32 0 +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_bidir0.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_bidir0.ppf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_bidir0.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_bidir0.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_bidir0.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_bidir0_inst.vhd FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_quartus/Video/altddio_out0.bsf b/FPGA_quartus/Video/altddio_out0.bsf new file mode 100644 index 0000000..6554c2f --- /dev/null +++ b/FPGA_quartus/Video/altddio_out0.bsf @@ -0,0 +1,64 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 232 120) + (text "altddio_out0" (rect 81 1 163 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 104 25 116)(font "Arial" )) + (port + (pt 0 24) + (input) + (text "datain_h[3..0]" (rect 0 0 76 14)(font "Arial" (font_size 8))) + (text "datain_h[3..0]" (rect 4 11 70 24)(font "Arial" (font_size 8))) + (line (pt 0 24)(pt 88 24)(line_width 3)) + ) + (port + (pt 0 40) + (input) + (text "datain_l[3..0]" (rect 0 0 71 14)(font "Arial" (font_size 8))) + (text "datain_l[3..0]" (rect 4 27 67 40)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 88 40)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "outclock" (rect 0 0 47 14)(font "Arial" (font_size 8))) + (text "outclock" (rect 4 43 42 56)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 88 56)(line_width 1)) + ) + (port + (pt 232 24) + (output) + (text "dataout[3..0]" (rect 0 0 70 14)(font "Arial" (font_size 8))) + (text "dataout[3..0]" (rect 169 11 229 24)(font "Arial" (font_size 8))) + (line (pt 232 24)(pt 152 24)(line_width 3)) + ) + (drawing + (text "ddio" (rect 110 27 131 40)(font "Arial" (font_size 8))) + (text "output" (rect 105 42 135 55)(font "Arial" (font_size 8))) + (text "power up" (rect 92 74 129 86)(font "Arial" )) + (text "high" (rect 92 84 109 96)(font "Arial" )) + (line (pt 88 16)(pt 152 16)(line_width 1)) + (line (pt 152 16)(pt 152 96)(line_width 1)) + (line (pt 152 96)(pt 88 96)(line_width 1)) + (line (pt 88 96)(pt 88 16)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/altddio_out0.cmp b/FPGA_quartus/Video/altddio_out0.cmp new file mode 100644 index 0000000..df70a5a --- /dev/null +++ b/FPGA_quartus/Video/altddio_out0.cmp @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component altddio_out0 + PORT + ( + datain_h : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + datain_l : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + outclock : IN STD_LOGIC ; + dataout : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/altddio_out0.inc b/FPGA_quartus/Video/altddio_out0.inc new file mode 100644 index 0000000..f534925 --- /dev/null +++ b/FPGA_quartus/Video/altddio_out0.inc @@ -0,0 +1,25 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION altddio_out0 +( + datain_h[3..0], + datain_l[3..0], + outclock +) + +RETURNS ( + dataout[3..0] +); diff --git a/FPGA_quartus/Video/altddio_out0.ppf b/FPGA_quartus/Video/altddio_out0.ppf new file mode 100644 index 0000000..3f3cfb5 --- /dev/null +++ b/FPGA_quartus/Video/altddio_out0.ppf @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/FPGA_quartus/Video/altddio_out0.qip b/FPGA_quartus/Video/altddio_out0.qip new file mode 100644 index 0000000..8193856 --- /dev/null +++ b/FPGA_quartus/Video/altddio_out0.qip @@ -0,0 +1,7 @@ +set_global_assignment -name IP_TOOL_NAME "ALTDDIO_OUT" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "altddio_out0.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out0.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out0.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out0.cmp"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out0.ppf"] diff --git a/FPGA_quartus/Video/altddio_out0.vhd b/FPGA_quartus/Video/altddio_out0.vhd new file mode 100644 index 0000000..f129798 --- /dev/null +++ b/FPGA_quartus/Video/altddio_out0.vhd @@ -0,0 +1,136 @@ +-- megafunction wizard: %ALTDDIO_OUT% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altddio_out + +-- ============================================================ +-- File Name: altddio_out0.vhd +-- Megafunction Name(s): +-- altddio_out +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY altddio_out0 IS + PORT + ( + datain_h : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + datain_l : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + outclock : IN STD_LOGIC ; + dataout : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) + ); +END altddio_out0; + + +ARCHITECTURE SYN OF altddio_out0 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (3 DOWNTO 0); + + + + COMPONENT altddio_out + GENERIC ( + extend_oe_disable : STRING; + intended_device_family : STRING; + invert_output : STRING; + lpm_type : STRING; + oe_reg : STRING; + power_up_high : STRING; + width : NATURAL + ); + PORT ( + dataout : OUT STD_LOGIC_VECTOR (3 DOWNTO 0); + outclock : IN STD_LOGIC ; + datain_h : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + datain_l : IN STD_LOGIC_VECTOR (3 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + dataout <= sub_wire0(3 DOWNTO 0); + + altddio_out_component : altddio_out + GENERIC MAP ( + extend_oe_disable => "UNUSED", + intended_device_family => "Cyclone III", + invert_output => "ON", + lpm_type => "altddio_out", + oe_reg => "UNUSED", + power_up_high => "ON", + width => 4 + ) + PORT MAP ( + outclock => outclock, + datain_h => datain_h, + datain_l => datain_l, + dataout => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ARESET_MODE NUMERIC "2" +-- Retrieval info: PRIVATE: CLKEN NUMERIC "0" +-- Retrieval info: PRIVATE: EXTEND_OE_DISABLE NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: OE NUMERIC "0" +-- Retrieval info: PRIVATE: OE_REG NUMERIC "0" +-- Retrieval info: PRIVATE: POWER_UP_HIGH NUMERIC "1" +-- Retrieval info: PRIVATE: SRESET_MODE NUMERIC "2" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: WIDTH NUMERIC "4" +-- Retrieval info: CONSTANT: EXTEND_OE_DISABLE STRING "UNUSED" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: INVERT_OUTPUT STRING "ON" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altddio_out" +-- Retrieval info: CONSTANT: OE_REG STRING "UNUSED" +-- Retrieval info: CONSTANT: POWER_UP_HIGH STRING "ON" +-- Retrieval info: CONSTANT: WIDTH NUMERIC "4" +-- Retrieval info: USED_PORT: datain_h 0 0 4 0 INPUT NODEFVAL datain_h[3..0] +-- Retrieval info: USED_PORT: datain_l 0 0 4 0 INPUT NODEFVAL datain_l[3..0] +-- Retrieval info: USED_PORT: dataout 0 0 4 0 OUTPUT NODEFVAL dataout[3..0] +-- Retrieval info: USED_PORT: outclock 0 0 0 0 INPUT_CLK_EXT NODEFVAL outclock +-- Retrieval info: CONNECT: @datain_h 0 0 4 0 datain_h 0 0 4 0 +-- Retrieval info: CONNECT: @datain_l 0 0 4 0 datain_l 0 0 4 0 +-- Retrieval info: CONNECT: dataout 0 0 4 0 @dataout 0 0 4 0 +-- Retrieval info: CONNECT: @outclock 0 0 0 0 outclock 0 0 0 0 +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out0.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out0.ppf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out0.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out0.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out0.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out0_inst.vhd FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_quartus/Video/altddio_out1.bsf b/FPGA_quartus/Video/altddio_out1.bsf new file mode 100644 index 0000000..8289852 --- /dev/null +++ b/FPGA_quartus/Video/altddio_out1.bsf @@ -0,0 +1,64 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 232 120) + (text "altddio_out1" (rect 81 1 163 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 104 25 116)(font "Arial" )) + (port + (pt 0 24) + (input) + (text "datain_h" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "datain_h" (rect 4 11 46 24)(font "Arial" (font_size 8))) + (line (pt 0 24)(pt 88 24)(line_width 1)) + ) + (port + (pt 0 40) + (input) + (text "datain_l" (rect 0 0 43 14)(font "Arial" (font_size 8))) + (text "datain_l" (rect 4 27 43 40)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 88 40)(line_width 1)) + ) + (port + (pt 0 56) + (input) + (text "outclock" (rect 0 0 47 14)(font "Arial" (font_size 8))) + (text "outclock" (rect 4 43 42 56)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 88 56)(line_width 1)) + ) + (port + (pt 232 24) + (output) + (text "dataout" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "dataout" (rect 193 11 229 24)(font "Arial" (font_size 8))) + (line (pt 232 24)(pt 152 24)(line_width 1)) + ) + (drawing + (text "ddio" (rect 110 27 131 40)(font "Arial" (font_size 8))) + (text "output" (rect 105 42 135 55)(font "Arial" (font_size 8))) + (text "power up" (rect 92 74 129 86)(font "Arial" )) + (text "low" (rect 92 84 105 96)(font "Arial" )) + (line (pt 88 16)(pt 152 16)(line_width 1)) + (line (pt 152 16)(pt 152 96)(line_width 1)) + (line (pt 152 96)(pt 88 96)(line_width 1)) + (line (pt 88 96)(pt 88 16)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/altddio_out1.cmp b/FPGA_quartus/Video/altddio_out1.cmp new file mode 100644 index 0000000..cdb7766 --- /dev/null +++ b/FPGA_quartus/Video/altddio_out1.cmp @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component altddio_out1 + PORT + ( + datain_h : IN STD_LOGIC ; + datain_l : IN STD_LOGIC ; + outclock : IN STD_LOGIC ; + dataout : OUT STD_LOGIC + ); +end component; diff --git a/FPGA_quartus/Video/altddio_out1.inc b/FPGA_quartus/Video/altddio_out1.inc new file mode 100644 index 0000000..4d50b26 --- /dev/null +++ b/FPGA_quartus/Video/altddio_out1.inc @@ -0,0 +1,25 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION altddio_out1 +( + datain_h, + datain_l, + outclock +) + +RETURNS ( + dataout +); diff --git a/FPGA_quartus/Video/altddio_out1.ppf b/FPGA_quartus/Video/altddio_out1.ppf new file mode 100644 index 0000000..9772cd3 --- /dev/null +++ b/FPGA_quartus/Video/altddio_out1.ppf @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/FPGA_quartus/Video/altddio_out1.qip b/FPGA_quartus/Video/altddio_out1.qip new file mode 100644 index 0000000..606e0b7 --- /dev/null +++ b/FPGA_quartus/Video/altddio_out1.qip @@ -0,0 +1,7 @@ +set_global_assignment -name IP_TOOL_NAME "ALTDDIO_OUT" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "altddio_out1.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out1.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out1.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out1.cmp"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out1.ppf"] diff --git a/FPGA_quartus/Video/altddio_out1.vhd b/FPGA_quartus/Video/altddio_out1.vhd new file mode 100644 index 0000000..cb76474 --- /dev/null +++ b/FPGA_quartus/Video/altddio_out1.vhd @@ -0,0 +1,146 @@ +-- megafunction wizard: %ALTDDIO_OUT% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altddio_out + +-- ============================================================ +-- File Name: altddio_out1.vhd +-- Megafunction Name(s): +-- altddio_out +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY altddio_out1 IS + PORT + ( + datain_h : IN STD_LOGIC ; + datain_l : IN STD_LOGIC ; + outclock : IN STD_LOGIC ; + dataout : OUT STD_LOGIC + ); +END altddio_out1; + + +ARCHITECTURE SYN OF altddio_out1 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC ; + SIGNAL sub_wire2 : STD_LOGIC ; + SIGNAL sub_wire3 : STD_LOGIC_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire4 : STD_LOGIC ; + SIGNAL sub_wire5 : STD_LOGIC_VECTOR (0 DOWNTO 0); + + + + COMPONENT altddio_out + GENERIC ( + extend_oe_disable : STRING; + intended_device_family : STRING; + invert_output : STRING; + lpm_type : STRING; + oe_reg : STRING; + power_up_high : STRING; + width : NATURAL + ); + PORT ( + dataout : OUT STD_LOGIC_VECTOR (0 DOWNTO 0); + outclock : IN STD_LOGIC ; + datain_h : IN STD_LOGIC_VECTOR (0 DOWNTO 0); + datain_l : IN STD_LOGIC_VECTOR (0 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + sub_wire1 <= sub_wire0(0); + dataout <= sub_wire1; + sub_wire2 <= datain_h; + sub_wire3(0) <= sub_wire2; + sub_wire4 <= datain_l; + sub_wire5(0) <= sub_wire4; + + altddio_out_component : altddio_out + GENERIC MAP ( + extend_oe_disable => "UNUSED", + intended_device_family => "Cyclone III", + invert_output => "OFF", + lpm_type => "altddio_out", + oe_reg => "UNUSED", + power_up_high => "OFF", + width => 1 + ) + PORT MAP ( + outclock => outclock, + datain_h => sub_wire3, + datain_l => sub_wire5, + dataout => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ARESET_MODE NUMERIC "2" +-- Retrieval info: PRIVATE: CLKEN NUMERIC "0" +-- Retrieval info: PRIVATE: EXTEND_OE_DISABLE NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: OE NUMERIC "0" +-- Retrieval info: PRIVATE: OE_REG NUMERIC "0" +-- Retrieval info: PRIVATE: POWER_UP_HIGH NUMERIC "0" +-- Retrieval info: PRIVATE: SRESET_MODE NUMERIC "2" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: WIDTH NUMERIC "1" +-- Retrieval info: CONSTANT: EXTEND_OE_DISABLE STRING "UNUSED" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: INVERT_OUTPUT STRING "OFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altddio_out" +-- Retrieval info: CONSTANT: OE_REG STRING "UNUSED" +-- Retrieval info: CONSTANT: POWER_UP_HIGH STRING "OFF" +-- Retrieval info: CONSTANT: WIDTH NUMERIC "1" +-- Retrieval info: USED_PORT: datain_h 0 0 0 0 INPUT NODEFVAL datain_h +-- Retrieval info: USED_PORT: datain_l 0 0 0 0 INPUT NODEFVAL datain_l +-- Retrieval info: USED_PORT: dataout 0 0 0 0 OUTPUT NODEFVAL dataout +-- Retrieval info: USED_PORT: outclock 0 0 0 0 INPUT_CLK_EXT NODEFVAL outclock +-- Retrieval info: CONNECT: @datain_h 0 0 1 0 datain_h 0 0 0 0 +-- Retrieval info: CONNECT: @datain_l 0 0 1 0 datain_l 0 0 0 0 +-- Retrieval info: CONNECT: dataout 0 0 0 0 @dataout 0 0 1 0 +-- Retrieval info: CONNECT: @outclock 0 0 0 0 outclock 0 0 0 0 +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out1.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out1.ppf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out1.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out1.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out1.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out1_inst.vhd FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_quartus/Video/altddio_out2.bsf b/FPGA_quartus/Video/altddio_out2.bsf new file mode 100644 index 0000000..ff039ee --- /dev/null +++ b/FPGA_quartus/Video/altddio_out2.bsf @@ -0,0 +1,64 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 232 120) + (text "altddio_out2" (rect 81 1 163 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 104 25 116)(font "Arial" )) + (port + (pt 0 24) + (input) + (text "datain_h[23..0]" (rect 0 0 83 14)(font "Arial" (font_size 8))) + (text "datain_h[23..0]" (rect 4 11 76 24)(font "Arial" (font_size 8))) + (line (pt 0 24)(pt 88 24)(line_width 3)) + ) + (port + (pt 0 40) + (input) + (text "datain_l[23..0]" (rect 0 0 79 14)(font "Arial" (font_size 8))) + (text "datain_l[23..0]" (rect 4 27 73 40)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 88 40)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "outclock" (rect 0 0 47 14)(font "Arial" (font_size 8))) + (text "outclock" (rect 4 43 42 56)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 88 56)(line_width 1)) + ) + (port + (pt 232 24) + (output) + (text "dataout[23..0]" (rect 0 0 77 14)(font "Arial" (font_size 8))) + (text "dataout[23..0]" (rect 163 11 229 24)(font "Arial" (font_size 8))) + (line (pt 232 24)(pt 152 24)(line_width 3)) + ) + (drawing + (text "ddio" (rect 110 27 131 40)(font "Arial" (font_size 8))) + (text "output" (rect 105 42 135 55)(font "Arial" (font_size 8))) + (text "power up" (rect 92 74 129 86)(font "Arial" )) + (text "low" (rect 92 84 105 96)(font "Arial" )) + (line (pt 88 16)(pt 152 16)(line_width 1)) + (line (pt 152 16)(pt 152 96)(line_width 1)) + (line (pt 152 96)(pt 88 96)(line_width 1)) + (line (pt 88 96)(pt 88 16)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/altddio_out2.cmp b/FPGA_quartus/Video/altddio_out2.cmp new file mode 100644 index 0000000..ad8aa55 --- /dev/null +++ b/FPGA_quartus/Video/altddio_out2.cmp @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component altddio_out2 + PORT + ( + datain_h : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + datain_l : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + outclock : IN STD_LOGIC ; + dataout : OUT STD_LOGIC_VECTOR (23 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/altddio_out2.inc b/FPGA_quartus/Video/altddio_out2.inc new file mode 100644 index 0000000..2257c30 --- /dev/null +++ b/FPGA_quartus/Video/altddio_out2.inc @@ -0,0 +1,25 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION altddio_out2 +( + datain_h[23..0], + datain_l[23..0], + outclock +) + +RETURNS ( + dataout[23..0] +); diff --git a/FPGA_quartus/Video/altddio_out2.ppf b/FPGA_quartus/Video/altddio_out2.ppf new file mode 100644 index 0000000..93df472 --- /dev/null +++ b/FPGA_quartus/Video/altddio_out2.ppf @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/FPGA_quartus/Video/altddio_out2.qip b/FPGA_quartus/Video/altddio_out2.qip new file mode 100644 index 0000000..d72d5ce --- /dev/null +++ b/FPGA_quartus/Video/altddio_out2.qip @@ -0,0 +1,7 @@ +set_global_assignment -name IP_TOOL_NAME "ALTDDIO_OUT" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "altddio_out2.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out2.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out2.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out2.cmp"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out2.ppf"] diff --git a/FPGA_quartus/Video/altddio_out2.vhd b/FPGA_quartus/Video/altddio_out2.vhd new file mode 100644 index 0000000..30a8586 --- /dev/null +++ b/FPGA_quartus/Video/altddio_out2.vhd @@ -0,0 +1,136 @@ +-- megafunction wizard: %ALTDDIO_OUT% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altddio_out + +-- ============================================================ +-- File Name: altddio_out2.vhd +-- Megafunction Name(s): +-- altddio_out +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY altddio_out2 IS + PORT + ( + datain_h : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + datain_l : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + outclock : IN STD_LOGIC ; + dataout : OUT STD_LOGIC_VECTOR (23 DOWNTO 0) + ); +END altddio_out2; + + +ARCHITECTURE SYN OF altddio_out2 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (23 DOWNTO 0); + + + + COMPONENT altddio_out + GENERIC ( + extend_oe_disable : STRING; + intended_device_family : STRING; + invert_output : STRING; + lpm_type : STRING; + oe_reg : STRING; + power_up_high : STRING; + width : NATURAL + ); + PORT ( + dataout : OUT STD_LOGIC_VECTOR (23 DOWNTO 0); + outclock : IN STD_LOGIC ; + datain_h : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + datain_l : IN STD_LOGIC_VECTOR (23 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + dataout <= sub_wire0(23 DOWNTO 0); + + altddio_out_component : altddio_out + GENERIC MAP ( + extend_oe_disable => "UNUSED", + intended_device_family => "Cyclone III", + invert_output => "OFF", + lpm_type => "altddio_out", + oe_reg => "UNUSED", + power_up_high => "OFF", + width => 24 + ) + PORT MAP ( + outclock => outclock, + datain_h => datain_h, + datain_l => datain_l, + dataout => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ARESET_MODE NUMERIC "2" +-- Retrieval info: PRIVATE: CLKEN NUMERIC "0" +-- Retrieval info: PRIVATE: EXTEND_OE_DISABLE NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: OE NUMERIC "0" +-- Retrieval info: PRIVATE: OE_REG NUMERIC "0" +-- Retrieval info: PRIVATE: POWER_UP_HIGH NUMERIC "0" +-- Retrieval info: PRIVATE: SRESET_MODE NUMERIC "2" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: WIDTH NUMERIC "24" +-- Retrieval info: CONSTANT: EXTEND_OE_DISABLE STRING "UNUSED" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: INVERT_OUTPUT STRING "OFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altddio_out" +-- Retrieval info: CONSTANT: OE_REG STRING "UNUSED" +-- Retrieval info: CONSTANT: POWER_UP_HIGH STRING "OFF" +-- Retrieval info: CONSTANT: WIDTH NUMERIC "24" +-- Retrieval info: USED_PORT: datain_h 0 0 24 0 INPUT NODEFVAL datain_h[23..0] +-- Retrieval info: USED_PORT: datain_l 0 0 24 0 INPUT NODEFVAL datain_l[23..0] +-- Retrieval info: USED_PORT: dataout 0 0 24 0 OUTPUT NODEFVAL dataout[23..0] +-- Retrieval info: USED_PORT: outclock 0 0 0 0 INPUT_CLK_EXT NODEFVAL outclock +-- Retrieval info: CONNECT: @datain_h 0 0 24 0 datain_h 0 0 24 0 +-- Retrieval info: CONNECT: @datain_l 0 0 24 0 datain_l 0 0 24 0 +-- Retrieval info: CONNECT: dataout 0 0 24 0 @dataout 0 0 24 0 +-- Retrieval info: CONNECT: @outclock 0 0 0 0 outclock 0 0 0 0 +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out2.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out2.ppf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out2.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out2.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out2.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out2_inst.vhd FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_quartus/Video/altdpram0.bsf b/FPGA_quartus/Video/altdpram0.bsf new file mode 100644 index 0000000..e0d3ce3 --- /dev/null +++ b/FPGA_quartus/Video/altdpram0.bsf @@ -0,0 +1,173 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 256 208) + (text "altdpram0" (rect 100 1 167 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 192 25 204)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data_a[2..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data_a[2..0]" (rect 4 19 61 32)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 112 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "address_a[3..0]" (rect 0 0 89 14)(font "Arial" (font_size 8))) + (text "address_a[3..0]" (rect 4 35 75 48)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 112 48)(line_width 3)) + ) + (port + (pt 0 64) + (input) + (text "wren_a" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "wren_a" (rect 4 51 38 64)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 112 64)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "data_b[2..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data_b[2..0]" (rect 4 83 61 96)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 112 96)(line_width 3)) + ) + (port + (pt 0 112) + (input) + (text "address_b[3..0]" (rect 0 0 89 14)(font "Arial" (font_size 8))) + (text "address_b[3..0]" (rect 4 99 75 112)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 112 112)(line_width 3)) + ) + (port + (pt 0 128) + (input) + (text "wren_b" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "wren_b" (rect 4 115 38 128)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 112 128)(line_width 1)) + ) + (port + (pt 0 160) + (input) + (text "clock_a" (rect 0 0 43 14)(font "Arial" (font_size 8))) + (text "clock_a" (rect 4 147 39 160)(font "Arial" (font_size 8))) + (line (pt 0 160)(pt 176 160)(line_width 1)) + ) + (port + (pt 0 176) + (input) + (text "clock_b" (rect 0 0 43 14)(font "Arial" (font_size 8))) + (text "clock_b" (rect 4 163 39 176)(font "Arial" (font_size 8))) + (line (pt 0 176)(pt 181 176)(line_width 1)) + ) + (port + (pt 256 32) + (output) + (text "q_a[2..0]" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "q_a[2..0]" (rect 211 19 253 32)(font "Arial" (font_size 8))) + (line (pt 256 32)(pt 192 32)(line_width 3)) + ) + (port + (pt 256 96) + (output) + (text "q_b[2..0]" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "q_b[2..0]" (rect 211 83 253 96)(font "Arial" (font_size 8))) + (line (pt 256 96)(pt 192 96)(line_width 3)) + ) + (drawing + (text "16 Word(s)" (rect 136 61 148 107)(font "Arial" )(vertical)) + (text "RAM" (rect 149 74 161 94)(font "Arial" )(vertical)) + (text "Block Type: AUTO" (rect 41 188 119 200)(font "Arial" )) + (line (pt 128 24)(pt 168 24)(line_width 1)) + (line (pt 168 24)(pt 168 144)(line_width 1)) + (line (pt 168 144)(pt 128 144)(line_width 1)) + (line (pt 128 144)(pt 128 24)(line_width 1)) + (line (pt 112 27)(pt 120 27)(line_width 1)) + (line (pt 120 27)(pt 120 39)(line_width 1)) + (line (pt 120 39)(pt 112 39)(line_width 1)) + (line (pt 112 39)(pt 112 27)(line_width 1)) + (line (pt 112 34)(pt 114 36)(line_width 1)) + (line (pt 114 36)(pt 112 38)(line_width 1)) + (line (pt 92 36)(pt 112 36)(line_width 1)) + (line (pt 120 32)(pt 128 32)(line_width 3)) + (line (pt 112 43)(pt 120 43)(line_width 1)) + (line (pt 120 43)(pt 120 55)(line_width 1)) + (line (pt 120 55)(pt 112 55)(line_width 1)) + (line (pt 112 55)(pt 112 43)(line_width 1)) + (line (pt 112 50)(pt 114 52)(line_width 1)) + (line (pt 114 52)(pt 112 54)(line_width 1)) + (line (pt 92 52)(pt 112 52)(line_width 1)) + (line (pt 120 48)(pt 128 48)(line_width 3)) + (line (pt 112 59)(pt 120 59)(line_width 1)) + (line (pt 120 59)(pt 120 71)(line_width 1)) + (line (pt 120 71)(pt 112 71)(line_width 1)) + (line (pt 112 71)(pt 112 59)(line_width 1)) + (line (pt 112 66)(pt 114 68)(line_width 1)) + (line (pt 114 68)(pt 112 70)(line_width 1)) + (line (pt 92 68)(pt 112 68)(line_width 1)) + (line (pt 120 64)(pt 128 64)(line_width 1)) + (line (pt 112 91)(pt 120 91)(line_width 1)) + (line (pt 120 91)(pt 120 103)(line_width 1)) + (line (pt 120 103)(pt 112 103)(line_width 1)) + (line (pt 112 103)(pt 112 91)(line_width 1)) + (line (pt 112 98)(pt 114 100)(line_width 1)) + (line (pt 114 100)(pt 112 102)(line_width 1)) + (line (pt 104 100)(pt 112 100)(line_width 1)) + (line (pt 120 96)(pt 128 96)(line_width 3)) + (line (pt 112 107)(pt 120 107)(line_width 1)) + (line (pt 120 107)(pt 120 119)(line_width 1)) + (line (pt 120 119)(pt 112 119)(line_width 1)) + (line (pt 112 119)(pt 112 107)(line_width 1)) + (line (pt 112 114)(pt 114 116)(line_width 1)) + (line (pt 114 116)(pt 112 118)(line_width 1)) + (line (pt 104 116)(pt 112 116)(line_width 1)) + (line (pt 120 112)(pt 128 112)(line_width 3)) + (line (pt 112 123)(pt 120 123)(line_width 1)) + (line (pt 120 123)(pt 120 135)(line_width 1)) + (line (pt 120 135)(pt 112 135)(line_width 1)) + (line (pt 112 135)(pt 112 123)(line_width 1)) + (line (pt 112 130)(pt 114 132)(line_width 1)) + (line (pt 114 132)(pt 112 134)(line_width 1)) + (line (pt 104 132)(pt 112 132)(line_width 1)) + (line (pt 120 128)(pt 128 128)(line_width 1)) + (line (pt 92 36)(pt 92 161)(line_width 1)) + (line (pt 176 36)(pt 176 161)(line_width 1)) + (line (pt 104 100)(pt 104 177)(line_width 1)) + (line (pt 181 100)(pt 181 177)(line_width 1)) + (line (pt 184 27)(pt 192 27)(line_width 1)) + (line (pt 192 27)(pt 192 39)(line_width 1)) + (line (pt 192 39)(pt 184 39)(line_width 1)) + (line (pt 184 39)(pt 184 27)(line_width 1)) + (line (pt 184 34)(pt 186 36)(line_width 1)) + (line (pt 186 36)(pt 184 38)(line_width 1)) + (line (pt 176 36)(pt 184 36)(line_width 1)) + (line (pt 168 32)(pt 184 32)(line_width 3)) + (line (pt 184 91)(pt 192 91)(line_width 1)) + (line (pt 192 91)(pt 192 103)(line_width 1)) + (line (pt 192 103)(pt 184 103)(line_width 1)) + (line (pt 184 103)(pt 184 91)(line_width 1)) + (line (pt 184 98)(pt 186 100)(line_width 1)) + (line (pt 186 100)(pt 184 102)(line_width 1)) + (line (pt 181 100)(pt 184 100)(line_width 1)) + (line (pt 168 96)(pt 184 96)(line_width 3)) + ) +) diff --git a/FPGA_quartus/Video/altdpram0.cmp b/FPGA_quartus/Video/altdpram0.cmp new file mode 100644 index 0000000..566f5cd --- /dev/null +++ b/FPGA_quartus/Video/altdpram0.cmp @@ -0,0 +1,30 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component altdpram0 + PORT + ( + address_a : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + address_b : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + clock_a : IN STD_LOGIC ; + clock_b : IN STD_LOGIC ; + data_a : IN STD_LOGIC_VECTOR (2 DOWNTO 0); + data_b : IN STD_LOGIC_VECTOR (2 DOWNTO 0); + wren_a : IN STD_LOGIC := '1'; + wren_b : IN STD_LOGIC := '1'; + q_a : OUT STD_LOGIC_VECTOR (2 DOWNTO 0); + q_b : OUT STD_LOGIC_VECTOR (2 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/altdpram0.inc b/FPGA_quartus/Video/altdpram0.inc new file mode 100644 index 0000000..828067d --- /dev/null +++ b/FPGA_quartus/Video/altdpram0.inc @@ -0,0 +1,31 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION altdpram0 +( + address_a[3..0], + address_b[3..0], + clock_a, + clock_b, + data_a[2..0], + data_b[2..0], + wren_a, + wren_b +) + +RETURNS ( + q_a[2..0], + q_b[2..0] +); diff --git a/FPGA_quartus/Video/altdpram0.qip b/FPGA_quartus/Video/altdpram0.qip new file mode 100644 index 0000000..e4d02ab --- /dev/null +++ b/FPGA_quartus/Video/altdpram0.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_RAM_DP+" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "altdpram0.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altdpram0.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altdpram0.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altdpram0.cmp"] diff --git a/FPGA_quartus/Video/altdpram0.vhd b/FPGA_quartus/Video/altdpram0.vhd new file mode 100644 index 0000000..c883f02 --- /dev/null +++ b/FPGA_quartus/Video/altdpram0.vhd @@ -0,0 +1,273 @@ +-- megafunction wizard: %LPM_RAM_DP+% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altsyncram + +-- ============================================================ +-- File Name: altdpram0.vhd +-- Megafunction Name(s): +-- altsyncram +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY altdpram0 IS + PORT + ( + address_a : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + address_b : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + clock_a : IN STD_LOGIC ; + clock_b : IN STD_LOGIC ; + data_a : IN STD_LOGIC_VECTOR (2 DOWNTO 0); + data_b : IN STD_LOGIC_VECTOR (2 DOWNTO 0); + wren_a : IN STD_LOGIC := '1'; + wren_b : IN STD_LOGIC := '1'; + q_a : OUT STD_LOGIC_VECTOR (2 DOWNTO 0); + q_b : OUT STD_LOGIC_VECTOR (2 DOWNTO 0) + ); +END altdpram0; + + +ARCHITECTURE SYN OF altdpram0 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (2 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (2 DOWNTO 0); + + + + COMPONENT altsyncram + GENERIC ( + address_reg_b : STRING; + clock_enable_input_a : STRING; + clock_enable_input_b : STRING; + clock_enable_output_a : STRING; + clock_enable_output_b : STRING; + indata_reg_b : STRING; + intended_device_family : STRING; + lpm_type : STRING; + numwords_a : NATURAL; + numwords_b : NATURAL; + operation_mode : STRING; + outdata_aclr_a : STRING; + outdata_aclr_b : STRING; + outdata_reg_a : STRING; + outdata_reg_b : STRING; + power_up_uninitialized : STRING; + read_during_write_mode_port_a : STRING; + read_during_write_mode_port_b : STRING; + widthad_a : NATURAL; + widthad_b : NATURAL; + width_a : NATURAL; + width_b : NATURAL; + width_byteena_a : NATURAL; + width_byteena_b : NATURAL; + wrcontrol_wraddress_reg_b : STRING + ); + PORT ( + wren_a : IN STD_LOGIC ; + clock0 : IN STD_LOGIC ; + wren_b : IN STD_LOGIC ; + clock1 : IN STD_LOGIC ; + address_a : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + address_b : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + q_a : OUT STD_LOGIC_VECTOR (2 DOWNTO 0); + q_b : OUT STD_LOGIC_VECTOR (2 DOWNTO 0); + data_a : IN STD_LOGIC_VECTOR (2 DOWNTO 0); + data_b : IN STD_LOGIC_VECTOR (2 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + q_a <= sub_wire0(2 DOWNTO 0); + q_b <= sub_wire1(2 DOWNTO 0); + + altsyncram_component : altsyncram + GENERIC MAP ( + address_reg_b => "CLOCK1", + clock_enable_input_a => "BYPASS", + clock_enable_input_b => "BYPASS", + clock_enable_output_a => "BYPASS", + clock_enable_output_b => "BYPASS", + indata_reg_b => "CLOCK1", + intended_device_family => "Cyclone III", + lpm_type => "altsyncram", + numwords_a => 16, + numwords_b => 16, + operation_mode => "BIDIR_DUAL_PORT", + outdata_aclr_a => "NONE", + outdata_aclr_b => "NONE", + outdata_reg_a => "CLOCK0", + outdata_reg_b => "CLOCK1", + power_up_uninitialized => "FALSE", + read_during_write_mode_port_a => "OLD_DATA", + read_during_write_mode_port_b => "OLD_DATA", + widthad_a => 4, + widthad_b => 4, + width_a => 3, + width_b => 3, + width_byteena_a => 1, + width_byteena_b => 1, + wrcontrol_wraddress_reg_b => "CLOCK1" + ) + PORT MAP ( + wren_a => wren_a, + clock0 => clock_a, + wren_b => wren_b, + clock1 => clock_b, + address_a => address_a, + address_b => address_b, + data_a => data_a, + data_b => data_b, + q_a => sub_wire0, + q_b => sub_wire1 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0" +-- Retrieval info: PRIVATE: ADDRESSSTALL_B NUMERIC "0" +-- Retrieval info: PRIVATE: BYTEENA_ACLR_A NUMERIC "0" +-- Retrieval info: PRIVATE: BYTEENA_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_ENABLE_A NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_ENABLE_B NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8" +-- Retrieval info: PRIVATE: BlankMemory NUMERIC "1" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_B NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_B NUMERIC "0" +-- Retrieval info: PRIVATE: CLRdata NUMERIC "0" +-- Retrieval info: PRIVATE: CLRq NUMERIC "0" +-- Retrieval info: PRIVATE: CLRrdaddress NUMERIC "0" +-- Retrieval info: PRIVATE: CLRrren NUMERIC "0" +-- Retrieval info: PRIVATE: CLRwraddress NUMERIC "0" +-- Retrieval info: PRIVATE: CLRwren NUMERIC "0" +-- Retrieval info: PRIVATE: Clock NUMERIC "5" +-- Retrieval info: PRIVATE: Clock_A NUMERIC "0" +-- Retrieval info: PRIVATE: Clock_B NUMERIC "0" +-- Retrieval info: PRIVATE: ECC NUMERIC "0" +-- Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0" +-- Retrieval info: PRIVATE: INDATA_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: INDATA_REG_B NUMERIC "1" +-- Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A" +-- Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +-- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +-- Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0" +-- Retrieval info: PRIVATE: MEMSIZE NUMERIC "48" +-- Retrieval info: PRIVATE: MEM_IN_BITS NUMERIC "0" +-- Retrieval info: PRIVATE: MIFfilename STRING "" +-- Retrieval info: PRIVATE: OPERATION_MODE NUMERIC "3" +-- Retrieval info: PRIVATE: OUTDATA_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: OUTDATA_REG_B NUMERIC "1" +-- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_MIXED_PORTS NUMERIC "2" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_A NUMERIC "1" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_B NUMERIC "1" +-- Retrieval info: PRIVATE: REGdata NUMERIC "1" +-- Retrieval info: PRIVATE: REGq NUMERIC "1" +-- Retrieval info: PRIVATE: REGrdaddress NUMERIC "0" +-- Retrieval info: PRIVATE: REGrren NUMERIC "0" +-- Retrieval info: PRIVATE: REGwraddress NUMERIC "1" +-- Retrieval info: PRIVATE: REGwren NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: USE_DIFF_CLKEN NUMERIC "0" +-- Retrieval info: PRIVATE: UseDPRAM NUMERIC "1" +-- Retrieval info: PRIVATE: VarWidth NUMERIC "0" +-- Retrieval info: PRIVATE: WIDTH_READ_A NUMERIC "3" +-- Retrieval info: PRIVATE: WIDTH_READ_B NUMERIC "3" +-- Retrieval info: PRIVATE: WIDTH_WRITE_A NUMERIC "3" +-- Retrieval info: PRIVATE: WIDTH_WRITE_B NUMERIC "3" +-- Retrieval info: PRIVATE: WRADDR_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: WRADDR_REG_B NUMERIC "1" +-- Retrieval info: PRIVATE: WRCTRL_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: enable NUMERIC "0" +-- Retrieval info: PRIVATE: rden NUMERIC "0" +-- Retrieval info: CONSTANT: ADDRESS_REG_B STRING "CLOCK1" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_B STRING "BYPASS" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_B STRING "BYPASS" +-- Retrieval info: CONSTANT: INDATA_REG_B STRING "CLOCK1" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram" +-- Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "16" +-- Retrieval info: CONSTANT: NUMWORDS_B NUMERIC "16" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "BIDIR_DUAL_PORT" +-- Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE" +-- Retrieval info: CONSTANT: OUTDATA_ACLR_B STRING "NONE" +-- Retrieval info: CONSTANT: OUTDATA_REG_A STRING "CLOCK0" +-- Retrieval info: CONSTANT: OUTDATA_REG_B STRING "CLOCK1" +-- Retrieval info: CONSTANT: POWER_UP_UNINITIALIZED STRING "FALSE" +-- Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_PORT_A STRING "OLD_DATA" +-- Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_PORT_B STRING "OLD_DATA" +-- Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "4" +-- Retrieval info: CONSTANT: WIDTHAD_B NUMERIC "4" +-- Retrieval info: CONSTANT: WIDTH_A NUMERIC "3" +-- Retrieval info: CONSTANT: WIDTH_B NUMERIC "3" +-- Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1" +-- Retrieval info: CONSTANT: WIDTH_BYTEENA_B NUMERIC "1" +-- Retrieval info: CONSTANT: WRCONTROL_WRADDRESS_REG_B STRING "CLOCK1" +-- Retrieval info: USED_PORT: address_a 0 0 4 0 INPUT NODEFVAL address_a[3..0] +-- Retrieval info: USED_PORT: address_b 0 0 4 0 INPUT NODEFVAL address_b[3..0] +-- Retrieval info: USED_PORT: clock_a 0 0 0 0 INPUT NODEFVAL clock_a +-- Retrieval info: USED_PORT: clock_b 0 0 0 0 INPUT NODEFVAL clock_b +-- Retrieval info: USED_PORT: data_a 0 0 3 0 INPUT NODEFVAL data_a[2..0] +-- Retrieval info: USED_PORT: data_b 0 0 3 0 INPUT NODEFVAL data_b[2..0] +-- Retrieval info: USED_PORT: q_a 0 0 3 0 OUTPUT NODEFVAL q_a[2..0] +-- Retrieval info: USED_PORT: q_b 0 0 3 0 OUTPUT NODEFVAL q_b[2..0] +-- Retrieval info: USED_PORT: wren_a 0 0 0 0 INPUT VCC wren_a +-- Retrieval info: USED_PORT: wren_b 0 0 0 0 INPUT VCC wren_b +-- Retrieval info: CONNECT: @data_a 0 0 3 0 data_a 0 0 3 0 +-- Retrieval info: CONNECT: @wren_a 0 0 0 0 wren_a 0 0 0 0 +-- Retrieval info: CONNECT: q_a 0 0 3 0 @q_a 0 0 3 0 +-- Retrieval info: CONNECT: q_b 0 0 3 0 @q_b 0 0 3 0 +-- Retrieval info: CONNECT: @address_a 0 0 4 0 address_a 0 0 4 0 +-- Retrieval info: CONNECT: @data_b 0 0 3 0 data_b 0 0 3 0 +-- Retrieval info: CONNECT: @address_b 0 0 4 0 address_b 0 0 4 0 +-- Retrieval info: CONNECT: @wren_b 0 0 0 0 wren_b 0 0 0 0 +-- Retrieval info: CONNECT: @clock0 0 0 0 0 clock_a 0 0 0 0 +-- Retrieval info: CONNECT: @clock1 0 0 0 0 clock_b 0 0 0 0 +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram0.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram0.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram0.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram0.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram0_inst.vhd FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram0_waveforms.html TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram0_wave*.jpg FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_quartus/Video/altdpram0_wave0.jpg b/FPGA_quartus/Video/altdpram0_wave0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cccdde749490246198f99aafbea75cceba7d2e54 GIT binary patch literal 125146 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�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�R9 ju_F6_a7hA+#LuS4^tU#uf + +Sample Waveforms for altdpram0.vhd + + +

Sample behavioral waveforms for design file altdpram0.vhd

+

The following waveforms show the behavior of altsyncram megafunction for the chosen set of parameters in design altdpram0.vhd. For the purpose of this simulation, the contents of the memory at the start of the sample waveforms is assumed to be ( 7, 6, 5, 4, ...). The design altdpram0.vhd has two read/write ports. Read/write port A has 16 words of 3 bits each and Read/write port B has 16 words of 3 bits each. The output of the read/write port A is registered by clock_a. The output of the read/write port B is registered by clock_b.

+
+

Fig. 1 : Wave showing read operation.

+

The above waveform shows the behavior of the design under normal read conditions. The read happens at the rising edge of the enabled clock cycle. The output from the RAM is undefined until after the first rising edge of the read clock. The clock enable on the read side input registers are disabled. The clock enable on the output registers are disabled.

+
+

Fig. 2 : Waveform showing write operation

+

The above waveform shows the behavior of the design under normal write conditions. The write cycle is assumed to be from the rising edge of the enabled clock in which wren is high till the rising edge of the next clock cycle. In BIDIR_DUAL_PORT mode, when the write happens at the same address as the one being read in the other port, the read output is unknown. Actual write into the RAM happens at the rising edge of the write clock. The clock enable on the write side input registers are disabled. The clock enable on the output registers are disabled. For the A port, When a write happens, the output of the port is the old data at the address. For the B port, When a write happens, the output of the port is the old data at the address.

+

+ + diff --git a/FPGA_quartus/Video/altdpram1.bsf b/FPGA_quartus/Video/altdpram1.bsf new file mode 100644 index 0000000..d75db28 --- /dev/null +++ b/FPGA_quartus/Video/altdpram1.bsf @@ -0,0 +1,173 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 256 208) + (text "altdpram1" (rect 100 1 167 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 192 25 204)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data_a[5..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data_a[5..0]" (rect 4 19 61 32)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 112 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "address_a[7..0]" (rect 0 0 89 14)(font "Arial" (font_size 8))) + (text "address_a[7..0]" (rect 4 35 75 48)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 112 48)(line_width 3)) + ) + (port + (pt 0 64) + (input) + (text "wren_a" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "wren_a" (rect 4 51 38 64)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 112 64)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "data_b[5..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data_b[5..0]" (rect 4 83 61 96)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 112 96)(line_width 3)) + ) + (port + (pt 0 112) + (input) + (text "address_b[7..0]" (rect 0 0 89 14)(font "Arial" (font_size 8))) + (text "address_b[7..0]" (rect 4 99 75 112)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 112 112)(line_width 3)) + ) + (port + (pt 0 128) + (input) + (text "wren_b" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "wren_b" (rect 4 115 38 128)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 112 128)(line_width 1)) + ) + (port + (pt 0 160) + (input) + (text "clock_a" (rect 0 0 43 14)(font "Arial" (font_size 8))) + (text "clock_a" (rect 4 147 39 160)(font "Arial" (font_size 8))) + (line (pt 0 160)(pt 176 160)(line_width 1)) + ) + (port + (pt 0 176) + (input) + (text "clock_b" (rect 0 0 43 14)(font "Arial" (font_size 8))) + (text "clock_b" (rect 4 163 39 176)(font "Arial" (font_size 8))) + (line (pt 0 176)(pt 181 176)(line_width 1)) + ) + (port + (pt 256 32) + (output) + (text "q_a[5..0]" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "q_a[5..0]" (rect 211 19 253 32)(font "Arial" (font_size 8))) + (line (pt 256 32)(pt 192 32)(line_width 3)) + ) + (port + (pt 256 96) + (output) + (text "q_b[5..0]" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "q_b[5..0]" (rect 211 83 253 96)(font "Arial" (font_size 8))) + (line (pt 256 96)(pt 192 96)(line_width 3)) + ) + (drawing + (text "256 Word(s)" (rect 136 58 148 109)(font "Arial" )(vertical)) + (text "RAM" (rect 149 74 161 94)(font "Arial" )(vertical)) + (text "Block Type: AUTO" (rect 41 188 119 200)(font "Arial" )) + (line (pt 128 24)(pt 168 24)(line_width 1)) + (line (pt 168 24)(pt 168 144)(line_width 1)) + (line (pt 168 144)(pt 128 144)(line_width 1)) + (line (pt 128 144)(pt 128 24)(line_width 1)) + (line (pt 112 27)(pt 120 27)(line_width 1)) + (line (pt 120 27)(pt 120 39)(line_width 1)) + (line (pt 120 39)(pt 112 39)(line_width 1)) + (line (pt 112 39)(pt 112 27)(line_width 1)) + (line (pt 112 34)(pt 114 36)(line_width 1)) + (line (pt 114 36)(pt 112 38)(line_width 1)) + (line (pt 92 36)(pt 112 36)(line_width 1)) + (line (pt 120 32)(pt 128 32)(line_width 3)) + (line (pt 112 43)(pt 120 43)(line_width 1)) + (line (pt 120 43)(pt 120 55)(line_width 1)) + (line (pt 120 55)(pt 112 55)(line_width 1)) + (line (pt 112 55)(pt 112 43)(line_width 1)) + (line (pt 112 50)(pt 114 52)(line_width 1)) + (line (pt 114 52)(pt 112 54)(line_width 1)) + (line (pt 92 52)(pt 112 52)(line_width 1)) + (line (pt 120 48)(pt 128 48)(line_width 3)) + (line (pt 112 59)(pt 120 59)(line_width 1)) + (line (pt 120 59)(pt 120 71)(line_width 1)) + (line (pt 120 71)(pt 112 71)(line_width 1)) + (line (pt 112 71)(pt 112 59)(line_width 1)) + (line (pt 112 66)(pt 114 68)(line_width 1)) + (line (pt 114 68)(pt 112 70)(line_width 1)) + (line (pt 92 68)(pt 112 68)(line_width 1)) + (line (pt 120 64)(pt 128 64)(line_width 1)) + (line (pt 112 91)(pt 120 91)(line_width 1)) + (line (pt 120 91)(pt 120 103)(line_width 1)) + (line (pt 120 103)(pt 112 103)(line_width 1)) + (line (pt 112 103)(pt 112 91)(line_width 1)) + (line (pt 112 98)(pt 114 100)(line_width 1)) + (line (pt 114 100)(pt 112 102)(line_width 1)) + (line (pt 104 100)(pt 112 100)(line_width 1)) + (line (pt 120 96)(pt 128 96)(line_width 3)) + (line (pt 112 107)(pt 120 107)(line_width 1)) + (line (pt 120 107)(pt 120 119)(line_width 1)) + (line (pt 120 119)(pt 112 119)(line_width 1)) + (line (pt 112 119)(pt 112 107)(line_width 1)) + (line (pt 112 114)(pt 114 116)(line_width 1)) + (line (pt 114 116)(pt 112 118)(line_width 1)) + (line (pt 104 116)(pt 112 116)(line_width 1)) + (line (pt 120 112)(pt 128 112)(line_width 3)) + (line (pt 112 123)(pt 120 123)(line_width 1)) + (line (pt 120 123)(pt 120 135)(line_width 1)) + (line (pt 120 135)(pt 112 135)(line_width 1)) + (line (pt 112 135)(pt 112 123)(line_width 1)) + (line (pt 112 130)(pt 114 132)(line_width 1)) + (line (pt 114 132)(pt 112 134)(line_width 1)) + (line (pt 104 132)(pt 112 132)(line_width 1)) + (line (pt 120 128)(pt 128 128)(line_width 1)) + (line (pt 92 36)(pt 92 161)(line_width 1)) + (line (pt 176 36)(pt 176 161)(line_width 1)) + (line (pt 104 100)(pt 104 177)(line_width 1)) + (line (pt 181 100)(pt 181 177)(line_width 1)) + (line (pt 184 27)(pt 192 27)(line_width 1)) + (line (pt 192 27)(pt 192 39)(line_width 1)) + (line (pt 192 39)(pt 184 39)(line_width 1)) + (line (pt 184 39)(pt 184 27)(line_width 1)) + (line (pt 184 34)(pt 186 36)(line_width 1)) + (line (pt 186 36)(pt 184 38)(line_width 1)) + (line (pt 176 36)(pt 184 36)(line_width 1)) + (line (pt 168 32)(pt 184 32)(line_width 3)) + (line (pt 184 91)(pt 192 91)(line_width 1)) + (line (pt 192 91)(pt 192 103)(line_width 1)) + (line (pt 192 103)(pt 184 103)(line_width 1)) + (line (pt 184 103)(pt 184 91)(line_width 1)) + (line (pt 184 98)(pt 186 100)(line_width 1)) + (line (pt 186 100)(pt 184 102)(line_width 1)) + (line (pt 181 100)(pt 184 100)(line_width 1)) + (line (pt 168 96)(pt 184 96)(line_width 3)) + ) +) diff --git a/FPGA_quartus/Video/altdpram1.cmp b/FPGA_quartus/Video/altdpram1.cmp new file mode 100644 index 0000000..a482250 --- /dev/null +++ b/FPGA_quartus/Video/altdpram1.cmp @@ -0,0 +1,30 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component altdpram1 + PORT + ( + address_a : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + address_b : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + clock_a : IN STD_LOGIC ; + clock_b : IN STD_LOGIC ; + data_a : IN STD_LOGIC_VECTOR (5 DOWNTO 0); + data_b : IN STD_LOGIC_VECTOR (5 DOWNTO 0); + wren_a : IN STD_LOGIC := '1'; + wren_b : IN STD_LOGIC := '1'; + q_a : OUT STD_LOGIC_VECTOR (5 DOWNTO 0); + q_b : OUT STD_LOGIC_VECTOR (5 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/altdpram1.inc b/FPGA_quartus/Video/altdpram1.inc new file mode 100644 index 0000000..4a7924e --- /dev/null +++ b/FPGA_quartus/Video/altdpram1.inc @@ -0,0 +1,31 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION altdpram1 +( + address_a[7..0], + address_b[7..0], + clock_a, + clock_b, + data_a[5..0], + data_b[5..0], + wren_a, + wren_b +) + +RETURNS ( + q_a[5..0], + q_b[5..0] +); diff --git a/FPGA_quartus/Video/altdpram1.qip b/FPGA_quartus/Video/altdpram1.qip new file mode 100644 index 0000000..cdd178f --- /dev/null +++ b/FPGA_quartus/Video/altdpram1.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_RAM_DP+" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "altdpram1.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altdpram1.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altdpram1.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altdpram1.cmp"] diff --git a/FPGA_quartus/Video/altdpram1.vhd b/FPGA_quartus/Video/altdpram1.vhd new file mode 100644 index 0000000..b2e0435 --- /dev/null +++ b/FPGA_quartus/Video/altdpram1.vhd @@ -0,0 +1,273 @@ +-- megafunction wizard: %LPM_RAM_DP+% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altsyncram + +-- ============================================================ +-- File Name: altdpram1.vhd +-- Megafunction Name(s): +-- altsyncram +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY altdpram1 IS + PORT + ( + address_a : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + address_b : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + clock_a : IN STD_LOGIC ; + clock_b : IN STD_LOGIC ; + data_a : IN STD_LOGIC_VECTOR (5 DOWNTO 0); + data_b : IN STD_LOGIC_VECTOR (5 DOWNTO 0); + wren_a : IN STD_LOGIC := '1'; + wren_b : IN STD_LOGIC := '1'; + q_a : OUT STD_LOGIC_VECTOR (5 DOWNTO 0); + q_b : OUT STD_LOGIC_VECTOR (5 DOWNTO 0) + ); +END altdpram1; + + +ARCHITECTURE SYN OF altdpram1 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (5 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (5 DOWNTO 0); + + + + COMPONENT altsyncram + GENERIC ( + address_reg_b : STRING; + clock_enable_input_a : STRING; + clock_enable_input_b : STRING; + clock_enable_output_a : STRING; + clock_enable_output_b : STRING; + indata_reg_b : STRING; + intended_device_family : STRING; + lpm_type : STRING; + numwords_a : NATURAL; + numwords_b : NATURAL; + operation_mode : STRING; + outdata_aclr_a : STRING; + outdata_aclr_b : STRING; + outdata_reg_a : STRING; + outdata_reg_b : STRING; + power_up_uninitialized : STRING; + read_during_write_mode_port_a : STRING; + read_during_write_mode_port_b : STRING; + widthad_a : NATURAL; + widthad_b : NATURAL; + width_a : NATURAL; + width_b : NATURAL; + width_byteena_a : NATURAL; + width_byteena_b : NATURAL; + wrcontrol_wraddress_reg_b : STRING + ); + PORT ( + wren_a : IN STD_LOGIC ; + clock0 : IN STD_LOGIC ; + wren_b : IN STD_LOGIC ; + clock1 : IN STD_LOGIC ; + address_a : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + address_b : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + q_a : OUT STD_LOGIC_VECTOR (5 DOWNTO 0); + q_b : OUT STD_LOGIC_VECTOR (5 DOWNTO 0); + data_a : IN STD_LOGIC_VECTOR (5 DOWNTO 0); + data_b : IN STD_LOGIC_VECTOR (5 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + q_a <= sub_wire0(5 DOWNTO 0); + q_b <= sub_wire1(5 DOWNTO 0); + + altsyncram_component : altsyncram + GENERIC MAP ( + address_reg_b => "CLOCK1", + clock_enable_input_a => "BYPASS", + clock_enable_input_b => "BYPASS", + clock_enable_output_a => "BYPASS", + clock_enable_output_b => "BYPASS", + indata_reg_b => "CLOCK1", + intended_device_family => "Cyclone III", + lpm_type => "altsyncram", + numwords_a => 256, + numwords_b => 256, + operation_mode => "BIDIR_DUAL_PORT", + outdata_aclr_a => "NONE", + outdata_aclr_b => "NONE", + outdata_reg_a => "CLOCK0", + outdata_reg_b => "CLOCK1", + power_up_uninitialized => "FALSE", + read_during_write_mode_port_a => "OLD_DATA", + read_during_write_mode_port_b => "OLD_DATA", + widthad_a => 8, + widthad_b => 8, + width_a => 6, + width_b => 6, + width_byteena_a => 1, + width_byteena_b => 1, + wrcontrol_wraddress_reg_b => "CLOCK1" + ) + PORT MAP ( + wren_a => wren_a, + clock0 => clock_a, + wren_b => wren_b, + clock1 => clock_b, + address_a => address_a, + address_b => address_b, + data_a => data_a, + data_b => data_b, + q_a => sub_wire0, + q_b => sub_wire1 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0" +-- Retrieval info: PRIVATE: ADDRESSSTALL_B NUMERIC "0" +-- Retrieval info: PRIVATE: BYTEENA_ACLR_A NUMERIC "0" +-- Retrieval info: PRIVATE: BYTEENA_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_ENABLE_A NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_ENABLE_B NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8" +-- Retrieval info: PRIVATE: BlankMemory NUMERIC "1" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_B NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_B NUMERIC "0" +-- Retrieval info: PRIVATE: CLRdata NUMERIC "0" +-- Retrieval info: PRIVATE: CLRq NUMERIC "0" +-- Retrieval info: PRIVATE: CLRrdaddress NUMERIC "0" +-- Retrieval info: PRIVATE: CLRrren NUMERIC "0" +-- Retrieval info: PRIVATE: CLRwraddress NUMERIC "0" +-- Retrieval info: PRIVATE: CLRwren NUMERIC "0" +-- Retrieval info: PRIVATE: Clock NUMERIC "5" +-- Retrieval info: PRIVATE: Clock_A NUMERIC "0" +-- Retrieval info: PRIVATE: Clock_B NUMERIC "0" +-- Retrieval info: PRIVATE: ECC NUMERIC "0" +-- Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0" +-- Retrieval info: PRIVATE: INDATA_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: INDATA_REG_B NUMERIC "1" +-- Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A" +-- Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +-- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +-- Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0" +-- Retrieval info: PRIVATE: MEMSIZE NUMERIC "1536" +-- Retrieval info: PRIVATE: MEM_IN_BITS NUMERIC "0" +-- Retrieval info: PRIVATE: MIFfilename STRING "" +-- Retrieval info: PRIVATE: OPERATION_MODE NUMERIC "3" +-- Retrieval info: PRIVATE: OUTDATA_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: OUTDATA_REG_B NUMERIC "1" +-- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_MIXED_PORTS NUMERIC "2" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_A NUMERIC "1" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_B NUMERIC "1" +-- Retrieval info: PRIVATE: REGdata NUMERIC "1" +-- Retrieval info: PRIVATE: REGq NUMERIC "1" +-- Retrieval info: PRIVATE: REGrdaddress NUMERIC "0" +-- Retrieval info: PRIVATE: REGrren NUMERIC "0" +-- Retrieval info: PRIVATE: REGwraddress NUMERIC "1" +-- Retrieval info: PRIVATE: REGwren NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: USE_DIFF_CLKEN NUMERIC "0" +-- Retrieval info: PRIVATE: UseDPRAM NUMERIC "1" +-- Retrieval info: PRIVATE: VarWidth NUMERIC "0" +-- Retrieval info: PRIVATE: WIDTH_READ_A NUMERIC "6" +-- Retrieval info: PRIVATE: WIDTH_READ_B NUMERIC "6" +-- Retrieval info: PRIVATE: WIDTH_WRITE_A NUMERIC "6" +-- Retrieval info: PRIVATE: WIDTH_WRITE_B NUMERIC "6" +-- Retrieval info: PRIVATE: WRADDR_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: WRADDR_REG_B NUMERIC "1" +-- Retrieval info: PRIVATE: WRCTRL_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: enable NUMERIC "0" +-- Retrieval info: PRIVATE: rden NUMERIC "0" +-- Retrieval info: CONSTANT: ADDRESS_REG_B STRING "CLOCK1" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_B STRING "BYPASS" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_B STRING "BYPASS" +-- Retrieval info: CONSTANT: INDATA_REG_B STRING "CLOCK1" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram" +-- Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "256" +-- Retrieval info: CONSTANT: NUMWORDS_B NUMERIC "256" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "BIDIR_DUAL_PORT" +-- Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE" +-- Retrieval info: CONSTANT: OUTDATA_ACLR_B STRING "NONE" +-- Retrieval info: CONSTANT: OUTDATA_REG_A STRING "CLOCK0" +-- Retrieval info: CONSTANT: OUTDATA_REG_B STRING "CLOCK1" +-- Retrieval info: CONSTANT: POWER_UP_UNINITIALIZED STRING "FALSE" +-- Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_PORT_A STRING "OLD_DATA" +-- Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_PORT_B STRING "OLD_DATA" +-- Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "8" +-- Retrieval info: CONSTANT: WIDTHAD_B NUMERIC "8" +-- Retrieval info: CONSTANT: WIDTH_A NUMERIC "6" +-- Retrieval info: CONSTANT: WIDTH_B NUMERIC "6" +-- Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1" +-- Retrieval info: CONSTANT: WIDTH_BYTEENA_B NUMERIC "1" +-- Retrieval info: CONSTANT: WRCONTROL_WRADDRESS_REG_B STRING "CLOCK1" +-- Retrieval info: USED_PORT: address_a 0 0 8 0 INPUT NODEFVAL address_a[7..0] +-- Retrieval info: USED_PORT: address_b 0 0 8 0 INPUT NODEFVAL address_b[7..0] +-- Retrieval info: USED_PORT: clock_a 0 0 0 0 INPUT NODEFVAL clock_a +-- Retrieval info: USED_PORT: clock_b 0 0 0 0 INPUT NODEFVAL clock_b +-- Retrieval info: USED_PORT: data_a 0 0 6 0 INPUT NODEFVAL data_a[5..0] +-- Retrieval info: USED_PORT: data_b 0 0 6 0 INPUT NODEFVAL data_b[5..0] +-- Retrieval info: USED_PORT: q_a 0 0 6 0 OUTPUT NODEFVAL q_a[5..0] +-- Retrieval info: USED_PORT: q_b 0 0 6 0 OUTPUT NODEFVAL q_b[5..0] +-- Retrieval info: USED_PORT: wren_a 0 0 0 0 INPUT VCC wren_a +-- Retrieval info: USED_PORT: wren_b 0 0 0 0 INPUT VCC wren_b +-- Retrieval info: CONNECT: @data_a 0 0 6 0 data_a 0 0 6 0 +-- Retrieval info: CONNECT: @wren_a 0 0 0 0 wren_a 0 0 0 0 +-- Retrieval info: CONNECT: q_a 0 0 6 0 @q_a 0 0 6 0 +-- Retrieval info: CONNECT: q_b 0 0 6 0 @q_b 0 0 6 0 +-- Retrieval info: CONNECT: @address_a 0 0 8 0 address_a 0 0 8 0 +-- Retrieval info: CONNECT: @data_b 0 0 6 0 data_b 0 0 6 0 +-- Retrieval info: CONNECT: @address_b 0 0 8 0 address_b 0 0 8 0 +-- Retrieval info: CONNECT: @wren_b 0 0 0 0 wren_b 0 0 0 0 +-- Retrieval info: CONNECT: @clock0 0 0 0 0 clock_a 0 0 0 0 +-- Retrieval info: CONNECT: @clock1 0 0 0 0 clock_b 0 0 0 0 +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram1.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram1.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram1.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram1.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram1_inst.vhd FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram1_waveforms.html TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram1_wave*.jpg FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_quartus/Video/altdpram1_wave0.jpg b/FPGA_quartus/Video/altdpram1_wave0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3ab5c5fe19f01eb340d6df91c2896dfc076fd396 GIT binary patch literal 151954 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

UnoWp^Os)H0cAtL+tcURWA< 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

{>`jBnk)Ji|4%m^^6RF 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 + +Sample Waveforms for altdpram1.vhd + + +

Sample behavioral waveforms for design file altdpram1.vhd

+

The following waveforms show the behavior of altsyncram megafunction for the chosen set of parameters in design altdpram1.vhd. For the purpose of this simulation, the contents of the memory at the start of the sample waveforms is assumed to be ( 0F, 0E, 0D, 0C, ...). The design altdpram1.vhd has two read/write ports. Read/write port A has 256 words of 6 bits each and Read/write port B has 256 words of 6 bits each. The output of the read/write port A is registered by clock_a. The output of the read/write port B is registered by clock_b.

+
+

Fig. 1 : Wave showing read operation.

+

The above waveform shows the behavior of the design under normal read conditions. The read happens at the rising edge of the enabled clock cycle. The output from the RAM is undefined until after the first rising edge of the read clock. The clock enable on the read side input registers are disabled. The clock enable on the output registers are disabled.

+
+

Fig. 2 : Waveform showing write operation

+

The above waveform shows the behavior of the design under normal write conditions. The write cycle is assumed to be from the rising edge of the enabled clock in which wren is high till the rising edge of the next clock cycle. In BIDIR_DUAL_PORT mode, when the write happens at the same address as the one being read in the other port, the read output is unknown. Actual write into the RAM happens at the rising edge of the write clock. The clock enable on the write side input registers are disabled. The clock enable on the output registers are disabled. For the A port, When a write happens, the output of the port is the old data at the address. For the B port, When a write happens, the output of the port is the old data at the address.

+

+ + diff --git a/FPGA_quartus/Video/altdpram2.bsf b/FPGA_quartus/Video/altdpram2.bsf new file mode 100644 index 0000000..75c64aa --- /dev/null +++ b/FPGA_quartus/Video/altdpram2.bsf @@ -0,0 +1,173 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 256 208) + (text "altdpram2" (rect 100 1 167 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 192 25 204)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data_a[7..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data_a[7..0]" (rect 4 19 61 32)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 112 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "address_a[7..0]" (rect 0 0 89 14)(font "Arial" (font_size 8))) + (text "address_a[7..0]" (rect 4 35 75 48)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 112 48)(line_width 3)) + ) + (port + (pt 0 64) + (input) + (text "wren_a" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "wren_a" (rect 4 51 38 64)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 112 64)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "data_b[7..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data_b[7..0]" (rect 4 83 61 96)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 112 96)(line_width 3)) + ) + (port + (pt 0 112) + (input) + (text "address_b[7..0]" (rect 0 0 89 14)(font "Arial" (font_size 8))) + (text "address_b[7..0]" (rect 4 99 75 112)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 112 112)(line_width 3)) + ) + (port + (pt 0 128) + (input) + (text "wren_b" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "wren_b" (rect 4 115 38 128)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 112 128)(line_width 1)) + ) + (port + (pt 0 160) + (input) + (text "clock_a" (rect 0 0 43 14)(font "Arial" (font_size 8))) + (text "clock_a" (rect 4 147 39 160)(font "Arial" (font_size 8))) + (line (pt 0 160)(pt 176 160)(line_width 1)) + ) + (port + (pt 0 176) + (input) + (text "clock_b" (rect 0 0 43 14)(font "Arial" (font_size 8))) + (text "clock_b" (rect 4 163 39 176)(font "Arial" (font_size 8))) + (line (pt 0 176)(pt 181 176)(line_width 1)) + ) + (port + (pt 256 32) + (output) + (text "q_a[7..0]" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "q_a[7..0]" (rect 211 19 253 32)(font "Arial" (font_size 8))) + (line (pt 256 32)(pt 192 32)(line_width 3)) + ) + (port + (pt 256 96) + (output) + (text "q_b[7..0]" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "q_b[7..0]" (rect 211 83 253 96)(font "Arial" (font_size 8))) + (line (pt 256 96)(pt 192 96)(line_width 3)) + ) + (drawing + (text "256 Word(s)" (rect 136 58 148 109)(font "Arial" )(vertical)) + (text "RAM" (rect 149 74 161 94)(font "Arial" )(vertical)) + (text "Block Type: AUTO" (rect 41 188 119 200)(font "Arial" )) + (line (pt 128 24)(pt 168 24)(line_width 1)) + (line (pt 168 24)(pt 168 144)(line_width 1)) + (line (pt 168 144)(pt 128 144)(line_width 1)) + (line (pt 128 144)(pt 128 24)(line_width 1)) + (line (pt 112 27)(pt 120 27)(line_width 1)) + (line (pt 120 27)(pt 120 39)(line_width 1)) + (line (pt 120 39)(pt 112 39)(line_width 1)) + (line (pt 112 39)(pt 112 27)(line_width 1)) + (line (pt 112 34)(pt 114 36)(line_width 1)) + (line (pt 114 36)(pt 112 38)(line_width 1)) + (line (pt 92 36)(pt 112 36)(line_width 1)) + (line (pt 120 32)(pt 128 32)(line_width 3)) + (line (pt 112 43)(pt 120 43)(line_width 1)) + (line (pt 120 43)(pt 120 55)(line_width 1)) + (line (pt 120 55)(pt 112 55)(line_width 1)) + (line (pt 112 55)(pt 112 43)(line_width 1)) + (line (pt 112 50)(pt 114 52)(line_width 1)) + (line (pt 114 52)(pt 112 54)(line_width 1)) + (line (pt 92 52)(pt 112 52)(line_width 1)) + (line (pt 120 48)(pt 128 48)(line_width 3)) + (line (pt 112 59)(pt 120 59)(line_width 1)) + (line (pt 120 59)(pt 120 71)(line_width 1)) + (line (pt 120 71)(pt 112 71)(line_width 1)) + (line (pt 112 71)(pt 112 59)(line_width 1)) + (line (pt 112 66)(pt 114 68)(line_width 1)) + (line (pt 114 68)(pt 112 70)(line_width 1)) + (line (pt 92 68)(pt 112 68)(line_width 1)) + (line (pt 120 64)(pt 128 64)(line_width 1)) + (line (pt 112 91)(pt 120 91)(line_width 1)) + (line (pt 120 91)(pt 120 103)(line_width 1)) + (line (pt 120 103)(pt 112 103)(line_width 1)) + (line (pt 112 103)(pt 112 91)(line_width 1)) + (line (pt 112 98)(pt 114 100)(line_width 1)) + (line (pt 114 100)(pt 112 102)(line_width 1)) + (line (pt 104 100)(pt 112 100)(line_width 1)) + (line (pt 120 96)(pt 128 96)(line_width 3)) + (line (pt 112 107)(pt 120 107)(line_width 1)) + (line (pt 120 107)(pt 120 119)(line_width 1)) + (line (pt 120 119)(pt 112 119)(line_width 1)) + (line (pt 112 119)(pt 112 107)(line_width 1)) + (line (pt 112 114)(pt 114 116)(line_width 1)) + (line (pt 114 116)(pt 112 118)(line_width 1)) + (line (pt 104 116)(pt 112 116)(line_width 1)) + (line (pt 120 112)(pt 128 112)(line_width 3)) + (line (pt 112 123)(pt 120 123)(line_width 1)) + (line (pt 120 123)(pt 120 135)(line_width 1)) + (line (pt 120 135)(pt 112 135)(line_width 1)) + (line (pt 112 135)(pt 112 123)(line_width 1)) + (line (pt 112 130)(pt 114 132)(line_width 1)) + (line (pt 114 132)(pt 112 134)(line_width 1)) + (line (pt 104 132)(pt 112 132)(line_width 1)) + (line (pt 120 128)(pt 128 128)(line_width 1)) + (line (pt 92 36)(pt 92 161)(line_width 1)) + (line (pt 176 36)(pt 176 161)(line_width 1)) + (line (pt 104 100)(pt 104 177)(line_width 1)) + (line (pt 181 100)(pt 181 177)(line_width 1)) + (line (pt 184 27)(pt 192 27)(line_width 1)) + (line (pt 192 27)(pt 192 39)(line_width 1)) + (line (pt 192 39)(pt 184 39)(line_width 1)) + (line (pt 184 39)(pt 184 27)(line_width 1)) + (line (pt 184 34)(pt 186 36)(line_width 1)) + (line (pt 186 36)(pt 184 38)(line_width 1)) + (line (pt 176 36)(pt 184 36)(line_width 1)) + (line (pt 168 32)(pt 184 32)(line_width 3)) + (line (pt 184 91)(pt 192 91)(line_width 1)) + (line (pt 192 91)(pt 192 103)(line_width 1)) + (line (pt 192 103)(pt 184 103)(line_width 1)) + (line (pt 184 103)(pt 184 91)(line_width 1)) + (line (pt 184 98)(pt 186 100)(line_width 1)) + (line (pt 186 100)(pt 184 102)(line_width 1)) + (line (pt 181 100)(pt 184 100)(line_width 1)) + (line (pt 168 96)(pt 184 96)(line_width 3)) + ) +) diff --git a/FPGA_quartus/Video/altdpram2.cmp b/FPGA_quartus/Video/altdpram2.cmp new file mode 100644 index 0000000..4895f04 --- /dev/null +++ b/FPGA_quartus/Video/altdpram2.cmp @@ -0,0 +1,30 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component altdpram2 + PORT + ( + address_a : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + address_b : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + clock_a : IN STD_LOGIC ; + clock_b : IN STD_LOGIC ; + data_a : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data_b : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + wren_a : IN STD_LOGIC := '1'; + wren_b : IN STD_LOGIC := '1'; + q_a : OUT STD_LOGIC_VECTOR (7 DOWNTO 0); + q_b : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/altdpram2.inc b/FPGA_quartus/Video/altdpram2.inc new file mode 100644 index 0000000..1909de8 --- /dev/null +++ b/FPGA_quartus/Video/altdpram2.inc @@ -0,0 +1,31 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION altdpram2 +( + address_a[7..0], + address_b[7..0], + clock_a, + clock_b, + data_a[7..0], + data_b[7..0], + wren_a, + wren_b +) + +RETURNS ( + q_a[7..0], + q_b[7..0] +); diff --git a/FPGA_quartus/Video/altdpram2.qip b/FPGA_quartus/Video/altdpram2.qip new file mode 100644 index 0000000..f84925c --- /dev/null +++ b/FPGA_quartus/Video/altdpram2.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_RAM_DP+" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "altdpram2.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altdpram2.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altdpram2.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altdpram2.cmp"] diff --git a/FPGA_quartus/Video/altdpram2.vhd b/FPGA_quartus/Video/altdpram2.vhd new file mode 100644 index 0000000..238e6f3 --- /dev/null +++ b/FPGA_quartus/Video/altdpram2.vhd @@ -0,0 +1,273 @@ +-- megafunction wizard: %LPM_RAM_DP+% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altsyncram + +-- ============================================================ +-- File Name: altdpram2.vhd +-- Megafunction Name(s): +-- altsyncram +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY altdpram2 IS + PORT + ( + address_a : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + address_b : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + clock_a : IN STD_LOGIC ; + clock_b : IN STD_LOGIC ; + data_a : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data_b : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + wren_a : IN STD_LOGIC := '1'; + wren_b : IN STD_LOGIC := '1'; + q_a : OUT STD_LOGIC_VECTOR (7 DOWNTO 0); + q_b : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) + ); +END altdpram2; + + +ARCHITECTURE SYN OF altdpram2 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (7 DOWNTO 0); + + + + COMPONENT altsyncram + GENERIC ( + address_reg_b : STRING; + clock_enable_input_a : STRING; + clock_enable_input_b : STRING; + clock_enable_output_a : STRING; + clock_enable_output_b : STRING; + indata_reg_b : STRING; + intended_device_family : STRING; + lpm_type : STRING; + numwords_a : NATURAL; + numwords_b : NATURAL; + operation_mode : STRING; + outdata_aclr_a : STRING; + outdata_aclr_b : STRING; + outdata_reg_a : STRING; + outdata_reg_b : STRING; + power_up_uninitialized : STRING; + read_during_write_mode_port_a : STRING; + read_during_write_mode_port_b : STRING; + widthad_a : NATURAL; + widthad_b : NATURAL; + width_a : NATURAL; + width_b : NATURAL; + width_byteena_a : NATURAL; + width_byteena_b : NATURAL; + wrcontrol_wraddress_reg_b : STRING + ); + PORT ( + wren_a : IN STD_LOGIC ; + clock0 : IN STD_LOGIC ; + wren_b : IN STD_LOGIC ; + clock1 : IN STD_LOGIC ; + address_a : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + address_b : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + q_a : OUT STD_LOGIC_VECTOR (7 DOWNTO 0); + q_b : OUT STD_LOGIC_VECTOR (7 DOWNTO 0); + data_a : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data_b : IN STD_LOGIC_VECTOR (7 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + q_a <= sub_wire0(7 DOWNTO 0); + q_b <= sub_wire1(7 DOWNTO 0); + + altsyncram_component : altsyncram + GENERIC MAP ( + address_reg_b => "CLOCK1", + clock_enable_input_a => "BYPASS", + clock_enable_input_b => "BYPASS", + clock_enable_output_a => "BYPASS", + clock_enable_output_b => "BYPASS", + indata_reg_b => "CLOCK1", + intended_device_family => "Cyclone III", + lpm_type => "altsyncram", + numwords_a => 256, + numwords_b => 256, + operation_mode => "BIDIR_DUAL_PORT", + outdata_aclr_a => "NONE", + outdata_aclr_b => "NONE", + outdata_reg_a => "CLOCK0", + outdata_reg_b => "CLOCK1", + power_up_uninitialized => "FALSE", + read_during_write_mode_port_a => "OLD_DATA", + read_during_write_mode_port_b => "OLD_DATA", + widthad_a => 8, + widthad_b => 8, + width_a => 8, + width_b => 8, + width_byteena_a => 1, + width_byteena_b => 1, + wrcontrol_wraddress_reg_b => "CLOCK1" + ) + PORT MAP ( + wren_a => wren_a, + clock0 => clock_a, + wren_b => wren_b, + clock1 => clock_b, + address_a => address_a, + address_b => address_b, + data_a => data_a, + data_b => data_b, + q_a => sub_wire0, + q_b => sub_wire1 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0" +-- Retrieval info: PRIVATE: ADDRESSSTALL_B NUMERIC "0" +-- Retrieval info: PRIVATE: BYTEENA_ACLR_A NUMERIC "0" +-- Retrieval info: PRIVATE: BYTEENA_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_ENABLE_A NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_ENABLE_B NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8" +-- Retrieval info: PRIVATE: BlankMemory NUMERIC "1" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_B NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_B NUMERIC "0" +-- Retrieval info: PRIVATE: CLRdata NUMERIC "0" +-- Retrieval info: PRIVATE: CLRq NUMERIC "0" +-- Retrieval info: PRIVATE: CLRrdaddress NUMERIC "0" +-- Retrieval info: PRIVATE: CLRrren NUMERIC "0" +-- Retrieval info: PRIVATE: CLRwraddress NUMERIC "0" +-- Retrieval info: PRIVATE: CLRwren NUMERIC "0" +-- Retrieval info: PRIVATE: Clock NUMERIC "5" +-- Retrieval info: PRIVATE: Clock_A NUMERIC "0" +-- Retrieval info: PRIVATE: Clock_B NUMERIC "0" +-- Retrieval info: PRIVATE: ECC NUMERIC "0" +-- Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0" +-- Retrieval info: PRIVATE: INDATA_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: INDATA_REG_B NUMERIC "1" +-- Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A" +-- Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +-- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +-- Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0" +-- Retrieval info: PRIVATE: MEMSIZE NUMERIC "2048" +-- Retrieval info: PRIVATE: MEM_IN_BITS NUMERIC "0" +-- Retrieval info: PRIVATE: MIFfilename STRING "" +-- Retrieval info: PRIVATE: OPERATION_MODE NUMERIC "3" +-- Retrieval info: PRIVATE: OUTDATA_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: OUTDATA_REG_B NUMERIC "1" +-- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_MIXED_PORTS NUMERIC "2" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_A NUMERIC "1" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_B NUMERIC "1" +-- Retrieval info: PRIVATE: REGdata NUMERIC "1" +-- Retrieval info: PRIVATE: REGq NUMERIC "1" +-- Retrieval info: PRIVATE: REGrdaddress NUMERIC "0" +-- Retrieval info: PRIVATE: REGrren NUMERIC "0" +-- Retrieval info: PRIVATE: REGwraddress NUMERIC "1" +-- Retrieval info: PRIVATE: REGwren NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: USE_DIFF_CLKEN NUMERIC "0" +-- Retrieval info: PRIVATE: UseDPRAM NUMERIC "1" +-- Retrieval info: PRIVATE: VarWidth NUMERIC "0" +-- Retrieval info: PRIVATE: WIDTH_READ_A NUMERIC "8" +-- Retrieval info: PRIVATE: WIDTH_READ_B NUMERIC "8" +-- Retrieval info: PRIVATE: WIDTH_WRITE_A NUMERIC "8" +-- Retrieval info: PRIVATE: WIDTH_WRITE_B NUMERIC "8" +-- Retrieval info: PRIVATE: WRADDR_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: WRADDR_REG_B NUMERIC "1" +-- Retrieval info: PRIVATE: WRCTRL_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: enable NUMERIC "0" +-- Retrieval info: PRIVATE: rden NUMERIC "0" +-- Retrieval info: CONSTANT: ADDRESS_REG_B STRING "CLOCK1" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_B STRING "BYPASS" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_B STRING "BYPASS" +-- Retrieval info: CONSTANT: INDATA_REG_B STRING "CLOCK1" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram" +-- Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "256" +-- Retrieval info: CONSTANT: NUMWORDS_B NUMERIC "256" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "BIDIR_DUAL_PORT" +-- Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE" +-- Retrieval info: CONSTANT: OUTDATA_ACLR_B STRING "NONE" +-- Retrieval info: CONSTANT: OUTDATA_REG_A STRING "CLOCK0" +-- Retrieval info: CONSTANT: OUTDATA_REG_B STRING "CLOCK1" +-- Retrieval info: CONSTANT: POWER_UP_UNINITIALIZED STRING "FALSE" +-- Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_PORT_A STRING "OLD_DATA" +-- Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_PORT_B STRING "OLD_DATA" +-- Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "8" +-- Retrieval info: CONSTANT: WIDTHAD_B NUMERIC "8" +-- Retrieval info: CONSTANT: WIDTH_A NUMERIC "8" +-- Retrieval info: CONSTANT: WIDTH_B NUMERIC "8" +-- Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1" +-- Retrieval info: CONSTANT: WIDTH_BYTEENA_B NUMERIC "1" +-- Retrieval info: CONSTANT: WRCONTROL_WRADDRESS_REG_B STRING "CLOCK1" +-- Retrieval info: USED_PORT: address_a 0 0 8 0 INPUT NODEFVAL address_a[7..0] +-- Retrieval info: USED_PORT: address_b 0 0 8 0 INPUT NODEFVAL address_b[7..0] +-- Retrieval info: USED_PORT: clock_a 0 0 0 0 INPUT NODEFVAL clock_a +-- Retrieval info: USED_PORT: clock_b 0 0 0 0 INPUT NODEFVAL clock_b +-- Retrieval info: USED_PORT: data_a 0 0 8 0 INPUT NODEFVAL data_a[7..0] +-- Retrieval info: USED_PORT: data_b 0 0 8 0 INPUT NODEFVAL data_b[7..0] +-- Retrieval info: USED_PORT: q_a 0 0 8 0 OUTPUT NODEFVAL q_a[7..0] +-- Retrieval info: USED_PORT: q_b 0 0 8 0 OUTPUT NODEFVAL q_b[7..0] +-- Retrieval info: USED_PORT: wren_a 0 0 0 0 INPUT VCC wren_a +-- Retrieval info: USED_PORT: wren_b 0 0 0 0 INPUT VCC wren_b +-- Retrieval info: CONNECT: @data_a 0 0 8 0 data_a 0 0 8 0 +-- Retrieval info: CONNECT: @wren_a 0 0 0 0 wren_a 0 0 0 0 +-- Retrieval info: CONNECT: q_a 0 0 8 0 @q_a 0 0 8 0 +-- Retrieval info: CONNECT: q_b 0 0 8 0 @q_b 0 0 8 0 +-- Retrieval info: CONNECT: @address_a 0 0 8 0 address_a 0 0 8 0 +-- Retrieval info: CONNECT: @data_b 0 0 8 0 data_b 0 0 8 0 +-- Retrieval info: CONNECT: @address_b 0 0 8 0 address_b 0 0 8 0 +-- Retrieval info: CONNECT: @wren_b 0 0 0 0 wren_b 0 0 0 0 +-- Retrieval info: CONNECT: @clock0 0 0 0 0 clock_a 0 0 0 0 +-- Retrieval info: CONNECT: @clock1 0 0 0 0 clock_b 0 0 0 0 +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram2.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram2.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram2.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram2.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram2_inst.vhd FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram2_waveforms.html TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altdpram2_wave*.jpg FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_quartus/Video/altdpram2_wave0.jpg b/FPGA_quartus/Video/altdpram2_wave0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2da3c66f2450140f8cb2079c878a855df0aac9f9 GIT binary patch literal 152433 zcmeFZ3pAAb+dn*ecaVgHPe1S2xobDy9{#-o;0Cq(AwU1LW5>@sckJ4=b0@fU z6!<%2r^v1Yhfkf|Eo$Y#cO*#c^qqSJd*shmwTfH!v5sn7xpkL+??H(}l2QuC6qSxE zYieoh=$_FtI)A~~SUVW{wk=$P2J_=Loy`xy^1 zv$7xN6zI% z_SfZ=Rn9kHZT6=epoC?9~r2wTTMpv(HDx_AGD4ThwjXbz4M+PP@B)LY&Z=Oh^%J z?=Q4RztN=npEb7a~=;e}6?mHubxSms-XF|7c zXL8D?GUFC$)gHWFng3(Y3ycDOW1B}r3CokEvziWR;FYDY95#3JPGOnnF(07Z<$yRK zk#!?V=U2)XLm6n|`W7VND!aFBL(sU(VY3ipXcWNr`zkUKbD*E691sK}NoroWj%Y{j zQ->j$1_us@Yi7*r*~RRimE!gvi!Hsiaf!nF{p%Kld*%v!jWWM!0K--UrEl&*`D{TB zyrXPEo{*5Uvn!+G6C_q4OneJ+mXv}7?m=t#wjeMXoMDVo;YDK)k=RGzzQVlln#eyN zPk5WdE!b{1GT$votmHUxU66Za3qnrVd;(va>RZ%6tncXFg0LnNwjk38;>wC)Z6|!? zFayUm*Ff;@ZesEHDl4Qq`V!#A=;a44&#woj!Auy>p0jm+--6U@krHt=^hJ?Ely!G& zy}LeZG&^0R^eo%@qYEl`y468%6aPDJ__Uu5>I+t|wfsxJSFKRa%Xk-tn4w3s{A2zomwIzkMuowQuBpT^QLhoQhBA2J~Vt zoe-QlR2KS@DrkHOIhnFTT9FrZ~QdaQgm`%E{QFxKfcsn;fbgk ztig$K?FTh0tlv|uC|U;kocq9XBz{gWYJor4E6OwSI{TbUK%;)6pXbZkhWh&#PyBLE zA#qH{Ugw9Is|~8id2`%^KillIX{m_@S(9Q~ocp$%VmVtORUf72k;a^R9%~k^C@_Gx zK9#5U2Xo>5&Bw~Geiuko>jD7(!>QU%$f%v7> zw;=o9OyFWUQmJXg4P!1kZb^a=8wf4+Hz#2o*1T7Or+JXoq62=79C6Z^>6$I%fvi z5Bl+0o*K@&O{CKu(}yBnUaM3t_Om3`ym`^EQsw9`uEg|Z%wF!W?YzAHZiX;Ef1Wd^ zGKrPs%CJx17=pX!&kh+L=Kcz#>m*}D9f97^JMsKjmzC~`pKzf@gvDB(IRZuS(FL;;n zxirVlPCf*uItZ()(9#_(RSxwx%89I1l)hNviRyfI*y`pNqqDXt-X+YJL}?idam}KI zDv>r;v4()u$`^*S?lo@}p)zB$v}4VN&M!F1DqYwgkPG`~r1kp&8&&3AJ+~m|pZu%xY=3sv6va_|nt=ptX)0I53eh zHKe56PYCr+3lSF^7PVcVR{}^spWtqBbp3s%$4)(Cl4fFo|6ejs(B6?SH#8j3@?u8m zx9X5Ynj-xs46gL7$||-wAZyh-yRo8kxoFd*5RW9uF}PJ^>pOt z1(*A2f1_F%vz!rSetoX6Tka#Oue!w3v*9P8D%sT~B?FT^0fuJ8`vdrE#L<#9hOb#a z`U7RmL<=^N=)ZyW%3{SL2v-X4k~a)ByL#tt)3QWMG^A#xE!%s$i^}5LL1gOXqJFqPPDmf>L_6It~QzdLaXay$Z z3sDTUfNpbEaWp%u9V5+ZTKD-~9Tvpgf(Qc0UqkzAn$6lR`a<0Joa>XQ?X#6vT(u{lS2m#{=AB=!z&?ZLx4MHaciFewl}6)} z)}JP^>DyQzbQ`Wj^vlJ5kV9@k;#EzyAbL?)d@;^>0=mAR)yq@J!Gp{SL!warAHrwf zc43U>ja%W%-hwc?MYbUCamd-3sDKpgj8Qur$nwT*?)n}U5m%nJT>U#4qyK*$V0824 zPZmF&^LX*rKR8zR)l@CB$hy!fR(ILUJU2LFGRC1<@oGlkC6%eiRn zFnr&VB)!G#TrH3I=R<`}2gW~^WzG-y=SiJvHmmkOnVeCzVj#ZUL2ciHMBBS7Qkp~~ z+0tEg`5Hs2bgO=}Lg#j6gjLp&d9Yr+fr+ftb zZhFrC=*31N4{d{OS;JRH&oqRJX*hoknNyI|3$C+W^Db0+(`kR-I@#~|F9o?l#tPIl zs4_$K{PWt$*bd`(NpEp?Y0*74r7(j~MD*1eYOG$(oLQ=+bCUS+Hyy@7K2=uRl9Wnm zref=>mC+rDm%vSo;ymwgMi*RQK}%W|$w>v)1k2@i3}O@jb911yg8Y?xwNJbjE{Hza z#KtD9T#WtPk0_tD-*5CRVEJP1!J=*Wk_GPv9!&}Pn`ybbdxM^TGbP`8g%COR$Uebvm~@&BFzd zNe!{tZOtZR+E|897+bX6A#vOyu$3d)Tj(^0lkgfWM;|XhVK3!#{lmuOSX44n)PGEN z04-Pv~ z9l-M&KRbNLHq>KLLD0_vjPm8WtHsSTo&R-3Z%LcBdW~R_iGPdVK~BNo&YXEFa7q4;Y-@~NG z3>j(+90LZ~$*oc+N}u@CMPRbU=m2(BHp7CCxfI9MVT7;rLflak9Xx4P%kT3=ei4~* zkDksn2-OCP6XR=zjkh7#l+*ZJO$;s3|HaeI3Y z$Ys@khY!i!38h_Bx%@Ld~1o(uI6`j8t$`j@h^){o04c> z`kCeq_k1p%sF=Je(j%=2Gxm^dd;EO(s=uvG$ZXS4!{b3iq%VUn^SFgkF6_(kl4XnFCdAe}9bIlZS?}KIM<(O>L`!hBv zS?k3^xS-e`-9qX3qNLVISB2y@YEqtzr9?{gK4ZBW>3Rd@ftT7LbH=kpN~Xm_8zW#O z%Q5^LDX?4bkIawwLkOHD4ZZB*#lSScY|q;dObC&nWbhXWzb_{TzxmVT76iCO#xCPQ zZV&y-0h(&SM8r!G@2agJM7WCaonuPu>-A|E>5p!+?%DvA9ZYVKOMe~ljjX=U7kW_Z zRgJm?`Z7{@P7fDnC_abLV5`SpX^!KaXCJ&*WPzWRdS4`-pAmVvH0Ml*ZQF02d`hKn zC1b3}M>-M)5TJ9A>itnn#OZ$S8 z2-c~4AIrzZMm&#xP}-L-FTA(fDu!Tf9V)*fD`w@^^&wWw>epT0UuYBdG?Sjj)nSfe zsISLP^wkLZv_)vua}?VH#Q}P2K6HSmii+MiiHf(_g2X5?HkVq{rBF-E6RAx73Ny;< z%h)y*w$AJ9hHuFs2oV(A2;3^nsh>{%wgtIi<$l}mE_s4A)-I4!RXpeJ=R%W@)>!+ZMGyOB zQv1}HXY#P^&eWKk87-6XM0RfzXz8W>Yt`?yoEtR|jZQsVnh>=D9QxlA{K#I5XFGH)qhpr6dxSg&&9F!AnaM>Hp9PG`PJl_R8Bq8PSR&^`hcKtm zT7Zv4JV-%hC^Zjj(-Sc}0G%xee`al0G)${JKu)uttHD+rM|9;mFB`vNV@jEU!j5yf zfobp;YT#bd+3nVT%iwXTTAN`@&ML0P=4q8xLXtx&g4T6kMK9IT zcLSbexL}JYs?H5*&)STg!iO`EyD)=DfvN0{T#W!~{Ta4g0b8H3S(j1lG-tTCf%O0< z!rjGGYO)Dt>U5;`p4ZDX@}B^TREa@W?{H?65HCM=4Sa zcjM6`rDOSlz=hhiFSSd8;V&9VoZa=I!GxI+Qg!X|siwMIV_<2bw}T`L1a>rR67Mv* z75Yl`#;gPcE+FDS2O~wp;H6wgHXr9Vw$P(3$R0%d20dC%lT9bPNt45zGx5Ja0dc~C z8F)uMbm`zs{t*@iw5B~@s*6a8OT4%Nj3COyc0j#WKhKj{!uK!KRGjEJdM}G=Nl~rP+)(=2#mRYOiOM3+?UP+{rV=$u4#_N(TGm#?x+kwnSpckGXW zW#zWF>Lt&1N!}$pkR3`78CwP2B$)4;4c3uLZ8APQCX>NQvd-WHe@adUl9hN}_{aU@ zv;Bl~ALw8VjyJWz$n8$-2hs#=0#1WEVpC(Ys9k1CDtU zp`N#rRA>$_ru^P^=R9LRs;jv0O7qe18PlSovFVxpHka>~D!qT2VrP0z=&^!kHmtzX zhM;6@-I$_aU6|y5A~+!DftCApA~4?}rA-Vgo~7@`D4<@vANj}E(9IpT0Q~whp>M&H?oB6IHl|Pp{-I!;_t{99(P-ArNpRu?T2lB57BsFksp;x{2GwZ{A~PypAAp zRfsj%YrgJ2+!Ml8*tTaI!XrLBux=4U-_Y5Bl92)6N36{okTE}+K(6ax!Rm$nCTS-i)MMX_!vP!8*AwVq-iIy7 z{a2uU!ntTHIhhxS1B$V=^Vu8b!dno-Wnr%76pq_9y~goL=hb;(R|Lp(AeNoJ1<^%= zzrR~=_|BxATC}zxg<;?I=xEaL7Gw*8%Y(A2(cpy|FMXG!`LNaBzlH0;Yo2dGmX}U~ zqO>JQW!_=1IB)2@x5F0X*CsFsCm=z=dpW*$d7<~p)21-q!N64P%qTdB@g)ux)U>Bf zxTgdFJsxy=*pcu*5+ zIZO?)*xf(JV~z>r`8f91ymVWt6}WheJ*r_vSwZYW%dqRJqkNvBPIqx|z~+QL{oq{K zWk=MN-d3I_mWF}zp(^Ly8&EX_tRU(ILISXWX;t>z&UJ6#DY52e!yG{6>FIPo%!R#S z%{r0kR{;>lO*+-oFSW3B?l#E=1aB6w^fr3fP%=W&7cR_|#fR&KbrQN`cpuqei7N*3 zi}%lGNnuA?=w)t>vsu*ax=o#J?@^Qg%FIy5V25#~p3K)+-*Zj}0}L;nSN75p!z-A{ z^(XV*Jjqj#3f`RbS)?`;u$g##)V?@4eP`>;}Z%4GlE~bZl zv*S28mrk!qtBUF|&u=QPTxGusFA^0WrJ*Dle4| zYNbM35T7jw4--1WIE6x=5EY1>e5V|R6gG~BbBz6ju%4D;YipR&6Ye)$zAl?*Ee7jr zN7yXj$^$v z1Py6##sd60ZUey+#V*hnup&`Jp2#Lb@kg_E_hAPxZ+wp?b)ek}AUOZwOM803nY>FH z#iru?m#50@b{;~yOv%#W|`nnXBnZu)2{@@JxxF5Yi zV{Yzy!Qh8`8G>!=VG}o{Nucg5%j*S;sN5M|KS;-Vo4_~0Gx#mYsWo2ILu^G3a`R`l z4(~A96BO#8@ZM^Jq!yDwBmzOZLLmzVpkTseC z+~=x>M-6klNtcV zDo+*xfs74gQ5*+}>Ni5A4UCuE*m2oAr3|Ze(nCj`=Q|?kR0 zj9LnL2qR22&JQ_Mu~_qHPXVLzmG_NUn3^&hrTqL|INR}(VY3-OqS)+S%s) zSMJV9nfFaqT0sD}4waPSF7fko;H~XYaLnThv@?kJHC(kK7i=47NU<)HXbV841lwl8 zSpq?C5x$U~lD}gR%W#V--0(cN3}@VoO6G|xe#DHxIXLdIEyytGBk#xtk}JQCD|Yw? z?f~ZSCnuD2`)#Cb%TClc$0Q1q?{%X~g-dI0SNp>zXc_vqdZ3ZTQ;*Y2kClHkaUy%d zm#YPq>tM3M1&T>4J^J3+YGvGCt7`gplLDdTpbz}nQ0D8-A0CyN|7a6vg3Wor~5ZVL%y0l`1FLXnx~f$ zOPPFJxFq)kQ1POz z<#ST+3kuIhg1~hGU8sT$U}?@BbTYDf3U;j>WJlih9To5mL>tYno~w!k>{=Yi z^t%o5+@tgxyj~uK_YdF=SQ_PtQ)%!zO?3^P1m8yz!#XN{5#&YSjI{-BKH5xYs@H-a z;ic252w!|Utnh{k~fd;uyhi#c2Cf2~kE2sn#>598>MFMD0re={TN$AWJk!#zWH5Oh%+L z(|f={<1!xcOP<;N07k6t+gq50E0YCN4TRa*jZ4m`I~9R^cUB^Mgxj1~7s5U`&p3xI zN>rkBz&w9`J^x|IqIQ5wFJOx~UIzr1pvu0v4{6dR=i#Cl0YKtXpCXkjF8lt@BJN<# zcWf2#v!}DFunhY(q$plEMXg-t{1aS zbI6#e#w|3B$T9YH$&;I+`BJ0PevXAT=%U|;%y#KiR;xOE`6R9}-|$yC#(d+C`36`Y z+>T`YH{}~Wfq!3Swzkv}k%r?->cr~=g=m<+Y*?Q_RoMFDODJX;KQpqbr+HgEd^BDBEkI3?!Ag#J5xb2kW$GDIPK3+baOo{7;g`v$gqJzKt=btyCe zu@}hZiEhmI$^zFz*jl*g)joXQZk5RE$J&%oL6uIA3J?NjP40WkHRRCtqN1@e>_cJb zV+YhF&Lszk=vdnkE(d4H<;j^NhKT5Qe%zB$|>HQos>JeiSJ$hbHKbQb|MxS%`NAHnB3 zW6EsSupBPx_9yLEy{>tOIMOu_V%Ijh&|;cTyq}KAsboJLNiU~7Ce7K<^=M&eq`oNu z@7@1uAflvb+*d1b_gg4op4bvM87BiC8UDEv z+XgCiP$>Jz7Nh{rJC0k7`0FB@Bd~<`m+E@G1xabJ%XnWUtWPc6PoUR(RFe)c7h(Khnho^*Nszen9Eo=TMtgUl8x_!h+a4CUlZQMw+FW z>g~zt(WHH7Edmndy@z)gz&gF^TP3B@(vzAF%M#-Ys7Kfbs{@|^8Rs8avr;o#3JASk zOam#M{z>ptjbL_jT)_9`&G0QVH1?MuAfqjU0v{!Q6F_bHx==jNWT6v?eREQXg zAPMu93sGsZE{Mll)`=+hm-e8QsViF$36S!ZGE)`FV^ZudnL!Lg!<3jJ6nX) z5fro$+sEn!OLf^LKu)o402ay6zkb`mp@Y`ZLh{^=F9Jwy!V-7TiZUvZOk~0QUsPY_ z3wI?I#(#ZMnV(q$PG6J0d%9fDp{qSA?GY@l-tSRvcDVxp)t4#EbV>N?tKl^h0aTk}r z*}^wZw^#wSY#mV3jd3vpsR@2V|GQ)x;{#4^D{_GZ0vWHdEIjtJD=@uT z0IFQUy!}`J0BhY6n}TpQn7ss0i+@z5<_SMIuTS-MVe6lT^1oN;`riWx(@-(Y(OH`r zcd1&SY6FgTt7c^`bqfD(e=s-oeJv|>VI^G-$qfNQeONe`0ns+N^bPJ=Fbbk=ajm&^ zc=60Qyi7w>-n)pndxY7F@ZwQhjlH6eJ)}^drhrcBu3M0=3K11zKTRT8(f;&hHXci#$MMb= z^7dbM;bAnFHa3Gn4K#DE<}zOo{1a#O@8H3z={N7Z$-ZP!f$~SlpNoeI^{n8QozH2v6us z3m;jltf**8KQM>%uZa^F#&l`D%R2ayO56t%n=`J-xSwQu6G*xAg%TFRS}E%>elvDM znSc0u&E+v5JH&J#j)boOgdbfru?ZxB5Gk8^PhnUVQhfS4lSrhfF3MF;V z*@?~Bq-6i;9=`+XU(*l3UsS*uJ72O)ICSpOvAr8%T!rcY`Y@6e2SzBbC*WJhh9buR z|2@8ex=3skm<_|Zhuy=tW+cXGUMp`DbZA9RtRpzj(VVO;$WwEc2B=y?yXcz&t4tC! zkav78f7geK7DYgSAsi3Wk?152SA!3L2ugGA0PzNsU1S4!PBP#`Kp*+weGz;0dMMQl ztl%Z9??QRHKm6D#-V#rk(-ECFl!-eIGb#d~|MBwxD@J4BTijz%Onu1xUata`@}YM` z-W?REweN2^1#Tb=mWy!b|Gg2}3v-V`Yw9--An)LSKX_oBXa-rxJ0MJR;U%iS?&V&@ zLa{6Ae^FEk{NH#k2X^3{mZMlNXKWjP(0KYH2{3IE=PUu{-c-^H5JtdqdpCFou)w*dB>?m-ug&PqMsT7Ki+g8D|LVs`eQp#9z?Y#U&eZ|9arGEO z8P+GH6v?~CZZ~GKd9Oy&Pa{$^xSE` zE=Mf+geV7Y9eTzV%3egW{=oFpS4=Uxu}mXi1LQQA9|{`VRQEI@|J7_C{OKk?$1;A| zEF#U^=k5cO=6Lou@R^5A=-+d$%>SV-f}=TN*SgVXB#?z1BEta(~WZol7GU(WGD zvxeA_xxQgT+>N6;v)4YnEiF>TNYza5X&9K?iy17pln{?@KDu~@f@;vTbL_vNTwOf9 zU{Iuf{mo)&@ak_b)0MmIiSc;Y?SpmDz3l3^>lxFMP{RYKZ&oCB$>nNYyY?6cHf;4fGr^eDDr!No?z}XWpk zsxWUh)BQN0f0GzUY#Ra$cn)AhJU|34k)C7gu}ss=0ymw1jkzjQ>8XZ_K=cGM4kI$i z4Pa4Q^95K3tJuL{YYQSaK7n@u=8#A2c;P z+4c6cX{WhzkCfjtip6gW6bsFvEL}#&+6BjRMKHL?e?E^lK6di4B7c#R<$<*G;PZHD zW~VKR^C(r#|8LRU5x$LM0~g_bf$K*}JK*fY+$gX)fb`eWKb=3Jo@;M1T97Tjp-kcJ zH&5S*z5X3E$BFgWHW%&YO|W{qCy;y0Ss1JWyuf4pIK)`{{$^bVLpT?32JW=%p z=pr4skM*@n|M8;SRoI*@2s6KQ+->g&6Z?D1ejvC#2<^Z5NK01Zav#YTnh-qZiZ<$p z`;uaF>)X_JUybJ&Q{6&{VqC`;EQdI)+0+yfmzju`!XU$H#y_rPkoBDYn%W;F@;BXB z6HXSC7c~V1{CePP>0mQQ`{uQ`V9b0S zBg|Rin!;;TioxywL{`yDfB&>0Yq38%&|l8&dzSu{2!qnWpJ;jOb|}4SV#`J@8sKMh zQ#bLg&}iq$!OYar(YoX!ULQs^-e%~8TE*vFS#`^7=gr5OQBo?4=gzyBn`&KmF{d10 z`hxt=>P78=Pvm@`xTISl)zU{t>Z~4_4y()_8h`w3D1D|~akHoJ z9WBIOXVlaPdA+bDzW4$|W%P&vMmEwa!`Z^nLasy8&*5@ol(W7fWsw}Wsg^5gXJ`me znAimHNiH9TEV7d%h?X2D{S*L|fO`vz0gkBj3E?#EDfR*3Lna$%xk_wkD||07-KK|K zXl3uFx2@Na*m}^P0rRePg_csnFzU8}ja#ju#`Bu0K#Ac18)zJUp?N(ssuq47G4~Q} ztdX1D=ucXBK)6N8hJ`Dt7)N|PbL;Ks!%F$LCvi5-*DN*W0c0fuUiI}|uL0+!&cdrx zfg2Kh=^T{v7!5bb77ssuMP1!PFaJGW5$uxxw*mGqhxAq4pFRCOavKWa{q0`^&o;^4 zZ`%b6_;#G_FOe26>_I@9X~MC?bAQQ}+rt|HP5n_T5)=eu>aIs_sPOjFflD<|um|rd zud4>^k~m6d5lIY1@OPE>V6bxF9z%YFkC50$c^@ht{VTQ1Tqbpa$4iR9-w9C(OyvCx z7%_SUJJFyrz43>W5c_8_gCN5EK%;nnt@Gy3AayvFN$5y7eSH-{1#mB0_g0C~9tmsCRBdp9X z_vA=I%_VOtj^U1_U&+-Zl(@B2$Y#uPm`0eao_%Gx)?EyO<;~;@%ggvhXEGzmQNQ1k zlBbhgc)>397?YrP1Jh2k=6uShWy9?S626v)`U4TcT^<1*ETXio_po8my=8{H;@*!b zn$_jIf7X5LXsQ<=t9q26$~SZ~Pm#U?Ozb9>==tijv<51k;mUQH{I+o$UL4rgojn1#*2OKx3npZNjWS=n*zVP;P%$^ z*ielwPK|6|crIT$!BcP5uP=tcN*8C8bcXsIx-dk(a?9BfZE*B6*l{;UDKy(_r#uiN ze_Z`LQ2*OmA=*7{OfP^D{*`n+_^#vs^Qk^MJDT$p2x7s>Lx!^Kz6}{2J@NX)z)&1u zVYuIqG#qi17Kir?js)`^pG3?tU#K|Dlq1$3c%r3eJTRW8(m13Iw$7lu1;fZey-$r+ zVo^THEj#@TRR>^K5vfg~Pf#vQZ#csj;4?DZi`~aPx7?&r1VHV19|uC0b_KNPeIV7N z1qyugMZos&9qjBF!yf$X&AD7fj!DvuQ0RX5wO3Eyxl5{6TBRKyNG(#bE7{MV){FN>YdrSGxDo9Lj*(6s?pt<2*#MN(Rm(ChJ? z)HVtst~4p_V4BWHX32!ocp3AQu6kfnfjNJ|GM1)4;gh%`9FLQE0=O{fi4t;$0S|`7 zl_fhMgQ3*2zb<-Q{ot&jAcZGC;ukTM!$y#^X!)lOoXmhp>a{P|LoA6M^y(Bj)qb>B z0WO&?UL&Z^^p4R?PttCXf$~Fn2M-qL+^r$SN7N^2C9W>TN-cKAR?fEweWD8k6MYm5I6B9S z?d|8u&W$MzDNHdX@q=lV3G&e2~7qm0_M>BBeYq!i;rQmv=0TAJBGAsRF~ z&Hb(89M<_+i4{jTWf$CI&lbdg_BYbcn-J{7TB2YGB(sA;_eD0lMUrr@g3Mi z=)Py{(ABJ3W}ZeX2PdFqq2bCFPm3-D?A7t5@SVYg4>e9J9-B_H(6*;*ge-YHohElI^mP6%pxWg?>2h2@b2v1c|GG!_UN117c zd#*kl$_w<=h)>jFq30o$M{6)wO6h-bfNbxwOmivq(w2BmNjIR&nA4e6Pz)LvI^)_Z&w4 z1N!Wf`Xp8LCId!b3Rbk`5Q<8^t-@ez7DQG6k?nfK_-i-RR#SJ+J0+8O;%rRf6L%^o zPYU~uY4!1-zL?!?YBJh^=WUoBOE`O>k@{y?QY{RkIr>WX@J$UWkv@5|G_Xv1eJ9 z-~@Rps4&Nuti_g`0K9*0I#<0n9)55&M?EFtSaN8Xj9!zJ*OzAen+btDJ%r@E`%$(~ z4QhlFRmCpO31+;(D4;JsXL%QR7C8Hl@ehhJNF9Mf^Ad8h^%S*`MH^6Tid|z(GsmhG z*y-o{Zd6XhJ49b}0}}d)OJ_{&@k$M1U)TLZz*Y+*KA8(< zX?bUK+efZc^%LxspW2=b<{Ut!q0ggjQ#6he%xW)so~$kDR&QqwNr|)GTxl*w-m`gE zguVNYTs_ZtG>anAfv*+~RvQ=4rWs^fRw5oO zlKMIDj@;jZaIkE*mE6V2l#{OhOOZ_6fzi4Gg?88Z^>-bs(z!bD-A#ycRJ{%Gzz|$5 z3J7M>529>Z4dvL1@vwdLJ!n&gnlinOzmo1Wvo2ILv2>>)i&XM)c%G-uzWpS3s8BWy zU)J(sirH;RS*%GFHks?NCtvZ5arAmE(uh@?{Ve{>tUI-ZGM1dny|R}$iTDB z$D{W5Q++Sk6PvuVTnZaQoj&D9u^ zR@DPm;gyj}Q2}%Lbg-&u$KmqYM=;-pZ$%<7j0$n;m zIB;==Xh(zt*?6?kAnZ)>2>K+ohA4!(ubu$qUzJ5%9`Z7;& zY{73aSAj?DBTKF8xTFvlwcQ(JXStjrt}6KDF9^m=lU*T@(as+gRSNJ~^euT&VLFu~ zseIN$2RetkoiZ*B)sT+Yu)n3F&ob0wG15p0q;ErS3RuBN!R=hdLT9BMVsRaWCtN6& z#=k-oaT*RVgbu;@g_F3Jq}`f(nw(Vg_daSb&s|Cqj)Uni5|4ej$^z>);DVP5__PYm zUqhS2+GtC$wS7z^KTzFnay}}sJz``gmma&MeyyBq^%V7}jTX;|k8QGG!i7JLprYGz zd!E_nzWX+G(rLaf!kCD^6^s`BU=q`$!)R6~yQ_St#qk3~S2ibcVp9((^a)ir($#VT zdytgMbyLWyWi%sSXX}ieLPCK#H5)Trt2N5S93eIe?u2c><%f~ZFk+o@bnQgFyI>Zo z(gZ8uJ7m*gc|TL!LFEB!<+n15ZPl$fX$`aHQWZ}n^@@(*O_$|sbVX+F+LT{X`;}mR zuUcQLOg&xKsk#H=&rf#Vj5S+x=M$=W==)oBS;1Val^eJkd*>&gWU_PzCf61u^@L{`jl7woS1MTW5PpbPVZbKm?0Vn_5 zwZ4@_`SVdXzVIw0&i857*Ysc8bbf`{3BWJ06yvWqohd>@g-am=8o=kr=kAYmm(F93 zu4%8wwP! zmUVB|o#2jTt6Ku`WvF0_I>3YI2cpkW54pV71% zlFI-*!yr2qed@_O)!(w{u7fM{30gQI3o*>${&j@y%3h_XzwZTCoS=X!UU3RHPP8f{ z1EO6zRBTOLmB^rGdw3x0>je3$E7(wo40^grw4zXeJu7BH` z1eY|Fn6W6VZ|^xG$$L8pG9x33mTZ9Yz_pMlX_KnPL9py%+gMLo=~2H#S^V5c8VHr% zcy+k;Mb(SiIG0C_jX789>*|wCi|@%BdwhKW(u%-Dv~U=^fqu3HnVQX0p|ohCpzTs` zkENH-It$0Iq}u$-@_9Y-k$Z7AaC~G*lzW(pwqXcMJI{w1{=!;nC#GN}Fv{Rsm`&<> zv)3i!A9oC*{6h-#GLJVrOu2OY*qmMW@scj-n3^k-Rukc+l%lw1U24Uif#CGPPlaoA zIjekaCwmFLb1f?3u~~|mJvV{#V~Ub(j;OYL?0qF0yxzlCK6Awq0(alKUDATJ%f=Tb zW=3F#Zxq43|MpooVH((Uz(sh{fChOB@-x@2$ghWq72)n@*JdY#KH`5`J;>YN!xnwr zq72-_8+nugSevHmL9`Fc3+BSu+@-FW3cviEs?~gE#G2Lod52qn)UDIc|re>ls_aAskUZ_=iqd5U;c*S`+-&R!m$bE&0?e;|p?O>)yJlDMU4}x*C)N{Mz z_J#J39w=Lv@*9WDodeZB1*N)Nj|*aUQnBFm1+fkHaq!$rJ5orP< zgk~h84lsZa>75KR2muihkWeI}^u9%kQbi0g1c*u%fe4|DAU%Mflq4e3B$4(CA$|{g zf8Y9@v&Zk8S?kRHeP#Iv$XX!0<$12>zOVbbuiL_WOSRSD^e9JF19FK9Xh+{P08Js3 zU$}$ZF76mK#ab}|`yp=~w}?6rhGXFkC&1RoS^C2BOWi*TocvohTLDz0C)g(GW^2wX zAod6kZ98p4&GoON3PzZ*W)qJ9Wp|MkZB6i!B%!Jv3VR4njVl%G&@-{e25M+-4(-T& zi;aHt)IA=a-`8%wClg%H0NsvH344F`chiN60P6iCU6_5sPS}RcZeu89>qibhr06%j zH<-+CPS+6nfD|2?miB8t!d6(CjsMsf3OHQ%{HcTRm%;jx`b_kG=sGWJG$syDZ?e~G zGzU)5l%(*f)W}0jxxIekhKSMghVtyun+VMk?B9^PF()E5a02tqDlA+a$2*J(+yj7H z8cm~`e28C87>c%qf(Z;XwE)@9Jq!xtHzW0@(K6VyDVHbgJ_iyr>7#IPGLi1c7qdUB2V8;alr_G9bTPXT|!@;R=O1)xzXSDYr- zGJbUgfqc|S!ahX`0blUe2$TqvJLN>+u~f5)F}1{Bi$KW zGj+;}wY`zL3R^7jqee-NfD*GTD>Q`zpI$=Q_cu>eU<0i4+M?iwil1N7wRB~CQ=Z5S z2RcyA7ls|428g8Qwi%fSiOC$lTJtzq_7KrnOv$eN6UU({MiZAc`ckjfHV7K3xYzLd z6}?ZH$bHQG;qkS?fHuj5OTkQYErPVu>En5Fx4j0t6{TrD7oWa$H*nR+KdvJOD+sR< zwL%+5J^Fw9V$1m;%420@^*@8dU-GOht$j6eR$8%~6bw3}RI=(mPPGn<73-td*bR zaQC?m|BDW=Iyj%N7- zAK<=wAHw}StPR@}DcF?WmX^&GY-S@{4~4cH0@SOl3u3_ba}1zPb|{0;hT?BssmvY- z2m5LbCCV{@0;c;!IQ(q;EP`$#$AopRW5oUN$mL^6eGbq$-8R(UAQHp4KroI(-?seJ zXU8sT$z%t_uZlJfYHy#Vx{j>Q`kS|I{9Q2Al=UfOaW=swKWv~`FbC<5E* zT;bEI9g!&Jvg|li*I9V<=?-y`%31&tRSA~m=!*k$?&3ME?(+Rn%7ho%qmf1o^EZ94 z3G6agxJkcR$1mfe^=Ljku1dgW>}@1s&`=rDwTGVHZ@uF)KCez<6veE&!&x2CC!XALxe??rRQbb5 zq`tNl6mR~%26robKbi5SPuP^9AvW$a-j~EtWG;(h|2Bx;4{lC@L6(KY5bA|O?CZpc zQ2KN7q1R}i)M?ar=CWDzB54TMIvx$3vXt(OUz1!55I13HXu(U8$;O#iuMzo@s`Ii8 zKHX>b#I_BU7-XbO&l;zxl*%^wx_{w0ZD4Jd8tQBFdH>1omB!BRqDyYuw_j*KcgQ}7 z82d`atGB4;<;vw_yh4dY%cgx7Pw2_aiez7sT$I}~898y+>`5B$iATk^$nk8xh0X?z zG=y>xeK|p5bh9V{;XqGCo`ZC~=u`X}@d3@U&huR9YN&>(AwHjzYhS`d*I`dl$NLiC zTQE^fGn}Ou?J=515BP1C)tP`mRdf;}%{TWnVgUDajxFy3rQ;(VpxY&;4D)4vSHD8h znrg`D5p;dyJgXqJDK$Oz0WH#m)$Pij%%PiSOE(h?6HBl|mUT}@8=aVfxHJ9-o!H0l z5xP%@r|Hh{z$%h}kzSvWhL>ff{F}jGrt+ha2a`vt=e8nNdUK9RXGw0UXtOr(HbQ8^ zVJdTuskI4>OBD)Bru05&p+C8o@#^ul)&Y{6P3JEPh;F$AD$Yl_Z0)gSnoZ1$!Oc>1 zY_~q^ZhrSk)vo5h5-rL`!N`H3=EL)aGDH5&l78b3@d#6iHdxGN8sU-OiT2Y4ozxzA zMp1M~KyrhCvQBE{gZXA<2<62@3;1a9ODfcj!fzNb1ih(ujN}r6DL-y{_V3IAQDxk) zv8)eB9#3C<{(ZK_G)iX5jXNmaW@0-eI76X!r;EG{VxObm=ty2~a&VM}k8;Snw1Y@t*nIDO9!$P4?$5=R`STZNipuV~s`D#{ zoS>};T$fEdW(QbyuZGO+JmxX{b{74R>;hLThoeT(WsqMK=yHY7k8v1K4Zq9@fWk_^ z#_ridt}7-WD3Ep06>v^;uYcir>;irTu66e|al4LQ^aT8n2|m0cOzy7+^|h|`Vm;d! zUz<$teH~gm!KL;6s7^f);I%mtn67ZHye5)#FE2LL_ zTWs;psm@m}5X~McfCBhF5IAQ(7{>rBM_XU9zZAWP{eU&~+|+?J)P79ulmL85m0EZ- znZet7!^DOLzk9K;mq~wrn~iE|sB53tBbsMCY88SOah>+OYcK;1<5Eg2o5U zNvg#1OASwxPSsbC{nd}wVT2Eo!uY!Kb)!EvMwDWijQG}%x`iw%Zd{$@S4#DNh)sIWv}KFc^d+ZO z^rp&2FBU4XMgTD_0429@6`pbjS+hy2YJex>7OdwzN7jAF{a6%;pRYyxJuV#C99^>4 zwP{(;QziM;Bl>j4v6pObV*>;^YB`{)$jX@yl{>%*VW18|)U!j8@IbbNYc!qXer!rPr0wHj_Sv zxB>fZ@-Rqyn`QfO%z}%ZX!hy&w)E6OamsLYlNjPushbO=$V9cl_ROgge3B!GFH2v) z@fqJ=guw)ak^G$R*4@$>4r%hU@oTbP9`oyp5(N*0?p{=Z!LVVS?)pzgLMDRRh`gyk zKsdQ|%Q^;G1RLKWd%S7Li)Hc~M@(yH!!eM;Q}epnA)=}dGC{^uQ{gG7X$zfWi8w#V6k)N4a=3J8LKy0n9;*){j z_Nel8>~bm;QF$@FvOB$fsFSI35jcrreW4_1+_CXmd$*W%<`Y#R8!-nVXLyN?*vrH$ z=c}K{DY+n|j0uh)L-uG^EoUl;^0(kA$SA618^FtU6`MkTztfSYyZD9Yb>R=6Kx$$J z!~qf-Z@4W1|Iju|tP|F!;-Wf1<|dmpUo#6N=BvvI;e>eYHvw_d>sjW$VUrTc$tB>m-p2Sf{hVTi@^PmX7Y=TV&vSK9R<>CgZ3sYsZ^3msyfzOvEQd;)^A z2<=hwwC0}e5;E|Do{E7_0PJ48{&z>`8+CTW+W#kAJwE0Vw(|0wv&$KO@z)-y5~&ZK zkmIS0Ux*APtF|+y7H6B3>~7^+C@axYGBT_)tj*?h$d`I$sK>j5d^M?;?p^0SNo_6n zYmM`Wp)!?Pt3CCMt1%Zbv>4wGF_p7$QCpg?r7~Vwk@ST}fU*TTLIxTmL9Yzed|Hm{ zy#V5lsGg#yg7GoIVH`Ksb9xa*pW85&`38YW8$nI^-JI}gA zzQz@W?lDhQ?4oz3Eh*F_qbMw766c&JX+Hc|R!~Iw>+s!S0Ub!mg~GqF&bur1yR=?y zBBVu$I{IxC>Wl$GnjEy#X z1H079+l+(H?*ebmPpIQv${jX^=$x|$lJjQ~$D}o5j*ykjEOV_=te@Y(9IYJxnYC~= z{duV{8_dYXynCA}K z3IF(HK7jTz^mZ=p!=&LJ939Vsec{nsqsy@dNs8;>pi6Ug(oKjAgg5E_Rq+bLm=na#rk9z!PQ>gc0qB58!6LKvL?^L3((;9AXfwA zb|G1V5bqbBdz(l)s1IB!+SE-4-DsG|UBE_h`)ac|yC|9yMCc)572Bhv*>PC`VaEyr ziI9uiAm=~2d+Rz}A8E8FLdHBk%u(gt)|L?4 z+AHiP<1KyVr1Or&2J0;jGH)kCQiXL7VGFF$4i@96_^cf=aXh76rCik+8 z-i>=l!y|H7gtk7Z2_L!rh)|4Lxie_fxXE!~fcXG61KOm#iAz-Ac=pGe$9DeJYY5;P z^`|KC!dG2)YzFB)EQc>V>I>4ZqhzTTz}@`iu%y;s?UX2C-P56R~VekCw5dTUsN8-Cz|1vTj8RvGIL$Z zD`)T^dS!vcz6!N{uoLtXYBzreI(xdw0JEbb>Yn-}_75v+NGPiDUC0$5nr?s9aJ% zS`#K7d~1Hv{*25(m5R1rs1O_lGf^O0l@1$dv*5>Q*8Y!L%Ntazki<2Of0V+OzsDZ= zR_DPgQ4+sDb9o7hF}gU>ceDA=eHF06ad3%}^vco|Rbs7ENr) znSgz*>xKG|l?Qne`^IS~7zV>c?Hc8(V6~`I!Zpuo++5sPGcnSI@vId)w&4@{Ydo#c zd`if1&R(a%B;m@(Uszni5TZ&6P(Wc(ZhOzF2j#Qw`g9yfYQ!rWV2m}*K3Y7?c#e@D zu4qLF#g#Y+CD7BvsC3YHYfpBsHP5szIh(3vkmYAbLTGzfW+@r<;!V3w#2lG9mf;_P z{MxfA;Y#7wL2F70cBfM+F6RZ3(>EG}`^pO3L7RjftJe?DIETO*&6_53-9}-Yi&JYq z02m0(;lQZBe_jUN&ujk36?<@i--NiPEY+;8@s4FZ zjiXjM7xlx?H0|)M$@eZ&N%rl=!Q6LzC#Q_M6AGGMQ!pA{q3@+E=01*6T?r6PE?#Q6kb&gJpO{ z(SL0M{qqo6W9_+|$=A@DDfbtz9`Js? zvPF*@?UyUI$q_SAEV1_+cM(GEwtPr?IC{EFL0Q>MEyy?jjzfcCgjP34tNV#zpZ*Kh zv0YN`Nayvi!h`Xw`rLk!b>L>Fy2=5PHC$zgDCd8PU@hX>Yn9bB^_Ar_@YPq|`n5A? z5_0K?g0XvxbSkEc#2~*8X}hL(xgj0E?ki&K}GPEwV>Pbm5;FbIM{#l^9$A6|o+ zUs3xMfAhgeW~KOEv8O3gmt8!kufacJA@jK7#;9i|a!z5H<7$wR)6Do>lpj`EU*|*{=FbC&O&%VY+?YUY4P*)^78Apo-mada%77`{uOWE;g7zUF29+z$|Fa2Ev#(o0~kd!Wpt(nkhla7>*IpOlQ+Y|orPDrS~*gN~t>p8;CjmZXQ zLIPBONb?zMa9$+j{JQ2Lo%vYG%Q?s))(q=d>zAvhzG$~EDN`QVsL&-Ausif?V+|BAh_y~8|w|7 zo23YfW;*t{8_`h`ka4#Ig>8u6$#@E;)4zAOD8*_yJj3xto@W<~++;C3uV;+66Q&?J zQ1N~;ymnf|>{-*uWnkg>6{t>${A(9cA&#SM0$%tR9;3eLWvQ;f)W~0dt4G0cZl|@mm5YWNoTordpC{P-S6`<~; zzBU*tQSQq3JDYu^K))-q%sOA*%BZCmxR`58yMOg~`15h?a-GEC@_K~vFJ zmgt{94uZcHb}YOE22n2DhjO3O{uxrpiG1Oa4&_!5xW4~{4p40VN?C$bVZ{3f#c|7}7U-GUZZ2`o6;+(-8GhqwBd3 zbt3tW!?*el`WalgNng@<0qSk-s6E&ShJBq5iR9NT^Ele3pDXLztT=)=CE9T3WduX@ zkV?ns&uqboSF&=n74YQ$m{_J>M#4Nw0XOjL>#%xahZyk}j73YGn1b}}idId zL_gmj+`xS$DKYulF+tw@)nGN^e|S)2Nz0r{$R)&=WQ;x<0+aHv(sz87b!flfRTVBx zlxH<2zL?>PUkVwKP} zxX*Bu*;*Z;&b-w0L*wRt;zhV=oEQ|>=|EexPG9|?!oPg3fj7RI^4-E09x;RzeL2zj?RaHHC3LM-5Ood;D}#z0S&P>5D23&O z@?g?IH~BW*&=Xjk&0L{VCWxpI6!n3$#ll@u9~CP2H+*&yUb$ z_foA$32j$9`RFVt+)mYj?4r=6Y*lQWdC07$Y`9SR1i>ux$gK6l8OgIk*Y23={98~Y zo~s$K`FGs=Q~wAqA~%5h(`IeaXHppM1qYE1!jeBSDIY^V<-|66Pk-T&nOgx$V>UXj z(F5-?X-aVQjS?RXru@gLU>3s@)eg5^+{Rr^eLo$a+dbS^eoMdP(wrZy^}>sx`05t} ztu_QFqlUX?!5(~Nx)&m8)~QAZUm8u|L;c6r_0`eT`tzsSufFG1pn3$d@w$mGufCSn zi@dBHVPt%zc8?ICX^|K^>pPh={duLD9xw|=){rNvE2rToXuP-$w23d8#cu>K9Jzm(4?95iyOtv*Hm3JAK}{kur7e%077HmWr2k`;)gK5-fj#JJAt(@zYf92N^Rvko3ixtR4f z&s5?1pb5z(1}iUUTq!R^l~Iicu5Y##?oF3-l<>x}(icKhMo9KppVk7E3&{m$cQQTp z8g*G59bf++9uFW;`AX_62enh?&j1gvWerF!{`SfgFoc^Q$GxxkCu@58&u74~thyAA z9J9dC-=)P+l{NamW(LxCAX!Q(@}Z#-^PeNq4R^l^Jw9AqvL zOBOSb%vVR<8KsWIE)vXYjw9x1sl%DY$13ak!P%WsROP)G?Ey-=IEhGg$RD7H*&R^b z%~Q3AXrb_Py>*RvYju+`4x$1=u!@qbLA-|GUI*w3T>(ai3N8&8v^OEvCoU`|2zC9RdZAFx< zlTfNBD)_aNCS;>LvLJNkNZdi~?t1>?ZI+pSXF+9xzIX^TkU3)sFE$sl%%3r{Q??X( z^k90{(h8L;sPVNEViosCf}E8O`J@9W4>!4}Ws0NU%=d+7W+L=|$dKQ&`fuRsM{Fg`Hk?GJbIhh-2dwt=^*GBf?fE{*pCsaMV)D16Y&nLakP zZqDM~q`L*7LH&1&o-`*XP4Tucp%!YeU{o~UoZ+!(#v#JecdTAqY=eMwb}|qRT2&1; zdb1S}%F`4P3jv+mFad0|qeOUL{9;c>Q|X2nHS#A4`+eSh%!b^4Z3`_lTL93bXpcv) z=RbA+%go*R%_Fr0Iyp|FP=hU-c%U)Ybge+8b#HKL6h`DM?fKzsuj*N;p>EcRdk2eCPl`V ztG``9p+~lp{S53&rk5hNbf>2hkaQ7NOz&FB-yd3~@C zEj$fTiQ?B$CG7!vz8T6}JEPXrIacoNP)hrK7{fEUdCC86x9AIaa+<7;)etK}d-q+D+ z@zduP`}V;Q-@#J6{AA-9=Ba@F*gG%WWu6bh^NJuxgWjt9nDL&!4<7t^Fyw}O>-cDj z@Q{m3h5M)zYRUf~HJ3i*Js6zoKBgW#8*P_&e#;_x;yQfAJC(_vh$~^qswvVPQX-us zs7sgRM6ub+Ke7qY@Hak)XKXSfJ}pv$@r6g+Pba)Cag{W;wjE^hlsh&k z3zRaPg`S{?mB?hoZV%lwP9O=IUB3<_A}iueK>D2?4cfn_qN4zb9D`~dnG|5vChFc= z0qq0s;=|QNs_mO5$q1+IoMNX*tUoYK;tr=@@Q<(^U0iJ3xOZ``(Z=z-(G}MaK3gV2 z$1qC;8-6bY_~!CuKAj(aB08cjHmBbj^H#++#kVU{-}-Y|zEeKkJ74eDu)<&F*!y?w zjw84zGZ3;O{Mi?=4!mikBr4--zFK<6`@25g*huPb1KLT>PaiHmvBfY|e)&+QJvtoH ziHXvxrEvln%YQp0@AQ}!DPMv;hrVIFiV=M1mur&pj;&T%5c=SB8u`W}^6NFZy$j=) z@O$b?ed;vdjy+tzI)xdvuN#UamT**P!Fu*@m>MrA5C$z=n>wur+%RTD!QdMyog$$`U3skDyaA(N7hJ4NlJ&?Ir<2ZE!VDVAREnG7Q)5}`kEv6`GMw> zwR53Bj5#S=#F$FtAieKHId-hhTQvcqeh!>ZJuAv8T5)!X1cd}5-`!9Fn@nQ4j%J5r z($nrNK3jR<#X3Zcu1Kw9cALOVL=s6TewVI_P8kP#Jy5g~=()NkpUZf}xc2fwueWol zxRfPM1s;U(vXpR&f@#EQ@#io}jHfc!Z`|$8se0jcFUmjH^Tabl5XjzxN__Uwcu{2{Il_Q$#;vW_#k<4N-16QomC$#NO8_Y*c7$qV}+^5ZY&-vJ1chNVToQxpiRu2g|fm?g5^UG>->zURTX2c=tghJ zm)c265AL0DKgI6j{!}5t?Uq;sA#}xetgfb{#!zMvC(&7PJ6mIH3QSGiMbEl=iSkMH z6=iW3C?P#sgXJ=jpXH${?#uEG(3FNPdHv`?(z0PDdnyk7$$&c`x9(Vt+V%#8m8_jn zYXX#aA=?j-i%)!tHbGjjOZ7D=TI~x@DDexA$7eFPLNmVSY7r-ijb68A7jbK)<^UY; zIQtHO{}R;;irW2h0;JcZ&M5sITiyq_v5VUUUwGE;8%jAmu|jc;@Ahr+bmP|K;Q|_* zY^mk#JFbdfcu1C7e1GzKlsa&YUg&i>8*ndSfA^+*(w^?yQVv9KcCtNouK!P7j8!hU zJTj4$Prxu12T8fN zgSNA7t_gZvp4%;+2*#)bKK^7=QvJ!Pjqsv%Iq-|;ha|zsh@C$G%Kcs%;596G6c+x; zw-+HM3Z5q>W#`iBzVKLUT>xc`mmYDzkx2VQ=|r@s`R zz%)!0cZgM+EVk}+C9sv)rwhh3|6`!WQ^S*37y!B0koEMXRQ^}stCn>Q z;GyBMbs0?R#If=~g7t;R6G{d)M(OiW_uP?eK-j(r54g4JlAf@6j6jCMQ7Lj&!*KD%1eonw;cQ<*AIF6|k_%`(AvDI-&y z#2u496o=!B+}M2c1sLG(>Uu;5_Y-r_^b2soH{pVLY`9Mfz_AE}Twy=@!ZWoH!2Rhy zOyxn71F*(XyqM3e|2)v(92j` z6Rt_4^F1lY=e!TgwsGp!%oom9RBfMTi#!}Q)xS{SWR;nzsB$HEt_yh-cQLA8Zq+7g zKPaQ5u*ty2+UTmB5Jz$A%zUnH{137}Kz_^!b9532ib7I7slXTq2)xIiV}pK#hNcgN zwrvg*5)npha@)8Yg>$6&&`=FZw2z<@`)CS^dt;nOZ9rHpNLR$LZ!G;`ReV}b=1Q>k z=g?0dn{A&w#isnWN{mwCz=kT|ef!WTzp^Q8ks~xbEvVQcEATw$e1C{vHmk1q|7l~&u7Vtr4-zV_Cug_wI?S}|F8DPzYDyp$@@ zs5IAKdngo$A1|3FmN>u?NNsv4r^D@(MvKuYdd(HmG~bpXl5vg7y?4ddSwHLYWzI^S zy_#8al$IMf;0`FIe_7VRp7lSjX!pc5lg{*MjU;Ix^1M-rRb=q~R^6o9S*S1+X%mRY z66oFukyei|d40ei;Lod-YM?h80Q)20>}C~e$2yRNtd zWN=2hpad@2Ck?cCKRJMA$^X0|b|ymnhrN(BTTbT7f9sVRUrn;FEk^`DJTq-$BFcou(RPjhmG$treQoBSdv9nAS5YG45Hue#x<*h_EFlFDIuAw@6DwV^FH)oqn zM-^Zyv1XeQZuVP1b<#oR!5HpkdA)786isrii;I$ndN+QA!k8|Y9U>5MkdYcby2=1iq~;98KX$5PES?%P)T&Q3f5PXl;`=R3U8Llt|yiSds*%enN?Oc zEp04oG~(=LpEF^j(`)*^=lsYL&%t9?+8P3qu4n^~>f>x!5?t`qg{Lgt=t$V{6AK2Y z_T@cqT%G#-r{9=E%p1b`OS6sjv6brbKfk^a|KF`Slt@fTvTas?-&St(c;+L9rX;3= z@RVfC9TK$991mWwO^$gu{kf7cBU$5AY5rSpNpzaNr${%u2;FM?;(b`5oqL+{G#krn zb@5vHC4M12^L=UUR$0-huztL96*Xvl~eZ>SFic#xr}H}ud%gfcdgm&7^C>bS#Jbs1V)a$$Zf@$e=> zHuRZ|M2=mlk@`K7=_6lhwc0$thrV^8f5&VfFaK-Nsqr}wp2c!@;USdiGj?biCt&)t z3OWh7YjwdQsMTR;e7j-TC!v>_^>~u_oO;3sX zjpR1tOE5N*3*!3cG>Z3i1QOG(2&ZHedf&564#ePm;k}*MN12d0S;>Gh&Y4HMH z_2D$Xp*FSv;cSILe`=IEqtQajGLxxS_Bzrs1Qa?RzO^PAH>qU$wsaLZ2gTqe4vB&G zoc~l>``1bW&?3&*I+OwXmj7H`OX6Al04%O{Y_60ZG)LhMM7p!$?~vuskq%A zrUWA$@L1XR8j_K^Y-F1n3Qb#%lEq3ew8vMa zEzrNQ3lRBCjCP+0RJDGR{i?Q5v}q(D>ZqT!qhIqunm>5sXG*c8bq{E?+;^l4Fnvfc?_-Q;e_7I8OV}?@NZrQV0Kq7K+%ki)J8A1;?FGJ#O8yLhB4&F zXi|N#p^2r^DT&;}zTsR#1Z(95MW}T2K1~~)j1*K0_7n1B|E>E>^4U9PBkJPJvkfC? z_l(oNYH~*Jobp}DO3vb4Je7eoy+q|osryafR1H+%MaNdpAx?z_1_sjKkPjFVMZ*`J_s75Am^yG}6_sYN zHu_ryf*+5aV%D`5jY-dNLieOrKnv3qv6IDM$E2<6auwJP>D9YgM-7i~$5}I#JB=jM zZ#N4`^ojt6cd|zFA#AAm)2abul16-(cM&}c0moXCj_Vw2GP5Q143&~P3S`dbKVE%{ z*VRodG3O&PM);NwlyzK7)mLPUvbB`s4ywGm3LW>lT%!9*6MJ0T(;0hNTf`c)<96+Id6ULgbj8MV4UN%ft1ksvf3H8drm&K37766A=4 zkT}xNcV*bF*>5bXFaN(JOtfi4gMTZ9_%mv#yg~sZT54*b0#=dAY1P05J+LbUAJ)AreEqNIWZL=%0%)+MP~}YhfrzdELfa$3|Y? zts+*&P#z_@#~v5gSZGjtglHSQ^nuH3J^ z9kivpb#Ad1d1VXsrn!5)@A23+scVJX9YA?$`MyDEnBbnJvWo9BtI@L~sG1>Y^G24! zGa1$nDR-)O>{5iF4Tw2eyW>-b*kbLV$tN z+2S*9H_+w{PVMuH*S?nKa<@yQK)-WWav<6Zvr5dncw#xi9^TCj5 zkv?z(8lPM*3Sh}%|hl*Wq6uGg}YDY#@9~gzMoBmQ)U&vhiu=X*8 zUbGMQE^7M`a`71i+TfiC>sWFSA$w}RQawa*ksX$*)Ky`YRTg336sMA<*M)boeE3

SLq$|`1`5`54LI1>xScyoI|`5>@wj#c&N596b^d969GDT)YzTZp?nAR+8UNE{ zrJrr`wHN+&VIQ5D_=>GbbPxxY48L8CmAS4fXkk_=f6}I?it2#p)h`RC5tN?kwQ2@r zD{B}uyO_fnizC?@5(Q_|B;xga@dAds5`q>9f_(M)eaW5)<*YG#uUpjKCLfQ-{X}=X zzI_4WwDh&SSS4daAa>-->6}^(mIF#mRuS+++LTp-)NU}yOQ_T+aW*P7WJ(qsrMubA zRI2m-CWhOomhtO#+lh}jQqVbO&eJB;F04z-xLD`d+LYvizyGy{qYk)Vv-u+uKN|L? zyU)5yv2wU3%j419?jo?V*K%>*Np>gtTNzL1tVt=`AJy?Hw@K-p7nOU9)}ssv$B7J0 zG0byYyd~z-in5XR@WiZG)`gcVX`;ki9o|JtVed6~lkh1F%fqi&!>p-!iV$Pi;O_Z8 z?RGl8JF$gMYQ2(P9c!kUsd%u9JNv(DlM?>qCM_gO+LFv;>Psv5hFQZz*85QFGw9cpNb^HuMG;`+irU5Js2cdwk)HX~M z*NSIvY#-w7L~;~&dQ!OYNgD<#xT>qbZD{2L=tQi=06&OAbkTK_O+pr!zu+K(V_-Uv z9PTI1Ru$EdAB`n#*)Y+ujW$fT&`t{LW~BXN)<`rNn`6nkUQhu{i+z!Mq7Fbai)5P@ zlj5xFv4QJ1LOTrJxVTm(icO6v+?r%Wq*s-UJ{ygTQ~*+_t@ZmrtvU-_U$!q5jRCkQ zbitL?Kcf{@wZGRcQK?a}Coaxik}R`js$_W?+<8aX+oIoPU2W~39#eo?1TGM0k%Z0W zuy#EIyTH5UmbxNqmnB5KCC{rF+->x7hRV29!LzB7mQB7{rwjB5x}GgKjM6MPSF`Xn zZQ{BPz+(~T?RIk1Hs>s>E@5^+Jp?%}L60g5UZ50L>HkWp!it6Q*%?~qJD~_X{#fN9kI0v&Sekp+ z8bXjB!0Y26=RF$fSy5Bd_2IVLc7~(cN5%RrgVPZOSnpQ!XE};5Y)d@~+~^2qyHMGd zdX7J-8*f&rwNc-YS!P^`Jd{8%z>Puk`A-Q6ZFZ$g)>-<5?pJuxA&1a>d%JUry?WNA z{8ELun%TRJvMSkHiF)x`R0k@qjAN2)JMW=|7?Oy~QCH-RBkyZ4928UPxR4*9x>bPH zSW=K#;hcP0U0Z*v0~lp8mKPUFo#!(?xQnx8HWhjaTW2{MLra`94>5)C{zw!Z560uX ze`XQTI$l{^>?@4LwPj1&QwS#Fgie)u`v_b(lS7WOT>tu^#;f)^F73#u_+-g+^sy%^vZ^BG3MJ@cbs|DZVZcS@~ z3oH@15Ja91w=oO$>nB>)NZ(F13yNV%$#cat(kUN47y>0d9l7Jfw~7Fg!9Sp@>e~-Q zZVwgc{$7Dk`*%)Oov^4IV{-F_UETl+lRJgev^qi$t50GP}%qR7Sr1_p{1o1E#fx!Xd~fvzGWsOZoZFv!c^;b{!X= z=)FY^KX$ds_c&2Kf03Q##~^J9!1=U24A#nQ*Mk}P6Y0CRAC?s2;_U6SM-MnopgC^a z1;O2J)^7Z*lk!DBJ)?c$@j=IK-k>CCr)qUHz!HIn+EEr~RJj6jv7>3LokhW*4651a z>IVjGwOcj8`zuHo)&GU(6R`0FN6aDxbXusfvYUDz7s~48_lZbn1^Q~U^mzALb$VW< z(aJ7rDd=w@;Ncg7atRh@*OKp~$culzn6W~dsjhNY@4;MThtZVi*r2$w3)E@7c*Cx% z{iMWKP_154pJ3J{$K!|v(E2FImo;ybg&Cp_5R~h!V?60aUyYa2|Gi-l-bPSBT~$3x zrM_>HF>g(juIF4ol0Wx_$D3Jpt*cO8$Ud*e%=Uee#>q?@3%AKYCp&>6J-XT5+@x$8;^b1`q{Qb>TF;m`D4g5r8+aH zkJZ&RIL_cd2n2=6l&Z>mer4vxSeLe-4><-!OZ+Sfs*b(qb}4rB3>z7j(^e>#I|HZi z`!>YIJ~9Pog0Le7_}9uf7lI*muqKDNue`N}AQPpTXFvuylz&yPP71i~(PFY?OH%08 z`?X>igMpxV(b&{XP5a(FJJzha-aN^-zXC1jT(sXiM2T^tX2By+TZMYO-K^lUp(4y6 zgtZ3xa|Xy~@dh+sW4Lm!NXoD2Uk}8-g0SSE2ZSwM7zk;#V4PEzia294pErKRm4%_V zcL(ZnkL7!UExfGJ_Z*@1Z^mNPw{tUfo229dQ_yYYX?BuijrT3=&GtybTb?A^+Yk-S zuBM3O<5i80y@pI_+|B}nEVf=cX*S;`8t)*L)W!@%+P4H62gbAx5tBRY$VueI6EvlP zn1vCd&Dc;<&~=2wdPZ6pSIWuR#r2G52#y`P9x|jBVj2u==F)Bm&)RGkM@h`BbAK4r z?vwsts0jQl?@(7GdsuD|e||o=9<- zNiy#xXAkyZpTqIV?Xwq3V(Goo#B;FU7&2SR)U%a}T8!5WRfLY+ym~nn7-ApJw?kfS)zds1dI(dyB} zVy-c+VtrY8B}<2`Q@r+de4;!Xy~Q20>O)dhRn7epj$a{j)w#V5UX?`kSkUp;_rP@? zSFO>yZ8+5?ZG4aE#@hybDTT37ewia2wX%6>@nXezj;ROUZ!TB<8 zu1BUM`~At7SU19mXj-n>BuInca;$70xs@Fc z%8WV+C-uieVt?jm!YC<*f}F!pJh7z$3ldn6x63T()M{d`kJqID`XF7z_xk3q5)uwq z=lanL&TdOIof8x8lW*HGGNgb*?Gv<@k{Jy9s64K4&n_;YX+PO-073|Kzr|Gj2-@Pl z@Nlx4Ktr8xR}G(DLIlD{+HP*bd~Afk_xQbwp%c+~p`>Q?T>7D$X)Oa7|Gi(XhQ*2X z!etL0iYrOJKg)}?7-&0-*VWT``zsUMWMiVmghk`_Mjf8N>gSGx>{wHs20axi&Th38 zOxP~0XWMu|^S#~e!*30OB{oNLB0>aHbRFvIG@VUU-gE|rhMY7$TA!5{rS3${U{YFM&~mk6j5`Zt3YOF*MnMy0YzFt5q1&TxB0$OT|0f6<7ES)wdEO6+CSfho{#fdELHLuL99(NYTcKzZ%wj&xu?IFLP#}IH+Qr9NEU5)QcffsKcjM~ZdM*3y3)h|5P81l zCvyue%b`_Bt$cbF37KodKJVQBOP49Gamjz)5G2^*D-lb$Qp4)UTzql`TFQ98@}mY@ zO*>WV2aLQFH>EQjYVFSIorU%0@iY6Z+NQnkdE^)C{Zdta#iQ_-6Dy?z>7bUG&mF3V zZoTL#Ft~%abTkk>WT2HLsW*6q*T^V{@}GCV2}dE9m$P#YZoKs+G1JOV3z4kM1@9>r8 z&g)gL-9Af<)Y;Ut2yS(`-ujH3FF}(M7Xhjz*T5Azz zrda)4&|FxI1LdkCUwD?(zVP&BHzqUDpgy<@OnZ_&FyIe-kP|oEM)2%~b#zTlBRk;5 zRBH3?exq*gV9~ywrlzSRgdc0;N7hKe>D89w!LMrsokuKeZ0ny62G2aBEtgj)Za)8) z_XcJUK{@92toM0`(r>PklkRAMVOuMdIQYHe+6$-Edq=^ntt%n01lC(@{Q1VmckCd2 z53xQlh^S*ybQEq8^kVb+J$f=pPS|ZucZ36HJxe>1dik{LCH^r7ymczdJI4WhvfnTA zF0;zucFJcjbtf~C6t7G4qq#W!yT87*%AM96yQFLQyEyD*3*)L}T`WDaBTd2MNv3yv zC2P%>ef?OL3b*UwcB&7Yj1J$hbDay=$ST7L-l6uRw{9Os1RaBsu%)4cPAf7Nzqfa1C(} z_wdlA3i{L4##0Dz3-R*-m<&0HDRpwW&D>#PD#igW8X_TqvT+^M>fJFn>Jz8>6m4?z z$+*kr?ypX*{cDhK4lVUm7b&(cwNKv*e@^Zdve0BLQ!HTb*@qvPUeAz2_s>{OT`=V( zD2D5~J7jrO0-Rn=+64P`*EJ!P7qY*1`gv#hI$nKN>yz;0oum;m#}2Fny1o%!REqRG zxcyL}P18$ZpxEXy@&2k%f^CG)CqIdojmFWjyB**x5@rjbraW$tM?15N>dWo}==6T4*cU^$DP z56U3bUo|9(*%c_QPIbpqJf?Whh_IG{AVE{pLQq`!QqEbQu*(|iVdiL(MBEGJ^1~jd z6s4@Lovt(ihf!~E9@IMJya7M?cnQ%=BiGS3Rq^@&ey39KooshEP?=C@0^4VcfJT|lJ}O2OYb3$0PtqQ?H5X)( z0xC%;L`VQhA3wjJW}bXuuvje;8w^}fS1!fvPD(@`^6|lKzrr_fEA!6gmiZDY9XRCgk3pqudezt%!6%*p+W>? z-r)#L>{DGY)%Kqz6aLBLQw&giZR)WcmW3=~4WAkp!vw-{rg$-ueEEfH@@dR7egvIh4* z>WAuigIl~rc_aQkR&>u_m+xuVO_5Rq!z6C>5WO8#mI7;qBJ%A4La5BsEv(^Ip*v&x zeOmqpxCbGvYJvufnF&yV3ApgAO_=^tyjHX7^hhYAX7t@0ofh;9;z-mCR~+&JzN*Fn z>su7WHlDQ6KMW$re~GNzy`ieG`07~6%L3LJG6&q%OMfr3eiBucP?~sOR`;@P0nEwn zzHPd$+p)I+5u7+tIi_o~=N0dbX=8rbtGzm1SLoEhA^3qr{B~LPq=xf-Ur&V~`@QJ_ zUJhc`_mzzK46`3zoH93iK)N6GLk*=`nHKc}BMBGu>|eU~!CHurd#>;6J7<0EN(S*~ zupa_f$n+E_wDJJ95o#o7{Scps(|kS z!B-owql?#8=O*iKtNlUhL;Pz{Vdu$O^J~(awIdjnOYB>q+Fj{r)(iGv9}YWnAr=j7 zkupb_{l+?Y`6Zv-6!3)z(&aMM5j_| zf7gt?h)j}ejpAw3hm&$3q$C>xyScGohZhD&27>@745IJ6td@e20Hr!Xg+{}(wREoh z+)d|98gV3QXlSLKv;*uh6Fn`ewq=Tz*Ixe^rNAbV!4+7}As^|#RMI^MwEUd3%&nQ7 zCiILMo0ezQxcQ|oQ6drkBjd-4L))}&l2*l9P?nmvd%CHXL7tntmO-wguH`-Ju6ZMk zsr%2p6)e=#b7JlxH=N?k+r`RvNM(2hzrS^H<+!x`Psu2E(XJ~@dkHZkRQQsRJyFyX zX-#}zV)=TYIG$*cYvE*(;@IBi-v00LW>I9~O8G7JZZjZ&Ex#UH&9;ndQO2~JuwBSw zvabS~v{;6dI;qv>E}&dj>~5AB85`lv1amkcO8CJsi$+FwfZ6j}H{-<{b>SiGx2Hw_ zL_7z@kK_D7BUtCENc2s#i$!nut_p zKIsG(^+A^yDVNOz^n1;!YQQ~xZ*mQpP#x(bbhYEh2BQQW&jy3r-z)24wYqIwS+Lwf zl;=E+k{NEkMtbyBK=zL(4-=egWrUs6eQS^x3br0XS*w$lLdSob{Lm|$c%Pu?>C>$m zDsA`6qwMRM1?f{^aS{+LSSXAVlDb2kSbqDnBY$nJQyf07Q~5F~3Cz?lKd5m|pSSC- zlw5ejV{gls1Ls;|E0F-@D)x1%k5t| zLq{;yEeYt0Ap1(=DEjPl=aWPW*Vkwx=?nLdAcWN7_x<&x1gTI;HL140nc<}&dVjc+ zU4K;74II2~ibR&7NwEcCqZRwU$+PapK z#{!*TlVMX}uO66LY2~`~Z(rIx#1p;n2z|PrE5R|@&i9AfFo;RxY-_YV3+!!?SQ0?* z1G*>64%qj>8K*h>S(9TUsOT4CJJ`~(I%(xVuuK03|4gebx3aNZ=*@j+mqkBd82OwX zpLjqx3N}lf1y!b8KJnzLgk%5hrA*tjP0mJ~v!Y%cRPPOO_9@nqQb`HtKA@VK-w%K>Bps6WP9|146ZZ=|cq+CO**r@Pm zyvW63`*p3Lbj34I0;~0kse-lx&vQ16e{cf3b*Aa&k3^ueU*UF8j%ICcs4RhEk9RI} zwpHNH2tf^W>Eupf-K{E$r?+B<`*Do@F@0p)-jTIG%X}ZtkB;cAD$k3)wsHNEx~3zuwYN$odRpTMN*5+E7-4d7y<4v z?yK57Mb>b808k85MnzB>1U|;K>_J~<4<(jf!Lc53c~L=2SDQ{x1pEYG&*Z!W*^9Ed zo7$a4+vP(`7I~)x+%rGl>;?WZR(h>|{0d1s;5cS%)yyD9xArN>jyZ&g93lb2JA>i(JL!lV3U|vTw!?S5orefB z>e+%1!aU?kS=ZZ?amft=DNTyyzS%RkRu?tMqV}+3jr{>-%!4bkx(!)P{EzUWx@0vX zZwGJr73%e_c?FZwqL*#HDurO3BEb1-51W&cW-wn;x7aVKnexe5i*NrZiHDv2d4>EJKSVWl z0M+s*)KPy=sqiJrwLGaRzoq>M0P_L{XUAa~^_Ci{eljEp( z>Zn6J5q*SFdP>;OV5}^dDG+=<-iW@>ceH8*dEFTGpuLhFGTg3N z>-|{Tluz*4gZ8v6kr`)jj@1mDa(2FfV_}$TNmmy+Sb6tXq41d6O}mdd{`||48IS`U zE7o*9&O5`Q3b#0_mA8-+mi=b&kbgiZ{BfV-Fy6ZQAd>0lap}pE`3tGiHb}YW;uHq^ z;D(E@d6D9n65VRrdUg3}l&C7jqDA9ar^dW>fs$40bWL!!Zg{Ay^}`{#{eP~Ya}F(> zIgzeFEmSI$YO67ZLQ6`t6vH5#<5)3FABp4oiKn&q1%?}$K8-ol6f~(~**0od$N7~c z3OlrcI1sgW9>Pk)v{|wspq4WCPvGSQxV=%uw*>SEaW@2UntTMtn;EYSCPHqZV0-50oMuBNQtH8BNuLOGk9{xh!wCd}5*e;OT^7fs^gf@% zv|Zf*E22));P!$73;@!X(YW8iewZ!r>tpXus%`3k-Sjv>4**-ud!IF5Px|=vL(jmJ zi9xm{Qu)C*ytEIT3xz^ODWltU6bz43Pu__^?#_8}OR8n8w(|sA5vk)p z`x-N%h}+4`Df%#1Gy~^P03^=denSyYsY_~7XB!(fRnnoB1mJe>*}=^+2d3MA_;gJ^ z;KLYBZ9;R!n`-)-3^9ykTzo@hTw1x??50mbLEmLCtDK>Y36L6_+;+IVszIt&H}Y*u z8kW8pl`GuDmlt~w0MepxfZxQ1Kh#o<9Eo8T#!q5J(X!8QFIvP03SRwXnF`wr++|qq z*YuG_Ln#)0&sM?J|eFGvP1Hx5uL3+rzWgp-h~2#BEAmh6BoqVBy>e zgo_JC#^8|qWHg-BNP%;)LNeboou*#qa4OWh7;rJI1s{kgbEa)vnHkXPX2{(i0GM!h z%zc(uAAyKLcYhW~XxK95XsX6eW7;ORL^(>972CC#MK}PCA5~#0IcL{NfbklKZ0;$aTp+hsr}8C;CyrVwT6- zdc_jESJb>LLXbTsmo)E7g}=(TuqjS_!I*869(p39*z?rZ_IZw#Ik9A-<8YLIFN>pf z4+w2l1LsbICG8L0DM8hw7AL0KWio@$yGd#b$uJ*|pKSMRDTt;F7Q~Y;`VJ74+^P4{ zk^KbN%(rj-J1+BSa>`BSfOBSa(@)xEta%zueEKe1zTFv{#AM+TL$P~J9s$bjQHT0M z{P@&%*QIKzxRV`*R-hE#D!Yi2KUAi5;Nb;%L@_Ef2S;y2w-Wy(&M&zucbT&*Y zR*Dmd$4_=^Bxw~`Xh|wxc=?#V?&v&N3_IU&qc}e9)Si-JXF z$xsoi0pP?aoE6N1fE|k7#y@V$K=bWJ?pJ|R_M5=D4F500gs(zE{AS*K?UblEjiN?0k}Iy*5W4o5Ag-;^VJ?xV$s^A1ea;&*)SZF&p_1SW61_&J)y3Kg|5w$ z&t$Za*fxf2T5`+&5z7gLfUni;b$J?OC;A+VkPx*4Sg{%`97O9CpfLZi+>dm=b{E{9 zr9Ykj)NNk7UJ5y!3Mq7de2GsRN)5AnJ4O+Lwq~W zJbkC%^hfdTUWk`H-re2T1n#0po@%;jT_@-bRlIx2)g&>-kG1GZRA=rn)Sxo(-H9)Q zs+du--PbqwQN5SjJp)k*+xDehV3(OtO$d8UFS5W6$PC@}yzEMp7!W#1guvs7Dj~#u z;Y3@)rrK=V}Fbe_^>4UkKqs%XR|WZHc%E}-~9S|VsT5cUx_1f z^?OggyzxaI$TP>NwPicRPm#F814p)Q6c86M-dnpl$E1~q*OYtrp&BWek^Sjy&*jh~&}$Ht)Sq+D*9o|%?htm70N4IenNaM1k4aB8qlqeT)tP%j1G5)9G>dypImeENb(?hW2v8WQ2s8pkH5edpa$-8W^Ht zq#dXBZlv>Ge$c*LWQ2OzmTK%~V?!{iQSKv8_%a`rT0bqJ7rO|VrV-49<*k*4T+&vv zC6#RsWCU9H7~X#{Ql41c9J+Ee_ zLHoiks#XHl3P31U5Y&nT+?Ze#F^<8poc@OMe@0!lw>K znjHYeR_@R~@$B@5a~6cY{rZkoU`5~fCJd}s3pT9IdI$A*XI_%OYXF+rE>%xxB4>$jNY`n9|j8Y z#~kPK&4zt|9C5~1m*LPj>t;j;VX%gE1pfXQ(^$I-Pl0HB+inGaJ zRMvB(<@L!v58T5mvr59EJZ@92!~YAWBr^Qv``-YSR=zUL?;DdlxUq>QeR6=Kf_K5R z@v(y$|HH~A&aqECKY{UW5&j-~CvOM12+1w7fGaL~W(Cd&j7;W=$iI$y17F8+;K>|@{XPdxEYfYvPoko?pC?U`ZdZmbppOA^o| z#fHBn9wI*0K<0@9xG;v0@IsKp%L1HHKXD@G+%V(rs>->|40&$67?!)Y1G6y%`6?CS z{SI>eZdSEXI_c0J>BXo^MxXKtW*=bOB=_#|u+jj>Z4x{LLO{ksTgIkfX0e;eBeMX8A5Lucz#PPv)tYS2 zwkH;I3>%)Ydhqyn$RT_8qx3cJVNKPA*3Ch%atxIP2Z?H~>y2isO?Rapbiw<1 zU80R?vluf&LU?EL7vV&XGO-#%J~Qj?!%-Eg#I!vDMZ|o# zbnwr{L0K^f1>pz&im_Sk{SH)Df~V?mchJ$IkKdw=`?L%&iyc=gTu{+gwQPqtn8NJM41J$O&}Hm%nr$F8JAi3P_1R`(^i(w) zN)iCcgQRRoD%6dY(Si9H@UzAm-i7G`%1q-}s38kN%T6uRE@gB}kT-uurJ2%0unAnn zVJ!jAC94`1tu27x2?$2e{jYK0#VbsC7iBA|r#kS|UQmE6D!v++(nl~jl2};bs3dZE zZt$AFc#YEXinYn+hy_GtvLU@bSdno)`6%=Jc^O2!?^GCe-x;wy9Rby=7G^29 z18h~l%vW(5Y8lE0qAAAnHSRvQS|=h)3E1M!MR6jfu}G`i&ydwiCQ6|;I9g$TcvKuH zvLp%@3fU5ncWvxj?G-kD+zmqcUTl*D<|e9PS7W|!zZ>#~=%#MGLtVAG`I?!VHQ5pb zGT**{(6L`wM9z_@gZ)i#l}|kDE%`!kYNRkOTWYW2j9=OAq+)kebo-bLx7#JTND~K~ zYqBiy-5g&xxKA_hhmCLN6du!$EUQ*u8!Urr>sQOz*LvJ(8!Tyl!m2)!VUZ!$JLZTQ zD7{6oD1Dqw(C;ZtK~n8J!~-894Y3k=frV~K#LTIOQsf8R9XoVl$TQCil~Ydu??32< z6!q$q#=Kx#SjD|C)F|ei4BWUHcyQjk-ghxRB}pW#!s1N*sV ze6y>iIj2;t%}(8?2Wat$)turp`xraaGreVAJD{19a;AqbTCz_2gm1&8;lP5{L;07M zRk}i0j!$x&YQ5#se3kMn!!&DMM=p8Yd^Ua0;T^s>R#ooL5?cZORsHznS%uL z6v6c5J&Url#;Hm}frUBu2bJu6bqn(?u2&rE-}L#GteV8|LL^SS*kyoKtnxL6uRSdWoP>V@$XxYO)R50Nd&VcGgG6gR8z8Kof?q-#9m5Bn{ zi44f$d56)lqRq9L_jzy^wkpSfHRSJ1Zgn0jMKVkl*LcgCv?e{&+0+Ydp2e3R zw2>!EBlrz`EaT_TTo1x3Tay{e#lg1si#iT&fO3Jx``MaB{cTJon{D}odQ&3*H0SIe zll4O6><2WyDctDu76iXTGH~2NI!4Lfu0TJmci+_Yg7>WZv(uXDjx}+e!RO_??$KWc zjby-~9VZ;${8y|-WbrGo4A=ONvaJVy1kZ(;me)Z}ad{F`iArs!tZVu*lQ`5p$ zQ@{aP8W{I}nrq?fy9Se)&CVk+=3pnHdhNwSQ|})Cn z-#PL4by9SV8ee;n-|*&o*+hyc;|Ym{1)hCm`uyHx!00}LHpss+T!pzh2S$jB=4h9J zMN(bMU?IvLQgo%9zf+Ywo#n&`60DZd9lTH)U#2fI+flanHPV)#drD8qZl0F$#MkOx znw_F;3X@xRyPmE)0o~%o{Wb8c%lxVVdgpng9eSOC&&wSiTcbPQho~D~ya2K?F^I&L7_?xy9Bf$8%%4nx5Ht4id zl&Rwfnt1&~AC1h8rbe@7XthyV`VerKqUv#+zt{P=;dAW5^d}s{fhH5?Yt@IQtHxD{r?@^h4s_wCEI*o*ZkEY`@>g%ck=^ zx|Zs3K`%xwo41NJUFj9DIr;KXFqUFZwrCMOSkxiu@Q^Kc2wT;Dk@Y$$l!ZcTtBNQd ztCa4sjwwOTVWeX3gqL;aekhj8edgLEvaENQ$#avB_jA(1YsUyP=}M-cT;`=m zcjbETybB)9&7wBZ!Qo__YwAto`~_hclMw|uHQIclNQs!e!*!#3!YH> zF*DCNS1_6#%^Z%cezIjytzEgDd74E_sZJ53gn(EB~Wp$y?9Wsud zuoN&&@qPGGcbH;JZavepY(t1^H+gB6uAmRf%Fb9Qom@Rx;-q!;x5+%O6=>t0q7K`I zDJLUQJ&M`B5}ONnsH(=PKan;CN*2{q38^RX=LTZ+{RDIe)16_-t~wO6Pdw7dhF!QI z*5q$=Ef99RoW#Yhi>IU#j|Yynf^}0SBBq*@l>OFHmH1fMH%c7v2xEdXiL-b4UOvG& z^*{YJ{@n2NT}>6Uhak5jKQX?^|G7L%`5gewr1xljKmu+TT7B0oLNl%%mk1Y-3y|cf z#d3^GIl%x4<5%qbmSe_BZ~jOI9t}q+Iy=&eIZl-slMMI7h+l|L=NfwNJk^2-y0`;z z!)8^uw9)DD)t#9b1|7`%dxB?S1&o<(5lJ5~97uz(j4oMM&VjI}%b3kB)OGM?&@xD7 z5OaxlL0WL&15A8Dhr~((Y}&E|QZ-{({)6}72ajuh9*p7nH#Q{2Z&4eF^N)teHYGmA?}SXJKZOot)g>kcU;^r`%p3fm5R?=j|hW{NnB zmX@kPcz@CrE@(Ik9ASh;U6TeGSFf$(adov!U!3Dh@9p^8n^XtH=*6JCaox>#d%^OU zAZDAeaNprGU6RHM*xnVTiedf(4Z7)>yT%+v_%3i3)dws_AKOjCa>GOxBV6Bbe}A^b z(f7n`^h9~DL4@G5MU!yOKbGO#teLx4jzPGTcT|9}9oYlz?hm|sy;_Wx3 zdP$s9Yygy7GE6ajlYAm^U#(2ClBo=*Ya-lb7)D72;jm`TNvENr(c1Vr5 zR=S17g5uwWRTB|Q`~0}_wL@Aiy{Y>KGtzS4%imJ^^gfwqO->0jdd#>LP}u%Hyl-NSZ>uimzCFozA%&g=K& z`vsS@q!-RPyNqe$@W`Q|rs@jEw@_}gg|2fJ$0nx>X(?=OfC(|b8 z#C;{G?9N2I{_CXbIfoKvMEwUj#?x^=Zs}yHPrb##KRx2&cTHAo7$H)-S?P)m$)_lu z%h?-T!8mD2FyChCMr*biCuo>l%GwmWY?bL1G-AI?OLn&UKYjayi@^b#KX;N?b6{)3 zj2nB2Rmqzg_e?}K7L@f7MUq?6IVk=WBYkB}cBf|}+U2sVG79)R#DdOg2P6L>1U zV-OtSGcyB<%P7n9n@4L23}T#Uo*G*^abHum$y%;b+n$h=DCB`N1J8Q_>nMRwJdb+8 zn&vqnEQGTR>RKnVe8~H*h)0ZYoPab||7CV>8-SpMlW6edkLwNTWxW&o#k#6_C;ok9GK!_PqS;Q z7?FnUL(9H?lWr20wOcoE6WcOo^vBJtu}W{B^%T!Zo9f|<&9xQuZ|@28IN$ot=WN>` zpu;p(M(u^gy<#Kc@!*G{%001;_V{ikJvTj5_2NA*>1iP|*PN(U4N*ge4+1m!C&!TY z*qB3%%HEw>-t)}?0=hOQ{vuz_QrftoXN}Kde^5;k9}GlguX-dGSR8KBsSZ6cI6G+S zhoDLe4cE9ukjGS6*n|+Q5U9w!X`G1GJJ=$_8eB@&l*rxPp4lQguojXADmGh9be}PB zH!y6?-hmuVT3Gbjvc`KP zgBu~R`+QCR)9IFs(Xsw9vzIE1G7%4ct*MQj_PJ8VI8#aF`_EjXEmiJD@CeEusAj zqQjem+ca7)FN*HOGWeJPp3wtu{KU&IAHc9~) zW?XezK`r$jl$k#BDndj_ZD$&@N>H+6845F#^q-p!tAQFpl7QretP$_z1NRuqn;VxD zsCl6YJ&M!1&?w7W_~gYFDIgDoN?eH~^Kgk%aM9VDnNf$?)EqC#q4f-yN}rT}jb8P_ zsm|mS>o?@=Wr+Y0K*`*dTs)t*bC{!1{?>(}~Bc zcKw?NURt;kt~qJ)>IF0M-nyT#!wHIYsr!kKUiM|WQ|SeJYmVM8p=$YvSaoK&*6LMO zvX<1_9cVO7=F_{AK5HcpV7sH2?~s2=AEwAU2>;&6uBl&8B_?*VYNo7He=e8V8Bc*8 zQ`icR8nLh(Rv?0vpl=Ns`;CbzZGU0fdQo44z*+851h8WMN^=VvFE00h2*g=}ptEA& zYG{~O+>p>u^Q8S8Sv<#fh#3|dDePjy8Yc6BhK2nt!QK4WW>31uFZxC#&BT0Pw{G+x z`@lqR+^?@RKUM)%YFYD8AILY<74Jo~(WH zEn2xx?PB^`u8tEsJ+6S!={LS_bnZs*NBB1g&+3b4s{3^?)djbROgA$z(%`UGpI@G^ z^kI6F3={E-A6JkKxuu3S2kA2D=t+N{w$1qDvcCp~sSVmV|Mf+9>!wjA;cNt>*|Vc} zQM{c>K$f>g_^Gc&k{1kBJ74xrUr5{ zEcku@{?bm+^3!);Q*_uIgd!l2J;z7;pX1$1DKjJ+B{*pm}(K zJ6e1qN{oH3W~Wc%ytE&9+>H9;@tEuDxjOy0vLM1pZ{V?vQEH@vO?JQNIoSafW{5~i89pl=tmZ%&-kFBe-JjQi$AI|%$(Q=*1ddp@pkihO*}b);6+`kB4M{b%ut zu;sMt0rqbOHk7guLZBA4y{jd4ubsU9JzEZ(vH5@Is?1}G*0=qOZ18(*V*C%EQ8!V; zU-?gupW@d42>y)+(9lmjj|=XA_1YbOf~}QadC$*+#r>~y22gDOo5Z4~n>5R(3bF}> z@}GDfGXBmY{>~!)&LaLd&LVtgD3-fWb?rB~2OC*SNlkhMBd8n8OLmQ~&<+#tEUDts zRpn>3!I_p6-w1yhn)J^4EuWZcDr!q1$u3*X4#sYtn`8=NXgE7k<#6QGubXa22LrPoBC#fMc*)R6IKF-Y>gnB|uj3a*?+yrvVn<@GvN9!|;L z=|aIFX;Wf{Noo*O|oer=2S&h*ZuRAdA?e~x(&LRFkokJ)UKFVBnL>S{;M@D?_IlV2+2`h5! zE`IHdXi}}csWa+doB!mk@1a1~!&A>IqwVN&jj_^uYWU>uUh`UB`X3g=YdSWM31jl@a z|H6{bj9Y{I>LB_*lwbo#cfKYWl;iStid^0SS+P{ zo*J1;4W9}e7gpnh70!xB(#R+M9zMV4^kl!%_;Ns8^mi=)%`j~p*~=p!pp z-#SqEq~9XQ@_|=kE9>|PAn_uAP4;6>8a=J3R)>nDF#^{r_wEk?wOefKx5OL-jPQ1c z?I<>_%o3~U^m87i9ZL6G?*3op(H-x==9X35=FYisU?<2wQH!{=e$1>W0W%>2P8^As zi7V_lwFNN&30?QxPdvZdk8^yn?<3{8x5967e{#XFOZp!Fu0i^L|0~K}%-Oj38jx`* zXw`Pm0lNnPZ5lZ|ui5M7W54VWVPuP{xla z_$Tw??gg@ic%(teZ}T=W#njLvy!JT+BaMe%N;M+->ACvI>KQH5bmwwm3sX>r)-Pkf zU#ZY-Ds#@uj}e&l)SSPHkN=vNi%@*2a|YseaY~!_02?)WpP}G!qN+=Sf7j24la>jl zj&H9W*ju>3yh6{Tt;5nl!ms(%Cmx)EsOajM^g<%9Fp$&_+aa)G& zYzP@-8WzI4KaQwetf=0)TwFXS>M)G(uB@r8s#}@C$PJD0q1MU#SL%oVqoU>V|76iJ z`m3vUcVZ`Mc1yH5pB+X2S^-qh(Kdh>9>Q0c7*Hgos5PE~6ROsO$!6`kMa&wWpoAx* zJtCGWUT9KSGQQ?z0McJ5VYOtO)eWh_ejc4_RpV&Ee)+^RB>>W;6w(NSQCJMlV83C+ zxAu;FB*d0uUGmnJH-XM_tD+ zW{kTIt}Y~K;RMYOMjh$jF!%yd!J@yaHW1+d%JhjTHEyTYkMxlkN?Vv0*k9DZb|;-z zTuC7LJ?U9MLMY@J&`B8sJ4i>haO*eQl8KABMO+OMGBO&MxLtsE!?c-CEGcb}7@92H z`pc5J@k+rI@TEGu;r@a;f?@EnTjE(W6omJ7+UK{PNp+W71}mY`eNVxve#=2O%+*gk zSGP;gaeD?dEf=Mf7Qm^v-C+*h;8zf0KJnC|=X@SEy&VK@K$|#k-x^*+_$+R05HpZ3 z*IXS87CYB`Kh{+icdmytDXnv9ucx9k>^EtH+wsp>0izL^a*Wru&Fkf$&UKvgCmzS^ zLZ!>W5tzj;+(%;doG2ecsHTwm9 zf%f@^zsQJEmwQlvGCS938FL77NIW13vqQ6h5z?o!wgWHM$gX0n$IDZycwT9(h;t5O ztpe_-MXn#-m6i94zex>AKqa3ooj#BG;%e=djmijMCnT@nb5<#%uz6xBwnfZxKOj0u zh^`U1ETv}3ijR-tM@3AE{$3OChL6EfluIFwUSYifz=uH*ABrwt@Go$F1_E{eT%xMXaklV<H^3X*GL_`Q89SYu0t;+yd+&**V&pj z_N?8b#FJo=DmvePN6BP3bwA$eO!d4~@vY!Ct2{McdtIWBkzwG#2(~Df-+e~R4(tlpc`HAuGY~jW=4)4Po7u<{jbGvHyqdi5 zAQst2vE3B?myrQ1R$Ru8&_0hvPh@h%aX(|0NZw)HR;h&&z+xkpVCUxioUO45)k^8j#$;uc&idYrxH+9nSl{$&Zn; z%fsuJ+RbSq!S(c0;QEyUwqV8=b$7_u$RtwlE8l4RRZIYRISu3YV5@--;k6-pY7=$wF8!C9Xu_#955=vkc9I1GX4(7J>+ek0h@;nz z2f89qRzcHQ`NpJ>afdyor&pf27;Lxm9#Ri}ZHVG1huA(+qJ7C%7ho*oQ#j zEa{q&GV2#fLulU>K-smPMZ0sX3Al+zYc#Rf)4dqrcJK07;(RzU?rHTqdHa^W)vbkk z)tYzW%Aa_w=x`s>2*#Nnvh8C8Kv)Ot`?dTe%q>j^Lwe(ILIJDqEX_%`PnAj;TDH{m zdDk>oHrHe*=a@AjFWqMH%4Ca4>)5Lss)Mrds^Vg*N8NjJ{Vw#(4@Oa|Wvo+NY(VYt z&kNe;27u426tA5$Uwpv2DfrhP>(6_XDP4~F34aiUtE#g4O6D< zwc7l!Lo}WkOJxKsvg(sWiW~?QWqMToPdtay&i6IRK5-+o@d+gh=(NLcWm~Ztu4HW9 z>Q8e6Mp#>hX-uczuZVA?MDZIJ)lo%Tw)l6PxBOZA$>?}o#w!48x(5H^tZZPJi1$Pm z-4;}F_h*qOX5McxdiS3N#WZ0B#q;95ZSeS&k+*1QKTHwOu?HF-wWXnC+|CYy0WzNOv+c} zFc>cW6_jxYn}NRl*1qq4_yykorv9S0fcw&wPvQRikG1T37czX$ck~8{^~VBkZ;QC! zm>}T7xX)I*6{U|lbz#V(f0eigb#sCi-=dDTRRum|=sHo4w)K5gkh+;6e)vxt$0XZyr9T3Ozr4k-vYyYCm2cw1mG6A!`|m27RsVgg zOSJhiB_n42_&Ajbid}vSsHKOs!MyKyBRE%?h2sXte}la8p8q?iUhqRB)sr6_BDi8c zB1f!i#Cm^CxvGDiVx56e7|0hx!0+^MXl-AaKQT&wZcLID z(z5?m%V9I76yGxzwoPa!+LG=Aq_cAvnAj#OCP`}CjA@`@3ZzZs%DW7~qyZ%+pC95E z)LvzX2r@ek&p5SsifkVqRWrH7=Q2Kq)W(U1f<2X^sdrB~`c^1SNm85bOj9IP6up+5 zJSzs(Z3xDEYe*xJV+%B1>!po--7BMPo`O9jXdM6x7a;c6mGUdQ~0oH0V+c z%!zZc`L(CQNl-!}%coP1;BX*1pTDFWbNj`scJF$$oJTA(ixJG}(bFq!_+@1?~vAOZP_ z#~TxuO^DZg6A%a44fh!rMBP&ZRp-{EEH4a233K3iJ(CPjL&dVSp$=Tkb1d|tJb ziHlix*J4qlPgLG^i41n2m;XA1*3+~C;?2HfJA}SDB(R5H#-f6+&P)@QD^{=`^iSC* zSukD_Uf?+SL=`snHrUWi1V`K~SgFlhFx1gWihfIC7}G$GU{P}NI{#vn35Lv9?4K= zu&VJ0k%Y}!A&SyqbE^0qdFN(#OCO{A-queF_SCkN|LYrV`3)fy)xIAUah5Ghe9;>p zoV9|hss0wRG1Qi6CD?|vIDBS!%>dl9?tCq+ z6mexUa_z0C^M@3XPdr6)|9yvkI6sTYR?8IN&lFbkv8XBX3H2p;ISUsXl@(7}NA;BH zwS~;1HDU@B>cr&MyMR;i*Uv?`&WJECTbV7?zpWd+93?stxR2Y{86;8>mbwEc!rZB_ zeexsc?f@W5P{HQ4fCnphJ(4w( zcoewB!dVTh3HUG|yw|BcKY2-;p7pF<3<2+%WagDw4%wYeTWSy>u)o7Uq zFD^X3Fd5=uwl~c6R6S_HluLdLNm9-Bm1LIJm;FvPU~83(%NJ_`nXY+KIQPqfx^&8;>C)4L|>AF3VP<&*OF233s~Tzim~I``liM}-xfjuTe& zg+i(ecJIwAI=y=jrkpcspFAUf3azg1ZQT}WA->^9wQ>`6^Ymi|pMhr>*MwQv|skhf_+u%^~L*qg7a zWMAQMzQ8NgCjmR0JE~rq;NF1O`|tD5*>Y- z)C3#4(_(s#*7r(W$(m{Hj2qfa+4OkT_XCgppwov;n)cpbeD;IlX@X?!u6}`DT^uX? z!!CT3LBKU%hVcu>U`oK4r4)z44ET!{QxES727`5wK={v(S^n&Aofd#IkL&L5e z=xZqcuYih?WUe=TnIaL_r-dBABSv@P(^#S zUY{d@0pqiH#J<-trwejz_+Gml6%P=t^j`u<)}DbtB(U@)vD&aCD+#s#hmDPvc3@Ujp8|L+bg-*z!$sb(j%9KvN|p6Zc|?J^c=Rq5w@eeJDd zPMM%o)C=Sf+Qll;ZkAY#BR-1uK29~1nI_Jlk3IPqUfitlzVU71?vGz|490uK>Xiw| zf_YDSwPeM$-B)FWV`FNk0fa1rMrRg&z708C<4hrj|!L7n>5s>69aokMgl`wa9Al4&DH0mh0bF zTz;K-9zPUWZP7dZru7&ek zwMUgI_NuYeBkRHNt9kDWCx@Z~_3HW)0Mi>-9>M3q?yUr^HQe%DL08ABH=J=*8{5t6 z$EFr!o|!xENSsycsKRQs;Fzb2gSg|K>H8j^k*z&o^LQVPgwZaEXBtcMrQb|s5f!bj z7fm?a!CUwhIu7|PbWeuo7F77!9QOR~;?sx4euf<*LTVWv61n%%JVSq_;Gk*wT`wz@7qxD&7A>el z49D_emMw1HAF?8tt5lFnHR6$wd!pnoBfORLb{h{r_IHe+2wa{ z4d1z+_9SRez(T4=+GBLdr3aB@rNq`1GtIpDQ}&-Kh(#99FccBz2F(48xkQbHO}Gzq0yK60-1=QqN^8xxdO zG6d z4q69%LteyZ%b4FTP`C55QYmoL;4fOiVWkAQBXux^>f5v#dX875pXo3=(W~d}nfsQ< zRrzJvM6jo?Nzz+)hvELlsRBX~w<@`-(^{K^AVw8cgb zDV#JF%Uf(x$8qt(bco8zbjGq)B3jm30%mc{T3@t&Pv49Hb2jDSN=YnWe{=$&+H8RE zG&*XkqRBGnRhi7bScT zzoAPFaAsH*BVwHTMB-}by@-tqJ{qs6kJt$R8b&nY512Q?KaVZDYA~xORJKF)%t7?F z5uc0BBPlFr|IxS#fonrwFjn5Lo?fjv-+BMNNC2seJ!ei@2WDRhGk~`FX4>@3kdZI} z3%UZ1A(X+?lpe05U0km7td%-y@OsC9z(b+_Ub5T3uNKc8k^|yins=AI-q~p|pE$5` zCp99zXg@ibzt|3Nv87L)K9mvkx=1VBQF}TOW1ok3 zed=E3us3y+aC9Y~K7QpxJ%sfWpA9I^OpwFun$VR^luLN{Zz`b2W89m1OW4aKcb2z- z)b~5kT%&_b08wAqs}<4nUcx;syGgP6f&aq9yFYH}@B1 z4f(&U%E$ZtA~@1TQV}S_q31I$V+*`V+u=oiP^%%586Y-A-Wcp^@jww5!-c85GANTQ z&dos7(sa3plv>eBV9Aqc2g6qKIWyAZS-AK)W#iY24wQ3Uwe4b&SPRC%{8}45>yw(c!I=-jGh_6%<*dMDx!!@T-Ayt?^MH-d zCPxo6@D0*D2DInzt$Y27U(gv{uBRcsim{|uPn4E9p|z{d&n6|nE9*kJi6X(bHc;N1 z!)woYVz;{o(w6zNugIASf{H`v}rNz7aKKL z^m@AY%+gNGcXa+1R4C}z=`veboCdadvToz0gITq z6qieW8oGweZG*t6zZo^`*Fr*1uo3#$Z^s?jQuEU|X0B2a5BGWyTtl%b8>&Z75skYs z-t?HPdWPnjALC31T!X370>?WLE>?dcC0WvCJiIAC5M9mr`{~OpLl?|vpUaKR*KWaY zeoZ`B*vUl>)^jkd2vHDh=RRRGhYVWM%*;)g(0RDCA zIPiFcymd4P9mf$jYi$e%$1!gDm$c~<27)EPBiVVKJiC$niFsF0!Ptqn>-JN8Tnj}6 z4qyuRz;tM6${Ie*Phxm*4VdIu(pJ9P_53M{BpBUEWirAq-s5_sq`2bS4_9Si*G~<- zDIpgTGMiPlLa$YjRlTZwYE(stE2y5HoCmyZpB{hfFF4g%!-iAs>-KD>*OVLyx!tF3 ze$X^bp@GBKt3v%!5|8rTl_9iSz^acSQVMb@O;-V zC2C$D-y~zt>|uE+ppAApmcl1^I#1p{58ivFYCdpdGxzOMjRvmBVo3OAU-Y=(=za1! zF#8NrD7H}v(s5vW!9Zgi`(p4rMz}F5-AjBOLYG>T{EFu>t7r$yVWY7kFgLgsPVHPaVxeVW7jVLvSqqef zBp3SaDMMuRT#Bw;^|EX9qJsh6v#B;0QRDRdxpQar>0Lg18taT zHN#Tk6?#?Bk2j`l9$1&Zz?3uv^D;O&JMt}i&e4rZOKt5=TwE2elf5(jd@1nmK4#jv z3gACV(a>uUd{+0LS>I?T4O>O{?0-E8;TaWM6ms zt9}mv42hsw?`m2au*liYB?-V->?l+r&z+3$m*L_+yA|?3f0pzokNWI}p00&Lr&+*o z{G~XrqKIZ3ss!ON?7)(YpY_REpyAsWh%^60|rr!@L(=lNG69%tyA-lX7*Q z3Y7?W7dYzXq?<@LOqB%12*&)PPq8=WRjMa+W zcc56ydeL8(%D(dW-IERe>MsHRE{?F=Ou zmp=?*%09s`o9UA(05u+dt^l9~lG!Ot6ct4FG^zOJu6|n4q&hW3jYAp8wNeMGtwAT7 zqJkH#0gk&x>LQEj2Sht>cqoxl**M{*23L8GQ8)PYD9LZDe>xv&%8m45{;fq7z4st9iZ2#rRW&Iud zvjEliCRZPf)clO}R)bv8r-H4;@BkJ^hgR+w+#r7eI{t&33l+5x)2-hrLv(@=AIzsS z2{dC>)*_>k^0Zy(?L-6Ei;I+*Xhh%TBU$vduTiQ+eoecgn$cUj^^_ETgevb>PG&BJ zCJ-gLNQq|7vhoqKB5XKd-$R{8gu^AE46CWAp{9ja^WHe+!cA)hj0%F)AK2uapy`#A z(VWoL(M^hV5SexTHxRO2V)>pgq=rJv4$w$?MQXl(u^$P^m&oJD^aXx?&3_4gJWR@4 zf44R~M0Yo?L;d7skccNgJR(m#gwpeA&9<{URl=|exlI*yvnhTteXyh}9rJX`Sg+*= z6zWkR0lkiz4#_I%-zvszLTy=U^#M8pM2C?07KfI;9N+Xj3z_(W4f|av%!GZVdV8yG z+_p;9)h$Y$ByIFw%8VmP5w#&<^$kbZ7WWjy5vpc=M9o4sZ1Dt;$^eX!J{h>7HI!mk zU*VRR8C@Gd2-F_hV1`=C*#9>h5I(5qN3+_${n z*YHeUzVV*LOytJ7v>|QInF=WB@U^X7wF9miEg0E7G#O4xxQEAg4ofQ3;^$bemO#24=ksYf@Ec-phJj)(Qwa)N7 zHI>!dVxMx53)7_%v$xxnU)h3MJ(kKNKKKTZ~>X;%micZFz+ z__)a>ap|d4hO59J(GlGbb;i#H$bZ0)TF{GE3u$pQ+nYXa+nLH&B%w@gY?`2Z0}3)KVj@E^lof%9Z`$9j zMHBNW&#^V0(wsviVGy<2QWKzahGqcGv@~ttizbFp6(=%AwcsQ!{+mfR>0X+v;S_rB z)3G>n*q*OOGxjJWaCxlJLusez{jXK4DXp34O}C$x>mkI(yGNjt_In$$1}n_<@8|kF zs*?8Ml=iXQ^W)OATn?Vhw;Wh`A?h+!YF*)wx~)?2iu-zLKfAR4m(|T)ceU^j4(#dN zv&8;3!u+nOdrIeC`3)39YIbkRx&2J*j%rl!KFY$0(Ss43F!!k!gBRT|d%hcWcaco& z(A|7b95*`t2gBP+fWCj{K_%bfKfM_c{!|%wxrm4Y{7!i;MC?EMAn)9GaFy3YtmiG3r-1Y!OId?ap(xR znhOquUxgV*v{iduT0C1^r~t>cgr7^RB%1NH8Agb86GJlzHy~`hUdozQCzJ-&udzUw z1BfCBam?EUQrk&NYm-E6U+~n5@xXhL&tkVPIrYxRlboPEJ8oYPb{DMcXWEtQexdN& z8D1Q#oAuVTP$gBdR@KHXU(_bY@sZAjx(fY;&FeB>J(pw!ANVzCESsbO{^WQz`=C9{8oUta@^in_^dM(u%588&TwEMw86_Q|IeZaLb1%MFjD&^m(e`-mW4wf0rq zTp21BeBZum%W1#($40R8YL!HAKo)0r~gIqf|ykOJNH4p(x; ztCwZ(bNz#ao3vq5O_BI%!?tV+T;?>Qp;r@-?rp%xU|#nP1=R=MbM=064FOLM34&kZSVkpudZM*Ex>>UjD|L4M4;w zjRS5G6VbXZx1FEI5nsY3zkd>@7d0!4Y5*B&Sxg*dMOtMTFG_lD);zka3#~#hV38D| zSIM2R=v@L$xL|)2*MI-4V;8md@4~I#bOcF4VANo7yr{bdBPoc0@A8xpocfq~dc2`l z!I-!PgHOcq`(O)tEZ;)(Ddn>mtWwUgOK_ZnUptB3&tGIrOL03{+A4zcu+o}p4gz68 z<|&IdyD8yQgx^4EKhJlHPlgX%!qg2PU7^fb6t3ij9IT{a3LSmelCRO*;NfG9kY?eX z5KBaw;>0UGdbK-NVf_KXuT*<$|yYA7~*%Uz}#R7 zEnk!j4exy~;u?71$!69|r=vTuac`gBOMJU$o;Q1zs2X+ovG@6=h=jJ2kIskrpJo;V|8M@s&Gd@o*{YW{cJV546+j=?>TuWXe+J?^nR@zQUVx8I%d z#7j&vN3x-LZ_d<_V0FDo>vQ?VCFbjE-0iKhiDv`8YnMu-CUBnj#A*EIc#URdyN8{6 zKtrQrVoYb91JgZ-xW*&<#ntTn{+EglaCDEEiEh|YHK!xhKFPiF&b`Y1eqHfocr>Ua z75mm(vp-alMkeKSe6r5`S0yP^*Q{uKNWb7eD@k{Te6s9QK2(xY`&+xYla6`hEnoN& zpZk>3utJs2jNBgzydI5OUVo_Suawx_QjdKhG=3<9k|12u6M{iF5|v=hvFq2b z>SGmP~wi=7ZK7?vY&q!q84)$Iy`_-$j^t7j;e4==1ZTj)9Qw@M$ z^D7Tlx8mI!YSF*xUgxBkqxV4S@t`YQ(-EW~ED z>Nb1U?j@XkMC#evetz=4dYEf?O@@KwRlCQ!d(QHqg+C0dhd&9Bk(r+(YZ~sWX1S`r zuuu%aVLrC?-XRTU0C#4vofD8II26dojip{M_Cark^SPbMQ--1o^j7>g6Al!qvjW`` z;S=YOlmUU-y{Yzqq{O`g?llEt-lzE+ee0yGXt!eHd^9#vRx%St3 zE?w|ZHB8?dSY)L}4-dNHE)!;Mu2!3>dZ{{D3n`gcmdsJ>W?GlUmuxmbp4ZZqR1bDn zznqE`jp7=@G$Pn2~^qh>)wkzd@my8QH^f?bVy1lHM0c3-*4|l z-iri+BKo?;l_TW0 z=KsBSpT%zU!OK^MMBJrm@aVBw`$7Ap*YcX{Ttu``jlZAjU)L|)xa?M6MD&Jo(r0qQ z>*ZvH*f=0UQ0?3?#Ec0I@YT zg}$_H3TQG85>5Y0dV*iXnEsvi#P%_AYThU66AO9&P<~?iy-3-h*@_%d4Hy9t^s7D% znD=@?!ce*Naf@qUUh(;LK=0c&{*hJXe`HVtU{vrKxdyo+4dhM9@M$6le!Jw%7Le1T z00d#i*g|=V5_!&~OGx!Z&bdNGLP>rbNR-k0DCwP_yieap#+~+iyT*e#Hh1Au@|>*@ z)QdO?d{8(%>WcirJ1^b8Lhb_28#Zf0u7DudfrLZT6G2f_%L{zM3jx9il|H^IS7y#l zrRTa8pL7js9D|oRCoT{&af-W&{7Rm6@Xea}z7&a@bpzc`S`T5l!mEqqb-|WL*5O^c zLnum)zD6tbk9KcM+Zi*2=hGoO8=#q*-8-u{{Fv3Gt+(+8h#?1sXY|;k90FL zZH>I`;d?S{(OhLrGLIN zD{;$*!KPth1CX>=ZDp@W29v*F7C}=mb!pQ}GHkF5(C1doe`FMuqFgLXW1M!VXnziO zMVAxO3;^WS-}qXUdX`oLwpG`;X;Iuhw6cjmwIJsMvF(b^8{ww$tmsWm^|z+b`)~IV z_5C8bMu*fN@mk2YL3IqX1dI~wAH;$|9pR=Hjm%5QWcmN6%o|yesP%iDH?$}``H9jS z-BX&xsUoeUY(DoUR>mo#0`5Uz?c`>GI+?v1ijsK_i_-8q(24n(eBlRYrjaHiWUkx* zsluWUToW0DGpMcHL+7@K=>?4s*$bq66b1XxF(t@<<~&Hze}XaoIUZ^n zzlpRJZ^D^ASTiFxK@qD&q%}#msV0O3-t@iLn3K$wCL(1^ph*q?$UUz;dWG5(X`xW& z(cUfT^Y>Mq_+UPhQ|2-wIXK~fQ(pWCS9OxV>ZU}9e(se2&$%u?aZmrdAkM8naFZ=b z{@$PcIrrti&p*`?kHayMa&a{;duaGVqE-VM4cl(c-PzZgP%<=mQI}{95uJ;e#TB)4 z)m3S>Fum{)o8c;T@)D4c&hcvPSER;P1klX93Y<=bvVR|J&<}lG@cH^*LvNp$fEJex|C~TjB^T*&?Y@D@=--MTkN)exY zB7z>>xGV2FYQ=!oH zGU*HM@7BlHk-eVt@Y^1ZKdo@4D4y?EFHpBvHx@G%Yt^A9WN&$~`H;ft2CR5&igUMl z&cV|<(!14aCi@GlX6-ke+Z7b;dF6~=zMAR262rR|G5WhMXZNAH3(VwIJ9b)Szw9Rd z?Mj8*BKh~|_Y>%n(}mXySH1aB)Sv+pi~si=Pm?QrZP{cJDMs_-Vi8m5)pzL7n>bF6 zQj5dTn`_*6!_G}TZv+N>i`MYRy70Lv#>M{q292SyXiy@uFeas7>YDL?8m6 zO~zVa~1N*l46k#h}yAJq2K+WyC>2O^>B8>)Si-b ztJGEE8INi-x;ot4Gwq5Jvd3RJX~gV)F;}g)FQ_azDknT}DHD~K+zh|#+x)UgCHle% z*9|JW4qSb5|HP4~Xs9%X@F>fc;i0YS<``D#*zI!!JM3g=PwZ)B*J#J^fDfA~lK|fFO8`)w8AoUOyAyOAkkI?~zw~<3bzJ6fS-v9Q8o>kPP7-49pfhyxz9t z-}wxvc-%{q5V*nh9H)6uR$O-7*6G04Yf|L5URF&MSgxeI7x`q8H2E67O{%@YE4mhU zdi5j9{P(wNggY0#2HBf5r_0un#tgR~oikF3;K0|K^D|P86N==x8tN)|fb%3Lk3crL z-Ct3YCN|zrLcmEp*Zs=c%!|(Ui6ewdGcIo>?kiUo1uWjZ7%`^58U1apdo#^CiE6ej zFZQwDa`>d<<0XWu{j8!+UaP#J$$>X?f|B^#sSev!=G`YP}1;Saub=!82TmGA>@un<62Q z92>dN{$QyiEjDDuxRoLqLSH>{oU6oM4+pds9@=j8R46YvoVaM3beK=N6lHtAx8~l2 zeqh-k`E)^gOh!p5zmBdX2;?f`AM9^h54-34DT0pj*vkS-NTs5JXmXi3;9zJ<@q;F3 zY?HX?bkR%tY}m98WR)M(_tdmOo}i7Ry=>Y|>AU;4yY>90v98b}px*sTdvsnP1rwTf zKNYz8d2#)yXlMeaP_j#5T7WvtSQRs9A<)h|l~)Ow9&?gwrLT`stKGJl=NcB3Or3JpJu?$Zq} ziEvXX=k5L>Y#iwRh2dC+A^oaiia`bVpZJtkpfpY}pK7%}4lzxWmgP7_akNN|xP}{? zv@4TKRi0dGrTXRhA|+}%R81kX#9+TP1@ElKx5uTNVH``STTA0>Cy}Jb7iQC7$Nt4| zZ6$sLj&Dn5yzJN32W^*)iwwkI5fdX#Q!64^wC3)t{m}9zcM@p542P7Rnv|SiGG+0b z=DcS>w}!Krr2!WiJ1@ST3+UZN8B4)#+xRlEc{5GB;0O?1dZnU}T+7olra(0jcdf){ zNF5F$-HYJL{c`JYDV#NhyL;y@5p%g}SWSPg72arVg%(rhQp9jQ!C-*G>8XZGh``%Np% za{XqL>>g&r%XjB2vTdLEaa7l%+mZwChNxeCOkMMK=-TPGv{{ACA!;5u&gwOJm-3UB zD%RRXL(hg!7opZ{vX^3T0|`#NWf7uyX3gw% zlZ&8P69*0h=#8%dC7TucQNC!ZKr`QW0qoU_e(rT;4C(Z0t_eO6C_`YiKB!yYR`+HTX}iAOc#9G|`tMe7oW^n-SR zCv8itv`+OT5>D$lp4}mH!eLviV)m^(#jAe`KyUQv7h};c)j9 zP-^=+aw-=nP#3xS)rwpIsEq`DX!dD;#A(__`~lYBX|BR{>uC>N=7e6-E*Atr^p>D0 zLo*h8U2Wf+lrb!zV&=ES3%2gA=94ZPEO@by2tueGBwOb;>0;kSvmgx&ovA;qr3VV% z0V_v&X-nG))DJCQVCw3sU|=-xy@>yh?798z7>F(g-WFTrO$BMi*rXK-X8a!ULxzzu zMiIJ!T7kISGMe0V@k9DQ4%3Vg(DJ|VJmj#G!HW2uPQeEj#kW0!yT9hs%D&cmhw9JD zv9QU=)kM!5K1-%C%Qi$U$Yh=ZXs+SPNUvk?bQvg@^-cwG%Q1OLCu1>25?fGo1kdfxunJZP|J7)tG*Y>yh8q$ zp9qZS>qtbMDiY}7Ujv71G7M^TpbzUiu&r-D$ezlh*Te1K_W)0_a0_-FOPay}5i0(v zr6<4e4H*6*5%~lupsh*^nka{IdW>F9)weY zWTOvRM!zA~6@S#BSD+6uW?O{YySB+)K8~&~a6ByW3$lwaA1(gO<6_~L;{(j(Sh+?8DcuRG(>D$tvfG0n60 zd+W;b2^lNYnvQd1oFp@;K!S^0HLDx0uij_ z^oQEA1o;yAU6|Rw_OMDNF6etq(;HcZZGZ!B`eXs7s~>@`<+8YG8!qF3{|}H#88~dt z_!i4^s+qVhnOclEaW9Qej-NXg^IJEze8OR)@h!jEV_C8VkG^m&G=MMWM~zXFYs4|f zp3;4>F{5jns=*t)7m?{KpFm0xcMaeg4Sq%gVa_%%EE|2Zvt{W7dyuk`c!)D%`@nfH zqQoC(%GX@R`(%y8H*`@u|Jefl-ZAYeq2Oi(?%$xnzQVWH|HBfpAMLw7G)_`Ufy8%E>wkHf=zx$s zl2mb(<8ChF+jB*&_ewXbVOg!#M)PEuk4Z#1?{rn~95xmwRISD*=YD%1Bn;@WfV>F5 zhWI_4$DL91T@sB;o0g|+nD@sY8PFez!1tka%LRuav-pCBhJKU+_uA{T)7aSgfbXWL z5rsp9d$yBvkrv$jQ679SWh&wSlAqFciR_JycH7u}mKeYV@KUZ3&*+qTCJ^DvwM@OE zVY%c@#$4qfTZkPk2;v*H2$lTaOvMJLBD0IGheZQ38jzX3Q z&cWE?@n4*L`U3&fNM2HYS*tWY!y0m(PsyMb5o$wz=0+%oKN(=j z4$+)PXt)W+l$*{cvM}L$8jF>W4S;VJ~Dr}DO7Yh3eh5d!X{z74&K)SzB*r)ODU-9by zFXGisWuhZ w6z2p?i-8p~Ls9+Z1O^gm>$+(S5kHwZ0zw@(228`mzjP``syr#O8D zg*n_2t%XIQ?EQ?(fe?e+s_>?1*pK_JVn>(YuynV#bE-b9oqWDV<8;+2RaV2<{fg-) zOt(wow{`4(ns)?Hqt%ufEUYDa+8 zaFRVI)=P%gzXC!>xO-jSt4OY-m64xn1K{&OgCf)i(ijyVh$T58pugd2341VtanQ!~&ogwh$RxMTcbcHObP!%D6WDFervb~9Mws7CAfp7z z04_+$iT5H3C{gm*jQmJTk=sP*Iu0d{q*eD+xP{O^X>slB9-9x6i+NlNUV;|D ztIz=hj54&^F4WFjesWnAY4KoaBRO{!9STi8$L*m8-;0JinRGc9Z}LWzU&zkKb+Tx2 zsP%qCsn1aBwScf&`0!AH9_}a1I3At?8K-;8CxF@JQ!$|6`O?ysndM*4{0?sZNaW=; zb=e&26$s59gNw#ST)1zd)>}dv|5)Y4Ybl`(IcLhp3%3u_0ae*MDh*S2Ctyj*lLF(x z$$U{1`R7^dr>pvj*PnsCsUqa3bp8M+1B5Ps@r_qzAgTA+BK?8v{$r9R;liV3#*iIa z9S-4gYmeyIw%miMnh#i7J&A!=2LXM>vY)^5PJPhh`PZDlpSG-B^pCD- z`yX3Sfum5yFXe8&b?EIq!hHk@AnrG+b1%v2e)k(G zCPqTw>Ype0o?p?Mx$l`HY`|2Ue^XNAr|5bAzK9%!&P!S?$&&M(%v=w2G!&e=fHJk31 zO$==GLvPO7Eif*iOsZ}scPX`y;j}aFMFedxn;_xPL;ARX2AM;WdoPlav-pVz__x{W zCyV+Cg0iJ^ZqmMaFLLC)NE=>Y!X5%MKsjKB?(;?Zr)hH?xR%qdF(c-45-#HmqzFO^ zRaxvy^%;$-(KRWjXYH%_Dir?Z2cbd3Xuj??Es6e1$N$e-Qq%V$AH&`My&x)s z`~?WbT=v@qj$)k?2u)zT&^eU-(fR+knd+zO`tJm5s5b6E+#V`Tv%r{3jdL^L_g|$* zk=BnokLPac)=%niXk&$wTe07;VWU=qK%ap|R|dh0!%nKG!NjZRH~#w4MGUzH_Heu3 zr#J0!qMp{ReP4GO>F_~kHy`Ni;xGbV(2w_(5id}A`ky<1KXX+-fxvEFd_QIeZdA5A zkB?(gmEfrp*aZ6O0L@_RIv>TBmt`K@Ll~awPcs5#o>D{2)QA=br3>hG`iGD#gyP8Y zAkCPxD54J4Z8Ga(RiVqMkKAa^7jDZbp#1n%v8t2sW?opstoRy1@Slc%d;SV5{yWq6^`f;;;M$)SR@`Mv5pjL!EiU6KvhYD|7G@pc z$qe8ZTQQx%@!yMpB0T>d!%aSu^D2(CgJ8=d%hv$O3LZHc10_#{Qxk<7C(s8WYV4U_ zExm~!`RMBW;fcm4aitv|<&Hf3CAdxONS%fZgJ==UbT6@Eoz{_gyQe#4y)>XCE_1H+ zz3SKl|e`MVw8*9t-4Q#ct1GYt3o_*?eAM{sr8hoAvUAKxYK+=#T%_+HJ-}MB4g4Uos3p5x~izC)6TVpCXz-J5=^{ zW2)YZ)Dm|ZB+)Q(2{oPYv08Dl;~*)$5PNCq(qtWexRIKO(k=7`{OL7G%h;2A*%(jH zSI;Mxh@r}TL=CWD3+Lf${HRtHbiZC1^;;iB2kMvwW;MaH7O|0V$@R!=JFKvbhd1$T z2hL8@6c>heu@y+&D#%zRP0UHY+;t8`VoGspq`9=ylaqiR`1yjBLTAt(l2T$2dp=^7 zv3jnCcAziL(Te85DXJomC>DUPWLgr9q0bv?` z`sZac!Nwkx8rA0mA)(CJAuQAIVkSgyHgGmb-Lv&_vqhPcz_@RYx}K2cP~X43OIx5_ zGz14>8}4(^TS7yj@4%)>HWOb>o%VzpCJnMo z3vR(hC!xM*lGaKd%4kha0hWi4cfJax#f4aU*zom*^qoyb757AEm4hEV$Z3-K@SeP*vs}GH%W6;JTZqkcfwlx2<_Gf8vB| zcy9r+`m1bQZ0&#Se(XF((mQt>TmcP#-%s4`?paExKGshQ;Y4cNLaoodUCifd zh)vswRmd`gQ!F=R-5px*&AR%=hJj%3AAUWqZ?u!rQ8O*ZqeKx8^KwF&XmJ?J#ly~u zGjW0lu9#~mmz|6Pt&?jr6DmjwgjJmWGLEZCBxWow8N<eow zE<#1yqRR~z%VOsa-Wb8+(kt^T zRf8=>*d4is0f-iw26owOZ^5q?I;^qru8Jcz4~1p9wt0-;ah@-)%89zr$Sp6;Ro(M< z-OY5R0T;cF-dn{St%BqfndyDBCwN>Q>U5q}`KxsWNefri>^gQD>f~F9&Eqmo7ht7Q z^W4&&W(~CBql8Mm0+XABByK&^f0YxI0wxW(9owDx12J>=u}sA?1%dg_K0|5o<=VB! zv}#<$mZ_2i($J$>o5Z2fNuFz0-lgL^dS7P{HT`(sI>Mb}GjVg+^=z2Jz{m%@sO?5; z_>i_h$)jsx5KL-3Msm-#o{XMTO?*>2xnv@DO=85sX_}EAN1-P2+#z$Md`GcUWmF^} z7?NsI7@kr&_!O-SD_PK=6192c*dZJflWcewQG_z!z~?LlCCEyRmjYV zIgV=nc-0L#_RLt-ZZgtCE(aQrIz6JYvjcjkxrZ)k5$DU_SITa!kl2GQ5zPT_s zFQIIMtYT6Bi}<40Y|kTF_#@UPGVj#px0*v$bjNw_5x?o)onIp3-x{$emTj*>B&GK0o!5((?dy&(G zsCKZPY6~;)DSE*2YWf0BumwLv873(#BLzFcPl}dynMjLRn@E52fA$B(l|KFEFBAQ` zrwN#-3~-GK#0YLcoQiZ0>M#ete%wu)-irza5{x!Jxm)<8ys>*0WZ1E3Ul(mv!K6>A z&*%pJKnXMN+)F(gV@iU#+Rt&xENBG+qZlJ7CUY)C;@;Dan(f9 z0N_Y#oQc=N#y7sqyGih}gF1f}M1UR$mC43KT|ELR9(x)CAIEUy>mk}w7QGwt+*~BtLNhQ%$8IV#aWQK5d1c*px+scKUPx%P(8)PvxreDedrM;wR2>dH`+>iSVW`*VOLw;W4Vu(@VJxE%WdB?8 z-P`jvNf!d|G@|tRNN&nY3U|fK6}HIp+dGaKtQ$q*FTEF$LmBZA!c86LFj9mxM$#!+S_ZcPuCl|Q6d6?nveBU9#7!J#l}(O$X=AFCKOBw zErrFHBtw4O>qx%RiTbXhOh;N399JUngAI6?Xg5UG0#clP|4n)Y(J^2(!N{#QHKFk6 zkV-)@8%yRKJDN56%S4j`l)`3e$Mm}?!>-WsgDkBwuZ0|k0nQ|$&83Tk^a*Dt(o6!m zc=?GXT+$XutG;x|+aas6o;m_YYLbvnL#X3L6Z>-grz#kiH{3uzLk?^JGYd!cXMT69u2_8O6)V5I9+5$!`% zM4+~f7;#>fjJd8K2F%f=a1b+)=(}=VUs?BLS6)U$ds=+B*|Z!~?EstHc>K5Vp{dGr zE+t9UZ9ORJ>Qr6Qh(zFe(aPCP*HB7Xn`F|Y6HklC4I8y zgZmZ1C4OyH26gyh3E7iiX4VL908j9N0y^L_NYxTFBja8phwy{=VT_Vc1;l+&HK}tY zfs4=7F(T3kNJXm8Ey!H42DtSDu6hBI(W2B3^VAQ4BX=CMOMs62_d4KA z{MtHyw3QeSf=egHhk2mXiCT3+Zw;|W_Sw|`jM@2Do|n2&U%72SiT{ngpH)lKLkSFdaSm%aV{^k3XD^?*IPs?Cj&`qAeb(>%A8r_n=DLa;V%J$r2xSUrjLFM)ZGgwBXXd948BT+ zrbAJHkA!1UIT{86nFe-RYjk9~7qJ3{*#%;O8t7szP;^>JLu~LoHSo37#L;5WZZ z9e5QrZKH@%0d;1`Gw6NQT;c`(A;MAsM&g<1gKj?p`dhDLc^L#^Aqa)Q#Y{(#Ut9)C z5ne(9>jtYx280&B``|ltd(oc}J0KJrDX{+YjT3L!A}wif^v>YLW}bL) iRh^4Ss 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 literal 0 HcmV?d00001 diff --git a/FPGA_quartus/Video/altdpram2_wave1.jpg b/FPGA_quartus/Video/altdpram2_wave1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..829d237506008ec048dc1e0f05655395d4f65a68 GIT binary patch literal 204342 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

UnoWp^Os)H0cAtL+tcURWA< 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

Sample behavioral waveforms for design file altdpram2.vhd

+

The following waveforms show the behavior of altsyncram megafunction for the chosen set of parameters in design altdpram2.vhd. For the purpose of this simulation, the contents of the memory at the start of the sample waveforms is assumed to be ( F0, F1, F2, F3, ...). The design altdpram2.vhd has two read/write ports. Read/write port A has 256 words of 8 bits each and Read/write port B has 256 words of 8 bits each. The output of the read/write port A is registered by clock_a. The output of the read/write port B is registered by clock_b.

+
+

Fig. 1 : Wave showing read operation.

+

The above waveform shows the behavior of the design under normal read conditions. The read happens at the rising edge of the enabled clock cycle. The output from the RAM is undefined until after the first rising edge of the read clock. The clock enable on the read side input registers are disabled. The clock enable on the output registers are disabled.

+
+

Fig. 2 : Waveform showing write operation

+

The above waveform shows the behavior of the design under normal write conditions. The write cycle is assumed to be from the rising edge of the enabled clock in which wren is high till the rising edge of the next clock cycle. In BIDIR_DUAL_PORT mode, when the write happens at the same address as the one being read in the other port, the read output is unknown. Actual write into the RAM happens at the rising edge of the write clock. The clock enable on the write side input registers are disabled. The clock enable on the output registers are disabled. For the A port, When a write happens, the output of the port is the old data at the address. For the B port, When a write happens, the output of the port is the old data at the address.

+

+ + diff --git a/FPGA_quartus/Video/lpm_bustri0.bsf b/FPGA_quartus/Video/lpm_bustri0.bsf new file mode 100644 index 0000000..f65e217 --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri0.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 80 40) + (text "lpm_bustri0" (rect 7 1 86 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 24 25 36)(font "Arial" )) + (port + (pt 40 40) + (input) + (text "enabledt" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "enabledt" (rect 40 -6 53 36)(font "Arial" (font_size 8))(invisible)) + (line (pt 40 40)(pt 40 28)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "data[31..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "data[31..0]" (rect -3 -27 10 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 32 24)(line_width 3)) + ) + (port + (pt 80 24) + (bidir) + (text "tridata[31..0]" (rect 0 0 70 14)(font "Arial" (font_size 8))) + (text "tridata[31..0]" (rect 84 -36 97 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 80 24)(pt 48 24)(line_width 3)) + ) + (drawing + (text "32" (rect 61 25 71 37)(font "Arial" )) + (text "32" (rect 13 25 23 37)(font "Arial" )) + (line (pt 32 16)(pt 48 24)(line_width 1)) + (line (pt 48 24)(pt 32 32)(line_width 1)) + (line (pt 32 32)(pt 32 16)(line_width 1)) + (line (pt 56 28)(pt 64 20)(line_width 1)) + (line (pt 8 28)(pt 16 20)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_bustri0.cmp b/FPGA_quartus/Video/lpm_bustri0.cmp new file mode 100644 index 0000000..9426443 --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri0.cmp @@ -0,0 +1,23 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_bustri0 + PORT + ( + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + enabledt : IN STD_LOGIC ; + tridata : INOUT STD_LOGIC_VECTOR (31 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_bustri0.inc b/FPGA_quartus/Video/lpm_bustri0.inc new file mode 100644 index 0000000..1b15c22 --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri0.inc @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_bustri0 +( + data[31..0], + enabledt +) + +RETURNS ( + tridata[31..0] +); diff --git a/FPGA_quartus/Video/lpm_bustri0.qip b/FPGA_quartus/Video/lpm_bustri0.qip new file mode 100644 index 0000000..c70041d --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri0.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_BUSTRI" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_bustri0.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri0.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri0.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri0.cmp"] diff --git a/FPGA_quartus/Video/lpm_bustri0.vhd b/FPGA_quartus/Video/lpm_bustri0.vhd new file mode 100644 index 0000000..494b3c2 --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri0.vhd @@ -0,0 +1,107 @@ +-- megafunction wizard: %LPM_BUSTRI% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_bustri + +-- ============================================================ +-- File Name: lpm_bustri0.vhd +-- Megafunction Name(s): +-- lpm_bustri +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_bustri0 IS + PORT + ( + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + enabledt : IN STD_LOGIC ; + tridata : INOUT STD_LOGIC_VECTOR (31 DOWNTO 0) + ); +END lpm_bustri0; + + +ARCHITECTURE SYN OF lpm_bustri0 IS + + + + + COMPONENT lpm_bustri + GENERIC ( + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + enabledt : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + tridata : INOUT STD_LOGIC_VECTOR (31 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + + lpm_bustri_component : lpm_bustri + GENERIC MAP ( + lpm_type => "LPM_BUSTRI", + lpm_width => 32 + ) + PORT MAP ( + enabledt => enabledt, + data => data, + tridata => tridata + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: BiDir NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "32" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_BUSTRI" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "32" +-- Retrieval info: USED_PORT: data 0 0 32 0 INPUT NODEFVAL data[31..0] +-- Retrieval info: USED_PORT: enabledt 0 0 0 0 INPUT NODEFVAL enabledt +-- Retrieval info: USED_PORT: tridata 0 0 32 0 BIDIR NODEFVAL tridata[31..0] +-- Retrieval info: CONNECT: tridata 0 0 32 0 @tridata 0 0 32 0 +-- Retrieval info: CONNECT: @data 0 0 32 0 data 0 0 32 0 +-- Retrieval info: CONNECT: @enabledt 0 0 0 0 enabledt 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri0.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri0.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri0.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri0.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri0_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_bustri1.bsf b/FPGA_quartus/Video/lpm_bustri1.bsf new file mode 100644 index 0000000..058fffb --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri1.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 80 40) + (text "lpm_bustri1" (rect 7 1 86 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 24 25 36)(font "Arial" )) + (port + (pt 40 40) + (input) + (text "enabledt" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "enabledt" (rect 40 -6 53 36)(font "Arial" (font_size 8))(invisible)) + (line (pt 40 40)(pt 40 28)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "data[2..0]" (rect 0 0 53 14)(font "Arial" (font_size 8))) + (text "data[2..0]" (rect -3 -21 10 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 32 24)(line_width 3)) + ) + (port + (pt 80 24) + (bidir) + (text "tridata[2..0]" (rect 0 0 63 14)(font "Arial" (font_size 8))) + (text "tridata[2..0]" (rect 84 -30 97 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 80 24)(pt 48 24)(line_width 3)) + ) + (drawing + (text "3" (rect 63 25 68 37)(font "Arial" )) + (text "3" (rect 15 25 20 37)(font "Arial" )) + (line (pt 32 16)(pt 48 24)(line_width 1)) + (line (pt 48 24)(pt 32 32)(line_width 1)) + (line (pt 32 32)(pt 32 16)(line_width 1)) + (line (pt 58 28)(pt 66 20)(line_width 1)) + (line (pt 10 28)(pt 18 20)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_bustri1.cmp b/FPGA_quartus/Video/lpm_bustri1.cmp new file mode 100644 index 0000000..48a33f0 --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri1.cmp @@ -0,0 +1,23 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_bustri1 + PORT + ( + data : IN STD_LOGIC_VECTOR (2 DOWNTO 0); + enabledt : IN STD_LOGIC ; + tridata : INOUT STD_LOGIC_VECTOR (2 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_bustri1.qip b/FPGA_quartus/Video/lpm_bustri1.qip new file mode 100644 index 0000000..fd76bb2 --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri1.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_BUSTRI" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_bustri1.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri1.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri1.cmp"] diff --git a/FPGA_quartus/Video/lpm_bustri1.vhd b/FPGA_quartus/Video/lpm_bustri1.vhd new file mode 100644 index 0000000..47db597 --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri1.vhd @@ -0,0 +1,107 @@ +-- megafunction wizard: %LPM_BUSTRI% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_bustri + +-- ============================================================ +-- File Name: lpm_bustri1.vhd +-- Megafunction Name(s): +-- lpm_bustri +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_bustri1 IS + PORT + ( + data : IN STD_LOGIC_VECTOR (2 DOWNTO 0); + enabledt : IN STD_LOGIC ; + tridata : INOUT STD_LOGIC_VECTOR (2 DOWNTO 0) + ); +END lpm_bustri1; + + +ARCHITECTURE SYN OF lpm_bustri1 IS + + + + + COMPONENT lpm_bustri + GENERIC ( + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + enabledt : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (2 DOWNTO 0); + tridata : INOUT STD_LOGIC_VECTOR (2 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + + lpm_bustri_component : lpm_bustri + GENERIC MAP ( + lpm_type => "LPM_BUSTRI", + lpm_width => 3 + ) + PORT MAP ( + enabledt => enabledt, + data => data, + tridata => tridata + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: BiDir NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "3" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_BUSTRI" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "3" +-- Retrieval info: USED_PORT: data 0 0 3 0 INPUT NODEFVAL data[2..0] +-- Retrieval info: USED_PORT: enabledt 0 0 0 0 INPUT NODEFVAL enabledt +-- Retrieval info: USED_PORT: tridata 0 0 3 0 BIDIR NODEFVAL tridata[2..0] +-- Retrieval info: CONNECT: tridata 0 0 3 0 @tridata 0 0 3 0 +-- Retrieval info: CONNECT: @data 0 0 3 0 data 0 0 3 0 +-- Retrieval info: CONNECT: @enabledt 0 0 0 0 enabledt 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri1.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri1.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri1.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri1.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri1_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_bustri2.bsf b/FPGA_quartus/Video/lpm_bustri2.bsf new file mode 100644 index 0000000..36a4813 --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri2.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 80 40) + (text "lpm_bustri2" (rect 7 1 86 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 24 25 36)(font "Arial" )) + (port + (pt 40 40) + (input) + (text "enabledt" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "enabledt" (rect 40 -6 53 36)(font "Arial" (font_size 8))(invisible)) + (line (pt 40 40)(pt 40 28)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "data[17..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "data[17..0]" (rect -3 -27 10 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 32 24)(line_width 3)) + ) + (port + (pt 80 24) + (bidir) + (text "tridata[17..0]" (rect 0 0 70 14)(font "Arial" (font_size 8))) + (text "tridata[17..0]" (rect 84 -36 97 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 80 24)(pt 48 24)(line_width 3)) + ) + (drawing + (text "18" (rect 61 25 71 37)(font "Arial" )) + (text "18" (rect 13 25 23 37)(font "Arial" )) + (line (pt 32 16)(pt 48 24)(line_width 1)) + (line (pt 48 24)(pt 32 32)(line_width 1)) + (line (pt 32 32)(pt 32 16)(line_width 1)) + (line (pt 56 28)(pt 64 20)(line_width 1)) + (line (pt 8 28)(pt 16 20)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_bustri2.cmp b/FPGA_quartus/Video/lpm_bustri2.cmp new file mode 100644 index 0000000..e45fbdd --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri2.cmp @@ -0,0 +1,23 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_bustri2 + PORT + ( + data : IN STD_LOGIC_VECTOR (17 DOWNTO 0); + enabledt : IN STD_LOGIC ; + tridata : INOUT STD_LOGIC_VECTOR (17 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_bustri2.qip b/FPGA_quartus/Video/lpm_bustri2.qip new file mode 100644 index 0000000..676e430 --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri2.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_BUSTRI" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_bustri2.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri2.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri2.cmp"] diff --git a/FPGA_quartus/Video/lpm_bustri2.vhd b/FPGA_quartus/Video/lpm_bustri2.vhd new file mode 100644 index 0000000..0966743 --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri2.vhd @@ -0,0 +1,107 @@ +-- megafunction wizard: %LPM_BUSTRI% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_bustri + +-- ============================================================ +-- File Name: lpm_bustri2.vhd +-- Megafunction Name(s): +-- lpm_bustri +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_bustri2 IS + PORT + ( + data : IN STD_LOGIC_VECTOR (17 DOWNTO 0); + enabledt : IN STD_LOGIC ; + tridata : INOUT STD_LOGIC_VECTOR (17 DOWNTO 0) + ); +END lpm_bustri2; + + +ARCHITECTURE SYN OF lpm_bustri2 IS + + + + + COMPONENT lpm_bustri + GENERIC ( + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + enabledt : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (17 DOWNTO 0); + tridata : INOUT STD_LOGIC_VECTOR (17 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + + lpm_bustri_component : lpm_bustri + GENERIC MAP ( + lpm_type => "LPM_BUSTRI", + lpm_width => 18 + ) + PORT MAP ( + enabledt => enabledt, + data => data, + tridata => tridata + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: BiDir NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "18" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_BUSTRI" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "18" +-- Retrieval info: USED_PORT: data 0 0 18 0 INPUT NODEFVAL data[17..0] +-- Retrieval info: USED_PORT: enabledt 0 0 0 0 INPUT NODEFVAL enabledt +-- Retrieval info: USED_PORT: tridata 0 0 18 0 BIDIR NODEFVAL tridata[17..0] +-- Retrieval info: CONNECT: tridata 0 0 18 0 @tridata 0 0 18 0 +-- Retrieval info: CONNECT: @data 0 0 18 0 data 0 0 18 0 +-- Retrieval info: CONNECT: @enabledt 0 0 0 0 enabledt 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri2.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri2.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri2.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri2.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri2_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_bustri3.bsf b/FPGA_quartus/Video/lpm_bustri3.bsf new file mode 100644 index 0000000..2dde401 --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri3.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 80 40) + (text "lpm_bustri3" (rect 7 1 86 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 24 25 36)(font "Arial" )) + (port + (pt 40 40) + (input) + (text "enabledt" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "enabledt" (rect 40 -6 53 36)(font "Arial" (font_size 8))(invisible)) + (line (pt 40 40)(pt 40 28)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "data[5..0]" (rect 0 0 53 14)(font "Arial" (font_size 8))) + (text "data[5..0]" (rect -3 -21 10 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 32 24)(line_width 3)) + ) + (port + (pt 80 24) + (bidir) + (text "tridata[5..0]" (rect 0 0 63 14)(font "Arial" (font_size 8))) + (text "tridata[5..0]" (rect 84 -30 97 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 80 24)(pt 48 24)(line_width 3)) + ) + (drawing + (text "6" (rect 63 25 68 37)(font "Arial" )) + (text "6" (rect 15 25 20 37)(font "Arial" )) + (line (pt 32 16)(pt 48 24)(line_width 1)) + (line (pt 48 24)(pt 32 32)(line_width 1)) + (line (pt 32 32)(pt 32 16)(line_width 1)) + (line (pt 58 28)(pt 66 20)(line_width 1)) + (line (pt 10 28)(pt 18 20)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_bustri3.cmp b/FPGA_quartus/Video/lpm_bustri3.cmp new file mode 100644 index 0000000..f3836e3 --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri3.cmp @@ -0,0 +1,23 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_bustri3 + PORT + ( + data : IN STD_LOGIC_VECTOR (5 DOWNTO 0); + enabledt : IN STD_LOGIC ; + tridata : INOUT STD_LOGIC_VECTOR (5 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_bustri3.qip b/FPGA_quartus/Video/lpm_bustri3.qip new file mode 100644 index 0000000..8c41556 --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri3.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_BUSTRI" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_bustri3.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri3.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri3.cmp"] diff --git a/FPGA_quartus/Video/lpm_bustri3.vhd b/FPGA_quartus/Video/lpm_bustri3.vhd new file mode 100644 index 0000000..2344712 --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri3.vhd @@ -0,0 +1,107 @@ +-- megafunction wizard: %LPM_BUSTRI% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_bustri + +-- ============================================================ +-- File Name: lpm_bustri3.vhd +-- Megafunction Name(s): +-- lpm_bustri +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_bustri3 IS + PORT + ( + data : IN STD_LOGIC_VECTOR (5 DOWNTO 0); + enabledt : IN STD_LOGIC ; + tridata : INOUT STD_LOGIC_VECTOR (5 DOWNTO 0) + ); +END lpm_bustri3; + + +ARCHITECTURE SYN OF lpm_bustri3 IS + + + + + COMPONENT lpm_bustri + GENERIC ( + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + enabledt : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (5 DOWNTO 0); + tridata : INOUT STD_LOGIC_VECTOR (5 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + + lpm_bustri_component : lpm_bustri + GENERIC MAP ( + lpm_type => "LPM_BUSTRI", + lpm_width => 6 + ) + PORT MAP ( + enabledt => enabledt, + data => data, + tridata => tridata + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: BiDir NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "6" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_BUSTRI" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "6" +-- Retrieval info: USED_PORT: data 0 0 6 0 INPUT NODEFVAL data[5..0] +-- Retrieval info: USED_PORT: enabledt 0 0 0 0 INPUT NODEFVAL enabledt +-- Retrieval info: USED_PORT: tridata 0 0 6 0 BIDIR NODEFVAL tridata[5..0] +-- Retrieval info: CONNECT: tridata 0 0 6 0 @tridata 0 0 6 0 +-- Retrieval info: CONNECT: @data 0 0 6 0 data 0 0 6 0 +-- Retrieval info: CONNECT: @enabledt 0 0 0 0 enabledt 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri3.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri3.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri3.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri3.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri3_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_bustri4.bsf b/FPGA_quartus/Video/lpm_bustri4.bsf new file mode 100644 index 0000000..cd9edcc --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri4.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 80 40) + (text "lpm_bustri4" (rect 7 1 86 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 24 25 36)(font "Arial" )) + (port + (pt 40 40) + (input) + (text "enabledt" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "enabledt" (rect 40 -6 53 36)(font "Arial" (font_size 8))(invisible)) + (line (pt 40 40)(pt 40 28)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "data[4..0]" (rect 0 0 53 14)(font "Arial" (font_size 8))) + (text "data[4..0]" (rect -3 -21 10 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 32 24)(line_width 3)) + ) + (port + (pt 80 24) + (bidir) + (text "tridata[4..0]" (rect 0 0 63 14)(font "Arial" (font_size 8))) + (text "tridata[4..0]" (rect 84 -30 97 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 80 24)(pt 48 24)(line_width 3)) + ) + (drawing + (text "5" (rect 63 25 68 37)(font "Arial" )) + (text "5" (rect 15 25 20 37)(font "Arial" )) + (line (pt 32 16)(pt 48 24)(line_width 1)) + (line (pt 48 24)(pt 32 32)(line_width 1)) + (line (pt 32 32)(pt 32 16)(line_width 1)) + (line (pt 58 28)(pt 66 20)(line_width 1)) + (line (pt 10 28)(pt 18 20)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_bustri4.cmp b/FPGA_quartus/Video/lpm_bustri4.cmp new file mode 100644 index 0000000..37bee59 --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri4.cmp @@ -0,0 +1,23 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_bustri4 + PORT + ( + data : IN STD_LOGIC_VECTOR (4 DOWNTO 0); + enabledt : IN STD_LOGIC ; + tridata : INOUT STD_LOGIC_VECTOR (4 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_bustri4.qip b/FPGA_quartus/Video/lpm_bustri4.qip new file mode 100644 index 0000000..39eb21d --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri4.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_BUSTRI" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_bustri4.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri4.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri4.cmp"] diff --git a/FPGA_quartus/Video/lpm_bustri4.vhd b/FPGA_quartus/Video/lpm_bustri4.vhd new file mode 100644 index 0000000..5bb209b --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri4.vhd @@ -0,0 +1,107 @@ +-- megafunction wizard: %LPM_BUSTRI% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_bustri + +-- ============================================================ +-- File Name: lpm_bustri4.vhd +-- Megafunction Name(s): +-- lpm_bustri +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_bustri4 IS + PORT + ( + data : IN STD_LOGIC_VECTOR (4 DOWNTO 0); + enabledt : IN STD_LOGIC ; + tridata : INOUT STD_LOGIC_VECTOR (4 DOWNTO 0) + ); +END lpm_bustri4; + + +ARCHITECTURE SYN OF lpm_bustri4 IS + + + + + COMPONENT lpm_bustri + GENERIC ( + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + enabledt : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (4 DOWNTO 0); + tridata : INOUT STD_LOGIC_VECTOR (4 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + + lpm_bustri_component : lpm_bustri + GENERIC MAP ( + lpm_type => "LPM_BUSTRI", + lpm_width => 5 + ) + PORT MAP ( + enabledt => enabledt, + data => data, + tridata => tridata + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: BiDir NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "5" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_BUSTRI" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "5" +-- Retrieval info: USED_PORT: data 0 0 5 0 INPUT NODEFVAL data[4..0] +-- Retrieval info: USED_PORT: enabledt 0 0 0 0 INPUT NODEFVAL enabledt +-- Retrieval info: USED_PORT: tridata 0 0 5 0 BIDIR NODEFVAL tridata[4..0] +-- Retrieval info: CONNECT: tridata 0 0 5 0 @tridata 0 0 5 0 +-- Retrieval info: CONNECT: @data 0 0 5 0 data 0 0 5 0 +-- Retrieval info: CONNECT: @enabledt 0 0 0 0 enabledt 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri4.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri4.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri4.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri4.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri4_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_bustri5.bsf b/FPGA_quartus/Video/lpm_bustri5.bsf new file mode 100644 index 0000000..1d9b178 --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri5.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 80 40) + (text "lpm_bustri5" (rect 7 1 86 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 24 25 36)(font "Arial" )) + (port + (pt 40 40) + (input) + (text "enabledt" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "enabledt" (rect 40 -6 53 36)(font "Arial" (font_size 8))(invisible)) + (line (pt 40 40)(pt 40 28)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "data[7..0]" (rect 0 0 53 14)(font "Arial" (font_size 8))) + (text "data[7..0]" (rect -3 -21 10 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 32 24)(line_width 3)) + ) + (port + (pt 80 24) + (bidir) + (text "tridata[7..0]" (rect 0 0 63 14)(font "Arial" (font_size 8))) + (text "tridata[7..0]" (rect 84 -30 97 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 80 24)(pt 48 24)(line_width 3)) + ) + (drawing + (text "8" (rect 63 25 68 37)(font "Arial" )) + (text "8" (rect 15 25 20 37)(font "Arial" )) + (line (pt 32 16)(pt 48 24)(line_width 1)) + (line (pt 48 24)(pt 32 32)(line_width 1)) + (line (pt 32 32)(pt 32 16)(line_width 1)) + (line (pt 58 28)(pt 66 20)(line_width 1)) + (line (pt 10 28)(pt 18 20)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_bustri5.cmp b/FPGA_quartus/Video/lpm_bustri5.cmp new file mode 100644 index 0000000..5c719c7 --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri5.cmp @@ -0,0 +1,23 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_bustri5 + PORT + ( + data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + enabledt : IN STD_LOGIC ; + tridata : INOUT STD_LOGIC_VECTOR (7 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_bustri5.inc b/FPGA_quartus/Video/lpm_bustri5.inc new file mode 100644 index 0000000..fdb4877 --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri5.inc @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_bustri5 +( + data[7..0], + enabledt +) + +RETURNS ( + tridata[7..0] +); diff --git a/FPGA_quartus/Video/lpm_bustri5.qip b/FPGA_quartus/Video/lpm_bustri5.qip new file mode 100644 index 0000000..daa3efa --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri5.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_BUSTRI" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_bustri5.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri5.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri5.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri5.cmp"] diff --git a/FPGA_quartus/Video/lpm_bustri5.vhd b/FPGA_quartus/Video/lpm_bustri5.vhd new file mode 100644 index 0000000..e1973b4 --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri5.vhd @@ -0,0 +1,107 @@ +-- megafunction wizard: %LPM_BUSTRI% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_bustri + +-- ============================================================ +-- File Name: lpm_bustri5.vhd +-- Megafunction Name(s): +-- lpm_bustri +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_bustri5 IS + PORT + ( + data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + enabledt : IN STD_LOGIC ; + tridata : INOUT STD_LOGIC_VECTOR (7 DOWNTO 0) + ); +END lpm_bustri5; + + +ARCHITECTURE SYN OF lpm_bustri5 IS + + + + + COMPONENT lpm_bustri + GENERIC ( + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + enabledt : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + tridata : INOUT STD_LOGIC_VECTOR (7 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + + lpm_bustri_component : lpm_bustri + GENERIC MAP ( + lpm_type => "LPM_BUSTRI", + lpm_width => 8 + ) + PORT MAP ( + enabledt => enabledt, + data => data, + tridata => tridata + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: BiDir NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "8" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_BUSTRI" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "8" +-- Retrieval info: USED_PORT: data 0 0 8 0 INPUT NODEFVAL data[7..0] +-- Retrieval info: USED_PORT: enabledt 0 0 0 0 INPUT NODEFVAL enabledt +-- Retrieval info: USED_PORT: tridata 0 0 8 0 BIDIR NODEFVAL tridata[7..0] +-- Retrieval info: CONNECT: tridata 0 0 8 0 @tridata 0 0 8 0 +-- Retrieval info: CONNECT: @data 0 0 8 0 data 0 0 8 0 +-- Retrieval info: CONNECT: @enabledt 0 0 0 0 enabledt 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri5.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri5.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri5.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri5.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri5_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_bustri6.bsf b/FPGA_quartus/Video/lpm_bustri6.bsf new file mode 100644 index 0000000..4c9344e --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri6.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 80 40) + (text "lpm_bustri6" (rect 7 1 86 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 24 25 36)(font "Arial" )) + (port + (pt 40 40) + (input) + (text "enabledt" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "enabledt" (rect 40 -6 53 36)(font "Arial" (font_size 8))(invisible)) + (line (pt 40 40)(pt 40 28)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "data[23..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "data[23..0]" (rect -3 -27 10 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 32 24)(line_width 3)) + ) + (port + (pt 80 24) + (bidir) + (text "tridata[23..0]" (rect 0 0 70 14)(font "Arial" (font_size 8))) + (text "tridata[23..0]" (rect 84 -36 97 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 80 24)(pt 48 24)(line_width 3)) + ) + (drawing + (text "24" (rect 61 25 71 37)(font "Arial" )) + (text "24" (rect 13 25 23 37)(font "Arial" )) + (line (pt 32 16)(pt 48 24)(line_width 1)) + (line (pt 48 24)(pt 32 32)(line_width 1)) + (line (pt 32 32)(pt 32 16)(line_width 1)) + (line (pt 56 28)(pt 64 20)(line_width 1)) + (line (pt 8 28)(pt 16 20)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_bustri6.cmp b/FPGA_quartus/Video/lpm_bustri6.cmp new file mode 100644 index 0000000..67529c9 --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri6.cmp @@ -0,0 +1,23 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_bustri6 + PORT + ( + data : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + enabledt : IN STD_LOGIC ; + tridata : INOUT STD_LOGIC_VECTOR (23 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_bustri6.qip b/FPGA_quartus/Video/lpm_bustri6.qip new file mode 100644 index 0000000..6b9f1df --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri6.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_BUSTRI" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_bustri6.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri6.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri6.cmp"] diff --git a/FPGA_quartus/Video/lpm_bustri6.vhd b/FPGA_quartus/Video/lpm_bustri6.vhd new file mode 100644 index 0000000..45f409f --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri6.vhd @@ -0,0 +1,107 @@ +-- megafunction wizard: %LPM_BUSTRI% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_bustri + +-- ============================================================ +-- File Name: lpm_bustri6.vhd +-- Megafunction Name(s): +-- lpm_bustri +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_bustri6 IS + PORT + ( + data : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + enabledt : IN STD_LOGIC ; + tridata : INOUT STD_LOGIC_VECTOR (23 DOWNTO 0) + ); +END lpm_bustri6; + + +ARCHITECTURE SYN OF lpm_bustri6 IS + + + + + COMPONENT lpm_bustri + GENERIC ( + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + enabledt : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + tridata : INOUT STD_LOGIC_VECTOR (23 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + + lpm_bustri_component : lpm_bustri + GENERIC MAP ( + lpm_type => "LPM_BUSTRI", + lpm_width => 24 + ) + PORT MAP ( + enabledt => enabledt, + data => data, + tridata => tridata + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: BiDir NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "24" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_BUSTRI" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "24" +-- Retrieval info: USED_PORT: data 0 0 24 0 INPUT NODEFVAL data[23..0] +-- Retrieval info: USED_PORT: enabledt 0 0 0 0 INPUT NODEFVAL enabledt +-- Retrieval info: USED_PORT: tridata 0 0 24 0 BIDIR NODEFVAL tridata[23..0] +-- Retrieval info: CONNECT: tridata 0 0 24 0 @tridata 0 0 24 0 +-- Retrieval info: CONNECT: @data 0 0 24 0 data 0 0 24 0 +-- Retrieval info: CONNECT: @enabledt 0 0 0 0 enabledt 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri6.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri6.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri6.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri6.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri6_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_bustri7.bsf b/FPGA_quartus/Video/lpm_bustri7.bsf new file mode 100644 index 0000000..399a828 --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri7.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 80 40) + (text "lpm_bustri7" (rect 7 1 86 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 24 25 36)(font "Arial" )) + (port + (pt 40 40) + (input) + (text "enabledt" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "enabledt" (rect 40 -6 53 36)(font "Arial" (font_size 8))(invisible)) + (line (pt 40 40)(pt 40 28)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "data[3..0]" (rect 0 0 53 14)(font "Arial" (font_size 8))) + (text "data[3..0]" (rect -3 -21 10 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 32 24)(line_width 3)) + ) + (port + (pt 80 24) + (bidir) + (text "tridata[3..0]" (rect 0 0 63 14)(font "Arial" (font_size 8))) + (text "tridata[3..0]" (rect 84 -30 97 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 80 24)(pt 48 24)(line_width 3)) + ) + (drawing + (text "4" (rect 63 25 68 37)(font "Arial" )) + (text "4" (rect 15 25 20 37)(font "Arial" )) + (line (pt 32 16)(pt 48 24)(line_width 1)) + (line (pt 48 24)(pt 32 32)(line_width 1)) + (line (pt 32 32)(pt 32 16)(line_width 1)) + (line (pt 58 28)(pt 66 20)(line_width 1)) + (line (pt 10 28)(pt 18 20)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_bustri7.cmp b/FPGA_quartus/Video/lpm_bustri7.cmp new file mode 100644 index 0000000..2d5983d --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri7.cmp @@ -0,0 +1,23 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_bustri7 + PORT + ( + data : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + enabledt : IN STD_LOGIC ; + tridata : INOUT STD_LOGIC_VECTOR (3 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_bustri7.qip b/FPGA_quartus/Video/lpm_bustri7.qip new file mode 100644 index 0000000..f32324c --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri7.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_BUSTRI" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_bustri7.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri7.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri7.cmp"] diff --git a/FPGA_quartus/Video/lpm_bustri7.vhd b/FPGA_quartus/Video/lpm_bustri7.vhd new file mode 100644 index 0000000..4bf883d --- /dev/null +++ b/FPGA_quartus/Video/lpm_bustri7.vhd @@ -0,0 +1,107 @@ +-- megafunction wizard: %LPM_BUSTRI% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_bustri + +-- ============================================================ +-- File Name: lpm_bustri7.vhd +-- Megafunction Name(s): +-- lpm_bustri +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_bustri7 IS + PORT + ( + data : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + enabledt : IN STD_LOGIC ; + tridata : INOUT STD_LOGIC_VECTOR (3 DOWNTO 0) + ); +END lpm_bustri7; + + +ARCHITECTURE SYN OF lpm_bustri7 IS + + + + + COMPONENT lpm_bustri + GENERIC ( + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + enabledt : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + tridata : INOUT STD_LOGIC_VECTOR (3 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + + lpm_bustri_component : lpm_bustri + GENERIC MAP ( + lpm_type => "LPM_BUSTRI", + lpm_width => 4 + ) + PORT MAP ( + enabledt => enabledt, + data => data, + tridata => tridata + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: BiDir NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "4" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_BUSTRI" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "4" +-- Retrieval info: USED_PORT: data 0 0 4 0 INPUT NODEFVAL data[3..0] +-- Retrieval info: USED_PORT: enabledt 0 0 0 0 INPUT NODEFVAL enabledt +-- Retrieval info: USED_PORT: tridata 0 0 4 0 BIDIR NODEFVAL tridata[3..0] +-- Retrieval info: CONNECT: tridata 0 0 4 0 @tridata 0 0 4 0 +-- Retrieval info: CONNECT: @data 0 0 4 0 data 0 0 4 0 +-- Retrieval info: CONNECT: @enabledt 0 0 0 0 enabledt 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri7.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri7.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri7.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri7.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri7_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_compare1.bsf b/FPGA_quartus/Video/lpm_compare1.bsf new file mode 100644 index 0000000..9ec3796 --- /dev/null +++ b/FPGA_quartus/Video/lpm_compare1.bsf @@ -0,0 +1,54 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 128 96) + (text "lpm_compare1" (rect 22 1 122 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 80 25 92)(font "Arial" )) + (port + (pt 0 48) + (input) + (text "dataa[10..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "dataa[10..0]" (rect 20 42 77 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 3)) + ) + (port + (pt 0 64) + (input) + (text "datab[10..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "datab[10..0]" (rect 20 58 77 71)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)(line_width 3)) + ) + (port + (pt 128 56) + (output) + (text "agb" (rect 0 0 21 14)(font "Arial" (font_size 8))) + (text "agb" (rect 91 50 109 63)(font "Arial" (font_size 8))) + (line (pt 128 56)(pt 112 56)(line_width 1)) + ) + (drawing + (text "unsigned compare" (rect 36 17 112 29)(font "Arial" )) + (line (pt 16 16)(pt 112 16)(line_width 1)) + (line (pt 112 16)(pt 112 80)(line_width 1)) + (line (pt 112 80)(pt 16 80)(line_width 1)) + (line (pt 16 80)(pt 16 16)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_compare1.cmp b/FPGA_quartus/Video/lpm_compare1.cmp new file mode 100644 index 0000000..9bab50e --- /dev/null +++ b/FPGA_quartus/Video/lpm_compare1.cmp @@ -0,0 +1,23 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_compare1 + PORT + ( + dataa : IN STD_LOGIC_VECTOR (10 DOWNTO 0); + datab : IN STD_LOGIC_VECTOR (10 DOWNTO 0); + AgB : OUT STD_LOGIC + ); +end component; diff --git a/FPGA_quartus/Video/lpm_compare1.inc b/FPGA_quartus/Video/lpm_compare1.inc new file mode 100644 index 0000000..bde0ab9 --- /dev/null +++ b/FPGA_quartus/Video/lpm_compare1.inc @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_compare1 +( + dataa[10..0], + datab[10..0] +) + +RETURNS ( + AgB +); diff --git a/FPGA_quartus/Video/lpm_compare1.qip b/FPGA_quartus/Video/lpm_compare1.qip new file mode 100644 index 0000000..ea93f3c --- /dev/null +++ b/FPGA_quartus/Video/lpm_compare1.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_COMPARE" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_compare1.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_compare1.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_compare1.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_compare1.cmp"] diff --git a/FPGA_quartus/Video/lpm_compare1.vhd b/FPGA_quartus/Video/lpm_compare1.vhd new file mode 100644 index 0000000..a85e3b2 --- /dev/null +++ b/FPGA_quartus/Video/lpm_compare1.vhd @@ -0,0 +1,127 @@ +-- megafunction wizard: %LPM_COMPARE% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_compare + +-- ============================================================ +-- File Name: lpm_compare1.vhd +-- Megafunction Name(s): +-- lpm_compare +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_compare1 IS + PORT + ( + dataa : IN STD_LOGIC_VECTOR (10 DOWNTO 0); + datab : IN STD_LOGIC_VECTOR (10 DOWNTO 0); + AgB : OUT STD_LOGIC + ); +END lpm_compare1; + + +ARCHITECTURE SYN OF lpm_compare1 IS + + SIGNAL sub_wire0 : STD_LOGIC ; + + + + COMPONENT lpm_compare + GENERIC ( + lpm_representation : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + dataa : IN STD_LOGIC_VECTOR (10 DOWNTO 0); + datab : IN STD_LOGIC_VECTOR (10 DOWNTO 0); + AgB : OUT STD_LOGIC + ); + END COMPONENT; + +BEGIN + AgB <= sub_wire0; + + lpm_compare_component : lpm_compare + GENERIC MAP ( + lpm_representation => "UNSIGNED", + lpm_type => "LPM_COMPARE", + lpm_width => 11 + ) + PORT MAP ( + dataa => dataa, + datab => datab, + AgB => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: AeqB NUMERIC "0" +-- Retrieval info: PRIVATE: AgeB NUMERIC "0" +-- Retrieval info: PRIVATE: AgtB NUMERIC "1" +-- Retrieval info: PRIVATE: AleB NUMERIC "0" +-- Retrieval info: PRIVATE: AltB NUMERIC "0" +-- Retrieval info: PRIVATE: AneB NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: LPM_PIPELINE NUMERIC "0" +-- Retrieval info: PRIVATE: Latency NUMERIC "0" +-- Retrieval info: PRIVATE: PortBValue NUMERIC "0" +-- Retrieval info: PRIVATE: Radix NUMERIC "10" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: SignedCompare NUMERIC "0" +-- Retrieval info: PRIVATE: aclr NUMERIC "0" +-- Retrieval info: PRIVATE: clken NUMERIC "0" +-- Retrieval info: PRIVATE: isPortBConstant NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "11" +-- Retrieval info: CONSTANT: LPM_REPRESENTATION STRING "UNSIGNED" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_COMPARE" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "11" +-- Retrieval info: USED_PORT: AgB 0 0 0 0 OUTPUT NODEFVAL AgB +-- Retrieval info: USED_PORT: dataa 0 0 11 0 INPUT NODEFVAL dataa[10..0] +-- Retrieval info: USED_PORT: datab 0 0 11 0 INPUT NODEFVAL datab[10..0] +-- Retrieval info: CONNECT: AgB 0 0 0 0 @AgB 0 0 0 0 +-- Retrieval info: CONNECT: @dataa 0 0 11 0 dataa 0 0 11 0 +-- Retrieval info: CONNECT: @datab 0 0 11 0 datab 0 0 11 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_compare1.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_compare1.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_compare1.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_compare1.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_compare1_inst.vhd FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_compare1_waveforms.html TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_compare1_wave*.jpg FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_compare1_wave0.jpg b/FPGA_quartus/Video/lpm_compare1_wave0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0fbc2520920965bc5935785c577e0ab2e3ee623e GIT binary patch literal 30655 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 literal 0 HcmV?d00001 diff --git a/FPGA_quartus/Video/lpm_compare1_waveforms.html b/FPGA_quartus/Video/lpm_compare1_waveforms.html new file mode 100644 index 0000000..e8242d9 --- /dev/null +++ b/FPGA_quartus/Video/lpm_compare1_waveforms.html @@ -0,0 +1,13 @@ + + +Sample Waveforms for lpm_compare1.vhd + + +

Sample behavioral waveforms for design file lpm_compare1.vhd

+

The following waveforms show the behavior of lpm_comparator megafunction for the chosen set of parameters in design lpm_compare1.vhd. The design lpm_compare1.vhd is 11 bit UNSIGNED comparator.

+
+

Fig. 1 : Wave showing comparator operation.

+

+

+ + diff --git a/FPGA_quartus/Video/lpm_constant0.bsf b/FPGA_quartus/Video/lpm_constant0.bsf new file mode 100644 index 0000000..684bbae --- /dev/null +++ b/FPGA_quartus/Video/lpm_constant0.bsf @@ -0,0 +1,42 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 96 48) + (text "lpm_constant0" (rect 6 1 106 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 32 25 44)(font "Arial" )) + (port + (pt 96 24) + (output) + (text "result[4..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "result[4..0]" (rect 93 -25 106 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 96 24)(pt 80 24)(line_width 3)) + ) + (drawing + (text "0" (rect 75 18 80 30)(font "Arial" )) + (text "5" (rect 87 25 92 37)(font "Arial" )) + (line (pt 16 16)(pt 80 16)(line_width 1)) + (line (pt 80 16)(pt 80 32)(line_width 1)) + (line (pt 80 32)(pt 16 32)(line_width 1)) + (line (pt 16 32)(pt 16 16)(line_width 1)) + (line (pt 82 28)(pt 90 20)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_constant0.cmp b/FPGA_quartus/Video/lpm_constant0.cmp new file mode 100644 index 0000000..7143429 --- /dev/null +++ b/FPGA_quartus/Video/lpm_constant0.cmp @@ -0,0 +1,21 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_constant0 + PORT + ( + result : OUT STD_LOGIC_VECTOR (4 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_constant0.qip b/FPGA_quartus/Video/lpm_constant0.qip new file mode 100644 index 0000000..bb19c49 --- /dev/null +++ b/FPGA_quartus/Video/lpm_constant0.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_CONSTANT" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_constant0.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_constant0.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_constant0.cmp"] diff --git a/FPGA_quartus/Video/lpm_constant0.vhd b/FPGA_quartus/Video/lpm_constant0.vhd new file mode 100644 index 0000000..63631cc --- /dev/null +++ b/FPGA_quartus/Video/lpm_constant0.vhd @@ -0,0 +1,108 @@ +-- megafunction wizard: %LPM_CONSTANT% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_constant + +-- ============================================================ +-- File Name: lpm_constant0.vhd +-- Megafunction Name(s): +-- lpm_constant +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_constant0 IS + PORT + ( + result : OUT STD_LOGIC_VECTOR (4 DOWNTO 0) + ); +END lpm_constant0; + + +ARCHITECTURE SYN OF lpm_constant0 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (4 DOWNTO 0); + + + + COMPONENT lpm_constant + GENERIC ( + lpm_cvalue : NATURAL; + lpm_hint : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + result : OUT STD_LOGIC_VECTOR (4 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + result <= sub_wire0(4 DOWNTO 0); + + lpm_constant_component : lpm_constant + GENERIC MAP ( + lpm_cvalue => 0, + lpm_hint => "ENABLE_RUNTIME_MOD=NO", + lpm_type => "LPM_CONSTANT", + lpm_width => 5 + ) + PORT MAP ( + result => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +-- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +-- Retrieval info: PRIVATE: Radix NUMERIC "2" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: Value NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "5" +-- Retrieval info: CONSTANT: LPM_CVALUE NUMERIC "0" +-- Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_CONSTANT" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "5" +-- Retrieval info: USED_PORT: result 0 0 5 0 OUTPUT NODEFVAL result[4..0] +-- Retrieval info: CONNECT: result 0 0 5 0 @result 0 0 5 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant0.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant0.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant0.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant0.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant0_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_constant1.bsf b/FPGA_quartus/Video/lpm_constant1.bsf new file mode 100644 index 0000000..01fdb2b --- /dev/null +++ b/FPGA_quartus/Video/lpm_constant1.bsf @@ -0,0 +1,42 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 96 48) + (text "lpm_constant1" (rect 6 1 106 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 32 25 44)(font "Arial" )) + (port + (pt 96 24) + (output) + (text "result[1..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "result[1..0]" (rect 93 -25 106 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 96 24)(pt 80 24)(line_width 3)) + ) + (drawing + (text "0" (rect 75 18 80 30)(font "Arial" )) + (text "2" (rect 87 25 92 37)(font "Arial" )) + (line (pt 16 16)(pt 80 16)(line_width 1)) + (line (pt 80 16)(pt 80 32)(line_width 1)) + (line (pt 80 32)(pt 16 32)(line_width 1)) + (line (pt 16 32)(pt 16 16)(line_width 1)) + (line (pt 82 28)(pt 90 20)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_constant1.cmp b/FPGA_quartus/Video/lpm_constant1.cmp new file mode 100644 index 0000000..a7e275c --- /dev/null +++ b/FPGA_quartus/Video/lpm_constant1.cmp @@ -0,0 +1,21 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_constant1 + PORT + ( + result : OUT STD_LOGIC_VECTOR (1 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_constant1.inc b/FPGA_quartus/Video/lpm_constant1.inc new file mode 100644 index 0000000..9b556e7 --- /dev/null +++ b/FPGA_quartus/Video/lpm_constant1.inc @@ -0,0 +1,23 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_constant1 +( + +) + +RETURNS ( + result[1..0] +); diff --git a/FPGA_quartus/Video/lpm_constant1.qip b/FPGA_quartus/Video/lpm_constant1.qip new file mode 100644 index 0000000..2bc12e7 --- /dev/null +++ b/FPGA_quartus/Video/lpm_constant1.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_CONSTANT" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_constant1.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_constant1.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_constant1.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_constant1.cmp"] diff --git a/FPGA_quartus/Video/lpm_constant1.vhd b/FPGA_quartus/Video/lpm_constant1.vhd new file mode 100644 index 0000000..afa67ba --- /dev/null +++ b/FPGA_quartus/Video/lpm_constant1.vhd @@ -0,0 +1,108 @@ +-- megafunction wizard: %LPM_CONSTANT% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_constant + +-- ============================================================ +-- File Name: lpm_constant1.vhd +-- Megafunction Name(s): +-- lpm_constant +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_constant1 IS + PORT + ( + result : OUT STD_LOGIC_VECTOR (1 DOWNTO 0) + ); +END lpm_constant1; + + +ARCHITECTURE SYN OF lpm_constant1 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (1 DOWNTO 0); + + + + COMPONENT lpm_constant + GENERIC ( + lpm_cvalue : NATURAL; + lpm_hint : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + result : OUT STD_LOGIC_VECTOR (1 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + result <= sub_wire0(1 DOWNTO 0); + + lpm_constant_component : lpm_constant + GENERIC MAP ( + lpm_cvalue => 0, + lpm_hint => "ENABLE_RUNTIME_MOD=NO", + lpm_type => "LPM_CONSTANT", + lpm_width => 2 + ) + PORT MAP ( + result => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +-- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +-- Retrieval info: PRIVATE: Radix NUMERIC "2" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: Value NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "2" +-- Retrieval info: CONSTANT: LPM_CVALUE NUMERIC "0" +-- Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_CONSTANT" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "2" +-- Retrieval info: USED_PORT: result 0 0 2 0 OUTPUT NODEFVAL result[1..0] +-- Retrieval info: CONNECT: result 0 0 2 0 @result 0 0 2 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant1.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant1.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant1.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant1.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant1_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_constant2.bsf b/FPGA_quartus/Video/lpm_constant2.bsf new file mode 100644 index 0000000..a4b7697 --- /dev/null +++ b/FPGA_quartus/Video/lpm_constant2.bsf @@ -0,0 +1,42 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 96 48) + (text "lpm_constant2" (rect 6 1 106 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 32 25 44)(font "Arial" )) + (port + (pt 96 24) + (output) + (text "result[7..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "result[7..0]" (rect 93 -25 106 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 96 24)(pt 80 24)(line_width 3)) + ) + (drawing + (text "0" (rect 75 18 80 30)(font "Arial" )) + (text "8" (rect 87 25 92 37)(font "Arial" )) + (line (pt 16 16)(pt 80 16)(line_width 1)) + (line (pt 80 16)(pt 80 32)(line_width 1)) + (line (pt 80 32)(pt 16 32)(line_width 1)) + (line (pt 16 32)(pt 16 16)(line_width 1)) + (line (pt 82 28)(pt 90 20)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_constant2.cmp b/FPGA_quartus/Video/lpm_constant2.cmp new file mode 100644 index 0000000..63cc406 --- /dev/null +++ b/FPGA_quartus/Video/lpm_constant2.cmp @@ -0,0 +1,21 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_constant2 + PORT + ( + result : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_constant2.qip b/FPGA_quartus/Video/lpm_constant2.qip new file mode 100644 index 0000000..ad38485 --- /dev/null +++ b/FPGA_quartus/Video/lpm_constant2.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_CONSTANT" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_constant2.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_constant2.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_constant2.cmp"] diff --git a/FPGA_quartus/Video/lpm_constant2.vhd b/FPGA_quartus/Video/lpm_constant2.vhd new file mode 100644 index 0000000..f25e68f --- /dev/null +++ b/FPGA_quartus/Video/lpm_constant2.vhd @@ -0,0 +1,108 @@ +-- megafunction wizard: %LPM_CONSTANT% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_constant + +-- ============================================================ +-- File Name: lpm_constant2.vhd +-- Megafunction Name(s): +-- lpm_constant +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_constant2 IS + PORT + ( + result : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) + ); +END lpm_constant2; + + +ARCHITECTURE SYN OF lpm_constant2 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0); + + + + COMPONENT lpm_constant + GENERIC ( + lpm_cvalue : NATURAL; + lpm_hint : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + result : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + result <= sub_wire0(7 DOWNTO 0); + + lpm_constant_component : lpm_constant + GENERIC MAP ( + lpm_cvalue => 0, + lpm_hint => "ENABLE_RUNTIME_MOD=NO", + lpm_type => "LPM_CONSTANT", + lpm_width => 8 + ) + PORT MAP ( + result => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +-- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +-- Retrieval info: PRIVATE: Radix NUMERIC "2" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: Value NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "8" +-- Retrieval info: CONSTANT: LPM_CVALUE NUMERIC "0" +-- Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_CONSTANT" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "8" +-- Retrieval info: USED_PORT: result 0 0 8 0 OUTPUT NODEFVAL result[7..0] +-- Retrieval info: CONNECT: result 0 0 8 0 @result 0 0 8 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant2.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant2.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant2.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant2.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant2_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_constant3.bsf b/FPGA_quartus/Video/lpm_constant3.bsf new file mode 100644 index 0000000..7616869 --- /dev/null +++ b/FPGA_quartus/Video/lpm_constant3.bsf @@ -0,0 +1,42 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 96 48) + (text "lpm_constant3" (rect 6 1 106 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 32 25 44)(font "Arial" )) + (port + (pt 96 24) + (output) + (text "result[6..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "result[6..0]" (rect 93 -25 106 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 96 24)(pt 80 24)(line_width 3)) + ) + (drawing + (text "0" (rect 75 18 80 30)(font "Arial" )) + (text "7" (rect 87 25 92 37)(font "Arial" )) + (line (pt 16 16)(pt 80 16)(line_width 1)) + (line (pt 80 16)(pt 80 32)(line_width 1)) + (line (pt 80 32)(pt 16 32)(line_width 1)) + (line (pt 16 32)(pt 16 16)(line_width 1)) + (line (pt 82 28)(pt 90 20)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_constant3.cmp b/FPGA_quartus/Video/lpm_constant3.cmp new file mode 100644 index 0000000..0e2f877 --- /dev/null +++ b/FPGA_quartus/Video/lpm_constant3.cmp @@ -0,0 +1,21 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_constant3 + PORT + ( + result : OUT STD_LOGIC_VECTOR (6 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_constant3.qip b/FPGA_quartus/Video/lpm_constant3.qip new file mode 100644 index 0000000..615a781 --- /dev/null +++ b/FPGA_quartus/Video/lpm_constant3.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_CONSTANT" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_constant3.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_constant3.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_constant3.cmp"] diff --git a/FPGA_quartus/Video/lpm_constant3.vhd b/FPGA_quartus/Video/lpm_constant3.vhd new file mode 100644 index 0000000..5d47d8e --- /dev/null +++ b/FPGA_quartus/Video/lpm_constant3.vhd @@ -0,0 +1,108 @@ +-- megafunction wizard: %LPM_CONSTANT% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_constant + +-- ============================================================ +-- File Name: lpm_constant3.vhd +-- Megafunction Name(s): +-- lpm_constant +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_constant3 IS + PORT + ( + result : OUT STD_LOGIC_VECTOR (6 DOWNTO 0) + ); +END lpm_constant3; + + +ARCHITECTURE SYN OF lpm_constant3 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (6 DOWNTO 0); + + + + COMPONENT lpm_constant + GENERIC ( + lpm_cvalue : NATURAL; + lpm_hint : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + result : OUT STD_LOGIC_VECTOR (6 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + result <= sub_wire0(6 DOWNTO 0); + + lpm_constant_component : lpm_constant + GENERIC MAP ( + lpm_cvalue => 0, + lpm_hint => "ENABLE_RUNTIME_MOD=NO", + lpm_type => "LPM_CONSTANT", + lpm_width => 7 + ) + PORT MAP ( + result => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +-- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +-- Retrieval info: PRIVATE: Radix NUMERIC "2" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: Value NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "7" +-- Retrieval info: CONSTANT: LPM_CVALUE NUMERIC "0" +-- Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_CONSTANT" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "7" +-- Retrieval info: USED_PORT: result 0 0 7 0 OUTPUT NODEFVAL result[6..0] +-- Retrieval info: CONNECT: result 0 0 7 0 @result 0 0 7 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant3.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant3.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant3.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant3.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant3_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_constant4.bsf b/FPGA_quartus/Video/lpm_constant4.bsf new file mode 100644 index 0000000..181c667 --- /dev/null +++ b/FPGA_quartus/Video/lpm_constant4.bsf @@ -0,0 +1,42 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 96 48) + (text "lpm_constant4" (rect 6 1 106 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 32 25 44)(font "Arial" )) + (port + (pt 96 24) + (output) + (text "result[10..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "result[10..0]" (rect 93 -31 106 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 96 24)(pt 80 24)(line_width 3)) + ) + (drawing + (text "2040" (rect 60 18 80 30)(font "Arial" )) + (text "11" (rect 85 25 95 37)(font "Arial" )) + (line (pt 16 16)(pt 80 16)(line_width 1)) + (line (pt 80 16)(pt 80 32)(line_width 1)) + (line (pt 80 32)(pt 16 32)(line_width 1)) + (line (pt 16 32)(pt 16 16)(line_width 1)) + (line (pt 80 28)(pt 88 20)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_constant4.cmp b/FPGA_quartus/Video/lpm_constant4.cmp new file mode 100644 index 0000000..fd7f4cd --- /dev/null +++ b/FPGA_quartus/Video/lpm_constant4.cmp @@ -0,0 +1,21 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_constant4 + PORT + ( + result : OUT STD_LOGIC_VECTOR (10 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_constant4.inc b/FPGA_quartus/Video/lpm_constant4.inc new file mode 100644 index 0000000..a913739 --- /dev/null +++ b/FPGA_quartus/Video/lpm_constant4.inc @@ -0,0 +1,23 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_constant4 +( + +) + +RETURNS ( + result[10..0] +); diff --git a/FPGA_quartus/Video/lpm_constant4.qip b/FPGA_quartus/Video/lpm_constant4.qip new file mode 100644 index 0000000..44fa63f --- /dev/null +++ b/FPGA_quartus/Video/lpm_constant4.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_CONSTANT" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_constant4.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_constant4.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_constant4.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_constant4.cmp"] diff --git a/FPGA_quartus/Video/lpm_constant4.vhd b/FPGA_quartus/Video/lpm_constant4.vhd new file mode 100644 index 0000000..e0fc73d --- /dev/null +++ b/FPGA_quartus/Video/lpm_constant4.vhd @@ -0,0 +1,108 @@ +-- megafunction wizard: %LPM_CONSTANT% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_constant + +-- ============================================================ +-- File Name: lpm_constant4.vhd +-- Megafunction Name(s): +-- lpm_constant +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_constant4 IS + PORT + ( + result : OUT STD_LOGIC_VECTOR (10 DOWNTO 0) + ); +END lpm_constant4; + + +ARCHITECTURE SYN OF lpm_constant4 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (10 DOWNTO 0); + + + + COMPONENT lpm_constant + GENERIC ( + lpm_cvalue : NATURAL; + lpm_hint : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + result : OUT STD_LOGIC_VECTOR (10 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + result <= sub_wire0(10 DOWNTO 0); + + lpm_constant_component : lpm_constant + GENERIC MAP ( + lpm_cvalue => 2040, + lpm_hint => "ENABLE_RUNTIME_MOD=NO", + lpm_type => "LPM_CONSTANT", + lpm_width => 11 + ) + PORT MAP ( + result => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +-- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +-- Retrieval info: PRIVATE: Radix NUMERIC "10" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: Value NUMERIC "2040" +-- Retrieval info: PRIVATE: nBit NUMERIC "11" +-- Retrieval info: CONSTANT: LPM_CVALUE NUMERIC "2040" +-- Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_CONSTANT" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "11" +-- Retrieval info: USED_PORT: result 0 0 11 0 OUTPUT NODEFVAL result[10..0] +-- Retrieval info: CONNECT: result 0 0 11 0 @result 0 0 11 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant4.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant4.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant4.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant4.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_constant4_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_ff0.bsf b/FPGA_quartus/Video/lpm_ff0.bsf new file mode 100644 index 0000000..6675606 --- /dev/null +++ b/FPGA_quartus/Video/lpm_ff0.bsf @@ -0,0 +1,63 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 144 96) + (text "lpm_ff0" (rect 52 1 100 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 80 25 92)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[31..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "data[31..0]" (rect 20 26 71 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 49 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 0 64) + (input) + (text "enable" (rect 0 0 37 14)(font "Arial" (font_size 8))) + (text "enable" (rect 20 58 53 71)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)(line_width 1)) + ) + (port + (pt 144 56) + (output) + (text "q[31..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "q[31..0]" (rect 89 50 125 63)(font "Arial" (font_size 8))) + (line (pt 144 56)(pt 128 56)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 128 29)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 80)(line_width 1)) + (line (pt 128 80)(pt 16 80)(line_width 1)) + (line (pt 16 80)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_ff0.cmp b/FPGA_quartus/Video/lpm_ff0.cmp new file mode 100644 index 0000000..0d8e769 --- /dev/null +++ b/FPGA_quartus/Video/lpm_ff0.cmp @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_ff0 + PORT + ( + clock : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + enable : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (31 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_ff0.qip b/FPGA_quartus/Video/lpm_ff0.qip new file mode 100644 index 0000000..d33c680 --- /dev/null +++ b/FPGA_quartus/Video/lpm_ff0.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_FF" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_ff0.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff0.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff0.cmp"] diff --git a/FPGA_quartus/Video/lpm_ff0.vhd b/FPGA_quartus/Video/lpm_ff0.vhd new file mode 100644 index 0000000..4c17d8f --- /dev/null +++ b/FPGA_quartus/Video/lpm_ff0.vhd @@ -0,0 +1,127 @@ +-- megafunction wizard: %LPM_FF% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_ff + +-- ============================================================ +-- File Name: lpm_ff0.vhd +-- Megafunction Name(s): +-- lpm_ff +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_ff0 IS + PORT + ( + clock : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + enable : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (31 DOWNTO 0) + ); +END lpm_ff0; + + +ARCHITECTURE SYN OF lpm_ff0 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (31 DOWNTO 0); + + + + COMPONENT lpm_ff + GENERIC ( + lpm_fftype : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + enable : IN STD_LOGIC ; + clock : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (31 DOWNTO 0); + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(31 DOWNTO 0); + + lpm_ff_component : lpm_ff + GENERIC MAP ( + lpm_fftype => "DFF", + lpm_type => "LPM_FF", + lpm_width => 32 + ) + PORT MAP ( + enable => enable, + clock => clock, + data => data, + q => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACLR NUMERIC "0" +-- Retrieval info: PRIVATE: ALOAD NUMERIC "0" +-- Retrieval info: PRIVATE: ASET NUMERIC "0" +-- Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: CLK_EN NUMERIC "1" +-- Retrieval info: PRIVATE: DFF NUMERIC "1" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SCLR NUMERIC "0" +-- Retrieval info: PRIVATE: SLOAD NUMERIC "0" +-- Retrieval info: PRIVATE: SSET NUMERIC "0" +-- Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: UseTFFdataPort NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "32" +-- Retrieval info: CONSTANT: LPM_FFTYPE STRING "DFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_FF" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "32" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: data 0 0 32 0 INPUT NODEFVAL data[31..0] +-- Retrieval info: USED_PORT: enable 0 0 0 0 INPUT NODEFVAL enable +-- Retrieval info: USED_PORT: q 0 0 32 0 OUTPUT NODEFVAL q[31..0] +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: q 0 0 32 0 @q 0 0 32 0 +-- Retrieval info: CONNECT: @enable 0 0 0 0 enable 0 0 0 0 +-- Retrieval info: CONNECT: @data 0 0 32 0 data 0 0 32 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff0.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff0.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff0.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff0.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff0_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_ff1.bsf b/FPGA_quartus/Video/lpm_ff1.bsf new file mode 100644 index 0000000..947a023 --- /dev/null +++ b/FPGA_quartus/Video/lpm_ff1.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 144 80) + (text "lpm_ff1" (rect 52 1 100 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 64 25 76)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[31..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "data[31..0]" (rect 20 26 71 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 49 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "q[31..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "q[31..0]" (rect 89 42 125 55)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 128 29)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_ff1.cmp b/FPGA_quartus/Video/lpm_ff1.cmp new file mode 100644 index 0000000..4b25f14 --- /dev/null +++ b/FPGA_quartus/Video/lpm_ff1.cmp @@ -0,0 +1,23 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_ff1 + PORT + ( + clock : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + q : OUT STD_LOGIC_VECTOR (31 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_ff1.qip b/FPGA_quartus/Video/lpm_ff1.qip new file mode 100644 index 0000000..94b30af --- /dev/null +++ b/FPGA_quartus/Video/lpm_ff1.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_FF" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_ff1.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff1.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff1.cmp"] diff --git a/FPGA_quartus/Video/lpm_ff1.vhd b/FPGA_quartus/Video/lpm_ff1.vhd new file mode 100644 index 0000000..da02a15 --- /dev/null +++ b/FPGA_quartus/Video/lpm_ff1.vhd @@ -0,0 +1,122 @@ +-- megafunction wizard: %LPM_FF% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_ff + +-- ============================================================ +-- File Name: lpm_ff1.vhd +-- Megafunction Name(s): +-- lpm_ff +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_ff1 IS + PORT + ( + clock : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + q : OUT STD_LOGIC_VECTOR (31 DOWNTO 0) + ); +END lpm_ff1; + + +ARCHITECTURE SYN OF lpm_ff1 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (31 DOWNTO 0); + + + + COMPONENT lpm_ff + GENERIC ( + lpm_fftype : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + clock : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (31 DOWNTO 0); + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(31 DOWNTO 0); + + lpm_ff_component : lpm_ff + GENERIC MAP ( + lpm_fftype => "DFF", + lpm_type => "LPM_FF", + lpm_width => 32 + ) + PORT MAP ( + clock => clock, + data => data, + q => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACLR NUMERIC "0" +-- Retrieval info: PRIVATE: ALOAD NUMERIC "0" +-- Retrieval info: PRIVATE: ASET NUMERIC "0" +-- Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +-- Retrieval info: PRIVATE: DFF NUMERIC "1" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SCLR NUMERIC "0" +-- Retrieval info: PRIVATE: SLOAD NUMERIC "0" +-- Retrieval info: PRIVATE: SSET NUMERIC "0" +-- Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: UseTFFdataPort NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "32" +-- Retrieval info: CONSTANT: LPM_FFTYPE STRING "DFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_FF" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "32" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: data 0 0 32 0 INPUT NODEFVAL data[31..0] +-- Retrieval info: USED_PORT: q 0 0 32 0 OUTPUT NODEFVAL q[31..0] +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: q 0 0 32 0 @q 0 0 32 0 +-- Retrieval info: CONNECT: @data 0 0 32 0 data 0 0 32 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff1.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff1.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff1.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff1.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff1_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_ff2.bsf b/FPGA_quartus/Video/lpm_ff2.bsf new file mode 100644 index 0000000..b52c75b --- /dev/null +++ b/FPGA_quartus/Video/lpm_ff2.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 144 80) + (text "lpm_ff2" (rect 52 1 100 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 64 25 76)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[127..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data[127..0]" (rect 20 26 77 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 49 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "q[127..0]" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "q[127..0]" (rect 83 42 125 55)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 128 29)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_ff2.cmp b/FPGA_quartus/Video/lpm_ff2.cmp new file mode 100644 index 0000000..6b5b979 --- /dev/null +++ b/FPGA_quartus/Video/lpm_ff2.cmp @@ -0,0 +1,23 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_ff2 + PORT + ( + clock : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + q : OUT STD_LOGIC_VECTOR (127 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_ff2.qip b/FPGA_quartus/Video/lpm_ff2.qip new file mode 100644 index 0000000..9c46273 --- /dev/null +++ b/FPGA_quartus/Video/lpm_ff2.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_FF" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_ff2.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff2.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff2.cmp"] diff --git a/FPGA_quartus/Video/lpm_ff2.vhd b/FPGA_quartus/Video/lpm_ff2.vhd new file mode 100644 index 0000000..27b4c3a --- /dev/null +++ b/FPGA_quartus/Video/lpm_ff2.vhd @@ -0,0 +1,122 @@ +-- megafunction wizard: %LPM_FF% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_ff + +-- ============================================================ +-- File Name: lpm_ff2.vhd +-- Megafunction Name(s): +-- lpm_ff +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_ff2 IS + PORT + ( + clock : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + q : OUT STD_LOGIC_VECTOR (127 DOWNTO 0) + ); +END lpm_ff2; + + +ARCHITECTURE SYN OF lpm_ff2 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (127 DOWNTO 0); + + + + COMPONENT lpm_ff + GENERIC ( + lpm_fftype : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + clock : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (127 DOWNTO 0); + data : IN STD_LOGIC_VECTOR (127 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(127 DOWNTO 0); + + lpm_ff_component : lpm_ff + GENERIC MAP ( + lpm_fftype => "DFF", + lpm_type => "LPM_FF", + lpm_width => 128 + ) + PORT MAP ( + clock => clock, + data => data, + q => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACLR NUMERIC "0" +-- Retrieval info: PRIVATE: ALOAD NUMERIC "0" +-- Retrieval info: PRIVATE: ASET NUMERIC "0" +-- Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +-- Retrieval info: PRIVATE: DFF NUMERIC "1" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SCLR NUMERIC "0" +-- Retrieval info: PRIVATE: SLOAD NUMERIC "0" +-- Retrieval info: PRIVATE: SSET NUMERIC "0" +-- Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: UseTFFdataPort NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "128" +-- Retrieval info: CONSTANT: LPM_FFTYPE STRING "DFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_FF" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "128" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: data 0 0 128 0 INPUT NODEFVAL data[127..0] +-- Retrieval info: USED_PORT: q 0 0 128 0 OUTPUT NODEFVAL q[127..0] +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: q 0 0 128 0 @q 0 0 128 0 +-- Retrieval info: CONNECT: @data 0 0 128 0 data 0 0 128 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff2.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff2.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff2.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff2.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff2_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_ff3.bsf b/FPGA_quartus/Video/lpm_ff3.bsf new file mode 100644 index 0000000..51248ea --- /dev/null +++ b/FPGA_quartus/Video/lpm_ff3.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 144 80) + (text "lpm_ff3" (rect 52 1 100 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 64 25 76)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[23..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "data[23..0]" (rect 20 26 71 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 49 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "q[23..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "q[23..0]" (rect 89 42 125 55)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 128 29)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_ff3.cmp b/FPGA_quartus/Video/lpm_ff3.cmp new file mode 100644 index 0000000..b3b5513 --- /dev/null +++ b/FPGA_quartus/Video/lpm_ff3.cmp @@ -0,0 +1,23 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_ff3 + PORT + ( + clock : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + q : OUT STD_LOGIC_VECTOR (23 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_ff3.qip b/FPGA_quartus/Video/lpm_ff3.qip new file mode 100644 index 0000000..98d1312 --- /dev/null +++ b/FPGA_quartus/Video/lpm_ff3.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_FF" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_ff3.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff3.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff3.cmp"] diff --git a/FPGA_quartus/Video/lpm_ff3.vhd b/FPGA_quartus/Video/lpm_ff3.vhd new file mode 100644 index 0000000..a86b4ee --- /dev/null +++ b/FPGA_quartus/Video/lpm_ff3.vhd @@ -0,0 +1,122 @@ +-- megafunction wizard: %LPM_FF% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_ff + +-- ============================================================ +-- File Name: lpm_ff3.vhd +-- Megafunction Name(s): +-- lpm_ff +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_ff3 IS + PORT + ( + clock : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + q : OUT STD_LOGIC_VECTOR (23 DOWNTO 0) + ); +END lpm_ff3; + + +ARCHITECTURE SYN OF lpm_ff3 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (23 DOWNTO 0); + + + + COMPONENT lpm_ff + GENERIC ( + lpm_fftype : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + clock : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (23 DOWNTO 0); + data : IN STD_LOGIC_VECTOR (23 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(23 DOWNTO 0); + + lpm_ff_component : lpm_ff + GENERIC MAP ( + lpm_fftype => "DFF", + lpm_type => "LPM_FF", + lpm_width => 24 + ) + PORT MAP ( + clock => clock, + data => data, + q => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACLR NUMERIC "0" +-- Retrieval info: PRIVATE: ALOAD NUMERIC "0" +-- Retrieval info: PRIVATE: ASET NUMERIC "0" +-- Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +-- Retrieval info: PRIVATE: DFF NUMERIC "1" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SCLR NUMERIC "0" +-- Retrieval info: PRIVATE: SLOAD NUMERIC "0" +-- Retrieval info: PRIVATE: SSET NUMERIC "0" +-- Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: UseTFFdataPort NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "24" +-- Retrieval info: CONSTANT: LPM_FFTYPE STRING "DFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_FF" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "24" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: data 0 0 24 0 INPUT NODEFVAL data[23..0] +-- Retrieval info: USED_PORT: q 0 0 24 0 OUTPUT NODEFVAL q[23..0] +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: q 0 0 24 0 @q 0 0 24 0 +-- Retrieval info: CONNECT: @data 0 0 24 0 data 0 0 24 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff3.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff3.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff3.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff3.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff3_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_ff4.bsf b/FPGA_quartus/Video/lpm_ff4.bsf new file mode 100644 index 0000000..be432cb --- /dev/null +++ b/FPGA_quartus/Video/lpm_ff4.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 144 80) + (text "lpm_ff4" (rect 52 1 100 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 64 25 76)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[15..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "data[15..0]" (rect 20 26 71 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 49 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "q[15..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "q[15..0]" (rect 89 42 125 55)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 128 29)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_ff4.cmp b/FPGA_quartus/Video/lpm_ff4.cmp new file mode 100644 index 0000000..f3a15e2 --- /dev/null +++ b/FPGA_quartus/Video/lpm_ff4.cmp @@ -0,0 +1,23 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_ff4 + PORT + ( + clock : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + q : OUT STD_LOGIC_VECTOR (15 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_ff4.inc b/FPGA_quartus/Video/lpm_ff4.inc new file mode 100644 index 0000000..ea243d6 --- /dev/null +++ b/FPGA_quartus/Video/lpm_ff4.inc @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_ff4 +( + clock, + data[15..0] +) + +RETURNS ( + q[15..0] +); diff --git a/FPGA_quartus/Video/lpm_ff4.qip b/FPGA_quartus/Video/lpm_ff4.qip new file mode 100644 index 0000000..f5a0a35 --- /dev/null +++ b/FPGA_quartus/Video/lpm_ff4.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_FF" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_ff4.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff4.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff4.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff4.cmp"] diff --git a/FPGA_quartus/Video/lpm_ff4.vhd b/FPGA_quartus/Video/lpm_ff4.vhd new file mode 100644 index 0000000..a738a64 --- /dev/null +++ b/FPGA_quartus/Video/lpm_ff4.vhd @@ -0,0 +1,122 @@ +-- megafunction wizard: %LPM_FF% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_ff + +-- ============================================================ +-- File Name: lpm_ff4.vhd +-- Megafunction Name(s): +-- lpm_ff +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_ff4 IS + PORT + ( + clock : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + q : OUT STD_LOGIC_VECTOR (15 DOWNTO 0) + ); +END lpm_ff4; + + +ARCHITECTURE SYN OF lpm_ff4 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (15 DOWNTO 0); + + + + COMPONENT lpm_ff + GENERIC ( + lpm_fftype : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + clock : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (15 DOWNTO 0); + data : IN STD_LOGIC_VECTOR (15 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(15 DOWNTO 0); + + lpm_ff_component : lpm_ff + GENERIC MAP ( + lpm_fftype => "DFF", + lpm_type => "LPM_FF", + lpm_width => 16 + ) + PORT MAP ( + clock => clock, + data => data, + q => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACLR NUMERIC "0" +-- Retrieval info: PRIVATE: ALOAD NUMERIC "0" +-- Retrieval info: PRIVATE: ASET NUMERIC "0" +-- Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +-- Retrieval info: PRIVATE: DFF NUMERIC "1" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SCLR NUMERIC "0" +-- Retrieval info: PRIVATE: SLOAD NUMERIC "0" +-- Retrieval info: PRIVATE: SSET NUMERIC "0" +-- Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: UseTFFdataPort NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "16" +-- Retrieval info: CONSTANT: LPM_FFTYPE STRING "DFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_FF" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "16" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: data 0 0 16 0 INPUT NODEFVAL data[15..0] +-- Retrieval info: USED_PORT: q 0 0 16 0 OUTPUT NODEFVAL q[15..0] +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: q 0 0 16 0 @q 0 0 16 0 +-- Retrieval info: CONNECT: @data 0 0 16 0 data 0 0 16 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff4.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff4.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff4.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff4.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff4_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_ff5.bsf b/FPGA_quartus/Video/lpm_ff5.bsf new file mode 100644 index 0000000..a69af6e --- /dev/null +++ b/FPGA_quartus/Video/lpm_ff5.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 144 80) + (text "lpm_ff5" (rect 52 1 100 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 64 25 76)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[7..0]" (rect 0 0 53 14)(font "Arial" (font_size 8))) + (text "data[7..0]" (rect 20 26 65 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 49 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "q[7..0]" (rect 0 0 35 14)(font "Arial" (font_size 8))) + (text "q[7..0]" (rect 95 42 125 55)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 128 29)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_ff5.cmp b/FPGA_quartus/Video/lpm_ff5.cmp new file mode 100644 index 0000000..6ad77c9 --- /dev/null +++ b/FPGA_quartus/Video/lpm_ff5.cmp @@ -0,0 +1,23 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_ff5 + PORT + ( + clock : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_ff5.inc b/FPGA_quartus/Video/lpm_ff5.inc new file mode 100644 index 0000000..f65f941 --- /dev/null +++ b/FPGA_quartus/Video/lpm_ff5.inc @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_ff5 +( + clock, + data[7..0] +) + +RETURNS ( + q[7..0] +); diff --git a/FPGA_quartus/Video/lpm_ff5.qip b/FPGA_quartus/Video/lpm_ff5.qip new file mode 100644 index 0000000..0d13267 --- /dev/null +++ b/FPGA_quartus/Video/lpm_ff5.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_FF" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_ff5.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff5.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff5.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff5.cmp"] diff --git a/FPGA_quartus/Video/lpm_ff5.vhd b/FPGA_quartus/Video/lpm_ff5.vhd new file mode 100644 index 0000000..96063a2 --- /dev/null +++ b/FPGA_quartus/Video/lpm_ff5.vhd @@ -0,0 +1,122 @@ +-- megafunction wizard: %LPM_FF% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_ff + +-- ============================================================ +-- File Name: lpm_ff5.vhd +-- Megafunction Name(s): +-- lpm_ff +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_ff5 IS + PORT + ( + clock : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) + ); +END lpm_ff5; + + +ARCHITECTURE SYN OF lpm_ff5 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0); + + + + COMPONENT lpm_ff + GENERIC ( + lpm_fftype : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + clock : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0); + data : IN STD_LOGIC_VECTOR (7 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(7 DOWNTO 0); + + lpm_ff_component : lpm_ff + GENERIC MAP ( + lpm_fftype => "DFF", + lpm_type => "LPM_FF", + lpm_width => 8 + ) + PORT MAP ( + clock => clock, + data => data, + q => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACLR NUMERIC "0" +-- Retrieval info: PRIVATE: ALOAD NUMERIC "0" +-- Retrieval info: PRIVATE: ASET NUMERIC "0" +-- Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +-- Retrieval info: PRIVATE: DFF NUMERIC "1" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SCLR NUMERIC "0" +-- Retrieval info: PRIVATE: SLOAD NUMERIC "0" +-- Retrieval info: PRIVATE: SSET NUMERIC "0" +-- Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: UseTFFdataPort NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "8" +-- Retrieval info: CONSTANT: LPM_FFTYPE STRING "DFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_FF" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "8" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: data 0 0 8 0 INPUT NODEFVAL data[7..0] +-- Retrieval info: USED_PORT: q 0 0 8 0 OUTPUT NODEFVAL q[7..0] +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: q 0 0 8 0 @q 0 0 8 0 +-- Retrieval info: CONNECT: @data 0 0 8 0 data 0 0 8 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff5.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff5.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff5.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff5.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff5_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_ff6.bsf b/FPGA_quartus/Video/lpm_ff6.bsf new file mode 100644 index 0000000..73a2df0 --- /dev/null +++ b/FPGA_quartus/Video/lpm_ff6.bsf @@ -0,0 +1,63 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 144 96) + (text "lpm_ff6" (rect 52 1 100 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 80 25 92)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[127..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data[127..0]" (rect 20 26 77 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 49 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 0 64) + (input) + (text "enable" (rect 0 0 37 14)(font "Arial" (font_size 8))) + (text "enable" (rect 20 58 53 71)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)(line_width 1)) + ) + (port + (pt 144 56) + (output) + (text "q[127..0]" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "q[127..0]" (rect 83 50 125 63)(font "Arial" (font_size 8))) + (line (pt 144 56)(pt 128 56)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 128 29)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 80)(line_width 1)) + (line (pt 128 80)(pt 16 80)(line_width 1)) + (line (pt 16 80)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_ff6.cmp b/FPGA_quartus/Video/lpm_ff6.cmp new file mode 100644 index 0000000..50df3ad --- /dev/null +++ b/FPGA_quartus/Video/lpm_ff6.cmp @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_ff6 + PORT + ( + clock : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + enable : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (127 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_ff6.inc b/FPGA_quartus/Video/lpm_ff6.inc new file mode 100644 index 0000000..c8a5a36 --- /dev/null +++ b/FPGA_quartus/Video/lpm_ff6.inc @@ -0,0 +1,25 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_ff6 +( + clock, + data[127..0], + enable +) + +RETURNS ( + q[127..0] +); diff --git a/FPGA_quartus/Video/lpm_ff6.qip b/FPGA_quartus/Video/lpm_ff6.qip new file mode 100644 index 0000000..08e02f0 --- /dev/null +++ b/FPGA_quartus/Video/lpm_ff6.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_FF" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_ff6.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff6.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff6.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_ff6.cmp"] diff --git a/FPGA_quartus/Video/lpm_ff6.vhd b/FPGA_quartus/Video/lpm_ff6.vhd new file mode 100644 index 0000000..5cc384d --- /dev/null +++ b/FPGA_quartus/Video/lpm_ff6.vhd @@ -0,0 +1,127 @@ +-- megafunction wizard: %LPM_FF% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_ff + +-- ============================================================ +-- File Name: lpm_ff6.vhd +-- Megafunction Name(s): +-- lpm_ff +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_ff6 IS + PORT + ( + clock : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + enable : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (127 DOWNTO 0) + ); +END lpm_ff6; + + +ARCHITECTURE SYN OF lpm_ff6 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (127 DOWNTO 0); + + + + COMPONENT lpm_ff + GENERIC ( + lpm_fftype : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + enable : IN STD_LOGIC ; + clock : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (127 DOWNTO 0); + data : IN STD_LOGIC_VECTOR (127 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(127 DOWNTO 0); + + lpm_ff_component : lpm_ff + GENERIC MAP ( + lpm_fftype => "DFF", + lpm_type => "LPM_FF", + lpm_width => 128 + ) + PORT MAP ( + enable => enable, + clock => clock, + data => data, + q => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACLR NUMERIC "0" +-- Retrieval info: PRIVATE: ALOAD NUMERIC "0" +-- Retrieval info: PRIVATE: ASET NUMERIC "0" +-- Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: CLK_EN NUMERIC "1" +-- Retrieval info: PRIVATE: DFF NUMERIC "1" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SCLR NUMERIC "0" +-- Retrieval info: PRIVATE: SLOAD NUMERIC "0" +-- Retrieval info: PRIVATE: SSET NUMERIC "0" +-- Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: UseTFFdataPort NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "128" +-- Retrieval info: CONSTANT: LPM_FFTYPE STRING "DFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_FF" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "128" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: data 0 0 128 0 INPUT NODEFVAL data[127..0] +-- Retrieval info: USED_PORT: enable 0 0 0 0 INPUT NODEFVAL enable +-- Retrieval info: USED_PORT: q 0 0 128 0 OUTPUT NODEFVAL q[127..0] +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: q 0 0 128 0 @q 0 0 128 0 +-- Retrieval info: CONNECT: @enable 0 0 0 0 enable 0 0 0 0 +-- Retrieval info: CONNECT: @data 0 0 128 0 data 0 0 128 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff6.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff6.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff6.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff6.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_ff6_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_fifoDZ.bsf b/FPGA_quartus/Video/lpm_fifoDZ.bsf new file mode 100644 index 0000000..1e24640 --- /dev/null +++ b/FPGA_quartus/Video/lpm_fifoDZ.bsf @@ -0,0 +1,79 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2010 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 160 144) + (text "lpm_fifoDZ" (rect 41 2 133 21)(font "Arial" (font_size 10))) + (text "inst" (rect 8 125 31 140)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[127..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) + (text "data[127..0]" (rect 20 24 89 40)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "wrreq" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "wrreq" (rect 20 48 51 64)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 16 56)(line_width 1)) + ) + (port + (pt 0 72) + (input) + (text "rdreq" (rect 0 0 34 16)(font "Arial" (font_size 8))) + (text "rdreq" (rect 20 64 49 80)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 16 72)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 88 57 104)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)(line_width 1)) + ) + (port + (pt 0 120) + (input) + (text "aclr" (rect 0 0 24 16)(font "Arial" (font_size 8))) + (text "aclr" (rect 20 112 41 128)(font "Arial" (font_size 8))) + (line (pt 0 120)(pt 16 120)(line_width 1)) + ) + (port + (pt 160 32) + (output) + (text "q[127..0]" (rect 0 0 60 16)(font "Arial" (font_size 8))) + (text "q[127..0]" (rect 90 24 141 40)(font "Arial" (font_size 8))) + (line (pt 160 32)(pt 144 32)(line_width 3)) + ) + (drawing + (text "(ack)" (rect 51 67 76 81)(font "Arial" )) + (text "128 bits x 128 words" (rect 31 114 134 128)(font "Arial" )) + (line (pt 16 16)(pt 144 16)(line_width 1)) + (line (pt 144 16)(pt 144 128)(line_width 1)) + (line (pt 144 128)(pt 16 128)(line_width 1)) + (line (pt 16 128)(pt 16 16)(line_width 1)) + (line (pt 16 108)(pt 144 108)(line_width 1)) + (line (pt 16 90)(pt 22 96)(line_width 1)) + (line (pt 22 96)(pt 16 102)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_fifoDZ.cmp b/FPGA_quartus/Video/lpm_fifoDZ.cmp new file mode 100644 index 0000000..153e7c2 --- /dev/null +++ b/FPGA_quartus/Video/lpm_fifoDZ.cmp @@ -0,0 +1,26 @@ +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_fifoDZ + PORT + ( + aclr : IN STD_LOGIC ; + clock : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + rdreq : IN STD_LOGIC ; + wrreq : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (127 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_fifoDZ.qip b/FPGA_quartus/Video/lpm_fifoDZ.qip new file mode 100644 index 0000000..5444627 --- /dev/null +++ b/FPGA_quartus/Video/lpm_fifoDZ.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_FIFO+" +set_global_assignment -name IP_TOOL_VERSION "9.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_fifoDZ.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_fifoDZ.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_fifoDZ.cmp"] diff --git a/FPGA_quartus/Video/lpm_fifoDZ.vhd b/FPGA_quartus/Video/lpm_fifoDZ.vhd new file mode 100644 index 0000000..95486bb --- /dev/null +++ b/FPGA_quartus/Video/lpm_fifoDZ.vhd @@ -0,0 +1,178 @@ +-- megafunction wizard: %LPM_FIFO+% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: scfifo + +-- ============================================================ +-- File Name: lpm_fifoDZ.vhd +-- Megafunction Name(s): +-- scfifo +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 9.1 Build 350 03/24/2010 SP 2 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY lpm_fifoDZ IS + PORT + ( + aclr : IN STD_LOGIC ; + clock : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + rdreq : IN STD_LOGIC ; + wrreq : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (127 DOWNTO 0) + ); +END lpm_fifoDZ; + + +ARCHITECTURE SYN OF lpm_fifodz IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (127 DOWNTO 0); + + + + COMPONENT scfifo + GENERIC ( + add_ram_output_register : STRING; + intended_device_family : STRING; + lpm_numwords : NATURAL; + lpm_showahead : STRING; + lpm_type : STRING; + lpm_width : NATURAL; + lpm_widthu : NATURAL; + overflow_checking : STRING; + underflow_checking : STRING; + use_eab : STRING + ); + PORT ( + rdreq : IN STD_LOGIC ; + aclr : IN STD_LOGIC ; + clock : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (127 DOWNTO 0); + wrreq : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (127 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(127 DOWNTO 0); + + scfifo_component : scfifo + GENERIC MAP ( + add_ram_output_register => "OFF", + intended_device_family => "Cyclone III", + lpm_numwords => 128, + lpm_showahead => "ON", + lpm_type => "scfifo", + lpm_width => 128, + lpm_widthu => 7, + overflow_checking => "OFF", + underflow_checking => "OFF", + use_eab => "ON" + ) + PORT MAP ( + rdreq => rdreq, + aclr => aclr, + clock => clock, + wrreq => wrreq, + data => data, + q => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: AlmostEmpty NUMERIC "0" +-- Retrieval info: PRIVATE: AlmostEmptyThr NUMERIC "-1" +-- Retrieval info: PRIVATE: AlmostFull NUMERIC "0" +-- Retrieval info: PRIVATE: AlmostFullThr NUMERIC "-1" +-- Retrieval info: PRIVATE: CLOCKS_ARE_SYNCHRONIZED NUMERIC "1" +-- Retrieval info: PRIVATE: Clock NUMERIC "0" +-- Retrieval info: PRIVATE: Depth NUMERIC "128" +-- Retrieval info: PRIVATE: Empty NUMERIC "0" +-- Retrieval info: PRIVATE: Full NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: LE_BasedFIFO NUMERIC "0" +-- Retrieval info: PRIVATE: LegacyRREQ NUMERIC "0" +-- Retrieval info: PRIVATE: MAX_DEPTH_BY_9 NUMERIC "0" +-- Retrieval info: PRIVATE: OVERFLOW_CHECKING NUMERIC "1" +-- Retrieval info: PRIVATE: Optimize NUMERIC "2" +-- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: UNDERFLOW_CHECKING NUMERIC "1" +-- Retrieval info: PRIVATE: UsedW NUMERIC "0" +-- Retrieval info: PRIVATE: Width NUMERIC "128" +-- Retrieval info: PRIVATE: dc_aclr NUMERIC "0" +-- Retrieval info: PRIVATE: diff_widths NUMERIC "0" +-- Retrieval info: PRIVATE: msb_usedw NUMERIC "0" +-- Retrieval info: PRIVATE: output_width NUMERIC "128" +-- Retrieval info: PRIVATE: rsEmpty NUMERIC "1" +-- Retrieval info: PRIVATE: rsFull NUMERIC "0" +-- Retrieval info: PRIVATE: rsUsedW NUMERIC "0" +-- Retrieval info: PRIVATE: sc_aclr NUMERIC "1" +-- Retrieval info: PRIVATE: sc_sclr NUMERIC "0" +-- Retrieval info: PRIVATE: wsEmpty NUMERIC "0" +-- Retrieval info: PRIVATE: wsFull NUMERIC "1" +-- Retrieval info: PRIVATE: wsUsedW NUMERIC "0" +-- Retrieval info: CONSTANT: ADD_RAM_OUTPUT_REGISTER STRING "OFF" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_NUMWORDS NUMERIC "128" +-- Retrieval info: CONSTANT: LPM_SHOWAHEAD STRING "ON" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "scfifo" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "128" +-- Retrieval info: CONSTANT: LPM_WIDTHU NUMERIC "7" +-- Retrieval info: CONSTANT: OVERFLOW_CHECKING STRING "OFF" +-- Retrieval info: CONSTANT: UNDERFLOW_CHECKING STRING "OFF" +-- Retrieval info: CONSTANT: USE_EAB STRING "ON" +-- Retrieval info: USED_PORT: aclr 0 0 0 0 INPUT NODEFVAL aclr +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: data 0 0 128 0 INPUT NODEFVAL data[127..0] +-- Retrieval info: USED_PORT: q 0 0 128 0 OUTPUT NODEFVAL q[127..0] +-- Retrieval info: USED_PORT: rdreq 0 0 0 0 INPUT NODEFVAL rdreq +-- Retrieval info: USED_PORT: wrreq 0 0 0 0 INPUT NODEFVAL wrreq +-- Retrieval info: CONNECT: @data 0 0 128 0 data 0 0 128 0 +-- Retrieval info: CONNECT: q 0 0 128 0 @q 0 0 128 0 +-- Retrieval info: CONNECT: @wrreq 0 0 0 0 wrreq 0 0 0 0 +-- Retrieval info: CONNECT: @rdreq 0 0 0 0 rdreq 0 0 0 0 +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: @aclr 0 0 0 0 aclr 0 0 0 0 +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifoDZ.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifoDZ.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifoDZ.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifoDZ.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifoDZ_inst.vhd FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifoDZ_waveforms.html TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifoDZ_wave*.jpg FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_quartus/Video/lpm_fifoDZ_wave0.jpg b/FPGA_quartus/Video/lpm_fifoDZ_wave0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..63d8667e35986c03b7ebcb8480a483ab092ffa40 GIT binary patch literal 86257 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
+`aKo(Mc+=HM( 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 literal 0 HcmV?d00001 diff --git a/FPGA_quartus/Video/lpm_fifoDZ_waveforms.html b/FPGA_quartus/Video/lpm_fifoDZ_waveforms.html new file mode 100644 index 0000000..467441f --- /dev/null +++ b/FPGA_quartus/Video/lpm_fifoDZ_waveforms.html @@ -0,0 +1,13 @@ + + +Sample Waveforms for "lpm_fifoDZ.vhd" + + +

Sample behavioral waveforms for design file "lpm_fifoDZ.vhd"

+

The following waveforms show the behavior of scfifo megafunction for the chosen set of parameters in design "lpm_fifoDZ.vhd". The design "lpm_fifoDZ.vhd" has a depth of 128 words of 128 bits each. The fifo is in show-ahead synchronous mode. The data becomes available before 'rdreq' is asserted; 'rdreq' acts as a read acknowledge.

+
+

Fig. 1 : Wave showing read and write operation.

+

The above waveform shows the behavior of the design under normal read and write conditions with aclr .

+

+ + diff --git a/FPGA_quartus/Video/lpm_fifo_dc0.bsf b/FPGA_quartus/Video/lpm_fifo_dc0.bsf new file mode 100644 index 0000000..61b485b --- /dev/null +++ b/FPGA_quartus/Video/lpm_fifo_dc0.bsf @@ -0,0 +1,102 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 160 168) + (text "lpm_fifo_dc0" (rect 44 1 128 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 152 25 164)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[127..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data[127..0]" (rect 20 26 77 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "wrreq" (rect 0 0 35 14)(font "Arial" (font_size 8))) + (text "wrreq" (rect 20 50 45 63)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 16 56)(line_width 1)) + ) + (port + (pt 0 72) + (input) + (text "wrclk" (rect 0 0 31 14)(font "Arial" (font_size 8))) + (text "wrclk" (rect 26 66 48 79)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 16 72)(line_width 1)) + ) + (port + (pt 0 104) + (input) + (text "rdreq" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "rdreq" (rect 20 98 44 111)(font "Arial" (font_size 8))) + (line (pt 0 104)(pt 16 104)(line_width 1)) + ) + (port + (pt 0 120) + (input) + (text "rdclk" (rect 0 0 27 14)(font "Arial" (font_size 8))) + (text "rdclk" (rect 26 114 47 127)(font "Arial" (font_size 8))) + (line (pt 0 120)(pt 16 120)(line_width 1)) + ) + (port + (pt 0 144) + (input) + (text "aclr" (rect 0 0 21 14)(font "Arial" (font_size 8))) + (text "aclr" (rect 20 138 37 151)(font "Arial" (font_size 8))) + (line (pt 0 144)(pt 16 144)(line_width 1)) + ) + (port + (pt 160 72) + (output) + (text "wrusedw[8..0]" (rect 0 0 84 14)(font "Arial" (font_size 8))) + (text "wrusedw[8..0]" (rect 69 66 132 79)(font "Arial" (font_size 8))) + (line (pt 160 72)(pt 144 72)(line_width 3)) + ) + (port + (pt 160 96) + (output) + (text "q[127..0]" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "q[127..0]" (rect 99 90 141 103)(font "Arial" (font_size 8))) + (line (pt 160 96)(pt 144 96)(line_width 3)) + ) + (port + (pt 160 120) + (output) + (text "rdempty" (rect 0 0 46 14)(font "Arial" (font_size 8))) + (text "rdempty" (rect 102 114 140 127)(font "Arial" (font_size 8))) + (line (pt 160 120)(pt 144 120)(line_width 1)) + ) + (drawing + (text "128 bits x 512 words" (rect 58 140 144 152)(font "Arial" )) + (line (pt 16 16)(pt 144 16)(line_width 1)) + (line (pt 144 16)(pt 144 152)(line_width 1)) + (line (pt 144 152)(pt 16 152)(line_width 1)) + (line (pt 16 152)(pt 16 16)(line_width 1)) + (line (pt 16 84)(pt 144 84)(line_width 1)) + (line (pt 16 132)(pt 144 132)(line_width 1)) + (line (pt 16 66)(pt 22 72)(line_width 1)) + (line (pt 22 72)(pt 16 78)(line_width 1)) + (line (pt 16 114)(pt 22 120)(line_width 1)) + (line (pt 22 120)(pt 16 126)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_fifo_dc0.cmp b/FPGA_quartus/Video/lpm_fifo_dc0.cmp new file mode 100644 index 0000000..08f6114 --- /dev/null +++ b/FPGA_quartus/Video/lpm_fifo_dc0.cmp @@ -0,0 +1,29 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_fifo_dc0 + PORT + ( + aclr : IN STD_LOGIC := '0'; + data : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + rdclk : IN STD_LOGIC ; + rdreq : IN STD_LOGIC ; + wrclk : IN STD_LOGIC ; + wrreq : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (127 DOWNTO 0); + rdempty : OUT STD_LOGIC ; + wrusedw : OUT STD_LOGIC_VECTOR (8 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_fifo_dc0.inc b/FPGA_quartus/Video/lpm_fifo_dc0.inc new file mode 100644 index 0000000..d29fb88 --- /dev/null +++ b/FPGA_quartus/Video/lpm_fifo_dc0.inc @@ -0,0 +1,30 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_fifo_dc0 +( + aclr, + data[127..0], + rdclk, + rdreq, + wrclk, + wrreq +) + +RETURNS ( + q[127..0], + rdempty, + wrusedw[8..0] +); diff --git a/FPGA_quartus/Video/lpm_fifo_dc0.qip b/FPGA_quartus/Video/lpm_fifo_dc0.qip new file mode 100644 index 0000000..e883724 --- /dev/null +++ b/FPGA_quartus/Video/lpm_fifo_dc0.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_FIFO+" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_fifo_dc0.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_fifo_dc0.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_fifo_dc0.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_fifo_dc0.cmp"] diff --git a/FPGA_quartus/Video/lpm_fifo_dc0.vhd b/FPGA_quartus/Video/lpm_fifo_dc0.vhd new file mode 100644 index 0000000..8646d9c --- /dev/null +++ b/FPGA_quartus/Video/lpm_fifo_dc0.vhd @@ -0,0 +1,203 @@ +-- megafunction wizard: %LPM_FIFO+% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: dcfifo + +-- ============================================================ +-- File Name: lpm_fifo_dc0.vhd +-- Megafunction Name(s): +-- dcfifo +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY lpm_fifo_dc0 IS + PORT + ( + aclr : IN STD_LOGIC := '0'; + data : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + rdclk : IN STD_LOGIC ; + rdreq : IN STD_LOGIC ; + wrclk : IN STD_LOGIC ; + wrreq : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (127 DOWNTO 0); + rdempty : OUT STD_LOGIC ; + wrusedw : OUT STD_LOGIC_VECTOR (8 DOWNTO 0) + ); +END lpm_fifo_dc0; + + +ARCHITECTURE SYN OF lpm_fifo_dc0 IS + + SIGNAL sub_wire0 : STD_LOGIC ; + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (8 DOWNTO 0); + SIGNAL sub_wire2 : STD_LOGIC_VECTOR (127 DOWNTO 0); + + + + COMPONENT dcfifo + GENERIC ( + intended_device_family : STRING; + lpm_numwords : NATURAL; + lpm_showahead : STRING; + lpm_type : STRING; + lpm_width : NATURAL; + lpm_widthu : NATURAL; + overflow_checking : STRING; + rdsync_delaypipe : NATURAL; + underflow_checking : STRING; + use_eab : STRING; + write_aclr_synch : STRING; + wrsync_delaypipe : NATURAL + ); + PORT ( + wrclk : IN STD_LOGIC ; + rdempty : OUT STD_LOGIC ; + rdreq : IN STD_LOGIC ; + wrusedw : OUT STD_LOGIC_VECTOR (8 DOWNTO 0); + aclr : IN STD_LOGIC ; + rdclk : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (127 DOWNTO 0); + wrreq : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (127 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + rdempty <= sub_wire0; + wrusedw <= sub_wire1(8 DOWNTO 0); + q <= sub_wire2(127 DOWNTO 0); + + dcfifo_component : dcfifo + GENERIC MAP ( + intended_device_family => "Cyclone III", + lpm_numwords => 512, + lpm_showahead => "OFF", + lpm_type => "dcfifo", + lpm_width => 128, + lpm_widthu => 9, + overflow_checking => "OFF", + rdsync_delaypipe => 6, + underflow_checking => "OFF", + use_eab => "ON", + write_aclr_synch => "ON", + wrsync_delaypipe => 6 + ) + PORT MAP ( + wrclk => wrclk, + rdreq => rdreq, + aclr => aclr, + rdclk => rdclk, + wrreq => wrreq, + data => data, + rdempty => sub_wire0, + wrusedw => sub_wire1, + q => sub_wire2 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: AlmostEmpty NUMERIC "0" +-- Retrieval info: PRIVATE: AlmostEmptyThr NUMERIC "-1" +-- Retrieval info: PRIVATE: AlmostFull NUMERIC "0" +-- Retrieval info: PRIVATE: AlmostFullThr NUMERIC "-1" +-- Retrieval info: PRIVATE: CLOCKS_ARE_SYNCHRONIZED NUMERIC "0" +-- Retrieval info: PRIVATE: Clock NUMERIC "4" +-- Retrieval info: PRIVATE: Depth NUMERIC "512" +-- Retrieval info: PRIVATE: Empty NUMERIC "1" +-- Retrieval info: PRIVATE: Full NUMERIC "1" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: LE_BasedFIFO NUMERIC "0" +-- Retrieval info: PRIVATE: LegacyRREQ NUMERIC "1" +-- Retrieval info: PRIVATE: MAX_DEPTH_BY_9 NUMERIC "0" +-- Retrieval info: PRIVATE: OVERFLOW_CHECKING NUMERIC "1" +-- Retrieval info: PRIVATE: Optimize NUMERIC "1" +-- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: UNDERFLOW_CHECKING NUMERIC "1" +-- Retrieval info: PRIVATE: UsedW NUMERIC "1" +-- Retrieval info: PRIVATE: Width NUMERIC "128" +-- Retrieval info: PRIVATE: dc_aclr NUMERIC "1" +-- Retrieval info: PRIVATE: diff_widths NUMERIC "0" +-- Retrieval info: PRIVATE: msb_usedw NUMERIC "0" +-- Retrieval info: PRIVATE: output_width NUMERIC "128" +-- Retrieval info: PRIVATE: rsEmpty NUMERIC "1" +-- Retrieval info: PRIVATE: rsFull NUMERIC "0" +-- Retrieval info: PRIVATE: rsUsedW NUMERIC "0" +-- Retrieval info: PRIVATE: sc_aclr NUMERIC "0" +-- Retrieval info: PRIVATE: sc_sclr NUMERIC "0" +-- Retrieval info: PRIVATE: wsEmpty NUMERIC "0" +-- Retrieval info: PRIVATE: wsFull NUMERIC "0" +-- Retrieval info: PRIVATE: wsUsedW NUMERIC "1" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_NUMWORDS NUMERIC "512" +-- Retrieval info: CONSTANT: LPM_SHOWAHEAD STRING "OFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "dcfifo" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "128" +-- Retrieval info: CONSTANT: LPM_WIDTHU NUMERIC "9" +-- Retrieval info: CONSTANT: OVERFLOW_CHECKING STRING "OFF" +-- Retrieval info: CONSTANT: RDSYNC_DELAYPIPE NUMERIC "6" +-- Retrieval info: CONSTANT: UNDERFLOW_CHECKING STRING "OFF" +-- Retrieval info: CONSTANT: USE_EAB STRING "ON" +-- Retrieval info: CONSTANT: WRITE_ACLR_SYNCH STRING "ON" +-- Retrieval info: CONSTANT: WRSYNC_DELAYPIPE NUMERIC "6" +-- Retrieval info: USED_PORT: aclr 0 0 0 0 INPUT GND aclr +-- Retrieval info: USED_PORT: data 0 0 128 0 INPUT NODEFVAL data[127..0] +-- Retrieval info: USED_PORT: q 0 0 128 0 OUTPUT NODEFVAL q[127..0] +-- Retrieval info: USED_PORT: rdclk 0 0 0 0 INPUT NODEFVAL rdclk +-- Retrieval info: USED_PORT: rdempty 0 0 0 0 OUTPUT NODEFVAL rdempty +-- Retrieval info: USED_PORT: rdreq 0 0 0 0 INPUT NODEFVAL rdreq +-- Retrieval info: USED_PORT: wrclk 0 0 0 0 INPUT NODEFVAL wrclk +-- Retrieval info: USED_PORT: wrreq 0 0 0 0 INPUT NODEFVAL wrreq +-- Retrieval info: USED_PORT: wrusedw 0 0 9 0 OUTPUT NODEFVAL wrusedw[8..0] +-- Retrieval info: CONNECT: @data 0 0 128 0 data 0 0 128 0 +-- Retrieval info: CONNECT: q 0 0 128 0 @q 0 0 128 0 +-- Retrieval info: CONNECT: @wrreq 0 0 0 0 wrreq 0 0 0 0 +-- Retrieval info: CONNECT: @rdreq 0 0 0 0 rdreq 0 0 0 0 +-- Retrieval info: CONNECT: @rdclk 0 0 0 0 rdclk 0 0 0 0 +-- Retrieval info: CONNECT: @wrclk 0 0 0 0 wrclk 0 0 0 0 +-- Retrieval info: CONNECT: rdempty 0 0 0 0 @rdempty 0 0 0 0 +-- Retrieval info: CONNECT: wrusedw 0 0 9 0 @wrusedw 0 0 9 0 +-- Retrieval info: CONNECT: @aclr 0 0 0 0 aclr 0 0 0 0 +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifo_dc0.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifo_dc0.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifo_dc0.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifo_dc0.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifo_dc0_inst.vhd FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifo_dc0_waveforms.html TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_fifo_dc0_wave*.jpg FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_quartus/Video/lpm_fifo_dc0_wave0.jpg b/FPGA_quartus/Video/lpm_fifo_dc0_wave0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e5d0f4be9e3cc828ef4a4d648e0030bde4bc8eb6 GIT binary patch literal 121926 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
f77Q{v4`WPt}?mBWCM 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 + +Sample Waveforms for lpm_fifo_dc0.vhd + + +

Sample behavioral waveforms for design file lpm_fifo_dc0.vhd

+

The following waveforms show the behavior of dcfifo megafunction for the chosen set of parameters in design lpm_fifo_dc0.vhd. The design lpm_fifo_dc0.vhd has a depth of 512 words of 128 bits each. The fifo is in legacy synchronous mode. The data becomes available after 'rdreq' is asserted; 'rdreq' acts as a read request.

+
+

Fig. 1 : Wave showing read and write operation.

+

The above waveform shows the behavior of the design under normal read and write conditions with aclr .

+

+ + diff --git a/FPGA_quartus/Video/lpm_latch1.bsf b/FPGA_quartus/Video/lpm_latch1.bsf new file mode 100644 index 0000000..7197b2f --- /dev/null +++ b/FPGA_quartus/Video/lpm_latch1.bsf @@ -0,0 +1,53 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 160 80) + (text "lpm_latch1" (rect 49 1 123 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 64 25 76)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[31..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "data[31..0]" (rect 20 26 71 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "gate" (rect 0 0 24 14)(font "Arial" (font_size 8))) + (text "gate" (rect 20 42 41 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 160 32) + (output) + (text "q[31..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "q[31..0]" (rect 105 26 141 39)(font "Arial" (font_size 8))) + (line (pt 160 32)(pt 144 32)(line_width 3)) + ) + (drawing + (line (pt 16 16)(pt 144 16)(line_width 1)) + (line (pt 144 16)(pt 144 64)(line_width 1)) + (line (pt 144 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_latch1.cmp b/FPGA_quartus/Video/lpm_latch1.cmp new file mode 100644 index 0000000..ac4b322 --- /dev/null +++ b/FPGA_quartus/Video/lpm_latch1.cmp @@ -0,0 +1,23 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_latch1 + PORT + ( + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + gate : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (31 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_latch1.qip b/FPGA_quartus/Video/lpm_latch1.qip new file mode 100644 index 0000000..bc53d50 --- /dev/null +++ b/FPGA_quartus/Video/lpm_latch1.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_LATCH" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_latch1.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_latch1.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_latch1.cmp"] diff --git a/FPGA_quartus/Video/lpm_latch1.vhd b/FPGA_quartus/Video/lpm_latch1.vhd new file mode 100644 index 0000000..0afc209 --- /dev/null +++ b/FPGA_quartus/Video/lpm_latch1.vhd @@ -0,0 +1,110 @@ +-- megafunction wizard: %LPM_LATCH% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_latch + +-- ============================================================ +-- File Name: lpm_latch1.vhd +-- Megafunction Name(s): +-- lpm_latch +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_latch1 IS + PORT + ( + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + gate : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (31 DOWNTO 0) + ); +END lpm_latch1; + + +ARCHITECTURE SYN OF lpm_latch1 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (31 DOWNTO 0); + + + + COMPONENT lpm_latch + GENERIC ( + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + q : OUT STD_LOGIC_VECTOR (31 DOWNTO 0); + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + gate : IN STD_LOGIC + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(31 DOWNTO 0); + + lpm_latch_component : lpm_latch + GENERIC MAP ( + lpm_type => "LPM_LATCH", + lpm_width => 32 + ) + PORT MAP ( + data => data, + gate => gate, + q => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: aclr NUMERIC "0" +-- Retrieval info: PRIVATE: aset NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "32" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_LATCH" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "32" +-- Retrieval info: USED_PORT: data 0 0 32 0 INPUT NODEFVAL data[31..0] +-- Retrieval info: USED_PORT: gate 0 0 0 0 INPUT NODEFVAL gate +-- Retrieval info: USED_PORT: q 0 0 32 0 OUTPUT NODEFVAL q[31..0] +-- Retrieval info: CONNECT: @data 0 0 32 0 data 0 0 32 0 +-- Retrieval info: CONNECT: q 0 0 32 0 @q 0 0 32 0 +-- Retrieval info: CONNECT: @gate 0 0 0 0 gate 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_latch1.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_latch1.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_latch1.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_latch1.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_latch1_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_mux0.bsf b/FPGA_quartus/Video/lpm_mux0.bsf new file mode 100644 index 0000000..ce1e27e --- /dev/null +++ b/FPGA_quartus/Video/lpm_mux0.bsf @@ -0,0 +1,83 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 152 128) + (text "lpm_mux0" (rect 50 2 120 18)(font "Arial" (font_size 10))) + (text "inst" (rect 8 112 25 124)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "data3x[31..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data3x[31..0]" (rect 4 27 66 40)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 72 40)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "data2x[31..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data2x[31..0]" (rect 4 43 66 56)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 72 56)(line_width 3)) + ) + (port + (pt 0 72) + (input) + (text "data1x[31..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data1x[31..0]" (rect 4 59 66 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 72 72)(line_width 3)) + ) + (port + (pt 0 88) + (input) + (text "data0x[31..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data0x[31..0]" (rect 4 75 66 88)(font "Arial" (font_size 8))) + (line (pt 0 88)(pt 72 88)(line_width 3)) + ) + (port + (pt 0 104) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 4 91 27 104)(font "Arial" (font_size 8))) + (line (pt 0 104)(pt 72 104)(line_width 1)) + ) + (port + (pt 80 128) + (input) + (text "sel[1..0]" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "sel[1..0]" (rect 84 115 121 128)(font "Arial" (font_size 8))) + (line (pt 80 128)(pt 80 116)(line_width 3)) + ) + (port + (pt 152 72) + (output) + (text "result[31..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "result[31..0]" (rect 92 59 147 72)(font "Arial" (font_size 8))) + (line (pt 152 72)(pt 88 72)(line_width 3)) + ) + (drawing + (line (pt 72 24)(pt 72 120)(line_width 1)) + (line (pt 88 32)(pt 88 112)(line_width 1)) + (line (pt 72 24)(pt 88 32)(line_width 1)) + (line (pt 72 120)(pt 88 112)(line_width 1)) + (line (pt 72 98)(pt 78 104)(line_width 1)) + (line (pt 78 104)(pt 72 110)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_mux0.cmp b/FPGA_quartus/Video/lpm_mux0.cmp new file mode 100644 index 0000000..7b6c18f --- /dev/null +++ b/FPGA_quartus/Video/lpm_mux0.cmp @@ -0,0 +1,27 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_mux0 + PORT + ( + clock : IN STD_LOGIC ; + data0x : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + data1x : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + data2x : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + data3x : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + sel : IN STD_LOGIC_VECTOR (1 DOWNTO 0); + result : OUT STD_LOGIC_VECTOR (31 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_mux0.inc b/FPGA_quartus/Video/lpm_mux0.inc new file mode 100644 index 0000000..b0bc2be --- /dev/null +++ b/FPGA_quartus/Video/lpm_mux0.inc @@ -0,0 +1,28 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_mux0 +( + clock, + data0x[31..0], + data1x[31..0], + data2x[31..0], + data3x[31..0], + sel[1..0] +) + +RETURNS ( + result[31..0] +); diff --git a/FPGA_quartus/Video/lpm_mux0.qip b/FPGA_quartus/Video/lpm_mux0.qip new file mode 100644 index 0000000..5e8e2b6 --- /dev/null +++ b/FPGA_quartus/Video/lpm_mux0.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_MUX" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_mux0.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux0.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux0.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux0.cmp"] diff --git a/FPGA_quartus/Video/lpm_mux0.vhd b/FPGA_quartus/Video/lpm_mux0.vhd new file mode 100644 index 0000000..9d641a4 --- /dev/null +++ b/FPGA_quartus/Video/lpm_mux0.vhd @@ -0,0 +1,251 @@ +-- megafunction wizard: %LPM_MUX% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_mux + +-- ============================================================ +-- File Name: lpm_mux0.vhd +-- Megafunction Name(s): +-- lpm_mux +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.lpm_components.all; + +ENTITY lpm_mux0 IS + PORT + ( + clock : IN STD_LOGIC ; + data0x : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + data1x : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + data2x : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + data3x : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + sel : IN STD_LOGIC_VECTOR (1 DOWNTO 0); + result : OUT STD_LOGIC_VECTOR (31 DOWNTO 0) + ); +END lpm_mux0; + + +ARCHITECTURE SYN OF lpm_mux0 IS + +-- type STD_LOGIC_2D is array (NATURAL RANGE <>, NATURAL RANGE <>) of STD_LOGIC; + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (31 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (31 DOWNTO 0); + SIGNAL sub_wire2 : STD_LOGIC_2D (3 DOWNTO 0, 31 DOWNTO 0); + SIGNAL sub_wire3 : STD_LOGIC_VECTOR (31 DOWNTO 0); + SIGNAL sub_wire4 : STD_LOGIC_VECTOR (31 DOWNTO 0); + SIGNAL sub_wire5 : STD_LOGIC_VECTOR (31 DOWNTO 0); + +BEGIN + sub_wire5 <= data0x(31 DOWNTO 0); + sub_wire4 <= data1x(31 DOWNTO 0); + sub_wire3 <= data2x(31 DOWNTO 0); + result <= sub_wire0(31 DOWNTO 0); + sub_wire1 <= data3x(31 DOWNTO 0); + sub_wire2(3, 0) <= sub_wire1(0); + sub_wire2(3, 1) <= sub_wire1(1); + sub_wire2(3, 2) <= sub_wire1(2); + sub_wire2(3, 3) <= sub_wire1(3); + sub_wire2(3, 4) <= sub_wire1(4); + sub_wire2(3, 5) <= sub_wire1(5); + sub_wire2(3, 6) <= sub_wire1(6); + sub_wire2(3, 7) <= sub_wire1(7); + sub_wire2(3, 8) <= sub_wire1(8); + sub_wire2(3, 9) <= sub_wire1(9); + sub_wire2(3, 10) <= sub_wire1(10); + sub_wire2(3, 11) <= sub_wire1(11); + sub_wire2(3, 12) <= sub_wire1(12); + sub_wire2(3, 13) <= sub_wire1(13); + sub_wire2(3, 14) <= sub_wire1(14); + sub_wire2(3, 15) <= sub_wire1(15); + sub_wire2(3, 16) <= sub_wire1(16); + sub_wire2(3, 17) <= sub_wire1(17); + sub_wire2(3, 18) <= sub_wire1(18); + sub_wire2(3, 19) <= sub_wire1(19); + sub_wire2(3, 20) <= sub_wire1(20); + sub_wire2(3, 21) <= sub_wire1(21); + sub_wire2(3, 22) <= sub_wire1(22); + sub_wire2(3, 23) <= sub_wire1(23); + sub_wire2(3, 24) <= sub_wire1(24); + sub_wire2(3, 25) <= sub_wire1(25); + sub_wire2(3, 26) <= sub_wire1(26); + sub_wire2(3, 27) <= sub_wire1(27); + sub_wire2(3, 28) <= sub_wire1(28); + sub_wire2(3, 29) <= sub_wire1(29); + sub_wire2(3, 30) <= sub_wire1(30); + sub_wire2(3, 31) <= sub_wire1(31); + sub_wire2(2, 0) <= sub_wire3(0); + sub_wire2(2, 1) <= sub_wire3(1); + sub_wire2(2, 2) <= sub_wire3(2); + sub_wire2(2, 3) <= sub_wire3(3); + sub_wire2(2, 4) <= sub_wire3(4); + sub_wire2(2, 5) <= sub_wire3(5); + sub_wire2(2, 6) <= sub_wire3(6); + sub_wire2(2, 7) <= sub_wire3(7); + sub_wire2(2, 8) <= sub_wire3(8); + sub_wire2(2, 9) <= sub_wire3(9); + sub_wire2(2, 10) <= sub_wire3(10); + sub_wire2(2, 11) <= sub_wire3(11); + sub_wire2(2, 12) <= sub_wire3(12); + sub_wire2(2, 13) <= sub_wire3(13); + sub_wire2(2, 14) <= sub_wire3(14); + sub_wire2(2, 15) <= sub_wire3(15); + sub_wire2(2, 16) <= sub_wire3(16); + sub_wire2(2, 17) <= sub_wire3(17); + sub_wire2(2, 18) <= sub_wire3(18); + sub_wire2(2, 19) <= sub_wire3(19); + sub_wire2(2, 20) <= sub_wire3(20); + sub_wire2(2, 21) <= sub_wire3(21); + sub_wire2(2, 22) <= sub_wire3(22); + sub_wire2(2, 23) <= sub_wire3(23); + sub_wire2(2, 24) <= sub_wire3(24); + sub_wire2(2, 25) <= sub_wire3(25); + sub_wire2(2, 26) <= sub_wire3(26); + sub_wire2(2, 27) <= sub_wire3(27); + sub_wire2(2, 28) <= sub_wire3(28); + sub_wire2(2, 29) <= sub_wire3(29); + sub_wire2(2, 30) <= sub_wire3(30); + sub_wire2(2, 31) <= sub_wire3(31); + sub_wire2(1, 0) <= sub_wire4(0); + sub_wire2(1, 1) <= sub_wire4(1); + sub_wire2(1, 2) <= sub_wire4(2); + sub_wire2(1, 3) <= sub_wire4(3); + sub_wire2(1, 4) <= sub_wire4(4); + sub_wire2(1, 5) <= sub_wire4(5); + sub_wire2(1, 6) <= sub_wire4(6); + sub_wire2(1, 7) <= sub_wire4(7); + sub_wire2(1, 8) <= sub_wire4(8); + sub_wire2(1, 9) <= sub_wire4(9); + sub_wire2(1, 10) <= sub_wire4(10); + sub_wire2(1, 11) <= sub_wire4(11); + sub_wire2(1, 12) <= sub_wire4(12); + sub_wire2(1, 13) <= sub_wire4(13); + sub_wire2(1, 14) <= sub_wire4(14); + sub_wire2(1, 15) <= sub_wire4(15); + sub_wire2(1, 16) <= sub_wire4(16); + sub_wire2(1, 17) <= sub_wire4(17); + sub_wire2(1, 18) <= sub_wire4(18); + sub_wire2(1, 19) <= sub_wire4(19); + sub_wire2(1, 20) <= sub_wire4(20); + sub_wire2(1, 21) <= sub_wire4(21); + sub_wire2(1, 22) <= sub_wire4(22); + sub_wire2(1, 23) <= sub_wire4(23); + sub_wire2(1, 24) <= sub_wire4(24); + sub_wire2(1, 25) <= sub_wire4(25); + sub_wire2(1, 26) <= sub_wire4(26); + sub_wire2(1, 27) <= sub_wire4(27); + sub_wire2(1, 28) <= sub_wire4(28); + sub_wire2(1, 29) <= sub_wire4(29); + sub_wire2(1, 30) <= sub_wire4(30); + sub_wire2(1, 31) <= sub_wire4(31); + sub_wire2(0, 0) <= sub_wire5(0); + sub_wire2(0, 1) <= sub_wire5(1); + sub_wire2(0, 2) <= sub_wire5(2); + sub_wire2(0, 3) <= sub_wire5(3); + sub_wire2(0, 4) <= sub_wire5(4); + sub_wire2(0, 5) <= sub_wire5(5); + sub_wire2(0, 6) <= sub_wire5(6); + sub_wire2(0, 7) <= sub_wire5(7); + sub_wire2(0, 8) <= sub_wire5(8); + sub_wire2(0, 9) <= sub_wire5(9); + sub_wire2(0, 10) <= sub_wire5(10); + sub_wire2(0, 11) <= sub_wire5(11); + sub_wire2(0, 12) <= sub_wire5(12); + sub_wire2(0, 13) <= sub_wire5(13); + sub_wire2(0, 14) <= sub_wire5(14); + sub_wire2(0, 15) <= sub_wire5(15); + sub_wire2(0, 16) <= sub_wire5(16); + sub_wire2(0, 17) <= sub_wire5(17); + sub_wire2(0, 18) <= sub_wire5(18); + sub_wire2(0, 19) <= sub_wire5(19); + sub_wire2(0, 20) <= sub_wire5(20); + sub_wire2(0, 21) <= sub_wire5(21); + sub_wire2(0, 22) <= sub_wire5(22); + sub_wire2(0, 23) <= sub_wire5(23); + sub_wire2(0, 24) <= sub_wire5(24); + sub_wire2(0, 25) <= sub_wire5(25); + sub_wire2(0, 26) <= sub_wire5(26); + sub_wire2(0, 27) <= sub_wire5(27); + sub_wire2(0, 28) <= sub_wire5(28); + sub_wire2(0, 29) <= sub_wire5(29); + sub_wire2(0, 30) <= sub_wire5(30); + sub_wire2(0, 31) <= sub_wire5(31); + + lpm_mux_component : lpm_mux + GENERIC MAP ( + lpm_pipeline => 4, + lpm_size => 4, + lpm_type => "LPM_MUX", + lpm_width => 32, + lpm_widths => 2 + ) + PORT MAP ( + sel => sel, + clock => clock, + data => sub_wire2, + result => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: CONSTANT: LPM_PIPELINE NUMERIC "4" +-- Retrieval info: CONSTANT: LPM_SIZE NUMERIC "4" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_MUX" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "32" +-- Retrieval info: CONSTANT: LPM_WIDTHS NUMERIC "2" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: data0x 0 0 32 0 INPUT NODEFVAL data0x[31..0] +-- Retrieval info: USED_PORT: data1x 0 0 32 0 INPUT NODEFVAL data1x[31..0] +-- Retrieval info: USED_PORT: data2x 0 0 32 0 INPUT NODEFVAL data2x[31..0] +-- Retrieval info: USED_PORT: data3x 0 0 32 0 INPUT NODEFVAL data3x[31..0] +-- Retrieval info: USED_PORT: result 0 0 32 0 OUTPUT NODEFVAL result[31..0] +-- Retrieval info: USED_PORT: sel 0 0 2 0 INPUT NODEFVAL sel[1..0] +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: result 0 0 32 0 @result 0 0 32 0 +-- Retrieval info: CONNECT: @data 1 3 32 0 data3x 0 0 32 0 +-- Retrieval info: CONNECT: @data 1 2 32 0 data2x 0 0 32 0 +-- Retrieval info: CONNECT: @data 1 1 32 0 data1x 0 0 32 0 +-- Retrieval info: CONNECT: @data 1 0 32 0 data0x 0 0 32 0 +-- Retrieval info: CONNECT: @sel 0 0 2 0 sel 0 0 2 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux0.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux0.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux0.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux0.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux0_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_mux1.bsf b/FPGA_quartus/Video/lpm_mux1.bsf new file mode 100644 index 0000000..24ee953 --- /dev/null +++ b/FPGA_quartus/Video/lpm_mux1.bsf @@ -0,0 +1,111 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 152 192) + (text "lpm_mux1" (rect 50 2 120 18)(font "Arial" (font_size 10))) + (text "inst" (rect 8 176 25 188)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "data7x[15..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data7x[15..0]" (rect 4 27 66 40)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 72 40)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "data6x[15..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data6x[15..0]" (rect 4 43 66 56)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 72 56)(line_width 3)) + ) + (port + (pt 0 72) + (input) + (text "data5x[15..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data5x[15..0]" (rect 4 59 66 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 72 72)(line_width 3)) + ) + (port + (pt 0 88) + (input) + (text "data4x[15..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data4x[15..0]" (rect 4 75 66 88)(font "Arial" (font_size 8))) + (line (pt 0 88)(pt 72 88)(line_width 3)) + ) + (port + (pt 0 104) + (input) + (text "data3x[15..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data3x[15..0]" (rect 4 91 66 104)(font "Arial" (font_size 8))) + (line (pt 0 104)(pt 72 104)(line_width 3)) + ) + (port + (pt 0 120) + (input) + (text "data2x[15..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data2x[15..0]" (rect 4 107 66 120)(font "Arial" (font_size 8))) + (line (pt 0 120)(pt 72 120)(line_width 3)) + ) + (port + (pt 0 136) + (input) + (text "data1x[15..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data1x[15..0]" (rect 4 123 66 136)(font "Arial" (font_size 8))) + (line (pt 0 136)(pt 72 136)(line_width 3)) + ) + (port + (pt 0 152) + (input) + (text "data0x[15..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data0x[15..0]" (rect 4 139 66 152)(font "Arial" (font_size 8))) + (line (pt 0 152)(pt 72 152)(line_width 3)) + ) + (port + (pt 0 168) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 4 155 27 168)(font "Arial" (font_size 8))) + (line (pt 0 168)(pt 72 168)(line_width 1)) + ) + (port + (pt 80 192) + (input) + (text "sel[2..0]" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "sel[2..0]" (rect 84 179 121 192)(font "Arial" (font_size 8))) + (line (pt 80 192)(pt 80 180)(line_width 3)) + ) + (port + (pt 152 104) + (output) + (text "result[15..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "result[15..0]" (rect 92 91 147 104)(font "Arial" (font_size 8))) + (line (pt 152 104)(pt 88 104)(line_width 3)) + ) + (drawing + (line (pt 72 24)(pt 72 184)(line_width 1)) + (line (pt 88 32)(pt 88 176)(line_width 1)) + (line (pt 72 24)(pt 88 32)(line_width 1)) + (line (pt 72 184)(pt 88 176)(line_width 1)) + (line (pt 72 162)(pt 78 168)(line_width 1)) + (line (pt 78 168)(pt 72 174)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_mux1.cmp b/FPGA_quartus/Video/lpm_mux1.cmp new file mode 100644 index 0000000..cfc222a --- /dev/null +++ b/FPGA_quartus/Video/lpm_mux1.cmp @@ -0,0 +1,31 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_mux1 + PORT + ( + clock : IN STD_LOGIC ; + data0x : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + data1x : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + data2x : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + data3x : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + data4x : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + data5x : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + data6x : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + data7x : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + sel : IN STD_LOGIC_VECTOR (2 DOWNTO 0); + result : OUT STD_LOGIC_VECTOR (15 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_mux1.inc b/FPGA_quartus/Video/lpm_mux1.inc new file mode 100644 index 0000000..e2f94a4 --- /dev/null +++ b/FPGA_quartus/Video/lpm_mux1.inc @@ -0,0 +1,32 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_mux1 +( + clock, + data0x[15..0], + data1x[15..0], + data2x[15..0], + data3x[15..0], + data4x[15..0], + data5x[15..0], + data6x[15..0], + data7x[15..0], + sel[2..0] +) + +RETURNS ( + result[15..0] +); diff --git a/FPGA_quartus/Video/lpm_mux1.qip b/FPGA_quartus/Video/lpm_mux1.qip new file mode 100644 index 0000000..8a445b2 --- /dev/null +++ b/FPGA_quartus/Video/lpm_mux1.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_MUX" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_mux1.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux1.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux1.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux1.cmp"] diff --git a/FPGA_quartus/Video/lpm_mux1.vhd b/FPGA_quartus/Video/lpm_mux1.vhd new file mode 100644 index 0000000..a9ad991 --- /dev/null +++ b/FPGA_quartus/Video/lpm_mux1.vhd @@ -0,0 +1,271 @@ +-- megafunction wizard: %LPM_MUX% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_mux + +-- ============================================================ +-- File Name: lpm_mux1.vhd +-- Megafunction Name(s): +-- lpm_mux +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.lpm_components.all; + +ENTITY lpm_mux1 IS + PORT + ( + clock : IN STD_LOGIC ; + data0x : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + data1x : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + data2x : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + data3x : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + data4x : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + data5x : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + data6x : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + data7x : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + sel : IN STD_LOGIC_VECTOR (2 DOWNTO 0); + result : OUT STD_LOGIC_VECTOR (15 DOWNTO 0) + ); +END lpm_mux1; + + +ARCHITECTURE SYN OF lpm_mux1 IS + +-- type STD_LOGIC_2D is array (NATURAL RANGE <>, NATURAL RANGE <>) of STD_LOGIC; + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (15 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (15 DOWNTO 0); + SIGNAL sub_wire2 : STD_LOGIC_2D (7 DOWNTO 0, 15 DOWNTO 0); + SIGNAL sub_wire3 : STD_LOGIC_VECTOR (15 DOWNTO 0); + SIGNAL sub_wire4 : STD_LOGIC_VECTOR (15 DOWNTO 0); + SIGNAL sub_wire5 : STD_LOGIC_VECTOR (15 DOWNTO 0); + SIGNAL sub_wire6 : STD_LOGIC_VECTOR (15 DOWNTO 0); + SIGNAL sub_wire7 : STD_LOGIC_VECTOR (15 DOWNTO 0); + SIGNAL sub_wire8 : STD_LOGIC_VECTOR (15 DOWNTO 0); + SIGNAL sub_wire9 : STD_LOGIC_VECTOR (15 DOWNTO 0); + +BEGIN + sub_wire9 <= data0x(15 DOWNTO 0); + sub_wire8 <= data1x(15 DOWNTO 0); + sub_wire7 <= data2x(15 DOWNTO 0); + sub_wire6 <= data3x(15 DOWNTO 0); + sub_wire5 <= data4x(15 DOWNTO 0); + sub_wire4 <= data5x(15 DOWNTO 0); + sub_wire3 <= data6x(15 DOWNTO 0); + result <= sub_wire0(15 DOWNTO 0); + sub_wire1 <= data7x(15 DOWNTO 0); + sub_wire2(7, 0) <= sub_wire1(0); + sub_wire2(7, 1) <= sub_wire1(1); + sub_wire2(7, 2) <= sub_wire1(2); + sub_wire2(7, 3) <= sub_wire1(3); + sub_wire2(7, 4) <= sub_wire1(4); + sub_wire2(7, 5) <= sub_wire1(5); + sub_wire2(7, 6) <= sub_wire1(6); + sub_wire2(7, 7) <= sub_wire1(7); + sub_wire2(7, 8) <= sub_wire1(8); + sub_wire2(7, 9) <= sub_wire1(9); + sub_wire2(7, 10) <= sub_wire1(10); + sub_wire2(7, 11) <= sub_wire1(11); + sub_wire2(7, 12) <= sub_wire1(12); + sub_wire2(7, 13) <= sub_wire1(13); + sub_wire2(7, 14) <= sub_wire1(14); + sub_wire2(7, 15) <= sub_wire1(15); + sub_wire2(6, 0) <= sub_wire3(0); + sub_wire2(6, 1) <= sub_wire3(1); + sub_wire2(6, 2) <= sub_wire3(2); + sub_wire2(6, 3) <= sub_wire3(3); + sub_wire2(6, 4) <= sub_wire3(4); + sub_wire2(6, 5) <= sub_wire3(5); + sub_wire2(6, 6) <= sub_wire3(6); + sub_wire2(6, 7) <= sub_wire3(7); + sub_wire2(6, 8) <= sub_wire3(8); + sub_wire2(6, 9) <= sub_wire3(9); + sub_wire2(6, 10) <= sub_wire3(10); + sub_wire2(6, 11) <= sub_wire3(11); + sub_wire2(6, 12) <= sub_wire3(12); + sub_wire2(6, 13) <= sub_wire3(13); + sub_wire2(6, 14) <= sub_wire3(14); + sub_wire2(6, 15) <= sub_wire3(15); + sub_wire2(5, 0) <= sub_wire4(0); + sub_wire2(5, 1) <= sub_wire4(1); + sub_wire2(5, 2) <= sub_wire4(2); + sub_wire2(5, 3) <= sub_wire4(3); + sub_wire2(5, 4) <= sub_wire4(4); + sub_wire2(5, 5) <= sub_wire4(5); + sub_wire2(5, 6) <= sub_wire4(6); + sub_wire2(5, 7) <= sub_wire4(7); + sub_wire2(5, 8) <= sub_wire4(8); + sub_wire2(5, 9) <= sub_wire4(9); + sub_wire2(5, 10) <= sub_wire4(10); + sub_wire2(5, 11) <= sub_wire4(11); + sub_wire2(5, 12) <= sub_wire4(12); + sub_wire2(5, 13) <= sub_wire4(13); + sub_wire2(5, 14) <= sub_wire4(14); + sub_wire2(5, 15) <= sub_wire4(15); + sub_wire2(4, 0) <= sub_wire5(0); + sub_wire2(4, 1) <= sub_wire5(1); + sub_wire2(4, 2) <= sub_wire5(2); + sub_wire2(4, 3) <= sub_wire5(3); + sub_wire2(4, 4) <= sub_wire5(4); + sub_wire2(4, 5) <= sub_wire5(5); + sub_wire2(4, 6) <= sub_wire5(6); + sub_wire2(4, 7) <= sub_wire5(7); + sub_wire2(4, 8) <= sub_wire5(8); + sub_wire2(4, 9) <= sub_wire5(9); + sub_wire2(4, 10) <= sub_wire5(10); + sub_wire2(4, 11) <= sub_wire5(11); + sub_wire2(4, 12) <= sub_wire5(12); + sub_wire2(4, 13) <= sub_wire5(13); + sub_wire2(4, 14) <= sub_wire5(14); + sub_wire2(4, 15) <= sub_wire5(15); + sub_wire2(3, 0) <= sub_wire6(0); + sub_wire2(3, 1) <= sub_wire6(1); + sub_wire2(3, 2) <= sub_wire6(2); + sub_wire2(3, 3) <= sub_wire6(3); + sub_wire2(3, 4) <= sub_wire6(4); + sub_wire2(3, 5) <= sub_wire6(5); + sub_wire2(3, 6) <= sub_wire6(6); + sub_wire2(3, 7) <= sub_wire6(7); + sub_wire2(3, 8) <= sub_wire6(8); + sub_wire2(3, 9) <= sub_wire6(9); + sub_wire2(3, 10) <= sub_wire6(10); + sub_wire2(3, 11) <= sub_wire6(11); + sub_wire2(3, 12) <= sub_wire6(12); + sub_wire2(3, 13) <= sub_wire6(13); + sub_wire2(3, 14) <= sub_wire6(14); + sub_wire2(3, 15) <= sub_wire6(15); + sub_wire2(2, 0) <= sub_wire7(0); + sub_wire2(2, 1) <= sub_wire7(1); + sub_wire2(2, 2) <= sub_wire7(2); + sub_wire2(2, 3) <= sub_wire7(3); + sub_wire2(2, 4) <= sub_wire7(4); + sub_wire2(2, 5) <= sub_wire7(5); + sub_wire2(2, 6) <= sub_wire7(6); + sub_wire2(2, 7) <= sub_wire7(7); + sub_wire2(2, 8) <= sub_wire7(8); + sub_wire2(2, 9) <= sub_wire7(9); + sub_wire2(2, 10) <= sub_wire7(10); + sub_wire2(2, 11) <= sub_wire7(11); + sub_wire2(2, 12) <= sub_wire7(12); + sub_wire2(2, 13) <= sub_wire7(13); + sub_wire2(2, 14) <= sub_wire7(14); + sub_wire2(2, 15) <= sub_wire7(15); + sub_wire2(1, 0) <= sub_wire8(0); + sub_wire2(1, 1) <= sub_wire8(1); + sub_wire2(1, 2) <= sub_wire8(2); + sub_wire2(1, 3) <= sub_wire8(3); + sub_wire2(1, 4) <= sub_wire8(4); + sub_wire2(1, 5) <= sub_wire8(5); + sub_wire2(1, 6) <= sub_wire8(6); + sub_wire2(1, 7) <= sub_wire8(7); + sub_wire2(1, 8) <= sub_wire8(8); + sub_wire2(1, 9) <= sub_wire8(9); + sub_wire2(1, 10) <= sub_wire8(10); + sub_wire2(1, 11) <= sub_wire8(11); + sub_wire2(1, 12) <= sub_wire8(12); + sub_wire2(1, 13) <= sub_wire8(13); + sub_wire2(1, 14) <= sub_wire8(14); + sub_wire2(1, 15) <= sub_wire8(15); + sub_wire2(0, 0) <= sub_wire9(0); + sub_wire2(0, 1) <= sub_wire9(1); + sub_wire2(0, 2) <= sub_wire9(2); + sub_wire2(0, 3) <= sub_wire9(3); + sub_wire2(0, 4) <= sub_wire9(4); + sub_wire2(0, 5) <= sub_wire9(5); + sub_wire2(0, 6) <= sub_wire9(6); + sub_wire2(0, 7) <= sub_wire9(7); + sub_wire2(0, 8) <= sub_wire9(8); + sub_wire2(0, 9) <= sub_wire9(9); + sub_wire2(0, 10) <= sub_wire9(10); + sub_wire2(0, 11) <= sub_wire9(11); + sub_wire2(0, 12) <= sub_wire9(12); + sub_wire2(0, 13) <= sub_wire9(13); + sub_wire2(0, 14) <= sub_wire9(14); + sub_wire2(0, 15) <= sub_wire9(15); + + lpm_mux_component : lpm_mux + GENERIC MAP ( + lpm_pipeline => 4, + lpm_size => 8, + lpm_type => "LPM_MUX", + lpm_width => 16, + lpm_widths => 3 + ) + PORT MAP ( + sel => sel, + clock => clock, + data => sub_wire2, + result => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: CONSTANT: LPM_PIPELINE NUMERIC "4" +-- Retrieval info: CONSTANT: LPM_SIZE NUMERIC "8" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_MUX" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "16" +-- Retrieval info: CONSTANT: LPM_WIDTHS NUMERIC "3" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: data0x 0 0 16 0 INPUT NODEFVAL data0x[15..0] +-- Retrieval info: USED_PORT: data1x 0 0 16 0 INPUT NODEFVAL data1x[15..0] +-- Retrieval info: USED_PORT: data2x 0 0 16 0 INPUT NODEFVAL data2x[15..0] +-- Retrieval info: USED_PORT: data3x 0 0 16 0 INPUT NODEFVAL data3x[15..0] +-- Retrieval info: USED_PORT: data4x 0 0 16 0 INPUT NODEFVAL data4x[15..0] +-- Retrieval info: USED_PORT: data5x 0 0 16 0 INPUT NODEFVAL data5x[15..0] +-- Retrieval info: USED_PORT: data6x 0 0 16 0 INPUT NODEFVAL data6x[15..0] +-- Retrieval info: USED_PORT: data7x 0 0 16 0 INPUT NODEFVAL data7x[15..0] +-- Retrieval info: USED_PORT: result 0 0 16 0 OUTPUT NODEFVAL result[15..0] +-- Retrieval info: USED_PORT: sel 0 0 3 0 INPUT NODEFVAL sel[2..0] +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: result 0 0 16 0 @result 0 0 16 0 +-- Retrieval info: CONNECT: @data 1 7 16 0 data7x 0 0 16 0 +-- Retrieval info: CONNECT: @data 1 6 16 0 data6x 0 0 16 0 +-- Retrieval info: CONNECT: @data 1 5 16 0 data5x 0 0 16 0 +-- Retrieval info: CONNECT: @data 1 4 16 0 data4x 0 0 16 0 +-- Retrieval info: CONNECT: @data 1 3 16 0 data3x 0 0 16 0 +-- Retrieval info: CONNECT: @data 1 2 16 0 data2x 0 0 16 0 +-- Retrieval info: CONNECT: @data 1 1 16 0 data1x 0 0 16 0 +-- Retrieval info: CONNECT: @data 1 0 16 0 data0x 0 0 16 0 +-- Retrieval info: CONNECT: @sel 0 0 3 0 sel 0 0 3 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux1.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux1.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux1.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux1.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux1_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_mux2.bsf b/FPGA_quartus/Video/lpm_mux2.bsf new file mode 100644 index 0000000..b37c425 --- /dev/null +++ b/FPGA_quartus/Video/lpm_mux2.bsf @@ -0,0 +1,167 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 144 320) + (text "lpm_mux2" (rect 50 2 120 18)(font "Arial" (font_size 10))) + (text "inst" (rect 8 304 25 316)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "data15x[7..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data15x[7..0]" (rect 4 27 66 40)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 72 40)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "data14x[7..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data14x[7..0]" (rect 4 43 66 56)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 72 56)(line_width 3)) + ) + (port + (pt 0 72) + (input) + (text "data13x[7..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data13x[7..0]" (rect 4 59 66 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 72 72)(line_width 3)) + ) + (port + (pt 0 88) + (input) + (text "data12x[7..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data12x[7..0]" (rect 4 75 66 88)(font "Arial" (font_size 8))) + (line (pt 0 88)(pt 72 88)(line_width 3)) + ) + (port + (pt 0 104) + (input) + (text "data11x[7..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data11x[7..0]" (rect 4 91 66 104)(font "Arial" (font_size 8))) + (line (pt 0 104)(pt 72 104)(line_width 3)) + ) + (port + (pt 0 120) + (input) + (text "data10x[7..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data10x[7..0]" (rect 4 107 66 120)(font "Arial" (font_size 8))) + (line (pt 0 120)(pt 72 120)(line_width 3)) + ) + (port + (pt 0 136) + (input) + (text "data9x[7..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data9x[7..0]" (rect 4 123 60 136)(font "Arial" (font_size 8))) + (line (pt 0 136)(pt 72 136)(line_width 3)) + ) + (port + (pt 0 152) + (input) + (text "data8x[7..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data8x[7..0]" (rect 4 139 60 152)(font "Arial" (font_size 8))) + (line (pt 0 152)(pt 72 152)(line_width 3)) + ) + (port + (pt 0 168) + (input) + (text "data7x[7..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data7x[7..0]" (rect 4 155 60 168)(font "Arial" (font_size 8))) + (line (pt 0 168)(pt 72 168)(line_width 3)) + ) + (port + (pt 0 184) + (input) + (text "data6x[7..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data6x[7..0]" (rect 4 171 60 184)(font "Arial" (font_size 8))) + (line (pt 0 184)(pt 72 184)(line_width 3)) + ) + (port + (pt 0 200) + (input) + (text "data5x[7..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data5x[7..0]" (rect 4 187 60 200)(font "Arial" (font_size 8))) + (line (pt 0 200)(pt 72 200)(line_width 3)) + ) + (port + (pt 0 216) + (input) + (text "data4x[7..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data4x[7..0]" (rect 4 203 60 216)(font "Arial" (font_size 8))) + (line (pt 0 216)(pt 72 216)(line_width 3)) + ) + (port + (pt 0 232) + (input) + (text "data3x[7..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data3x[7..0]" (rect 4 219 60 232)(font "Arial" (font_size 8))) + (line (pt 0 232)(pt 72 232)(line_width 3)) + ) + (port + (pt 0 248) + (input) + (text "data2x[7..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data2x[7..0]" (rect 4 235 60 248)(font "Arial" (font_size 8))) + (line (pt 0 248)(pt 72 248)(line_width 3)) + ) + (port + (pt 0 264) + (input) + (text "data1x[7..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data1x[7..0]" (rect 4 251 60 264)(font "Arial" (font_size 8))) + (line (pt 0 264)(pt 72 264)(line_width 3)) + ) + (port + (pt 0 280) + (input) + (text "data0x[7..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data0x[7..0]" (rect 4 267 60 280)(font "Arial" (font_size 8))) + (line (pt 0 280)(pt 72 280)(line_width 3)) + ) + (port + (pt 0 296) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 4 283 27 296)(font "Arial" (font_size 8))) + (line (pt 0 296)(pt 72 296)(line_width 1)) + ) + (port + (pt 80 320) + (input) + (text "sel[3..0]" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "sel[3..0]" (rect 84 307 121 320)(font "Arial" (font_size 8))) + (line (pt 80 320)(pt 80 308)(line_width 3)) + ) + (port + (pt 144 168) + (output) + (text "result[7..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "result[7..0]" (rect 90 155 139 168)(font "Arial" (font_size 8))) + (line (pt 144 168)(pt 88 168)(line_width 3)) + ) + (drawing + (line (pt 72 24)(pt 72 312)(line_width 1)) + (line (pt 88 32)(pt 88 304)(line_width 1)) + (line (pt 72 24)(pt 88 32)(line_width 1)) + (line (pt 72 312)(pt 88 304)(line_width 1)) + (line (pt 72 290)(pt 78 296)(line_width 1)) + (line (pt 78 296)(pt 72 302)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_mux2.cmp b/FPGA_quartus/Video/lpm_mux2.cmp new file mode 100644 index 0000000..d94260c --- /dev/null +++ b/FPGA_quartus/Video/lpm_mux2.cmp @@ -0,0 +1,39 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_mux2 + PORT + ( + clock : IN STD_LOGIC ; + data0x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data10x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data11x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data12x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data13x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data14x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data15x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data1x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data2x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data3x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data4x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data5x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data6x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data7x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data8x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data9x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + sel : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + result : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_mux2.inc b/FPGA_quartus/Video/lpm_mux2.inc new file mode 100644 index 0000000..2334c7e --- /dev/null +++ b/FPGA_quartus/Video/lpm_mux2.inc @@ -0,0 +1,40 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_mux2 +( + clock, + data0x[7..0], + data10x[7..0], + data11x[7..0], + data12x[7..0], + data13x[7..0], + data14x[7..0], + data15x[7..0], + data1x[7..0], + data2x[7..0], + data3x[7..0], + data4x[7..0], + data5x[7..0], + data6x[7..0], + data7x[7..0], + data8x[7..0], + data9x[7..0], + sel[3..0] +) + +RETURNS ( + result[7..0] +); diff --git a/FPGA_quartus/Video/lpm_mux2.qip b/FPGA_quartus/Video/lpm_mux2.qip new file mode 100644 index 0000000..7b5db74 --- /dev/null +++ b/FPGA_quartus/Video/lpm_mux2.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_MUX" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_mux2.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux2.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux2.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux2.cmp"] diff --git a/FPGA_quartus/Video/lpm_mux2.vhd b/FPGA_quartus/Video/lpm_mux2.vhd new file mode 100644 index 0000000..cfece2e --- /dev/null +++ b/FPGA_quartus/Video/lpm_mux2.vhd @@ -0,0 +1,311 @@ +-- megafunction wizard: %LPM_MUX% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_mux + +-- ============================================================ +-- File Name: lpm_mux2.vhd +-- Megafunction Name(s): +-- lpm_mux +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.lpm_components.all; + +ENTITY lpm_mux2 IS + PORT + ( + clock : IN STD_LOGIC ; + data0x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data10x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data11x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data12x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data13x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data14x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data15x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data1x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data2x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data3x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data4x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data5x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data6x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data7x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data8x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + data9x : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + sel : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + result : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) + ); +END lpm_mux2; + + +ARCHITECTURE SYN OF lpm_mux2 IS + +-- type STD_LOGIC_2D is array (NATURAL RANGE <>, NATURAL RANGE <>) of STD_LOGIC; + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire2 : STD_LOGIC_2D (15 DOWNTO 0, 7 DOWNTO 0); + SIGNAL sub_wire3 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire4 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire5 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire6 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire7 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire8 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire9 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire10 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire11 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire12 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire13 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire14 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire15 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire16 : STD_LOGIC_VECTOR (7 DOWNTO 0); + SIGNAL sub_wire17 : STD_LOGIC_VECTOR (7 DOWNTO 0); + +BEGIN + sub_wire17 <= data0x(7 DOWNTO 0); + sub_wire16 <= data1x(7 DOWNTO 0); + sub_wire15 <= data2x(7 DOWNTO 0); + sub_wire14 <= data3x(7 DOWNTO 0); + sub_wire13 <= data4x(7 DOWNTO 0); + sub_wire12 <= data5x(7 DOWNTO 0); + sub_wire11 <= data6x(7 DOWNTO 0); + sub_wire10 <= data7x(7 DOWNTO 0); + sub_wire9 <= data8x(7 DOWNTO 0); + sub_wire8 <= data9x(7 DOWNTO 0); + sub_wire7 <= data10x(7 DOWNTO 0); + sub_wire6 <= data11x(7 DOWNTO 0); + sub_wire5 <= data12x(7 DOWNTO 0); + sub_wire4 <= data13x(7 DOWNTO 0); + sub_wire3 <= data14x(7 DOWNTO 0); + result <= sub_wire0(7 DOWNTO 0); + sub_wire1 <= data15x(7 DOWNTO 0); + sub_wire2(15, 0) <= sub_wire1(0); + sub_wire2(15, 1) <= sub_wire1(1); + sub_wire2(15, 2) <= sub_wire1(2); + sub_wire2(15, 3) <= sub_wire1(3); + sub_wire2(15, 4) <= sub_wire1(4); + sub_wire2(15, 5) <= sub_wire1(5); + sub_wire2(15, 6) <= sub_wire1(6); + sub_wire2(15, 7) <= sub_wire1(7); + sub_wire2(14, 0) <= sub_wire3(0); + sub_wire2(14, 1) <= sub_wire3(1); + sub_wire2(14, 2) <= sub_wire3(2); + sub_wire2(14, 3) <= sub_wire3(3); + sub_wire2(14, 4) <= sub_wire3(4); + sub_wire2(14, 5) <= sub_wire3(5); + sub_wire2(14, 6) <= sub_wire3(6); + sub_wire2(14, 7) <= sub_wire3(7); + sub_wire2(13, 0) <= sub_wire4(0); + sub_wire2(13, 1) <= sub_wire4(1); + sub_wire2(13, 2) <= sub_wire4(2); + sub_wire2(13, 3) <= sub_wire4(3); + sub_wire2(13, 4) <= sub_wire4(4); + sub_wire2(13, 5) <= sub_wire4(5); + sub_wire2(13, 6) <= sub_wire4(6); + sub_wire2(13, 7) <= sub_wire4(7); + sub_wire2(12, 0) <= sub_wire5(0); + sub_wire2(12, 1) <= sub_wire5(1); + sub_wire2(12, 2) <= sub_wire5(2); + sub_wire2(12, 3) <= sub_wire5(3); + sub_wire2(12, 4) <= sub_wire5(4); + sub_wire2(12, 5) <= sub_wire5(5); + sub_wire2(12, 6) <= sub_wire5(6); + sub_wire2(12, 7) <= sub_wire5(7); + sub_wire2(11, 0) <= sub_wire6(0); + sub_wire2(11, 1) <= sub_wire6(1); + sub_wire2(11, 2) <= sub_wire6(2); + sub_wire2(11, 3) <= sub_wire6(3); + sub_wire2(11, 4) <= sub_wire6(4); + sub_wire2(11, 5) <= sub_wire6(5); + sub_wire2(11, 6) <= sub_wire6(6); + sub_wire2(11, 7) <= sub_wire6(7); + sub_wire2(10, 0) <= sub_wire7(0); + sub_wire2(10, 1) <= sub_wire7(1); + sub_wire2(10, 2) <= sub_wire7(2); + sub_wire2(10, 3) <= sub_wire7(3); + sub_wire2(10, 4) <= sub_wire7(4); + sub_wire2(10, 5) <= sub_wire7(5); + sub_wire2(10, 6) <= sub_wire7(6); + sub_wire2(10, 7) <= sub_wire7(7); + sub_wire2(9, 0) <= sub_wire8(0); + sub_wire2(9, 1) <= sub_wire8(1); + sub_wire2(9, 2) <= sub_wire8(2); + sub_wire2(9, 3) <= sub_wire8(3); + sub_wire2(9, 4) <= sub_wire8(4); + sub_wire2(9, 5) <= sub_wire8(5); + sub_wire2(9, 6) <= sub_wire8(6); + sub_wire2(9, 7) <= sub_wire8(7); + sub_wire2(8, 0) <= sub_wire9(0); + sub_wire2(8, 1) <= sub_wire9(1); + sub_wire2(8, 2) <= sub_wire9(2); + sub_wire2(8, 3) <= sub_wire9(3); + sub_wire2(8, 4) <= sub_wire9(4); + sub_wire2(8, 5) <= sub_wire9(5); + sub_wire2(8, 6) <= sub_wire9(6); + sub_wire2(8, 7) <= sub_wire9(7); + sub_wire2(7, 0) <= sub_wire10(0); + sub_wire2(7, 1) <= sub_wire10(1); + sub_wire2(7, 2) <= sub_wire10(2); + sub_wire2(7, 3) <= sub_wire10(3); + sub_wire2(7, 4) <= sub_wire10(4); + sub_wire2(7, 5) <= sub_wire10(5); + sub_wire2(7, 6) <= sub_wire10(6); + sub_wire2(7, 7) <= sub_wire10(7); + sub_wire2(6, 0) <= sub_wire11(0); + sub_wire2(6, 1) <= sub_wire11(1); + sub_wire2(6, 2) <= sub_wire11(2); + sub_wire2(6, 3) <= sub_wire11(3); + sub_wire2(6, 4) <= sub_wire11(4); + sub_wire2(6, 5) <= sub_wire11(5); + sub_wire2(6, 6) <= sub_wire11(6); + sub_wire2(6, 7) <= sub_wire11(7); + sub_wire2(5, 0) <= sub_wire12(0); + sub_wire2(5, 1) <= sub_wire12(1); + sub_wire2(5, 2) <= sub_wire12(2); + sub_wire2(5, 3) <= sub_wire12(3); + sub_wire2(5, 4) <= sub_wire12(4); + sub_wire2(5, 5) <= sub_wire12(5); + sub_wire2(5, 6) <= sub_wire12(6); + sub_wire2(5, 7) <= sub_wire12(7); + sub_wire2(4, 0) <= sub_wire13(0); + sub_wire2(4, 1) <= sub_wire13(1); + sub_wire2(4, 2) <= sub_wire13(2); + sub_wire2(4, 3) <= sub_wire13(3); + sub_wire2(4, 4) <= sub_wire13(4); + sub_wire2(4, 5) <= sub_wire13(5); + sub_wire2(4, 6) <= sub_wire13(6); + sub_wire2(4, 7) <= sub_wire13(7); + sub_wire2(3, 0) <= sub_wire14(0); + sub_wire2(3, 1) <= sub_wire14(1); + sub_wire2(3, 2) <= sub_wire14(2); + sub_wire2(3, 3) <= sub_wire14(3); + sub_wire2(3, 4) <= sub_wire14(4); + sub_wire2(3, 5) <= sub_wire14(5); + sub_wire2(3, 6) <= sub_wire14(6); + sub_wire2(3, 7) <= sub_wire14(7); + sub_wire2(2, 0) <= sub_wire15(0); + sub_wire2(2, 1) <= sub_wire15(1); + sub_wire2(2, 2) <= sub_wire15(2); + sub_wire2(2, 3) <= sub_wire15(3); + sub_wire2(2, 4) <= sub_wire15(4); + sub_wire2(2, 5) <= sub_wire15(5); + sub_wire2(2, 6) <= sub_wire15(6); + sub_wire2(2, 7) <= sub_wire15(7); + sub_wire2(1, 0) <= sub_wire16(0); + sub_wire2(1, 1) <= sub_wire16(1); + sub_wire2(1, 2) <= sub_wire16(2); + sub_wire2(1, 3) <= sub_wire16(3); + sub_wire2(1, 4) <= sub_wire16(4); + sub_wire2(1, 5) <= sub_wire16(5); + sub_wire2(1, 6) <= sub_wire16(6); + sub_wire2(1, 7) <= sub_wire16(7); + sub_wire2(0, 0) <= sub_wire17(0); + sub_wire2(0, 1) <= sub_wire17(1); + sub_wire2(0, 2) <= sub_wire17(2); + sub_wire2(0, 3) <= sub_wire17(3); + sub_wire2(0, 4) <= sub_wire17(4); + sub_wire2(0, 5) <= sub_wire17(5); + sub_wire2(0, 6) <= sub_wire17(6); + sub_wire2(0, 7) <= sub_wire17(7); + + lpm_mux_component : lpm_mux + GENERIC MAP ( + lpm_pipeline => 2, + lpm_size => 16, + lpm_type => "LPM_MUX", + lpm_width => 8, + lpm_widths => 4 + ) + PORT MAP ( + sel => sel, + clock => clock, + data => sub_wire2, + result => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: CONSTANT: LPM_PIPELINE NUMERIC "2" +-- Retrieval info: CONSTANT: LPM_SIZE NUMERIC "16" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_MUX" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "8" +-- Retrieval info: CONSTANT: LPM_WIDTHS NUMERIC "4" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: data0x 0 0 8 0 INPUT NODEFVAL data0x[7..0] +-- Retrieval info: USED_PORT: data10x 0 0 8 0 INPUT NODEFVAL data10x[7..0] +-- Retrieval info: USED_PORT: data11x 0 0 8 0 INPUT NODEFVAL data11x[7..0] +-- Retrieval info: USED_PORT: data12x 0 0 8 0 INPUT NODEFVAL data12x[7..0] +-- Retrieval info: USED_PORT: data13x 0 0 8 0 INPUT NODEFVAL data13x[7..0] +-- Retrieval info: USED_PORT: data14x 0 0 8 0 INPUT NODEFVAL data14x[7..0] +-- Retrieval info: USED_PORT: data15x 0 0 8 0 INPUT NODEFVAL data15x[7..0] +-- Retrieval info: USED_PORT: data1x 0 0 8 0 INPUT NODEFVAL data1x[7..0] +-- Retrieval info: USED_PORT: data2x 0 0 8 0 INPUT NODEFVAL data2x[7..0] +-- Retrieval info: USED_PORT: data3x 0 0 8 0 INPUT NODEFVAL data3x[7..0] +-- Retrieval info: USED_PORT: data4x 0 0 8 0 INPUT NODEFVAL data4x[7..0] +-- Retrieval info: USED_PORT: data5x 0 0 8 0 INPUT NODEFVAL data5x[7..0] +-- Retrieval info: USED_PORT: data6x 0 0 8 0 INPUT NODEFVAL data6x[7..0] +-- Retrieval info: USED_PORT: data7x 0 0 8 0 INPUT NODEFVAL data7x[7..0] +-- Retrieval info: USED_PORT: data8x 0 0 8 0 INPUT NODEFVAL data8x[7..0] +-- Retrieval info: USED_PORT: data9x 0 0 8 0 INPUT NODEFVAL data9x[7..0] +-- Retrieval info: USED_PORT: result 0 0 8 0 OUTPUT NODEFVAL result[7..0] +-- Retrieval info: USED_PORT: sel 0 0 4 0 INPUT NODEFVAL sel[3..0] +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: result 0 0 8 0 @result 0 0 8 0 +-- Retrieval info: CONNECT: @data 1 15 8 0 data15x 0 0 8 0 +-- Retrieval info: CONNECT: @data 1 14 8 0 data14x 0 0 8 0 +-- Retrieval info: CONNECT: @data 1 13 8 0 data13x 0 0 8 0 +-- Retrieval info: CONNECT: @data 1 12 8 0 data12x 0 0 8 0 +-- Retrieval info: CONNECT: @data 1 11 8 0 data11x 0 0 8 0 +-- Retrieval info: CONNECT: @data 1 10 8 0 data10x 0 0 8 0 +-- Retrieval info: CONNECT: @data 1 9 8 0 data9x 0 0 8 0 +-- Retrieval info: CONNECT: @data 1 8 8 0 data8x 0 0 8 0 +-- Retrieval info: CONNECT: @data 1 7 8 0 data7x 0 0 8 0 +-- Retrieval info: CONNECT: @data 1 6 8 0 data6x 0 0 8 0 +-- Retrieval info: CONNECT: @data 1 5 8 0 data5x 0 0 8 0 +-- Retrieval info: CONNECT: @data 1 4 8 0 data4x 0 0 8 0 +-- Retrieval info: CONNECT: @data 1 3 8 0 data3x 0 0 8 0 +-- Retrieval info: CONNECT: @data 1 2 8 0 data2x 0 0 8 0 +-- Retrieval info: CONNECT: @data 1 1 8 0 data1x 0 0 8 0 +-- Retrieval info: CONNECT: @data 1 0 8 0 data0x 0 0 8 0 +-- Retrieval info: CONNECT: @sel 0 0 4 0 sel 0 0 4 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux2.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux2.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux2.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux2.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux2_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_mux3.bsf b/FPGA_quartus/Video/lpm_mux3.bsf new file mode 100644 index 0000000..c389543 --- /dev/null +++ b/FPGA_quartus/Video/lpm_mux3.bsf @@ -0,0 +1,60 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 80 80) + (text "lpm_mux3" (rect 10 2 80 18)(font "Arial" (font_size 10))) + (text "inst" (rect 8 64 25 76)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "data1" (rect 0 0 31 14)(font "Arial" (font_size 8))) + (text "data1" (rect 4 27 31 40)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 32 40)(line_width 1)) + ) + (port + (pt 0 56) + (input) + (text "data0" (rect 0 0 31 14)(font "Arial" (font_size 8))) + (text "data0" (rect 4 43 31 56)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 32 56)(line_width 1)) + ) + (port + (pt 40 80) + (input) + (text "sel" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "sel" (rect 44 67 57 80)(font "Arial" (font_size 8))) + (line (pt 40 80)(pt 40 68)(line_width 1)) + ) + (port + (pt 80 48) + (output) + (text "result" (rect 0 0 31 14)(font "Arial" (font_size 8))) + (text "result" (rect 50 35 75 48)(font "Arial" (font_size 8))) + (line (pt 80 48)(pt 48 48)(line_width 1)) + ) + (drawing + (line (pt 32 24)(pt 32 72)(line_width 1)) + (line (pt 48 32)(pt 48 64)(line_width 1)) + (line (pt 32 24)(pt 48 32)(line_width 1)) + (line (pt 32 72)(pt 48 64)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_mux3.cmp b/FPGA_quartus/Video/lpm_mux3.cmp new file mode 100644 index 0000000..48f730d --- /dev/null +++ b/FPGA_quartus/Video/lpm_mux3.cmp @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_mux3 + PORT + ( + data0 : IN STD_LOGIC ; + data1 : IN STD_LOGIC ; + sel : IN STD_LOGIC ; + result : OUT STD_LOGIC + ); +end component; diff --git a/FPGA_quartus/Video/lpm_mux3.qip b/FPGA_quartus/Video/lpm_mux3.qip new file mode 100644 index 0000000..ca1e672 --- /dev/null +++ b/FPGA_quartus/Video/lpm_mux3.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_MUX" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_mux3.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux3.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux3.cmp"] diff --git a/FPGA_quartus/Video/lpm_mux3.vhd b/FPGA_quartus/Video/lpm_mux3.vhd new file mode 100644 index 0000000..b975686 --- /dev/null +++ b/FPGA_quartus/Video/lpm_mux3.vhd @@ -0,0 +1,115 @@ +-- megafunction wizard: %LPM_MUX% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_mux + +-- ============================================================ +-- File Name: lpm_mux3.vhd +-- Megafunction Name(s): +-- lpm_mux +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.lpm_components.all; + +ENTITY lpm_mux3 IS + PORT + ( + data0 : IN STD_LOGIC ; + data1 : IN STD_LOGIC ; + sel : IN STD_LOGIC ; + result : OUT STD_LOGIC + ); +END lpm_mux3; + + +ARCHITECTURE SYN OF lpm_mux3 IS + +-- type STD_LOGIC_2D is array (NATURAL RANGE <>, NATURAL RANGE <>) of STD_LOGIC; + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC ; + SIGNAL sub_wire2 : STD_LOGIC ; + SIGNAL sub_wire3 : STD_LOGIC_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire4 : STD_LOGIC ; + SIGNAL sub_wire5 : STD_LOGIC_2D (1 DOWNTO 0, 0 DOWNTO 0); + SIGNAL sub_wire6 : STD_LOGIC ; + +BEGIN + sub_wire6 <= data0; + sub_wire1 <= sub_wire0(0); + result <= sub_wire1; + sub_wire2 <= sel; + sub_wire3(0) <= sub_wire2; + sub_wire4 <= data1; + sub_wire5(1, 0) <= sub_wire4; + sub_wire5(0, 0) <= sub_wire6; + + lpm_mux_component : lpm_mux + GENERIC MAP ( + lpm_size => 2, + lpm_type => "LPM_MUX", + lpm_width => 1, + lpm_widths => 1 + ) + PORT MAP ( + sel => sub_wire3, + data => sub_wire5, + result => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: CONSTANT: LPM_SIZE NUMERIC "2" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_MUX" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "1" +-- Retrieval info: CONSTANT: LPM_WIDTHS NUMERIC "1" +-- Retrieval info: USED_PORT: data0 0 0 0 0 INPUT NODEFVAL data0 +-- Retrieval info: USED_PORT: data1 0 0 0 0 INPUT NODEFVAL data1 +-- Retrieval info: USED_PORT: result 0 0 0 0 OUTPUT NODEFVAL result +-- Retrieval info: USED_PORT: sel 0 0 0 0 INPUT NODEFVAL sel +-- Retrieval info: CONNECT: result 0 0 0 0 @result 0 0 1 0 +-- Retrieval info: CONNECT: @data 1 1 1 0 data1 0 0 0 0 +-- Retrieval info: CONNECT: @data 1 0 1 0 data0 0 0 0 0 +-- Retrieval info: CONNECT: @sel 0 0 1 0 sel 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux3.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux3.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux3.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux3.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux3_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_mux4.bsf b/FPGA_quartus/Video/lpm_mux4.bsf new file mode 100644 index 0000000..a1c9ca0 --- /dev/null +++ b/FPGA_quartus/Video/lpm_mux4.bsf @@ -0,0 +1,60 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 136 80) + (text "lpm_mux4" (rect 42 2 112 18)(font "Arial" (font_size 10))) + (text "inst" (rect 8 64 25 76)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "data1x[6..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data1x[6..0]" (rect 4 27 60 40)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 64 40)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "data0x[6..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "data0x[6..0]" (rect 4 43 60 56)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 64 56)(line_width 3)) + ) + (port + (pt 72 80) + (input) + (text "sel" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "sel" (rect 76 67 89 80)(font "Arial" (font_size 8))) + (line (pt 72 80)(pt 72 68)(line_width 1)) + ) + (port + (pt 136 48) + (output) + (text "result[6..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "result[6..0]" (rect 82 35 131 48)(font "Arial" (font_size 8))) + (line (pt 136 48)(pt 80 48)(line_width 3)) + ) + (drawing + (line (pt 64 24)(pt 64 72)(line_width 1)) + (line (pt 80 32)(pt 80 64)(line_width 1)) + (line (pt 64 24)(pt 80 32)(line_width 1)) + (line (pt 64 72)(pt 80 64)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_mux4.cmp b/FPGA_quartus/Video/lpm_mux4.cmp new file mode 100644 index 0000000..05e7a07 --- /dev/null +++ b/FPGA_quartus/Video/lpm_mux4.cmp @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_mux4 + PORT + ( + data0x : IN STD_LOGIC_VECTOR (6 DOWNTO 0); + data1x : IN STD_LOGIC_VECTOR (6 DOWNTO 0); + sel : IN STD_LOGIC ; + result : OUT STD_LOGIC_VECTOR (6 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_mux4.qip b/FPGA_quartus/Video/lpm_mux4.qip new file mode 100644 index 0000000..7712e39 --- /dev/null +++ b/FPGA_quartus/Video/lpm_mux4.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_MUX" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_mux4.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux4.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux4.cmp"] diff --git a/FPGA_quartus/Video/lpm_mux4.vhd b/FPGA_quartus/Video/lpm_mux4.vhd new file mode 100644 index 0000000..854a491 --- /dev/null +++ b/FPGA_quartus/Video/lpm_mux4.vhd @@ -0,0 +1,125 @@ +-- megafunction wizard: %LPM_MUX% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_mux + +-- ============================================================ +-- File Name: lpm_mux4.vhd +-- Megafunction Name(s): +-- lpm_mux +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.lpm_components.all; + +ENTITY lpm_mux4 IS + PORT + ( + data0x : IN STD_LOGIC_VECTOR (6 DOWNTO 0); + data1x : IN STD_LOGIC_VECTOR (6 DOWNTO 0); + sel : IN STD_LOGIC ; + result : OUT STD_LOGIC_VECTOR (6 DOWNTO 0) + ); +END lpm_mux4; + + +ARCHITECTURE SYN OF lpm_mux4 IS + +-- type STD_LOGIC_2D is array (NATURAL RANGE <>, NATURAL RANGE <>) of STD_LOGIC; + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (6 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC ; + SIGNAL sub_wire2 : STD_LOGIC_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire3 : STD_LOGIC_VECTOR (6 DOWNTO 0); + SIGNAL sub_wire4 : STD_LOGIC_2D (1 DOWNTO 0, 6 DOWNTO 0); + SIGNAL sub_wire5 : STD_LOGIC_VECTOR (6 DOWNTO 0); + +BEGIN + sub_wire5 <= data0x(6 DOWNTO 0); + result <= sub_wire0(6 DOWNTO 0); + sub_wire1 <= sel; + sub_wire2(0) <= sub_wire1; + sub_wire3 <= data1x(6 DOWNTO 0); + sub_wire4(1, 0) <= sub_wire3(0); + sub_wire4(1, 1) <= sub_wire3(1); + sub_wire4(1, 2) <= sub_wire3(2); + sub_wire4(1, 3) <= sub_wire3(3); + sub_wire4(1, 4) <= sub_wire3(4); + sub_wire4(1, 5) <= sub_wire3(5); + sub_wire4(1, 6) <= sub_wire3(6); + sub_wire4(0, 0) <= sub_wire5(0); + sub_wire4(0, 1) <= sub_wire5(1); + sub_wire4(0, 2) <= sub_wire5(2); + sub_wire4(0, 3) <= sub_wire5(3); + sub_wire4(0, 4) <= sub_wire5(4); + sub_wire4(0, 5) <= sub_wire5(5); + sub_wire4(0, 6) <= sub_wire5(6); + + lpm_mux_component : lpm_mux + GENERIC MAP ( + lpm_size => 2, + lpm_type => "LPM_MUX", + lpm_width => 7, + lpm_widths => 1 + ) + PORT MAP ( + sel => sub_wire2, + data => sub_wire4, + result => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: CONSTANT: LPM_SIZE NUMERIC "2" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_MUX" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "7" +-- Retrieval info: CONSTANT: LPM_WIDTHS NUMERIC "1" +-- Retrieval info: USED_PORT: data0x 0 0 7 0 INPUT NODEFVAL data0x[6..0] +-- Retrieval info: USED_PORT: data1x 0 0 7 0 INPUT NODEFVAL data1x[6..0] +-- Retrieval info: USED_PORT: result 0 0 7 0 OUTPUT NODEFVAL result[6..0] +-- Retrieval info: USED_PORT: sel 0 0 0 0 INPUT NODEFVAL sel +-- Retrieval info: CONNECT: result 0 0 7 0 @result 0 0 7 0 +-- Retrieval info: CONNECT: @data 1 1 7 0 data1x 0 0 7 0 +-- Retrieval info: CONNECT: @data 1 0 7 0 data0x 0 0 7 0 +-- Retrieval info: CONNECT: @sel 0 0 1 0 sel 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux4.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux4.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux4.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux4.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux4_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_mux5.bsf b/FPGA_quartus/Video/lpm_mux5.bsf new file mode 100644 index 0000000..e63ce50 --- /dev/null +++ b/FPGA_quartus/Video/lpm_mux5.bsf @@ -0,0 +1,74 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 152 112) + (text "lpm_mux5" (rect 50 2 120 18)(font "Arial" (font_size 10))) + (text "inst" (rect 8 96 25 108)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "data3x[63..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data3x[63..0]" (rect 4 27 66 40)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 72 40)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "data2x[63..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data2x[63..0]" (rect 4 43 66 56)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 72 56)(line_width 3)) + ) + (port + (pt 0 72) + (input) + (text "data1x[63..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data1x[63..0]" (rect 4 59 66 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 72 72)(line_width 3)) + ) + (port + (pt 0 88) + (input) + (text "data0x[63..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data0x[63..0]" (rect 4 75 66 88)(font "Arial" (font_size 8))) + (line (pt 0 88)(pt 72 88)(line_width 3)) + ) + (port + (pt 80 112) + (input) + (text "sel[1..0]" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "sel[1..0]" (rect 84 99 121 112)(font "Arial" (font_size 8))) + (line (pt 80 112)(pt 80 100)(line_width 3)) + ) + (port + (pt 152 64) + (output) + (text "result[63..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "result[63..0]" (rect 92 51 147 64)(font "Arial" (font_size 8))) + (line (pt 152 64)(pt 88 64)(line_width 3)) + ) + (drawing + (line (pt 72 24)(pt 72 104)(line_width 1)) + (line (pt 88 32)(pt 88 96)(line_width 1)) + (line (pt 72 24)(pt 88 32)(line_width 1)) + (line (pt 72 104)(pt 88 96)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_mux5.cmp b/FPGA_quartus/Video/lpm_mux5.cmp new file mode 100644 index 0000000..efc712a --- /dev/null +++ b/FPGA_quartus/Video/lpm_mux5.cmp @@ -0,0 +1,26 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_mux5 + PORT + ( + data0x : IN STD_LOGIC_VECTOR (63 DOWNTO 0); + data1x : IN STD_LOGIC_VECTOR (63 DOWNTO 0); + data2x : IN STD_LOGIC_VECTOR (63 DOWNTO 0); + data3x : IN STD_LOGIC_VECTOR (63 DOWNTO 0); + sel : IN STD_LOGIC_VECTOR (1 DOWNTO 0); + result : OUT STD_LOGIC_VECTOR (63 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_mux5.inc b/FPGA_quartus/Video/lpm_mux5.inc new file mode 100644 index 0000000..a063f55 --- /dev/null +++ b/FPGA_quartus/Video/lpm_mux5.inc @@ -0,0 +1,27 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_mux5 +( + data0x[63..0], + data1x[63..0], + data2x[63..0], + data3x[63..0], + sel[1..0] +) + +RETURNS ( + result[63..0] +); diff --git a/FPGA_quartus/Video/lpm_mux5.qip b/FPGA_quartus/Video/lpm_mux5.qip new file mode 100644 index 0000000..08b2e74 --- /dev/null +++ b/FPGA_quartus/Video/lpm_mux5.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_MUX" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_mux5.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux5.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux5.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux5.cmp"] diff --git a/FPGA_quartus/Video/lpm_mux5.vhd b/FPGA_quartus/Video/lpm_mux5.vhd new file mode 100644 index 0000000..1d35347 --- /dev/null +++ b/FPGA_quartus/Video/lpm_mux5.vhd @@ -0,0 +1,373 @@ +-- megafunction wizard: %LPM_MUX% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_mux + +-- ============================================================ +-- File Name: lpm_mux5.vhd +-- Megafunction Name(s): +-- lpm_mux +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.lpm_components.all; + +ENTITY lpm_mux5 IS + PORT + ( + data0x : IN STD_LOGIC_VECTOR (63 DOWNTO 0); + data1x : IN STD_LOGIC_VECTOR (63 DOWNTO 0); + data2x : IN STD_LOGIC_VECTOR (63 DOWNTO 0); + data3x : IN STD_LOGIC_VECTOR (63 DOWNTO 0); + sel : IN STD_LOGIC_VECTOR (1 DOWNTO 0); + result : OUT STD_LOGIC_VECTOR (63 DOWNTO 0) + ); +END lpm_mux5; + + +ARCHITECTURE SYN OF lpm_mux5 IS + +-- type STD_LOGIC_2D is array (NATURAL RANGE <>, NATURAL RANGE <>) of STD_LOGIC; + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (63 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (63 DOWNTO 0); + SIGNAL sub_wire2 : STD_LOGIC_2D (3 DOWNTO 0, 63 DOWNTO 0); + SIGNAL sub_wire3 : STD_LOGIC_VECTOR (63 DOWNTO 0); + SIGNAL sub_wire4 : STD_LOGIC_VECTOR (63 DOWNTO 0); + SIGNAL sub_wire5 : STD_LOGIC_VECTOR (63 DOWNTO 0); + +BEGIN + sub_wire5 <= data0x(63 DOWNTO 0); + sub_wire4 <= data1x(63 DOWNTO 0); + sub_wire3 <= data2x(63 DOWNTO 0); + result <= sub_wire0(63 DOWNTO 0); + sub_wire1 <= data3x(63 DOWNTO 0); + sub_wire2(3, 0) <= sub_wire1(0); + sub_wire2(3, 1) <= sub_wire1(1); + sub_wire2(3, 2) <= sub_wire1(2); + sub_wire2(3, 3) <= sub_wire1(3); + sub_wire2(3, 4) <= sub_wire1(4); + sub_wire2(3, 5) <= sub_wire1(5); + sub_wire2(3, 6) <= sub_wire1(6); + sub_wire2(3, 7) <= sub_wire1(7); + sub_wire2(3, 8) <= sub_wire1(8); + sub_wire2(3, 9) <= sub_wire1(9); + sub_wire2(3, 10) <= sub_wire1(10); + sub_wire2(3, 11) <= sub_wire1(11); + sub_wire2(3, 12) <= sub_wire1(12); + sub_wire2(3, 13) <= sub_wire1(13); + sub_wire2(3, 14) <= sub_wire1(14); + sub_wire2(3, 15) <= sub_wire1(15); + sub_wire2(3, 16) <= sub_wire1(16); + sub_wire2(3, 17) <= sub_wire1(17); + sub_wire2(3, 18) <= sub_wire1(18); + sub_wire2(3, 19) <= sub_wire1(19); + sub_wire2(3, 20) <= sub_wire1(20); + sub_wire2(3, 21) <= sub_wire1(21); + sub_wire2(3, 22) <= sub_wire1(22); + sub_wire2(3, 23) <= sub_wire1(23); + sub_wire2(3, 24) <= sub_wire1(24); + sub_wire2(3, 25) <= sub_wire1(25); + sub_wire2(3, 26) <= sub_wire1(26); + sub_wire2(3, 27) <= sub_wire1(27); + sub_wire2(3, 28) <= sub_wire1(28); + sub_wire2(3, 29) <= sub_wire1(29); + sub_wire2(3, 30) <= sub_wire1(30); + sub_wire2(3, 31) <= sub_wire1(31); + sub_wire2(3, 32) <= sub_wire1(32); + sub_wire2(3, 33) <= sub_wire1(33); + sub_wire2(3, 34) <= sub_wire1(34); + sub_wire2(3, 35) <= sub_wire1(35); + sub_wire2(3, 36) <= sub_wire1(36); + sub_wire2(3, 37) <= sub_wire1(37); + sub_wire2(3, 38) <= sub_wire1(38); + sub_wire2(3, 39) <= sub_wire1(39); + sub_wire2(3, 40) <= sub_wire1(40); + sub_wire2(3, 41) <= sub_wire1(41); + sub_wire2(3, 42) <= sub_wire1(42); + sub_wire2(3, 43) <= sub_wire1(43); + sub_wire2(3, 44) <= sub_wire1(44); + sub_wire2(3, 45) <= sub_wire1(45); + sub_wire2(3, 46) <= sub_wire1(46); + sub_wire2(3, 47) <= sub_wire1(47); + sub_wire2(3, 48) <= sub_wire1(48); + sub_wire2(3, 49) <= sub_wire1(49); + sub_wire2(3, 50) <= sub_wire1(50); + sub_wire2(3, 51) <= sub_wire1(51); + sub_wire2(3, 52) <= sub_wire1(52); + sub_wire2(3, 53) <= sub_wire1(53); + sub_wire2(3, 54) <= sub_wire1(54); + sub_wire2(3, 55) <= sub_wire1(55); + sub_wire2(3, 56) <= sub_wire1(56); + sub_wire2(3, 57) <= sub_wire1(57); + sub_wire2(3, 58) <= sub_wire1(58); + sub_wire2(3, 59) <= sub_wire1(59); + sub_wire2(3, 60) <= sub_wire1(60); + sub_wire2(3, 61) <= sub_wire1(61); + sub_wire2(3, 62) <= sub_wire1(62); + sub_wire2(3, 63) <= sub_wire1(63); + sub_wire2(2, 0) <= sub_wire3(0); + sub_wire2(2, 1) <= sub_wire3(1); + sub_wire2(2, 2) <= sub_wire3(2); + sub_wire2(2, 3) <= sub_wire3(3); + sub_wire2(2, 4) <= sub_wire3(4); + sub_wire2(2, 5) <= sub_wire3(5); + sub_wire2(2, 6) <= sub_wire3(6); + sub_wire2(2, 7) <= sub_wire3(7); + sub_wire2(2, 8) <= sub_wire3(8); + sub_wire2(2, 9) <= sub_wire3(9); + sub_wire2(2, 10) <= sub_wire3(10); + sub_wire2(2, 11) <= sub_wire3(11); + sub_wire2(2, 12) <= sub_wire3(12); + sub_wire2(2, 13) <= sub_wire3(13); + sub_wire2(2, 14) <= sub_wire3(14); + sub_wire2(2, 15) <= sub_wire3(15); + sub_wire2(2, 16) <= sub_wire3(16); + sub_wire2(2, 17) <= sub_wire3(17); + sub_wire2(2, 18) <= sub_wire3(18); + sub_wire2(2, 19) <= sub_wire3(19); + sub_wire2(2, 20) <= sub_wire3(20); + sub_wire2(2, 21) <= sub_wire3(21); + sub_wire2(2, 22) <= sub_wire3(22); + sub_wire2(2, 23) <= sub_wire3(23); + sub_wire2(2, 24) <= sub_wire3(24); + sub_wire2(2, 25) <= sub_wire3(25); + sub_wire2(2, 26) <= sub_wire3(26); + sub_wire2(2, 27) <= sub_wire3(27); + sub_wire2(2, 28) <= sub_wire3(28); + sub_wire2(2, 29) <= sub_wire3(29); + sub_wire2(2, 30) <= sub_wire3(30); + sub_wire2(2, 31) <= sub_wire3(31); + sub_wire2(2, 32) <= sub_wire3(32); + sub_wire2(2, 33) <= sub_wire3(33); + sub_wire2(2, 34) <= sub_wire3(34); + sub_wire2(2, 35) <= sub_wire3(35); + sub_wire2(2, 36) <= sub_wire3(36); + sub_wire2(2, 37) <= sub_wire3(37); + sub_wire2(2, 38) <= sub_wire3(38); + sub_wire2(2, 39) <= sub_wire3(39); + sub_wire2(2, 40) <= sub_wire3(40); + sub_wire2(2, 41) <= sub_wire3(41); + sub_wire2(2, 42) <= sub_wire3(42); + sub_wire2(2, 43) <= sub_wire3(43); + sub_wire2(2, 44) <= sub_wire3(44); + sub_wire2(2, 45) <= sub_wire3(45); + sub_wire2(2, 46) <= sub_wire3(46); + sub_wire2(2, 47) <= sub_wire3(47); + sub_wire2(2, 48) <= sub_wire3(48); + sub_wire2(2, 49) <= sub_wire3(49); + sub_wire2(2, 50) <= sub_wire3(50); + sub_wire2(2, 51) <= sub_wire3(51); + sub_wire2(2, 52) <= sub_wire3(52); + sub_wire2(2, 53) <= sub_wire3(53); + sub_wire2(2, 54) <= sub_wire3(54); + sub_wire2(2, 55) <= sub_wire3(55); + sub_wire2(2, 56) <= sub_wire3(56); + sub_wire2(2, 57) <= sub_wire3(57); + sub_wire2(2, 58) <= sub_wire3(58); + sub_wire2(2, 59) <= sub_wire3(59); + sub_wire2(2, 60) <= sub_wire3(60); + sub_wire2(2, 61) <= sub_wire3(61); + sub_wire2(2, 62) <= sub_wire3(62); + sub_wire2(2, 63) <= sub_wire3(63); + sub_wire2(1, 0) <= sub_wire4(0); + sub_wire2(1, 1) <= sub_wire4(1); + sub_wire2(1, 2) <= sub_wire4(2); + sub_wire2(1, 3) <= sub_wire4(3); + sub_wire2(1, 4) <= sub_wire4(4); + sub_wire2(1, 5) <= sub_wire4(5); + sub_wire2(1, 6) <= sub_wire4(6); + sub_wire2(1, 7) <= sub_wire4(7); + sub_wire2(1, 8) <= sub_wire4(8); + sub_wire2(1, 9) <= sub_wire4(9); + sub_wire2(1, 10) <= sub_wire4(10); + sub_wire2(1, 11) <= sub_wire4(11); + sub_wire2(1, 12) <= sub_wire4(12); + sub_wire2(1, 13) <= sub_wire4(13); + sub_wire2(1, 14) <= sub_wire4(14); + sub_wire2(1, 15) <= sub_wire4(15); + sub_wire2(1, 16) <= sub_wire4(16); + sub_wire2(1, 17) <= sub_wire4(17); + sub_wire2(1, 18) <= sub_wire4(18); + sub_wire2(1, 19) <= sub_wire4(19); + sub_wire2(1, 20) <= sub_wire4(20); + sub_wire2(1, 21) <= sub_wire4(21); + sub_wire2(1, 22) <= sub_wire4(22); + sub_wire2(1, 23) <= sub_wire4(23); + sub_wire2(1, 24) <= sub_wire4(24); + sub_wire2(1, 25) <= sub_wire4(25); + sub_wire2(1, 26) <= sub_wire4(26); + sub_wire2(1, 27) <= sub_wire4(27); + sub_wire2(1, 28) <= sub_wire4(28); + sub_wire2(1, 29) <= sub_wire4(29); + sub_wire2(1, 30) <= sub_wire4(30); + sub_wire2(1, 31) <= sub_wire4(31); + sub_wire2(1, 32) <= sub_wire4(32); + sub_wire2(1, 33) <= sub_wire4(33); + sub_wire2(1, 34) <= sub_wire4(34); + sub_wire2(1, 35) <= sub_wire4(35); + sub_wire2(1, 36) <= sub_wire4(36); + sub_wire2(1, 37) <= sub_wire4(37); + sub_wire2(1, 38) <= sub_wire4(38); + sub_wire2(1, 39) <= sub_wire4(39); + sub_wire2(1, 40) <= sub_wire4(40); + sub_wire2(1, 41) <= sub_wire4(41); + sub_wire2(1, 42) <= sub_wire4(42); + sub_wire2(1, 43) <= sub_wire4(43); + sub_wire2(1, 44) <= sub_wire4(44); + sub_wire2(1, 45) <= sub_wire4(45); + sub_wire2(1, 46) <= sub_wire4(46); + sub_wire2(1, 47) <= sub_wire4(47); + sub_wire2(1, 48) <= sub_wire4(48); + sub_wire2(1, 49) <= sub_wire4(49); + sub_wire2(1, 50) <= sub_wire4(50); + sub_wire2(1, 51) <= sub_wire4(51); + sub_wire2(1, 52) <= sub_wire4(52); + sub_wire2(1, 53) <= sub_wire4(53); + sub_wire2(1, 54) <= sub_wire4(54); + sub_wire2(1, 55) <= sub_wire4(55); + sub_wire2(1, 56) <= sub_wire4(56); + sub_wire2(1, 57) <= sub_wire4(57); + sub_wire2(1, 58) <= sub_wire4(58); + sub_wire2(1, 59) <= sub_wire4(59); + sub_wire2(1, 60) <= sub_wire4(60); + sub_wire2(1, 61) <= sub_wire4(61); + sub_wire2(1, 62) <= sub_wire4(62); + sub_wire2(1, 63) <= sub_wire4(63); + sub_wire2(0, 0) <= sub_wire5(0); + sub_wire2(0, 1) <= sub_wire5(1); + sub_wire2(0, 2) <= sub_wire5(2); + sub_wire2(0, 3) <= sub_wire5(3); + sub_wire2(0, 4) <= sub_wire5(4); + sub_wire2(0, 5) <= sub_wire5(5); + sub_wire2(0, 6) <= sub_wire5(6); + sub_wire2(0, 7) <= sub_wire5(7); + sub_wire2(0, 8) <= sub_wire5(8); + sub_wire2(0, 9) <= sub_wire5(9); + sub_wire2(0, 10) <= sub_wire5(10); + sub_wire2(0, 11) <= sub_wire5(11); + sub_wire2(0, 12) <= sub_wire5(12); + sub_wire2(0, 13) <= sub_wire5(13); + sub_wire2(0, 14) <= sub_wire5(14); + sub_wire2(0, 15) <= sub_wire5(15); + sub_wire2(0, 16) <= sub_wire5(16); + sub_wire2(0, 17) <= sub_wire5(17); + sub_wire2(0, 18) <= sub_wire5(18); + sub_wire2(0, 19) <= sub_wire5(19); + sub_wire2(0, 20) <= sub_wire5(20); + sub_wire2(0, 21) <= sub_wire5(21); + sub_wire2(0, 22) <= sub_wire5(22); + sub_wire2(0, 23) <= sub_wire5(23); + sub_wire2(0, 24) <= sub_wire5(24); + sub_wire2(0, 25) <= sub_wire5(25); + sub_wire2(0, 26) <= sub_wire5(26); + sub_wire2(0, 27) <= sub_wire5(27); + sub_wire2(0, 28) <= sub_wire5(28); + sub_wire2(0, 29) <= sub_wire5(29); + sub_wire2(0, 30) <= sub_wire5(30); + sub_wire2(0, 31) <= sub_wire5(31); + sub_wire2(0, 32) <= sub_wire5(32); + sub_wire2(0, 33) <= sub_wire5(33); + sub_wire2(0, 34) <= sub_wire5(34); + sub_wire2(0, 35) <= sub_wire5(35); + sub_wire2(0, 36) <= sub_wire5(36); + sub_wire2(0, 37) <= sub_wire5(37); + sub_wire2(0, 38) <= sub_wire5(38); + sub_wire2(0, 39) <= sub_wire5(39); + sub_wire2(0, 40) <= sub_wire5(40); + sub_wire2(0, 41) <= sub_wire5(41); + sub_wire2(0, 42) <= sub_wire5(42); + sub_wire2(0, 43) <= sub_wire5(43); + sub_wire2(0, 44) <= sub_wire5(44); + sub_wire2(0, 45) <= sub_wire5(45); + sub_wire2(0, 46) <= sub_wire5(46); + sub_wire2(0, 47) <= sub_wire5(47); + sub_wire2(0, 48) <= sub_wire5(48); + sub_wire2(0, 49) <= sub_wire5(49); + sub_wire2(0, 50) <= sub_wire5(50); + sub_wire2(0, 51) <= sub_wire5(51); + sub_wire2(0, 52) <= sub_wire5(52); + sub_wire2(0, 53) <= sub_wire5(53); + sub_wire2(0, 54) <= sub_wire5(54); + sub_wire2(0, 55) <= sub_wire5(55); + sub_wire2(0, 56) <= sub_wire5(56); + sub_wire2(0, 57) <= sub_wire5(57); + sub_wire2(0, 58) <= sub_wire5(58); + sub_wire2(0, 59) <= sub_wire5(59); + sub_wire2(0, 60) <= sub_wire5(60); + sub_wire2(0, 61) <= sub_wire5(61); + sub_wire2(0, 62) <= sub_wire5(62); + sub_wire2(0, 63) <= sub_wire5(63); + + lpm_mux_component : lpm_mux + GENERIC MAP ( + lpm_size => 4, + lpm_type => "LPM_MUX", + lpm_width => 64, + lpm_widths => 2 + ) + PORT MAP ( + sel => sel, + data => sub_wire2, + result => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: CONSTANT: LPM_SIZE NUMERIC "4" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_MUX" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "64" +-- Retrieval info: CONSTANT: LPM_WIDTHS NUMERIC "2" +-- Retrieval info: USED_PORT: data0x 0 0 64 0 INPUT NODEFVAL data0x[63..0] +-- Retrieval info: USED_PORT: data1x 0 0 64 0 INPUT NODEFVAL data1x[63..0] +-- Retrieval info: USED_PORT: data2x 0 0 64 0 INPUT NODEFVAL data2x[63..0] +-- Retrieval info: USED_PORT: data3x 0 0 64 0 INPUT NODEFVAL data3x[63..0] +-- Retrieval info: USED_PORT: result 0 0 64 0 OUTPUT NODEFVAL result[63..0] +-- Retrieval info: USED_PORT: sel 0 0 2 0 INPUT NODEFVAL sel[1..0] +-- Retrieval info: CONNECT: result 0 0 64 0 @result 0 0 64 0 +-- Retrieval info: CONNECT: @data 1 3 64 0 data3x 0 0 64 0 +-- Retrieval info: CONNECT: @data 1 2 64 0 data2x 0 0 64 0 +-- Retrieval info: CONNECT: @data 1 1 64 0 data1x 0 0 64 0 +-- Retrieval info: CONNECT: @data 1 0 64 0 data0x 0 0 64 0 +-- Retrieval info: CONNECT: @sel 0 0 2 0 sel 0 0 2 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux5.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux5.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux5.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux5.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux5_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_mux6.bsf b/FPGA_quartus/Video/lpm_mux6.bsf new file mode 100644 index 0000000..2196842 --- /dev/null +++ b/FPGA_quartus/Video/lpm_mux6.bsf @@ -0,0 +1,111 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 152 192) + (text "lpm_mux6" (rect 50 2 120 18)(font "Arial" (font_size 10))) + (text "inst" (rect 8 176 25 188)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "data7x[23..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data7x[23..0]" (rect 4 27 66 40)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 72 40)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "data6x[23..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data6x[23..0]" (rect 4 43 66 56)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 72 56)(line_width 3)) + ) + (port + (pt 0 72) + (input) + (text "data5x[23..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data5x[23..0]" (rect 4 59 66 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 72 72)(line_width 3)) + ) + (port + (pt 0 88) + (input) + (text "data4x[23..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data4x[23..0]" (rect 4 75 66 88)(font "Arial" (font_size 8))) + (line (pt 0 88)(pt 72 88)(line_width 3)) + ) + (port + (pt 0 104) + (input) + (text "data3x[23..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data3x[23..0]" (rect 4 91 66 104)(font "Arial" (font_size 8))) + (line (pt 0 104)(pt 72 104)(line_width 3)) + ) + (port + (pt 0 120) + (input) + (text "data2x[23..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data2x[23..0]" (rect 4 107 66 120)(font "Arial" (font_size 8))) + (line (pt 0 120)(pt 72 120)(line_width 3)) + ) + (port + (pt 0 136) + (input) + (text "data1x[23..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data1x[23..0]" (rect 4 123 66 136)(font "Arial" (font_size 8))) + (line (pt 0 136)(pt 72 136)(line_width 3)) + ) + (port + (pt 0 152) + (input) + (text "data0x[23..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "data0x[23..0]" (rect 4 139 66 152)(font "Arial" (font_size 8))) + (line (pt 0 152)(pt 72 152)(line_width 3)) + ) + (port + (pt 0 168) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 4 155 27 168)(font "Arial" (font_size 8))) + (line (pt 0 168)(pt 72 168)(line_width 1)) + ) + (port + (pt 80 192) + (input) + (text "sel[2..0]" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "sel[2..0]" (rect 84 179 121 192)(font "Arial" (font_size 8))) + (line (pt 80 192)(pt 80 180)(line_width 3)) + ) + (port + (pt 152 104) + (output) + (text "result[23..0]" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "result[23..0]" (rect 92 91 147 104)(font "Arial" (font_size 8))) + (line (pt 152 104)(pt 88 104)(line_width 3)) + ) + (drawing + (line (pt 72 24)(pt 72 184)(line_width 1)) + (line (pt 88 32)(pt 88 176)(line_width 1)) + (line (pt 72 24)(pt 88 32)(line_width 1)) + (line (pt 72 184)(pt 88 176)(line_width 1)) + (line (pt 72 162)(pt 78 168)(line_width 1)) + (line (pt 78 168)(pt 72 174)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_mux6.cmp b/FPGA_quartus/Video/lpm_mux6.cmp new file mode 100644 index 0000000..543da1f --- /dev/null +++ b/FPGA_quartus/Video/lpm_mux6.cmp @@ -0,0 +1,31 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_mux6 + PORT + ( + clock : IN STD_LOGIC ; + data0x : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + data1x : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + data2x : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + data3x : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + data4x : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + data5x : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + data6x : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + data7x : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + sel : IN STD_LOGIC_VECTOR (2 DOWNTO 0); + result : OUT STD_LOGIC_VECTOR (23 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_mux6.inc b/FPGA_quartus/Video/lpm_mux6.inc new file mode 100644 index 0000000..3cf223d --- /dev/null +++ b/FPGA_quartus/Video/lpm_mux6.inc @@ -0,0 +1,32 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_mux6 +( + clock, + data0x[23..0], + data1x[23..0], + data2x[23..0], + data3x[23..0], + data4x[23..0], + data5x[23..0], + data6x[23..0], + data7x[23..0], + sel[2..0] +) + +RETURNS ( + result[23..0] +); diff --git a/FPGA_quartus/Video/lpm_mux6.qip b/FPGA_quartus/Video/lpm_mux6.qip new file mode 100644 index 0000000..051a945 --- /dev/null +++ b/FPGA_quartus/Video/lpm_mux6.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_MUX" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_mux6.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux6.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux6.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_mux6.cmp"] diff --git a/FPGA_quartus/Video/lpm_mux6.vhd b/FPGA_quartus/Video/lpm_mux6.vhd new file mode 100644 index 0000000..42d5aae --- /dev/null +++ b/FPGA_quartus/Video/lpm_mux6.vhd @@ -0,0 +1,335 @@ +-- megafunction wizard: %LPM_MUX% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_mux + +-- ============================================================ +-- File Name: lpm_mux6.vhd +-- Megafunction Name(s): +-- lpm_mux +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.lpm_components.all; + +ENTITY lpm_mux6 IS + PORT + ( + clock : IN STD_LOGIC ; + data0x : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + data1x : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + data2x : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + data3x : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + data4x : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + data5x : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + data6x : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + data7x : IN STD_LOGIC_VECTOR (23 DOWNTO 0); + sel : IN STD_LOGIC_VECTOR (2 DOWNTO 0); + result : OUT STD_LOGIC_VECTOR (23 DOWNTO 0) + ); +END lpm_mux6; + + +ARCHITECTURE SYN OF lpm_mux6 IS + +-- type STD_LOGIC_2D is array (NATURAL RANGE <>, NATURAL RANGE <>) of STD_LOGIC; + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (23 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (23 DOWNTO 0); + SIGNAL sub_wire2 : STD_LOGIC_2D (7 DOWNTO 0, 23 DOWNTO 0); + SIGNAL sub_wire3 : STD_LOGIC_VECTOR (23 DOWNTO 0); + SIGNAL sub_wire4 : STD_LOGIC_VECTOR (23 DOWNTO 0); + SIGNAL sub_wire5 : STD_LOGIC_VECTOR (23 DOWNTO 0); + SIGNAL sub_wire6 : STD_LOGIC_VECTOR (23 DOWNTO 0); + SIGNAL sub_wire7 : STD_LOGIC_VECTOR (23 DOWNTO 0); + SIGNAL sub_wire8 : STD_LOGIC_VECTOR (23 DOWNTO 0); + SIGNAL sub_wire9 : STD_LOGIC_VECTOR (23 DOWNTO 0); + +BEGIN + sub_wire9 <= data0x(23 DOWNTO 0); + sub_wire8 <= data1x(23 DOWNTO 0); + sub_wire7 <= data2x(23 DOWNTO 0); + sub_wire6 <= data3x(23 DOWNTO 0); + sub_wire5 <= data4x(23 DOWNTO 0); + sub_wire4 <= data5x(23 DOWNTO 0); + sub_wire3 <= data6x(23 DOWNTO 0); + result <= sub_wire0(23 DOWNTO 0); + sub_wire1 <= data7x(23 DOWNTO 0); + sub_wire2(7, 0) <= sub_wire1(0); + sub_wire2(7, 1) <= sub_wire1(1); + sub_wire2(7, 2) <= sub_wire1(2); + sub_wire2(7, 3) <= sub_wire1(3); + sub_wire2(7, 4) <= sub_wire1(4); + sub_wire2(7, 5) <= sub_wire1(5); + sub_wire2(7, 6) <= sub_wire1(6); + sub_wire2(7, 7) <= sub_wire1(7); + sub_wire2(7, 8) <= sub_wire1(8); + sub_wire2(7, 9) <= sub_wire1(9); + sub_wire2(7, 10) <= sub_wire1(10); + sub_wire2(7, 11) <= sub_wire1(11); + sub_wire2(7, 12) <= sub_wire1(12); + sub_wire2(7, 13) <= sub_wire1(13); + sub_wire2(7, 14) <= sub_wire1(14); + sub_wire2(7, 15) <= sub_wire1(15); + sub_wire2(7, 16) <= sub_wire1(16); + sub_wire2(7, 17) <= sub_wire1(17); + sub_wire2(7, 18) <= sub_wire1(18); + sub_wire2(7, 19) <= sub_wire1(19); + sub_wire2(7, 20) <= sub_wire1(20); + sub_wire2(7, 21) <= sub_wire1(21); + sub_wire2(7, 22) <= sub_wire1(22); + sub_wire2(7, 23) <= sub_wire1(23); + sub_wire2(6, 0) <= sub_wire3(0); + sub_wire2(6, 1) <= sub_wire3(1); + sub_wire2(6, 2) <= sub_wire3(2); + sub_wire2(6, 3) <= sub_wire3(3); + sub_wire2(6, 4) <= sub_wire3(4); + sub_wire2(6, 5) <= sub_wire3(5); + sub_wire2(6, 6) <= sub_wire3(6); + sub_wire2(6, 7) <= sub_wire3(7); + sub_wire2(6, 8) <= sub_wire3(8); + sub_wire2(6, 9) <= sub_wire3(9); + sub_wire2(6, 10) <= sub_wire3(10); + sub_wire2(6, 11) <= sub_wire3(11); + sub_wire2(6, 12) <= sub_wire3(12); + sub_wire2(6, 13) <= sub_wire3(13); + sub_wire2(6, 14) <= sub_wire3(14); + sub_wire2(6, 15) <= sub_wire3(15); + sub_wire2(6, 16) <= sub_wire3(16); + sub_wire2(6, 17) <= sub_wire3(17); + sub_wire2(6, 18) <= sub_wire3(18); + sub_wire2(6, 19) <= sub_wire3(19); + sub_wire2(6, 20) <= sub_wire3(20); + sub_wire2(6, 21) <= sub_wire3(21); + sub_wire2(6, 22) <= sub_wire3(22); + sub_wire2(6, 23) <= sub_wire3(23); + sub_wire2(5, 0) <= sub_wire4(0); + sub_wire2(5, 1) <= sub_wire4(1); + sub_wire2(5, 2) <= sub_wire4(2); + sub_wire2(5, 3) <= sub_wire4(3); + sub_wire2(5, 4) <= sub_wire4(4); + sub_wire2(5, 5) <= sub_wire4(5); + sub_wire2(5, 6) <= sub_wire4(6); + sub_wire2(5, 7) <= sub_wire4(7); + sub_wire2(5, 8) <= sub_wire4(8); + sub_wire2(5, 9) <= sub_wire4(9); + sub_wire2(5, 10) <= sub_wire4(10); + sub_wire2(5, 11) <= sub_wire4(11); + sub_wire2(5, 12) <= sub_wire4(12); + sub_wire2(5, 13) <= sub_wire4(13); + sub_wire2(5, 14) <= sub_wire4(14); + sub_wire2(5, 15) <= sub_wire4(15); + sub_wire2(5, 16) <= sub_wire4(16); + sub_wire2(5, 17) <= sub_wire4(17); + sub_wire2(5, 18) <= sub_wire4(18); + sub_wire2(5, 19) <= sub_wire4(19); + sub_wire2(5, 20) <= sub_wire4(20); + sub_wire2(5, 21) <= sub_wire4(21); + sub_wire2(5, 22) <= sub_wire4(22); + sub_wire2(5, 23) <= sub_wire4(23); + sub_wire2(4, 0) <= sub_wire5(0); + sub_wire2(4, 1) <= sub_wire5(1); + sub_wire2(4, 2) <= sub_wire5(2); + sub_wire2(4, 3) <= sub_wire5(3); + sub_wire2(4, 4) <= sub_wire5(4); + sub_wire2(4, 5) <= sub_wire5(5); + sub_wire2(4, 6) <= sub_wire5(6); + sub_wire2(4, 7) <= sub_wire5(7); + sub_wire2(4, 8) <= sub_wire5(8); + sub_wire2(4, 9) <= sub_wire5(9); + sub_wire2(4, 10) <= sub_wire5(10); + sub_wire2(4, 11) <= sub_wire5(11); + sub_wire2(4, 12) <= sub_wire5(12); + sub_wire2(4, 13) <= sub_wire5(13); + sub_wire2(4, 14) <= sub_wire5(14); + sub_wire2(4, 15) <= sub_wire5(15); + sub_wire2(4, 16) <= sub_wire5(16); + sub_wire2(4, 17) <= sub_wire5(17); + sub_wire2(4, 18) <= sub_wire5(18); + sub_wire2(4, 19) <= sub_wire5(19); + sub_wire2(4, 20) <= sub_wire5(20); + sub_wire2(4, 21) <= sub_wire5(21); + sub_wire2(4, 22) <= sub_wire5(22); + sub_wire2(4, 23) <= sub_wire5(23); + sub_wire2(3, 0) <= sub_wire6(0); + sub_wire2(3, 1) <= sub_wire6(1); + sub_wire2(3, 2) <= sub_wire6(2); + sub_wire2(3, 3) <= sub_wire6(3); + sub_wire2(3, 4) <= sub_wire6(4); + sub_wire2(3, 5) <= sub_wire6(5); + sub_wire2(3, 6) <= sub_wire6(6); + sub_wire2(3, 7) <= sub_wire6(7); + sub_wire2(3, 8) <= sub_wire6(8); + sub_wire2(3, 9) <= sub_wire6(9); + sub_wire2(3, 10) <= sub_wire6(10); + sub_wire2(3, 11) <= sub_wire6(11); + sub_wire2(3, 12) <= sub_wire6(12); + sub_wire2(3, 13) <= sub_wire6(13); + sub_wire2(3, 14) <= sub_wire6(14); + sub_wire2(3, 15) <= sub_wire6(15); + sub_wire2(3, 16) <= sub_wire6(16); + sub_wire2(3, 17) <= sub_wire6(17); + sub_wire2(3, 18) <= sub_wire6(18); + sub_wire2(3, 19) <= sub_wire6(19); + sub_wire2(3, 20) <= sub_wire6(20); + sub_wire2(3, 21) <= sub_wire6(21); + sub_wire2(3, 22) <= sub_wire6(22); + sub_wire2(3, 23) <= sub_wire6(23); + sub_wire2(2, 0) <= sub_wire7(0); + sub_wire2(2, 1) <= sub_wire7(1); + sub_wire2(2, 2) <= sub_wire7(2); + sub_wire2(2, 3) <= sub_wire7(3); + sub_wire2(2, 4) <= sub_wire7(4); + sub_wire2(2, 5) <= sub_wire7(5); + sub_wire2(2, 6) <= sub_wire7(6); + sub_wire2(2, 7) <= sub_wire7(7); + sub_wire2(2, 8) <= sub_wire7(8); + sub_wire2(2, 9) <= sub_wire7(9); + sub_wire2(2, 10) <= sub_wire7(10); + sub_wire2(2, 11) <= sub_wire7(11); + sub_wire2(2, 12) <= sub_wire7(12); + sub_wire2(2, 13) <= sub_wire7(13); + sub_wire2(2, 14) <= sub_wire7(14); + sub_wire2(2, 15) <= sub_wire7(15); + sub_wire2(2, 16) <= sub_wire7(16); + sub_wire2(2, 17) <= sub_wire7(17); + sub_wire2(2, 18) <= sub_wire7(18); + sub_wire2(2, 19) <= sub_wire7(19); + sub_wire2(2, 20) <= sub_wire7(20); + sub_wire2(2, 21) <= sub_wire7(21); + sub_wire2(2, 22) <= sub_wire7(22); + sub_wire2(2, 23) <= sub_wire7(23); + sub_wire2(1, 0) <= sub_wire8(0); + sub_wire2(1, 1) <= sub_wire8(1); + sub_wire2(1, 2) <= sub_wire8(2); + sub_wire2(1, 3) <= sub_wire8(3); + sub_wire2(1, 4) <= sub_wire8(4); + sub_wire2(1, 5) <= sub_wire8(5); + sub_wire2(1, 6) <= sub_wire8(6); + sub_wire2(1, 7) <= sub_wire8(7); + sub_wire2(1, 8) <= sub_wire8(8); + sub_wire2(1, 9) <= sub_wire8(9); + sub_wire2(1, 10) <= sub_wire8(10); + sub_wire2(1, 11) <= sub_wire8(11); + sub_wire2(1, 12) <= sub_wire8(12); + sub_wire2(1, 13) <= sub_wire8(13); + sub_wire2(1, 14) <= sub_wire8(14); + sub_wire2(1, 15) <= sub_wire8(15); + sub_wire2(1, 16) <= sub_wire8(16); + sub_wire2(1, 17) <= sub_wire8(17); + sub_wire2(1, 18) <= sub_wire8(18); + sub_wire2(1, 19) <= sub_wire8(19); + sub_wire2(1, 20) <= sub_wire8(20); + sub_wire2(1, 21) <= sub_wire8(21); + sub_wire2(1, 22) <= sub_wire8(22); + sub_wire2(1, 23) <= sub_wire8(23); + sub_wire2(0, 0) <= sub_wire9(0); + sub_wire2(0, 1) <= sub_wire9(1); + sub_wire2(0, 2) <= sub_wire9(2); + sub_wire2(0, 3) <= sub_wire9(3); + sub_wire2(0, 4) <= sub_wire9(4); + sub_wire2(0, 5) <= sub_wire9(5); + sub_wire2(0, 6) <= sub_wire9(6); + sub_wire2(0, 7) <= sub_wire9(7); + sub_wire2(0, 8) <= sub_wire9(8); + sub_wire2(0, 9) <= sub_wire9(9); + sub_wire2(0, 10) <= sub_wire9(10); + sub_wire2(0, 11) <= sub_wire9(11); + sub_wire2(0, 12) <= sub_wire9(12); + sub_wire2(0, 13) <= sub_wire9(13); + sub_wire2(0, 14) <= sub_wire9(14); + sub_wire2(0, 15) <= sub_wire9(15); + sub_wire2(0, 16) <= sub_wire9(16); + sub_wire2(0, 17) <= sub_wire9(17); + sub_wire2(0, 18) <= sub_wire9(18); + sub_wire2(0, 19) <= sub_wire9(19); + sub_wire2(0, 20) <= sub_wire9(20); + sub_wire2(0, 21) <= sub_wire9(21); + sub_wire2(0, 22) <= sub_wire9(22); + sub_wire2(0, 23) <= sub_wire9(23); + + lpm_mux_component : lpm_mux + GENERIC MAP ( + lpm_pipeline => 2, + lpm_size => 8, + lpm_type => "LPM_MUX", + lpm_width => 24, + lpm_widths => 3 + ) + PORT MAP ( + sel => sel, + clock => clock, + data => sub_wire2, + result => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: CONSTANT: LPM_PIPELINE NUMERIC "2" +-- Retrieval info: CONSTANT: LPM_SIZE NUMERIC "8" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_MUX" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "24" +-- Retrieval info: CONSTANT: LPM_WIDTHS NUMERIC "3" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: data0x 0 0 24 0 INPUT NODEFVAL data0x[23..0] +-- Retrieval info: USED_PORT: data1x 0 0 24 0 INPUT NODEFVAL data1x[23..0] +-- Retrieval info: USED_PORT: data2x 0 0 24 0 INPUT NODEFVAL data2x[23..0] +-- Retrieval info: USED_PORT: data3x 0 0 24 0 INPUT NODEFVAL data3x[23..0] +-- Retrieval info: USED_PORT: data4x 0 0 24 0 INPUT NODEFVAL data4x[23..0] +-- Retrieval info: USED_PORT: data5x 0 0 24 0 INPUT NODEFVAL data5x[23..0] +-- Retrieval info: USED_PORT: data6x 0 0 24 0 INPUT NODEFVAL data6x[23..0] +-- Retrieval info: USED_PORT: data7x 0 0 24 0 INPUT NODEFVAL data7x[23..0] +-- Retrieval info: USED_PORT: result 0 0 24 0 OUTPUT NODEFVAL result[23..0] +-- Retrieval info: USED_PORT: sel 0 0 3 0 INPUT NODEFVAL sel[2..0] +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: result 0 0 24 0 @result 0 0 24 0 +-- Retrieval info: CONNECT: @data 1 7 24 0 data7x 0 0 24 0 +-- Retrieval info: CONNECT: @data 1 6 24 0 data6x 0 0 24 0 +-- Retrieval info: CONNECT: @data 1 5 24 0 data5x 0 0 24 0 +-- Retrieval info: CONNECT: @data 1 4 24 0 data4x 0 0 24 0 +-- Retrieval info: CONNECT: @data 1 3 24 0 data3x 0 0 24 0 +-- Retrieval info: CONNECT: @data 1 2 24 0 data2x 0 0 24 0 +-- Retrieval info: CONNECT: @data 1 1 24 0 data1x 0 0 24 0 +-- Retrieval info: CONNECT: @data 1 0 24 0 data0x 0 0 24 0 +-- Retrieval info: CONNECT: @sel 0 0 3 0 sel 0 0 3 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux6.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux6.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux6.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux6.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mux6_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_muxDZ.bsf b/FPGA_quartus/Video/lpm_muxDZ.bsf new file mode 100644 index 0000000..f4f1c7d --- /dev/null +++ b/FPGA_quartus/Video/lpm_muxDZ.bsf @@ -0,0 +1,76 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2009 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 168 112) + (text "lpm_muxDZ" (rect 54 2 135 18)(font "Arial" (font_size 10))) + (text "inst" (rect 8 96 25 108)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "data1x[127..0]" (rect 0 0 81 14)(font "Arial" (font_size 8))) + (text "data1x[127..0]" (rect 4 27 72 40)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 80 40)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "data0x[127..0]" (rect 0 0 81 14)(font "Arial" (font_size 8))) + (text "data0x[127..0]" (rect 4 43 72 56)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 80 56)(line_width 3)) + ) + (port + (pt 0 72) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 4 59 27 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 80 72)(line_width 1)) + ) + (port + (pt 0 88) + (input) + (text "clken" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clken" (rect 4 75 28 88)(font "Arial" (font_size 8))) + (line (pt 0 88)(pt 80 88)(line_width 1)) + ) + (port + (pt 88 112) + (input) + (text "sel" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "sel" (rect 92 99 105 112)(font "Arial" (font_size 8))) + (line (pt 88 112)(pt 88 100)(line_width 1)) + ) + (port + (pt 168 64) + (output) + (text "result[127..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "result[127..0]" (rect 102 51 163 64)(font "Arial" (font_size 8))) + (line (pt 168 64)(pt 96 64)(line_width 3)) + ) + (drawing + (line (pt 80 24)(pt 80 104)(line_width 1)) + (line (pt 96 32)(pt 96 96)(line_width 1)) + (line (pt 80 24)(pt 96 32)(line_width 1)) + (line (pt 80 104)(pt 96 96)(line_width 1)) + (line (pt 80 66)(pt 86 72)(line_width 1)) + (line (pt 86 72)(pt 80 78)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_muxDZ.cmp b/FPGA_quartus/Video/lpm_muxDZ.cmp new file mode 100644 index 0000000..f177216 --- /dev/null +++ b/FPGA_quartus/Video/lpm_muxDZ.cmp @@ -0,0 +1,26 @@ +--Copyright (C) 1991-2009 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_muxDZ + PORT + ( + clken : IN STD_LOGIC := '1'; + clock : IN STD_LOGIC ; + data0x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data1x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + sel : IN STD_LOGIC ; + result : OUT STD_LOGIC_VECTOR (127 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_muxDZ.qip b/FPGA_quartus/Video/lpm_muxDZ.qip new file mode 100644 index 0000000..34ffc75 --- /dev/null +++ b/FPGA_quartus/Video/lpm_muxDZ.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_MUX" +set_global_assignment -name IP_TOOL_VERSION "9.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_muxDZ.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_muxDZ.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_muxDZ.cmp"] diff --git a/FPGA_quartus/Video/lpm_muxDZ.vhd b/FPGA_quartus/Video/lpm_muxDZ.vhd new file mode 100644 index 0000000..e9bd32e --- /dev/null +++ b/FPGA_quartus/Video/lpm_muxDZ.vhd @@ -0,0 +1,377 @@ +-- megafunction wizard: %LPM_MUX% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_mux + +-- ============================================================ +-- File Name: lpm_muxDZ.vhd +-- Megafunction Name(s): +-- lpm_mux +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 9.1 Build 222 10/21/2009 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2009 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.lpm_components.all; + +ENTITY lpm_muxDZ IS + PORT + ( + clken : IN STD_LOGIC := '1'; + clock : IN STD_LOGIC ; + data0x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data1x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + sel : IN STD_LOGIC ; + result : OUT STD_LOGIC_VECTOR (127 DOWNTO 0) + ); +END lpm_muxDZ; + + +ARCHITECTURE SYN OF lpm_muxdz IS + +-- type STD_LOGIC_2D is array (NATURAL RANGE <>, NATURAL RANGE <>) of STD_LOGIC; + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC ; + SIGNAL sub_wire2 : STD_LOGIC_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire3 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire4 : STD_LOGIC_2D (1 DOWNTO 0, 127 DOWNTO 0); + SIGNAL sub_wire5 : STD_LOGIC_VECTOR (127 DOWNTO 0); + +BEGIN + sub_wire5 <= data0x(127 DOWNTO 0); + result <= sub_wire0(127 DOWNTO 0); + sub_wire1 <= sel; + sub_wire2(0) <= sub_wire1; + sub_wire3 <= data1x(127 DOWNTO 0); + sub_wire4(1, 0) <= sub_wire3(0); + sub_wire4(1, 1) <= sub_wire3(1); + sub_wire4(1, 2) <= sub_wire3(2); + sub_wire4(1, 3) <= sub_wire3(3); + sub_wire4(1, 4) <= sub_wire3(4); + sub_wire4(1, 5) <= sub_wire3(5); + sub_wire4(1, 6) <= sub_wire3(6); + sub_wire4(1, 7) <= sub_wire3(7); + sub_wire4(1, 8) <= sub_wire3(8); + sub_wire4(1, 9) <= sub_wire3(9); + sub_wire4(1, 10) <= sub_wire3(10); + sub_wire4(1, 11) <= sub_wire3(11); + sub_wire4(1, 12) <= sub_wire3(12); + sub_wire4(1, 13) <= sub_wire3(13); + sub_wire4(1, 14) <= sub_wire3(14); + sub_wire4(1, 15) <= sub_wire3(15); + sub_wire4(1, 16) <= sub_wire3(16); + sub_wire4(1, 17) <= sub_wire3(17); + sub_wire4(1, 18) <= sub_wire3(18); + sub_wire4(1, 19) <= sub_wire3(19); + sub_wire4(1, 20) <= sub_wire3(20); + sub_wire4(1, 21) <= sub_wire3(21); + sub_wire4(1, 22) <= sub_wire3(22); + sub_wire4(1, 23) <= sub_wire3(23); + sub_wire4(1, 24) <= sub_wire3(24); + sub_wire4(1, 25) <= sub_wire3(25); + sub_wire4(1, 26) <= sub_wire3(26); + sub_wire4(1, 27) <= sub_wire3(27); + sub_wire4(1, 28) <= sub_wire3(28); + sub_wire4(1, 29) <= sub_wire3(29); + sub_wire4(1, 30) <= sub_wire3(30); + sub_wire4(1, 31) <= sub_wire3(31); + sub_wire4(1, 32) <= sub_wire3(32); + sub_wire4(1, 33) <= sub_wire3(33); + sub_wire4(1, 34) <= sub_wire3(34); + sub_wire4(1, 35) <= sub_wire3(35); + sub_wire4(1, 36) <= sub_wire3(36); + sub_wire4(1, 37) <= sub_wire3(37); + sub_wire4(1, 38) <= sub_wire3(38); + sub_wire4(1, 39) <= sub_wire3(39); + sub_wire4(1, 40) <= sub_wire3(40); + sub_wire4(1, 41) <= sub_wire3(41); + sub_wire4(1, 42) <= sub_wire3(42); + sub_wire4(1, 43) <= sub_wire3(43); + sub_wire4(1, 44) <= sub_wire3(44); + sub_wire4(1, 45) <= sub_wire3(45); + sub_wire4(1, 46) <= sub_wire3(46); + sub_wire4(1, 47) <= sub_wire3(47); + sub_wire4(1, 48) <= sub_wire3(48); + sub_wire4(1, 49) <= sub_wire3(49); + sub_wire4(1, 50) <= sub_wire3(50); + sub_wire4(1, 51) <= sub_wire3(51); + sub_wire4(1, 52) <= sub_wire3(52); + sub_wire4(1, 53) <= sub_wire3(53); + sub_wire4(1, 54) <= sub_wire3(54); + sub_wire4(1, 55) <= sub_wire3(55); + sub_wire4(1, 56) <= sub_wire3(56); + sub_wire4(1, 57) <= sub_wire3(57); + sub_wire4(1, 58) <= sub_wire3(58); + sub_wire4(1, 59) <= sub_wire3(59); + sub_wire4(1, 60) <= sub_wire3(60); + sub_wire4(1, 61) <= sub_wire3(61); + sub_wire4(1, 62) <= sub_wire3(62); + sub_wire4(1, 63) <= sub_wire3(63); + sub_wire4(1, 64) <= sub_wire3(64); + sub_wire4(1, 65) <= sub_wire3(65); + sub_wire4(1, 66) <= sub_wire3(66); + sub_wire4(1, 67) <= sub_wire3(67); + sub_wire4(1, 68) <= sub_wire3(68); + sub_wire4(1, 69) <= sub_wire3(69); + sub_wire4(1, 70) <= sub_wire3(70); + sub_wire4(1, 71) <= sub_wire3(71); + sub_wire4(1, 72) <= sub_wire3(72); + sub_wire4(1, 73) <= sub_wire3(73); + sub_wire4(1, 74) <= sub_wire3(74); + sub_wire4(1, 75) <= sub_wire3(75); + sub_wire4(1, 76) <= sub_wire3(76); + sub_wire4(1, 77) <= sub_wire3(77); + sub_wire4(1, 78) <= sub_wire3(78); + sub_wire4(1, 79) <= sub_wire3(79); + sub_wire4(1, 80) <= sub_wire3(80); + sub_wire4(1, 81) <= sub_wire3(81); + sub_wire4(1, 82) <= sub_wire3(82); + sub_wire4(1, 83) <= sub_wire3(83); + sub_wire4(1, 84) <= sub_wire3(84); + sub_wire4(1, 85) <= sub_wire3(85); + sub_wire4(1, 86) <= sub_wire3(86); + sub_wire4(1, 87) <= sub_wire3(87); + sub_wire4(1, 88) <= sub_wire3(88); + sub_wire4(1, 89) <= sub_wire3(89); + sub_wire4(1, 90) <= sub_wire3(90); + sub_wire4(1, 91) <= sub_wire3(91); + sub_wire4(1, 92) <= sub_wire3(92); + sub_wire4(1, 93) <= sub_wire3(93); + sub_wire4(1, 94) <= sub_wire3(94); + sub_wire4(1, 95) <= sub_wire3(95); + sub_wire4(1, 96) <= sub_wire3(96); + sub_wire4(1, 97) <= sub_wire3(97); + sub_wire4(1, 98) <= sub_wire3(98); + sub_wire4(1, 99) <= sub_wire3(99); + sub_wire4(1, 100) <= sub_wire3(100); + sub_wire4(1, 101) <= sub_wire3(101); + sub_wire4(1, 102) <= sub_wire3(102); + sub_wire4(1, 103) <= sub_wire3(103); + sub_wire4(1, 104) <= sub_wire3(104); + sub_wire4(1, 105) <= sub_wire3(105); + sub_wire4(1, 106) <= sub_wire3(106); + sub_wire4(1, 107) <= sub_wire3(107); + sub_wire4(1, 108) <= sub_wire3(108); + sub_wire4(1, 109) <= sub_wire3(109); + sub_wire4(1, 110) <= sub_wire3(110); + sub_wire4(1, 111) <= sub_wire3(111); + sub_wire4(1, 112) <= sub_wire3(112); + sub_wire4(1, 113) <= sub_wire3(113); + sub_wire4(1, 114) <= sub_wire3(114); + sub_wire4(1, 115) <= sub_wire3(115); + sub_wire4(1, 116) <= sub_wire3(116); + sub_wire4(1, 117) <= sub_wire3(117); + sub_wire4(1, 118) <= sub_wire3(118); + sub_wire4(1, 119) <= sub_wire3(119); + sub_wire4(1, 120) <= sub_wire3(120); + sub_wire4(1, 121) <= sub_wire3(121); + sub_wire4(1, 122) <= sub_wire3(122); + sub_wire4(1, 123) <= sub_wire3(123); + sub_wire4(1, 124) <= sub_wire3(124); + sub_wire4(1, 125) <= sub_wire3(125); + sub_wire4(1, 126) <= sub_wire3(126); + sub_wire4(1, 127) <= sub_wire3(127); + sub_wire4(0, 0) <= sub_wire5(0); + sub_wire4(0, 1) <= sub_wire5(1); + sub_wire4(0, 2) <= sub_wire5(2); + sub_wire4(0, 3) <= sub_wire5(3); + sub_wire4(0, 4) <= sub_wire5(4); + sub_wire4(0, 5) <= sub_wire5(5); + sub_wire4(0, 6) <= sub_wire5(6); + sub_wire4(0, 7) <= sub_wire5(7); + sub_wire4(0, 8) <= sub_wire5(8); + sub_wire4(0, 9) <= sub_wire5(9); + sub_wire4(0, 10) <= sub_wire5(10); + sub_wire4(0, 11) <= sub_wire5(11); + sub_wire4(0, 12) <= sub_wire5(12); + sub_wire4(0, 13) <= sub_wire5(13); + sub_wire4(0, 14) <= sub_wire5(14); + sub_wire4(0, 15) <= sub_wire5(15); + sub_wire4(0, 16) <= sub_wire5(16); + sub_wire4(0, 17) <= sub_wire5(17); + sub_wire4(0, 18) <= sub_wire5(18); + sub_wire4(0, 19) <= sub_wire5(19); + sub_wire4(0, 20) <= sub_wire5(20); + sub_wire4(0, 21) <= sub_wire5(21); + sub_wire4(0, 22) <= sub_wire5(22); + sub_wire4(0, 23) <= sub_wire5(23); + sub_wire4(0, 24) <= sub_wire5(24); + sub_wire4(0, 25) <= sub_wire5(25); + sub_wire4(0, 26) <= sub_wire5(26); + sub_wire4(0, 27) <= sub_wire5(27); + sub_wire4(0, 28) <= sub_wire5(28); + sub_wire4(0, 29) <= sub_wire5(29); + sub_wire4(0, 30) <= sub_wire5(30); + sub_wire4(0, 31) <= sub_wire5(31); + sub_wire4(0, 32) <= sub_wire5(32); + sub_wire4(0, 33) <= sub_wire5(33); + sub_wire4(0, 34) <= sub_wire5(34); + sub_wire4(0, 35) <= sub_wire5(35); + sub_wire4(0, 36) <= sub_wire5(36); + sub_wire4(0, 37) <= sub_wire5(37); + sub_wire4(0, 38) <= sub_wire5(38); + sub_wire4(0, 39) <= sub_wire5(39); + sub_wire4(0, 40) <= sub_wire5(40); + sub_wire4(0, 41) <= sub_wire5(41); + sub_wire4(0, 42) <= sub_wire5(42); + sub_wire4(0, 43) <= sub_wire5(43); + sub_wire4(0, 44) <= sub_wire5(44); + sub_wire4(0, 45) <= sub_wire5(45); + sub_wire4(0, 46) <= sub_wire5(46); + sub_wire4(0, 47) <= sub_wire5(47); + sub_wire4(0, 48) <= sub_wire5(48); + sub_wire4(0, 49) <= sub_wire5(49); + sub_wire4(0, 50) <= sub_wire5(50); + sub_wire4(0, 51) <= sub_wire5(51); + sub_wire4(0, 52) <= sub_wire5(52); + sub_wire4(0, 53) <= sub_wire5(53); + sub_wire4(0, 54) <= sub_wire5(54); + sub_wire4(0, 55) <= sub_wire5(55); + sub_wire4(0, 56) <= sub_wire5(56); + sub_wire4(0, 57) <= sub_wire5(57); + sub_wire4(0, 58) <= sub_wire5(58); + sub_wire4(0, 59) <= sub_wire5(59); + sub_wire4(0, 60) <= sub_wire5(60); + sub_wire4(0, 61) <= sub_wire5(61); + sub_wire4(0, 62) <= sub_wire5(62); + sub_wire4(0, 63) <= sub_wire5(63); + sub_wire4(0, 64) <= sub_wire5(64); + sub_wire4(0, 65) <= sub_wire5(65); + sub_wire4(0, 66) <= sub_wire5(66); + sub_wire4(0, 67) <= sub_wire5(67); + sub_wire4(0, 68) <= sub_wire5(68); + sub_wire4(0, 69) <= sub_wire5(69); + sub_wire4(0, 70) <= sub_wire5(70); + sub_wire4(0, 71) <= sub_wire5(71); + sub_wire4(0, 72) <= sub_wire5(72); + sub_wire4(0, 73) <= sub_wire5(73); + sub_wire4(0, 74) <= sub_wire5(74); + sub_wire4(0, 75) <= sub_wire5(75); + sub_wire4(0, 76) <= sub_wire5(76); + sub_wire4(0, 77) <= sub_wire5(77); + sub_wire4(0, 78) <= sub_wire5(78); + sub_wire4(0, 79) <= sub_wire5(79); + sub_wire4(0, 80) <= sub_wire5(80); + sub_wire4(0, 81) <= sub_wire5(81); + sub_wire4(0, 82) <= sub_wire5(82); + sub_wire4(0, 83) <= sub_wire5(83); + sub_wire4(0, 84) <= sub_wire5(84); + sub_wire4(0, 85) <= sub_wire5(85); + sub_wire4(0, 86) <= sub_wire5(86); + sub_wire4(0, 87) <= sub_wire5(87); + sub_wire4(0, 88) <= sub_wire5(88); + sub_wire4(0, 89) <= sub_wire5(89); + sub_wire4(0, 90) <= sub_wire5(90); + sub_wire4(0, 91) <= sub_wire5(91); + sub_wire4(0, 92) <= sub_wire5(92); + sub_wire4(0, 93) <= sub_wire5(93); + sub_wire4(0, 94) <= sub_wire5(94); + sub_wire4(0, 95) <= sub_wire5(95); + sub_wire4(0, 96) <= sub_wire5(96); + sub_wire4(0, 97) <= sub_wire5(97); + sub_wire4(0, 98) <= sub_wire5(98); + sub_wire4(0, 99) <= sub_wire5(99); + sub_wire4(0, 100) <= sub_wire5(100); + sub_wire4(0, 101) <= sub_wire5(101); + sub_wire4(0, 102) <= sub_wire5(102); + sub_wire4(0, 103) <= sub_wire5(103); + sub_wire4(0, 104) <= sub_wire5(104); + sub_wire4(0, 105) <= sub_wire5(105); + sub_wire4(0, 106) <= sub_wire5(106); + sub_wire4(0, 107) <= sub_wire5(107); + sub_wire4(0, 108) <= sub_wire5(108); + sub_wire4(0, 109) <= sub_wire5(109); + sub_wire4(0, 110) <= sub_wire5(110); + sub_wire4(0, 111) <= sub_wire5(111); + sub_wire4(0, 112) <= sub_wire5(112); + sub_wire4(0, 113) <= sub_wire5(113); + sub_wire4(0, 114) <= sub_wire5(114); + sub_wire4(0, 115) <= sub_wire5(115); + sub_wire4(0, 116) <= sub_wire5(116); + sub_wire4(0, 117) <= sub_wire5(117); + sub_wire4(0, 118) <= sub_wire5(118); + sub_wire4(0, 119) <= sub_wire5(119); + sub_wire4(0, 120) <= sub_wire5(120); + sub_wire4(0, 121) <= sub_wire5(121); + sub_wire4(0, 122) <= sub_wire5(122); + sub_wire4(0, 123) <= sub_wire5(123); + sub_wire4(0, 124) <= sub_wire5(124); + sub_wire4(0, 125) <= sub_wire5(125); + sub_wire4(0, 126) <= sub_wire5(126); + sub_wire4(0, 127) <= sub_wire5(127); + + lpm_mux_component : lpm_mux + GENERIC MAP ( + lpm_pipeline => 1, + lpm_size => 2, + lpm_type => "LPM_MUX", + lpm_width => 128, + lpm_widths => 1 + ) + PORT MAP ( + sel => sub_wire2, + clken => clken, + clock => clock, + data => sub_wire4, + result => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: CONSTANT: LPM_PIPELINE NUMERIC "1" +-- Retrieval info: CONSTANT: LPM_SIZE NUMERIC "2" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_MUX" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "128" +-- Retrieval info: CONSTANT: LPM_WIDTHS NUMERIC "1" +-- Retrieval info: USED_PORT: clken 0 0 0 0 INPUT VCC clken +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: data0x 0 0 128 0 INPUT NODEFVAL data0x[127..0] +-- Retrieval info: USED_PORT: data1x 0 0 128 0 INPUT NODEFVAL data1x[127..0] +-- Retrieval info: USED_PORT: result 0 0 128 0 OUTPUT NODEFVAL result[127..0] +-- Retrieval info: USED_PORT: sel 0 0 0 0 INPUT NODEFVAL sel +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: @clken 0 0 0 0 clken 0 0 0 0 +-- Retrieval info: CONNECT: result 0 0 128 0 @result 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 1 128 0 data1x 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 0 128 0 data0x 0 0 128 0 +-- Retrieval info: CONNECT: @sel 0 0 1 0 sel 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxDZ.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxDZ.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxDZ.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxDZ.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxDZ_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_muxDZ2.bsf b/FPGA_quartus/Video/lpm_muxDZ2.bsf new file mode 100644 index 0000000..b7e3184 --- /dev/null +++ b/FPGA_quartus/Video/lpm_muxDZ2.bsf @@ -0,0 +1,60 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2009 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 96 80) + (text "lpm_muxDZ2" (rect 10 2 99 18)(font "Arial" (font_size 10))) + (text "inst" (rect 8 64 25 76)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "data1" (rect 0 0 31 14)(font "Arial" (font_size 8))) + (text "data1" (rect 4 27 31 40)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 40 40)(line_width 1)) + ) + (port + (pt 0 56) + (input) + (text "data0" (rect 0 0 31 14)(font "Arial" (font_size 8))) + (text "data0" (rect 4 43 31 56)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 40 56)(line_width 1)) + ) + (port + (pt 48 80) + (input) + (text "sel" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "sel" (rect 52 67 65 80)(font "Arial" (font_size 8))) + (line (pt 48 80)(pt 48 68)(line_width 1)) + ) + (port + (pt 96 48) + (output) + (text "result" (rect 0 0 31 14)(font "Arial" (font_size 8))) + (text "result" (rect 66 35 91 48)(font "Arial" (font_size 8))) + (line (pt 96 48)(pt 56 48)(line_width 1)) + ) + (drawing + (line (pt 40 24)(pt 40 72)(line_width 1)) + (line (pt 56 32)(pt 56 64)(line_width 1)) + (line (pt 40 24)(pt 56 32)(line_width 1)) + (line (pt 40 72)(pt 56 64)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_muxDZ2.cmp b/FPGA_quartus/Video/lpm_muxDZ2.cmp new file mode 100644 index 0000000..725acf4 --- /dev/null +++ b/FPGA_quartus/Video/lpm_muxDZ2.cmp @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2009 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_muxDZ2 + PORT + ( + data0 : IN STD_LOGIC ; + data1 : IN STD_LOGIC ; + sel : IN STD_LOGIC ; + result : OUT STD_LOGIC + ); +end component; diff --git a/FPGA_quartus/Video/lpm_muxDZ2.qip b/FPGA_quartus/Video/lpm_muxDZ2.qip new file mode 100644 index 0000000..8203bc6 --- /dev/null +++ b/FPGA_quartus/Video/lpm_muxDZ2.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_MUX" +set_global_assignment -name IP_TOOL_VERSION "9.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_muxDZ2.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_muxDZ2.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_muxDZ2.cmp"] diff --git a/FPGA_quartus/Video/lpm_muxDZ2.vhd b/FPGA_quartus/Video/lpm_muxDZ2.vhd new file mode 100644 index 0000000..42e0c81 --- /dev/null +++ b/FPGA_quartus/Video/lpm_muxDZ2.vhd @@ -0,0 +1,115 @@ +-- megafunction wizard: %LPM_MUX% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_mux + +-- ============================================================ +-- File Name: lpm_muxDZ2.vhd +-- Megafunction Name(s): +-- lpm_mux +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 9.1 Build 222 10/21/2009 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2009 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.lpm_components.all; + +ENTITY lpm_muxDZ2 IS + PORT + ( + data0 : IN STD_LOGIC ; + data1 : IN STD_LOGIC ; + sel : IN STD_LOGIC ; + result : OUT STD_LOGIC + ); +END lpm_muxDZ2; + + +ARCHITECTURE SYN OF lpm_muxdz2 IS + +-- type STD_LOGIC_2D is array (NATURAL RANGE <>, NATURAL RANGE <>) of STD_LOGIC; + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC ; + SIGNAL sub_wire2 : STD_LOGIC ; + SIGNAL sub_wire3 : STD_LOGIC_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire4 : STD_LOGIC ; + SIGNAL sub_wire5 : STD_LOGIC_2D (1 DOWNTO 0, 0 DOWNTO 0); + SIGNAL sub_wire6 : STD_LOGIC ; + +BEGIN + sub_wire6 <= data0; + sub_wire1 <= sub_wire0(0); + result <= sub_wire1; + sub_wire2 <= sel; + sub_wire3(0) <= sub_wire2; + sub_wire4 <= data1; + sub_wire5(1, 0) <= sub_wire4; + sub_wire5(0, 0) <= sub_wire6; + + lpm_mux_component : lpm_mux + GENERIC MAP ( + lpm_size => 2, + lpm_type => "LPM_MUX", + lpm_width => 1, + lpm_widths => 1 + ) + PORT MAP ( + sel => sub_wire3, + data => sub_wire5, + result => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: CONSTANT: LPM_SIZE NUMERIC "2" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_MUX" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "1" +-- Retrieval info: CONSTANT: LPM_WIDTHS NUMERIC "1" +-- Retrieval info: USED_PORT: data0 0 0 0 0 INPUT NODEFVAL data0 +-- Retrieval info: USED_PORT: data1 0 0 0 0 INPUT NODEFVAL data1 +-- Retrieval info: USED_PORT: result 0 0 0 0 OUTPUT NODEFVAL result +-- Retrieval info: USED_PORT: sel 0 0 0 0 INPUT NODEFVAL sel +-- Retrieval info: CONNECT: result 0 0 0 0 @result 0 0 1 0 +-- Retrieval info: CONNECT: @data 1 1 1 0 data1 0 0 0 0 +-- Retrieval info: CONNECT: @data 1 0 1 0 data0 0 0 0 0 +-- Retrieval info: CONNECT: @sel 0 0 1 0 sel 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxDZ2.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxDZ2.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxDZ2.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxDZ2.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxDZ2_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_muxVDM.bsf b/FPGA_quartus/Video/lpm_muxVDM.bsf new file mode 100644 index 0000000..42d235c --- /dev/null +++ b/FPGA_quartus/Video/lpm_muxVDM.bsf @@ -0,0 +1,158 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2009 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 168 304) + (text "lpm_muxVDM" (rect 47 2 143 18)(font "Arial" (font_size 10))) + (text "inst" (rect 8 288 25 300)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "data15x[127..0]" (rect 0 0 88 14)(font "Arial" (font_size 8))) + (text "data15x[127..0]" (rect 4 27 78 40)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 80 40)(line_width 3)) + ) + (port + (pt 0 56) + (input) + (text "data14x[127..0]" (rect 0 0 88 14)(font "Arial" (font_size 8))) + (text "data14x[127..0]" (rect 4 43 78 56)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 80 56)(line_width 3)) + ) + (port + (pt 0 72) + (input) + (text "data13x[127..0]" (rect 0 0 88 14)(font "Arial" (font_size 8))) + (text "data13x[127..0]" (rect 4 59 78 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 80 72)(line_width 3)) + ) + (port + (pt 0 88) + (input) + (text "data12x[127..0]" (rect 0 0 88 14)(font "Arial" (font_size 8))) + (text "data12x[127..0]" (rect 4 75 78 88)(font "Arial" (font_size 8))) + (line (pt 0 88)(pt 80 88)(line_width 3)) + ) + (port + (pt 0 104) + (input) + (text "data11x[127..0]" (rect 0 0 88 14)(font "Arial" (font_size 8))) + (text "data11x[127..0]" (rect 4 91 78 104)(font "Arial" (font_size 8))) + (line (pt 0 104)(pt 80 104)(line_width 3)) + ) + (port + (pt 0 120) + (input) + (text "data10x[127..0]" (rect 0 0 88 14)(font "Arial" (font_size 8))) + (text "data10x[127..0]" (rect 4 107 78 120)(font "Arial" (font_size 8))) + (line (pt 0 120)(pt 80 120)(line_width 3)) + ) + (port + (pt 0 136) + (input) + (text "data9x[127..0]" (rect 0 0 81 14)(font "Arial" (font_size 8))) + (text "data9x[127..0]" (rect 4 123 72 136)(font "Arial" (font_size 8))) + (line (pt 0 136)(pt 80 136)(line_width 3)) + ) + (port + (pt 0 152) + (input) + (text "data8x[127..0]" (rect 0 0 81 14)(font "Arial" (font_size 8))) + (text "data8x[127..0]" (rect 4 139 72 152)(font "Arial" (font_size 8))) + (line (pt 0 152)(pt 80 152)(line_width 3)) + ) + (port + (pt 0 168) + (input) + (text "data7x[127..0]" (rect 0 0 81 14)(font "Arial" (font_size 8))) + (text "data7x[127..0]" (rect 4 155 72 168)(font "Arial" (font_size 8))) + (line (pt 0 168)(pt 80 168)(line_width 3)) + ) + (port + (pt 0 184) + (input) + (text "data6x[127..0]" (rect 0 0 81 14)(font "Arial" (font_size 8))) + (text "data6x[127..0]" (rect 4 171 72 184)(font "Arial" (font_size 8))) + (line (pt 0 184)(pt 80 184)(line_width 3)) + ) + (port + (pt 0 200) + (input) + (text "data5x[127..0]" (rect 0 0 81 14)(font "Arial" (font_size 8))) + (text "data5x[127..0]" (rect 4 187 72 200)(font "Arial" (font_size 8))) + (line (pt 0 200)(pt 80 200)(line_width 3)) + ) + (port + (pt 0 216) + (input) + (text "data4x[127..0]" (rect 0 0 81 14)(font "Arial" (font_size 8))) + (text "data4x[127..0]" (rect 4 203 72 216)(font "Arial" (font_size 8))) + (line (pt 0 216)(pt 80 216)(line_width 3)) + ) + (port + (pt 0 232) + (input) + (text "data3x[127..0]" (rect 0 0 81 14)(font "Arial" (font_size 8))) + (text "data3x[127..0]" (rect 4 219 72 232)(font "Arial" (font_size 8))) + (line (pt 0 232)(pt 80 232)(line_width 3)) + ) + (port + (pt 0 248) + (input) + (text "data2x[127..0]" (rect 0 0 81 14)(font "Arial" (font_size 8))) + (text "data2x[127..0]" (rect 4 235 72 248)(font "Arial" (font_size 8))) + (line (pt 0 248)(pt 80 248)(line_width 3)) + ) + (port + (pt 0 264) + (input) + (text "data1x[127..0]" (rect 0 0 81 14)(font "Arial" (font_size 8))) + (text "data1x[127..0]" (rect 4 251 72 264)(font "Arial" (font_size 8))) + (line (pt 0 264)(pt 80 264)(line_width 3)) + ) + (port + (pt 0 280) + (input) + (text "data0x[127..0]" (rect 0 0 81 14)(font "Arial" (font_size 8))) + (text "data0x[127..0]" (rect 4 267 72 280)(font "Arial" (font_size 8))) + (line (pt 0 280)(pt 80 280)(line_width 3)) + ) + (port + (pt 88 304) + (input) + (text "sel[3..0]" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "sel[3..0]" (rect 92 291 129 304)(font "Arial" (font_size 8))) + (line (pt 88 304)(pt 88 292)(line_width 3)) + ) + (port + (pt 168 160) + (output) + (text "result[127..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "result[127..0]" (rect 102 147 163 160)(font "Arial" (font_size 8))) + (line (pt 168 160)(pt 96 160)(line_width 3)) + ) + (drawing + (line (pt 80 24)(pt 80 296)(line_width 1)) + (line (pt 96 32)(pt 96 288)(line_width 1)) + (line (pt 80 24)(pt 96 32)(line_width 1)) + (line (pt 80 296)(pt 96 288)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_muxVDM.cmp b/FPGA_quartus/Video/lpm_muxVDM.cmp new file mode 100644 index 0000000..867776d --- /dev/null +++ b/FPGA_quartus/Video/lpm_muxVDM.cmp @@ -0,0 +1,38 @@ +--Copyright (C) 1991-2009 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_muxVDM + PORT + ( + data0x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data10x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data11x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data12x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data13x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data14x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data15x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data1x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data2x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data3x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data4x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data5x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data6x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data7x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data8x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data9x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + sel : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + result : OUT STD_LOGIC_VECTOR (127 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_muxVDM.qip b/FPGA_quartus/Video/lpm_muxVDM.qip new file mode 100644 index 0000000..08a824e --- /dev/null +++ b/FPGA_quartus/Video/lpm_muxVDM.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_MUX" +set_global_assignment -name IP_TOOL_VERSION "9.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_muxVDM.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_muxVDM.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_muxVDM.cmp"] diff --git a/FPGA_quartus/Video/lpm_muxVDM.vhd b/FPGA_quartus/Video/lpm_muxVDM.vhd new file mode 100644 index 0000000..662c8be --- /dev/null +++ b/FPGA_quartus/Video/lpm_muxVDM.vhd @@ -0,0 +1,2225 @@ +-- megafunction wizard: %LPM_MUX% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_mux + +-- ============================================================ +-- File Name: lpm_muxVDM.vhd +-- Megafunction Name(s): +-- lpm_mux +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 9.1 Build 222 10/21/2009 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2009 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.lpm_components.all; + +ENTITY lpm_muxVDM IS + PORT + ( + data0x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data10x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data11x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data12x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data13x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data14x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data15x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data1x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data2x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data3x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data4x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data5x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data6x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data7x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data8x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + data9x : IN STD_LOGIC_VECTOR (127 DOWNTO 0); + sel : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + result : OUT STD_LOGIC_VECTOR (127 DOWNTO 0) + ); +END lpm_muxVDM; + + +ARCHITECTURE SYN OF lpm_muxvdm IS + +-- type STD_LOGIC_2D is array (NATURAL RANGE <>, NATURAL RANGE <>) of STD_LOGIC; + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire2 : STD_LOGIC_2D (15 DOWNTO 0, 127 DOWNTO 0); + SIGNAL sub_wire3 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire4 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire5 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire6 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire7 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire8 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire9 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire10 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire11 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire12 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire13 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire14 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire15 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire16 : STD_LOGIC_VECTOR (127 DOWNTO 0); + SIGNAL sub_wire17 : STD_LOGIC_VECTOR (127 DOWNTO 0); + +BEGIN + sub_wire17 <= data0x(127 DOWNTO 0); + sub_wire16 <= data1x(127 DOWNTO 0); + sub_wire15 <= data2x(127 DOWNTO 0); + sub_wire14 <= data3x(127 DOWNTO 0); + sub_wire13 <= data4x(127 DOWNTO 0); + sub_wire12 <= data5x(127 DOWNTO 0); + sub_wire11 <= data6x(127 DOWNTO 0); + sub_wire10 <= data7x(127 DOWNTO 0); + sub_wire9 <= data8x(127 DOWNTO 0); + sub_wire8 <= data9x(127 DOWNTO 0); + sub_wire7 <= data10x(127 DOWNTO 0); + sub_wire6 <= data11x(127 DOWNTO 0); + sub_wire5 <= data12x(127 DOWNTO 0); + sub_wire4 <= data13x(127 DOWNTO 0); + sub_wire3 <= data14x(127 DOWNTO 0); + result <= sub_wire0(127 DOWNTO 0); + sub_wire1 <= data15x(127 DOWNTO 0); + sub_wire2(15, 0) <= sub_wire1(0); + sub_wire2(15, 1) <= sub_wire1(1); + sub_wire2(15, 2) <= sub_wire1(2); + sub_wire2(15, 3) <= sub_wire1(3); + sub_wire2(15, 4) <= sub_wire1(4); + sub_wire2(15, 5) <= sub_wire1(5); + sub_wire2(15, 6) <= sub_wire1(6); + sub_wire2(15, 7) <= sub_wire1(7); + sub_wire2(15, 8) <= sub_wire1(8); + sub_wire2(15, 9) <= sub_wire1(9); + sub_wire2(15, 10) <= sub_wire1(10); + sub_wire2(15, 11) <= sub_wire1(11); + sub_wire2(15, 12) <= sub_wire1(12); + sub_wire2(15, 13) <= sub_wire1(13); + sub_wire2(15, 14) <= sub_wire1(14); + sub_wire2(15, 15) <= sub_wire1(15); + sub_wire2(15, 16) <= sub_wire1(16); + sub_wire2(15, 17) <= sub_wire1(17); + sub_wire2(15, 18) <= sub_wire1(18); + sub_wire2(15, 19) <= sub_wire1(19); + sub_wire2(15, 20) <= sub_wire1(20); + sub_wire2(15, 21) <= sub_wire1(21); + sub_wire2(15, 22) <= sub_wire1(22); + sub_wire2(15, 23) <= sub_wire1(23); + sub_wire2(15, 24) <= sub_wire1(24); + sub_wire2(15, 25) <= sub_wire1(25); + sub_wire2(15, 26) <= sub_wire1(26); + sub_wire2(15, 27) <= sub_wire1(27); + sub_wire2(15, 28) <= sub_wire1(28); + sub_wire2(15, 29) <= sub_wire1(29); + sub_wire2(15, 30) <= sub_wire1(30); + sub_wire2(15, 31) <= sub_wire1(31); + sub_wire2(15, 32) <= sub_wire1(32); + sub_wire2(15, 33) <= sub_wire1(33); + sub_wire2(15, 34) <= sub_wire1(34); + sub_wire2(15, 35) <= sub_wire1(35); + sub_wire2(15, 36) <= sub_wire1(36); + sub_wire2(15, 37) <= sub_wire1(37); + sub_wire2(15, 38) <= sub_wire1(38); + sub_wire2(15, 39) <= sub_wire1(39); + sub_wire2(15, 40) <= sub_wire1(40); + sub_wire2(15, 41) <= sub_wire1(41); + sub_wire2(15, 42) <= sub_wire1(42); + sub_wire2(15, 43) <= sub_wire1(43); + sub_wire2(15, 44) <= sub_wire1(44); + sub_wire2(15, 45) <= sub_wire1(45); + sub_wire2(15, 46) <= sub_wire1(46); + sub_wire2(15, 47) <= sub_wire1(47); + sub_wire2(15, 48) <= sub_wire1(48); + sub_wire2(15, 49) <= sub_wire1(49); + sub_wire2(15, 50) <= sub_wire1(50); + sub_wire2(15, 51) <= sub_wire1(51); + sub_wire2(15, 52) <= sub_wire1(52); + sub_wire2(15, 53) <= sub_wire1(53); + sub_wire2(15, 54) <= sub_wire1(54); + sub_wire2(15, 55) <= sub_wire1(55); + sub_wire2(15, 56) <= sub_wire1(56); + sub_wire2(15, 57) <= sub_wire1(57); + sub_wire2(15, 58) <= sub_wire1(58); + sub_wire2(15, 59) <= sub_wire1(59); + sub_wire2(15, 60) <= sub_wire1(60); + sub_wire2(15, 61) <= sub_wire1(61); + sub_wire2(15, 62) <= sub_wire1(62); + sub_wire2(15, 63) <= sub_wire1(63); + sub_wire2(15, 64) <= sub_wire1(64); + sub_wire2(15, 65) <= sub_wire1(65); + sub_wire2(15, 66) <= sub_wire1(66); + sub_wire2(15, 67) <= sub_wire1(67); + sub_wire2(15, 68) <= sub_wire1(68); + sub_wire2(15, 69) <= sub_wire1(69); + sub_wire2(15, 70) <= sub_wire1(70); + sub_wire2(15, 71) <= sub_wire1(71); + sub_wire2(15, 72) <= sub_wire1(72); + sub_wire2(15, 73) <= sub_wire1(73); + sub_wire2(15, 74) <= sub_wire1(74); + sub_wire2(15, 75) <= sub_wire1(75); + sub_wire2(15, 76) <= sub_wire1(76); + sub_wire2(15, 77) <= sub_wire1(77); + sub_wire2(15, 78) <= sub_wire1(78); + sub_wire2(15, 79) <= sub_wire1(79); + sub_wire2(15, 80) <= sub_wire1(80); + sub_wire2(15, 81) <= sub_wire1(81); + sub_wire2(15, 82) <= sub_wire1(82); + sub_wire2(15, 83) <= sub_wire1(83); + sub_wire2(15, 84) <= sub_wire1(84); + sub_wire2(15, 85) <= sub_wire1(85); + sub_wire2(15, 86) <= sub_wire1(86); + sub_wire2(15, 87) <= sub_wire1(87); + sub_wire2(15, 88) <= sub_wire1(88); + sub_wire2(15, 89) <= sub_wire1(89); + sub_wire2(15, 90) <= sub_wire1(90); + sub_wire2(15, 91) <= sub_wire1(91); + sub_wire2(15, 92) <= sub_wire1(92); + sub_wire2(15, 93) <= sub_wire1(93); + sub_wire2(15, 94) <= sub_wire1(94); + sub_wire2(15, 95) <= sub_wire1(95); + sub_wire2(15, 96) <= sub_wire1(96); + sub_wire2(15, 97) <= sub_wire1(97); + sub_wire2(15, 98) <= sub_wire1(98); + sub_wire2(15, 99) <= sub_wire1(99); + sub_wire2(15, 100) <= sub_wire1(100); + sub_wire2(15, 101) <= sub_wire1(101); + sub_wire2(15, 102) <= sub_wire1(102); + sub_wire2(15, 103) <= sub_wire1(103); + sub_wire2(15, 104) <= sub_wire1(104); + sub_wire2(15, 105) <= sub_wire1(105); + sub_wire2(15, 106) <= sub_wire1(106); + sub_wire2(15, 107) <= sub_wire1(107); + sub_wire2(15, 108) <= sub_wire1(108); + sub_wire2(15, 109) <= sub_wire1(109); + sub_wire2(15, 110) <= sub_wire1(110); + sub_wire2(15, 111) <= sub_wire1(111); + sub_wire2(15, 112) <= sub_wire1(112); + sub_wire2(15, 113) <= sub_wire1(113); + sub_wire2(15, 114) <= sub_wire1(114); + sub_wire2(15, 115) <= sub_wire1(115); + sub_wire2(15, 116) <= sub_wire1(116); + sub_wire2(15, 117) <= sub_wire1(117); + sub_wire2(15, 118) <= sub_wire1(118); + sub_wire2(15, 119) <= sub_wire1(119); + sub_wire2(15, 120) <= sub_wire1(120); + sub_wire2(15, 121) <= sub_wire1(121); + sub_wire2(15, 122) <= sub_wire1(122); + sub_wire2(15, 123) <= sub_wire1(123); + sub_wire2(15, 124) <= sub_wire1(124); + sub_wire2(15, 125) <= sub_wire1(125); + sub_wire2(15, 126) <= sub_wire1(126); + sub_wire2(15, 127) <= sub_wire1(127); + sub_wire2(14, 0) <= sub_wire3(0); + sub_wire2(14, 1) <= sub_wire3(1); + sub_wire2(14, 2) <= sub_wire3(2); + sub_wire2(14, 3) <= sub_wire3(3); + sub_wire2(14, 4) <= sub_wire3(4); + sub_wire2(14, 5) <= sub_wire3(5); + sub_wire2(14, 6) <= sub_wire3(6); + sub_wire2(14, 7) <= sub_wire3(7); + sub_wire2(14, 8) <= sub_wire3(8); + sub_wire2(14, 9) <= sub_wire3(9); + sub_wire2(14, 10) <= sub_wire3(10); + sub_wire2(14, 11) <= sub_wire3(11); + sub_wire2(14, 12) <= sub_wire3(12); + sub_wire2(14, 13) <= sub_wire3(13); + sub_wire2(14, 14) <= sub_wire3(14); + sub_wire2(14, 15) <= sub_wire3(15); + sub_wire2(14, 16) <= sub_wire3(16); + sub_wire2(14, 17) <= sub_wire3(17); + sub_wire2(14, 18) <= sub_wire3(18); + sub_wire2(14, 19) <= sub_wire3(19); + sub_wire2(14, 20) <= sub_wire3(20); + sub_wire2(14, 21) <= sub_wire3(21); + sub_wire2(14, 22) <= sub_wire3(22); + sub_wire2(14, 23) <= sub_wire3(23); + sub_wire2(14, 24) <= sub_wire3(24); + sub_wire2(14, 25) <= sub_wire3(25); + sub_wire2(14, 26) <= sub_wire3(26); + sub_wire2(14, 27) <= sub_wire3(27); + sub_wire2(14, 28) <= sub_wire3(28); + sub_wire2(14, 29) <= sub_wire3(29); + sub_wire2(14, 30) <= sub_wire3(30); + sub_wire2(14, 31) <= sub_wire3(31); + sub_wire2(14, 32) <= sub_wire3(32); + sub_wire2(14, 33) <= sub_wire3(33); + sub_wire2(14, 34) <= sub_wire3(34); + sub_wire2(14, 35) <= sub_wire3(35); + sub_wire2(14, 36) <= sub_wire3(36); + sub_wire2(14, 37) <= sub_wire3(37); + sub_wire2(14, 38) <= sub_wire3(38); + sub_wire2(14, 39) <= sub_wire3(39); + sub_wire2(14, 40) <= sub_wire3(40); + sub_wire2(14, 41) <= sub_wire3(41); + sub_wire2(14, 42) <= sub_wire3(42); + sub_wire2(14, 43) <= sub_wire3(43); + sub_wire2(14, 44) <= sub_wire3(44); + sub_wire2(14, 45) <= sub_wire3(45); + sub_wire2(14, 46) <= sub_wire3(46); + sub_wire2(14, 47) <= sub_wire3(47); + sub_wire2(14, 48) <= sub_wire3(48); + sub_wire2(14, 49) <= sub_wire3(49); + sub_wire2(14, 50) <= sub_wire3(50); + sub_wire2(14, 51) <= sub_wire3(51); + sub_wire2(14, 52) <= sub_wire3(52); + sub_wire2(14, 53) <= sub_wire3(53); + sub_wire2(14, 54) <= sub_wire3(54); + sub_wire2(14, 55) <= sub_wire3(55); + sub_wire2(14, 56) <= sub_wire3(56); + sub_wire2(14, 57) <= sub_wire3(57); + sub_wire2(14, 58) <= sub_wire3(58); + sub_wire2(14, 59) <= sub_wire3(59); + sub_wire2(14, 60) <= sub_wire3(60); + sub_wire2(14, 61) <= sub_wire3(61); + sub_wire2(14, 62) <= sub_wire3(62); + sub_wire2(14, 63) <= sub_wire3(63); + sub_wire2(14, 64) <= sub_wire3(64); + sub_wire2(14, 65) <= sub_wire3(65); + sub_wire2(14, 66) <= sub_wire3(66); + sub_wire2(14, 67) <= sub_wire3(67); + sub_wire2(14, 68) <= sub_wire3(68); + sub_wire2(14, 69) <= sub_wire3(69); + sub_wire2(14, 70) <= sub_wire3(70); + sub_wire2(14, 71) <= sub_wire3(71); + sub_wire2(14, 72) <= sub_wire3(72); + sub_wire2(14, 73) <= sub_wire3(73); + sub_wire2(14, 74) <= sub_wire3(74); + sub_wire2(14, 75) <= sub_wire3(75); + sub_wire2(14, 76) <= sub_wire3(76); + sub_wire2(14, 77) <= sub_wire3(77); + sub_wire2(14, 78) <= sub_wire3(78); + sub_wire2(14, 79) <= sub_wire3(79); + sub_wire2(14, 80) <= sub_wire3(80); + sub_wire2(14, 81) <= sub_wire3(81); + sub_wire2(14, 82) <= sub_wire3(82); + sub_wire2(14, 83) <= sub_wire3(83); + sub_wire2(14, 84) <= sub_wire3(84); + sub_wire2(14, 85) <= sub_wire3(85); + sub_wire2(14, 86) <= sub_wire3(86); + sub_wire2(14, 87) <= sub_wire3(87); + sub_wire2(14, 88) <= sub_wire3(88); + sub_wire2(14, 89) <= sub_wire3(89); + sub_wire2(14, 90) <= sub_wire3(90); + sub_wire2(14, 91) <= sub_wire3(91); + sub_wire2(14, 92) <= sub_wire3(92); + sub_wire2(14, 93) <= sub_wire3(93); + sub_wire2(14, 94) <= sub_wire3(94); + sub_wire2(14, 95) <= sub_wire3(95); + sub_wire2(14, 96) <= sub_wire3(96); + sub_wire2(14, 97) <= sub_wire3(97); + sub_wire2(14, 98) <= sub_wire3(98); + sub_wire2(14, 99) <= sub_wire3(99); + sub_wire2(14, 100) <= sub_wire3(100); + sub_wire2(14, 101) <= sub_wire3(101); + sub_wire2(14, 102) <= sub_wire3(102); + sub_wire2(14, 103) <= sub_wire3(103); + sub_wire2(14, 104) <= sub_wire3(104); + sub_wire2(14, 105) <= sub_wire3(105); + sub_wire2(14, 106) <= sub_wire3(106); + sub_wire2(14, 107) <= sub_wire3(107); + sub_wire2(14, 108) <= sub_wire3(108); + sub_wire2(14, 109) <= sub_wire3(109); + sub_wire2(14, 110) <= sub_wire3(110); + sub_wire2(14, 111) <= sub_wire3(111); + sub_wire2(14, 112) <= sub_wire3(112); + sub_wire2(14, 113) <= sub_wire3(113); + sub_wire2(14, 114) <= sub_wire3(114); + sub_wire2(14, 115) <= sub_wire3(115); + sub_wire2(14, 116) <= sub_wire3(116); + sub_wire2(14, 117) <= sub_wire3(117); + sub_wire2(14, 118) <= sub_wire3(118); + sub_wire2(14, 119) <= sub_wire3(119); + sub_wire2(14, 120) <= sub_wire3(120); + sub_wire2(14, 121) <= sub_wire3(121); + sub_wire2(14, 122) <= sub_wire3(122); + sub_wire2(14, 123) <= sub_wire3(123); + sub_wire2(14, 124) <= sub_wire3(124); + sub_wire2(14, 125) <= sub_wire3(125); + sub_wire2(14, 126) <= sub_wire3(126); + sub_wire2(14, 127) <= sub_wire3(127); + sub_wire2(13, 0) <= sub_wire4(0); + sub_wire2(13, 1) <= sub_wire4(1); + sub_wire2(13, 2) <= sub_wire4(2); + sub_wire2(13, 3) <= sub_wire4(3); + sub_wire2(13, 4) <= sub_wire4(4); + sub_wire2(13, 5) <= sub_wire4(5); + sub_wire2(13, 6) <= sub_wire4(6); + sub_wire2(13, 7) <= sub_wire4(7); + sub_wire2(13, 8) <= sub_wire4(8); + sub_wire2(13, 9) <= sub_wire4(9); + sub_wire2(13, 10) <= sub_wire4(10); + sub_wire2(13, 11) <= sub_wire4(11); + sub_wire2(13, 12) <= sub_wire4(12); + sub_wire2(13, 13) <= sub_wire4(13); + sub_wire2(13, 14) <= sub_wire4(14); + sub_wire2(13, 15) <= sub_wire4(15); + sub_wire2(13, 16) <= sub_wire4(16); + sub_wire2(13, 17) <= sub_wire4(17); + sub_wire2(13, 18) <= sub_wire4(18); + sub_wire2(13, 19) <= sub_wire4(19); + sub_wire2(13, 20) <= sub_wire4(20); + sub_wire2(13, 21) <= sub_wire4(21); + sub_wire2(13, 22) <= sub_wire4(22); + sub_wire2(13, 23) <= sub_wire4(23); + sub_wire2(13, 24) <= sub_wire4(24); + sub_wire2(13, 25) <= sub_wire4(25); + sub_wire2(13, 26) <= sub_wire4(26); + sub_wire2(13, 27) <= sub_wire4(27); + sub_wire2(13, 28) <= sub_wire4(28); + sub_wire2(13, 29) <= sub_wire4(29); + sub_wire2(13, 30) <= sub_wire4(30); + sub_wire2(13, 31) <= sub_wire4(31); + sub_wire2(13, 32) <= sub_wire4(32); + sub_wire2(13, 33) <= sub_wire4(33); + sub_wire2(13, 34) <= sub_wire4(34); + sub_wire2(13, 35) <= sub_wire4(35); + sub_wire2(13, 36) <= sub_wire4(36); + sub_wire2(13, 37) <= sub_wire4(37); + sub_wire2(13, 38) <= sub_wire4(38); + sub_wire2(13, 39) <= sub_wire4(39); + sub_wire2(13, 40) <= sub_wire4(40); + sub_wire2(13, 41) <= sub_wire4(41); + sub_wire2(13, 42) <= sub_wire4(42); + sub_wire2(13, 43) <= sub_wire4(43); + sub_wire2(13, 44) <= sub_wire4(44); + sub_wire2(13, 45) <= sub_wire4(45); + sub_wire2(13, 46) <= sub_wire4(46); + sub_wire2(13, 47) <= sub_wire4(47); + sub_wire2(13, 48) <= sub_wire4(48); + sub_wire2(13, 49) <= sub_wire4(49); + sub_wire2(13, 50) <= sub_wire4(50); + sub_wire2(13, 51) <= sub_wire4(51); + sub_wire2(13, 52) <= sub_wire4(52); + sub_wire2(13, 53) <= sub_wire4(53); + sub_wire2(13, 54) <= sub_wire4(54); + sub_wire2(13, 55) <= sub_wire4(55); + sub_wire2(13, 56) <= sub_wire4(56); + sub_wire2(13, 57) <= sub_wire4(57); + sub_wire2(13, 58) <= sub_wire4(58); + sub_wire2(13, 59) <= sub_wire4(59); + sub_wire2(13, 60) <= sub_wire4(60); + sub_wire2(13, 61) <= sub_wire4(61); + sub_wire2(13, 62) <= sub_wire4(62); + sub_wire2(13, 63) <= sub_wire4(63); + sub_wire2(13, 64) <= sub_wire4(64); + sub_wire2(13, 65) <= sub_wire4(65); + sub_wire2(13, 66) <= sub_wire4(66); + sub_wire2(13, 67) <= sub_wire4(67); + sub_wire2(13, 68) <= sub_wire4(68); + sub_wire2(13, 69) <= sub_wire4(69); + sub_wire2(13, 70) <= sub_wire4(70); + sub_wire2(13, 71) <= sub_wire4(71); + sub_wire2(13, 72) <= sub_wire4(72); + sub_wire2(13, 73) <= sub_wire4(73); + sub_wire2(13, 74) <= sub_wire4(74); + sub_wire2(13, 75) <= sub_wire4(75); + sub_wire2(13, 76) <= sub_wire4(76); + sub_wire2(13, 77) <= sub_wire4(77); + sub_wire2(13, 78) <= sub_wire4(78); + sub_wire2(13, 79) <= sub_wire4(79); + sub_wire2(13, 80) <= sub_wire4(80); + sub_wire2(13, 81) <= sub_wire4(81); + sub_wire2(13, 82) <= sub_wire4(82); + sub_wire2(13, 83) <= sub_wire4(83); + sub_wire2(13, 84) <= sub_wire4(84); + sub_wire2(13, 85) <= sub_wire4(85); + sub_wire2(13, 86) <= sub_wire4(86); + sub_wire2(13, 87) <= sub_wire4(87); + sub_wire2(13, 88) <= sub_wire4(88); + sub_wire2(13, 89) <= sub_wire4(89); + sub_wire2(13, 90) <= sub_wire4(90); + sub_wire2(13, 91) <= sub_wire4(91); + sub_wire2(13, 92) <= sub_wire4(92); + sub_wire2(13, 93) <= sub_wire4(93); + sub_wire2(13, 94) <= sub_wire4(94); + sub_wire2(13, 95) <= sub_wire4(95); + sub_wire2(13, 96) <= sub_wire4(96); + sub_wire2(13, 97) <= sub_wire4(97); + sub_wire2(13, 98) <= sub_wire4(98); + sub_wire2(13, 99) <= sub_wire4(99); + sub_wire2(13, 100) <= sub_wire4(100); + sub_wire2(13, 101) <= sub_wire4(101); + sub_wire2(13, 102) <= sub_wire4(102); + sub_wire2(13, 103) <= sub_wire4(103); + sub_wire2(13, 104) <= sub_wire4(104); + sub_wire2(13, 105) <= sub_wire4(105); + sub_wire2(13, 106) <= sub_wire4(106); + sub_wire2(13, 107) <= sub_wire4(107); + sub_wire2(13, 108) <= sub_wire4(108); + sub_wire2(13, 109) <= sub_wire4(109); + sub_wire2(13, 110) <= sub_wire4(110); + sub_wire2(13, 111) <= sub_wire4(111); + sub_wire2(13, 112) <= sub_wire4(112); + sub_wire2(13, 113) <= sub_wire4(113); + sub_wire2(13, 114) <= sub_wire4(114); + sub_wire2(13, 115) <= sub_wire4(115); + sub_wire2(13, 116) <= sub_wire4(116); + sub_wire2(13, 117) <= sub_wire4(117); + sub_wire2(13, 118) <= sub_wire4(118); + sub_wire2(13, 119) <= sub_wire4(119); + sub_wire2(13, 120) <= sub_wire4(120); + sub_wire2(13, 121) <= sub_wire4(121); + sub_wire2(13, 122) <= sub_wire4(122); + sub_wire2(13, 123) <= sub_wire4(123); + sub_wire2(13, 124) <= sub_wire4(124); + sub_wire2(13, 125) <= sub_wire4(125); + sub_wire2(13, 126) <= sub_wire4(126); + sub_wire2(13, 127) <= sub_wire4(127); + sub_wire2(12, 0) <= sub_wire5(0); + sub_wire2(12, 1) <= sub_wire5(1); + sub_wire2(12, 2) <= sub_wire5(2); + sub_wire2(12, 3) <= sub_wire5(3); + sub_wire2(12, 4) <= sub_wire5(4); + sub_wire2(12, 5) <= sub_wire5(5); + sub_wire2(12, 6) <= sub_wire5(6); + sub_wire2(12, 7) <= sub_wire5(7); + sub_wire2(12, 8) <= sub_wire5(8); + sub_wire2(12, 9) <= sub_wire5(9); + sub_wire2(12, 10) <= sub_wire5(10); + sub_wire2(12, 11) <= sub_wire5(11); + sub_wire2(12, 12) <= sub_wire5(12); + sub_wire2(12, 13) <= sub_wire5(13); + sub_wire2(12, 14) <= sub_wire5(14); + sub_wire2(12, 15) <= sub_wire5(15); + sub_wire2(12, 16) <= sub_wire5(16); + sub_wire2(12, 17) <= sub_wire5(17); + sub_wire2(12, 18) <= sub_wire5(18); + sub_wire2(12, 19) <= sub_wire5(19); + sub_wire2(12, 20) <= sub_wire5(20); + sub_wire2(12, 21) <= sub_wire5(21); + sub_wire2(12, 22) <= sub_wire5(22); + sub_wire2(12, 23) <= sub_wire5(23); + sub_wire2(12, 24) <= sub_wire5(24); + sub_wire2(12, 25) <= sub_wire5(25); + sub_wire2(12, 26) <= sub_wire5(26); + sub_wire2(12, 27) <= sub_wire5(27); + sub_wire2(12, 28) <= sub_wire5(28); + sub_wire2(12, 29) <= sub_wire5(29); + sub_wire2(12, 30) <= sub_wire5(30); + sub_wire2(12, 31) <= sub_wire5(31); + sub_wire2(12, 32) <= sub_wire5(32); + sub_wire2(12, 33) <= sub_wire5(33); + sub_wire2(12, 34) <= sub_wire5(34); + sub_wire2(12, 35) <= sub_wire5(35); + sub_wire2(12, 36) <= sub_wire5(36); + sub_wire2(12, 37) <= sub_wire5(37); + sub_wire2(12, 38) <= sub_wire5(38); + sub_wire2(12, 39) <= sub_wire5(39); + sub_wire2(12, 40) <= sub_wire5(40); + sub_wire2(12, 41) <= sub_wire5(41); + sub_wire2(12, 42) <= sub_wire5(42); + sub_wire2(12, 43) <= sub_wire5(43); + sub_wire2(12, 44) <= sub_wire5(44); + sub_wire2(12, 45) <= sub_wire5(45); + sub_wire2(12, 46) <= sub_wire5(46); + sub_wire2(12, 47) <= sub_wire5(47); + sub_wire2(12, 48) <= sub_wire5(48); + sub_wire2(12, 49) <= sub_wire5(49); + sub_wire2(12, 50) <= sub_wire5(50); + sub_wire2(12, 51) <= sub_wire5(51); + sub_wire2(12, 52) <= sub_wire5(52); + sub_wire2(12, 53) <= sub_wire5(53); + sub_wire2(12, 54) <= sub_wire5(54); + sub_wire2(12, 55) <= sub_wire5(55); + sub_wire2(12, 56) <= sub_wire5(56); + sub_wire2(12, 57) <= sub_wire5(57); + sub_wire2(12, 58) <= sub_wire5(58); + sub_wire2(12, 59) <= sub_wire5(59); + sub_wire2(12, 60) <= sub_wire5(60); + sub_wire2(12, 61) <= sub_wire5(61); + sub_wire2(12, 62) <= sub_wire5(62); + sub_wire2(12, 63) <= sub_wire5(63); + sub_wire2(12, 64) <= sub_wire5(64); + sub_wire2(12, 65) <= sub_wire5(65); + sub_wire2(12, 66) <= sub_wire5(66); + sub_wire2(12, 67) <= sub_wire5(67); + sub_wire2(12, 68) <= sub_wire5(68); + sub_wire2(12, 69) <= sub_wire5(69); + sub_wire2(12, 70) <= sub_wire5(70); + sub_wire2(12, 71) <= sub_wire5(71); + sub_wire2(12, 72) <= sub_wire5(72); + sub_wire2(12, 73) <= sub_wire5(73); + sub_wire2(12, 74) <= sub_wire5(74); + sub_wire2(12, 75) <= sub_wire5(75); + sub_wire2(12, 76) <= sub_wire5(76); + sub_wire2(12, 77) <= sub_wire5(77); + sub_wire2(12, 78) <= sub_wire5(78); + sub_wire2(12, 79) <= sub_wire5(79); + sub_wire2(12, 80) <= sub_wire5(80); + sub_wire2(12, 81) <= sub_wire5(81); + sub_wire2(12, 82) <= sub_wire5(82); + sub_wire2(12, 83) <= sub_wire5(83); + sub_wire2(12, 84) <= sub_wire5(84); + sub_wire2(12, 85) <= sub_wire5(85); + sub_wire2(12, 86) <= sub_wire5(86); + sub_wire2(12, 87) <= sub_wire5(87); + sub_wire2(12, 88) <= sub_wire5(88); + sub_wire2(12, 89) <= sub_wire5(89); + sub_wire2(12, 90) <= sub_wire5(90); + sub_wire2(12, 91) <= sub_wire5(91); + sub_wire2(12, 92) <= sub_wire5(92); + sub_wire2(12, 93) <= sub_wire5(93); + sub_wire2(12, 94) <= sub_wire5(94); + sub_wire2(12, 95) <= sub_wire5(95); + sub_wire2(12, 96) <= sub_wire5(96); + sub_wire2(12, 97) <= sub_wire5(97); + sub_wire2(12, 98) <= sub_wire5(98); + sub_wire2(12, 99) <= sub_wire5(99); + sub_wire2(12, 100) <= sub_wire5(100); + sub_wire2(12, 101) <= sub_wire5(101); + sub_wire2(12, 102) <= sub_wire5(102); + sub_wire2(12, 103) <= sub_wire5(103); + sub_wire2(12, 104) <= sub_wire5(104); + sub_wire2(12, 105) <= sub_wire5(105); + sub_wire2(12, 106) <= sub_wire5(106); + sub_wire2(12, 107) <= sub_wire5(107); + sub_wire2(12, 108) <= sub_wire5(108); + sub_wire2(12, 109) <= sub_wire5(109); + sub_wire2(12, 110) <= sub_wire5(110); + sub_wire2(12, 111) <= sub_wire5(111); + sub_wire2(12, 112) <= sub_wire5(112); + sub_wire2(12, 113) <= sub_wire5(113); + sub_wire2(12, 114) <= sub_wire5(114); + sub_wire2(12, 115) <= sub_wire5(115); + sub_wire2(12, 116) <= sub_wire5(116); + sub_wire2(12, 117) <= sub_wire5(117); + sub_wire2(12, 118) <= sub_wire5(118); + sub_wire2(12, 119) <= sub_wire5(119); + sub_wire2(12, 120) <= sub_wire5(120); + sub_wire2(12, 121) <= sub_wire5(121); + sub_wire2(12, 122) <= sub_wire5(122); + sub_wire2(12, 123) <= sub_wire5(123); + sub_wire2(12, 124) <= sub_wire5(124); + sub_wire2(12, 125) <= sub_wire5(125); + sub_wire2(12, 126) <= sub_wire5(126); + sub_wire2(12, 127) <= sub_wire5(127); + sub_wire2(11, 0) <= sub_wire6(0); + sub_wire2(11, 1) <= sub_wire6(1); + sub_wire2(11, 2) <= sub_wire6(2); + sub_wire2(11, 3) <= sub_wire6(3); + sub_wire2(11, 4) <= sub_wire6(4); + sub_wire2(11, 5) <= sub_wire6(5); + sub_wire2(11, 6) <= sub_wire6(6); + sub_wire2(11, 7) <= sub_wire6(7); + sub_wire2(11, 8) <= sub_wire6(8); + sub_wire2(11, 9) <= sub_wire6(9); + sub_wire2(11, 10) <= sub_wire6(10); + sub_wire2(11, 11) <= sub_wire6(11); + sub_wire2(11, 12) <= sub_wire6(12); + sub_wire2(11, 13) <= sub_wire6(13); + sub_wire2(11, 14) <= sub_wire6(14); + sub_wire2(11, 15) <= sub_wire6(15); + sub_wire2(11, 16) <= sub_wire6(16); + sub_wire2(11, 17) <= sub_wire6(17); + sub_wire2(11, 18) <= sub_wire6(18); + sub_wire2(11, 19) <= sub_wire6(19); + sub_wire2(11, 20) <= sub_wire6(20); + sub_wire2(11, 21) <= sub_wire6(21); + sub_wire2(11, 22) <= sub_wire6(22); + sub_wire2(11, 23) <= sub_wire6(23); + sub_wire2(11, 24) <= sub_wire6(24); + sub_wire2(11, 25) <= sub_wire6(25); + sub_wire2(11, 26) <= sub_wire6(26); + sub_wire2(11, 27) <= sub_wire6(27); + sub_wire2(11, 28) <= sub_wire6(28); + sub_wire2(11, 29) <= sub_wire6(29); + sub_wire2(11, 30) <= sub_wire6(30); + sub_wire2(11, 31) <= sub_wire6(31); + sub_wire2(11, 32) <= sub_wire6(32); + sub_wire2(11, 33) <= sub_wire6(33); + sub_wire2(11, 34) <= sub_wire6(34); + sub_wire2(11, 35) <= sub_wire6(35); + sub_wire2(11, 36) <= sub_wire6(36); + sub_wire2(11, 37) <= sub_wire6(37); + sub_wire2(11, 38) <= sub_wire6(38); + sub_wire2(11, 39) <= sub_wire6(39); + sub_wire2(11, 40) <= sub_wire6(40); + sub_wire2(11, 41) <= sub_wire6(41); + sub_wire2(11, 42) <= sub_wire6(42); + sub_wire2(11, 43) <= sub_wire6(43); + sub_wire2(11, 44) <= sub_wire6(44); + sub_wire2(11, 45) <= sub_wire6(45); + sub_wire2(11, 46) <= sub_wire6(46); + sub_wire2(11, 47) <= sub_wire6(47); + sub_wire2(11, 48) <= sub_wire6(48); + sub_wire2(11, 49) <= sub_wire6(49); + sub_wire2(11, 50) <= sub_wire6(50); + sub_wire2(11, 51) <= sub_wire6(51); + sub_wire2(11, 52) <= sub_wire6(52); + sub_wire2(11, 53) <= sub_wire6(53); + sub_wire2(11, 54) <= sub_wire6(54); + sub_wire2(11, 55) <= sub_wire6(55); + sub_wire2(11, 56) <= sub_wire6(56); + sub_wire2(11, 57) <= sub_wire6(57); + sub_wire2(11, 58) <= sub_wire6(58); + sub_wire2(11, 59) <= sub_wire6(59); + sub_wire2(11, 60) <= sub_wire6(60); + sub_wire2(11, 61) <= sub_wire6(61); + sub_wire2(11, 62) <= sub_wire6(62); + sub_wire2(11, 63) <= sub_wire6(63); + sub_wire2(11, 64) <= sub_wire6(64); + sub_wire2(11, 65) <= sub_wire6(65); + sub_wire2(11, 66) <= sub_wire6(66); + sub_wire2(11, 67) <= sub_wire6(67); + sub_wire2(11, 68) <= sub_wire6(68); + sub_wire2(11, 69) <= sub_wire6(69); + sub_wire2(11, 70) <= sub_wire6(70); + sub_wire2(11, 71) <= sub_wire6(71); + sub_wire2(11, 72) <= sub_wire6(72); + sub_wire2(11, 73) <= sub_wire6(73); + sub_wire2(11, 74) <= sub_wire6(74); + sub_wire2(11, 75) <= sub_wire6(75); + sub_wire2(11, 76) <= sub_wire6(76); + sub_wire2(11, 77) <= sub_wire6(77); + sub_wire2(11, 78) <= sub_wire6(78); + sub_wire2(11, 79) <= sub_wire6(79); + sub_wire2(11, 80) <= sub_wire6(80); + sub_wire2(11, 81) <= sub_wire6(81); + sub_wire2(11, 82) <= sub_wire6(82); + sub_wire2(11, 83) <= sub_wire6(83); + sub_wire2(11, 84) <= sub_wire6(84); + sub_wire2(11, 85) <= sub_wire6(85); + sub_wire2(11, 86) <= sub_wire6(86); + sub_wire2(11, 87) <= sub_wire6(87); + sub_wire2(11, 88) <= sub_wire6(88); + sub_wire2(11, 89) <= sub_wire6(89); + sub_wire2(11, 90) <= sub_wire6(90); + sub_wire2(11, 91) <= sub_wire6(91); + sub_wire2(11, 92) <= sub_wire6(92); + sub_wire2(11, 93) <= sub_wire6(93); + sub_wire2(11, 94) <= sub_wire6(94); + sub_wire2(11, 95) <= sub_wire6(95); + sub_wire2(11, 96) <= sub_wire6(96); + sub_wire2(11, 97) <= sub_wire6(97); + sub_wire2(11, 98) <= sub_wire6(98); + sub_wire2(11, 99) <= sub_wire6(99); + sub_wire2(11, 100) <= sub_wire6(100); + sub_wire2(11, 101) <= sub_wire6(101); + sub_wire2(11, 102) <= sub_wire6(102); + sub_wire2(11, 103) <= sub_wire6(103); + sub_wire2(11, 104) <= sub_wire6(104); + sub_wire2(11, 105) <= sub_wire6(105); + sub_wire2(11, 106) <= sub_wire6(106); + sub_wire2(11, 107) <= sub_wire6(107); + sub_wire2(11, 108) <= sub_wire6(108); + sub_wire2(11, 109) <= sub_wire6(109); + sub_wire2(11, 110) <= sub_wire6(110); + sub_wire2(11, 111) <= sub_wire6(111); + sub_wire2(11, 112) <= sub_wire6(112); + sub_wire2(11, 113) <= sub_wire6(113); + sub_wire2(11, 114) <= sub_wire6(114); + sub_wire2(11, 115) <= sub_wire6(115); + sub_wire2(11, 116) <= sub_wire6(116); + sub_wire2(11, 117) <= sub_wire6(117); + sub_wire2(11, 118) <= sub_wire6(118); + sub_wire2(11, 119) <= sub_wire6(119); + sub_wire2(11, 120) <= sub_wire6(120); + sub_wire2(11, 121) <= sub_wire6(121); + sub_wire2(11, 122) <= sub_wire6(122); + sub_wire2(11, 123) <= sub_wire6(123); + sub_wire2(11, 124) <= sub_wire6(124); + sub_wire2(11, 125) <= sub_wire6(125); + sub_wire2(11, 126) <= sub_wire6(126); + sub_wire2(11, 127) <= sub_wire6(127); + sub_wire2(10, 0) <= sub_wire7(0); + sub_wire2(10, 1) <= sub_wire7(1); + sub_wire2(10, 2) <= sub_wire7(2); + sub_wire2(10, 3) <= sub_wire7(3); + sub_wire2(10, 4) <= sub_wire7(4); + sub_wire2(10, 5) <= sub_wire7(5); + sub_wire2(10, 6) <= sub_wire7(6); + sub_wire2(10, 7) <= sub_wire7(7); + sub_wire2(10, 8) <= sub_wire7(8); + sub_wire2(10, 9) <= sub_wire7(9); + sub_wire2(10, 10) <= sub_wire7(10); + sub_wire2(10, 11) <= sub_wire7(11); + sub_wire2(10, 12) <= sub_wire7(12); + sub_wire2(10, 13) <= sub_wire7(13); + sub_wire2(10, 14) <= sub_wire7(14); + sub_wire2(10, 15) <= sub_wire7(15); + sub_wire2(10, 16) <= sub_wire7(16); + sub_wire2(10, 17) <= sub_wire7(17); + sub_wire2(10, 18) <= sub_wire7(18); + sub_wire2(10, 19) <= sub_wire7(19); + sub_wire2(10, 20) <= sub_wire7(20); + sub_wire2(10, 21) <= sub_wire7(21); + sub_wire2(10, 22) <= sub_wire7(22); + sub_wire2(10, 23) <= sub_wire7(23); + sub_wire2(10, 24) <= sub_wire7(24); + sub_wire2(10, 25) <= sub_wire7(25); + sub_wire2(10, 26) <= sub_wire7(26); + sub_wire2(10, 27) <= sub_wire7(27); + sub_wire2(10, 28) <= sub_wire7(28); + sub_wire2(10, 29) <= sub_wire7(29); + sub_wire2(10, 30) <= sub_wire7(30); + sub_wire2(10, 31) <= sub_wire7(31); + sub_wire2(10, 32) <= sub_wire7(32); + sub_wire2(10, 33) <= sub_wire7(33); + sub_wire2(10, 34) <= sub_wire7(34); + sub_wire2(10, 35) <= sub_wire7(35); + sub_wire2(10, 36) <= sub_wire7(36); + sub_wire2(10, 37) <= sub_wire7(37); + sub_wire2(10, 38) <= sub_wire7(38); + sub_wire2(10, 39) <= sub_wire7(39); + sub_wire2(10, 40) <= sub_wire7(40); + sub_wire2(10, 41) <= sub_wire7(41); + sub_wire2(10, 42) <= sub_wire7(42); + sub_wire2(10, 43) <= sub_wire7(43); + sub_wire2(10, 44) <= sub_wire7(44); + sub_wire2(10, 45) <= sub_wire7(45); + sub_wire2(10, 46) <= sub_wire7(46); + sub_wire2(10, 47) <= sub_wire7(47); + sub_wire2(10, 48) <= sub_wire7(48); + sub_wire2(10, 49) <= sub_wire7(49); + sub_wire2(10, 50) <= sub_wire7(50); + sub_wire2(10, 51) <= sub_wire7(51); + sub_wire2(10, 52) <= sub_wire7(52); + sub_wire2(10, 53) <= sub_wire7(53); + sub_wire2(10, 54) <= sub_wire7(54); + sub_wire2(10, 55) <= sub_wire7(55); + sub_wire2(10, 56) <= sub_wire7(56); + sub_wire2(10, 57) <= sub_wire7(57); + sub_wire2(10, 58) <= sub_wire7(58); + sub_wire2(10, 59) <= sub_wire7(59); + sub_wire2(10, 60) <= sub_wire7(60); + sub_wire2(10, 61) <= sub_wire7(61); + sub_wire2(10, 62) <= sub_wire7(62); + sub_wire2(10, 63) <= sub_wire7(63); + sub_wire2(10, 64) <= sub_wire7(64); + sub_wire2(10, 65) <= sub_wire7(65); + sub_wire2(10, 66) <= sub_wire7(66); + sub_wire2(10, 67) <= sub_wire7(67); + sub_wire2(10, 68) <= sub_wire7(68); + sub_wire2(10, 69) <= sub_wire7(69); + sub_wire2(10, 70) <= sub_wire7(70); + sub_wire2(10, 71) <= sub_wire7(71); + sub_wire2(10, 72) <= sub_wire7(72); + sub_wire2(10, 73) <= sub_wire7(73); + sub_wire2(10, 74) <= sub_wire7(74); + sub_wire2(10, 75) <= sub_wire7(75); + sub_wire2(10, 76) <= sub_wire7(76); + sub_wire2(10, 77) <= sub_wire7(77); + sub_wire2(10, 78) <= sub_wire7(78); + sub_wire2(10, 79) <= sub_wire7(79); + sub_wire2(10, 80) <= sub_wire7(80); + sub_wire2(10, 81) <= sub_wire7(81); + sub_wire2(10, 82) <= sub_wire7(82); + sub_wire2(10, 83) <= sub_wire7(83); + sub_wire2(10, 84) <= sub_wire7(84); + sub_wire2(10, 85) <= sub_wire7(85); + sub_wire2(10, 86) <= sub_wire7(86); + sub_wire2(10, 87) <= sub_wire7(87); + sub_wire2(10, 88) <= sub_wire7(88); + sub_wire2(10, 89) <= sub_wire7(89); + sub_wire2(10, 90) <= sub_wire7(90); + sub_wire2(10, 91) <= sub_wire7(91); + sub_wire2(10, 92) <= sub_wire7(92); + sub_wire2(10, 93) <= sub_wire7(93); + sub_wire2(10, 94) <= sub_wire7(94); + sub_wire2(10, 95) <= sub_wire7(95); + sub_wire2(10, 96) <= sub_wire7(96); + sub_wire2(10, 97) <= sub_wire7(97); + sub_wire2(10, 98) <= sub_wire7(98); + sub_wire2(10, 99) <= sub_wire7(99); + sub_wire2(10, 100) <= sub_wire7(100); + sub_wire2(10, 101) <= sub_wire7(101); + sub_wire2(10, 102) <= sub_wire7(102); + sub_wire2(10, 103) <= sub_wire7(103); + sub_wire2(10, 104) <= sub_wire7(104); + sub_wire2(10, 105) <= sub_wire7(105); + sub_wire2(10, 106) <= sub_wire7(106); + sub_wire2(10, 107) <= sub_wire7(107); + sub_wire2(10, 108) <= sub_wire7(108); + sub_wire2(10, 109) <= sub_wire7(109); + sub_wire2(10, 110) <= sub_wire7(110); + sub_wire2(10, 111) <= sub_wire7(111); + sub_wire2(10, 112) <= sub_wire7(112); + sub_wire2(10, 113) <= sub_wire7(113); + sub_wire2(10, 114) <= sub_wire7(114); + sub_wire2(10, 115) <= sub_wire7(115); + sub_wire2(10, 116) <= sub_wire7(116); + sub_wire2(10, 117) <= sub_wire7(117); + sub_wire2(10, 118) <= sub_wire7(118); + sub_wire2(10, 119) <= sub_wire7(119); + sub_wire2(10, 120) <= sub_wire7(120); + sub_wire2(10, 121) <= sub_wire7(121); + sub_wire2(10, 122) <= sub_wire7(122); + sub_wire2(10, 123) <= sub_wire7(123); + sub_wire2(10, 124) <= sub_wire7(124); + sub_wire2(10, 125) <= sub_wire7(125); + sub_wire2(10, 126) <= sub_wire7(126); + sub_wire2(10, 127) <= sub_wire7(127); + sub_wire2(9, 0) <= sub_wire8(0); + sub_wire2(9, 1) <= sub_wire8(1); + sub_wire2(9, 2) <= sub_wire8(2); + sub_wire2(9, 3) <= sub_wire8(3); + sub_wire2(9, 4) <= sub_wire8(4); + sub_wire2(9, 5) <= sub_wire8(5); + sub_wire2(9, 6) <= sub_wire8(6); + sub_wire2(9, 7) <= sub_wire8(7); + sub_wire2(9, 8) <= sub_wire8(8); + sub_wire2(9, 9) <= sub_wire8(9); + sub_wire2(9, 10) <= sub_wire8(10); + sub_wire2(9, 11) <= sub_wire8(11); + sub_wire2(9, 12) <= sub_wire8(12); + sub_wire2(9, 13) <= sub_wire8(13); + sub_wire2(9, 14) <= sub_wire8(14); + sub_wire2(9, 15) <= sub_wire8(15); + sub_wire2(9, 16) <= sub_wire8(16); + sub_wire2(9, 17) <= sub_wire8(17); + sub_wire2(9, 18) <= sub_wire8(18); + sub_wire2(9, 19) <= sub_wire8(19); + sub_wire2(9, 20) <= sub_wire8(20); + sub_wire2(9, 21) <= sub_wire8(21); + sub_wire2(9, 22) <= sub_wire8(22); + sub_wire2(9, 23) <= sub_wire8(23); + sub_wire2(9, 24) <= sub_wire8(24); + sub_wire2(9, 25) <= sub_wire8(25); + sub_wire2(9, 26) <= sub_wire8(26); + sub_wire2(9, 27) <= sub_wire8(27); + sub_wire2(9, 28) <= sub_wire8(28); + sub_wire2(9, 29) <= sub_wire8(29); + sub_wire2(9, 30) <= sub_wire8(30); + sub_wire2(9, 31) <= sub_wire8(31); + sub_wire2(9, 32) <= sub_wire8(32); + sub_wire2(9, 33) <= sub_wire8(33); + sub_wire2(9, 34) <= sub_wire8(34); + sub_wire2(9, 35) <= sub_wire8(35); + sub_wire2(9, 36) <= sub_wire8(36); + sub_wire2(9, 37) <= sub_wire8(37); + sub_wire2(9, 38) <= sub_wire8(38); + sub_wire2(9, 39) <= sub_wire8(39); + sub_wire2(9, 40) <= sub_wire8(40); + sub_wire2(9, 41) <= sub_wire8(41); + sub_wire2(9, 42) <= sub_wire8(42); + sub_wire2(9, 43) <= sub_wire8(43); + sub_wire2(9, 44) <= sub_wire8(44); + sub_wire2(9, 45) <= sub_wire8(45); + sub_wire2(9, 46) <= sub_wire8(46); + sub_wire2(9, 47) <= sub_wire8(47); + sub_wire2(9, 48) <= sub_wire8(48); + sub_wire2(9, 49) <= sub_wire8(49); + sub_wire2(9, 50) <= sub_wire8(50); + sub_wire2(9, 51) <= sub_wire8(51); + sub_wire2(9, 52) <= sub_wire8(52); + sub_wire2(9, 53) <= sub_wire8(53); + sub_wire2(9, 54) <= sub_wire8(54); + sub_wire2(9, 55) <= sub_wire8(55); + sub_wire2(9, 56) <= sub_wire8(56); + sub_wire2(9, 57) <= sub_wire8(57); + sub_wire2(9, 58) <= sub_wire8(58); + sub_wire2(9, 59) <= sub_wire8(59); + sub_wire2(9, 60) <= sub_wire8(60); + sub_wire2(9, 61) <= sub_wire8(61); + sub_wire2(9, 62) <= sub_wire8(62); + sub_wire2(9, 63) <= sub_wire8(63); + sub_wire2(9, 64) <= sub_wire8(64); + sub_wire2(9, 65) <= sub_wire8(65); + sub_wire2(9, 66) <= sub_wire8(66); + sub_wire2(9, 67) <= sub_wire8(67); + sub_wire2(9, 68) <= sub_wire8(68); + sub_wire2(9, 69) <= sub_wire8(69); + sub_wire2(9, 70) <= sub_wire8(70); + sub_wire2(9, 71) <= sub_wire8(71); + sub_wire2(9, 72) <= sub_wire8(72); + sub_wire2(9, 73) <= sub_wire8(73); + sub_wire2(9, 74) <= sub_wire8(74); + sub_wire2(9, 75) <= sub_wire8(75); + sub_wire2(9, 76) <= sub_wire8(76); + sub_wire2(9, 77) <= sub_wire8(77); + sub_wire2(9, 78) <= sub_wire8(78); + sub_wire2(9, 79) <= sub_wire8(79); + sub_wire2(9, 80) <= sub_wire8(80); + sub_wire2(9, 81) <= sub_wire8(81); + sub_wire2(9, 82) <= sub_wire8(82); + sub_wire2(9, 83) <= sub_wire8(83); + sub_wire2(9, 84) <= sub_wire8(84); + sub_wire2(9, 85) <= sub_wire8(85); + sub_wire2(9, 86) <= sub_wire8(86); + sub_wire2(9, 87) <= sub_wire8(87); + sub_wire2(9, 88) <= sub_wire8(88); + sub_wire2(9, 89) <= sub_wire8(89); + sub_wire2(9, 90) <= sub_wire8(90); + sub_wire2(9, 91) <= sub_wire8(91); + sub_wire2(9, 92) <= sub_wire8(92); + sub_wire2(9, 93) <= sub_wire8(93); + sub_wire2(9, 94) <= sub_wire8(94); + sub_wire2(9, 95) <= sub_wire8(95); + sub_wire2(9, 96) <= sub_wire8(96); + sub_wire2(9, 97) <= sub_wire8(97); + sub_wire2(9, 98) <= sub_wire8(98); + sub_wire2(9, 99) <= sub_wire8(99); + sub_wire2(9, 100) <= sub_wire8(100); + sub_wire2(9, 101) <= sub_wire8(101); + sub_wire2(9, 102) <= sub_wire8(102); + sub_wire2(9, 103) <= sub_wire8(103); + sub_wire2(9, 104) <= sub_wire8(104); + sub_wire2(9, 105) <= sub_wire8(105); + sub_wire2(9, 106) <= sub_wire8(106); + sub_wire2(9, 107) <= sub_wire8(107); + sub_wire2(9, 108) <= sub_wire8(108); + sub_wire2(9, 109) <= sub_wire8(109); + sub_wire2(9, 110) <= sub_wire8(110); + sub_wire2(9, 111) <= sub_wire8(111); + sub_wire2(9, 112) <= sub_wire8(112); + sub_wire2(9, 113) <= sub_wire8(113); + sub_wire2(9, 114) <= sub_wire8(114); + sub_wire2(9, 115) <= sub_wire8(115); + sub_wire2(9, 116) <= sub_wire8(116); + sub_wire2(9, 117) <= sub_wire8(117); + sub_wire2(9, 118) <= sub_wire8(118); + sub_wire2(9, 119) <= sub_wire8(119); + sub_wire2(9, 120) <= sub_wire8(120); + sub_wire2(9, 121) <= sub_wire8(121); + sub_wire2(9, 122) <= sub_wire8(122); + sub_wire2(9, 123) <= sub_wire8(123); + sub_wire2(9, 124) <= sub_wire8(124); + sub_wire2(9, 125) <= sub_wire8(125); + sub_wire2(9, 126) <= sub_wire8(126); + sub_wire2(9, 127) <= sub_wire8(127); + sub_wire2(8, 0) <= sub_wire9(0); + sub_wire2(8, 1) <= sub_wire9(1); + sub_wire2(8, 2) <= sub_wire9(2); + sub_wire2(8, 3) <= sub_wire9(3); + sub_wire2(8, 4) <= sub_wire9(4); + sub_wire2(8, 5) <= sub_wire9(5); + sub_wire2(8, 6) <= sub_wire9(6); + sub_wire2(8, 7) <= sub_wire9(7); + sub_wire2(8, 8) <= sub_wire9(8); + sub_wire2(8, 9) <= sub_wire9(9); + sub_wire2(8, 10) <= sub_wire9(10); + sub_wire2(8, 11) <= sub_wire9(11); + sub_wire2(8, 12) <= sub_wire9(12); + sub_wire2(8, 13) <= sub_wire9(13); + sub_wire2(8, 14) <= sub_wire9(14); + sub_wire2(8, 15) <= sub_wire9(15); + sub_wire2(8, 16) <= sub_wire9(16); + sub_wire2(8, 17) <= sub_wire9(17); + sub_wire2(8, 18) <= sub_wire9(18); + sub_wire2(8, 19) <= sub_wire9(19); + sub_wire2(8, 20) <= sub_wire9(20); + sub_wire2(8, 21) <= sub_wire9(21); + sub_wire2(8, 22) <= sub_wire9(22); + sub_wire2(8, 23) <= sub_wire9(23); + sub_wire2(8, 24) <= sub_wire9(24); + sub_wire2(8, 25) <= sub_wire9(25); + sub_wire2(8, 26) <= sub_wire9(26); + sub_wire2(8, 27) <= sub_wire9(27); + sub_wire2(8, 28) <= sub_wire9(28); + sub_wire2(8, 29) <= sub_wire9(29); + sub_wire2(8, 30) <= sub_wire9(30); + sub_wire2(8, 31) <= sub_wire9(31); + sub_wire2(8, 32) <= sub_wire9(32); + sub_wire2(8, 33) <= sub_wire9(33); + sub_wire2(8, 34) <= sub_wire9(34); + sub_wire2(8, 35) <= sub_wire9(35); + sub_wire2(8, 36) <= sub_wire9(36); + sub_wire2(8, 37) <= sub_wire9(37); + sub_wire2(8, 38) <= sub_wire9(38); + sub_wire2(8, 39) <= sub_wire9(39); + sub_wire2(8, 40) <= sub_wire9(40); + sub_wire2(8, 41) <= sub_wire9(41); + sub_wire2(8, 42) <= sub_wire9(42); + sub_wire2(8, 43) <= sub_wire9(43); + sub_wire2(8, 44) <= sub_wire9(44); + sub_wire2(8, 45) <= sub_wire9(45); + sub_wire2(8, 46) <= sub_wire9(46); + sub_wire2(8, 47) <= sub_wire9(47); + sub_wire2(8, 48) <= sub_wire9(48); + sub_wire2(8, 49) <= sub_wire9(49); + sub_wire2(8, 50) <= sub_wire9(50); + sub_wire2(8, 51) <= sub_wire9(51); + sub_wire2(8, 52) <= sub_wire9(52); + sub_wire2(8, 53) <= sub_wire9(53); + sub_wire2(8, 54) <= sub_wire9(54); + sub_wire2(8, 55) <= sub_wire9(55); + sub_wire2(8, 56) <= sub_wire9(56); + sub_wire2(8, 57) <= sub_wire9(57); + sub_wire2(8, 58) <= sub_wire9(58); + sub_wire2(8, 59) <= sub_wire9(59); + sub_wire2(8, 60) <= sub_wire9(60); + sub_wire2(8, 61) <= sub_wire9(61); + sub_wire2(8, 62) <= sub_wire9(62); + sub_wire2(8, 63) <= sub_wire9(63); + sub_wire2(8, 64) <= sub_wire9(64); + sub_wire2(8, 65) <= sub_wire9(65); + sub_wire2(8, 66) <= sub_wire9(66); + sub_wire2(8, 67) <= sub_wire9(67); + sub_wire2(8, 68) <= sub_wire9(68); + sub_wire2(8, 69) <= sub_wire9(69); + sub_wire2(8, 70) <= sub_wire9(70); + sub_wire2(8, 71) <= sub_wire9(71); + sub_wire2(8, 72) <= sub_wire9(72); + sub_wire2(8, 73) <= sub_wire9(73); + sub_wire2(8, 74) <= sub_wire9(74); + sub_wire2(8, 75) <= sub_wire9(75); + sub_wire2(8, 76) <= sub_wire9(76); + sub_wire2(8, 77) <= sub_wire9(77); + sub_wire2(8, 78) <= sub_wire9(78); + sub_wire2(8, 79) <= sub_wire9(79); + sub_wire2(8, 80) <= sub_wire9(80); + sub_wire2(8, 81) <= sub_wire9(81); + sub_wire2(8, 82) <= sub_wire9(82); + sub_wire2(8, 83) <= sub_wire9(83); + sub_wire2(8, 84) <= sub_wire9(84); + sub_wire2(8, 85) <= sub_wire9(85); + sub_wire2(8, 86) <= sub_wire9(86); + sub_wire2(8, 87) <= sub_wire9(87); + sub_wire2(8, 88) <= sub_wire9(88); + sub_wire2(8, 89) <= sub_wire9(89); + sub_wire2(8, 90) <= sub_wire9(90); + sub_wire2(8, 91) <= sub_wire9(91); + sub_wire2(8, 92) <= sub_wire9(92); + sub_wire2(8, 93) <= sub_wire9(93); + sub_wire2(8, 94) <= sub_wire9(94); + sub_wire2(8, 95) <= sub_wire9(95); + sub_wire2(8, 96) <= sub_wire9(96); + sub_wire2(8, 97) <= sub_wire9(97); + sub_wire2(8, 98) <= sub_wire9(98); + sub_wire2(8, 99) <= sub_wire9(99); + sub_wire2(8, 100) <= sub_wire9(100); + sub_wire2(8, 101) <= sub_wire9(101); + sub_wire2(8, 102) <= sub_wire9(102); + sub_wire2(8, 103) <= sub_wire9(103); + sub_wire2(8, 104) <= sub_wire9(104); + sub_wire2(8, 105) <= sub_wire9(105); + sub_wire2(8, 106) <= sub_wire9(106); + sub_wire2(8, 107) <= sub_wire9(107); + sub_wire2(8, 108) <= sub_wire9(108); + sub_wire2(8, 109) <= sub_wire9(109); + sub_wire2(8, 110) <= sub_wire9(110); + sub_wire2(8, 111) <= sub_wire9(111); + sub_wire2(8, 112) <= sub_wire9(112); + sub_wire2(8, 113) <= sub_wire9(113); + sub_wire2(8, 114) <= sub_wire9(114); + sub_wire2(8, 115) <= sub_wire9(115); + sub_wire2(8, 116) <= sub_wire9(116); + sub_wire2(8, 117) <= sub_wire9(117); + sub_wire2(8, 118) <= sub_wire9(118); + sub_wire2(8, 119) <= sub_wire9(119); + sub_wire2(8, 120) <= sub_wire9(120); + sub_wire2(8, 121) <= sub_wire9(121); + sub_wire2(8, 122) <= sub_wire9(122); + sub_wire2(8, 123) <= sub_wire9(123); + sub_wire2(8, 124) <= sub_wire9(124); + sub_wire2(8, 125) <= sub_wire9(125); + sub_wire2(8, 126) <= sub_wire9(126); + sub_wire2(8, 127) <= sub_wire9(127); + sub_wire2(7, 0) <= sub_wire10(0); + sub_wire2(7, 1) <= sub_wire10(1); + sub_wire2(7, 2) <= sub_wire10(2); + sub_wire2(7, 3) <= sub_wire10(3); + sub_wire2(7, 4) <= sub_wire10(4); + sub_wire2(7, 5) <= sub_wire10(5); + sub_wire2(7, 6) <= sub_wire10(6); + sub_wire2(7, 7) <= sub_wire10(7); + sub_wire2(7, 8) <= sub_wire10(8); + sub_wire2(7, 9) <= sub_wire10(9); + sub_wire2(7, 10) <= sub_wire10(10); + sub_wire2(7, 11) <= sub_wire10(11); + sub_wire2(7, 12) <= sub_wire10(12); + sub_wire2(7, 13) <= sub_wire10(13); + sub_wire2(7, 14) <= sub_wire10(14); + sub_wire2(7, 15) <= sub_wire10(15); + sub_wire2(7, 16) <= sub_wire10(16); + sub_wire2(7, 17) <= sub_wire10(17); + sub_wire2(7, 18) <= sub_wire10(18); + sub_wire2(7, 19) <= sub_wire10(19); + sub_wire2(7, 20) <= sub_wire10(20); + sub_wire2(7, 21) <= sub_wire10(21); + sub_wire2(7, 22) <= sub_wire10(22); + sub_wire2(7, 23) <= sub_wire10(23); + sub_wire2(7, 24) <= sub_wire10(24); + sub_wire2(7, 25) <= sub_wire10(25); + sub_wire2(7, 26) <= sub_wire10(26); + sub_wire2(7, 27) <= sub_wire10(27); + sub_wire2(7, 28) <= sub_wire10(28); + sub_wire2(7, 29) <= sub_wire10(29); + sub_wire2(7, 30) <= sub_wire10(30); + sub_wire2(7, 31) <= sub_wire10(31); + sub_wire2(7, 32) <= sub_wire10(32); + sub_wire2(7, 33) <= sub_wire10(33); + sub_wire2(7, 34) <= sub_wire10(34); + sub_wire2(7, 35) <= sub_wire10(35); + sub_wire2(7, 36) <= sub_wire10(36); + sub_wire2(7, 37) <= sub_wire10(37); + sub_wire2(7, 38) <= sub_wire10(38); + sub_wire2(7, 39) <= sub_wire10(39); + sub_wire2(7, 40) <= sub_wire10(40); + sub_wire2(7, 41) <= sub_wire10(41); + sub_wire2(7, 42) <= sub_wire10(42); + sub_wire2(7, 43) <= sub_wire10(43); + sub_wire2(7, 44) <= sub_wire10(44); + sub_wire2(7, 45) <= sub_wire10(45); + sub_wire2(7, 46) <= sub_wire10(46); + sub_wire2(7, 47) <= sub_wire10(47); + sub_wire2(7, 48) <= sub_wire10(48); + sub_wire2(7, 49) <= sub_wire10(49); + sub_wire2(7, 50) <= sub_wire10(50); + sub_wire2(7, 51) <= sub_wire10(51); + sub_wire2(7, 52) <= sub_wire10(52); + sub_wire2(7, 53) <= sub_wire10(53); + sub_wire2(7, 54) <= sub_wire10(54); + sub_wire2(7, 55) <= sub_wire10(55); + sub_wire2(7, 56) <= sub_wire10(56); + sub_wire2(7, 57) <= sub_wire10(57); + sub_wire2(7, 58) <= sub_wire10(58); + sub_wire2(7, 59) <= sub_wire10(59); + sub_wire2(7, 60) <= sub_wire10(60); + sub_wire2(7, 61) <= sub_wire10(61); + sub_wire2(7, 62) <= sub_wire10(62); + sub_wire2(7, 63) <= sub_wire10(63); + sub_wire2(7, 64) <= sub_wire10(64); + sub_wire2(7, 65) <= sub_wire10(65); + sub_wire2(7, 66) <= sub_wire10(66); + sub_wire2(7, 67) <= sub_wire10(67); + sub_wire2(7, 68) <= sub_wire10(68); + sub_wire2(7, 69) <= sub_wire10(69); + sub_wire2(7, 70) <= sub_wire10(70); + sub_wire2(7, 71) <= sub_wire10(71); + sub_wire2(7, 72) <= sub_wire10(72); + sub_wire2(7, 73) <= sub_wire10(73); + sub_wire2(7, 74) <= sub_wire10(74); + sub_wire2(7, 75) <= sub_wire10(75); + sub_wire2(7, 76) <= sub_wire10(76); + sub_wire2(7, 77) <= sub_wire10(77); + sub_wire2(7, 78) <= sub_wire10(78); + sub_wire2(7, 79) <= sub_wire10(79); + sub_wire2(7, 80) <= sub_wire10(80); + sub_wire2(7, 81) <= sub_wire10(81); + sub_wire2(7, 82) <= sub_wire10(82); + sub_wire2(7, 83) <= sub_wire10(83); + sub_wire2(7, 84) <= sub_wire10(84); + sub_wire2(7, 85) <= sub_wire10(85); + sub_wire2(7, 86) <= sub_wire10(86); + sub_wire2(7, 87) <= sub_wire10(87); + sub_wire2(7, 88) <= sub_wire10(88); + sub_wire2(7, 89) <= sub_wire10(89); + sub_wire2(7, 90) <= sub_wire10(90); + sub_wire2(7, 91) <= sub_wire10(91); + sub_wire2(7, 92) <= sub_wire10(92); + sub_wire2(7, 93) <= sub_wire10(93); + sub_wire2(7, 94) <= sub_wire10(94); + sub_wire2(7, 95) <= sub_wire10(95); + sub_wire2(7, 96) <= sub_wire10(96); + sub_wire2(7, 97) <= sub_wire10(97); + sub_wire2(7, 98) <= sub_wire10(98); + sub_wire2(7, 99) <= sub_wire10(99); + sub_wire2(7, 100) <= sub_wire10(100); + sub_wire2(7, 101) <= sub_wire10(101); + sub_wire2(7, 102) <= sub_wire10(102); + sub_wire2(7, 103) <= sub_wire10(103); + sub_wire2(7, 104) <= sub_wire10(104); + sub_wire2(7, 105) <= sub_wire10(105); + sub_wire2(7, 106) <= sub_wire10(106); + sub_wire2(7, 107) <= sub_wire10(107); + sub_wire2(7, 108) <= sub_wire10(108); + sub_wire2(7, 109) <= sub_wire10(109); + sub_wire2(7, 110) <= sub_wire10(110); + sub_wire2(7, 111) <= sub_wire10(111); + sub_wire2(7, 112) <= sub_wire10(112); + sub_wire2(7, 113) <= sub_wire10(113); + sub_wire2(7, 114) <= sub_wire10(114); + sub_wire2(7, 115) <= sub_wire10(115); + sub_wire2(7, 116) <= sub_wire10(116); + sub_wire2(7, 117) <= sub_wire10(117); + sub_wire2(7, 118) <= sub_wire10(118); + sub_wire2(7, 119) <= sub_wire10(119); + sub_wire2(7, 120) <= sub_wire10(120); + sub_wire2(7, 121) <= sub_wire10(121); + sub_wire2(7, 122) <= sub_wire10(122); + sub_wire2(7, 123) <= sub_wire10(123); + sub_wire2(7, 124) <= sub_wire10(124); + sub_wire2(7, 125) <= sub_wire10(125); + sub_wire2(7, 126) <= sub_wire10(126); + sub_wire2(7, 127) <= sub_wire10(127); + sub_wire2(6, 0) <= sub_wire11(0); + sub_wire2(6, 1) <= sub_wire11(1); + sub_wire2(6, 2) <= sub_wire11(2); + sub_wire2(6, 3) <= sub_wire11(3); + sub_wire2(6, 4) <= sub_wire11(4); + sub_wire2(6, 5) <= sub_wire11(5); + sub_wire2(6, 6) <= sub_wire11(6); + sub_wire2(6, 7) <= sub_wire11(7); + sub_wire2(6, 8) <= sub_wire11(8); + sub_wire2(6, 9) <= sub_wire11(9); + sub_wire2(6, 10) <= sub_wire11(10); + sub_wire2(6, 11) <= sub_wire11(11); + sub_wire2(6, 12) <= sub_wire11(12); + sub_wire2(6, 13) <= sub_wire11(13); + sub_wire2(6, 14) <= sub_wire11(14); + sub_wire2(6, 15) <= sub_wire11(15); + sub_wire2(6, 16) <= sub_wire11(16); + sub_wire2(6, 17) <= sub_wire11(17); + sub_wire2(6, 18) <= sub_wire11(18); + sub_wire2(6, 19) <= sub_wire11(19); + sub_wire2(6, 20) <= sub_wire11(20); + sub_wire2(6, 21) <= sub_wire11(21); + sub_wire2(6, 22) <= sub_wire11(22); + sub_wire2(6, 23) <= sub_wire11(23); + sub_wire2(6, 24) <= sub_wire11(24); + sub_wire2(6, 25) <= sub_wire11(25); + sub_wire2(6, 26) <= sub_wire11(26); + sub_wire2(6, 27) <= sub_wire11(27); + sub_wire2(6, 28) <= sub_wire11(28); + sub_wire2(6, 29) <= sub_wire11(29); + sub_wire2(6, 30) <= sub_wire11(30); + sub_wire2(6, 31) <= sub_wire11(31); + sub_wire2(6, 32) <= sub_wire11(32); + sub_wire2(6, 33) <= sub_wire11(33); + sub_wire2(6, 34) <= sub_wire11(34); + sub_wire2(6, 35) <= sub_wire11(35); + sub_wire2(6, 36) <= sub_wire11(36); + sub_wire2(6, 37) <= sub_wire11(37); + sub_wire2(6, 38) <= sub_wire11(38); + sub_wire2(6, 39) <= sub_wire11(39); + sub_wire2(6, 40) <= sub_wire11(40); + sub_wire2(6, 41) <= sub_wire11(41); + sub_wire2(6, 42) <= sub_wire11(42); + sub_wire2(6, 43) <= sub_wire11(43); + sub_wire2(6, 44) <= sub_wire11(44); + sub_wire2(6, 45) <= sub_wire11(45); + sub_wire2(6, 46) <= sub_wire11(46); + sub_wire2(6, 47) <= sub_wire11(47); + sub_wire2(6, 48) <= sub_wire11(48); + sub_wire2(6, 49) <= sub_wire11(49); + sub_wire2(6, 50) <= sub_wire11(50); + sub_wire2(6, 51) <= sub_wire11(51); + sub_wire2(6, 52) <= sub_wire11(52); + sub_wire2(6, 53) <= sub_wire11(53); + sub_wire2(6, 54) <= sub_wire11(54); + sub_wire2(6, 55) <= sub_wire11(55); + sub_wire2(6, 56) <= sub_wire11(56); + sub_wire2(6, 57) <= sub_wire11(57); + sub_wire2(6, 58) <= sub_wire11(58); + sub_wire2(6, 59) <= sub_wire11(59); + sub_wire2(6, 60) <= sub_wire11(60); + sub_wire2(6, 61) <= sub_wire11(61); + sub_wire2(6, 62) <= sub_wire11(62); + sub_wire2(6, 63) <= sub_wire11(63); + sub_wire2(6, 64) <= sub_wire11(64); + sub_wire2(6, 65) <= sub_wire11(65); + sub_wire2(6, 66) <= sub_wire11(66); + sub_wire2(6, 67) <= sub_wire11(67); + sub_wire2(6, 68) <= sub_wire11(68); + sub_wire2(6, 69) <= sub_wire11(69); + sub_wire2(6, 70) <= sub_wire11(70); + sub_wire2(6, 71) <= sub_wire11(71); + sub_wire2(6, 72) <= sub_wire11(72); + sub_wire2(6, 73) <= sub_wire11(73); + sub_wire2(6, 74) <= sub_wire11(74); + sub_wire2(6, 75) <= sub_wire11(75); + sub_wire2(6, 76) <= sub_wire11(76); + sub_wire2(6, 77) <= sub_wire11(77); + sub_wire2(6, 78) <= sub_wire11(78); + sub_wire2(6, 79) <= sub_wire11(79); + sub_wire2(6, 80) <= sub_wire11(80); + sub_wire2(6, 81) <= sub_wire11(81); + sub_wire2(6, 82) <= sub_wire11(82); + sub_wire2(6, 83) <= sub_wire11(83); + sub_wire2(6, 84) <= sub_wire11(84); + sub_wire2(6, 85) <= sub_wire11(85); + sub_wire2(6, 86) <= sub_wire11(86); + sub_wire2(6, 87) <= sub_wire11(87); + sub_wire2(6, 88) <= sub_wire11(88); + sub_wire2(6, 89) <= sub_wire11(89); + sub_wire2(6, 90) <= sub_wire11(90); + sub_wire2(6, 91) <= sub_wire11(91); + sub_wire2(6, 92) <= sub_wire11(92); + sub_wire2(6, 93) <= sub_wire11(93); + sub_wire2(6, 94) <= sub_wire11(94); + sub_wire2(6, 95) <= sub_wire11(95); + sub_wire2(6, 96) <= sub_wire11(96); + sub_wire2(6, 97) <= sub_wire11(97); + sub_wire2(6, 98) <= sub_wire11(98); + sub_wire2(6, 99) <= sub_wire11(99); + sub_wire2(6, 100) <= sub_wire11(100); + sub_wire2(6, 101) <= sub_wire11(101); + sub_wire2(6, 102) <= sub_wire11(102); + sub_wire2(6, 103) <= sub_wire11(103); + sub_wire2(6, 104) <= sub_wire11(104); + sub_wire2(6, 105) <= sub_wire11(105); + sub_wire2(6, 106) <= sub_wire11(106); + sub_wire2(6, 107) <= sub_wire11(107); + sub_wire2(6, 108) <= sub_wire11(108); + sub_wire2(6, 109) <= sub_wire11(109); + sub_wire2(6, 110) <= sub_wire11(110); + sub_wire2(6, 111) <= sub_wire11(111); + sub_wire2(6, 112) <= sub_wire11(112); + sub_wire2(6, 113) <= sub_wire11(113); + sub_wire2(6, 114) <= sub_wire11(114); + sub_wire2(6, 115) <= sub_wire11(115); + sub_wire2(6, 116) <= sub_wire11(116); + sub_wire2(6, 117) <= sub_wire11(117); + sub_wire2(6, 118) <= sub_wire11(118); + sub_wire2(6, 119) <= sub_wire11(119); + sub_wire2(6, 120) <= sub_wire11(120); + sub_wire2(6, 121) <= sub_wire11(121); + sub_wire2(6, 122) <= sub_wire11(122); + sub_wire2(6, 123) <= sub_wire11(123); + sub_wire2(6, 124) <= sub_wire11(124); + sub_wire2(6, 125) <= sub_wire11(125); + sub_wire2(6, 126) <= sub_wire11(126); + sub_wire2(6, 127) <= sub_wire11(127); + sub_wire2(5, 0) <= sub_wire12(0); + sub_wire2(5, 1) <= sub_wire12(1); + sub_wire2(5, 2) <= sub_wire12(2); + sub_wire2(5, 3) <= sub_wire12(3); + sub_wire2(5, 4) <= sub_wire12(4); + sub_wire2(5, 5) <= sub_wire12(5); + sub_wire2(5, 6) <= sub_wire12(6); + sub_wire2(5, 7) <= sub_wire12(7); + sub_wire2(5, 8) <= sub_wire12(8); + sub_wire2(5, 9) <= sub_wire12(9); + sub_wire2(5, 10) <= sub_wire12(10); + sub_wire2(5, 11) <= sub_wire12(11); + sub_wire2(5, 12) <= sub_wire12(12); + sub_wire2(5, 13) <= sub_wire12(13); + sub_wire2(5, 14) <= sub_wire12(14); + sub_wire2(5, 15) <= sub_wire12(15); + sub_wire2(5, 16) <= sub_wire12(16); + sub_wire2(5, 17) <= sub_wire12(17); + sub_wire2(5, 18) <= sub_wire12(18); + sub_wire2(5, 19) <= sub_wire12(19); + sub_wire2(5, 20) <= sub_wire12(20); + sub_wire2(5, 21) <= sub_wire12(21); + sub_wire2(5, 22) <= sub_wire12(22); + sub_wire2(5, 23) <= sub_wire12(23); + sub_wire2(5, 24) <= sub_wire12(24); + sub_wire2(5, 25) <= sub_wire12(25); + sub_wire2(5, 26) <= sub_wire12(26); + sub_wire2(5, 27) <= sub_wire12(27); + sub_wire2(5, 28) <= sub_wire12(28); + sub_wire2(5, 29) <= sub_wire12(29); + sub_wire2(5, 30) <= sub_wire12(30); + sub_wire2(5, 31) <= sub_wire12(31); + sub_wire2(5, 32) <= sub_wire12(32); + sub_wire2(5, 33) <= sub_wire12(33); + sub_wire2(5, 34) <= sub_wire12(34); + sub_wire2(5, 35) <= sub_wire12(35); + sub_wire2(5, 36) <= sub_wire12(36); + sub_wire2(5, 37) <= sub_wire12(37); + sub_wire2(5, 38) <= sub_wire12(38); + sub_wire2(5, 39) <= sub_wire12(39); + sub_wire2(5, 40) <= sub_wire12(40); + sub_wire2(5, 41) <= sub_wire12(41); + sub_wire2(5, 42) <= sub_wire12(42); + sub_wire2(5, 43) <= sub_wire12(43); + sub_wire2(5, 44) <= sub_wire12(44); + sub_wire2(5, 45) <= sub_wire12(45); + sub_wire2(5, 46) <= sub_wire12(46); + sub_wire2(5, 47) <= sub_wire12(47); + sub_wire2(5, 48) <= sub_wire12(48); + sub_wire2(5, 49) <= sub_wire12(49); + sub_wire2(5, 50) <= sub_wire12(50); + sub_wire2(5, 51) <= sub_wire12(51); + sub_wire2(5, 52) <= sub_wire12(52); + sub_wire2(5, 53) <= sub_wire12(53); + sub_wire2(5, 54) <= sub_wire12(54); + sub_wire2(5, 55) <= sub_wire12(55); + sub_wire2(5, 56) <= sub_wire12(56); + sub_wire2(5, 57) <= sub_wire12(57); + sub_wire2(5, 58) <= sub_wire12(58); + sub_wire2(5, 59) <= sub_wire12(59); + sub_wire2(5, 60) <= sub_wire12(60); + sub_wire2(5, 61) <= sub_wire12(61); + sub_wire2(5, 62) <= sub_wire12(62); + sub_wire2(5, 63) <= sub_wire12(63); + sub_wire2(5, 64) <= sub_wire12(64); + sub_wire2(5, 65) <= sub_wire12(65); + sub_wire2(5, 66) <= sub_wire12(66); + sub_wire2(5, 67) <= sub_wire12(67); + sub_wire2(5, 68) <= sub_wire12(68); + sub_wire2(5, 69) <= sub_wire12(69); + sub_wire2(5, 70) <= sub_wire12(70); + sub_wire2(5, 71) <= sub_wire12(71); + sub_wire2(5, 72) <= sub_wire12(72); + sub_wire2(5, 73) <= sub_wire12(73); + sub_wire2(5, 74) <= sub_wire12(74); + sub_wire2(5, 75) <= sub_wire12(75); + sub_wire2(5, 76) <= sub_wire12(76); + sub_wire2(5, 77) <= sub_wire12(77); + sub_wire2(5, 78) <= sub_wire12(78); + sub_wire2(5, 79) <= sub_wire12(79); + sub_wire2(5, 80) <= sub_wire12(80); + sub_wire2(5, 81) <= sub_wire12(81); + sub_wire2(5, 82) <= sub_wire12(82); + sub_wire2(5, 83) <= sub_wire12(83); + sub_wire2(5, 84) <= sub_wire12(84); + sub_wire2(5, 85) <= sub_wire12(85); + sub_wire2(5, 86) <= sub_wire12(86); + sub_wire2(5, 87) <= sub_wire12(87); + sub_wire2(5, 88) <= sub_wire12(88); + sub_wire2(5, 89) <= sub_wire12(89); + sub_wire2(5, 90) <= sub_wire12(90); + sub_wire2(5, 91) <= sub_wire12(91); + sub_wire2(5, 92) <= sub_wire12(92); + sub_wire2(5, 93) <= sub_wire12(93); + sub_wire2(5, 94) <= sub_wire12(94); + sub_wire2(5, 95) <= sub_wire12(95); + sub_wire2(5, 96) <= sub_wire12(96); + sub_wire2(5, 97) <= sub_wire12(97); + sub_wire2(5, 98) <= sub_wire12(98); + sub_wire2(5, 99) <= sub_wire12(99); + sub_wire2(5, 100) <= sub_wire12(100); + sub_wire2(5, 101) <= sub_wire12(101); + sub_wire2(5, 102) <= sub_wire12(102); + sub_wire2(5, 103) <= sub_wire12(103); + sub_wire2(5, 104) <= sub_wire12(104); + sub_wire2(5, 105) <= sub_wire12(105); + sub_wire2(5, 106) <= sub_wire12(106); + sub_wire2(5, 107) <= sub_wire12(107); + sub_wire2(5, 108) <= sub_wire12(108); + sub_wire2(5, 109) <= sub_wire12(109); + sub_wire2(5, 110) <= sub_wire12(110); + sub_wire2(5, 111) <= sub_wire12(111); + sub_wire2(5, 112) <= sub_wire12(112); + sub_wire2(5, 113) <= sub_wire12(113); + sub_wire2(5, 114) <= sub_wire12(114); + sub_wire2(5, 115) <= sub_wire12(115); + sub_wire2(5, 116) <= sub_wire12(116); + sub_wire2(5, 117) <= sub_wire12(117); + sub_wire2(5, 118) <= sub_wire12(118); + sub_wire2(5, 119) <= sub_wire12(119); + sub_wire2(5, 120) <= sub_wire12(120); + sub_wire2(5, 121) <= sub_wire12(121); + sub_wire2(5, 122) <= sub_wire12(122); + sub_wire2(5, 123) <= sub_wire12(123); + sub_wire2(5, 124) <= sub_wire12(124); + sub_wire2(5, 125) <= sub_wire12(125); + sub_wire2(5, 126) <= sub_wire12(126); + sub_wire2(5, 127) <= sub_wire12(127); + sub_wire2(4, 0) <= sub_wire13(0); + sub_wire2(4, 1) <= sub_wire13(1); + sub_wire2(4, 2) <= sub_wire13(2); + sub_wire2(4, 3) <= sub_wire13(3); + sub_wire2(4, 4) <= sub_wire13(4); + sub_wire2(4, 5) <= sub_wire13(5); + sub_wire2(4, 6) <= sub_wire13(6); + sub_wire2(4, 7) <= sub_wire13(7); + sub_wire2(4, 8) <= sub_wire13(8); + sub_wire2(4, 9) <= sub_wire13(9); + sub_wire2(4, 10) <= sub_wire13(10); + sub_wire2(4, 11) <= sub_wire13(11); + sub_wire2(4, 12) <= sub_wire13(12); + sub_wire2(4, 13) <= sub_wire13(13); + sub_wire2(4, 14) <= sub_wire13(14); + sub_wire2(4, 15) <= sub_wire13(15); + sub_wire2(4, 16) <= sub_wire13(16); + sub_wire2(4, 17) <= sub_wire13(17); + sub_wire2(4, 18) <= sub_wire13(18); + sub_wire2(4, 19) <= sub_wire13(19); + sub_wire2(4, 20) <= sub_wire13(20); + sub_wire2(4, 21) <= sub_wire13(21); + sub_wire2(4, 22) <= sub_wire13(22); + sub_wire2(4, 23) <= sub_wire13(23); + sub_wire2(4, 24) <= sub_wire13(24); + sub_wire2(4, 25) <= sub_wire13(25); + sub_wire2(4, 26) <= sub_wire13(26); + sub_wire2(4, 27) <= sub_wire13(27); + sub_wire2(4, 28) <= sub_wire13(28); + sub_wire2(4, 29) <= sub_wire13(29); + sub_wire2(4, 30) <= sub_wire13(30); + sub_wire2(4, 31) <= sub_wire13(31); + sub_wire2(4, 32) <= sub_wire13(32); + sub_wire2(4, 33) <= sub_wire13(33); + sub_wire2(4, 34) <= sub_wire13(34); + sub_wire2(4, 35) <= sub_wire13(35); + sub_wire2(4, 36) <= sub_wire13(36); + sub_wire2(4, 37) <= sub_wire13(37); + sub_wire2(4, 38) <= sub_wire13(38); + sub_wire2(4, 39) <= sub_wire13(39); + sub_wire2(4, 40) <= sub_wire13(40); + sub_wire2(4, 41) <= sub_wire13(41); + sub_wire2(4, 42) <= sub_wire13(42); + sub_wire2(4, 43) <= sub_wire13(43); + sub_wire2(4, 44) <= sub_wire13(44); + sub_wire2(4, 45) <= sub_wire13(45); + sub_wire2(4, 46) <= sub_wire13(46); + sub_wire2(4, 47) <= sub_wire13(47); + sub_wire2(4, 48) <= sub_wire13(48); + sub_wire2(4, 49) <= sub_wire13(49); + sub_wire2(4, 50) <= sub_wire13(50); + sub_wire2(4, 51) <= sub_wire13(51); + sub_wire2(4, 52) <= sub_wire13(52); + sub_wire2(4, 53) <= sub_wire13(53); + sub_wire2(4, 54) <= sub_wire13(54); + sub_wire2(4, 55) <= sub_wire13(55); + sub_wire2(4, 56) <= sub_wire13(56); + sub_wire2(4, 57) <= sub_wire13(57); + sub_wire2(4, 58) <= sub_wire13(58); + sub_wire2(4, 59) <= sub_wire13(59); + sub_wire2(4, 60) <= sub_wire13(60); + sub_wire2(4, 61) <= sub_wire13(61); + sub_wire2(4, 62) <= sub_wire13(62); + sub_wire2(4, 63) <= sub_wire13(63); + sub_wire2(4, 64) <= sub_wire13(64); + sub_wire2(4, 65) <= sub_wire13(65); + sub_wire2(4, 66) <= sub_wire13(66); + sub_wire2(4, 67) <= sub_wire13(67); + sub_wire2(4, 68) <= sub_wire13(68); + sub_wire2(4, 69) <= sub_wire13(69); + sub_wire2(4, 70) <= sub_wire13(70); + sub_wire2(4, 71) <= sub_wire13(71); + sub_wire2(4, 72) <= sub_wire13(72); + sub_wire2(4, 73) <= sub_wire13(73); + sub_wire2(4, 74) <= sub_wire13(74); + sub_wire2(4, 75) <= sub_wire13(75); + sub_wire2(4, 76) <= sub_wire13(76); + sub_wire2(4, 77) <= sub_wire13(77); + sub_wire2(4, 78) <= sub_wire13(78); + sub_wire2(4, 79) <= sub_wire13(79); + sub_wire2(4, 80) <= sub_wire13(80); + sub_wire2(4, 81) <= sub_wire13(81); + sub_wire2(4, 82) <= sub_wire13(82); + sub_wire2(4, 83) <= sub_wire13(83); + sub_wire2(4, 84) <= sub_wire13(84); + sub_wire2(4, 85) <= sub_wire13(85); + sub_wire2(4, 86) <= sub_wire13(86); + sub_wire2(4, 87) <= sub_wire13(87); + sub_wire2(4, 88) <= sub_wire13(88); + sub_wire2(4, 89) <= sub_wire13(89); + sub_wire2(4, 90) <= sub_wire13(90); + sub_wire2(4, 91) <= sub_wire13(91); + sub_wire2(4, 92) <= sub_wire13(92); + sub_wire2(4, 93) <= sub_wire13(93); + sub_wire2(4, 94) <= sub_wire13(94); + sub_wire2(4, 95) <= sub_wire13(95); + sub_wire2(4, 96) <= sub_wire13(96); + sub_wire2(4, 97) <= sub_wire13(97); + sub_wire2(4, 98) <= sub_wire13(98); + sub_wire2(4, 99) <= sub_wire13(99); + sub_wire2(4, 100) <= sub_wire13(100); + sub_wire2(4, 101) <= sub_wire13(101); + sub_wire2(4, 102) <= sub_wire13(102); + sub_wire2(4, 103) <= sub_wire13(103); + sub_wire2(4, 104) <= sub_wire13(104); + sub_wire2(4, 105) <= sub_wire13(105); + sub_wire2(4, 106) <= sub_wire13(106); + sub_wire2(4, 107) <= sub_wire13(107); + sub_wire2(4, 108) <= sub_wire13(108); + sub_wire2(4, 109) <= sub_wire13(109); + sub_wire2(4, 110) <= sub_wire13(110); + sub_wire2(4, 111) <= sub_wire13(111); + sub_wire2(4, 112) <= sub_wire13(112); + sub_wire2(4, 113) <= sub_wire13(113); + sub_wire2(4, 114) <= sub_wire13(114); + sub_wire2(4, 115) <= sub_wire13(115); + sub_wire2(4, 116) <= sub_wire13(116); + sub_wire2(4, 117) <= sub_wire13(117); + sub_wire2(4, 118) <= sub_wire13(118); + sub_wire2(4, 119) <= sub_wire13(119); + sub_wire2(4, 120) <= sub_wire13(120); + sub_wire2(4, 121) <= sub_wire13(121); + sub_wire2(4, 122) <= sub_wire13(122); + sub_wire2(4, 123) <= sub_wire13(123); + sub_wire2(4, 124) <= sub_wire13(124); + sub_wire2(4, 125) <= sub_wire13(125); + sub_wire2(4, 126) <= sub_wire13(126); + sub_wire2(4, 127) <= sub_wire13(127); + sub_wire2(3, 0) <= sub_wire14(0); + sub_wire2(3, 1) <= sub_wire14(1); + sub_wire2(3, 2) <= sub_wire14(2); + sub_wire2(3, 3) <= sub_wire14(3); + sub_wire2(3, 4) <= sub_wire14(4); + sub_wire2(3, 5) <= sub_wire14(5); + sub_wire2(3, 6) <= sub_wire14(6); + sub_wire2(3, 7) <= sub_wire14(7); + sub_wire2(3, 8) <= sub_wire14(8); + sub_wire2(3, 9) <= sub_wire14(9); + sub_wire2(3, 10) <= sub_wire14(10); + sub_wire2(3, 11) <= sub_wire14(11); + sub_wire2(3, 12) <= sub_wire14(12); + sub_wire2(3, 13) <= sub_wire14(13); + sub_wire2(3, 14) <= sub_wire14(14); + sub_wire2(3, 15) <= sub_wire14(15); + sub_wire2(3, 16) <= sub_wire14(16); + sub_wire2(3, 17) <= sub_wire14(17); + sub_wire2(3, 18) <= sub_wire14(18); + sub_wire2(3, 19) <= sub_wire14(19); + sub_wire2(3, 20) <= sub_wire14(20); + sub_wire2(3, 21) <= sub_wire14(21); + sub_wire2(3, 22) <= sub_wire14(22); + sub_wire2(3, 23) <= sub_wire14(23); + sub_wire2(3, 24) <= sub_wire14(24); + sub_wire2(3, 25) <= sub_wire14(25); + sub_wire2(3, 26) <= sub_wire14(26); + sub_wire2(3, 27) <= sub_wire14(27); + sub_wire2(3, 28) <= sub_wire14(28); + sub_wire2(3, 29) <= sub_wire14(29); + sub_wire2(3, 30) <= sub_wire14(30); + sub_wire2(3, 31) <= sub_wire14(31); + sub_wire2(3, 32) <= sub_wire14(32); + sub_wire2(3, 33) <= sub_wire14(33); + sub_wire2(3, 34) <= sub_wire14(34); + sub_wire2(3, 35) <= sub_wire14(35); + sub_wire2(3, 36) <= sub_wire14(36); + sub_wire2(3, 37) <= sub_wire14(37); + sub_wire2(3, 38) <= sub_wire14(38); + sub_wire2(3, 39) <= sub_wire14(39); + sub_wire2(3, 40) <= sub_wire14(40); + sub_wire2(3, 41) <= sub_wire14(41); + sub_wire2(3, 42) <= sub_wire14(42); + sub_wire2(3, 43) <= sub_wire14(43); + sub_wire2(3, 44) <= sub_wire14(44); + sub_wire2(3, 45) <= sub_wire14(45); + sub_wire2(3, 46) <= sub_wire14(46); + sub_wire2(3, 47) <= sub_wire14(47); + sub_wire2(3, 48) <= sub_wire14(48); + sub_wire2(3, 49) <= sub_wire14(49); + sub_wire2(3, 50) <= sub_wire14(50); + sub_wire2(3, 51) <= sub_wire14(51); + sub_wire2(3, 52) <= sub_wire14(52); + sub_wire2(3, 53) <= sub_wire14(53); + sub_wire2(3, 54) <= sub_wire14(54); + sub_wire2(3, 55) <= sub_wire14(55); + sub_wire2(3, 56) <= sub_wire14(56); + sub_wire2(3, 57) <= sub_wire14(57); + sub_wire2(3, 58) <= sub_wire14(58); + sub_wire2(3, 59) <= sub_wire14(59); + sub_wire2(3, 60) <= sub_wire14(60); + sub_wire2(3, 61) <= sub_wire14(61); + sub_wire2(3, 62) <= sub_wire14(62); + sub_wire2(3, 63) <= sub_wire14(63); + sub_wire2(3, 64) <= sub_wire14(64); + sub_wire2(3, 65) <= sub_wire14(65); + sub_wire2(3, 66) <= sub_wire14(66); + sub_wire2(3, 67) <= sub_wire14(67); + sub_wire2(3, 68) <= sub_wire14(68); + sub_wire2(3, 69) <= sub_wire14(69); + sub_wire2(3, 70) <= sub_wire14(70); + sub_wire2(3, 71) <= sub_wire14(71); + sub_wire2(3, 72) <= sub_wire14(72); + sub_wire2(3, 73) <= sub_wire14(73); + sub_wire2(3, 74) <= sub_wire14(74); + sub_wire2(3, 75) <= sub_wire14(75); + sub_wire2(3, 76) <= sub_wire14(76); + sub_wire2(3, 77) <= sub_wire14(77); + sub_wire2(3, 78) <= sub_wire14(78); + sub_wire2(3, 79) <= sub_wire14(79); + sub_wire2(3, 80) <= sub_wire14(80); + sub_wire2(3, 81) <= sub_wire14(81); + sub_wire2(3, 82) <= sub_wire14(82); + sub_wire2(3, 83) <= sub_wire14(83); + sub_wire2(3, 84) <= sub_wire14(84); + sub_wire2(3, 85) <= sub_wire14(85); + sub_wire2(3, 86) <= sub_wire14(86); + sub_wire2(3, 87) <= sub_wire14(87); + sub_wire2(3, 88) <= sub_wire14(88); + sub_wire2(3, 89) <= sub_wire14(89); + sub_wire2(3, 90) <= sub_wire14(90); + sub_wire2(3, 91) <= sub_wire14(91); + sub_wire2(3, 92) <= sub_wire14(92); + sub_wire2(3, 93) <= sub_wire14(93); + sub_wire2(3, 94) <= sub_wire14(94); + sub_wire2(3, 95) <= sub_wire14(95); + sub_wire2(3, 96) <= sub_wire14(96); + sub_wire2(3, 97) <= sub_wire14(97); + sub_wire2(3, 98) <= sub_wire14(98); + sub_wire2(3, 99) <= sub_wire14(99); + sub_wire2(3, 100) <= sub_wire14(100); + sub_wire2(3, 101) <= sub_wire14(101); + sub_wire2(3, 102) <= sub_wire14(102); + sub_wire2(3, 103) <= sub_wire14(103); + sub_wire2(3, 104) <= sub_wire14(104); + sub_wire2(3, 105) <= sub_wire14(105); + sub_wire2(3, 106) <= sub_wire14(106); + sub_wire2(3, 107) <= sub_wire14(107); + sub_wire2(3, 108) <= sub_wire14(108); + sub_wire2(3, 109) <= sub_wire14(109); + sub_wire2(3, 110) <= sub_wire14(110); + sub_wire2(3, 111) <= sub_wire14(111); + sub_wire2(3, 112) <= sub_wire14(112); + sub_wire2(3, 113) <= sub_wire14(113); + sub_wire2(3, 114) <= sub_wire14(114); + sub_wire2(3, 115) <= sub_wire14(115); + sub_wire2(3, 116) <= sub_wire14(116); + sub_wire2(3, 117) <= sub_wire14(117); + sub_wire2(3, 118) <= sub_wire14(118); + sub_wire2(3, 119) <= sub_wire14(119); + sub_wire2(3, 120) <= sub_wire14(120); + sub_wire2(3, 121) <= sub_wire14(121); + sub_wire2(3, 122) <= sub_wire14(122); + sub_wire2(3, 123) <= sub_wire14(123); + sub_wire2(3, 124) <= sub_wire14(124); + sub_wire2(3, 125) <= sub_wire14(125); + sub_wire2(3, 126) <= sub_wire14(126); + sub_wire2(3, 127) <= sub_wire14(127); + sub_wire2(2, 0) <= sub_wire15(0); + sub_wire2(2, 1) <= sub_wire15(1); + sub_wire2(2, 2) <= sub_wire15(2); + sub_wire2(2, 3) <= sub_wire15(3); + sub_wire2(2, 4) <= sub_wire15(4); + sub_wire2(2, 5) <= sub_wire15(5); + sub_wire2(2, 6) <= sub_wire15(6); + sub_wire2(2, 7) <= sub_wire15(7); + sub_wire2(2, 8) <= sub_wire15(8); + sub_wire2(2, 9) <= sub_wire15(9); + sub_wire2(2, 10) <= sub_wire15(10); + sub_wire2(2, 11) <= sub_wire15(11); + sub_wire2(2, 12) <= sub_wire15(12); + sub_wire2(2, 13) <= sub_wire15(13); + sub_wire2(2, 14) <= sub_wire15(14); + sub_wire2(2, 15) <= sub_wire15(15); + sub_wire2(2, 16) <= sub_wire15(16); + sub_wire2(2, 17) <= sub_wire15(17); + sub_wire2(2, 18) <= sub_wire15(18); + sub_wire2(2, 19) <= sub_wire15(19); + sub_wire2(2, 20) <= sub_wire15(20); + sub_wire2(2, 21) <= sub_wire15(21); + sub_wire2(2, 22) <= sub_wire15(22); + sub_wire2(2, 23) <= sub_wire15(23); + sub_wire2(2, 24) <= sub_wire15(24); + sub_wire2(2, 25) <= sub_wire15(25); + sub_wire2(2, 26) <= sub_wire15(26); + sub_wire2(2, 27) <= sub_wire15(27); + sub_wire2(2, 28) <= sub_wire15(28); + sub_wire2(2, 29) <= sub_wire15(29); + sub_wire2(2, 30) <= sub_wire15(30); + sub_wire2(2, 31) <= sub_wire15(31); + sub_wire2(2, 32) <= sub_wire15(32); + sub_wire2(2, 33) <= sub_wire15(33); + sub_wire2(2, 34) <= sub_wire15(34); + sub_wire2(2, 35) <= sub_wire15(35); + sub_wire2(2, 36) <= sub_wire15(36); + sub_wire2(2, 37) <= sub_wire15(37); + sub_wire2(2, 38) <= sub_wire15(38); + sub_wire2(2, 39) <= sub_wire15(39); + sub_wire2(2, 40) <= sub_wire15(40); + sub_wire2(2, 41) <= sub_wire15(41); + sub_wire2(2, 42) <= sub_wire15(42); + sub_wire2(2, 43) <= sub_wire15(43); + sub_wire2(2, 44) <= sub_wire15(44); + sub_wire2(2, 45) <= sub_wire15(45); + sub_wire2(2, 46) <= sub_wire15(46); + sub_wire2(2, 47) <= sub_wire15(47); + sub_wire2(2, 48) <= sub_wire15(48); + sub_wire2(2, 49) <= sub_wire15(49); + sub_wire2(2, 50) <= sub_wire15(50); + sub_wire2(2, 51) <= sub_wire15(51); + sub_wire2(2, 52) <= sub_wire15(52); + sub_wire2(2, 53) <= sub_wire15(53); + sub_wire2(2, 54) <= sub_wire15(54); + sub_wire2(2, 55) <= sub_wire15(55); + sub_wire2(2, 56) <= sub_wire15(56); + sub_wire2(2, 57) <= sub_wire15(57); + sub_wire2(2, 58) <= sub_wire15(58); + sub_wire2(2, 59) <= sub_wire15(59); + sub_wire2(2, 60) <= sub_wire15(60); + sub_wire2(2, 61) <= sub_wire15(61); + sub_wire2(2, 62) <= sub_wire15(62); + sub_wire2(2, 63) <= sub_wire15(63); + sub_wire2(2, 64) <= sub_wire15(64); + sub_wire2(2, 65) <= sub_wire15(65); + sub_wire2(2, 66) <= sub_wire15(66); + sub_wire2(2, 67) <= sub_wire15(67); + sub_wire2(2, 68) <= sub_wire15(68); + sub_wire2(2, 69) <= sub_wire15(69); + sub_wire2(2, 70) <= sub_wire15(70); + sub_wire2(2, 71) <= sub_wire15(71); + sub_wire2(2, 72) <= sub_wire15(72); + sub_wire2(2, 73) <= sub_wire15(73); + sub_wire2(2, 74) <= sub_wire15(74); + sub_wire2(2, 75) <= sub_wire15(75); + sub_wire2(2, 76) <= sub_wire15(76); + sub_wire2(2, 77) <= sub_wire15(77); + sub_wire2(2, 78) <= sub_wire15(78); + sub_wire2(2, 79) <= sub_wire15(79); + sub_wire2(2, 80) <= sub_wire15(80); + sub_wire2(2, 81) <= sub_wire15(81); + sub_wire2(2, 82) <= sub_wire15(82); + sub_wire2(2, 83) <= sub_wire15(83); + sub_wire2(2, 84) <= sub_wire15(84); + sub_wire2(2, 85) <= sub_wire15(85); + sub_wire2(2, 86) <= sub_wire15(86); + sub_wire2(2, 87) <= sub_wire15(87); + sub_wire2(2, 88) <= sub_wire15(88); + sub_wire2(2, 89) <= sub_wire15(89); + sub_wire2(2, 90) <= sub_wire15(90); + sub_wire2(2, 91) <= sub_wire15(91); + sub_wire2(2, 92) <= sub_wire15(92); + sub_wire2(2, 93) <= sub_wire15(93); + sub_wire2(2, 94) <= sub_wire15(94); + sub_wire2(2, 95) <= sub_wire15(95); + sub_wire2(2, 96) <= sub_wire15(96); + sub_wire2(2, 97) <= sub_wire15(97); + sub_wire2(2, 98) <= sub_wire15(98); + sub_wire2(2, 99) <= sub_wire15(99); + sub_wire2(2, 100) <= sub_wire15(100); + sub_wire2(2, 101) <= sub_wire15(101); + sub_wire2(2, 102) <= sub_wire15(102); + sub_wire2(2, 103) <= sub_wire15(103); + sub_wire2(2, 104) <= sub_wire15(104); + sub_wire2(2, 105) <= sub_wire15(105); + sub_wire2(2, 106) <= sub_wire15(106); + sub_wire2(2, 107) <= sub_wire15(107); + sub_wire2(2, 108) <= sub_wire15(108); + sub_wire2(2, 109) <= sub_wire15(109); + sub_wire2(2, 110) <= sub_wire15(110); + sub_wire2(2, 111) <= sub_wire15(111); + sub_wire2(2, 112) <= sub_wire15(112); + sub_wire2(2, 113) <= sub_wire15(113); + sub_wire2(2, 114) <= sub_wire15(114); + sub_wire2(2, 115) <= sub_wire15(115); + sub_wire2(2, 116) <= sub_wire15(116); + sub_wire2(2, 117) <= sub_wire15(117); + sub_wire2(2, 118) <= sub_wire15(118); + sub_wire2(2, 119) <= sub_wire15(119); + sub_wire2(2, 120) <= sub_wire15(120); + sub_wire2(2, 121) <= sub_wire15(121); + sub_wire2(2, 122) <= sub_wire15(122); + sub_wire2(2, 123) <= sub_wire15(123); + sub_wire2(2, 124) <= sub_wire15(124); + sub_wire2(2, 125) <= sub_wire15(125); + sub_wire2(2, 126) <= sub_wire15(126); + sub_wire2(2, 127) <= sub_wire15(127); + sub_wire2(1, 0) <= sub_wire16(0); + sub_wire2(1, 1) <= sub_wire16(1); + sub_wire2(1, 2) <= sub_wire16(2); + sub_wire2(1, 3) <= sub_wire16(3); + sub_wire2(1, 4) <= sub_wire16(4); + sub_wire2(1, 5) <= sub_wire16(5); + sub_wire2(1, 6) <= sub_wire16(6); + sub_wire2(1, 7) <= sub_wire16(7); + sub_wire2(1, 8) <= sub_wire16(8); + sub_wire2(1, 9) <= sub_wire16(9); + sub_wire2(1, 10) <= sub_wire16(10); + sub_wire2(1, 11) <= sub_wire16(11); + sub_wire2(1, 12) <= sub_wire16(12); + sub_wire2(1, 13) <= sub_wire16(13); + sub_wire2(1, 14) <= sub_wire16(14); + sub_wire2(1, 15) <= sub_wire16(15); + sub_wire2(1, 16) <= sub_wire16(16); + sub_wire2(1, 17) <= sub_wire16(17); + sub_wire2(1, 18) <= sub_wire16(18); + sub_wire2(1, 19) <= sub_wire16(19); + sub_wire2(1, 20) <= sub_wire16(20); + sub_wire2(1, 21) <= sub_wire16(21); + sub_wire2(1, 22) <= sub_wire16(22); + sub_wire2(1, 23) <= sub_wire16(23); + sub_wire2(1, 24) <= sub_wire16(24); + sub_wire2(1, 25) <= sub_wire16(25); + sub_wire2(1, 26) <= sub_wire16(26); + sub_wire2(1, 27) <= sub_wire16(27); + sub_wire2(1, 28) <= sub_wire16(28); + sub_wire2(1, 29) <= sub_wire16(29); + sub_wire2(1, 30) <= sub_wire16(30); + sub_wire2(1, 31) <= sub_wire16(31); + sub_wire2(1, 32) <= sub_wire16(32); + sub_wire2(1, 33) <= sub_wire16(33); + sub_wire2(1, 34) <= sub_wire16(34); + sub_wire2(1, 35) <= sub_wire16(35); + sub_wire2(1, 36) <= sub_wire16(36); + sub_wire2(1, 37) <= sub_wire16(37); + sub_wire2(1, 38) <= sub_wire16(38); + sub_wire2(1, 39) <= sub_wire16(39); + sub_wire2(1, 40) <= sub_wire16(40); + sub_wire2(1, 41) <= sub_wire16(41); + sub_wire2(1, 42) <= sub_wire16(42); + sub_wire2(1, 43) <= sub_wire16(43); + sub_wire2(1, 44) <= sub_wire16(44); + sub_wire2(1, 45) <= sub_wire16(45); + sub_wire2(1, 46) <= sub_wire16(46); + sub_wire2(1, 47) <= sub_wire16(47); + sub_wire2(1, 48) <= sub_wire16(48); + sub_wire2(1, 49) <= sub_wire16(49); + sub_wire2(1, 50) <= sub_wire16(50); + sub_wire2(1, 51) <= sub_wire16(51); + sub_wire2(1, 52) <= sub_wire16(52); + sub_wire2(1, 53) <= sub_wire16(53); + sub_wire2(1, 54) <= sub_wire16(54); + sub_wire2(1, 55) <= sub_wire16(55); + sub_wire2(1, 56) <= sub_wire16(56); + sub_wire2(1, 57) <= sub_wire16(57); + sub_wire2(1, 58) <= sub_wire16(58); + sub_wire2(1, 59) <= sub_wire16(59); + sub_wire2(1, 60) <= sub_wire16(60); + sub_wire2(1, 61) <= sub_wire16(61); + sub_wire2(1, 62) <= sub_wire16(62); + sub_wire2(1, 63) <= sub_wire16(63); + sub_wire2(1, 64) <= sub_wire16(64); + sub_wire2(1, 65) <= sub_wire16(65); + sub_wire2(1, 66) <= sub_wire16(66); + sub_wire2(1, 67) <= sub_wire16(67); + sub_wire2(1, 68) <= sub_wire16(68); + sub_wire2(1, 69) <= sub_wire16(69); + sub_wire2(1, 70) <= sub_wire16(70); + sub_wire2(1, 71) <= sub_wire16(71); + sub_wire2(1, 72) <= sub_wire16(72); + sub_wire2(1, 73) <= sub_wire16(73); + sub_wire2(1, 74) <= sub_wire16(74); + sub_wire2(1, 75) <= sub_wire16(75); + sub_wire2(1, 76) <= sub_wire16(76); + sub_wire2(1, 77) <= sub_wire16(77); + sub_wire2(1, 78) <= sub_wire16(78); + sub_wire2(1, 79) <= sub_wire16(79); + sub_wire2(1, 80) <= sub_wire16(80); + sub_wire2(1, 81) <= sub_wire16(81); + sub_wire2(1, 82) <= sub_wire16(82); + sub_wire2(1, 83) <= sub_wire16(83); + sub_wire2(1, 84) <= sub_wire16(84); + sub_wire2(1, 85) <= sub_wire16(85); + sub_wire2(1, 86) <= sub_wire16(86); + sub_wire2(1, 87) <= sub_wire16(87); + sub_wire2(1, 88) <= sub_wire16(88); + sub_wire2(1, 89) <= sub_wire16(89); + sub_wire2(1, 90) <= sub_wire16(90); + sub_wire2(1, 91) <= sub_wire16(91); + sub_wire2(1, 92) <= sub_wire16(92); + sub_wire2(1, 93) <= sub_wire16(93); + sub_wire2(1, 94) <= sub_wire16(94); + sub_wire2(1, 95) <= sub_wire16(95); + sub_wire2(1, 96) <= sub_wire16(96); + sub_wire2(1, 97) <= sub_wire16(97); + sub_wire2(1, 98) <= sub_wire16(98); + sub_wire2(1, 99) <= sub_wire16(99); + sub_wire2(1, 100) <= sub_wire16(100); + sub_wire2(1, 101) <= sub_wire16(101); + sub_wire2(1, 102) <= sub_wire16(102); + sub_wire2(1, 103) <= sub_wire16(103); + sub_wire2(1, 104) <= sub_wire16(104); + sub_wire2(1, 105) <= sub_wire16(105); + sub_wire2(1, 106) <= sub_wire16(106); + sub_wire2(1, 107) <= sub_wire16(107); + sub_wire2(1, 108) <= sub_wire16(108); + sub_wire2(1, 109) <= sub_wire16(109); + sub_wire2(1, 110) <= sub_wire16(110); + sub_wire2(1, 111) <= sub_wire16(111); + sub_wire2(1, 112) <= sub_wire16(112); + sub_wire2(1, 113) <= sub_wire16(113); + sub_wire2(1, 114) <= sub_wire16(114); + sub_wire2(1, 115) <= sub_wire16(115); + sub_wire2(1, 116) <= sub_wire16(116); + sub_wire2(1, 117) <= sub_wire16(117); + sub_wire2(1, 118) <= sub_wire16(118); + sub_wire2(1, 119) <= sub_wire16(119); + sub_wire2(1, 120) <= sub_wire16(120); + sub_wire2(1, 121) <= sub_wire16(121); + sub_wire2(1, 122) <= sub_wire16(122); + sub_wire2(1, 123) <= sub_wire16(123); + sub_wire2(1, 124) <= sub_wire16(124); + sub_wire2(1, 125) <= sub_wire16(125); + sub_wire2(1, 126) <= sub_wire16(126); + sub_wire2(1, 127) <= sub_wire16(127); + sub_wire2(0, 0) <= sub_wire17(0); + sub_wire2(0, 1) <= sub_wire17(1); + sub_wire2(0, 2) <= sub_wire17(2); + sub_wire2(0, 3) <= sub_wire17(3); + sub_wire2(0, 4) <= sub_wire17(4); + sub_wire2(0, 5) <= sub_wire17(5); + sub_wire2(0, 6) <= sub_wire17(6); + sub_wire2(0, 7) <= sub_wire17(7); + sub_wire2(0, 8) <= sub_wire17(8); + sub_wire2(0, 9) <= sub_wire17(9); + sub_wire2(0, 10) <= sub_wire17(10); + sub_wire2(0, 11) <= sub_wire17(11); + sub_wire2(0, 12) <= sub_wire17(12); + sub_wire2(0, 13) <= sub_wire17(13); + sub_wire2(0, 14) <= sub_wire17(14); + sub_wire2(0, 15) <= sub_wire17(15); + sub_wire2(0, 16) <= sub_wire17(16); + sub_wire2(0, 17) <= sub_wire17(17); + sub_wire2(0, 18) <= sub_wire17(18); + sub_wire2(0, 19) <= sub_wire17(19); + sub_wire2(0, 20) <= sub_wire17(20); + sub_wire2(0, 21) <= sub_wire17(21); + sub_wire2(0, 22) <= sub_wire17(22); + sub_wire2(0, 23) <= sub_wire17(23); + sub_wire2(0, 24) <= sub_wire17(24); + sub_wire2(0, 25) <= sub_wire17(25); + sub_wire2(0, 26) <= sub_wire17(26); + sub_wire2(0, 27) <= sub_wire17(27); + sub_wire2(0, 28) <= sub_wire17(28); + sub_wire2(0, 29) <= sub_wire17(29); + sub_wire2(0, 30) <= sub_wire17(30); + sub_wire2(0, 31) <= sub_wire17(31); + sub_wire2(0, 32) <= sub_wire17(32); + sub_wire2(0, 33) <= sub_wire17(33); + sub_wire2(0, 34) <= sub_wire17(34); + sub_wire2(0, 35) <= sub_wire17(35); + sub_wire2(0, 36) <= sub_wire17(36); + sub_wire2(0, 37) <= sub_wire17(37); + sub_wire2(0, 38) <= sub_wire17(38); + sub_wire2(0, 39) <= sub_wire17(39); + sub_wire2(0, 40) <= sub_wire17(40); + sub_wire2(0, 41) <= sub_wire17(41); + sub_wire2(0, 42) <= sub_wire17(42); + sub_wire2(0, 43) <= sub_wire17(43); + sub_wire2(0, 44) <= sub_wire17(44); + sub_wire2(0, 45) <= sub_wire17(45); + sub_wire2(0, 46) <= sub_wire17(46); + sub_wire2(0, 47) <= sub_wire17(47); + sub_wire2(0, 48) <= sub_wire17(48); + sub_wire2(0, 49) <= sub_wire17(49); + sub_wire2(0, 50) <= sub_wire17(50); + sub_wire2(0, 51) <= sub_wire17(51); + sub_wire2(0, 52) <= sub_wire17(52); + sub_wire2(0, 53) <= sub_wire17(53); + sub_wire2(0, 54) <= sub_wire17(54); + sub_wire2(0, 55) <= sub_wire17(55); + sub_wire2(0, 56) <= sub_wire17(56); + sub_wire2(0, 57) <= sub_wire17(57); + sub_wire2(0, 58) <= sub_wire17(58); + sub_wire2(0, 59) <= sub_wire17(59); + sub_wire2(0, 60) <= sub_wire17(60); + sub_wire2(0, 61) <= sub_wire17(61); + sub_wire2(0, 62) <= sub_wire17(62); + sub_wire2(0, 63) <= sub_wire17(63); + sub_wire2(0, 64) <= sub_wire17(64); + sub_wire2(0, 65) <= sub_wire17(65); + sub_wire2(0, 66) <= sub_wire17(66); + sub_wire2(0, 67) <= sub_wire17(67); + sub_wire2(0, 68) <= sub_wire17(68); + sub_wire2(0, 69) <= sub_wire17(69); + sub_wire2(0, 70) <= sub_wire17(70); + sub_wire2(0, 71) <= sub_wire17(71); + sub_wire2(0, 72) <= sub_wire17(72); + sub_wire2(0, 73) <= sub_wire17(73); + sub_wire2(0, 74) <= sub_wire17(74); + sub_wire2(0, 75) <= sub_wire17(75); + sub_wire2(0, 76) <= sub_wire17(76); + sub_wire2(0, 77) <= sub_wire17(77); + sub_wire2(0, 78) <= sub_wire17(78); + sub_wire2(0, 79) <= sub_wire17(79); + sub_wire2(0, 80) <= sub_wire17(80); + sub_wire2(0, 81) <= sub_wire17(81); + sub_wire2(0, 82) <= sub_wire17(82); + sub_wire2(0, 83) <= sub_wire17(83); + sub_wire2(0, 84) <= sub_wire17(84); + sub_wire2(0, 85) <= sub_wire17(85); + sub_wire2(0, 86) <= sub_wire17(86); + sub_wire2(0, 87) <= sub_wire17(87); + sub_wire2(0, 88) <= sub_wire17(88); + sub_wire2(0, 89) <= sub_wire17(89); + sub_wire2(0, 90) <= sub_wire17(90); + sub_wire2(0, 91) <= sub_wire17(91); + sub_wire2(0, 92) <= sub_wire17(92); + sub_wire2(0, 93) <= sub_wire17(93); + sub_wire2(0, 94) <= sub_wire17(94); + sub_wire2(0, 95) <= sub_wire17(95); + sub_wire2(0, 96) <= sub_wire17(96); + sub_wire2(0, 97) <= sub_wire17(97); + sub_wire2(0, 98) <= sub_wire17(98); + sub_wire2(0, 99) <= sub_wire17(99); + sub_wire2(0, 100) <= sub_wire17(100); + sub_wire2(0, 101) <= sub_wire17(101); + sub_wire2(0, 102) <= sub_wire17(102); + sub_wire2(0, 103) <= sub_wire17(103); + sub_wire2(0, 104) <= sub_wire17(104); + sub_wire2(0, 105) <= sub_wire17(105); + sub_wire2(0, 106) <= sub_wire17(106); + sub_wire2(0, 107) <= sub_wire17(107); + sub_wire2(0, 108) <= sub_wire17(108); + sub_wire2(0, 109) <= sub_wire17(109); + sub_wire2(0, 110) <= sub_wire17(110); + sub_wire2(0, 111) <= sub_wire17(111); + sub_wire2(0, 112) <= sub_wire17(112); + sub_wire2(0, 113) <= sub_wire17(113); + sub_wire2(0, 114) <= sub_wire17(114); + sub_wire2(0, 115) <= sub_wire17(115); + sub_wire2(0, 116) <= sub_wire17(116); + sub_wire2(0, 117) <= sub_wire17(117); + sub_wire2(0, 118) <= sub_wire17(118); + sub_wire2(0, 119) <= sub_wire17(119); + sub_wire2(0, 120) <= sub_wire17(120); + sub_wire2(0, 121) <= sub_wire17(121); + sub_wire2(0, 122) <= sub_wire17(122); + sub_wire2(0, 123) <= sub_wire17(123); + sub_wire2(0, 124) <= sub_wire17(124); + sub_wire2(0, 125) <= sub_wire17(125); + sub_wire2(0, 126) <= sub_wire17(126); + sub_wire2(0, 127) <= sub_wire17(127); + + lpm_mux_component : lpm_mux + GENERIC MAP ( + lpm_size => 16, + lpm_type => "LPM_MUX", + lpm_width => 128, + lpm_widths => 4 + ) + PORT MAP ( + sel => sel, + data => sub_wire2, + result => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: CONSTANT: LPM_SIZE NUMERIC "16" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_MUX" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "128" +-- Retrieval info: CONSTANT: LPM_WIDTHS NUMERIC "4" +-- Retrieval info: USED_PORT: data0x 0 0 128 0 INPUT NODEFVAL data0x[127..0] +-- Retrieval info: USED_PORT: data10x 0 0 128 0 INPUT NODEFVAL data10x[127..0] +-- Retrieval info: USED_PORT: data11x 0 0 128 0 INPUT NODEFVAL data11x[127..0] +-- Retrieval info: USED_PORT: data12x 0 0 128 0 INPUT NODEFVAL data12x[127..0] +-- Retrieval info: USED_PORT: data13x 0 0 128 0 INPUT NODEFVAL data13x[127..0] +-- Retrieval info: USED_PORT: data14x 0 0 128 0 INPUT NODEFVAL data14x[127..0] +-- Retrieval info: USED_PORT: data15x 0 0 128 0 INPUT NODEFVAL data15x[127..0] +-- Retrieval info: USED_PORT: data1x 0 0 128 0 INPUT NODEFVAL data1x[127..0] +-- Retrieval info: USED_PORT: data2x 0 0 128 0 INPUT NODEFVAL data2x[127..0] +-- Retrieval info: USED_PORT: data3x 0 0 128 0 INPUT NODEFVAL data3x[127..0] +-- Retrieval info: USED_PORT: data4x 0 0 128 0 INPUT NODEFVAL data4x[127..0] +-- Retrieval info: USED_PORT: data5x 0 0 128 0 INPUT NODEFVAL data5x[127..0] +-- Retrieval info: USED_PORT: data6x 0 0 128 0 INPUT NODEFVAL data6x[127..0] +-- Retrieval info: USED_PORT: data7x 0 0 128 0 INPUT NODEFVAL data7x[127..0] +-- Retrieval info: USED_PORT: data8x 0 0 128 0 INPUT NODEFVAL data8x[127..0] +-- Retrieval info: USED_PORT: data9x 0 0 128 0 INPUT NODEFVAL data9x[127..0] +-- Retrieval info: USED_PORT: result 0 0 128 0 OUTPUT NODEFVAL result[127..0] +-- Retrieval info: USED_PORT: sel 0 0 4 0 INPUT NODEFVAL sel[3..0] +-- Retrieval info: CONNECT: result 0 0 128 0 @result 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 15 128 0 data15x 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 14 128 0 data14x 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 13 128 0 data13x 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 12 128 0 data12x 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 11 128 0 data11x 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 10 128 0 data10x 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 9 128 0 data9x 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 8 128 0 data8x 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 7 128 0 data7x 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 6 128 0 data6x 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 5 128 0 data5x 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 4 128 0 data4x 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 3 128 0 data3x 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 2 128 0 data2x 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 1 128 0 data1x 0 0 128 0 +-- Retrieval info: CONNECT: @data 1 0 128 0 data0x 0 0 128 0 +-- Retrieval info: CONNECT: @sel 0 0 4 0 sel 0 0 4 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxVDM.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxVDM.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxVDM.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxVDM.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_muxVDM_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_shiftreg0.bsf b/FPGA_quartus/Video/lpm_shiftreg0.bsf new file mode 100644 index 0000000..fb70a4b --- /dev/null +++ b/FPGA_quartus/Video/lpm_shiftreg0.bsf @@ -0,0 +1,70 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 144 128) + (text "lpm_shiftreg0" (rect 34 1 124 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 112 25 124)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "load" (rect 0 0 23 14)(font "Arial" (font_size 8))) + (text "load" (rect 20 26 41 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 0 48) + (input) + (text "data[15..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "data[15..0]" (rect 20 42 71 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 3)) + ) + (port + (pt 0 80) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 26 74 49 87)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "shiftin" (rect 0 0 34 14)(font "Arial" (font_size 8))) + (text "shiftin" (rect 20 90 48 103)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)(line_width 1)) + ) + (port + (pt 144 72) + (output) + (text "shiftout" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "shiftout" (rect 89 66 123 79)(font "Arial" (font_size 8))) + (line (pt 144 72)(pt 128 72)(line_width 1)) + ) + (drawing + (text "left shift" (rect 92 17 128 29)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 112)(line_width 1)) + (line (pt 128 112)(pt 16 112)(line_width 1)) + (line (pt 16 112)(pt 16 16)(line_width 1)) + (line (pt 16 74)(pt 22 80)(line_width 1)) + (line (pt 22 80)(pt 16 86)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_shiftreg0.cmp b/FPGA_quartus/Video/lpm_shiftreg0.cmp new file mode 100644 index 0000000..c0613d5 --- /dev/null +++ b/FPGA_quartus/Video/lpm_shiftreg0.cmp @@ -0,0 +1,25 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_shiftreg0 + PORT + ( + clock : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + load : IN STD_LOGIC ; + shiftin : IN STD_LOGIC ; + shiftout : OUT STD_LOGIC + ); +end component; diff --git a/FPGA_quartus/Video/lpm_shiftreg0.inc b/FPGA_quartus/Video/lpm_shiftreg0.inc new file mode 100644 index 0000000..1c0c4a2 --- /dev/null +++ b/FPGA_quartus/Video/lpm_shiftreg0.inc @@ -0,0 +1,26 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_shiftreg0 +( + clock, + data[15..0], + load, + shiftin +) + +RETURNS ( + shiftout +); diff --git a/FPGA_quartus/Video/lpm_shiftreg0.qip b/FPGA_quartus/Video/lpm_shiftreg0.qip new file mode 100644 index 0000000..a233319 --- /dev/null +++ b/FPGA_quartus/Video/lpm_shiftreg0.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_SHIFTREG" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_shiftreg0.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg0.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg0.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg0.cmp"] diff --git a/FPGA_quartus/Video/lpm_shiftreg0.vhd b/FPGA_quartus/Video/lpm_shiftreg0.vhd new file mode 100644 index 0000000..6e5d954 --- /dev/null +++ b/FPGA_quartus/Video/lpm_shiftreg0.vhd @@ -0,0 +1,135 @@ +-- megafunction wizard: %LPM_SHIFTREG% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_shiftreg + +-- ============================================================ +-- File Name: lpm_shiftreg0.vhd +-- Megafunction Name(s): +-- lpm_shiftreg +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_shiftreg0 IS + PORT + ( + clock : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + load : IN STD_LOGIC ; + shiftin : IN STD_LOGIC ; + shiftout : OUT STD_LOGIC + ); +END lpm_shiftreg0; + + +ARCHITECTURE SYN OF lpm_shiftreg0 IS + + SIGNAL sub_wire0 : STD_LOGIC ; + + + + COMPONENT lpm_shiftreg + GENERIC ( + lpm_direction : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + load : IN STD_LOGIC ; + clock : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + shiftout : OUT STD_LOGIC ; + shiftin : IN STD_LOGIC + ); + END COMPONENT; + +BEGIN + shiftout <= sub_wire0; + + lpm_shiftreg_component : lpm_shiftreg + GENERIC MAP ( + lpm_direction => "LEFT", + lpm_type => "LPM_SHIFTREG", + lpm_width => 16 + ) + PORT MAP ( + load => load, + clock => clock, + data => data, + shiftin => shiftin, + shiftout => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACLR NUMERIC "0" +-- Retrieval info: PRIVATE: ALOAD NUMERIC "0" +-- Retrieval info: PRIVATE: ASET NUMERIC "0" +-- Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: LeftShift NUMERIC "1" +-- Retrieval info: PRIVATE: ParallelDataInput NUMERIC "1" +-- Retrieval info: PRIVATE: Q_OUT NUMERIC "0" +-- Retrieval info: PRIVATE: SCLR NUMERIC "0" +-- Retrieval info: PRIVATE: SLOAD NUMERIC "1" +-- Retrieval info: PRIVATE: SSET NUMERIC "0" +-- Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: SerialShiftInput NUMERIC "1" +-- Retrieval info: PRIVATE: SerialShiftOutput NUMERIC "1" +-- Retrieval info: PRIVATE: nBit NUMERIC "16" +-- Retrieval info: CONSTANT: LPM_DIRECTION STRING "LEFT" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_SHIFTREG" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "16" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: data 0 0 16 0 INPUT NODEFVAL data[15..0] +-- Retrieval info: USED_PORT: load 0 0 0 0 INPUT NODEFVAL load +-- Retrieval info: USED_PORT: shiftin 0 0 0 0 INPUT NODEFVAL shiftin +-- Retrieval info: USED_PORT: shiftout 0 0 0 0 OUTPUT NODEFVAL shiftout +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: @shiftin 0 0 0 0 shiftin 0 0 0 0 +-- Retrieval info: CONNECT: shiftout 0 0 0 0 @shiftout 0 0 0 0 +-- Retrieval info: CONNECT: @load 0 0 0 0 load 0 0 0 0 +-- Retrieval info: CONNECT: @data 0 0 16 0 data 0 0 16 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg0.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg0.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg0.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg0.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg0_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_shiftreg1.bsf b/FPGA_quartus/Video/lpm_shiftreg1.bsf new file mode 100644 index 0000000..aa20405 --- /dev/null +++ b/FPGA_quartus/Video/lpm_shiftreg1.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 144 80) + (text "lpm_shiftreg1" (rect 34 1 124 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 64 25 76)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 26 26 49 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 0 48) + (input) + (text "shiftin" (rect 0 0 34 14)(font "Arial" (font_size 8))) + (text "shiftin" (rect 20 42 48 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "q[1..0]" (rect 0 0 35 14)(font "Arial" (font_size 8))) + (text "q[1..0]" (rect 95 42 125 55)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 3)) + ) + (drawing + (text "left shift" (rect 92 17 128 29)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 26)(pt 22 32)(line_width 1)) + (line (pt 22 32)(pt 16 38)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_shiftreg1.cmp b/FPGA_quartus/Video/lpm_shiftreg1.cmp new file mode 100644 index 0000000..1a7ae1c --- /dev/null +++ b/FPGA_quartus/Video/lpm_shiftreg1.cmp @@ -0,0 +1,23 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_shiftreg1 + PORT + ( + clock : IN STD_LOGIC ; + shiftin : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (1 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_shiftreg1.qip b/FPGA_quartus/Video/lpm_shiftreg1.qip new file mode 100644 index 0000000..8a8e8a5 --- /dev/null +++ b/FPGA_quartus/Video/lpm_shiftreg1.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_SHIFTREG" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_shiftreg1.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg1.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg1.cmp"] diff --git a/FPGA_quartus/Video/lpm_shiftreg1.vhd b/FPGA_quartus/Video/lpm_shiftreg1.vhd new file mode 100644 index 0000000..781fe1b --- /dev/null +++ b/FPGA_quartus/Video/lpm_shiftreg1.vhd @@ -0,0 +1,125 @@ +-- megafunction wizard: %LPM_SHIFTREG% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_shiftreg + +-- ============================================================ +-- File Name: lpm_shiftreg1.vhd +-- Megafunction Name(s): +-- lpm_shiftreg +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_shiftreg1 IS + PORT + ( + clock : IN STD_LOGIC ; + shiftin : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (1 DOWNTO 0) + ); +END lpm_shiftreg1; + + +ARCHITECTURE SYN OF lpm_shiftreg1 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (1 DOWNTO 0); + + + + COMPONENT lpm_shiftreg + GENERIC ( + lpm_direction : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + clock : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (1 DOWNTO 0); + shiftin : IN STD_LOGIC + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(1 DOWNTO 0); + + lpm_shiftreg_component : lpm_shiftreg + GENERIC MAP ( + lpm_direction => "LEFT", + lpm_type => "LPM_SHIFTREG", + lpm_width => 2 + ) + PORT MAP ( + clock => clock, + shiftin => shiftin, + q => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACLR NUMERIC "0" +-- Retrieval info: PRIVATE: ALOAD NUMERIC "0" +-- Retrieval info: PRIVATE: ASET NUMERIC "0" +-- Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: LeftShift NUMERIC "1" +-- Retrieval info: PRIVATE: ParallelDataInput NUMERIC "0" +-- Retrieval info: PRIVATE: Q_OUT NUMERIC "1" +-- Retrieval info: PRIVATE: SCLR NUMERIC "0" +-- Retrieval info: PRIVATE: SLOAD NUMERIC "0" +-- Retrieval info: PRIVATE: SSET NUMERIC "0" +-- Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: SerialShiftInput NUMERIC "1" +-- Retrieval info: PRIVATE: SerialShiftOutput NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "2" +-- Retrieval info: CONSTANT: LPM_DIRECTION STRING "LEFT" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_SHIFTREG" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "2" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: q 0 0 2 0 OUTPUT NODEFVAL q[1..0] +-- Retrieval info: USED_PORT: shiftin 0 0 0 0 INPUT NODEFVAL shiftin +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: q 0 0 2 0 @q 0 0 2 0 +-- Retrieval info: CONNECT: @shiftin 0 0 0 0 shiftin 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg1.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg1.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg1.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg1.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg1_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_shiftreg2.bsf b/FPGA_quartus/Video/lpm_shiftreg2.bsf new file mode 100644 index 0000000..0caa084 --- /dev/null +++ b/FPGA_quartus/Video/lpm_shiftreg2.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 144 80) + (text "lpm_shiftreg2" (rect 34 1 124 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 64 25 76)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 26 26 49 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 0 48) + (input) + (text "shiftin" (rect 0 0 34 14)(font "Arial" (font_size 8))) + (text "shiftin" (rect 20 42 48 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "shiftout" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "shiftout" (rect 89 42 123 55)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 1)) + ) + (drawing + (text "right shift" (rect 88 17 128 29)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 26)(pt 22 32)(line_width 1)) + (line (pt 22 32)(pt 16 38)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_shiftreg2.cmp b/FPGA_quartus/Video/lpm_shiftreg2.cmp new file mode 100644 index 0000000..e7c1030 --- /dev/null +++ b/FPGA_quartus/Video/lpm_shiftreg2.cmp @@ -0,0 +1,23 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_shiftreg2 + PORT + ( + clock : IN STD_LOGIC ; + shiftin : IN STD_LOGIC ; + shiftout : OUT STD_LOGIC + ); +end component; diff --git a/FPGA_quartus/Video/lpm_shiftreg2.qip b/FPGA_quartus/Video/lpm_shiftreg2.qip new file mode 100644 index 0000000..3c5305b --- /dev/null +++ b/FPGA_quartus/Video/lpm_shiftreg2.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_SHIFTREG" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_shiftreg2.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg2.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg2.cmp"] diff --git a/FPGA_quartus/Video/lpm_shiftreg2.vhd b/FPGA_quartus/Video/lpm_shiftreg2.vhd new file mode 100644 index 0000000..ca02c26 --- /dev/null +++ b/FPGA_quartus/Video/lpm_shiftreg2.vhd @@ -0,0 +1,125 @@ +-- megafunction wizard: %LPM_SHIFTREG% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_shiftreg + +-- ============================================================ +-- File Name: lpm_shiftreg2.vhd +-- Megafunction Name(s): +-- lpm_shiftreg +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_shiftreg2 IS + PORT + ( + clock : IN STD_LOGIC ; + shiftin : IN STD_LOGIC ; + shiftout : OUT STD_LOGIC + ); +END lpm_shiftreg2; + + +ARCHITECTURE SYN OF lpm_shiftreg2 IS + + SIGNAL sub_wire0 : STD_LOGIC ; + + + + COMPONENT lpm_shiftreg + GENERIC ( + lpm_direction : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + clock : IN STD_LOGIC ; + shiftout : OUT STD_LOGIC ; + shiftin : IN STD_LOGIC + ); + END COMPONENT; + +BEGIN + shiftout <= sub_wire0; + + lpm_shiftreg_component : lpm_shiftreg + GENERIC MAP ( + lpm_direction => "RIGHT", + lpm_type => "LPM_SHIFTREG", + lpm_width => 4 + ) + PORT MAP ( + clock => clock, + shiftin => shiftin, + shiftout => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACLR NUMERIC "0" +-- Retrieval info: PRIVATE: ALOAD NUMERIC "0" +-- Retrieval info: PRIVATE: ASET NUMERIC "0" +-- Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: LeftShift NUMERIC "0" +-- Retrieval info: PRIVATE: ParallelDataInput NUMERIC "0" +-- Retrieval info: PRIVATE: Q_OUT NUMERIC "0" +-- Retrieval info: PRIVATE: SCLR NUMERIC "0" +-- Retrieval info: PRIVATE: SLOAD NUMERIC "0" +-- Retrieval info: PRIVATE: SSET NUMERIC "0" +-- Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: SerialShiftInput NUMERIC "1" +-- Retrieval info: PRIVATE: SerialShiftOutput NUMERIC "1" +-- Retrieval info: PRIVATE: nBit NUMERIC "4" +-- Retrieval info: CONSTANT: LPM_DIRECTION STRING "RIGHT" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_SHIFTREG" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "4" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: shiftin 0 0 0 0 INPUT NODEFVAL shiftin +-- Retrieval info: USED_PORT: shiftout 0 0 0 0 OUTPUT NODEFVAL shiftout +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: @shiftin 0 0 0 0 shiftin 0 0 0 0 +-- Retrieval info: CONNECT: shiftout 0 0 0 0 @shiftout 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg2.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg2.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg2.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg2.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg2_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_shiftreg3.bsf b/FPGA_quartus/Video/lpm_shiftreg3.bsf new file mode 100644 index 0000000..d18b388 --- /dev/null +++ b/FPGA_quartus/Video/lpm_shiftreg3.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 144 80) + (text "lpm_shiftreg3" (rect 34 1 124 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 64 25 76)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 26 26 49 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 0 48) + (input) + (text "shiftin" (rect 0 0 34 14)(font "Arial" (font_size 8))) + (text "shiftin" (rect 20 42 48 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "shiftout" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "shiftout" (rect 89 42 123 55)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 1)) + ) + (drawing + (text "right shift" (rect 88 17 128 29)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 26)(pt 22 32)(line_width 1)) + (line (pt 22 32)(pt 16 38)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_shiftreg3.cmp b/FPGA_quartus/Video/lpm_shiftreg3.cmp new file mode 100644 index 0000000..4cc6db7 --- /dev/null +++ b/FPGA_quartus/Video/lpm_shiftreg3.cmp @@ -0,0 +1,23 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_shiftreg3 + PORT + ( + clock : IN STD_LOGIC ; + shiftin : IN STD_LOGIC ; + shiftout : OUT STD_LOGIC + ); +end component; diff --git a/FPGA_quartus/Video/lpm_shiftreg3.inc b/FPGA_quartus/Video/lpm_shiftreg3.inc new file mode 100644 index 0000000..4f70ce5 --- /dev/null +++ b/FPGA_quartus/Video/lpm_shiftreg3.inc @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_shiftreg3 +( + clock, + shiftin +) + +RETURNS ( + shiftout +); diff --git a/FPGA_quartus/Video/lpm_shiftreg3.qip b/FPGA_quartus/Video/lpm_shiftreg3.qip new file mode 100644 index 0000000..783fdea --- /dev/null +++ b/FPGA_quartus/Video/lpm_shiftreg3.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_SHIFTREG" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_shiftreg3.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg3.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg3.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg3.cmp"] diff --git a/FPGA_quartus/Video/lpm_shiftreg3.vhd b/FPGA_quartus/Video/lpm_shiftreg3.vhd new file mode 100644 index 0000000..b87c221 --- /dev/null +++ b/FPGA_quartus/Video/lpm_shiftreg3.vhd @@ -0,0 +1,125 @@ +-- megafunction wizard: %LPM_SHIFTREG% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_shiftreg + +-- ============================================================ +-- File Name: lpm_shiftreg3.vhd +-- Megafunction Name(s): +-- lpm_shiftreg +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_shiftreg3 IS + PORT + ( + clock : IN STD_LOGIC ; + shiftin : IN STD_LOGIC ; + shiftout : OUT STD_LOGIC + ); +END lpm_shiftreg3; + + +ARCHITECTURE SYN OF lpm_shiftreg3 IS + + SIGNAL sub_wire0 : STD_LOGIC ; + + + + COMPONENT lpm_shiftreg + GENERIC ( + lpm_direction : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + clock : IN STD_LOGIC ; + shiftout : OUT STD_LOGIC ; + shiftin : IN STD_LOGIC + ); + END COMPONENT; + +BEGIN + shiftout <= sub_wire0; + + lpm_shiftreg_component : lpm_shiftreg + GENERIC MAP ( + lpm_direction => "RIGHT", + lpm_type => "LPM_SHIFTREG", + lpm_width => 2 + ) + PORT MAP ( + clock => clock, + shiftin => shiftin, + shiftout => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACLR NUMERIC "0" +-- Retrieval info: PRIVATE: ALOAD NUMERIC "0" +-- Retrieval info: PRIVATE: ASET NUMERIC "0" +-- Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: LeftShift NUMERIC "0" +-- Retrieval info: PRIVATE: ParallelDataInput NUMERIC "0" +-- Retrieval info: PRIVATE: Q_OUT NUMERIC "0" +-- Retrieval info: PRIVATE: SCLR NUMERIC "0" +-- Retrieval info: PRIVATE: SLOAD NUMERIC "0" +-- Retrieval info: PRIVATE: SSET NUMERIC "0" +-- Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: SerialShiftInput NUMERIC "1" +-- Retrieval info: PRIVATE: SerialShiftOutput NUMERIC "1" +-- Retrieval info: PRIVATE: nBit NUMERIC "2" +-- Retrieval info: CONSTANT: LPM_DIRECTION STRING "RIGHT" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_SHIFTREG" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "2" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: shiftin 0 0 0 0 INPUT NODEFVAL shiftin +-- Retrieval info: USED_PORT: shiftout 0 0 0 0 OUTPUT NODEFVAL shiftout +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: @shiftin 0 0 0 0 shiftin 0 0 0 0 +-- Retrieval info: CONNECT: shiftout 0 0 0 0 @shiftout 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg3.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg3.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg3.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg3.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg3_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_shiftreg4.bsf b/FPGA_quartus/Video/lpm_shiftreg4.bsf new file mode 100644 index 0000000..658958d --- /dev/null +++ b/FPGA_quartus/Video/lpm_shiftreg4.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 144 80) + (text "lpm_shiftreg4" (rect 34 1 124 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 64 25 76)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 26 26 49 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 0 48) + (input) + (text "shiftin" (rect 0 0 34 14)(font "Arial" (font_size 8))) + (text "shiftin" (rect 20 42 48 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "shiftout" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "shiftout" (rect 89 42 123 55)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 1)) + ) + (drawing + (text "right shift" (rect 88 17 128 29)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 26)(pt 22 32)(line_width 1)) + (line (pt 22 32)(pt 16 38)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_shiftreg4.cmp b/FPGA_quartus/Video/lpm_shiftreg4.cmp new file mode 100644 index 0000000..83fb9e5 --- /dev/null +++ b/FPGA_quartus/Video/lpm_shiftreg4.cmp @@ -0,0 +1,23 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_shiftreg4 + PORT + ( + clock : IN STD_LOGIC ; + shiftin : IN STD_LOGIC ; + shiftout : OUT STD_LOGIC + ); +end component; diff --git a/FPGA_quartus/Video/lpm_shiftreg4.inc b/FPGA_quartus/Video/lpm_shiftreg4.inc new file mode 100644 index 0000000..322863a --- /dev/null +++ b/FPGA_quartus/Video/lpm_shiftreg4.inc @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_shiftreg4 +( + clock, + shiftin +) + +RETURNS ( + shiftout +); diff --git a/FPGA_quartus/Video/lpm_shiftreg4.qip b/FPGA_quartus/Video/lpm_shiftreg4.qip new file mode 100644 index 0000000..363cd59 --- /dev/null +++ b/FPGA_quartus/Video/lpm_shiftreg4.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_SHIFTREG" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_shiftreg4.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg4.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg4.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg4.cmp"] diff --git a/FPGA_quartus/Video/lpm_shiftreg4.vhd b/FPGA_quartus/Video/lpm_shiftreg4.vhd new file mode 100644 index 0000000..3d8f5d1 --- /dev/null +++ b/FPGA_quartus/Video/lpm_shiftreg4.vhd @@ -0,0 +1,125 @@ +-- megafunction wizard: %LPM_SHIFTREG% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_shiftreg + +-- ============================================================ +-- File Name: lpm_shiftreg4.vhd +-- Megafunction Name(s): +-- lpm_shiftreg +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_shiftreg4 IS + PORT + ( + clock : IN STD_LOGIC ; + shiftin : IN STD_LOGIC ; + shiftout : OUT STD_LOGIC + ); +END lpm_shiftreg4; + + +ARCHITECTURE SYN OF lpm_shiftreg4 IS + + SIGNAL sub_wire0 : STD_LOGIC ; + + + + COMPONENT lpm_shiftreg + GENERIC ( + lpm_direction : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + clock : IN STD_LOGIC ; + shiftout : OUT STD_LOGIC ; + shiftin : IN STD_LOGIC + ); + END COMPONENT; + +BEGIN + shiftout <= sub_wire0; + + lpm_shiftreg_component : lpm_shiftreg + GENERIC MAP ( + lpm_direction => "RIGHT", + lpm_type => "LPM_SHIFTREG", + lpm_width => 5 + ) + PORT MAP ( + clock => clock, + shiftin => shiftin, + shiftout => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACLR NUMERIC "0" +-- Retrieval info: PRIVATE: ALOAD NUMERIC "0" +-- Retrieval info: PRIVATE: ASET NUMERIC "0" +-- Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: LeftShift NUMERIC "0" +-- Retrieval info: PRIVATE: ParallelDataInput NUMERIC "0" +-- Retrieval info: PRIVATE: Q_OUT NUMERIC "0" +-- Retrieval info: PRIVATE: SCLR NUMERIC "0" +-- Retrieval info: PRIVATE: SLOAD NUMERIC "0" +-- Retrieval info: PRIVATE: SSET NUMERIC "0" +-- Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: SerialShiftInput NUMERIC "1" +-- Retrieval info: PRIVATE: SerialShiftOutput NUMERIC "1" +-- Retrieval info: PRIVATE: nBit NUMERIC "5" +-- Retrieval info: CONSTANT: LPM_DIRECTION STRING "RIGHT" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_SHIFTREG" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "5" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: shiftin 0 0 0 0 INPUT NODEFVAL shiftin +-- Retrieval info: USED_PORT: shiftout 0 0 0 0 OUTPUT NODEFVAL shiftout +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: @shiftin 0 0 0 0 shiftin 0 0 0 0 +-- Retrieval info: CONNECT: shiftout 0 0 0 0 @shiftout 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg4.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg4.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg4.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg4.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg4_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_shiftreg5.bsf b/FPGA_quartus/Video/lpm_shiftreg5.bsf new file mode 100644 index 0000000..a528c96 --- /dev/null +++ b/FPGA_quartus/Video/lpm_shiftreg5.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 144 80) + (text "lpm_shiftreg5" (rect 34 1 124 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 64 25 76)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 26 26 49 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 0 48) + (input) + (text "shiftin" (rect 0 0 34 14)(font "Arial" (font_size 8))) + (text "shiftin" (rect 20 42 48 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "q[4..0]" (rect 0 0 35 14)(font "Arial" (font_size 8))) + (text "q[4..0]" (rect 95 42 125 55)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 3)) + ) + (drawing + (text "right shift" (rect 88 17 128 29)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 26)(pt 22 32)(line_width 1)) + (line (pt 22 32)(pt 16 38)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_shiftreg5.cmp b/FPGA_quartus/Video/lpm_shiftreg5.cmp new file mode 100644 index 0000000..638f12e --- /dev/null +++ b/FPGA_quartus/Video/lpm_shiftreg5.cmp @@ -0,0 +1,23 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_shiftreg5 + PORT + ( + clock : IN STD_LOGIC ; + shiftin : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (4 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_shiftreg5.inc b/FPGA_quartus/Video/lpm_shiftreg5.inc new file mode 100644 index 0000000..431ed2c --- /dev/null +++ b/FPGA_quartus/Video/lpm_shiftreg5.inc @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_shiftreg5 +( + clock, + shiftin +) + +RETURNS ( + q[4..0] +); diff --git a/FPGA_quartus/Video/lpm_shiftreg5.qip b/FPGA_quartus/Video/lpm_shiftreg5.qip new file mode 100644 index 0000000..9b71f4b --- /dev/null +++ b/FPGA_quartus/Video/lpm_shiftreg5.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_SHIFTREG" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_shiftreg5.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg5.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg5.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg5.cmp"] diff --git a/FPGA_quartus/Video/lpm_shiftreg5.vhd b/FPGA_quartus/Video/lpm_shiftreg5.vhd new file mode 100644 index 0000000..71a1232 --- /dev/null +++ b/FPGA_quartus/Video/lpm_shiftreg5.vhd @@ -0,0 +1,125 @@ +-- megafunction wizard: %LPM_SHIFTREG% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_shiftreg + +-- ============================================================ +-- File Name: lpm_shiftreg5.vhd +-- Megafunction Name(s): +-- lpm_shiftreg +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_shiftreg5 IS + PORT + ( + clock : IN STD_LOGIC ; + shiftin : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (4 DOWNTO 0) + ); +END lpm_shiftreg5; + + +ARCHITECTURE SYN OF lpm_shiftreg5 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (4 DOWNTO 0); + + + + COMPONENT lpm_shiftreg + GENERIC ( + lpm_direction : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + clock : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (4 DOWNTO 0); + shiftin : IN STD_LOGIC + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(4 DOWNTO 0); + + lpm_shiftreg_component : lpm_shiftreg + GENERIC MAP ( + lpm_direction => "RIGHT", + lpm_type => "LPM_SHIFTREG", + lpm_width => 5 + ) + PORT MAP ( + clock => clock, + shiftin => shiftin, + q => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACLR NUMERIC "0" +-- Retrieval info: PRIVATE: ALOAD NUMERIC "0" +-- Retrieval info: PRIVATE: ASET NUMERIC "0" +-- Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: LeftShift NUMERIC "0" +-- Retrieval info: PRIVATE: ParallelDataInput NUMERIC "0" +-- Retrieval info: PRIVATE: Q_OUT NUMERIC "1" +-- Retrieval info: PRIVATE: SCLR NUMERIC "0" +-- Retrieval info: PRIVATE: SLOAD NUMERIC "0" +-- Retrieval info: PRIVATE: SSET NUMERIC "0" +-- Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: SerialShiftInput NUMERIC "1" +-- Retrieval info: PRIVATE: SerialShiftOutput NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "5" +-- Retrieval info: CONSTANT: LPM_DIRECTION STRING "RIGHT" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_SHIFTREG" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "5" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: q 0 0 5 0 OUTPUT NODEFVAL q[4..0] +-- Retrieval info: USED_PORT: shiftin 0 0 0 0 INPUT NODEFVAL shiftin +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: q 0 0 5 0 @q 0 0 5 0 +-- Retrieval info: CONNECT: @shiftin 0 0 0 0 shiftin 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg5.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg5.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg5.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg5.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg5_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/Video/lpm_shiftreg6.bsf b/FPGA_quartus/Video/lpm_shiftreg6.bsf new file mode 100644 index 0000000..aa0296b --- /dev/null +++ b/FPGA_quartus/Video/lpm_shiftreg6.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 144 80) + (text "lpm_shiftreg6" (rect 34 1 124 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 64 25 76)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 26 26 49 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 0 48) + (input) + (text "shiftin" (rect 0 0 34 14)(font "Arial" (font_size 8))) + (text "shiftin" (rect 20 42 48 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 144 48) + (output) + (text "q[4..0]" (rect 0 0 35 14)(font "Arial" (font_size 8))) + (text "q[4..0]" (rect 95 42 125 55)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)(line_width 3)) + ) + (drawing + (text "right shift" (rect 88 17 128 29)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 64)(line_width 1)) + (line (pt 128 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + (line (pt 16 26)(pt 22 32)(line_width 1)) + (line (pt 22 32)(pt 16 38)(line_width 1)) + ) +) diff --git a/FPGA_quartus/Video/lpm_shiftreg6.cmp b/FPGA_quartus/Video/lpm_shiftreg6.cmp new file mode 100644 index 0000000..c9f7a9b --- /dev/null +++ b/FPGA_quartus/Video/lpm_shiftreg6.cmp @@ -0,0 +1,23 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_shiftreg6 + PORT + ( + clock : IN STD_LOGIC ; + shiftin : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (4 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/Video/lpm_shiftreg6.inc b/FPGA_quartus/Video/lpm_shiftreg6.inc new file mode 100644 index 0000000..7767c57 --- /dev/null +++ b/FPGA_quartus/Video/lpm_shiftreg6.inc @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_shiftreg6 +( + clock, + shiftin +) + +RETURNS ( + q[4..0] +); diff --git a/FPGA_quartus/Video/lpm_shiftreg6.qip b/FPGA_quartus/Video/lpm_shiftreg6.qip new file mode 100644 index 0000000..adb4909 --- /dev/null +++ b/FPGA_quartus/Video/lpm_shiftreg6.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_SHIFTREG" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_shiftreg6.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg6.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg6.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_shiftreg6.cmp"] diff --git a/FPGA_quartus/Video/lpm_shiftreg6.vhd b/FPGA_quartus/Video/lpm_shiftreg6.vhd new file mode 100644 index 0000000..773243e --- /dev/null +++ b/FPGA_quartus/Video/lpm_shiftreg6.vhd @@ -0,0 +1,125 @@ +-- megafunction wizard: %LPM_SHIFTREG% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_shiftreg + +-- ============================================================ +-- File Name: lpm_shiftreg6.vhd +-- Megafunction Name(s): +-- lpm_shiftreg +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_shiftreg6 IS + PORT + ( + clock : IN STD_LOGIC ; + shiftin : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (4 DOWNTO 0) + ); +END lpm_shiftreg6; + + +ARCHITECTURE SYN OF lpm_shiftreg6 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (4 DOWNTO 0); + + + + COMPONENT lpm_shiftreg + GENERIC ( + lpm_direction : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + clock : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (4 DOWNTO 0); + shiftin : IN STD_LOGIC + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(4 DOWNTO 0); + + lpm_shiftreg_component : lpm_shiftreg + GENERIC MAP ( + lpm_direction => "RIGHT", + lpm_type => "LPM_SHIFTREG", + lpm_width => 5 + ) + PORT MAP ( + clock => clock, + shiftin => shiftin, + q => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACLR NUMERIC "0" +-- Retrieval info: PRIVATE: ALOAD NUMERIC "0" +-- Retrieval info: PRIVATE: ASET NUMERIC "0" +-- Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: LeftShift NUMERIC "0" +-- Retrieval info: PRIVATE: ParallelDataInput NUMERIC "0" +-- Retrieval info: PRIVATE: Q_OUT NUMERIC "1" +-- Retrieval info: PRIVATE: SCLR NUMERIC "0" +-- Retrieval info: PRIVATE: SLOAD NUMERIC "0" +-- Retrieval info: PRIVATE: SSET NUMERIC "0" +-- Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: SerialShiftInput NUMERIC "1" +-- Retrieval info: PRIVATE: SerialShiftOutput NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "5" +-- Retrieval info: CONSTANT: LPM_DIRECTION STRING "RIGHT" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_SHIFTREG" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "5" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: q 0 0 5 0 OUTPUT NODEFVAL q[4..0] +-- Retrieval info: USED_PORT: shiftin 0 0 0 0 INPUT NODEFVAL shiftin +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: q 0 0 5 0 @q 0 0 5 0 +-- Retrieval info: CONNECT: @shiftin 0 0 0 0 shiftin 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg6.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg6.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg6.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg6.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_shiftreg6_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/altddio_out0.bsf b/FPGA_quartus/altddio_out0.bsf new file mode 100644 index 0000000..9889d79 --- /dev/null +++ b/FPGA_quartus/altddio_out0.bsf @@ -0,0 +1,64 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 232 120) + (text "altddio_out0" (rect 81 1 163 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 104 25 116)(font "Arial" )) + (port + (pt 0 24) + (input) + (text "datain_h" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "datain_h" (rect 4 11 46 24)(font "Arial" (font_size 8))) + (line (pt 0 24)(pt 88 24)(line_width 1)) + ) + (port + (pt 0 40) + (input) + (text "datain_l" (rect 0 0 43 14)(font "Arial" (font_size 8))) + (text "datain_l" (rect 4 27 43 40)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 88 40)(line_width 1)) + ) + (port + (pt 0 56) + (input) + (text "outclock" (rect 0 0 47 14)(font "Arial" (font_size 8))) + (text "outclock" (rect 4 43 42 56)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 88 56)(line_width 1)) + ) + (port + (pt 232 24) + (output) + (text "dataout" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "dataout" (rect 193 11 229 24)(font "Arial" (font_size 8))) + (line (pt 232 24)(pt 152 24)(line_width 1)) + ) + (drawing + (text "ddio" (rect 110 27 131 40)(font "Arial" (font_size 8))) + (text "output" (rect 105 42 135 55)(font "Arial" (font_size 8))) + (text "power up" (rect 92 74 129 86)(font "Arial" )) + (text "low" (rect 92 84 105 96)(font "Arial" )) + (line (pt 88 16)(pt 152 16)(line_width 1)) + (line (pt 152 16)(pt 152 96)(line_width 1)) + (line (pt 152 96)(pt 88 96)(line_width 1)) + (line (pt 88 96)(pt 88 16)(line_width 1)) + ) +) diff --git a/FPGA_quartus/altddio_out0.cmp b/FPGA_quartus/altddio_out0.cmp new file mode 100644 index 0000000..6e98c39 --- /dev/null +++ b/FPGA_quartus/altddio_out0.cmp @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component altddio_out0 + PORT + ( + datain_h : IN STD_LOGIC ; + datain_l : IN STD_LOGIC ; + outclock : IN STD_LOGIC ; + dataout : OUT STD_LOGIC + ); +end component; diff --git a/FPGA_quartus/altddio_out0.inc b/FPGA_quartus/altddio_out0.inc new file mode 100644 index 0000000..030b327 --- /dev/null +++ b/FPGA_quartus/altddio_out0.inc @@ -0,0 +1,25 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION altddio_out0 +( + datain_h, + datain_l, + outclock +) + +RETURNS ( + dataout +); diff --git a/FPGA_quartus/altddio_out0.ppf b/FPGA_quartus/altddio_out0.ppf new file mode 100644 index 0000000..4379977 --- /dev/null +++ b/FPGA_quartus/altddio_out0.ppf @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/FPGA_quartus/altddio_out0.qip b/FPGA_quartus/altddio_out0.qip new file mode 100644 index 0000000..8193856 --- /dev/null +++ b/FPGA_quartus/altddio_out0.qip @@ -0,0 +1,7 @@ +set_global_assignment -name IP_TOOL_NAME "ALTDDIO_OUT" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "altddio_out0.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out0.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out0.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out0.cmp"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out0.ppf"] diff --git a/FPGA_quartus/altddio_out0.vhd b/FPGA_quartus/altddio_out0.vhd new file mode 100644 index 0000000..ea6d708 --- /dev/null +++ b/FPGA_quartus/altddio_out0.vhd @@ -0,0 +1,146 @@ +-- megafunction wizard: %ALTDDIO_OUT% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altddio_out + +-- ============================================================ +-- File Name: altddio_out0.vhd +-- Megafunction Name(s): +-- altddio_out +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY altddio_out0 IS + PORT + ( + datain_h : IN STD_LOGIC ; + datain_l : IN STD_LOGIC ; + outclock : IN STD_LOGIC ; + dataout : OUT STD_LOGIC + ); +END altddio_out0; + + +ARCHITECTURE SYN OF altddio_out0 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC ; + SIGNAL sub_wire2 : STD_LOGIC ; + SIGNAL sub_wire3 : STD_LOGIC_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire4 : STD_LOGIC ; + SIGNAL sub_wire5 : STD_LOGIC_VECTOR (0 DOWNTO 0); + + + + COMPONENT altddio_out + GENERIC ( + extend_oe_disable : STRING; + intended_device_family : STRING; + invert_output : STRING; + lpm_type : STRING; + oe_reg : STRING; + power_up_high : STRING; + width : NATURAL + ); + PORT ( + dataout : OUT STD_LOGIC_VECTOR (0 DOWNTO 0); + outclock : IN STD_LOGIC ; + datain_h : IN STD_LOGIC_VECTOR (0 DOWNTO 0); + datain_l : IN STD_LOGIC_VECTOR (0 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + sub_wire1 <= sub_wire0(0); + dataout <= sub_wire1; + sub_wire2 <= datain_h; + sub_wire3(0) <= sub_wire2; + sub_wire4 <= datain_l; + sub_wire5(0) <= sub_wire4; + + altddio_out_component : altddio_out + GENERIC MAP ( + extend_oe_disable => "UNUSED", + intended_device_family => "Cyclone III", + invert_output => "OFF", + lpm_type => "altddio_out", + oe_reg => "UNUSED", + power_up_high => "OFF", + width => 1 + ) + PORT MAP ( + outclock => outclock, + datain_h => sub_wire3, + datain_l => sub_wire5, + dataout => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ARESET_MODE NUMERIC "2" +-- Retrieval info: PRIVATE: CLKEN NUMERIC "0" +-- Retrieval info: PRIVATE: EXTEND_OE_DISABLE NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: OE NUMERIC "0" +-- Retrieval info: PRIVATE: OE_REG NUMERIC "0" +-- Retrieval info: PRIVATE: POWER_UP_HIGH NUMERIC "0" +-- Retrieval info: PRIVATE: SRESET_MODE NUMERIC "2" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: WIDTH NUMERIC "1" +-- Retrieval info: CONSTANT: EXTEND_OE_DISABLE STRING "UNUSED" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: INVERT_OUTPUT STRING "OFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altddio_out" +-- Retrieval info: CONSTANT: OE_REG STRING "UNUSED" +-- Retrieval info: CONSTANT: POWER_UP_HIGH STRING "OFF" +-- Retrieval info: CONSTANT: WIDTH NUMERIC "1" +-- Retrieval info: USED_PORT: datain_h 0 0 0 0 INPUT NODEFVAL datain_h +-- Retrieval info: USED_PORT: datain_l 0 0 0 0 INPUT NODEFVAL datain_l +-- Retrieval info: USED_PORT: dataout 0 0 0 0 OUTPUT NODEFVAL dataout +-- Retrieval info: USED_PORT: outclock 0 0 0 0 INPUT_CLK_EXT NODEFVAL outclock +-- Retrieval info: CONNECT: @datain_h 0 0 1 0 datain_h 0 0 0 0 +-- Retrieval info: CONNECT: @datain_l 0 0 1 0 datain_l 0 0 0 0 +-- Retrieval info: CONNECT: dataout 0 0 0 0 @dataout 0 0 1 0 +-- Retrieval info: CONNECT: @outclock 0 0 0 0 outclock 0 0 0 0 +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out0.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out0.ppf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out0.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out0.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out0.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out0_inst.vhd FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_quartus/altddio_out3.bsf b/FPGA_quartus/altddio_out3.bsf new file mode 100644 index 0000000..ba8c153 --- /dev/null +++ b/FPGA_quartus/altddio_out3.bsf @@ -0,0 +1,64 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 232 120) + (text "altddio_out3" (rect 81 1 163 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 104 25 116)(font "Arial" )) + (port + (pt 0 24) + (input) + (text "datain_h" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "datain_h" (rect 4 11 46 24)(font "Arial" (font_size 8))) + (line (pt 0 24)(pt 88 24)(line_width 1)) + ) + (port + (pt 0 40) + (input) + (text "datain_l" (rect 0 0 43 14)(font "Arial" (font_size 8))) + (text "datain_l" (rect 4 27 43 40)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 88 40)(line_width 1)) + ) + (port + (pt 0 56) + (input) + (text "outclock" (rect 0 0 47 14)(font "Arial" (font_size 8))) + (text "outclock" (rect 4 43 42 56)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 88 56)(line_width 1)) + ) + (port + (pt 232 24) + (output) + (text "dataout" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "dataout" (rect 193 11 229 24)(font "Arial" (font_size 8))) + (line (pt 232 24)(pt 152 24)(line_width 1)) + ) + (drawing + (text "ddio" (rect 110 27 131 40)(font "Arial" (font_size 8))) + (text "output" (rect 105 42 135 55)(font "Arial" (font_size 8))) + (text "power up" (rect 92 74 129 86)(font "Arial" )) + (text "low" (rect 92 84 105 96)(font "Arial" )) + (line (pt 88 16)(pt 152 16)(line_width 1)) + (line (pt 152 16)(pt 152 96)(line_width 1)) + (line (pt 152 96)(pt 88 96)(line_width 1)) + (line (pt 88 96)(pt 88 16)(line_width 1)) + ) +) diff --git a/FPGA_quartus/altddio_out3.cmp b/FPGA_quartus/altddio_out3.cmp new file mode 100644 index 0000000..ce5862c --- /dev/null +++ b/FPGA_quartus/altddio_out3.cmp @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component altddio_out3 + PORT + ( + datain_h : IN STD_LOGIC ; + datain_l : IN STD_LOGIC ; + outclock : IN STD_LOGIC ; + dataout : OUT STD_LOGIC + ); +end component; diff --git a/FPGA_quartus/altddio_out3.inc b/FPGA_quartus/altddio_out3.inc new file mode 100644 index 0000000..f6b4097 --- /dev/null +++ b/FPGA_quartus/altddio_out3.inc @@ -0,0 +1,25 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION altddio_out3 +( + datain_h, + datain_l, + outclock +) + +RETURNS ( + dataout +); diff --git a/FPGA_quartus/altddio_out3.ppf b/FPGA_quartus/altddio_out3.ppf new file mode 100644 index 0000000..e914df8 --- /dev/null +++ b/FPGA_quartus/altddio_out3.ppf @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/FPGA_quartus/altddio_out3.qip b/FPGA_quartus/altddio_out3.qip new file mode 100644 index 0000000..8f94ee3 --- /dev/null +++ b/FPGA_quartus/altddio_out3.qip @@ -0,0 +1,7 @@ +set_global_assignment -name IP_TOOL_NAME "ALTDDIO_OUT" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "altddio_out3.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out3.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out3.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out3.cmp"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altddio_out3.ppf"] diff --git a/FPGA_quartus/altddio_out3.vhd b/FPGA_quartus/altddio_out3.vhd new file mode 100644 index 0000000..e55160f --- /dev/null +++ b/FPGA_quartus/altddio_out3.vhd @@ -0,0 +1,146 @@ +-- megafunction wizard: %ALTDDIO_OUT% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altddio_out + +-- ============================================================ +-- File Name: altddio_out3.vhd +-- Megafunction Name(s): +-- altddio_out +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY altddio_out3 IS + PORT + ( + datain_h : IN STD_LOGIC ; + datain_l : IN STD_LOGIC ; + outclock : IN STD_LOGIC ; + dataout : OUT STD_LOGIC + ); +END altddio_out3; + + +ARCHITECTURE SYN OF altddio_out3 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC ; + SIGNAL sub_wire2 : STD_LOGIC ; + SIGNAL sub_wire3 : STD_LOGIC_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire4 : STD_LOGIC ; + SIGNAL sub_wire5 : STD_LOGIC_VECTOR (0 DOWNTO 0); + + + + COMPONENT altddio_out + GENERIC ( + extend_oe_disable : STRING; + intended_device_family : STRING; + invert_output : STRING; + lpm_type : STRING; + oe_reg : STRING; + power_up_high : STRING; + width : NATURAL + ); + PORT ( + dataout : OUT STD_LOGIC_VECTOR (0 DOWNTO 0); + outclock : IN STD_LOGIC ; + datain_h : IN STD_LOGIC_VECTOR (0 DOWNTO 0); + datain_l : IN STD_LOGIC_VECTOR (0 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + sub_wire1 <= sub_wire0(0); + dataout <= sub_wire1; + sub_wire2 <= datain_h; + sub_wire3(0) <= sub_wire2; + sub_wire4 <= datain_l; + sub_wire5(0) <= sub_wire4; + + altddio_out_component : altddio_out + GENERIC MAP ( + extend_oe_disable => "UNUSED", + intended_device_family => "Cyclone III", + invert_output => "OFF", + lpm_type => "altddio_out", + oe_reg => "UNUSED", + power_up_high => "OFF", + width => 1 + ) + PORT MAP ( + outclock => outclock, + datain_h => sub_wire3, + datain_l => sub_wire5, + dataout => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ARESET_MODE NUMERIC "2" +-- Retrieval info: PRIVATE: CLKEN NUMERIC "0" +-- Retrieval info: PRIVATE: EXTEND_OE_DISABLE NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: OE NUMERIC "0" +-- Retrieval info: PRIVATE: OE_REG NUMERIC "0" +-- Retrieval info: PRIVATE: POWER_UP_HIGH NUMERIC "0" +-- Retrieval info: PRIVATE: SRESET_MODE NUMERIC "2" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: WIDTH NUMERIC "1" +-- Retrieval info: CONSTANT: EXTEND_OE_DISABLE STRING "UNUSED" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: INVERT_OUTPUT STRING "OFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altddio_out" +-- Retrieval info: CONSTANT: OE_REG STRING "UNUSED" +-- Retrieval info: CONSTANT: POWER_UP_HIGH STRING "OFF" +-- Retrieval info: CONSTANT: WIDTH NUMERIC "1" +-- Retrieval info: USED_PORT: datain_h 0 0 0 0 INPUT NODEFVAL datain_h +-- Retrieval info: USED_PORT: datain_l 0 0 0 0 INPUT NODEFVAL datain_l +-- Retrieval info: USED_PORT: dataout 0 0 0 0 OUTPUT NODEFVAL dataout +-- Retrieval info: USED_PORT: outclock 0 0 0 0 INPUT_CLK_EXT NODEFVAL outclock +-- Retrieval info: CONNECT: @datain_h 0 0 1 0 datain_h 0 0 0 0 +-- Retrieval info: CONNECT: @datain_l 0 0 1 0 datain_l 0 0 0 0 +-- Retrieval info: CONNECT: dataout 0 0 0 0 @dataout 0 0 1 0 +-- Retrieval info: CONNECT: @outclock 0 0 0 0 outclock 0 0 0 0 +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out3.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out3.ppf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out3.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out3.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out3.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altddio_out3_inst.vhd FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_quartus/altpll0.bsf b/FPGA_quartus/altpll0.bsf new file mode 100644 index 0000000..b9a2853 --- /dev/null +++ b/FPGA_quartus/altpll0.bsf @@ -0,0 +1,117 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2010 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 280 248) + (text "altpll0" (rect 120 1 167 20)(font "Arial" (font_size 10))) + (text "inst" (rect 8 229 31 244)(font "Arial" )) + (port + (pt 0 72) + (input) + (text "inclk0" (rect 0 0 40 16)(font "Arial" (font_size 8))) + (text "inclk0" (rect 4 56 38 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 48 72)(line_width 1)) + ) + (port + (pt 280 72) + (output) + (text "c0" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c0" (rect 263 56 277 72)(font "Arial" (font_size 8))) + (line (pt 280 72)(pt 248 72)(line_width 1)) + ) + (port + (pt 280 96) + (output) + (text "c1" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c1" (rect 263 80 277 96)(font "Arial" (font_size 8))) + (line (pt 280 96)(pt 248 96)(line_width 1)) + ) + (port + (pt 280 120) + (output) + (text "c2" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c2" (rect 263 104 277 120)(font "Arial" (font_size 8))) + (line (pt 280 120)(pt 248 120)(line_width 1)) + ) + (port + (pt 280 144) + (output) + (text "c3" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c3" (rect 263 128 277 144)(font "Arial" (font_size 8))) + (line (pt 280 144)(pt 248 144)(line_width 1)) + ) + (port + (pt 280 168) + (output) + (text "c4" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c4" (rect 263 152 277 168)(font "Arial" (font_size 8))) + (line (pt 280 168)(pt 248 168)(line_width 1)) + ) + (drawing + (text "Cyclone III" (rect 205 230 253 244)(font "Arial" )) + (text "inclk0 frequency: 33.000 MHz" (rect 58 67 201 81)(font "Arial" )) + (text "Operation Mode: Normal" (rect 58 84 173 98)(font "Arial" )) + (text "Clk " (rect 59 111 76 125)(font "Arial" )) + (text "Ratio" (rect 90 111 114 125)(font "Arial" )) + (text "Ph (dg)" (rect 128 111 163 125)(font "Arial" )) + (text "DC (%)" (rect 173 111 208 125)(font "Arial" )) + (text "c0" (rect 63 129 75 143)(font "Arial" )) + (text "16/11" (rect 89 129 116 143)(font "Arial" )) + (text "0.00" (rect 136 129 157 143)(font "Arial" )) + (text "50.00" (rect 178 129 205 143)(font "Arial" )) + (text "c1" (rect 63 147 75 161)(font "Arial" )) + (text "50/11" (rect 89 147 116 161)(font "Arial" )) + (text "0.00" (rect 136 147 157 161)(font "Arial" )) + (text "50.00" (rect 178 147 205 161)(font "Arial" )) + (text "c2" (rect 63 165 75 179)(font "Arial" )) + (text "40/11" (rect 89 165 116 179)(font "Arial" )) + (text "0.00" (rect 136 165 157 179)(font "Arial" )) + (text "50.00" (rect 178 165 205 179)(font "Arial" )) + (text "c3" (rect 63 183 75 197)(font "Arial" )) + (text "109/33" (rect 85 183 118 197)(font "Arial" )) + (text "0.00" (rect 136 183 157 197)(font "Arial" )) + (text "50.00" (rect 178 183 205 197)(font "Arial" )) + (text "c4" (rect 63 201 75 215)(font "Arial" )) + (text "109/39" (rect 85 201 118 215)(font "Arial" )) + (text "0.00" (rect 136 201 157 215)(font "Arial" )) + (text "50.00" (rect 178 201 205 215)(font "Arial" )) + (line (pt 0 0)(pt 281 0)(line_width 1)) + (line (pt 281 0)(pt 281 249)(line_width 1)) + (line (pt 0 249)(pt 281 249)(line_width 1)) + (line (pt 0 0)(pt 0 249)(line_width 1)) + (line (pt 56 108)(pt 215 108)(line_width 1)) + (line (pt 56 125)(pt 215 125)(line_width 1)) + (line (pt 56 143)(pt 215 143)(line_width 1)) + (line (pt 56 161)(pt 215 161)(line_width 1)) + (line (pt 56 179)(pt 215 179)(line_width 1)) + (line (pt 56 197)(pt 215 197)(line_width 1)) + (line (pt 56 215)(pt 215 215)(line_width 1)) + (line (pt 56 108)(pt 56 215)(line_width 1)) + (line (pt 82 108)(pt 82 215)(line_width 3)) + (line (pt 125 108)(pt 125 215)(line_width 3)) + (line (pt 170 108)(pt 170 215)(line_width 3)) + (line (pt 214 108)(pt 214 215)(line_width 1)) + (line (pt 48 56)(pt 248 56)(line_width 1)) + (line (pt 248 56)(pt 248 232)(line_width 1)) + (line (pt 48 232)(pt 248 232)(line_width 1)) + (line (pt 48 56)(pt 48 232)(line_width 1)) + ) +) diff --git a/FPGA_quartus/altpll0.cmp b/FPGA_quartus/altpll0.cmp new file mode 100644 index 0000000..5097275 --- /dev/null +++ b/FPGA_quartus/altpll0.cmp @@ -0,0 +1,26 @@ +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component altpll0 + PORT + ( + inclk0 : IN STD_LOGIC := '0'; + c0 : OUT STD_LOGIC ; + c1 : OUT STD_LOGIC ; + c2 : OUT STD_LOGIC ; + c3 : OUT STD_LOGIC ; + c4 : OUT STD_LOGIC + ); +end component; diff --git a/FPGA_quartus/altpll0.inc b/FPGA_quartus/altpll0.inc new file mode 100644 index 0000000..933af49 --- /dev/null +++ b/FPGA_quartus/altpll0.inc @@ -0,0 +1,27 @@ +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION altpll0 +( + inclk0 +) + +RETURNS ( + c0, + c1, + c2, + c3, + c4 +); diff --git a/FPGA_quartus/altpll0.ppf b/FPGA_quartus/altpll0.ppf new file mode 100644 index 0000000..521a742 --- /dev/null +++ b/FPGA_quartus/altpll0.ppf @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/FPGA_quartus/altpll0.qip b/FPGA_quartus/altpll0.qip new file mode 100644 index 0000000..1b4cd11 --- /dev/null +++ b/FPGA_quartus/altpll0.qip @@ -0,0 +1,7 @@ +set_global_assignment -name IP_TOOL_NAME "ALTPLL" +set_global_assignment -name IP_TOOL_VERSION "9.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "altpll0.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll0.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll0.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll0.cmp"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll0.ppf"] diff --git a/FPGA_quartus/altpll0.vhd b/FPGA_quartus/altpll0.vhd new file mode 100644 index 0000000..b035bf5 --- /dev/null +++ b/FPGA_quartus/altpll0.vhd @@ -0,0 +1,477 @@ +-- megafunction wizard: %ALTPLL% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altpll + +-- ============================================================ +-- File Name: altpll0.vhd +-- Megafunction Name(s): +-- altpll +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 9.1 Build 350 03/24/2010 SP 2 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY altpll0 IS + PORT + ( + inclk0 : IN STD_LOGIC := '0'; + c0 : OUT STD_LOGIC ; + c1 : OUT STD_LOGIC ; + c2 : OUT STD_LOGIC ; + c3 : OUT STD_LOGIC ; + c4 : OUT STD_LOGIC + ); +END altpll0; + + +ARCHITECTURE SYN OF altpll0 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (4 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC ; + SIGNAL sub_wire2 : STD_LOGIC ; + SIGNAL sub_wire3 : STD_LOGIC ; + SIGNAL sub_wire4 : STD_LOGIC ; + SIGNAL sub_wire5 : STD_LOGIC ; + SIGNAL sub_wire6 : STD_LOGIC ; + SIGNAL sub_wire7 : STD_LOGIC_VECTOR (1 DOWNTO 0); + SIGNAL sub_wire8_bv : BIT_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire8 : STD_LOGIC_VECTOR (0 DOWNTO 0); + + + + COMPONENT altpll + GENERIC ( + bandwidth_type : STRING; + clk0_divide_by : NATURAL; + clk0_duty_cycle : NATURAL; + clk0_multiply_by : NATURAL; + clk0_phase_shift : STRING; + clk1_divide_by : NATURAL; + clk1_duty_cycle : NATURAL; + clk1_multiply_by : NATURAL; + clk1_phase_shift : STRING; + clk2_divide_by : NATURAL; + clk2_duty_cycle : NATURAL; + clk2_multiply_by : NATURAL; + clk2_phase_shift : STRING; + clk3_divide_by : NATURAL; + clk3_duty_cycle : NATURAL; + clk3_multiply_by : NATURAL; + clk3_phase_shift : STRING; + clk4_divide_by : NATURAL; + clk4_duty_cycle : NATURAL; + clk4_multiply_by : NATURAL; + clk4_phase_shift : STRING; + compensate_clock : STRING; + inclk0_input_frequency : NATURAL; + intended_device_family : STRING; + lpm_type : STRING; + operation_mode : STRING; + pll_type : STRING; + port_activeclock : STRING; + port_areset : STRING; + port_clkbad0 : STRING; + port_clkbad1 : STRING; + port_clkloss : STRING; + port_clkswitch : STRING; + port_configupdate : STRING; + port_fbin : STRING; + port_inclk0 : STRING; + port_inclk1 : STRING; + port_locked : STRING; + port_pfdena : STRING; + port_phasecounterselect : STRING; + port_phasedone : STRING; + port_phasestep : STRING; + port_phaseupdown : STRING; + port_pllena : STRING; + port_scanaclr : STRING; + port_scanclk : STRING; + port_scanclkena : STRING; + port_scandata : STRING; + port_scandataout : STRING; + port_scandone : STRING; + port_scanread : STRING; + port_scanwrite : STRING; + port_clk0 : STRING; + port_clk1 : STRING; + port_clk2 : STRING; + port_clk3 : STRING; + port_clk4 : STRING; + port_clk5 : STRING; + port_clkena0 : STRING; + port_clkena1 : STRING; + port_clkena2 : STRING; + port_clkena3 : STRING; + port_clkena4 : STRING; + port_clkena5 : STRING; + port_extclk0 : STRING; + port_extclk1 : STRING; + port_extclk2 : STRING; + port_extclk3 : STRING; + width_clock : NATURAL + ); + PORT ( + inclk : IN STD_LOGIC_VECTOR (1 DOWNTO 0); + clk : OUT STD_LOGIC_VECTOR (4 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + sub_wire8_bv(0 DOWNTO 0) <= "0"; + sub_wire8 <= To_stdlogicvector(sub_wire8_bv); + sub_wire5 <= sub_wire0(4); + sub_wire4 <= sub_wire0(3); + sub_wire3 <= sub_wire0(2); + sub_wire2 <= sub_wire0(1); + sub_wire1 <= sub_wire0(0); + c0 <= sub_wire1; + c1 <= sub_wire2; + c2 <= sub_wire3; + c3 <= sub_wire4; + c4 <= sub_wire5; + sub_wire6 <= inclk0; + sub_wire7 <= sub_wire8(0 DOWNTO 0) & sub_wire6; + + altpll_component : altpll + GENERIC MAP ( + bandwidth_type => "AUTO", + clk0_divide_by => 11, + clk0_duty_cycle => 50, + clk0_multiply_by => 16, + clk0_phase_shift => "0", + clk1_divide_by => 11, + clk1_duty_cycle => 50, + clk1_multiply_by => 50, + clk1_phase_shift => "0", + clk2_divide_by => 11, + clk2_duty_cycle => 50, + clk2_multiply_by => 40, + clk2_phase_shift => "0", + clk3_divide_by => 33, + clk3_duty_cycle => 50, + clk3_multiply_by => 109, + clk3_phase_shift => "0", + clk4_divide_by => 39, + clk4_duty_cycle => 50, + clk4_multiply_by => 109, + clk4_phase_shift => "0", + compensate_clock => "CLK0", + inclk0_input_frequency => 30303, + intended_device_family => "Cyclone III", + lpm_type => "altpll", + operation_mode => "NORMAL", + pll_type => "AUTO", + port_activeclock => "PORT_UNUSED", + port_areset => "PORT_UNUSED", + port_clkbad0 => "PORT_UNUSED", + port_clkbad1 => "PORT_UNUSED", + port_clkloss => "PORT_UNUSED", + port_clkswitch => "PORT_UNUSED", + port_configupdate => "PORT_UNUSED", + port_fbin => "PORT_UNUSED", + port_inclk0 => "PORT_USED", + port_inclk1 => "PORT_UNUSED", + port_locked => "PORT_UNUSED", + port_pfdena => "PORT_UNUSED", + port_phasecounterselect => "PORT_UNUSED", + port_phasedone => "PORT_UNUSED", + port_phasestep => "PORT_UNUSED", + port_phaseupdown => "PORT_UNUSED", + port_pllena => "PORT_UNUSED", + port_scanaclr => "PORT_UNUSED", + port_scanclk => "PORT_UNUSED", + port_scanclkena => "PORT_UNUSED", + port_scandata => "PORT_UNUSED", + port_scandataout => "PORT_UNUSED", + port_scandone => "PORT_UNUSED", + port_scanread => "PORT_UNUSED", + port_scanwrite => "PORT_UNUSED", + port_clk0 => "PORT_USED", + port_clk1 => "PORT_USED", + port_clk2 => "PORT_USED", + port_clk3 => "PORT_USED", + port_clk4 => "PORT_USED", + port_clk5 => "PORT_UNUSED", + port_clkena0 => "PORT_UNUSED", + port_clkena1 => "PORT_UNUSED", + port_clkena2 => "PORT_UNUSED", + port_clkena3 => "PORT_UNUSED", + port_clkena4 => "PORT_UNUSED", + port_clkena5 => "PORT_UNUSED", + port_extclk0 => "PORT_UNUSED", + port_extclk1 => "PORT_UNUSED", + port_extclk2 => "PORT_UNUSED", + port_extclk3 => "PORT_UNUSED", + width_clock => 5 + ) + PORT MAP ( + inclk => sub_wire7, + clk => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0" +-- Retrieval info: PRIVATE: BANDWIDTH STRING "1.000" +-- Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz" +-- Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "1" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "0" +-- Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "0" +-- Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "0" +-- Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0" +-- Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0" +-- Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c0" +-- Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "e0" +-- Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "8" +-- Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "75" +-- Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "33" +-- Retrieval info: PRIVATE: DIV_FACTOR2 NUMERIC "36" +-- Retrieval info: PRIVATE: DIV_FACTOR3 NUMERIC "39" +-- Retrieval info: PRIVATE: DIV_FACTOR4 NUMERIC "39" +-- Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE1 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE2 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE3 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE4 STRING "50.00000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "48.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "150.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE2 STRING "120.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE3 STRING "109.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE4 STRING "92.230766" +-- Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0" +-- Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0" +-- Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575" +-- Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1" +-- Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "33.000" +-- Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1" +-- Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "0" +-- Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "330.000" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT1 STRING "ps" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT2 STRING "ps" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT3 STRING "ps" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT4 STRING "ps" +-- Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any" +-- Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK1 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK2 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK3 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK4 STRING "0" +-- Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "109" +-- Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "109" +-- Retrieval info: PRIVATE: MULT_FACTOR2 NUMERIC "109" +-- Retrieval info: PRIVATE: MULT_FACTOR3 NUMERIC "109" +-- Retrieval info: PRIVATE: MULT_FACTOR4 NUMERIC "109" +-- Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "48.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "150.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ2 STRING "120.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ3 STRING "109.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ4 STRING "92.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE1 STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE2 STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE3 STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE4 STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT1 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT2 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT3 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT4 STRING "MHz" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT1 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT2 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT3 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT4 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT1 STRING "ps" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT2 STRING "ps" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT3 STRING "ps" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT4 STRING "ps" +-- Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1" +-- Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0" +-- Retrieval info: PRIVATE: RECONFIG_FILE STRING "altpll0.mif" +-- Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "0" +-- Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0" +-- Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000" +-- Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz" +-- Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500" +-- Retrieval info: PRIVATE: SPREAD_USE STRING "0" +-- Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "0" +-- Retrieval info: PRIVATE: STICKY_CLK0 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK1 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK2 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK3 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK4 STRING "1" +-- Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1" +-- Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: USE_CLK0 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK1 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK2 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK3 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK4 STRING "1" +-- Retrieval info: PRIVATE: USE_CLKENA0 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA1 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA2 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA3 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA4 STRING "0" +-- Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0" +-- Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0" +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: CONSTANT: BANDWIDTH_TYPE STRING "AUTO" +-- Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "11" +-- Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "16" +-- Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK1_DIVIDE_BY NUMERIC "11" +-- Retrieval info: CONSTANT: CLK1_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK1_MULTIPLY_BY NUMERIC "50" +-- Retrieval info: CONSTANT: CLK1_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK2_DIVIDE_BY NUMERIC "11" +-- Retrieval info: CONSTANT: CLK2_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK2_MULTIPLY_BY NUMERIC "40" +-- Retrieval info: CONSTANT: CLK2_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK3_DIVIDE_BY NUMERIC "33" +-- Retrieval info: CONSTANT: CLK3_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK3_MULTIPLY_BY NUMERIC "109" +-- Retrieval info: CONSTANT: CLK3_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK4_DIVIDE_BY NUMERIC "39" +-- Retrieval info: CONSTANT: CLK4_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK4_MULTIPLY_BY NUMERIC "109" +-- Retrieval info: CONSTANT: CLK4_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK0" +-- Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "30303" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altpll" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "NORMAL" +-- Retrieval info: CONSTANT: PLL_TYPE STRING "AUTO" +-- Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: WIDTH_CLOCK NUMERIC "5" +-- Retrieval info: USED_PORT: @clk 0 0 5 0 OUTPUT_CLK_EXT VCC "@clk[4..0]" +-- Retrieval info: USED_PORT: @inclk 0 0 2 0 INPUT_CLK_EXT VCC "@inclk[1..0]" +-- Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0" +-- Retrieval info: USED_PORT: c1 0 0 0 0 OUTPUT_CLK_EXT VCC "c1" +-- Retrieval info: USED_PORT: c2 0 0 0 0 OUTPUT_CLK_EXT VCC "c2" +-- Retrieval info: USED_PORT: c3 0 0 0 0 OUTPUT_CLK_EXT VCC "c3" +-- Retrieval info: USED_PORT: c4 0 0 0 0 OUTPUT_CLK_EXT VCC "c4" +-- Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0" +-- Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0 +-- Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0 +-- Retrieval info: CONNECT: c1 0 0 0 0 @clk 0 0 1 1 +-- Retrieval info: CONNECT: c3 0 0 0 0 @clk 0 0 1 3 +-- Retrieval info: CONNECT: c2 0 0 0 0 @clk 0 0 1 2 +-- Retrieval info: CONNECT: c4 0 0 0 0 @clk 0 0 1 4 +-- Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0 +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll0.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll0.ppf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll0.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll0.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll0.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll0_inst.vhd FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll0_waveforms.html TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll0_wave*.jpg FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_quartus/altpll0_waveforms.html b/FPGA_quartus/altpll0_waveforms.html new file mode 100644 index 0000000..80e236a --- /dev/null +++ b/FPGA_quartus/altpll0_waveforms.html @@ -0,0 +1,10 @@ + + +Sample Waveforms for "altpll0.vhd" + + +

Sample behavioral waveforms for design file "altpll0.vhd"

+

+

+ + diff --git a/FPGA_quartus/altpll1.bsf b/FPGA_quartus/altpll1.bsf new file mode 100644 index 0000000..d1e4a9e --- /dev/null +++ b/FPGA_quartus/altpll1.bsf @@ -0,0 +1,100 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2010 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 328 216) + (text "altpll1" (rect 144 1 191 20)(font "Arial" (font_size 10))) + (text "inst" (rect 8 197 31 212)(font "Arial" )) + (port + (pt 0 72) + (input) + (text "inclk0" (rect 0 0 40 16)(font "Arial" (font_size 8))) + (text "inclk0" (rect 4 56 38 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 48 72)(line_width 1)) + ) + (port + (pt 328 72) + (output) + (text "c0" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c0" (rect 311 56 325 72)(font "Arial" (font_size 8))) + (line (pt 328 72)(pt 272 72)(line_width 1)) + ) + (port + (pt 328 96) + (output) + (text "c1" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c1" (rect 311 80 325 96)(font "Arial" (font_size 8))) + (line (pt 328 96)(pt 272 96)(line_width 1)) + ) + (port + (pt 328 120) + (output) + (text "c2" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c2" (rect 311 104 325 120)(font "Arial" (font_size 8))) + (line (pt 328 120)(pt 272 120)(line_width 1)) + ) + (port + (pt 328 144) + (output) + (text "locked" (rect 0 0 44 16)(font "Arial" (font_size 8))) + (text "locked" (rect 287 128 325 144)(font "Arial" (font_size 8))) + (line (pt 328 144)(pt 272 144)(line_width 1)) + ) + (drawing + (text "Cyclone III" (rect 253 198 301 212)(font "Arial" )) + (text "inclk0 frequency: 33.000 MHz" (rect 58 67 201 81)(font "Arial" )) + (text "Operation Mode: Src Sync Comp" (rect 58 84 215 98)(font "Arial" )) + (text "Clk " (rect 59 111 76 125)(font "Arial" )) + (text "Ratio" (rect 90 111 114 125)(font "Arial" )) + (text "Ph (dg)" (rect 128 111 163 125)(font "Arial" )) + (text "DC (%)" (rect 173 111 208 125)(font "Arial" )) + (text "c0" (rect 63 129 75 143)(font "Arial" )) + (text "1/66" (rect 92 129 113 143)(font "Arial" )) + (text "0.00" (rect 136 129 157 143)(font "Arial" )) + (text "50.00" (rect 178 129 205 143)(font "Arial" )) + (text "c1" (rect 63 147 75 161)(font "Arial" )) + (text "67/900" (rect 85 147 118 161)(font "Arial" )) + (text "0.00" (rect 136 147 157 161)(font "Arial" )) + (text "50.00" (rect 178 147 205 161)(font "Arial" )) + (text "c2" (rect 63 165 75 179)(font "Arial" )) + (text "67/90" (rect 89 165 116 179)(font "Arial" )) + (text "0.00" (rect 136 165 157 179)(font "Arial" )) + (text "50.00" (rect 178 165 205 179)(font "Arial" )) + (line (pt 0 0)(pt 329 0)(line_width 1)) + (line (pt 329 0)(pt 329 217)(line_width 1)) + (line (pt 0 217)(pt 329 217)(line_width 1)) + (line (pt 0 0)(pt 0 217)(line_width 1)) + (line (pt 56 108)(pt 215 108)(line_width 1)) + (line (pt 56 125)(pt 215 125)(line_width 1)) + (line (pt 56 143)(pt 215 143)(line_width 1)) + (line (pt 56 161)(pt 215 161)(line_width 1)) + (line (pt 56 179)(pt 215 179)(line_width 1)) + (line (pt 56 108)(pt 56 179)(line_width 1)) + (line (pt 82 108)(pt 82 179)(line_width 3)) + (line (pt 125 108)(pt 125 179)(line_width 3)) + (line (pt 170 108)(pt 170 179)(line_width 3)) + (line (pt 214 108)(pt 214 179)(line_width 1)) + (line (pt 48 56)(pt 272 56)(line_width 1)) + (line (pt 272 56)(pt 272 200)(line_width 1)) + (line (pt 48 200)(pt 272 200)(line_width 1)) + (line (pt 48 56)(pt 48 200)(line_width 1)) + ) +) diff --git a/FPGA_quartus/altpll1.cmp b/FPGA_quartus/altpll1.cmp new file mode 100644 index 0000000..300576d --- /dev/null +++ b/FPGA_quartus/altpll1.cmp @@ -0,0 +1,25 @@ +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component altpll1 + PORT + ( + inclk0 : IN STD_LOGIC := '0'; + c0 : OUT STD_LOGIC ; + c1 : OUT STD_LOGIC ; + c2 : OUT STD_LOGIC ; + locked : OUT STD_LOGIC + ); +end component; diff --git a/FPGA_quartus/altpll1.inc b/FPGA_quartus/altpll1.inc new file mode 100644 index 0000000..0923ad2 --- /dev/null +++ b/FPGA_quartus/altpll1.inc @@ -0,0 +1,26 @@ +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION altpll1 +( + inclk0 +) + +RETURNS ( + c0, + c1, + c2, + locked +); diff --git a/FPGA_quartus/altpll1.ppf b/FPGA_quartus/altpll1.ppf new file mode 100644 index 0000000..0f38a28 --- /dev/null +++ b/FPGA_quartus/altpll1.ppf @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/FPGA_quartus/altpll1.qip b/FPGA_quartus/altpll1.qip new file mode 100644 index 0000000..ec03f05 --- /dev/null +++ b/FPGA_quartus/altpll1.qip @@ -0,0 +1,7 @@ +set_global_assignment -name IP_TOOL_NAME "ALTPLL" +set_global_assignment -name IP_TOOL_VERSION "9.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "altpll1.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll1.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll1.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll1.cmp"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll1.ppf"] diff --git a/FPGA_quartus/altpll1.vhd b/FPGA_quartus/altpll1.vhd new file mode 100644 index 0000000..ab9bfaf --- /dev/null +++ b/FPGA_quartus/altpll1.vhd @@ -0,0 +1,423 @@ +-- megafunction wizard: %ALTPLL% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altpll + +-- ============================================================ +-- File Name: altpll1.vhd +-- Megafunction Name(s): +-- altpll +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 9.1 Build 350 03/24/2010 SP 2 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY altpll1 IS + PORT + ( + inclk0 : IN STD_LOGIC := '0'; + c0 : OUT STD_LOGIC ; + c1 : OUT STD_LOGIC ; + c2 : OUT STD_LOGIC ; + locked : OUT STD_LOGIC + ); +END altpll1; + + +ARCHITECTURE SYN OF altpll1 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (4 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC ; + SIGNAL sub_wire2 : STD_LOGIC ; + SIGNAL sub_wire3 : STD_LOGIC ; + SIGNAL sub_wire4 : STD_LOGIC ; + SIGNAL sub_wire5 : STD_LOGIC ; + SIGNAL sub_wire6 : STD_LOGIC_VECTOR (1 DOWNTO 0); + SIGNAL sub_wire7_bv : BIT_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire7 : STD_LOGIC_VECTOR (0 DOWNTO 0); + + + + COMPONENT altpll + GENERIC ( + bandwidth_type : STRING; + clk0_divide_by : NATURAL; + clk0_duty_cycle : NATURAL; + clk0_multiply_by : NATURAL; + clk0_phase_shift : STRING; + clk1_divide_by : NATURAL; + clk1_duty_cycle : NATURAL; + clk1_multiply_by : NATURAL; + clk1_phase_shift : STRING; + clk2_divide_by : NATURAL; + clk2_duty_cycle : NATURAL; + clk2_multiply_by : NATURAL; + clk2_phase_shift : STRING; + compensate_clock : STRING; + inclk0_input_frequency : NATURAL; + intended_device_family : STRING; + lpm_type : STRING; + operation_mode : STRING; + pll_type : STRING; + port_activeclock : STRING; + port_areset : STRING; + port_clkbad0 : STRING; + port_clkbad1 : STRING; + port_clkloss : STRING; + port_clkswitch : STRING; + port_configupdate : STRING; + port_fbin : STRING; + port_inclk0 : STRING; + port_inclk1 : STRING; + port_locked : STRING; + port_pfdena : STRING; + port_phasecounterselect : STRING; + port_phasedone : STRING; + port_phasestep : STRING; + port_phaseupdown : STRING; + port_pllena : STRING; + port_scanaclr : STRING; + port_scanclk : STRING; + port_scanclkena : STRING; + port_scandata : STRING; + port_scandataout : STRING; + port_scandone : STRING; + port_scanread : STRING; + port_scanwrite : STRING; + port_clk0 : STRING; + port_clk1 : STRING; + port_clk2 : STRING; + port_clk3 : STRING; + port_clk4 : STRING; + port_clk5 : STRING; + port_clkena0 : STRING; + port_clkena1 : STRING; + port_clkena2 : STRING; + port_clkena3 : STRING; + port_clkena4 : STRING; + port_clkena5 : STRING; + port_extclk0 : STRING; + port_extclk1 : STRING; + port_extclk2 : STRING; + port_extclk3 : STRING; + self_reset_on_loss_lock : STRING; + width_clock : NATURAL + ); + PORT ( + inclk : IN STD_LOGIC_VECTOR (1 DOWNTO 0); + locked : OUT STD_LOGIC ; + clk : OUT STD_LOGIC_VECTOR (4 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + sub_wire7_bv(0 DOWNTO 0) <= "0"; + sub_wire7 <= To_stdlogicvector(sub_wire7_bv); + sub_wire3 <= sub_wire0(2); + sub_wire2 <= sub_wire0(1); + sub_wire1 <= sub_wire0(0); + c0 <= sub_wire1; + c1 <= sub_wire2; + c2 <= sub_wire3; + locked <= sub_wire4; + sub_wire5 <= inclk0; + sub_wire6 <= sub_wire7(0 DOWNTO 0) & sub_wire5; + + altpll_component : altpll + GENERIC MAP ( + bandwidth_type => "AUTO", + clk0_divide_by => 66, + clk0_duty_cycle => 50, + clk0_multiply_by => 1, + clk0_phase_shift => "0", + clk1_divide_by => 900, + clk1_duty_cycle => 50, + clk1_multiply_by => 67, + clk1_phase_shift => "0", + clk2_divide_by => 90, + clk2_duty_cycle => 50, + clk2_multiply_by => 67, + clk2_phase_shift => "0", + compensate_clock => "CLK0", + inclk0_input_frequency => 30303, + intended_device_family => "Cyclone III", + lpm_type => "altpll", + operation_mode => "SOURCE_SYNCHRONOUS", + pll_type => "AUTO", + port_activeclock => "PORT_UNUSED", + port_areset => "PORT_UNUSED", + port_clkbad0 => "PORT_UNUSED", + port_clkbad1 => "PORT_UNUSED", + port_clkloss => "PORT_UNUSED", + port_clkswitch => "PORT_UNUSED", + port_configupdate => "PORT_UNUSED", + port_fbin => "PORT_UNUSED", + port_inclk0 => "PORT_USED", + port_inclk1 => "PORT_UNUSED", + port_locked => "PORT_USED", + port_pfdena => "PORT_UNUSED", + port_phasecounterselect => "PORT_UNUSED", + port_phasedone => "PORT_UNUSED", + port_phasestep => "PORT_UNUSED", + port_phaseupdown => "PORT_UNUSED", + port_pllena => "PORT_UNUSED", + port_scanaclr => "PORT_UNUSED", + port_scanclk => "PORT_UNUSED", + port_scanclkena => "PORT_UNUSED", + port_scandata => "PORT_UNUSED", + port_scandataout => "PORT_UNUSED", + port_scandone => "PORT_UNUSED", + port_scanread => "PORT_UNUSED", + port_scanwrite => "PORT_UNUSED", + port_clk0 => "PORT_USED", + port_clk1 => "PORT_USED", + port_clk2 => "PORT_USED", + port_clk3 => "PORT_UNUSED", + port_clk4 => "PORT_UNUSED", + port_clk5 => "PORT_UNUSED", + port_clkena0 => "PORT_UNUSED", + port_clkena1 => "PORT_UNUSED", + port_clkena2 => "PORT_UNUSED", + port_clkena3 => "PORT_UNUSED", + port_clkena4 => "PORT_UNUSED", + port_clkena5 => "PORT_UNUSED", + port_extclk0 => "PORT_UNUSED", + port_extclk1 => "PORT_UNUSED", + port_extclk2 => "PORT_UNUSED", + port_extclk3 => "PORT_UNUSED", + self_reset_on_loss_lock => "OFF", + width_clock => 5 + ) + PORT MAP ( + inclk => sub_wire6, + clk => sub_wire0, + locked => sub_wire4 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0" +-- Retrieval info: PRIVATE: BANDWIDTH STRING "1.000" +-- Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz" +-- Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "1" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "0" +-- Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "0" +-- Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "0" +-- Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0" +-- Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0" +-- Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c0" +-- Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "e0" +-- Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "8" +-- Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "90" +-- Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "900" +-- Retrieval info: PRIVATE: DIV_FACTOR2 NUMERIC "90" +-- Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE1 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE2 STRING "50.00000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "0.500000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "2.456667" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE2 STRING "24.566668" +-- Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0" +-- Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0" +-- Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575" +-- Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1" +-- Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "33.000" +-- Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1" +-- Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "1" +-- Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "330.000" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT1 STRING "deg" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT2 STRING "deg" +-- Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any" +-- Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK1 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK2 STRING "0" +-- Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "67" +-- Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "67" +-- Retrieval info: PRIVATE: MULT_FACTOR2 NUMERIC "67" +-- Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "0.50000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "2.45760000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ2 STRING "24.57600000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE1 STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE2 STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT1 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT2 STRING "MHz" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT1 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT2 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT1 STRING "deg" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT2 STRING "deg" +-- Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1" +-- Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0" +-- Retrieval info: PRIVATE: RECONFIG_FILE STRING "altpll1.mif" +-- Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "0" +-- Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0" +-- Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000" +-- Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz" +-- Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500" +-- Retrieval info: PRIVATE: SPREAD_USE STRING "0" +-- Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK0 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK1 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK2 STRING "1" +-- Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1" +-- Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: USE_CLK0 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK1 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK2 STRING "1" +-- Retrieval info: PRIVATE: USE_CLKENA0 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA1 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA2 STRING "0" +-- Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0" +-- Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0" +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: CONSTANT: BANDWIDTH_TYPE STRING "AUTO" +-- Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "66" +-- Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "1" +-- Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK1_DIVIDE_BY NUMERIC "900" +-- Retrieval info: CONSTANT: CLK1_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK1_MULTIPLY_BY NUMERIC "67" +-- Retrieval info: CONSTANT: CLK1_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK2_DIVIDE_BY NUMERIC "90" +-- Retrieval info: CONSTANT: CLK2_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK2_MULTIPLY_BY NUMERIC "67" +-- Retrieval info: CONSTANT: CLK2_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK0" +-- Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "30303" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altpll" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "SOURCE_SYNCHRONOUS" +-- Retrieval info: CONSTANT: PLL_TYPE STRING "AUTO" +-- Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: SELF_RESET_ON_LOSS_LOCK STRING "OFF" +-- Retrieval info: CONSTANT: WIDTH_CLOCK NUMERIC "5" +-- Retrieval info: USED_PORT: @clk 0 0 5 0 OUTPUT_CLK_EXT VCC "@clk[4..0]" +-- Retrieval info: USED_PORT: @inclk 0 0 2 0 INPUT_CLK_EXT VCC "@inclk[1..0]" +-- Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0" +-- Retrieval info: USED_PORT: c1 0 0 0 0 OUTPUT_CLK_EXT VCC "c1" +-- Retrieval info: USED_PORT: c2 0 0 0 0 OUTPUT_CLK_EXT VCC "c2" +-- Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0" +-- Retrieval info: USED_PORT: locked 0 0 0 0 OUTPUT GND "locked" +-- Retrieval info: CONNECT: locked 0 0 0 0 @locked 0 0 0 0 +-- Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0 +-- Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0 +-- Retrieval info: CONNECT: c1 0 0 0 0 @clk 0 0 1 1 +-- Retrieval info: CONNECT: c2 0 0 0 0 @clk 0 0 1 2 +-- Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0 +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll1.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll1.ppf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll1.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll1.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll1.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll1_inst.vhd FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll1_waveforms.html TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll1_wave*.jpg FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_quartus/altpll1_waveforms.html b/FPGA_quartus/altpll1_waveforms.html new file mode 100644 index 0000000..1382a12 --- /dev/null +++ b/FPGA_quartus/altpll1_waveforms.html @@ -0,0 +1,10 @@ + + +Sample Waveforms for "altpll1.vhd" + + +

Sample behavioral waveforms for design file "altpll1.vhd"

+

+

+ + diff --git a/FPGA_quartus/altpll2.bsf b/FPGA_quartus/altpll2.bsf new file mode 100644 index 0000000..79679d7 --- /dev/null +++ b/FPGA_quartus/altpll2.bsf @@ -0,0 +1,117 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2010 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 304 248) + (text "altpll2" (rect 132 1 179 20)(font "Arial" (font_size 10))) + (text "inst" (rect 8 229 31 244)(font "Arial" )) + (port + (pt 0 72) + (input) + (text "inclk0" (rect 0 0 40 16)(font "Arial" (font_size 8))) + (text "inclk0" (rect 4 56 38 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 48 72)(line_width 1)) + ) + (port + (pt 304 72) + (output) + (text "c0" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c0" (rect 287 56 301 72)(font "Arial" (font_size 8))) + (line (pt 304 72)(pt 272 72)(line_width 1)) + ) + (port + (pt 304 96) + (output) + (text "c1" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c1" (rect 287 80 301 96)(font "Arial" (font_size 8))) + (line (pt 304 96)(pt 272 96)(line_width 1)) + ) + (port + (pt 304 120) + (output) + (text "c2" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c2" (rect 287 104 301 120)(font "Arial" (font_size 8))) + (line (pt 304 120)(pt 272 120)(line_width 1)) + ) + (port + (pt 304 144) + (output) + (text "c3" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c3" (rect 287 128 301 144)(font "Arial" (font_size 8))) + (line (pt 304 144)(pt 272 144)(line_width 1)) + ) + (port + (pt 304 168) + (output) + (text "c4" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c4" (rect 287 152 301 168)(font "Arial" (font_size 8))) + (line (pt 304 168)(pt 272 168)(line_width 1)) + ) + (drawing + (text "Cyclone III" (rect 229 230 277 244)(font "Arial" )) + (text "inclk0 frequency: 33.000 MHz" (rect 58 67 201 81)(font "Arial" )) + (text "Operation Mode: Src Sync Comp" (rect 58 84 215 98)(font "Arial" )) + (text "Clk " (rect 59 111 76 125)(font "Arial" )) + (text "Ratio" (rect 85 111 109 125)(font "Arial" )) + (text "Ph (dg)" (rect 119 111 154 125)(font "Arial" )) + (text "DC (%)" (rect 164 111 199 125)(font "Arial" )) + (text "c0" (rect 63 129 75 143)(font "Arial" )) + (text "4/1" (rect 91 129 106 143)(font "Arial" )) + (text "240.00" (rect 120 129 153 143)(font "Arial" )) + (text "50.00" (rect 169 129 196 143)(font "Arial" )) + (text "c1" (rect 63 147 75 161)(font "Arial" )) + (text "4/1" (rect 91 147 106 161)(font "Arial" )) + (text "0.00" (rect 127 147 148 161)(font "Arial" )) + (text "50.00" (rect 169 147 196 161)(font "Arial" )) + (text "c2" (rect 63 165 75 179)(font "Arial" )) + (text "4/1" (rect 91 165 106 179)(font "Arial" )) + (text "180.00" (rect 120 165 153 179)(font "Arial" )) + (text "50.00" (rect 169 165 196 179)(font "Arial" )) + (text "c3" (rect 63 183 75 197)(font "Arial" )) + (text "4/1" (rect 91 183 106 197)(font "Arial" )) + (text "105.00" (rect 120 183 153 197)(font "Arial" )) + (text "50.00" (rect 169 183 196 197)(font "Arial" )) + (text "c4" (rect 63 201 75 215)(font "Arial" )) + (text "2/1" (rect 91 201 106 215)(font "Arial" )) + (text "270.00" (rect 120 201 153 215)(font "Arial" )) + (text "50.00" (rect 169 201 196 215)(font "Arial" )) + (line (pt 0 0)(pt 305 0)(line_width 1)) + (line (pt 305 0)(pt 305 249)(line_width 1)) + (line (pt 0 249)(pt 305 249)(line_width 1)) + (line (pt 0 0)(pt 0 249)(line_width 1)) + (line (pt 56 108)(pt 206 108)(line_width 1)) + (line (pt 56 125)(pt 206 125)(line_width 1)) + (line (pt 56 143)(pt 206 143)(line_width 1)) + (line (pt 56 161)(pt 206 161)(line_width 1)) + (line (pt 56 179)(pt 206 179)(line_width 1)) + (line (pt 56 197)(pt 206 197)(line_width 1)) + (line (pt 56 215)(pt 206 215)(line_width 1)) + (line (pt 56 108)(pt 56 215)(line_width 1)) + (line (pt 82 108)(pt 82 215)(line_width 3)) + (line (pt 116 108)(pt 116 215)(line_width 3)) + (line (pt 161 108)(pt 161 215)(line_width 3)) + (line (pt 205 108)(pt 205 215)(line_width 1)) + (line (pt 48 56)(pt 272 56)(line_width 1)) + (line (pt 272 56)(pt 272 232)(line_width 1)) + (line (pt 48 232)(pt 272 232)(line_width 1)) + (line (pt 48 56)(pt 48 232)(line_width 1)) + ) +) diff --git a/FPGA_quartus/altpll2.cmp b/FPGA_quartus/altpll2.cmp new file mode 100644 index 0000000..c6fe758 --- /dev/null +++ b/FPGA_quartus/altpll2.cmp @@ -0,0 +1,26 @@ +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component altpll2 + PORT + ( + inclk0 : IN STD_LOGIC := '0'; + c0 : OUT STD_LOGIC ; + c1 : OUT STD_LOGIC ; + c2 : OUT STD_LOGIC ; + c3 : OUT STD_LOGIC ; + c4 : OUT STD_LOGIC + ); +end component; diff --git a/FPGA_quartus/altpll2.inc b/FPGA_quartus/altpll2.inc new file mode 100644 index 0000000..e75913b --- /dev/null +++ b/FPGA_quartus/altpll2.inc @@ -0,0 +1,27 @@ +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION altpll2 +( + inclk0 +) + +RETURNS ( + c0, + c1, + c2, + c3, + c4 +); diff --git a/FPGA_quartus/altpll2.ppf b/FPGA_quartus/altpll2.ppf new file mode 100644 index 0000000..b1c71cc --- /dev/null +++ b/FPGA_quartus/altpll2.ppf @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/FPGA_quartus/altpll2.qip b/FPGA_quartus/altpll2.qip new file mode 100644 index 0000000..74cc641 --- /dev/null +++ b/FPGA_quartus/altpll2.qip @@ -0,0 +1,7 @@ +set_global_assignment -name IP_TOOL_NAME "ALTPLL" +set_global_assignment -name IP_TOOL_VERSION "9.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "altpll2.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll2.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll2.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll2.cmp"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll2.ppf"] diff --git a/FPGA_quartus/altpll2.vhd b/FPGA_quartus/altpll2.vhd new file mode 100644 index 0000000..2c55f08 --- /dev/null +++ b/FPGA_quartus/altpll2.vhd @@ -0,0 +1,477 @@ +-- megafunction wizard: %ALTPLL% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altpll + +-- ============================================================ +-- File Name: altpll2.vhd +-- Megafunction Name(s): +-- altpll +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 9.1 Build 350 03/24/2010 SP 2 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY altpll2 IS + PORT + ( + inclk0 : IN STD_LOGIC := '0'; + c0 : OUT STD_LOGIC ; + c1 : OUT STD_LOGIC ; + c2 : OUT STD_LOGIC ; + c3 : OUT STD_LOGIC ; + c4 : OUT STD_LOGIC + ); +END altpll2; + + +ARCHITECTURE SYN OF altpll2 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (4 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC ; + SIGNAL sub_wire2 : STD_LOGIC ; + SIGNAL sub_wire3 : STD_LOGIC ; + SIGNAL sub_wire4 : STD_LOGIC ; + SIGNAL sub_wire5 : STD_LOGIC ; + SIGNAL sub_wire6 : STD_LOGIC ; + SIGNAL sub_wire7 : STD_LOGIC_VECTOR (1 DOWNTO 0); + SIGNAL sub_wire8_bv : BIT_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire8 : STD_LOGIC_VECTOR (0 DOWNTO 0); + + + + COMPONENT altpll + GENERIC ( + bandwidth_type : STRING; + clk0_divide_by : NATURAL; + clk0_duty_cycle : NATURAL; + clk0_multiply_by : NATURAL; + clk0_phase_shift : STRING; + clk1_divide_by : NATURAL; + clk1_duty_cycle : NATURAL; + clk1_multiply_by : NATURAL; + clk1_phase_shift : STRING; + clk2_divide_by : NATURAL; + clk2_duty_cycle : NATURAL; + clk2_multiply_by : NATURAL; + clk2_phase_shift : STRING; + clk3_divide_by : NATURAL; + clk3_duty_cycle : NATURAL; + clk3_multiply_by : NATURAL; + clk3_phase_shift : STRING; + clk4_divide_by : NATURAL; + clk4_duty_cycle : NATURAL; + clk4_multiply_by : NATURAL; + clk4_phase_shift : STRING; + compensate_clock : STRING; + inclk0_input_frequency : NATURAL; + intended_device_family : STRING; + lpm_type : STRING; + operation_mode : STRING; + pll_type : STRING; + port_activeclock : STRING; + port_areset : STRING; + port_clkbad0 : STRING; + port_clkbad1 : STRING; + port_clkloss : STRING; + port_clkswitch : STRING; + port_configupdate : STRING; + port_fbin : STRING; + port_inclk0 : STRING; + port_inclk1 : STRING; + port_locked : STRING; + port_pfdena : STRING; + port_phasecounterselect : STRING; + port_phasedone : STRING; + port_phasestep : STRING; + port_phaseupdown : STRING; + port_pllena : STRING; + port_scanaclr : STRING; + port_scanclk : STRING; + port_scanclkena : STRING; + port_scandata : STRING; + port_scandataout : STRING; + port_scandone : STRING; + port_scanread : STRING; + port_scanwrite : STRING; + port_clk0 : STRING; + port_clk1 : STRING; + port_clk2 : STRING; + port_clk3 : STRING; + port_clk4 : STRING; + port_clk5 : STRING; + port_clkena0 : STRING; + port_clkena1 : STRING; + port_clkena2 : STRING; + port_clkena3 : STRING; + port_clkena4 : STRING; + port_clkena5 : STRING; + port_extclk0 : STRING; + port_extclk1 : STRING; + port_extclk2 : STRING; + port_extclk3 : STRING; + width_clock : NATURAL + ); + PORT ( + inclk : IN STD_LOGIC_VECTOR (1 DOWNTO 0); + clk : OUT STD_LOGIC_VECTOR (4 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + sub_wire8_bv(0 DOWNTO 0) <= "0"; + sub_wire8 <= To_stdlogicvector(sub_wire8_bv); + sub_wire5 <= sub_wire0(4); + sub_wire4 <= sub_wire0(3); + sub_wire3 <= sub_wire0(2); + sub_wire2 <= sub_wire0(1); + sub_wire1 <= sub_wire0(0); + c0 <= sub_wire1; + c1 <= sub_wire2; + c2 <= sub_wire3; + c3 <= sub_wire4; + c4 <= sub_wire5; + sub_wire6 <= inclk0; + sub_wire7 <= sub_wire8(0 DOWNTO 0) & sub_wire6; + + altpll_component : altpll + GENERIC MAP ( + bandwidth_type => "AUTO", + clk0_divide_by => 1, + clk0_duty_cycle => 50, + clk0_multiply_by => 4, + clk0_phase_shift => "5051", + clk1_divide_by => 1, + clk1_duty_cycle => 50, + clk1_multiply_by => 4, + clk1_phase_shift => "0", + clk2_divide_by => 1, + clk2_duty_cycle => 50, + clk2_multiply_by => 4, + clk2_phase_shift => "3788", + clk3_divide_by => 1, + clk3_duty_cycle => 50, + clk3_multiply_by => 4, + clk3_phase_shift => "2210", + clk4_divide_by => 1, + clk4_duty_cycle => 50, + clk4_multiply_by => 2, + clk4_phase_shift => "11364", + compensate_clock => "CLK0", + inclk0_input_frequency => 30303, + intended_device_family => "Cyclone III", + lpm_type => "altpll", + operation_mode => "SOURCE_SYNCHRONOUS", + pll_type => "AUTO", + port_activeclock => "PORT_UNUSED", + port_areset => "PORT_UNUSED", + port_clkbad0 => "PORT_UNUSED", + port_clkbad1 => "PORT_UNUSED", + port_clkloss => "PORT_UNUSED", + port_clkswitch => "PORT_UNUSED", + port_configupdate => "PORT_UNUSED", + port_fbin => "PORT_UNUSED", + port_inclk0 => "PORT_USED", + port_inclk1 => "PORT_UNUSED", + port_locked => "PORT_UNUSED", + port_pfdena => "PORT_UNUSED", + port_phasecounterselect => "PORT_UNUSED", + port_phasedone => "PORT_UNUSED", + port_phasestep => "PORT_UNUSED", + port_phaseupdown => "PORT_UNUSED", + port_pllena => "PORT_UNUSED", + port_scanaclr => "PORT_UNUSED", + port_scanclk => "PORT_UNUSED", + port_scanclkena => "PORT_UNUSED", + port_scandata => "PORT_UNUSED", + port_scandataout => "PORT_UNUSED", + port_scandone => "PORT_UNUSED", + port_scanread => "PORT_UNUSED", + port_scanwrite => "PORT_UNUSED", + port_clk0 => "PORT_USED", + port_clk1 => "PORT_USED", + port_clk2 => "PORT_USED", + port_clk3 => "PORT_USED", + port_clk4 => "PORT_USED", + port_clk5 => "PORT_UNUSED", + port_clkena0 => "PORT_UNUSED", + port_clkena1 => "PORT_UNUSED", + port_clkena2 => "PORT_UNUSED", + port_clkena3 => "PORT_UNUSED", + port_clkena4 => "PORT_UNUSED", + port_clkena5 => "PORT_UNUSED", + port_extclk0 => "PORT_UNUSED", + port_extclk1 => "PORT_UNUSED", + port_extclk2 => "PORT_UNUSED", + port_extclk3 => "PORT_UNUSED", + width_clock => 5 + ) + PORT MAP ( + inclk => sub_wire7, + clk => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0" +-- Retrieval info: PRIVATE: BANDWIDTH STRING "1.000" +-- Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz" +-- Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "1" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "0" +-- Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "0" +-- Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "0" +-- Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0" +-- Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0" +-- Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c0" +-- Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "c0" +-- Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "8" +-- Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "1" +-- Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "1" +-- Retrieval info: PRIVATE: DIV_FACTOR2 NUMERIC "1" +-- Retrieval info: PRIVATE: DIV_FACTOR3 NUMERIC "1" +-- Retrieval info: PRIVATE: DIV_FACTOR4 NUMERIC "1" +-- Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE1 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE2 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE3 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE4 STRING "50.00000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "132.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "132.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE2 STRING "132.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE3 STRING "132.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE4 STRING "66.000000" +-- Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0" +-- Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0" +-- Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575" +-- Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1" +-- Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "33.000" +-- Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1" +-- Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "0" +-- Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "330.000" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT1 STRING "deg" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT2 STRING "deg" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT3 STRING "ps" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT4 STRING "ps" +-- Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any" +-- Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK1 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK2 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK3 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK4 STRING "0" +-- Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "4" +-- Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "4" +-- Retrieval info: PRIVATE: MULT_FACTOR2 NUMERIC "4" +-- Retrieval info: PRIVATE: MULT_FACTOR3 NUMERIC "4" +-- Retrieval info: PRIVATE: MULT_FACTOR4 NUMERIC "2" +-- Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "133.33333000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "133.33330000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ2 STRING "133.33330000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ3 STRING "133.33330000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ4 STRING "100.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE1 STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE2 STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE3 STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE4 STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT1 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT2 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT3 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT4 STRING "MHz" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "240.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT1 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT2 STRING "180.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT3 STRING "105.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT4 STRING "270.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT1 STRING "deg" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT2 STRING "deg" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT3 STRING "deg" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT4 STRING "deg" +-- Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1" +-- Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0" +-- Retrieval info: PRIVATE: RECONFIG_FILE STRING "altpll2.mif" +-- Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "0" +-- Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0" +-- Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000" +-- Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz" +-- Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500" +-- Retrieval info: PRIVATE: SPREAD_USE STRING "0" +-- Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK0 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK1 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK2 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK3 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK4 STRING "1" +-- Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1" +-- Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: USE_CLK0 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK1 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK2 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK3 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK4 STRING "1" +-- Retrieval info: PRIVATE: USE_CLKENA0 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA1 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA2 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA3 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA4 STRING "0" +-- Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0" +-- Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0" +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: CONSTANT: BANDWIDTH_TYPE STRING "AUTO" +-- Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "1" +-- Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "4" +-- Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "5051" +-- Retrieval info: CONSTANT: CLK1_DIVIDE_BY NUMERIC "1" +-- Retrieval info: CONSTANT: CLK1_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK1_MULTIPLY_BY NUMERIC "4" +-- Retrieval info: CONSTANT: CLK1_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK2_DIVIDE_BY NUMERIC "1" +-- Retrieval info: CONSTANT: CLK2_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK2_MULTIPLY_BY NUMERIC "4" +-- Retrieval info: CONSTANT: CLK2_PHASE_SHIFT STRING "3788" +-- Retrieval info: CONSTANT: CLK3_DIVIDE_BY NUMERIC "1" +-- Retrieval info: CONSTANT: CLK3_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK3_MULTIPLY_BY NUMERIC "4" +-- Retrieval info: CONSTANT: CLK3_PHASE_SHIFT STRING "2210" +-- Retrieval info: CONSTANT: CLK4_DIVIDE_BY NUMERIC "1" +-- Retrieval info: CONSTANT: CLK4_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK4_MULTIPLY_BY NUMERIC "2" +-- Retrieval info: CONSTANT: CLK4_PHASE_SHIFT STRING "11364" +-- Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK0" +-- Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "30303" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altpll" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "SOURCE_SYNCHRONOUS" +-- Retrieval info: CONSTANT: PLL_TYPE STRING "AUTO" +-- Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: WIDTH_CLOCK NUMERIC "5" +-- Retrieval info: USED_PORT: @clk 0 0 5 0 OUTPUT_CLK_EXT VCC "@clk[4..0]" +-- Retrieval info: USED_PORT: @inclk 0 0 2 0 INPUT_CLK_EXT VCC "@inclk[1..0]" +-- Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0" +-- Retrieval info: USED_PORT: c1 0 0 0 0 OUTPUT_CLK_EXT VCC "c1" +-- Retrieval info: USED_PORT: c2 0 0 0 0 OUTPUT_CLK_EXT VCC "c2" +-- Retrieval info: USED_PORT: c3 0 0 0 0 OUTPUT_CLK_EXT VCC "c3" +-- Retrieval info: USED_PORT: c4 0 0 0 0 OUTPUT_CLK_EXT VCC "c4" +-- Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0" +-- Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0 +-- Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0 +-- Retrieval info: CONNECT: c1 0 0 0 0 @clk 0 0 1 1 +-- Retrieval info: CONNECT: c3 0 0 0 0 @clk 0 0 1 3 +-- Retrieval info: CONNECT: c2 0 0 0 0 @clk 0 0 1 2 +-- Retrieval info: CONNECT: c4 0 0 0 0 @clk 0 0 1 4 +-- Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0 +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll2.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll2.ppf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll2.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll2.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll2.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll2_inst.vhd FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll2_waveforms.html TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll2_wave*.jpg FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_quartus/altpll2_waveforms.html b/FPGA_quartus/altpll2_waveforms.html new file mode 100644 index 0000000..1932527 --- /dev/null +++ b/FPGA_quartus/altpll2_waveforms.html @@ -0,0 +1,10 @@ + + +Sample Waveforms for "altpll2.vhd" + + +

Sample behavioral waveforms for design file "altpll2.vhd"

+

+

+ + diff --git a/FPGA_quartus/altpll3.bsf b/FPGA_quartus/altpll3.bsf new file mode 100644 index 0000000..da30b0c --- /dev/null +++ b/FPGA_quartus/altpll3.bsf @@ -0,0 +1,105 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2010 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 304 232) + (text "altpll3" (rect 132 1 179 20)(font "Arial" (font_size 10))) + (text "inst" (rect 8 213 31 228)(font "Arial" )) + (port + (pt 0 72) + (input) + (text "inclk0" (rect 0 0 40 16)(font "Arial" (font_size 8))) + (text "inclk0" (rect 4 56 38 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 48 72)(line_width 1)) + ) + (port + (pt 304 72) + (output) + (text "c0" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c0" (rect 287 56 301 72)(font "Arial" (font_size 8))) + (line (pt 304 72)(pt 272 72)(line_width 1)) + ) + (port + (pt 304 96) + (output) + (text "c1" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c1" (rect 287 80 301 96)(font "Arial" (font_size 8))) + (line (pt 304 96)(pt 272 96)(line_width 1)) + ) + (port + (pt 304 120) + (output) + (text "c2" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c2" (rect 287 104 301 120)(font "Arial" (font_size 8))) + (line (pt 304 120)(pt 272 120)(line_width 1)) + ) + (port + (pt 304 144) + (output) + (text "c3" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c3" (rect 287 128 301 144)(font "Arial" (font_size 8))) + (line (pt 304 144)(pt 272 144)(line_width 1)) + ) + (drawing + (text "Cyclone III" (rect 229 214 277 228)(font "Arial" )) + (text "inclk0 frequency: 33.000 MHz" (rect 58 67 201 81)(font "Arial" )) + (text "Operation Mode: Src Sync Comp" (rect 58 84 215 98)(font "Arial" )) + (text "Clk " (rect 59 111 76 125)(font "Arial" )) + (text "Ratio" (rect 86 111 110 125)(font "Arial" )) + (text "Ph (dg)" (rect 121 111 156 125)(font "Arial" )) + (text "DC (%)" (rect 166 111 201 125)(font "Arial" )) + (text "c0" (rect 63 129 75 143)(font "Arial" )) + (text "2/33" (rect 88 129 109 143)(font "Arial" )) + (text "0.00" (rect 129 129 150 143)(font "Arial" )) + (text "50.00" (rect 171 129 198 143)(font "Arial" )) + (text "c1" (rect 63 147 75 161)(font "Arial" )) + (text "16/33" (rect 85 147 112 161)(font "Arial" )) + (text "0.00" (rect 129 147 150 161)(font "Arial" )) + (text "50.00" (rect 171 147 198 161)(font "Arial" )) + (text "c2" (rect 63 165 75 179)(font "Arial" )) + (text "25/33" (rect 85 165 112 179)(font "Arial" )) + (text "0.00" (rect 129 165 150 179)(font "Arial" )) + (text "50.00" (rect 171 165 198 179)(font "Arial" )) + (text "c3" (rect 63 183 75 197)(font "Arial" )) + (text "16/11" (rect 85 183 112 197)(font "Arial" )) + (text "0.00" (rect 129 183 150 197)(font "Arial" )) + (text "50.00" (rect 171 183 198 197)(font "Arial" )) + (line (pt 0 0)(pt 305 0)(line_width 1)) + (line (pt 305 0)(pt 305 233)(line_width 1)) + (line (pt 0 233)(pt 305 233)(line_width 1)) + (line (pt 0 0)(pt 0 233)(line_width 1)) + (line (pt 56 108)(pt 208 108)(line_width 1)) + (line (pt 56 125)(pt 208 125)(line_width 1)) + (line (pt 56 143)(pt 208 143)(line_width 1)) + (line (pt 56 161)(pt 208 161)(line_width 1)) + (line (pt 56 179)(pt 208 179)(line_width 1)) + (line (pt 56 197)(pt 208 197)(line_width 1)) + (line (pt 56 108)(pt 56 197)(line_width 1)) + (line (pt 82 108)(pt 82 197)(line_width 3)) + (line (pt 118 108)(pt 118 197)(line_width 3)) + (line (pt 163 108)(pt 163 197)(line_width 3)) + (line (pt 207 108)(pt 207 197)(line_width 1)) + (line (pt 48 56)(pt 272 56)(line_width 1)) + (line (pt 272 56)(pt 272 216)(line_width 1)) + (line (pt 48 216)(pt 272 216)(line_width 1)) + (line (pt 48 56)(pt 48 216)(line_width 1)) + ) +) diff --git a/FPGA_quartus/altpll3.cmp b/FPGA_quartus/altpll3.cmp new file mode 100644 index 0000000..44b3f2e --- /dev/null +++ b/FPGA_quartus/altpll3.cmp @@ -0,0 +1,25 @@ +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component altpll3 + PORT + ( + inclk0 : IN STD_LOGIC := '0'; + c0 : OUT STD_LOGIC ; + c1 : OUT STD_LOGIC ; + c2 : OUT STD_LOGIC ; + c3 : OUT STD_LOGIC + ); +end component; diff --git a/FPGA_quartus/altpll3.inc b/FPGA_quartus/altpll3.inc new file mode 100644 index 0000000..160ecad --- /dev/null +++ b/FPGA_quartus/altpll3.inc @@ -0,0 +1,26 @@ +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION altpll3 +( + inclk0 +) + +RETURNS ( + c0, + c1, + c2, + c3 +); diff --git a/FPGA_quartus/altpll3.ppf b/FPGA_quartus/altpll3.ppf new file mode 100644 index 0000000..2a7b695 --- /dev/null +++ b/FPGA_quartus/altpll3.ppf @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/FPGA_quartus/altpll3.qip b/FPGA_quartus/altpll3.qip new file mode 100644 index 0000000..8dd2955 --- /dev/null +++ b/FPGA_quartus/altpll3.qip @@ -0,0 +1,7 @@ +set_global_assignment -name IP_TOOL_NAME "ALTPLL" +set_global_assignment -name IP_TOOL_VERSION "9.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "altpll3.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll3.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll3.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll3.cmp"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll3.ppf"] diff --git a/FPGA_quartus/altpll3.vhd b/FPGA_quartus/altpll3.vhd new file mode 100644 index 0000000..6ead1f5 --- /dev/null +++ b/FPGA_quartus/altpll3.vhd @@ -0,0 +1,445 @@ +-- megafunction wizard: %ALTPLL% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altpll + +-- ============================================================ +-- File Name: altpll3.vhd +-- Megafunction Name(s): +-- altpll +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 9.1 Build 350 03/24/2010 SP 2 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY altpll3 IS + PORT + ( + inclk0 : IN STD_LOGIC := '0'; + c0 : OUT STD_LOGIC ; + c1 : OUT STD_LOGIC ; + c2 : OUT STD_LOGIC ; + c3 : OUT STD_LOGIC + ); +END altpll3; + + +ARCHITECTURE SYN OF altpll3 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (4 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC ; + SIGNAL sub_wire2 : STD_LOGIC ; + SIGNAL sub_wire3 : STD_LOGIC ; + SIGNAL sub_wire4 : STD_LOGIC ; + SIGNAL sub_wire5 : STD_LOGIC ; + SIGNAL sub_wire6 : STD_LOGIC_VECTOR (1 DOWNTO 0); + SIGNAL sub_wire7_bv : BIT_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire7 : STD_LOGIC_VECTOR (0 DOWNTO 0); + + + + COMPONENT altpll + GENERIC ( + bandwidth_type : STRING; + clk0_divide_by : NATURAL; + clk0_duty_cycle : NATURAL; + clk0_multiply_by : NATURAL; + clk0_phase_shift : STRING; + clk1_divide_by : NATURAL; + clk1_duty_cycle : NATURAL; + clk1_multiply_by : NATURAL; + clk1_phase_shift : STRING; + clk2_divide_by : NATURAL; + clk2_duty_cycle : NATURAL; + clk2_multiply_by : NATURAL; + clk2_phase_shift : STRING; + clk3_divide_by : NATURAL; + clk3_duty_cycle : NATURAL; + clk3_multiply_by : NATURAL; + clk3_phase_shift : STRING; + compensate_clock : STRING; + inclk0_input_frequency : NATURAL; + intended_device_family : STRING; + lpm_type : STRING; + operation_mode : STRING; + pll_type : STRING; + port_activeclock : STRING; + port_areset : STRING; + port_clkbad0 : STRING; + port_clkbad1 : STRING; + port_clkloss : STRING; + port_clkswitch : STRING; + port_configupdate : STRING; + port_fbin : STRING; + port_inclk0 : STRING; + port_inclk1 : STRING; + port_locked : STRING; + port_pfdena : STRING; + port_phasecounterselect : STRING; + port_phasedone : STRING; + port_phasestep : STRING; + port_phaseupdown : STRING; + port_pllena : STRING; + port_scanaclr : STRING; + port_scanclk : STRING; + port_scanclkena : STRING; + port_scandata : STRING; + port_scandataout : STRING; + port_scandone : STRING; + port_scanread : STRING; + port_scanwrite : STRING; + port_clk0 : STRING; + port_clk1 : STRING; + port_clk2 : STRING; + port_clk3 : STRING; + port_clk4 : STRING; + port_clk5 : STRING; + port_clkena0 : STRING; + port_clkena1 : STRING; + port_clkena2 : STRING; + port_clkena3 : STRING; + port_clkena4 : STRING; + port_clkena5 : STRING; + port_extclk0 : STRING; + port_extclk1 : STRING; + port_extclk2 : STRING; + port_extclk3 : STRING; + width_clock : NATURAL + ); + PORT ( + inclk : IN STD_LOGIC_VECTOR (1 DOWNTO 0); + clk : OUT STD_LOGIC_VECTOR (4 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + sub_wire7_bv(0 DOWNTO 0) <= "0"; + sub_wire7 <= To_stdlogicvector(sub_wire7_bv); + sub_wire4 <= sub_wire0(3); + sub_wire3 <= sub_wire0(2); + sub_wire2 <= sub_wire0(1); + sub_wire1 <= sub_wire0(0); + c0 <= sub_wire1; + c1 <= sub_wire2; + c2 <= sub_wire3; + c3 <= sub_wire4; + sub_wire5 <= inclk0; + sub_wire6 <= sub_wire7(0 DOWNTO 0) & sub_wire5; + + altpll_component : altpll + GENERIC MAP ( + bandwidth_type => "AUTO", + clk0_divide_by => 33, + clk0_duty_cycle => 50, + clk0_multiply_by => 2, + clk0_phase_shift => "0", + clk1_divide_by => 33, + clk1_duty_cycle => 50, + clk1_multiply_by => 16, + clk1_phase_shift => "0", + clk2_divide_by => 33, + clk2_duty_cycle => 50, + clk2_multiply_by => 25, + clk2_phase_shift => "0", + clk3_divide_by => 11, + clk3_duty_cycle => 50, + clk3_multiply_by => 16, + clk3_phase_shift => "0", + compensate_clock => "CLK1", + inclk0_input_frequency => 30303, + intended_device_family => "Cyclone III", + lpm_type => "altpll", + operation_mode => "SOURCE_SYNCHRONOUS", + pll_type => "AUTO", + port_activeclock => "PORT_UNUSED", + port_areset => "PORT_UNUSED", + port_clkbad0 => "PORT_UNUSED", + port_clkbad1 => "PORT_UNUSED", + port_clkloss => "PORT_UNUSED", + port_clkswitch => "PORT_UNUSED", + port_configupdate => "PORT_UNUSED", + port_fbin => "PORT_UNUSED", + port_inclk0 => "PORT_USED", + port_inclk1 => "PORT_UNUSED", + port_locked => "PORT_UNUSED", + port_pfdena => "PORT_UNUSED", + port_phasecounterselect => "PORT_UNUSED", + port_phasedone => "PORT_UNUSED", + port_phasestep => "PORT_UNUSED", + port_phaseupdown => "PORT_UNUSED", + port_pllena => "PORT_UNUSED", + port_scanaclr => "PORT_UNUSED", + port_scanclk => "PORT_UNUSED", + port_scanclkena => "PORT_UNUSED", + port_scandata => "PORT_UNUSED", + port_scandataout => "PORT_UNUSED", + port_scandone => "PORT_UNUSED", + port_scanread => "PORT_UNUSED", + port_scanwrite => "PORT_UNUSED", + port_clk0 => "PORT_USED", + port_clk1 => "PORT_USED", + port_clk2 => "PORT_USED", + port_clk3 => "PORT_USED", + port_clk4 => "PORT_UNUSED", + port_clk5 => "PORT_UNUSED", + port_clkena0 => "PORT_UNUSED", + port_clkena1 => "PORT_UNUSED", + port_clkena2 => "PORT_UNUSED", + port_clkena3 => "PORT_UNUSED", + port_clkena4 => "PORT_UNUSED", + port_clkena5 => "PORT_UNUSED", + port_extclk0 => "PORT_UNUSED", + port_extclk1 => "PORT_UNUSED", + port_extclk2 => "PORT_UNUSED", + port_extclk3 => "PORT_UNUSED", + width_clock => 5 + ) + PORT MAP ( + inclk => sub_wire6, + clk => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0" +-- Retrieval info: PRIVATE: BANDWIDTH STRING "1.000" +-- Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz" +-- Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "1" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "0" +-- Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "0" +-- Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "0" +-- Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0" +-- Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0" +-- Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c1" +-- Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "e0" +-- Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "8" +-- Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "33" +-- Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "33" +-- Retrieval info: PRIVATE: DIV_FACTOR2 NUMERIC "33" +-- Retrieval info: PRIVATE: DIV_FACTOR3 NUMERIC "33" +-- Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE1 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE2 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE3 STRING "50.00000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "2.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "16.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE2 STRING "25.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE3 STRING "48.000000" +-- Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0" +-- Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0" +-- Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575" +-- Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1" +-- Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "33.000" +-- Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1" +-- Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "0" +-- Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "330.000" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT1 STRING "deg" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT2 STRING "deg" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT3 STRING "ps" +-- Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any" +-- Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK1 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK2 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK3 STRING "0" +-- Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "2" +-- Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "16" +-- Retrieval info: PRIVATE: MULT_FACTOR2 NUMERIC "25" +-- Retrieval info: PRIVATE: MULT_FACTOR3 NUMERIC "48" +-- Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "2.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "16.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ2 STRING "25.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ3 STRING "160.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE1 STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE2 STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE3 STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT1 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT2 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT3 STRING "MHz" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT1 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT2 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT3 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT1 STRING "deg" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT2 STRING "deg" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT3 STRING "ps" +-- Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1" +-- Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0" +-- Retrieval info: PRIVATE: RECONFIG_FILE STRING "altpll3.mif" +-- Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "0" +-- Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0" +-- Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000" +-- Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz" +-- Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500" +-- Retrieval info: PRIVATE: SPREAD_USE STRING "0" +-- Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK0 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK1 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK2 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK3 STRING "1" +-- Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1" +-- Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: USE_CLK0 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK1 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK2 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK3 STRING "1" +-- Retrieval info: PRIVATE: USE_CLKENA0 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA1 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA2 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA3 STRING "0" +-- Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0" +-- Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0" +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: CONSTANT: BANDWIDTH_TYPE STRING "AUTO" +-- Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "33" +-- Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "2" +-- Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK1_DIVIDE_BY NUMERIC "33" +-- Retrieval info: CONSTANT: CLK1_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK1_MULTIPLY_BY NUMERIC "16" +-- Retrieval info: CONSTANT: CLK1_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK2_DIVIDE_BY NUMERIC "33" +-- Retrieval info: CONSTANT: CLK2_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK2_MULTIPLY_BY NUMERIC "25" +-- Retrieval info: CONSTANT: CLK2_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK3_DIVIDE_BY NUMERIC "11" +-- Retrieval info: CONSTANT: CLK3_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK3_MULTIPLY_BY NUMERIC "16" +-- Retrieval info: CONSTANT: CLK3_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK1" +-- Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "30303" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altpll" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "SOURCE_SYNCHRONOUS" +-- Retrieval info: CONSTANT: PLL_TYPE STRING "AUTO" +-- Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: WIDTH_CLOCK NUMERIC "5" +-- Retrieval info: USED_PORT: @clk 0 0 5 0 OUTPUT_CLK_EXT VCC "@clk[4..0]" +-- Retrieval info: USED_PORT: @inclk 0 0 2 0 INPUT_CLK_EXT VCC "@inclk[1..0]" +-- Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0" +-- Retrieval info: USED_PORT: c1 0 0 0 0 OUTPUT_CLK_EXT VCC "c1" +-- Retrieval info: USED_PORT: c2 0 0 0 0 OUTPUT_CLK_EXT VCC "c2" +-- Retrieval info: USED_PORT: c3 0 0 0 0 OUTPUT_CLK_EXT VCC "c3" +-- Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0" +-- Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0 +-- Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0 +-- Retrieval info: CONNECT: c1 0 0 0 0 @clk 0 0 1 1 +-- Retrieval info: CONNECT: c3 0 0 0 0 @clk 0 0 1 3 +-- Retrieval info: CONNECT: c2 0 0 0 0 @clk 0 0 1 2 +-- Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0 +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll3.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll3.ppf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll3.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll3.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll3.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll3_inst.vhd FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll3_waveforms.html TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll3_wave*.jpg FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_quartus/altpll3_waveforms.html b/FPGA_quartus/altpll3_waveforms.html new file mode 100644 index 0000000..3f6367c --- /dev/null +++ b/FPGA_quartus/altpll3_waveforms.html @@ -0,0 +1,10 @@ + + +Sample Waveforms for "altpll3.vhd" + + +

Sample behavioral waveforms for design file "altpll3.vhd"

+

+

+ + diff --git a/FPGA_quartus/altpll4.bsf b/FPGA_quartus/altpll4.bsf new file mode 100644 index 0000000..e071d43 --- /dev/null +++ b/FPGA_quartus/altpll4.bsf @@ -0,0 +1,125 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2010 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 376 232) + (text "altpll4" (rect 168 1 215 20)(font "Arial" (font_size 10))) + (text "inst" (rect 8 213 31 228)(font "Arial" )) + (port + (pt 0 72) + (input) + (text "inclk0" (rect 0 0 40 16)(font "Arial" (font_size 8))) + (text "inclk0" (rect 4 56 38 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 88 72)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "areset" (rect 0 0 42 16)(font "Arial" (font_size 8))) + (text "areset" (rect 4 80 40 96)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 88 96)(line_width 1)) + ) + (port + (pt 0 120) + (input) + (text "scanclk" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "scanclk" (rect 4 104 49 120)(font "Arial" (font_size 8))) + (line (pt 0 120)(pt 88 120)(line_width 1)) + ) + (port + (pt 0 144) + (input) + (text "scandata" (rect 0 0 62 16)(font "Arial" (font_size 8))) + (text "scandata" (rect 4 128 57 144)(font "Arial" (font_size 8))) + (line (pt 0 144)(pt 88 144)(line_width 1)) + ) + (port + (pt 0 168) + (input) + (text "scanclkena" (rect 0 0 77 16)(font "Arial" (font_size 8))) + (text "scanclkena" (rect 4 152 70 168)(font "Arial" (font_size 8))) + (line (pt 0 168)(pt 88 168)(line_width 1)) + ) + (port + (pt 0 192) + (input) + (text "configupdate" (rect 0 0 86 16)(font "Arial" (font_size 8))) + (text "configupdate" (rect 4 176 77 192)(font "Arial" (font_size 8))) + (line (pt 0 192)(pt 88 192)(line_width 1)) + ) + (port + (pt 376 72) + (output) + (text "c0" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c0" (rect 359 56 373 72)(font "Arial" (font_size 8))) + (line (pt 376 72)(pt 288 72)(line_width 1)) + ) + (port + (pt 376 96) + (output) + (text "scandataout" (rect 0 0 83 16)(font "Arial" (font_size 8))) + (text "scandataout" (rect 302 80 373 96)(font "Arial" (font_size 8))) + (line (pt 376 96)(pt 288 96)(line_width 1)) + ) + (port + (pt 376 120) + (output) + (text "scandone" (rect 0 0 66 16)(font "Arial" (font_size 8))) + (text "scandone" (rect 317 104 373 120)(font "Arial" (font_size 8))) + (line (pt 376 120)(pt 288 120)(line_width 1)) + ) + (port + (pt 376 144) + (output) + (text "locked" (rect 0 0 44 16)(font "Arial" (font_size 8))) + (text "locked" (rect 335 128 373 144)(font "Arial" (font_size 8))) + (line (pt 376 144)(pt 288 144)(line_width 1)) + ) + (drawing + (text "Cyclone III" (rect 301 214 349 228)(font "Arial" )) + (text "inclk0 frequency: 48.000 MHz" (rect 98 123 241 137)(font "Arial" )) + (text "Operation Mode: Normal" (rect 98 140 213 154)(font "Arial" )) + (text "Clk " (rect 99 167 116 181)(font "Arial" )) + (text "Ratio" (rect 125 167 149 181)(font "Arial" )) + (text "Ph (dg)" (rect 159 167 194 181)(font "Arial" )) + (text "DC (%)" (rect 204 167 239 181)(font "Arial" )) + (text "c0" (rect 103 185 115 199)(font "Arial" )) + (text "2/1" (rect 131 185 146 199)(font "Arial" )) + (text "0.00" (rect 167 185 188 199)(font "Arial" )) + (text "50.00" (rect 209 185 236 199)(font "Arial" )) + (line (pt 0 0)(pt 377 0)(line_width 1)) + (line (pt 377 0)(pt 377 233)(line_width 1)) + (line (pt 0 233)(pt 377 233)(line_width 1)) + (line (pt 0 0)(pt 0 233)(line_width 1)) + (line (pt 96 164)(pt 246 164)(line_width 1)) + (line (pt 96 181)(pt 246 181)(line_width 1)) + (line (pt 96 199)(pt 246 199)(line_width 1)) + (line (pt 96 164)(pt 96 199)(line_width 1)) + (line (pt 122 164)(pt 122 199)(line_width 3)) + (line (pt 156 164)(pt 156 199)(line_width 3)) + (line (pt 201 164)(pt 201 199)(line_width 3)) + (line (pt 245 164)(pt 245 199)(line_width 1)) + (line (pt 88 56)(pt 288 56)(line_width 1)) + (line (pt 288 56)(pt 288 216)(line_width 1)) + (line (pt 88 216)(pt 288 216)(line_width 1)) + (line (pt 88 56)(pt 88 216)(line_width 1)) + ) +) diff --git a/FPGA_quartus/altpll4.cmp b/FPGA_quartus/altpll4.cmp new file mode 100644 index 0000000..83b3c1e --- /dev/null +++ b/FPGA_quartus/altpll4.cmp @@ -0,0 +1,30 @@ +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component altpll4 + PORT + ( + areset : IN STD_LOGIC := '0'; + configupdate : IN STD_LOGIC := '0'; + inclk0 : IN STD_LOGIC := '0'; + scanclk : IN STD_LOGIC := '1'; + scanclkena : IN STD_LOGIC := '0'; + scandata : IN STD_LOGIC := '0'; + c0 : OUT STD_LOGIC ; + locked : OUT STD_LOGIC ; + scandataout : OUT STD_LOGIC ; + scandone : OUT STD_LOGIC + ); +end component; diff --git a/FPGA_quartus/altpll4.inc b/FPGA_quartus/altpll4.inc new file mode 100644 index 0000000..39f54c9 --- /dev/null +++ b/FPGA_quartus/altpll4.inc @@ -0,0 +1,31 @@ +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION altpll4 +( + areset, + configupdate, + inclk0, + scanclk, + scanclkena, + scandata +) + +RETURNS ( + c0, + locked, + scandataout, + scandone +); diff --git a/FPGA_quartus/altpll4.mif b/FPGA_quartus/altpll4.mif new file mode 100644 index 0000000..e50eda2 --- /dev/null +++ b/FPGA_quartus/altpll4.mif @@ -0,0 +1,174 @@ +-- Copyright (C) 1991-2010 Altera Corporation +-- Your use of Altera Corporation's design tools, logic functions +-- and other software and tools, and its AMPP partner logic +-- functions, and any output files from any of the foregoing +-- (including device programming or simulation files), and any +-- associated documentation or information are expressly subject +-- to the terms and conditions of the Altera Program License +-- Subscription Agreement, Altera MegaCore Function License +-- Agreement, or other applicable license agreement, including, +-- without limitation, that your use is for the sole purpose of +-- programming logic devices manufactured by Altera and sold by +-- Altera or its authorized distributors. Please refer to the +-- applicable agreement for further details. + +-- MIF file representing initial state of PLL Scan Chain +-- Device Family: Cyclone III +-- Device Part: - +-- Device Speed Grade: 8 +-- PLL Scan Chain: Fast PLL (144 bits) +-- File Name: C:\FireBee\FPGA\altpll4.mif +-- Generated: Mon Dec 06 01:47:24 2010 + +WIDTH=1; +DEPTH=144; + +ADDRESS_RADIX=UNS; +DATA_RADIX=UNS; + +CONTENT BEGIN + 0 : 0; -- Reserved Bits = 0 (1 bit(s)) + 1 : 0; -- Reserved Bits = 0 (1 bit(s)) + 2 : 0; -- Loop Filter Capacitance = 0 (2 bit(s)) (Setting 0) + 3 : 0; + 4 : 1; -- Loop Filter Resistance = 27 (5 bit(s)) (Setting 27) + 5 : 1; + 6 : 0; + 7 : 1; + 8 : 1; + 9 : 0; -- VCO Post Scale = 0 (1 bit(s)) (VCO post-scale divider counter value = 2) + 10 : 0; -- Reserved Bits = 0 (5 bit(s)) + 11 : 0; + 12 : 0; + 13 : 0; + 14 : 0; + 15 : 0; -- Charge Pump Current = 1 (3 bit(s)) (Setting 1) + 16 : 0; + 17 : 1; + 18 : 1; -- N counter: Bypass = 1 (1 bit(s)) + 19 : 0; -- N counter: High Count = 0 (8 bit(s)) + 20 : 0; + 21 : 0; + 22 : 0; + 23 : 0; + 24 : 0; + 25 : 0; + 26 : 0; + 27 : 0; -- N counter: Odd Division = 0 (1 bit(s)) + 28 : 0; -- N counter: Low Count = 0 (8 bit(s)) + 29 : 0; + 30 : 0; + 31 : 0; + 32 : 0; + 33 : 0; + 34 : 0; + 35 : 0; + 36 : 0; -- M counter: Bypass = 0 (1 bit(s)) + 37 : 0; -- M counter: High Count = 6 (8 bit(s)) + 38 : 0; + 39 : 0; + 40 : 0; + 41 : 0; + 42 : 1; + 43 : 1; + 44 : 0; + 45 : 0; -- M counter: Odd Division = 0 (1 bit(s)) + 46 : 0; -- M counter: Low Count = 6 (8 bit(s)) + 47 : 0; + 48 : 0; + 49 : 0; + 50 : 0; + 51 : 1; + 52 : 1; + 53 : 0; + 54 : 0; -- clk0 counter: Bypass = 0 (1 bit(s)) + 55 : 0; -- clk0 counter: High Count = 3 (8 bit(s)) + 56 : 0; + 57 : 0; + 58 : 0; + 59 : 0; + 60 : 0; + 61 : 1; + 62 : 1; + 63 : 0; -- clk0 counter: Odd Division = 0 (1 bit(s)) + 64 : 0; -- clk0 counter: Low Count = 3 (8 bit(s)) + 65 : 0; + 66 : 0; + 67 : 0; + 68 : 0; + 69 : 0; + 70 : 1; + 71 : 1; + 72 : 1; -- clk1 counter: Bypass = 1 (1 bit(s)) + 73 : 0; -- clk1 counter: High Count = 0 (8 bit(s)) + 74 : 0; + 75 : 0; + 76 : 0; + 77 : 0; + 78 : 0; + 79 : 0; + 80 : 0; + 81 : 0; -- clk1 counter: Odd Division = 0 (1 bit(s)) + 82 : 0; -- clk1 counter: Low Count = 0 (8 bit(s)) + 83 : 0; + 84 : 0; + 85 : 0; + 86 : 0; + 87 : 0; + 88 : 0; + 89 : 0; + 90 : 1; -- clk2 counter: Bypass = 1 (1 bit(s)) + 91 : 0; -- clk2 counter: High Count = 0 (8 bit(s)) + 92 : 0; + 93 : 0; + 94 : 0; + 95 : 0; + 96 : 0; + 97 : 0; + 98 : 0; + 99 : 0; -- clk2 counter: Odd Division = 0 (1 bit(s)) + 100 : 0; -- clk2 counter: Low Count = 0 (8 bit(s)) + 101 : 0; + 102 : 0; + 103 : 0; + 104 : 0; + 105 : 0; + 106 : 0; + 107 : 0; + 108 : 1; -- clk3 counter: Bypass = 1 (1 bit(s)) + 109 : 0; -- clk3 counter: High Count = 0 (8 bit(s)) + 110 : 0; + 111 : 0; + 112 : 0; + 113 : 0; + 114 : 0; + 115 : 0; + 116 : 0; + 117 : 0; -- clk3 counter: Odd Division = 0 (1 bit(s)) + 118 : 0; -- clk3 counter: Low Count = 0 (8 bit(s)) + 119 : 0; + 120 : 0; + 121 : 0; + 122 : 0; + 123 : 0; + 124 : 0; + 125 : 0; + 126 : 1; -- clk4 counter: Bypass = 1 (1 bit(s)) + 127 : 0; -- clk4 counter: High Count = 0 (8 bit(s)) + 128 : 0; + 129 : 0; + 130 : 0; + 131 : 0; + 132 : 0; + 133 : 0; + 134 : 0; + 135 : 0; -- clk4 counter: Odd Division = 0 (1 bit(s)) + 136 : 0; -- clk4 counter: Low Count = 0 (8 bit(s)) + 137 : 0; + 138 : 0; + 139 : 0; + 140 : 0; + 141 : 0; + 142 : 0; + 143 : 0; +END; diff --git a/FPGA_quartus/altpll4.ppf b/FPGA_quartus/altpll4.ppf new file mode 100644 index 0000000..541ce91 --- /dev/null +++ b/FPGA_quartus/altpll4.ppf @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/FPGA_quartus/altpll4.qip b/FPGA_quartus/altpll4.qip new file mode 100644 index 0000000..f44acdc --- /dev/null +++ b/FPGA_quartus/altpll4.qip @@ -0,0 +1,7 @@ +set_global_assignment -name IP_TOOL_NAME "ALTPLL" +set_global_assignment -name IP_TOOL_VERSION "9.1" +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll4.tdf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll4.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll4.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll4.cmp"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll4.ppf"] diff --git a/FPGA_quartus/altpll4.tdf b/FPGA_quartus/altpll4.tdf new file mode 100644 index 0000000..3ec77d4 --- /dev/null +++ b/FPGA_quartus/altpll4.tdf @@ -0,0 +1,298 @@ +-- megafunction wizard: %ALTPLL% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altpll + +-- ============================================================ +-- File Name: altpll4.tdf +-- Megafunction Name(s): +-- altpll +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 9.1 Build 350 03/24/2010 SP 2 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + +INCLUDE "altpll.inc"; + + + +SUBDESIGN altpll4 +( + areset : INPUT = GND; + configupdate : INPUT = GND; + inclk0 : INPUT = GND; + scanclk : INPUT = VCC; + scanclkena : INPUT = GND; + scandata : INPUT = GND; + c0 : OUTPUT; + locked : OUTPUT; + scandataout : OUTPUT; + scandone : OUTPUT; +) + +VARIABLE + + altpll_component : altpll WITH ( + BANDWIDTH_TYPE = "AUTO", + CLK0_DIVIDE_BY = 1, + CLK0_DUTY_CYCLE = 50, + CLK0_MULTIPLY_BY = 2, + CLK0_PHASE_SHIFT = "0", + COMPENSATE_CLOCK = "CLK0", + INCLK0_INPUT_FREQUENCY = 20833, + INTENDED_DEVICE_FAMILY = "Cyclone III", + LPM_TYPE = "altpll", + OPERATION_MODE = "NORMAL", + PLL_TYPE = "AUTO", + PORT_ACTIVECLOCK = "PORT_UNUSED", + PORT_ARESET = "PORT_USED", + PORT_CLKBAD0 = "PORT_UNUSED", + PORT_CLKBAD1 = "PORT_UNUSED", + PORT_CLKLOSS = "PORT_UNUSED", + PORT_CLKSWITCH = "PORT_UNUSED", + PORT_CONFIGUPDATE = "PORT_USED", + PORT_FBIN = "PORT_UNUSED", + PORT_INCLK0 = "PORT_USED", + PORT_INCLK1 = "PORT_UNUSED", + PORT_LOCKED = "PORT_USED", + PORT_PFDENA = "PORT_UNUSED", + PORT_PHASECOUNTERSELECT = "PORT_UNUSED", + PORT_PHASEDONE = "PORT_UNUSED", + PORT_PHASESTEP = "PORT_UNUSED", + PORT_PHASEUPDOWN = "PORT_UNUSED", + PORT_PLLENA = "PORT_UNUSED", + PORT_SCANACLR = "PORT_UNUSED", + PORT_SCANCLK = "PORT_USED", + PORT_SCANCLKENA = "PORT_USED", + PORT_SCANDATA = "PORT_USED", + PORT_SCANDATAOUT = "PORT_USED", + PORT_SCANDONE = "PORT_USED", + PORT_SCANREAD = "PORT_UNUSED", + PORT_SCANWRITE = "PORT_UNUSED", + PORT_clk0 = "PORT_USED", + PORT_clk1 = "PORT_UNUSED", + PORT_clk2 = "PORT_UNUSED", + PORT_clk3 = "PORT_UNUSED", + PORT_clk4 = "PORT_UNUSED", + PORT_clk5 = "PORT_UNUSED", + PORT_clkena0 = "PORT_UNUSED", + PORT_clkena1 = "PORT_UNUSED", + PORT_clkena2 = "PORT_UNUSED", + PORT_clkena3 = "PORT_UNUSED", + PORT_clkena4 = "PORT_UNUSED", + PORT_clkena5 = "PORT_UNUSED", + PORT_extclk0 = "PORT_UNUSED", + PORT_extclk1 = "PORT_UNUSED", + PORT_extclk2 = "PORT_UNUSED", + PORT_extclk3 = "PORT_UNUSED", + SELF_RESET_ON_LOSS_LOCK = "OFF", + WIDTH_CLOCK = 5, + scan_chain_mif_file = "altpll4.mif" + ); + +BEGIN + + c0 = altpll_component.clk[0..0]; + scandone = altpll_component.scandone; + scandataout = altpll_component.scandataout; + locked = altpll_component.locked; + altpll_component.scanclkena = scanclkena; + altpll_component.inclk[0..0] = inclk0; + altpll_component.inclk[1..1] = GND; + altpll_component.scandata = scandata; + altpll_component.areset = areset; + altpll_component.scanclk = scanclk; + altpll_component.configupdate = configupdate; +END; + + + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0" +-- Retrieval info: PRIVATE: BANDWIDTH STRING "1.000" +-- Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz" +-- Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "1" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "0" +-- Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "0" +-- Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "0" +-- Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0" +-- Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0" +-- Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c0" +-- Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "e0" +-- Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "8" +-- Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "1" +-- Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "96.000000" +-- Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0" +-- Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0" +-- Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575" +-- Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1" +-- Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "48.000" +-- Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1" +-- Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "1" +-- Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "336.000" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any" +-- Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0" +-- Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "2" +-- Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "144.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "1" +-- Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1" +-- Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0" +-- Retrieval info: PRIVATE: RECONFIG_FILE STRING "altpll4.mif" +-- Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "1" +-- Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0" +-- Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000" +-- Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz" +-- Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500" +-- Retrieval info: PRIVATE: SPREAD_USE STRING "0" +-- Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "0" +-- Retrieval info: PRIVATE: STICKY_CLK0 STRING "1" +-- Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1" +-- Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: USE_CLK0 STRING "1" +-- Retrieval info: PRIVATE: USE_CLKENA0 STRING "0" +-- Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0" +-- Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0" +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: CONSTANT: BANDWIDTH_TYPE STRING "AUTO" +-- Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "1" +-- Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "2" +-- Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK0" +-- Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "20833" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altpll" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "NORMAL" +-- Retrieval info: CONSTANT: PLL_TYPE STRING "AUTO" +-- Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: SELF_RESET_ON_LOSS_LOCK STRING "OFF" +-- Retrieval info: CONSTANT: WIDTH_CLOCK NUMERIC "5" +-- Retrieval info: CONSTANT: scan_chain_mif_file STRING "altpll4.mif" +-- Retrieval info: USED_PORT: @clk 0 0 5 0 OUTPUT_CLK_EXT VCC "@clk[4..0]" +-- Retrieval info: USED_PORT: areset 0 0 0 0 INPUT GND "areset" +-- Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0" +-- Retrieval info: USED_PORT: configupdate 0 0 0 0 INPUT GND "configupdate" +-- Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0" +-- Retrieval info: USED_PORT: locked 0 0 0 0 OUTPUT GND "locked" +-- Retrieval info: USED_PORT: scanclk 0 0 0 0 INPUT_CLK_EXT VCC "scanclk" +-- Retrieval info: USED_PORT: scanclkena 0 0 0 0 INPUT GND "scanclkena" +-- Retrieval info: USED_PORT: scandata 0 0 0 0 INPUT GND "scandata" +-- Retrieval info: USED_PORT: scandataout 0 0 0 0 OUTPUT VCC "scandataout" +-- Retrieval info: USED_PORT: scandone 0 0 0 0 OUTPUT VCC "scandone" +-- Retrieval info: CONNECT: locked 0 0 0 0 @locked 0 0 0 0 +-- Retrieval info: CONNECT: scandone 0 0 0 0 @scandone 0 0 0 0 +-- Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0 +-- Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0 +-- Retrieval info: CONNECT: @scandata 0 0 0 0 scandata 0 0 0 0 +-- Retrieval info: CONNECT: @scanclkena 0 0 0 0 scanclkena 0 0 0 0 +-- Retrieval info: CONNECT: @configupdate 0 0 0 0 configupdate 0 0 0 0 +-- Retrieval info: CONNECT: scandataout 0 0 0 0 @scandataout 0 0 0 0 +-- Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0 +-- Retrieval info: CONNECT: @scanclk 0 0 0 0 scanclk 0 0 0 0 +-- Retrieval info: CONNECT: @areset 0 0 0 0 areset 0 0 0 0 +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll4.tdf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll4.ppf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll4.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll4.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll4.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll4_inst.tdf FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll4.mif TRUE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/FPGA_quartus/altpll_reconfig0.bsf b/FPGA_quartus/altpll_reconfig0.bsf new file mode 100644 index 0000000..452f320 --- /dev/null +++ b/FPGA_quartus/altpll_reconfig0.bsf @@ -0,0 +1,162 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2010 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 216 296) + (text "altpll_reconfig0" (rect 54 1 182 20)(font "Arial" (font_size 10))) + (text "inst" (rect 8 277 31 292)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "reconfig" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "reconfig" (rect 20 32 65 48)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 16 40)(line_width 1)) + ) + (port + (pt 0 56) + (input) + (text "read_param" (rect 0 0 80 16)(font "Arial" (font_size 8))) + (text "read_param" (rect 20 48 88 64)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 16 56)(line_width 1)) + ) + (port + (pt 0 72) + (input) + (text "write_param" (rect 0 0 82 16)(font "Arial" (font_size 8))) + (text "write_param" (rect 20 64 90 80)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 16 72)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "data_in[8..0]" (rect 0 0 84 16)(font "Arial" (font_size 8))) + (text "data_in[8..0]" (rect 20 88 92 104)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)(line_width 3)) + ) + (port + (pt 0 112) + (input) + (text "counter_type[3..0]" (rect 0 0 123 16)(font "Arial" (font_size 8))) + (text "counter_type[3..0]" (rect 20 104 125 120)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 16 112)(line_width 3)) + ) + (port + (pt 0 128) + (input) + (text "counter_param[2..0]" (rect 0 0 136 16)(font "Arial" (font_size 8))) + (text "counter_param[2..0]" (rect 20 120 136 136)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 16 128)(line_width 3)) + ) + (port + (pt 0 168) + (input) + (text "pll_scandataout" (rect 0 0 107 16)(font "Arial" (font_size 8))) + (text "pll_scandataout" (rect 20 160 111 176)(font "Arial" (font_size 8))) + (line (pt 0 168)(pt 16 168)(line_width 1)) + ) + (port + (pt 0 184) + (input) + (text "pll_scandone" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "pll_scandone" (rect 20 176 96 192)(font "Arial" (font_size 8))) + (line (pt 0 184)(pt 16 184)(line_width 1)) + ) + (port + (pt 0 208) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 20 200 51 216)(font "Arial" (font_size 8))) + (line (pt 0 208)(pt 16 208)(line_width 1)) + ) + (port + (pt 0 224) + (input) + (text "reset" (rect 0 0 34 16)(font "Arial" (font_size 8))) + (text "reset" (rect 20 216 49 232)(font "Arial" (font_size 8))) + (line (pt 0 224)(pt 16 224)(line_width 1)) + ) + (port + (pt 0 248) + (input) + (text "pll_areset_in" (rect 0 0 86 16)(font "Arial" (font_size 8))) + (text "pll_areset_in" (rect 20 240 93 256)(font "Arial" (font_size 8))) + (line (pt 0 248)(pt 16 248)(line_width 1)) + ) + (port + (pt 216 40) + (output) + (text "busy" (rect 0 0 33 16)(font "Arial" (font_size 8))) + (text "busy" (rect 169 32 197 48)(font "Arial" (font_size 8))) + (line (pt 216 40)(pt 200 40)(line_width 1)) + ) + (port + (pt 216 96) + (output) + (text "data_out[8..0]" (rect 0 0 94 16)(font "Arial" (font_size 8))) + (text "data_out[8..0]" (rect 117 88 197 104)(font "Arial" (font_size 8))) + (line (pt 216 96)(pt 200 96)(line_width 3)) + ) + (port + (pt 216 152) + (output) + (text "pll_scandata" (rect 0 0 86 16)(font "Arial" (font_size 8))) + (text "pll_scandata" (rect 124 144 197 160)(font "Arial" (font_size 8))) + (line (pt 216 152)(pt 200 152)(line_width 1)) + ) + (port + (pt 216 168) + (output) + (text "pll_scanclk" (rect 0 0 76 16)(font "Arial" (font_size 8))) + (text "pll_scanclk" (rect 132 160 197 176)(font "Arial" (font_size 8))) + (line (pt 216 168)(pt 200 168)(line_width 1)) + ) + (port + (pt 216 200) + (output) + (text "pll_scanclkena" (rect 0 0 101 16)(font "Arial" (font_size 8))) + (text "pll_scanclkena" (rect 111 192 197 208)(font "Arial" (font_size 8))) + (line (pt 216 200)(pt 200 200)(line_width 1)) + ) + (port + (pt 216 216) + (output) + (text "pll_configupdate" (rect 0 0 109 16)(font "Arial" (font_size 8))) + (text "pll_configupdate" (rect 104 208 197 224)(font "Arial" (font_size 8))) + (line (pt 216 216)(pt 200 216)(line_width 1)) + ) + (port + (pt 216 248) + (output) + (text "pll_areset" (rect 0 0 66 16)(font "Arial" (font_size 8))) + (text "pll_areset" (rect 141 240 197 256)(font "Arial" (font_size 8))) + (line (pt 216 248)(pt 200 248)(line_width 1)) + ) + (drawing + (line (pt 0 0)(pt 217 0)(line_width 1)) + (line (pt 217 0)(pt 217 297)(line_width 1)) + (line (pt 0 297)(pt 217 297)(line_width 1)) + (line (pt 0 0)(pt 0 297)(line_width 1)) + (line (pt 16 24)(pt 201 24)(line_width 1)) + (line (pt 201 24)(pt 201 273)(line_width 1)) + (line (pt 16 273)(pt 201 273)(line_width 1)) + (line (pt 16 24)(pt 16 273)(line_width 1)) + ) +) diff --git a/FPGA_quartus/altpll_reconfig0.qip b/FPGA_quartus/altpll_reconfig0.qip new file mode 100644 index 0000000..3194459 --- /dev/null +++ b/FPGA_quartus/altpll_reconfig0.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "ALTPLL_RECONFIG" +set_global_assignment -name IP_TOOL_VERSION "9.1" +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll_reconfig0.tdf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll_reconfig0.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll_reconfig0.cmp"] diff --git a/FPGA_quartus/altpll_reconfig1.bsf b/FPGA_quartus/altpll_reconfig1.bsf new file mode 100644 index 0000000..f896607 --- /dev/null +++ b/FPGA_quartus/altpll_reconfig1.bsf @@ -0,0 +1,162 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2010 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 216 296) + (text "altpll_reconfig1" (rect 54 1 182 20)(font "Arial" (font_size 10))) + (text "inst" (rect 8 277 31 292)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "reconfig" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "reconfig" (rect 20 32 65 48)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 16 40)(line_width 1)) + ) + (port + (pt 0 56) + (input) + (text "read_param" (rect 0 0 80 16)(font "Arial" (font_size 8))) + (text "read_param" (rect 20 48 88 64)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 16 56)(line_width 1)) + ) + (port + (pt 0 72) + (input) + (text "write_param" (rect 0 0 82 16)(font "Arial" (font_size 8))) + (text "write_param" (rect 20 64 90 80)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 16 72)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "data_in[8..0]" (rect 0 0 84 16)(font "Arial" (font_size 8))) + (text "data_in[8..0]" (rect 20 88 92 104)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)(line_width 3)) + ) + (port + (pt 0 112) + (input) + (text "counter_type[3..0]" (rect 0 0 123 16)(font "Arial" (font_size 8))) + (text "counter_type[3..0]" (rect 20 104 125 120)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 16 112)(line_width 3)) + ) + (port + (pt 0 128) + (input) + (text "counter_param[2..0]" (rect 0 0 136 16)(font "Arial" (font_size 8))) + (text "counter_param[2..0]" (rect 20 120 136 136)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 16 128)(line_width 3)) + ) + (port + (pt 0 168) + (input) + (text "pll_scandataout" (rect 0 0 107 16)(font "Arial" (font_size 8))) + (text "pll_scandataout" (rect 20 160 111 176)(font "Arial" (font_size 8))) + (line (pt 0 168)(pt 16 168)(line_width 1)) + ) + (port + (pt 0 184) + (input) + (text "pll_scandone" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "pll_scandone" (rect 20 176 96 192)(font "Arial" (font_size 8))) + (line (pt 0 184)(pt 16 184)(line_width 1)) + ) + (port + (pt 0 208) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 20 200 51 216)(font "Arial" (font_size 8))) + (line (pt 0 208)(pt 16 208)(line_width 1)) + ) + (port + (pt 0 224) + (input) + (text "reset" (rect 0 0 34 16)(font "Arial" (font_size 8))) + (text "reset" (rect 20 216 49 232)(font "Arial" (font_size 8))) + (line (pt 0 224)(pt 16 224)(line_width 1)) + ) + (port + (pt 0 248) + (input) + (text "pll_areset_in" (rect 0 0 86 16)(font "Arial" (font_size 8))) + (text "pll_areset_in" (rect 20 240 93 256)(font "Arial" (font_size 8))) + (line (pt 0 248)(pt 16 248)(line_width 1)) + ) + (port + (pt 216 40) + (output) + (text "busy" (rect 0 0 33 16)(font "Arial" (font_size 8))) + (text "busy" (rect 169 32 197 48)(font "Arial" (font_size 8))) + (line (pt 216 40)(pt 200 40)(line_width 1)) + ) + (port + (pt 216 96) + (output) + (text "data_out[8..0]" (rect 0 0 94 16)(font "Arial" (font_size 8))) + (text "data_out[8..0]" (rect 117 88 197 104)(font "Arial" (font_size 8))) + (line (pt 216 96)(pt 200 96)(line_width 3)) + ) + (port + (pt 216 152) + (output) + (text "pll_scandata" (rect 0 0 86 16)(font "Arial" (font_size 8))) + (text "pll_scandata" (rect 124 144 197 160)(font "Arial" (font_size 8))) + (line (pt 216 152)(pt 200 152)(line_width 1)) + ) + (port + (pt 216 168) + (output) + (text "pll_scanclk" (rect 0 0 76 16)(font "Arial" (font_size 8))) + (text "pll_scanclk" (rect 132 160 197 176)(font "Arial" (font_size 8))) + (line (pt 216 168)(pt 200 168)(line_width 1)) + ) + (port + (pt 216 200) + (output) + (text "pll_scanclkena" (rect 0 0 101 16)(font "Arial" (font_size 8))) + (text "pll_scanclkena" (rect 111 192 197 208)(font "Arial" (font_size 8))) + (line (pt 216 200)(pt 200 200)(line_width 1)) + ) + (port + (pt 216 216) + (output) + (text "pll_configupdate" (rect 0 0 109 16)(font "Arial" (font_size 8))) + (text "pll_configupdate" (rect 104 208 197 224)(font "Arial" (font_size 8))) + (line (pt 216 216)(pt 200 216)(line_width 1)) + ) + (port + (pt 216 248) + (output) + (text "pll_areset" (rect 0 0 66 16)(font "Arial" (font_size 8))) + (text "pll_areset" (rect 141 240 197 256)(font "Arial" (font_size 8))) + (line (pt 216 248)(pt 200 248)(line_width 1)) + ) + (drawing + (line (pt 0 0)(pt 217 0)(line_width 1)) + (line (pt 217 0)(pt 217 297)(line_width 1)) + (line (pt 0 297)(pt 217 297)(line_width 1)) + (line (pt 0 0)(pt 0 297)(line_width 1)) + (line (pt 16 24)(pt 201 24)(line_width 1)) + (line (pt 201 24)(pt 201 273)(line_width 1)) + (line (pt 16 273)(pt 201 273)(line_width 1)) + (line (pt 16 24)(pt 16 273)(line_width 1)) + ) +) diff --git a/FPGA_quartus/altpll_reconfig1.cmp b/FPGA_quartus/altpll_reconfig1.cmp new file mode 100644 index 0000000..7d409d0 --- /dev/null +++ b/FPGA_quartus/altpll_reconfig1.cmp @@ -0,0 +1,38 @@ +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component altpll_reconfig1 + PORT + ( + clock : IN STD_LOGIC ; + counter_param : IN STD_LOGIC_VECTOR (2 DOWNTO 0); + counter_type : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + data_in : IN STD_LOGIC_VECTOR (8 DOWNTO 0); + pll_areset_in : IN STD_LOGIC := '0'; + pll_scandataout : IN STD_LOGIC ; + pll_scandone : IN STD_LOGIC ; + read_param : IN STD_LOGIC ; + reconfig : IN STD_LOGIC ; + reset : IN STD_LOGIC ; + write_param : IN STD_LOGIC ; + busy : OUT STD_LOGIC ; + data_out : OUT STD_LOGIC_VECTOR (8 DOWNTO 0); + pll_areset : OUT STD_LOGIC ; + pll_configupdate : OUT STD_LOGIC ; + pll_scanclk : OUT STD_LOGIC ; + pll_scanclkena : OUT STD_LOGIC ; + pll_scandata : OUT STD_LOGIC + ); +end component; diff --git a/FPGA_quartus/altpll_reconfig1.inc b/FPGA_quartus/altpll_reconfig1.inc new file mode 100644 index 0000000..c1a6e65 --- /dev/null +++ b/FPGA_quartus/altpll_reconfig1.inc @@ -0,0 +1,39 @@ +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION altpll_reconfig1 +( + clock, + counter_param[2..0], + counter_type[3..0], + data_in[8..0], + pll_areset_in, + pll_scandataout, + pll_scandone, + read_param, + reconfig, + reset, + write_param +) + +RETURNS ( + busy, + data_out[8..0], + pll_areset, + pll_configupdate, + pll_scanclk, + pll_scanclkena, + pll_scandata +); diff --git a/FPGA_quartus/altpll_reconfig1.qip b/FPGA_quartus/altpll_reconfig1.qip new file mode 100644 index 0000000..713a3c3 --- /dev/null +++ b/FPGA_quartus/altpll_reconfig1.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "ALTPLL_RECONFIG" +set_global_assignment -name IP_TOOL_VERSION "9.1" +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll_reconfig1.tdf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll_reconfig1.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll_reconfig1.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "altpll_reconfig1.cmp"] diff --git a/FPGA_quartus/altpll_reconfig1.tdf b/FPGA_quartus/altpll_reconfig1.tdf new file mode 100644 index 0000000..82ad4ff --- /dev/null +++ b/FPGA_quartus/altpll_reconfig1.tdf @@ -0,0 +1,144 @@ +-- megafunction wizard: %ALTPLL_RECONFIG% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altpll_reconfig + +-- ============================================================ +-- File Name: altpll_reconfig1.tdf +-- Megafunction Name(s): +-- altpll_reconfig +-- +-- Simulation Library Files(s): +-- altera_mf;cycloneiii;lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 9.1 Build 350 03/24/2010 SP 2 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + +-- Clearbox generated function header +FUNCTION altpll_reconfig1_pllrcfg_t4q (clock, counter_param[2..0], counter_type[3..0], data_in[8..0], pll_areset_in, pll_scandataout, pll_scandone, read_param, reconfig, reset, write_param) +RETURNS ( busy, data_out[8..0], pll_areset, pll_configupdate, pll_scanclk, pll_scanclkena, pll_scandata); + + + + +SUBDESIGN altpll_reconfig1 +( + clock : INPUT; + counter_param[2..0] : INPUT; + counter_type[3..0] : INPUT; + data_in[8..0] : INPUT; + pll_areset_in : INPUT = GND; + pll_scandataout : INPUT; + pll_scandone : INPUT; + read_param : INPUT; + reconfig : INPUT; + reset : INPUT; + write_param : INPUT; + busy : OUTPUT; + data_out[8..0] : OUTPUT; + pll_areset : OUTPUT; + pll_configupdate : OUTPUT; + pll_scanclk : OUTPUT; + pll_scanclkena : OUTPUT; + pll_scandata : OUTPUT; +) + +VARIABLE + + altpll_reconfig1_pllrcfg_t4q_component : altpll_reconfig1_pllrcfg_t4q; + +BEGIN + + pll_areset = altpll_reconfig1_pllrcfg_t4q_component.pll_areset; + pll_scanclkena = altpll_reconfig1_pllrcfg_t4q_component.pll_scanclkena; + pll_scanclk = altpll_reconfig1_pllrcfg_t4q_component.pll_scanclk; + busy = altpll_reconfig1_pllrcfg_t4q_component.busy; + data_out[8..0] = altpll_reconfig1_pllrcfg_t4q_component.data_out[8..0]; + pll_scandata = altpll_reconfig1_pllrcfg_t4q_component.pll_scandata; + pll_configupdate = altpll_reconfig1_pllrcfg_t4q_component.pll_configupdate; + altpll_reconfig1_pllrcfg_t4q_component.reconfig = reconfig; + altpll_reconfig1_pllrcfg_t4q_component.counter_type[3..0] = counter_type[3..0]; + altpll_reconfig1_pllrcfg_t4q_component.pll_scandone = pll_scandone; + altpll_reconfig1_pllrcfg_t4q_component.pll_scandataout = pll_scandataout; + altpll_reconfig1_pllrcfg_t4q_component.pll_areset_in = pll_areset_in; + altpll_reconfig1_pllrcfg_t4q_component.read_param = read_param; + altpll_reconfig1_pllrcfg_t4q_component.reset = reset; + altpll_reconfig1_pllrcfg_t4q_component.data_in[8..0] = data_in[8..0]; + altpll_reconfig1_pllrcfg_t4q_component.clock = clock; + altpll_reconfig1_pllrcfg_t4q_component.counter_param[2..0] = counter_param[2..0]; + altpll_reconfig1_pllrcfg_t4q_component.write_param = write_param; +END; + + + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: CHAIN_TYPE NUMERIC "0" +-- Retrieval info: PRIVATE: INIT_FILE_NAME STRING "./altpll4.mif" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: USE_INIT_FILE STRING "0" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: USED_PORT: busy 0 0 0 0 OUTPUT NODEFVAL "busy" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL "clock" +-- Retrieval info: USED_PORT: counter_param 0 0 3 0 INPUT NODEFVAL "counter_param[2..0]" +-- Retrieval info: USED_PORT: counter_type 0 0 4 0 INPUT NODEFVAL "counter_type[3..0]" +-- Retrieval info: USED_PORT: data_in 0 0 9 0 INPUT NODEFVAL "data_in[8..0]" +-- Retrieval info: USED_PORT: data_out 0 0 9 0 OUTPUT NODEFVAL "data_out[8..0]" +-- Retrieval info: USED_PORT: pll_areset 0 0 0 0 OUTPUT NODEFVAL "pll_areset" +-- Retrieval info: USED_PORT: pll_areset_in 0 0 0 0 INPUT GND "pll_areset_in" +-- Retrieval info: USED_PORT: pll_configupdate 0 0 0 0 OUTPUT NODEFVAL "pll_configupdate" +-- Retrieval info: USED_PORT: pll_scanclk 0 0 0 0 OUTPUT NODEFVAL "pll_scanclk" +-- Retrieval info: USED_PORT: pll_scanclkena 0 0 0 0 OUTPUT NODEFVAL "pll_scanclkena" +-- Retrieval info: USED_PORT: pll_scandata 0 0 0 0 OUTPUT NODEFVAL "pll_scandata" +-- Retrieval info: USED_PORT: pll_scandataout 0 0 0 0 INPUT NODEFVAL "pll_scandataout" +-- Retrieval info: USED_PORT: pll_scandone 0 0 0 0 INPUT NODEFVAL "pll_scandone" +-- Retrieval info: USED_PORT: read_param 0 0 0 0 INPUT NODEFVAL "read_param" +-- Retrieval info: USED_PORT: reconfig 0 0 0 0 INPUT NODEFVAL "reconfig" +-- Retrieval info: USED_PORT: reset 0 0 0 0 INPUT NODEFVAL "reset" +-- Retrieval info: USED_PORT: write_param 0 0 0 0 INPUT NODEFVAL "write_param" +-- Retrieval info: CONNECT: @data_in 0 0 9 0 data_in 0 0 9 0 +-- Retrieval info: CONNECT: @reset 0 0 0 0 reset 0 0 0 0 +-- Retrieval info: CONNECT: @pll_scandone 0 0 0 0 pll_scandone 0 0 0 0 +-- Retrieval info: CONNECT: @read_param 0 0 0 0 read_param 0 0 0 0 +-- Retrieval info: CONNECT: @counter_type 0 0 4 0 counter_type 0 0 4 0 +-- Retrieval info: CONNECT: @pll_areset_in 0 0 0 0 pll_areset_in 0 0 0 0 +-- Retrieval info: CONNECT: @pll_scandataout 0 0 0 0 pll_scandataout 0 0 0 0 +-- Retrieval info: CONNECT: @write_param 0 0 0 0 write_param 0 0 0 0 +-- Retrieval info: CONNECT: pll_areset 0 0 0 0 @pll_areset 0 0 0 0 +-- Retrieval info: CONNECT: pll_configupdate 0 0 0 0 @pll_configupdate 0 0 0 0 +-- Retrieval info: CONNECT: data_out 0 0 9 0 @data_out 0 0 9 0 +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: pll_scanclkena 0 0 0 0 @pll_scanclkena 0 0 0 0 +-- Retrieval info: CONNECT: busy 0 0 0 0 @busy 0 0 0 0 +-- Retrieval info: CONNECT: @counter_param 0 0 3 0 counter_param 0 0 3 0 +-- Retrieval info: CONNECT: @reconfig 0 0 0 0 reconfig 0 0 0 0 +-- Retrieval info: CONNECT: pll_scandata 0 0 0 0 @pll_scandata 0 0 0 0 +-- Retrieval info: CONNECT: pll_scanclk 0 0 0 0 @pll_scanclk 0 0 0 0 +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll_reconfig1.tdf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll_reconfig1.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll_reconfig1.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll_reconfig1.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL altpll_reconfig1_inst.tdf FALSE +-- Retrieval info: LIB_FILE: altera_mf +-- Retrieval info: LIB_FILE: cycloneiii +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/altpll_reconfig1_pllrcfg_bju.tdf b/FPGA_quartus/altpll_reconfig1_pllrcfg_bju.tdf new file mode 100644 index 0000000..81695ae --- /dev/null +++ b/FPGA_quartus/altpll_reconfig1_pllrcfg_bju.tdf @@ -0,0 +1,583 @@ +--altpll_reconfig CBX_AUTO_BLACKBOX="ALL" device_family="Cyclone III" init_from_rom="NO" scan_init_file="./altpll4.mif" busy clock counter_param counter_type data_in data_out pll_areset pll_areset_in pll_configupdate pll_scanclk pll_scanclkena pll_scandata pll_scandataout pll_scandone read_param reconfig reset write_param +--VERSION_BEGIN 9.1SP2 cbx_altpll_reconfig 2010:03:24:20:43:42:SJ cbx_altsyncram 2010:03:24:20:43:42:SJ cbx_cycloneii 2010:03:24:20:43:43:SJ cbx_lpm_add_sub 2010:03:24:20:43:43:SJ cbx_lpm_compare 2010:03:24:20:43:43:SJ cbx_lpm_counter 2010:03:24:20:43:43:SJ cbx_lpm_decode 2010:03:24:20:43:43:SJ cbx_lpm_mux 2010:03:24:20:43:43:SJ cbx_mgl 2010:03:24:21:01:05:SJ cbx_stratix 2010:03:24:20:43:43:SJ cbx_stratixii 2010:03:24:20:43:43:SJ cbx_stratixiii 2010:03:24:20:43:43:SJ cbx_util_mgl 2010:03:24:20:43:43:SJ VERSION_END + + +-- Copyright (C) 1991-2010 Altera Corporation +-- Your use of Altera Corporation's design tools, logic functions +-- and other software and tools, and its AMPP partner logic +-- functions, and any output files from any of the foregoing +-- (including device programming or simulation files), and any +-- associated documentation or information are expressly subject +-- to the terms and conditions of the Altera Program License +-- Subscription Agreement, Altera MegaCore Function License +-- Agreement, or other applicable license agreement, including, +-- without limitation, that your use is for the sole purpose of +-- programming logic devices manufactured by Altera and sold by +-- Altera or its authorized distributors. Please refer to the +-- applicable agreement for further details. + + +include "altsyncram.inc"; +FUNCTION cycloneiii_lcell_comb (cin, dataa, datab, datac, datad) +WITH ( DONT_TOUCH, LUT_MASK, SUM_LUTC_INPUT) +RETURNS ( combout, cout); +FUNCTION lpm_add_sub (aclr, add_sub, cin, clken, clock, dataa[LPM_WIDTH-1..0], datab[LPM_WIDTH-1..0]) +WITH ( CARRY_CHAIN, CARRY_CHAIN_LENGTH, LPM_DIRECTION, LPM_PIPELINE, LPM_REPRESENTATION, LPM_WIDTH, ONE_INPUT_IS_CONSTANT, REGISTERED_AT_END, USE_WYS) +RETURNS ( cout, overflow, result[LPM_WIDTH-1..0]); +FUNCTION lpm_compare (aclr, clken, clock, dataa[LPM_WIDTH-1..0], datab[LPM_WIDTH-1..0]) +WITH ( LPM_PIPELINE, LPM_REPRESENTATION, LPM_WIDTH, ONE_INPUT_IS_CONSTANT) +RETURNS ( aeb, agb, ageb, alb, aleb, aneb); +FUNCTION lpm_counter (aclr, aload, aset, cin, clk_en, clock, cnt_en, data[LPM_WIDTH-1..0], sclr, sload, sset, updown) +WITH ( lpm_avalue, lpm_direction, lpm_modulus, lpm_port_updown, lpm_pvalue, lpm_svalue, lpm_width) +RETURNS ( cout, eq[15..0], q[LPM_WIDTH-1..0]); +FUNCTION lpm_decode (aclr, clken, clock, data[LPM_WIDTH-1..0], enable) +WITH ( CASCADE_CHAIN, IGNORE_CASCADE_BUFFERS, LPM_DECODES, LPM_PIPELINE, LPM_WIDTH) +RETURNS ( eq[LPM_DECODES-1..0]); + +--synthesis_resources = altsyncram 1 lpm_add_sub 2 lpm_compare 1 lpm_counter 7 lpm_decode 1 lut 3 reg 80 +OPTIONS ALTERA_INTERNAL_OPTION = "ADV_NETLIST_OPT_ALLOWED=""NEVER_ALLOW"";suppress_da_rule_internal=C106;{-to le_comb10} PLL_SCAN_RECONFIG_COUNTER_REMAP_LCELL=2;{-to le_comb8} PLL_SCAN_RECONFIG_COUNTER_REMAP_LCELL=0;{-to le_comb9} PLL_SCAN_RECONFIG_COUNTER_REMAP_LCELL=1;{-to idle_state} POWER_UP_LEVEL=LOW;{-to read_data_nominal_state} POWER_UP_LEVEL=LOW;{-to read_data_state} POWER_UP_LEVEL=LOW;{-to read_first_nominal_state} POWER_UP_LEVEL=LOW;{-to read_first_state} POWER_UP_LEVEL=LOW;{-to read_init_nominal_state} POWER_UP_LEVEL=LOW;{-to read_init_state} POWER_UP_LEVEL=LOW;{-to read_last_nominal_state} POWER_UP_LEVEL=LOW;{-to read_last_state} POWER_UP_LEVEL=LOW;{-to reconfig_counter_state} POWER_UP_LEVEL=LOW;{-to reconfig_init_state} POWER_UP_LEVEL=LOW;{-to reconfig_post_state} POWER_UP_LEVEL=LOW;{-to reconfig_seq_data_state} POWER_UP_LEVEL=LOW;{-to reconfig_seq_ena_state} POWER_UP_LEVEL=LOW;{-to reconfig_wait_state} POWER_UP_LEVEL=LOW;{-to reset_state} POWER_UP_LEVEL=HIGH;{-to write_data_state} POWER_UP_LEVEL=LOW;{-to write_init_nominal_state} POWER_UP_LEVEL=LOW;{-to write_init_state} POWER_UP_LEVEL=LOW;{-to write_nominal_state} POWER_UP_LEVEL=LOW"; + +SUBDESIGN altpll_reconfig1_pllrcfg_bju +( + busy : output; + clock : input; + counter_param[2..0] : input; + counter_type[3..0] : input; + data_in[8..0] : input; + data_out[8..0] : output; + pll_areset : output; + pll_areset_in : input; + pll_configupdate : output; + pll_scanclk : output; + pll_scanclkena : output; + pll_scandata : output; + pll_scandataout : input; + pll_scandone : input; + read_param : input; + reconfig : input; + reset : input; + write_param : input; +) +VARIABLE + altsyncram4 : altsyncram + WITH ( + INIT_FILE = "./altpll4.mif", + NUMWORDS_A = 144, + OPERATION_MODE = "SINGLE_PORT", + WIDTH_A = 1, + WIDTH_BYTEENA_A = 1, + WIDTHAD_A = 8 + ); + le_comb10 : cycloneiii_lcell_comb + WITH ( + DONT_TOUCH = "on", + LUT_MASK = "F0F0", + SUM_LUTC_INPUT = "datac" + ); + le_comb8 : cycloneiii_lcell_comb + WITH ( + DONT_TOUCH = "on", + LUT_MASK = "AAAA", + SUM_LUTC_INPUT = "datac" + ); + le_comb9 : cycloneiii_lcell_comb + WITH ( + DONT_TOUCH = "on", + LUT_MASK = "CCCC", + SUM_LUTC_INPUT = "datac" + ); + areset_init_state_1 : dffe; + areset_state : dffe; + C0_data_state : dffe; + C0_ena_state : dffe; + C1_data_state : dffe; + C1_ena_state : dffe; + C2_data_state : dffe; + C2_ena_state : dffe; + C3_data_state : dffe; + C3_ena_state : dffe; + C4_data_state : dffe; + C4_ena_state : dffe; + configupdate2_state : dffe; + configupdate3_state : dffe; + configupdate_state : dffe; + counter_param_latch_reg[2..0] : dffe; + counter_type_latch_reg[3..0] : dffe; + idle_state : dffe + WITH ( + power_up = "low" + ); + nominal_data[17..0] : dffe; + read_data_nominal_state : dffe + WITH ( + power_up = "low" + ); + read_data_state : dffe + WITH ( + power_up = "low" + ); + read_first_nominal_state : dffe + WITH ( + power_up = "low" + ); + read_first_state : dffe + WITH ( + power_up = "low" + ); + read_init_nominal_state : dffe + WITH ( + power_up = "low" + ); + read_init_state : dffe + WITH ( + power_up = "low" + ); + read_last_nominal_state : dffe + WITH ( + power_up = "low" + ); + read_last_state : dffe + WITH ( + power_up = "low" + ); + reconfig_counter_state : dffe + WITH ( + power_up = "low" + ); + reconfig_init_state : dffe + WITH ( + power_up = "low" + ); + reconfig_post_state : dffe + WITH ( + power_up = "low" + ); + reconfig_seq_data_state : dffe + WITH ( + power_up = "low" + ); + reconfig_seq_ena_state : dffe + WITH ( + power_up = "low" + ); + reconfig_wait_state : dffe + WITH ( + power_up = "low" + ); + reset_state : dffe + WITH ( + power_up = "high" + ); + shift_reg[17..0] : dffeas; + tmp_nominal_data_out_state : dffe; + tmp_seq_ena_state : dffe; + write_data_state : dffe + WITH ( + power_up = "low" + ); + write_init_nominal_state : dffe + WITH ( + power_up = "low" + ); + write_init_state : dffe + WITH ( + power_up = "low" + ); + write_nominal_state : dffe + WITH ( + power_up = "low" + ); + add_sub5 : lpm_add_sub + WITH ( + LPM_WIDTH = 9 + ); + add_sub6 : lpm_add_sub + WITH ( + LPM_WIDTH = 8 + ); + cmpr7 : lpm_compare + WITH ( + LPM_WIDTH = 8 + ); + cntr1 : lpm_counter + WITH ( + lpm_direction = "DOWN", + lpm_modulus = 144, + lpm_port_updown = "PORT_UNUSED", + lpm_width = 8 + ); + cntr12 : lpm_counter + WITH ( + lpm_direction = "DOWN", + lpm_modulus = 144, + lpm_port_updown = "PORT_UNUSED", + lpm_width = 8 + ); + cntr13 : lpm_counter + WITH ( + lpm_direction = "DOWN", + lpm_port_updown = "PORT_UNUSED", + lpm_width = 6 + ); + cntr14 : lpm_counter + WITH ( + lpm_direction = "DOWN", + lpm_port_updown = "PORT_UNUSED", + lpm_width = 5 + ); + cntr15 : lpm_counter + WITH ( + lpm_direction = "DOWN", + lpm_modulus = 144, + lpm_port_updown = "PORT_UNUSED", + lpm_width = 8 + ); + cntr2 : lpm_counter + WITH ( + lpm_direction = "UP", + lpm_port_updown = "PORT_UNUSED", + lpm_width = 8 + ); + cntr3 : lpm_counter + WITH ( + lpm_direction = "DOWN", + lpm_port_updown = "PORT_UNUSED", + lpm_width = 5 + ); + decode11 : lpm_decode + WITH ( + LPM_DECODES = 5, + LPM_WIDTH = 3 + ); + addr_counter_enable : WIRE; + addr_counter_out[7..0] : WIRE; + addr_counter_sload : WIRE; + addr_counter_sload_value[7..0] : WIRE; + addr_decoder_out[7..0] : WIRE; + c0_wire[7..0] : WIRE; + c1_wire[7..0] : WIRE; + c2_wire[7..0] : WIRE; + c3_wire[7..0] : WIRE; + c4_wire[7..0] : WIRE; + counter_param_latch[2..0] : WIRE; + counter_type_latch[3..0] : WIRE; + cuda_combout_wire[2..0] : WIRE; + dummy_scandataout : WIRE; + encode_out[2..0] : WIRE; + input_latch_enable : WIRE; + power_up : WIRE; + read_addr_counter_enable : WIRE; + read_addr_counter_out[7..0] : WIRE; + read_addr_counter_sload : WIRE; + read_addr_counter_sload_value[7..0] : WIRE; + read_addr_decoder_out[7..0] : WIRE; + read_nominal_out : WIRE; + reconfig_addr_counter_enable : WIRE; + reconfig_addr_counter_out[7..0] : WIRE; + reconfig_addr_counter_sload : WIRE; + reconfig_addr_counter_sload_value[7..0] : WIRE; + reconfig_done : WIRE; + reconfig_post_done : WIRE; + reconfig_width_counter_done : WIRE; + reconfig_width_counter_enable : WIRE; + reconfig_width_counter_sload : WIRE; + reconfig_width_counter_sload_value[5..0] : WIRE; + rotate_addr_counter_enable : WIRE; + rotate_addr_counter_out[7..0] : WIRE; + rotate_addr_counter_sload : WIRE; + rotate_addr_counter_sload_value[7..0] : WIRE; + rotate_decoder_wires[4..0] : WIRE; + rotate_width_counter_done : WIRE; + rotate_width_counter_enable : WIRE; + rotate_width_counter_sload : WIRE; + rotate_width_counter_sload_value[4..0] : WIRE; + scan_cache_address[7..0] : WIRE; + scan_cache_in : WIRE; + scan_cache_out : WIRE; + scan_cache_write_enable : WIRE; + sel_param_bypass_LF_unused : WIRE; + sel_param_c : WIRE; + sel_param_high_i_postscale : WIRE; + sel_param_low_r : WIRE; + sel_param_nominal_count : WIRE; + sel_param_odd_CP_unused : WIRE; + sel_type_c0 : WIRE; + sel_type_c1 : WIRE; + sel_type_c2 : WIRE; + sel_type_c3 : WIRE; + sel_type_c4 : WIRE; + sel_type_cplf : WIRE; + sel_type_m : WIRE; + sel_type_n : WIRE; + sel_type_vco : WIRE; + seq_addr_wire[7..0] : WIRE; + seq_sload_value[5..0] : WIRE; + shift_reg_clear : WIRE; + shift_reg_load_enable : WIRE; + shift_reg_load_nominal_enable : WIRE; + shift_reg_serial_in : WIRE; + shift_reg_serial_out : WIRE; + shift_reg_shift_enable : WIRE; + shift_reg_shift_nominal_enable : WIRE; + shift_reg_width_select[7..0] : WIRE; + w1565w : WIRE; + w1592w : WIRE; + w64w : WIRE; + width_counter_done : WIRE; + width_counter_enable : WIRE; + width_counter_sload : WIRE; + width_counter_sload_value[4..0] : WIRE; + width_decoder_out[4..0] : WIRE; + width_decoder_select[7..0] : WIRE; + write_from_rom : NODE; + +BEGIN + altsyncram4.address_a[] = scan_cache_address[]; + altsyncram4.clock0 = clock; + altsyncram4.data_a[] = ( scan_cache_in); + altsyncram4.wren_a = scan_cache_write_enable; + le_comb10.dataa = encode_out[0..0]; + le_comb10.datab = encode_out[1..1]; + le_comb10.datac = encode_out[2..2]; + le_comb8.dataa = encode_out[0..0]; + le_comb8.datab = encode_out[1..1]; + le_comb8.datac = encode_out[2..2]; + le_comb9.dataa = encode_out[0..0]; + le_comb9.datab = encode_out[1..1]; + le_comb9.datac = encode_out[2..2]; + areset_init_state_1.clk = clock; + areset_init_state_1.d = pll_scandone; + areset_state.clk = clock; + areset_state.d = (areset_init_state_1.q & (! reset)); + C0_data_state.clk = clock; + C0_data_state.d = (C0_ena_state.q # (C0_data_state.q & (! rotate_width_counter_done))); + C0_ena_state.clk = clock; + C0_ena_state.d = (C1_data_state.q & rotate_width_counter_done); + C1_data_state.clk = clock; + C1_data_state.d = (C1_ena_state.q # (C1_data_state.q & (! rotate_width_counter_done))); + C1_ena_state.clk = clock; + C1_ena_state.d = (C2_data_state.q & rotate_width_counter_done); + C2_data_state.clk = clock; + C2_data_state.d = (C2_ena_state.q # (C2_data_state.q & (! rotate_width_counter_done))); + C2_ena_state.clk = clock; + C2_ena_state.d = (C3_data_state.q & rotate_width_counter_done); + C3_data_state.clk = clock; + C3_data_state.d = (C3_ena_state.q # (C3_data_state.q & (! rotate_width_counter_done))); + C3_ena_state.clk = clock; + C3_ena_state.d = (C4_data_state.q & rotate_width_counter_done); + C4_data_state.clk = clock; + C4_data_state.d = (C4_ena_state.q # (C4_data_state.q & (! rotate_width_counter_done))); + C4_ena_state.clk = clock; + C4_ena_state.d = reconfig_init_state.q; + configupdate2_state.clk = clock; + configupdate2_state.d = configupdate_state.q; + configupdate3_state.clk = (! clock); + configupdate3_state.d = configupdate2_state.q; + configupdate_state.clk = clock; + configupdate_state.d = reconfig_post_state.q; + counter_param_latch_reg[].clk = clock; + counter_param_latch_reg[].clrn = (! reset); + counter_param_latch_reg[].d = counter_param[]; + counter_param_latch_reg[].ena = input_latch_enable; + counter_type_latch_reg[].clk = clock; + counter_type_latch_reg[].clrn = (! reset); + counter_type_latch_reg[].d = counter_type[]; + counter_type_latch_reg[].ena = input_latch_enable; + idle_state.clk = clock; + idle_state.clrn = (! reset); + idle_state.d = ((((((((((idle_state.q & (! read_param)) & (! write_param)) & (! reconfig)) & (! write_from_rom)) # read_last_state.q) # (write_data_state.q & width_counter_done)) # (write_nominal_state.q & width_counter_done)) # read_last_nominal_state.q) # (reconfig_wait_state.q & reconfig_done)) # reset_state.q); + nominal_data[].clk = clock; + nominal_data[].clrn = (! reset); + nominal_data[].d = ( cmpr7.aeb, data_in[8..0], add_sub6.result[7..0]); + read_data_nominal_state.clk = clock; + read_data_nominal_state.clrn = (! reset); + read_data_nominal_state.d = ((read_first_nominal_state.q & (! width_counter_done)) # (read_data_nominal_state.q & (! width_counter_done))); + read_data_state.clk = clock; + read_data_state.clrn = (! reset); + read_data_state.d = ((read_first_state.q & (! width_counter_done)) # (read_data_state.q & (! width_counter_done))); + read_first_nominal_state.clk = clock; + read_first_nominal_state.clrn = (! reset); + read_first_nominal_state.d = read_init_nominal_state.q; + read_first_state.clk = clock; + read_first_state.clrn = (! reset); + read_first_state.d = read_init_state.q; + read_init_nominal_state.clk = clock; + read_init_nominal_state.clrn = (! reset); + read_init_nominal_state.d = ((idle_state.q & read_param) & ((((((! counter_type[3..3]) & (! counter_type[2..2])) & (! counter_type[1..1])) & counter_param[2..2]) & counter_param[1..1]) & counter_param[0..0])); + read_init_state.clk = clock; + read_init_state.clrn = (! reset); + read_init_state.d = ((idle_state.q & read_param) & (! ((((((! counter_type[3..3]) & (! counter_type[2..2])) & (! counter_type[1..1])) & counter_param[2..2]) & counter_param[1..1]) & counter_param[0..0]))); + read_last_nominal_state.clk = clock; + read_last_nominal_state.clrn = (! reset); + read_last_nominal_state.d = ((read_first_nominal_state.q & width_counter_done) # (read_data_nominal_state.q & width_counter_done)); + read_last_state.clk = clock; + read_last_state.clrn = (! reset); + read_last_state.d = ((read_first_state.q & width_counter_done) # (read_data_state.q & width_counter_done)); + reconfig_counter_state.clk = clock; + reconfig_counter_state.clrn = (! reset); + reconfig_counter_state.d = ((((((((((reconfig_init_state.q # C0_data_state.q) # C1_data_state.q) # C2_data_state.q) # C3_data_state.q) # C4_data_state.q) # C0_ena_state.q) # C1_ena_state.q) # C2_ena_state.q) # C3_ena_state.q) # C4_ena_state.q); + reconfig_init_state.clk = clock; + reconfig_init_state.clrn = (! reset); + reconfig_init_state.d = (idle_state.q & reconfig); + reconfig_post_state.clk = clock; + reconfig_post_state.clrn = (! reset); + reconfig_post_state.d = ((reconfig_seq_data_state.q & reconfig_width_counter_done) # (reconfig_post_state.q & (! reconfig_post_done))); + reconfig_seq_data_state.clk = clock; + reconfig_seq_data_state.clrn = (! reset); + reconfig_seq_data_state.d = (reconfig_seq_ena_state.q # (reconfig_seq_data_state.q & (! reconfig_width_counter_done))); + reconfig_seq_ena_state.clk = clock; + reconfig_seq_ena_state.clrn = (! reset); + reconfig_seq_ena_state.d = tmp_seq_ena_state.q; + reconfig_wait_state.clk = clock; + reconfig_wait_state.clrn = (! reset); + reconfig_wait_state.d = ((reconfig_post_state.q & reconfig_post_done) # (reconfig_wait_state.q & (! reconfig_done))); + reset_state.clk = clock; + reset_state.d = power_up; + reset_state.prn = (! reset); + shift_reg[].clk = clock; + shift_reg[].clrn = (! reset); + shift_reg[].d = ( ((((shift_reg_load_nominal_enable & nominal_data[0].q) # (shift_reg_load_enable & data_in[0..0])) # (shift_reg_shift_enable & shift_reg[16].q)) # (shift_reg_shift_nominal_enable & shift_reg[16].q)), ((((shift_reg_load_nominal_enable & nominal_data[1].q) # (shift_reg_load_enable & data_in[1..1])) # (shift_reg_shift_enable & shift_reg[15].q)) # (shift_reg_shift_nominal_enable & shift_reg[15].q)), ((((shift_reg_load_nominal_enable & nominal_data[2].q) # (shift_reg_load_enable & data_in[2..2])) # (shift_reg_shift_enable & shift_reg[14].q)) # (shift_reg_shift_nominal_enable & shift_reg[14].q)), ((((shift_reg_load_nominal_enable & nominal_data[3].q) # (shift_reg_load_enable & data_in[3..3])) # (shift_reg_shift_enable & shift_reg[13].q)) # (shift_reg_shift_nominal_enable & shift_reg[13].q)), ((((shift_reg_load_nominal_enable & nominal_data[4].q) # (shift_reg_load_enable & data_in[4..4])) # (shift_reg_shift_enable & shift_reg[12].q)) # (shift_reg_shift_nominal_enable & shift_reg[12].q)), ((((shift_reg_load_nominal_enable & nominal_data[5].q) # (shift_reg_load_enable & data_in[5..5])) # (shift_reg_shift_enable & shift_reg[11].q)) # (shift_reg_shift_nominal_enable & shift_reg[11].q)), ((((shift_reg_load_nominal_enable & nominal_data[6].q) # (shift_reg_load_enable & data_in[6..6])) # (shift_reg_shift_enable & shift_reg[10].q)) # (shift_reg_shift_nominal_enable & shift_reg[10].q)), ((((shift_reg_load_nominal_enable & nominal_data[7].q) # (shift_reg_load_enable & data_in[7..7])) # (shift_reg_shift_enable & shift_reg[9].q)) # (shift_reg_shift_nominal_enable & shift_reg[9].q)), ((((shift_reg_load_nominal_enable & nominal_data[8].q) # (shift_reg_load_enable & data_in[8..8])) # (shift_reg_shift_enable & shift_reg[8].q)) # (shift_reg_shift_nominal_enable & shift_reg[8].q)), ((((shift_reg_load_nominal_enable & nominal_data[9].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg[7].q)) # (shift_reg_shift_nominal_enable & shift_reg[7].q)), ((((shift_reg_load_nominal_enable & nominal_data[10].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg[6].q)) # (shift_reg_shift_nominal_enable & shift_reg[6].q)), ((((shift_reg_load_nominal_enable & nominal_data[11].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg[5].q)) # (shift_reg_shift_nominal_enable & shift_reg[5].q)), ((((shift_reg_load_nominal_enable & nominal_data[12].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg[4].q)) # (shift_reg_shift_nominal_enable & shift_reg[4].q)), ((((shift_reg_load_nominal_enable & nominal_data[13].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg[3].q)) # (shift_reg_shift_nominal_enable & shift_reg[3].q)), ((((shift_reg_load_nominal_enable & nominal_data[14].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg[2].q)) # (shift_reg_shift_nominal_enable & shift_reg[2].q)), ((((shift_reg_load_nominal_enable & nominal_data[15].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg[1].q)) # (shift_reg_shift_nominal_enable & shift_reg[1].q)), ((((shift_reg_load_nominal_enable & nominal_data[16].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg[0].q)) # (shift_reg_shift_nominal_enable & shift_reg[0].q)), ((((shift_reg_load_nominal_enable & nominal_data[17].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg_serial_in)) # (shift_reg_shift_nominal_enable & shift_reg_serial_in))); + shift_reg[].ena = ((((shift_reg_load_enable # shift_reg_shift_enable) # shift_reg_load_nominal_enable) # shift_reg_shift_nominal_enable) # shift_reg_clear); + shift_reg[].sclr = shift_reg_clear; + tmp_nominal_data_out_state.clk = clock; + tmp_nominal_data_out_state.d = ((read_last_nominal_state.q & (! idle_state.q)) # (tmp_nominal_data_out_state.q & idle_state.q)); + tmp_seq_ena_state.clk = clock; + tmp_seq_ena_state.d = (reconfig_counter_state.q & (C0_data_state.q & rotate_width_counter_done)); + write_data_state.clk = clock; + write_data_state.clrn = (! reset); + write_data_state.d = (write_init_state.q # (write_data_state.q & (! width_counter_done))); + write_init_nominal_state.clk = clock; + write_init_nominal_state.clrn = (! reset); + write_init_nominal_state.d = ((idle_state.q & write_param) & ((((((! counter_type[3..3]) & (! counter_type[2..2])) & (! counter_type[1..1])) & counter_param[2..2]) & counter_param[1..1]) & counter_param[0..0])); + write_init_state.clk = clock; + write_init_state.clrn = (! reset); + write_init_state.d = ((idle_state.q & write_param) & (! ((((((! counter_type[3..3]) & (! counter_type[2..2])) & (! counter_type[1..1])) & counter_param[2..2]) & counter_param[1..1]) & counter_param[0..0]))); + write_nominal_state.clk = clock; + write_nominal_state.clrn = (! reset); + write_nominal_state.d = (write_init_nominal_state.q # (write_nominal_state.q & (! width_counter_done))); + add_sub5.cin = B"0"; + add_sub5.dataa[] = ( B"0", shift_reg[8..1].q); + add_sub5.datab[] = ( B"0", shift_reg[17..10].q); + add_sub6.cin = data_in[0..0]; + add_sub6.dataa[] = ( data_in[8..1]); + cmpr7.dataa[] = ( data_in[7..0]); + cmpr7.datab[] = B"00000001"; + cntr1.clock = clock; + cntr1.cnt_en = addr_counter_enable; + cntr1.data[] = addr_counter_sload_value[]; + cntr1.sload = addr_counter_sload; + cntr12.clock = clock; + cntr12.cnt_en = reconfig_addr_counter_enable; + cntr12.data[] = reconfig_addr_counter_sload_value[]; + cntr12.sload = reconfig_addr_counter_sload; + cntr13.clock = clock; + cntr13.cnt_en = reconfig_width_counter_enable; + cntr13.data[] = reconfig_width_counter_sload_value[]; + cntr13.sload = reconfig_width_counter_sload; + cntr14.clock = clock; + cntr14.cnt_en = rotate_width_counter_enable; + cntr14.data[] = rotate_width_counter_sload_value[]; + cntr14.sload = rotate_width_counter_sload; + cntr15.clock = clock; + cntr15.cnt_en = rotate_addr_counter_enable; + cntr15.data[] = rotate_addr_counter_sload_value[]; + cntr15.sload = rotate_addr_counter_sload; + cntr2.clock = clock; + cntr2.cnt_en = read_addr_counter_enable; + cntr2.data[] = read_addr_counter_sload_value[]; + cntr2.sload = read_addr_counter_sload; + cntr3.clock = clock; + cntr3.cnt_en = width_counter_enable; + cntr3.data[] = width_counter_sload_value[]; + cntr3.sload = width_counter_sload; + decode11.data[] = cuda_combout_wire[]; + addr_counter_enable = (write_data_state.q # write_nominal_state.q); + addr_counter_out[] = cntr1.q[]; + addr_counter_sload = (write_init_state.q # write_init_nominal_state.q); + addr_counter_sload_value[] = (addr_decoder_out[] & (write_init_state.q # write_init_nominal_state.q)); + addr_decoder_out[] = (((((((((((((((((((((((((((((((((((( B"0", B"0", B"0", B"0", B"0", B"0", B"0", (sel_type_cplf & sel_param_bypass_LF_unused)) # ( B"0", B"0", B"0", B"0", B"0", B"0", (sel_type_cplf & sel_param_c), (sel_type_cplf & sel_param_c))) # ( B"0", B"0", B"0", B"0", (sel_type_cplf & sel_param_low_r), B"0", B"0", B"0")) # ( B"0", B"0", B"0", B"0", (sel_type_vco & sel_param_high_i_postscale), B"0", B"0", (sel_type_vco & sel_param_high_i_postscale))) # ( B"0", B"0", B"0", B"0", (sel_type_cplf & sel_param_odd_CP_unused), (sel_type_cplf & sel_param_odd_CP_unused), (sel_type_cplf & sel_param_odd_CP_unused), B"0")) # ( B"0", B"0", B"0", (sel_type_cplf & sel_param_high_i_postscale), B"0", B"0", B"0", (sel_type_cplf & sel_param_high_i_postscale))) # ( B"0", B"0", B"0", (sel_type_n & sel_param_bypass_LF_unused), B"0", B"0", (sel_type_n & sel_param_bypass_LF_unused), B"0")) # ( B"0", B"0", B"0", (sel_type_n & sel_param_high_i_postscale), (sel_type_n & sel_param_high_i_postscale), B"0", (sel_type_n & sel_param_high_i_postscale), B"0")) # ( B"0", B"0", B"0", (sel_type_n & sel_param_odd_CP_unused), (sel_type_n & sel_param_odd_CP_unused), B"0", (sel_type_n & sel_param_odd_CP_unused), (sel_type_n & sel_param_odd_CP_unused))) # ( B"0", B"0", (sel_type_n & sel_param_low_r), B"0", B"0", B"0", (sel_type_n & sel_param_low_r), (sel_type_n & sel_param_low_r))) # ( B"0", B"0", (sel_type_n & sel_param_nominal_count), B"0", B"0", B"0", (sel_type_n & sel_param_nominal_count), (sel_type_n & sel_param_nominal_count))) # ( B"0", B"0", (sel_type_m & sel_param_bypass_LF_unused), B"0", B"0", (sel_type_m & sel_param_bypass_LF_unused), B"0", B"0")) # ( B"0", B"0", (sel_type_m & sel_param_high_i_postscale), B"0", (sel_type_m & sel_param_high_i_postscale), (sel_type_m & sel_param_high_i_postscale), B"0", B"0")) # ( B"0", B"0", (sel_type_m & sel_param_odd_CP_unused), B"0", (sel_type_m & sel_param_odd_CP_unused), (sel_type_m & sel_param_odd_CP_unused), B"0", (sel_type_m & sel_param_odd_CP_unused))) # ( B"0", B"0", (sel_type_m & sel_param_low_r), (sel_type_m & sel_param_low_r), B"0", (sel_type_m & sel_param_low_r), B"0", (sel_type_m & sel_param_low_r))) # ( B"0", B"0", (sel_type_m & sel_param_nominal_count), (sel_type_m & sel_param_nominal_count), B"0", (sel_type_m & sel_param_nominal_count), B"0", (sel_type_m & sel_param_nominal_count))) # ( B"0", B"0", (sel_type_c0 & sel_param_bypass_LF_unused), (sel_type_c0 & sel_param_bypass_LF_unused), B"0", (sel_type_c0 & sel_param_bypass_LF_unused), (sel_type_c0 & sel_param_bypass_LF_unused), B"0")) # ( B"0", B"0", (sel_type_c0 & sel_param_high_i_postscale), (sel_type_c0 & sel_param_high_i_postscale), (sel_type_c0 & sel_param_high_i_postscale), (sel_type_c0 & sel_param_high_i_postscale), (sel_type_c0 & sel_param_high_i_postscale), B"0")) # ( B"0", B"0", (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused))) # ( B"0", (sel_type_c0 & sel_param_low_r), B"0", B"0", B"0", (sel_type_c0 & sel_param_low_r), (sel_type_c0 & sel_param_low_r), (sel_type_c0 & sel_param_low_r))) # ( B"0", (sel_type_c1 & sel_param_bypass_LF_unused), B"0", B"0", (sel_type_c1 & sel_param_bypass_LF_unused), B"0", B"0", B"0")) # ( B"0", (sel_type_c1 & sel_param_high_i_postscale), B"0", (sel_type_c1 & sel_param_high_i_postscale), B"0", B"0", B"0", B"0")) # ( B"0", (sel_type_c1 & sel_param_odd_CP_unused), B"0", (sel_type_c1 & sel_param_odd_CP_unused), B"0", B"0", B"0", (sel_type_c1 & sel_param_odd_CP_unused))) # ( B"0", (sel_type_c1 & sel_param_low_r), B"0", (sel_type_c1 & sel_param_low_r), (sel_type_c1 & sel_param_low_r), B"0", B"0", (sel_type_c1 & sel_param_low_r))) # ( B"0", (sel_type_c2 & sel_param_bypass_LF_unused), B"0", (sel_type_c2 & sel_param_bypass_LF_unused), (sel_type_c2 & sel_param_bypass_LF_unused), B"0", (sel_type_c2 & sel_param_bypass_LF_unused), B"0")) # ( B"0", (sel_type_c2 & sel_param_high_i_postscale), (sel_type_c2 & sel_param_high_i_postscale), B"0", B"0", B"0", (sel_type_c2 & sel_param_high_i_postscale), B"0")) # ( B"0", (sel_type_c2 & sel_param_odd_CP_unused), (sel_type_c2 & sel_param_odd_CP_unused), B"0", B"0", B"0", (sel_type_c2 & sel_param_odd_CP_unused), (sel_type_c2 & sel_param_odd_CP_unused))) # ( B"0", (sel_type_c2 & sel_param_low_r), (sel_type_c2 & sel_param_low_r), B"0", (sel_type_c2 & sel_param_low_r), B"0", (sel_type_c2 & sel_param_low_r), (sel_type_c2 & sel_param_low_r))) # ( B"0", (sel_type_c3 & sel_param_bypass_LF_unused), (sel_type_c3 & sel_param_bypass_LF_unused), B"0", (sel_type_c3 & sel_param_bypass_LF_unused), (sel_type_c3 & sel_param_bypass_LF_unused), B"0", B"0")) # ( B"0", (sel_type_c3 & sel_param_high_i_postscale), (sel_type_c3 & sel_param_high_i_postscale), (sel_type_c3 & sel_param_high_i_postscale), B"0", (sel_type_c3 & sel_param_high_i_postscale), B"0", B"0")) # ( B"0", (sel_type_c3 & sel_param_odd_CP_unused), (sel_type_c3 & sel_param_odd_CP_unused), (sel_type_c3 & sel_param_odd_CP_unused), B"0", (sel_type_c3 & sel_param_odd_CP_unused), B"0", (sel_type_c3 & sel_param_odd_CP_unused))) # ( B"0", (sel_type_c3 & sel_param_low_r), (sel_type_c3 & sel_param_low_r), (sel_type_c3 & sel_param_low_r), (sel_type_c3 & sel_param_low_r), (sel_type_c3 & sel_param_low_r), B"0", (sel_type_c3 & sel_param_low_r))) # ( B"0", (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), B"0")) # ( (sel_type_c4 & sel_param_high_i_postscale), B"0", B"0", B"0", B"0", (sel_type_c4 & sel_param_high_i_postscale), (sel_type_c4 & sel_param_high_i_postscale), B"0")) # ( (sel_type_c4 & sel_param_odd_CP_unused), B"0", B"0", B"0", B"0", (sel_type_c4 & sel_param_odd_CP_unused), (sel_type_c4 & sel_param_odd_CP_unused), (sel_type_c4 & sel_param_odd_CP_unused))) # ( (sel_type_c4 & sel_param_low_r), B"0", B"0", B"0", (sel_type_c4 & sel_param_low_r), (sel_type_c4 & sel_param_low_r), (sel_type_c4 & sel_param_low_r), (sel_type_c4 & sel_param_low_r))); + busy = ((! idle_state.q) # areset_state.q); + c0_wire[] = B"01000111"; + c1_wire[] = B"01011001"; + c2_wire[] = B"01101011"; + c3_wire[] = B"01111101"; + c4_wire[] = B"10001111"; + counter_param_latch[] = counter_param_latch_reg[].q; + counter_type_latch[] = counter_type_latch_reg[].q; + cuda_combout_wire[] = ( le_comb10.combout, le_comb9.combout, le_comb8.combout); + data_out[] = ( ((shift_reg[8].q & (! read_nominal_out)) # (add_sub5.result[8..8] & read_nominal_out)), ((shift_reg[7].q & (! read_nominal_out)) # (add_sub5.result[7..7] & read_nominal_out)), ((shift_reg[6].q & (! read_nominal_out)) # (add_sub5.result[6..6] & read_nominal_out)), ((shift_reg[5].q & (! read_nominal_out)) # (add_sub5.result[5..5] & read_nominal_out)), ((shift_reg[4].q & (! read_nominal_out)) # (add_sub5.result[4..4] & read_nominal_out)), ((shift_reg[3].q & (! read_nominal_out)) # (add_sub5.result[3..3] & read_nominal_out)), ((shift_reg[2].q & (! read_nominal_out)) # (add_sub5.result[2..2] & read_nominal_out)), ((shift_reg[1].q & (! read_nominal_out)) # (add_sub5.result[1..1] & read_nominal_out)), ((shift_reg[0].q & (! read_nominal_out)) # (add_sub5.result[0..0] & read_nominal_out))); + dummy_scandataout = pll_scandataout; + encode_out[] = ( C4_ena_state.q, (C2_ena_state.q # C3_ena_state.q), (C1_ena_state.q # C3_ena_state.q)); + input_latch_enable = (idle_state.q & (write_param # read_param)); + pll_areset = (pll_areset_in # (areset_state.q & reconfig_wait_state.q)); + pll_configupdate = (configupdate_state.q & (! configupdate3_state.q)); + pll_scanclk = clock; + pll_scanclkena = ((rotate_width_counter_enable & (! rotate_width_counter_done)) # reconfig_seq_data_state.q); + pll_scandata = (scan_cache_out & ((rotate_width_counter_enable # reconfig_seq_data_state.q) # reconfig_post_state.q)); + power_up = ((((((((((((((((((((! reset_state.q) & (! idle_state.q)) & (! read_init_state.q)) & (! read_first_state.q)) & (! read_data_state.q)) & (! read_last_state.q)) & (! read_init_nominal_state.q)) & (! read_first_nominal_state.q)) & (! read_data_nominal_state.q)) & (! read_last_nominal_state.q)) & (! write_init_state.q)) & (! write_data_state.q)) & (! write_init_nominal_state.q)) & (! write_nominal_state.q)) & (! reconfig_init_state.q)) & (! reconfig_counter_state.q)) & (! reconfig_seq_ena_state.q)) & (! reconfig_seq_data_state.q)) & (! reconfig_post_state.q)) & (! reconfig_wait_state.q)); + read_addr_counter_enable = (((read_first_state.q # read_data_state.q) # read_first_nominal_state.q) # read_data_nominal_state.q); + read_addr_counter_out[] = cntr2.q[]; + read_addr_counter_sload = (read_init_state.q # read_init_nominal_state.q); + read_addr_counter_sload_value[] = (read_addr_decoder_out[] & (read_init_state.q # read_init_nominal_state.q)); + read_addr_decoder_out[] = (((((((((((((((((((((((((((((((((((( B"0", B"0", B"0", B"0", B"0", B"0", B"0", B"0") # ( B"0", B"0", B"0", B"0", B"0", B"0", (sel_type_cplf & sel_param_c), B"0")) # ( B"0", B"0", B"0", B"0", B"0", (sel_type_cplf & sel_param_low_r), B"0", B"0")) # ( B"0", B"0", B"0", B"0", (sel_type_vco & sel_param_high_i_postscale), B"0", B"0", (sel_type_vco & sel_param_high_i_postscale))) # ( B"0", B"0", B"0", B"0", (sel_type_cplf & sel_param_odd_CP_unused), B"0", (sel_type_cplf & sel_param_odd_CP_unused), B"0")) # ( B"0", B"0", B"0", B"0", (sel_type_cplf & sel_param_high_i_postscale), (sel_type_cplf & sel_param_high_i_postscale), (sel_type_cplf & sel_param_high_i_postscale), (sel_type_cplf & sel_param_high_i_postscale))) # ( B"0", B"0", B"0", (sel_type_n & sel_param_bypass_LF_unused), B"0", B"0", (sel_type_n & sel_param_bypass_LF_unused), B"0")) # ( B"0", B"0", B"0", (sel_type_n & sel_param_high_i_postscale), B"0", B"0", (sel_type_n & sel_param_high_i_postscale), (sel_type_n & sel_param_high_i_postscale))) # ( B"0", B"0", B"0", (sel_type_n & sel_param_odd_CP_unused), (sel_type_n & sel_param_odd_CP_unused), B"0", (sel_type_n & sel_param_odd_CP_unused), (sel_type_n & sel_param_odd_CP_unused))) # ( B"0", B"0", B"0", (sel_type_n & sel_param_low_r), (sel_type_n & sel_param_low_r), (sel_type_n & sel_param_low_r), B"0", B"0")) # ( B"0", B"0", B"0", (sel_type_n & sel_param_nominal_count), B"0", B"0", (sel_type_n & sel_param_nominal_count), B"0")) # ( B"0", B"0", (sel_type_m & sel_param_bypass_LF_unused), B"0", B"0", (sel_type_m & sel_param_bypass_LF_unused), B"0", B"0")) # ( B"0", B"0", (sel_type_m & sel_param_high_i_postscale), B"0", B"0", (sel_type_m & sel_param_high_i_postscale), B"0", (sel_type_m & sel_param_high_i_postscale))) # ( B"0", B"0", (sel_type_m & sel_param_odd_CP_unused), B"0", (sel_type_m & sel_param_odd_CP_unused), (sel_type_m & sel_param_odd_CP_unused), B"0", (sel_type_m & sel_param_odd_CP_unused))) # ( B"0", B"0", (sel_type_m & sel_param_low_r), B"0", (sel_type_m & sel_param_low_r), (sel_type_m & sel_param_low_r), (sel_type_m & sel_param_low_r), B"0")) # ( B"0", B"0", (sel_type_m & sel_param_nominal_count), B"0", B"0", (sel_type_m & sel_param_nominal_count), B"0", B"0")) # ( B"0", B"0", (sel_type_c0 & sel_param_bypass_LF_unused), (sel_type_c0 & sel_param_bypass_LF_unused), B"0", (sel_type_c0 & sel_param_bypass_LF_unused), (sel_type_c0 & sel_param_bypass_LF_unused), B"0")) # ( B"0", B"0", (sel_type_c0 & sel_param_high_i_postscale), (sel_type_c0 & sel_param_high_i_postscale), B"0", (sel_type_c0 & sel_param_high_i_postscale), (sel_type_c0 & sel_param_high_i_postscale), (sel_type_c0 & sel_param_high_i_postscale))) # ( B"0", B"0", (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused))) # ( B"0", (sel_type_c0 & sel_param_low_r), B"0", B"0", B"0", B"0", B"0", B"0")) # ( B"0", (sel_type_c1 & sel_param_bypass_LF_unused), B"0", B"0", (sel_type_c1 & sel_param_bypass_LF_unused), B"0", B"0", B"0")) # ( B"0", (sel_type_c1 & sel_param_high_i_postscale), B"0", B"0", (sel_type_c1 & sel_param_high_i_postscale), B"0", B"0", (sel_type_c1 & sel_param_high_i_postscale))) # ( B"0", (sel_type_c1 & sel_param_odd_CP_unused), B"0", (sel_type_c1 & sel_param_odd_CP_unused), B"0", B"0", B"0", (sel_type_c1 & sel_param_odd_CP_unused))) # ( B"0", (sel_type_c1 & sel_param_low_r), B"0", (sel_type_c1 & sel_param_low_r), B"0", B"0", (sel_type_c1 & sel_param_low_r), B"0")) # ( B"0", (sel_type_c2 & sel_param_bypass_LF_unused), B"0", (sel_type_c2 & sel_param_bypass_LF_unused), (sel_type_c2 & sel_param_bypass_LF_unused), B"0", (sel_type_c2 & sel_param_bypass_LF_unused), B"0")) # ( B"0", (sel_type_c2 & sel_param_high_i_postscale), B"0", (sel_type_c2 & sel_param_high_i_postscale), (sel_type_c2 & sel_param_high_i_postscale), B"0", (sel_type_c2 & sel_param_high_i_postscale), (sel_type_c2 & sel_param_high_i_postscale))) # ( B"0", (sel_type_c2 & sel_param_odd_CP_unused), (sel_type_c2 & sel_param_odd_CP_unused), B"0", B"0", B"0", (sel_type_c2 & sel_param_odd_CP_unused), (sel_type_c2 & sel_param_odd_CP_unused))) # ( B"0", (sel_type_c2 & sel_param_low_r), (sel_type_c2 & sel_param_low_r), B"0", B"0", (sel_type_c2 & sel_param_low_r), B"0", B"0")) # ( B"0", (sel_type_c3 & sel_param_bypass_LF_unused), (sel_type_c3 & sel_param_bypass_LF_unused), B"0", (sel_type_c3 & sel_param_bypass_LF_unused), (sel_type_c3 & sel_param_bypass_LF_unused), B"0", B"0")) # ( B"0", (sel_type_c3 & sel_param_high_i_postscale), (sel_type_c3 & sel_param_high_i_postscale), B"0", (sel_type_c3 & sel_param_high_i_postscale), (sel_type_c3 & sel_param_high_i_postscale), B"0", (sel_type_c3 & sel_param_high_i_postscale))) # ( B"0", (sel_type_c3 & sel_param_odd_CP_unused), (sel_type_c3 & sel_param_odd_CP_unused), (sel_type_c3 & sel_param_odd_CP_unused), B"0", (sel_type_c3 & sel_param_odd_CP_unused), B"0", (sel_type_c3 & sel_param_odd_CP_unused))) # ( B"0", (sel_type_c3 & sel_param_low_r), (sel_type_c3 & sel_param_low_r), (sel_type_c3 & sel_param_low_r), B"0", (sel_type_c3 & sel_param_low_r), (sel_type_c3 & sel_param_low_r), B"0")) # ( B"0", (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), B"0")) # ( B"0", (sel_type_c4 & sel_param_high_i_postscale), (sel_type_c4 & sel_param_high_i_postscale), (sel_type_c4 & sel_param_high_i_postscale), (sel_type_c4 & sel_param_high_i_postscale), (sel_type_c4 & sel_param_high_i_postscale), (sel_type_c4 & sel_param_high_i_postscale), (sel_type_c4 & sel_param_high_i_postscale))) # ( (sel_type_c4 & sel_param_odd_CP_unused), B"0", B"0", B"0", B"0", (sel_type_c4 & sel_param_odd_CP_unused), (sel_type_c4 & sel_param_odd_CP_unused), (sel_type_c4 & sel_param_odd_CP_unused))) # ( (sel_type_c4 & sel_param_low_r), B"0", B"0", B"0", (sel_type_c4 & sel_param_low_r), B"0", B"0", B"0")); + read_nominal_out = tmp_nominal_data_out_state.q; + reconfig_addr_counter_enable = reconfig_seq_data_state.q; + reconfig_addr_counter_out[] = cntr12.q[]; + reconfig_addr_counter_sload = reconfig_seq_ena_state.q; + reconfig_addr_counter_sload_value[] = (reconfig_seq_ena_state.q & seq_addr_wire[]); + reconfig_done = ((! pll_scandone) & (dummy_scandataout # (! dummy_scandataout))); + reconfig_post_done = pll_scandone; + reconfig_width_counter_done = ((((((! cntr13.q[0..0]) & (! cntr13.q[1..1])) & (! cntr13.q[2..2])) & (! cntr13.q[3..3])) & (! cntr13.q[4..4])) & (! cntr13.q[5..5])); + reconfig_width_counter_enable = reconfig_seq_data_state.q; + reconfig_width_counter_sload = reconfig_seq_ena_state.q; + reconfig_width_counter_sload_value[] = (reconfig_seq_ena_state.q & seq_sload_value[]); + rotate_addr_counter_enable = ((((C0_data_state.q # C1_data_state.q) # C2_data_state.q) # C3_data_state.q) # C4_data_state.q); + rotate_addr_counter_out[] = cntr15.q[]; + rotate_addr_counter_sload = ((((C0_ena_state.q # C1_ena_state.q) # C2_ena_state.q) # C3_ena_state.q) # C4_ena_state.q); + rotate_addr_counter_sload_value[] = (((((c0_wire[] & rotate_decoder_wires[0..0]) # (c1_wire[] & rotate_decoder_wires[1..1])) # (c2_wire[] & rotate_decoder_wires[2..2])) # (c3_wire[] & rotate_decoder_wires[3..3])) # (c4_wire[] & rotate_decoder_wires[4..4])); + rotate_decoder_wires[] = decode11.eq[]; + rotate_width_counter_done = (((((! cntr14.q[0..0]) & (! cntr14.q[1..1])) & (! cntr14.q[2..2])) & (! cntr14.q[3..3])) & (! cntr14.q[4..4])); + rotate_width_counter_enable = ((((C0_data_state.q # C1_data_state.q) # C2_data_state.q) # C3_data_state.q) # C4_data_state.q); + rotate_width_counter_sload = ((((C0_ena_state.q # C1_ena_state.q) # C2_ena_state.q) # C3_ena_state.q) # C4_ena_state.q); + rotate_width_counter_sload_value[] = B"10010"; + scan_cache_address[] = ((((addr_counter_out[] & addr_counter_enable) # (read_addr_counter_out[] & read_addr_counter_enable)) # (rotate_addr_counter_out[] & rotate_addr_counter_enable)) # (reconfig_addr_counter_out[] & reconfig_addr_counter_enable)); + scan_cache_in = shift_reg_serial_out; + scan_cache_out = altsyncram4.q_a[0..0]; + scan_cache_write_enable = (write_data_state.q # write_nominal_state.q); + sel_param_bypass_LF_unused = (((! counter_param_latch[0..0]) & (! counter_param_latch[1..1])) & counter_param_latch[2..2]); + sel_param_c = (((! counter_param_latch[0..0]) & counter_param_latch[1..1]) & (! counter_param_latch[2..2])); + sel_param_high_i_postscale = (((! counter_param_latch[0..0]) & (! counter_param_latch[1..1])) & (! counter_param_latch[2..2])); + sel_param_low_r = ((counter_param_latch[0..0] & (! counter_param_latch[1..1])) & (! counter_param_latch[2..2])); + sel_param_nominal_count = ((counter_param_latch[0..0] & counter_param_latch[1..1]) & counter_param_latch[2..2]); + sel_param_odd_CP_unused = ((counter_param_latch[0..0] & (! counter_param_latch[1..1])) & counter_param_latch[2..2]); + sel_type_c0 = ((((! counter_type_latch[0..0]) & (! counter_type_latch[1..1])) & counter_type_latch[2..2]) & (! counter_type_latch[3..3])); + sel_type_c1 = (((counter_type_latch[0..0] & (! counter_type_latch[1..1])) & counter_type_latch[2..2]) & (! counter_type_latch[3..3])); + sel_type_c2 = ((((! counter_type_latch[0..0]) & counter_type_latch[1..1]) & counter_type_latch[2..2]) & (! counter_type_latch[3..3])); + sel_type_c3 = (((counter_type_latch[0..0] & counter_type_latch[1..1]) & counter_type_latch[2..2]) & (! counter_type_latch[3..3])); + sel_type_c4 = ((((! counter_type_latch[0..0]) & (! counter_type_latch[1..1])) & (! counter_type_latch[2..2])) & counter_type_latch[3..3]); + sel_type_cplf = ((((! counter_type_latch[0..0]) & counter_type_latch[1..1]) & (! counter_type_latch[2..2])) & (! counter_type_latch[3..3])); + sel_type_m = (((counter_type_latch[0..0] & (! counter_type_latch[1..1])) & (! counter_type_latch[2..2])) & (! counter_type_latch[3..3])); + sel_type_n = ((((! counter_type_latch[0..0]) & (! counter_type_latch[1..1])) & (! counter_type_latch[2..2])) & (! counter_type_latch[3..3])); + sel_type_vco = (((counter_type_latch[0..0] & counter_type_latch[1..1]) & (! counter_type_latch[2..2])) & (! counter_type_latch[3..3])); + seq_addr_wire[] = B"00110101"; + seq_sload_value[] = B"110110"; + shift_reg_clear = (read_init_state.q # read_init_nominal_state.q); + shift_reg_load_enable = ((idle_state.q & write_param) & (! ((((((! counter_type[3..3]) & (! counter_type[2..2])) & (! counter_type[1..1])) & counter_param[2..2]) & counter_param[1..1]) & counter_param[0..0]))); + shift_reg_load_nominal_enable = ((idle_state.q & write_param) & ((((((! counter_type[3..3]) & (! counter_type[2..2])) & (! counter_type[1..1])) & counter_param[2..2]) & counter_param[1..1]) & counter_param[0..0])); + shift_reg_serial_in = scan_cache_out; + shift_reg_serial_out = ((((((((shift_reg[17].q & shift_reg_width_select[0..0]) # (shift_reg[17].q & shift_reg_width_select[1..1])) # (shift_reg[17].q & shift_reg_width_select[2..2])) # (shift_reg[17].q & shift_reg_width_select[3..3])) # (shift_reg[17].q & shift_reg_width_select[4..4])) # (shift_reg[17].q & shift_reg_width_select[5..5])) # (shift_reg[17].q & shift_reg_width_select[6..6])) # (shift_reg[17].q & shift_reg_width_select[7..7])); + shift_reg_shift_enable = ((read_data_state.q # read_last_state.q) # write_data_state.q); + shift_reg_shift_nominal_enable = ((read_data_nominal_state.q # read_last_nominal_state.q) # write_nominal_state.q); + shift_reg_width_select[] = width_decoder_select[]; + w1565w = B"0"; + w1592w = B"0"; + w64w = B"0"; + width_counter_done = (((((! cntr3.q[0..0]) & (! cntr3.q[1..1])) & (! cntr3.q[2..2])) & (! cntr3.q[3..3])) & (! cntr3.q[4..4])); + width_counter_enable = ((((read_first_state.q # read_data_state.q) # write_data_state.q) # read_data_nominal_state.q) # write_nominal_state.q); + width_counter_sload = (((read_init_state.q # write_init_state.q) # read_init_nominal_state.q) # write_init_nominal_state.q); + width_counter_sload_value[] = width_decoder_out[]; + width_decoder_out[] = (((((( B"0", B"0", B"0", B"0", B"0") # ( width_decoder_select[2..2], B"0", B"0", B"0", width_decoder_select[2..2])) # ( B"0", B"0", B"0", B"0", width_decoder_select[3..3])) # ( B"0", B"0", width_decoder_select[5..5], width_decoder_select[5..5], width_decoder_select[5..5])) # ( B"0", B"0", B"0", width_decoder_select[6..6], B"0")) # ( B"0", B"0", width_decoder_select[7..7], B"0", B"0")); + width_decoder_select[] = ( ((sel_type_cplf & sel_param_low_r) # (sel_type_cplf & sel_param_odd_CP_unused)), (sel_type_cplf & sel_param_high_i_postscale), ((((((((((((((sel_type_n & sel_param_high_i_postscale) # (sel_type_n & sel_param_low_r)) # (sel_type_m & sel_param_high_i_postscale)) # (sel_type_m & sel_param_low_r)) # (sel_type_c0 & sel_param_high_i_postscale)) # (sel_type_c0 & sel_param_low_r)) # (sel_type_c1 & sel_param_high_i_postscale)) # (sel_type_c1 & sel_param_low_r)) # (sel_type_c2 & sel_param_high_i_postscale)) # (sel_type_c2 & sel_param_low_r)) # (sel_type_c3 & sel_param_high_i_postscale)) # (sel_type_c3 & sel_param_low_r)) # (sel_type_c4 & sel_param_high_i_postscale)) # (sel_type_c4 & sel_param_low_r)), w1592w, ((sel_type_cplf & sel_param_bypass_LF_unused) # (sel_type_cplf & sel_param_c)), ((sel_type_n & sel_param_nominal_count) # (sel_type_m & sel_param_nominal_count)), w1565w, (((((((((((((((sel_type_vco & sel_param_high_i_postscale) # (sel_type_n & sel_param_bypass_LF_unused)) # (sel_type_n & sel_param_odd_CP_unused)) # (sel_type_m & sel_param_bypass_LF_unused)) # (sel_type_m & sel_param_odd_CP_unused)) # (sel_type_c0 & sel_param_bypass_LF_unused)) # (sel_type_c0 & sel_param_odd_CP_unused)) # (sel_type_c1 & sel_param_bypass_LF_unused)) # (sel_type_c1 & sel_param_odd_CP_unused)) # (sel_type_c2 & sel_param_bypass_LF_unused)) # (sel_type_c2 & sel_param_odd_CP_unused)) # (sel_type_c3 & sel_param_bypass_LF_unused)) # (sel_type_c3 & sel_param_odd_CP_unused)) # (sel_type_c4 & sel_param_bypass_LF_unused)) # (sel_type_c4 & sel_param_odd_CP_unused))); + write_from_rom = GND; +END; +--VALID FILE diff --git a/FPGA_quartus/altpll_reconfig1_pllrcfg_t4q.tdf b/FPGA_quartus/altpll_reconfig1_pllrcfg_t4q.tdf new file mode 100644 index 0000000..fae939f --- /dev/null +++ b/FPGA_quartus/altpll_reconfig1_pllrcfg_t4q.tdf @@ -0,0 +1,582 @@ +--altpll_reconfig CBX_AUTO_BLACKBOX="ALL" device_family="Cyclone III" busy clock counter_param counter_type data_in data_out pll_areset pll_areset_in pll_configupdate pll_scanclk pll_scanclkena pll_scandata pll_scandataout pll_scandone read_param reconfig reset write_param +--VERSION_BEGIN 9.1SP2 cbx_altpll_reconfig 2010:03:24:20:43:42:SJ cbx_altsyncram 2010:03:24:20:43:42:SJ cbx_cycloneii 2010:03:24:20:43:43:SJ cbx_lpm_add_sub 2010:03:24:20:43:43:SJ cbx_lpm_compare 2010:03:24:20:43:43:SJ cbx_lpm_counter 2010:03:24:20:43:43:SJ cbx_lpm_decode 2010:03:24:20:43:43:SJ cbx_lpm_mux 2010:03:24:20:43:43:SJ cbx_mgl 2010:03:24:21:01:05:SJ cbx_stratix 2010:03:24:20:43:43:SJ cbx_stratixii 2010:03:24:20:43:43:SJ cbx_stratixiii 2010:03:24:20:43:43:SJ cbx_util_mgl 2010:03:24:20:43:43:SJ VERSION_END + + +-- Copyright (C) 1991-2010 Altera Corporation +-- Your use of Altera Corporation's design tools, logic functions +-- and other software and tools, and its AMPP partner logic +-- functions, and any output files from any of the foregoing +-- (including device programming or simulation files), and any +-- associated documentation or information are expressly subject +-- to the terms and conditions of the Altera Program License +-- Subscription Agreement, Altera MegaCore Function License +-- Agreement, or other applicable license agreement, including, +-- without limitation, that your use is for the sole purpose of +-- programming logic devices manufactured by Altera and sold by +-- Altera or its authorized distributors. Please refer to the +-- applicable agreement for further details. + + +include "altsyncram.inc"; +FUNCTION cycloneiii_lcell_comb (cin, dataa, datab, datac, datad) +WITH ( DONT_TOUCH, LUT_MASK, SUM_LUTC_INPUT) +RETURNS ( combout, cout); +FUNCTION lpm_add_sub (aclr, add_sub, cin, clken, clock, dataa[LPM_WIDTH-1..0], datab[LPM_WIDTH-1..0]) +WITH ( CARRY_CHAIN, CARRY_CHAIN_LENGTH, LPM_DIRECTION, LPM_PIPELINE, LPM_REPRESENTATION, LPM_WIDTH, ONE_INPUT_IS_CONSTANT, REGISTERED_AT_END, USE_WYS) +RETURNS ( cout, overflow, result[LPM_WIDTH-1..0]); +FUNCTION lpm_compare (aclr, clken, clock, dataa[LPM_WIDTH-1..0], datab[LPM_WIDTH-1..0]) +WITH ( LPM_PIPELINE, LPM_REPRESENTATION, LPM_WIDTH, ONE_INPUT_IS_CONSTANT) +RETURNS ( aeb, agb, ageb, alb, aleb, aneb); +FUNCTION lpm_counter (aclr, aload, aset, cin, clk_en, clock, cnt_en, data[LPM_WIDTH-1..0], sclr, sload, sset, updown) +WITH ( lpm_avalue, lpm_direction, lpm_modulus, lpm_port_updown, lpm_pvalue, lpm_svalue, lpm_width) +RETURNS ( cout, eq[15..0], q[LPM_WIDTH-1..0]); +FUNCTION lpm_decode (aclr, clken, clock, data[LPM_WIDTH-1..0], enable) +WITH ( CASCADE_CHAIN, IGNORE_CASCADE_BUFFERS, LPM_DECODES, LPM_PIPELINE, LPM_WIDTH) +RETURNS ( eq[LPM_DECODES-1..0]); + +--synthesis_resources = altsyncram 1 lpm_add_sub 2 lpm_compare 1 lpm_counter 7 lpm_decode 1 lut 3 reg 80 +OPTIONS ALTERA_INTERNAL_OPTION = "ADV_NETLIST_OPT_ALLOWED=""NEVER_ALLOW"";suppress_da_rule_internal=C106;{-to le_comb10} PLL_SCAN_RECONFIG_COUNTER_REMAP_LCELL=2;{-to le_comb8} PLL_SCAN_RECONFIG_COUNTER_REMAP_LCELL=0;{-to le_comb9} PLL_SCAN_RECONFIG_COUNTER_REMAP_LCELL=1;{-to idle_state} POWER_UP_LEVEL=LOW;{-to read_data_nominal_state} POWER_UP_LEVEL=LOW;{-to read_data_state} POWER_UP_LEVEL=LOW;{-to read_first_nominal_state} POWER_UP_LEVEL=LOW;{-to read_first_state} POWER_UP_LEVEL=LOW;{-to read_init_nominal_state} POWER_UP_LEVEL=LOW;{-to read_init_state} POWER_UP_LEVEL=LOW;{-to read_last_nominal_state} POWER_UP_LEVEL=LOW;{-to read_last_state} POWER_UP_LEVEL=LOW;{-to reconfig_counter_state} POWER_UP_LEVEL=LOW;{-to reconfig_init_state} POWER_UP_LEVEL=LOW;{-to reconfig_post_state} POWER_UP_LEVEL=LOW;{-to reconfig_seq_data_state} POWER_UP_LEVEL=LOW;{-to reconfig_seq_ena_state} POWER_UP_LEVEL=LOW;{-to reconfig_wait_state} POWER_UP_LEVEL=LOW;{-to reset_state} POWER_UP_LEVEL=HIGH;{-to write_data_state} POWER_UP_LEVEL=LOW;{-to write_init_nominal_state} POWER_UP_LEVEL=LOW;{-to write_init_state} POWER_UP_LEVEL=LOW;{-to write_nominal_state} POWER_UP_LEVEL=LOW"; + +SUBDESIGN altpll_reconfig1_pllrcfg_t4q +( + busy : output; + clock : input; + counter_param[2..0] : input; + counter_type[3..0] : input; + data_in[8..0] : input; + data_out[8..0] : output; + pll_areset : output; + pll_areset_in : input; + pll_configupdate : output; + pll_scanclk : output; + pll_scanclkena : output; + pll_scandata : output; + pll_scandataout : input; + pll_scandone : input; + read_param : input; + reconfig : input; + reset : input; + write_param : input; +) +VARIABLE + altsyncram4 : altsyncram + WITH ( + NUMWORDS_A = 144, + OPERATION_MODE = "SINGLE_PORT", + WIDTH_A = 1, + WIDTH_BYTEENA_A = 1, + WIDTHAD_A = 8 + ); + le_comb10 : cycloneiii_lcell_comb + WITH ( + DONT_TOUCH = "on", + LUT_MASK = "F0F0", + SUM_LUTC_INPUT = "datac" + ); + le_comb8 : cycloneiii_lcell_comb + WITH ( + DONT_TOUCH = "on", + LUT_MASK = "AAAA", + SUM_LUTC_INPUT = "datac" + ); + le_comb9 : cycloneiii_lcell_comb + WITH ( + DONT_TOUCH = "on", + LUT_MASK = "CCCC", + SUM_LUTC_INPUT = "datac" + ); + areset_init_state_1 : dffe; + areset_state : dffe; + C0_data_state : dffe; + C0_ena_state : dffe; + C1_data_state : dffe; + C1_ena_state : dffe; + C2_data_state : dffe; + C2_ena_state : dffe; + C3_data_state : dffe; + C3_ena_state : dffe; + C4_data_state : dffe; + C4_ena_state : dffe; + configupdate2_state : dffe; + configupdate3_state : dffe; + configupdate_state : dffe; + counter_param_latch_reg[2..0] : dffe; + counter_type_latch_reg[3..0] : dffe; + idle_state : dffe + WITH ( + power_up = "low" + ); + nominal_data[17..0] : dffe; + read_data_nominal_state : dffe + WITH ( + power_up = "low" + ); + read_data_state : dffe + WITH ( + power_up = "low" + ); + read_first_nominal_state : dffe + WITH ( + power_up = "low" + ); + read_first_state : dffe + WITH ( + power_up = "low" + ); + read_init_nominal_state : dffe + WITH ( + power_up = "low" + ); + read_init_state : dffe + WITH ( + power_up = "low" + ); + read_last_nominal_state : dffe + WITH ( + power_up = "low" + ); + read_last_state : dffe + WITH ( + power_up = "low" + ); + reconfig_counter_state : dffe + WITH ( + power_up = "low" + ); + reconfig_init_state : dffe + WITH ( + power_up = "low" + ); + reconfig_post_state : dffe + WITH ( + power_up = "low" + ); + reconfig_seq_data_state : dffe + WITH ( + power_up = "low" + ); + reconfig_seq_ena_state : dffe + WITH ( + power_up = "low" + ); + reconfig_wait_state : dffe + WITH ( + power_up = "low" + ); + reset_state : dffe + WITH ( + power_up = "high" + ); + shift_reg[17..0] : dffeas; + tmp_nominal_data_out_state : dffe; + tmp_seq_ena_state : dffe; + write_data_state : dffe + WITH ( + power_up = "low" + ); + write_init_nominal_state : dffe + WITH ( + power_up = "low" + ); + write_init_state : dffe + WITH ( + power_up = "low" + ); + write_nominal_state : dffe + WITH ( + power_up = "low" + ); + add_sub5 : lpm_add_sub + WITH ( + LPM_WIDTH = 9 + ); + add_sub6 : lpm_add_sub + WITH ( + LPM_WIDTH = 8 + ); + cmpr7 : lpm_compare + WITH ( + LPM_WIDTH = 8 + ); + cntr1 : lpm_counter + WITH ( + lpm_direction = "DOWN", + lpm_modulus = 144, + lpm_port_updown = "PORT_UNUSED", + lpm_width = 8 + ); + cntr12 : lpm_counter + WITH ( + lpm_direction = "DOWN", + lpm_modulus = 144, + lpm_port_updown = "PORT_UNUSED", + lpm_width = 8 + ); + cntr13 : lpm_counter + WITH ( + lpm_direction = "DOWN", + lpm_port_updown = "PORT_UNUSED", + lpm_width = 6 + ); + cntr14 : lpm_counter + WITH ( + lpm_direction = "DOWN", + lpm_port_updown = "PORT_UNUSED", + lpm_width = 5 + ); + cntr15 : lpm_counter + WITH ( + lpm_direction = "DOWN", + lpm_modulus = 144, + lpm_port_updown = "PORT_UNUSED", + lpm_width = 8 + ); + cntr2 : lpm_counter + WITH ( + lpm_direction = "UP", + lpm_port_updown = "PORT_UNUSED", + lpm_width = 8 + ); + cntr3 : lpm_counter + WITH ( + lpm_direction = "DOWN", + lpm_port_updown = "PORT_UNUSED", + lpm_width = 5 + ); + decode11 : lpm_decode + WITH ( + LPM_DECODES = 5, + LPM_WIDTH = 3 + ); + addr_counter_enable : WIRE; + addr_counter_out[7..0] : WIRE; + addr_counter_sload : WIRE; + addr_counter_sload_value[7..0] : WIRE; + addr_decoder_out[7..0] : WIRE; + c0_wire[7..0] : WIRE; + c1_wire[7..0] : WIRE; + c2_wire[7..0] : WIRE; + c3_wire[7..0] : WIRE; + c4_wire[7..0] : WIRE; + counter_param_latch[2..0] : WIRE; + counter_type_latch[3..0] : WIRE; + cuda_combout_wire[2..0] : WIRE; + dummy_scandataout : WIRE; + encode_out[2..0] : WIRE; + input_latch_enable : WIRE; + power_up : WIRE; + read_addr_counter_enable : WIRE; + read_addr_counter_out[7..0] : WIRE; + read_addr_counter_sload : WIRE; + read_addr_counter_sload_value[7..0] : WIRE; + read_addr_decoder_out[7..0] : WIRE; + read_nominal_out : WIRE; + reconfig_addr_counter_enable : WIRE; + reconfig_addr_counter_out[7..0] : WIRE; + reconfig_addr_counter_sload : WIRE; + reconfig_addr_counter_sload_value[7..0] : WIRE; + reconfig_done : WIRE; + reconfig_post_done : WIRE; + reconfig_width_counter_done : WIRE; + reconfig_width_counter_enable : WIRE; + reconfig_width_counter_sload : WIRE; + reconfig_width_counter_sload_value[5..0] : WIRE; + rotate_addr_counter_enable : WIRE; + rotate_addr_counter_out[7..0] : WIRE; + rotate_addr_counter_sload : WIRE; + rotate_addr_counter_sload_value[7..0] : WIRE; + rotate_decoder_wires[4..0] : WIRE; + rotate_width_counter_done : WIRE; + rotate_width_counter_enable : WIRE; + rotate_width_counter_sload : WIRE; + rotate_width_counter_sload_value[4..0] : WIRE; + scan_cache_address[7..0] : WIRE; + scan_cache_in : WIRE; + scan_cache_out : WIRE; + scan_cache_write_enable : WIRE; + sel_param_bypass_LF_unused : WIRE; + sel_param_c : WIRE; + sel_param_high_i_postscale : WIRE; + sel_param_low_r : WIRE; + sel_param_nominal_count : WIRE; + sel_param_odd_CP_unused : WIRE; + sel_type_c0 : WIRE; + sel_type_c1 : WIRE; + sel_type_c2 : WIRE; + sel_type_c3 : WIRE; + sel_type_c4 : WIRE; + sel_type_cplf : WIRE; + sel_type_m : WIRE; + sel_type_n : WIRE; + sel_type_vco : WIRE; + seq_addr_wire[7..0] : WIRE; + seq_sload_value[5..0] : WIRE; + shift_reg_clear : WIRE; + shift_reg_load_enable : WIRE; + shift_reg_load_nominal_enable : WIRE; + shift_reg_serial_in : WIRE; + shift_reg_serial_out : WIRE; + shift_reg_shift_enable : WIRE; + shift_reg_shift_nominal_enable : WIRE; + shift_reg_width_select[7..0] : WIRE; + w1565w : WIRE; + w1592w : WIRE; + w64w : WIRE; + width_counter_done : WIRE; + width_counter_enable : WIRE; + width_counter_sload : WIRE; + width_counter_sload_value[4..0] : WIRE; + width_decoder_out[4..0] : WIRE; + width_decoder_select[7..0] : WIRE; + write_from_rom : NODE; + +BEGIN + altsyncram4.address_a[] = scan_cache_address[]; + altsyncram4.clock0 = clock; + altsyncram4.data_a[] = ( scan_cache_in); + altsyncram4.wren_a = scan_cache_write_enable; + le_comb10.dataa = encode_out[0..0]; + le_comb10.datab = encode_out[1..1]; + le_comb10.datac = encode_out[2..2]; + le_comb8.dataa = encode_out[0..0]; + le_comb8.datab = encode_out[1..1]; + le_comb8.datac = encode_out[2..2]; + le_comb9.dataa = encode_out[0..0]; + le_comb9.datab = encode_out[1..1]; + le_comb9.datac = encode_out[2..2]; + areset_init_state_1.clk = clock; + areset_init_state_1.d = pll_scandone; + areset_state.clk = clock; + areset_state.d = (areset_init_state_1.q & (! reset)); + C0_data_state.clk = clock; + C0_data_state.d = (C0_ena_state.q # (C0_data_state.q & (! rotate_width_counter_done))); + C0_ena_state.clk = clock; + C0_ena_state.d = (C1_data_state.q & rotate_width_counter_done); + C1_data_state.clk = clock; + C1_data_state.d = (C1_ena_state.q # (C1_data_state.q & (! rotate_width_counter_done))); + C1_ena_state.clk = clock; + C1_ena_state.d = (C2_data_state.q & rotate_width_counter_done); + C2_data_state.clk = clock; + C2_data_state.d = (C2_ena_state.q # (C2_data_state.q & (! rotate_width_counter_done))); + C2_ena_state.clk = clock; + C2_ena_state.d = (C3_data_state.q & rotate_width_counter_done); + C3_data_state.clk = clock; + C3_data_state.d = (C3_ena_state.q # (C3_data_state.q & (! rotate_width_counter_done))); + C3_ena_state.clk = clock; + C3_ena_state.d = (C4_data_state.q & rotate_width_counter_done); + C4_data_state.clk = clock; + C4_data_state.d = (C4_ena_state.q # (C4_data_state.q & (! rotate_width_counter_done))); + C4_ena_state.clk = clock; + C4_ena_state.d = reconfig_init_state.q; + configupdate2_state.clk = clock; + configupdate2_state.d = configupdate_state.q; + configupdate3_state.clk = (! clock); + configupdate3_state.d = configupdate2_state.q; + configupdate_state.clk = clock; + configupdate_state.d = reconfig_post_state.q; + counter_param_latch_reg[].clk = clock; + counter_param_latch_reg[].clrn = (! reset); + counter_param_latch_reg[].d = counter_param[]; + counter_param_latch_reg[].ena = input_latch_enable; + counter_type_latch_reg[].clk = clock; + counter_type_latch_reg[].clrn = (! reset); + counter_type_latch_reg[].d = counter_type[]; + counter_type_latch_reg[].ena = input_latch_enable; + idle_state.clk = clock; + idle_state.clrn = (! reset); + idle_state.d = ((((((((((idle_state.q & (! read_param)) & (! write_param)) & (! reconfig)) & (! write_from_rom)) # read_last_state.q) # (write_data_state.q & width_counter_done)) # (write_nominal_state.q & width_counter_done)) # read_last_nominal_state.q) # (reconfig_wait_state.q & reconfig_done)) # reset_state.q); + nominal_data[].clk = clock; + nominal_data[].clrn = (! reset); + nominal_data[].d = ( cmpr7.aeb, data_in[8..0], add_sub6.result[7..0]); + read_data_nominal_state.clk = clock; + read_data_nominal_state.clrn = (! reset); + read_data_nominal_state.d = ((read_first_nominal_state.q & (! width_counter_done)) # (read_data_nominal_state.q & (! width_counter_done))); + read_data_state.clk = clock; + read_data_state.clrn = (! reset); + read_data_state.d = ((read_first_state.q & (! width_counter_done)) # (read_data_state.q & (! width_counter_done))); + read_first_nominal_state.clk = clock; + read_first_nominal_state.clrn = (! reset); + read_first_nominal_state.d = read_init_nominal_state.q; + read_first_state.clk = clock; + read_first_state.clrn = (! reset); + read_first_state.d = read_init_state.q; + read_init_nominal_state.clk = clock; + read_init_nominal_state.clrn = (! reset); + read_init_nominal_state.d = ((idle_state.q & read_param) & ((((((! counter_type[3..3]) & (! counter_type[2..2])) & (! counter_type[1..1])) & counter_param[2..2]) & counter_param[1..1]) & counter_param[0..0])); + read_init_state.clk = clock; + read_init_state.clrn = (! reset); + read_init_state.d = ((idle_state.q & read_param) & (! ((((((! counter_type[3..3]) & (! counter_type[2..2])) & (! counter_type[1..1])) & counter_param[2..2]) & counter_param[1..1]) & counter_param[0..0]))); + read_last_nominal_state.clk = clock; + read_last_nominal_state.clrn = (! reset); + read_last_nominal_state.d = ((read_first_nominal_state.q & width_counter_done) # (read_data_nominal_state.q & width_counter_done)); + read_last_state.clk = clock; + read_last_state.clrn = (! reset); + read_last_state.d = ((read_first_state.q & width_counter_done) # (read_data_state.q & width_counter_done)); + reconfig_counter_state.clk = clock; + reconfig_counter_state.clrn = (! reset); + reconfig_counter_state.d = ((((((((((reconfig_init_state.q # C0_data_state.q) # C1_data_state.q) # C2_data_state.q) # C3_data_state.q) # C4_data_state.q) # C0_ena_state.q) # C1_ena_state.q) # C2_ena_state.q) # C3_ena_state.q) # C4_ena_state.q); + reconfig_init_state.clk = clock; + reconfig_init_state.clrn = (! reset); + reconfig_init_state.d = (idle_state.q & reconfig); + reconfig_post_state.clk = clock; + reconfig_post_state.clrn = (! reset); + reconfig_post_state.d = ((reconfig_seq_data_state.q & reconfig_width_counter_done) # (reconfig_post_state.q & (! reconfig_post_done))); + reconfig_seq_data_state.clk = clock; + reconfig_seq_data_state.clrn = (! reset); + reconfig_seq_data_state.d = (reconfig_seq_ena_state.q # (reconfig_seq_data_state.q & (! reconfig_width_counter_done))); + reconfig_seq_ena_state.clk = clock; + reconfig_seq_ena_state.clrn = (! reset); + reconfig_seq_ena_state.d = tmp_seq_ena_state.q; + reconfig_wait_state.clk = clock; + reconfig_wait_state.clrn = (! reset); + reconfig_wait_state.d = ((reconfig_post_state.q & reconfig_post_done) # (reconfig_wait_state.q & (! reconfig_done))); + reset_state.clk = clock; + reset_state.d = power_up; + reset_state.prn = (! reset); + shift_reg[].clk = clock; + shift_reg[].clrn = (! reset); + shift_reg[].d = ( ((((shift_reg_load_nominal_enable & nominal_data[0].q) # (shift_reg_load_enable & data_in[0..0])) # (shift_reg_shift_enable & shift_reg[16].q)) # (shift_reg_shift_nominal_enable & shift_reg[16].q)), ((((shift_reg_load_nominal_enable & nominal_data[1].q) # (shift_reg_load_enable & data_in[1..1])) # (shift_reg_shift_enable & shift_reg[15].q)) # (shift_reg_shift_nominal_enable & shift_reg[15].q)), ((((shift_reg_load_nominal_enable & nominal_data[2].q) # (shift_reg_load_enable & data_in[2..2])) # (shift_reg_shift_enable & shift_reg[14].q)) # (shift_reg_shift_nominal_enable & shift_reg[14].q)), ((((shift_reg_load_nominal_enable & nominal_data[3].q) # (shift_reg_load_enable & data_in[3..3])) # (shift_reg_shift_enable & shift_reg[13].q)) # (shift_reg_shift_nominal_enable & shift_reg[13].q)), ((((shift_reg_load_nominal_enable & nominal_data[4].q) # (shift_reg_load_enable & data_in[4..4])) # (shift_reg_shift_enable & shift_reg[12].q)) # (shift_reg_shift_nominal_enable & shift_reg[12].q)), ((((shift_reg_load_nominal_enable & nominal_data[5].q) # (shift_reg_load_enable & data_in[5..5])) # (shift_reg_shift_enable & shift_reg[11].q)) # (shift_reg_shift_nominal_enable & shift_reg[11].q)), ((((shift_reg_load_nominal_enable & nominal_data[6].q) # (shift_reg_load_enable & data_in[6..6])) # (shift_reg_shift_enable & shift_reg[10].q)) # (shift_reg_shift_nominal_enable & shift_reg[10].q)), ((((shift_reg_load_nominal_enable & nominal_data[7].q) # (shift_reg_load_enable & data_in[7..7])) # (shift_reg_shift_enable & shift_reg[9].q)) # (shift_reg_shift_nominal_enable & shift_reg[9].q)), ((((shift_reg_load_nominal_enable & nominal_data[8].q) # (shift_reg_load_enable & data_in[8..8])) # (shift_reg_shift_enable & shift_reg[8].q)) # (shift_reg_shift_nominal_enable & shift_reg[8].q)), ((((shift_reg_load_nominal_enable & nominal_data[9].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg[7].q)) # (shift_reg_shift_nominal_enable & shift_reg[7].q)), ((((shift_reg_load_nominal_enable & nominal_data[10].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg[6].q)) # (shift_reg_shift_nominal_enable & shift_reg[6].q)), ((((shift_reg_load_nominal_enable & nominal_data[11].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg[5].q)) # (shift_reg_shift_nominal_enable & shift_reg[5].q)), ((((shift_reg_load_nominal_enable & nominal_data[12].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg[4].q)) # (shift_reg_shift_nominal_enable & shift_reg[4].q)), ((((shift_reg_load_nominal_enable & nominal_data[13].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg[3].q)) # (shift_reg_shift_nominal_enable & shift_reg[3].q)), ((((shift_reg_load_nominal_enable & nominal_data[14].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg[2].q)) # (shift_reg_shift_nominal_enable & shift_reg[2].q)), ((((shift_reg_load_nominal_enable & nominal_data[15].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg[1].q)) # (shift_reg_shift_nominal_enable & shift_reg[1].q)), ((((shift_reg_load_nominal_enable & nominal_data[16].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg[0].q)) # (shift_reg_shift_nominal_enable & shift_reg[0].q)), ((((shift_reg_load_nominal_enable & nominal_data[17].q) # (shift_reg_load_enable & w64w)) # (shift_reg_shift_enable & shift_reg_serial_in)) # (shift_reg_shift_nominal_enable & shift_reg_serial_in))); + shift_reg[].ena = ((((shift_reg_load_enable # shift_reg_shift_enable) # shift_reg_load_nominal_enable) # shift_reg_shift_nominal_enable) # shift_reg_clear); + shift_reg[].sclr = shift_reg_clear; + tmp_nominal_data_out_state.clk = clock; + tmp_nominal_data_out_state.d = ((read_last_nominal_state.q & (! idle_state.q)) # (tmp_nominal_data_out_state.q & idle_state.q)); + tmp_seq_ena_state.clk = clock; + tmp_seq_ena_state.d = (reconfig_counter_state.q & (C0_data_state.q & rotate_width_counter_done)); + write_data_state.clk = clock; + write_data_state.clrn = (! reset); + write_data_state.d = (write_init_state.q # (write_data_state.q & (! width_counter_done))); + write_init_nominal_state.clk = clock; + write_init_nominal_state.clrn = (! reset); + write_init_nominal_state.d = ((idle_state.q & write_param) & ((((((! counter_type[3..3]) & (! counter_type[2..2])) & (! counter_type[1..1])) & counter_param[2..2]) & counter_param[1..1]) & counter_param[0..0])); + write_init_state.clk = clock; + write_init_state.clrn = (! reset); + write_init_state.d = ((idle_state.q & write_param) & (! ((((((! counter_type[3..3]) & (! counter_type[2..2])) & (! counter_type[1..1])) & counter_param[2..2]) & counter_param[1..1]) & counter_param[0..0]))); + write_nominal_state.clk = clock; + write_nominal_state.clrn = (! reset); + write_nominal_state.d = (write_init_nominal_state.q # (write_nominal_state.q & (! width_counter_done))); + add_sub5.cin = B"0"; + add_sub5.dataa[] = ( B"0", shift_reg[8..1].q); + add_sub5.datab[] = ( B"0", shift_reg[17..10].q); + add_sub6.cin = data_in[0..0]; + add_sub6.dataa[] = ( data_in[8..1]); + cmpr7.dataa[] = ( data_in[7..0]); + cmpr7.datab[] = B"00000001"; + cntr1.clock = clock; + cntr1.cnt_en = addr_counter_enable; + cntr1.data[] = addr_counter_sload_value[]; + cntr1.sload = addr_counter_sload; + cntr12.clock = clock; + cntr12.cnt_en = reconfig_addr_counter_enable; + cntr12.data[] = reconfig_addr_counter_sload_value[]; + cntr12.sload = reconfig_addr_counter_sload; + cntr13.clock = clock; + cntr13.cnt_en = reconfig_width_counter_enable; + cntr13.data[] = reconfig_width_counter_sload_value[]; + cntr13.sload = reconfig_width_counter_sload; + cntr14.clock = clock; + cntr14.cnt_en = rotate_width_counter_enable; + cntr14.data[] = rotate_width_counter_sload_value[]; + cntr14.sload = rotate_width_counter_sload; + cntr15.clock = clock; + cntr15.cnt_en = rotate_addr_counter_enable; + cntr15.data[] = rotate_addr_counter_sload_value[]; + cntr15.sload = rotate_addr_counter_sload; + cntr2.clock = clock; + cntr2.cnt_en = read_addr_counter_enable; + cntr2.data[] = read_addr_counter_sload_value[]; + cntr2.sload = read_addr_counter_sload; + cntr3.clock = clock; + cntr3.cnt_en = width_counter_enable; + cntr3.data[] = width_counter_sload_value[]; + cntr3.sload = width_counter_sload; + decode11.data[] = cuda_combout_wire[]; + addr_counter_enable = (write_data_state.q # write_nominal_state.q); + addr_counter_out[] = cntr1.q[]; + addr_counter_sload = (write_init_state.q # write_init_nominal_state.q); + addr_counter_sload_value[] = (addr_decoder_out[] & (write_init_state.q # write_init_nominal_state.q)); + addr_decoder_out[] = (((((((((((((((((((((((((((((((((((( B"0", B"0", B"0", B"0", B"0", B"0", B"0", (sel_type_cplf & sel_param_bypass_LF_unused)) # ( B"0", B"0", B"0", B"0", B"0", B"0", (sel_type_cplf & sel_param_c), (sel_type_cplf & sel_param_c))) # ( B"0", B"0", B"0", B"0", (sel_type_cplf & sel_param_low_r), B"0", B"0", B"0")) # ( B"0", B"0", B"0", B"0", (sel_type_vco & sel_param_high_i_postscale), B"0", B"0", (sel_type_vco & sel_param_high_i_postscale))) # ( B"0", B"0", B"0", B"0", (sel_type_cplf & sel_param_odd_CP_unused), (sel_type_cplf & sel_param_odd_CP_unused), (sel_type_cplf & sel_param_odd_CP_unused), B"0")) # ( B"0", B"0", B"0", (sel_type_cplf & sel_param_high_i_postscale), B"0", B"0", B"0", (sel_type_cplf & sel_param_high_i_postscale))) # ( B"0", B"0", B"0", (sel_type_n & sel_param_bypass_LF_unused), B"0", B"0", (sel_type_n & sel_param_bypass_LF_unused), B"0")) # ( B"0", B"0", B"0", (sel_type_n & sel_param_high_i_postscale), (sel_type_n & sel_param_high_i_postscale), B"0", (sel_type_n & sel_param_high_i_postscale), B"0")) # ( B"0", B"0", B"0", (sel_type_n & sel_param_odd_CP_unused), (sel_type_n & sel_param_odd_CP_unused), B"0", (sel_type_n & sel_param_odd_CP_unused), (sel_type_n & sel_param_odd_CP_unused))) # ( B"0", B"0", (sel_type_n & sel_param_low_r), B"0", B"0", B"0", (sel_type_n & sel_param_low_r), (sel_type_n & sel_param_low_r))) # ( B"0", B"0", (sel_type_n & sel_param_nominal_count), B"0", B"0", B"0", (sel_type_n & sel_param_nominal_count), (sel_type_n & sel_param_nominal_count))) # ( B"0", B"0", (sel_type_m & sel_param_bypass_LF_unused), B"0", B"0", (sel_type_m & sel_param_bypass_LF_unused), B"0", B"0")) # ( B"0", B"0", (sel_type_m & sel_param_high_i_postscale), B"0", (sel_type_m & sel_param_high_i_postscale), (sel_type_m & sel_param_high_i_postscale), B"0", B"0")) # ( B"0", B"0", (sel_type_m & sel_param_odd_CP_unused), B"0", (sel_type_m & sel_param_odd_CP_unused), (sel_type_m & sel_param_odd_CP_unused), B"0", (sel_type_m & sel_param_odd_CP_unused))) # ( B"0", B"0", (sel_type_m & sel_param_low_r), (sel_type_m & sel_param_low_r), B"0", (sel_type_m & sel_param_low_r), B"0", (sel_type_m & sel_param_low_r))) # ( B"0", B"0", (sel_type_m & sel_param_nominal_count), (sel_type_m & sel_param_nominal_count), B"0", (sel_type_m & sel_param_nominal_count), B"0", (sel_type_m & sel_param_nominal_count))) # ( B"0", B"0", (sel_type_c0 & sel_param_bypass_LF_unused), (sel_type_c0 & sel_param_bypass_LF_unused), B"0", (sel_type_c0 & sel_param_bypass_LF_unused), (sel_type_c0 & sel_param_bypass_LF_unused), B"0")) # ( B"0", B"0", (sel_type_c0 & sel_param_high_i_postscale), (sel_type_c0 & sel_param_high_i_postscale), (sel_type_c0 & sel_param_high_i_postscale), (sel_type_c0 & sel_param_high_i_postscale), (sel_type_c0 & sel_param_high_i_postscale), B"0")) # ( B"0", B"0", (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused))) # ( B"0", (sel_type_c0 & sel_param_low_r), B"0", B"0", B"0", (sel_type_c0 & sel_param_low_r), (sel_type_c0 & sel_param_low_r), (sel_type_c0 & sel_param_low_r))) # ( B"0", (sel_type_c1 & sel_param_bypass_LF_unused), B"0", B"0", (sel_type_c1 & sel_param_bypass_LF_unused), B"0", B"0", B"0")) # ( B"0", (sel_type_c1 & sel_param_high_i_postscale), B"0", (sel_type_c1 & sel_param_high_i_postscale), B"0", B"0", B"0", B"0")) # ( B"0", (sel_type_c1 & sel_param_odd_CP_unused), B"0", (sel_type_c1 & sel_param_odd_CP_unused), B"0", B"0", B"0", (sel_type_c1 & sel_param_odd_CP_unused))) # ( B"0", (sel_type_c1 & sel_param_low_r), B"0", (sel_type_c1 & sel_param_low_r), (sel_type_c1 & sel_param_low_r), B"0", B"0", (sel_type_c1 & sel_param_low_r))) # ( B"0", (sel_type_c2 & sel_param_bypass_LF_unused), B"0", (sel_type_c2 & sel_param_bypass_LF_unused), (sel_type_c2 & sel_param_bypass_LF_unused), B"0", (sel_type_c2 & sel_param_bypass_LF_unused), B"0")) # ( B"0", (sel_type_c2 & sel_param_high_i_postscale), (sel_type_c2 & sel_param_high_i_postscale), B"0", B"0", B"0", (sel_type_c2 & sel_param_high_i_postscale), B"0")) # ( B"0", (sel_type_c2 & sel_param_odd_CP_unused), (sel_type_c2 & sel_param_odd_CP_unused), B"0", B"0", B"0", (sel_type_c2 & sel_param_odd_CP_unused), (sel_type_c2 & sel_param_odd_CP_unused))) # ( B"0", (sel_type_c2 & sel_param_low_r), (sel_type_c2 & sel_param_low_r), B"0", (sel_type_c2 & sel_param_low_r), B"0", (sel_type_c2 & sel_param_low_r), (sel_type_c2 & sel_param_low_r))) # ( B"0", (sel_type_c3 & sel_param_bypass_LF_unused), (sel_type_c3 & sel_param_bypass_LF_unused), B"0", (sel_type_c3 & sel_param_bypass_LF_unused), (sel_type_c3 & sel_param_bypass_LF_unused), B"0", B"0")) # ( B"0", (sel_type_c3 & sel_param_high_i_postscale), (sel_type_c3 & sel_param_high_i_postscale), (sel_type_c3 & sel_param_high_i_postscale), B"0", (sel_type_c3 & sel_param_high_i_postscale), B"0", B"0")) # ( B"0", (sel_type_c3 & sel_param_odd_CP_unused), (sel_type_c3 & sel_param_odd_CP_unused), (sel_type_c3 & sel_param_odd_CP_unused), B"0", (sel_type_c3 & sel_param_odd_CP_unused), B"0", (sel_type_c3 & sel_param_odd_CP_unused))) # ( B"0", (sel_type_c3 & sel_param_low_r), (sel_type_c3 & sel_param_low_r), (sel_type_c3 & sel_param_low_r), (sel_type_c3 & sel_param_low_r), (sel_type_c3 & sel_param_low_r), B"0", (sel_type_c3 & sel_param_low_r))) # ( B"0", (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), B"0")) # ( (sel_type_c4 & sel_param_high_i_postscale), B"0", B"0", B"0", B"0", (sel_type_c4 & sel_param_high_i_postscale), (sel_type_c4 & sel_param_high_i_postscale), B"0")) # ( (sel_type_c4 & sel_param_odd_CP_unused), B"0", B"0", B"0", B"0", (sel_type_c4 & sel_param_odd_CP_unused), (sel_type_c4 & sel_param_odd_CP_unused), (sel_type_c4 & sel_param_odd_CP_unused))) # ( (sel_type_c4 & sel_param_low_r), B"0", B"0", B"0", (sel_type_c4 & sel_param_low_r), (sel_type_c4 & sel_param_low_r), (sel_type_c4 & sel_param_low_r), (sel_type_c4 & sel_param_low_r))); + busy = ((! idle_state.q) # areset_state.q); + c0_wire[] = B"01000111"; + c1_wire[] = B"01011001"; + c2_wire[] = B"01101011"; + c3_wire[] = B"01111101"; + c4_wire[] = B"10001111"; + counter_param_latch[] = counter_param_latch_reg[].q; + counter_type_latch[] = counter_type_latch_reg[].q; + cuda_combout_wire[] = ( le_comb10.combout, le_comb9.combout, le_comb8.combout); + data_out[] = ( ((shift_reg[8].q & (! read_nominal_out)) # (add_sub5.result[8..8] & read_nominal_out)), ((shift_reg[7].q & (! read_nominal_out)) # (add_sub5.result[7..7] & read_nominal_out)), ((shift_reg[6].q & (! read_nominal_out)) # (add_sub5.result[6..6] & read_nominal_out)), ((shift_reg[5].q & (! read_nominal_out)) # (add_sub5.result[5..5] & read_nominal_out)), ((shift_reg[4].q & (! read_nominal_out)) # (add_sub5.result[4..4] & read_nominal_out)), ((shift_reg[3].q & (! read_nominal_out)) # (add_sub5.result[3..3] & read_nominal_out)), ((shift_reg[2].q & (! read_nominal_out)) # (add_sub5.result[2..2] & read_nominal_out)), ((shift_reg[1].q & (! read_nominal_out)) # (add_sub5.result[1..1] & read_nominal_out)), ((shift_reg[0].q & (! read_nominal_out)) # (add_sub5.result[0..0] & read_nominal_out))); + dummy_scandataout = pll_scandataout; + encode_out[] = ( C4_ena_state.q, (C2_ena_state.q # C3_ena_state.q), (C1_ena_state.q # C3_ena_state.q)); + input_latch_enable = (idle_state.q & (write_param # read_param)); + pll_areset = (pll_areset_in # (areset_state.q & reconfig_wait_state.q)); + pll_configupdate = (configupdate_state.q & (! configupdate3_state.q)); + pll_scanclk = clock; + pll_scanclkena = ((rotate_width_counter_enable & (! rotate_width_counter_done)) # reconfig_seq_data_state.q); + pll_scandata = (scan_cache_out & ((rotate_width_counter_enable # reconfig_seq_data_state.q) # reconfig_post_state.q)); + power_up = ((((((((((((((((((((! reset_state.q) & (! idle_state.q)) & (! read_init_state.q)) & (! read_first_state.q)) & (! read_data_state.q)) & (! read_last_state.q)) & (! read_init_nominal_state.q)) & (! read_first_nominal_state.q)) & (! read_data_nominal_state.q)) & (! read_last_nominal_state.q)) & (! write_init_state.q)) & (! write_data_state.q)) & (! write_init_nominal_state.q)) & (! write_nominal_state.q)) & (! reconfig_init_state.q)) & (! reconfig_counter_state.q)) & (! reconfig_seq_ena_state.q)) & (! reconfig_seq_data_state.q)) & (! reconfig_post_state.q)) & (! reconfig_wait_state.q)); + read_addr_counter_enable = (((read_first_state.q # read_data_state.q) # read_first_nominal_state.q) # read_data_nominal_state.q); + read_addr_counter_out[] = cntr2.q[]; + read_addr_counter_sload = (read_init_state.q # read_init_nominal_state.q); + read_addr_counter_sload_value[] = (read_addr_decoder_out[] & (read_init_state.q # read_init_nominal_state.q)); + read_addr_decoder_out[] = (((((((((((((((((((((((((((((((((((( B"0", B"0", B"0", B"0", B"0", B"0", B"0", B"0") # ( B"0", B"0", B"0", B"0", B"0", B"0", (sel_type_cplf & sel_param_c), B"0")) # ( B"0", B"0", B"0", B"0", B"0", (sel_type_cplf & sel_param_low_r), B"0", B"0")) # ( B"0", B"0", B"0", B"0", (sel_type_vco & sel_param_high_i_postscale), B"0", B"0", (sel_type_vco & sel_param_high_i_postscale))) # ( B"0", B"0", B"0", B"0", (sel_type_cplf & sel_param_odd_CP_unused), B"0", (sel_type_cplf & sel_param_odd_CP_unused), B"0")) # ( B"0", B"0", B"0", B"0", (sel_type_cplf & sel_param_high_i_postscale), (sel_type_cplf & sel_param_high_i_postscale), (sel_type_cplf & sel_param_high_i_postscale), (sel_type_cplf & sel_param_high_i_postscale))) # ( B"0", B"0", B"0", (sel_type_n & sel_param_bypass_LF_unused), B"0", B"0", (sel_type_n & sel_param_bypass_LF_unused), B"0")) # ( B"0", B"0", B"0", (sel_type_n & sel_param_high_i_postscale), B"0", B"0", (sel_type_n & sel_param_high_i_postscale), (sel_type_n & sel_param_high_i_postscale))) # ( B"0", B"0", B"0", (sel_type_n & sel_param_odd_CP_unused), (sel_type_n & sel_param_odd_CP_unused), B"0", (sel_type_n & sel_param_odd_CP_unused), (sel_type_n & sel_param_odd_CP_unused))) # ( B"0", B"0", B"0", (sel_type_n & sel_param_low_r), (sel_type_n & sel_param_low_r), (sel_type_n & sel_param_low_r), B"0", B"0")) # ( B"0", B"0", B"0", (sel_type_n & sel_param_nominal_count), B"0", B"0", (sel_type_n & sel_param_nominal_count), B"0")) # ( B"0", B"0", (sel_type_m & sel_param_bypass_LF_unused), B"0", B"0", (sel_type_m & sel_param_bypass_LF_unused), B"0", B"0")) # ( B"0", B"0", (sel_type_m & sel_param_high_i_postscale), B"0", B"0", (sel_type_m & sel_param_high_i_postscale), B"0", (sel_type_m & sel_param_high_i_postscale))) # ( B"0", B"0", (sel_type_m & sel_param_odd_CP_unused), B"0", (sel_type_m & sel_param_odd_CP_unused), (sel_type_m & sel_param_odd_CP_unused), B"0", (sel_type_m & sel_param_odd_CP_unused))) # ( B"0", B"0", (sel_type_m & sel_param_low_r), B"0", (sel_type_m & sel_param_low_r), (sel_type_m & sel_param_low_r), (sel_type_m & sel_param_low_r), B"0")) # ( B"0", B"0", (sel_type_m & sel_param_nominal_count), B"0", B"0", (sel_type_m & sel_param_nominal_count), B"0", B"0")) # ( B"0", B"0", (sel_type_c0 & sel_param_bypass_LF_unused), (sel_type_c0 & sel_param_bypass_LF_unused), B"0", (sel_type_c0 & sel_param_bypass_LF_unused), (sel_type_c0 & sel_param_bypass_LF_unused), B"0")) # ( B"0", B"0", (sel_type_c0 & sel_param_high_i_postscale), (sel_type_c0 & sel_param_high_i_postscale), B"0", (sel_type_c0 & sel_param_high_i_postscale), (sel_type_c0 & sel_param_high_i_postscale), (sel_type_c0 & sel_param_high_i_postscale))) # ( B"0", B"0", (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused), (sel_type_c0 & sel_param_odd_CP_unused))) # ( B"0", (sel_type_c0 & sel_param_low_r), B"0", B"0", B"0", B"0", B"0", B"0")) # ( B"0", (sel_type_c1 & sel_param_bypass_LF_unused), B"0", B"0", (sel_type_c1 & sel_param_bypass_LF_unused), B"0", B"0", B"0")) # ( B"0", (sel_type_c1 & sel_param_high_i_postscale), B"0", B"0", (sel_type_c1 & sel_param_high_i_postscale), B"0", B"0", (sel_type_c1 & sel_param_high_i_postscale))) # ( B"0", (sel_type_c1 & sel_param_odd_CP_unused), B"0", (sel_type_c1 & sel_param_odd_CP_unused), B"0", B"0", B"0", (sel_type_c1 & sel_param_odd_CP_unused))) # ( B"0", (sel_type_c1 & sel_param_low_r), B"0", (sel_type_c1 & sel_param_low_r), B"0", B"0", (sel_type_c1 & sel_param_low_r), B"0")) # ( B"0", (sel_type_c2 & sel_param_bypass_LF_unused), B"0", (sel_type_c2 & sel_param_bypass_LF_unused), (sel_type_c2 & sel_param_bypass_LF_unused), B"0", (sel_type_c2 & sel_param_bypass_LF_unused), B"0")) # ( B"0", (sel_type_c2 & sel_param_high_i_postscale), B"0", (sel_type_c2 & sel_param_high_i_postscale), (sel_type_c2 & sel_param_high_i_postscale), B"0", (sel_type_c2 & sel_param_high_i_postscale), (sel_type_c2 & sel_param_high_i_postscale))) # ( B"0", (sel_type_c2 & sel_param_odd_CP_unused), (sel_type_c2 & sel_param_odd_CP_unused), B"0", B"0", B"0", (sel_type_c2 & sel_param_odd_CP_unused), (sel_type_c2 & sel_param_odd_CP_unused))) # ( B"0", (sel_type_c2 & sel_param_low_r), (sel_type_c2 & sel_param_low_r), B"0", B"0", (sel_type_c2 & sel_param_low_r), B"0", B"0")) # ( B"0", (sel_type_c3 & sel_param_bypass_LF_unused), (sel_type_c3 & sel_param_bypass_LF_unused), B"0", (sel_type_c3 & sel_param_bypass_LF_unused), (sel_type_c3 & sel_param_bypass_LF_unused), B"0", B"0")) # ( B"0", (sel_type_c3 & sel_param_high_i_postscale), (sel_type_c3 & sel_param_high_i_postscale), B"0", (sel_type_c3 & sel_param_high_i_postscale), (sel_type_c3 & sel_param_high_i_postscale), B"0", (sel_type_c3 & sel_param_high_i_postscale))) # ( B"0", (sel_type_c3 & sel_param_odd_CP_unused), (sel_type_c3 & sel_param_odd_CP_unused), (sel_type_c3 & sel_param_odd_CP_unused), B"0", (sel_type_c3 & sel_param_odd_CP_unused), B"0", (sel_type_c3 & sel_param_odd_CP_unused))) # ( B"0", (sel_type_c3 & sel_param_low_r), (sel_type_c3 & sel_param_low_r), (sel_type_c3 & sel_param_low_r), B"0", (sel_type_c3 & sel_param_low_r), (sel_type_c3 & sel_param_low_r), B"0")) # ( B"0", (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), (sel_type_c4 & sel_param_bypass_LF_unused), B"0")) # ( B"0", (sel_type_c4 & sel_param_high_i_postscale), (sel_type_c4 & sel_param_high_i_postscale), (sel_type_c4 & sel_param_high_i_postscale), (sel_type_c4 & sel_param_high_i_postscale), (sel_type_c4 & sel_param_high_i_postscale), (sel_type_c4 & sel_param_high_i_postscale), (sel_type_c4 & sel_param_high_i_postscale))) # ( (sel_type_c4 & sel_param_odd_CP_unused), B"0", B"0", B"0", B"0", (sel_type_c4 & sel_param_odd_CP_unused), (sel_type_c4 & sel_param_odd_CP_unused), (sel_type_c4 & sel_param_odd_CP_unused))) # ( (sel_type_c4 & sel_param_low_r), B"0", B"0", B"0", (sel_type_c4 & sel_param_low_r), B"0", B"0", B"0")); + read_nominal_out = tmp_nominal_data_out_state.q; + reconfig_addr_counter_enable = reconfig_seq_data_state.q; + reconfig_addr_counter_out[] = cntr12.q[]; + reconfig_addr_counter_sload = reconfig_seq_ena_state.q; + reconfig_addr_counter_sload_value[] = (reconfig_seq_ena_state.q & seq_addr_wire[]); + reconfig_done = ((! pll_scandone) & (dummy_scandataout # (! dummy_scandataout))); + reconfig_post_done = pll_scandone; + reconfig_width_counter_done = ((((((! cntr13.q[0..0]) & (! cntr13.q[1..1])) & (! cntr13.q[2..2])) & (! cntr13.q[3..3])) & (! cntr13.q[4..4])) & (! cntr13.q[5..5])); + reconfig_width_counter_enable = reconfig_seq_data_state.q; + reconfig_width_counter_sload = reconfig_seq_ena_state.q; + reconfig_width_counter_sload_value[] = (reconfig_seq_ena_state.q & seq_sload_value[]); + rotate_addr_counter_enable = ((((C0_data_state.q # C1_data_state.q) # C2_data_state.q) # C3_data_state.q) # C4_data_state.q); + rotate_addr_counter_out[] = cntr15.q[]; + rotate_addr_counter_sload = ((((C0_ena_state.q # C1_ena_state.q) # C2_ena_state.q) # C3_ena_state.q) # C4_ena_state.q); + rotate_addr_counter_sload_value[] = (((((c0_wire[] & rotate_decoder_wires[0..0]) # (c1_wire[] & rotate_decoder_wires[1..1])) # (c2_wire[] & rotate_decoder_wires[2..2])) # (c3_wire[] & rotate_decoder_wires[3..3])) # (c4_wire[] & rotate_decoder_wires[4..4])); + rotate_decoder_wires[] = decode11.eq[]; + rotate_width_counter_done = (((((! cntr14.q[0..0]) & (! cntr14.q[1..1])) & (! cntr14.q[2..2])) & (! cntr14.q[3..3])) & (! cntr14.q[4..4])); + rotate_width_counter_enable = ((((C0_data_state.q # C1_data_state.q) # C2_data_state.q) # C3_data_state.q) # C4_data_state.q); + rotate_width_counter_sload = ((((C0_ena_state.q # C1_ena_state.q) # C2_ena_state.q) # C3_ena_state.q) # C4_ena_state.q); + rotate_width_counter_sload_value[] = B"10010"; + scan_cache_address[] = ((((addr_counter_out[] & addr_counter_enable) # (read_addr_counter_out[] & read_addr_counter_enable)) # (rotate_addr_counter_out[] & rotate_addr_counter_enable)) # (reconfig_addr_counter_out[] & reconfig_addr_counter_enable)); + scan_cache_in = shift_reg_serial_out; + scan_cache_out = altsyncram4.q_a[0..0]; + scan_cache_write_enable = (write_data_state.q # write_nominal_state.q); + sel_param_bypass_LF_unused = (((! counter_param_latch[0..0]) & (! counter_param_latch[1..1])) & counter_param_latch[2..2]); + sel_param_c = (((! counter_param_latch[0..0]) & counter_param_latch[1..1]) & (! counter_param_latch[2..2])); + sel_param_high_i_postscale = (((! counter_param_latch[0..0]) & (! counter_param_latch[1..1])) & (! counter_param_latch[2..2])); + sel_param_low_r = ((counter_param_latch[0..0] & (! counter_param_latch[1..1])) & (! counter_param_latch[2..2])); + sel_param_nominal_count = ((counter_param_latch[0..0] & counter_param_latch[1..1]) & counter_param_latch[2..2]); + sel_param_odd_CP_unused = ((counter_param_latch[0..0] & (! counter_param_latch[1..1])) & counter_param_latch[2..2]); + sel_type_c0 = ((((! counter_type_latch[0..0]) & (! counter_type_latch[1..1])) & counter_type_latch[2..2]) & (! counter_type_latch[3..3])); + sel_type_c1 = (((counter_type_latch[0..0] & (! counter_type_latch[1..1])) & counter_type_latch[2..2]) & (! counter_type_latch[3..3])); + sel_type_c2 = ((((! counter_type_latch[0..0]) & counter_type_latch[1..1]) & counter_type_latch[2..2]) & (! counter_type_latch[3..3])); + sel_type_c3 = (((counter_type_latch[0..0] & counter_type_latch[1..1]) & counter_type_latch[2..2]) & (! counter_type_latch[3..3])); + sel_type_c4 = ((((! counter_type_latch[0..0]) & (! counter_type_latch[1..1])) & (! counter_type_latch[2..2])) & counter_type_latch[3..3]); + sel_type_cplf = ((((! counter_type_latch[0..0]) & counter_type_latch[1..1]) & (! counter_type_latch[2..2])) & (! counter_type_latch[3..3])); + sel_type_m = (((counter_type_latch[0..0] & (! counter_type_latch[1..1])) & (! counter_type_latch[2..2])) & (! counter_type_latch[3..3])); + sel_type_n = ((((! counter_type_latch[0..0]) & (! counter_type_latch[1..1])) & (! counter_type_latch[2..2])) & (! counter_type_latch[3..3])); + sel_type_vco = (((counter_type_latch[0..0] & counter_type_latch[1..1]) & (! counter_type_latch[2..2])) & (! counter_type_latch[3..3])); + seq_addr_wire[] = B"00110101"; + seq_sload_value[] = B"110110"; + shift_reg_clear = (read_init_state.q # read_init_nominal_state.q); + shift_reg_load_enable = ((idle_state.q & write_param) & (! ((((((! counter_type[3..3]) & (! counter_type[2..2])) & (! counter_type[1..1])) & counter_param[2..2]) & counter_param[1..1]) & counter_param[0..0]))); + shift_reg_load_nominal_enable = ((idle_state.q & write_param) & ((((((! counter_type[3..3]) & (! counter_type[2..2])) & (! counter_type[1..1])) & counter_param[2..2]) & counter_param[1..1]) & counter_param[0..0])); + shift_reg_serial_in = scan_cache_out; + shift_reg_serial_out = ((((((((shift_reg[17].q & shift_reg_width_select[0..0]) # (shift_reg[17].q & shift_reg_width_select[1..1])) # (shift_reg[17].q & shift_reg_width_select[2..2])) # (shift_reg[17].q & shift_reg_width_select[3..3])) # (shift_reg[17].q & shift_reg_width_select[4..4])) # (shift_reg[17].q & shift_reg_width_select[5..5])) # (shift_reg[17].q & shift_reg_width_select[6..6])) # (shift_reg[17].q & shift_reg_width_select[7..7])); + shift_reg_shift_enable = ((read_data_state.q # read_last_state.q) # write_data_state.q); + shift_reg_shift_nominal_enable = ((read_data_nominal_state.q # read_last_nominal_state.q) # write_nominal_state.q); + shift_reg_width_select[] = width_decoder_select[]; + w1565w = B"0"; + w1592w = B"0"; + w64w = B"0"; + width_counter_done = (((((! cntr3.q[0..0]) & (! cntr3.q[1..1])) & (! cntr3.q[2..2])) & (! cntr3.q[3..3])) & (! cntr3.q[4..4])); + width_counter_enable = ((((read_first_state.q # read_data_state.q) # write_data_state.q) # read_data_nominal_state.q) # write_nominal_state.q); + width_counter_sload = (((read_init_state.q # write_init_state.q) # read_init_nominal_state.q) # write_init_nominal_state.q); + width_counter_sload_value[] = width_decoder_out[]; + width_decoder_out[] = (((((( B"0", B"0", B"0", B"0", B"0") # ( width_decoder_select[2..2], B"0", B"0", B"0", width_decoder_select[2..2])) # ( B"0", B"0", B"0", B"0", width_decoder_select[3..3])) # ( B"0", B"0", width_decoder_select[5..5], width_decoder_select[5..5], width_decoder_select[5..5])) # ( B"0", B"0", B"0", width_decoder_select[6..6], B"0")) # ( B"0", B"0", width_decoder_select[7..7], B"0", B"0")); + width_decoder_select[] = ( ((sel_type_cplf & sel_param_low_r) # (sel_type_cplf & sel_param_odd_CP_unused)), (sel_type_cplf & sel_param_high_i_postscale), ((((((((((((((sel_type_n & sel_param_high_i_postscale) # (sel_type_n & sel_param_low_r)) # (sel_type_m & sel_param_high_i_postscale)) # (sel_type_m & sel_param_low_r)) # (sel_type_c0 & sel_param_high_i_postscale)) # (sel_type_c0 & sel_param_low_r)) # (sel_type_c1 & sel_param_high_i_postscale)) # (sel_type_c1 & sel_param_low_r)) # (sel_type_c2 & sel_param_high_i_postscale)) # (sel_type_c2 & sel_param_low_r)) # (sel_type_c3 & sel_param_high_i_postscale)) # (sel_type_c3 & sel_param_low_r)) # (sel_type_c4 & sel_param_high_i_postscale)) # (sel_type_c4 & sel_param_low_r)), w1592w, ((sel_type_cplf & sel_param_bypass_LF_unused) # (sel_type_cplf & sel_param_c)), ((sel_type_n & sel_param_nominal_count) # (sel_type_m & sel_param_nominal_count)), w1565w, (((((((((((((((sel_type_vco & sel_param_high_i_postscale) # (sel_type_n & sel_param_bypass_LF_unused)) # (sel_type_n & sel_param_odd_CP_unused)) # (sel_type_m & sel_param_bypass_LF_unused)) # (sel_type_m & sel_param_odd_CP_unused)) # (sel_type_c0 & sel_param_bypass_LF_unused)) # (sel_type_c0 & sel_param_odd_CP_unused)) # (sel_type_c1 & sel_param_bypass_LF_unused)) # (sel_type_c1 & sel_param_odd_CP_unused)) # (sel_type_c2 & sel_param_bypass_LF_unused)) # (sel_type_c2 & sel_param_odd_CP_unused)) # (sel_type_c3 & sel_param_bypass_LF_unused)) # (sel_type_c3 & sel_param_odd_CP_unused)) # (sel_type_c4 & sel_param_bypass_LF_unused)) # (sel_type_c4 & sel_param_odd_CP_unused))); + write_from_rom = GND; +END; +--VALID FILE diff --git a/FPGA_quartus/firebee1.asm.rpt b/FPGA_quartus/firebee1.asm.rpt new file mode 100644 index 0000000..7ffb13e --- /dev/null +++ b/FPGA_quartus/firebee1.asm.rpt @@ -0,0 +1,128 @@ +Assembler report for firebee1 +Wed Dec 15 02:25:13 2010 +Quartus II Version 9.1 Build 350 03/24/2010 Service Pack 2 SJ Web Edition + + +--------------------- +; Table of Contents ; +--------------------- + 1. Legal Notice + 2. Assembler Summary + 3. Assembler Settings + 4. Assembler Generated Files + 5. Assembler Device Options: C:/FireBee/FPGA/firebee1.sof + 6. Assembler Device Options: C:/FireBee/FPGA/firebee1.rbf + 7. Assembler Messages + + + +---------------- +; Legal Notice ; +---------------- +Copyright (C) 1991-2010 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. + + + ++---------------------------------------------------------------+ +; Assembler Summary ; ++-----------------------+---------------------------------------+ +; Assembler Status ; Successful - Wed Dec 15 02:25:13 2010 ; +; Revision Name ; firebee1 ; +; Top-level Entity Name ; firebee1 ; +; Family ; Cyclone III ; +; Device ; EP3C40F484C6 ; ++-----------------------+---------------------------------------+ + + ++----------------------------------------------------------------------------------------------------------+ +; Assembler Settings ; ++-----------------------------------------------------------------------------+------------+---------------+ +; Option ; Setting ; Default Value ; ++-----------------------------------------------------------------------------+------------+---------------+ +; Generate Raw Binary File (.rbf) For Target Device ; On ; Off ; +; Hexadecimal Output File start address ; 0XE0700000 ; 0 ; +; Use smart compilation ; Off ; Off ; +; Enable parallel Assembler and TimeQuest Timing Analyzer during compilation ; On ; On ; +; Enable compact report table ; Off ; Off ; +; Generate compressed bitstreams ; On ; On ; +; Compression mode ; Off ; Off ; +; Clock source for configuration device ; Internal ; Internal ; +; Clock frequency of the configuration device ; 10 MHZ ; 10 MHz ; +; Divide clock frequency by ; 1 ; 1 ; +; Auto user code ; Off ; Off ; +; Use configuration device ; Off ; Off ; +; Configuration device ; Auto ; Auto ; +; Configuration device auto user code ; Off ; Off ; +; Generate Tabular Text File (.ttf) For Target Device ; Off ; Off ; +; Generate Hexadecimal (Intel-Format) Output File (.hexout) for Target Device ; Off ; Off ; +; Hexadecimal Output File count direction ; Up ; Up ; +; Release clears before tri-states ; Off ; Off ; +; Auto-restart configuration after error ; On ; On ; +; Enable OCT_DONE ; Off ; Off ; +; Generate Serial Vector Format File (.svf) for Target Device ; Off ; Off ; +; Generate a JEDEC STAPL Format File (.jam) for Target Device ; Off ; Off ; +; Generate a compressed Jam STAPL Byte Code 2.0 File (.jbc) for Target Device ; Off ; Off ; +; Generate a compressed Jam STAPL Byte Code 2.0 File (.jbc) for Target Device ; On ; On ; ++-----------------------------------------------------------------------------+------------+---------------+ + + ++------------------------------+ +; Assembler Generated Files ; ++------------------------------+ +; File Name ; ++------------------------------+ +; C:/FireBee/FPGA/firebee1.sof ; +; C:/FireBee/FPGA/firebee1.rbf ; ++------------------------------+ + + ++--------------------------------------------------------+ +; Assembler Device Options: C:/FireBee/FPGA/firebee1.sof ; ++----------------+---------------------------------------+ +; Option ; Setting ; ++----------------+---------------------------------------+ +; Device ; EP3C40F484C6 ; +; JTAG usercode ; 0xFFFFFFFF ; +; Checksum ; 0x0085E8C6 ; ++----------------+---------------------------------------+ + + ++--------------------------------------------------------+ +; Assembler Device Options: C:/FireBee/FPGA/firebee1.rbf ; ++---------------------+----------------------------------+ +; Option ; Setting ; ++---------------------+----------------------------------+ +; Raw Binary File ; ; +; Compression Ratio ; 2 ; ++---------------------+----------------------------------+ + + ++--------------------+ +; Assembler Messages ; ++--------------------+ +Info: ******************************************************************* +Info: Running Quartus II Assembler + Info: Version 9.1 Build 350 03/24/2010 Service Pack 2 SJ Web Edition + Info: Processing started: Wed Dec 15 02:25:08 2010 +Info: Command: quartus_asm --read_settings_files=off --write_settings_files=off firebeei1 -c firebee1 +Info: Writing out detailed assembly data for power analysis +Info: Assembler is generating device programming files +Info: Quartus II Assembler was successful. 0 errors, 0 warnings + Info: Peak virtual memory: 291 megabytes + Info: Processing ended: Wed Dec 15 02:25:13 2010 + Info: Elapsed time: 00:00:05 + Info: Total CPU time (on all processors): 00:00:05 + + diff --git a/FPGA_quartus/firebee1.bdf b/FPGA_quartus/firebee1.bdf new file mode 100644 index 0000000..46507a2 --- /dev/null +++ b/FPGA_quartus/firebee1.bdf @@ -0,0 +1,5837 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2010 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +//#pragma file_not_in_maxplusii_format +(header "graphic" (version "1.3")) +(properties + (page_setup "header_footer\nDate: %D\n%f\nProject: %j\n\nPage %p of %P\nRevision: %a\nmargin\n1\n1\n1\n1\norientation\n1\npaper_size\n9\npaper_source\n15\nfit_page_wide\n1\nfit_page_tall\n1\n") +) +(pin + (input) + (rect 208 1392 376 1408) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "FB_ALE" (rect 9 0 60 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 136 1408 192 1424)) +) +(pin + (input) + (rect 992 936 1160 952) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nFB_WR" (rect 9 0 66 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 944 952 1000 968)) +) +(pin + (input) + (rect 168 296 336 312) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "CLK33M" (rect 9 0 64 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 104 312 176 328)) +) +(pin + (input) + (rect 992 960 1160 976) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nFB_CS1" (rect 5 0 67 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 944 976 1000 992)) +) +(pin + (input) + (rect 992 984 1160 1000) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nFB_CS2" (rect 5 0 67 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 944 1000 1000 1016)) +) +(pin + (input) + (rect 1008 360 1176 376) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nFB_CS3" (rect 5 0 67 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 952 376 1008 392)) +) +(pin + (input) + (rect 992 1008 1160 1024) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "FB_SIZE0" (rect 5 0 69 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 944 1024 1000 1040)) +) +(pin + (input) + (rect 992 1032 1160 1048) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "FB_SIZE1" (rect 5 0 69 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 944 1048 1000 1064)) +) +(pin + (input) + (rect 992 1056 1160 1072) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nFB_BURST" (rect 5 0 87 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 944 1072 1000 1088)) +) +(pin + (input) + (rect 936 1168 1104 1184) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "LP_BUSY" (rect 5 0 68 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 888 1184 952 1200)) +) +(pin + (input) + (rect 856 1200 1024 1216) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nACSI_DRQ" (rect 5 0 85 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 808 1216 864 1232)) +) +(pin + (input) + (rect 856 1224 1024 1240) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nACSI_INT" (rect 5 0 75 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 808 1240 864 1256)) +) +(pin + (input) + (rect 936 1392 1104 1408) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "RxD" (rect 5 0 32 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 880 1408 944 1424)) +) +(pin + (input) + (rect 936 1416 1104 1432) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "CTS" (rect 5 0 33 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 880 1432 944 1448)) +) +(pin + (input) + (rect 936 1440 1104 1456) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "RI" (rect 5 0 19 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 880 1456 944 1472)) +) +(pin + (input) + (rect 936 1464 1104 1480) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "DCD" (rect 5 0 36 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 880 1480 944 1496)) +) +(pin + (input) + (rect 608 1488 776 1504) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "AMKB_RX" (rect 5 0 69 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 560 1504 616 1520)) +) +(pin + (input) + (rect 608 1512 776 1528) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "PIC_AMKB_RX" (rect 5 0 101 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 560 1528 616 1544)) +) +(pin + (input) + (rect 936 1544 1104 1560) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "IDE_RDY" (rect 5 0 66 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 888 1560 944 1576)) +) +(pin + (input) + (rect 936 1568 1104 1584) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "IDE_INT" (rect 5 0 59 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 880 1584 944 1600)) +) +(pin + (input) + (rect 936 1592 1104 1608) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "WP_CF_CARD" (rect 5 0 102 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 888 1608 944 1624)) +) +(pin + (input) + (rect 872 1672 1040 1688) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "TRACK00" (rect 5 0 68 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 816 1688 880 1704)) +) +(pin + (input) + (rect 872 1696 1040 1712) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nWP" (rect 5 0 35 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 816 1712 880 1728)) +) +(pin + (input) + (rect 872 1744 1040 1760) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nDCHG" (rect 5 0 55 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 816 1760 880 1776)) +) +(pin + (input) + (rect 936 1776 1104 1792) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "SD_DATA0" (rect 5 0 76 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 880 1792 944 1808)) +) +(pin + (input) + (rect 936 1800 1104 1816) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "SD_DATA1" (rect 5 0 76 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 880 1816 944 1832)) +) +(pin + (input) + (rect 936 1824 1104 1840) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "SD_DATA2" (rect 5 0 76 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 880 1840 944 1856)) +) +(pin + (input) + (rect 936 1848 1128 1864) + (text "INPUT" (rect 157 0 193 13)(font "Arial" (font_size 6))) + (text "SD_CARD_DEDECT" (rect 5 0 140 15)(font "Arial" )) + (pt 192 8) + (drawing + (line (pt 116 12)(pt 141 12)(line_width 1)) + (line (pt 116 4)(pt 141 4)(line_width 1)) + (line (pt 145 8)(pt 192 8)(line_width 1)) + (line (pt 116 12)(pt 116 4)(line_width 1)) + (line (pt 141 4)(pt 145 8)(line_width 1)) + (line (pt 141 12)(pt 145 8)(line_width 1)) + ) + (text "VCC" (rect 160 7 184 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 880 1864 952 1880)) +) +(pin + (input) + (rect 872 1360 1040 1376) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "MIDI_IN" (rect 5 0 55 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 816 1376 880 1392)) +) +(pin + (input) + (rect 936 1256 1104 1272) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nSCSI_DRQ" (rect 5 0 86 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 888 1272 944 1288)) +) +(pin + (input) + (rect 936 1872 1104 1888) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "SD_WP" (rect 5 0 55 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 880 1888 952 1904)) +) +(pin + (input) + (rect 872 1720 1040 1736) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nRD_DATA" (rect 5 0 78 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 816 1736 880 1752)) +) +(pin + (input) + (rect 936 1280 1104 1296) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nSCSI_C_D" (rect 5 0 84 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 888 1296 944 1312)) +) +(pin + (input) + (rect 936 1304 1104 1320) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nSCSI_I_O" (rect 5 0 76 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 888 1320 944 1336)) +) +(pin + (input) + (rect 936 1328 1104 1344) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nSCSI_MSG" (rect 5 0 85 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 888 1344 944 1360)) +) +(pin + (input) + (rect 992 1104 1160 1120) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nDACK0" (rect 5 0 60 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 936 1120 1000 1136)) +) +(pin + (input) + (rect 984 2592 1152 2608) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "PIC_INT" (rect 5 0 59 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 928 2608 1000 2624)) +) +(pin + (input) + (rect 992 912 1160 928) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nFB_OE" (rect 5 0 59 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 944 928 1000 944)) +) +(pin + (input) + (rect 360 2616 528 2632) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "TOUT0" (rect 5 0 51 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 304 2632 368 2648)) +) +(pin + (input) + (rect 360 2504 528 2520) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nMASTER" (rect 5 0 69 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 304 2520 368 2536)) +) +(pin + (input) + (rect 984 2640 1152 2656) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "DVI_INT" (rect 5 0 58 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 928 2656 992 2672)) +) +(pin + (input) + (rect 360 2408 528 2424) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nDACK1" (rect 5 0 60 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 304 2424 368 2440)) +) +(pin + (input) + (rect 984 2664 1152 2680) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nPCI_INTD" (rect 5 0 78 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 936 2680 992 2696)) +) +(pin + (input) + (rect 984 2688 1152 2704) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nPCI_INTC" (rect 5 0 78 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 936 2704 992 2720)) +) +(pin + (input) + (rect 984 2712 1152 2728) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nPCI_INTB" (rect 5 0 76 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 936 2728 992 2744)) +) +(pin + (input) + (rect 984 2736 1152 2752) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nPCI_INTA" (rect 5 0 75 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 928 2752 1000 2768)) +) +(pin + (input) + (rect 984 2616 1152 2632) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "E0_INT" (rect 5 0 53 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 928 2632 992 2648)) +) +(pin + (input) + (rect 872 1648 1040 1664) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "nINDEX" (rect 5 0 55 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 816 1664 880 1680)) +) +(pin + (input) + (rect 872 1624 1040 1640) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "HD_DD" (rect 5 0 55 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 808 1632 872 1648)) +) +(pin + (input) + (rect 96 -288 264 -272) + (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) + (text "MAIN_CLK" (rect 9 0 78 15)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 92 12)(pt 117 12)(line_width 1)) + (line (pt 92 4)(pt 117 4)(line_width 1)) + (line (pt 121 8)(pt 168 8)(line_width 1)) + (line (pt 92 12)(pt 92 4)(line_width 1)) + (line (pt 117 4)(pt 121 8)(line_width 1)) + (line (pt 117 12)(pt 121 8)(line_width 1)) + ) + (text "VCC" (rect 136 7 160 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 56 -304 120 -288)) +) +(pin + (input) + (rect 664 440 840 456) + (text "INPUT" (rect 141 0 177 13)(font "Arial" (font_size 6))) + (text "nRSTO_MCF" (rect 5 0 89 15)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 100 12)(pt 125 12)(line_width 1)) + (line (pt 100 4)(pt 125 4)(line_width 1)) + (line (pt 129 8)(pt 176 8)(line_width 1)) + (line (pt 100 12)(pt 100 4)(line_width 1)) + (line (pt 125 4)(pt 129 8)(line_width 1)) + (line (pt 125 12)(pt 129 8)(line_width 1)) + ) + (text "VCC" (rect 144 7 168 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 600 448 664 464)) +) +(pin + (output) + (rect 864 288 1040 304) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "CLK24M576" (rect 90 0 170 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 1040 304 1112 320)) +) +(pin + (output) + (rect 1832 832 2008 848) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "LP_STR" (rect 90 0 144 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2008 840 2064 856)) +) +(pin + (output) + (rect 1832 936 2008 952) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nACSI_ACK" (rect 90 0 166 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2008 952 2072 968)) +) +(pin + (output) + (rect 1832 960 2008 976) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nACSI_RESET" (rect 90 0 185 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2008 976 2072 992)) +) +(pin + (output) + (rect 1832 984 2008 1000) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nACSI_CS" (rect 90 0 158 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2008 1000 2072 1016)) +) +(pin + (output) + (rect 1832 1008 2008 1024) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "ACSI_DIR" (rect 90 0 154 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2008 1024 2064 1040)) +) +(pin + (output) + (rect 1832 1032 2008 1048) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "ACSI_A1" (rect 90 0 146 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2008 1048 2072 1064)) +) +(pin + (output) + (rect 1840 1112 2016 1128) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nSCSI_ACK" (rect 90 0 167 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2016 1128 2072 1144)) +) +(pin + (output) + (rect 1840 1136 2016 1152) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nSCSI_ATN" (rect 90 0 166 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2016 1152 2080 1168)) +) +(pin + (output) + (rect 1840 1160 2016 1176) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "SCSI_DIR" (rect 90 0 156 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2016 1176 2072 1192)) +) +(pin + (output) + (rect 1920 1264 2096 1280) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "MIDI_OLR" (rect 90 0 156 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2096 1280 2152 1296)) +) +(pin + (output) + (rect 1920 1288 2096 1304) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "MIDI_TLR" (rect 90 0 153 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2096 1304 2152 1320)) +) +(pin + (output) + (rect 1840 1320 2016 1336) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "TxD" (rect 90 0 114 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2016 1336 2080 1352)) +) +(pin + (output) + (rect 1840 1344 2016 1360) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "RTS" (rect 90 0 118 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2016 1360 2080 1376)) +) +(pin + (output) + (rect 1848 1368 2024 1384) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "DTR" (rect 90 0 119 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2024 1384 2088 1400)) +) +(pin + (output) + (rect 2112 1400 2288 1416) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "AMKB_TX" (rect 90 0 152 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2288 1416 2392 1448)) +) +(pin + (output) + (rect 1848 1432 2024 1448) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "IDE_RES" (rect 90 0 151 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2024 1448 2088 1464)) +) +(pin + (output) + (rect 1848 1456 2024 1472) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nIDE_CS0" (rect 90 0 158 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2024 1472 2080 1488)) +) +(pin + (output) + (rect 1856 1480 2032 1496) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nIDE_CS1" (rect 90 0 158 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2032 1496 2088 1512)) +) +(pin + (output) + (rect 1848 1504 2024 1520) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nIDE_WR" (rect 90 0 153 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2024 1520 2080 1536)) +) +(pin + (output) + (rect 1848 1528 2024 1544) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nIDE_RD" (rect 90 0 151 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2024 1544 2080 1560)) +) +(pin + (output) + (rect 1848 1552 2024 1568) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nCF_CS0" (rect 90 0 153 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2024 1568 2088 1584)) +) +(pin + (output) + (rect 1848 1576 2024 1592) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nCF_CS1" (rect 90 0 153 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2024 1592 2088 1608)) +) +(pin + (output) + (rect 1920 1608 2096 1624) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nROM3" (rect 90 0 138 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2096 1624 2152 1640)) +) +(pin + (output) + (rect 1920 1632 2096 1648) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nROM4" (rect 90 0 138 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2096 1648 2152 1664)) +) +(pin + (output) + (rect 1920 1656 2096 1672) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nRP_UDS" (rect 90 0 157 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2096 1672 2152 1688)) +) +(pin + (output) + (rect 1920 1680 2096 1696) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nRP_LDS" (rect 90 0 154 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2096 1696 2152 1712)) +) +(pin + (output) + (rect 1856 1856 2032 1872) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nSDSEL" (rect 90 0 145 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2032 1872 2096 1888)) +) +(pin + (output) + (rect 2136 1832 2312 1848) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nWR_GATE" (rect 90 0 166 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2312 1848 2376 1864)) +) +(pin + (output) + (rect 2136 1808 2312 1824) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nWR" (rect 90 0 121 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2312 1824 2376 1840)) +) +(pin + (output) + (rect 1928 1912 2104 1928) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "YM_QA" (rect 90 0 136 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2104 1928 2168 1944)) +) +(pin + (output) + (rect 1928 1936 2104 1952) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "YM_QB" (rect 90 0 137 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2104 1952 2168 1968)) +) +(pin + (output) + (rect 1928 1960 2104 1976) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "YM_QC" (rect 90 0 138 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2104 1976 2168 1992)) +) +(pin + (output) + (rect 1856 2040 2032 2056) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "SD_CLK" (rect 90 0 146 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2032 2056 2096 2072)) +) +(pin + (output) + (rect 1856 1712 2032 1728) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "DSA_D" (rect 90 0 137 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2032 1728 2096 1744)) +) +(pin + (output) + (rect 2080 72 2256 88) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "VR[7..0]" (rect 90 0 139 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2256 88 2344 232)) +) +(pin + (output) + (rect 2000 96 2176 112) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "VG[7..0]" (rect 90 0 139 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2176 112 2264 256)) +) +(pin + (output) + (rect 1912 120 2088 136) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "VB[7..0]" (rect 90 0 138 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2088 136 2176 280)) +) +(pin + (output) + (rect 2528 320 2704 336) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "VA[12..0]" (rect 90 0 145 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2704 336 2776 560)) +) +(pin + (output) + (rect 2400 344 2576 360) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nVWE" (rect 90 0 128 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2576 360 2640 392)) +) +(pin + (output) + (rect 2304 368 2480 384) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nVCAS" (rect 90 0 134 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2480 384 2552 416)) +) +(pin + (output) + (rect 2208 392 2384 408) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nVRAS" (rect 90 0 134 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2384 408 2456 440)) +) +(pin + (output) + (rect 2040 416 2216 432) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nVCS" (rect 90 0 126 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2216 432 2280 464)) +) +(pin + (output) + (rect 1944 560 2120 576) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "VDM[3..0]" (rect 90 0 150 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2120 576 2192 656)) +) +(pin + (output) + (rect 1832 264 2008 280) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nPD_VGA" (rect 90 0 153 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2008 280 2064 296)) +) +(pin + (output) + (rect 1832 2416 2008 2432) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nIRQ[7..2]" (rect 90 0 153 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2008 2432 2112 2576)) +) +(pin + (output) + (rect 864 24 1040 40) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "CLK25M" (rect 90 0 145 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 1040 40 1096 56)) +) +(pin + (output) + (rect 1832 2632 2008 2648) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "TIN0" (rect 90 0 120 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2008 2648 2064 2664)) +) +(pin + (output) + (rect 1824 3280 2000 3296) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nSRCS" (rect 90 0 138 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2000 3296 2056 3312)) +) +(pin + (output) + (rect 1824 3304 2000 3320) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nSRBLE" (rect 90 0 145 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2000 3320 2056 3336)) +) +(pin + (output) + (rect 1824 3328 2000 3344) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nSRBHE" (rect 90 0 147 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2000 3344 2056 3360)) +) +(pin + (output) + (rect 1824 3352 2000 3368) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nSRWE" (rect 90 0 140 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2000 3368 2056 3384)) +) +(pin + (output) + (rect 616 2408 792 2424) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nDREQ1" (rect 90 0 147 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 792 2424 856 2440)) +) +(pin + (output) + (rect 608 2128 784 2144) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "LED_FPGA_OK" (rect 90 0 191 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 784 2144 848 2176)) +) +(pin + (output) + (rect 1824 3376 2000 3392) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nSROE" (rect 90 0 138 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2000 3392 2064 3408)) +) +(pin + (output) + (rect 1944 440 2120 456) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "VCKE" (rect 90 0 127 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2120 456 2184 488)) +) +(pin + (output) + (rect 2056 728 2232 744) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nFB_TA" (rect 90 0 140 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2232 744 2288 760)) +) +(pin + (output) + (rect 2712 880 2888 896) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nDDR_CLK" (rect 90 0 166 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2888 896 2960 928)) +) +(pin + (output) + (rect 2536 752 2712 768) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "DDR_CLK" (rect 90 0 158 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2712 768 2784 800)) +) +(pin + (output) + (rect 1832 464 2008 480) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "BA[1..0]" (rect 90 0 138 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2008 480 2080 528)) +) +(pin + (output) + (rect 2136 -72 2312 -56) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "VSYNC_PAD" (rect 90 0 173 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2312 -56 2400 -24)) +) +(pin + (output) + (rect 2712 -88 2888 -72) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "HSYNC_PAD" (rect 90 0 176 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2888 -72 2976 -40)) +) +(pin + (output) + (rect 2712 32 2888 48) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nBLANK_PAD" (rect 90 0 180 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2888 48 2976 80)) +) +(pin + (output) + (rect 2712 160 2891 176) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "PIXEL_CLK_PAD" (rect 90 0 202 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2888 176 2976 208)) +) +(pin + (output) + (rect 1832 216 2008 232) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nSYNC" (rect 90 0 137 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2008 232 2112 264)) +) +(pin + (output) + (rect 2136 1736 2312 1752) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nMOT_ON" (rect 90 0 157 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2312 1752 2376 1768)) +) +(pin + (output) + (rect 2136 1760 2312 1776) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nSTEP_DIR" (rect 90 0 167 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2312 1776 2376 1792)) +) +(pin + (output) + (rect 2136 1784 2312 1800) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "nSTEP" (rect 90 0 134 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2312 1800 2376 1816)) +) +(pin + (output) + (rect 840 48 1016 64) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "CLKUSB" (rect 90 0 147 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 1000 64 1056 80)) +) +(pin + (output) + (rect 1832 856 2008 872) + (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) + (text "LPDIR" (rect 90 0 132 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 52 4)(pt 78 4)(line_width 1)) + (line (pt 52 12)(pt 78 12)(line_width 1)) + (line (pt 52 12)(pt 52 4)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 82 8)(pt 78 12)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + ) + (annotation_block (location)(rect 2008 864 2064 880)) +) +(pin + (bidir) + (rect 1840 1088 2016 1104) + (text "BIDIR" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "SCSI_PAR" (rect 90 0 159 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)(line_width 1)) + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 56 12)(pt 78 12)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + (line (pt 56 4)(pt 52 8)(line_width 1)) + (line (pt 52 8)(pt 56 12)(line_width 1)) + ) + (text "VCC" (rect 4 7 28 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 2016 1104 2080 1120)) +) +(pin + (bidir) + (rect 1840 1184 2016 1200) + (text "BIDIR" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "nSCSI_RST" (rect 90 0 167 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)(line_width 1)) + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 56 12)(pt 78 12)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + (line (pt 56 4)(pt 52 8)(line_width 1)) + (line (pt 52 8)(pt 56 12)(line_width 1)) + ) + (text "VCC" (rect 4 7 28 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 2016 1200 2072 1216)) +) +(pin + (bidir) + (rect 1840 1208 2016 1224) + (text "BIDIR" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "nSCSI_SEL" (rect 90 0 166 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)(line_width 1)) + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 56 12)(pt 78 12)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + (line (pt 56 4)(pt 52 8)(line_width 1)) + (line (pt 52 8)(pt 56 12)(line_width 1)) + ) + (text "VCC" (rect 4 7 28 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 2016 1224 2080 1240)) +) +(pin + (bidir) + (rect 1840 1232 2016 1248) + (text "BIDIR" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "nSCSI_BUSY" (rect 90 0 177 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)(line_width 1)) + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 56 12)(pt 78 12)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + (line (pt 56 4)(pt 52 8)(line_width 1)) + (line (pt 52 8)(pt 56 12)(line_width 1)) + ) + (text "VCC" (rect 4 7 28 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 2016 1248 2072 1264)) +) +(pin + (bidir) + (rect 1856 1992 2032 2008) + (text "BIDIR" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "SD_CD_DATA3" (rect 90 0 191 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)(line_width 1)) + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 56 12)(pt 78 12)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + (line (pt 56 4)(pt 52 8)(line_width 1)) + (line (pt 52 8)(pt 56 12)(line_width 1)) + ) + (text "VCC" (rect 4 7 28 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 2032 2008 2096 2024)) +) +(pin + (bidir) + (rect 1856 2016 2032 2032) + (text "BIDIR" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "SD_CMD_D1" (rect 90 0 177 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)(line_width 1)) + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 56 12)(pt 78 12)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + (line (pt 56 4)(pt 52 8)(line_width 1)) + (line (pt 52 8)(pt 56 12)(line_width 1)) + ) + (text "VCC" (rect 4 7 28 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 2032 2032 2096 2048)) +) +(pin + (bidir) + (rect 1936 1064 2112 1080) + (text "BIDIR" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "SCSI_D[7..0]" (rect 90 0 172 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)(line_width 1)) + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 56 12)(pt 78 12)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + (line (pt 56 4)(pt 52 8)(line_width 1)) + (line (pt 52 8)(pt 56 12)(line_width 1)) + ) + (text "VCC" (rect 4 7 28 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 2112 1080 2176 1208)) +) +(pin + (bidir) + (rect 1904 888 2080 904) + (text "BIDIR" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "ACSI_D[7..0]" (rect 90 0 171 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)(line_width 1)) + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 56 12)(pt 78 12)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + (line (pt 56 4)(pt 52 8)(line_width 1)) + (line (pt 52 8)(pt 56 12)(line_width 1)) + ) + (text "VCC" (rect 4 7 28 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 2080 904 2144 1032)) +) +(pin + (bidir) + (rect 1960 808 2136 824) + (text "BIDIR" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "LP_D[7..0]" (rect 90 0 157 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)(line_width 1)) + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 56 12)(pt 78 12)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + (line (pt 56 4)(pt 52 8)(line_width 1)) + (line (pt 52 8)(pt 56 12)(line_width 1)) + ) + (text "VCC" (rect 4 7 28 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 2136 824 2200 952)) +) +(pin + (bidir) + (rect 176 1360 352 1376) + (text "BIDIR" (rect 151 0 182 13)(font "Arial" (font_size 6))) + (text "FB_AD[31..0]" (rect 5 0 88 15)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 120 4)(pt 98 4)(line_width 1)) + (line (pt 176 8)(pt 124 8)(line_width 1)) + (line (pt 120 12)(pt 98 12)(line_width 1)) + (line (pt 98 4)(pt 94 8)(line_width 1)) + (line (pt 98 12)(pt 94 8)(line_width 1)) + (line (pt 120 4)(pt 124 8)(line_width 1)) + (line (pt 124 8)(pt 120 12)(line_width 1)) + ) + (flipy) + (text "VCC" (rect 152 7 176 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 96 840 168 1352)) +) +(pin + (bidir) + (rect 2104 3232 2280 3248) + (text "BIDIR" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "IO[17..0]" (rect 90 0 143 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)(line_width 1)) + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 56 12)(pt 78 12)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + (line (pt 56 4)(pt 52 8)(line_width 1)) + (line (pt 52 8)(pt 56 12)(line_width 1)) + ) + (text "VCC" (rect 4 7 28 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 2280 3248 2344 3536)) +) +(pin + (bidir) + (rect 1944 3256 2120 3272) + (text "BIDIR" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "SRD[15..0]" (rect 90 0 159 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)(line_width 1)) + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 56 12)(pt 78 12)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + (line (pt 56 4)(pt 52 8)(line_width 1)) + (line (pt 52 8)(pt 56 12)(line_width 1)) + ) + (text "VCC" (rect 4 7 28 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 2120 3272 2184 3528)) +) +(pin + (bidir) + (rect 2040 536 2216 552) + (text "BIDIR" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "VDQS[3..0]" (rect 90 0 159 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)(line_width 1)) + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 56 12)(pt 78 12)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + (line (pt 56 4)(pt 52 8)(line_width 1)) + (line (pt 52 8)(pt 56 12)(line_width 1)) + ) + (text "VCC" (rect 4 7 28 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 2216 552 2288 632)) +) +(pin + (bidir) + (rect 2648 296 2824 312) + (text "BIDIR" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "VD[31..0]" (rect 90 0 147 15)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)(line_width 1)) + (line (pt 0 8)(pt 52 8)(line_width 1)) + (line (pt 56 12)(pt 78 12)(line_width 1)) + (line (pt 78 4)(pt 82 8)(line_width 1)) + (line (pt 78 12)(pt 82 8)(line_width 1)) + (line (pt 56 4)(pt 52 8)(line_width 1)) + (line (pt 52 8)(pt 56 12)(line_width 1)) + ) + (text "VCC" (rect 4 7 28 20)(font "Arial" (font_size 6))) + (annotation_block (location)(rect 2824 312 2896 840)) +) +(symbol + (rect 544 2024 688 2088) + (text "lpm_counter0" (rect 33 1 148 20)(font "Arial" (font_size 10))) + (text "inst18" (rect 8 48 48 63)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 26 62 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 144 40) + (output) + (text "q[17..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) + (text "q[17..0]" (rect 89 34 140 50)(font "Arial" (font_size 8))) + (line (pt 144 40)(pt 128 40)(line_width 3)) + ) + (drawing + (text "up counter" (rect 84 17 152 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 48)(line_width 1)) + (line (pt 128 48)(pt 16 48)(line_width 1)) + (line (pt 16 48)(pt 16 16)(line_width 1)) + (line (pt 16 26)(pt 22 32)(line_width 1)) + (line (pt 22 32)(pt 16 38)(line_width 1)) + ) +) +(symbol + (rect 440 2120 488 2152) + (text "WIRE" (rect 1 0 31 13)(font "Arial" (font_size 6))) + (text "inst3" (rect 3 21 34 36)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)(line_width 1)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)(line_width 1)) + ) + (drawing + (line (pt 14 7)(pt 32 16)(line_width 1)) + (line (pt 14 25)(pt 14 7)(line_width 1)) + (line (pt 14 25)(pt 32 16)(line_width 1)) + ) +) +(symbol + (rect 464 1336 608 1432) + (text "lpm_ff0" (rect 52 1 114 20)(font "Arial" (font_size 10))) + (text "inst1" (rect 8 80 39 95)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[31..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) + (text "data[31..0]" (rect 20 26 93 42)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 26 42 62 58)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 0 64) + (input) + (text "enable" (rect 0 0 44 16)(font "Arial" (font_size 8))) + (text "enable" (rect 20 58 64 74)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)(line_width 1)) + ) + (port + (pt 144 56) + (output) + (text "q[31..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) + (text "q[31..0]" (rect 89 50 140 66)(font "Arial" (font_size 8))) + (line (pt 144 56)(pt 128 56)(line_width 3)) + ) + (drawing + (text "DFF" (rect 109 17 136 32)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 80)(line_width 1)) + (line (pt 128 80)(pt 16 80)(line_width 1)) + (line (pt 16 80)(pt 16 16)(line_width 1)) + (line (pt 16 42)(pt 22 48)(line_width 1)) + (line (pt 22 48)(pt 16 54)(line_width 1)) + ) +) +(symbol + (rect 1880 696 1944 776) + (text "NOR4" (rect 1 0 34 13)(font "Arial" (font_size 6))) + (text "inst2" (rect 3 69 34 84)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)(line_width 1)) + ) + (port + (pt 0 48) + (input) + (text "IN3" (rect 2 39 26 55)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 39 26 55)(font "Courier New" (bold))(invisible)) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 0 64) + (input) + (text "IN4" (rect 2 55 26 71)(font "Courier New" (bold))(invisible)) + (text "IN4" (rect 2 55 26 71)(font "Courier New" (bold))(invisible)) + (line (pt 0 64)(pt 14 64)(line_width 1)) + ) + (port + (pt 64 40) + (output) + (text "OUT" (rect 48 31 72 47)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 31 72 47)(font "Courier New" (bold))(invisible)) + (line (pt 56 40)(pt 64 40)(line_width 1)) + ) + (drawing + (line (pt 14 29)(pt 25 29)(line_width 1)) + (line (pt 14 52)(pt 25 52)(line_width 1)) + (line (pt 14 29)(pt 14 13)(line_width 1)) + (line (pt 14 67)(pt 14 51)(line_width 1)) + (arc (pt 25 51)(pt 48 40)(rect -4 -7 55 52)(line_width 1)) + (arc (pt 48 40)(pt 25 29)(rect -4 29 55 88)(line_width 1)) + (arc (pt 8 45)(pt 8 35)(rect -13 24 20 57)(line_width 1)) + (circle (rect 48 36 56 44)(line_width 1)) + ) +) +(symbol + (rect 2632 872 2680 904) + (text "NOT" (rect 1 0 26 13)(font "Arial" (font_size 6))) + (text "inst4" (rect 3 21 34 36)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)(line_width 1)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)(line_width 1)) + ) + (drawing + (line (pt 13 25)(pt 13 7)(line_width 1)) + (line (pt 13 7)(pt 31 16)(line_width 1)) + (line (pt 13 25)(pt 31 16)(line_width 1)) + (circle (rect 31 12 39 20)(line_width 1)) + ) +) +(symbol + (rect 1896 -88 2128 32) + (text "altddio_out3" (rect 81 1 183 20)(font "Arial" (font_size 10))) + (text "inst5" (rect 8 104 39 119)(font "Arial" )) + (port + (pt 0 24) + (input) + (text "datain_h" (rect 0 0 57 16)(font "Arial" (font_size 8))) + (text "datain_h" (rect 4 11 61 27)(font "Arial" (font_size 8))) + (line (pt 0 24)(pt 88 24)(line_width 1)) + ) + (port + (pt 0 40) + (input) + (text "datain_l" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "datain_l" (rect 4 27 57 43)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 88 40)(line_width 1)) + ) + (port + (pt 0 56) + (input) + (text "outclock" (rect 0 0 57 16)(font "Arial" (font_size 8))) + (text "outclock" (rect 4 43 61 59)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 88 56)(line_width 1)) + ) + (port + (pt 232 24) + (output) + (text "dataout" (rect 0 0 50 16)(font "Arial" (font_size 8))) + (text "dataout" (rect 193 11 243 27)(font "Arial" (font_size 8))) + (line (pt 232 24)(pt 152 24)(line_width 1)) + ) + (drawing + (text "ddio" (rect 110 27 138 43)(font "Arial" (font_size 8))) + (text "output" (rect 105 42 147 58)(font "Arial" (font_size 8))) + (text "power up" (rect 92 74 152 89)(font "Arial" )) + (text "low" (rect 92 84 114 99)(font "Arial" )) + (line (pt 88 16)(pt 152 16)(line_width 1)) + (line (pt 152 16)(pt 152 96)(line_width 1)) + (line (pt 152 96)(pt 88 96)(line_width 1)) + (line (pt 88 96)(pt 88 16)(line_width 1)) + ) +) +(symbol + (rect 2464 -104 2696 16) + (text "altddio_out3" (rect 81 1 183 20)(font "Arial" (font_size 10))) + (text "inst6" (rect 8 104 39 119)(font "Arial" )) + (port + (pt 0 24) + (input) + (text "datain_h" (rect 0 0 57 16)(font "Arial" (font_size 8))) + (text "datain_h" (rect 4 11 61 27)(font "Arial" (font_size 8))) + (line (pt 0 24)(pt 88 24)(line_width 1)) + ) + (port + (pt 0 40) + (input) + (text "datain_l" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "datain_l" (rect 4 27 57 43)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 88 40)(line_width 1)) + ) + (port + (pt 0 56) + (input) + (text "outclock" (rect 0 0 57 16)(font "Arial" (font_size 8))) + (text "outclock" (rect 4 43 61 59)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 88 56)(line_width 1)) + ) + (port + (pt 232 24) + (output) + (text "dataout" (rect 0 0 50 16)(font "Arial" (font_size 8))) + (text "dataout" (rect 193 11 243 27)(font "Arial" (font_size 8))) + (line (pt 232 24)(pt 152 24)(line_width 1)) + ) + (drawing + (text "ddio" (rect 110 27 138 43)(font "Arial" (font_size 8))) + (text "output" (rect 105 42 147 58)(font "Arial" (font_size 8))) + (text "power up" (rect 92 74 152 89)(font "Arial" )) + (text "low" (rect 92 84 114 99)(font "Arial" )) + (line (pt 88 16)(pt 152 16)(line_width 1)) + (line (pt 152 16)(pt 152 96)(line_width 1)) + (line (pt 152 96)(pt 88 96)(line_width 1)) + (line (pt 88 96)(pt 88 16)(line_width 1)) + ) +) +(symbol + (rect 2464 16 2696 136) + (text "altddio_out3" (rect 81 1 183 20)(font "Arial" (font_size 10))) + (text "inst8" (rect 8 104 39 119)(font "Arial" )) + (port + (pt 0 24) + (input) + (text "datain_h" (rect 0 0 57 16)(font "Arial" (font_size 8))) + (text "datain_h" (rect 4 11 61 27)(font "Arial" (font_size 8))) + (line (pt 0 24)(pt 88 24)(line_width 1)) + ) + (port + (pt 0 40) + (input) + (text "datain_l" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "datain_l" (rect 4 27 57 43)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 88 40)(line_width 1)) + ) + (port + (pt 0 56) + (input) + (text "outclock" (rect 0 0 57 16)(font "Arial" (font_size 8))) + (text "outclock" (rect 4 43 61 59)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 88 56)(line_width 1)) + ) + (port + (pt 232 24) + (output) + (text "dataout" (rect 0 0 50 16)(font "Arial" (font_size 8))) + (text "dataout" (rect 193 11 243 27)(font "Arial" (font_size 8))) + (line (pt 232 24)(pt 152 24)(line_width 1)) + ) + (drawing + (text "ddio" (rect 110 27 138 43)(font "Arial" (font_size 8))) + (text "output" (rect 105 42 147 58)(font "Arial" (font_size 8))) + (text "power up" (rect 92 74 152 89)(font "Arial" )) + (text "low" (rect 92 84 114 99)(font "Arial" )) + (line (pt 88 16)(pt 152 16)(line_width 1)) + (line (pt 152 16)(pt 152 96)(line_width 1)) + (line (pt 152 96)(pt 88 96)(line_width 1)) + (line (pt 88 96)(pt 88 16)(line_width 1)) + ) +) +(symbol + (rect 2464 144 2696 264) + (text "altddio_out3" (rect 81 1 183 20)(font "Arial" (font_size 10))) + (text "inst9" (rect 8 104 39 119)(font "Arial" )) + (port + (pt 0 24) + (input) + (text "datain_h" (rect 0 0 57 16)(font "Arial" (font_size 8))) + (text "datain_h" (rect 4 11 61 27)(font "Arial" (font_size 8))) + (line (pt 0 24)(pt 88 24)(line_width 1)) + ) + (port + (pt 0 40) + (input) + (text "datain_l" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "datain_l" (rect 4 27 57 43)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 88 40)(line_width 1)) + ) + (port + (pt 0 56) + (input) + (text "outclock" (rect 0 0 57 16)(font "Arial" (font_size 8))) + (text "outclock" (rect 4 43 61 59)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 88 56)(line_width 1)) + ) + (port + (pt 232 24) + (output) + (text "dataout" (rect 0 0 50 16)(font "Arial" (font_size 8))) + (text "dataout" (rect 193 11 243 27)(font "Arial" (font_size 8))) + (line (pt 232 24)(pt 152 24)(line_width 1)) + ) + (drawing + (text "ddio" (rect 110 27 138 43)(font "Arial" (font_size 8))) + (text "output" (rect 105 42 147 58)(font "Arial" (font_size 8))) + (text "power up" (rect 92 74 152 89)(font "Arial" )) + (text "low" (rect 92 84 114 99)(font "Arial" )) + (line (pt 88 16)(pt 152 16)(line_width 1)) + (line (pt 152 16)(pt 152 96)(line_width 1)) + (line (pt 152 96)(pt 88 96)(line_width 1)) + (line (pt 88 96)(pt 88 16)(line_width 1)) + ) +) +(symbol + (rect 2368 120 2400 152) + (text "GND" (rect 6 8 19 33)(font "Arial" (font_size 6))(vertical)) + (text "inst10" (rect -1 3 14 43)(font "Arial" )(vertical)(invisible)) + (port + (pt 32 16) + (output) + (text "1" (rect 18 0 26 16)(font "Courier New" (bold))(invisible)) + (text "1" (rect 20 18 36 26)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 16)(pt 32 16)(line_width 1)) + ) + (drawing + (line (pt 24 8)(pt 16 16)(line_width 1)) + (line (pt 16 16)(pt 24 24)(line_width 1)) + (line (pt 24 8)(pt 24 24)(line_width 1)) + ) + (rotate270) +) +(symbol + (rect 2408 144 2424 176) + (text "VCC" (rect 0 7 13 31)(font "Arial" (font_size 6))(vertical)) + (text "inst11" (rect 5 3 20 43)(font "Arial" )(vertical)(invisible)) + (port + (pt 16 16) + (output) + (text "1" (rect 19 7 27 23)(font "Courier New" (bold))(invisible)) + (text "1" (rect 7 19 23 27)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 16)(pt 8 16)(line_width 1)) + ) + (drawing + (line (pt 8 8)(pt 8 24)(line_width 1)) + ) + (flipy_rotate90) +) +(symbol + (rect 1800 1728 1848 1760) + (text "NOT" (rect 1 0 26 13)(font "Arial" (font_size 6))) + (text "inst14" (rect 3 21 43 36)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)(line_width 1)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)(line_width 1)) + ) + (drawing + (line (pt 13 25)(pt 13 7)(line_width 1)) + (line (pt 13 7)(pt 31 16)(line_width 1)) + (line (pt 13 25)(pt 31 16)(line_width 1)) + (circle (rect 31 12 39 20)(line_width 1)) + ) +) +(symbol + (rect 1856 1752 1904 1784) + (text "NOT" (rect 1 0 26 13)(font "Arial" (font_size 6))) + (text "inst15" (rect 3 21 43 36)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)(line_width 1)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)(line_width 1)) + ) + (drawing + (line (pt 13 25)(pt 13 7)(line_width 1)) + (line (pt 13 7)(pt 31 16)(line_width 1)) + (line (pt 13 25)(pt 31 16)(line_width 1)) + (circle (rect 31 12 39 20)(line_width 1)) + ) +) +(symbol + (rect 1800 1776 1848 1808) + (text "NOT" (rect 1 0 26 13)(font "Arial" (font_size 6))) + (text "inst16" (rect 3 21 43 36)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)(line_width 1)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)(line_width 1)) + ) + (drawing + (line (pt 13 25)(pt 13 7)(line_width 1)) + (line (pt 13 7)(pt 31 16)(line_width 1)) + (line (pt 13 25)(pt 31 16)(line_width 1)) + (circle (rect 31 12 39 20)(line_width 1)) + ) +) +(symbol + (rect 1856 1800 1904 1832) + (text "NOT" (rect 1 0 26 13)(font "Arial" (font_size 6))) + (text "inst17" (rect 3 21 43 36)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)(line_width 1)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)(line_width 1)) + ) + (drawing + (line (pt 13 25)(pt 13 7)(line_width 1)) + (line (pt 13 7)(pt 31 16)(line_width 1)) + (line (pt 13 25)(pt 31 16)(line_width 1)) + (circle (rect 31 12 39 20)(line_width 1)) + ) +) +(symbol + (rect 1800 1824 1848 1856) + (text "NOT" (rect 1 0 26 13)(font "Arial" (font_size 6))) + (text "inst19" (rect 3 21 43 36)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)(line_width 1)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)(line_width 1)) + ) + (drawing + (line (pt 13 25)(pt 13 7)(line_width 1)) + (line (pt 13 7)(pt 31 16)(line_width 1)) + (line (pt 13 25)(pt 31 16)(line_width 1)) + (circle (rect 31 12 39 20)(line_width 1)) + ) +) +(symbol + (rect 448 -352 752 -104) + (text "altpll2" (rect 132 1 179 20)(font "Arial" (font_size 10))) + (text "inst12" (rect 8 229 48 244)(font "Arial" )) + (port + (pt 0 72) + (input) + (text "inclk0" (rect 0 0 40 16)(font "Arial" (font_size 8))) + (text "inclk0" (rect 4 56 44 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 48 72)(line_width 1)) + ) + (port + (pt 304 72) + (output) + (text "c0" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c0" (rect 287 56 303 72)(font "Arial" (font_size 8))) + (line (pt 304 72)(pt 272 72)(line_width 1)) + ) + (port + (pt 304 96) + (output) + (text "c1" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c1" (rect 287 80 303 96)(font "Arial" (font_size 8))) + (line (pt 304 96)(pt 272 96)(line_width 1)) + ) + (port + (pt 304 120) + (output) + (text "c2" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c2" (rect 287 104 303 120)(font "Arial" (font_size 8))) + (line (pt 304 120)(pt 272 120)(line_width 1)) + ) + (port + (pt 304 144) + (output) + (text "c3" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c3" (rect 287 128 303 144)(font "Arial" (font_size 8))) + (line (pt 304 144)(pt 272 144)(line_width 1)) + ) + (port + (pt 304 168) + (output) + (text "c4" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c4" (rect 287 152 303 168)(font "Arial" (font_size 8))) + (line (pt 304 168)(pt 272 168)(line_width 1)) + ) + (drawing + (text "Cyclone III" (rect 229 230 295 245)(font "Arial" )) + (text "inclk0 frequency: 33.000 MHz" (rect 58 67 244 82)(font "Arial" )) + (text "Operation Mode: Src Sync Comp" (rect 58 84 266 99)(font "Arial" )) + (text "Clk " (rect 59 111 83 126)(font "Arial" )) + (text "Ratio" (rect 85 111 119 126)(font "Arial" )) + (text "Ph (dg)" (rect 119 111 166 126)(font "Arial" )) + (text "DC (%)" (rect 164 111 211 126)(font "Arial" )) + (text "c0" (rect 63 129 78 144)(font "Arial" )) + (text "4/1" (rect 91 129 111 144)(font "Arial" )) + (text "240.00" (rect 120 129 164 144)(font "Arial" )) + (text "50.00" (rect 169 129 205 144)(font "Arial" )) + (text "c1" (rect 63 147 78 162)(font "Arial" )) + (text "4/1" (rect 91 147 111 162)(font "Arial" )) + (text "0.00" (rect 127 147 155 162)(font "Arial" )) + (text "50.00" (rect 169 147 205 162)(font "Arial" )) + (text "c2" (rect 63 165 78 180)(font "Arial" )) + (text "4/1" (rect 91 165 111 180)(font "Arial" )) + (text "180.00" (rect 120 165 164 180)(font "Arial" )) + (text "50.00" (rect 169 165 205 180)(font "Arial" )) + (text "c3" (rect 63 183 78 198)(font "Arial" )) + (text "4/1" (rect 91 183 111 198)(font "Arial" )) + (text "105.00" (rect 120 183 164 198)(font "Arial" )) + (text "50.00" (rect 169 183 205 198)(font "Arial" )) + (text "c4" (rect 63 201 78 216)(font "Arial" )) + (text "2/1" (rect 91 201 111 216)(font "Arial" )) + (text "270.00" (rect 120 201 164 216)(font "Arial" )) + (text "50.00" (rect 169 201 205 216)(font "Arial" )) + (line (pt 0 0)(pt 305 0)(line_width 1)) + (line (pt 305 0)(pt 305 249)(line_width 1)) + (line (pt 0 249)(pt 305 249)(line_width 1)) + (line (pt 0 0)(pt 0 249)(line_width 1)) + (line (pt 56 108)(pt 206 108)(line_width 1)) + (line (pt 56 125)(pt 206 125)(line_width 1)) + (line (pt 56 143)(pt 206 143)(line_width 1)) + (line (pt 56 161)(pt 206 161)(line_width 1)) + (line (pt 56 179)(pt 206 179)(line_width 1)) + (line (pt 56 197)(pt 206 197)(line_width 1)) + (line (pt 56 215)(pt 206 215)(line_width 1)) + (line (pt 56 108)(pt 56 215)(line_width 1)) + (line (pt 82 108)(pt 82 215)(line_width 3)) + (line (pt 116 108)(pt 116 215)(line_width 3)) + (line (pt 161 108)(pt 161 215)(line_width 3)) + (line (pt 205 108)(pt 205 215)(line_width 1)) + (line (pt 48 56)(pt 272 56)(line_width 1)) + (line (pt 272 56)(pt 272 232)(line_width 1)) + (line (pt 48 232)(pt 272 232)(line_width 1)) + (line (pt 48 56)(pt 48 232)(line_width 1)) + ) +) +(symbol + (rect -16 680 32 712) + (text "NOT" (rect 1 0 26 13)(font "Arial" (font_size 6))) + (text "inst23" (rect 3 21 43 36)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 18 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)(line_width 1)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 56 23)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)(line_width 1)) + ) + (drawing + (line (pt 13 25)(pt 13 7)(line_width 1)) + (line (pt 13 7)(pt 31 16)(line_width 1)) + (line (pt 13 25)(pt 31 16)(line_width 1)) + (circle (rect 31 12 39 20)(line_width 1)) + ) +) +(symbol + (rect 192 472 408 768) + (text "altpll_reconfig1" (rect 54 1 182 20)(font "Arial" (font_size 10))) + (text "inst7" (rect 8 277 39 292)(font "Arial" )) + (port + (pt 0 40) + (input) + (text "reconfig" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "reconfig" (rect 20 32 73 48)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 16 40)(line_width 1)) + ) + (port + (pt 0 56) + (input) + (text "read_param" (rect 0 0 80 16)(font "Arial" (font_size 8))) + (text "read_param" (rect 20 48 100 64)(font "Arial" (font_size 8))) + (line (pt 0 56)(pt 16 56)(line_width 1)) + ) + (port + (pt 0 72) + (input) + (text "write_param" (rect 0 0 82 16)(font "Arial" (font_size 8))) + (text "write_param" (rect 20 64 102 80)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 16 72)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "data_in[8..0]" (rect 0 0 84 16)(font "Arial" (font_size 8))) + (text "data_in[8..0]" (rect 20 88 104 104)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)(line_width 3)) + ) + (port + (pt 0 112) + (input) + (text "counter_type[3..0]" (rect 0 0 123 16)(font "Arial" (font_size 8))) + (text "counter_type[3..0]" (rect 20 104 143 120)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 16 112)(line_width 3)) + ) + (port + (pt 0 128) + (input) + (text "counter_param[2..0]" (rect 0 0 136 16)(font "Arial" (font_size 8))) + (text "counter_param[2..0]" (rect 20 120 156 136)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 16 128)(line_width 3)) + ) + (port + (pt 0 168) + (input) + (text "pll_scandataout" (rect 0 0 107 16)(font "Arial" (font_size 8))) + (text "pll_scandataout" (rect 20 160 127 176)(font "Arial" (font_size 8))) + (line (pt 0 168)(pt 16 168)(line_width 1)) + ) + (port + (pt 0 184) + (input) + (text "pll_scandone" (rect 0 0 89 16)(font "Arial" (font_size 8))) + (text "pll_scandone" (rect 20 176 109 192)(font "Arial" (font_size 8))) + (line (pt 0 184)(pt 16 184)(line_width 1)) + ) + (port + (pt 0 208) + (input) + (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) + (text "clock" (rect 20 200 56 216)(font "Arial" (font_size 8))) + (line (pt 0 208)(pt 16 208)(line_width 1)) + ) + (port + (pt 0 224) + (input) + (text "reset" (rect 0 0 34 16)(font "Arial" (font_size 8))) + (text "reset" (rect 20 216 54 232)(font "Arial" (font_size 8))) + (line (pt 0 224)(pt 16 224)(line_width 1)) + ) + (port + (pt 0 248) + (input) + (text "pll_areset_in" (rect 0 0 86 16)(font "Arial" (font_size 8))) + (text "pll_areset_in" (rect 20 240 106 256)(font "Arial" (font_size 8))) + (line (pt 0 248)(pt 16 248)(line_width 1)) + ) + (port + (pt 216 40) + (output) + (text "busy" (rect 0 0 33 16)(font "Arial" (font_size 8))) + (text "busy" (rect 169 32 202 48)(font "Arial" (font_size 8))) + (line (pt 216 40)(pt 200 40)(line_width 1)) + ) + (port + (pt 216 96) + (output) + (text "data_out[8..0]" (rect 0 0 94 16)(font "Arial" (font_size 8))) + (text "data_out[8..0]" (rect 117 88 211 104)(font "Arial" (font_size 8))) + (line (pt 216 96)(pt 200 96)(line_width 3)) + ) + (port + (pt 216 152) + (output) + (text "pll_scandata" (rect 0 0 86 16)(font "Arial" (font_size 8))) + (text "pll_scandata" (rect 124 144 210 160)(font "Arial" (font_size 8))) + (line (pt 216 152)(pt 200 152)(line_width 1)) + ) + (port + (pt 216 168) + (output) + (text "pll_scanclk" (rect 0 0 76 16)(font "Arial" (font_size 8))) + (text "pll_scanclk" (rect 132 160 208 176)(font "Arial" (font_size 8))) + (line (pt 216 168)(pt 200 168)(line_width 1)) + ) + (port + (pt 216 200) + (output) + (text "pll_scanclkena" (rect 0 0 101 16)(font "Arial" (font_size 8))) + (text "pll_scanclkena" (rect 111 192 212 208)(font "Arial" (font_size 8))) + (line (pt 216 200)(pt 200 200)(line_width 1)) + ) + (port + (pt 216 216) + (output) + (text "pll_configupdate" (rect 0 0 109 16)(font "Arial" (font_size 8))) + (text "pll_configupdate" (rect 104 208 213 224)(font "Arial" (font_size 8))) + (line (pt 216 216)(pt 200 216)(line_width 1)) + ) + (port + (pt 216 248) + (output) + (text "pll_areset" (rect 0 0 66 16)(font "Arial" (font_size 8))) + (text "pll_areset" (rect 141 240 207 256)(font "Arial" (font_size 8))) + (line (pt 216 248)(pt 200 248)(line_width 1)) + ) + (drawing + (line (pt 0 0)(pt 217 0)(line_width 1)) + (line (pt 217 0)(pt 217 297)(line_width 1)) + (line (pt 0 297)(pt 217 297)(line_width 1)) + (line (pt 0 0)(pt 0 297)(line_width 1)) + (line (pt 16 24)(pt 201 24)(line_width 1)) + (line (pt 201 24)(pt 201 273)(line_width 1)) + (line (pt 16 273)(pt 201 273)(line_width 1)) + (line (pt 16 24)(pt 16 273)(line_width 1)) + ) +) +(symbol + (rect 608 496 984 728) + (text "altpll4" (rect 168 1 215 20)(font "Arial" (font_size 10))) + (text "inst22" (rect 8 213 48 228)(font "Arial" )) + (port + (pt 0 72) + (input) + (text "inclk0" (rect 0 0 40 16)(font "Arial" (font_size 8))) + (text "inclk0" (rect 4 56 44 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 88 72)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "areset" (rect 0 0 42 16)(font "Arial" (font_size 8))) + (text "areset" (rect 4 80 46 96)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 88 96)(line_width 1)) + ) + (port + (pt 0 120) + (input) + (text "scanclk" (rect 0 0 53 16)(font "Arial" (font_size 8))) + (text "scanclk" (rect 4 104 57 120)(font "Arial" (font_size 8))) + (line (pt 0 120)(pt 88 120)(line_width 1)) + ) + (port + (pt 0 144) + (input) + (text "scandata" (rect 0 0 62 16)(font "Arial" (font_size 8))) + (text "scandata" (rect 4 128 66 144)(font "Arial" (font_size 8))) + (line (pt 0 144)(pt 88 144)(line_width 1)) + ) + (port + (pt 0 168) + (input) + (text "scanclkena" (rect 0 0 77 16)(font "Arial" (font_size 8))) + (text "scanclkena" (rect 4 152 81 168)(font "Arial" (font_size 8))) + (line (pt 0 168)(pt 88 168)(line_width 1)) + ) + (port + (pt 0 192) + (input) + (text "configupdate" (rect 0 0 86 16)(font "Arial" (font_size 8))) + (text "configupdate" (rect 4 176 90 192)(font "Arial" (font_size 8))) + (line (pt 0 192)(pt 88 192)(line_width 1)) + ) + (port + (pt 376 72) + (output) + (text "c0" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c0" (rect 359 56 375 72)(font "Arial" (font_size 8))) + (line (pt 376 72)(pt 288 72)(line_width 1)) + ) + (port + (pt 376 96) + (output) + (text "scandataout" (rect 0 0 83 16)(font "Arial" (font_size 8))) + (text "scandataout" (rect 302 80 385 96)(font "Arial" (font_size 8))) + (line (pt 376 96)(pt 288 96)(line_width 1)) + ) + (port + (pt 376 120) + (output) + (text "scandone" (rect 0 0 66 16)(font "Arial" (font_size 8))) + (text "scandone" (rect 317 104 383 120)(font "Arial" (font_size 8))) + (line (pt 376 120)(pt 288 120)(line_width 1)) + ) + (port + (pt 376 144) + (output) + (text "locked" (rect 0 0 44 16)(font "Arial" (font_size 8))) + (text "locked" (rect 335 128 379 144)(font "Arial" (font_size 8))) + (line (pt 376 144)(pt 288 144)(line_width 1)) + ) + (drawing + (text "Cyclone III" (rect 301 214 367 229)(font "Arial" )) + (text "inclk0 frequency: 48.000 MHz" (rect 98 123 284 138)(font "Arial" )) + (text "Operation Mode: Normal" (rect 98 140 256 155)(font "Arial" )) + (text "Clk " (rect 99 167 123 182)(font "Arial" )) + (text "Ratio" (rect 125 167 159 182)(font "Arial" )) + (text "Ph (dg)" (rect 159 167 206 182)(font "Arial" )) + (text "DC (%)" (rect 204 167 251 182)(font "Arial" )) + (text "c0" (rect 103 185 118 200)(font "Arial" )) + (text "2/1" (rect 131 185 151 200)(font "Arial" )) + (text "0.00" (rect 167 185 195 200)(font "Arial" )) + (text "50.00" (rect 209 185 245 200)(font "Arial" )) + (line (pt 0 0)(pt 377 0)(line_width 1)) + (line (pt 377 0)(pt 377 233)(line_width 1)) + (line (pt 0 233)(pt 377 233)(line_width 1)) + (line (pt 0 0)(pt 0 233)(line_width 1)) + (line (pt 96 164)(pt 246 164)(line_width 1)) + (line (pt 96 181)(pt 246 181)(line_width 1)) + (line (pt 96 199)(pt 246 199)(line_width 1)) + (line (pt 96 164)(pt 96 199)(line_width 1)) + (line (pt 122 164)(pt 122 199)(line_width 3)) + (line (pt 156 164)(pt 156 199)(line_width 3)) + (line (pt 201 164)(pt 201 199)(line_width 3)) + (line (pt 245 164)(pt 245 199)(line_width 1)) + (line (pt 88 56)(pt 288 56)(line_width 1)) + (line (pt 288 56)(pt 288 216)(line_width 1)) + (line (pt 88 216)(pt 288 216)(line_width 1)) + (line (pt 88 56)(pt 88 216)(line_width 1)) + ) +) +(symbol + (rect 440 -88 744 144) + (text "altpll3" (rect 132 1 179 20)(font "Arial" (font_size 10))) + (text "inst13" (rect 8 213 48 228)(font "Arial" )) + (port + (pt 0 72) + (input) + (text "inclk0" (rect 0 0 40 16)(font "Arial" (font_size 8))) + (text "inclk0" (rect 4 56 44 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 48 72)(line_width 1)) + ) + (port + (pt 304 72) + (output) + (text "c0" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c0" (rect 287 56 303 72)(font "Arial" (font_size 8))) + (line (pt 304 72)(pt 272 72)(line_width 1)) + ) + (port + (pt 304 96) + (output) + (text "c1" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c1" (rect 287 80 303 96)(font "Arial" (font_size 8))) + (line (pt 304 96)(pt 272 96)(line_width 1)) + ) + (port + (pt 304 120) + (output) + (text "c2" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c2" (rect 287 104 303 120)(font "Arial" (font_size 8))) + (line (pt 304 120)(pt 272 120)(line_width 1)) + ) + (port + (pt 304 144) + (output) + (text "c3" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c3" (rect 287 128 303 144)(font "Arial" (font_size 8))) + (line (pt 304 144)(pt 272 144)(line_width 1)) + ) + (drawing + (text "Cyclone III" (rect 229 214 295 229)(font "Arial" )) + (text "inclk0 frequency: 33.000 MHz" (rect 58 67 244 82)(font "Arial" )) + (text "Operation Mode: Src Sync Comp" (rect 58 84 266 99)(font "Arial" )) + (text "Clk " (rect 59 111 83 126)(font "Arial" )) + (text "Ratio" (rect 86 111 120 126)(font "Arial" )) + (text "Ph (dg)" (rect 121 111 168 126)(font "Arial" )) + (text "DC (%)" (rect 166 111 213 126)(font "Arial" )) + (text "c0" (rect 63 129 78 144)(font "Arial" )) + (text "2/33" (rect 88 129 116 144)(font "Arial" )) + (text "0.00" (rect 129 129 157 144)(font "Arial" )) + (text "50.00" (rect 171 129 207 144)(font "Arial" )) + (text "c1" (rect 63 147 78 162)(font "Arial" )) + (text "16/33" (rect 85 147 121 162)(font "Arial" )) + (text "0.00" (rect 129 147 157 162)(font "Arial" )) + (text "50.00" (rect 171 147 207 162)(font "Arial" )) + (text "c2" (rect 63 165 78 180)(font "Arial" )) + (text "25/33" (rect 85 165 121 180)(font "Arial" )) + (text "0.00" (rect 129 165 157 180)(font "Arial" )) + (text "50.00" (rect 171 165 207 180)(font "Arial" )) + (text "c3" (rect 63 183 78 198)(font "Arial" )) + (text "16/11" (rect 85 183 121 198)(font "Arial" )) + (text "0.00" (rect 129 183 157 198)(font "Arial" )) + (text "50.00" (rect 171 183 207 198)(font "Arial" )) + (line (pt 0 0)(pt 305 0)(line_width 1)) + (line (pt 305 0)(pt 305 233)(line_width 1)) + (line (pt 0 233)(pt 305 233)(line_width 1)) + (line (pt 0 0)(pt 0 233)(line_width 1)) + (line (pt 56 108)(pt 208 108)(line_width 1)) + (line (pt 56 125)(pt 208 125)(line_width 1)) + (line (pt 56 143)(pt 208 143)(line_width 1)) + (line (pt 56 161)(pt 208 161)(line_width 1)) + (line (pt 56 179)(pt 208 179)(line_width 1)) + (line (pt 56 197)(pt 208 197)(line_width 1)) + (line (pt 56 108)(pt 56 197)(line_width 1)) + (line (pt 82 108)(pt 82 197)(line_width 3)) + (line (pt 118 108)(pt 118 197)(line_width 3)) + (line (pt 163 108)(pt 163 197)(line_width 3)) + (line (pt 207 108)(pt 207 197)(line_width 1)) + (line (pt 48 56)(pt 272 56)(line_width 1)) + (line (pt 272 56)(pt 272 216)(line_width 1)) + (line (pt 48 216)(pt 272 216)(line_width 1)) + (line (pt 48 56)(pt 48 216)(line_width 1)) + ) +) +(symbol + (rect 440 176 768 392) + (text "altpll1" (rect 144 1 191 20)(font "Arial" (font_size 10))) + (text "inst" (rect 8 197 31 212)(font "Arial" )) + (port + (pt 0 72) + (input) + (text "inclk0" (rect 0 0 40 16)(font "Arial" (font_size 8))) + (text "inclk0" (rect 4 56 44 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 48 72)(line_width 1)) + ) + (port + (pt 328 72) + (output) + (text "c0" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c0" (rect 311 56 327 72)(font "Arial" (font_size 8))) + (line (pt 328 72)(pt 272 72)(line_width 1)) + ) + (port + (pt 328 96) + (output) + (text "c1" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c1" (rect 311 80 327 96)(font "Arial" (font_size 8))) + (line (pt 328 96)(pt 272 96)(line_width 1)) + ) + (port + (pt 328 120) + (output) + (text "c2" (rect 0 0 16 16)(font "Arial" (font_size 8))) + (text "c2" (rect 311 104 327 120)(font "Arial" (font_size 8))) + (line (pt 328 120)(pt 272 120)(line_width 1)) + ) + (port + (pt 328 144) + (output) + (text "locked" (rect 0 0 44 16)(font "Arial" (font_size 8))) + (text "locked" (rect 287 128 331 144)(font "Arial" (font_size 8))) + (line (pt 328 144)(pt 272 144)(line_width 1)) + ) + (drawing + (text "Cyclone III" (rect 253 198 319 213)(font "Arial" )) + (text "inclk0 frequency: 33.000 MHz" (rect 58 67 244 82)(font "Arial" )) + (text "Operation Mode: Src Sync Comp" (rect 58 84 266 99)(font "Arial" )) + (text "Clk " (rect 59 111 83 126)(font "Arial" )) + (text "Ratio" (rect 90 111 124 126)(font "Arial" )) + (text "Ph (dg)" (rect 128 111 175 126)(font "Arial" )) + (text "DC (%)" (rect 173 111 220 126)(font "Arial" )) + (text "c0" (rect 63 129 78 144)(font "Arial" )) + (text "1/66" (rect 92 129 120 144)(font "Arial" )) + (text "0.00" (rect 136 129 164 144)(font "Arial" )) + (text "50.00" (rect 178 129 214 144)(font "Arial" )) + (text "c1" (rect 63 147 78 162)(font "Arial" )) + (text "67/900" (rect 85 147 129 162)(font "Arial" )) + (text "0.00" (rect 136 147 164 162)(font "Arial" )) + (text "50.00" (rect 178 147 214 162)(font "Arial" )) + (text "c2" (rect 63 165 78 180)(font "Arial" )) + (text "67/90" (rect 89 165 125 180)(font "Arial" )) + (text "0.00" (rect 136 165 164 180)(font "Arial" )) + (text "50.00" (rect 178 165 214 180)(font "Arial" )) + (line (pt 0 0)(pt 329 0)(line_width 1)) + (line (pt 329 0)(pt 329 217)(line_width 1)) + (line (pt 0 217)(pt 329 217)(line_width 1)) + (line (pt 0 0)(pt 0 217)(line_width 1)) + (line (pt 56 108)(pt 215 108)(line_width 1)) + (line (pt 56 125)(pt 215 125)(line_width 1)) + (line (pt 56 143)(pt 215 143)(line_width 1)) + (line (pt 56 161)(pt 215 161)(line_width 1)) + (line (pt 56 179)(pt 215 179)(line_width 1)) + (line (pt 56 108)(pt 56 179)(line_width 1)) + (line (pt 82 108)(pt 82 179)(line_width 3)) + (line (pt 125 108)(pt 125 179)(line_width 3)) + (line (pt 170 108)(pt 170 179)(line_width 3)) + (line (pt 214 108)(pt 214 179)(line_width 1)) + (line (pt 48 56)(pt 272 56)(line_width 1)) + (line (pt 272 56)(pt 272 200)(line_width 1)) + (line (pt 48 200)(pt 272 200)(line_width 1)) + (line (pt 48 56)(pt 48 200)(line_width 1)) + ) +) +(symbol + (rect 944 416 1008 464) + (text "AND2" (rect 1 0 32 13)(font "Arial" (font_size 6))) + (text "inst25" (rect 3 37 43 52)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 26 23)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)(line_width 1)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 26 39)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)(line_width 1)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 72 31)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)(line_width 1)) + ) + (drawing + (line (pt 14 12)(pt 30 12)(line_width 1)) + (line (pt 14 37)(pt 31 37)(line_width 1)) + (line (pt 14 12)(pt 14 37)(line_width 1)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)(line_width 1)) + ) +) +(block + (rect 1264 2944 1672 3560) + (text "DSP" (rect 5 5 36 21)(font "Arial" (font_size 8))) (text "Mathias_Alles" (rect 5 602 95 617)(font "Arial" )) (block_io "CLK33M" (input)) + (block_io "MAIN_CLK" (input)) + (block_io "nFB_OE" (input)) + (block_io "nFB_WR" (input)) + (block_io "nFB_CS1" (input)) + (block_io "nFB_CS2" (input)) + (block_io "FB_SIZE0" (input)) + (block_io "FB_SIZE1" (input)) + (block_io "nFB_BURST" (input)) + (block_io "FB_ADR[31..0]" (input)) + (block_io "nRSTO" (input)) + (block_io "nFB_CS3" (input)) + (block_io "nSRCS" (output)) + (block_io "nSRBLE" (output)) + (block_io "nSRBHE" (output)) + (block_io "nSRWE" (output)) + (block_io "nSROE" (output)) + (block_io "DSP_INT" (output)) + (block_io "DSP_TA" (output)) + (block_io "FB_AD[31..0]" (bidir)) + (block_io "IO[17..0]" (bidir)) + (block_io "SRD[15..0]" (bidir)) + (mapper + (pt 408 416) + (bidir) + ) + (mapper + (pt 408 392) + (bidir) + ) + (mapper + (pt 408 368) + (bidir) + ) + (mapper + (pt 408 320) + (bidir) + ) + (mapper + (pt 408 440) + (bidir) + ) + (mapper + (pt 408 344) + (bidir) + ) + (mapper + (pt 408 296) + (bidir) + ) + (mapper + (pt 408 40) + (bidir) + ) + (mapper + (pt 0 56) + (bidir) + ) + (mapper + (pt 0 80) + (bidir) + ) + (mapper + (pt 0 104) + (bidir) + ) + (mapper + (pt 0 128) + (bidir) + ) + (mapper + (pt 0 152) + (bidir) + ) + (mapper + (pt 0 176) + (bidir) + ) + (mapper + (pt 0 248) + (bidir) + ) + (mapper + (pt 0 224) + (bidir) + ) + (mapper + (pt 0 272) + (bidir) + ) + (mapper + (pt 0 296) + (bidir) + ) + (mapper + (pt 408 72) + (bidir) + ) + (mapper + (pt 408 576) + (bidir) + ) + (mapper + (pt 0 320) + (bidir) + ) + (mapper + (pt 0 200) + (bidir) + ) +) +(block + (rect 1264 2344 1672 2904) + (text "interrupt_handler" (rect 5 5 118 21)(font "Arial" (font_size 8))) (text "nobody" (rect 5 546 52 561)(font "Arial" )) (block_io "MAIN_CLK" (input)) + (block_io "nFB_WR" (input)) + (block_io "nFB_CS1" (input)) + (block_io "nFB_CS2" (input)) + (block_io "FB_SIZE0" (input)) + (block_io "FB_SIZE1" (input)) + (block_io "FB_ADR[31..0]" (input)) + (block_io "PIC_INT" (input)) + (block_io "E0_INT" (input)) + (block_io "DVI_INT" (input)) + (block_io "nPCI_INTA" (input)) + (block_io "nPCI_INTB" (input)) + (block_io "nPCI_INTC" (input)) + (block_io "nPCI_INTD" (input)) + (block_io "nMFP_INT" (input)) + (block_io "nFB_OE" (input)) + (block_io "DSP_INT" (input)) + (block_io "VSYNC" (input)) + (block_io "HSYNC" (input)) + (block_io "DMA_DRQ" (input)) + (block_io "nIRQ[7..2]" (output)) + (block_io "INT_HANDLER_TA" (output)) + (block_io "ACP_CONF[31..0]" (output)) + (block_io "TIN0" (output)) + (block_io "FB_AD[31..0]" (bidir)) + (mapper + (pt 0 136) + (bidir) + ) + (mapper + (pt 0 160) + (bidir) + ) + (mapper + (pt 0 184) + (bidir) + ) + (mapper + (pt 0 88) + (bidir) + ) + (mapper + (pt 0 112) + (bidir) + ) + (mapper + (pt 0 40) + (bidir) + ) + (mapper + (pt 408 56) + (bidir) + ) + (mapper + (pt 408 80) + (bidir) + ) + (mapper + (pt 0 256) + (bidir) + ) + (mapper + (pt 0 280) + (bidir) + ) + (mapper + (pt 0 304) + (bidir) + ) + (mapper + (pt 0 208) + (bidir) + ) + (mapper + (pt 0 64) + (bidir) + ) + (mapper + (pt 0 376) + (bidir) + ) + (mapper + (pt 0 400) + (bidir) + ) + (mapper + (pt 0 328) + (bidir) + ) + (mapper + (pt 0 352) + (bidir) + ) + (mapper + (pt 0 432) + (bidir) + ) + (mapper + (pt 0 456) + (bidir) + ) + (mapper + (pt 0 480) + (bidir) + ) + (mapper + (pt 0 504) + (bidir) + ) + (mapper + (pt 408 504) + (bidir) + ) + (mapper + (pt 0 528) + (bidir) + ) + (mapper + (pt 408 240) + (bidir) + ) + (mapper + (pt 408 296) + (bidir) + ) +) +(block + (rect 1264 744 1672 2264) + (text "FalconIO_SDCard_IDE_CF" (rect 5 5 189 21)(font "Arial" (font_size 8))) (text "Wolfgang_Foerster_and_Fredi_Aschwanden" (rect 5 1506 295 1521)(font "Arial" )) (block_io "CLK33M" (input)) + (block_io "MAIN_CLK" (input)) + (block_io "CLK2M" (input)) + (block_io "CLK500k" (input)) + (block_io "nFB_CS1" (input)) + (block_io "FB_SIZE0" (input)) + (block_io "FB_SIZE1" (input)) + (block_io "nFB_BURST" (input)) + (block_io "FB_ADR[31..0]" (input)) + (block_io "LP_BUSY" (input)) + (block_io "nACSI_DRQ" (input)) + (block_io "nACSI_INT" (input)) + (block_io "nSCSI_DRQ" (input)) + (block_io "nSCSI_MSG" (input)) + (block_io "MIDI_IN" (input)) + (block_io "RxD" (input)) + (block_io "CTS" (input)) + (block_io "RI" (input)) + (block_io "DCD" (input)) + (block_io "AMKB_RX" (input)) + (block_io "PIC_AMKB_RX" (input)) + (block_io "IDE_RDY" (input)) + (block_io "IDE_INT" (input)) + (block_io "WP_CS_CARD" (input)) + (block_io "nINDEX" (input)) + (block_io "TRACK00" (input)) + (block_io "nRD_DATA" (input)) + (block_io "nDCHG" (input)) + (block_io "SD_DATA0" (input)) + (block_io "SD_DATA1" (input)) + (block_io "SD_DATA2" (input)) + (block_io "SD_CARD_DEDECT" (input)) + (block_io "SD_WP" (input)) + (block_io "nDACK0" (input)) + (block_io "nFB_WR" (input)) + (block_io "WP_CF_CARD" (input)) + (block_io "nWP" (input)) + (block_io "nFB_CS2" (input)) + (block_io "nRSTO" (input)) + (block_io "nSCSI_C_D" (input)) + (block_io "nSCSI_I_O" (input)) + (block_io "CLK2M4576" (input)) + (block_io "nFB_OE" (input)) + (block_io "VSYNC" (input)) + (block_io "HSYNC" (input)) + (block_io "DSP_INT" (input)) + (block_io "nBLANK" (input)) + (block_io "FDC_CLK" (input)) + (block_io "FB_ALE" (input)) + (block_io "ACP_CONF[31..24]" (input)) + (block_io "HD_DD" (input)) + (block_io "nIDE_CS1" (output)) + (block_io "nIDE_CS0" (output)) + (block_io "LP_STR" (output)) + (block_io "LP_DIR" (output)) + (block_io "nACSI_ACK" (output)) + (block_io "nACSI_RESET" (output)) + (block_io "nACSI_CS" (output)) + (block_io "ACSI_DIR" (output)) + (block_io "ACSI_A1" (output)) + (block_io "nSCSI_ACK" (output)) + (block_io "nSCSI_ATN" (output)) + (block_io "SCSI_DIR" (output)) + (block_io "SD_CLK" (output)) + (block_io "YM_QA" (output)) + (block_io "YM_QC" (output)) + (block_io "YM_QB" (output)) + (block_io "nSDSEL" (output)) + (block_io "STEP" (output)) + (block_io "MOT_ON" (output)) + (block_io "nRP_LDS" (output)) + (block_io "nRP_UDS" (output)) + (block_io "nROM4" (output)) + (block_io "nROM3" (output)) + (block_io "nCF_CS1" (output)) + (block_io "nCF_CS0" (output)) + (block_io "nIDE_RD" (output)) + (block_io "nIDE_WR" (output)) + (block_io "AMKB_TX" (output)) + (block_io "IDE_RES" (output)) + (block_io "DTR" (output)) + (block_io "RTS" (output)) + (block_io "TxD" (output)) + (block_io "MIDI_OLR" (output)) + (block_io "MIDI_TLR" (output)) + (block_io "nDREQ0" (output)) + (block_io "DSA_D" (output)) + (block_io "nMFP_INT" (output)) + (block_io "FALCON_IO_TA" (output)) + (block_io "STEP_DIR" (output)) + (block_io "WR_DATA" (output)) + (block_io "WR_GATE" (output)) + (block_io "DMA_DRQ" (output)) + (block_io "FB_AD[31..0]" (bidir)) + (block_io "LP_D[7..0]" (bidir)) + (block_io "ACSI_D[7..0]" (bidir)) + (block_io "SCSI_D[7..0]" (bidir)) + (block_io "SCSI_PAR" (bidir)) + (block_io "nSCSI_SEL" (bidir)) + (block_io "nSCSI_BUSY" (bidir)) + (block_io "nSCSI_RST" (bidir)) + (block_io "SD_CD_DATA3" (bidir)) + (block_io "SD_CDM_D1" (bidir)) + (mapper + (pt 0 128) + (bidir) + ) + (mapper + (pt 0 104) + (bidir) + ) + (mapper + (pt 0 56) + (bidir) + ) + (mapper + (pt 0 80) + (bidir) + ) + (mapper + (pt 0 224) + (bidir) + ) + (mapper + (pt 0 248) + (bidir) + ) + (mapper + (pt 0 272) + (bidir) + ) + (mapper + (pt 408 96) + (bidir) + ) + (mapper + (pt 408 120) + (bidir) + ) + (mapper + (pt 408 72) + (bidir) + ) + (mapper + (pt 408 152) + (bidir) + ) + (mapper + (pt 408 200) + (bidir) + ) + (mapper + (pt 408 224) + (bidir) + ) + (mapper + (pt 408 248) + (bidir) + ) + (mapper + (pt 408 272) + (bidir) + ) + (mapper + (pt 408 296) + (bidir) + ) + (mapper + (pt 408 424) + (bidir) + ) + (mapper + (pt 408 352) + (bidir) + ) + (mapper + (pt 408 328) + (bidir) + ) + (mapper + (pt 408 448) + (bidir) + ) + (mapper + (pt 408 400) + (bidir) + ) + (mapper + (pt 408 376) + (bidir) + ) + (mapper + (pt 408 472) + (bidir) + ) + (mapper + (pt 408 496) + (bidir) + ) + (mapper + (pt 408 608) + (bidir) + ) + (mapper + (pt 408 632) + (bidir) + ) + (mapper + (pt 408 528) + (bidir) + ) + (mapper + (pt 408 552) + (bidir) + ) + (mapper + (pt 408 584) + (bidir) + ) + (mapper + (pt 0 624) + (bidir) + ) + (mapper + (pt 0 656) + (bidir) + ) + (mapper + (pt 0 680) + (bidir) + ) + (mapper + (pt 0 704) + (bidir) + ) + (mapper + (pt 0 728) + (bidir) + ) + (mapper + (pt 0 752) + (bidir) + ) + (mapper + (pt 0 776) + (bidir) + ) + (mapper + (pt 408 664) + (bidir) + ) + (mapper + (pt 0 808) + (bidir) + ) + (mapper + (pt 0 832) + (bidir) + ) + (mapper + (pt 408 696) + (bidir) + ) + (mapper + (pt 408 720) + (bidir) + ) + (mapper + (pt 408 744) + (bidir) + ) + (mapper + (pt 408 768) + (bidir) + ) + (mapper + (pt 408 792) + (bidir) + ) + (mapper + (pt 408 816) + (bidir) + ) + (mapper + (pt 408 840) + (bidir) + ) + (mapper + (pt 0 856) + (bidir) + ) + (mapper + (pt 408 872) + (bidir) + ) + (mapper + (pt 408 896) + (bidir) + ) + (mapper + (pt 408 920) + (bidir) + ) + (mapper + (pt 408 944) + (bidir) + ) + (mapper + (pt 0 912) + (bidir) + ) + (mapper + (pt 0 936) + (bidir) + ) + (mapper + (pt 0 960) + (bidir) + ) + (mapper + (pt 0 984) + (bidir) + ) + (mapper + (pt 0 1008) + (bidir) + ) + (mapper + (pt 408 976) + (bidir) + ) + (mapper + (pt 408 1000) + (bidir) + ) + (mapper + (pt 408 1072) + (bidir) + ) + (mapper + (pt 408 1096) + (bidir) + ) + (mapper + (pt 408 1176) + (bidir) + ) + (mapper + (pt 0 296) + (bidir) + ) + (mapper + (pt 408 1256) + (bidir) + ) + (mapper + (pt 0 1040) + (bidir) + ) + (mapper + (pt 0 1064) + (bidir) + ) + (mapper + (pt 0 1088) + (bidir) + ) + (mapper + (pt 0 1112) + (bidir) + ) + (mapper + (pt 0 1136) + (bidir) + ) + (mapper + (pt 0 432) + (bidir) + ) + (mapper + (pt 0 464) + (bidir) + ) + (mapper + (pt 0 488) + (bidir) + ) + (mapper + (pt 0 520) + (bidir) + ) + (mapper + (pt 0 544) + (bidir) + ) + (mapper + (pt 0 568) + (bidir) + ) + (mapper + (pt 0 592) + (bidir) + ) + (mapper + (pt 408 1424) + (bidir) + ) + (mapper + (pt 0 320) + (bidir) + ) + (mapper + (pt 0 200) + (bidir) + ) + (mapper + (pt 0 344) + (bidir) + ) + (mapper + (pt 0 1168) + (bidir) + ) + (mapper + (pt 0 1192) + (bidir) + ) + (mapper + (pt 0 368) + (bidir) + ) + (mapper + (pt 0 392) + (bidir) + ) + (mapper + (pt 0 176) + (bidir) + ) + (mapper + (pt 0 1216) + (bidir) + ) + (mapper + (pt 408 48) + (bidir) + ) + (mapper + (pt 408 16) + (bidir) + ) + (mapper + (pt 0 1240) + (bidir) + ) + (mapper + (pt 408 1304) + (bidir) + ) + (mapper + (pt 408 1200) + (bidir) + ) + (mapper + (pt 408 1344) + (bidir) + ) + (mapper + (pt 408 1280) + (bidir) + ) + (mapper + (pt 408 1224) + (bidir) + ) + (mapper + (pt 408 1120) + (bidir) + ) + (mapper + (pt 408 1048) + (bidir) + ) + (mapper + (pt 408 1024) + (bidir) + ) + (mapper + (pt 0 32) + (bidir) + ) + (mapper + (pt 0 152) + (bidir) + ) + (mapper + (pt 408 1368) + (bidir) + ) + (mapper + (pt 0 1264) + (bidir) + ) + (mapper + (pt 0 1336) + (bidir) + ) + (mapper + (pt 0 888) + (bidir) + ) +) +(block + (rect 1264 -48 1672 728) + (text "Video" (rect 5 5 43 21)(font "Arial" (font_size 8))) (text "Fredi_Aschwanden" (rect 5 762 130 777)(font "Arial" )) (block_io "FB_ADR[31..0]" (input)) + (block_io "MAIN_CLK" (input)) + (block_io "nFB_CS1" (input)) + (block_io "nFB_CS2" (input)) + (block_io "nFB_CS3" (input)) + (block_io "nFB_WR" (input)) + (block_io "FB_SIZE0" (input)) + (block_io "FB_SIZE1" (input)) + (block_io "nRSTO" (input)) + (block_io "nFB_OE" (input)) + (block_io "FB_ALE" (input)) + (block_io "DDRCLK[3..0]" (input)) + (block_io "DDR_SYNC_66M" (input)) + (block_io "CLK33M" (input)) + (block_io "CLK25M" (input)) + (block_io "CLK_VIDEO" (input)) + (block_io "VR_D[8..0]" (input)) + (block_io "VR_BUSY" (input)) + (block_io "VR_RD" (output)) + (block_io "VG[7..0]" (output)) + (block_io "VB[7..0]" (output)) + (block_io "VR[7..0]" (output)) + (block_io "nBLANK" (output)) + (block_io "VA[12..0]" (output)) + (block_io "nVWE" (output)) + (block_io "nVCAS" (output)) + (block_io "nVRAS" (output)) + (block_io "nVCS" (output)) + (block_io "VDM[3..0]" (output)) + (block_io "nPD_VGA" (output)) + (block_io "VCKE" (output)) + (block_io "VSYNC" (output)) + (block_io "HSYNC" (output)) + (block_io "nSYNC" (output)) + (block_io "VIDEO_TA" (output)) + (block_io "PIXEL_CLK" (output)) + (block_io "BA[1..0]" (output)) + (block_io "VIDEO_RECONFIG" (output)) + (block_io "VR_WR" (output)) + (block_io "VDQS[3..0]" (bidir)) + (block_io "FB_AD[31..0]" (bidir)) + (block_io "VD[31..0]" (bidir)) + (mapper + (pt 408 448) + (bidir) + ) + (mapper + (pt 408 496) + (bidir) + ) + (mapper + (pt 408 592) + (bidir) + ) + (mapper + (pt 408 352) + (bidir) + ) + (mapper + (pt 408 760) + (bidir) + ) + (mapper + (pt 408 72) + (bidir) + ) + (mapper + (pt 0 392) + (bidir) + ) + (mapper + (pt 0 248) + (bidir) + ) + (mapper + (pt 0 272) + (bidir) + ) + (mapper + (pt 0 320) + (bidir) + ) + (mapper + (pt 0 344) + (bidir) + ) + (mapper + (pt 0 152) + (bidir) + ) + (mapper + (pt 0 104) + (bidir) + ) + (mapper + (pt 0 296) + (bidir) + ) + (mapper + (pt 408 128) + (bidir) + ) + (mapper + (pt 408 152) + (bidir) + ) + (mapper + (pt 408 176) + (bidir) + ) + (mapper + (pt 408 200) + (bidir) + ) + (mapper + (pt 408 224) + (bidir) + ) + (mapper + (pt 408 248) + (bidir) + ) + (mapper + (pt 408 272) + (bidir) + ) + (mapper + (pt 408 296) + (bidir) + ) + (mapper + (pt 0 416) + (bidir) + ) + (mapper + (pt 408 320) + (bidir) + ) + (mapper + (pt 408 472) + (bidir) + ) + (mapper + (pt 408 424) + (bidir) + ) + (mapper + (pt 408 400) + (bidir) + ) + (mapper + (pt 408 376) + (bidir) + ) + (mapper + (pt 0 224) + (bidir) + ) + (mapper + (pt 0 368) + (bidir) + ) + (mapper + (pt 0 200) + (bidir) + ) + (mapper + (pt 0 176) + (bidir) + ) + (mapper + (pt 408 568) + (bidir) + ) + (mapper + (pt 408 520) + (bidir) + ) + (mapper + (pt 0 648) + (bidir) + ) + (mapper + (pt 0 672) + (bidir) + ) + (mapper + (pt 0 616) + (bidir) + ) + (mapper + (pt 0 528) + (bidir) + ) + (mapper + (pt 408 656) + (bidir) + ) + (mapper + (pt 408 640) + (bidir) + ) + (mapper + (pt 408 624) + (bidir) + ) + (mapper + (pt 0 512) + (bidir) + ) +) +(connector + (text "FB_AD[31..0]" (rect 1682 776 1765 791)(font "Arial" )) + (pt 1832 792) + (pt 1672 792) + (bus) +) +(connector + (text "FB_ADR[31..0]" (rect 1146 1072 1240 1087)(font "Arial" )) + (pt 1112 1088) + (pt 1264 1088) + (bus) +) +(connector + (text "MAIN_CLK" (rect 1162 784 1231 799)(font "Arial" )) + (pt 1152 800) + (pt 1264 800) +) +(connector + (text "CLK33M" (rect 1210 760 1265 775)(font "Arial" )) + (pt 1200 776) + (pt 1264 776) +) +(connector + (text "CLK2M" (rect 1202 808 1249 823)(font "Arial" )) + (pt 1192 824) + (pt 1264 824) +) +(connector + (text "CLK500k" (rect 1202 832 1262 847)(font "Arial" )) + (pt 1192 848) + (pt 1264 848) +) +(connector + (text "LP_DIR" (rect 1682 848 1732 863)(font "Arial" )) + (pt 1672 864) + (pt 1832 864) +) +(connector + (text "LP_STR" (rect 1682 824 1736 839)(font "Arial" )) + (pt 1672 840) + (pt 1832 840) +) +(connector + (text "nACSI_ACK" (rect 1682 928 1758 943)(font "Arial" )) + (pt 1672 944) + (pt 1832 944) +) +(connector + (text "nACSI_RESET" (rect 1682 952 1777 967)(font "Arial" )) + (pt 1672 968) + (pt 1832 968) +) +(connector + (text "nACSI_CS" (rect 1682 976 1750 991)(font "Arial" )) + (pt 1672 992) + (pt 1832 992) +) +(connector + (text "ACSI_DIR" (rect 1682 1000 1746 1015)(font "Arial" )) + (pt 1672 1016) + (pt 1832 1016) +) +(connector + (text "ACSI_A1" (rect 1682 1024 1738 1039)(font "Arial" )) + (pt 1672 1040) + (pt 1832 1040) +) +(connector + (text "nSCSI_ATN" (rect 1682 1128 1758 1143)(font "Arial" )) + (pt 1672 1144) + (pt 1840 1144) +) +(connector + (text "SCSI_DIR" (rect 1682 1152 1748 1167)(font "Arial" )) + (pt 1672 1168) + (pt 1840 1168) +) +(connector + (text "nSCSI_DRQ" (rect 1114 1248 1195 1263)(font "Arial" )) + (pt 1264 1264) + (pt 1104 1264) +) +(connector + (text "nSCSI_MSG" (rect 1114 1320 1194 1335)(font "Arial" )) + (pt 1104 1336) + (pt 1264 1336) +) +(connector + (text "nSCSI_RST" (rect 1682 1176 1759 1191)(font "Arial" )) + (pt 1672 1192) + (pt 1840 1192) +) +(connector + (text "nSCSI_SEL" (rect 1680 1200 1756 1215)(font "Arial" )) + (pt 1672 1216) + (pt 1840 1216) +) +(connector + (text "nSCSI_BUSY" (rect 1682 1224 1769 1239)(font "Arial" )) + (pt 1672 1240) + (pt 1840 1240) +) +(connector + (text "TxD" (rect 1682 1312 1706 1327)(font "Arial" )) + (pt 1672 1328) + (pt 1840 1328) +) +(connector + (text "RTS" (rect 1682 1336 1710 1351)(font "Arial" )) + (pt 1672 1352) + (pt 1840 1352) +) +(connector + (text "DTR" (rect 1680 1360 1709 1375)(font "Arial" )) + (pt 1672 1376) + (pt 1848 1376) +) +(connector + (text "CTS" (rect 1114 1408 1142 1423)(font "Arial" )) + (pt 1104 1424) + (pt 1264 1424) +) +(connector + (text "RI" (rect 1114 1432 1128 1447)(font "Arial" )) + (pt 1104 1448) + (pt 1264 1448) +) +(connector + (text "DCD" (rect 1114 1456 1145 1471)(font "Arial" )) + (pt 1104 1472) + (pt 1264 1472) +) +(connector + (text "IDE_RDY" (rect 1114 1536 1175 1551)(font "Arial" )) + (pt 1264 1552) + (pt 1104 1552) +) +(connector + (text "IDE_INT" (rect 1114 1560 1168 1575)(font "Arial" )) + (pt 1104 1576) + (pt 1264 1576) +) +(connector + (text "IDE_RES" (rect 1682 1424 1743 1439)(font "Arial" )) + (pt 1672 1440) + (pt 1848 1440) +) +(connector + (text "nIDE_CS0" (rect 1682 1448 1750 1463)(font "Arial" )) + (pt 1672 1464) + (pt 1848 1464) +) +(connector + (text "nIDE_CS1" (rect 1682 1472 1750 1487)(font "Arial" )) + (pt 1672 1488) + (pt 1856 1488) +) +(connector + (text "nIDE_WR" (rect 1682 1496 1745 1511)(font "Arial" )) + (pt 1672 1512) + (pt 1848 1512) +) +(connector + (text "nIDE_RD" (rect 1682 1520 1743 1535)(font "Arial" )) + (pt 1672 1536) + (pt 1848 1536) +) +(connector + (text "nCF_CS0" (rect 1682 1544 1745 1559)(font "Arial" )) + (pt 1672 1560) + (pt 1848 1560) +) +(connector + (text "nCF_CS1" (rect 1682 1568 1745 1583)(font "Arial" )) + (pt 1672 1584) + (pt 1848 1584) +) +(connector + (text "WP_CF_CARD" (rect 1112 1584 1209 1599)(font "Arial" )) + (pt 1104 1600) + (pt 1264 1600) +) +(connector + (text "nSDSEL" (rect 1682 1848 1737 1863)(font "Arial" )) + (pt 1672 1864) + (pt 1856 1864) +) +(connector + (text "nDREQ0" (rect 1682 2152 1739 2167)(font "Arial" )) + (pt 1672 2168) + (pt 1856 2168) +) +(connector + (text "SD_CLK" (rect 1682 2032 1738 2047)(font "Arial" )) + (pt 1856 2048) + (pt 1672 2048) +) +(connector + (text "SD_DATA0" (rect 1114 1768 1185 1783)(font "Arial" )) + (pt 1104 1784) + (pt 1264 1784) +) +(connector + (text "SD_DATA1" (rect 1114 1792 1185 1807)(font "Arial" )) + (pt 1104 1808) + (pt 1264 1808) +) +(connector + (text "SD_DATA2" (rect 1114 1816 1185 1831)(font "Arial" )) + (pt 1104 1832) + (pt 1264 1832) +) +(connector + (text "SD_WP" (rect 1114 1864 1164 1879)(font "Arial" )) + (pt 1104 1880) + (pt 1264 1880) +) +(connector + (text "FB_ADR[31..0]" (rect 1146 2536 1240 2551)(font "Arial" )) + (pt 1112 2552) + (pt 1264 2552) + (bus) +) +(connector + (text "nFB_WR" (rect 1162 2416 1219 2431)(font "Arial" )) + (pt 1152 2432) + (pt 1264 2432) +) +(connector + (text "nFB_CS1" (rect 1154 2440 1216 2455)(font "Arial" )) + (pt 1152 2456) + (pt 1264 2456) +) +(connector + (text "FB_SIZE0" (rect 1154 2488 1218 2503)(font "Arial" )) + (pt 1152 2504) + (pt 1264 2504) +) +(connector + (text "FB_SIZE1" (rect 1154 2512 1218 2527)(font "Arial" )) + (pt 1152 2528) + (pt 1264 2528) +) +(connector + (text "MAIN_CLK" (rect 1162 2368 1231 2383)(font "Arial" )) + (pt 1152 2384) + (pt 1264 2384) +) +(connector + (text "nFB_CS2" (rect 1162 2464 1224 2479)(font "Arial" )) + (pt 1152 2480) + (pt 1264 2480) +) +(connector + (text "FB_AD[31..0]" (rect 1682 2384 1765 2399)(font "Arial" )) + (pt 1832 2400) + (pt 1672 2400) + (bus) +) +(connector + (text "nSCSI_ACK" (rect 1682 1104 1759 1119)(font "Arial" )) + (pt 1672 1120) + (pt 1840 1120) +) +(connector + (text "SCSI_PAR" (rect 1682 1080 1751 1095)(font "Arial" )) + (pt 1672 1096) + (pt 1840 1096) +) +(connector + (text "MIDI_OLR" (rect 1762 1256 1828 1271)(font "Arial" )) + (pt 1672 1272) + (pt 1920 1272) +) +(connector + (text "MIDI_TLR" (rect 1770 1280 1833 1295)(font "Arial" )) + (pt 1672 1296) + (pt 1920 1296) +) +(connector + (text "nROM3" (rect 1754 1600 1802 1615)(font "Arial" )) + (pt 1672 1616) + (pt 1920 1616) +) +(connector + (text "nROM4" (rect 1754 1624 1802 1639)(font "Arial" )) + (pt 1672 1640) + (pt 1920 1640) +) +(connector + (text "nRP_UDS" (rect 1744 1648 1811 1663)(font "Arial" )) + (pt 1672 1664) + (pt 1920 1664) +) +(connector + (text "nRP_LDS" (rect 1746 1672 1810 1687)(font "Arial" )) + (pt 1672 1688) + (pt 1920 1688) +) +(connector + (text "YM_QA" (rect 1762 1904 1808 1919)(font "Arial" )) + (pt 1672 1920) + (pt 1928 1920) +) +(connector + (text "YM_QB" (rect 1762 1928 1809 1943)(font "Arial" )) + (pt 1672 1944) + (pt 1928 1944) +) +(connector + (text "YM_QC" (rect 1762 1952 1810 1967)(font "Arial" )) + (pt 1672 1968) + (pt 1928 1968) +) +(connector + (text "LP_BUSY" (rect 1114 1160 1177 1175)(font "Arial" )) + (pt 1264 1176) + (pt 1104 1176) +) +(connector + (text "nACSI_DRQ" (rect 1034 1192 1114 1207)(font "Arial" )) + (pt 1024 1208) + (pt 1264 1208) +) +(connector + (text "nACSI_INT" (rect 1034 1216 1104 1231)(font "Arial" )) + (pt 1024 1232) + (pt 1264 1232) +) +(connector + (text "MIDI_IN" (rect 1050 1352 1100 1367)(font "Arial" )) + (pt 1040 1368) + (pt 1264 1368) +) +(connector + (text "RxD" (rect 1114 1384 1141 1399)(font "Arial" )) + (pt 1264 1400) + (pt 1104 1400) +) +(connector + (text "nINDEX" (rect 1050 1640 1100 1655)(font "Arial" )) + (pt 1040 1656) + (pt 1264 1656) +) +(connector + (text "TRACK00" (rect 1050 1664 1113 1679)(font "Arial" )) + (pt 1040 1680) + (pt 1264 1680) +) +(connector + (text "nWP" (rect 1050 1688 1080 1703)(font "Arial" )) + (pt 1040 1704) + (pt 1264 1704) +) +(connector + (text "nRD_DATA" (rect 1050 1712 1123 1727)(font "Arial" )) + (pt 1040 1728) + (pt 1264 1728) +) +(connector + (text "nDCHG" (rect 1050 1736 1100 1751)(font "Arial" )) + (pt 1040 1752) + (pt 1264 1752) +) +(connector + (text "SD_CARD_DEDECT" (rect 1138 1840 1273 1855)(font "Arial" )) + (pt 1264 1856) + (pt 1128 1856) +) +(connector + (text "SD_CD_DATA3" (rect 1682 1984 1783 1999)(font "Arial" )) + (pt 1672 2000) + (pt 1856 2000) +) +(connector + (text "SD_CDM_D1" (rect 1682 2008 1769 2023)(font "Arial" )) + (pt 1672 2024) + (pt 1856 2024) +) +(connector + (text "nSCSI_C_D" (rect 1114 1272 1193 1287)(font "Arial" )) + (pt 1104 1288) + (pt 1264 1288) +) +(connector + (text "nSCSI_I_O" (rect 1114 1296 1185 1311)(font "Arial" )) + (pt 1104 1312) + (pt 1264 1312) +) +(connector + (text "DSA_D" (rect 1682 1704 1729 1719)(font "Arial" )) + (pt 1672 1720) + (pt 1856 1720) +) +(connector + (text "FB_AD[31..0]" (rect 1682 8 1765 23)(font "Arial" )) + (pt 1832 24) + (pt 1672 24) + (bus) +) +(connector + (text "FB_ADR[31..0]" (rect 1146 328 1240 343)(font "Arial" )) + (pt 1112 344) + (pt 1264 344) + (bus) +) +(connector + (text "nFB_WR" (rect 1162 184 1219 199)(font "Arial" )) + (pt 1152 200) + (pt 1264 200) +) +(connector + (text "nFB_CS1" (rect 1154 208 1216 223)(font "Arial" )) + (pt 1152 224) + (pt 1264 224) +) +(connector + (text "FB_SIZE0" (rect 1154 256 1218 271)(font "Arial" )) + (pt 1152 272) + (pt 1264 272) +) +(connector + (text "FB_SIZE1" (rect 1154 280 1218 295)(font "Arial" )) + (pt 1152 296) + (pt 1264 296) +) +(connector + (text "nFB_CS2" (rect 1162 232 1224 247)(font "Arial" )) + (pt 1152 248) + (pt 1264 248) +) +(connector + (text "nBLANK" (rect 1682 184 1736 199)(font "Arial" )) + (pt 1672 200) + (pt 1832 200) +) +(connector + (text "nSYNC" (rect 1682 208 1729 223)(font "Arial" )) + (pt 1672 224) + (pt 1832 224) +) +(connector + (text "nFB_CS3" (rect 1186 352 1248 367)(font "Arial" )) + (pt 1264 368) + (pt 1176 368) +) +(connector + (text "nFB_WR" (rect 1170 928 1227 943)(font "Arial" )) + (pt 1264 944) + (pt 1160 944) +) +(connector + (text "nFB_CS1" (rect 1162 952 1224 967)(font "Arial" )) + (pt 1264 968) + (pt 1160 968) +) +(connector + (text "nFB_CS2" (rect 1170 976 1232 991)(font "Arial" )) + (pt 1264 992) + (pt 1160 992) +) +(connector + (text "FB_SIZE0" (rect 1162 1000 1226 1015)(font "Arial" )) + (pt 1264 1016) + (pt 1160 1016) +) +(connector + (text "FB_SIZE1" (rect 1162 1024 1226 1039)(font "Arial" )) + (pt 1264 1040) + (pt 1160 1040) +) +(connector + (text "nFB_BURST" (rect 1162 1048 1244 1063)(font "Arial" )) + (pt 1264 1064) + (pt 1160 1064) +) +(connector + (text "nDACK0" (rect 1250 1096 1305 1111)(font "Arial" )) + (pt 1264 1112) + (pt 1160 1112) +) +(connector + (text "nRSTO" (rect 1170 1120 1217 1135)(font "Arial" )) + (pt 1264 1136) + (pt 1160 1136) +) +(connector + (text "nPD_VGA" (rect 1682 256 1745 271)(font "Arial" )) + (pt 1672 272) + (pt 1832 272) +) +(connector + (text "PIC_INT" (rect 1162 2584 1216 2599)(font "Arial" )) + (pt 1152 2600) + (pt 1264 2600) +) +(connector + (text "nIRQ[7..2]" (rect 1682 2408 1745 2423)(font "Arial" )) + (pt 1672 2424) + (pt 1832 2424) + (bus) +) +(connector + (text "CLK2M4576" (rect 1202 856 1282 871)(font "Arial" )) + (pt 1192 872) + (pt 1264 872) +) +(connector + (text "nFB_OE" (rect 1170 904 1224 919)(font "Arial" )) + (pt 1264 920) + (pt 1160 920) +) +(connector + (text "nFB_OE" (rect 1170 160 1224 175)(font "Arial" )) + (pt 1264 176) + (pt 1160 176) +) +(connector + (text "nFB_OE" (rect 1170 2392 1224 2407)(font "Arial" )) + (pt 1264 2408) + (pt 1160 2408) +) +(connector + (text "DVI_INT" (rect 1162 2632 1215 2647)(font "Arial" )) + (pt 1152 2648) + (pt 1264 2648) +) +(connector + (text "nPCI_INTA" (rect 1162 2728 1232 2743)(font "Arial" )) + (pt 1152 2744) + (pt 1264 2744) +) +(connector + (text "nPCI_INTB" (rect 1162 2704 1233 2719)(font "Arial" )) + (pt 1152 2720) + (pt 1264 2720) +) +(connector + (text "nPCI_INTC" (rect 1162 2680 1235 2695)(font "Arial" )) + (pt 1152 2696) + (pt 1264 2696) +) +(connector + (text "nPCI_INTD" (rect 1162 2656 1235 2671)(font "Arial" )) + (pt 1152 2672) + (pt 1264 2672) +) +(connector + (text "nMFP_INT" (rect 1162 2760 1229 2775)(font "Arial" )) + (pt 1152 2776) + (pt 1264 2776) +) +(connector + (text "nMFP_INT" (rect 1682 2072 1749 2087)(font "Arial" )) + (pt 1672 2088) + (pt 1784 2088) +) +(connector + (text "E0_INT" (rect 1162 2608 1210 2623)(font "Arial" )) + (pt 1152 2624) + (pt 1264 2624) +) +(connector + (text "FB_AD[31..0]" (rect 1682 2968 1765 2983)(font "Arial" )) + (pt 1832 2984) + (pt 1672 2984) + (bus) +) +(connector + (text "FB_ADR[31..0]" (rect 1146 3224 1240 3239)(font "Arial" )) + (pt 1112 3240) + (pt 1264 3240) + (bus) +) +(connector + (text "MAIN_CLK" (rect 1162 3008 1231 3023)(font "Arial" )) + (pt 1152 3024) + (pt 1264 3024) +) +(connector + (text "CLK33M" (rect 1210 2984 1265 2999)(font "Arial" )) + (pt 1200 3000) + (pt 1264 3000) +) +(connector + (text "nFB_WR" (rect 1170 3056 1227 3071)(font "Arial" )) + (pt 1264 3072) + (pt 1160 3072) +) +(connector + (text "nFB_CS1" (rect 1162 3080 1224 3095)(font "Arial" )) + (pt 1264 3096) + (pt 1160 3096) +) +(connector + (text "nFB_CS2" (rect 1170 3104 1232 3119)(font "Arial" )) + (pt 1264 3120) + (pt 1160 3120) +) +(connector + (text "FB_SIZE0" (rect 1162 3152 1226 3167)(font "Arial" )) + (pt 1264 3168) + (pt 1160 3168) +) +(connector + (text "FB_SIZE1" (rect 1162 3176 1226 3191)(font "Arial" )) + (pt 1264 3192) + (pt 1160 3192) +) +(connector + (text "nFB_BURST" (rect 1162 3200 1244 3215)(font "Arial" )) + (pt 1264 3216) + (pt 1160 3216) +) +(connector + (text "nRSTO" (rect 1170 3248 1217 3263)(font "Arial" )) + (pt 1264 3264) + (pt 1160 3264) +) +(connector + (text "nFB_OE" (rect 1170 3032 1224 3047)(font "Arial" )) + (pt 1264 3048) + (pt 1160 3048) +) +(connector + (text "nSRCS" (rect 1682 3272 1730 3287)(font "Arial" )) + (pt 1824 3288) + (pt 1672 3288) +) +(connector + (text "nSRBLE" (rect 1682 3296 1737 3311)(font "Arial" )) + (pt 1824 3312) + (pt 1672 3312) +) +(connector + (text "nSRBHE" (rect 1682 3320 1739 3335)(font "Arial" )) + (pt 1824 3336) + (pt 1672 3336) +) +(connector + (text "nSRWE" (rect 1682 3344 1732 3359)(font "Arial" )) + (pt 1824 3360) + (pt 1672 3360) +) +(connector + (text "nSROE" (rect 1682 3368 1730 3383)(font "Arial" )) + (pt 1824 3384) + (pt 1672 3384) +) +(connector + (text "DSP_INT" (rect 1130 2832 1190 2847)(font "Arial" )) + (pt 1264 2848) + (pt 1120 2848) +) +(connector + (text "DSP_INT" (rect 1682 3000 1742 3015)(font "Arial" )) + (pt 1816 3016) + (pt 1672 3016) +) +(connector + (text "CLK500k" (rect 482 2040 542 2055)(font "Arial" )) + (pt 472 2056) + (pt 544 2056) +) +(connector + (pt 528 2416) + (pt 616 2416) +) +(connector + (text "FB_ALE" (rect 1194 304 1245 319)(font "Arial" )) + (pt 1264 320) + (pt 1184 320) +) +(connector + (text "DDRCLK[3..0]" (rect 1162 136 1252 151)(font "Arial" )) + (pt 1152 152) + (pt 1264 152) + (bus) +) +(connector + (text "DDR_SYNC_66M" (rect 1178 112 1292 127)(font "Arial" )) + (pt 1168 128) + (pt 1264 128) +) +(connector + (text "VD[31..0]" (rect 1682 288 1739 303)(font "Arial" )) + (pt 1672 304) + (pt 2648 304) + (bus) +) +(connector + (text "VA[12..0]" (rect 1682 312 1737 327)(font "Arial" )) + (pt 1672 328) + (pt 2528 328) + (bus) +) +(connector + (text "nVWE" (rect 1682 336 1720 351)(font "Arial" )) + (pt 1672 352) + (pt 2400 352) +) +(connector + (text "nVCAS" (rect 1690 360 1734 375)(font "Arial" )) + (pt 1672 376) + (pt 2304 376) +) +(connector + (text "nVRAS" (rect 1690 384 1734 399)(font "Arial" )) + (pt 1672 400) + (pt 2208 400) +) +(connector + (text "nVCS" (rect 1690 408 1726 423)(font "Arial" )) + (pt 1672 424) + (pt 2040 424) +) +(connector + (text "VCKE" (rect 1690 432 1727 447)(font "Arial" )) + (pt 1672 448) + (pt 1944 448) +) +(connector + (text "VSYNC" (rect 1682 136 1729 151)(font "Arial" )) + (pt 1672 152) + (pt 1832 152) +) +(connector + (text "HSYNC" (rect 1682 160 1731 175)(font "Arial" )) + (pt 1672 176) + (pt 1832 176) +) +(connector + (text "VB[7..0]" (rect 1754 112 1802 127)(font "Arial" )) + (pt 1672 128) + (pt 1912 128) + (bus) +) +(connector + (text "VG[7..0]" (rect 1842 88 1891 103)(font "Arial" )) + (pt 1672 104) + (pt 2000 104) + (bus) +) +(connector + (text "VR[7..0]" (rect 1922 64 1971 79)(font "Arial" )) + (pt 1672 80) + (pt 2080 80) + (bus) +) +(connector + (text "IO[17..0]" (rect 1962 3224 2015 3239)(font "Arial" )) + (pt 1672 3240) + (pt 2104 3240) + (bus) +) +(connector + (text "SRD[15..0]" (rect 1802 3248 1871 3263)(font "Arial" )) + (pt 1672 3264) + (pt 1944 3264) + (bus) +) +(connector + (text "SCSI_D[7..0]" (rect 1786 1056 1868 1071)(font "Arial" )) + (pt 1672 1072) + (pt 1936 1072) + (bus) +) +(connector + (text "ACSI_D[7..0]" (rect 1754 880 1835 895)(font "Arial" )) + (pt 1672 896) + (pt 1904 896) + (bus) +) +(connector + (text "LP_D[7..0]" (rect 1810 800 1877 815)(font "Arial" )) + (pt 1672 816) + (pt 1960 816) + (bus) +) +(connector + (text "AMKB_RX" (rect 786 1480 850 1495)(font "Arial" )) + (pt 776 1496) + (pt 1264 1496) +) +(connector + (text "CLK33M" (rect 346 288 401 303)(font "Arial" )) + (pt 336 304) + (pt 400 304) +) +(connector + (text "CLK25M" (rect 1202 608 1257 623)(font "Arial" )) + (pt 1192 624) + (pt 1264 624) +) +(connector + (text "TIMEBASE[17]" (rect 354 2120 446 2135)(font "Arial" )) + (pt 440 2136) + (pt 344 2136) +) +(connector + (text "TIMEBASE[17..0]" (rect 706 2048 813 2063)(font "Arial" )) + (pt 688 2064) + (pt 808 2064) + (bus) +) +(connector + (text "HSYNC" (rect 1130 2784 1179 2799)(font "Arial" )) + (pt 1264 2800) + (pt 1120 2800) +) +(connector + (text "VSYNC" (rect 1130 2808 1177 2823)(font "Arial" )) + (pt 1264 2824) + (pt 1120 2824) +) +(connector + (text "VSYNC" (rect 1130 1920 1177 1935)(font "Arial" )) + (pt 1264 1936) + (pt 1120 1936) +) +(connector + (text "HSYNC" (rect 1130 1896 1179 1911)(font "Arial" )) + (pt 1264 1912) + (pt 1120 1912) +) +(connector + (pt 488 2136) + (pt 608 2136) +) +(connector + (text "nFB_TA" (rect 1946 720 1996 735)(font "Arial" )) + (pt 1944 736) + (pt 2056 736) +) +(connector + (text "INT_HANDLER_TA" (rect 1682 2832 1805 2847)(font "Arial" )) + (pt 1672 2848) + (pt 1808 2848) +) +(connector + (text "DSP_TA" (rect 1682 3504 1736 3519)(font "Arial" )) + (pt 1672 3520) + (pt 1792 3520) +) +(connector + (text "Video_TA" (rect 1682 696 1743 711)(font "Arial" )) + (pt 1672 712) + (pt 1880 712) +) +(connector + (text "FALCON_IO_TA" (rect 1682 744 1785 759)(font "Arial" )) + (pt 1672 760) + (pt 1880 760) +) +(connector + (text "INT_HANDLER_TA" (rect 1810 728 1933 743)(font "Arial" )) + (pt 1880 744) + (pt 1800 744) +) +(connector + (text "DSP_TA" (rect 1810 712 1864 727)(font "Arial" )) + (pt 1880 728) + (pt 1800 728) +) +(connector + (pt 2680 888) + (pt 2712 888) +) +(connector + (pt 2632 888) + (pt 2504 888) +) +(connector + (pt 2504 888) + (pt 2504 760) +) +(connector + (text "DDRCLK[0]" (rect 2450 744 2525 759)(font "Arial" )) + (pt 2440 760) + (pt 2504 760) +) +(connector + (pt 2504 760) + (pt 2536 760) +) +(connector + (text "MAIN_CLK" (rect 1186 88 1255 103)(font "Arial" )) + (pt 1184 104) + (pt 1264 104) +) +(connector + (text "nRSTO" (rect 1194 40 1241 55)(font "Arial" )) + (pt 1184 56) + (pt 1264 56) +) +(connector + (text "BA[1..0]" (rect 1682 456 1730 471)(font "Arial" )) + (pt 1672 472) + (pt 1832 472) + (bus) +) +(connector + (text "PIXEL_CLK" (rect 2394 -64 2469 -49)(font "Arial" )) + (pt 2384 -48) + (pt 2464 -48) +) +(connector + (text "PIXEL_CLK" (rect 2394 56 2469 71)(font "Arial" )) + (pt 2384 72) + (pt 2464 72) +) +(connector + (text "nBLANK" (rect 2394 24 2448 39)(font "Arial" )) + (pt 2464 40) + (pt 2384 40) +) +(connector + (text "nBLANK" (rect 2394 40 2448 55)(font "Arial" )) + (pt 2464 56) + (pt 2384 56) +) +(connector + (pt 2696 -80) + (pt 2712 -80) +) +(connector + (pt 2696 40) + (pt 2712 40) +) +(connector + (text "PIXEL_CLK" (rect 1826 -48 1901 -33)(font "Arial" )) + (pt 1816 -32) + (pt 1896 -32) +) +(connector + (pt 2128 -64) + (pt 2136 -64) +) +(connector + (text "PIXEL_CLK" (rect 1682 232 1757 247)(font "Arial" )) + (pt 1744 248) + (pt 1672 248) +) +(connector + (text "PIXEL_CLK" (rect 2394 184 2469 199)(font "Arial" )) + (pt 2384 200) + (pt 2464 200) +) +(connector + (pt 2456 168) + (pt 2456 136) +) +(connector + (pt 2464 168) + (pt 2456 168) +) +(connector + (pt 2456 136) + (pt 2400 136) +) +(connector + (pt 2464 184) + (pt 2440 184) +) +(connector + (pt 2712 168) + (pt 2696 168) +) +(connector + (pt 2440 160) + (pt 2424 160) +) +(connector + (pt 2440 184) + (pt 2440 160) +) +(connector + (text "nFB_CS3" (rect 1170 3128 1232 3143)(font "Arial" )) + (pt 1264 3144) + (pt 1160 3144) +) +(connector + (text "nBLANK" (rect 1154 1968 1208 1983)(font "Arial" )) + (pt 1264 1984) + (pt 1144 1984) +) +(connector + (text "DSP_INT" (rect 1154 1944 1214 1959)(font "Arial" )) + (pt 1264 1960) + (pt 1144 1960) +) +(connector + (text "STEP_DIR" (rect 1682 1752 1751 1767)(font "Arial" )) + (pt 1672 1768) + (pt 1856 1768) +) +(connector + (pt 1904 1768) + (pt 2136 1768) +) +(connector + (pt 1904 1816) + (pt 2136 1816) +) +(connector + (text "WR_DATA" (rect 1682 1800 1749 1815)(font "Arial" )) + (pt 1672 1816) + (pt 1856 1816) +) +(connector + (text "DMA_DRQ" (rect 1130 2856 1199 2871)(font "Arial" )) + (pt 1264 2872) + (pt 1120 2872) +) +(connector + (text "DMA_DRQ" (rect 1682 2096 1751 2111)(font "Arial" )) + (pt 1784 2112) + (pt 1672 2112) +) +(connector + (text "FDC_CLK" (rect 1202 880 1268 895)(font "Arial" )) + (pt 1192 896) + (pt 1264 896) +) +(connector + (text "MOT_ON" (rect 1626 1728 1685 1743)(font "Arial" )) + (pt 1672 1744) + (pt 1800 1744) +) +(connector + (pt 1848 1744) + (pt 2136 1744) +) +(connector + (text "STEP" (rect 1626 1776 1662 1791)(font "Arial" )) + (pt 1672 1792) + (pt 1800 1792) +) +(connector + (pt 1848 1792) + (pt 2136 1792) +) +(connector + (text "WR_GATE" (rect 1690 1824 1758 1839)(font "Arial" )) + (pt 1672 1840) + (pt 1800 1840) +) +(connector + (pt 1848 1840) + (pt 2136 1840) +) +(connector + (text "FB_ALE" (rect 1186 1992 1237 2007)(font "Arial" )) + (pt 1144 2008) + (pt 1264 2008) +) +(connector + (text "AMKB_TX" (rect 1946 1392 2008 1407)(font "Arial" )) + (pt 1672 1408) + (pt 2112 1408) +) +(connector + (text "PIC_AMKB_RX" (rect 786 1504 882 1519)(font "Arial" )) + (pt 776 1520) + (pt 1264 1520) +) +(connector + (pt 400 -16) + (pt 440 -16) +) +(connector + (pt 440 248) + (pt 400 248) +) +(connector + (pt 400 -16) + (pt 400 248) +) +(connector + (pt 400 248) + (pt 400 304) +) +(connector + (text "CLK2M" (rect 754 -32 801 -17)(font "Arial" )) + (pt 744 -16) + (pt 816 -16) +) +(connector + (text "FDC_CLK" (rect 754 -8 820 7)(font "Arial" )) + (pt 744 8) + (pt 816 8) +) +(connector + (text "FB_AD[31..0]" (rect 370 1352 453 1367)(font "Arial" )) + (pt 352 1368) + (pt 464 1368) + (bus) +) +(connector + (text "FB_ADR[31..0]" (rect 642 1376 736 1391)(font "Arial" )) + (pt 608 1392) + (pt 760 1392) + (bus) +) +(connector + (text "DDR_SYNC_66M" (rect 378 1368 492 1383)(font "Arial" )) + (pt 368 1384) + (pt 464 1384) +) +(connector + (text "FB_ALE" (rect 386 1384 437 1399)(font "Arial" )) + (pt 376 1400) + (pt 464 1400) +) +(connector + (text "ACP_CONF[31..0]" (rect 1682 2568 1797 2583)(font "Arial" )) + (pt 1672 2584) + (pt 1832 2584) + (bus) +) +(connector + (text "ACP_CONF[31..24]" (rect 1146 2064 1269 2079)(font "Arial" )) + (pt 1136 2080) + (pt 1264 2080) + (bus) +) +(connector + (text "TIN0" (rect 1682 2624 1712 2639)(font "Arial" )) + (pt 1832 2640) + (pt 1672 2640) +) +(connector + (pt 1896 -48) + (pt 1856 -48) +) +(connector + (pt 1856 -48) + (pt 1856 -64) +) +(connector + (pt 1856 -64) + (pt 1896 -64) +) +(connector + (pt 2464 -64) + (pt 2424 -64) +) +(connector + (pt 2424 -80) + (pt 2424 -64) +) +(connector + (text "HD_DD" (rect 1050 1616 1100 1631)(font "Arial" )) + (pt 1040 1632) + (pt 1264 1632) +) +(connector + (text "CLK48M" (rect 754 40 809 55)(font "Arial" )) + (pt 744 56) + (pt 840 56) +) +(connector + (text "CLK25M" (rect 754 16 809 31)(font "Arial" )) + (pt 744 32) + (pt 864 32) +) +(connector + (text "DDRCLK[0]" (rect 762 -296 837 -281)(font "Arial" )) + (pt 752 -280) + (pt 848 -280) +) +(connector + (text "DDRCLK[1]" (rect 762 -272 837 -257)(font "Arial" )) + (pt 752 -256) + (pt 848 -256) +) +(connector + (text "DDRCLK[2]" (rect 762 -248 837 -233)(font "Arial" )) + (pt 752 -232) + (pt 848 -232) +) +(connector + (text "DDRCLK[3]" (rect 762 -224 837 -209)(font "Arial" )) + (pt 752 -208) + (pt 848 -208) +) +(connector + (text "DDR_SYNC_66M" (rect 762 -200 876 -185)(font "Arial" )) + (pt 752 -184) + (pt 848 -184) +) +(connector + (pt 408 672) + (pt 472 672) +) +(connector + (text "VIDEO_RECONFIG" (rect 74 496 199 511)(font "Arial" )) + (pt 192 512) + (pt 64 512) +) +(connector + (text "MAIN_CLK" (rect 330 -296 399 -281)(font "Arial" )) + (pt 264 -280) + (pt 448 -280) +) +(connector + (pt 408 640) + (pt 472 640) +) +(connector + (pt 408 624) + (pt 512 624) +) +(connector + (text "VR_D[8..0]" (rect 418 552 486 567)(font "Arial" )) + (pt 496 568) + (pt 408 568) + (bus) +) +(connector + (text "MAIN_CLK" (rect 122 664 191 679)(font "Arial" )) + (pt 112 680) + (pt 192 680) +) +(connector + (pt 536 720) + (pt 408 720) +) +(connector + (pt 1064 808) + (pt 1064 616) +) +(connector + (pt 1072 816) + (pt 1072 592) +) +(connector + (pt 472 672) + (pt 472 664) +) +(connector + (pt 472 640) + (pt 472 616) +) +(connector + (pt 512 624) + (pt 512 640) +) +(connector + (pt 536 720) + (pt 536 592) +) +(connector + (pt 536 592) + (pt 608 592) +) +(connector + (pt 472 616) + (pt 608 616) +) +(connector + (pt 512 640) + (pt 608 640) +) +(connector + (pt 472 664) + (pt 608 664) +) +(connector + (pt 408 688) + (pt 608 688) +) +(connector + (pt 984 592) + (pt 1072 592) +) +(connector + (pt 984 616) + (pt 1064 616) +) +(connector + (text "FB_ADR[5..2]" (rect 82 568 168 583)(font "Arial" )) + (pt 192 584) + (pt 72 584) + (bus) +) +(connector + (pt 1064 808) + (pt 80 808) +) +(connector + (pt 192 656) + (pt 80 656) +) +(connector + (pt 80 656) + (pt 80 808) +) +(connector + (pt 1072 816) + (pt 72 816) +) +(connector + (pt 192 640) + (pt 72 640) +) +(connector + (pt 72 640) + (pt 72 816) +) +(connector + (text "FB_ADR[8..6]" (rect 82 584 168 599)(font "Arial" )) + (pt 192 600) + (pt 72 600) + (bus) +) +(connector + (text "VR_RD" (rect 98 512 146 527)(font "Arial" )) + (pt 64 528) + (pt 192 528) +) +(connector + (text "VR_WR" (rect 98 528 148 543)(font "Arial" )) + (pt 64 544) + (pt 192 544) +) +(connector + (text "VR_D[8..0]" (rect 1170 464 1238 479)(font "Arial" )) + (pt 1144 480) + (pt 1264 480) + (bus) +) +(connector + (text "VDQS[3..0]" (rect 1674 504 1743 519)(font "Arial" )) + (pt 2040 544) + (pt 1960 544) + (bus) +) +(connector + (pt 1672 544) + (pt 1888 544) + (bus) +) +(connector + (pt 1888 544) + (pt 1888 568) + (bus) +) +(connector + (text "VDM[3..0]" (rect 1682 528 1742 543)(font "Arial" )) + (pt 1944 568) + (pt 1888 568) + (bus) +) +(connector + (pt 1672 520) + (pt 1960 520) + (bus) +) +(connector + (pt 1960 544) + (pt 1960 520) + (bus) +) +(connector + (text "VIDEO_RECONFIG" (rect 1674 560 1799 575)(font "Arial" )) + (pt 1672 576) + (pt 1792 576) +) +(connector + (text "VR_WR" (rect 1698 592 1748 607)(font "Arial" )) + (pt 1672 608) + (pt 1792 608) +) +(connector + (text "VR_BUSY" (rect 418 496 482 511)(font "Arial" )) + (pt 408 512) + (pt 480 512) +) +(connector + (text "VR_BUSY" (rect 1170 448 1234 463)(font "Arial" )) + (pt 1144 464) + (pt 1264 464) +) +(connector + (text "VR_RD" (rect 1698 576 1746 591)(font "Arial" )) + (pt 1792 592) + (pt 1672 592) +) +(connector + (text "nRSTO" (rect -86 680 -39 695)(font "Arial" )) + (pt -96 696) + (pt -16 696) +) +(connector + (pt 32 696) + (pt 192 696) +) +(connector + (text "FB_AD[24..16]" (rect 82 552 174 567)(font "Arial" )) + (pt 72 568) + (pt 192 568) + (bus) +) +(connector + (text "CLK48M" (rect 538 552 593 567)(font "Arial" )) + (pt 528 568) + (pt 608 568) +) +(connector + (text "CLK_VIDEO" (rect 1162 552 1241 567)(font "Arial" )) + (pt 984 568) + (pt 1264 568) +) +(connector + (text "CLK33M" (rect 1202 584 1257 599)(font "Arial" )) + (pt 1264 600) + (pt 1192 600) +) +(connector + (text "CLK500k" (rect 802 232 862 247)(font "Arial" )) + (pt 768 248) + (pt 864 248) +) +(connector + (text "CLK2M4576" (rect 802 256 882 271)(font "Arial" )) + (pt 768 272) + (pt 864 272) +) +(connector + (text "CLK24M576" (rect 802 280 882 295)(font "Arial" )) + (pt 768 296) + (pt 864 296) +) +(connector + (text "nRSTO" (rect 1018 424 1065 439)(font "Arial" )) + (pt 1008 440) + (pt 1096 440) +) +(connector + (pt 768 320) + (pt 872 320) +) +(connector + (pt 872 432) + (pt 944 432) +) +(connector + (pt 840 448) + (pt 944 448) +) +(connector + (pt 872 320) + (pt 872 432) +) +(connector + (text "HSYNC" (rect 2314 -96 2363 -81)(font "Arial" )) + (pt 2304 -80) + (pt 2424 -80) +) +(connector + (pt 2424 -80) + (pt 2464 -80) +) +(connector + (text "VSYNC" (rect 1746 -80 1793 -65)(font "Arial" )) + (pt 1736 -64) + (pt 1856 -64) +) +(junction (pt 2504 760)) +(junction (pt 400 248)) +(junction (pt 1856 -64)) +(junction (pt 2424 -80)) diff --git a/FPGA_quartus/firebee1.done b/FPGA_quartus/firebee1.done new file mode 100644 index 0000000..1674c93 --- /dev/null +++ b/FPGA_quartus/firebee1.done @@ -0,0 +1 @@ +Wed Dec 15 02:25:24 2010 diff --git a/FPGA_quartus/firebee1.dpf b/FPGA_quartus/firebee1.dpf new file mode 100644 index 0000000..f0b3ecc --- /dev/null +++ b/FPGA_quartus/firebee1.dpf @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/FPGA_quartus/firebee1.fit.rpt b/FPGA_quartus/firebee1.fit.rpt new file mode 100644 index 0000000..e3df129 --- /dev/null +++ b/FPGA_quartus/firebee1.fit.rpt @@ -0,0 +1,6866 @@ +Fitter report for firebee1 +Wed Dec 15 02:25:03 2010 +Quartus II Version 9.1 Build 350 03/24/2010 Service Pack 2 SJ Web Edition + + +--------------------- +; Table of Contents ; +--------------------- + 1. Legal Notice + 2. Fitter Summary + 3. Fitter Settings + 4. Parallel Compilation + 5. I/O Assignment Warnings + 6. Fitter Netlist Optimizations + 7. Ignored Assignments + 8. Incremental Compilation Preservation Summary + 9. Incremental Compilation Partition Settings + 10. Incremental Compilation Placement Preservation + 11. Pin-Out File + 12. Fitter Resource Usage Summary + 13. Input Pins + 14. Output Pins + 15. Bidir Pins + 16. Dual Purpose and Dedicated Pins + 17. I/O Bank Usage + 18. All Package Pins + 19. PLL Summary + 20. PLL Usage + 21. Output Pin Default Load For Reported TCO + 22. Fitter Resource Utilization by Entity + 23. Delay Chain Summary + 24. Pad To Core Delay Chain Fanout + 25. Control Signals + 26. Global & Other Fast Signals + 27. Non-Global High Fan-Out Signals + 28. Fitter RAM Summary + 29. Fitter DSP Block Usage Summary + 30. DSP Block Details + 31. Interconnect Usage Summary + 32. LAB Logic Elements + 33. LAB-wide Signals + 34. LAB Signals Sourced + 35. LAB Signals Sourced Out + 36. LAB Distinct Inputs + 37. I/O Rules Summary + 38. I/O Rules Details + 39. I/O Rules Matrix + 40. Fitter Device Options + 41. Operating Settings and Conditions + 42. Estimated Delay Added for Hold Timing + 43. Fitter Messages + + + +---------------- +; Legal Notice ; +---------------- +Copyright (C) 1991-2010 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. + + + ++-----------------------------------------------------------------------------------+ +; Fitter Summary ; ++------------------------------------+----------------------------------------------+ +; Fitter Status ; Successful - Wed Dec 15 02:25:02 2010 ; +; Quartus II Version ; 9.1 Build 350 03/24/2010 SP 2 SJ Web Edition ; +; Revision Name ; firebee1 ; +; Top-level Entity Name ; firebee1 ; +; Family ; Cyclone III ; +; Device ; EP3C40F484C6 ; +; Timing Models ; Final ; +; Total logic elements ; 9,526 / 39,600 ( 24 % ) ; +; Total combinational functions ; 8,061 / 39,600 ( 20 % ) ; +; Dedicated logic registers ; 4,563 / 39,600 ( 12 % ) ; +; Total registers ; 4749 ; +; Total pins ; 295 / 332 ( 89 % ) ; +; Total virtual pins ; 0 ; +; Total memory bits ; 109,344 / 1,161,216 ( 9 % ) ; +; Embedded Multiplier 9-bit elements ; 6 / 252 ( 2 % ) ; +; Total PLLs ; 4 / 4 ( 100 % ) ; ++------------------------------------+----------------------------------------------+ + + ++------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Fitter Settings ; ++----------------------------------------------------------------------------+---------------------------------------+---------------------------------------+ +; Option ; Setting ; Default Value ; ++----------------------------------------------------------------------------+---------------------------------------+---------------------------------------+ +; Device ; EP3C40F484C6 ; ; +; Use TimeQuest Timing Analyzer ; Off ; On ; +; Nominal Core Supply Voltage ; 1.2V ; ; +; Minimum Core Junction Temperature ; 0 ; ; +; Maximum Core Junction Temperature ; 85 ; ; +; Fit Attempts to Skip ; 0 ; 0.0 ; +; Device I/O Standard ; 3.3-V LVTTL ; ; +; Perform Physical Synthesis for Combinational Logic for Fitting ; On ; Off ; +; Perform Physical Synthesis for Combinational Logic for Performance ; On ; Off ; +; Perform Register Duplication for Performance ; On ; Off ; +; Physical Synthesis Effort Level ; Fast ; Normal ; +; Use smart compilation ; Off ; Off ; +; Enable parallel Assembler and TimeQuest Timing Analyzer during compilation ; On ; On ; +; Enable compact report table ; Off ; Off ; +; Router Timing Optimization Level ; Normal ; Normal ; +; Placement Effort Multiplier ; 1.0 ; 1.0 ; +; Router Effort Multiplier ; 1.0 ; 1.0 ; +; Optimize Hold Timing ; All Paths ; All Paths ; +; Optimize Multi-Corner Timing ; Off ; Off ; +; PowerPlay Power Optimization ; Normal compilation ; Normal compilation ; +; SSN Optimization ; Off ; Off ; +; Optimize Timing ; Normal compilation ; Normal compilation ; +; Optimize Timing for ECOs ; Off ; Off ; +; Regenerate full fit report during ECO compiles ; Off ; Off ; +; Optimize IOC Register Placement for Timing ; On ; On ; +; Limit to One Fitting Attempt ; Off ; Off ; +; Final Placement Optimizations ; Automatically ; Automatically ; +; Fitter Aggressive Routability Optimizations ; Automatically ; Automatically ; +; Fitter Initial Placement Seed ; 1 ; 1 ; +; PCI I/O ; Off ; Off ; +; Weak Pull-Up Resistor ; Off ; Off ; +; Enable Bus-Hold Circuitry ; Off ; Off ; +; Auto Packed Registers ; Auto ; Auto ; +; Auto Delay Chains ; On ; On ; +; Allow Single-ended Buffer for Differential-XSTL Input ; Off ; Off ; +; Treat Bidirectional Pin as Output Pin ; Off ; Off ; +; Auto Merge PLLs ; On ; On ; +; Perform Logic to Memory Mapping for Fitting ; Off ; Off ; +; Perform Register Retiming for Performance ; Off ; Off ; +; Perform Asynchronous Signal Pipelining ; Off ; Off ; +; Fitter Effort ; Auto Fit ; Auto Fit ; +; Logic Cell Insertion - Logic Duplication ; Auto ; Auto ; +; Auto Register Duplication ; Auto ; Auto ; +; Auto Global Clock ; On ; On ; +; Auto Global Register Control Signals ; On ; On ; +; Reserve all unused pins ; As input tri-stated with weak pull-up ; As input tri-stated with weak pull-up ; +; Stop After Congestion Map Generation ; Off ; Off ; +; Save Intermediate Fitting Results ; Off ; Off ; +; Synchronizer Identification ; Off ; Off ; +; Enable Beneficial Skew Optimization ; On ; On ; +; Optimize Design for Metastability ; On ; On ; +; Force Fitter to Avoid Periphery Placement Warnings ; Off ; Off ; +; Use Best Effort Settings for Compilation ; Off ; Off ; ++----------------------------------------------------------------------------+---------------------------------------+---------------------------------------+ + + +Parallel compilation was disabled, but you have multiple processors available. Enable parallel compilation to reduce compilation time. ++-------------------------------------+ +; Parallel Compilation ; ++----------------------------+--------+ +; Processors ; Number ; ++----------------------------+--------+ +; Number detected on machine ; 4 ; +; Maximum allowed ; 1 ; ++----------------------------+--------+ + + ++------------------------------------------------------+ +; I/O Assignment Warnings ; ++---------------+--------------------------------------+ +; Pin Name ; Reason ; ++---------------+--------------------------------------+ +; LP_STR ; Missing drive strength ; +; nACSI_ACK ; Missing drive strength ; +; nACSI_RESET ; Missing drive strength ; +; nACSI_CS ; Missing drive strength ; +; ACSI_DIR ; Missing drive strength ; +; ACSI_A1 ; Missing drive strength ; +; nSCSI_ACK ; Missing drive strength ; +; nSCSI_ATN ; Missing drive strength ; +; SCSI_DIR ; Missing drive strength ; +; MIDI_OLR ; Missing drive strength ; +; MIDI_TLR ; Missing drive strength ; +; TxD ; Missing drive strength ; +; RTS ; Missing drive strength ; +; DTR ; Missing drive strength ; +; IDE_RES ; Missing drive strength ; +; nIDE_CS0 ; Missing drive strength ; +; nIDE_CS1 ; Missing drive strength ; +; nIDE_WR ; Missing drive strength ; +; nIDE_RD ; Missing drive strength ; +; nCF_CS0 ; Missing drive strength ; +; nCF_CS1 ; Missing drive strength ; +; nROM3 ; Missing drive strength ; +; nROM4 ; Missing drive strength ; +; nRP_UDS ; Missing drive strength ; +; nRP_LDS ; Missing drive strength ; +; nSDSEL ; Missing drive strength ; +; nWR_GATE ; Missing drive strength ; +; nWR ; Missing drive strength ; +; YM_QA ; Missing drive strength ; +; YM_QB ; Missing drive strength ; +; YM_QC ; Missing drive strength ; +; SD_CLK ; Missing drive strength ; +; DSA_D ; Missing drive strength ; +; nVWE ; Missing slew rate ; +; nVCAS ; Missing slew rate ; +; nVRAS ; Missing slew rate ; +; nVCS ; Missing slew rate ; +; TIN0 ; Missing drive strength ; +; nDREQ1 ; Missing drive strength ; +; LED_FPGA_OK ; Missing slew rate ; +; VCKE ; Missing slew rate ; +; nFB_TA ; Missing drive strength ; +; nDDR_CLK ; Missing slew rate ; +; DDR_CLK ; Missing slew rate ; +; VSYNC_PAD ; Missing slew rate ; +; HSYNC_PAD ; Missing slew rate ; +; nBLANK_PAD ; Missing slew rate ; +; PIXEL_CLK_PAD ; Missing slew rate ; +; nSYNC ; Missing slew rate ; +; nMOT_ON ; Missing drive strength ; +; nSTEP_DIR ; Missing drive strength ; +; nSTEP ; Missing drive strength ; +; LPDIR ; Missing drive strength ; +; BA[1] ; Missing slew rate ; +; BA[0] ; Missing slew rate ; +; nIRQ[7] ; Missing drive strength ; +; nIRQ[6] ; Missing drive strength ; +; nIRQ[5] ; Missing drive strength ; +; nIRQ[4] ; Missing drive strength and slew rate ; +; nIRQ[3] ; Missing drive strength and slew rate ; +; nIRQ[2] ; Missing drive strength and slew rate ; +; VA[12] ; Missing slew rate ; +; VA[11] ; Missing slew rate ; +; VA[10] ; Missing slew rate ; +; VA[9] ; Missing slew rate ; +; VA[8] ; Missing slew rate ; +; VA[7] ; Missing slew rate ; +; VA[6] ; Missing slew rate ; +; VA[5] ; Missing slew rate ; +; VA[4] ; Missing slew rate ; +; VA[3] ; Missing slew rate ; +; VA[2] ; Missing slew rate ; +; VA[1] ; Missing slew rate ; +; VA[0] ; Missing slew rate ; +; VB[7] ; Missing slew rate ; +; VB[6] ; Missing slew rate ; +; VB[5] ; Missing slew rate ; +; VB[4] ; Missing slew rate ; +; VB[3] ; Missing slew rate ; +; VB[2] ; Missing slew rate ; +; VB[1] ; Missing slew rate ; +; VB[0] ; Missing slew rate ; +; VDM[3] ; Missing slew rate ; +; VDM[2] ; Missing slew rate ; +; VDM[1] ; Missing slew rate ; +; VDM[0] ; Missing slew rate ; +; VG[7] ; Missing slew rate ; +; VG[6] ; Missing slew rate ; +; VG[5] ; Missing slew rate ; +; VG[4] ; Missing slew rate ; +; VG[3] ; Missing slew rate ; +; VG[2] ; Missing slew rate ; +; VG[1] ; Missing slew rate ; +; VG[0] ; Missing slew rate ; +; VR[7] ; Missing slew rate ; +; VR[6] ; Missing slew rate ; +; VR[5] ; Missing slew rate ; +; VR[4] ; Missing slew rate ; +; VR[3] ; Missing slew rate ; +; VR[2] ; Missing slew rate ; +; VR[1] ; Missing slew rate ; +; VR[0] ; Missing slew rate ; +; VD[31] ; Missing slew rate ; +; VD[30] ; Missing slew rate ; +; VD[29] ; Missing slew rate ; +; VD[28] ; Missing slew rate ; +; VD[27] ; Missing slew rate ; +; VD[26] ; Missing slew rate ; +; VD[25] ; Missing slew rate ; +; VD[24] ; Missing slew rate ; +; VD[23] ; Missing slew rate ; +; VD[22] ; Missing slew rate ; +; VD[21] ; Missing slew rate ; +; VD[20] ; Missing slew rate ; +; VD[19] ; Missing slew rate ; +; VD[18] ; Missing slew rate ; +; VD[17] ; Missing slew rate ; +; VD[16] ; Missing slew rate ; +; VD[15] ; Missing slew rate ; +; VD[14] ; Missing slew rate ; +; VD[13] ; Missing slew rate ; +; VD[12] ; Missing slew rate ; +; VD[11] ; Missing slew rate ; +; VD[10] ; Missing slew rate ; +; VD[9] ; Missing slew rate ; +; VD[8] ; Missing slew rate ; +; VD[7] ; Missing slew rate ; +; VD[6] ; Missing slew rate ; +; VD[5] ; Missing slew rate ; +; VD[4] ; Missing slew rate ; +; VD[3] ; Missing slew rate ; +; VD[2] ; Missing slew rate ; +; VD[1] ; Missing slew rate ; +; VD[0] ; Missing slew rate ; +; VDQS[3] ; Missing slew rate ; +; VDQS[2] ; Missing slew rate ; +; VDQS[1] ; Missing slew rate ; +; VDQS[0] ; Missing slew rate ; +; SCSI_PAR ; Missing drive strength ; +; nSCSI_SEL ; Missing drive strength ; +; nSCSI_BUSY ; Missing drive strength ; +; nSCSI_RST ; Missing drive strength ; +; SD_CD_DATA3 ; Missing drive strength ; +; SD_CMD_D1 ; Missing drive strength ; +; ACSI_D[7] ; Missing drive strength ; +; ACSI_D[6] ; Missing drive strength ; +; ACSI_D[5] ; Missing drive strength ; +; ACSI_D[4] ; Missing drive strength ; +; ACSI_D[3] ; Missing drive strength ; +; ACSI_D[2] ; Missing drive strength ; +; ACSI_D[1] ; Missing drive strength ; +; ACSI_D[0] ; Missing drive strength ; +; LP_D[7] ; Missing drive strength ; +; LP_D[6] ; Missing drive strength ; +; LP_D[5] ; Missing drive strength ; +; LP_D[4] ; Missing drive strength ; +; LP_D[3] ; Missing drive strength ; +; LP_D[2] ; Missing drive strength ; +; LP_D[1] ; Missing drive strength ; +; LP_D[0] ; Missing drive strength ; +; SCSI_D[7] ; Missing drive strength ; +; SCSI_D[6] ; Missing drive strength ; +; SCSI_D[5] ; Missing drive strength ; +; SCSI_D[4] ; Missing drive strength ; +; SCSI_D[3] ; Missing drive strength ; +; SCSI_D[2] ; Missing drive strength ; +; SCSI_D[1] ; Missing drive strength ; +; SCSI_D[0] ; Missing drive strength ; ++---------------+--------------------------------------+ + + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Fitter Netlist Optimizations ; ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+--------------------+-----------------------------------+-----------+----------------+----------------------------------------------------------------------------------------------------------------------------------+------------------+-----------------------+ +; Node ; Action ; Operation ; Reason ; Node Port ; Node Port Name ; Destination Node ; Destination Port ; Destination Port Name ; ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+--------------------+-----------------------------------+-----------+----------------+----------------------------------------------------------------------------------------------------------------------------------+------------------+-----------------------+ +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|DIR ; Duplicated ; Register Packing ; Timing optimization ; Q ; ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|DIR~_Duplicate_1 ; Q ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|DIR ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; nSTEP_DIR~output ; I ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|DIR ; Inverted ; Register Packing ; Timing optimization ; Q ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|MO ; Duplicated ; Register Packing ; Timing optimization ; Q ; ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|MO~_Duplicate_1 ; Q ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|MO ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; nMOT_ON~output ; I ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|MO ; Inverted ; Register Packing ; Timing optimization ; Q ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|STEP ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; nSTEP~output ; I ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|STEP ; Inverted ; Register Packing ; Timing optimization ; Q ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|WG ; Duplicated ; Register Packing ; Timing optimization ; Q ; ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|WG~_Duplicate_1 ; Q ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|WG ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; nWR_GATE~output ; I ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|WG ; Inverted ; Register Packing ; Timing optimization ; Q ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|RD_In ; Packed Register ; Register Packing ; PLL Source Synchronous assignment ; Q ; ; nRD_DATA~input ; O ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|MFM_In ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; nWR~output ; I ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_A[0] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; nSDSEL~output ; I ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_A[1] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; DSA_D~output ; I ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_A[3] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; RTS~output ; I ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_A[4] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; DTR~output ; I ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_A[5] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; LP_STR~output ; I ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_A[6] ; Duplicated ; Register Packing ; Timing optimization ; Q ; ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_A[6]~_Duplicate_1 ; Q ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_A[6] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; LPDIR~output ; I ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_B[0] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; LP_D[0]~output ; I ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_B[1] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; LP_D[1]~output ; I ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_B[2] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; LP_D[2]~output ; I ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_B[3] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; LP_D[3]~output ; I ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_B[4] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; LP_D[4]~output ; I ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_B[5] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; LP_D[5]~output ; I ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_B[6] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; LP_D[6]~output ; I ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_B[7] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; LP_D[7]~output ; I ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|BSY_OUTn ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; nSCSI_BUSY~output ; I ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|nIDE_RD~reg0 ; Duplicated ; Register Packing ; Timing optimization ; Q ; ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|nIDE_RD~reg0_Duplicate_1 ; Q ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|nIDE_RD~reg0 ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; nIDE_RD~output ; I ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|nIDE_RD~reg0SLOAD_MUX ; Created ; Register Packing ; Timing optimization ; COMBOUT ; ; ; ; ; +; Video:Fredi_Aschwanden|inst90 ; Duplicated ; Register Packing ; Timing optimization ; Q ; ; Video:Fredi_Aschwanden|inst90~_Duplicate_1 ; Q ; ; +; Video:Fredi_Aschwanden|inst90 ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; VDQS[3]~output ; OE ; ; +; Video:Fredi_Aschwanden|inst90 ; Inverted ; Register Packing ; Timing optimization ; Q ; ; ; ; ; +; Video:Fredi_Aschwanden|inst90~_Duplicate_1 ; Duplicated ; Register Packing ; Timing optimization ; Q ; ; Video:Fredi_Aschwanden|inst90~_Duplicate_2 ; Q ; ; +; Video:Fredi_Aschwanden|inst90~_Duplicate_1 ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; VDQS[2]~output ; OE ; ; +; Video:Fredi_Aschwanden|inst90~_Duplicate_1 ; Inverted ; Register Packing ; Timing optimization ; Q ; ; ; ; ; +; Video:Fredi_Aschwanden|inst90~_Duplicate_2 ; Duplicated ; Register Packing ; Timing optimization ; Q ; ; Video:Fredi_Aschwanden|inst90~_Duplicate_3 ; Q ; ; +; Video:Fredi_Aschwanden|inst90~_Duplicate_2 ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; VDQS[1]~output ; OE ; ; +; Video:Fredi_Aschwanden|inst90~_Duplicate_2 ; Inverted ; Register Packing ; Timing optimization ; Q ; ; ; ; ; +; Video:Fredi_Aschwanden|inst90~_Duplicate_3 ; Duplicated ; Register Packing ; Timing optimization ; Q ; ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Q ; ; +; Video:Fredi_Aschwanden|inst90~_Duplicate_3 ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; VDQS[0]~output ; OE ; ; +; Video:Fredi_Aschwanden|inst90~_Duplicate_3 ; Inverted ; Register Packing ; Timing optimization ; Q ; ; ; ; ; +; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[28] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; FB_AD[28]~input ; O ; ; +; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[29] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; FB_AD[29]~input ; O ; ; +; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[30] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; FB_AD[30]~input ; O ; ; +; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[31] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; FB_AD[31]~input ; O ; ; +; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[0] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; FB_AD[0]~input ; O ; ; +; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[1] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; FB_AD[1]~input ; O ; ; +; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[2] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; FB_AD[2]~input ; O ; ; +; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[3] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; FB_AD[3]~input ; O ; ; +; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[4] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; FB_AD[4]~input ; O ; ; +; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[5] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; FB_AD[5]~input ; O ; ; +; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[6] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; FB_AD[6]~input ; O ; ; +; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[7] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; FB_AD[7]~input ; O ; ; +; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[8] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; FB_AD[8]~input ; O ; ; +; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[9] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; FB_AD[9]~input ; O ; ; +; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[10] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; FB_AD[10]~input ; O ; ; +; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[11] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; FB_AD[11]~input ; O ; ; +; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[12] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; FB_AD[12]~input ; O ; ; +; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[13] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; FB_AD[13]~input ; O ; ; +; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[14] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; FB_AD[14]~input ; O ; ; +; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[15] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; FB_AD[15]~input ; O ; ; +; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[16] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; FB_AD[16]~input ; O ; ; +; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[17] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; FB_AD[17]~input ; O ; ; +; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; FB_AD[18]~input ; O ; ; +; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[19] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; FB_AD[19]~input ; O ; ; +; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[20] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; FB_AD[20]~input ; O ; ; +; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[21] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; FB_AD[21]~input ; O ; ; +; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[22] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; FB_AD[22]~input ; O ; ; +; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[23] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; FB_AD[23]~input ; O ; ; +; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[24] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; FB_AD[24]~input ; O ; ; +; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[25] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; FB_AD[25]~input ; O ; ; +; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[26] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; FB_AD[26]~input ; O ; ; +; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[27] ; Packed Register ; Register Packing ; Timing optimization ; Q ; ; FB_AD[27]~input ; O ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_DATEN_CS~0 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_DATEN_CS~0_RESYN24_BDD25 ; Created ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[16]~53 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[16]~54 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[16]~54_RESYN0_BDD1 ; Created ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[18]~168 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[18]~177 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[18]~178 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[18]~180 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[18]~180_RESYN2_BDD3 ; Created ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[18]~180_RESYN4_BDD5 ; Created ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[18]~180_RESYN6_BDD7 ; Created ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[28]~368 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[28]~369 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[28]~369_RESYN18_BDD19 ; Created ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[29]~358 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[29]~359 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[29]~359_RESYN10_BDD11 ; Created ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[29]~359_RESYN12_BDD13 ; Created ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[29]~359_RESYN14_BDD15 ; Created ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[29]~359_RESYN14_RESYN50_BDD51 ; Created ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[29]~359_RESYN16_BDD17 ; Created ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~0 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~1 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~2 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~2_RESYN20_BDD21 ; Created ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~2_RESYN22_BDD23 ; Created ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|SNDCS ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|SNDCS_RESYN56_BDD57 ; Created ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|Add0~0 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|Add0~1 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|Add7~1 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|Add8~1 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CNT~1 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|DELCNT~54 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|DELCNT~55 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|Selector96~0 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|Add2~1 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|Add3~1 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|Add3~30 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|Add3~31 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|Add0~1 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|Add1~2 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|Add1~30 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|SECTOR_REG[0]~0 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|Add1~0 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|Add1~1 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|Add1~16 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|MFM_01_STRB~1 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|MFM_10_STRB~2 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|Add1~12 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|Add3~12 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|Add5~12 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|Add8~3 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|Add8~4 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|Add8~17 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|Add8~18 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|Add10~1 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|Add11~3 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|ENV_CLK~16 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|LessThan6~14 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|LessThan7~14 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|LessThan8~14 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|Mux84~1 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|Mux92~1 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|Mux100~1 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|VOL_ENV[0]~3 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|\MUSICGENERATOR:CNT_CH_A[11]~1 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|\MUSICGENERATOR:CNT_CH_B[11]~1 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|\MUSICGENERATOR:CNT_CH_C[11]~1 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_RECEIVE:I_UART_RECEIVE|Add2~1 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_RECEIVE:I_UART_RECEIVE|Add2~16 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_TRANSMIT:I_UART_TRANSMIT|Add0~1 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_TRANSMIT:I_UART_TRANSMIT|Add0~15 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_RECEIVE:I_UART_RECEIVE|Add2~1 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_RECEIVE:I_UART_RECEIVE|Add2~12 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_TRANSMIT:I_UART_TRANSMIT|Add0~1 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_TRANSMIT:I_UART_TRANSMIT|Add0~15 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|DATA_OUT[3]~162 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|DATA_OUT[3]~163 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|DATA_OUT[3]~163_RESYN8_BDD9 ; Created ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|Add0~1 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|Add0~2 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|Add1~1 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|Add1~2 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|Add2~1 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|Add2~3 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|Add3~1 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|Add3~3 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|Add4~0 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|Add4~1 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|Add5~0 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|Add5~1 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|Add6~1 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|Add6~2 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|Add7~1 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|Add7~2 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|Mux88~0 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|Mux88~1 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|Mux88~3 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|Mux98~0 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|Mux98~1 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|Mux98~3 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|PRESCALE~0 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|PRESCALE~1 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|PRESCALE~2 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|PRESCALE~3 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_A~1 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_A~3 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_A~4 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_B~1 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_B~3 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_B~4 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_C[0]~0 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_D[0]~2 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|\PRESCALE_A:PRESCALE[3]~0 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|\PRESCALE_B:PRESCALE[3]~0 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|\PRESCALE_C:PRESCALE[3]~0 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|\PRESCALE_D:PRESCALE[3]~0 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_RX:I_USART_RECEIVE|STRB_LOCK~0 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_RX:I_USART_RECEIVE|\CLKDIV:STRB_LOCK~0 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_TX:I_USART_TRANSMIT|SHIFT_REG[6]~1 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_TX:I_USART_TRANSMIT|SHIFT_REG~13 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_TX:I_USART_TRANSMIT|STRB_LOCK~0 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_TX:I_USART_TRANSMIT|\CLKDIV:STRB_LOCK~0 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ~0 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ~0_RESYN30_BDD31 ; Created ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[10]~5 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[10]~5_RESYN26_BDD27 ; Created ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[10]~5_RESYN28_BDD29 ; Created ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VCAS~2 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VCAS~2_RESYN52_BDD53 ; Created ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VCAS~2_RESYN54_BDD55 ; Created ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSYNC_START~5 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDIS_END[10] ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDIS_START[1]~19 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDIS_START[10]~1 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~28 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~28_RESYN32_BDD33 ; Created ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|op_7~1 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|op_7~29 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|op_7~32 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|op_8~1 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|op_8~17 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|op_9~1 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|op_9~29 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|op_9~32 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|op_15~1 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|op_17~15 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|op_17~43 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|op_26~22 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|op_27~22 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|op_28~20 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|op_30~20 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|op_31~1 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; interrupt_handler:nobody|_~472 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; interrupt_handler:nobody|_~478 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; interrupt_handler:nobody|_~479 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; interrupt_handler:nobody|_~481 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; interrupt_handler:nobody|_~482 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; interrupt_handler:nobody|lpm_bustri_BYT:$00000|lpm_bustri:lpm_bustri_component|dout[5]~10 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; interrupt_handler:nobody|lpm_bustri_BYT:$00000|lpm_bustri:lpm_bustri_component|dout[5]~11 ; Deleted ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; interrupt_handler:nobody|lpm_bustri_BYT:$00004|lpm_bustri:lpm_bustri_component|dout[0]~15 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; interrupt_handler:nobody|lpm_bustri_BYT:$00004|lpm_bustri:lpm_bustri_component|dout[0]~15_RESYN42_BDD43 ; Created ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; interrupt_handler:nobody|lpm_bustri_BYT:$00004|lpm_bustri:lpm_bustri_component|dout[0]~15_RESYN44_BDD45 ; Created ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; interrupt_handler:nobody|lpm_bustri_BYT:$00004|lpm_bustri:lpm_bustri_component|dout[0]~15_RESYN46_BDD47 ; Created ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; interrupt_handler:nobody|lpm_bustri_BYT:$00004|lpm_bustri:lpm_bustri_component|dout[0]~15_RESYN48_BDD49 ; Created ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; interrupt_handler:nobody|lpm_bustri_BYT:$00004|lpm_bustri:lpm_bustri_component|dout[1]~13 ; Modified ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; interrupt_handler:nobody|lpm_bustri_BYT:$00004|lpm_bustri:lpm_bustri_component|dout[1]~13_RESYN34_BDD35 ; Created ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; interrupt_handler:nobody|lpm_bustri_BYT:$00004|lpm_bustri:lpm_bustri_component|dout[1]~13_RESYN36_BDD37 ; Created ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; interrupt_handler:nobody|lpm_bustri_BYT:$00004|lpm_bustri:lpm_bustri_component|dout[1]~13_RESYN38_BDD39 ; Created ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; +; interrupt_handler:nobody|lpm_bustri_BYT:$00004|lpm_bustri:lpm_bustri_component|dout[1]~13_RESYN40_BDD41 ; Created ; Physical Synthesis ; Timing optimization ; ; ; ; ; ; ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+--------------------+-----------------------------------+-----------+----------------+----------------------------------------------------------------------------------------------------------------------------------+------------------+-----------------------+ + + ++------------------------------------------------------------------------------------------------------------------------------------------------+ +; Ignored Assignments ; ++-----------------------------+----------------+--------------+----------------------------+------------------------+----------------------------+ +; Name ; Ignored Entity ; Ignored From ; Ignored To ; Ignored Value ; Ignored Source ; ++-----------------------------+----------------+--------------+----------------------------+------------------------+----------------------------+ +; DDIO_INPUT_REGISTER ; altddio_bidir ; ; input_cell_H ; HIGH ; Compiler or HDL Assignment ; +; DDIO_INPUT_REGISTER ; altddio_bidir ; ; input_cell_L ; LOW ; Compiler or HDL Assignment ; +; Synchronizer Identification ; dcfifo_0hh1 ; ; rdemp_eq_comp_lsb_aeb ; FORCED_IF_ASYNCHRONOUS ; Compiler or HDL Assignment ; +; Synchronizer Identification ; dcfifo_0hh1 ; ; rdemp_eq_comp_msb_aeb ; FORCED_IF_ASYNCHRONOUS ; Compiler or HDL Assignment ; +; Synchronizer Identification ; dcfifo_0hh1 ; ; rs_dgwp_reg ; FORCED_IF_ASYNCHRONOUS ; Compiler or HDL Assignment ; +; Synchronizer Identification ; dcfifo_0hh1 ; ; wrfull_eq_comp_lsb_mux_reg ; FORCED_IF_ASYNCHRONOUS ; Compiler or HDL Assignment ; +; Synchronizer Identification ; dcfifo_0hh1 ; ; wrfull_eq_comp_msb_mux_reg ; FORCED_IF_ASYNCHRONOUS ; Compiler or HDL Assignment ; +; Synchronizer Identification ; dcfifo_0hh1 ; ; ws_dgrp_reg ; FORCED_IF_ASYNCHRONOUS ; Compiler or HDL Assignment ; +; Synchronizer Identification ; dcfifo_3fh1 ; ; rdemp_eq_comp_lsb_aeb ; FORCED_IF_ASYNCHRONOUS ; Compiler or HDL Assignment ; +; Synchronizer Identification ; dcfifo_3fh1 ; ; rdemp_eq_comp_msb_aeb ; FORCED_IF_ASYNCHRONOUS ; Compiler or HDL Assignment ; +; Synchronizer Identification ; dcfifo_3fh1 ; ; rs_dgwp_reg ; FORCED_IF_ASYNCHRONOUS ; Compiler or HDL Assignment ; +; Synchronizer Identification ; dcfifo_3fh1 ; ; wrfull_eq_comp_lsb_mux_reg ; FORCED_IF_ASYNCHRONOUS ; Compiler or HDL Assignment ; +; Synchronizer Identification ; dcfifo_3fh1 ; ; wrfull_eq_comp_msb_mux_reg ; FORCED_IF_ASYNCHRONOUS ; Compiler or HDL Assignment ; +; Synchronizer Identification ; dcfifo_3fh1 ; ; ws_dgrp_reg ; FORCED_IF_ASYNCHRONOUS ; Compiler or HDL Assignment ; +; Synchronizer Identification ; dcfifo_8fi1 ; ; rdemp_eq_comp_lsb_aeb ; FORCED_IF_ASYNCHRONOUS ; Compiler or HDL Assignment ; +; Synchronizer Identification ; dcfifo_8fi1 ; ; rdemp_eq_comp_msb_aeb ; FORCED_IF_ASYNCHRONOUS ; Compiler or HDL Assignment ; +; Synchronizer Identification ; dcfifo_8fi1 ; ; rs_dgwp_reg ; FORCED_IF_ASYNCHRONOUS ; Compiler or HDL Assignment ; +; Synchronizer Identification ; dcfifo_8fi1 ; ; wrfull_eq_comp_lsb_mux_reg ; FORCED_IF_ASYNCHRONOUS ; Compiler or HDL Assignment ; +; Synchronizer Identification ; dcfifo_8fi1 ; ; wrfull_eq_comp_msb_mux_reg ; FORCED_IF_ASYNCHRONOUS ; Compiler or HDL Assignment ; +; Synchronizer Identification ; dcfifo_8fi1 ; ; ws_dgrp_reg ; FORCED_IF_ASYNCHRONOUS ; Compiler or HDL Assignment ; ++-----------------------------+----------------+--------------+----------------------------+------------------------+----------------------------+ + + ++------------------------------------------------+ +; Incremental Compilation Preservation Summary ; ++-------------------------+----------------------+ +; Type ; Value ; ++-------------------------+----------------------+ +; Netlist ; ; +; -- Requested ; 0 / 0 ( 0.00 % ) ; +; -- Achieved ; 0 / 0 ( 0.00 % ) ; +; ; ; +; Placement ; ; +; -- Requested ; 0 / 13829 ( 0.00 % ) ; +; -- Achieved ; 0 / 13829 ( 0.00 % ) ; +; ; ; +; Routing (by Connection) ; ; +; -- Requested ; 0 / 0 ( 0.00 % ) ; +; -- Achieved ; 0 / 0 ( 0.00 % ) ; ++-------------------------+----------------------+ + + ++--------------------------------------------------------------------------------------------------------------------------------------------------+ +; Incremental Compilation Partition Settings ; ++----------------+----------------+-------------------+-------------------------+------------------------+------------------------------+----------+ +; Partition Name ; Partition Type ; Netlist Type Used ; Preservation Level Used ; Netlist Type Requested ; Preservation Level Requested ; Contents ; ++----------------+----------------+-------------------+-------------------------+------------------------+------------------------------+----------+ +; Top ; User-created ; Source File ; N/A ; Source File ; N/A ; ; ++----------------+----------------+-------------------+-------------------------+------------------------+------------------------------+----------+ + + ++--------------------------------------------------------------------------------------------+ +; Incremental Compilation Placement Preservation ; ++----------------+---------+-------------------+-------------------------+-------------------+ +; Partition Name ; # Nodes ; # Preserved Nodes ; Preservation Level Used ; Netlist Type Used ; ++----------------+---------+-------------------+-------------------------+-------------------+ +; Top ; 13829 ; 0 ; N/A ; Source File ; ++----------------+---------+-------------------+-------------------------+-------------------+ + + ++--------------+ +; Pin-Out File ; ++--------------+ +The pin-out file can be found in C:/FireBee/FPGA/firebee1.pin. + + ++----------------------------------------------------------------------------+ +; Fitter Resource Usage Summary ; ++---------------------------------------------+------------------------------+ +; Resource ; Usage ; ++---------------------------------------------+------------------------------+ +; Total logic elements ; 9,526 / 39,600 ( 24 % ) ; +; -- Combinational with no register ; 4963 ; +; -- Register only ; 1465 ; +; -- Combinational with a register ; 3098 ; +; ; ; +; Logic element usage by number of LUT inputs ; ; +; -- 4 input functions ; 4959 ; +; -- 3 input functions ; 1861 ; +; -- <=2 input functions ; 1241 ; +; -- Register only ; 1465 ; +; ; ; +; Logic elements by mode ; ; +; -- normal mode ; 7262 ; +; -- arithmetic mode ; 799 ; +; ; ; +; Total registers* ; 4,749 / 41,185 ( 12 % ) ; +; -- Dedicated logic registers ; 4,563 / 39,600 ( 12 % ) ; +; -- I/O registers ; 186 / 1,585 ( 12 % ) ; +; ; ; +; Total LABs: partially or completely used ; 756 / 2,475 ( 31 % ) ; +; User inserted logic elements ; 0 ; +; Virtual pins ; 0 ; +; I/O pins ; 295 / 332 ( 89 % ) ; +; -- Clock pins ; 7 / 8 ( 88 % ) ; +; -- Dedicated input pins ; 0 / 9 ( 0 % ) ; +; Global signals ; 20 ; +; M9Ks ; 23 / 126 ( 18 % ) ; +; Total block memory bits ; 109,344 / 1,161,216 ( 9 % ) ; +; Total block memory implementation bits ; 211,968 / 1,161,216 ( 18 % ) ; +; Embedded Multiplier 9-bit elements ; 6 / 252 ( 2 % ) ; +; PLLs ; 4 / 4 ( 100 % ) ; +; Global clocks ; 20 / 20 ( 100 % ) ; +; JTAGs ; 0 / 1 ( 0 % ) ; +; CRC blocks ; 0 / 1 ( 0 % ) ; +; ASMI blocks ; 0 / 1 ( 0 % ) ; +; Impedance control blocks ; 0 / 4 ( 0 % ) ; +; Average interconnect usage (total/H/V) ; 15% / 14% / 16% ; +; Peak interconnect usage (total/H/V) ; 59% / 54% / 65% ; +; Maximum fan-out node ; MAIN_CLK~input ; +; Maximum fan-out ; 2272 ; +; Highest non-global fan-out signal ; MAIN_CLK~input ; +; Highest non-global fan-out ; 2272 ; +; Total fan-out ; 44654 ; +; Average fan-out ; 3.02 ; ++---------------------------------------------+------------------------------+ +* Register count does not include registers inside RAM blocks or DSP blocks. + + + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Input Pins ; ++----------------+-------+----------+--------------+--------------+--------------+-----------------------+--------------------+--------+----------------+---------------+-----------------+----------+--------------+--------------+---------------------------+----------------------+ +; Name ; Pin # ; I/O Bank ; X coordinate ; Y coordinate ; Z coordinate ; Combinational Fan-Out ; Registered Fan-Out ; Global ; Input Register ; Power Up High ; PCI I/O Enabled ; Bus Hold ; Weak Pull Up ; I/O Standard ; Termination Control Block ; Location assigned by ; ++----------------+-------+----------+--------------+--------------+--------------+-----------------------+--------------------+--------+----------------+---------------+-----------------+----------+--------------+--------------+---------------------------+----------------------+ +; AMKB_RX ; Y2 ; 2 ; 0 ; 10 ; 21 ; 10 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; CLK33M ; AB12 ; 4 ; 36 ; 0 ; 0 ; 16 ; 0 ; yes ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; CTS ; H14 ; 7 ; 61 ; 43 ; 7 ; 3 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; DCD ; A19 ; 7 ; 56 ; 43 ; 21 ; 3 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; DVI_INT ; A11 ; 8 ; 34 ; 43 ; 14 ; 2 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; E0_INT ; G21 ; 6 ; 67 ; 22 ; 0 ; 2 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; FB_ALE ; R7 ; 2 ; 0 ; 2 ; 0 ; 33 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; FB_SIZE0 ; U8 ; 3 ; 3 ; 0 ; 21 ; 24 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; FB_SIZE1 ; Y4 ; 3 ; 3 ; 0 ; 14 ; 24 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; HD_DD ; F16 ; 7 ; 65 ; 43 ; 21 ; 3 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; IDE_INT ; G22 ; 6 ; 67 ; 22 ; 7 ; 3 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; IDE_RDY ; Y1 ; 2 ; 0 ; 9 ; 0 ; 3 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; LP_BUSY ; G7 ; 8 ; 3 ; 43 ; 28 ; 3 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; MAIN_CLK ; G2 ; 1 ; 0 ; 21 ; 0 ; 2272 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; MIDI_IN ; E12 ; 7 ; 36 ; 43 ; 7 ; 1 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; PIC_AMKB_RX ; L7 ; 2 ; 0 ; 18 ; 7 ; 1 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; PIC_INT ; AA2 ; 2 ; 0 ; 7 ; 21 ; 3 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; RI ; B19 ; 7 ; 56 ; 43 ; 14 ; 3 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; RxD ; H15 ; 7 ; 61 ; 43 ; 0 ; 4 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; SD_CARD_DEDECT ; M20 ; 5 ; 67 ; 19 ; 21 ; 0 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; SD_DATA0 ; B16 ; 7 ; 50 ; 43 ; 14 ; 0 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; SD_DATA1 ; A16 ; 7 ; 50 ; 43 ; 7 ; 0 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; SD_DATA2 ; B17 ; 7 ; 50 ; 43 ; 0 ; 0 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; SD_WP ; M19 ; 5 ; 67 ; 19 ; 14 ; 0 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; TOUT0 ; T22 ; 5 ; 67 ; 22 ; 21 ; 0 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; TRACK00 ; C19 ; 7 ; 61 ; 43 ; 28 ; 11 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; WP_CF_CARD ; T1 ; 2 ; 0 ; 21 ; 21 ; 0 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; nACSI_DRQ ; K7 ; 1 ; 0 ; 30 ; 14 ; 0 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; nACSI_INT ; J4 ; 1 ; 0 ; 29 ; 14 ; 0 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; nDACK0 ; B12 ; 7 ; 34 ; 43 ; 7 ; 0 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; nDACK1 ; A12 ; 7 ; 34 ; 43 ; 0 ; 1 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; nDCHG ; C17 ; 7 ; 56 ; 43 ; 7 ; 0 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; nFB_BURST ; T3 ; 2 ; 0 ; 7 ; 0 ; 0 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; nFB_CS1 ; T8 ; 3 ; 14 ; 0 ; 28 ; 59 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; nFB_CS2 ; T9 ; 3 ; 14 ; 0 ; 21 ; 95 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; nFB_CS3 ; V6 ; 3 ; 1 ; 0 ; 28 ; 0 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; nFB_OE ; R6 ; 2 ; 0 ; 3 ; 0 ; 101 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; nFB_WR ; T5 ; 2 ; 0 ; 4 ; 0 ; 235 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; nINDEX ; E16 ; 7 ; 65 ; 43 ; 28 ; 14 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; nMASTER ; T21 ; 5 ; 67 ; 22 ; 14 ; 0 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; nPCI_INTA ; AA1 ; 2 ; 0 ; 6 ; 0 ; 2 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; nPCI_INTB ; V4 ; 2 ; 0 ; 5 ; 0 ; 2 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; nPCI_INTC ; V3 ; 2 ; 0 ; 5 ; 7 ; 2 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; nPCI_INTD ; P6 ; 2 ; 0 ; 5 ; 14 ; 2 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; nRD_DATA ; A20 ; 7 ; 59 ; 43 ; 7 ; 0 ; 2 ; no ; yes ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; nRSTO_MCF ; B11 ; 8 ; 34 ; 43 ; 21 ; 27 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; nSCSI_C_D ; H1 ; 1 ; 0 ; 28 ; 0 ; 0 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; nSCSI_DRQ ; U1 ; 2 ; 0 ; 15 ; 21 ; 0 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; nSCSI_I_O ; J3 ; 1 ; 0 ; 28 ; 7 ; 0 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; nSCSI_MSG ; H2 ; 1 ; 0 ; 29 ; 21 ; 0 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; +; nWP ; D19 ; 7 ; 59 ; 43 ; 0 ; 4 ; 0 ; no ; no ; no ; yes ; no ; Off ; 3.3-V LVTTL ; -- ; User ; ++----------------+-------+----------+--------------+--------------+--------------+-----------------------+--------------------+--------+----------------+---------------+-----------------+----------+--------------+--------------+---------------------------+----------------------+ + + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Output Pins ; ++---------------+-------+----------+--------------+--------------+--------------+-----------------+------------------------+---------------+-----------+-----------------+------------+---------------+----------+--------------+--------------+------------------+-----------------------------------+---------------------------+----------------------------+-----------------------------+----------------------+------+----------------------+---------------------+ +; Name ; Pin # ; I/O Bank ; X coordinate ; Y coordinate ; Z coordinate ; Output Register ; Output Enable Register ; Power Up High ; Slew Rate ; PCI I/O Enabled ; Open Drain ; TRI Primitive ; Bus Hold ; Weak Pull Up ; I/O Standard ; Current Strength ; Termination ; Termination Control Block ; Output Buffer Pre-emphasis ; Voltage Output Differential ; Location assigned by ; Load ; Output Enable Source ; Output Enable Group ; ++---------------+-------+----------+--------------+--------------+--------------+-----------------+------------------------+---------------+-----------+-----------------+------------+---------------+----------+--------------+--------------+------------------+-----------------------------------+---------------------------+----------------------------+-----------------------------+----------------------+------+----------------------+---------------------+ +; ACSI_A1 ; M6 ; 2 ; 0 ; 20 ; 7 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; ACSI_DIR ; L6 ; 2 ; 0 ; 20 ; 0 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; AMKB_TX ; N1 ; 2 ; 0 ; 19 ; 21 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVCMOS ; 2mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; BA[0] ; W19 ; 5 ; 67 ; 5 ; 7 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; BA[1] ; AA19 ; 4 ; 56 ; 0 ; 0 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; CLK24M576 ; AB10 ; 3 ; 34 ; 0 ; 0 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; CLK25M ; T4 ; 2 ; 0 ; 4 ; 14 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; CLKUSB ; J1 ; 1 ; 0 ; 28 ; 21 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; DDR_CLK ; AB17 ; 4 ; 54 ; 0 ; 21 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; DSA_D ; F15 ; 7 ; 63 ; 43 ; 0 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; DTR ; D15 ; 7 ; 54 ; 43 ; 14 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; HSYNC_PAD ; K21 ; 6 ; 67 ; 27 ; 14 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.0-V LVTTL ; 16mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; IDE_RES ; M5 ; 2 ; 0 ; 18 ; 14 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; LED_FPGA_OK ; N19 ; 5 ; 67 ; 15 ; 0 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 2.5 V ; 4mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; LPDIR ; E5 ; 8 ; 1 ; 43 ; 21 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; LP_STR ; E6 ; 8 ; 1 ; 43 ; 14 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; MIDI_OLR ; H5 ; 1 ; 0 ; 31 ; 14 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; MIDI_TLR ; B2 ; 1 ; 0 ; 41 ; 21 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; PIXEL_CLK_PAD ; F19 ; 6 ; 67 ; 37 ; 14 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.0-V LVTTL ; 16mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; RTS ; B18 ; 7 ; 54 ; 43 ; 7 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; SCSI_DIR ; J7 ; 1 ; 0 ; 30 ; 7 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; SD_CLK ; C15 ; 7 ; 50 ; 43 ; 21 ; no ; no ; no ; 2 ; no ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; TIN0 ; R5 ; 2 ; 0 ; 4 ; 21 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; TxD ; A18 ; 7 ; 54 ; 43 ; 0 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VA[0] ; W20 ; 5 ; 67 ; 3 ; 0 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VA[10] ; V21 ; 5 ; 67 ; 10 ; 0 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VA[11] ; U19 ; 5 ; 67 ; 7 ; 7 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VA[12] ; AA18 ; 4 ; 54 ; 0 ; 14 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VA[1] ; W22 ; 5 ; 67 ; 7 ; 0 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VA[2] ; W21 ; 5 ; 67 ; 8 ; 21 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VA[3] ; Y22 ; 5 ; 67 ; 6 ; 14 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VA[4] ; AA22 ; 5 ; 67 ; 2 ; 21 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VA[5] ; Y21 ; 5 ; 67 ; 7 ; 21 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VA[6] ; AA21 ; 5 ; 67 ; 2 ; 14 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VA[7] ; AA20 ; 4 ; 61 ; 0 ; 21 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VA[8] ; AB20 ; 4 ; 61 ; 0 ; 14 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VA[9] ; AB19 ; 4 ; 59 ; 0 ; 28 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VB[0] ; G18 ; 6 ; 67 ; 37 ; 0 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.0-V LVTTL ; 16mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VB[1] ; H17 ; 6 ; 67 ; 38 ; 21 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.0-V LVTTL ; 16mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VB[2] ; C22 ; 6 ; 67 ; 38 ; 14 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.0-V LVTTL ; 16mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VB[3] ; C21 ; 6 ; 67 ; 38 ; 7 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.0-V LVTTL ; 16mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VB[4] ; B22 ; 6 ; 67 ; 39 ; 21 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.0-V LVTTL ; 16mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VB[5] ; B21 ; 6 ; 67 ; 39 ; 14 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.0-V LVTTL ; 16mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VB[6] ; C20 ; 6 ; 67 ; 39 ; 7 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.0-V LVTTL ; 16mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VB[7] ; D20 ; 6 ; 67 ; 40 ; 21 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.0-V LVTTL ; 16mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VCKE ; U15 ; 4 ; 50 ; 0 ; 7 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VDM[0] ; AA16 ; 4 ; 45 ; 0 ; 21 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VDM[1] ; V16 ; 4 ; 61 ; 0 ; 7 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VDM[2] ; U20 ; 5 ; 67 ; 7 ; 14 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VDM[3] ; T17 ; 5 ; 67 ; 3 ; 21 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VG[0] ; H19 ; 6 ; 67 ; 34 ; 14 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.0-V LVTTL ; 16mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VG[1] ; E22 ; 6 ; 67 ; 34 ; 7 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.0-V LVTTL ; 16mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VG[2] ; E21 ; 6 ; 67 ; 34 ; 0 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.0-V LVTTL ; 16mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VG[3] ; H18 ; 6 ; 67 ; 35 ; 0 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.0-V LVTTL ; 16mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VG[4] ; J17 ; 6 ; 67 ; 36 ; 21 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.0-V LVTTL ; 16mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VG[5] ; H16 ; 6 ; 67 ; 36 ; 14 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.0-V LVTTL ; 16mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VG[6] ; D22 ; 6 ; 67 ; 36 ; 7 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.0-V LVTTL ; 16mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VG[7] ; D21 ; 6 ; 67 ; 36 ; 0 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.0-V LVTTL ; 16mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VR[0] ; J22 ; 6 ; 67 ; 28 ; 21 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.0-V LVTTL ; 16mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VR[1] ; J21 ; 6 ; 67 ; 28 ; 14 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.0-V LVTTL ; 16mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VR[2] ; H22 ; 6 ; 67 ; 28 ; 7 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.0-V LVTTL ; 16mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VR[3] ; H21 ; 6 ; 67 ; 28 ; 0 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.0-V LVTTL ; 16mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VR[4] ; K17 ; 6 ; 67 ; 29 ; 0 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.0-V LVTTL ; 16mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VR[5] ; K18 ; 6 ; 67 ; 30 ; 21 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.0-V LVTTL ; 16mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VR[6] ; J18 ; 6 ; 67 ; 31 ; 21 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.0-V LVTTL ; 16mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VR[7] ; F22 ; 6 ; 67 ; 31 ; 7 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.0-V LVTTL ; 16mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; VSYNC_PAD ; K19 ; 6 ; 67 ; 26 ; 21 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.0-V LVTTL ; 16mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; YM_QA ; A17 ; 7 ; 52 ; 43 ; 28 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; YM_QB ; G13 ; 7 ; 52 ; 43 ; 14 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; YM_QC ; E15 ; 7 ; 54 ; 43 ; 21 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nACSI_ACK ; M4 ; 2 ; 0 ; 19 ; 0 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nACSI_CS ; M2 ; 2 ; 0 ; 20 ; 14 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nACSI_RESET ; M1 ; 2 ; 0 ; 20 ; 21 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nBLANK_PAD ; G17 ; 6 ; 67 ; 41 ; 14 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.0-V LVTTL ; 16mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nCF_CS0 ; W2 ; 2 ; 0 ; 10 ; 7 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nCF_CS1 ; W1 ; 2 ; 0 ; 10 ; 14 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nDDR_CLK ; AA17 ; 4 ; 54 ; 0 ; 28 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nDREQ1 ; E11 ; 7 ; 36 ; 43 ; 14 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nFB_TA ; T7 ; 2 ; 0 ; 2 ; 7 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nIDE_CS0 ; R2 ; 2 ; 0 ; 16 ; 0 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nIDE_CS1 ; R1 ; 2 ; 0 ; 16 ; 7 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nIDE_RD ; P1 ; 2 ; 0 ; 17 ; 21 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nIDE_WR ; P2 ; 2 ; 0 ; 17 ; 14 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nIRQ[2] ; F21 ; 6 ; 67 ; 31 ; 0 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.0-V LVCMOS ; Default ; Series 50 Ohm without Calibration ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nIRQ[3] ; H20 ; 6 ; 67 ; 34 ; 21 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.0-V LVCMOS ; Default ; Series 50 Ohm without Calibration ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nIRQ[4] ; F20 ; 6 ; 67 ; 37 ; 21 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.0-V LVCMOS ; Default ; Series 50 Ohm without Calibration ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nIRQ[5] ; P5 ; 2 ; 0 ; 12 ; 14 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nIRQ[6] ; P7 ; 2 ; 0 ; 7 ; 14 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nIRQ[7] ; N7 ; 2 ; 0 ; 7 ; 7 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nMOT_ON ; G16 ; 7 ; 63 ; 43 ; 7 ; yes ; no ; yes ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nPD_VGA ; V1 ; 2 ; 0 ; 13 ; 7 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nROM3 ; P3 ; 2 ; 0 ; 15 ; 0 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nROM4 ; U2 ; 2 ; 0 ; 15 ; 14 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nRP_LDS ; N5 ; 2 ; 0 ; 16 ; 14 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nRP_UDS ; P4 ; 2 ; 0 ; 16 ; 21 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nSCSI_ACK ; N2 ; 2 ; 0 ; 19 ; 14 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nSCSI_ATN ; M3 ; 2 ; 0 ; 19 ; 7 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nSDSEL ; B20 ; 7 ; 59 ; 43 ; 14 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nSRBHE ; B4 ; 8 ; 7 ; 43 ; 7 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nSRBLE ; A4 ; 8 ; 9 ; 43 ; 28 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nSRCS ; B8 ; 8 ; 25 ; 43 ; 7 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nSROE ; F11 ; 7 ; 36 ; 43 ; 21 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nSRWE ; F8 ; 8 ; 7 ; 43 ; 14 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nSTEP ; F14 ; 7 ; 63 ; 43 ; 28 ; yes ; no ; yes ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nSTEP_DIR ; G15 ; 7 ; 63 ; 43 ; 21 ; yes ; no ; yes ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nSYNC ; F17 ; 6 ; 67 ; 41 ; 21 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.0-V LVCMOS ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nVCAS ; AB18 ; 4 ; 52 ; 0 ; 0 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nVCS ; T18 ; 5 ; 67 ; 3 ; 14 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nVRAS ; W17 ; 4 ; 59 ; 0 ; 0 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nVWE ; Y17 ; 4 ; 61 ; 0 ; 28 ; no ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nWR ; G14 ; 7 ; 54 ; 43 ; 28 ; yes ; no ; no ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; +; nWR_GATE ; D17 ; 7 ; 61 ; 43 ; 14 ; yes ; no ; yes ; 2 ; no ; no ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; no ; no ; User ; 0 pF ; - ; - ; ++---------------+-------+----------+--------------+--------------+--------------+-----------------+------------------------+---------------+-----------+-----------------+------------+---------------+----------+--------------+--------------+------------------+-----------------------------------+---------------------------+----------------------------+-----------------------------+----------------------+------+----------------------+---------------------+ + + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Bidir Pins ; ++-------------+-------+----------+--------------+--------------+--------------+-----------------------+--------------------+--------+----------------+-----------------+------------------------+---------------+-----------+-----------------+------------+----------+--------------+--------------+------------------+--------------------+---------------------------+----------------------+------+---------------------------------------------------------------------------------------------------------------+---------------------+ +; Name ; Pin # ; I/O Bank ; X coordinate ; Y coordinate ; Z coordinate ; Combinational Fan-Out ; Registered Fan-Out ; Global ; Input Register ; Output Register ; Output Enable Register ; Power Up High ; Slew Rate ; PCI I/O Enabled ; Open Drain ; Bus Hold ; Weak Pull Up ; I/O Standard ; Current Strength ; Output Termination ; Termination Control Block ; Location assigned by ; Load ; Output Enable Source ; Output Enable Group ; ++-------------+-------+----------+--------------+--------------+--------------+-----------------------+--------------------+--------+----------------+-----------------+------------------------+---------------+-----------+-----------------+------------+----------+--------------+--------------+------------------+--------------------+---------------------------+----------------------+------+---------------------------------------------------------------------------------------------------------------+---------------------+ +; ACSI_D[0] ; B1 ; 1 ; 0 ; 40 ; 0 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; yes ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; ACSI_D[1] ; G5 ; 1 ; 0 ; 40 ; 7 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; yes ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; ACSI_D[2] ; E3 ; 1 ; 0 ; 39 ; 7 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; yes ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; ACSI_D[3] ; C2 ; 1 ; 0 ; 38 ; 14 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; yes ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; ACSI_D[4] ; C1 ; 1 ; 0 ; 38 ; 21 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; yes ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; ACSI_D[5] ; D2 ; 1 ; 0 ; 37 ; 0 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; yes ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; ACSI_D[6] ; H7 ; 1 ; 0 ; 37 ; 14 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; yes ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; ACSI_D[7] ; H6 ; 1 ; 0 ; 37 ; 21 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; yes ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; FB_AD[0] ; Y3 ; 3 ; 3 ; 0 ; 7 ; 21 ; 25 ; no ; yes ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[13]~104 (inverted) ; - ; +; FB_AD[10] ; W7 ; 3 ; 14 ; 0 ; 14 ; 19 ; 27 ; no ; yes ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[13]~104 (inverted) ; - ; +; FB_AD[11] ; Y7 ; 3 ; 14 ; 0 ; 7 ; 19 ; 14 ; no ; yes ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[13]~104 (inverted) ; - ; +; FB_AD[12] ; U9 ; 3 ; 16 ; 0 ; 21 ; 21 ; 8 ; no ; yes ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[13]~104 (inverted) ; - ; +; FB_AD[13] ; V8 ; 3 ; 16 ; 0 ; 14 ; 21 ; 13 ; no ; yes ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[13]~104 (inverted) ; - ; +; FB_AD[14] ; W8 ; 3 ; 16 ; 0 ; 7 ; 20 ; 13 ; no ; yes ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[13]~104 (inverted) ; - ; +; FB_AD[15] ; AA7 ; 3 ; 16 ; 0 ; 0 ; 19 ; 11 ; no ; yes ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[13]~104 (inverted) ; - ; +; FB_AD[16] ; AB7 ; 3 ; 18 ; 0 ; 21 ; 142 ; 10 ; no ; yes ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[16]~78 (inverted) ; - ; +; FB_AD[17] ; Y8 ; 3 ; 18 ; 0 ; 14 ; 144 ; 9 ; no ; yes ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[16]~78 (inverted) ; - ; +; FB_AD[18] ; V9 ; 3 ; 20 ; 0 ; 21 ; 144 ; 9 ; no ; yes ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[18]~183 (inverted) ; - ; +; FB_AD[19] ; V10 ; 3 ; 20 ; 0 ; 14 ; 142 ; 5 ; no ; yes ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[18]~259 (inverted) ; - ; +; FB_AD[1] ; Y6 ; 3 ; 5 ; 0 ; 14 ; 20 ; 158 ; no ; yes ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[13]~104 (inverted) ; - ; +; FB_AD[20] ; T10 ; 3 ; 18 ; 0 ; 7 ; 143 ; 3 ; no ; yes ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[18]~183 (inverted) ; - ; +; FB_AD[21] ; U10 ; 3 ; 22 ; 0 ; 14 ; 142 ; 3 ; no ; yes ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[18]~183 (inverted) ; - ; +; FB_AD[22] ; AA8 ; 3 ; 22 ; 0 ; 7 ; 139 ; 3 ; no ; yes ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[18]~183 (inverted) ; - ; +; FB_AD[23] ; AB8 ; 3 ; 22 ; 0 ; 0 ; 136 ; 2 ; no ; yes ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[18]~259 (inverted) ; - ; +; FB_AD[24] ; T11 ; 3 ; 18 ; 0 ; 0 ; 62 ; 3 ; no ; yes ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[26]~224 (inverted) ; - ; +; FB_AD[25] ; AA9 ; 3 ; 27 ; 0 ; 7 ; 58 ; 3 ; no ; yes ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[26]~224 (inverted) ; - ; +; FB_AD[26] ; AB9 ; 3 ; 27 ; 0 ; 0 ; 56 ; 11 ; no ; yes ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[26]~203 (inverted) ; - ; +; FB_AD[27] ; U11 ; 3 ; 29 ; 0 ; 28 ; 47 ; 5 ; no ; yes ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[31]~141 (inverted) ; - ; +; FB_AD[28] ; V11 ; 3 ; 34 ; 0 ; 28 ; 36 ; 1 ; no ; yes ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[31]~141 (inverted) ; - ; +; FB_AD[29] ; W10 ; 3 ; 34 ; 0 ; 21 ; 32 ; 1 ; no ; yes ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[31]~141 (inverted) ; - ; +; FB_AD[2] ; AA3 ; 3 ; 7 ; 0 ; 28 ; 20 ; 120 ; no ; yes ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[13]~104 (inverted) ; - ; +; FB_AD[30] ; Y10 ; 3 ; 34 ; 0 ; 14 ; 36 ; 1 ; no ; yes ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[31]~141 (inverted) ; - ; +; FB_AD[31] ; AA10 ; 3 ; 34 ; 0 ; 7 ; 35 ; 1 ; no ; yes ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[31]~141 (inverted) ; - ; +; FB_AD[3] ; AB3 ; 3 ; 7 ; 0 ; 21 ; 20 ; 97 ; no ; yes ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[13]~104 (inverted) ; - ; +; FB_AD[4] ; W6 ; 3 ; 7 ; 0 ; 14 ; 20 ; 83 ; no ; yes ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[13]~104 (inverted) ; - ; +; FB_AD[5] ; V7 ; 3 ; 7 ; 0 ; 7 ; 20 ; 161 ; no ; yes ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[13]~104 (inverted) ; - ; +; FB_AD[6] ; AA4 ; 3 ; 9 ; 0 ; 28 ; 19 ; 27 ; no ; yes ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[13]~104 (inverted) ; - ; +; FB_AD[7] ; AB4 ; 3 ; 9 ; 0 ; 21 ; 18 ; 26 ; no ; yes ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[13]~104 (inverted) ; - ; +; FB_AD[8] ; AA5 ; 3 ; 9 ; 0 ; 14 ; 20 ; 34 ; no ; yes ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[13]~104 (inverted) ; - ; +; FB_AD[9] ; AB5 ; 3 ; 9 ; 0 ; 7 ; 20 ; 22 ; no ; yes ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[13]~104 (inverted) ; - ; +; IO[0] ; A8 ; 8 ; 25 ; 43 ; 0 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; IO[10] ; B15 ; 7 ; 45 ; 43 ; 14 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; IO[11] ; C13 ; 7 ; 45 ; 43 ; 21 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; IO[12] ; D13 ; 7 ; 45 ; 43 ; 28 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; IO[13] ; E13 ; 7 ; 41 ; 43 ; 7 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; IO[14] ; A14 ; 7 ; 41 ; 43 ; 14 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; IO[15] ; B14 ; 7 ; 38 ; 43 ; 0 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; IO[16] ; A13 ; 7 ; 38 ; 43 ; 21 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; IO[17] ; B13 ; 7 ; 38 ; 43 ; 28 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; IO[1] ; A7 ; 8 ; 25 ; 43 ; 14 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; IO[2] ; B7 ; 8 ; 25 ; 43 ; 21 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; IO[3] ; A6 ; 8 ; 25 ; 43 ; 28 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; IO[4] ; B6 ; 8 ; 22 ; 43 ; 0 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; IO[5] ; E9 ; 8 ; 22 ; 43 ; 28 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; IO[6] ; C8 ; 8 ; 20 ; 43 ; 0 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; IO[7] ; C7 ; 8 ; 20 ; 43 ; 7 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; IO[8] ; G10 ; 8 ; 11 ; 43 ; 28 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; IO[9] ; A15 ; 7 ; 45 ; 43 ; 7 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; LP_D[0] ; F7 ; 8 ; 3 ; 43 ; 21 ; 1 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_A[6]~_Duplicate_1 ; - ; +; LP_D[1] ; C4 ; 8 ; 3 ; 43 ; 0 ; 1 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_A[6]~_Duplicate_1 ; - ; +; LP_D[2] ; C3 ; 8 ; 5 ; 43 ; 28 ; 1 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_A[6]~_Duplicate_1 ; - ; +; LP_D[3] ; E7 ; 8 ; 5 ; 43 ; 21 ; 1 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_A[6]~_Duplicate_1 ; - ; +; LP_D[4] ; D6 ; 8 ; 5 ; 43 ; 14 ; 1 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_A[6]~_Duplicate_1 ; - ; +; LP_D[5] ; B3 ; 8 ; 5 ; 43 ; 7 ; 1 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_A[6]~_Duplicate_1 ; - ; +; LP_D[6] ; A3 ; 8 ; 5 ; 43 ; 0 ; 1 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_A[6]~_Duplicate_1 ; - ; +; LP_D[7] ; G8 ; 8 ; 7 ; 43 ; 21 ; 1 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_A[6]~_Duplicate_1 ; - ; +; SCSI_D[0] ; J6 ; 1 ; 0 ; 36 ; 0 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; SCSI_D[1] ; E1 ; 1 ; 0 ; 36 ; 14 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; SCSI_D[2] ; F2 ; 1 ; 0 ; 35 ; 7 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; SCSI_D[3] ; F1 ; 1 ; 0 ; 35 ; 14 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; SCSI_D[4] ; G4 ; 1 ; 0 ; 41 ; 0 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; SCSI_D[5] ; G3 ; 1 ; 0 ; 41 ; 7 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; SCSI_D[6] ; L8 ; 1 ; 0 ; 31 ; 21 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; SCSI_D[7] ; K8 ; 1 ; 0 ; 30 ; 0 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; SCSI_PAR ; M7 ; 2 ; 0 ; 11 ; 0 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; SD_CD_DATA3 ; F13 ; 7 ; 45 ; 43 ; 0 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; yes ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; SD_CMD_D1 ; E14 ; 7 ; 48 ; 43 ; 7 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; yes ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; SRD[0] ; B5 ; 8 ; 11 ; 43 ; 14 ; 1 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; DSP:Mathias_Alles|nSRWE~1 (inverted) ; - ; +; SRD[10] ; A9 ; 8 ; 32 ; 43 ; 28 ; 1 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; DSP:Mathias_Alles|nSRWE~1 (inverted) ; - ; +; SRD[11] ; B10 ; 8 ; 32 ; 43 ; 21 ; 1 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; DSP:Mathias_Alles|nSRWE~1 (inverted) ; - ; +; SRD[12] ; D10 ; 8 ; 32 ; 43 ; 0 ; 1 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; DSP:Mathias_Alles|nSRWE~1 (inverted) ; - ; +; SRD[13] ; F10 ; 8 ; 9 ; 43 ; 0 ; 1 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; DSP:Mathias_Alles|nSRWE~1 (inverted) ; - ; +; SRD[14] ; G9 ; 8 ; 1 ; 43 ; 28 ; 1 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; DSP:Mathias_Alles|nSRWE~1 (inverted) ; - ; +; SRD[15] ; H10 ; 8 ; 18 ; 43 ; 0 ; 1 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; DSP:Mathias_Alles|nSRWE~1 (inverted) ; - ; +; SRD[1] ; A5 ; 8 ; 14 ; 43 ; 14 ; 1 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; DSP:Mathias_Alles|nSRWE~1 (inverted) ; - ; +; SRD[2] ; C6 ; 8 ; 9 ; 43 ; 7 ; 1 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; DSP:Mathias_Alles|nSRWE~1 (inverted) ; - ; +; SRD[3] ; G11 ; 8 ; 27 ; 43 ; 0 ; 1 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; DSP:Mathias_Alles|nSRWE~1 (inverted) ; - ; +; SRD[4] ; C10 ; 8 ; 29 ; 43 ; 21 ; 1 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; DSP:Mathias_Alles|nSRWE~1 (inverted) ; - ; +; SRD[5] ; F9 ; 8 ; 1 ; 43 ; 7 ; 1 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; DSP:Mathias_Alles|nSRWE~1 (inverted) ; - ; +; SRD[6] ; E10 ; 8 ; 32 ; 43 ; 7 ; 1 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; DSP:Mathias_Alles|nSRWE~1 (inverted) ; - ; +; SRD[7] ; H11 ; 8 ; 20 ; 43 ; 28 ; 1 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; DSP:Mathias_Alles|nSRWE~1 (inverted) ; - ; +; SRD[8] ; B9 ; 8 ; 29 ; 43 ; 0 ; 1 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; DSP:Mathias_Alles|nSRWE~1 (inverted) ; - ; +; SRD[9] ; A10 ; 8 ; 32 ; 43 ; 14 ; 1 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; DSP:Mathias_Alles|nSRWE~1 (inverted) ; - ; +; VDQS[0] ; AA15 ; 4 ; 43 ; 0 ; 14 ; 0 ; 0 ; no ; no ; no ; yes ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst90~_Duplicate_3 ; - ; +; VDQS[1] ; W15 ; 4 ; 52 ; 0 ; 21 ; 0 ; 0 ; no ; no ; no ; yes ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst90~_Duplicate_2 ; - ; +; VDQS[2] ; U22 ; 5 ; 67 ; 11 ; 7 ; 0 ; 0 ; no ; no ; no ; yes ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst90~_Duplicate_1 ; - ; +; VDQS[3] ; T16 ; 4 ; 63 ; 0 ; 7 ; 0 ; 0 ; no ; no ; no ; yes ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst90 ; - ; +; VD[0] ; M22 ; 5 ; 67 ; 18 ; 7 ; 3 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst37 (inverted) ; - ; +; VD[10] ; P17 ; 5 ; 67 ; 10 ; 14 ; 3 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst37 (inverted) ; - ; +; VD[11] ; R21 ; 5 ; 67 ; 13 ; 0 ; 3 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst37 (inverted) ; - ; +; VD[12] ; N17 ; 5 ; 67 ; 17 ; 21 ; 3 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst37 (inverted) ; - ; +; VD[13] ; P20 ; 5 ; 67 ; 14 ; 21 ; 3 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst37 (inverted) ; - ; +; VD[14] ; R22 ; 5 ; 67 ; 13 ; 7 ; 3 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst37 (inverted) ; - ; +; VD[15] ; N20 ; 5 ; 67 ; 15 ; 7 ; 3 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst37 (inverted) ; - ; +; VD[16] ; T12 ; 4 ; 45 ; 0 ; 7 ; 3 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst37 (inverted) ; - ; +; VD[17] ; Y13 ; 4 ; 43 ; 0 ; 21 ; 3 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst37 (inverted) ; - ; +; VD[18] ; AA13 ; 4 ; 38 ; 0 ; 28 ; 3 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst37 (inverted) ; - ; +; VD[19] ; V14 ; 4 ; 50 ; 0 ; 21 ; 3 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst37 (inverted) ; - ; +; VD[1] ; M21 ; 5 ; 67 ; 18 ; 0 ; 3 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst37 (inverted) ; - ; +; VD[20] ; U13 ; 4 ; 50 ; 0 ; 28 ; 3 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst37 (inverted) ; - ; +; VD[21] ; V15 ; 4 ; 50 ; 0 ; 0 ; 3 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst37 (inverted) ; - ; +; VD[22] ; W14 ; 4 ; 48 ; 0 ; 21 ; 3 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst37 (inverted) ; - ; +; VD[23] ; AB16 ; 4 ; 45 ; 0 ; 14 ; 3 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst37 (inverted) ; - ; +; VD[24] ; AB15 ; 4 ; 43 ; 0 ; 7 ; 3 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst37 (inverted) ; - ; +; VD[25] ; AA14 ; 4 ; 38 ; 0 ; 14 ; 3 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst37 (inverted) ; - ; +; VD[26] ; AB14 ; 4 ; 38 ; 0 ; 7 ; 3 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst37 (inverted) ; - ; +; VD[27] ; V13 ; 4 ; 48 ; 0 ; 28 ; 3 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst37 (inverted) ; - ; +; VD[28] ; W13 ; 4 ; 43 ; 0 ; 28 ; 3 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst37 (inverted) ; - ; +; VD[29] ; AB13 ; 4 ; 38 ; 0 ; 21 ; 3 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst37 (inverted) ; - ; +; VD[2] ; P22 ; 5 ; 67 ; 14 ; 7 ; 3 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst37 (inverted) ; - ; +; VD[30] ; V12 ; 4 ; 41 ; 0 ; 28 ; 3 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst37 (inverted) ; - ; +; VD[31] ; U12 ; 4 ; 43 ; 0 ; 0 ; 3 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst37 (inverted) ; - ; +; VD[3] ; R20 ; 5 ; 67 ; 11 ; 21 ; 3 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst37 (inverted) ; - ; +; VD[4] ; P21 ; 5 ; 67 ; 14 ; 0 ; 3 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst37 (inverted) ; - ; +; VD[5] ; R17 ; 5 ; 67 ; 10 ; 21 ; 3 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst37 (inverted) ; - ; +; VD[6] ; R19 ; 5 ; 67 ; 12 ; 14 ; 3 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst37 (inverted) ; - ; +; VD[7] ; U21 ; 5 ; 67 ; 11 ; 0 ; 3 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst37 (inverted) ; - ; +; VD[8] ; V22 ; 5 ; 67 ; 10 ; 7 ; 3 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst37 (inverted) ; - ; +; VD[9] ; R18 ; 5 ; 67 ; 12 ; 21 ; 3 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 2.5 V ; 12mA ; Off ; -- ; User ; 0 pF ; Video:Fredi_Aschwanden|inst37 (inverted) ; - ; +; nSCSI_BUSY ; N8 ; 2 ; 0 ; 11 ; 14 ; 0 ; 0 ; no ; no ; yes ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; nSCSI_RST ; N6 ; 2 ; 0 ; 12 ; 21 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; +; nSCSI_SEL ; M8 ; 2 ; 0 ; 11 ; 7 ; 0 ; 0 ; no ; no ; no ; no ; no ; 2 ; yes ; no ; no ; Off ; 3.3-V LVTTL ; 8mA ; Off ; -- ; User ; 0 pF ; - ; - ; ++-------------+-------+----------+--------------+--------------+--------------+-----------------------+--------------------+--------+----------------+-----------------+------------------------+---------------+-----------+-----------------+------------+----------+--------------+--------------+------------------+--------------------+---------------------------+----------------------+------+---------------------------------------------------------------------------------------------------------------+---------------------+ + + ++--------------------------------------------------------------------------------------------------------------------------------------------+ +; Dual Purpose and Dedicated Pins ; ++----------+------------------------------------------+--------------------------------+-------------------------+---------------------------+ +; Location ; Pin Name ; Reserved As ; User Signal Name ; Pin Type ; ++----------+------------------------------------------+--------------------------------+-------------------------+---------------------------+ +; D1 ; DIFFIO_L8n, DATA1, ASDO ; As input tri-stated ; ~ALTERA_ASDO_DATA1~ ; Dual Purpose Pin ; +; E2 ; DIFFIO_L10p, FLASH_nCE, nCSO ; As input tri-stated ; ~ALTERA_FLASH_nCE_nCSO~ ; Dual Purpose Pin ; +; K6 ; nSTATUS ; - ; - ; Dedicated Programming Pin ; +; K2 ; DCLK ; As input tri-stated ; ~ALTERA_DCLK~ ; Dual Purpose Pin ; +; K1 ; DATA0 ; As input tri-stated ; ~ALTERA_DATA0~ ; Dual Purpose Pin ; +; K5 ; nCONFIG ; - ; - ; Dedicated Programming Pin ; +; L3 ; nCE ; - ; - ; Dedicated Programming Pin ; +; N22 ; DIFFIO_R32n, DEV_OE ; Reserved as secondary function ; ~ALTERA_DEV_OE~ ; Dual Purpose Pin ; +; N21 ; DIFFIO_R32p, DEV_CLRn ; Reserved as secondary function ; ~ALTERA_DEV_CLRn~ ; Dual Purpose Pin ; +; M18 ; CONF_DONE ; - ; - ; Dedicated Programming Pin ; +; M17 ; MSEL0 ; - ; - ; Dedicated Programming Pin ; +; L18 ; MSEL1 ; - ; - ; Dedicated Programming Pin ; +; L17 ; MSEL2 ; - ; - ; Dedicated Programming Pin ; +; K20 ; MSEL3 ; - ; - ; Dedicated Programming Pin ; +; K22 ; DIFFIO_R24n, nCEO ; Use as programming pin ; ~ALTERA_nCEO~ ; Dual Purpose Pin ; +; K21 ; DIFFIO_R24p, CLKUSR ; Use as general purpose IO ; HSYNC_PAD ; Dual Purpose Pin ; +; E22 ; DIFFIO_R12n, nWE ; Use as regular IO ; VG[1] ; Dual Purpose Pin ; +; E21 ; DIFFIO_R12p, nOE ; Use as regular IO ; VG[2] ; Dual Purpose Pin ; +; F20 ; DIFFIO_R8n, nAVD ; Use as regular IO ; nIRQ[4] ; Dual Purpose Pin ; +; F19 ; DIFFIO_R8n, nAVD ; - ; PIXEL_CLK_PAD ; Dual Purpose Pin ; +; G18 ; DIFFIO_R7n, PADD23 ; Use as regular IO ; VB[0] ; Dual Purpose Pin ; +; B22 ; DIFFIO_R5n, PADD22 ; Use as regular IO ; VB[4] ; Dual Purpose Pin ; +; B21 ; DIFFIO_R5p, PADD21 ; Use as regular IO ; VB[5] ; Dual Purpose Pin ; +; C20 ; DIFFIO_R4n, PADD20, DQS2R/CQ3R,CDPCLK5 ; Use as regular IO ; VB[6] ; Dual Purpose Pin ; +; B18 ; DIFFIO_T45p, PADD0 ; Use as regular IO ; RTS ; Dual Purpose Pin ; +; A17 ; DIFFIO_T41n, PADD1 ; Use as regular IO ; YM_QA ; Dual Purpose Pin ; +; B17 ; DIFFIO_T41p, PADD2 ; Use as regular IO ; SD_DATA2 ; Dual Purpose Pin ; +; E14 ; DIFFIO_T38n, PADD3 ; Use as regular IO ; SD_CMD_D1 ; Dual Purpose Pin ; +; F13 ; DIFFIO_T37p, PADD4, DQS2T/CQ3T,DPCLK8 ; Use as regular IO ; SD_CD_DATA3 ; Dual Purpose Pin ; +; A15 ; DIFFIO_T36n, PADD5 ; Use as regular IO ; IO[9] ; Dual Purpose Pin ; +; B15 ; DIFFIO_T36p, PADD6 ; Use as regular IO ; IO[10] ; Dual Purpose Pin ; +; C13 ; DIFFIO_T35n, PADD7 ; Use as regular IO ; IO[11] ; Dual Purpose Pin ; +; D13 ; DIFFIO_T35p, PADD8 ; Use as regular IO ; IO[12] ; Dual Purpose Pin ; +; A14 ; DIFFIO_T31n, PADD9 ; Use as regular IO ; IO[14] ; Dual Purpose Pin ; +; B14 ; DIFFIO_T31p, PADD10 ; Use as regular IO ; IO[15] ; Dual Purpose Pin ; +; A13 ; DIFFIO_T29n, PADD11 ; Use as regular IO ; IO[16] ; Dual Purpose Pin ; +; B13 ; DIFFIO_T29p, PADD12, DQS4T/CQ5T,DPCLK9 ; Use as regular IO ; IO[17] ; Dual Purpose Pin ; +; E11 ; DIFFIO_T27n, PADD13 ; Use as regular IO ; nDREQ1 ; Dual Purpose Pin ; +; F11 ; DIFFIO_T27p, PADD14 ; Use as regular IO ; nSROE ; Dual Purpose Pin ; +; B10 ; DIFFIO_T25p, PADD15 ; Use as regular IO ; SRD[11] ; Dual Purpose Pin ; +; A9 ; DIFFIO_T24n, PADD16 ; Use as regular IO ; SRD[10] ; Dual Purpose Pin ; +; B9 ; DIFFIO_T24p, PADD17, DQS5T/CQ5T#,DPCLK10 ; Use as regular IO ; SRD[8] ; Dual Purpose Pin ; +; A8 ; DIFFIO_T20n, DATA2 ; Use as regular IO ; IO[0] ; Dual Purpose Pin ; +; B8 ; DIFFIO_T20p, DATA3 ; Use as regular IO ; nSRCS ; Dual Purpose Pin ; +; A7 ; DIFFIO_T19n, PADD18 ; Use as regular IO ; IO[1] ; Dual Purpose Pin ; +; B7 ; DIFFIO_T19p, DATA4 ; Use as regular IO ; IO[2] ; Dual Purpose Pin ; +; A6 ; DIFFIO_T18n, PADD19 ; Use as regular IO ; IO[3] ; Dual Purpose Pin ; +; B6 ; DIFFIO_T18p, DATA15 ; Use as regular IO ; IO[4] ; Dual Purpose Pin ; +; C8 ; DIFFIO_T16n, DATA14, DQS3T/CQ3T#,DPCLK11 ; Use as regular IO ; IO[6] ; Dual Purpose Pin ; +; C7 ; DIFFIO_T16p, DATA13 ; Use as regular IO ; IO[7] ; Dual Purpose Pin ; +; A5 ; DIFFIO_T11p, DATA5 ; Use as regular IO ; SRD[1] ; Dual Purpose Pin ; +; F10 ; DIFFIO_T8p, DATA6 ; Use as regular IO ; SRD[13] ; Dual Purpose Pin ; +; C6 ; DIFFIO_T7n, DATA7 ; Use as regular IO ; SRD[2] ; Dual Purpose Pin ; +; B4 ; DIFFIO_T6p, DATA8 ; Use as regular IO ; nSRBHE ; Dual Purpose Pin ; +; F8 ; DIFFIO_T5n, DATA9 ; Use as regular IO ; nSRWE ; Dual Purpose Pin ; +; A3 ; DIFFIO_T4n, DATA10 ; Use as regular IO ; LP_D[6] ; Dual Purpose Pin ; +; B3 ; DIFFIO_T4p, DATA11 ; Use as regular IO ; LP_D[5] ; Dual Purpose Pin ; +; C4 ; DIFFIO_T3p, DATA12, DQS1T/CQ1T#,CDPCLK7 ; Use as regular IO ; LP_D[1] ; Dual Purpose Pin ; ++----------+------------------------------------------+--------------------------------+-------------------------+---------------------------+ + + ++-------------------------------------------------------------+ +; I/O Bank Usage ; ++----------+-------------------+---------------+--------------+ +; I/O Bank ; Usage ; VCCIO Voltage ; VREF Voltage ; ++----------+-------------------+---------------+--------------+ +; 1 ; 30 / 36 ( 83 % ) ; 3.3V ; -- ; +; 2 ; 44 / 46 ( 96 % ) ; 3.3V ; -- ; +; 3 ; 38 / 42 ( 90 % ) ; 3.3V ; -- ; +; 4 ; 33 / 43 ( 77 % ) ; 2.5V ; -- ; +; 5 ; 37 / 42 ( 88 % ) ; 2.5V ; -- ; +; 6 ; 35 / 37 ( 95 % ) ; 3.0V ; -- ; +; 7 ; 43 / 43 ( 100 % ) ; 3.3V ; -- ; +; 8 ; 42 / 43 ( 98 % ) ; 3.3V ; -- ; ++----------+-------------------+---------------+--------------+ + + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; All Package Pins ; ++----------+------------+----------+--------------------------------------------+--------+--------------+---------+------------+-----------------+----------+--------------+ +; Location ; Pad Number ; I/O Bank ; Pin Name/Usage ; Dir. ; I/O Standard ; Voltage ; I/O Type ; User Assignment ; Bus Hold ; Weak Pull Up ; ++----------+------------+----------+--------------------------------------------+--------+--------------+---------+------------+-----------------+----------+--------------+ +; A1 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; A2 ; ; 8 ; VCCIO8 ; power ; ; 3.3V ; -- ; ; -- ; -- ; +; A3 ; 534 ; 8 ; LP_D[6] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; A4 ; 529 ; 8 ; nSRBLE ; output ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; A5 ; 518 ; 8 ; SRD[1] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; A6 ; 501 ; 8 ; IO[3] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; A7 ; 499 ; 8 ; IO[1] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; A8 ; 497 ; 8 ; IO[0] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; A9 ; 487 ; 8 ; SRD[10] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; A10 ; 485 ; 8 ; SRD[9] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; A11 ; 481 ; 8 ; DVI_INT ; input ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; A12 ; 479 ; 7 ; nDACK1 ; input ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; A13 ; 473 ; 7 ; IO[16] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; A14 ; 469 ; 7 ; IO[14] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; A15 ; 458 ; 7 ; IO[9] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; A16 ; 448 ; 7 ; SD_DATA1 ; input ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; A17 ; 446 ; 7 ; YM_QA ; output ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; A18 ; 437 ; 7 ; TxD ; output ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; A19 ; 435 ; 7 ; DCD ; input ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; A20 ; 430 ; 7 ; nRD_DATA ; input ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; A21 ; ; 7 ; VCCIO7 ; power ; ; 3.3V ; -- ; ; -- ; -- ; +; A22 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; AA1 ; 125 ; 2 ; nPCI_INTA ; input ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; AA2 ; 124 ; 2 ; PIC_INT ; input ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; AA3 ; 154 ; 3 ; FB_AD[2] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; AA4 ; 158 ; 3 ; FB_AD[6] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; AA5 ; 160 ; 3 ; FB_AD[8] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; AA6 ; ; 3 ; VCCIO3 ; power ; ; 3.3V ; -- ; ; -- ; -- ; +; AA7 ; 173 ; 3 ; FB_AD[15] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; AA8 ; 183 ; 3 ; FB_AD[22] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; AA9 ; 189 ; 3 ; FB_AD[25] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; AA10 ; 202 ; 3 ; FB_AD[31] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; AA11 ; 204 ; 3 ; GND+ ; ; ; ; Column I/O ; ; -- ; -- ; +; AA12 ; 206 ; 4 ; GND+ ; ; ; ; Column I/O ; ; -- ; -- ; +; AA13 ; 208 ; 4 ; VD[18] ; bidir ; 2.5 V ; ; Column I/O ; Y ; no ; Off ; +; AA14 ; 210 ; 4 ; VD[25] ; bidir ; 2.5 V ; ; Column I/O ; Y ; no ; Off ; +; AA15 ; 220 ; 4 ; VDQS[0] ; bidir ; 2.5 V ; ; Column I/O ; Y ; no ; Off ; +; AA16 ; 224 ; 4 ; VDM[0] ; output ; 2.5 V ; ; Column I/O ; Y ; no ; Off ; +; AA17 ; 243 ; 4 ; nDDR_CLK ; output ; 2.5 V ; ; Column I/O ; Y ; no ; Off ; +; AA18 ; 245 ; 4 ; VA[12] ; output ; 2.5 V ; ; Column I/O ; Y ; no ; Off ; +; AA19 ; 252 ; 4 ; BA[1] ; output ; 2.5 V ; ; Column I/O ; Y ; no ; Off ; +; AA20 ; 259 ; 4 ; VA[7] ; output ; 2.5 V ; ; Column I/O ; Y ; no ; Off ; +; AA21 ; 274 ; 5 ; VA[6] ; output ; 2.5 V ; ; Row I/O ; Y ; no ; Off ; +; AA22 ; 273 ; 5 ; VA[4] ; output ; 2.5 V ; ; Row I/O ; Y ; no ; Off ; +; AB1 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; AB2 ; ; 3 ; VCCIO3 ; power ; ; 3.3V ; -- ; ; -- ; -- ; +; AB3 ; 155 ; 3 ; FB_AD[3] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; AB4 ; 159 ; 3 ; FB_AD[7] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; AB5 ; 161 ; 3 ; FB_AD[9] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; AB6 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; AB7 ; 174 ; 3 ; FB_AD[16] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; AB8 ; 184 ; 3 ; FB_AD[23] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; AB9 ; 190 ; 3 ; FB_AD[26] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; AB10 ; 203 ; 3 ; CLK24M576 ; output ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; AB11 ; 205 ; 3 ; GND+ ; ; ; ; Column I/O ; ; -- ; -- ; +; AB12 ; 207 ; 4 ; CLK33M ; input ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; AB13 ; 209 ; 4 ; VD[29] ; bidir ; 2.5 V ; ; Column I/O ; Y ; no ; Off ; +; AB14 ; 211 ; 4 ; VD[26] ; bidir ; 2.5 V ; ; Column I/O ; Y ; no ; Off ; +; AB15 ; 221 ; 4 ; VD[24] ; bidir ; 2.5 V ; ; Column I/O ; Y ; no ; Off ; +; AB16 ; 225 ; 4 ; VD[23] ; bidir ; 2.5 V ; ; Column I/O ; Y ; no ; Off ; +; AB17 ; 244 ; 4 ; DDR_CLK ; output ; 2.5 V ; ; Column I/O ; Y ; no ; Off ; +; AB18 ; 242 ; 4 ; nVCAS ; output ; 2.5 V ; ; Column I/O ; Y ; no ; Off ; +; AB19 ; 253 ; 4 ; VA[9] ; output ; 2.5 V ; ; Column I/O ; Y ; no ; Off ; +; AB20 ; 260 ; 4 ; VA[8] ; output ; 2.5 V ; ; Column I/O ; Y ; no ; Off ; +; AB21 ; ; 4 ; VCCIO4 ; power ; ; 2.5V ; -- ; ; -- ; -- ; +; AB22 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; B1 ; 4 ; 1 ; ACSI_D[0] ; bidir ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; B2 ; 3 ; 1 ; MIDI_TLR ; output ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; B3 ; 535 ; 8 ; LP_D[5] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; B4 ; 530 ; 8 ; nSRBHE ; output ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; B5 ; 523 ; 8 ; SRD[0] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; B6 ; 502 ; 8 ; IO[4] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; B7 ; 500 ; 8 ; IO[2] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; B8 ; 498 ; 8 ; nSRCS ; output ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; B9 ; 488 ; 8 ; SRD[8] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; B10 ; 486 ; 8 ; SRD[11] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; B11 ; 482 ; 8 ; nRSTO_MCF ; input ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; B12 ; 480 ; 7 ; nDACK0 ; input ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; B13 ; 474 ; 7 ; IO[17] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; B14 ; 470 ; 7 ; IO[15] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; B15 ; 459 ; 7 ; IO[10] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; B16 ; 449 ; 7 ; SD_DATA0 ; input ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; B17 ; 447 ; 7 ; SD_DATA2 ; input ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; B18 ; 438 ; 7 ; RTS ; output ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; B19 ; 434 ; 7 ; RI ; input ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; B20 ; 431 ; 7 ; nSDSEL ; output ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; B21 ; 404 ; 6 ; VB[5] ; output ; 3.0-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; B22 ; 403 ; 6 ; VB[4] ; output ; 3.0-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; C1 ; 15 ; 1 ; ACSI_D[4] ; bidir ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; C2 ; 14 ; 1 ; ACSI_D[3] ; bidir ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; C3 ; 538 ; 8 ; LP_D[2] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; C4 ; 539 ; 8 ; LP_D[1] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; C5 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; C6 ; 526 ; 8 ; SRD[2] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; C7 ; 508 ; 8 ; IO[7] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; C8 ; 507 ; 8 ; IO[6] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; C9 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; C10 ; 491 ; 8 ; SRD[4] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; C11 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; C12 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; C13 ; 460 ; 7 ; IO[11] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; C14 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; C15 ; 450 ; 7 ; SD_CLK ; output ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; C16 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; C17 ; 433 ; 7 ; nDCHG ; input ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; C18 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; C19 ; 428 ; 7 ; TRACK00 ; input ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; C20 ; 405 ; 6 ; VB[6] ; output ; 3.0-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; C21 ; 401 ; 6 ; VB[3] ; output ; 3.0-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; C22 ; 400 ; 6 ; VB[2] ; output ; 3.0-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; D1 ; 17 ; 1 ; ~ALTERA_ASDO_DATA1~ / RESERVED_INPUT ; input ; 3.3-V LVTTL ; ; Row I/O ; N ; no ; Off ; +; D2 ; 16 ; 1 ; ACSI_D[5] ; bidir ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; D3 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; D4 ; ; 1 ; VCCIO1 ; power ; ; 3.3V ; -- ; ; -- ; -- ; +; D5 ; ; 8 ; VCCIO8 ; power ; ; 3.3V ; -- ; ; -- ; -- ; +; D6 ; 536 ; 8 ; LP_D[4] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; D7 ; 527 ; 8 ; RESERVED_INPUT_WITH_WEAK_PULLUP ; ; ; ; Column I/O ; ; no ; On ; +; D8 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; D9 ; ; 8 ; VCCIO8 ; power ; ; 3.3V ; -- ; ; -- ; -- ; +; D10 ; 483 ; 8 ; SRD[12] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; D11 ; ; 8 ; VCCIO8 ; power ; ; 3.3V ; -- ; ; -- ; -- ; +; D12 ; ; 7 ; VCCIO7 ; power ; ; 3.3V ; -- ; ; -- ; -- ; +; D13 ; 461 ; 7 ; IO[12] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; D14 ; ; 7 ; VCCIO7 ; power ; ; 3.3V ; -- ; ; -- ; -- ; +; D15 ; 439 ; 7 ; DTR ; output ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; D16 ; ; 7 ; VCCIO7 ; power ; ; 3.3V ; -- ; ; -- ; -- ; +; D17 ; 426 ; 7 ; nWR_GATE ; output ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; D18 ; ; 7 ; VCCIO7 ; power ; ; 3.3V ; -- ; ; -- ; -- ; +; D19 ; 429 ; 7 ; nWP ; input ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; D20 ; 407 ; 6 ; VB[7] ; output ; 3.0-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; D21 ; 395 ; 6 ; VG[7] ; output ; 3.0-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; D22 ; 394 ; 6 ; VG[6] ; output ; 3.0-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; E1 ; 22 ; 1 ; SCSI_D[1] ; bidir ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; E2 ; 21 ; 1 ; ~ALTERA_FLASH_nCE_nCSO~ / RESERVED_INPUT ; input ; 3.3-V LVTTL ; ; Row I/O ; N ; no ; Off ; +; E3 ; 9 ; 1 ; ACSI_D[2] ; bidir ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; E4 ; 8 ; 1 ; RESERVED_INPUT_WITH_WEAK_PULLUP ; ; ; ; Row I/O ; ; no ; On ; +; E5 ; 546 ; 8 ; LPDIR ; output ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; E6 ; 545 ; 8 ; LP_STR ; output ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; E7 ; 537 ; 8 ; LP_D[3] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; E8 ; ; 8 ; VCCIO8 ; power ; ; 3.3V ; -- ; ; -- ; -- ; +; E9 ; 506 ; 8 ; IO[5] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; E10 ; 484 ; 8 ; SRD[6] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; E11 ; 477 ; 7 ; nDREQ1 ; output ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; E12 ; 476 ; 7 ; MIDI_IN ; input ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; E13 ; 468 ; 7 ; IO[13] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; E14 ; 453 ; 7 ; SD_CMD_D1 ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; E15 ; 440 ; 7 ; YM_QC ; output ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; E16 ; 418 ; 7 ; nINDEX ; input ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; E17 ; ; ; VCCD_PLL2 ; power ; ; 1.2V ; -- ; ; -- ; -- ; +; E18 ; ; ; GNDA2 ; gnd ; ; ; -- ; ; -- ; -- ; +; E19 ; ; 6 ; VCCIO6 ; power ; ; 3.0V ; -- ; ; -- ; -- ; +; E20 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; E21 ; 388 ; 6 ; VG[2] ; output ; 3.0-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; E22 ; 387 ; 6 ; VG[1] ; output ; 3.0-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; F1 ; 26 ; 1 ; SCSI_D[3] ; bidir ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; F2 ; 25 ; 1 ; SCSI_D[2] ; bidir ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; F3 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; F4 ; ; 1 ; VCCIO1 ; power ; ; 3.3V ; -- ; ; -- ; -- ; +; F5 ; ; ; GNDA3 ; gnd ; ; ; -- ; ; -- ; -- ; +; F6 ; ; ; VCCD_PLL3 ; power ; ; 1.2V ; -- ; ; -- ; -- ; +; F7 ; 542 ; 8 ; LP_D[0] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; F8 ; 531 ; 8 ; nSRWE ; output ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; F9 ; 544 ; 8 ; SRD[5] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; F10 ; 525 ; 8 ; SRD[13] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; F11 ; 478 ; 7 ; nSROE ; output ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; F12 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; F13 ; 457 ; 7 ; SD_CD_DATA3 ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; F14 ; 423 ; 7 ; nSTEP ; output ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; F15 ; 419 ; 7 ; DSA_D ; output ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; F16 ; 417 ; 7 ; HD_DD ; input ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; F17 ; 410 ; 6 ; nSYNC ; output ; 3.0-V LVCMOS ; ; Row I/O ; Y ; no ; Off ; +; F18 ; ; -- ; VCCA2 ; power ; ; 2.5V ; -- ; ; -- ; -- ; +; F19 ; 397 ; 6 ; PIXEL_CLK_PAD ; output ; 3.0-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; F20 ; 396 ; 6 ; nIRQ[4] ; output ; 3.0-V LVCMOS ; ; Row I/O ; Y ; no ; Off ; +; F21 ; 376 ; 6 ; nIRQ[2] ; output ; 3.0-V LVCMOS ; ; Row I/O ; Y ; no ; Off ; +; F22 ; 375 ; 6 ; VR[7] ; output ; 3.0-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; G1 ; 67 ; 1 ; GND+ ; ; ; ; Row I/O ; ; -- ; -- ; +; G2 ; 66 ; 1 ; MAIN_CLK ; input ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; G3 ; 1 ; 1 ; SCSI_D[5] ; bidir ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; G4 ; 0 ; 1 ; SCSI_D[4] ; bidir ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; G5 ; 5 ; 1 ; ACSI_D[1] ; bidir ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; G6 ; ; -- ; VCCA3 ; power ; ; 2.5V ; -- ; ; -- ; -- ; +; G7 ; 543 ; 8 ; LP_BUSY ; input ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; G8 ; 532 ; 8 ; LP_D[7] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; G9 ; 547 ; 8 ; SRD[14] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; G10 ; 524 ; 8 ; IO[8] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; G11 ; 492 ; 8 ; SRD[3] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; G12 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; +; G13 ; 444 ; 7 ; YM_QB ; output ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; G14 ; 441 ; 7 ; nWR ; output ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; G15 ; 422 ; 7 ; nSTEP_DIR ; output ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; G16 ; 420 ; 7 ; nMOT_ON ; output ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; G17 ; 411 ; 6 ; nBLANK_PAD ; output ; 3.0-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; G18 ; 398 ; 6 ; VB[0] ; output ; 3.0-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; G19 ; ; 6 ; VCCIO6 ; power ; ; 3.0V ; -- ; ; -- ; -- ; +; G20 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; G21 ; 345 ; 6 ; E0_INT ; input ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; G22 ; 344 ; 6 ; IDE_INT ; input ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; H1 ; 52 ; 1 ; nSCSI_C_D ; input ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; H2 ; 51 ; 1 ; nSCSI_MSG ; input ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; H3 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; H4 ; ; 1 ; VCCIO1 ; power ; ; 3.3V ; -- ; ; -- ; -- ; +; H5 ; 42 ; 1 ; MIDI_OLR ; output ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; H6 ; 19 ; 1 ; ACSI_D[7] ; bidir ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; H7 ; 18 ; 1 ; ACSI_D[6] ; bidir ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; H8 ; 29 ; 1 ; RESERVED_INPUT_WITH_WEAK_PULLUP ; ; ; ; Row I/O ; ; no ; On ; +; H9 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; +; H10 ; 512 ; 8 ; SRD[15] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; H11 ; 511 ; 8 ; SRD[7] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; H12 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; H13 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; H14 ; 425 ; 7 ; CTS ; input ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; H15 ; 424 ; 7 ; RxD ; input ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; H16 ; 393 ; 6 ; VG[5] ; output ; 3.0-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; H17 ; 399 ; 6 ; VB[1] ; output ; 3.0-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; H18 ; 391 ; 6 ; VG[3] ; output ; 3.0-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; H19 ; 386 ; 6 ; VG[0] ; output ; 3.0-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; H20 ; 385 ; 6 ; nIRQ[3] ; output ; 3.0-V LVCMOS ; ; Row I/O ; Y ; no ; Off ; +; H21 ; 365 ; 6 ; VR[3] ; output ; 3.0-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; H22 ; 364 ; 6 ; VR[2] ; output ; 3.0-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; J1 ; 55 ; 1 ; CLKUSB ; output ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; J2 ; 54 ; 1 ; RESERVED_INPUT_WITH_WEAK_PULLUP ; ; ; ; Row I/O ; ; no ; On ; +; J3 ; 53 ; 1 ; nSCSI_I_O ; input ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; J4 ; 50 ; 1 ; nACSI_INT ; input ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; J5 ; 38 ; 1 ; RESERVED_INPUT_WITH_WEAK_PULLUP ; ; ; ; Row I/O ; ; no ; On ; +; J6 ; 20 ; 1 ; SCSI_D[0] ; bidir ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; J7 ; 45 ; 1 ; SCSI_DIR ; output ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; J8 ; 30 ; 1 ; RESERVED_INPUT_WITH_WEAK_PULLUP ; ; ; ; Row I/O ; ; no ; On ; +; J9 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; J10 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; +; J11 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; +; J12 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; +; J13 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; +; J14 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; +; J15 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; J16 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; +; J17 ; 392 ; 6 ; VG[4] ; output ; 3.0-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; J18 ; 374 ; 6 ; VR[6] ; output ; 3.0-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; J19 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; J20 ; ; 6 ; VCCIO6 ; power ; ; 3.0V ; -- ; ; -- ; -- ; +; J21 ; 363 ; 6 ; VR[1] ; output ; 3.0-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; J22 ; 362 ; 6 ; VR[0] ; output ; 3.0-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; K1 ; 59 ; 1 ; ~ALTERA_DATA0~ / RESERVED_INPUT ; input ; 3.3-V LVTTL ; ; Row I/O ; N ; no ; Off ; +; K2 ; 58 ; 1 ; ~ALTERA_DCLK~ / RESERVED_INPUT ; input ; 3.3-V LVTTL ; ; Row I/O ; N ; no ; Off ; +; K3 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; K4 ; ; 1 ; VCCIO1 ; power ; ; 3.3V ; -- ; ; -- ; -- ; +; K5 ; 60 ; 1 ; ^nCONFIG ; ; ; ; -- ; ; -- ; -- ; +; K6 ; 41 ; 1 ; ^nSTATUS ; ; ; ; -- ; ; -- ; -- ; +; K7 ; 46 ; 1 ; nACSI_DRQ ; input ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; K8 ; 44 ; 1 ; SCSI_D[7] ; bidir ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; K9 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; +; K10 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; K11 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; K12 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; K13 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; K14 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; +; K15 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; +; K16 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; K17 ; 369 ; 6 ; VR[4] ; output ; 3.0-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; K18 ; 370 ; 6 ; VR[5] ; output ; 3.0-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; K19 ; 357 ; 6 ; VSYNC_PAD ; output ; 3.0-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; K20 ; 350 ; 6 ; ^MSEL3 ; ; ; ; -- ; ; -- ; -- ; +; K21 ; 361 ; 6 ; HSYNC_PAD ; output ; 3.0-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; K22 ; 360 ; 6 ; ~ALTERA_nCEO~ / RESERVED_OUTPUT_OPEN_DRAIN ; output ; 3.0-V LVTTL ; ; Row I/O ; N ; no ; Off ; +; L1 ; 63 ; 1 ; #TMS ; input ; ; ; -- ; ; -- ; -- ; +; L2 ; 62 ; 1 ; #TCK ; input ; ; ; -- ; ; -- ; -- ; +; L3 ; 65 ; 1 ; ^nCE ; ; ; ; -- ; ; -- ; -- ; +; L4 ; 64 ; 1 ; #TDO ; output ; ; ; -- ; ; -- ; -- ; +; L5 ; 61 ; 1 ; #TDI ; input ; ; ; -- ; ; -- ; -- ; +; L6 ; 70 ; 2 ; ACSI_DIR ; output ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; L7 ; 79 ; 2 ; PIC_AMKB_RX ; input ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; L8 ; 43 ; 1 ; SCSI_D[6] ; bidir ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; L9 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; +; L10 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; L11 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; L12 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; L13 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; L14 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; +; L15 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; L16 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; +; L17 ; 349 ; 6 ; ^MSEL2 ; ; ; ; -- ; ; -- ; -- ; +; L18 ; 348 ; 6 ; ^MSEL1 ; ; ; ; -- ; ; -- ; -- ; +; L19 ; ; 6 ; VCCIO6 ; power ; ; 3.0V ; -- ; ; -- ; -- ; +; L20 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; L21 ; 354 ; 6 ; RESERVED_INPUT_WITH_WEAK_PULLUP ; ; ; ; Row I/O ; ; no ; On ; +; L22 ; 353 ; 6 ; RESERVED_INPUT_WITH_WEAK_PULLUP ; ; ; ; Row I/O ; ; no ; On ; +; M1 ; 73 ; 2 ; nACSI_RESET ; output ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; M2 ; 72 ; 2 ; nACSI_CS ; output ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; M3 ; 75 ; 2 ; nSCSI_ATN ; output ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; M4 ; 74 ; 2 ; nACSI_ACK ; output ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; M5 ; 80 ; 2 ; IDE_RES ; output ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; M6 ; 71 ; 2 ; ACSI_A1 ; output ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; M7 ; 105 ; 2 ; SCSI_PAR ; bidir ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; M8 ; 106 ; 2 ; nSCSI_SEL ; bidir ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; M9 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; +; M10 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; M11 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; M12 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; M13 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; M14 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; +; M15 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; +; M16 ; 337 ; 5 ; RESERVED_INPUT_WITH_WEAK_PULLUP ; ; ; ; Row I/O ; ; no ; On ; +; M17 ; 347 ; 6 ; ^MSEL0 ; ; ; ; -- ; ; -- ; -- ; +; M18 ; 346 ; 6 ; ^CONF_DONE ; ; ; ; -- ; ; -- ; -- ; +; M19 ; 336 ; 5 ; SD_WP ; input ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; M20 ; 335 ; 5 ; SD_CARD_DEDECT ; input ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; M21 ; 334 ; 5 ; VD[1] ; bidir ; 2.5 V ; ; Row I/O ; Y ; no ; Off ; +; M22 ; 333 ; 5 ; VD[0] ; bidir ; 2.5 V ; ; Row I/O ; Y ; no ; Off ; +; N1 ; 77 ; 2 ; AMKB_TX ; output ; 3.3-V LVCMOS ; ; Row I/O ; Y ; no ; Off ; +; N2 ; 76 ; 2 ; nSCSI_ACK ; output ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; N3 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; N4 ; ; 2 ; VCCIO2 ; power ; ; 3.3V ; -- ; ; -- ; -- ; +; N5 ; 87 ; 2 ; nRP_LDS ; output ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; N6 ; 104 ; 2 ; nSCSI_RST ; bidir ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; N7 ; 122 ; 2 ; nIRQ[7] ; output ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; N8 ; 107 ; 2 ; nSCSI_BUSY ; bidir ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; N9 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; +; N10 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; N11 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; N12 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; N13 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; N14 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; +; N15 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; N16 ; 314 ; 5 ; RESERVED_INPUT_WITH_WEAK_PULLUP ; ; ; ; Row I/O ; ; no ; On ; +; N17 ; 329 ; 5 ; VD[12] ; bidir ; 2.5 V ; ; Row I/O ; Y ; no ; Off ; +; N18 ; 330 ; 5 ; RESERVED_INPUT_WITH_WEAK_PULLUP ; ; ; ; Row I/O ; ; no ; On ; +; N19 ; 324 ; 5 ; LED_FPGA_OK ; output ; 2.5 V ; ; Row I/O ; Y ; no ; Off ; +; N20 ; 323 ; 5 ; VD[15] ; bidir ; 2.5 V ; ; Row I/O ; Y ; no ; Off ; +; N21 ; 332 ; 5 ; ~ALTERA_DEV_CLRn~ / RESERVED_INPUT ; input ; 2.5 V ; ; Row I/O ; N ; no ; Off ; +; N22 ; 331 ; 5 ; ~ALTERA_DEV_OE~ / RESERVED_INPUT ; input ; 2.5 V ; ; Row I/O ; N ; no ; Off ; +; P1 ; 84 ; 2 ; nIDE_RD ; output ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; P2 ; 83 ; 2 ; nIDE_WR ; output ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; P3 ; 89 ; 2 ; nROM3 ; output ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; P4 ; 88 ; 2 ; nRP_UDS ; output ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; P5 ; 103 ; 2 ; nIRQ[5] ; output ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; P6 ; 131 ; 2 ; nPCI_INTD ; input ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; P7 ; 123 ; 2 ; nIRQ[6] ; output ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; P8 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; P9 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; +; P10 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; +; P11 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; +; P12 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; +; P13 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; +; P14 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; +; P15 ; 298 ; 5 ; RESERVED_INPUT_WITH_WEAK_PULLUP ; ; ; ; Row I/O ; ; no ; On ; +; P16 ; 299 ; 5 ; RESERVED_INPUT_WITH_WEAK_PULLUP ; ; ; ; Row I/O ; ; no ; On ; +; P17 ; 302 ; 5 ; VD[10] ; bidir ; 2.5 V ; ; Row I/O ; Y ; no ; Off ; +; P18 ; ; 5 ; VCCIO5 ; power ; ; 2.5V ; -- ; ; -- ; -- ; +; P19 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; P20 ; 317 ; 5 ; VD[13] ; bidir ; 2.5 V ; ; Row I/O ; Y ; no ; Off ; +; P21 ; 320 ; 5 ; VD[4] ; bidir ; 2.5 V ; ; Row I/O ; Y ; no ; Off ; +; P22 ; 319 ; 5 ; VD[2] ; bidir ; 2.5 V ; ; Row I/O ; Y ; no ; Off ; +; R1 ; 86 ; 2 ; nIDE_CS1 ; output ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; R2 ; 85 ; 2 ; nIDE_CS0 ; output ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; R3 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; R4 ; ; 2 ; VCCIO2 ; power ; ; 3.3V ; -- ; ; -- ; -- ; +; R5 ; 135 ; 2 ; TIN0 ; output ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; R6 ; 136 ; 2 ; nFB_OE ; input ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; R7 ; 137 ; 2 ; FB_ALE ; input ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; R8 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; +; R9 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; R10 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; +; R11 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; R12 ; ; ; VCCINT ; power ; ; 1.2V ; -- ; ; -- ; -- ; +; R13 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; R14 ; 268 ; 4 ; RESERVED_INPUT_WITH_WEAK_PULLUP ; ; ; ; Column I/O ; ; no ; On ; +; R15 ; 269 ; 4 ; RESERVED_INPUT_WITH_WEAK_PULLUP ; ; ; ; Column I/O ; ; no ; On ; +; R16 ; 267 ; 4 ; RESERVED_INPUT_WITH_WEAK_PULLUP ; ; ; ; Column I/O ; ; no ; On ; +; R17 ; 301 ; 5 ; VD[5] ; bidir ; 2.5 V ; ; Row I/O ; Y ; no ; Off ; +; R18 ; 309 ; 5 ; VD[9] ; bidir ; 2.5 V ; ; Row I/O ; Y ; no ; Off ; +; R19 ; 310 ; 5 ; VD[6] ; bidir ; 2.5 V ; ; Row I/O ; Y ; no ; Off ; +; R20 ; 305 ; 5 ; VD[3] ; bidir ; 2.5 V ; ; Row I/O ; Y ; no ; Off ; +; R21 ; 316 ; 5 ; VD[11] ; bidir ; 2.5 V ; ; Row I/O ; Y ; no ; Off ; +; R22 ; 315 ; 5 ; VD[14] ; bidir ; 2.5 V ; ; Row I/O ; Y ; no ; Off ; +; T1 ; 69 ; 2 ; WP_CF_CARD ; input ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; T2 ; 68 ; 2 ; GND+ ; ; ; ; Row I/O ; ; -- ; -- ; +; T3 ; 121 ; 2 ; nFB_BURST ; input ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; T4 ; 134 ; 2 ; CLK25M ; output ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; T5 ; 133 ; 2 ; nFB_WR ; input ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; T6 ; ; -- ; VCCA1 ; power ; ; 2.5V ; -- ; ; -- ; -- ; +; T7 ; 138 ; 2 ; nFB_TA ; output ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; T8 ; 166 ; 3 ; nFB_CS1 ; input ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; T9 ; 167 ; 3 ; nFB_CS2 ; input ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; T10 ; 176 ; 3 ; FB_AD[20] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; T11 ; 177 ; 3 ; FB_AD[24] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; T12 ; 226 ; 4 ; VD[16] ; bidir ; 2.5 V ; ; Column I/O ; Y ; no ; Off ; +; T13 ; 227 ; 4 ; RESERVED_INPUT_WITH_WEAK_PULLUP ; ; ; ; Column I/O ; ; no ; On ; +; T14 ; 240 ; 4 ; RESERVED_INPUT_WITH_WEAK_PULLUP ; ; ; ; Column I/O ; ; no ; On ; +; T15 ; 241 ; 4 ; RESERVED_INPUT_WITH_WEAK_PULLUP ; ; ; ; Column I/O ; ; no ; On ; +; T16 ; 266 ; 4 ; VDQS[3] ; bidir ; 2.5 V ; ; Column I/O ; Y ; no ; Off ; +; T17 ; 277 ; 5 ; VDM[3] ; output ; 2.5 V ; ; Row I/O ; Y ; no ; Off ; +; T18 ; 278 ; 5 ; nVCS ; output ; 2.5 V ; ; Row I/O ; Y ; no ; Off ; +; T19 ; ; 5 ; VCCIO5 ; power ; ; 2.5V ; -- ; ; -- ; -- ; +; T20 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; T21 ; 343 ; 5 ; nMASTER ; input ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; T22 ; 342 ; 5 ; TOUT0 ; input ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; U1 ; 92 ; 2 ; nSCSI_DRQ ; input ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; U2 ; 91 ; 2 ; nROM4 ; output ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; U3 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; U4 ; ; 2 ; VCCIO2 ; power ; ; 3.3V ; -- ; ; -- ; -- ; +; U5 ; ; ; GNDA1 ; gnd ; ; ; -- ; ; -- ; -- ; +; U6 ; ; ; VCCD_PLL1 ; power ; ; 1.2V ; -- ; ; -- ; -- ; +; U7 ; 145 ; 3 ; RESERVED_INPUT_WITH_WEAK_PULLUP ; ; ; ; Column I/O ; ; no ; On ; +; U8 ; 146 ; 3 ; FB_SIZE0 ; input ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; U9 ; 170 ; 3 ; FB_AD[12] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; U10 ; 182 ; 3 ; FB_AD[21] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; U11 ; 191 ; 3 ; FB_AD[27] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; U12 ; 222 ; 4 ; VD[31] ; bidir ; 2.5 V ; ; Column I/O ; Y ; no ; Off ; +; U13 ; 233 ; 4 ; VD[20] ; bidir ; 2.5 V ; ; Column I/O ; Y ; no ; Off ; +; U14 ; 235 ; 4 ; RESERVED_INPUT_WITH_WEAK_PULLUP ; ; ; ; Column I/O ; ; no ; On ; +; U15 ; 236 ; 4 ; VCKE ; output ; 2.5 V ; ; Column I/O ; Y ; no ; Off ; +; U16 ; 262 ; 4 ; RESERVED_INPUT_WITH_WEAK_PULLUP ; ; ; ; Column I/O ; ; no ; On ; +; U17 ; 263 ; 4 ; RESERVED_INPUT_WITH_WEAK_PULLUP ; ; ; ; Column I/O ; ; no ; On ; +; U18 ; ; -- ; VCCA4 ; power ; ; 2.5V ; -- ; ; -- ; -- ; +; U19 ; 291 ; 5 ; VA[11] ; output ; 2.5 V ; ; Row I/O ; Y ; no ; Off ; +; U20 ; 290 ; 5 ; VDM[2] ; output ; 2.5 V ; ; Row I/O ; Y ; no ; Off ; +; U21 ; 308 ; 5 ; VD[7] ; bidir ; 2.5 V ; ; Row I/O ; Y ; no ; Off ; +; U22 ; 307 ; 5 ; VDQS[2] ; bidir ; 2.5 V ; ; Row I/O ; Y ; no ; Off ; +; V1 ; 98 ; 2 ; nPD_VGA ; output ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; V2 ; 97 ; 2 ; RESERVED_INPUT_WITH_WEAK_PULLUP ; ; ; ; Row I/O ; ; no ; On ; +; V3 ; 130 ; 2 ; nPCI_INTC ; input ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; V4 ; 129 ; 2 ; nPCI_INTB ; input ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; V5 ; 142 ; 3 ; RESERVED_INPUT_WITH_WEAK_PULLUP ; ; ; ; Column I/O ; ; no ; On ; +; V6 ; 141 ; 3 ; nFB_CS3 ; input ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; V7 ; 157 ; 3 ; FB_AD[5] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; V8 ; 171 ; 3 ; FB_AD[13] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; V9 ; 178 ; 3 ; FB_AD[18] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; V10 ; 179 ; 3 ; FB_AD[19] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; V11 ; 199 ; 3 ; FB_AD[28] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; V12 ; 213 ; 4 ; VD[30] ; bidir ; 2.5 V ; ; Column I/O ; Y ; no ; Off ; +; V13 ; 228 ; 4 ; VD[27] ; bidir ; 2.5 V ; ; Column I/O ; Y ; no ; Off ; +; V14 ; 234 ; 4 ; VD[19] ; bidir ; 2.5 V ; ; Column I/O ; Y ; no ; Off ; +; V15 ; 237 ; 4 ; VD[21] ; bidir ; 2.5 V ; ; Column I/O ; Y ; no ; Off ; +; V16 ; 261 ; 4 ; VDM[1] ; output ; 2.5 V ; ; Column I/O ; Y ; no ; Off ; +; V17 ; ; ; VCCD_PLL4 ; power ; ; 1.2V ; -- ; ; -- ; -- ; +; V18 ; ; ; GNDA4 ; gnd ; ; ; -- ; ; -- ; -- ; +; V19 ; ; 5 ; VCCIO5 ; power ; ; 2.5V ; -- ; ; -- ; -- ; +; V20 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; V21 ; 304 ; 5 ; VA[10] ; output ; 2.5 V ; ; Row I/O ; Y ; no ; Off ; +; V22 ; 303 ; 5 ; VD[8] ; bidir ; 2.5 V ; ; Row I/O ; Y ; no ; Off ; +; W1 ; 111 ; 2 ; nCF_CS1 ; output ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; W2 ; 110 ; 2 ; nCF_CS0 ; output ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; W3 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; W4 ; ; 2 ; VCCIO2 ; power ; ; 3.3V ; -- ; ; -- ; -- ; +; W5 ; ; 3 ; VCCIO3 ; power ; ; 3.3V ; -- ; ; -- ; -- ; +; W6 ; 156 ; 3 ; FB_AD[4] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; W7 ; 168 ; 3 ; FB_AD[10] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; W8 ; 172 ; 3 ; FB_AD[14] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; W9 ; ; 3 ; VCCIO3 ; power ; ; 3.3V ; -- ; ; -- ; -- ; +; W10 ; 200 ; 3 ; FB_AD[29] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; W11 ; ; 3 ; VCCIO3 ; power ; ; 3.3V ; -- ; ; -- ; -- ; +; W12 ; ; 4 ; VCCIO4 ; power ; ; 2.5V ; -- ; ; -- ; -- ; +; W13 ; 218 ; 4 ; VD[28] ; bidir ; 2.5 V ; ; Column I/O ; Y ; no ; Off ; +; W14 ; 229 ; 4 ; VD[22] ; bidir ; 2.5 V ; ; Column I/O ; Y ; no ; Off ; +; W15 ; 239 ; 4 ; VDQS[1] ; bidir ; 2.5 V ; ; Column I/O ; Y ; no ; Off ; +; W16 ; ; 4 ; VCCIO4 ; power ; ; 2.5V ; -- ; ; -- ; -- ; +; W17 ; 257 ; 4 ; nVRAS ; output ; 2.5 V ; ; Column I/O ; Y ; no ; Off ; +; W18 ; ; 4 ; VCCIO4 ; power ; ; 2.5V ; -- ; ; -- ; -- ; +; W19 ; 285 ; 5 ; BA[0] ; output ; 2.5 V ; ; Row I/O ; Y ; no ; Off ; +; W20 ; 280 ; 5 ; VA[0] ; output ; 2.5 V ; ; Row I/O ; Y ; no ; Off ; +; W21 ; 293 ; 5 ; VA[2] ; output ; 2.5 V ; ; Row I/O ; Y ; no ; Off ; +; W22 ; 292 ; 5 ; VA[1] ; output ; 2.5 V ; ; Row I/O ; Y ; no ; Off ; +; Y1 ; 113 ; 2 ; IDE_RDY ; input ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; Y2 ; 112 ; 2 ; AMKB_RX ; input ; 3.3-V LVTTL ; ; Row I/O ; Y ; no ; Off ; +; Y3 ; 148 ; 3 ; FB_AD[0] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; Y4 ; 147 ; 3 ; FB_SIZE1 ; input ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; Y5 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; Y6 ; 152 ; 3 ; FB_AD[1] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; Y7 ; 169 ; 3 ; FB_AD[11] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; Y8 ; 175 ; 3 ; FB_AD[17] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; Y9 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; Y10 ; 201 ; 3 ; FB_AD[30] ; bidir ; 3.3-V LVTTL ; ; Column I/O ; Y ; no ; Off ; +; Y11 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; Y12 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; Y13 ; 219 ; 4 ; VD[17] ; bidir ; 2.5 V ; ; Column I/O ; Y ; no ; Off ; +; Y14 ; ; 4 ; VCCIO4 ; power ; ; 2.5V ; -- ; ; -- ; -- ; +; Y15 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; Y16 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; Y17 ; 258 ; 4 ; nVWE ; output ; 2.5 V ; ; Column I/O ; Y ; no ; Off ; +; Y18 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; Y19 ; ; 5 ; VCCIO5 ; power ; ; 2.5V ; -- ; ; -- ; -- ; +; Y20 ; ; ; GND ; gnd ; ; ; -- ; ; -- ; -- ; +; Y21 ; 289 ; 5 ; VA[5] ; output ; 2.5 V ; ; Row I/O ; Y ; no ; Off ; +; Y22 ; 288 ; 5 ; VA[3] ; output ; 2.5 V ; ; Row I/O ; Y ; no ; Off ; ++----------+------------+----------+--------------------------------------------+--------+--------------+---------+------------+-----------------+----------+--------------+ +Note: Pin directions (input, output or bidir) are based on device operating in user mode. + + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; PLL Summary ; ++-------------------------------+----------------------------------------------------------------------+------------------------------------------------------------------------+------------------------------------------------------------------------+--------------------------------------------------------------------------+ +; Name ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|pll1 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|pll1 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|pll1 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|pll1 ; ++-------------------------------+----------------------------------------------------------------------+------------------------------------------------------------------------+------------------------------------------------------------------------+--------------------------------------------------------------------------+ +; SDC pin name ; inst|altpll_component|auto_generated|pll1 ; inst13|altpll_component|auto_generated|pll1 ; inst12|altpll_component|auto_generated|pll1 ; inst22|altpll_component|auto_generated|pll1 ; +; PLL mode ; Source Synchronous ; Source Synchronous ; Source Synchronous ; Normal ; +; Compensate clock ; clock0 ; clock1 ; clock0 ; clock0 ; +; Compensated input/output pins ; -- ; nRD_DATA ; MAIN_CLK ; -- ; +; Switchover type ; -- ; -- ; -- ; -- ; +; Input frequency 0 ; 33.0 MHz ; 33.0 MHz ; 33.0 MHz ; 48.0 MHz ; +; Input frequency 1 ; -- ; -- ; -- ; -- ; +; Nominal PFD frequency ; 5.5 MHz ; 11.0 MHz ; 33.0 MHz ; 48.0 MHz ; +; Nominal VCO frequency ; 368.5 MHz ; 1199.0 MHz ; 396.0 MHz ; 576.0 MHz ; +; VCO post scale ; 2 ; -- ; 2 ; 2 ; +; VCO frequency control ; Auto ; Auto ; Auto ; Auto ; +; VCO phase shift step ; 339 ps ; 104 ps ; 315 ps ; 217 ps ; +; VCO multiply ; -- ; -- ; -- ; -- ; +; VCO divide ; -- ; -- ; -- ; -- ; +; Freq min lock ; 32.4 MHz ; 16.8 MHz ; 25.0 MHz ; 25.0 MHz ; +; Freq max lock ; 58.23 MHz ; 35.79 MHz ; 54.18 MHz ; 54.18 MHz ; +; M VCO Tap ; 0 ; 0 ; 0 ; 0 ; +; M Initial ; 1 ; 1 ; 1 ; 1 ; +; M value ; 67 ; 109 ; 12 ; 12 ; +; N value ; 6 ; 3 ; 1 ; 1 ; +; Charge pump current ; setting 1 ; setting 1 ; setting 1 ; setting 1 ; +; Loop filter resistance ; setting 16 ; setting 19 ; setting 27 ; setting 27 ; +; Loop filter capacitance ; setting 0 ; setting 0 ; setting 0 ; setting 0 ; +; Bandwidth ; 340 kHz to 540 kHz ; 450 kHz to 560 kHz ; 680 kHz to 980 kHz ; 680 kHz to 980 kHz ; +; Real time reconfigurable ; Off ; Off ; Off ; On ; +; Scan chain MIF file ; -- ; -- ; -- ; altpll4.mif ; +; Preserve PLL counter order ; Off ; Off ; Off ; Off ; +; PLL location ; PLL_3 ; PLL_4 ; PLL_1 ; PLL_2 ; +; Inclk0 signal ; CLK33M ; CLK33M ; MAIN_CLK ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[3] ; +; Inclk1 signal ; -- ; -- ; -- ; -- ; +; Inclk0 signal type ; Global Clock ; Dedicated Pin ; Dedicated Pin ; Global Clock ; +; Inclk1 signal type ; -- ; -- ; -- ; -- ; ++-------------------------------+----------------------------------------------------------------------+------------------------------------------------------------------------+------------------------------------------------------------------------+--------------------------------------------------------------------------+ + + ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; PLL Usage ; ++-------------------------------------------------------------------------------------+--------------+------+------+------------------+----------------+------------------+------------+---------+---------------+--------------+---------------+---------+---------+----------------------------------------------------+ +; Name ; Output Clock ; Mult ; Div ; Output Frequency ; Phase Shift ; Phase Shift Step ; Duty Cycle ; Counter ; Counter Value ; High / Low ; Cascade Input ; Initial ; VCO Tap ; SDC Pin Name ; ++-------------------------------------------------------------------------------------+--------------+------+------+------------------+----------------+------------------+------------+---------+---------------+--------------+---------------+---------+---------+----------------------------------------------------+ +; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; clock0 ; 1 ; 66 ; 0.5 MHz ; 0 (0 ps) ; 0.67 (339 ps) ; 50/50 ; C1 ; 67 ; 34/33 Odd ; C0 ; 1 ; 0 ; inst|altpll_component|auto_generated|pll1|clk[0] ; +; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[1] ; clock1 ; 67 ; 900 ; 2.46 MHz ; 0 (0 ps) ; 0.30 (339 ps) ; 50/50 ; C2 ; 150 ; 75/75 Even ; -- ; 1 ; 0 ; inst|altpll_component|auto_generated|pll1|clk[1] ; +; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[2] ; clock2 ; 67 ; 90 ; 24.57 MHz ; 0 (0 ps) ; 3.00 (339 ps) ; 50/50 ; C3 ; 15 ; 8/7 Odd ; -- ; 1 ; 0 ; inst|altpll_component|auto_generated|pll1|clk[2] ; +; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0]~cascade_in ; -- ; -- ; -- ; -- ; -- ; -- ; -- ; C0 ; 11 ; 5/6 Odd ; -- ; 1 ; 0 ; ; +; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; clock0 ; 109 ; 1800 ; 2.0 MHz ; 0 (0 ps) ; 0.15 (104 ps) ; 50/50 ; C1 ; 300 ; 150/150 Even ; C0 ; 1 ; 0 ; inst13|altpll_component|auto_generated|pll1|clk[0] ; +; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; clock1 ; 109 ; 225 ; 15.99 MHz ; 0 (0 ps) ; 0.60 (104 ps) ; 50/50 ; C2 ; 75 ; 38/37 Odd ; -- ; 1 ; 0 ; inst13|altpll_component|auto_generated|pll1|clk[1] ; +; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; clock2 ; 109 ; 144 ; 24.98 MHz ; 0 (0 ps) ; 0.94 (104 ps) ; 50/50 ; C3 ; 48 ; 24/24 Even ; -- ; 1 ; 0 ; inst13|altpll_component|auto_generated|pll1|clk[2] ; +; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[3] ; clock3 ; 109 ; 75 ; 47.96 MHz ; 0 (0 ps) ; 1.80 (104 ps) ; 50/50 ; C4 ; 25 ; 13/12 Odd ; -- ; 1 ; 0 ; inst13|altpll_component|auto_generated|pll1|clk[3] ; +; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0]~cascade_in ; -- ; -- ; -- ; -- ; -- ; -- ; -- ; C0 ; 2 ; 1/1 Even ; -- ; 1 ; 0 ; ; +; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; clock0 ; 4 ; 1 ; 132.0 MHz ; 240 (5051 ps) ; 15.00 (315 ps) ; 50/50 ; C0 ; 3 ; 2/1 Odd ; -- ; 3 ; 0 ; inst12|altpll_component|auto_generated|pll1|clk[0] ; +; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; clock1 ; 4 ; 1 ; 132.0 MHz ; 0 (0 ps) ; 15.00 (315 ps) ; 50/50 ; C3 ; 3 ; 2/1 Odd ; -- ; 1 ; 0 ; inst12|altpll_component|auto_generated|pll1|clk[1] ; +; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; clock2 ; 4 ; 1 ; 132.0 MHz ; 180 (3788 ps) ; 15.00 (315 ps) ; 50/50 ; C2 ; 3 ; 2/1 Odd ; -- ; 2 ; 4 ; inst12|altpll_component|auto_generated|pll1|clk[2] ; +; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; clock3 ; 4 ; 1 ; 132.0 MHz ; 105 (2210 ps) ; 15.00 (315 ps) ; 50/50 ; C4 ; 3 ; 2/1 Odd ; -- ; 1 ; 7 ; inst12|altpll_component|auto_generated|pll1|clk[3] ; +; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; clock4 ; 2 ; 1 ; 66.0 MHz ; 270 (11364 ps) ; 7.50 (315 ps) ; 50/50 ; C1 ; 6 ; 3/3 Even ; -- ; 5 ; 4 ; inst12|altpll_component|auto_generated|pll1|clk[4] ; +; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; clock0 ; 2 ; 1 ; 96.0 MHz ; 0 (0 ps) ; 7.50 (217 ps) ; 50/50 ; C0 ; 6 ; 3/3 Even ; -- ; 1 ; 0 ; inst22|altpll_component|auto_generated|pll1|clk[0] ; ++-------------------------------------------------------------------------------------+--------------+------+------+------------------+----------------+------------------+------------+---------+---------------+--------------+---------------+---------+---------+----------------------------------------------------+ + + ++-------------------------------------------------------------------------------+ +; Output Pin Default Load For Reported TCO ; ++----------------------------------+-------+------------------------------------+ +; I/O Standard ; Load ; Termination Resistance ; ++----------------------------------+-------+------------------------------------+ +; 3.0-V LVTTL ; 0 pF ; Not Available ; +; 3.3-V LVTTL ; 0 pF ; Not Available ; +; 3.0-V LVCMOS ; 0 pF ; Not Available ; +; 3.3-V LVCMOS ; 0 pF ; Not Available ; +; 3.0-V PCI ; 10 pF ; Not Available ; +; 3.0-V PCI-X ; 10 pF ; Not Available ; +; 2.5 V ; 0 pF ; Not Available ; +; 1.8 V ; 0 pF ; Not Available ; +; 1.5 V ; 0 pF ; Not Available ; +; 1.2 V ; 0 pF ; Not Available ; +; SSTL-2 Class I ; 0 pF ; 50 Ohm (Parallel), 25 Ohm (Serial) ; +; Differential 2.5-V SSTL Class I ; 0 pF ; (See SSTL-2) ; +; SSTL-2 Class II ; 0 pF ; 25 Ohm (Parallel), 25 Ohm (Serial) ; +; Differential 2.5-V SSTL Class II ; 0 pF ; (See SSTL-2 Class II) ; +; SSTL-18 Class I ; 0 pF ; 50 Ohm (Parallel), 25 Ohm (Serial) ; +; Differential 1.8-V SSTL Class I ; 0 pF ; (See 1.8-V SSTL Class I) ; +; SSTL-18 Class II ; 0 pF ; 25 Ohm (Parallel), 25 Ohm (Serial) ; +; Differential 1.8-V SSTL Class II ; 0 pF ; (See 1.8-V SSTL Class II) ; +; 1.8-V HSTL Class I ; 0 pF ; 50 Ohm (Parallel) ; +; Differential 1.8-V HSTL Class I ; 0 pF ; (See 1.8-V HSTL Class I) ; +; 1.8-V HSTL Class II ; 0 pF ; 25 Ohm (Parallel) ; +; Differential 1.8-V HSTL Class II ; 0 pF ; (See 1.8-V HSTL Class II) ; +; 1.5-V HSTL Class I ; 0 pF ; 50 Ohm (Parallel) ; +; Differential 1.5-V HSTL Class I ; 0 pF ; (See 1.5-V HSTL Class I) ; +; 1.5-V HSTL Class II ; 0 pF ; 25 Ohm (Parallel) ; +; Differential 1.5-V HSTL Class II ; 0 pF ; (See 1.5-V HSTL Class II) ; +; 1.2-V HSTL Class I ; 0 pF ; Not Available ; +; Differential 1.2-V HSTL Class I ; 0 pF ; Not Available ; +; 1.2-V HSTL Class II ; 0 pF ; Not Available ; +; Differential 1.2-V HSTL Class II ; 0 pF ; Not Available ; +; Differential LVPECL ; 0 pF ; 100 Ohm (Differential) ; +; LVDS ; 0 pF ; 100 Ohm (Differential) ; +; LVDS_E_3R ; 0 pF ; Not Available ; +; RSDS ; 0 pF ; 100 Ohm (Differential) ; +; RSDS_E_1R ; 0 pF ; Not Available ; +; RSDS_E_3R ; 0 pF ; Not Available ; +; mini-LVDS ; 0 pF ; 100 Ohm (Differential) ; +; mini-LVDS_E_3R ; 0 pF ; Not Available ; +; PPDS ; 0 pF ; Not Available ; +; PPDS_E_3R ; 0 pF ; Not Available ; +; Bus LVDS ; 0 pF ; Not Available ; ++----------------------------------+-------+------------------------------------+ +Note: User assignments will override these defaults. The user specified values are listed in the Output Pins and Bidir Pins tables. + + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Fitter Resource Utilization by Entity ; ++-----------------------------------------------------------------------------+-------------+---------------------------+---------------+-------------+------+--------------+---------+-----------+------+--------------+--------------+-------------------+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------+ +; Compilation Hierarchy Node ; Logic Cells ; Dedicated Logic Registers ; I/O Registers ; Memory Bits ; M9Ks ; DSP Elements ; DSP 9x9 ; DSP 18x18 ; Pins ; Virtual Pins ; LUT-Only LCs ; Register-Only LCs ; LUT/Register LCs ; Full Hierarchy Name ; Library Name ; ++-----------------------------------------------------------------------------+-------------+---------------------------+---------------+-------------+------+--------------+---------+-----------+------+--------------+--------------+-------------------+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------+ +; |firebee1 ; 9526 (10) ; 4563 (0) ; 186 (186) ; 109344 ; 23 ; 6 ; 0 ; 3 ; 295 ; 0 ; 4963 (10) ; 1465 (0) ; 3098 (0) ; |firebee1 ; work ; +; |DSP:Mathias_Alles| ; 10 (10) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 10 (10) ; 0 (0) ; 0 (0) ; |firebee1|DSP:Mathias_Alles ; ; +; |FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden| ; 4093 (640) ; 1616 (114) ; 0 (0) ; 16384 ; 2 ; 0 ; 0 ; 0 ; 0 ; 0 ; 2414 (465) ; 291 (10) ; 1388 (177) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden ; ; +; |WF1772IP_TOP_SOC:I_FDC| ; 976 (17) ; 403 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 565 (9) ; 33 (0) ; 378 (15) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC ; ; +; |WF1772IP_AM_DETECTOR:I_AM_DETECTOR| ; 40 (40) ; 27 (27) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 13 (13) ; 1 (1) ; 26 (26) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_AM_DETECTOR:I_AM_DETECTOR ; ; +; |WF1772IP_CONTROL:I_CONTROL| ; 545 (545) ; 196 (196) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 344 (344) ; 12 (12) ; 189 (189) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL ; ; +; |WF1772IP_CRC_LOGIC:I_CRC_LOGIC| ; 51 (51) ; 16 (16) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 35 (35) ; 11 (11) ; 5 (5) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CRC_LOGIC:I_CRC_LOGIC ; ; +; |WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL| ; 103 (103) ; 37 (37) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 66 (66) ; 0 (0) ; 37 (37) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL ; ; +; |WF1772IP_REGISTERS:I_REGISTERS| ; 105 (105) ; 48 (48) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 57 (57) ; 7 (7) ; 41 (41) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS ; ; +; |WF1772IP_TRANSCEIVER:I_TRANSCEIVER| ; 120 (120) ; 79 (79) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 41 (41) ; 2 (2) ; 77 (77) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER ; ; +; |WF2149IP_TOP_SOC:I_SOUND| ; 490 (36) ; 197 (16) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 293 (20) ; 37 (2) ; 160 (18) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND ; ; +; |WF2149IP_WAVE:I_PSG_WAVE| ; 461 (461) ; 181 (181) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 273 (273) ; 35 (35) ; 153 (153) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE ; ; +; |WF5380_TOP_SOC:I_SCSI| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI ; ; +; |WF5380_CONTROL:I_CONTROL| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL ; ; +; |WF6850IP_TOP_SOC:I_ACIA_KEYBOARD| ; 208 (1) ; 97 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 106 (1) ; 1 (0) ; 101 (1) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD ; ; +; |WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS| ; 21 (21) ; 11 (11) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 10 (10) ; 1 (1) ; 10 (10) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS ; ; +; |WF6850IP_RECEIVE:I_UART_RECEIVE| ; 101 (101) ; 47 (47) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 54 (54) ; 0 (0) ; 47 (47) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_RECEIVE:I_UART_RECEIVE ; ; +; |WF6850IP_TRANSMIT:I_UART_TRANSMIT| ; 87 (87) ; 39 (39) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 41 (41) ; 0 (0) ; 46 (46) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_TRANSMIT:I_UART_TRANSMIT ; ; +; |WF6850IP_TOP_SOC:I_ACIA_MIDI| ; 218 (2) ; 97 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 116 (2) ; 10 (0) ; 92 (0) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI ; ; +; |WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS| ; 27 (27) ; 11 (11) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 12 (12) ; 6 (6) ; 9 (9) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS ; ; +; |WF6850IP_RECEIVE:I_UART_RECEIVE| ; 101 (101) ; 47 (47) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 53 (53) ; 3 (3) ; 45 (45) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_RECEIVE:I_UART_RECEIVE ; ; +; |WF6850IP_TRANSMIT:I_UART_TRANSMIT| ; 88 (88) ; 39 (39) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 49 (49) ; 1 (1) ; 38 (38) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_TRANSMIT:I_UART_TRANSMIT ; ; +; |WF68901IP_TOP_SOC:I_MFP| ; 1261 (110) ; 460 (2) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 797 (107) ; 70 (0) ; 394 (71) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP ; ; +; |WF68901IP_GPIO:I_GPIO| ; 49 (49) ; 24 (24) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 23 (23) ; 9 (9) ; 17 (17) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO ; ; +; |WF68901IP_INTERRUPTS:I_INTERRUPTS| ; 290 (290) ; 128 (128) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 159 (159) ; 5 (5) ; 126 (126) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS ; ; +; |WF68901IP_TIMERS:I_TIMERS| ; 501 (501) ; 166 (166) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 332 (332) ; 44 (44) ; 125 (125) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS ; ; +; |WF68901IP_USART_TOP:I_USART| ; 316 (3) ; 140 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 176 (3) ; 12 (0) ; 128 (1) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART ; ; +; |WF68901IP_USART_CTRL:I_USART_CTRL| ; 77 (77) ; 49 (49) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 28 (28) ; 9 (9) ; 40 (40) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL ; ; +; |WF68901IP_USART_RX:I_USART_RECEIVE| ; 160 (160) ; 56 (56) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 100 (100) ; 2 (2) ; 58 (58) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_RX:I_USART_RECEIVE ; ; +; |WF68901IP_USART_TX:I_USART_TRANSMIT| ; 87 (87) ; 35 (35) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 45 (45) ; 1 (1) ; 41 (41) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_TX:I_USART_TRANSMIT ; ; +; |dcfifo0:RDF| ; 156 (0) ; 124 (0) ; 0 (0) ; 8192 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 30 (0) ; 60 (0) ; 66 (0) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF ; ; +; |dcfifo_mixed_widths:dcfifo_mixed_widths_component| ; 156 (0) ; 124 (0) ; 0 (0) ; 8192 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 30 (0) ; 60 (0) ; 66 (0) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component ; ; +; |dcfifo_0hh1:auto_generated| ; 156 (55) ; 124 (42) ; 0 (0) ; 8192 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 30 (4) ; 60 (27) ; 66 (13) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated ; ; +; |a_gray2bin_lfb:wrptr_g_gray2bin| ; 7 (7) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 7 (7) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_gray2bin_lfb:wrptr_g_gray2bin ; ; +; |a_gray2bin_lfb:ws_dgrp_gray2bin| ; 8 (8) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 3 (3) ; 0 (0) ; 5 (5) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_gray2bin_lfb:ws_dgrp_gray2bin ; ; +; |a_graycounter_fic:wrptr_g1p| ; 17 (17) ; 13 (13) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 3 (3) ; 1 (1) ; 13 (13) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p ; ; +; |a_graycounter_k47:rdptr_g1p| ; 18 (18) ; 13 (13) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 5 (5) ; 1 (1) ; 12 (12) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_k47:rdptr_g1p ; ; +; |alt_synch_pipe_ikd:rs_dgwp| ; 18 (0) ; 18 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 14 (0) ; 4 (0) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_ikd:rs_dgwp ; ; +; |dffpipe_hd9:dffpipe12| ; 18 (18) ; 18 (18) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 14 (14) ; 4 (4) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_ikd:rs_dgwp|dffpipe_hd9:dffpipe12 ; ; +; |alt_synch_pipe_jkd:ws_dgrp| ; 18 (0) ; 18 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 17 (0) ; 1 (0) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_jkd:ws_dgrp ; ; +; |dffpipe_id9:dffpipe17| ; 18 (18) ; 18 (18) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 17 (17) ; 1 (1) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_jkd:ws_dgrp|dffpipe_id9:dffpipe17 ; ; +; |altsyncram_bi31:fifo_ram| ; 0 (0) ; 0 (0) ; 0 (0) ; 8192 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram ; ; +; |cmpr_156:rdempty_eq_comp1_msb| ; 1 (1) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 1 (1) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|cmpr_156:rdempty_eq_comp1_msb ; ; +; |cmpr_156:wrfull_eq_comp1_msb| ; 1 (1) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 (1) ; 0 (0) ; 0 (0) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|cmpr_156:wrfull_eq_comp1_msb ; ; +; |cntr_t2e:cntr_b| ; 3 (3) ; 2 (2) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 (1) ; 0 (0) ; 2 (2) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|cntr_t2e:cntr_b ; ; +; |dffpipe_gd9:ws_brp| ; 8 (8) ; 8 (8) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 8 (8) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|dffpipe_gd9:ws_brp ; ; +; |dffpipe_pe9:ws_bwp| ; 10 (10) ; 10 (10) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 10 (10) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|dffpipe_pe9:ws_bwp ; ; +; |mux_a18:rdemp_eq_comp_lsb_mux| ; 7 (7) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 3 (3) ; 0 (0) ; 4 (4) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|mux_a18:rdemp_eq_comp_lsb_mux ; ; +; |mux_a18:rdemp_eq_comp_msb_mux| ; 5 (5) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 5 (5) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|mux_a18:rdemp_eq_comp_msb_mux ; ; +; |mux_a18:wrfull_eq_comp_lsb_mux| ; 7 (7) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 6 (6) ; 0 (0) ; 1 (1) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|mux_a18:wrfull_eq_comp_lsb_mux ; ; +; |mux_a18:wrfull_eq_comp_msb_mux| ; 5 (5) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 4 (4) ; 0 (0) ; 1 (1) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|mux_a18:wrfull_eq_comp_msb_mux ; ; +; |dcfifo1:WRF| ; 166 (0) ; 124 (0) ; 0 (0) ; 8192 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 42 (0) ; 70 (0) ; 54 (0) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF ; ; +; |dcfifo_mixed_widths:dcfifo_mixed_widths_component| ; 166 (0) ; 124 (0) ; 0 (0) ; 8192 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 42 (0) ; 70 (0) ; 54 (0) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component ; ; +; |dcfifo_3fh1:auto_generated| ; 166 (58) ; 124 (42) ; 0 (0) ; 8192 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 42 (6) ; 70 (34) ; 54 (12) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated ; ; +; |a_gray2bin_lfb:rdptr_g_gray2bin| ; 8 (8) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 3 (3) ; 0 (0) ; 5 (5) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_gray2bin_lfb:rdptr_g_gray2bin ; ; +; |a_gray2bin_lfb:rs_dgwp_gray2bin| ; 8 (8) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 4 (4) ; 0 (0) ; 4 (4) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_gray2bin_lfb:rs_dgwp_gray2bin ; ; +; |a_graycounter_gic:wrptr_g1p| ; 17 (17) ; 13 (13) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 4 (4) ; 1 (1) ; 12 (12) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_gic:wrptr_g1p ; ; +; |a_graycounter_j47:rdptr_g1p| ; 17 (17) ; 13 (13) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 4 (4) ; 1 (1) ; 12 (12) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p ; ; +; |alt_synch_pipe_kkd:rs_dgwp| ; 18 (0) ; 18 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 15 (0) ; 3 (0) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_kkd:rs_dgwp ; ; +; |dffpipe_jd9:dffpipe12| ; 18 (18) ; 18 (18) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 15 (15) ; 3 (3) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_kkd:rs_dgwp|dffpipe_jd9:dffpipe12 ; ; +; |alt_synch_pipe_lkd:ws_dgrp| ; 18 (0) ; 18 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 16 (0) ; 2 (0) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_lkd:ws_dgrp ; ; +; |dffpipe_kd9:dffpipe15| ; 18 (18) ; 18 (18) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 16 (16) ; 2 (2) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_lkd:ws_dgrp|dffpipe_kd9:dffpipe15 ; ; +; |altsyncram_ci31:fifo_ram| ; 0 (0) ; 0 (0) ; 0 (0) ; 8192 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram ; ; +; |cmpr_156:rdempty_eq_comp1_msb| ; 1 (1) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 1 (1) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|cmpr_156:rdempty_eq_comp1_msb ; ; +; |cntr_t2e:cntr_b| ; 4 (4) ; 2 (2) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 2 (2) ; 0 (0) ; 2 (2) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|cntr_t2e:cntr_b ; ; +; |dffpipe_gd9:rs_bwp| ; 8 (8) ; 8 (8) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 2 (2) ; 6 (6) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|dffpipe_gd9:rs_bwp ; ; +; |dffpipe_pe9:rs_brp| ; 10 (10) ; 10 (10) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 1 (1) ; 9 (9) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|dffpipe_pe9:rs_brp ; ; +; |mux_a18:rdemp_eq_comp_lsb_mux| ; 7 (7) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 6 (6) ; 0 (0) ; 1 (1) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|mux_a18:rdemp_eq_comp_lsb_mux ; ; +; |mux_a18:rdemp_eq_comp_msb_mux| ; 5 (5) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 2 (2) ; 0 (0) ; 3 (3) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|mux_a18:rdemp_eq_comp_msb_mux ; ; +; |mux_a18:wrfull_eq_comp_lsb_mux| ; 7 (7) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 5 (5) ; 0 (0) ; 2 (2) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|mux_a18:wrfull_eq_comp_lsb_mux ; ; +; |mux_a18:wrfull_eq_comp_msb_mux| ; 6 (6) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 6 (6) ; 0 (0) ; 0 (0) ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|mux_a18:wrfull_eq_comp_msb_mux ; ; +; |Video:Fredi_Aschwanden| ; 4088 (14) ; 2168 (4) ; 0 (0) ; 92816 ; 20 ; 6 ; 0 ; 3 ; 0 ; 0 ; 1920 (10) ; 916 (4) ; 1252 (0) ; |firebee1|Video:Fredi_Aschwanden ; ; +; |DDR_CTR:DDR_CTR| ; 374 (342) ; 158 (158) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 211 (180) ; 20 (20) ; 143 (140) ; |firebee1|Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR ; ; +; |lpm_bustri_BYT:$00002| ; 3 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 3 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|lpm_bustri_BYT:$00002 ; ; +; |lpm_bustri:lpm_bustri_component| ; 3 (3) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 3 (3) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|lpm_bustri_BYT:$00002|lpm_bustri:lpm_bustri_component ; ; +; |lpm_bustri_BYT:$00004| ; 31 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 28 (0) ; 0 (0) ; 3 (0) ; |firebee1|Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|lpm_bustri_BYT:$00004 ; ; +; |lpm_bustri:lpm_bustri_component| ; 31 (31) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 28 (28) ; 0 (0) ; 3 (3) ; |firebee1|Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|lpm_bustri_BYT:$00004|lpm_bustri:lpm_bustri_component ; ; +; |VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR| ; 1420 (1292) ; 529 (529) ; 0 (0) ; 0 ; 0 ; 6 ; 0 ; 3 ; 0 ; 0 ; 891 (763) ; 158 (158) ; 371 (252) ; |firebee1|Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR ; ; +; |lpm_bustri_WORD:$00000| ; 187 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 112 (0) ; 0 (0) ; 75 (0) ; |firebee1|Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_bustri_WORD:$00000 ; ; +; |lpm_bustri:lpm_bustri_component| ; 187 (187) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 112 (112) ; 0 (0) ; 75 (75) ; |firebee1|Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_bustri_WORD:$00000|lpm_bustri:lpm_bustri_component ; ; +; |lpm_bustri_WORD:$00002| ; 60 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 16 (0) ; 0 (0) ; 44 (0) ; |firebee1|Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_bustri_WORD:$00002 ; ; +; |lpm_bustri:lpm_bustri_component| ; 60 (60) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 16 (16) ; 0 (0) ; 44 (44) ; |firebee1|Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_bustri_WORD:$00002|lpm_bustri:lpm_bustri_component ; ; +; |lpm_mult:op_12| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 2 ; 0 ; 1 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_mult:op_12 ; ; +; |mult_aat:auto_generated| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 2 ; 0 ; 1 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_mult:op_12|mult_aat:auto_generated ; ; +; |lpm_mult:op_14| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 2 ; 0 ; 1 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_mult:op_14 ; ; +; |mult_cat:auto_generated| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 2 ; 0 ; 1 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_mult:op_14|mult_cat:auto_generated ; ; +; |lpm_mult:op_6| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 2 ; 0 ; 1 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_mult:op_6 ; ; +; |mult_aat:auto_generated| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 2 ; 0 ; 1 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_mult:op_6|mult_aat:auto_generated ; ; +; |altddio_bidir0:inst1| ; 96 (0) ; 96 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 96 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altddio_bidir0:inst1 ; ; +; |altddio_bidir:altddio_bidir_component| ; 96 (0) ; 96 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 96 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component ; ; +; |ddio_bidir_3jl:auto_generated| ; 96 (96) ; 96 (96) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 96 (96) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated ; ; +; |altddio_out0:inst2| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altddio_out0:inst2 ; ; +; |altddio_out:altddio_out_component| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altddio_out0:inst2|altddio_out:altddio_out_component ; ; +; |ddio_out_are:auto_generated| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altddio_out0:inst2|altddio_out:altddio_out_component|ddio_out_are:auto_generated ; ; +; |altddio_out2:inst5| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altddio_out2:inst5 ; ; +; |altddio_out:altddio_out_component| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altddio_out2:inst5|altddio_out:altddio_out_component ; ; +; |ddio_out_o2f:auto_generated| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altddio_out2:inst5|altddio_out:altddio_out_component|ddio_out_o2f:auto_generated ; ; +; |altdpram0:ST_CLUT_BLUE| ; 0 (0) ; 0 (0) ; 0 (0) ; 48 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altdpram0:ST_CLUT_BLUE ; ; +; |altsyncram:altsyncram_component| ; 0 (0) ; 0 (0) ; 0 (0) ; 48 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altdpram0:ST_CLUT_BLUE|altsyncram:altsyncram_component ; ; +; |altsyncram_rb92:auto_generated| ; 0 (0) ; 0 (0) ; 0 (0) ; 48 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altdpram0:ST_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated ; ; +; |altdpram0:ST_CLUT_GREEN| ; 0 (0) ; 0 (0) ; 0 (0) ; 48 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altdpram0:ST_CLUT_GREEN ; ; +; |altsyncram:altsyncram_component| ; 0 (0) ; 0 (0) ; 0 (0) ; 48 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altdpram0:ST_CLUT_GREEN|altsyncram:altsyncram_component ; ; +; |altsyncram_rb92:auto_generated| ; 0 (0) ; 0 (0) ; 0 (0) ; 48 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altdpram0:ST_CLUT_GREEN|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated ; ; +; |altdpram0:ST_CLUT_RED| ; 0 (0) ; 0 (0) ; 0 (0) ; 48 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altdpram0:ST_CLUT_RED ; ; +; |altsyncram:altsyncram_component| ; 0 (0) ; 0 (0) ; 0 (0) ; 48 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altdpram0:ST_CLUT_RED|altsyncram:altsyncram_component ; ; +; |altsyncram_rb92:auto_generated| ; 0 (0) ; 0 (0) ; 0 (0) ; 48 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altdpram0:ST_CLUT_RED|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated ; ; +; |altdpram1:FALCON_CLUT_BLUE| ; 0 (0) ; 0 (0) ; 0 (0) ; 1536 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_BLUE ; ; +; |altsyncram:altsyncram_component| ; 0 (0) ; 0 (0) ; 0 (0) ; 1536 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_BLUE|altsyncram:altsyncram_component ; ; +; |altsyncram_lf92:auto_generated| ; 0 (0) ; 0 (0) ; 0 (0) ; 1536 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated ; ; +; |altdpram1:FALCON_CLUT_GREEN| ; 0 (0) ; 0 (0) ; 0 (0) ; 1536 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_GREEN ; ; +; |altsyncram:altsyncram_component| ; 0 (0) ; 0 (0) ; 0 (0) ; 1536 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_GREEN|altsyncram:altsyncram_component ; ; +; |altsyncram_lf92:auto_generated| ; 0 (0) ; 0 (0) ; 0 (0) ; 1536 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_GREEN|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated ; ; +; |altdpram1:FALCON_CLUT_RED| ; 0 (0) ; 0 (0) ; 0 (0) ; 1536 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED ; ; +; |altsyncram:altsyncram_component| ; 0 (0) ; 0 (0) ; 0 (0) ; 1536 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component ; ; +; |altsyncram_lf92:auto_generated| ; 0 (0) ; 0 (0) ; 0 (0) ; 1536 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated ; ; +; |altdpram2:ACP_CLUT_RAM54| ; 0 (0) ; 0 (0) ; 0 (0) ; 2048 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54 ; ; +; |altsyncram:altsyncram_component| ; 0 (0) ; 0 (0) ; 0 (0) ; 2048 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component ; ; +; |altsyncram_pf92:auto_generated| ; 0 (0) ; 0 (0) ; 0 (0) ; 2048 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated ; ; +; |altdpram2:ACP_CLUT_RAM55| ; 0 (0) ; 0 (0) ; 0 (0) ; 2048 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55 ; ; +; |altsyncram:altsyncram_component| ; 0 (0) ; 0 (0) ; 0 (0) ; 2048 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component ; ; +; |altsyncram_pf92:auto_generated| ; 0 (0) ; 0 (0) ; 0 (0) ; 2048 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated ; ; +; |altdpram2:ACP_CLUT_RAM| ; 0 (0) ; 0 (0) ; 0 (0) ; 2048 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM ; ; +; |altsyncram:altsyncram_component| ; 0 (0) ; 0 (0) ; 0 (0) ; 2048 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM|altsyncram:altsyncram_component ; ; +; |altsyncram_pf92:auto_generated| ; 0 (0) ; 0 (0) ; 0 (0) ; 2048 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated ; ; +; |lpm_bustri_LONG:inst119| ; 5 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 5 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_bustri_LONG:inst119 ; ; +; |lpm_bustri:lpm_bustri_component| ; 5 (5) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 5 (5) ; |firebee1|Video:Fredi_Aschwanden|lpm_bustri_LONG:inst119|lpm_bustri:lpm_bustri_component ; ; +; |lpm_ff0:inst13| ; 32 (0) ; 32 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 9 (0) ; 23 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff0:inst13 ; ; +; |lpm_ff:lpm_ff_component| ; 32 (32) ; 32 (32) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 9 (9) ; 23 (23) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component ; ; +; |lpm_ff0:inst14| ; 32 (0) ; 32 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 1 (0) ; 31 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff0:inst14 ; ; +; |lpm_ff:lpm_ff_component| ; 32 (32) ; 32 (32) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 1 (1) ; 31 (31) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component ; ; +; |lpm_ff0:inst15| ; 32 (0) ; 32 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 25 (0) ; 7 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff0:inst15 ; ; +; |lpm_ff:lpm_ff_component| ; 32 (32) ; 32 (32) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 25 (25) ; 7 (7) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component ; ; +; |lpm_ff0:inst16| ; 28 (0) ; 28 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 26 (0) ; 2 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff0:inst16 ; ; +; |lpm_ff:lpm_ff_component| ; 28 (28) ; 28 (28) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 26 (26) ; 2 (2) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component ; ; +; |lpm_ff0:inst17| ; 32 (0) ; 32 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 31 (0) ; 1 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff0:inst17 ; ; +; |lpm_ff:lpm_ff_component| ; 32 (32) ; 32 (32) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 31 (31) ; 1 (1) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff0:inst17|lpm_ff:lpm_ff_component ; ; +; |lpm_ff0:inst18| ; 32 (0) ; 32 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 2 (0) ; 30 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff0:inst18 ; ; +; |lpm_ff:lpm_ff_component| ; 32 (32) ; 32 (32) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 2 (2) ; 30 (30) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff0:inst18|lpm_ff:lpm_ff_component ; ; +; |lpm_ff0:inst19| ; 32 (0) ; 32 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 32 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff0:inst19 ; ; +; |lpm_ff:lpm_ff_component| ; 32 (32) ; 32 (32) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 32 (32) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff0:inst19|lpm_ff:lpm_ff_component ; ; +; |lpm_ff1:inst12| ; 32 (0) ; 32 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 30 (0) ; 2 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff1:inst12 ; ; +; |lpm_ff:lpm_ff_component| ; 32 (32) ; 32 (32) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 30 (30) ; 2 (2) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component ; ; +; |lpm_ff1:inst20| ; 32 (0) ; 32 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 28 (0) ; 4 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff1:inst20 ; ; +; |lpm_ff:lpm_ff_component| ; 32 (32) ; 32 (32) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 28 (28) ; 4 (4) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component ; ; +; |lpm_ff1:inst3| ; 32 (0) ; 32 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 32 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff1:inst3 ; ; +; |lpm_ff:lpm_ff_component| ; 32 (32) ; 32 (32) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 32 (32) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component ; ; +; |lpm_ff1:inst4| ; 32 (0) ; 32 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 26 (0) ; 6 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff1:inst4 ; ; +; |lpm_ff:lpm_ff_component| ; 32 (32) ; 32 (32) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 26 (26) ; 6 (6) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component ; ; +; |lpm_ff1:inst9| ; 24 (0) ; 24 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 12 (0) ; 12 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff1:inst9 ; ; +; |lpm_ff:lpm_ff_component| ; 24 (24) ; 24 (24) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 12 (12) ; 12 (12) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff1:inst9|lpm_ff:lpm_ff_component ; ; +; |lpm_ff3:inst46| ; 18 (0) ; 18 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 18 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff3:inst46 ; ; +; |lpm_ff:lpm_ff_component| ; 18 (18) ; 18 (18) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 18 (18) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff3:inst46|lpm_ff:lpm_ff_component ; ; +; |lpm_ff3:inst47| ; 18 (0) ; 18 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 18 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff3:inst47 ; ; +; |lpm_ff:lpm_ff_component| ; 18 (18) ; 18 (18) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 18 (18) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff3:inst47|lpm_ff:lpm_ff_component ; ; +; |lpm_ff3:inst49| ; 9 (0) ; 9 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 9 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff3:inst49 ; ; +; |lpm_ff:lpm_ff_component| ; 9 (9) ; 9 (9) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 9 (9) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff3:inst49|lpm_ff:lpm_ff_component ; ; +; |lpm_ff3:inst52| ; 9 (0) ; 9 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 9 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff3:inst52 ; ; +; |lpm_ff:lpm_ff_component| ; 9 (9) ; 9 (9) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 9 (9) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff3:inst52|lpm_ff:lpm_ff_component ; ; +; |lpm_ff4:inst10| ; 16 (0) ; 16 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 12 (0) ; 4 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff4:inst10 ; ; +; |lpm_ff:lpm_ff_component| ; 16 (16) ; 16 (16) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 12 (12) ; 4 (4) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff4:inst10|lpm_ff:lpm_ff_component ; ; +; |lpm_ff5:inst11| ; 8 (0) ; 8 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 8 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff5:inst11 ; ; +; |lpm_ff:lpm_ff_component| ; 8 (8) ; 8 (8) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 8 (8) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff5:inst11|lpm_ff:lpm_ff_component ; ; +; |lpm_ff5:inst97| ; 5 (0) ; 5 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 5 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff5:inst97 ; ; +; |lpm_ff:lpm_ff_component| ; 5 (5) ; 5 (5) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 5 (5) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component ; ; +; |lpm_ff6:inst71| ; 128 (0) ; 128 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 87 (0) ; 41 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff6:inst71 ; ; +; |lpm_ff:lpm_ff_component| ; 128 (128) ; 128 (128) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 87 (87) ; 41 (41) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component ; ; +; |lpm_ff6:inst94| ; 128 (0) ; 128 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 85 (0) ; 43 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff6:inst94 ; ; +; |lpm_ff:lpm_ff_component| ; 128 (128) ; 128 (128) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 85 (85) ; 43 (43) ; |firebee1|Video:Fredi_Aschwanden|lpm_ff6:inst94|lpm_ff:lpm_ff_component ; ; +; |lpm_fifoDZ:inst63| ; 22 (0) ; 21 (0) ; 0 (0) ; 16384 ; 4 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 (0) ; 0 (0) ; 21 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_fifoDZ:inst63 ; ; +; |scfifo:scfifo_component| ; 22 (0) ; 21 (0) ; 0 (0) ; 16384 ; 4 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 (0) ; 0 (0) ; 21 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component ; ; +; |scfifo_lk21:auto_generated| ; 22 (0) ; 21 (0) ; 0 (0) ; 16384 ; 4 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 (0) ; 0 (0) ; 21 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated ; ; +; |a_dpfifo_oq21:dpfifo| ; 22 (9) ; 21 (8) ; 0 (0) ; 16384 ; 4 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 (1) ; 0 (0) ; 21 (8) ; |firebee1|Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo ; ; +; |altsyncram_gj81:FIFOram| ; 0 (0) ; 0 (0) ; 0 (0) ; 16384 ; 4 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram ; ; +; |cntr_omb:rd_ptr_msb| ; 6 (6) ; 6 (6) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 6 (6) ; |firebee1|Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb ; ; +; |cntr_pmb:wr_ptr| ; 7 (7) ; 7 (7) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 7 (7) ; |firebee1|Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_pmb:wr_ptr ; ; +; |lpm_fifo_dc0:inst| ; 118 (0) ; 98 (0) ; 0 (0) ; 65536 ; 8 ; 0 ; 0 ; 0 ; 0 ; 0 ; 20 (0) ; 51 (0) ; 47 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_fifo_dc0:inst ; ; +; |dcfifo:dcfifo_component| ; 118 (0) ; 98 (0) ; 0 (0) ; 65536 ; 8 ; 0 ; 0 ; 0 ; 0 ; 0 ; 20 (0) ; 51 (0) ; 47 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component ; ; +; |dcfifo_8fi1:auto_generated| ; 118 (31) ; 98 (20) ; 0 (0) ; 65536 ; 8 ; 0 ; 0 ; 0 ; 0 ; 0 ; 20 (2) ; 51 (16) ; 47 (10) ; |firebee1|Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated ; ; +; |a_gray2bin_tgb:wrptr_g_gray2bin| ; 9 (9) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 6 (6) ; 0 (0) ; 3 (3) ; |firebee1|Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_gray2bin_tgb:wrptr_g_gray2bin ; ; +; |a_gray2bin_tgb:ws_dgrp_gray2bin| ; 9 (9) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 3 (3) ; 0 (0) ; 6 (6) ; |firebee1|Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_gray2bin_tgb:ws_dgrp_gray2bin ; ; +; |a_graycounter_njc:wrptr_gp| ; 18 (18) ; 14 (14) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 4 (4) ; 1 (1) ; 13 (13) ; |firebee1|Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp ; ; +; |a_graycounter_s57:rdptr_g1p| ; 20 (20) ; 14 (14) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 5 (5) ; 1 (1) ; 14 (14) ; |firebee1|Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p ; ; +; |alt_synch_pipe_sld:ws_dgrp| ; 30 (0) ; 30 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 30 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp ; ; +; |dffpipe_re9:dffpipe22| ; 30 (30) ; 30 (30) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 30 (30) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22 ; ; +; |altsyncram_tl31:fifo_ram| ; 0 (0) ; 0 (0) ; 0 (0) ; 65536 ; 8 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram ; ; +; |dffpipe_9d9:wraclr| ; 2 (2) ; 2 (2) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 1 (1) ; 1 (1) ; |firebee1|Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_9d9:wraclr ; ; +; |dffpipe_oe9:ws_brp| ; 9 (9) ; 9 (9) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 9 (9) ; |firebee1|Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_brp ; ; +; |dffpipe_oe9:ws_bwp| ; 9 (9) ; 9 (9) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 2 (2) ; 7 (7) ; |firebee1|Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_bwp ; ; +; |lpm_latch0:inst27| ; 32 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 31 (0) ; 0 (0) ; 1 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_latch0:inst27 ; ; +; |lpm_latch:lpm_latch_component| ; 32 (32) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 31 (31) ; 0 (0) ; 1 (1) ; |firebee1|Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component ; ; +; |lpm_mux0:inst21| ; 120 (0) ; 96 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 22 (0) ; 71 (0) ; 27 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_mux0:inst21 ; ; +; |lpm_mux:lpm_mux_component| ; 120 (0) ; 96 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 22 (0) ; 71 (0) ; 27 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component ; ; +; |mux_gpe:auto_generated| ; 120 (120) ; 96 (96) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 22 (22) ; 71 (71) ; 27 (27) ; |firebee1|Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated ; ; +; |lpm_mux1:inst24| ; 113 (0) ; 81 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 32 (0) ; 33 (0) ; 48 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_mux1:inst24 ; ; +; |lpm_mux:lpm_mux_component| ; 113 (0) ; 81 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 32 (0) ; 33 (0) ; 48 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component ; ; +; |mux_npe:auto_generated| ; 113 (113) ; 81 (81) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 32 (32) ; 33 (33) ; 48 (48) ; |firebee1|Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated ; ; +; |lpm_mux2:inst25| ; 81 (0) ; 41 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 40 (0) ; 1 (0) ; 40 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_mux2:inst25 ; ; +; |lpm_mux:lpm_mux_component| ; 81 (0) ; 41 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 40 (0) ; 1 (0) ; 40 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component ; ; +; |mux_mpe:auto_generated| ; 81 (81) ; 41 (41) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 40 (40) ; 1 (1) ; 40 (40) ; |firebee1|Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated ; ; +; |lpm_mux3:inst102| ; 1 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 1 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_mux3:inst102 ; ; +; |lpm_mux:lpm_mux_component| ; 1 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 1 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_mux3:inst102|lpm_mux:lpm_mux_component ; ; +; |mux_96e:auto_generated| ; 1 (1) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 1 (1) ; |firebee1|Video:Fredi_Aschwanden|lpm_mux3:inst102|lpm_mux:lpm_mux_component|mux_96e:auto_generated ; ; +; |lpm_mux4:inst81| ; 7 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 7 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_mux4:inst81 ; ; +; |lpm_mux:lpm_mux_component| ; 7 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 7 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_mux4:inst81|lpm_mux:lpm_mux_component ; ; +; |mux_f6e:auto_generated| ; 7 (7) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 7 (7) ; |firebee1|Video:Fredi_Aschwanden|lpm_mux4:inst81|lpm_mux:lpm_mux_component|mux_f6e:auto_generated ; ; +; |lpm_mux5:inst22| ; 64 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 4 (0) ; 0 (0) ; 60 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_mux5:inst22 ; ; +; |lpm_mux:lpm_mux_component| ; 64 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 4 (0) ; 0 (0) ; 60 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_mux5:inst22|lpm_mux:lpm_mux_component ; ; +; |mux_58e:auto_generated| ; 64 (64) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 4 (4) ; 0 (0) ; 60 (60) ; |firebee1|Video:Fredi_Aschwanden|lpm_mux5:inst22|lpm_mux:lpm_mux_component|mux_58e:auto_generated ; ; +; |lpm_mux6:inst7| ; 91 (0) ; 67 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 8 (0) ; 1 (0) ; 82 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_mux6:inst7 ; ; +; |lpm_mux:lpm_mux_component| ; 91 (0) ; 67 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 8 (0) ; 1 (0) ; 82 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component ; ; +; |mux_kpe:auto_generated| ; 91 (91) ; 67 (67) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 8 (8) ; 1 (1) ; 82 (82) ; |firebee1|Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated ; ; +; |lpm_muxDZ:inst62| ; 128 (0) ; 128 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 128 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_muxDZ:inst62 ; ; +; |lpm_mux:lpm_mux_component| ; 128 (0) ; 128 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 128 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component ; ; +; |mux_dcf:auto_generated| ; 128 (128) ; 128 (128) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 128 (128) ; |firebee1|Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated ; ; +; |lpm_muxVDM:inst100| ; 736 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 640 (0) ; 0 (0) ; 96 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_muxVDM:inst100 ; ; +; |lpm_mux:lpm_mux_component| ; 736 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 640 (0) ; 0 (0) ; 96 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_muxVDM:inst100|lpm_mux:lpm_mux_component ; ; +; |mux_bbe:auto_generated| ; 736 (736) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 640 (640) ; 0 (0) ; 96 (96) ; |firebee1|Video:Fredi_Aschwanden|lpm_muxVDM:inst100|lpm_mux:lpm_mux_component|mux_bbe:auto_generated ; ; +; |lpm_shiftreg0:sr0| ; 16 (0) ; 16 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 1 (0) ; 15 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg0:sr0 ; ; +; |lpm_shiftreg:lpm_shiftreg_component| ; 16 (16) ; 16 (16) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 1 (1) ; 15 (15) ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component ; ; +; |lpm_shiftreg0:sr1| ; 16 (0) ; 16 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 1 (0) ; 15 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg0:sr1 ; ; +; |lpm_shiftreg:lpm_shiftreg_component| ; 16 (16) ; 16 (16) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 1 (1) ; 15 (15) ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg0:sr1|lpm_shiftreg:lpm_shiftreg_component ; ; +; |lpm_shiftreg0:sr2| ; 16 (0) ; 16 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 1 (0) ; 15 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg0:sr2 ; ; +; |lpm_shiftreg:lpm_shiftreg_component| ; 16 (16) ; 16 (16) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 1 (1) ; 15 (15) ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component ; ; +; |lpm_shiftreg0:sr3| ; 17 (0) ; 16 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 2 (0) ; 15 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg0:sr3 ; ; +; |lpm_shiftreg:lpm_shiftreg_component| ; 17 (17) ; 16 (16) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 2 (2) ; 15 (15) ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg0:sr3|lpm_shiftreg:lpm_shiftreg_component ; ; +; |lpm_shiftreg0:sr4| ; 16 (0) ; 16 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 1 (0) ; 15 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg0:sr4 ; ; +; |lpm_shiftreg:lpm_shiftreg_component| ; 16 (16) ; 16 (16) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 1 (1) ; 15 (15) ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg0:sr4|lpm_shiftreg:lpm_shiftreg_component ; ; +; |lpm_shiftreg0:sr5| ; 16 (0) ; 16 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 1 (0) ; 15 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg0:sr5 ; ; +; |lpm_shiftreg:lpm_shiftreg_component| ; 16 (16) ; 16 (16) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 1 (1) ; 15 (15) ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg0:sr5|lpm_shiftreg:lpm_shiftreg_component ; ; +; |lpm_shiftreg0:sr6| ; 16 (0) ; 16 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 16 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg0:sr6 ; ; +; |lpm_shiftreg:lpm_shiftreg_component| ; 16 (16) ; 16 (16) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 16 (16) ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg0:sr6|lpm_shiftreg:lpm_shiftreg_component ; ; +; |lpm_shiftreg0:sr7| ; 16 (0) ; 16 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 16 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg0:sr7 ; ; +; |lpm_shiftreg:lpm_shiftreg_component| ; 16 (16) ; 16 (16) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 16 (16) ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg0:sr7|lpm_shiftreg:lpm_shiftreg_component ; ; +; |lpm_shiftreg4:inst26| ; 5 (0) ; 5 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 5 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg4:inst26 ; ; +; |lpm_shiftreg:lpm_shiftreg_component| ; 5 (5) ; 5 (5) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 5 (5) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg4:inst26|lpm_shiftreg:lpm_shiftreg_component ; ; +; |lpm_shiftreg6:inst92| ; 5 (0) ; 5 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 4 (0) ; 1 (0) ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg6:inst92 ; ; +; |lpm_shiftreg:lpm_shiftreg_component| ; 5 (5) ; 5 (5) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 4 (4) ; 1 (1) ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg6:inst92|lpm_shiftreg:lpm_shiftreg_component ; ; +; |mux41:inst40| ; 1 (1) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 (1) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|mux41:inst40 ; ; +; |mux41:inst41| ; 1 (1) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 (1) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|mux41:inst41 ; ; +; |mux41:inst42| ; 2 (2) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 2 (2) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|mux41:inst42 ; ; +; |mux41:inst43| ; 2 (2) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 2 (2) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|mux41:inst43 ; ; +; |mux41:inst44| ; 2 (2) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 2 (2) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|mux41:inst44 ; ; +; |mux41:inst45| ; 2 (2) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 2 (2) ; 0 (0) ; 0 (0) ; |firebee1|Video:Fredi_Aschwanden|mux41:inst45 ; ; +; |altddio_out3:inst5| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|altddio_out3:inst5 ; ; +; |altddio_out:altddio_out_component| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|altddio_out3:inst5|altddio_out:altddio_out_component ; ; +; |ddio_out_31f:auto_generated| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|altddio_out3:inst5|altddio_out:altddio_out_component|ddio_out_31f:auto_generated ; ; +; |altddio_out3:inst6| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|altddio_out3:inst6 ; ; +; |altddio_out:altddio_out_component| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|altddio_out3:inst6|altddio_out:altddio_out_component ; ; +; |ddio_out_31f:auto_generated| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|altddio_out3:inst6|altddio_out:altddio_out_component|ddio_out_31f:auto_generated ; ; +; |altddio_out3:inst8| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|altddio_out3:inst8 ; ; +; |altddio_out:altddio_out_component| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|altddio_out3:inst8|altddio_out:altddio_out_component ; ; +; |ddio_out_31f:auto_generated| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|altddio_out3:inst8|altddio_out:altddio_out_component|ddio_out_31f:auto_generated ; ; +; |altddio_out3:inst9| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|altddio_out3:inst9 ; work ; +; |altddio_out:altddio_out_component| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|altddio_out3:inst9|altddio_out:altddio_out_component ; work ; +; |ddio_out_31f:auto_generated| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|altddio_out3:inst9|altddio_out:altddio_out_component|ddio_out_31f:auto_generated ; work ; +; |altpll1:inst| ; 1 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 (0) ; 0 (0) ; 0 (0) ; |firebee1|altpll1:inst ; ; +; |altpll:altpll_component| ; 1 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 (0) ; 0 (0) ; 0 (0) ; |firebee1|altpll1:inst|altpll:altpll_component ; ; +; |altpll_pul2:auto_generated| ; 1 (1) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 (1) ; 0 (0) ; 0 (0) ; |firebee1|altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated ; ; +; |altpll2:inst12| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|altpll2:inst12 ; ; +; |altpll:altpll_component| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|altpll2:inst12|altpll:altpll_component ; ; +; |altpll_isv2:auto_generated| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated ; ; +; |altpll3:inst13| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|altpll3:inst13 ; ; +; |altpll:altpll_component| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|altpll3:inst13|altpll:altpll_component ; ; +; |altpll_41p2:auto_generated| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated ; ; +; |altpll4:inst22| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|altpll4:inst22 ; ; +; |altpll:altpll_component| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|altpll4:inst22|altpll:altpll_component ; ; +; |altpll_c6j2:auto_generated| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated ; ; +; |altpll_reconfig1:inst7| ; 334 (0) ; 128 (0) ; 0 (0) ; 144 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 206 (0) ; 22 (0) ; 106 (0) ; |firebee1|altpll_reconfig1:inst7 ; ; +; |altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component| ; 334 (237) ; 128 (80) ; 0 (0) ; 144 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 206 (157) ; 22 (22) ; 106 (57) ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component ; ; +; |altsyncram:altsyncram4| ; 0 (0) ; 0 (0) ; 0 (0) ; 144 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|altsyncram:altsyncram4 ; ; +; |altsyncram_46r:auto_generated| ; 0 (0) ; 0 (0) ; 0 (0) ; 144 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|altsyncram:altsyncram4|altsyncram_46r:auto_generated ; ; +; |lpm_compare:cmpr7| ; 3 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 2 (0) ; 0 (0) ; 1 (0) ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_compare:cmpr7 ; ; +; |cmpr_tnd:auto_generated| ; 3 (3) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 2 (2) ; 0 (0) ; 1 (1) ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_compare:cmpr7|cmpr_tnd:auto_generated ; ; +; |lpm_counter:cntr12| ; 10 (0) ; 8 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 2 (0) ; 0 (0) ; 8 (0) ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr12 ; ; +; |cntr_30l:auto_generated| ; 10 (10) ; 8 (8) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 2 (2) ; 0 (0) ; 8 (8) ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr12|cntr_30l:auto_generated ; ; +; |lpm_counter:cntr13| ; 7 (0) ; 6 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 (0) ; 0 (0) ; 6 (0) ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr13 ; ; +; |cntr_qij:auto_generated| ; 7 (7) ; 6 (6) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 (1) ; 0 (0) ; 6 (6) ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr13|cntr_qij:auto_generated ; ; +; |lpm_counter:cntr14| ; 5 (0) ; 5 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 5 (0) ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr14 ; ; +; |cntr_pij:auto_generated| ; 5 (5) ; 5 (5) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 5 (5) ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr14|cntr_pij:auto_generated ; ; +; |lpm_counter:cntr15| ; 18 (0) ; 8 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 10 (0) ; 0 (0) ; 8 (0) ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr15 ; ; +; |cntr_30l:auto_generated| ; 18 (18) ; 8 (8) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 10 (10) ; 0 (0) ; 8 (8) ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr15|cntr_30l:auto_generated ; ; +; |lpm_counter:cntr1| ; 41 (0) ; 8 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 33 (0) ; 0 (0) ; 8 (0) ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr1 ; ; +; |cntr_30l:auto_generated| ; 41 (41) ; 8 (8) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 33 (33) ; 0 (0) ; 8 (8) ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr1|cntr_30l:auto_generated ; ; +; |lpm_counter:cntr2| ; 9 (0) ; 8 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 (0) ; 0 (0) ; 8 (0) ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr2 ; ; +; |cntr_9cj:auto_generated| ; 9 (9) ; 8 (8) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 (1) ; 0 (0) ; 8 (8) ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr2|cntr_9cj:auto_generated ; ; +; |lpm_counter:cntr3| ; 5 (0) ; 5 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 5 (0) ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr3 ; ; +; |cntr_pij:auto_generated| ; 5 (5) ; 5 (5) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 5 (5) ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr3|cntr_pij:auto_generated ; ; +; |interrupt_handler:nobody| ; 1037 (999) ; 633 (633) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 401 (363) ; 235 (235) ; 401 (355) ; |firebee1|interrupt_handler:nobody ; ; +; |lpm_bustri_BYT:$00000| ; 14 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 5 (0) ; 0 (0) ; 9 (0) ; |firebee1|interrupt_handler:nobody|lpm_bustri_BYT:$00000 ; ; +; |lpm_bustri:lpm_bustri_component| ; 14 (14) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 5 (5) ; 0 (0) ; 9 (9) ; |firebee1|interrupt_handler:nobody|lpm_bustri_BYT:$00000|lpm_bustri:lpm_bustri_component ; ; +; |lpm_bustri_BYT:$00002| ; 24 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 16 (0) ; 0 (0) ; 8 (0) ; |firebee1|interrupt_handler:nobody|lpm_bustri_BYT:$00002 ; ; +; |lpm_bustri:lpm_bustri_component| ; 24 (24) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 16 (16) ; 0 (0) ; 8 (8) ; |firebee1|interrupt_handler:nobody|lpm_bustri_BYT:$00002|lpm_bustri:lpm_bustri_component ; ; +; |lpm_bustri_BYT:$00004| ; 24 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 10 (0) ; 0 (0) ; 14 (0) ; |firebee1|interrupt_handler:nobody|lpm_bustri_BYT:$00004 ; ; +; |lpm_bustri:lpm_bustri_component| ; 24 (24) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 10 (10) ; 0 (0) ; 14 (14) ; |firebee1|interrupt_handler:nobody|lpm_bustri_BYT:$00004|lpm_bustri:lpm_bustri_component ; ; +; |lpm_bustri_BYT:$00006| ; 22 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 7 (0) ; 0 (0) ; 15 (0) ; |firebee1|interrupt_handler:nobody|lpm_bustri_BYT:$00006 ; ; +; |lpm_bustri:lpm_bustri_component| ; 22 (22) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 7 (7) ; 0 (0) ; 15 (15) ; |firebee1|interrupt_handler:nobody|lpm_bustri_BYT:$00006|lpm_bustri:lpm_bustri_component ; ; +; |lpm_counter0:inst18| ; 19 (0) ; 18 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 (0) ; 1 (0) ; 17 (0) ; |firebee1|lpm_counter0:inst18 ; ; +; |lpm_counter:lpm_counter_component| ; 19 (0) ; 18 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 (0) ; 1 (0) ; 17 (0) ; |firebee1|lpm_counter0:inst18|lpm_counter:lpm_counter_component ; ; +; |cntr_mph:auto_generated| ; 19 (19) ; 18 (18) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 (1) ; 1 (1) ; 17 (17) ; |firebee1|lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated ; ; +; |lpm_ff0:inst1| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|lpm_ff0:inst1 ; ; +; |lpm_ff:lpm_ff_component| ; 0 (0) ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 (0) ; 0 (0) ; 0 (0) ; |firebee1|lpm_ff0:inst1|lpm_ff:lpm_ff_component ; ; ++-----------------------------------------------------------------------------+-------------+---------------------------+---------------+-------------+------+--------------+---------+-----------+------+--------------+--------------+-------------------+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------+ +Note: For table entries with two numbers listed, the numbers in parentheses indicate the number of resources of the given type used by the specific entity alone. The numbers listed outside of parentheses indicate the total resources of the given type used by the specific entity and all of its sub-entities in the hierarchy. + + ++---------------------------------------------------------------------------------------------------------+ +; Delay Chain Summary ; ++----------------+----------+---------------+---------------+-----------------------+----------+----------+ +; Name ; Pin Type ; Pad to Core 0 ; Pad to Core 1 ; Pad to Input Register ; TCO ; TCOE ; ++----------------+----------+---------------+---------------+-----------------------+----------+----------+ +; CLK24M576 ; Output ; -- ; -- ; -- ; -- ; -- ; +; LP_STR ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; nFB_BURST ; Input ; -- ; -- ; -- ; -- ; -- ; +; nACSI_DRQ ; Input ; -- ; -- ; -- ; -- ; -- ; +; nACSI_INT ; Input ; -- ; -- ; -- ; -- ; -- ; +; nSCSI_DRQ ; Input ; -- ; -- ; -- ; -- ; -- ; +; nSCSI_MSG ; Input ; -- ; -- ; -- ; -- ; -- ; +; nDCHG ; Input ; -- ; -- ; -- ; -- ; -- ; +; SD_DATA0 ; Input ; -- ; -- ; -- ; -- ; -- ; +; SD_DATA1 ; Input ; -- ; -- ; -- ; -- ; -- ; +; SD_DATA2 ; Input ; -- ; -- ; -- ; -- ; -- ; +; SD_CARD_DEDECT ; Input ; -- ; -- ; -- ; -- ; -- ; +; SD_WP ; Input ; -- ; -- ; -- ; -- ; -- ; +; nDACK0 ; Input ; -- ; -- ; -- ; -- ; -- ; +; WP_CF_CARD ; Input ; -- ; -- ; -- ; -- ; -- ; +; nSCSI_C_D ; Input ; -- ; -- ; -- ; -- ; -- ; +; nSCSI_I_O ; Input ; -- ; -- ; -- ; -- ; -- ; +; nFB_CS3 ; Input ; -- ; -- ; -- ; -- ; -- ; +; CLK25M ; Output ; -- ; -- ; -- ; -- ; -- ; +; nACSI_ACK ; Output ; -- ; -- ; -- ; -- ; -- ; +; nACSI_RESET ; Output ; -- ; -- ; -- ; -- ; -- ; +; nACSI_CS ; Output ; -- ; -- ; -- ; -- ; -- ; +; ACSI_DIR ; Output ; -- ; -- ; -- ; -- ; -- ; +; ACSI_A1 ; Output ; -- ; -- ; -- ; -- ; -- ; +; nSCSI_ACK ; Output ; -- ; -- ; -- ; -- ; -- ; +; nSCSI_ATN ; Output ; -- ; -- ; -- ; -- ; -- ; +; SCSI_DIR ; Output ; -- ; -- ; -- ; -- ; -- ; +; MIDI_OLR ; Output ; -- ; -- ; -- ; -- ; -- ; +; MIDI_TLR ; Output ; -- ; -- ; -- ; -- ; -- ; +; TxD ; Output ; -- ; -- ; -- ; -- ; -- ; +; RTS ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; DTR ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; AMKB_TX ; Output ; -- ; -- ; -- ; -- ; -- ; +; IDE_RES ; Output ; -- ; -- ; -- ; -- ; -- ; +; nIDE_CS0 ; Output ; -- ; -- ; -- ; -- ; -- ; +; nIDE_CS1 ; Output ; -- ; -- ; -- ; -- ; -- ; +; nIDE_WR ; Output ; -- ; -- ; -- ; -- ; -- ; +; nIDE_RD ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; nCF_CS0 ; Output ; -- ; -- ; -- ; -- ; -- ; +; nCF_CS1 ; Output ; -- ; -- ; -- ; -- ; -- ; +; nROM3 ; Output ; -- ; -- ; -- ; -- ; -- ; +; nROM4 ; Output ; -- ; -- ; -- ; -- ; -- ; +; nRP_UDS ; Output ; -- ; -- ; -- ; -- ; -- ; +; nRP_LDS ; Output ; -- ; -- ; -- ; -- ; -- ; +; nSDSEL ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; nWR_GATE ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; nWR ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; YM_QA ; Output ; -- ; -- ; -- ; -- ; -- ; +; YM_QB ; Output ; -- ; -- ; -- ; -- ; -- ; +; YM_QC ; Output ; -- ; -- ; -- ; -- ; -- ; +; SD_CLK ; Output ; -- ; -- ; -- ; -- ; -- ; +; DSA_D ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; nVWE ; Output ; -- ; -- ; -- ; -- ; -- ; +; nVCAS ; Output ; -- ; -- ; -- ; -- ; -- ; +; nVRAS ; Output ; -- ; -- ; -- ; -- ; -- ; +; nVCS ; Output ; -- ; -- ; -- ; -- ; -- ; +; nPD_VGA ; Output ; -- ; -- ; -- ; -- ; -- ; +; TIN0 ; Output ; -- ; -- ; -- ; -- ; -- ; +; nSRCS ; Output ; -- ; -- ; -- ; -- ; -- ; +; nSRBLE ; Output ; -- ; -- ; -- ; -- ; -- ; +; nSRBHE ; Output ; -- ; -- ; -- ; -- ; -- ; +; nSRWE ; Output ; -- ; -- ; -- ; -- ; -- ; +; nDREQ1 ; Output ; -- ; -- ; -- ; -- ; -- ; +; LED_FPGA_OK ; Output ; -- ; -- ; -- ; -- ; -- ; +; nSROE ; Output ; -- ; -- ; -- ; -- ; -- ; +; VCKE ; Output ; -- ; -- ; -- ; -- ; -- ; +; nFB_TA ; Output ; -- ; -- ; -- ; -- ; -- ; +; nDDR_CLK ; Output ; -- ; -- ; -- ; -- ; -- ; +; DDR_CLK ; Output ; -- ; -- ; -- ; -- ; -- ; +; VSYNC_PAD ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; HSYNC_PAD ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; nBLANK_PAD ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; PIXEL_CLK_PAD ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; nSYNC ; Output ; -- ; -- ; -- ; -- ; -- ; +; nMOT_ON ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; nSTEP_DIR ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; nSTEP ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; CLKUSB ; Output ; -- ; -- ; -- ; -- ; -- ; +; LPDIR ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; BA[1] ; Output ; -- ; -- ; -- ; -- ; -- ; +; BA[0] ; Output ; -- ; -- ; -- ; -- ; -- ; +; nIRQ[7] ; Output ; -- ; -- ; -- ; -- ; -- ; +; nIRQ[6] ; Output ; -- ; -- ; -- ; -- ; -- ; +; nIRQ[5] ; Output ; -- ; -- ; -- ; -- ; -- ; +; nIRQ[4] ; Output ; -- ; -- ; -- ; -- ; -- ; +; nIRQ[3] ; Output ; -- ; -- ; -- ; -- ; -- ; +; nIRQ[2] ; Output ; -- ; -- ; -- ; -- ; -- ; +; VA[12] ; Output ; -- ; -- ; -- ; -- ; -- ; +; VA[11] ; Output ; -- ; -- ; -- ; -- ; -- ; +; VA[10] ; Output ; -- ; -- ; -- ; -- ; -- ; +; VA[9] ; Output ; -- ; -- ; -- ; -- ; -- ; +; VA[8] ; Output ; -- ; -- ; -- ; -- ; -- ; +; VA[7] ; Output ; -- ; -- ; -- ; -- ; -- ; +; VA[6] ; Output ; -- ; -- ; -- ; -- ; -- ; +; VA[5] ; Output ; -- ; -- ; -- ; -- ; -- ; +; VA[4] ; Output ; -- ; -- ; -- ; -- ; -- ; +; VA[3] ; Output ; -- ; -- ; -- ; -- ; -- ; +; VA[2] ; Output ; -- ; -- ; -- ; -- ; -- ; +; VA[1] ; Output ; -- ; -- ; -- ; -- ; -- ; +; VA[0] ; Output ; -- ; -- ; -- ; -- ; -- ; +; VB[7] ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; VB[6] ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; VB[5] ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; VB[4] ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; VB[3] ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; VB[2] ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; VB[1] ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; VB[0] ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; VDM[3] ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; VDM[2] ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; VDM[1] ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; VDM[0] ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; VG[7] ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; VG[6] ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; VG[5] ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; VG[4] ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; VG[3] ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; VG[2] ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; VG[1] ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; VG[0] ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; VR[7] ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; VR[6] ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; VR[5] ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; VR[4] ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; VR[3] ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; VR[2] ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; VR[1] ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; VR[0] ; Output ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; TOUT0 ; Input ; -- ; -- ; -- ; -- ; -- ; +; nMASTER ; Input ; -- ; -- ; -- ; -- ; -- ; +; FB_AD[31] ; Bidir ; -- ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; +; FB_AD[30] ; Bidir ; -- ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; +; FB_AD[29] ; Bidir ; -- ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; +; FB_AD[28] ; Bidir ; -- ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; +; FB_AD[27] ; Bidir ; -- ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; +; FB_AD[26] ; Bidir ; -- ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; +; FB_AD[25] ; Bidir ; -- ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; +; FB_AD[24] ; Bidir ; -- ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; +; FB_AD[23] ; Bidir ; -- ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; +; FB_AD[22] ; Bidir ; -- ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; +; FB_AD[21] ; Bidir ; -- ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; +; FB_AD[20] ; Bidir ; -- ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; +; FB_AD[19] ; Bidir ; -- ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; +; FB_AD[18] ; Bidir ; -- ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; +; FB_AD[17] ; Bidir ; -- ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; +; FB_AD[16] ; Bidir ; -- ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; +; FB_AD[15] ; Bidir ; -- ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; +; FB_AD[14] ; Bidir ; -- ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; +; FB_AD[13] ; Bidir ; -- ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; +; FB_AD[12] ; Bidir ; -- ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; +; FB_AD[11] ; Bidir ; -- ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; +; FB_AD[10] ; Bidir ; -- ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; +; FB_AD[9] ; Bidir ; -- ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; +; FB_AD[8] ; Bidir ; -- ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; +; FB_AD[7] ; Bidir ; -- ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; +; FB_AD[6] ; Bidir ; -- ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; +; FB_AD[5] ; Bidir ; -- ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; +; FB_AD[4] ; Bidir ; -- ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; +; FB_AD[3] ; Bidir ; -- ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; +; FB_AD[2] ; Bidir ; -- ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; +; FB_AD[1] ; Bidir ; -- ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; +; FB_AD[0] ; Bidir ; -- ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; +; VD[31] ; Bidir ; (1) 634 ps ; (0) 0 ps ; -- ; (0) 0 ps ; -- ; +; VD[30] ; Bidir ; (0) 0 ps ; (1) 634 ps ; -- ; (0) 0 ps ; -- ; +; VD[29] ; Bidir ; (0) 0 ps ; (1) 634 ps ; -- ; (0) 0 ps ; -- ; +; VD[28] ; Bidir ; (0) 0 ps ; (1) 634 ps ; -- ; (0) 0 ps ; -- ; +; VD[27] ; Bidir ; (0) 0 ps ; (1) 634 ps ; -- ; (0) 0 ps ; -- ; +; VD[26] ; Bidir ; -- ; (0) 0 ps ; -- ; (0) 0 ps ; -- ; +; VD[25] ; Bidir ; (1) 634 ps ; (0) 0 ps ; -- ; (0) 0 ps ; -- ; +; VD[24] ; Bidir ; (0) 0 ps ; (1) 634 ps ; -- ; (0) 0 ps ; -- ; +; VD[23] ; Bidir ; (0) 0 ps ; -- ; -- ; (0) 0 ps ; -- ; +; VD[22] ; Bidir ; (0) 0 ps ; (1) 634 ps ; -- ; (0) 0 ps ; -- ; +; VD[21] ; Bidir ; (0) 0 ps ; (1) 634 ps ; -- ; (0) 0 ps ; -- ; +; VD[20] ; Bidir ; (0) 0 ps ; (1) 634 ps ; -- ; (0) 0 ps ; -- ; +; VD[19] ; Bidir ; (1) 634 ps ; (0) 0 ps ; -- ; (0) 0 ps ; -- ; +; VD[18] ; Bidir ; (0) 0 ps ; -- ; -- ; (0) 0 ps ; -- ; +; VD[17] ; Bidir ; (0) 0 ps ; (1) 634 ps ; -- ; (0) 0 ps ; -- ; +; VD[16] ; Bidir ; (0) 0 ps ; -- ; -- ; (0) 0 ps ; -- ; +; VD[15] ; Bidir ; (2) 952 ps ; (0) 0 ps ; -- ; (0) 0 ps ; -- ; +; VD[14] ; Bidir ; -- ; (0) 0 ps ; -- ; (0) 0 ps ; -- ; +; VD[13] ; Bidir ; (2) 952 ps ; (0) 0 ps ; -- ; (0) 0 ps ; -- ; +; VD[12] ; Bidir ; (2) 952 ps ; (0) 0 ps ; -- ; (0) 0 ps ; -- ; +; VD[11] ; Bidir ; (0) 0 ps ; (2) 952 ps ; -- ; (0) 0 ps ; -- ; +; VD[10] ; Bidir ; (2) 952 ps ; (0) 0 ps ; -- ; (0) 0 ps ; -- ; +; VD[9] ; Bidir ; (2) 952 ps ; (0) 0 ps ; -- ; (0) 0 ps ; -- ; +; VD[8] ; Bidir ; (0) 0 ps ; -- ; -- ; (0) 0 ps ; -- ; +; VD[7] ; Bidir ; (0) 0 ps ; -- ; -- ; (0) 0 ps ; -- ; +; VD[6] ; Bidir ; (2) 952 ps ; (0) 0 ps ; -- ; (0) 0 ps ; -- ; +; VD[5] ; Bidir ; (0) 0 ps ; -- ; -- ; (0) 0 ps ; -- ; +; VD[4] ; Bidir ; (0) 0 ps ; -- ; -- ; (0) 0 ps ; -- ; +; VD[3] ; Bidir ; (0) 0 ps ; (2) 952 ps ; -- ; (0) 0 ps ; -- ; +; VD[2] ; Bidir ; (0) 0 ps ; (2) 952 ps ; -- ; (0) 0 ps ; -- ; +; VD[1] ; Bidir ; (2) 952 ps ; (0) 0 ps ; -- ; (0) 0 ps ; -- ; +; VD[0] ; Bidir ; (2) 952 ps ; (0) 0 ps ; -- ; (0) 0 ps ; -- ; +; VDQS[3] ; Bidir ; -- ; -- ; -- ; -- ; (0) 0 ps ; +; VDQS[2] ; Bidir ; -- ; -- ; -- ; -- ; (0) 0 ps ; +; VDQS[1] ; Bidir ; -- ; -- ; -- ; -- ; (0) 0 ps ; +; VDQS[0] ; Bidir ; -- ; -- ; -- ; -- ; (0) 0 ps ; +; IO[17] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; IO[16] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; IO[15] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; IO[14] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; IO[13] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; IO[12] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; IO[11] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; IO[10] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; IO[9] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; IO[8] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; IO[7] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; IO[6] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; IO[5] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; IO[4] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; IO[3] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; IO[2] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; IO[1] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; IO[0] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; SRD[15] ; Bidir ; -- ; (0) 0 ps ; -- ; -- ; -- ; +; SRD[14] ; Bidir ; -- ; (0) 0 ps ; -- ; -- ; -- ; +; SRD[13] ; Bidir ; (0) 0 ps ; -- ; -- ; -- ; -- ; +; SRD[12] ; Bidir ; (0) 0 ps ; -- ; -- ; -- ; -- ; +; SRD[11] ; Bidir ; (0) 0 ps ; -- ; -- ; -- ; -- ; +; SRD[10] ; Bidir ; -- ; (0) 0 ps ; -- ; -- ; -- ; +; SRD[9] ; Bidir ; -- ; (0) 0 ps ; -- ; -- ; -- ; +; SRD[8] ; Bidir ; -- ; (0) 0 ps ; -- ; -- ; -- ; +; SRD[7] ; Bidir ; (0) 0 ps ; -- ; -- ; -- ; -- ; +; SRD[6] ; Bidir ; -- ; (0) 0 ps ; -- ; -- ; -- ; +; SRD[5] ; Bidir ; (0) 0 ps ; -- ; -- ; -- ; -- ; +; SRD[4] ; Bidir ; -- ; (0) 0 ps ; -- ; -- ; -- ; +; SRD[3] ; Bidir ; -- ; (0) 0 ps ; -- ; -- ; -- ; +; SRD[2] ; Bidir ; (0) 0 ps ; -- ; -- ; -- ; -- ; +; SRD[1] ; Bidir ; -- ; (0) 0 ps ; -- ; -- ; -- ; +; SRD[0] ; Bidir ; (0) 0 ps ; -- ; -- ; -- ; -- ; +; SCSI_PAR ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; nSCSI_SEL ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; nSCSI_BUSY ; Bidir ; -- ; -- ; -- ; (0) 0 ps ; -- ; +; nSCSI_RST ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; SD_CD_DATA3 ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; SD_CMD_D1 ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; ACSI_D[7] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; ACSI_D[6] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; ACSI_D[5] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; ACSI_D[4] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; ACSI_D[3] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; ACSI_D[2] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; ACSI_D[1] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; ACSI_D[0] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; LP_D[7] ; Bidir ; -- ; (0) 0 ps ; -- ; (0) 0 ps ; -- ; +; LP_D[6] ; Bidir ; (0) 0 ps ; -- ; -- ; (0) 0 ps ; -- ; +; LP_D[5] ; Bidir ; (0) 0 ps ; -- ; -- ; (0) 0 ps ; -- ; +; LP_D[4] ; Bidir ; (0) 0 ps ; -- ; -- ; (0) 0 ps ; -- ; +; LP_D[3] ; Bidir ; -- ; (0) 0 ps ; -- ; (0) 0 ps ; -- ; +; LP_D[2] ; Bidir ; -- ; (0) 0 ps ; -- ; (0) 0 ps ; -- ; +; LP_D[1] ; Bidir ; (0) 0 ps ; -- ; -- ; (0) 0 ps ; -- ; +; LP_D[0] ; Bidir ; (0) 0 ps ; -- ; -- ; (0) 0 ps ; -- ; +; SCSI_D[7] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; SCSI_D[6] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; SCSI_D[5] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; SCSI_D[4] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; SCSI_D[3] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; SCSI_D[2] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; SCSI_D[1] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; SCSI_D[0] ; Bidir ; -- ; -- ; -- ; -- ; -- ; +; nRSTO_MCF ; Input ; (0) 0 ps ; -- ; -- ; -- ; -- ; +; nFB_WR ; Input ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; -- ; +; nFB_CS1 ; Input ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; -- ; +; FB_SIZE1 ; Input ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; -- ; +; FB_SIZE0 ; Input ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; -- ; +; FB_ALE ; Input ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; -- ; +; nFB_CS2 ; Input ; (0) 0 ps ; -- ; -- ; -- ; -- ; +; MAIN_CLK ; Input ; (0) 0 ps ; -- ; -- ; -- ; -- ; +; nDACK1 ; Input ; (0) 0 ps ; -- ; -- ; -- ; -- ; +; nFB_OE ; Input ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; -- ; +; IDE_RDY ; Input ; -- ; (0) 0 ps ; -- ; -- ; -- ; +; CLK33M ; Input ; (0) 0 ps ; -- ; -- ; -- ; -- ; +; HD_DD ; Input ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; -- ; +; nINDEX ; Input ; (0) 0 ps ; -- ; -- ; -- ; -- ; +; RxD ; Input ; (0) 0 ps ; -- ; -- ; -- ; -- ; +; nWP ; Input ; -- ; (0) 0 ps ; -- ; -- ; -- ; +; LP_BUSY ; Input ; (0) 0 ps ; -- ; -- ; -- ; -- ; +; DCD ; Input ; (0) 0 ps ; -- ; -- ; -- ; -- ; +; CTS ; Input ; -- ; (0) 0 ps ; -- ; -- ; -- ; +; TRACK00 ; Input ; (0) 0 ps ; -- ; -- ; -- ; -- ; +; IDE_INT ; Input ; (0) 0 ps ; -- ; -- ; -- ; -- ; +; RI ; Input ; -- ; (0) 0 ps ; -- ; -- ; -- ; +; nPCI_INTD ; Input ; (6) 2223 ps ; (0) 0 ps ; -- ; -- ; -- ; +; nPCI_INTC ; Input ; (0) 0 ps ; (6) 2223 ps ; -- ; -- ; -- ; +; nPCI_INTB ; Input ; (6) 2223 ps ; (0) 0 ps ; -- ; -- ; -- ; +; nPCI_INTA ; Input ; (0) 0 ps ; (6) 2223 ps ; -- ; -- ; -- ; +; DVI_INT ; Input ; (0) 0 ps ; -- ; -- ; -- ; -- ; +; E0_INT ; Input ; (0) 0 ps ; -- ; -- ; -- ; -- ; +; PIC_INT ; Input ; (0) 0 ps ; (6) 2223 ps ; -- ; -- ; -- ; +; PIC_AMKB_RX ; Input ; (1) 663 ps ; -- ; -- ; -- ; -- ; +; MIDI_IN ; Input ; -- ; (1) 634 ps ; -- ; -- ; -- ; +; nRD_DATA ; Input ; -- ; -- ; (0) 0 ps ; -- ; -- ; +; AMKB_RX ; Input ; (0) 0 ps ; (0) 0 ps ; -- ; -- ; -- ; ++----------------+----------+---------------+---------------+-----------------------+----------+----------+ + + ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Pad To Core Delay Chain Fanout ; ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+---------+ +; Source Pin / Fanout ; Pad To Core Index ; Setting ; ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+---------+ +; nFB_BURST ; ; ; +; nACSI_DRQ ; ; ; +; nACSI_INT ; ; ; +; nSCSI_DRQ ; ; ; +; nSCSI_MSG ; ; ; +; nDCHG ; ; ; +; SD_DATA0 ; ; ; +; SD_DATA1 ; ; ; +; SD_DATA2 ; ; ; +; SD_CARD_DEDECT ; ; ; +; SD_WP ; ; ; +; nDACK0 ; ; ; +; WP_CF_CARD ; ; ; +; nSCSI_C_D ; ; ; +; nSCSI_I_O ; ; ; +; nFB_CS3 ; ; ; +; TOUT0 ; ; ; +; nMASTER ; ; ; +; FB_AD[31] ; ; ; +; - SRD[15]~output ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_A[7] ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[31] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_SEL ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~5 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_A[7] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_B[7] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|ADDRESSLATCH~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[31]~32 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|ENV_FREQ[15] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|CTRL_REG[7] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[31] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[31] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LOF[15] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[31] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[31] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_TOP[7] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MODUS[15] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_B[7] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_TRANSMIT:I_UART_TRANSMIT|DATA_REG~3 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_TRANSMIT:I_UART_TRANSMIT|DATA_REG~3 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[31] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|CTRL_REG~1 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~2_RESYN20 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[10]~5_RESYN28 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|ENV_FREQ[7]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[31]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LWD[15]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[31]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_C[7]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[31]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[31]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[31]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ram_block11a0 ; 1 ; 0 ; +; FB_AD[30] ; ; ; +; - SRD[14]~output ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[30] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_SEL ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~5 ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[30] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_A[6] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_B[6] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|ADDRESSLATCH~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[30]~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|ENV_FREQ[14] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|CTRL_REG[6] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_TOP[6] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MODUS[14] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[30] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[30] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LWD[14] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[30] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[30] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_B[6] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|CTRL_REG~7 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_TRANSMIT:I_UART_TRANSMIT|DATA_REG~6 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_TRANSMIT:I_UART_TRANSMIT|DATA_REG~5 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[30] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[30] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_A[6] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~2_RESYN22 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[10]~5_RESYN28 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[30]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[30]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_A[6]~_Duplicate_1feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LOF[14]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[30]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_C[6]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|ENV_FREQ[6]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ram_block11a0 ; 1 ; 0 ; +; FB_AD[29] ; ; ; +; - SRD[13]~output ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_A[5] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|CTRL_REG[5] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[29] ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[29] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_A[5] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_B[5] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|ADDRESSLATCH~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[29]~2 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|ENV_FREQ[13] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_TOP[5] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MODUS[13] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[29] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[29] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LOF[13] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[29] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[29] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_B[5] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|CTRL_REG~6 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_TRANSMIT:I_UART_TRANSMIT|DATA_REG~9 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_TRANSMIT:I_UART_TRANSMIT|DATA_REG~8 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[29] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~2_RESYN20 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_C[5]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[29]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LWD[13]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[29]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|ENV_FREQ[5]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[29]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[29]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ram_block11a0 ; 1 ; 0 ; +; FB_AD[28] ; ; ; +; - SRD[12]~output ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_A[4] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|LEVEL_A[4] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|CTRL_REG[4] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|LEVEL_B[4] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|LEVEL_C[4] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[28] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|NOISE_FREQ[4] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_B[4] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_C[4] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|ADDRESSLATCH~1 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[28]~3 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|CTRL_REG~4 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|ENV_FREQ[12] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_TOP[4] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MODUS[12] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[28] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[28] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[28] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[28] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LOF[12] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_B[4] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_TRANSMIT:I_UART_TRANSMIT|DATA_REG~5 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_TRANSMIT:I_UART_TRANSMIT|DATA_REG~6 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[28] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[28] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~2_RESYN20 ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[28]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_A[4]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|ENV_FREQ[4]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LWD[12]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[28]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[28]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[28]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ram_block11a0 ; 1 ; 0 ; +; FB_AD[27] ; ; ; +; - SRD[11]~output ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_A[3] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|CTRL_REG[3] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|LEVEL_A[3] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|LEVEL_B[3] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|LEVEL_C[3] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|ADR_I[3] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_A[11] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|NOISE_FREQ[3] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|ENV_SHAPE[3] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_B[11] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_C[3] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[27]~4 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|CTRL_REG~5 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|ENV_FREQ[3] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_TOP[3] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MODUS[11] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[27] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[27] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[27] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[11] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBB[11] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[11] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HSS[11] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HHT[11] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LWD[11] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[27] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[27] ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[27] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_B[3] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_TRANSMIT:I_UART_TRANSMIT|DATA_REG~8 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_TRANSMIT:I_UART_TRANSMIT|DATA_REG~9 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[27] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[27] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[27] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~2_RESYN20 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LOF[11]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_A[3]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_B[3]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[11]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[27]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_C[11]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|ENV_FREQ[11]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[27]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[27]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ram_block11a0 ; 1 ; 0 ; +; FB_AD[26] ; ; ; +; - Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - SRD[10]~output ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|LEVEL_A[2] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|LEVEL_B[2] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|CTRL_REG[2] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[26] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA[12]~53 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|ADR_I[2] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_A[2] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|NOISE_FREQ[2] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|ENV_SHAPE[2] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_B[10] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_B[2] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_C[10] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_C[2] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[26]~5 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|CTRL_REG~3 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|ENV_FREQ[2] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[26] ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[26] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_TOP[2] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MODUS[10] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[26] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[26] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[10] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBB[10] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[10] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HSS[10] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDB[10] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBE[10] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBB[10] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDE[10] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LWD[10] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VSS[10] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VFT[10] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_B[2] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_TRANSMIT:I_UART_TRANSMIT|DATA_REG~7 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_TRANSMIT:I_UART_TRANSMIT|DATA_REG~7 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~3 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[26] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[26] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[26] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_X_D[2]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HHT[10]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[26]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[26]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[26]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|ENV_FREQ[10]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LOF[10]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_A[10]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|LEVEL_C[2]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[10]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[10]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[26]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ram_block11a0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram0:ST_CLUT_RED|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; FB_AD[25] ; ; ; +; - SRD[9]~output ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|LEVEL_A[1] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|CTRL_REG[1] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|LEVEL_B[1] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|LEVEL_C[1] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_A[1] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA[11]~55 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|ADR_I[1] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_A[1] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|NOISE_FREQ[1] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|ENV_SHAPE[1] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_B[9] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_B[1] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_C[9] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_C[1] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[25]~6 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|CTRL_REG~2 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|ENV_FREQ[1] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WDC_BSL[1] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[25] ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[25] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_TOP[1] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MODUS[9] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[25] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[25] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[9] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBB[9] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HSS[9] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HHT[9] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDB[9] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBE[9] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDE[9] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[9] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VSS[9] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VFT[9] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LWD[9] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ST_SHIFT_MODE[1] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_B[1] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_TRANSMIT:I_UART_TRANSMIT|DATA_REG~2 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_TRANSMIT:I_UART_TRANSMIT|DATA_REG~2 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~3 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[25] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[25] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[25]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[25]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[9]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBB[9]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_X_D[1]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_A[9]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[25]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|ENV_FREQ[9]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[25]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LOF[9]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[25]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[9]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[25]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ram_block11a0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram0:ST_CLUT_RED|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; FB_AD[24] ; ; ; +; - Video:Fredi_Aschwanden|altdpram0:ST_CLUT_RED|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[7]~22 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ram_block11a0 ; 1 ; 0 ; +; - SRD[8]~output ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_A[0] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|CTRL_REG[0] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|LEVEL_A[0] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|LEVEL_B[0] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|LEVEL_C[0] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA[10]~58 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|ADR_I[0] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MODUS[8] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_A[0] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|NOISE_FREQ[0] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|ENV_SHAPE[0] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_B[0] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_C[8] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_C[0] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[24]~7 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_TRANSMIT:I_UART_TRANSMIT|DATA_REG~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|CTRL_REG~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_TRANSMIT:I_UART_TRANSMIT|DATA_REG~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|ENV_FREQ[0] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[24] ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[24] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_TOP[0] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[24] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[8] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[8] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[8] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HSS[8] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HHT[8] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDB[8] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDE[8] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LWD[8] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LOF[8] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VSS[8] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[8] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VFT[8] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VCT[8] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ST_SHIFT_MODE[0] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_B[0] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~3 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[24] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[24] ; 1 ; 0 ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|shift_reg[9]~29 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_A[8]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_B[8]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|ENV_FREQ[8]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[24]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[24]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[24]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_X_D[0]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WDC_BSL[0]~feeder ; 1 ; 0 ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[16]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[24]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBB[8]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBB[8]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBE[8]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[24]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[24]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[24]~feeder ; 1 ; 0 ; +; FB_AD[23] ; ; ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[6]~20 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_D[7] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_C[7] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|TRACK_REG[7]~0 ; 1 ; 0 ; +; - SRD[7]~output ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IMRB[7] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IMRA[7] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA[9]~60 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|SCR[7] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|VR[7] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IERB[7] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IPRB~4 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IERA[7] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IPRA~10 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[23]~8 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[16]~15 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|UCR[7] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[7] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|ISRA~1 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|ISRB~1 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO|AER[7] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDE[7] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[23] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[23] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VCT[7] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[7] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LWD[7] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VSS[7] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VFT[7] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[23] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[23] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[7] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[7] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBB[7] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[7] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HSS[7] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HHT[7] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDB[7] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[23] ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[23] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][1] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][3] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][5] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][6] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][9] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][10] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][14] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][16] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][18] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][20] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][21] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][23] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][26] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][28] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][29] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][30] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][32] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][31] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][34] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][36] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][35] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][37] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][39] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][42] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][44] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][46] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][45] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][48] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][50] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][52] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][54] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][56] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][58] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][57] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][59] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][61] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][63] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_HIGH[7] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO|GPDR[7] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO|DDR[7] ; 1 ; 0 ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_compare:cmpr7|cmpr_tnd:auto_generated|aneb_result_wire[0]~0 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][0]~73 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][2]~74 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][4]~75 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MID[7]~6 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[7]~4 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|UDR[7]~10 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[23] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[23] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TDDR[7] ; 1 ; 0 ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|shift_reg[10]~5 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TCDR[7] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TBDR[7] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_B~24 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_A~24 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_H_D[7]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[23]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_M_D[7]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LOF[7]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBE[7]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBB[7]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[23]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MODUS[7]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[23]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VR_FRQ[7]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][60]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][43]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][53]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][62]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][38]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][25]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][11]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][22]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][41]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][27]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][33]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][40]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][24]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][17]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][7]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][55]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][51]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][19]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][12]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][47]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][15]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[23]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][49]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][8]~feeder ; 1 ; 0 ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[15]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TADR[7]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[23]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_GREEN|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ram_block11a0 ; 1 ; 0 ; +; FB_AD[22] ; ; ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[5]~18 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_D[6] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_C[6] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|DATA_REG[6]~0 ; 1 ; 0 ; +; - SRD[6]~output ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IMRB[6] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IMRA[6] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA[8]~62 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MODUS[6] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|SCR[6] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|VR[6] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IERB[6] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IPRB~2 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IERA[6] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IPRA~8 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[22]~9 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[15]~16 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[6] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|ISRA~2 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|ISRB~2 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_H_D[6] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBB[6] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[22] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VCT[6] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|SYS_CTR[6] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LWD[6] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VFT[6] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VSS[6] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[22] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[22] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[22] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[6] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[6] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBB[6] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[6] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HSS[6] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HHT[6] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBE[6] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_M_D[6] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[22] ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[22] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][1] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][3] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][5] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][7] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][6] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][9] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][11] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][13] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][16] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][17] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][19] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][21] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][23] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][25] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][28] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][29] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][31] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][33] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][36] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][38] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][39] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][41] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][44] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][46] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][48] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][47] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][50] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][52] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][53] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][55] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][58] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][57] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][59] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][61] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][62] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_HIGH[6] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO|GPDR[6] ; 1 ; 0 ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_compare:cmpr7|cmpr_tnd:auto_generated|aneb_result_wire[0]~0 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][0]~78 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][2]~79 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][4]~80 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MID[6]~7 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[6]~5 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|UDR[6]~12 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[22] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[22] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TDDR[6] ; 1 ; 0 ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|shift_reg[11]~9 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TCDR[6] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_B~30 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_A~30 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LOF[6]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][51]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][14]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][43]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][60]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][63]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][42]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][40]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][8]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][24]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][32]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][35]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][30]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][15]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][27]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][26]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][37]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][34]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][49]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][45]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][20]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][54]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][56]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][12]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][22]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[6][18]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[22]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDE[6]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[6]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO|DDR[6]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO|AER[6]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TADR[6]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[22]~feeder ; 1 ; 0 ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[14]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TBDR[6]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TCDCR[5]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|UCR[6]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[22]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDB[6]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VR_FRQ[6]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[22]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[22]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram0:ST_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_GREEN|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ram_block11a0 ; 1 ; 0 ; +; FB_AD[21] ; ; ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[4]~16 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_D[5] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_C[5] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|DATA_REG[5]~1 ; 1 ; 0 ; +; - SRD[5]~output ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IMRB[5] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IMRA[5] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA[7]~64 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|UCR[5] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|SCR[5] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_M_D[5] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|VR[5] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IERB[5] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IPRB~6 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IPRA~14 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[21]~10 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[14]~17 ; 1 ; 0 ; +; - interrupt_handler:nobody|RTC_ADR[5] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[5] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|ISRA~3 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|ISRB~3 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO|AER[5] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDE[5] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBB[5] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[21] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[21] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VCT[5] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[5] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|SYS_CTR[5] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LOF[5] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VFT[5] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VSS[5] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[21] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[21] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[5] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[5] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBB[5] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[5] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HHT[5] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[21] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[21] ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[21] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][18] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][30] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][17] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][29] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][16] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][28] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][19] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][31] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][36] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][39] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][40] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][43] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][32] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][35] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][44] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][47] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][1] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][13] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][6] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][14] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][12] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][7] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][3] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][15] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][58] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][56] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][59] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][52] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][55] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][48] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][51] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][60] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][63] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_HIGH[5] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MODUS[5] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO|GPDR[5] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO|DDR[5] ; 1 ; 0 ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_compare:cmpr7|cmpr_tnd:auto_generated|aneb_result_wire[0]~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MID[5]~3 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][2]~82 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][4]~83 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][0]~85 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[5]~6 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|UDR[5]~15 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[21] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[21] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TDDR[5] ; 1 ; 0 ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|shift_reg[12]~12 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TCDR[5] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_B~36 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_A~36 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LWD[5]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[21]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_H_D[5]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HSS[5]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDB[5]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBE[5]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][41]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][8]~feeder ; 1 ; 0 ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[13]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][9]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][20]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TBDR[5]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][42]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][45]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IERA[5]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|TSR[5]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][57]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][62]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][37]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][46]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][53]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][38]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][5]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VR_FRQ[5]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][33]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][34]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][49]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][10]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][50]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][27]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][54]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][24]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][11]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][26]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][25]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][21]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][22]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][23]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[21]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TCDCR[4]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TADR[5]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[5][61]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[21]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[21]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram0:ST_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_GREEN|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ram_block11a0 ; 1 ; 0 ; +; FB_AD[20] ; ; ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[3]~14 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_D[4] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_C[4] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|DATA_REG[4]~2 ; 1 ; 0 ; +; - SRD[4]~output ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IMRB[4] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IMRA[4] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA[6]~66 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|UCR[4] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_M_D[4] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MODUS[4] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|VR[4] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IERB[4] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IPRB~8 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IPRA~12 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[20]~11 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[13]~18 ; 1 ; 0 ; +; - interrupt_handler:nobody|RTC_ADR[4] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[4] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|ISRA~4 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|ISRB~4 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO|AER[4] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDE[4] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[20] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VCT[4] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[4] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|SYS_CTR[4] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LOF[4] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VFT[4] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VSS[4] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[20] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[4] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[4] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBB[4] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[4] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HSS[4] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[20] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[20] ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[20] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][36] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][39] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][40] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][43] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][32] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][35] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][44] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][47] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][18] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][30] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][17] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][29] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][16] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][28] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][19] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][31] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][9] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][1] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][13] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][6] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][14] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][12] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][7] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][3] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][15] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][56] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][59] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][52] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][55] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][48] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][51] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][60] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][63] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_HIGH[4] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TACR[4] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TBCR[4] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO|GPDR[4] ; 1 ; 0 ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_compare:cmpr7|cmpr_tnd:auto_generated|aneb_result_wire[0]~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MID[4]~4 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][2]~86 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][4]~87 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][0]~89 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[4]~7 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|UDR[4]~18 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[20] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[20] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TDDR[4] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TCDR[4] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_B~42 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TADR[4] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_A~42 ; 1 ; 0 ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[12] ; 1 ; 0 ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|shift_reg[13]~27 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VR_FRQ[4] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][62]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][58]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO|DDR[4]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LWD[4]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|SCR[4]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HHT[4]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][11]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][5]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][20]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][41]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][22]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TBDR[4]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][50]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TCDCR[3]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[20]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDB[4]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[20]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBB[4]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[20]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_H_D[4]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[20]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][27]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][61]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][38]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][42]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][54]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][57]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][34]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][49]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][53]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][45]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][46]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][10]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][23]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][24]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][37]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][33]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][26]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IERA[4]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][8]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][25]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[4][21]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[20]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBE[4]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[20]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram0:ST_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_GREEN|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ram_block11a0 ; 1 ; 0 ; +; FB_AD[19] ; ; ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[2]~12 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_D[3] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_C[3] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|DATA_REG[3]~3 ; 1 ; 0 ; +; - SRD[3]~output ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IMRB[3] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA[5]~68 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|UCR[3] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|TSR[3] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|SCR[3] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MODUS[3] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|VR[3] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IPRB~10 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IERA[3] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IPRA~16 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[19]~12 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[12]~19 ; 1 ; 0 ; +; - interrupt_handler:nobody|RTC_ADR[3] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_M_D[3] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|ISRA~7 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|ISRB~5 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TACR[3] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO|AER[3] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_H_D[3] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDE[3] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBB[3] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[19] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VFT[3] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VCT[3] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LWD[3] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LOF[3] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VSS[3] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[3] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[19] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[3] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[3] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBB[3] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[3] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HSS[3] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HHT[3] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO|GPDR[3] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[3] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[19] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[19] ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[19] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][18] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][30] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][17] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][29] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][16] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][28] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][19] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][31] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][36] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][39] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][40] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][43] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][32] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][35] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][44] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][47] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][1] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][13] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][10] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][6] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][14] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][8] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][12] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][7] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][3] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][15] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][56] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][59] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][52] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][55] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][48] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][51] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][60] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][63] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_HIGH[3] ; 1 ; 0 ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_compare:cmpr7|cmpr_tnd:auto_generated|aneb_result_wire[0]~1 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|UDR[3]~21 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][2]~90 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][4]~91 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][0]~93 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MID[3]~8 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[3]~8 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[19] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[19] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TDDR[3] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TCDR[3] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_B~47 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TADR[3] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_A~47 ; 1 ; 0 ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|shift_reg[14]~24 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VR_FRQ[3] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[19]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[19]~feeder ; 1 ; 0 ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[11]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VMD[3]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBE[3]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[19]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[19]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO|DDR[3]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[19]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDB[3]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][38]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][45]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][61]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][53]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][62]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][58]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][27]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][54]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][42]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][57]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][34]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][49]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][26]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][25]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][21]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][37]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][33]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][46]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][23]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][24]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][11]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][22]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][41]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][20]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][5]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][9]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[3][50]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TBCR[3]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TBDR[3]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IERB[3]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IMRA[3]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_GREEN|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ram_block11a0 ; 1 ; 0 ; +; FB_AD[18] ; ; ; +; - Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_GREEN|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[1]~10 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_D[2] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_C[2] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|DATA_REG[2]~4 ; 1 ; 0 ; +; - SRD[2]~output ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VRAS~4 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IMRA[2] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IMRB[2] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA[4]~70 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|UCR[2] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|TSR[2] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|SCR[2] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[18] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IPRA~4 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IERB[2] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IPRB~12 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[18]~13 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[11]~20 ; 1 ; 0 ; +; - interrupt_handler:nobody|RTC_ADR[2] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_M_D[2] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_H_D[2] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[2] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[18] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[18] ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[18] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][1] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][3] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][5] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][9] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][12] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][13] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][16] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][18] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][19] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][21] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][24] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][26] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][27] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][28] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][29] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][32] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][31] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][33] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][35] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][37] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][39] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][41] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][44] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][46] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][48] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][50] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][49] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][51] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][54] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][56] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][57] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][59] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][61] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][63] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_HIGH[2] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TACR[2] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TBCR[2] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO|GPDR[2] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO|AER[2] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[18] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[18] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[18] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[2] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[2] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[2] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HSS[2] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HHT[2] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBE[2] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDE[2] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[18] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VFT[2] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VCT[2] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LOF[2] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[2] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VSS[2] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|SYS_CTR[2] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|ISRA~8 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|ISRB~6 ; 1 ; 0 ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_compare:cmpr7|cmpr_tnd:auto_generated|aneb_result_wire[0]~1 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][0]~69 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][2]~70 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][4]~71 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MID[2]~5 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[2]~3 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|UDR[2]~9 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[18] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[18] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TDDR[2] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TBDR[2] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_B~18 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TCDR[2] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_A~18 ; 1 ; 0 ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|shift_reg[15]~21 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[18]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MODUS[2]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][60]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][45]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][47]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][17]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][30]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][62]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][15]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][40]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][43]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO|DDR[2]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][53]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][55]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][58]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][38]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][10]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][14]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][34]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][25]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][6]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][7]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][23]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][8]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][36]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][42]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][52]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][20]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[2][22]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LWD[2]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBB[2]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VMD[2]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBB[2]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDB[2]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[18]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IERA[2]~feeder ; 1 ; 0 ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[10]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VR_FRQ[2]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TCDCR[2]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TADR[2]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[18]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram0:ST_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ram_block11a0 ; 1 ; 0 ; +; FB_AD[17] ; ; ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[0]~8 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|DATA_REG[1]~5 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_D[1] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_C[1] ; 1 ; 0 ; +; - SRD[1]~output ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VCAS~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IMRA[1] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IMRB[1] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA[3]~72 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|UCR[1] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|SCR[1] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|RSR[1] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IERA[1] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IPRA~2 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IERB[1] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IPRB~14 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[17]~14 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[10]~21 ; 1 ; 0 ; +; - interrupt_handler:nobody|RTC_ADR[1] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_M_D[1] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDE[1] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBB[1] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[17] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VFT[1] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VMD[1] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VCT[1] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LOF[1] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LWD[1] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|SYS_CTR[1] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VSS[1] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[17] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[17] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[1] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[1] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBB[1] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[1] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HSS[1] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HHT[1] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDB[1] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_H_D[1] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[17] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[17] ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[17] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][1] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][3] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][5] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][6] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][9] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][12] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][13] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][16] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][15] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][18] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][19] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][21] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][23] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][26] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][27] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][28] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][29] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][31] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][34] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][36] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][37] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][40] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][42] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][43] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][46] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][47] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][49] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][51] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][53] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][55] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][58] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][60] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][61] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][62] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_HIGH[1] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TACR[1] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO|GPDR[1] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|ISRA~6 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|ISRB~7 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~3 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][0]~65 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][2]~66 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][4]~67 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MID[1]~2 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[1]~2 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|UDR[1]~6 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[17] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[17] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TDDR[1] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_B~12 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TCDR[1] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_A~12 ; 1 ; 0 ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|shift_reg[16]~18 ; 1 ; 0 ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_compare:cmpr7|cmpr_tnd:auto_generated|aneb_result_wire[0] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[17]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TADR[1]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|TSR[1]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][59]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][50]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][48]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][25]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][8]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][30]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO|DDR[1]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][20]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][22]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO|AER[1]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TBCR[1]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TCDCR[1]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TBDR[1]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][56]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][45]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][63]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][44]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][54]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][7]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][17]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][52]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][38]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][10]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][14]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][41]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][57]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][32]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][35]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][24]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][39]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[1][33]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MODUS[1]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[17]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[17]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBE[1]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[17]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[1]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VR_FRQ[1]~feeder ; 1 ; 0 ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[9]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[17]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[1]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram0:ST_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ram_block11a0 ; 1 ; 0 ; +; FB_AD[16] ; ; ; +; - Video:Fredi_Aschwanden|altdpram0:ST_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[0]~8 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ram_block11a0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_D[0] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_C[0] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|DATA_REG[0]~6 ; 1 ; 0 ; +; - SRD[0]~output ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|TSR[0] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VWE ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[16] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IMRA[0] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IMRB[0] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA[2]~74 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|SCR[0] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IERA[0] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IPRA~6 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IERB[0] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IPRB~16 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[16]~15 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[9]~22 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|RSR[0] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_H_D[0] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_M_D[0] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[0] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[16] ; 1 ; 0 ; +; - interrupt_handler:nobody|RTC_ADR[0] ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[16] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][1] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][3] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][5] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][6] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][9] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][10] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][14] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][16] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][18] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][20] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][22] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][24] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][26] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][27] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][28] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][30] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][32] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][34] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][36] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][38] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][40] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][42] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][44] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][46] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][48] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][50] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][52] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][54] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][56] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][58] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][60] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][61] ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][63] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_HIGH[0] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MODUS[0] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO|GPDR[0] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[16] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[0] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[0] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBB[0] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[0] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HHT[0] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDB[0] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDE[0] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[16] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VFT[0] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VCT[0] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LOF[0] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LWD[0] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VSS[0] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|SYS_CTR[0] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|ISRA~5 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|ISRB~8 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|UDR[0]~2 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~4 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][0]~0 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][2]~3 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][4]~6 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][13]~12 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MID[0]~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[0]~0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[16] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[16] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_B~6 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_A~6 ; 1 ; 0 ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|shift_reg[17]~15 ; 1 ; 0 ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[8] ; 1 ; 0 ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_compare:cmpr7|cmpr_tnd:auto_generated|aneb_result_wire[0] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[16]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[16]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBE[0]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][59]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][12]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][51]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][17]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][7]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][37]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][25]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][29]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][41]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][35]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][15]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[16]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][31]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][57]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][43]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][47]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][23]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][39]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][49]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][33]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][45]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][62]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][53]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][55]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO|AER[0]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HSS[0]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[16]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[16]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VMD[0]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[0]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[16]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TBDR[0]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TDDR[0]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][21]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][8]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][19]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TCDR[0]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TACR[0]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TCDCR[0]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TBCR[0]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO|DDR[0]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TADR[0]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBB[0]~feeder ; 1 ; 0 ; +; FB_AD[15] ; ; ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA[1]~76 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[15]~16 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[15] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[15] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[15] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[15] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[15] ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[15] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~4 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MID[7]~6 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[15] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[15] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[15]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[15]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[15]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[15]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[15]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ram_block11a0 ; 1 ; 0 ; +; FB_AD[14] ; ; ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA[0]~78 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BA_S[1]~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[14]~17 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[14] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[14] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[14] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[14] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[14] ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[14] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~4 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MID[6]~7 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[14] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[14] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[14]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[14]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[14]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[14]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[14]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ram_block11a0 ; 1 ; 0 ; +; FB_AD[13] ; ; ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~4 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BA[1]~9 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BA_S[0]~5 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[13]~18 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[13] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[13] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[13] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[13] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[13] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[13] ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[13] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~4 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MID[5]~3 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[13] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[13] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[13]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[13]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[13]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[13]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ram_block11a0 ; 1 ; 0 ; +; FB_AD[12] ; ; ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~4 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BA[0]~11 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[12]~1 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[12]~19 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[12] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[12] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[12] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[12] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[12] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[12] ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[12] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~5 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MID[4]~4 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[12] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[12] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[12]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[12]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[12]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[12]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ram_block11a0 ; 1 ; 0 ; +; FB_AD[11] ; ; ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[11]~2 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[11]~20 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[11] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[11] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[11] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[11] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[11] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[11] ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[11] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~5 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MID[3]~8 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[11] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[11] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[11]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[11]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[11]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[11]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ram_block11a0 ; 1 ; 0 ; +; FB_AD[10] ; ; ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[10]~4 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[10]~21 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[10] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[10] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[10] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[10] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[10] ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[10] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~5 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MID[2]~5 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[10] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[10] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[10] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[10]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[10]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[10]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[10]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ram_block11a0 ; 1 ; 0 ; +; FB_AD[9] ; ; ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[9]~8 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[9]~22 ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CLEAR[9]~0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[9] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[9] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[9] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[9] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[9] ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[9] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~5 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MID[1]~2 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[9] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[9] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[9]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[9]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[9]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[9]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[9]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ram_block11a0 ; 1 ; 0 ; +; FB_AD[8] ; ; ; +; - Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ram_block11a0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[8]~13 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[8]~23 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[8] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CLEAR[8]~1 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[8] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[8] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[8] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[8] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[8] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[8] ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[8] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~6 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MID[0]~0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[8] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[8] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[8]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[8]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[8]~feeder ; 1 ; 0 ; +; FB_AD[7] ; ; ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[7]~16 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[7]~24 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[7] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[7] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[7] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[7] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[7] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[7] ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[7] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~6 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[7]~4 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[7] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[7] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[7]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[7]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[7]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ram_block11a0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; FB_AD[6] ; ; ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[6]~23 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[6]~25 ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CLEAR[6]~2 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[6] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[6] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[6] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[6] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[6] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[6] ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[6] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~6 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[6]~5 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[6] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[6]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[6]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[6]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[6]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ram_block11a0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; FB_AD[5] ; ; ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[5]~26 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[5]~26 ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[5] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CLEAR[5]~3 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[5] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[5] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[5] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[5] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[5] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[5] ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[5] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~6 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[5]~6 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[5] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[5]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[5]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[5]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[5]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ram_block11a0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; FB_AD[4] ; ; ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[4]~29 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[4]~27 ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CLEAR[4]~4 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[4] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[4] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[4] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[4] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[4] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[4] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[4] ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[4] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~8 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[4]~7 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[4] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[4] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[4]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[4]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[4]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ram_block11a0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; FB_AD[3] ; ; ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[3]~32 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[3]~28 ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CLEAR[3]~5 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[3] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[3] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[3] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[3] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[3] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[3] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[3] ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[3] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~8 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[3]~8 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[3] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[3] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[3]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[3]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[3]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ram_block11a0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; FB_AD[2] ; ; ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[2]~35 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[2]~29 ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[2] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CLEAR[2]~6 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[2] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[2] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[2] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[2] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[2] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[2] ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[2] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~9 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[2]~3 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[2] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[2] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[2]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[2]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[2]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ram_block11a0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; FB_AD[1] ; ; ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[1]~41 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[1]~30 ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[1] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CLEAR[1]~7 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[1] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[1] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[1] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[1] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[1] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[1] ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[1] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~9 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[1]~2 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[1] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[1] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[1]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[1]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[1]~feeder ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ram_block11a0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; FB_AD[0] ; ; ; +; - Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|ram_block1a0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ram_block11a0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[0]~43 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[0]~31 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[0] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CLEAR[0]~8 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[0] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[0] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[0] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[0] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[0] ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[0] ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~9 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[0]~0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[7]~5 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[0] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[0] ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[0]~feeder ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[0]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[0]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[0]~feeder ; 1 ; 0 ; +; VD[31] ; ; ; +; - Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[31] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[31]~feeder ; 0 ; 1 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[31]~feeder ; 0 ; 1 ; +; VD[30] ; ; ; +; - Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[30] ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[30]~feeder ; 1 ; 1 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[30]~feeder ; 1 ; 1 ; +; VD[29] ; ; ; +; - Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[29] ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[29]~feeder ; 1 ; 1 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[29]~feeder ; 1 ; 1 ; +; VD[28] ; ; ; +; - Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[28] ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[28]~feeder ; 1 ; 1 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[28]~feeder ; 1 ; 1 ; +; VD[27] ; ; ; +; - Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[27] ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[27]~feeder ; 1 ; 1 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[27]~feeder ; 1 ; 1 ; +; VD[26] ; ; ; +; - Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[26] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[26]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[26]~feeder ; 1 ; 0 ; +; VD[25] ; ; ; +; - Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[25] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[25]~feeder ; 0 ; 1 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[25]~feeder ; 0 ; 1 ; +; VD[24] ; ; ; +; - Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[24] ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[24]~feeder ; 1 ; 1 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[24]~feeder ; 1 ; 1 ; +; VD[23] ; ; ; +; - Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[23] ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[23]~feeder ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[23]~feeder ; 0 ; 0 ; +; VD[22] ; ; ; +; - Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[22] ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[22]~feeder ; 1 ; 1 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[22]~feeder ; 1 ; 1 ; +; VD[21] ; ; ; +; - Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[21] ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[21]~feeder ; 1 ; 1 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[21]~feeder ; 1 ; 1 ; +; VD[20] ; ; ; +; - Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[20] ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[20]~feeder ; 1 ; 1 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[20]~feeder ; 1 ; 1 ; +; VD[19] ; ; ; +; - Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[19] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[19]~feeder ; 0 ; 1 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[19]~feeder ; 0 ; 1 ; +; VD[18] ; ; ; +; - Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[18] ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[18]~feeder ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[18]~feeder ; 0 ; 0 ; +; VD[17] ; ; ; +; - Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[17] ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[17]~feeder ; 1 ; 1 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[17]~feeder ; 1 ; 1 ; +; VD[16] ; ; ; +; - Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[16] ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[16]~feeder ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[16]~feeder ; 0 ; 0 ; +; VD[15] ; ; ; +; - Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[15] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[15]~feeder ; 0 ; 2 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[15]~feeder ; 0 ; 2 ; +; VD[14] ; ; ; +; - Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[14] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[14]~feeder ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[14]~feeder ; 1 ; 0 ; +; VD[13] ; ; ; +; - Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[13] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[13]~feeder ; 0 ; 2 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[13]~feeder ; 0 ; 2 ; +; VD[12] ; ; ; +; - Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[12] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[12]~feeder ; 0 ; 2 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[12]~feeder ; 0 ; 2 ; +; VD[11] ; ; ; +; - Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[11] ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[11]~feeder ; 1 ; 2 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[11]~feeder ; 1 ; 2 ; +; VD[10] ; ; ; +; - Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[10] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[10]~feeder ; 0 ; 2 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[10]~feeder ; 0 ; 2 ; +; VD[9] ; ; ; +; - Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[9] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[9]~feeder ; 0 ; 2 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[9]~feeder ; 0 ; 2 ; +; VD[8] ; ; ; +; - Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[8] ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[8]~feeder ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[8]~feeder ; 0 ; 0 ; +; VD[7] ; ; ; +; - Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[7] ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[7]~feeder ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[7]~feeder ; 0 ; 0 ; +; VD[6] ; ; ; +; - Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[6] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[6]~feeder ; 0 ; 2 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[6]~feeder ; 0 ; 2 ; +; VD[5] ; ; ; +; - Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[5] ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[5]~feeder ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[5]~feeder ; 0 ; 0 ; +; VD[4] ; ; ; +; - Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[4] ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[4]~feeder ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[4]~feeder ; 0 ; 0 ; +; VD[3] ; ; ; +; - Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[3] ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[3]~feeder ; 1 ; 2 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[3]~feeder ; 1 ; 2 ; +; VD[2] ; ; ; +; - Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[2] ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[2]~feeder ; 1 ; 2 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[2]~feeder ; 1 ; 2 ; +; VD[1] ; ; ; +; - Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[1] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[1]~feeder ; 0 ; 2 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[1]~feeder ; 0 ; 2 ; +; VD[0] ; ; ; +; - Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[0] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[0]~feeder ; 0 ; 2 ; +; - Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[0]~feeder ; 0 ; 2 ; +; VDQS[3] ; ; ; +; VDQS[2] ; ; ; +; VDQS[1] ; ; ; +; VDQS[0] ; ; ; +; IO[17] ; ; ; +; IO[16] ; ; ; +; IO[15] ; ; ; +; IO[14] ; ; ; +; IO[13] ; ; ; +; IO[12] ; ; ; +; IO[11] ; ; ; +; IO[10] ; ; ; +; IO[9] ; ; ; +; IO[8] ; ; ; +; IO[7] ; ; ; +; IO[6] ; ; ; +; IO[5] ; ; ; +; IO[4] ; ; ; +; IO[3] ; ; ; +; IO[2] ; ; ; +; IO[1] ; ; ; +; IO[0] ; ; ; +; SRD[15] ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[31]~156 ; 1 ; 0 ; +; SRD[14] ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[30]~131 ; 1 ; 0 ; +; SRD[13] ; ; ; +; - DSP:Mathias_Alles|FB_AD[29]~3 ; 0 ; 0 ; +; SRD[12] ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[28]~369 ; 0 ; 0 ; +; SRD[11] ; ; ; +; - DSP:Mathias_Alles|FB_AD[27]~4 ; 0 ; 0 ; +; SRD[10] ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[26]~197 ; 1 ; 0 ; +; SRD[9] ; ; ; +; - DSP:Mathias_Alles|FB_AD[25]~0 ; 1 ; 0 ; +; SRD[8] ; ; ; +; - DSP:Mathias_Alles|FB_AD[24]~1 ; 1 ; 0 ; +; SRD[7] ; ; ; +; - DSP:Mathias_Alles|FB_AD[23]~2 ; 0 ; 0 ; +; SRD[6] ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[22]~269 ; 1 ; 0 ; +; SRD[5] ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[21]~285 ; 0 ; 0 ; +; SRD[4] ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[20]~301 ; 1 ; 0 ; +; SRD[3] ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[19]~319 ; 1 ; 0 ; +; SRD[2] ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[18]~172 ; 0 ; 0 ; +; SRD[1] ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[17]~86 ; 1 ; 0 ; +; SRD[0] ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[16]~54 ; 0 ; 0 ; +; SCSI_PAR ; ; ; +; nSCSI_SEL ; ; ; +; nSCSI_BUSY ; ; ; +; nSCSI_RST ; ; ; +; SD_CD_DATA3 ; ; ; +; SD_CMD_D1 ; ; ; +; ACSI_D[7] ; ; ; +; ACSI_D[6] ; ; ; +; ACSI_D[5] ; ; ; +; ACSI_D[4] ; ; ; +; ACSI_D[3] ; ; ; +; ACSI_D[2] ; ; ; +; ACSI_D[1] ; ; ; +; ACSI_D[0] ; ; ; +; LP_D[7] ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[31]~142 ; 1 ; 0 ; +; LP_D[6] ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[30]~112 ; 0 ; 0 ; +; LP_D[5] ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[29]~339 ; 0 ; 0 ; +; LP_D[4] ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[28]~378 ; 0 ; 0 ; +; LP_D[3] ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[27]~383 ; 1 ; 0 ; +; LP_D[2] ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[26]~186 ; 1 ; 0 ; +; LP_D[1] ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[25]~206 ; 0 ; 0 ; +; LP_D[0] ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[24]~227 ; 0 ; 0 ; +; SCSI_D[7] ; ; ; +; SCSI_D[6] ; ; ; +; SCSI_D[5] ; ; ; +; SCSI_D[4] ; ; ; +; SCSI_D[3] ; ; ; +; SCSI_D[2] ; ; ; +; SCSI_D[1] ; ; ; +; SCSI_D[0] ; ; ; +; nRSTO_MCF ; ; ; +; nFB_WR ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|ROM_CS ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|SUB_BUS~0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VRAS~0 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~3 ; 1 ; 0 ; +; - interrupt_handler:nobody|TIN0~0 ; 1 ; 0 ; +; - DSP:Mathias_Alles|nSRWE~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|DIG_PORTS~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|process_8~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO|GPIO_REGISTERS~0 ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[31]~0 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|Selector1~1 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|Selector0~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|P_CTRL_REG~0 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|LEVEL_A[4]~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|LEVEL_B[4]~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|LEVEL_C[4]~0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~11 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LWD[7]~0 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[7]~0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|SECTORREG~0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BA_S[0]~1 ; 0 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[31]~0 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|Selector1~4 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IPRA~1 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IMRA[0]~0 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IPRB~1 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IMRB[0]~0 ; 0 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[7]~0 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[7]~19 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|ADDRESSLATCH~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|process_8~1 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[31]~1 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WDC_BSL[0]~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_TRANSMIT:I_UART_TRANSMIT|DATAREG~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|CONTROL~0 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_TX:I_USART_TRANSMIT|TDRE~1 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_TRANSMIT:I_UART_TRANSMIT|DATAREG~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_A[11]~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_A[7]~1 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|NOISE_FREQ[4]~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|ENV_SHAPE[2]~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|ENV_RESET~0 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_B[11]~0 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_B[7]~1 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_C[11]~0 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_C[7]~1 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|DATA_OUT~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|TSR_READ~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|DATA_OUT~1 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|DATA_OUT~5 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|DATA_OUT~11 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|DATA_OUT~15 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|DATA_OUT_EN~1 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|DATA_OUT~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|UDR_READ~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|TSR_READ~1 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|RSR_READ~0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ~1 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_M_D[7]~0 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|DATA_OUT~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|DATA_EN~1 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|Mux1~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|DATA_OUT~2 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|DATA_OUT~3 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|DATA_EN~0 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_RECEIVE:I_UART_RECEIVE|DATA_EN~0 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_RECEIVE:I_UART_RECEIVE|DATA_EN~0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LWD[15]~1 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|TRACKREG~0 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|ISRA~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|ISRB~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IERA[0]~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IERB[0]~0 ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CLEAR[9]~0 ; 0 ; 0 ; +; - interrupt_handler:nobody|INT_CLEAR[8]~1 ; 0 ; 0 ; +; - interrupt_handler:nobody|INT_CLEAR[6]~2 ; 0 ; 0 ; +; - interrupt_handler:nobody|INT_CLEAR[5]~3 ; 0 ; 0 ; +; - interrupt_handler:nobody|INT_CLEAR[4]~4 ; 0 ; 0 ; +; - interrupt_handler:nobody|INT_CLEAR[3]~5 ; 0 ; 0 ; +; - interrupt_handler:nobody|INT_CLEAR[2]~6 ; 0 ; 0 ; +; - interrupt_handler:nobody|INT_CLEAR[1]~7 ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_CLEAR[0]~8 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|DATA_OUT~4 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|DATA_OUT~5 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|DATA_OUT~6 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|DA_OUT~5 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|DATA_OUT~9 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|DATA_OUT~10 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|DATA_OUT~14 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|DATA_OUT~15 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|DATA_OUT~17 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[25]~218 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~42 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[24]~238 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|DATA_OUT~1 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|DATA_OUT~35 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|DATA_OUT~37 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|DATA_OUT~40 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[29]~350 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|DATA_OUT[3]~1 ; 0 ; 0 ; +; - DSP:Mathias_Alles|nSRWE~1 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|UCR[2]~1 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|ENV_FREQ[7]~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|valid_rdreq~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|nFDC_WR~0 ; 0 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[23]~1 ; 1 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[23]~1 ; 1 ; 0 ; +; - interrupt_handler:nobody|RTC_ADR[5]~0 ; 0 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[23]~1 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~491 ; 0 ; 0 ; +; - interrupt_handler:nobody|WERTE[0][0]~1 ; 0 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][1]~2 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~492 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][3]~5 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~496 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][5]~9 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~503 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~504 ; 1 ; 0 ; +; - interrupt_handler:nobody|_~505 ; 1 ; 0 ; +; - interrupt_handler:nobody|_~506 ; 0 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][10]~10 ; 0 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][12]~11 ; 0 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][13]~13 ; 0 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][14]~15 ; 0 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][15]~16 ; 0 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][16]~17 ; 0 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][17]~18 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][18]~19 ; 0 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][19]~20 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][20]~21 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][21]~22 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][22]~23 ; 0 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][23]~24 ; 0 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][24]~25 ; 0 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][25]~26 ; 0 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][26]~27 ; 0 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][27]~28 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][28]~29 ; 0 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][29]~30 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][30]~31 ; 0 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][31]~32 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][32]~33 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][33]~34 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][34]~35 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][35]~36 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][36]~37 ; 0 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][37]~38 ; 0 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][38]~39 ; 0 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][39]~40 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][40]~41 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][41]~42 ; 0 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][42]~43 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][43]~44 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][44]~45 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][45]~46 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][46]~47 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][47]~48 ; 0 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][48]~49 ; 0 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][49]~50 ; 0 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][50]~51 ; 0 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][51]~52 ; 0 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][52]~53 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][53]~54 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][54]~55 ; 0 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][55]~56 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][56]~57 ; 0 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][57]~58 ; 0 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][58]~59 ; 0 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][59]~60 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][60]~61 ; 0 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][61]~62 ; 0 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][62]~63 ; 0 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][63]~64 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|process_11~0 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MID[0]~1 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[0]~1 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TACR[0]~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TCDCR[0]~0 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TBCR[0]~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO|DDR[0]~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO|GPDR[0]~0 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO|AER[0]~0 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[23]~0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[23]~0 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[23]~0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[23]~0 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VMD[3]~0 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VCT[7]~0 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LOF[7]~0 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LWD[7]~2 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VSS[7]~0 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|SYS_CTR[6]~0 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[15]~1 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[15]~1 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[15]~1 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[15]~1 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[10]~2 ; 0 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[15]~2 ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[15]~3 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|process_10~0 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_CLUT_WR[0] ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[31]~2 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[31]~2 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[31]~2 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[31]~2 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LWD[15]~3 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LOF[15]~1 ; 0 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[31]~3 ; 0 ; 0 ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|_~0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[7]~4 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[7]~6 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[6]~7 ; 0 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[7]~3 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_X_D[2]~0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ST_CLUT_WR[0]~0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VSS[10]~1 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VR_WR~0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ST_SHIFT_MODE[1]~0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VCT[8]~1 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VIDEO_RECONFIG~0 ; 1 ; 0 ; +; - interrupt_handler:nobody|WERTE[7][11]~77 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[7]~3 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[7]~3 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[7]~3 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[7]~3 ; 1 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[7]~4 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_B[7]~0 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|process_2~0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FB_LE[3] ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FB_LE[1]~2 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FB_LE[2]~3 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FB_LE[0]~4 ; 0 ; 0 ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|read_init_nominal_state~2 ; 1 ; 0 ; +; - altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|read_init_state~0 ; 1 ; 0 ; +; nFB_CS1 ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|ROM_CS ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|IDE_CF_CS ; 0 ; 0 ; +; - interrupt_handler:nobody|TIN0~0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE_CS ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VIDEO_MOD_TA~2 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE_CS~1 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VCT_CS~2 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LOF_CS ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW_CS~0 ; 0 ; 0 ; +; - interrupt_handler:nobody|UHR_DS~3 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|MFP_CS~1 ; 1 ; 0 ; +; - interrupt_handler:nobody|_~3 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|NEXT_CMD_STATE.T1~0 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|Selector2~0 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~28 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~31 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~32 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|lpm_bustri_BYT:$00004|lpm_bustri:lpm_bustri_component|dout[0]~7 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_CNT_M ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_CNT_H ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~6 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~8 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~36 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~37 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_M_D[7]~0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~38 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~39 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~27 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~40 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~41 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_bustri_WORD:$00000|lpm_bustri:lpm_bustri_component|dout[9]~81 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~43 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~38 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~44 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~45 ; 1 ; 0 ; +; - interrupt_handler:nobody|TIN0~1 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_CNT_L ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~46 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~47 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~48 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~49 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~50 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~51 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~52 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~53 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~54 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~55 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_H_D[7]~0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[7]~0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[7]~1 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[6]~7 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[10]~3 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ST_SHIFT_MODE[1]~0 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|lpm_bustri_BYT:$00004|lpm_bustri:lpm_bustri_component|dout[0]~34 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|lpm_bustri_BYT:$00004|lpm_bustri:lpm_bustri_component|dout[1]~35 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~59 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|lpm_bustri_BYT:$00004|lpm_bustri:lpm_bustri_component|dout[2]~36 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_DATEN_CS~0 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|SNDCS ; 1 ; 0 ; +; FB_SIZE1 ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|nRP_UDS~0 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|nRP_LDS~0 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VRAS~0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~3 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_B1 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_CS~0 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|process_8~0 ; 1 ; 0 ; +; - interrupt_handler:nobody|FB_B[0]~0 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FB_B[1]~0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FB_B[3]~1 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2~0 ; 1 ; 0 ; +; - interrupt_handler:nobody|_~22 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~20 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WDC_BSL[0]~0 ; 1 ; 0 ; +; - interrupt_handler:nobody|UHR_AS~0 ; 0 ; 0 ; +; - interrupt_handler:nobody|UHR_DS~6 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~194 ; 1 ; 0 ; +; - interrupt_handler:nobody|FB_B[2]~1 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FB_B[2] ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FB_B[0] ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_VDMP[3]~0 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD~491 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~2_RESYN22 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ~0 ; 1 ; 0 ; +; FB_SIZE0 ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|nRP_UDS~0 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|nRP_LDS~0 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VRAS~0 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~3 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_B1 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_CS~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|process_8~0 ; 1 ; 0 ; +; - interrupt_handler:nobody|FB_B[0]~0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FB_B[1]~0 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FB_B[3]~1 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2~0 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~22 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~20 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WDC_BSL[0]~0 ; 1 ; 0 ; +; - interrupt_handler:nobody|UHR_AS~0 ; 1 ; 0 ; +; - interrupt_handler:nobody|UHR_DS~6 ; 1 ; 0 ; +; - interrupt_handler:nobody|_~194 ; 1 ; 0 ; +; - interrupt_handler:nobody|FB_B[2]~1 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FB_B[2] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FB_B[0] ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_VDMP[3]~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD~491 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~2_RESYN22 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ~0 ; 0 ; 0 ; +; FB_ALE ; ; ; +; - lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[19] ; 0 ; 0 ; +; - lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; 0 ; 0 ; +; - lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[17] ; 0 ; 0 ; +; - lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[16] ; 0 ; 0 ; +; - lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[15] ; 0 ; 0 ; +; - lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[14] ; 0 ; 0 ; +; - lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[13] ; 0 ; 0 ; +; - lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[12] ; 0 ; 0 ; +; - lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[11] ; 0 ; 0 ; +; - lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[10] ; 0 ; 0 ; +; - lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[9] ; 1 ; 0 ; +; - lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[8] ; 1 ; 0 ; +; - lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[7] ; 1 ; 0 ; +; - lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[6] ; 1 ; 0 ; +; - lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[5] ; 1 ; 0 ; +; - lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[0] ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_SEL ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~5 ; 1 ; 0 ; +; - lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[3] ; 1 ; 0 ; +; - lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[2] ; 1 ; 0 ; +; - lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[4] ; 1 ; 0 ; +; - lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[1] ; 1 ; 0 ; +; - lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[26] ; 0 ; 0 ; +; - lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[25] ; 0 ; 0 ; +; - lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[24] ; 0 ; 0 ; +; - lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[27] ; 0 ; 0 ; +; - lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[23] ; 0 ; 0 ; +; - lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[22] ; 0 ; 0 ; +; - lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[21] ; 0 ; 0 ; +; - lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[20] ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~2 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[10]~5 ; 1 ; 0 ; +; nFB_CS2 ; ; ; +; - DSP:Mathias_Alles|nSRCS~0 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VIDEO_MOD_TA~4 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VIDEO_PLL_RECONFIG_CS~0 ; 0 ; 0 ; +; - inst2~3 ; 0 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[31]~0 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[23]~0 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[5]~1 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VIDEO_PLL_CONFIG_CS~0 ; 0 ; 0 ; +; - interrupt_handler:nobody|INT_ENA_CS ; 0 ; 0 ; +; - interrupt_handler:nobody|INT_CTR_CS ; 0 ; 0 ; +; - interrupt_handler:nobody|_~23 ; 0 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF_CS ; 0 ; 0 ; +; - interrupt_handler:nobody|_~25 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH_CS ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH_CS ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL_CS ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL_CS ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~2 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~3 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR_CS ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~13 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~14 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~147 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~148 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR_CS ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~19 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~20 ; 0 ; 0 ; +; - interrupt_handler:nobody|INT_CLEAR_CS ; 0 ; 0 ; +; - interrupt_handler:nobody|_~195 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~196 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~198 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~199 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[31]~2 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~200 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~201 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~24 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~25 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~246 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~247 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~35 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~41 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~42 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~248 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~46 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~47 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~295 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~53 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~54 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~338 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~339 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~60 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~61 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~382 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~383 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~67 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~68 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~426 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~427 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~470 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~471 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~473 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~474 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~71 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~475 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~476 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~73 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~74 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~477 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~75 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~76 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~480 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~77 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~78 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~79 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~80 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~483 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~484 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~485 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~486 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~487 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~488 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~489 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~490 ; 0 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[23]~1 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[23]~0 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[15]~1 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[15]~3 ; 0 ; 0 ; +; - interrupt_handler:nobody|INT_CTR[15]~2 ; 0 ; 0 ; +; - interrupt_handler:nobody|INT_ENA[15]~2 ; 0 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[15]~3 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[7]~2 ; 0 ; 0 ; +; - interrupt_handler:nobody|ACP_CONF[7]~4 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~508 ; 0 ; 0 ; +; - interrupt_handler:nobody|lpm_bustri_BYT:$00004|lpm_bustri:lpm_bustri_component|dout[1]~13_RESYN34 ; 0 ; 0 ; +; - interrupt_handler:nobody|lpm_bustri_BYT:$00004|lpm_bustri:lpm_bustri_component|dout[0]~15_RESYN42 ; 0 ; 0 ; +; MAIN_CLK ; ; ; +; nDACK1 ; ; ; +; nFB_OE ; ; ; +; - DSP:Mathias_Alles|nSROE~0 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~31 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD~39 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD~40 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD~43 ; 0 ; 0 ; +; - interrupt_handler:nobody|lpm_bustri_BYT:$00002|lpm_bustri:lpm_bustri_component|dout[0]~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[16]~45 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD~47 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD~48 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ST_CLUT_RD ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_CLUT_RD ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD~51 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FB_VDOE[3]~2 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FB_VDOE[0]~3 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD~55 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD~56 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FB_VDOE[1]~4 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FB_VDOE[2]~5 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[16]~59 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD~60 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD~61 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[16]~65 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~10 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[16]~67 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD~70 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD~72 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[16]~77 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_bustri_WORD:$00000|lpm_bustri:lpm_bustri_component|dout[3]~28 ; 1 ; 0 ; +; - interrupt_handler:nobody|lpm_bustri_BYT:$00002|lpm_bustri:lpm_bustri_component|dout[1]~3 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[17]~85 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[17]~89 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD~94 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~19 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~20 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD~111 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD~124 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD~127 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[30]~129 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_CLUT_RDH ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_bustri_WORD:$00000|lpm_bustri:lpm_bustri_component|dout[14]~34 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_bustri_WORD:$00000|lpm_bustri:lpm_bustri_component|dout[15]~40 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[31]~154 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[31]~160 ; 1 ; 0 ; +; - interrupt_handler:nobody|lpm_bustri_BYT:$00002|lpm_bustri:lpm_bustri_component|dout[2]~6 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_CLUT_RDL~0 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[18]~170 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[18]~175 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[18]~176 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[18]~179 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[16]~181 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[18]~182 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[26]~193 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[26]~195 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[31]~211 ; 0 ; 0 ; +; - DSP:Mathias_Alles|FB_AD[25]~0 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[25]~215 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[25]~220 ; 0 ; 0 ; +; - DSP:Mathias_Alles|FB_AD[24]~1 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[24]~235 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[24]~240 ; 0 ; 0 ; +; - interrupt_handler:nobody|lpm_bustri_BYT:$00002|lpm_bustri:lpm_bustri_component|dout[7]~9 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[23]~250 ; 0 ; 0 ; +; - DSP:Mathias_Alles|FB_AD[23]~2 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[23]~255 ; 0 ; 0 ; +; - interrupt_handler:nobody|lpm_bustri_BYT:$00002|lpm_bustri:lpm_bustri_component|dout[6]~12 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[22]~267 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[22]~272 ; 0 ; 0 ; +; - interrupt_handler:nobody|lpm_bustri_BYT:$00002|lpm_bustri:lpm_bustri_component|dout[5]~15 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[21]~283 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[21]~288 ; 0 ; 0 ; +; - interrupt_handler:nobody|lpm_bustri_BYT:$00002|lpm_bustri:lpm_bustri_component|dout[4]~18 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[20]~299 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[20]~304 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[19]~308 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[19]~312 ; 0 ; 0 ; +; - interrupt_handler:nobody|lpm_bustri_BYT:$00002|lpm_bustri:lpm_bustri_component|dout[3]~21 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[19]~317 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[15]~327 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[29]~352 ; 0 ; 0 ; +; - DSP:Mathias_Alles|FB_AD[29]~3 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[29]~356 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_bustri_WORD:$00000|lpm_bustri:lpm_bustri_component|dout[13]~173 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[28]~366 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[28]~375 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[27]~388 ; 1 ; 0 ; +; - DSP:Mathias_Alles|FB_AD[27]~4 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[27]~392 ; 1 ; 0 ; +; - Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_bustri_WORD:$00000|lpm_bustri:lpm_bustri_component|dout[11]~186 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[9]~411 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[9]~415 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[8]~420 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[8]~424 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[7]~432 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[6]~437 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[5]~445 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[4]~453 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[3]~461 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[2]~469 ; 0 ; 0 ; +; - interrupt_handler:nobody|_~508 ; 0 ; 0 ; +; - Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~59 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[31]~490 ; 1 ; 0 ; +; IDE_RDY ; ; ; +; - inst2~1 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|Selector1~0 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|IDE_CF_TA~0 ; 1 ; 0 ; +; CLK33M ; ; ; +; HD_DD ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|HD_DD_OUT~0 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[16]~62 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|PHASE_DECODER~0 ; 1 ; 0 ; +; nINDEX ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|MOTORSWITCH~1 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|MOTORSWITCH~2 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE~78 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|LOCK~0 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|INDEX_MARK~1 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE~113 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE~173 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|INDEX_COUNTER~2 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|INTRQ~4 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE~205 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\INDEX_COUNTER:LOCK~0 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|DRQ_IPn~0 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_INDEX_MARK:LOCK~0 ; 0 ; 0 ; +; - nINDEX~_wirecell ; 0 ; 0 ; +; RxD ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|SDATA_IN_I~1 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_RX:I_USART_RECEIVE|SDATA_IN_I~2 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_RX:I_USART_RECEIVE|P_SAMPLE~6 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_RX:I_USART_RECEIVE|P_START_BIT~0 ; 0 ; 0 ; +; nWP ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE~85 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE~168 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE~176 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|WR_PR~0 ; 1 ; 0 ; +; LP_BUSY ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|DATA_OUT[0]~20 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|EDGE_ENA~15 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|LOCK~15 ; 0 ; 0 ; +; DCD ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|DATA_OUT[1]~43 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|EDGE_ENA~10 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|LOCK~10 ; 0 ; 0 ; +; CTS ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|DATA_OUT[2]~63 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|EDGE_ENA~9 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|LOCK~9 ; 1 ; 0 ; +; TRACK00 ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|TR_CLR ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|Add1~18 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|Add1~20 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|Add1~22 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|Add1~24 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|Add1~26 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|Add1~28 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE~103 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|LOST_DATA_TR00~2 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|LOST_DATA_TR00~3 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|Add1~30 ; 0 ; 0 ; +; IDE_INT ; ; ; +; RI ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|EDGE_ENA~11 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|DATA_OUT~104 ; 1 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|LOCK~11 ; 1 ; 0 ; +; nPCI_INTD ; ; ; +; - interrupt_handler:nobody|INT_LATCH[6]~11 ; 0 ; 6 ; +; - interrupt_handler:nobody|_~484 ; 1 ; 0 ; +; nPCI_INTC ; ; ; +; - interrupt_handler:nobody|INT_LATCH[5]~12 ; 1 ; 6 ; +; - interrupt_handler:nobody|lpm_bustri_BYT:$00006|lpm_bustri:lpm_bustri_component|dout[5]~5 ; 0 ; 0 ; +; nPCI_INTB ; ; ; +; - interrupt_handler:nobody|INT_LATCH[4]~13 ; 0 ; 6 ; +; - interrupt_handler:nobody|lpm_bustri_BYT:$00006|lpm_bustri:lpm_bustri_component|dout[4]~8 ; 1 ; 0 ; +; nPCI_INTA ; ; ; +; - interrupt_handler:nobody|INT_LATCH[3]~14 ; 1 ; 6 ; +; - interrupt_handler:nobody|lpm_bustri_BYT:$00006|lpm_bustri:lpm_bustri_component|dout[3]~11 ; 0 ; 0 ; +; DVI_INT ; ; ; +; E0_INT ; ; ; +; PIC_INT ; ; ; +; - interrupt_handler:nobody|INT_LATCH[0]~17 ; 1 ; 6 ; +; - interrupt_handler:nobody|lpm_bustri_BYT:$00006|lpm_bustri:lpm_bustri_component|dout[0]~20 ; 0 ; 0 ; +; - interrupt_handler:nobody|PIC_INT_SYNC[0] ; 0 ; 0 ; +; PIC_AMKB_RX ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|KEYB_RxD ; 0 ; 1 ; +; MIDI_IN ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_RECEIVE:I_UART_RECEIVE|RXDATA_I~feeder ; 1 ; 1 ; +; nRD_DATA ; ; ; +; AMKB_RX ; ; ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[3] ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[3]~11 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4] ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4]~14 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[2] ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[2]~9 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[1] ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[1]~7 ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[0] ; 0 ; 0 ; +; - FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[3]~13 ; 1 ; 0 ; ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+---------+ + + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Control Signals ; ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------+---------+---------------------------------------+--------+----------------------+------------------+---------------------------+ +; Name ; Location ; Fan-Out ; Usage ; Global ; Global Resource Used ; Global Line Name ; Enable Signal Source Name ; ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------+---------+---------------------------------------+--------+----------------------+------------------+---------------------------+ +; CLK33M ; PIN_AB12 ; 12 ; Clock ; yes ; Global Clock ; GCLK15 ; -- ; +; CLK33M ; PIN_AB12 ; 5 ; Clock ; no ; -- ; -- ; -- ; +; DSP:Mathias_Alles|nSRWE~1 ; LCCOMB_X23_Y8_N20 ; 16 ; Output enable ; no ; -- ; -- ; -- ; +; FB_ALE ; PIN_R7 ; 33 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[3]~13 ; LCCOMB_X1_Y10_N14 ; 5 ; Sync. load ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|CLR_FIFO ; LCCOMB_X26_Y22_N16 ; 250 ; Async. clear ; yes ; Global Clock ; GCLK7 ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[31]~1 ; LCCOMB_X18_Y17_N18 ; 32 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[0]~1 ; LCCOMB_X22_Y14_N2 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MID[0]~1 ; LCCOMB_X22_Y14_N20 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MODUS[1]~0 ; LCCOMB_X16_Y14_N24 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MODUS[8]~1 ; LCCOMB_X16_Y14_N14 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[13]~104 ; LCCOMB_X21_Y12_N8 ; 16 ; Output enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[16]~78 ; LCCOMB_X22_Y13_N12 ; 2 ; Output enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[18]~183 ; LCCOMB_X22_Y13_N30 ; 4 ; Output enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[18]~259 ; LCCOMB_X22_Y13_N4 ; 2 ; Output enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[26]~203 ; LCCOMB_X22_Y13_N16 ; 1 ; Output enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[26]~224 ; LCCOMB_X22_Y13_N10 ; 2 ; Output enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[31]~141 ; LCCOMB_X33_Y1_N4 ; 5 ; Output enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|Selector4~1 ; LCCOMB_X23_Y18_N0 ; 20 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WDC_BSL[0]~1 ; LCCOMB_X22_Y13_N2 ; 2 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_AM_DETECTOR:I_AM_DETECTOR|Equal0~4 ; LCCOMB_X22_Y28_N30 ; 7 ; Sync. load ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_AM_DETECTOR:I_AM_DETECTOR|SHIFT[4]~1 ; LCCOMB_X21_Y28_N6 ; 16 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_AM_DETECTOR:I_AM_DETECTOR|\MFM_SYNCLOCK:TMP[4]~3 ; LCCOMB_X21_Y28_N12 ; 5 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_LOAD_SHFT ; FF_X34_Y29_N7 ; 26 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|SHFT_LOAD_ND~0 ; LCCOMB_X28_Y27_N8 ; 4 ; Sync. load ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|Selector68~47 ; LCCOMB_X35_Y25_N2 ; 88 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|Selector78~0 ; LCCOMB_X32_Y25_N12 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|WideNor2~5 ; LCCOMB_X36_Y28_N0 ; 33 ; Sync. clear ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|WideNor8 ; LCCOMB_X28_Y27_N6 ; 4 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\RESTORE_TRAP:STEP_CNT[2]~1 ; LCCOMB_X32_Y27_N4 ; 8 ; Sync. clear ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CRC_LOGIC:I_CRC_LOGIC|CRC_SHIFT[5]~37 ; LCCOMB_X27_Y26_N22 ; 2 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|PER_CNT~27 ; LCCOMB_X30_Y30_N26 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|RD_PULSE ; FF_X30_Y32_N13 ; 18 ; Clock enable, Sync. load ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|\PHASE_DECODER:PHASE_AMOUNT[1]~1 ; LCCOMB_X27_Y32_N24 ; 2 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|COMMAND_REG[7] ; FF_X32_Y25_N31 ; 20 ; Sync. load ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|COMMAND_REG[7]~1 ; LCCOMB_X32_Y25_N8 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|Equal3~2 ; LCCOMB_X27_Y25_N14 ; 7 ; Sync. load ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|SECTORREG~1 ; LCCOMB_X29_Y25_N2 ; 8 ; Sync. load ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|SHIFT_REG[6]~9 ; LCCOMB_X28_Y27_N26 ; 4 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|SHIFT_REG~8 ; LCCOMB_X30_Y28_N22 ; 4 ; Sync. load ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|TRACKREG~1 ; LCCOMB_X30_Y26_N20 ; 9 ; Sync. load ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|TRACK_REG[6]~3 ; LCCOMB_X30_Y26_N14 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT~1 ; LCCOMB_X28_Y30_N28 ; 31 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|WR_CNT~12 ; LCCOMB_X36_Y29_N10 ; 4 ; Sync. load ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\CLK_MASK:LOCK~0 ; LCCOMB_X25_Y29_N26 ; 1 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\CLK_MASK:MASK_SHFT[0]~0 ; LCCOMB_X25_Y27_N6 ; 23 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|ADDRESSLATCH~1 ; LCCOMB_X18_Y19_N22 ; 4 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|DIG_PORTS~0 ; LCCOMB_X15_Y14_N18 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_A[6]~_Duplicate_1 ; FF_X4_Y41_N5 ; 8 ; Output enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|PORT_B[7]~0 ; LCCOMB_X7_Y39_N12 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|P_CTRL_REG~0 ; LCCOMB_X19_Y23_N30 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WAV_STRB ; FF_X9_Y21_N23 ; 10 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|ENV_FREQ[7]~0 ; LCCOMB_X17_Y22_N12 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|ENV_RESET ; FF_X18_Y22_N21 ; 8 ; Sync. load ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|ENV_RESET~0 ; LCCOMB_X18_Y22_N20 ; 9 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|ENV_SHAPE[2]~0 ; LCCOMB_X18_Y24_N0 ; 4 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|ENV_STRB~1 ; LCCOMB_X18_Y23_N8 ; 19 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|Equal14~3 ; LCCOMB_X20_Y21_N28 ; 13 ; Sync. clear ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|Equal16~3 ; LCCOMB_X19_Y24_N20 ; 13 ; Sync. clear ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|Equal18~3 ; LCCOMB_X18_Y20_N28 ; 13 ; Sync. clear ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_A[11]~0 ; LCCOMB_X15_Y14_N28 ; 4 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_A[7]~1 ; LCCOMB_X20_Y23_N10 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_B[11]~0 ; LCCOMB_X19_Y24_N30 ; 4 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_B[7]~1 ; LCCOMB_X20_Y20_N30 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_C[11]~0 ; LCCOMB_X18_Y20_N2 ; 4 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_C[7]~1 ; LCCOMB_X17_Y18_N6 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|LEVEL_A[4]~0 ; LCCOMB_X17_Y25_N18 ; 5 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|LEVEL_B[4]~0 ; LCCOMB_X20_Y22_N6 ; 5 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|LEVEL_C[4]~0 ; LCCOMB_X21_Y27_N0 ; 5 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|NOISE_FREQ[4]~0 ; LCCOMB_X17_Y19_N26 ; 5 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|OSC_A_OUT~1 ; LCCOMB_X17_Y25_N24 ; 39 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|VOL_ENV[3]~12 ; LCCOMB_X18_Y25_N10 ; 5 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|\NOISEGENERATOR:CLK_DIV[0]~0 ; LCCOMB_X16_Y24_N28 ; 4 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|\NOISEGENERATOR:CNT_NOISE[0]~0 ; LCCOMB_X16_Y24_N6 ; 5 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|\NOISEGENERATOR:N_SHFT[16]~2 ; LCCOMB_X16_Y24_N24 ; 17 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|CTRL_REG[7]~0 ; LCCOMB_X6_Y18_N10 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_RECEIVE:I_UART_RECEIVE|BITCNT~1 ; LCCOMB_X4_Y19_N12 ; 3 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_RECEIVE:I_UART_RECEIVE|DATA_REG[0]~1 ; LCCOMB_X5_Y18_N16 ; 7 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_RECEIVE:I_UART_RECEIVE|RCV_NEXT_STATE~0 ; LCCOMB_X2_Y21_N28 ; 7 ; Sync. load ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_RECEIVE:I_UART_RECEIVE|SHIFT_REG[4]~1 ; LCCOMB_X5_Y17_N20 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_RECEIVE:I_UART_RECEIVE|\CLKDIV:CLK_DIVCNT[5]~1 ; LCCOMB_X1_Y18_N16 ; 7 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_TRANSMIT:I_UART_TRANSMIT|BITCNT~1 ; LCCOMB_X1_Y19_N30 ; 3 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_TRANSMIT:I_UART_TRANSMIT|DATA_REG[2]~1 ; LCCOMB_X3_Y19_N4 ; 7 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_TRANSMIT:I_UART_TRANSMIT|SHIFT_REG[6]~1 ; LCCOMB_X2_Y19_N2 ; 7 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_TRANSMIT:I_UART_TRANSMIT|TR_STATE.IDLE ; FF_X1_Y20_N15 ; 13 ; Sync. clear ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_TRANSMIT:I_UART_TRANSMIT|\CLKDIV:CLK_DIVCNT[4]~3 ; LCCOMB_X1_Y20_N26 ; 7 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|CTRL_REG[2]~1 ; LCCOMB_X7_Y18_N2 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_RECEIVE:I_UART_RECEIVE|BITCNT~1 ; LCCOMB_X4_Y19_N18 ; 3 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_RECEIVE:I_UART_RECEIVE|DATA_REG[2]~1 ; LCCOMB_X5_Y16_N14 ; 7 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_RECEIVE:I_UART_RECEIVE|RCV_NEXT_STATE~0 ; LCCOMB_X3_Y17_N26 ; 6 ; Sync. load ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_RECEIVE:I_UART_RECEIVE|SHIFT_REG[0]~1 ; LCCOMB_X4_Y17_N20 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_RECEIVE:I_UART_RECEIVE|\CLKDIV:CLK_DIVCNT[4]~1 ; LCCOMB_X3_Y17_N22 ; 7 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_TRANSMIT:I_UART_TRANSMIT|BITCNT~1 ; LCCOMB_X5_Y20_N0 ; 3 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_TRANSMIT:I_UART_TRANSMIT|DATA_REG[0]~1 ; LCCOMB_X4_Y21_N6 ; 7 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_TRANSMIT:I_UART_TRANSMIT|SHIFT_REG[4]~1 ; LCCOMB_X5_Y21_N16 ; 7 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_TRANSMIT:I_UART_TRANSMIT|TR_STATE.IDLE ; FF_X6_Y19_N27 ; 12 ; Sync. clear ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_TRANSMIT:I_UART_TRANSMIT|\CLKDIV:CLK_DIVCNT[2]~1 ; LCCOMB_X6_Y19_N28 ; 7 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO|AER[0]~0 ; LCCOMB_X14_Y18_N22 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO|DDR[0]~0 ; LCCOMB_X14_Y14_N22 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO|GPDR[0]~0 ; LCCOMB_X14_Y15_N30 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IERA[0]~0 ; LCCOMB_X14_Y16_N4 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IERB[0]~0 ; LCCOMB_X14_Y16_N10 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IMRA[0]~0 ; LCCOMB_X16_Y19_N0 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IMRB[0]~0 ; LCCOMB_X16_Y19_N12 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|INT_PASS[9]~5 ; LCCOMB_X17_Y21_N4 ; 10 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|INT_STATE.REQUEST ; FF_X16_Y17_N3 ; 23 ; Sync. clear ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|VECT_NUMBER[0]~7 ; LCCOMB_X17_Y17_N28 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|VR[7]~0 ; LCCOMB_X16_Y16_N4 ; 5 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|PRESCALE_A~0 ; LCCOMB_X6_Y20_N18 ; 8 ; Sync. load ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|PRESCALE_B~0 ; LCCOMB_X6_Y20_N8 ; 8 ; Sync. load ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|PRESCALE_C~0 ; LCCOMB_X3_Y20_N0 ; 8 ; Sync. load ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|PRESCALE_D~0 ; LCCOMB_X9_Y17_N6 ; 8 ; Sync. load ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TACR[0]~0 ; LCCOMB_X12_Y16_N22 ; 5 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TADR[0]~0 ; LCCOMB_X8_Y20_N6 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TBCR[0]~0 ; LCCOMB_X10_Y18_N30 ; 5 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TBDR[0]~0 ; LCCOMB_X7_Y17_N6 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TCDCR[0]~0 ; LCCOMB_X12_Y18_N10 ; 6 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TCDR[0]~0 ; LCCOMB_X10_Y15_N12 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TDDR[3]~0 ; LCCOMB_X4_Y15_N2 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMERC~1 ; LCCOMB_X10_Y15_N2 ; 8 ; Sync. load ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMERD~1 ; LCCOMB_X3_Y15_N4 ; 9 ; Sync. load ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_R_A[0]~0 ; LCCOMB_X10_Y18_N16 ; 10 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_R_B[0]~3 ; LCCOMB_X12_Y17_N4 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_R_C[0]~1 ; LCCOMB_X11_Y18_N18 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_R_D[0]~1 ; LCCOMB_X11_Y18_N16 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|XTAL_STRB ; FF_X3_Y20_N7 ; 44 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|RSR[1]~0 ; LCCOMB_X14_Y19_N26 ; 2 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|SCR[0]~0 ; LCCOMB_X14_Y22_N20 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|TSR[0]~1 ; LCCOMB_X14_Y19_N24 ; 5 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|UCR[3]~0 ; LCCOMB_X12_Y16_N8 ; 7 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|UCR[7] ; FF_X14_Y20_N1 ; 19 ; Sync. clear, Sync. load ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|UDR[7]~3 ; LCCOMB_X11_Y19_N14 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_RX:I_USART_RECEIVE|BITCNT[0]~2 ; LCCOMB_X10_Y24_N14 ; 3 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_RX:I_USART_RECEIVE|SHIFT_REG[6]~1 ; LCCOMB_X10_Y22_N12 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_RX:I_USART_RECEIVE|\CLKDIV:CLK_DIVCNT[0]~0 ; LCCOMB_X3_Y27_N20 ; 5 ; Sync. load ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_TX:I_USART_TRANSMIT|BITCNT~1 ; LCCOMB_X14_Y23_N6 ; 3 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_TX:I_USART_TRANSMIT|CLK_STRB ; FF_X2_Y27_N7 ; 15 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_TX:I_USART_TRANSMIT|SHIFTREG~0 ; LCCOMB_X12_Y21_N12 ; 7 ; Sync. load ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_TX:I_USART_TRANSMIT|SHIFT_REG[1]~8 ; LCCOMB_X12_Y23_N4 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_TX:I_USART_TRANSMIT|TX_END ; FF_X12_Y23_N17 ; 17 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|_~0 ; LCCOMB_X21_Y9_N28 ; 5 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|valid_rdreq~1 ; LCCOMB_X23_Y7_N18 ; 20 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|valid_wrreq~1 ; LCCOMB_X18_Y18_N20 ; 18 ; Clock enable, Write enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|_~0 ; LCCOMB_X22_Y22_N6 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|valid_rdreq~1 ; LCCOMB_X22_Y22_N4 ; 15 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|valid_wrreq~0 ; LCCOMB_X26_Y24_N4 ; 22 ; Clock enable, Write enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|process_10~0 ; LCCOMB_X20_Y16_N30 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|process_11~0 ; LCCOMB_X20_Y16_N28 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|process_8~2 ; LCCOMB_X26_Y22_N14 ; 32 ; Async. clear ; yes ; Global Clock ; GCLK5 ; -- ; +; MAIN_CLK ; PIN_G2 ; 2272 ; Clock ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CLEAR_FIFO_CNT ; FF_X23_Y12_N17 ; 26 ; Sync. load ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_REFRESH_SIG[3]~1 ; LCCOMB_X27_Y6_N0 ; 4 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FB_LE[0]~4 ; LCCOMB_X22_Y2_N22 ; 32 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FB_LE[1]~2 ; LCCOMB_X34_Y2_N8 ; 32 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FB_LE[2]~3 ; LCCOMB_X21_Y4_N10 ; 32 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FB_LE[3] ; LCCOMB_X34_Y2_N24 ; 32 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_ADR_CNT[22]~40 ; LCCOMB_X26_Y8_N24 ; 23 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_H_D[7]~0 ; LCCOMB_X26_Y11_N20 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[7]~0 ; LCCOMB_X26_Y11_N30 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_M_D[7]~0 ; LCCOMB_X25_Y11_N12 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_X_D[2]~0 ; LCCOMB_X23_Y11_N24 ; 3 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_CLUT_WR[1] ; LCCOMB_X25_Y16_N22 ; 1 ; Write enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_CLUT_WR[2] ; LCCOMB_X25_Y14_N26 ; 1 ; Write enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_CLUT_WR[3] ; LCCOMB_X25_Y16_N0 ; 1 ; Write enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[15]~3 ; LCCOMB_X22_Y19_N30 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[23]~0 ; LCCOMB_X23_Y12_N4 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[31]~2 ; LCCOMB_X27_Y17_N14 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[5]~1 ; LCCOMB_X23_Y18_N22 ; 6 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[7]~6 ; LCCOMB_X28_Y18_N22 ; 2 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[15]~1 ; LCCOMB_X21_Y19_N8 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[23]~0 ; LCCOMB_X29_Y14_N0 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[31]~2 ; LCCOMB_X23_Y14_N10 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[7]~3 ; LCCOMB_X23_Y14_N0 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[15]~1 ; LCCOMB_X23_Y19_N24 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[23]~0 ; LCCOMB_X28_Y15_N4 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[31]~2 ; LCCOMB_X25_Y17_N16 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[7]~3 ; LCCOMB_X22_Y17_N10 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[15]~1 ; LCCOMB_X21_Y19_N28 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[23]~0 ; LCCOMB_X28_Y15_N10 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[31]~2 ; LCCOMB_X28_Y17_N0 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[7]~3 ; LCCOMB_X28_Y17_N10 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[15]~1 ; LCCOMB_X23_Y19_N0 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[23]~0 ; LCCOMB_X29_Y12_N18 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[31]~2 ; LCCOMB_X25_Y17_N14 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[7]~3 ; LCCOMB_X25_Y17_N6 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[15]~1 ; LCCOMB_X22_Y18_N16 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[23]~0 ; LCCOMB_X29_Y18_N26 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[7]~2 ; LCCOMB_X23_Y18_N2 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[0] ; FF_X33_Y18_N13 ; 54 ; Sync. load ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[1] ; FF_X33_Y18_N15 ; 54 ; Sync. clear ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLR_FIFO ; FF_X29_Y21_N3 ; 34 ; Async. clear ; yes ; Global Clock ; GCLK11 ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|DOP_FIFO_CLR ; FF_X36_Y17_N25 ; 21 ; Async. clear ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_CLUT_WR[0] ; LCCOMB_X23_Y16_N24 ; 1 ; Write enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_CLUT_WR[1] ; LCCOMB_X23_Y16_N8 ; 1 ; Write enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_CLUT_WR[3] ; LCCOMB_X23_Y16_N18 ; 1 ; Write enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[10]~3 ; LCCOMB_X28_Y16_N22 ; 3 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[7]~1 ; LCCOMB_X28_Y16_N16 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FIFO_RDE ; FF_X37_Y20_N27 ; 141 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; FF_X33_Y12_N25 ; 30 ; Clock enable, Sync. clear ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK ; LCCOMB_X26_Y18_N4 ; 3 ; Clock ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK ; LCCOMB_X26_Y18_N4 ; 850 ; Clock ; yes ; Global Clock ; GCLK6 ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ST_CLUT_WR[0] ; LCCOMB_X26_Y13_N18 ; 1 ; Write enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ST_CLUT_WR[1] ; LCCOMB_X21_Y13_N14 ; 1 ; Write enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ST_SHIFT_MODE[1]~0 ; LCCOMB_X29_Y17_N18 ; 2 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|SUB_PIXEL_CNT[6]~7 ; LCCOMB_X35_Y17_N16 ; 7 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|SYNC_PIX ; FF_X34_Y14_N13 ; 10 ; Sync. clear ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|SYS_CTR[6]~0 ; LCCOMB_X26_Y16_N6 ; 6 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBB[11]~1 ; LCCOMB_X30_Y13_N14 ; 4 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBB[7]~0 ; LCCOMB_X30_Y13_N10 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[11]~1 ; LCCOMB_X30_Y10_N2 ; 4 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[7]~0 ; LCCOMB_X29_Y10_N30 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[11]~1 ; LCCOMB_X30_Y10_N12 ; 4 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[7]~0 ; LCCOMB_X29_Y10_N8 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[11]~1 ; LCCOMB_X33_Y13_N12 ; 4 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[7]~0 ; LCCOMB_X33_Y13_N2 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HHT[11]~1 ; LCCOMB_X30_Y12_N28 ; 4 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HHT[7]~0 ; LCCOMB_X30_Y12_N0 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HSS[11]~1 ; LCCOMB_X29_Y14_N22 ; 4 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HSS[7]~0 ; LCCOMB_X26_Y12_N8 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LOF[15]~1 ; LCCOMB_X26_Y17_N2 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LOF[7]~0 ; LCCOMB_X27_Y15_N22 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LWD[15]~3 ; LCCOMB_X26_Y17_N14 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_LWD[7]~2 ; LCCOMB_X26_Y15_N16 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBB[10]~1 ; LCCOMB_X30_Y15_N4 ; 3 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBB[7]~0 ; LCCOMB_X29_Y15_N14 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBE[10]~1 ; LCCOMB_X25_Y13_N18 ; 3 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBE[7]~0 ; LCCOMB_X30_Y13_N8 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VCT[7]~0 ; LCCOMB_X26_Y18_N22 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VCT[8]~1 ; LCCOMB_X26_Y13_N20 ; 1 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDB[10]~1 ; LCCOMB_X29_Y14_N20 ; 3 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDB[7]~0 ; LCCOMB_X29_Y13_N4 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDE[10]~1 ; LCCOMB_X30_Y15_N30 ; 3 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDE[7]~0 ; LCCOMB_X29_Y16_N18 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VFT[10]~1 ; LCCOMB_X26_Y14_N6 ; 3 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VFT[7]~0 ; LCCOMB_X27_Y16_N2 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VMD[3]~0 ; LCCOMB_X25_Y18_N26 ; 4 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VSS[10]~1 ; LCCOMB_X27_Y18_N20 ; 3 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VSS[7]~0 ; LCCOMB_X26_Y16_N0 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VR_FRQ[7]~3 ; LCCOMB_X27_Y18_N6 ; 7 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~92 ; LCCOMB_X28_Y20_N4 ; 10 ; Sync. clear ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|inst37 ; LCCOMB_X66_Y4_N2 ; 32 ; Output enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|inst65~0 ; LCCOMB_X37_Y20_N28 ; 34 ; Clock enable, Write enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|inst67 ; LCCOMB_X37_Y17_N12 ; 1 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|inst90 ; DDIOOECELL_X63_Y0_N12 ; 1 ; Output enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|inst90~_Duplicate_1 ; DDIOOECELL_X67_Y11_N12 ; 1 ; Output enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|inst90~_Duplicate_2 ; DDIOOECELL_X52_Y0_N26 ; 1 ; Output enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|inst90~_Duplicate_3 ; DDIOOECELL_X43_Y0_N19 ; 1 ; Output enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|inst95 ; FF_X39_Y18_N21 ; 128 ; Sync. load ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|_~0 ; LCCOMB_X36_Y20_N2 ; 6 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_9d9:wraclr|dffe20a[0] ; FF_X57_Y17_N21 ; 72 ; Async. clear ; yes ; Global Clock ; GCLK9 ; -- ; +; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|valid_wrreq~0 ; LCCOMB_X57_Y17_N14 ; 14 ; Clock enable, Write enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|lpm_shiftreg4:inst26|lpm_shiftreg:lpm_shiftreg_component|dffs[0] ; FF_X45_Y15_N1 ; 258 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|lpm_shiftreg6:inst92|lpm_shiftreg:lpm_shiftreg_component|dffs[0] ; FF_X18_Y13_N29 ; 64 ; Clock enable ; no ; -- ; -- ; -- ; +; Video:Fredi_Aschwanden|lpm_shiftreg6:inst92|lpm_shiftreg:lpm_shiftreg_component|dffs[1] ; FF_X18_Y13_N3 ; 33 ; Clock enable ; no ; -- ; -- ; -- ; +; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; PLL_3 ; 52 ; Clock ; yes ; Global Clock ; GCLK14 ; -- ; +; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; PLL_1 ; 691 ; Clock ; yes ; Global Clock ; GCLK3 ; -- ; +; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; PLL_1 ; 96 ; Clock ; yes ; Global Clock ; GCLK1 ; -- ; +; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; PLL_1 ; 5 ; Clock ; yes ; Global Clock ; GCLK0 ; -- ; +; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; PLL_1 ; 41 ; Clock ; yes ; Global Clock ; GCLK2 ; -- ; +; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; PLL_1 ; 189 ; Clock, Latch enable ; yes ; Global Clock ; GCLK4 ; -- ; +; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; PLL_4 ; 7 ; Clock ; yes ; Global Clock ; GCLK16 ; -- ; +; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; PLL_4 ; 585 ; Clock ; yes ; Global Clock ; GCLK17 ; -- ; +; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; PLL_4 ; 4 ; Clock ; yes ; Global Clock ; GCLK18 ; -- ; +; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[3] ; PLL_4 ; 2 ; Clock ; yes ; Global Clock ; GCLK19 ; -- ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|_~1 ; LCCOMB_X23_Y26_N8 ; 1 ; Async. clear ; no ; -- ; -- ; -- ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|busy ; LCCOMB_X22_Y25_N2 ; 15 ; Clock enable ; no ; -- ; -- ; -- ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|input_latch_enable~0 ; LCCOMB_X22_Y26_N10 ; 7 ; Clock enable ; no ; -- ; -- ; -- ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr12|cntr_30l:auto_generated|counter_reg_bit[7]~0 ; LCCOMB_X14_Y25_N0 ; 8 ; Sync. load ; no ; -- ; -- ; -- ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr13|cntr_qij:auto_generated|_~0 ; LCCOMB_X19_Y28_N4 ; 14 ; Clock enable ; no ; -- ; -- ; -- ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr15|cntr_30l:auto_generated|counter_reg_bit[7]~0 ; LCCOMB_X21_Y29_N18 ; 8 ; Sync. load ; no ; -- ; -- ; -- ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr1|cntr_30l:auto_generated|_~9 ; LCCOMB_X21_Y27_N10 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr1|cntr_30l:auto_generated|counter_reg_bit[7]~0 ; LCCOMB_X18_Y29_N18 ; 8 ; Sync. load ; no ; -- ; -- ; -- ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr2|cntr_9cj:auto_generated|_~0 ; LCCOMB_X21_Y26_N22 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|power_up~4 ; LCCOMB_X21_Y26_N10 ; 6 ; Clock enable ; no ; -- ; -- ; -- ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|power_up~5 ; LCCOMB_X21_Y27_N12 ; 5 ; Sync. load ; no ; -- ; -- ; -- ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|reconfig_counter_state~0 ; LCCOMB_X21_Y29_N6 ; 16 ; Sync. load ; no ; -- ; -- ; -- ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|reconfig_counter_state~1 ; LCCOMB_X18_Y29_N24 ; 13 ; Clock enable ; no ; -- ; -- ; -- ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|reconfig_seq_ena_state ; FF_X22_Y29_N31 ; 13 ; Sync. load ; no ; -- ; -- ; -- ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|scan_cache_write_enable~0 ; LCCOMB_X20_Y26_N4 ; 3 ; Write enable ; no ; -- ; -- ; -- ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|shift_reg[17]~3 ; LCCOMB_X22_Y23_N2 ; 18 ; Clock enable ; no ; -- ; -- ; -- ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|shift_reg_clear~0 ; LCCOMB_X22_Y27_N28 ; 35 ; Sync. clear, Sync. load ; no ; -- ; -- ; -- ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|tmp_nominal_data_out_state ; FF_X21_Y25_N29 ; 10 ; Sync. load ; no ; -- ; -- ; -- ; +; inst25 ; LCCOMB_X15_Y23_N20 ; 1027 ; Async. clear, Async. load ; yes ; Global Clock ; GCLK10 ; -- ; +; inst25 ; LCCOMB_X15_Y23_N20 ; 119 ; Clock enable, Sync. clear, Sync. load ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|ACHTELSEKUNDEN[2]~0 ; LCCOMB_X1_Y13_N6 ; 4 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|ACP_CONF[15]~3 ; LCCOMB_X16_Y11_N10 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|ACP_CONF[23]~1 ; LCCOMB_X11_Y13_N28 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|ACP_CONF[31]~0 ; LCCOMB_X16_Y11_N26 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|ACP_CONF[7]~4 ; LCCOMB_X15_Y11_N26 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|INT_CLEAR[0] ; FF_X17_Y10_N9 ; 1 ; Async. clear ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|INT_CLEAR[1] ; FF_X17_Y10_N31 ; 1 ; Async. clear ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|INT_CLEAR[2] ; FF_X17_Y10_N1 ; 1 ; Async. clear ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|INT_CLEAR[3] ; FF_X17_Y10_N23 ; 1 ; Async. clear ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|INT_CLEAR[4] ; FF_X17_Y10_N21 ; 1 ; Async. clear ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|INT_CLEAR[5] ; FF_X17_Y10_N11 ; 1 ; Async. clear ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|INT_CLEAR[6] ; FF_X17_Y10_N25 ; 1 ; Async. clear ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|INT_CLEAR[8] ; FF_X17_Y10_N15 ; 1 ; Async. clear ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|INT_CLEAR[9] ; FF_X17_Y10_N29 ; 1 ; Async. clear ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|INT_CTR[15]~2 ; LCCOMB_X15_Y15_N26 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|INT_CTR[23]~1 ; LCCOMB_X12_Y11_N10 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|INT_CTR[31]~3 ; LCCOMB_X18_Y12_N8 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|INT_CTR[7]~0 ; LCCOMB_X15_Y13_N26 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|INT_ENA[15]~2 ; LCCOMB_X15_Y15_N30 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|INT_ENA[23]~1 ; LCCOMB_X12_Y13_N22 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|INT_ENA[31]~0 ; LCCOMB_X16_Y13_N24 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|INT_ENA[7]~3 ; LCCOMB_X15_Y13_N6 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|INT_LATCH[0]~26 ; LCCOMB_X14_Y13_N30 ; 1 ; Clock ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|INT_LATCH[1]~25 ; LCCOMB_X15_Y11_N22 ; 1 ; Clock ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|INT_LATCH[2]~24 ; LCCOMB_X15_Y11_N6 ; 1 ; Clock ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|INT_LATCH[3]~23 ; LCCOMB_X15_Y10_N6 ; 1 ; Clock ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|INT_LATCH[4]~22 ; LCCOMB_X14_Y13_N20 ; 1 ; Clock ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|INT_LATCH[5]~21 ; LCCOMB_X15_Y11_N0 ; 1 ; Clock ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|INT_LATCH[6]~20 ; LCCOMB_X15_Y12_N26 ; 1 ; Clock ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|INT_LATCH[8]~19 ; LCCOMB_X15_Y15_N6 ; 1 ; Clock ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|INT_LATCH[9]~18 ; LCCOMB_X15_Y15_N16 ; 1 ; Clock ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|RTC_ADR[5]~0 ; LCCOMB_X8_Y12_N24 ; 6 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[0][0]~1 ; LCCOMB_X6_Y15_N8 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[0][13]~14 ; LCCOMB_X4_Y14_N22 ; 1 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[0][2]~4 ; LCCOMB_X7_Y15_N26 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][10]~10 ; LCCOMB_X7_Y14_N4 ; 7 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][11]~77 ; LCCOMB_X1_Y13_N26 ; 5 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][12]~11 ; LCCOMB_X8_Y13_N18 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][13]~13 ; LCCOMB_X6_Y14_N18 ; 7 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][14]~15 ; LCCOMB_X7_Y14_N6 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][15]~16 ; LCCOMB_X11_Y13_N30 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][16]~17 ; LCCOMB_X4_Y13_N8 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][17]~18 ; LCCOMB_X3_Y11_N12 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][18]~19 ; LCCOMB_X2_Y14_N18 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][19]~20 ; LCCOMB_X2_Y13_N26 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][1]~2 ; LCCOMB_X7_Y13_N28 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][20]~21 ; LCCOMB_X2_Y13_N16 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][21]~22 ; LCCOMB_X3_Y14_N22 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][22]~23 ; LCCOMB_X2_Y14_N20 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][23]~24 ; LCCOMB_X3_Y10_N20 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][24]~25 ; LCCOMB_X3_Y10_N14 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][25]~26 ; LCCOMB_X2_Y12_N18 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][26]~27 ; LCCOMB_X2_Y12_N12 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][27]~28 ; LCCOMB_X4_Y9_N24 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][28]~29 ; LCCOMB_X4_Y13_N22 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][29]~30 ; LCCOMB_X3_Y11_N30 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][30]~31 ; LCCOMB_X3_Y12_N26 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][31]~32 ; LCCOMB_X5_Y12_N8 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][32]~33 ; LCCOMB_X4_Y10_N6 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][33]~34 ; LCCOMB_X8_Y10_N20 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][34]~35 ; LCCOMB_X8_Y10_N30 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][35]~36 ; LCCOMB_X4_Y10_N0 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][36]~37 ; LCCOMB_X2_Y10_N18 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][37]~38 ; LCCOMB_X2_Y10_N24 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][38]~39 ; LCCOMB_X7_Y10_N22 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][39]~40 ; LCCOMB_X4_Y10_N2 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][3]~5 ; LCCOMB_X6_Y13_N26 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][40]~41 ; LCCOMB_X6_Y9_N24 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][41]~42 ; LCCOMB_X5_Y13_N22 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][42]~43 ; LCCOMB_X6_Y9_N6 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][43]~44 ; LCCOMB_X9_Y11_N30 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][44]~45 ; LCCOMB_X10_Y11_N22 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][45]~46 ; LCCOMB_X10_Y10_N28 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][46]~47 ; LCCOMB_X10_Y10_N26 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][47]~48 ; LCCOMB_X9_Y13_N8 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][48]~49 ; LCCOMB_X9_Y13_N10 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][49]~50 ; LCCOMB_X9_Y10_N10 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][50]~51 ; LCCOMB_X9_Y10_N8 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][51]~52 ; LCCOMB_X8_Y9_N10 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][52]~53 ; LCCOMB_X7_Y9_N26 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][53]~54 ; LCCOMB_X11_Y9_N14 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][54]~55 ; LCCOMB_X10_Y9_N22 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][55]~56 ; LCCOMB_X10_Y11_N20 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][56]~57 ; LCCOMB_X10_Y9_N12 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][57]~58 ; LCCOMB_X8_Y12_N8 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][58]~59 ; LCCOMB_X8_Y12_N10 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][59]~60 ; LCCOMB_X9_Y12_N24 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][5]~9 ; LCCOMB_X6_Y14_N12 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][60]~61 ; LCCOMB_X5_Y12_N26 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][61]~62 ; LCCOMB_X5_Y12_N22 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][62]~63 ; LCCOMB_X12_Y12_N16 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|WERTE[7][63]~64 ; LCCOMB_X11_Y12_N12 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|_~503 ; LCCOMB_X6_Y11_N18 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|_~504 ; LCCOMB_X5_Y11_N22 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|_~505 ; LCCOMB_X4_Y14_N28 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; +; interrupt_handler:nobody|_~506 ; LCCOMB_X7_Y13_N22 ; 8 ; Clock enable ; no ; -- ; -- ; -- ; ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------+---------+---------------------------------------+--------+----------------------+------------------+---------------------------+ + + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Global & Other Fast Signals ; ++---------------------------------------------------------------------------------------------------------------------------+--------------------+---------+--------------------------------------+----------------------+------------------+---------------------------+ +; Name ; Location ; Fan-Out ; Fan-Out Using Intentional Clock Skew ; Global Resource Used ; Global Line Name ; Enable Signal Source Name ; ++---------------------------------------------------------------------------------------------------------------------------+--------------------+---------+--------------------------------------+----------------------+------------------+---------------------------+ +; CLK33M ; PIN_AB12 ; 12 ; 0 ; Global Clock ; GCLK15 ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|CLR_FIFO ; LCCOMB_X26_Y22_N16 ; 250 ; 0 ; Global Clock ; GCLK7 ; -- ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|process_8~2 ; LCCOMB_X26_Y22_N14 ; 32 ; 0 ; Global Clock ; GCLK5 ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLR_FIFO ; FF_X29_Y21_N3 ; 34 ; 0 ; Global Clock ; GCLK11 ; -- ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK ; LCCOMB_X26_Y18_N4 ; 850 ; 0 ; Global Clock ; GCLK6 ; -- ; +; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_9d9:wraclr|dffe20a[0] ; FF_X57_Y17_N21 ; 72 ; 0 ; Global Clock ; GCLK9 ; -- ; +; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; PLL_3 ; 52 ; 0 ; Global Clock ; GCLK14 ; -- ; +; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[1] ; PLL_3 ; 1 ; 0 ; Global Clock ; GCLK12 ; -- ; +; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[2] ; PLL_3 ; 1 ; 0 ; Global Clock ; GCLK13 ; -- ; +; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; PLL_1 ; 691 ; 0 ; Global Clock ; GCLK3 ; -- ; +; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; PLL_1 ; 96 ; 0 ; Global Clock ; GCLK1 ; -- ; +; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; PLL_1 ; 5 ; 0 ; Global Clock ; GCLK0 ; -- ; +; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; PLL_1 ; 41 ; 0 ; Global Clock ; GCLK2 ; -- ; +; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; PLL_1 ; 189 ; 0 ; Global Clock ; GCLK4 ; -- ; +; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; PLL_4 ; 7 ; 0 ; Global Clock ; GCLK16 ; -- ; +; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; PLL_4 ; 585 ; 0 ; Global Clock ; GCLK17 ; -- ; +; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; PLL_4 ; 4 ; 0 ; Global Clock ; GCLK18 ; -- ; +; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[3] ; PLL_4 ; 2 ; 0 ; Global Clock ; GCLK19 ; -- ; +; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; PLL_2 ; 1 ; 0 ; Global Clock ; GCLK8 ; -- ; +; inst25 ; LCCOMB_X15_Y23_N20 ; 1027 ; 0 ; Global Clock ; GCLK10 ; -- ; ++---------------------------------------------------------------------------------------------------------------------------+--------------------+---------+--------------------------------------+----------------------+------------------+---------------------------+ + + ++---------------------------------------------------------------------------------------------------------------------------------------------+ +; Non-Global High Fan-Out Signals ; ++-----------------------------------------------------------------------------------------------------------------------------------+---------+ +; Name ; Fan-Out ; ++-----------------------------------------------------------------------------------------------------------------------------------+---------+ +; MAIN_CLK~input ; 2272 ; +; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[0] ; 385 ; +; Video:Fredi_Aschwanden|lpm_shiftreg4:inst26|lpm_shiftreg:lpm_shiftreg_component|dffs[0] ; 258 ; +; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[2] ; 257 ; +; nFB_WR~input ; 235 ; +; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[1] ; 225 ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[0] ; 208 ; +; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[5] ; 161 ; +; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[1] ; 158 ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[26] ; 156 ; +; FB_AD[17]~input ; 145 ; +; FB_AD[18]~input ; 145 ; +; FB_AD[20]~input ; 144 ; +; FB_AD[16]~input ; 143 ; +; FB_AD[19]~input ; 143 ; +; FB_AD[21]~input ; 143 ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FIFO_RDE ; 141 ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; 141 ; +; FB_AD[22]~input ; 140 ; +; FB_AD[23]~input ; 137 ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLUT_MUX_ADR[0] ; 132 ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLUT_MUX_ADR[1] ; 132 ; +; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[3] ; 129 ; +; Video:Fredi_Aschwanden|inst95 ; 128 ; +; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[2] ; 120 ; +; inst25 ; 118 ; +; nFB_OE~input ; 101 ; +; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[3] ; 97 ; +; nFB_CS2~input ; 95 ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|Selector68~47 ; 88 ; +; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[4] ; 83 ; +; interrupt_handler:nobody|RTC_ADR[4] ; 80 ; +; interrupt_handler:nobody|RTC_ADR[5] ; 79 ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|ROLL_OVER ; 78 ; +; interrupt_handler:nobody|UHR_DS~5 ; 71 ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE_CS~1 ; 68 ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VMD[2] ; 66 ; +; interrupt_handler:nobody|UHR_DS~6 ; 66 ; +; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; 65 ; +; Video:Fredi_Aschwanden|lpm_shiftreg6:inst92|lpm_shiftreg:lpm_shiftreg_component|dffs[0] ; 64 ; +; FB_AD[24]~input ; 63 ; +; interrupt_handler:nobody|RTC_ADR[3] ; 62 ; +; interrupt_handler:nobody|RTC_ADR[2] ; 62 ; +; interrupt_handler:nobody|RTC_ADR[1] ; 62 ; +; interrupt_handler:nobody|RTC_ADR[0] ; 62 ; +; ~GND ; 61 ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|DEC_STATE ; 60 ; +; nFB_CS1~input ; 59 ; +; FB_AD[25]~input ; 59 ; +; FB_AD[26]~input ; 57 ; ++-----------------------------------------------------------------------------------------------------------------------------------+---------+ + + ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Fitter RAM Summary ; ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+------------------+--------------+--------------+--------------+--------------+--------------+------------------------+-------------------------+------------------------+-------------------------+-------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+---------------------+------+------+--------------------------------------------------------------------------------------------------------------------------------+ +; Name ; Type ; Mode ; Clock Mode ; Port A Depth ; Port A Width ; Port B Depth ; Port B Width ; Port A Input Registers ; Port A Output Registers ; Port B Input Registers ; Port B Output Registers ; Size ; Implementation Port A Depth ; Implementation Port A Width ; Implementation Port B Depth ; Implementation Port B Width ; Implementation Bits ; M9Ks ; MIF ; Location ; ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+------------------+--------------+--------------+--------------+--------------+--------------+------------------------+-------------------------+------------------------+-------------------------+-------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+---------------------+------+------+--------------------------------------------------------------------------------------------------------------------------------+ +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|ALTSYNCRAM ; AUTO ; Simple Dual Port ; Dual Clocks ; 1024 ; 8 ; 256 ; 32 ; yes ; no ; yes ; yes ; 8192 ; 1024 ; 8 ; 256 ; 32 ; 8192 ; 1 ; None ; M9K_X24_Y11_N0 ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ALTSYNCRAM ; AUTO ; Simple Dual Port ; Dual Clocks ; 256 ; 32 ; 1024 ; 8 ; yes ; no ; yes ; yes ; 8192 ; 256 ; 32 ; 1024 ; 8 ; 8192 ; 1 ; None ; M9K_X24_Y21_N0 ; +; Video:Fredi_Aschwanden|altdpram0:ST_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated|ALTSYNCRAM ; AUTO ; True Dual Port ; Dual Clocks ; 16 ; 3 ; 16 ; 3 ; yes ; yes ; yes ; yes ; 48 ; 16 ; 3 ; 16 ; 3 ; 48 ; 1 ; None ; M9K_X24_Y15_N0 ; +; Video:Fredi_Aschwanden|altdpram0:ST_CLUT_GREEN|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated|ALTSYNCRAM ; AUTO ; True Dual Port ; Dual Clocks ; 16 ; 3 ; 16 ; 3 ; yes ; yes ; yes ; yes ; 48 ; 16 ; 3 ; 16 ; 3 ; 48 ; 1 ; None ; M9K_X24_Y15_N0 ; +; Video:Fredi_Aschwanden|altdpram0:ST_CLUT_RED|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated|ALTSYNCRAM ; AUTO ; True Dual Port ; Dual Clocks ; 16 ; 3 ; 16 ; 3 ; yes ; yes ; yes ; yes ; 48 ; 16 ; 3 ; 16 ; 3 ; 48 ; 1 ; None ; M9K_X24_Y13_N0 ; +; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ALTSYNCRAM ; AUTO ; True Dual Port ; Dual Clocks ; 256 ; 6 ; 256 ; 6 ; yes ; yes ; yes ; yes ; 1536 ; 256 ; 6 ; 256 ; 6 ; 1536 ; 1 ; None ; M9K_X24_Y20_N0 ; +; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_GREEN|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ALTSYNCRAM ; AUTO ; True Dual Port ; Dual Clocks ; 256 ; 6 ; 256 ; 6 ; yes ; yes ; yes ; yes ; 1536 ; 256 ; 6 ; 256 ; 6 ; 1536 ; 1 ; None ; M9K_X24_Y19_N0 ; +; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ALTSYNCRAM ; AUTO ; True Dual Port ; Dual Clocks ; 256 ; 6 ; 256 ; 6 ; yes ; yes ; yes ; yes ; 1536 ; 256 ; 6 ; 256 ; 6 ; 1536 ; 1 ; None ; M9K_X24_Y17_N0 ; +; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|ALTSYNCRAM ; AUTO ; True Dual Port ; Dual Clocks ; 256 ; 8 ; 256 ; 8 ; yes ; yes ; yes ; yes ; 2048 ; 256 ; 8 ; 256 ; 8 ; 2048 ; 1 ; None ; M9K_X24_Y14_N0 ; +; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|ALTSYNCRAM ; AUTO ; True Dual Port ; Dual Clocks ; 256 ; 8 ; 256 ; 8 ; yes ; yes ; yes ; yes ; 2048 ; 256 ; 8 ; 256 ; 8 ; 2048 ; 1 ; None ; M9K_X24_Y16_N0 ; +; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|ALTSYNCRAM ; AUTO ; True Dual Port ; Dual Clocks ; 256 ; 8 ; 256 ; 8 ; yes ; yes ; yes ; yes ; 2048 ; 256 ; 8 ; 256 ; 8 ; 2048 ; 1 ; None ; M9K_X24_Y18_N0 ; +; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ALTSYNCRAM ; AUTO ; Simple Dual Port ; Dual Clocks ; 128 ; 128 ; 128 ; 128 ; yes ; no ; yes ; no ; 16384 ; 128 ; 128 ; 128 ; 128 ; 16384 ; 4 ; None ; M9K_X40_Y19_N0, M9K_X40_Y20_N0, M9K_X40_Y21_N0, M9K_X40_Y22_N0 ; +; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ALTSYNCRAM ; AUTO ; Simple Dual Port ; Dual Clocks ; 512 ; 128 ; 512 ; 128 ; yes ; no ; yes ; yes ; 65536 ; 512 ; 128 ; 512 ; 128 ; 65536 ; 8 ; None ; M9K_X40_Y16_N0, M9K_X40_Y15_N0, M9K_X58_Y16_N0, M9K_X58_Y17_N0, M9K_X40_Y17_N0, M9K_X40_Y14_N0, M9K_X40_Y13_N0, M9K_X40_Y18_N0 ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|altsyncram:altsyncram4|altsyncram_46r:auto_generated|ALTSYNCRAM ; AUTO ; Single Port ; Single Clock ; 144 ; 1 ; -- ; -- ; yes ; no ; -- ; -- ; 144 ; 144 ; 1 ; -- ; -- ; 144 ; 1 ; None ; M9K_X24_Y25_N0 ; ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+------------------+--------------+--------------+--------------+--------------+--------------+------------------------+-------------------------+------------------------+-------------------------+-------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+---------------------+------+------+--------------------------------------------------------------------------------------------------------------------------------+ +Note: Fitter may spread logical memories into multiple blocks to improve timing. The actual required RAM blocks can be found in the Fitter Resource Usage section. + + ++-----------------------------------------------------------------------------------------------+ +; Fitter DSP Block Usage Summary ; ++---------------------------------------+-------------+---------------------+-------------------+ +; Statistic ; Number Used ; Available per Block ; Maximum Available ; ++---------------------------------------+-------------+---------------------+-------------------+ +; Simple Multipliers (9-bit) ; 0 ; 2 ; 252 ; +; Simple Multipliers (18-bit) ; 3 ; 1 ; 126 ; +; Embedded Multiplier Blocks ; 3 ; -- ; 126 ; +; Embedded Multiplier 9-bit elements ; 6 ; 2 ; 252 ; +; Signed Embedded Multipliers ; 0 ; -- ; -- ; +; Unsigned Embedded Multipliers ; 3 ; -- ; -- ; +; Mixed Sign Embedded Multipliers ; 0 ; -- ; -- ; +; Variable Sign Embedded Multipliers ; 0 ; -- ; -- ; +; Dedicated Input Shift Register Chains ; 0 ; -- ; -- ; ++---------------------------------------+-------------+---------------------+-------------------+ + + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; DSP Block Details ; ++------------------------------------------------------------------------------------------------------------------------+----------------------------+--------------------+---------------------+--------------------------------+-----------------------+-----------------------+-------------------+-----------------+ +; Name ; Mode ; Location ; Sign Representation ; Has Input Shift Register Chain ; Data A Input Register ; Data B Input Register ; Pipeline Register ; Output Register ; ++------------------------------------------------------------------------------------------------------------------------+----------------------------+--------------------+---------------------+--------------------------------+-----------------------+-----------------------+-------------------+-----------------+ +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_mult:op_14|mult_cat:auto_generated|mac_out2 ; Simple Multiplier (18-bit) ; DSPOUT_X31_Y14_N2 ; ; No ; ; ; ; no ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_mult:op_14|mult_cat:auto_generated|mac_mult1 ; ; DSPMULT_X31_Y14_N0 ; Unsigned ; ; no ; no ; no ; ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_mult:op_6|mult_aat:auto_generated|mac_out2 ; Simple Multiplier (18-bit) ; DSPOUT_X31_Y10_N2 ; ; No ; ; ; ; no ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_mult:op_6|mult_aat:auto_generated|mac_mult1 ; ; DSPMULT_X31_Y10_N0 ; Unsigned ; ; no ; no ; no ; ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_mult:op_12|mult_aat:auto_generated|mac_out2 ; Simple Multiplier (18-bit) ; DSPOUT_X31_Y12_N2 ; ; No ; ; ; ; no ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_mult:op_12|mult_aat:auto_generated|mac_mult1 ; ; DSPMULT_X31_Y12_N0 ; Unsigned ; ; no ; no ; no ; ; ++------------------------------------------------------------------------------------------------------------------------+----------------------------+--------------------+---------------------+--------------------------------+-----------------------+-----------------------+-------------------+-----------------+ + + ++--------------------------------------------------------+ +; Interconnect Usage Summary ; ++----------------------------+---------------------------+ +; Interconnect Resource Type ; Usage ; ++----------------------------+---------------------------+ +; Block interconnects ; 16,358 / 116,715 ( 14 % ) ; +; C16 interconnects ; 749 / 3,886 ( 19 % ) ; +; C4 interconnects ; 10,626 / 73,752 ( 14 % ) ; +; Direct links ; 2,046 / 116,715 ( 2 % ) ; +; Global clocks ; 20 / 20 ( 100 % ) ; +; Local interconnects ; 4,734 / 39,600 ( 12 % ) ; +; R24 interconnects ; 882 / 3,777 ( 23 % ) ; +; R4 interconnects ; 11,442 / 99,858 ( 11 % ) ; ++----------------------------+---------------------------+ + + ++-----------------------------------------------------------------------------+ +; LAB Logic Elements ; ++---------------------------------------------+-------------------------------+ +; Number of Logic Elements (Average = 12.60) ; Number of LABs (Total = 756) ; ++---------------------------------------------+-------------------------------+ +; 1 ; 41 ; +; 2 ; 20 ; +; 3 ; 22 ; +; 4 ; 11 ; +; 5 ; 13 ; +; 6 ; 12 ; +; 7 ; 15 ; +; 8 ; 13 ; +; 9 ; 13 ; +; 10 ; 30 ; +; 11 ; 23 ; +; 12 ; 32 ; +; 13 ; 29 ; +; 14 ; 47 ; +; 15 ; 59 ; +; 16 ; 376 ; ++---------------------------------------------+-------------------------------+ + + ++--------------------------------------------------------------------+ +; LAB-wide Signals ; ++------------------------------------+-------------------------------+ +; LAB-wide Signals (Average = 1.78) ; Number of LABs (Total = 756) ; ++------------------------------------+-------------------------------+ +; 1 Async. clear ; 239 ; +; 1 Clock ; 631 ; +; 1 Clock enable ; 289 ; +; 1 Sync. clear ; 20 ; +; 1 Sync. load ; 26 ; +; 2 Async. clears ; 12 ; +; 2 Clock enables ; 84 ; +; 2 Clocks ; 41 ; ++------------------------------------+-------------------------------+ + + ++------------------------------------------------------------------------------+ +; LAB Signals Sourced ; ++----------------------------------------------+-------------------------------+ +; Number of Signals Sourced (Average = 18.19) ; Number of LABs (Total = 756) ; ++----------------------------------------------+-------------------------------+ +; 0 ; 0 ; +; 1 ; 19 ; +; 2 ; 26 ; +; 3 ; 12 ; +; 4 ; 16 ; +; 5 ; 8 ; +; 6 ; 14 ; +; 7 ; 5 ; +; 8 ; 11 ; +; 9 ; 8 ; +; 10 ; 14 ; +; 11 ; 9 ; +; 12 ; 20 ; +; 13 ; 17 ; +; 14 ; 15 ; +; 15 ; 30 ; +; 16 ; 49 ; +; 17 ; 41 ; +; 18 ; 43 ; +; 19 ; 30 ; +; 20 ; 42 ; +; 21 ; 35 ; +; 22 ; 49 ; +; 23 ; 45 ; +; 24 ; 31 ; +; 25 ; 31 ; +; 26 ; 27 ; +; 27 ; 28 ; +; 28 ; 20 ; +; 29 ; 17 ; +; 30 ; 18 ; +; 31 ; 10 ; +; 32 ; 16 ; ++----------------------------------------------+-------------------------------+ + + ++---------------------------------------------------------------------------------+ +; LAB Signals Sourced Out ; ++-------------------------------------------------+-------------------------------+ +; Number of Signals Sourced Out (Average = 8.27) ; Number of LABs (Total = 756) ; ++-------------------------------------------------+-------------------------------+ +; 0 ; 1 ; +; 1 ; 61 ; +; 2 ; 48 ; +; 3 ; 47 ; +; 4 ; 43 ; +; 5 ; 40 ; +; 6 ; 51 ; +; 7 ; 50 ; +; 8 ; 53 ; +; 9 ; 71 ; +; 10 ; 46 ; +; 11 ; 45 ; +; 12 ; 51 ; +; 13 ; 46 ; +; 14 ; 26 ; +; 15 ; 25 ; +; 16 ; 19 ; +; 17 ; 5 ; +; 18 ; 9 ; +; 19 ; 6 ; +; 20 ; 4 ; +; 21 ; 1 ; +; 22 ; 2 ; +; 23 ; 0 ; +; 24 ; 3 ; +; 25 ; 2 ; +; 26 ; 0 ; +; 27 ; 1 ; ++-------------------------------------------------+-------------------------------+ + + ++------------------------------------------------------------------------------+ +; LAB Distinct Inputs ; ++----------------------------------------------+-------------------------------+ +; Number of Distinct Inputs (Average = 18.51) ; Number of LABs (Total = 756) ; ++----------------------------------------------+-------------------------------+ +; 0 ; 0 ; +; 1 ; 1 ; +; 2 ; 22 ; +; 3 ; 24 ; +; 4 ; 30 ; +; 5 ; 15 ; +; 6 ; 15 ; +; 7 ; 23 ; +; 8 ; 16 ; +; 9 ; 20 ; +; 10 ; 17 ; +; 11 ; 19 ; +; 12 ; 16 ; +; 13 ; 20 ; +; 14 ; 18 ; +; 15 ; 17 ; +; 16 ; 19 ; +; 17 ; 34 ; +; 18 ; 26 ; +; 19 ; 19 ; +; 20 ; 27 ; +; 21 ; 33 ; +; 22 ; 35 ; +; 23 ; 33 ; +; 24 ; 33 ; +; 25 ; 30 ; +; 26 ; 30 ; +; 27 ; 21 ; +; 28 ; 15 ; +; 29 ; 16 ; +; 30 ; 26 ; +; 31 ; 28 ; +; 32 ; 29 ; +; 33 ; 25 ; +; 34 ; 4 ; ++----------------------------------------------+-------------------------------+ + + ++------------------------------------------+ +; I/O Rules Summary ; ++----------------------------------+-------+ +; I/O Rules Statistic ; Total ; ++----------------------------------+-------+ +; Total I/O Rules ; 30 ; +; Number of I/O Rules Passed ; 17 ; +; Number of I/O Rules Failed ; 0 ; +; Number of I/O Rules Unchecked ; 0 ; +; Number of I/O Rules Inapplicable ; 13 ; ++----------------------------------+-------+ + + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; I/O Rules Details ; ++--------------+-----------+-----------------------------------+------------------------------------------------------------------------------------------------------+----------+--------------------------------------------------------------------------+---------------------+-------------------+ +; Status ; ID ; Category ; Rule Description ; Severity ; Information ; Area ; Extra Information ; ++--------------+-----------+-----------------------------------+------------------------------------------------------------------------------------------------------+----------+--------------------------------------------------------------------------+---------------------+-------------------+ +; Pass ; IO_000001 ; Capacity Checks ; Number of pins in an I/O bank should not exceed the number of locations available. ; Critical ; 0 such failures found. ; I/O ; ; +; Pass ; IO_000002 ; Capacity Checks ; Number of clocks in an I/O bank should not exceed the number of clocks available. ; Critical ; 0 such failures found. ; I/O ; ; +; Pass ; IO_000003 ; Capacity Checks ; Number of pins in a Vrefgroup should not exceed the number of locations available. ; Critical ; 0 such failures found. ; I/O ; ; +; Inapplicable ; IO_000004 ; Voltage Compatibility Checks ; The I/O bank should support the requested VCCIO. ; Critical ; No IOBANK_VCCIO assignments found. ; I/O ; ; +; Inapplicable ; IO_000005 ; Voltage Compatibility Checks ; The I/O bank should not have competing VREF values. ; Critical ; No VREF I/O Standard assignments found. ; I/O ; ; +; Pass ; IO_000006 ; Voltage Compatibility Checks ; The I/O bank should not have competing VCCIO values. ; Critical ; 0 such failures found. ; I/O ; ; +; Pass ; IO_000007 ; Valid Location Checks ; Checks for unavailable locations. ; Critical ; 0 such failures found. ; I/O ; ; +; Inapplicable ; IO_000008 ; Valid Location Checks ; Checks for reserved locations. ; Critical ; No reserved LogicLock region found. ; I/O ; ; +; Pass ; IO_000009 ; I/O Properties Checks for One I/O ; The location should support the requested I/O standard. ; Critical ; 0 such failures found. ; I/O ; ; +; Pass ; IO_000010 ; I/O Properties Checks for One I/O ; The location should support the requested I/O direction. ; Critical ; 0 such failures found. ; I/O ; ; +; Pass ; IO_000011 ; I/O Properties Checks for One I/O ; The location should support the requested Current Strength. ; Critical ; 0 such failures found. ; I/O ; ; +; Pass ; IO_000012 ; I/O Properties Checks for One I/O ; The location should support the requested On Chip Termination value. ; Critical ; 0 such failures found. ; I/O ; ; +; Inapplicable ; IO_000013 ; I/O Properties Checks for One I/O ; The location should support the requested Bus Hold value. ; Critical ; No Enable Bus-Hold Circuitry assignments found. ; I/O ; ; +; Inapplicable ; IO_000014 ; I/O Properties Checks for One I/O ; The location should support the requested Weak Pull Up value. ; Critical ; No Weak Pull-Up Resistor assignments found. ; I/O ; ; +; Pass ; IO_000015 ; I/O Properties Checks for One I/O ; The location should support the requested PCI Clamp Diode. ; Critical ; 0 such failures found. ; I/O ; ; +; Pass ; IO_000018 ; I/O Properties Checks for One I/O ; The I/O standard should support the requested Current Strength. ; Critical ; 0 such failures found. ; I/O ; ; +; Pass ; IO_000019 ; I/O Properties Checks for One I/O ; The I/O standard should support the requested On Chip Termination value. ; Critical ; 0 such failures found. ; I/O ; ; +; Pass ; IO_000020 ; I/O Properties Checks for One I/O ; The I/O standard should support the requested PCI Clamp Diode. ; Critical ; 0 such failures found. ; I/O ; ; +; Inapplicable ; IO_000021 ; I/O Properties Checks for One I/O ; The I/O standard should support the requested Weak Pull Up value. ; Critical ; No Weak Pull-Up Resistor assignments found. ; I/O ; ; +; Inapplicable ; IO_000022 ; I/O Properties Checks for One I/O ; The I/O standard should support the requested Bus Hold value. ; Critical ; No Enable Bus-Hold Circuitry assignments found. ; I/O ; ; +; Pass ; IO_000023 ; I/O Properties Checks for One I/O ; The I/O standard should support the Open Drain value. ; Critical ; 0 such failures found. ; I/O ; ; +; Pass ; IO_000024 ; I/O Properties Checks for One I/O ; The I/O direction should support the On Chip Termination value. ; Critical ; 0 such failures found. ; I/O ; ; +; Pass ; IO_000026 ; I/O Properties Checks for One I/O ; On Chip Termination and Current Strength should not be used at the same time. ; Critical ; 0 such failures found. ; I/O ; ; +; Inapplicable ; IO_000027 ; I/O Properties Checks for One I/O ; Weak Pull Up and Bus Hold should not be used at the same time. ; Critical ; No Enable Bus-Hold Circuitry or Weak Pull-Up Resistor assignments found. ; I/O ; ; +; Inapplicable ; IO_000045 ; I/O Properties Checks for One I/O ; The I/O standard should support the requested Slew Rate value. ; Critical ; No Slew Rate assignments found. ; I/O ; ; +; Inapplicable ; IO_000046 ; I/O Properties Checks for One I/O ; The location should support the requested Slew Rate value. ; Critical ; No Slew Rate assignments found. ; I/O ; ; +; Inapplicable ; IO_000047 ; I/O Properties Checks for One I/O ; On Chip Termination and Slew Rate should not be used at the same time. ; Critical ; No Slew Rate assignments found. ; I/O ; ; +; Pass ; IO_000033 ; Electromigration Checks ; Current density for consecutive I/Os should not exceed 240mA for row I/Os and 240mA for column I/Os. ; Critical ; 0 such failures found. ; I/O ; ; +; Inapplicable ; IO_000034 ; SI Related Distance Checks ; Single-ended outputs should be 5 LAB row(s) away from a differential I/O. ; High ; No Differential I/O Standard assignments found. ; I/O ; ; +; Inapplicable ; IO_000042 ; SI Related SSO Limit Checks ; No more than 20 outputs are allowed in a VREF group when VREF is being read from. ; High ; No VREF I/O Standard assignments found. ; I/O ; ; +; ---- ; ---- ; Disclaimer ; OCT rules are checked but not reported. ; None ; ---- ; On Chip Termination ; ; ++--------------+-----------+-----------------------------------+------------------------------------------------------------------------------------------------------+----------+--------------------------------------------------------------------------+---------------------+-------------------+ + + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; I/O Rules Matrix ; ++--------------------+-----------+--------------+-----------+--------------+--------------+-----------+-----------+--------------+-----------+-----------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+-----------+--------------+--------------+ +; Pin/Rules ; IO_000001 ; IO_000002 ; IO_000003 ; IO_000004 ; IO_000005 ; IO_000006 ; IO_000007 ; IO_000008 ; IO_000009 ; IO_000010 ; IO_000011 ; IO_000012 ; IO_000013 ; IO_000014 ; IO_000015 ; IO_000018 ; IO_000019 ; IO_000020 ; IO_000021 ; IO_000022 ; IO_000023 ; IO_000024 ; IO_000026 ; IO_000027 ; IO_000045 ; IO_000046 ; IO_000047 ; IO_000033 ; IO_000034 ; IO_000042 ; ++--------------------+-----------+--------------+-----------+--------------+--------------+-----------+-----------+--------------+-----------+-----------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+-----------+--------------+--------------+ +; Total Pass ; 295 ; 121 ; 295 ; 0 ; 0 ; 295 ; 295 ; 0 ; 295 ; 295 ; 168 ; 3 ; 0 ; 0 ; 183 ; 168 ; 3 ; 183 ; 0 ; 0 ; 11 ; 3 ; 171 ; 0 ; 0 ; 0 ; 0 ; 295 ; 0 ; 0 ; +; Total Unchecked ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; +; Total Inapplicable ; 0 ; 174 ; 0 ; 295 ; 295 ; 0 ; 0 ; 295 ; 0 ; 0 ; 127 ; 292 ; 295 ; 295 ; 112 ; 127 ; 292 ; 112 ; 295 ; 295 ; 284 ; 292 ; 124 ; 295 ; 295 ; 295 ; 295 ; 0 ; 295 ; 295 ; +; Total Fail ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; +; CLK24M576 ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; LP_STR ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nFB_BURST ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nACSI_DRQ ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nACSI_INT ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nSCSI_DRQ ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nSCSI_MSG ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nDCHG ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SD_DATA0 ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SD_DATA1 ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SD_DATA2 ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SD_CARD_DEDECT ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SD_WP ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nDACK0 ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; WP_CF_CARD ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nSCSI_C_D ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nSCSI_I_O ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nFB_CS3 ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; CLK25M ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nACSI_ACK ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nACSI_RESET ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nACSI_CS ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; ACSI_DIR ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; ACSI_A1 ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nSCSI_ACK ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nSCSI_ATN ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SCSI_DIR ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; MIDI_OLR ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; MIDI_TLR ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; TxD ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; RTS ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; DTR ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; AMKB_TX ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; IDE_RES ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nIDE_CS0 ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nIDE_CS1 ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nIDE_WR ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nIDE_RD ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nCF_CS0 ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nCF_CS1 ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nROM3 ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nROM4 ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nRP_UDS ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nRP_LDS ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nSDSEL ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nWR_GATE ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nWR ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; YM_QA ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; YM_QB ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; YM_QC ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SD_CLK ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; DSA_D ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nVWE ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nVCAS ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nVRAS ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nVCS ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nPD_VGA ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; TIN0 ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nSRCS ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nSRBLE ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nSRBHE ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nSRWE ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nDREQ1 ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; LED_FPGA_OK ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nSROE ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VCKE ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nFB_TA ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nDDR_CLK ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; DDR_CLK ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VSYNC_PAD ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; HSYNC_PAD ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nBLANK_PAD ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; PIXEL_CLK_PAD ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nSYNC ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nMOT_ON ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nSTEP_DIR ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nSTEP ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; CLKUSB ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; LPDIR ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; BA[1] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; BA[0] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nIRQ[7] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nIRQ[6] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nIRQ[5] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nIRQ[4] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nIRQ[3] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nIRQ[2] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VA[12] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VA[11] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VA[10] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VA[9] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VA[8] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VA[7] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VA[6] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VA[5] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VA[4] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VA[3] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VA[2] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VA[1] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VA[0] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VB[7] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VB[6] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VB[5] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VB[4] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VB[3] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VB[2] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VB[1] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VB[0] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VDM[3] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VDM[2] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VDM[1] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VDM[0] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VG[7] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VG[6] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VG[5] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VG[4] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VG[3] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VG[2] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VG[1] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VG[0] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VR[7] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VR[6] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VR[5] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VR[4] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VR[3] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VR[2] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VR[1] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VR[0] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; TOUT0 ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nMASTER ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_AD[31] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_AD[30] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_AD[29] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_AD[28] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_AD[27] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_AD[26] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_AD[25] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_AD[24] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_AD[23] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_AD[22] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_AD[21] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_AD[20] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_AD[19] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_AD[18] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_AD[17] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_AD[16] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_AD[15] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_AD[14] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_AD[13] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_AD[12] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_AD[11] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_AD[10] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_AD[9] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_AD[8] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_AD[7] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_AD[6] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_AD[5] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_AD[4] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_AD[3] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_AD[2] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_AD[1] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_AD[0] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VD[31] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VD[30] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VD[29] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VD[28] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VD[27] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VD[26] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VD[25] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VD[24] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VD[23] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VD[22] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VD[21] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VD[20] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VD[19] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VD[18] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VD[17] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VD[16] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VD[15] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VD[14] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VD[13] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VD[12] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VD[11] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VD[10] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VD[9] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VD[8] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VD[7] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VD[6] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VD[5] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VD[4] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VD[3] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VD[2] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VD[1] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VD[0] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VDQS[3] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VDQS[2] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VDQS[1] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; VDQS[0] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; IO[17] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; IO[16] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; IO[15] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; IO[14] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; IO[13] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; IO[12] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; IO[11] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; IO[10] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; IO[9] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; IO[8] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; IO[7] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; IO[6] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; IO[5] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; IO[4] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; IO[3] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; IO[2] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; IO[1] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; IO[0] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SRD[15] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SRD[14] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SRD[13] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SRD[12] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SRD[11] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SRD[10] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SRD[9] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SRD[8] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SRD[7] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SRD[6] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SRD[5] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SRD[4] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SRD[3] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SRD[2] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SRD[1] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SRD[0] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SCSI_PAR ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nSCSI_SEL ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nSCSI_BUSY ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nSCSI_RST ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SD_CD_DATA3 ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SD_CMD_D1 ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; ACSI_D[7] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; ACSI_D[6] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; ACSI_D[5] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; ACSI_D[4] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; ACSI_D[3] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; ACSI_D[2] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; ACSI_D[1] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; ACSI_D[0] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; LP_D[7] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; LP_D[6] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; LP_D[5] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; LP_D[4] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; LP_D[3] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; LP_D[2] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; LP_D[1] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; LP_D[0] ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SCSI_D[7] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SCSI_D[6] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SCSI_D[5] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SCSI_D[4] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SCSI_D[3] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SCSI_D[2] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SCSI_D[1] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; SCSI_D[0] ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nRSTO_MCF ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nFB_WR ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nFB_CS1 ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_SIZE1 ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_SIZE0 ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; FB_ALE ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nFB_CS2 ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; MAIN_CLK ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nDACK1 ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nFB_OE ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; IDE_RDY ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; CLK33M ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; HD_DD ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nINDEX ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; RxD ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nWP ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; LP_BUSY ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; DCD ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; CTS ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; TRACK00 ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; IDE_INT ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; RI ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nPCI_INTD ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nPCI_INTC ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nPCI_INTB ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nPCI_INTA ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; DVI_INT ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; E0_INT ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; PIC_INT ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; PIC_AMKB_RX ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; MIDI_IN ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; nRD_DATA ; Pass ; Pass ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; +; AMKB_RX ; Pass ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Pass ; Inapplicable ; Pass ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Inapplicable ; Pass ; Inapplicable ; Inapplicable ; ++--------------------+-----------+--------------+-----------+--------------+--------------+-----------+-----------+--------------+-----------+-----------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+-----------+--------------+--------------+ + + ++-------------------------------------------------------------------------+ +; Fitter Device Options ; ++----------------------------------------------+--------------------------+ +; Option ; Setting ; ++----------------------------------------------+--------------------------+ +; Enable user-supplied start-up clock (CLKUSR) ; Off ; +; Enable device-wide reset (DEV_CLRn) ; On ; +; Enable device-wide output enable (DEV_OE) ; On ; +; Enable INIT_DONE output ; Off ; +; Configuration scheme ; Passive Serial ; +; Error detection CRC ; Off ; +; Enable Open Drain on CRC Error pin ; Off ; +; Configuration Voltage Level ; Auto ; +; Force Configuration Voltage Level ; On ; +; nCEO ; As output driving ground ; +; Data[0] ; As input tri-stated ; +; Data[1]/ASDO ; As input tri-stated ; +; Data[7..2] ; Unreserved ; +; FLASH_nCE/nCSO ; As input tri-stated ; +; Other Active Parallel pins ; Unreserved ; +; DCLK ; As input tri-stated ; +; Base pin-out file on sameframe device ; Off ; ++----------------------------------------------+--------------------------+ + + ++------------------------------------+ +; Operating Settings and Conditions ; ++---------------------------+--------+ +; Setting ; Value ; ++---------------------------+--------+ +; Nominal Core Voltage ; 1.20 V ; +; Low Junction Temperature ; 0 °C ; +; High Junction Temperature ; 85 °C ; ++---------------------------+--------+ + + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Estimated Delay Added for Hold Timing ; ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+ +; Source Clock(s) ; Destination Clock(s) ; Delay Added in ns ; ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+ +; I/O ; MAIN_CLK ; 245.886 ; +; MAIN_CLK ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2],altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0],CLK33M,MAIN_CLK ; 444.109 ; +; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2],altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0],CLK33M,MAIN_CLK ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2],altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0],CLK33M,MAIN_CLK ; 1092.93 ; ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+ +Note: For more information on problematic transfers, consider running the Fitter again with the Optimize hold timing option (Settings Menu) turned off. +This will disable optimization of problematic paths and expose them for further analysis using either the TimeQuest Timing Analyzer or the Classic Timing Analyzer. + + ++-----------------+ +; Fitter Messages ; ++-----------------+ +Info: ******************************************************************* +Info: Running Quartus II Fitter + Info: Version 9.1 Build 350 03/24/2010 Service Pack 2 SJ Web Edition + Info: Processing started: Wed Dec 15 02:21:57 2010 +Info: Command: quartus_fit --read_settings_files=off --write_settings_files=off firebeei1 -c firebee1 +Info: Selected device EP3C40F484C6 for design "firebee1" +Info: Core supply voltage is 1.2V +Info: Low junction temperature is 0 degrees C +Info: High junction temperature is 85 degrees C +Info: Implemented PLL "altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|pll1" as Cyclone III PLL type + Info: Implementing clock multiplication of 1, clock division of 66, and phase shift of 0 degrees (0 ps) for altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] port + Info: Implementing clock multiplication of 67, clock division of 900, and phase shift of 0 degrees (0 ps) for altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[1] port + Info: Implementing clock multiplication of 67, clock division of 90, and phase shift of 0 degrees (0 ps) for altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[2] port +Info: None of the inputs fed by the compensated output clock of PLL "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|pll1" in Source Synchronous mode are set as the compensated input + Info: Input "nRD_DATA" that is fed by the compensated output clock of PLL "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|pll1" in Source Synchronous mode has been set as a compensated input +Warning: Implemented PLL "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|pll1" as Cyclone III PLL type, but with warnings + Warning: Can't achieve requested value multiplication of 16 for clock output altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[3] of parameter multiplication factor -- achieved value of multiplication of 109 + Warning: Can't achieve requested value division of 11 for clock output altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[3] of parameter division factor -- achieved value of division of 75 + Info: Implementing clock multiplication of 109, clock division of 1800, and phase shift of 0 degrees (0 ps) for altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] port + Info: Implementing clock multiplication of 109, clock division of 225, and phase shift of 0 degrees (0 ps) for altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] port + Info: Implementing clock multiplication of 109, clock division of 144, and phase shift of 0 degrees (0 ps) for altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] port + Info: Implementing clock multiplication of 109, clock division of 75, and phase shift of 0 degrees (0 ps) for altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[3] port +Info: None of the inputs fed by the compensated output clock of PLL "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|pll1" in Source Synchronous mode are set as the compensated input + Info: Input "MAIN_CLK" that is fed by the compensated output clock of PLL "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|pll1" in Source Synchronous mode has been set as a compensated input +Info: Implemented PLL "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|pll1" as Cyclone III PLL type + Info: Implementing clock multiplication of 4, clock division of 1, and phase shift of 240 degrees (5051 ps) for altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] port + Info: Implementing clock multiplication of 4, clock division of 1, and phase shift of 0 degrees (0 ps) for altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] port + Info: Implementing clock multiplication of 4, clock division of 1, and phase shift of 180 degrees (3788 ps) for altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] port + Info: Implementing clock multiplication of 4, clock division of 1, and phase shift of 105 degrees (2210 ps) for altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] port + Info: Implementing clock multiplication of 2, clock division of 1, and phase shift of 270 degrees (11364 ps) for altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] port +Info: Implemented PLL "altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|pll1" as Cyclone III PLL type + Info: Implementing clock multiplication of 2, clock division of 1, and phase shift of 0 degrees (0 ps) for altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] port +Critical Warning: The input clock frequency specification of PLL "altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|pll1" is different from the output clock frequency specification of the source PLLs that are driving it + Critical Warning: Input port inclk[0] of PLL "altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|pll1" and its source clk[3] (the output port of PLL "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|pll1") have different specified frequencies, 48.0 MHz and 48.0 MHz respectively +Info: Fitter is performing an Auto Fit compilation, which may decrease Fitter effort to reduce compilation time +Warning: Feature LogicLock is only available with a valid subscription license. Please purchase a software subscription to gain full access to this feature. +Info: Device migration not selected. If you intend to use device migration later, you may need to change the pin assignments as they may be incompatible with other devices + Info: Device EP3C16F484C6 is compatible + Info: Device EP3C55F484C6 is compatible + Info: Device EP3C80F484C6 is compatible +Info: Fitter converted 7 user pins into dedicated programming pins + Info: Pin ~ALTERA_ASDO_DATA1~ is reserved at location D1 + Info: Pin ~ALTERA_FLASH_nCE_nCSO~ is reserved at location E2 + Info: Pin ~ALTERA_DCLK~ is reserved at location K2 + Info: Pin ~ALTERA_DATA0~ is reserved at location K1 + Info: Pin ~ALTERA_DEV_OE~ is reserved at location N22 + Info: Pin ~ALTERA_DEV_CLRn~ is reserved at location N21 + Info: Pin ~ALTERA_nCEO~ is reserved at location K22 +Warning: Some pins have incomplete I/O assignments. Refer to the I/O Assignment Warnings report for details +Info: Design uses memory blocks. Violating setup or hold times of memory block address registers for either read or write operations could cause memory contents to be corrupted. Make sure that all memory block address registers meet the setup and hold time requirements. +Warning: The parameters of the PLL altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|pll1 and the PLL altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|pll1 do not have the same values - hence these PLLs cannot be merged + Info: The values of the parameter "M" do not match for the PLL atoms altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|pll1 and PLL altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|pll1 + Info: The value of the parameter "M" for the PLL atom altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|pll1 is 67 + Info: The value of the parameter "M" for the PLL atom altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|pll1 is 109 + Info: The values of the parameter "N" do not match for the PLL atoms altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|pll1 and PLL altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|pll1 + Info: The value of the parameter "N" for the PLL atom altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|pll1 is 6 + Info: The value of the parameter "N" for the PLL atom altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|pll1 is 3 + Info: The values of the parameter "LOOP FILTER R" do not match for the PLL atoms altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|pll1 and PLL altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|pll1 + Info: The value of the parameter "LOOP FILTER R" for the PLL atom altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|pll1 is 12000 + Info: The value of the parameter "LOOP FILTER R" for the PLL atom altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|pll1 is 10000 + Info: The values of the parameter "VCO POST SCALE" do not match for the PLL atoms altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|pll1 and PLL altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|pll1 + Info: The value of the parameter "VCO POST SCALE" for the PLL atom altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|pll1 is 2 + Info: The value of the parameter "VCO POST SCALE" for the PLL atom altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|pll1 is 1 + Info: The values of the parameter "Min VCO Period" do not match for the PLL atoms altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|pll1 and PLL altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|pll1 + Info: The value of the parameter "Min VCO Period" for the PLL atom altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|pll1 is 1538 + Info: The value of the parameter "Min VCO Period" for the PLL atom altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|pll1 is 769 + Info: The values of the parameter "Max VCO Period" do not match for the PLL atoms altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|pll1 and PLL altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|pll1 + Info: The value of the parameter "Max VCO Period" for the PLL atom altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|pll1 is 3333 + Info: The value of the parameter "Max VCO Period" for the PLL atom altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|pll1 is 1666 + Info: The values of the parameter "Center VCO Period" do not match for the PLL atoms altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|pll1 and PLL altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|pll1 + Info: The value of the parameter "Center VCO Period" for the PLL atom altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|pll1 is 1538 + Info: The value of the parameter "Center VCO Period" for the PLL atom altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|pll1 is 769 + Info: The values of the parameter "Min Lock Period" do not match for the PLL atoms altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|pll1 and PLL altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|pll1 + Info: The value of the parameter "Min Lock Period" for the PLL atom altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|pll1 is 17174 + Info: The value of the parameter "Min Lock Period" for the PLL atom altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|pll1 is 27940 + Info: The values of the parameter "Max Lock Period" do not match for the PLL atoms altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|pll1 and PLL altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|pll1 + Info: The value of the parameter "Max Lock Period" for the PLL atom altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|pll1 is 30864 + Info: The value of the parameter "Max Lock Period" for the PLL atom altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|pll1 is 59523 + Info: The values of the parameter "Compensate Clock" do not match for the PLL atoms altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|pll1 and PLL altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|pll1 + Info: The value of the parameter "Compensate Clock" for the PLL atom altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|pll1 is clock0 + Info: The value of the parameter "Compensate Clock" for the PLL atom altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|pll1 is clock1 +Warning: The input ports of the PLL altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|pll1 and the PLL altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|pll1 are mismatched, preventing the PLLs to be merged + Warning: Input clock frequency of PLL altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|pll1 differs from input clock frequency of PLL altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|pll1 +Warning: Implemented PLL "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|pll1" as Cyclone III PLL type, but with warnings + Warning: Can't achieve requested value multiplication of 16 for clock output altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[3] of parameter multiplication factor -- achieved value of multiplication of 109 + Warning: Can't achieve requested value division of 11 for clock output altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[3] of parameter division factor -- achieved value of division of 75 + Info: Implementing clock multiplication of 109, clock division of 1800, and phase shift of 0 degrees (0 ps) for altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] port + Info: Implementing clock multiplication of 109, clock division of 225, and phase shift of 0 degrees (0 ps) for altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] port + Info: Implementing clock multiplication of 109, clock division of 144, and phase shift of 0 degrees (0 ps) for altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] port + Info: Implementing clock multiplication of 109, clock division of 75, and phase shift of 0 degrees (0 ps) for altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[3] port +Info: Implemented PLL "altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|pll1" as Cyclone III PLL type + Info: Implementing clock multiplication of 2, clock division of 1, and phase shift of 0 degrees (0 ps) for altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] port +Critical Warning: Input pin "CLK33M" feeds inclk port of PLL "altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|pll1" by global clock - I/O timing will be affected +Info: Timing-driven compilation is using the Classic Timing Analyzer +Info: Detected fmax, tsu, tco, and/or tpd requirements -- optimizing circuit to achieve only the specified requirements +Info: Automatically promoted node altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] (placed in counter C1 of PLL_3) + Info: Automatically promoted destinations to use location or clock signal Global Clock CLKCTRL_G14 +Info: Automatically promoted node altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[1] (placed in counter C2 of PLL_3) + Info: Automatically promoted destinations to use location or clock signal Global Clock CLKCTRL_G12 +Info: Automatically promoted node altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[2] (placed in counter C3 of PLL_3) + Info: Automatically promoted destinations to use location or clock signal Global Clock CLKCTRL_G13 +Info: Automatically promoted node altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] (placed in counter C0 of PLL_1) + Info: Automatically promoted destinations to use location or clock signal Global Clock CLKCTRL_G3 +Info: Automatically promoted node altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] (placed in counter C3 of PLL_1) + Info: Automatically promoted destinations to use location or clock signal Global Clock CLKCTRL_G1 +Info: Automatically promoted node altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] (placed in counter C2 of PLL_1) + Info: Automatically promoted destinations to use location or clock signal Global Clock CLKCTRL_G0 +Info: Automatically promoted node altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] (placed in counter C4 of PLL_1) + Info: Automatically promoted destinations to use location or clock signal Global Clock CLKCTRL_G2 +Info: Automatically promoted node altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] (placed in counter C1 of PLL_1) + Info: Automatically promoted destinations to use location or clock signal Global Clock CLKCTRL_G4 +Info: Automatically promoted node altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] (placed in counter C1 of PLL_4) + Info: Automatically promoted destinations to use location or clock signal Global Clock CLKCTRL_G16 +Info: Automatically promoted node altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] (placed in counter C2 of PLL_4) + Info: Automatically promoted destinations to use location or clock signal Global Clock CLKCTRL_G17 +Info: Automatically promoted node altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] (placed in counter C3 of PLL_4) + Info: Automatically promoted destinations to use location or clock signal Global Clock CLKCTRL_G18 +Info: Automatically promoted node altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[3] (placed in counter C4 of PLL_4) + Info: Automatically promoted destinations to use location or clock signal Global Clock CLKCTRL_G19 +Info: Automatically promoted node altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] (placed in counter C0 of PLL_2) + Info: Automatically promoted destinations to use location or clock signal Global Clock CLKCTRL_G8 +Info: Automatically promoted node CLK33M~input (placed in PIN AB12 (CLK12, DIFFCLK_7n)) + Info: Automatically promoted destinations to use location or clock signal Global Clock CLKCTRL_G15 + Info: Following destination nodes may be non-global or may not use global or regional clocks + Info: Destination node Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~0 + Info: Destination node Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~3 + Info: Destination node Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLK17M +Info: Automatically promoted node Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK + Info: Automatically promoted destinations to use location or clock signal Global Clock + Info: Following destination nodes may be non-global or may not use global or regional clocks + Info: Destination node Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSYNC + Info: Destination node Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VSYNC +Info: Automatically promoted node inst25 + Info: Automatically promoted destinations to use location or clock signal Global Clock + Info: Following destination nodes may be non-global or may not use global or regional clocks + Info: Destination node FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|nIDE_WR~reg0 + Info: Destination node FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|nIDE_RD~reg0 + Info: Destination node FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|MFM_In + Info: Destination node FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|DTACK_OUTn + Info: Destination node FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_TX:I_USART_TRANSMIT|TDRE + Info: Destination node FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|INT_PASS[10] + Info: Destination node FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|INT_PASS[14] + Info: Destination node FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|INT_PASS[15] + Info: Destination node FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|INT_PASS[12] + Info: Destination node FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|INT_PASS[13] + Info: Non-global destination nodes limited to 10 nodes +Info: Automatically promoted node FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|CLR_FIFO + Info: Automatically promoted destinations to use location or clock signal Global Clock +Info: Automatically promoted node Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLR_FIFO + Info: Automatically promoted destinations to use location or clock signal Global Clock + Info: Following destination nodes may be non-global or may not use global or regional clocks + Info: Destination node Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CLR_FIFO_SYNC +Info: Automatically promoted node Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_9d9:wraclr|dffe20a[0] + Info: Automatically promoted destinations to use location or clock signal Global Clock + Info: Following destination nodes may be non-global or may not use global or regional clocks + Info: Destination node Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|_~0 + Info: Destination node Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|valid_wrreq~0 +Info: Automatically promoted node FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|process_8~2 + Info: Automatically promoted destinations to use location or clock signal Global Clock +Info: Following DDIO Input nodes are constrained by the Fitter to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[31]" is constrained to location LAB_X43_Y1_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[31]" is constrained to location LAB_X43_Y1_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[31]" is constrained to location LAB_X43_Y1_N0 to improve DDIO timing + Info: Node "VD[31]~input" is constrained to location IOIBUF_X43_Y0_N1 to improve DDIO timing + Info: Node "VD[31]" is constrained to location PIN U12 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[30]" is constrained to location LAB_X41_Y1_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[30]" is constrained to location LAB_X41_Y1_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[30]" is constrained to location LAB_X41_Y1_N0 to improve DDIO timing + Info: Node "VD[30]~input" is constrained to location IOIBUF_X41_Y0_N29 to improve DDIO timing + Info: Node "VD[30]" is constrained to location PIN V12 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[29]" is constrained to location LAB_X38_Y1_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[29]" is constrained to location LAB_X38_Y1_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[29]" is constrained to location LAB_X38_Y1_N0 to improve DDIO timing + Info: Node "VD[29]~input" is constrained to location IOIBUF_X38_Y0_N22 to improve DDIO timing + Info: Node "VD[29]" is constrained to location PIN AB13 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[28]" is constrained to location LAB_X43_Y1_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[28]" is constrained to location LAB_X43_Y1_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[28]" is constrained to location LAB_X43_Y1_N0 to improve DDIO timing + Info: Node "VD[28]~input" is constrained to location IOIBUF_X43_Y0_N29 to improve DDIO timing + Info: Node "VD[28]" is constrained to location PIN W13 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[27]" is constrained to location LAB_X48_Y1_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[27]" is constrained to location LAB_X48_Y1_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[27]" is constrained to location LAB_X48_Y1_N0 to improve DDIO timing + Info: Node "VD[27]~input" is constrained to location IOIBUF_X48_Y0_N29 to improve DDIO timing + Info: Node "VD[27]" is constrained to location PIN V13 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[26]" is constrained to location LAB_X38_Y1_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[26]" is constrained to location LAB_X38_Y1_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[26]" is constrained to location LAB_X38_Y1_N0 to improve DDIO timing + Info: Node "VD[26]~input" is constrained to location IOIBUF_X38_Y0_N8 to improve DDIO timing + Info: Node "VD[26]" is constrained to location PIN AB14 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[25]" is constrained to location LAB_X38_Y1_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[25]" is constrained to location LAB_X38_Y1_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[25]" is constrained to location LAB_X38_Y1_N0 to improve DDIO timing + Info: Node "VD[25]~input" is constrained to location IOIBUF_X38_Y0_N15 to improve DDIO timing + Info: Node "VD[25]" is constrained to location PIN AA14 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[24]" is constrained to location LAB_X43_Y1_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[24]" is constrained to location LAB_X43_Y1_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[24]" is constrained to location LAB_X43_Y1_N0 to improve DDIO timing + Info: Node "VD[24]~input" is constrained to location IOIBUF_X43_Y0_N8 to improve DDIO timing + Info: Node "VD[24]" is constrained to location PIN AB15 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[23]" is constrained to location LAB_X45_Y1_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[23]" is constrained to location LAB_X45_Y1_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[23]" is constrained to location LAB_X45_Y1_N0 to improve DDIO timing + Info: Node "VD[23]~input" is constrained to location IOIBUF_X45_Y0_N15 to improve DDIO timing + Info: Node "VD[23]" is constrained to location PIN AB16 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[22]" is constrained to location LAB_X48_Y1_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[22]" is constrained to location LAB_X48_Y1_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[22]" is constrained to location LAB_X48_Y1_N0 to improve DDIO timing + Info: Node "VD[22]~input" is constrained to location IOIBUF_X48_Y0_N22 to improve DDIO timing + Info: Node "VD[22]" is constrained to location PIN W14 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[21]" is constrained to location LAB_X50_Y1_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[21]" is constrained to location LAB_X50_Y1_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[21]" is constrained to location LAB_X50_Y1_N0 to improve DDIO timing + Info: Node "VD[21]~input" is constrained to location IOIBUF_X50_Y0_N1 to improve DDIO timing + Info: Node "VD[21]" is constrained to location PIN V15 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[20]" is constrained to location LAB_X50_Y1_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[20]" is constrained to location LAB_X50_Y1_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[20]" is constrained to location LAB_X50_Y1_N0 to improve DDIO timing + Info: Node "VD[20]~input" is constrained to location IOIBUF_X50_Y0_N29 to improve DDIO timing + Info: Node "VD[20]" is constrained to location PIN U13 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[19]" is constrained to location LAB_X50_Y1_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[19]" is constrained to location LAB_X50_Y1_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[19]" is constrained to location LAB_X50_Y1_N0 to improve DDIO timing + Info: Node "VD[19]~input" is constrained to location IOIBUF_X50_Y0_N22 to improve DDIO timing + Info: Node "VD[19]" is constrained to location PIN V14 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[18]" is constrained to location LAB_X38_Y1_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[18]" is constrained to location LAB_X38_Y1_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[18]" is constrained to location LAB_X38_Y1_N0 to improve DDIO timing + Info: Node "VD[18]~input" is constrained to location IOIBUF_X38_Y0_N29 to improve DDIO timing + Info: Node "VD[18]" is constrained to location PIN AA13 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[17]" is constrained to location LAB_X43_Y1_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[17]" is constrained to location LAB_X43_Y1_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[17]" is constrained to location LAB_X43_Y1_N0 to improve DDIO timing + Info: Node "VD[17]~input" is constrained to location IOIBUF_X43_Y0_N22 to improve DDIO timing + Info: Node "VD[17]" is constrained to location PIN Y13 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[16]" is constrained to location LAB_X45_Y1_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[16]" is constrained to location LAB_X45_Y1_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[16]" is constrained to location LAB_X45_Y1_N0 to improve DDIO timing + Info: Node "VD[16]~input" is constrained to location IOIBUF_X45_Y0_N8 to improve DDIO timing + Info: Node "VD[16]" is constrained to location PIN T12 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[15]" is constrained to location LAB_X66_Y15_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[15]" is constrained to location LAB_X66_Y15_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[15]" is constrained to location LAB_X66_Y15_N0 to improve DDIO timing + Info: Node "VD[15]~input" is constrained to location IOIBUF_X67_Y15_N8 to improve DDIO timing + Info: Node "VD[15]" is constrained to location PIN N20 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[14]" is constrained to location LAB_X66_Y13_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[14]" is constrained to location LAB_X66_Y13_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[14]" is constrained to location LAB_X66_Y13_N0 to improve DDIO timing + Info: Node "VD[14]~input" is constrained to location IOIBUF_X67_Y13_N8 to improve DDIO timing + Info: Node "VD[14]" is constrained to location PIN R22 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[13]" is constrained to location LAB_X66_Y14_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[13]" is constrained to location LAB_X66_Y14_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[13]" is constrained to location LAB_X66_Y14_N0 to improve DDIO timing + Info: Node "VD[13]~input" is constrained to location IOIBUF_X67_Y14_N22 to improve DDIO timing + Info: Node "VD[13]" is constrained to location PIN P20 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[12]" is constrained to location LAB_X66_Y17_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[12]" is constrained to location LAB_X66_Y17_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[12]" is constrained to location LAB_X66_Y17_N0 to improve DDIO timing + Info: Node "VD[12]~input" is constrained to location IOIBUF_X67_Y17_N22 to improve DDIO timing + Info: Node "VD[12]" is constrained to location PIN N17 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[11]" is constrained to location LAB_X66_Y13_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[11]" is constrained to location LAB_X66_Y13_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[11]" is constrained to location LAB_X66_Y13_N0 to improve DDIO timing + Info: Node "VD[11]~input" is constrained to location IOIBUF_X67_Y13_N1 to improve DDIO timing + Info: Node "VD[11]" is constrained to location PIN R21 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[10]" is constrained to location LAB_X66_Y10_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[10]" is constrained to location LAB_X66_Y10_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[10]" is constrained to location LAB_X66_Y10_N0 to improve DDIO timing + Info: Node "VD[10]~input" is constrained to location IOIBUF_X67_Y10_N15 to improve DDIO timing + Info: Node "VD[10]" is constrained to location PIN P17 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[9]" is constrained to location LAB_X66_Y12_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[9]" is constrained to location LAB_X66_Y12_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[9]" is constrained to location LAB_X66_Y12_N0 to improve DDIO timing + Info: Node "VD[9]~input" is constrained to location IOIBUF_X67_Y12_N22 to improve DDIO timing + Info: Node "VD[9]" is constrained to location PIN R18 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[8]" is constrained to location LAB_X66_Y10_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[8]" is constrained to location LAB_X66_Y10_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[8]" is constrained to location LAB_X66_Y10_N0 to improve DDIO timing + Info: Node "VD[8]~input" is constrained to location IOIBUF_X67_Y10_N8 to improve DDIO timing + Info: Node "VD[8]" is constrained to location PIN V22 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[7]" is constrained to location LAB_X66_Y11_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[7]" is constrained to location LAB_X66_Y11_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[7]" is constrained to location LAB_X66_Y11_N0 to improve DDIO timing + Info: Node "VD[7]~input" is constrained to location IOIBUF_X67_Y11_N1 to improve DDIO timing + Info: Node "VD[7]" is constrained to location PIN U21 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[6]" is constrained to location LAB_X66_Y12_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[6]" is constrained to location LAB_X66_Y12_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[6]" is constrained to location LAB_X66_Y12_N0 to improve DDIO timing + Info: Node "VD[6]~input" is constrained to location IOIBUF_X67_Y12_N15 to improve DDIO timing + Info: Node "VD[6]" is constrained to location PIN R19 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[5]" is constrained to location LAB_X66_Y10_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[5]" is constrained to location LAB_X66_Y10_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[5]" is constrained to location LAB_X66_Y10_N0 to improve DDIO timing + Info: Node "VD[5]~input" is constrained to location IOIBUF_X67_Y10_N22 to improve DDIO timing + Info: Node "VD[5]" is constrained to location PIN R17 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[4]" is constrained to location LAB_X66_Y14_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[4]" is constrained to location LAB_X66_Y14_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[4]" is constrained to location LAB_X66_Y14_N0 to improve DDIO timing + Info: Node "VD[4]~input" is constrained to location IOIBUF_X67_Y14_N1 to improve DDIO timing + Info: Node "VD[4]" is constrained to location PIN P21 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[3]" is constrained to location LAB_X66_Y11_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[3]" is constrained to location LAB_X66_Y11_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[3]" is constrained to location LAB_X66_Y11_N0 to improve DDIO timing + Info: Node "VD[3]~input" is constrained to location IOIBUF_X67_Y11_N22 to improve DDIO timing + Info: Node "VD[3]" is constrained to location PIN R20 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[2]" is constrained to location LAB_X66_Y14_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[2]" is constrained to location LAB_X66_Y14_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[2]" is constrained to location LAB_X66_Y14_N0 to improve DDIO timing + Info: Node "VD[2]~input" is constrained to location IOIBUF_X67_Y14_N8 to improve DDIO timing + Info: Node "VD[2]" is constrained to location PIN P22 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[1]" is constrained to location LAB_X66_Y18_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[1]" is constrained to location LAB_X66_Y18_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[1]" is constrained to location LAB_X66_Y18_N0 to improve DDIO timing + Info: Node "VD[1]~input" is constrained to location IOIBUF_X67_Y18_N1 to improve DDIO timing + Info: Node "VD[1]" is constrained to location PIN M21 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[0]" is constrained to location LAB_X66_Y18_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[0]" is constrained to location LAB_X66_Y18_N0 to improve DDIO timing + Info: Node "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[0]" is constrained to location LAB_X66_Y18_N0 to improve DDIO timing + Info: Node "VD[0]~input" is constrained to location IOIBUF_X67_Y18_N8 to improve DDIO timing + Info: Node "VD[0]" is constrained to location PIN M22 to improve DDIO timing +Info: Starting register packing +Extra Info: Performing register packing on registers with non-logic cell location assignments +Extra Info: Completed register packing on registers with non-logic cell location assignments +Extra Info: Started Fast Input/Output/OE register processing +Warning: Can't pack node Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|MCS[0] to I/O pin + Warning: Can't pack node Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|MCS[0] and I/O node MAIN_CLK -- I/O node is a dedicated I/O pin +Extra Info: Finished Fast Input/Output/OE register processing +Extra Info: Moving registers into I/O cells, Multiplier Blocks, and RAM blocks to improve timing and density +Extra Info: Finished moving registers into I/O cells, Multiplier Blocks, and RAM blocks +Info: Finished register packing + Extra Info: Packed 33 registers into blocks of type I/O Input Buffer + Extra Info: Packed 25 registers into blocks of type I/O Output Buffer + Extra Info: Created 9 register duplicates +Warning: PLL "altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|pll1" in Source Synchronous mode with compensated output clock set to clk[0] is not fully compensated because it does not feed an I/O input register +Warning: PLL "altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|pll1" input clock inclk[0] is not fully compensated and may have reduced jitter performance because it is fed by a non-dedicated input + Info: Input port INCLK[0] of node "altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|pll1" is driven by CLK33M~inputclkctrl which is OUTCLK output port of Clock control block type node CLK33M~inputclkctrl +Warning: PLL "altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|pll1" output port clk[2] feeds output pin "CLK24M576~output" via non-dedicated routing -- jitter performance depends on switching rate of other design elements. Use PLL dedicated clock outputs to ensure jitter performance +Warning: PLL "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|pll1" output port clk[2] feeds output pin "CLK25M~output" via non-dedicated routing -- jitter performance depends on switching rate of other design elements. Use PLL dedicated clock outputs to ensure jitter performance +Warning: PLL "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|pll1" output port clk[3] feeds output pin "CLKUSB~output" via non-dedicated routing -- jitter performance depends on switching rate of other design elements. Use PLL dedicated clock outputs to ensure jitter performance +Warning: PLL "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|pll1" output port clk[0] feeds output pin "VDQS[3]~output" via non-dedicated routing -- jitter performance depends on switching rate of other design elements. Use PLL dedicated clock outputs to ensure jitter performance +Warning: PLL "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|pll1" output port clk[0] feeds output pin "VDQS[2]~output" via non-dedicated routing -- jitter performance depends on switching rate of other design elements. Use PLL dedicated clock outputs to ensure jitter performance +Warning: PLL "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|pll1" output port clk[0] feeds output pin "VDQS[1]~output" via non-dedicated routing -- jitter performance depends on switching rate of other design elements. Use PLL dedicated clock outputs to ensure jitter performance +Warning: PLL "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|pll1" output port clk[0] feeds output pin "VDQS[0]~output" via non-dedicated routing -- jitter performance depends on switching rate of other design elements. Use PLL dedicated clock outputs to ensure jitter performance +Warning: PLL "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|pll1" output port clk[0] feeds output pin "nDDR_CLK~output" via non-dedicated routing -- jitter performance depends on switching rate of other design elements. Use PLL dedicated clock outputs to ensure jitter performance +Warning: PLL "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|pll1" output port clk[0] feeds output pin "DDR_CLK~output" via non-dedicated routing -- jitter performance depends on switching rate of other design elements. Use PLL dedicated clock outputs to ensure jitter performance +Warning: PLL "altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|pll1" input clock inclk[0] is not fully compensated and may have reduced jitter performance because it is fed by a non-dedicated input + Info: Input port INCLK[0] of node "altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|pll1" is driven by altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[3]~clkctrl which is OUTCLK output port of Clock control block type node altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[3]~clkctrl +Info: Starting physical synthesis optimizations for speed +Info: Starting physical synthesis algorithm combinational resynthesis using boolean division +Info: Physical synthesis algorithm combinational resynthesis using boolean division complete: estimated slack improvement of 2208 ps +Info: Physical synthesis optimizations for speed complete: elapsed CPU time is 00:00:23 +Info: Fitter preparation operations ending: elapsed time is 00:00:47 +Info: Fitter placement preparation operations beginning +Info: Fitter placement preparation operations ending: elapsed time is 00:00:18 +Info: Fitter placement operations beginning +Info: Fitter placement was successful +Info: Fitter placement operations ending: elapsed time is 00:01:10 +Info: Starting physical synthesis optimizations for speed +Info: Physical synthesis optimizations for speed complete: elapsed CPU time is 00:00:05 +Info: Estimated most critical path is register to pin delay of 5.130 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = LAB_X15_Y12_N0; Fanout = 3; REG Node = 'interrupt_handler:nobody|INT_LATCH[9]' + Info: 2: + IC(0.161 ns) + CELL(0.369 ns) = 0.530 ns; Loc. = LAB_X16_Y12_N0; Fanout = 1; COMB Node = 'FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[29]~359_RESYN14_BDD15' + Info: 3: + IC(0.528 ns) + CELL(0.243 ns) = 1.301 ns; Loc. = LAB_X17_Y13_N0; Fanout = 1; COMB Node = 'FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[29]~359' + Info: 4: + IC(0.172 ns) + CELL(0.130 ns) = 1.603 ns; Loc. = LAB_X17_Y13_N0; Fanout = 1; COMB Node = 'FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[29]~360' + Info: 5: + IC(1.521 ns) + CELL(2.006 ns) = 5.130 ns; Loc. = IOOBUF_X34_Y0_N23; Fanout = 1; COMB Node = 'FB_AD[29]~output' + Info: 6: + IC(0.000 ns) + CELL(0.000 ns) = 5.130 ns; Loc. = PIN_W10; Fanout = 0; PIN Node = 'FB_AD[29]' + Info: Total cell delay = 2.748 ns ( 53.57 % ) + Info: Total interconnect delay = 2.382 ns ( 46.43 % ) +Info: Fitter routing operations beginning +Info: 2 (of 32134) connections in the design require a large routing delay to satisfy hold requirements. Refer to the Fitter report for a summary of the relevant clock transfers. Also, check the circuit's timing constraints and clocking methodology, especially multicycles and gated clocks. +Info: Average interconnect usage is 13% of the available device resources + Info: Peak interconnect usage is 51% of the available device resources in the region that extends from location X22_Y11 to location X33_Y21 +Info: Fitter routing operations ending: elapsed time is 00:01:18 +Info: The Fitter performed an Auto Fit compilation. Optimizations were skipped to reduce compilation time. + Info: Optimizations that may affect the design's routability were skipped +Info: Started post-fitting delay annotation +Info: Delay annotation completed successfully +Info: Auto delay chain can't change the delay chain setting on I/O pin nRD_DATA since it's a PLL compensated pin +Warning: PLL "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|pll1" in Source Synchronous mode with compensated output clock set to clk[0] is not fully compensated because it does not feed an I/O input register +Warning: Found invalid Fitter assignments. See the Ignored Assignments panel in the Fitter Compilation Report for more information. +Warning: Total number of single-ended output or bi-directional pins in bank 4 have exceeded the recommended amount in a bank where dedicated LVDS, RSDS, or mini-LVDS outputs exists. Refer to the pad placement and DC guidelines section in the Cyclone III Device I/O Features chapter of the Cyclone III Device Handbook for details on this condition. + Info: There are 32 output pin(s) with I/O standard 2.5 V and current strength 12mA + Info: Location AA13 (pad PAD_208): Pin VD[18] of type bi-directional uses 2.5 V I/O standard + Info: Location AB13 (pad PAD_209): Pin VD[29] of type bi-directional uses 2.5 V I/O standard + Info: Location AA14 (pad PAD_210): Pin VD[25] of type bi-directional uses 2.5 V I/O standard + Info: Location AB14 (pad PAD_211): Pin VD[26] of type bi-directional uses 2.5 V I/O standard + Info: Location V12 (pad PAD_213): Pin VD[30] of type bi-directional uses 2.5 V I/O standard + Info: Location W13 (pad PAD_218): Pin VD[28] of type bi-directional uses 2.5 V I/O standard + Info: Location Y13 (pad PAD_219): Pin VD[17] of type bi-directional uses 2.5 V I/O standard + Info: Location AA15 (pad PAD_220): Pin VDQS[0] of type bi-directional uses 2.5 V I/O standard + Info: Location AB15 (pad PAD_221): Pin VD[24] of type bi-directional uses 2.5 V I/O standard + Info: Location U12 (pad PAD_222): Pin VD[31] of type bi-directional uses 2.5 V I/O standard + Info: Location AA16 (pad PAD_224): Pin VDM[0] of type output uses 2.5 V I/O standard + Info: Location AB16 (pad PAD_225): Pin VD[23] of type bi-directional uses 2.5 V I/O standard + Info: Location T12 (pad PAD_226): Pin VD[16] of type bi-directional uses 2.5 V I/O standard + Info: Location V13 (pad PAD_228): Pin VD[27] of type bi-directional uses 2.5 V I/O standard + Info: Location W14 (pad PAD_229): Pin VD[22] of type bi-directional uses 2.5 V I/O standard + Info: Location U13 (pad PAD_233): Pin VD[20] of type bi-directional uses 2.5 V I/O standard + Info: Location V14 (pad PAD_234): Pin VD[19] of type bi-directional uses 2.5 V I/O standard + Info: Location U15 (pad PAD_236): Pin VCKE of type output uses 2.5 V I/O standard + Info: Location V15 (pad PAD_237): Pin VD[21] of type bi-directional uses 2.5 V I/O standard + Info: Location W15 (pad PAD_239): Pin VDQS[1] of type bi-directional uses 2.5 V I/O standard + Info: Location AB18 (pad PAD_242): Pin nVCAS of type output uses 2.5 V I/O standard + Info: Location AA17 (pad PAD_243): Pin nDDR_CLK of type output uses 2.5 V I/O standard + Info: Location AB17 (pad PAD_244): Pin DDR_CLK of type output uses 2.5 V I/O standard + Info: Location AA18 (pad PAD_245): Pin VA[12] of type output uses 2.5 V I/O standard + Info: Location AA19 (pad PAD_252): Pin BA[1] of type output uses 2.5 V I/O standard + Info: Location AB19 (pad PAD_253): Pin VA[9] of type output uses 2.5 V I/O standard + Info: Location W17 (pad PAD_257): Pin nVRAS of type output uses 2.5 V I/O standard + Info: Location Y17 (pad PAD_258): Pin nVWE of type output uses 2.5 V I/O standard + Info: Location AA20 (pad PAD_259): Pin VA[7] of type output uses 2.5 V I/O standard + Info: Location AB20 (pad PAD_260): Pin VA[8] of type output uses 2.5 V I/O standard + Info: Location V16 (pad PAD_261): Pin VDM[1] of type output uses 2.5 V I/O standard + Info: Location T16 (pad PAD_266): Pin VDQS[3] of type bi-directional uses 2.5 V I/O standard +Warning: Total number of single-ended output or bi-directional pins in bank 5 have exceeded the recommended amount in a bank where dedicated LVDS, RSDS, or mini-LVDS outputs exists. Refer to the pad placement and DC guidelines section in the Cyclone III Device I/O Features chapter of the Cyclone III Device Handbook for details on this condition. + Info: There are 30 output pin(s) with I/O standard 2.5 V and current strength 12mA + Info: Location AA22 (pad PAD_273): Pin VA[4] of type output uses 2.5 V I/O standard + Info: Location AA21 (pad PAD_274): Pin VA[6] of type output uses 2.5 V I/O standard + Info: Location T17 (pad PAD_277): Pin VDM[3] of type output uses 2.5 V I/O standard + Info: Location T18 (pad PAD_278): Pin nVCS of type output uses 2.5 V I/O standard + Info: Location W20 (pad PAD_280): Pin VA[0] of type output uses 2.5 V I/O standard + Info: Location W19 (pad PAD_285): Pin BA[0] of type output uses 2.5 V I/O standard + Info: Location Y22 (pad PAD_288): Pin VA[3] of type output uses 2.5 V I/O standard + Info: Location Y21 (pad PAD_289): Pin VA[5] of type output uses 2.5 V I/O standard + Info: Location U20 (pad PAD_290): Pin VDM[2] of type output uses 2.5 V I/O standard + Info: Location U19 (pad PAD_291): Pin VA[11] of type output uses 2.5 V I/O standard + Info: Location W22 (pad PAD_292): Pin VA[1] of type output uses 2.5 V I/O standard + Info: Location W21 (pad PAD_293): Pin VA[2] of type output uses 2.5 V I/O standard + Info: Location R17 (pad PAD_301): Pin VD[5] of type bi-directional uses 2.5 V I/O standard + Info: Location P17 (pad PAD_302): Pin VD[10] of type bi-directional uses 2.5 V I/O standard + Info: Location V22 (pad PAD_303): Pin VD[8] of type bi-directional uses 2.5 V I/O standard + Info: Location V21 (pad PAD_304): Pin VA[10] of type output uses 2.5 V I/O standard + Info: Location R20 (pad PAD_305): Pin VD[3] of type bi-directional uses 2.5 V I/O standard + Info: Location U22 (pad PAD_307): Pin VDQS[2] of type bi-directional uses 2.5 V I/O standard + Info: Location U21 (pad PAD_308): Pin VD[7] of type bi-directional uses 2.5 V I/O standard + Info: Location R18 (pad PAD_309): Pin VD[9] of type bi-directional uses 2.5 V I/O standard + Info: Location R19 (pad PAD_310): Pin VD[6] of type bi-directional uses 2.5 V I/O standard + Info: Location R22 (pad PAD_315): Pin VD[14] of type bi-directional uses 2.5 V I/O standard + Info: Location R21 (pad PAD_316): Pin VD[11] of type bi-directional uses 2.5 V I/O standard + Info: Location P20 (pad PAD_317): Pin VD[13] of type bi-directional uses 2.5 V I/O standard + Info: Location P22 (pad PAD_319): Pin VD[2] of type bi-directional uses 2.5 V I/O standard + Info: Location P21 (pad PAD_320): Pin VD[4] of type bi-directional uses 2.5 V I/O standard + Info: Location N20 (pad PAD_323): Pin VD[15] of type bi-directional uses 2.5 V I/O standard + Info: Location N17 (pad PAD_329): Pin VD[12] of type bi-directional uses 2.5 V I/O standard + Info: Location M22 (pad PAD_333): Pin VD[0] of type bi-directional uses 2.5 V I/O standard + Info: Location M21 (pad PAD_334): Pin VD[1] of type bi-directional uses 2.5 V I/O standard +Warning: 145 pins must meet Altera requirements for 3.3, 3.0, and 2.5-V interfaces. Refer to the device Application Note 447 (Interfacing Cyclone III Devices with 3.3/3.0/2.5-V LVTTL/LVCMOS I/O Systems). + Info: Pin nFB_BURST uses I/O standard 3.3-V LVTTL at T3 + Info: Pin nACSI_DRQ uses I/O standard 3.3-V LVTTL at K7 + Info: Pin nACSI_INT uses I/O standard 3.3-V LVTTL at J4 + Info: Pin nSCSI_DRQ uses I/O standard 3.3-V LVTTL at U1 + Info: Pin nSCSI_MSG uses I/O standard 3.3-V LVTTL at H2 + Info: Pin nDCHG uses I/O standard 3.3-V LVTTL at C17 + Info: Pin SD_DATA0 uses I/O standard 3.3-V LVTTL at B16 + Info: Pin SD_DATA1 uses I/O standard 3.3-V LVTTL at A16 + Info: Pin SD_DATA2 uses I/O standard 3.3-V LVTTL at B17 + Info: Pin SD_CARD_DEDECT uses I/O standard 3.3-V LVTTL at M20 + Info: Pin SD_WP uses I/O standard 3.3-V LVTTL at M19 + Info: Pin nDACK0 uses I/O standard 3.3-V LVTTL at B12 + Info: Pin WP_CF_CARD uses I/O standard 3.3-V LVTTL at T1 + Info: Pin nSCSI_C_D uses I/O standard 3.3-V LVTTL at H1 + Info: Pin nSCSI_I_O uses I/O standard 3.3-V LVTTL at J3 + Info: Pin nFB_CS3 uses I/O standard 3.3-V LVTTL at V6 + Info: Pin TOUT0 uses I/O standard 3.3-V LVTTL at T22 + Info: Pin nMASTER uses I/O standard 3.3-V LVTTL at T21 + Info: Pin FB_AD[31] uses I/O standard 3.3-V LVTTL at AA10 + Info: Pin FB_AD[30] uses I/O standard 3.3-V LVTTL at Y10 + Info: Pin FB_AD[29] uses I/O standard 3.3-V LVTTL at W10 + Info: Pin FB_AD[28] uses I/O standard 3.3-V LVTTL at V11 + Info: Pin FB_AD[27] uses I/O standard 3.3-V LVTTL at U11 + Info: Pin FB_AD[26] uses I/O standard 3.3-V LVTTL at AB9 + Info: Pin FB_AD[25] uses I/O standard 3.3-V LVTTL at AA9 + Info: Pin FB_AD[24] uses I/O standard 3.3-V LVTTL at T11 + Info: Pin FB_AD[23] uses I/O standard 3.3-V LVTTL at AB8 + Info: Pin FB_AD[22] uses I/O standard 3.3-V LVTTL at AA8 + Info: Pin FB_AD[21] uses I/O standard 3.3-V LVTTL at U10 + Info: Pin FB_AD[20] uses I/O standard 3.3-V LVTTL at T10 + Info: Pin FB_AD[19] uses I/O standard 3.3-V LVTTL at V10 + Info: Pin FB_AD[18] uses I/O standard 3.3-V LVTTL at V9 + Info: Pin FB_AD[17] uses I/O standard 3.3-V LVTTL at Y8 + Info: Pin FB_AD[16] uses I/O standard 3.3-V LVTTL at AB7 + Info: Pin FB_AD[15] uses I/O standard 3.3-V LVTTL at AA7 + Info: Pin FB_AD[14] uses I/O standard 3.3-V LVTTL at W8 + Info: Pin FB_AD[13] uses I/O standard 3.3-V LVTTL at V8 + Info: Pin FB_AD[12] uses I/O standard 3.3-V LVTTL at U9 + Info: Pin FB_AD[11] uses I/O standard 3.3-V LVTTL at Y7 + Info: Pin FB_AD[10] uses I/O standard 3.3-V LVTTL at W7 + Info: Pin FB_AD[9] uses I/O standard 3.3-V LVTTL at AB5 + Info: Pin FB_AD[8] uses I/O standard 3.3-V LVTTL at AA5 + Info: Pin FB_AD[7] uses I/O standard 3.3-V LVTTL at AB4 + Info: Pin FB_AD[6] uses I/O standard 3.3-V LVTTL at AA4 + Info: Pin FB_AD[5] uses I/O standard 3.3-V LVTTL at V7 + Info: Pin FB_AD[4] uses I/O standard 3.3-V LVTTL at W6 + Info: Pin FB_AD[3] uses I/O standard 3.3-V LVTTL at AB3 + Info: Pin FB_AD[2] uses I/O standard 3.3-V LVTTL at AA3 + Info: Pin FB_AD[1] uses I/O standard 3.3-V LVTTL at Y6 + Info: Pin FB_AD[0] uses I/O standard 3.3-V LVTTL at Y3 + Info: Pin IO[17] uses I/O standard 3.3-V LVTTL at B13 + Info: Pin IO[16] uses I/O standard 3.3-V LVTTL at A13 + Info: Pin IO[15] uses I/O standard 3.3-V LVTTL at B14 + Info: Pin IO[14] uses I/O standard 3.3-V LVTTL at A14 + Info: Pin IO[13] uses I/O standard 3.3-V LVTTL at E13 + Info: Pin IO[12] uses I/O standard 3.3-V LVTTL at D13 + Info: Pin IO[11] uses I/O standard 3.3-V LVTTL at C13 + Info: Pin IO[10] uses I/O standard 3.3-V LVTTL at B15 + Info: Pin IO[9] uses I/O standard 3.3-V LVTTL at A15 + Info: Pin IO[8] uses I/O standard 3.3-V LVTTL at G10 + Info: Pin IO[7] uses I/O standard 3.3-V LVTTL at C7 + Info: Pin IO[6] uses I/O standard 3.3-V LVTTL at C8 + Info: Pin IO[5] uses I/O standard 3.3-V LVTTL at E9 + Info: Pin IO[4] uses I/O standard 3.3-V LVTTL at B6 + Info: Pin IO[3] uses I/O standard 3.3-V LVTTL at A6 + Info: Pin IO[2] uses I/O standard 3.3-V LVTTL at B7 + Info: Pin IO[1] uses I/O standard 3.3-V LVTTL at A7 + Info: Pin IO[0] uses I/O standard 3.3-V LVTTL at A8 + Info: Pin SRD[15] uses I/O standard 3.3-V LVTTL at H10 + Info: Pin SRD[14] uses I/O standard 3.3-V LVTTL at G9 + Info: Pin SRD[13] uses I/O standard 3.3-V LVTTL at F10 + Info: Pin SRD[12] uses I/O standard 3.3-V LVTTL at D10 + Info: Pin SRD[11] uses I/O standard 3.3-V LVTTL at B10 + Info: Pin SRD[10] uses I/O standard 3.3-V LVTTL at A9 + Info: Pin SRD[9] uses I/O standard 3.3-V LVTTL at A10 + Info: Pin SRD[8] uses I/O standard 3.3-V LVTTL at B9 + Info: Pin SRD[7] uses I/O standard 3.3-V LVTTL at H11 + Info: Pin SRD[6] uses I/O standard 3.3-V LVTTL at E10 + Info: Pin SRD[5] uses I/O standard 3.3-V LVTTL at F9 + Info: Pin SRD[4] uses I/O standard 3.3-V LVTTL at C10 + Info: Pin SRD[3] uses I/O standard 3.3-V LVTTL at G11 + Info: Pin SRD[2] uses I/O standard 3.3-V LVTTL at C6 + Info: Pin SRD[1] uses I/O standard 3.3-V LVTTL at A5 + Info: Pin SRD[0] uses I/O standard 3.3-V LVTTL at B5 + Info: Pin SCSI_PAR uses I/O standard 3.3-V LVTTL at M7 + Info: Pin nSCSI_SEL uses I/O standard 3.3-V LVTTL at M8 + Info: Pin nSCSI_BUSY uses I/O standard 3.3-V LVTTL at N8 + Info: Pin nSCSI_RST uses I/O standard 3.3-V LVTTL at N6 + Info: Pin SD_CD_DATA3 uses I/O standard 3.3-V LVTTL at F13 + Info: Pin SD_CMD_D1 uses I/O standard 3.3-V LVTTL at E14 + Info: Pin ACSI_D[7] uses I/O standard 3.3-V LVTTL at H6 + Info: Pin ACSI_D[6] uses I/O standard 3.3-V LVTTL at H7 + Info: Pin ACSI_D[5] uses I/O standard 3.3-V LVTTL at D2 + Info: Pin ACSI_D[4] uses I/O standard 3.3-V LVTTL at C1 + Info: Pin ACSI_D[3] uses I/O standard 3.3-V LVTTL at C2 + Info: Pin ACSI_D[2] uses I/O standard 3.3-V LVTTL at E3 + Info: Pin ACSI_D[1] uses I/O standard 3.3-V LVTTL at G5 + Info: Pin ACSI_D[0] uses I/O standard 3.3-V LVTTL at B1 + Info: Pin LP_D[7] uses I/O standard 3.3-V LVTTL at G8 + Info: Pin LP_D[6] uses I/O standard 3.3-V LVTTL at A3 + Info: Pin LP_D[5] uses I/O standard 3.3-V LVTTL at B3 + Info: Pin LP_D[4] uses I/O standard 3.3-V LVTTL at D6 + Info: Pin LP_D[3] uses I/O standard 3.3-V LVTTL at E7 + Info: Pin LP_D[2] uses I/O standard 3.3-V LVTTL at C3 + Info: Pin LP_D[1] uses I/O standard 3.3-V LVTTL at C4 + Info: Pin LP_D[0] uses I/O standard 3.3-V LVTTL at F7 + Info: Pin SCSI_D[7] uses I/O standard 3.3-V LVTTL at K8 + Info: Pin SCSI_D[6] uses I/O standard 3.3-V LVTTL at L8 + Info: Pin SCSI_D[5] uses I/O standard 3.3-V LVTTL at G3 + Info: Pin SCSI_D[4] uses I/O standard 3.3-V LVTTL at G4 + Info: Pin SCSI_D[3] uses I/O standard 3.3-V LVTTL at F1 + Info: Pin SCSI_D[2] uses I/O standard 3.3-V LVTTL at F2 + Info: Pin SCSI_D[1] uses I/O standard 3.3-V LVTTL at E1 + Info: Pin SCSI_D[0] uses I/O standard 3.3-V LVTTL at J6 + Info: Pin nRSTO_MCF uses I/O standard 3.3-V LVTTL at B11 + Info: Pin nFB_WR uses I/O standard 3.3-V LVTTL at T5 + Info: Pin nFB_CS1 uses I/O standard 3.3-V LVTTL at T8 + Info: Pin FB_SIZE1 uses I/O standard 3.3-V LVTTL at Y4 + Info: Pin FB_SIZE0 uses I/O standard 3.3-V LVTTL at U8 + Info: Pin FB_ALE uses I/O standard 3.3-V LVTTL at R7 + Info: Pin nFB_CS2 uses I/O standard 3.3-V LVTTL at T9 + Info: Pin MAIN_CLK uses I/O standard 3.3-V LVTTL at G2 + Info: Pin nDACK1 uses I/O standard 3.3-V LVTTL at A12 + Info: Pin nFB_OE uses I/O standard 3.3-V LVTTL at R6 + Info: Pin IDE_RDY uses I/O standard 3.3-V LVTTL at Y1 + Info: Pin CLK33M uses I/O standard 3.3-V LVTTL at AB12 + Info: Pin HD_DD uses I/O standard 3.3-V LVTTL at F16 + Info: Pin nINDEX uses I/O standard 3.3-V LVTTL at E16 + Info: Pin RxD uses I/O standard 3.3-V LVTTL at H15 + Info: Pin nWP uses I/O standard 3.3-V LVTTL at D19 + Info: Pin LP_BUSY uses I/O standard 3.3-V LVTTL at G7 + Info: Pin DCD uses I/O standard 3.3-V LVTTL at A19 + Info: Pin CTS uses I/O standard 3.3-V LVTTL at H14 + Info: Pin TRACK00 uses I/O standard 3.3-V LVTTL at C19 + Info: Pin RI uses I/O standard 3.3-V LVTTL at B19 + Info: Pin nPCI_INTD uses I/O standard 3.3-V LVTTL at P6 + Info: Pin nPCI_INTC uses I/O standard 3.3-V LVTTL at V3 + Info: Pin nPCI_INTB uses I/O standard 3.3-V LVTTL at V4 + Info: Pin nPCI_INTA uses I/O standard 3.3-V LVTTL at AA1 + Info: Pin DVI_INT uses I/O standard 3.3-V LVTTL at A11 + Info: Pin PIC_INT uses I/O standard 3.3-V LVTTL at AA2 + Info: Pin PIC_AMKB_RX uses I/O standard 3.3-V LVTTL at L7 + Info: Pin MIDI_IN uses I/O standard 3.3-V LVTTL at E12 + Info: Pin nRD_DATA uses I/O standard 3.3-V LVTTL at A20 + Info: Pin AMKB_RX uses I/O standard 3.3-V LVTTL at Y2 +Warning: Following 40 pins have no output enable or a GND or VCC output enable - later changes to this connectivity may change fitting results + Info: Pin IO[17] has a permanently enabled output enable + Info: Pin IO[16] has a permanently enabled output enable + Info: Pin IO[15] has a permanently enabled output enable + Info: Pin IO[14] has a permanently enabled output enable + Info: Pin IO[13] has a permanently enabled output enable + Info: Pin IO[12] has a permanently enabled output enable + Info: Pin IO[11] has a permanently enabled output enable + Info: Pin IO[10] has a permanently enabled output enable + Info: Pin IO[9] has a permanently enabled output enable + Info: Pin IO[8] has a permanently enabled output enable + Info: Pin IO[7] has a permanently enabled output enable + Info: Pin IO[6] has a permanently enabled output enable + Info: Pin IO[5] has a permanently enabled output enable + Info: Pin IO[4] has a permanently enabled output enable + Info: Pin IO[3] has a permanently enabled output enable + Info: Pin IO[2] has a permanently enabled output enable + Info: Pin IO[1] has a permanently enabled output enable + Info: Pin IO[0] has a permanently enabled output enable + Info: Pin SCSI_PAR has a permanently disabled output enable + Info: Pin nSCSI_SEL has a permanently enabled output enable + Info: Pin nSCSI_BUSY has a permanently enabled output enable + Info: Pin nSCSI_RST has a permanently disabled output enable + Info: Pin SD_CD_DATA3 has a permanently disabled output enable + Info: Pin SD_CMD_D1 has a permanently disabled output enable + Info: Pin ACSI_D[7] has a permanently disabled output enable + Info: Pin ACSI_D[6] has a permanently disabled output enable + Info: Pin ACSI_D[5] has a permanently disabled output enable + Info: Pin ACSI_D[4] has a permanently disabled output enable + Info: Pin ACSI_D[3] has a permanently disabled output enable + Info: Pin ACSI_D[2] has a permanently disabled output enable + Info: Pin ACSI_D[1] has a permanently disabled output enable + Info: Pin ACSI_D[0] has a permanently disabled output enable + Info: Pin SCSI_D[7] has a permanently disabled output enable + Info: Pin SCSI_D[6] has a permanently disabled output enable + Info: Pin SCSI_D[5] has a permanently disabled output enable + Info: Pin SCSI_D[4] has a permanently disabled output enable + Info: Pin SCSI_D[3] has a permanently disabled output enable + Info: Pin SCSI_D[2] has a permanently disabled output enable + Info: Pin SCSI_D[1] has a permanently disabled output enable + Info: Pin SCSI_D[0] has a permanently disabled output enable +Info: Quartus II Fitter was successful. 0 errors, 34 warnings + Info: Peak virtual memory: 334 megabytes + Info: Processing ended: Wed Dec 15 02:25:07 2010 + Info: Elapsed time: 00:03:10 + Info: Total CPU time (on all processors): 00:03:11 + + diff --git a/FPGA_quartus/firebee1.fit.summary b/FPGA_quartus/firebee1.fit.summary new file mode 100644 index 0000000..f177099 --- /dev/null +++ b/FPGA_quartus/firebee1.fit.summary @@ -0,0 +1,16 @@ +Fitter Status : Successful - Wed Dec 15 02:25:02 2010 +Quartus II Version : 9.1 Build 350 03/24/2010 SP 2 SJ Web Edition +Revision Name : firebee1 +Top-level Entity Name : firebee1 +Family : Cyclone III +Device : EP3C40F484C6 +Timing Models : Final +Total logic elements : 9,526 / 39,600 ( 24 % ) + Total combinational functions : 8,061 / 39,600 ( 20 % ) + Dedicated logic registers : 4,563 / 39,600 ( 12 % ) +Total registers : 4749 +Total pins : 295 / 332 ( 89 % ) +Total virtual pins : 0 +Total memory bits : 109,344 / 1,161,216 ( 9 % ) +Embedded Multiplier 9-bit elements : 6 / 252 ( 2 % ) +Total PLLs : 4 / 4 ( 100 % ) diff --git a/FPGA_quartus/firebee1.flow.rpt b/FPGA_quartus/firebee1.flow.rpt new file mode 100644 index 0000000..297d7a0 --- /dev/null +++ b/FPGA_quartus/firebee1.flow.rpt @@ -0,0 +1,380 @@ +Flow report for firebee1 +Wed Dec 15 02:25:22 2010 +Quartus II Version 9.1 Build 350 03/24/2010 Service Pack 2 SJ Web Edition + + +--------------------- +; Table of Contents ; +--------------------- + 1. Legal Notice + 2. Flow Summary + 3. Flow Settings + 4. Flow Non-Default Global Settings + 5. Flow Elapsed Time + 6. Flow OS Summary + 7. Flow Log + + + +---------------- +; Legal Notice ; +---------------- +Copyright (C) 1991-2010 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. + + + ++-----------------------------------------------------------------------------------+ +; Flow Summary ; ++------------------------------------+----------------------------------------------+ +; Flow Status ; Successful - Wed Dec 15 02:25:21 2010 ; +; Quartus II Version ; 9.1 Build 350 03/24/2010 SP 2 SJ Web Edition ; +; Revision Name ; firebee1 ; +; Top-level Entity Name ; firebee1 ; +; Family ; Cyclone III ; +; Device ; EP3C40F484C6 ; +; Timing Models ; Final ; +; Met timing requirements ; No ; +; Total logic elements ; 9,526 / 39,600 ( 24 % ) ; +; Total combinational functions ; 8,061 / 39,600 ( 20 % ) ; +; Dedicated logic registers ; 4,563 / 39,600 ( 12 % ) ; +; Total registers ; 4749 ; +; Total pins ; 295 / 332 ( 89 % ) ; +; Total virtual pins ; 0 ; +; Total memory bits ; 109,344 / 1,161,216 ( 9 % ) ; +; Embedded Multiplier 9-bit elements ; 6 / 252 ( 2 % ) ; +; Total PLLs ; 4 / 4 ( 100 % ) ; ++------------------------------------+----------------------------------------------+ + + ++-----------------------------------------+ +; Flow Settings ; ++-------------------+---------------------+ +; Option ; Setting ; ++-------------------+---------------------+ +; Start date & time ; 12/15/2010 02:20:37 ; +; Main task ; Compilation ; +; Revision Name ; firebee1 ; ++-------------------+---------------------+ + + ++-----------------------------------------------------------------------------------------------------------------------------+ +; Flow Non-Default Global Settings ; ++-----------------------------------------+------------------------------------+---------------+-------------+----------------+ +; Assignment Name ; Value ; Default Value ; Entity Name ; Section Id ; ++-----------------------------------------+------------------------------------+---------------+-------------+----------------+ +; COMPILER_SIGNATURE_ID ; 150661768621.129237603704664 ; -- ; -- ; -- ; +; CYCLONEII_OPTIMIZATION_TECHNIQUE ; Speed ; Balanced ; -- ; -- ; +; FMAX_REQUIREMENT ; 30 ns ; -- ; -- ; -- ; +; IP_TOOL_NAME ; ALTPLL ; -- ; -- ; -- ; +; IP_TOOL_NAME ; ALTPLL ; -- ; -- ; -- ; +; IP_TOOL_NAME ; ALTPLL ; -- ; -- ; -- ; +; IP_TOOL_NAME ; ALTPLL ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_COUNTER ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_SHIFTREG ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_RAM_DP+ ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_BUSTRI ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_RAM_DP+ ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_BUSTRI ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_BUSTRI ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_CONSTANT ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_CONSTANT ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_MUX ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_MUX ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_MUX ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_CONSTANT ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_RAM_DP+ ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_BUSTRI ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_MUX ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_MUX ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_CONSTANT ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_SHIFTREG ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_LATCH ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_CONSTANT ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_SHIFTREG ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_COMPARE ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_BUSTRI ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_BUSTRI ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_BUSTRI ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_FF ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_FF ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_FF ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_SHIFTREG ; -- ; -- ; -- ; +; IP_TOOL_NAME ; ALTDDIO_BIDIR ; -- ; -- ; -- ; +; IP_TOOL_NAME ; ALTDDIO_OUT ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_MUX ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_SHIFTREG ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_SHIFTREG ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_SHIFTREG ; -- ; -- ; -- ; +; IP_TOOL_NAME ; ALTDDIO_OUT ; -- ; -- ; -- ; +; IP_TOOL_NAME ; ALTDDIO_OUT ; -- ; -- ; -- ; +; IP_TOOL_NAME ; ALTDDIO_OUT ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_MUX ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_FIFO+ ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_FIFO+ ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_MUX ; -- ; -- ; -- ; +; IP_TOOL_NAME ; LPM_MUX ; -- ; -- ; -- ; +; IP_TOOL_NAME ; ALTPLL_RECONFIG ; -- ; -- ; -- ; +; IP_TOOL_NAME ; ALTPLL ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 9.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 9.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 9.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 9.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 8.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 9.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 9.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 9.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 9.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 9.1 ; -- ; -- ; -- ; +; IP_TOOL_VERSION ; 9.1 ; -- ; -- ; -- ; +; MAX_CORE_JUNCTION_TEMP ; 85 ; -- ; -- ; -- ; +; MIN_CORE_JUNCTION_TEMP ; 0 ; -- ; -- ; -- ; +; MISC_FILE ; C:/firebee/FPGA/firebee1.dpf ; -- ; -- ; -- ; +; MISC_FILE ; altpll1.bsf ; -- ; -- ; -- ; +; MISC_FILE ; altpll1.inc ; -- ; -- ; -- ; +; MISC_FILE ; altpll1.cmp ; -- ; -- ; -- ; +; MISC_FILE ; altpll1.ppf ; -- ; -- ; -- ; +; MISC_FILE ; altpll2.bsf ; -- ; -- ; -- ; +; MISC_FILE ; altpll2.inc ; -- ; -- ; -- ; +; MISC_FILE ; altpll2.cmp ; -- ; -- ; -- ; +; MISC_FILE ; altpll2.ppf ; -- ; -- ; -- ; +; MISC_FILE ; altpll3.bsf ; -- ; -- ; -- ; +; MISC_FILE ; altpll3.inc ; -- ; -- ; -- ; +; MISC_FILE ; altpll3.cmp ; -- ; -- ; -- ; +; MISC_FILE ; altpll3.ppf ; -- ; -- ; -- ; +; MISC_FILE ; altpll0.bsf ; -- ; -- ; -- ; +; MISC_FILE ; altpll0.inc ; -- ; -- ; -- ; +; MISC_FILE ; altpll0.cmp ; -- ; -- ; -- ; +; MISC_FILE ; altpll0.ppf ; -- ; -- ; -- ; +; MISC_FILE ; lpm_counter0.bsf ; -- ; -- ; -- ; +; MISC_FILE ; lpm_counter0.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_shiftreg0.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_shiftreg0.inc ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_shiftreg0.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/altdpram0.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/altdpram0.inc ; -- ; -- ; -- ; +; MISC_FILE ; Video/altdpram0.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_bustri1.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_bustri1.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/altdpram1.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/altdpram1.inc ; -- ; -- ; -- ; +; MISC_FILE ; Video/altdpram1.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_bustri2.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_bustri2.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_bustri4.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_bustri4.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_constant0.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_constant0.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_constant1.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_constant1.inc ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_constant1.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_mux0.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_mux0.inc ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_mux0.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_mux1.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_mux1.inc ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_mux1.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_mux2.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_mux2.inc ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_mux2.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_constant2.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_constant2.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/altdpram2.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/altdpram2.inc ; -- ; -- ; -- ; +; MISC_FILE ; Video/altdpram2.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_bustri6.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_bustri6.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_mux3.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_mux3.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_mux4.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_mux4.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_constant3.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_constant3.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_shiftreg1.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_shiftreg1.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_latch1.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_latch1.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_constant4.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_constant4.inc ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_constant4.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_shiftreg2.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_shiftreg2.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_compare1.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_compare1.inc ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_compare1.cmp ; -- ; -- ; -- ; +; MISC_FILE ; lpm_bustri_LONG.bsf ; -- ; -- ; -- ; +; MISC_FILE ; lpm_bustri_LONG.inc ; -- ; -- ; -- ; +; MISC_FILE ; lpm_bustri_LONG.cmp ; -- ; -- ; -- ; +; MISC_FILE ; lpm_bustri_BYT.bsf ; -- ; -- ; -- ; +; MISC_FILE ; lpm_bustri_BYT.inc ; -- ; -- ; -- ; +; MISC_FILE ; lpm_bustri_BYT.cmp ; -- ; -- ; -- ; +; MISC_FILE ; lpm_bustri_WORD.bsf ; -- ; -- ; -- ; +; MISC_FILE ; lpm_bustri_WORD.inc ; -- ; -- ; -- ; +; MISC_FILE ; lpm_bustri_WORD.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_ff4.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_ff4.inc ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_ff4.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_ff5.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_ff5.inc ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_ff5.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_ff6.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_ff6.inc ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_ff6.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_shiftreg3.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_shiftreg3.inc ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_shiftreg3.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/altddio_bidir0.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/altddio_bidir0.inc ; -- ; -- ; -- ; +; MISC_FILE ; Video/altddio_bidir0.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/altddio_bidir0.ppf ; -- ; -- ; -- ; +; MISC_FILE ; Video/altddio_out0.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/altddio_out0.inc ; -- ; -- ; -- ; +; MISC_FILE ; Video/altddio_out0.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/altddio_out0.ppf ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_mux5.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_mux5.inc ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_mux5.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_shiftreg5.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_shiftreg5.inc ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_shiftreg5.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_shiftreg6.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_shiftreg6.inc ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_shiftreg6.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_shiftreg4.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_shiftreg4.inc ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_shiftreg4.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/altddio_out1.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/altddio_out1.inc ; -- ; -- ; -- ; +; MISC_FILE ; Video/altddio_out1.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/altddio_out1.ppf ; -- ; -- ; -- ; +; MISC_FILE ; Video/altddio_out2.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/altddio_out2.inc ; -- ; -- ; -- ; +; MISC_FILE ; Video/altddio_out2.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/altddio_out2.ppf ; -- ; -- ; -- ; +; MISC_FILE ; altddio_out3.bsf ; -- ; -- ; -- ; +; MISC_FILE ; altddio_out3.inc ; -- ; -- ; -- ; +; MISC_FILE ; altddio_out3.cmp ; -- ; -- ; -- ; +; MISC_FILE ; altddio_out3.ppf ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_mux6.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_mux6.inc ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_mux6.cmp ; -- ; -- ; -- ; +; MISC_FILE ; FalconIO_SDCard_IDE_CF/dcfifo0.bsf ; -- ; -- ; -- ; +; MISC_FILE ; FalconIO_SDCard_IDE_CF/dcfifo0.cmp ; -- ; -- ; -- ; +; MISC_FILE ; FalconIO_SDCard_IDE_CF/dcfifo1.bsf ; -- ; -- ; -- ; +; MISC_FILE ; FalconIO_SDCard_IDE_CF/dcfifo1.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_muxDZ.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_muxDZ.cmp ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_muxVDM.bsf ; -- ; -- ; -- ; +; MISC_FILE ; Video/lpm_muxVDM.cmp ; -- ; -- ; -- ; +; MISC_FILE ; C:/FireBee/FPGA/firebee1.dpf ; -- ; -- ; -- ; +; MISC_FILE ; altpll_reconfig1.tdf ; -- ; -- ; -- ; +; MISC_FILE ; altpll_reconfig1.bsf ; -- ; -- ; -- ; +; MISC_FILE ; altpll_reconfig1.inc ; -- ; -- ; -- ; +; MISC_FILE ; altpll_reconfig1.cmp ; -- ; -- ; -- ; +; MISC_FILE ; altpll4.tdf ; -- ; -- ; -- ; +; MISC_FILE ; altpll4.bsf ; -- ; -- ; -- ; +; MISC_FILE ; altpll4.inc ; -- ; -- ; -- ; +; MISC_FILE ; altpll4.cmp ; -- ; -- ; -- ; +; MISC_FILE ; altpll4.ppf ; -- ; -- ; -- ; +; NOMINAL_CORE_SUPPLY_VOLTAGE ; 1.2V ; -- ; -- ; -- ; +; PARTITION_COLOR ; 16764057 ; -- ; -- ; Top ; +; PARTITION_NETLIST_TYPE ; SOURCE ; -- ; -- ; Top ; +; PHYSICAL_SYNTHESIS_COMBO_LOGIC ; On ; Off ; -- ; -- ; +; PHYSICAL_SYNTHESIS_COMBO_LOGIC_FOR_AREA ; On ; Off ; -- ; -- ; +; PHYSICAL_SYNTHESIS_EFFORT ; Fast ; Normal ; -- ; -- ; +; PHYSICAL_SYNTHESIS_REGISTER_DUPLICATION ; On ; Off ; -- ; -- ; +; STATE_MACHINE_PROCESSING ; One-Hot ; Auto ; -- ; -- ; +; TCO_REQUIREMENT ; 1 ns ; -- ; -- ; -- ; +; TH_REQUIREMENT ; 1 ns ; -- ; -- ; -- ; +; TPD_REQUIREMENT ; 1 ns ; -- ; -- ; -- ; +; TSU_REQUIREMENT ; 1 ns ; -- ; -- ; -- ; +; USE_GENERATED_PHYSICAL_CONSTRAINTS ; Off ; -- ; -- ; eda_blast_fpga ; +; USE_TIMEQUEST_TIMING_ANALYZER ; Off ; On ; -- ; -- ; ++-----------------------------------------+------------------------------------+---------------+-------------+----------------+ + + ++-----------------------------------------------------------------------------------------------------------------------------+ +; Flow Elapsed Time ; ++-------------------------+--------------+-------------------------+---------------------+------------------------------------+ +; Module Name ; Elapsed Time ; Average Processors Used ; Peak Virtual Memory ; Total CPU Time (on all processors) ; ++-------------------------+--------------+-------------------------+---------------------+------------------------------------+ +; Analysis & Synthesis ; 00:01:16 ; 1.0 ; 347 MB ; 00:01:17 ; +; Fitter ; 00:03:05 ; 1.0 ; 334 MB ; 00:03:07 ; +; Assembler ; 00:00:05 ; 1.0 ; 291 MB ; 00:00:04 ; +; Classic Timing Analyzer ; 00:00:07 ; 1.0 ; 227 MB ; 00:00:09 ; +; Total ; 00:04:33 ; -- ; -- ; 00:04:37 ; ++-------------------------+--------------+-------------------------+---------------------+------------------------------------+ + + ++------------------------------------------------------------------------------------------+ +; Flow OS Summary ; ++-------------------------+------------------+---------------+------------+----------------+ +; Module Name ; Machine Hostname ; OS Name ; OS Version ; Processor type ; ++-------------------------+------------------+---------------+------------+----------------+ +; Analysis & Synthesis ; envy15 ; Windows Vista ; 6.1 ; x86_64 ; +; Fitter ; envy15 ; Windows Vista ; 6.1 ; x86_64 ; +; Assembler ; envy15 ; Windows Vista ; 6.1 ; x86_64 ; +; Classic Timing Analyzer ; envy15 ; Windows Vista ; 6.1 ; x86_64 ; ++-------------------------+------------------+---------------+------------+----------------+ + + +------------ +; Flow Log ; +------------ +quartus_map --read_settings_files=on --write_settings_files=off firebeei1 -c firebee1 +quartus_fit --read_settings_files=off --write_settings_files=off firebeei1 -c firebee1 +quartus_asm --read_settings_files=off --write_settings_files=off firebeei1 -c firebee1 +quartus_tan --read_settings_files=off --write_settings_files=off firebeei1 -c firebee1 --timing_analysis_only + + + diff --git a/FPGA_quartus/firebee1.map.rpt b/FPGA_quartus/firebee1.map.rpt new file mode 100644 index 0000000..11a1ac1 --- /dev/null +++ b/FPGA_quartus/firebee1.map.rpt @@ -0,0 +1,8590 @@ +Analysis & Synthesis report for firebee1 +Wed Dec 15 02:21:56 2010 +Quartus II Version 9.1 Build 350 03/24/2010 Service Pack 2 SJ Web Edition + + +--------------------- +; Table of Contents ; +--------------------- + 1. Legal Notice + 2. Analysis & Synthesis Summary + 3. Analysis & Synthesis Settings + 4. Parallel Compilation + 5. Analysis & Synthesis Source Files Read + 6. Analysis & Synthesis Resource Usage Summary + 7. Analysis & Synthesis Resource Utilization by Entity + 8. Analysis & Synthesis RAM Summary + 9. Analysis & Synthesis DSP Block Usage Summary + 10. State Machine - |firebee1|Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FB_REGDDR + 11. State Machine - |firebee1|Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_SM + 12. State Machine - |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_STATE + 13. State Machine - |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|CMD_STATE + 14. State Machine - |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|INT_STATE + 15. State Machine - |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_TX:I_USART_TRANSMIT|TR_STATE + 16. State Machine - |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_RX:I_USART_RECEIVE|RCV_STATE + 17. State Machine - |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_TRANSMIT:I_UART_TRANSMIT|TR_STATE + 18. State Machine - |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_RECEIVE:I_UART_RECEIVE|RCV_STATE + 19. State Machine - |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_TRANSMIT:I_UART_TRANSMIT|TR_STATE + 20. State Machine - |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_RECEIVE:I_UART_RECEIVE|RCV_STATE + 21. State Machine - |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|DMA_STATE + 22. State Machine - |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|CTRL_STATE + 23. State Machine - |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|PRECOMP + 24. State Machine - |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|MFM_STATE + 25. State Machine - |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE + 26. Registers Protected by Synthesis + 27. User-Specified and Inferred Latches + 28. Registers Removed During Synthesis + 29. Removed Registers Triggering Further Register Optimizations + 30. General Register Statistics + 31. Inverted Register Statistics + 32. Multiplexer Restructuring Statistics (Restructuring Performed) + 33. Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated + 34. Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_k47:rdptr_g1p + 35. Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p + 36. Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram + 37. Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_ikd:rs_dgwp + 38. Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_ikd:rs_dgwp|dffpipe_hd9:dffpipe12 + 39. Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|dffpipe_gd9:ws_brp + 40. Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|dffpipe_pe9:ws_bwp + 41. Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_jkd:ws_dgrp + 42. Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_jkd:ws_dgrp|dffpipe_id9:dffpipe17 + 43. Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated + 44. Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p + 45. Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_gic:wrptr_g1p + 46. Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram + 47. Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|dffpipe_pe9:rs_brp + 48. Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|dffpipe_gd9:rs_bwp + 49. Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_kkd:rs_dgwp + 50. Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_kkd:rs_dgwp|dffpipe_jd9:dffpipe12 + 51. Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_lkd:ws_dgrp + 52. Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_lkd:ws_dgrp|dffpipe_kd9:dffpipe15 + 53. Source assignments for Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component + 54. Source assignments for Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated + 55. Source assignments for Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p + 56. Source assignments for Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_ojc:wrptr_g1p + 57. Source assignments for Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp + 58. Source assignments for Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram + 59. Source assignments for Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_rld:rs_dgwp + 60. Source assignments for Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_rld:rs_dgwp|dffpipe_qe9:dffpipe15 + 61. Source assignments for Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_9d9:wraclr + 62. Source assignments for Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_brp + 63. Source assignments for Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_bwp + 64. Source assignments for Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp + 65. Source assignments for Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22 + 66. Source assignments for Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component + 67. Source assignments for Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated + 68. Source assignments for Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated + 69. Source assignments for Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram + 70. Source assignments for Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_GREEN|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated + 71. Source assignments for Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated + 72. Source assignments for Video:Fredi_Aschwanden|altdpram0:ST_CLUT_RED|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated + 73. Source assignments for Video:Fredi_Aschwanden|altdpram0:ST_CLUT_GREEN|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated + 74. Source assignments for Video:Fredi_Aschwanden|altdpram0:ST_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated + 75. Source assignments for Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated + 76. Source assignments for Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated + 77. Source assignments for Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated + 78. Source assignments for Video:Fredi_Aschwanden|altddio_out2:inst5|altddio_out:altddio_out_component + 79. Source assignments for Video:Fredi_Aschwanden|altddio_out2:inst5|altddio_out:altddio_out_component|ddio_out_o2f:auto_generated + 80. Source assignments for Video:Fredi_Aschwanden|altddio_out0:inst2|altddio_out:altddio_out_component + 81. Source assignments for Video:Fredi_Aschwanden|altddio_out0:inst2|altddio_out:altddio_out_component|ddio_out_are:auto_generated + 82. Source assignments for altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated + 83. Source assignments for altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component + 84. Source assignments for altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|altsyncram:altsyncram4|altsyncram_46r:auto_generated + 85. Source assignments for altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr1 + 86. Source assignments for altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr12 + 87. Source assignments for altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr13 + 88. Source assignments for altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr14 + 89. Source assignments for altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr15 + 90. Source assignments for altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr2 + 91. Source assignments for altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr3 + 92. Source assignments for lpm_counter0:inst18|lpm_counter:lpm_counter_component + 93. Source assignments for altddio_out3:inst5|altddio_out:altddio_out_component + 94. Source assignments for altddio_out3:inst5|altddio_out:altddio_out_component|ddio_out_31f:auto_generated + 95. Source assignments for altddio_out3:inst6|altddio_out:altddio_out_component + 96. Source assignments for altddio_out3:inst6|altddio_out:altddio_out_component|ddio_out_31f:auto_generated + 97. Source assignments for altddio_out3:inst8|altddio_out:altddio_out_component + 98. Source assignments for altddio_out3:inst8|altddio_out:altddio_out_component|ddio_out_31f:auto_generated + 99. Source assignments for altddio_out3:inst9|altddio_out:altddio_out_component +100. Source assignments for altddio_out3:inst9|altddio_out:altddio_out_component|ddio_out_31f:auto_generated +101. Parameter Settings for User Entity Instance: altpll1:inst|altpll:altpll_component +102. Parameter Settings for User Entity Instance: FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component +103. Parameter Settings for User Entity Instance: FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component +104. Parameter Settings for User Entity Instance: FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL +105. Parameter Settings for User Entity Instance: altpll3:inst13|altpll:altpll_component +106. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_bustri_WORD:$00000|lpm_bustri:lpm_bustri_component +107. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_bustri_WORD:$00002|lpm_bustri:lpm_bustri_component +108. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_shiftreg6:inst89|lpm_shiftreg:lpm_shiftreg_component +109. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|lpm_bustri_BYT:$00002|lpm_bustri:lpm_bustri_component +110. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|lpm_bustri_BYT:$00004|lpm_bustri:lpm_bustri_component +111. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component +112. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_shiftreg4:inst26|lpm_shiftreg:lpm_shiftreg_component +113. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_muxVDM:inst100|LPM_MUX:lpm_mux_component +114. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff6:inst94|lpm_ff:lpm_ff_component +115. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component +116. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component +117. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component +118. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component +119. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_mux5:inst22|LPM_MUX:lpm_mux_component +120. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component +121. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component +122. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component +123. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component +124. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component +125. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component +126. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff6:inst36|lpm_ff:lpm_ff_component +127. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_bustri_LONG:inst108|lpm_bustri:lpm_bustri_component +128. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component +129. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_bustri_LONG:inst119|lpm_bustri:lpm_bustri_component +130. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff0:inst19|lpm_ff:lpm_ff_component +131. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_shiftreg6:inst92|lpm_shiftreg:lpm_shiftreg_component +132. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_bustri_LONG:inst110|lpm_bustri:lpm_bustri_component +133. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff0:inst18|lpm_ff:lpm_ff_component +134. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_bustri_LONG:inst109|lpm_bustri:lpm_bustri_component +135. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff0:inst17|lpm_ff:lpm_ff_component +136. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_bustri3:inst66|lpm_bustri:lpm_bustri_component +137. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component +138. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component +139. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_shiftreg0:sr4|lpm_shiftreg:lpm_shiftreg_component +140. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_shiftreg0:sr5|lpm_shiftreg:lpm_shiftreg_component +141. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_shiftreg0:sr6|lpm_shiftreg:lpm_shiftreg_component +142. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_shiftreg0:sr7|lpm_shiftreg:lpm_shiftreg_component +143. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_muxDZ:inst62|LPM_MUX:lpm_mux_component +144. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component +145. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_shiftreg0:sr1|lpm_shiftreg:lpm_shiftreg_component +146. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component +147. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_shiftreg0:sr3|lpm_shiftreg:lpm_shiftreg_component +148. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_bustri3:inst70|lpm_bustri:lpm_bustri_component +149. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_GREEN|altsyncram:altsyncram_component +150. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_bustri3:inst74|lpm_bustri:lpm_bustri_component +151. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_BLUE|altsyncram:altsyncram_component +152. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_bustri1:inst51|lpm_bustri:lpm_bustri_component +153. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|altdpram0:ST_CLUT_RED|altsyncram:altsyncram_component +154. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_bustri1:inst56|lpm_bustri:lpm_bustri_component +155. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|altdpram0:ST_CLUT_GREEN|altsyncram:altsyncram_component +156. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_bustri1:inst61|lpm_bustri:lpm_bustri_component +157. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|altdpram0:ST_CLUT_BLUE|altsyncram:altsyncram_component +158. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_bustri_BYT:inst58|lpm_bustri:lpm_bustri_component +159. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component +160. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_mux3:inst102|LPM_MUX:lpm_mux_component +161. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff5:inst11|lpm_ff:lpm_ff_component +162. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_mux2:inst25|LPM_MUX:lpm_mux_component +163. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_mux4:inst81|LPM_MUX:lpm_mux_component +164. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_constant3:inst82|lpm_constant:lpm_constant_component +165. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_bustri_BYT:inst57|lpm_bustri:lpm_bustri_component +166. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component +167. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_bustri_BYT:inst53|lpm_bustri:lpm_bustri_component +168. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM|altsyncram:altsyncram_component +169. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|altddio_out2:inst5|altddio_out:altddio_out_component +170. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_mux6:inst7|LPM_MUX:lpm_mux_component +171. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff3:inst49|lpm_ff:lpm_ff_component +172. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff3:inst52|lpm_ff:lpm_ff_component +173. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_constant0:inst59|lpm_constant:lpm_constant_component +174. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_constant0:inst54|lpm_constant:lpm_constant_component +175. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_constant0:inst64|lpm_constant:lpm_constant_component +176. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff3:inst46|lpm_ff:lpm_ff_component +177. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff3:inst47|lpm_ff:lpm_ff_component +178. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_constant1:inst77|lpm_constant:lpm_constant_component +179. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_constant1:inst80|lpm_constant:lpm_constant_component +180. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_constant1:inst83|lpm_constant:lpm_constant_component +181. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff4:inst10|lpm_ff:lpm_ff_component +182. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_mux1:inst24|LPM_MUX:lpm_mux_component +183. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_constant2:inst23|lpm_constant:lpm_constant_component +184. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff1:inst9|lpm_ff:lpm_ff_component +185. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_mux0:inst21|LPM_MUX:lpm_mux_component +186. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|altddio_out0:inst2|altddio_out:altddio_out_component +187. Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component +188. Parameter Settings for User Entity Instance: altpll2:inst12|altpll:altpll_component +189. Parameter Settings for User Entity Instance: altpll4:inst22|altpll:altpll_component +190. Parameter Settings for User Entity Instance: altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component +191. Parameter Settings for User Entity Instance: altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|altsyncram:altsyncram4 +192. Parameter Settings for User Entity Instance: altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_add_sub:add_sub5 +193. Parameter Settings for User Entity Instance: altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_add_sub:add_sub6 +194. Parameter Settings for User Entity Instance: altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_compare:cmpr7 +195. Parameter Settings for User Entity Instance: altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr1 +196. Parameter Settings for User Entity Instance: altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr12 +197. Parameter Settings for User Entity Instance: altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr13 +198. Parameter Settings for User Entity Instance: altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr14 +199. Parameter Settings for User Entity Instance: altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr15 +200. Parameter Settings for User Entity Instance: altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr2 +201. Parameter Settings for User Entity Instance: altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr3 +202. Parameter Settings for User Entity Instance: altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_decode:decode11 +203. Parameter Settings for User Entity Instance: lpm_ff0:inst1|lpm_ff:lpm_ff_component +204. Parameter Settings for User Entity Instance: interrupt_handler:nobody|lpm_bustri_BYT:$00000|lpm_bustri:lpm_bustri_component +205. Parameter Settings for User Entity Instance: interrupt_handler:nobody|lpm_bustri_BYT:$00002|lpm_bustri:lpm_bustri_component +206. Parameter Settings for User Entity Instance: interrupt_handler:nobody|lpm_bustri_BYT:$00004|lpm_bustri:lpm_bustri_component +207. Parameter Settings for User Entity Instance: interrupt_handler:nobody|lpm_bustri_BYT:$00006|lpm_bustri:lpm_bustri_component +208. Parameter Settings for User Entity Instance: lpm_counter0:inst18|lpm_counter:lpm_counter_component +209. Parameter Settings for User Entity Instance: altddio_out3:inst5|altddio_out:altddio_out_component +210. Parameter Settings for User Entity Instance: altddio_out3:inst6|altddio_out:altddio_out_component +211. Parameter Settings for User Entity Instance: altddio_out3:inst8|altddio_out:altddio_out_component +212. Parameter Settings for User Entity Instance: altddio_out3:inst9|altddio_out:altddio_out_component +213. Parameter Settings for Inferred Entity Instance: Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_mult:op_14 +214. Parameter Settings for Inferred Entity Instance: Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_mult:op_6 +215. Parameter Settings for Inferred Entity Instance: Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_mult:op_12 +216. altpll Parameter Settings by Entity Instance +217. lpm_shiftreg Parameter Settings by Entity Instance +218. dcfifo Parameter Settings by Entity Instance +219. scfifo Parameter Settings by Entity Instance +220. altsyncram Parameter Settings by Entity Instance +221. lpm_mult Parameter Settings by Entity Instance +222. Port Connectivity Checks: "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND" +223. Port Connectivity Checks: "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP" +224. Port Connectivity Checks: "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI" +225. Port Connectivity Checks: "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD" +226. Port Connectivity Checks: "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS" +227. Port Connectivity Checks: "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI" +228. Port Connectivity Checks: "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC" +229. Analysis & Synthesis Messages + + + +---------------- +; Legal Notice ; +---------------- +Copyright (C) 1991-2010 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. + + + ++-----------------------------------------------------------------------------------+ +; Analysis & Synthesis Summary ; ++------------------------------------+----------------------------------------------+ +; Analysis & Synthesis Status ; Successful - Wed Dec 15 02:21:55 2010 ; +; Quartus II Version ; 9.1 Build 350 03/24/2010 SP 2 SJ Web Edition ; +; Revision Name ; firebee1 ; +; Top-level Entity Name ; firebee1 ; +; Family ; Cyclone III ; +; Total logic elements ; 10,706 ; +; Total combinational functions ; 8,060 ; +; Dedicated logic registers ; 4,612 ; +; Total registers ; 4740 ; +; Total pins ; 295 ; +; Total virtual pins ; 0 ; +; Total memory bits ; 109,344 ; +; Embedded Multiplier 9-bit elements ; 6 ; +; Total PLLs ; 4 ; ++------------------------------------+----------------------------------------------+ + + ++----------------------------------------------------------------------------------------------------------------------+ +; Analysis & Synthesis Settings ; ++----------------------------------------------------------------------------+--------------------+--------------------+ +; Option ; Setting ; Default Value ; ++----------------------------------------------------------------------------+--------------------+--------------------+ +; Device ; EP3C40F484C6 ; ; +; Top-level entity name ; firebee1 ; firebee1 ; +; Family name ; Cyclone III ; Stratix II ; +; State Machine Processing ; One-Hot ; Auto ; +; Optimization Technique ; Speed ; Balanced ; +; Use Generated Physical Constraints File ; Off ; ; +; Use smart compilation ; Off ; Off ; +; Enable parallel Assembler and TimeQuest Timing Analyzer during compilation ; On ; On ; +; Enable compact report table ; Off ; Off ; +; Restructure Multiplexers ; Auto ; Auto ; +; Create Debugging Nodes for IP Cores ; Off ; Off ; +; Preserve fewer node names ; On ; On ; +; Disable OpenCore Plus hardware evaluation ; Off ; Off ; +; Verilog Version ; Verilog_2001 ; Verilog_2001 ; +; VHDL Version ; VHDL_1993 ; VHDL_1993 ; +; Safe State Machine ; Off ; Off ; +; Extract Verilog State Machines ; On ; On ; +; Extract VHDL State Machines ; On ; On ; +; Ignore Verilog initial constructs ; Off ; Off ; +; Iteration limit for constant Verilog loops ; 5000 ; 5000 ; +; Iteration limit for non-constant Verilog loops ; 250 ; 250 ; +; Add Pass-Through Logic to Inferred RAMs ; On ; On ; +; Parallel Synthesis ; On ; On ; +; DSP Block Balancing ; Auto ; Auto ; +; NOT Gate Push-Back ; On ; On ; +; Power-Up Don't Care ; On ; On ; +; Remove Redundant Logic Cells ; Off ; Off ; +; Remove Duplicate Registers ; On ; On ; +; Ignore CARRY Buffers ; Off ; Off ; +; Ignore CASCADE Buffers ; Off ; Off ; +; Ignore GLOBAL Buffers ; Off ; Off ; +; Ignore ROW GLOBAL Buffers ; Off ; Off ; +; Ignore LCELL Buffers ; Off ; Off ; +; Ignore SOFT Buffers ; On ; On ; +; Limit AHDL Integers to 32 Bits ; Off ; Off ; +; Carry Chain Length ; 70 ; 70 ; +; Auto Carry Chains ; On ; On ; +; Auto Open-Drain Pins ; On ; On ; +; Perform WYSIWYG Primitive Resynthesis ; Off ; Off ; +; Auto ROM Replacement ; On ; On ; +; Auto RAM Replacement ; On ; On ; +; Auto DSP Block Replacement ; On ; On ; +; Auto Shift Register Replacement ; Auto ; Auto ; +; Auto Clock Enable Replacement ; On ; On ; +; Strict RAM Replacement ; Off ; Off ; +; Allow Synchronous Control Signals ; On ; On ; +; Force Use of Synchronous Clear Signals ; Off ; Off ; +; Auto RAM Block Balancing ; On ; On ; +; Auto RAM to Logic Cell Conversion ; Off ; Off ; +; Auto Resource Sharing ; Off ; Off ; +; Allow Any RAM Size For Recognition ; Off ; Off ; +; Allow Any ROM Size For Recognition ; Off ; Off ; +; Allow Any Shift Register Size For Recognition ; Off ; Off ; +; Use LogicLock Constraints during Resource Balancing ; On ; On ; +; Ignore translate_off and synthesis_off directives ; Off ; Off ; +; Timing-Driven Synthesis ; On ; On ; +; Show Parameter Settings Tables in Synthesis Report ; On ; On ; +; Ignore Maximum Fan-Out Assignments ; Off ; Off ; +; Synchronization Register Chain Length ; 2 ; 2 ; +; PowerPlay Power Optimization ; Normal compilation ; Normal compilation ; +; HDL message level ; Level2 ; Level2 ; +; Suppress Register Optimization Related Messages ; Off ; Off ; +; Number of Removed Registers Reported in Synthesis Report ; 5000 ; 5000 ; +; Number of Inverted Registers Reported in Synthesis Report ; 100 ; 100 ; +; Clock MUX Protection ; On ; On ; +; Auto Gated Clock Conversion ; Off ; Off ; +; Block Design Naming ; Auto ; Auto ; +; SDC constraint protection ; Off ; Off ; +; Synthesis Effort ; Auto ; Auto ; +; Shift Register Replacement - Allow Asynchronous Clear Signal ; On ; On ; +; Analysis & Synthesis Message Level ; Medium ; Medium ; +; Disable Register Merging Across Hierarchies ; Auto ; Auto ; +; Resource Aware Inference For Block RAM ; On ; On ; ++----------------------------------------------------------------------------+--------------------+--------------------+ + + +Parallel compilation was disabled, but you have multiple processors available. Enable parallel compilation to reduce compilation time. ++-------------------------------------+ +; Parallel Compilation ; ++----------------------------+--------+ +; Processors ; Number ; ++----------------------------+--------+ +; Number detected on machine ; 4 ; +; Maximum allowed ; 1 ; ++----------------------------+--------+ + + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Analysis & Synthesis Source Files Read ; ++----------------------------------------------------------------+-----------------+------------------------------------+--------------------------------------------------------------------------------+ +; File Name with User-Entered Path ; Used in Netlist ; File Type ; File Name with Absolute Path ; ++----------------------------------------------------------------+-----------------+------------------------------------+--------------------------------------------------------------------------------+ +; FalconIO_SDCard_IDE_CF/WF5380/wf5380_control.vhd ; yes ; User VHDL File ; C:/FireBee/FPGA/FalconIO_SDCard_IDE_CF/WF5380/wf5380_control.vhd ; +; FalconIO_SDCard_IDE_CF/WF5380/wf5380_pkg.vhd ; yes ; User VHDL File ; C:/FireBee/FPGA/FalconIO_SDCard_IDE_CF/WF5380/wf5380_pkg.vhd ; +; FalconIO_SDCard_IDE_CF/WF5380/wf5380_registers.vhd ; yes ; User VHDL File ; C:/FireBee/FPGA/FalconIO_SDCard_IDE_CF/WF5380/wf5380_registers.vhd ; +; FalconIO_SDCard_IDE_CF/WF5380/wf5380_soc_top.vhd ; yes ; User VHDL File ; C:/FireBee/FPGA/FalconIO_SDCard_IDE_CF/WF5380/wf5380_soc_top.vhd ; +; FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_am_detector.vhd ; yes ; User VHDL File ; C:/FireBee/FPGA/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_am_detector.vhd ; +; FalconIO_SDCard_IDE_CF/dcfifo0.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/FalconIO_SDCard_IDE_CF/dcfifo0.vhd ; +; Video/DDR_CTR.tdf ; yes ; User AHDL File ; C:/FireBee/FPGA/Video/DDR_CTR.tdf ; +; FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_control.vhd ; yes ; User VHDL File ; C:/FireBee/FPGA/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_control.vhd ; +; FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_crc_logic.vhd ; yes ; User VHDL File ; C:/FireBee/FPGA/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_crc_logic.vhd ; +; FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_digital_pll.vhd ; yes ; User VHDL File ; C:/FireBee/FPGA/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_digital_pll.vhd ; +; FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_pkg.vhd ; yes ; User VHDL File ; C:/FireBee/FPGA/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_pkg.vhd ; +; FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_registers.vhd ; yes ; User VHDL File ; C:/FireBee/FPGA/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_registers.vhd ; +; FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_top_soc.vhd ; yes ; User VHDL File ; C:/FireBee/FPGA/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_top_soc.vhd ; +; FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_transceiver.vhd ; yes ; User VHDL File ; C:/FireBee/FPGA/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_transceiver.vhd ; +; FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_ctrl_status.vhd ; yes ; User VHDL File ; C:/FireBee/FPGA/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_ctrl_status.vhd ; +; FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_receive.vhd ; yes ; User VHDL File ; C:/FireBee/FPGA/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_receive.vhd ; +; FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top_soc.vhd ; yes ; User VHDL File ; C:/FireBee/FPGA/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top_soc.vhd ; +; FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_transmit.vhd ; yes ; User VHDL File ; C:/FireBee/FPGA/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_transmit.vhd ; +; FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_gpio.vhd ; yes ; User VHDL File ; C:/FireBee/FPGA/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_gpio.vhd ; +; FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_interrupts.vhd ; yes ; User VHDL File ; C:/FireBee/FPGA/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_interrupts.vhd ; +; FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_pkg.vhd ; yes ; User VHDL File ; C:/FireBee/FPGA/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_pkg.vhd ; +; FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_timers.vhd ; yes ; User VHDL File ; C:/FireBee/FPGA/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_timers.vhd ; +; FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_top_soc.vhd ; yes ; User VHDL File ; C:/FireBee/FPGA/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_top_soc.vhd ; +; FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_ctrl.vhd ; yes ; User VHDL File ; C:/FireBee/FPGA/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_ctrl.vhd ; +; FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_rx.vhd ; yes ; User VHDL File ; C:/FireBee/FPGA/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_rx.vhd ; +; FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_top.vhd ; yes ; User VHDL File ; C:/FireBee/FPGA/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_top.vhd ; +; FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_tx.vhd ; yes ; User VHDL File ; C:/FireBee/FPGA/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_tx.vhd ; +; FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_pkg.vhd ; yes ; User VHDL File ; C:/FireBee/FPGA/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_pkg.vhd ; +; FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_top_soc.vhd ; yes ; User VHDL File ; C:/FireBee/FPGA/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_top_soc.vhd ; +; FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_wave.vhd ; yes ; User VHDL File ; C:/FireBee/FPGA/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_wave.vhd ; +; lpm_latch0.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/lpm_latch0.vhd ; +; altpll1.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/altpll1.vhd ; +; Video/lpm_fifoDZ.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/Video/lpm_fifoDZ.vhd ; +; altpll2.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/altpll2.vhd ; +; altpll3.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/altpll3.vhd ; +; Video/altdpram0.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/Video/altdpram0.vhd ; +; Video/lpm_muxDZ.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/Video/lpm_muxDZ.vhd ; +; Video/lpm_bustri3.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/Video/lpm_bustri3.vhd ; +; Video/lpm_ff0.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/Video/lpm_ff0.vhd ; +; Video/lpm_ff1.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/Video/lpm_ff1.vhd ; +; Video/lpm_ff3.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/Video/lpm_ff3.vhd ; +; Video/VIDEO_MOD_MUX_CLUTCTR.tdf ; yes ; User AHDL File ; C:/FireBee/FPGA/Video/VIDEO_MOD_MUX_CLUTCTR.tdf ; +; Video/lpm_fifo_dc0.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/Video/lpm_fifo_dc0.vhd ; +; Video/Video.bdf ; yes ; User Block Diagram/Schematic File ; C:/FireBee/FPGA/Video/Video.bdf ; +; firebee1.bdf ; yes ; User Block Diagram/Schematic File ; C:/FireBee/FPGA/firebee1.bdf ; +; lpm_counter0.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/lpm_counter0.vhd ; +; FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF.vhd ; yes ; User VHDL File ; C:/FireBee/FPGA/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF.vhd ; +; DSP/DSP.vhd ; yes ; User VHDL File ; C:/FireBee/FPGA/DSP/DSP.vhd ; +; Video/lpm_shiftreg0.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/Video/lpm_shiftreg0.vhd ; +; Video/lpm_bustri1.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/Video/lpm_bustri1.vhd ; +; Video/altdpram1.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/Video/altdpram1.vhd ; +; Video/lpm_constant0.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/Video/lpm_constant0.vhd ; +; Video/lpm_constant1.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/Video/lpm_constant1.vhd ; +; Video/lpm_mux0.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/Video/lpm_mux0.vhd ; +; Video/lpm_mux1.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/Video/lpm_mux1.vhd ; +; Video/lpm_mux2.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/Video/lpm_mux2.vhd ; +; Video/lpm_constant2.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/Video/lpm_constant2.vhd ; +; Video/altdpram2.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/Video/altdpram2.vhd ; +; Video/lpm_mux3.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/Video/lpm_mux3.vhd ; +; Video/lpm_mux4.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/Video/lpm_mux4.vhd ; +; Video/lpm_constant3.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/Video/lpm_constant3.vhd ; +; Interrupt_Handler/interrupt_handler.tdf ; yes ; User AHDL File ; C:/FireBee/FPGA/Interrupt_Handler/interrupt_handler.tdf ; +; lpm_bustri_LONG.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/lpm_bustri_LONG.vhd ; +; lpm_bustri_BYT.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/lpm_bustri_BYT.vhd ; +; lpm_bustri_WORD.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/lpm_bustri_WORD.vhd ; +; Video/lpm_ff4.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/Video/lpm_ff4.vhd ; +; Video/lpm_ff5.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/Video/lpm_ff5.vhd ; +; Video/lpm_ff6.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/Video/lpm_ff6.vhd ; +; Video/altddio_bidir0.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/Video/altddio_bidir0.vhd ; +; Video/altddio_out0.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/Video/altddio_out0.vhd ; +; Video/lpm_mux5.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/Video/lpm_mux5.vhd ; +; Video/BLITTER/BLITTER.vhd ; yes ; User VHDL File ; C:/FireBee/FPGA/Video/BLITTER/BLITTER.vhd ; +; Video/lpm_shiftreg6.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/Video/lpm_shiftreg6.vhd ; +; Video/lpm_shiftreg4.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/Video/lpm_shiftreg4.vhd ; +; Video/altddio_out2.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/Video/altddio_out2.vhd ; +; altddio_out3.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/altddio_out3.vhd ; +; Video/lpm_mux6.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/Video/lpm_mux6.vhd ; +; FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF_pgk.vhd ; yes ; User VHDL File ; C:/FireBee/FPGA/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF_pgk.vhd ; +; FalconIO_SDCard_IDE_CF/dcfifo1.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/FalconIO_SDCard_IDE_CF/dcfifo1.vhd ; +; Video/lpm_muxVDM.vhd ; yes ; User Wizard-Generated File ; C:/FireBee/FPGA/Video/lpm_muxVDM.vhd ; +; lpm_bustri_byt.inc ; yes ; Auto-Found AHDL File ; C:/FireBee/FPGA/lpm_bustri_byt.inc ; +; lpm_bustri_word.inc ; yes ; Auto-Found AHDL File ; C:/FireBee/FPGA/lpm_bustri_word.inc ; +; lpm_bustri_long.inc ; yes ; Auto-Found AHDL File ; C:/FireBee/FPGA/lpm_bustri_long.inc ; +; altpll.tdf ; yes ; Megafunction ; c:/altera/91sp2/quartus/libraries/megafunctions/altpll.tdf ; +; db/altpll_pul2.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/altpll_pul2.tdf ; +; dcfifo_mixed_widths.tdf ; yes ; Megafunction ; c:/altera/91sp2/quartus/libraries/megafunctions/dcfifo_mixed_widths.tdf ; +; db/dcfifo_0hh1.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/dcfifo_0hh1.tdf ; +; db/a_gray2bin_lfb.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/a_gray2bin_lfb.tdf ; +; db/a_graycounter_k47.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/a_graycounter_k47.tdf ; +; db/a_graycounter_fic.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/a_graycounter_fic.tdf ; +; db/altsyncram_bi31.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/altsyncram_bi31.tdf ; +; db/alt_synch_pipe_ikd.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/alt_synch_pipe_ikd.tdf ; +; db/dffpipe_hd9.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/dffpipe_hd9.tdf ; +; db/dffpipe_gd9.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/dffpipe_gd9.tdf ; +; db/dffpipe_pe9.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/dffpipe_pe9.tdf ; +; db/alt_synch_pipe_jkd.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/alt_synch_pipe_jkd.tdf ; +; db/dffpipe_id9.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/dffpipe_id9.tdf ; +; db/cmpr_256.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/cmpr_256.tdf ; +; db/cmpr_156.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/cmpr_156.tdf ; +; db/cntr_t2e.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/cntr_t2e.tdf ; +; db/mux_a18.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/mux_a18.tdf ; +; db/dcfifo_3fh1.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/dcfifo_3fh1.tdf ; +; db/a_graycounter_j47.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/a_graycounter_j47.tdf ; +; db/a_graycounter_gic.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/a_graycounter_gic.tdf ; +; db/altsyncram_ci31.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/altsyncram_ci31.tdf ; +; db/alt_synch_pipe_kkd.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/alt_synch_pipe_kkd.tdf ; +; db/dffpipe_jd9.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/dffpipe_jd9.tdf ; +; db/alt_synch_pipe_lkd.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/alt_synch_pipe_lkd.tdf ; +; db/dffpipe_kd9.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/dffpipe_kd9.tdf ; +; db/altpll_41p2.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/altpll_41p2.tdf ; +; lpm_bustri.tdf ; yes ; Megafunction ; c:/altera/91sp2/quartus/libraries/megafunctions/lpm_bustri.tdf ; +; lpm_shiftreg.tdf ; yes ; Megafunction ; c:/altera/91sp2/quartus/libraries/megafunctions/lpm_shiftreg.tdf ; +; dcfifo.tdf ; yes ; Megafunction ; c:/altera/91sp2/quartus/libraries/megafunctions/dcfifo.tdf ; +; db/dcfifo_8fi1.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/dcfifo_8fi1.tdf ; +; db/a_gray2bin_tgb.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/a_gray2bin_tgb.tdf ; +; db/a_graycounter_s57.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/a_graycounter_s57.tdf ; +; db/a_graycounter_ojc.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/a_graycounter_ojc.tdf ; +; db/a_graycounter_njc.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/a_graycounter_njc.tdf ; +; db/altsyncram_tl31.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/altsyncram_tl31.tdf ; +; db/alt_synch_pipe_rld.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/alt_synch_pipe_rld.tdf ; +; db/dffpipe_qe9.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/dffpipe_qe9.tdf ; +; db/dffpipe_9d9.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/dffpipe_9d9.tdf ; +; db/dffpipe_oe9.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/dffpipe_oe9.tdf ; +; db/alt_synch_pipe_sld.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/alt_synch_pipe_sld.tdf ; +; db/dffpipe_re9.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/dffpipe_re9.tdf ; +; lpm_mux.tdf ; yes ; Megafunction ; c:/altera/91sp2/quartus/libraries/megafunctions/lpm_mux.tdf ; +; db/mux_bbe.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/mux_bbe.tdf ; +; lpm_ff.tdf ; yes ; Megafunction ; c:/altera/91sp2/quartus/libraries/megafunctions/lpm_ff.tdf ; +; altddio_bidir.tdf ; yes ; Megafunction ; c:/altera/91sp2/quartus/libraries/megafunctions/altddio_bidir.tdf ; +; db/ddio_bidir_3jl.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/ddio_bidir_3jl.tdf ; +; db/mux_58e.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/mux_58e.tdf ; +; lpm_latch.tdf ; yes ; Megafunction ; c:/altera/91sp2/quartus/libraries/megafunctions/lpm_latch.tdf ; +; altsyncram.tdf ; yes ; Megafunction ; c:/altera/91sp2/quartus/libraries/megafunctions/altsyncram.tdf ; +; db/altsyncram_lf92.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/altsyncram_lf92.tdf ; +; mux41.bdf ; yes ; Megafunction ; c:/altera/91sp2/quartus/libraries/others/maxplus2/mux41.bdf ; +; db/mux_dcf.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/mux_dcf.tdf ; +; scfifo.tdf ; yes ; Megafunction ; c:/altera/91sp2/quartus/libraries/megafunctions/scfifo.tdf ; +; db/scfifo_lk21.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/scfifo_lk21.tdf ; +; db/a_dpfifo_oq21.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/a_dpfifo_oq21.tdf ; +; db/altsyncram_gj81.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/altsyncram_gj81.tdf ; +; db/cmpr_br8.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/cmpr_br8.tdf ; +; db/cntr_omb.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/cntr_omb.tdf ; +; db/cntr_5n7.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/cntr_5n7.tdf ; +; db/cntr_pmb.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/cntr_pmb.tdf ; +; db/altsyncram_rb92.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/altsyncram_rb92.tdf ; +; db/altsyncram_pf92.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/altsyncram_pf92.tdf ; +; db/mux_96e.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/mux_96e.tdf ; +; db/mux_mpe.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/mux_mpe.tdf ; +; db/mux_f6e.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/mux_f6e.tdf ; +; lpm_constant.tdf ; yes ; Megafunction ; c:/altera/91sp2/quartus/libraries/megafunctions/lpm_constant.tdf ; +; altddio_out.tdf ; yes ; Megafunction ; c:/altera/91sp2/quartus/libraries/megafunctions/altddio_out.tdf ; +; db/ddio_out_o2f.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/ddio_out_o2f.tdf ; +; db/mux_kpe.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/mux_kpe.tdf ; +; db/mux_npe.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/mux_npe.tdf ; +; db/mux_gpe.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/mux_gpe.tdf ; +; db/ddio_out_are.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/ddio_out_are.tdf ; +; db/altpll_isv2.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/altpll_isv2.tdf ; +; altpll4.tdf ; yes ; Auto-Found Wizard-Generated File ; C:/FireBee/FPGA/altpll4.tdf ; +; altpll.inc ; yes ; Auto-Found AHDL File ; c:/altera/91sp2/quartus/libraries/megafunctions/altpll.inc ; +; db/altpll_c6j2.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/altpll_c6j2.tdf ; +; altpll_reconfig1.tdf ; yes ; Auto-Found Wizard-Generated File ; C:/FireBee/FPGA/altpll_reconfig1.tdf ; +; altpll_reconfig1_pllrcfg_t4q.tdf ; yes ; Auto-Found AHDL File ; C:/FireBee/FPGA/altpll_reconfig1_pllrcfg_t4q.tdf ; +; altsyncram.inc ; yes ; Auto-Found AHDL File ; c:/altera/91sp2/quartus/libraries/megafunctions/altsyncram.inc ; +; db/altsyncram_46r.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/altsyncram_46r.tdf ; +; lpm_add_sub.tdf ; yes ; Megafunction ; c:/altera/91sp2/quartus/libraries/megafunctions/lpm_add_sub.tdf ; +; db/add_sub_hpa.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/add_sub_hpa.tdf ; +; db/add_sub_k8a.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/add_sub_k8a.tdf ; +; lpm_compare.tdf ; yes ; Megafunction ; c:/altera/91sp2/quartus/libraries/megafunctions/lpm_compare.tdf ; +; db/cmpr_tnd.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/cmpr_tnd.tdf ; +; lpm_counter.tdf ; yes ; Megafunction ; c:/altera/91sp2/quartus/libraries/megafunctions/lpm_counter.tdf ; +; db/cntr_30l.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/cntr_30l.tdf ; +; db/cntr_qij.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/cntr_qij.tdf ; +; db/cntr_pij.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/cntr_pij.tdf ; +; db/cntr_9cj.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/cntr_9cj.tdf ; +; lpm_decode.tdf ; yes ; Megafunction ; c:/altera/91sp2/quartus/libraries/megafunctions/lpm_decode.tdf ; +; db/decode_2af.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/decode_2af.tdf ; +; db/cntr_mph.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/cntr_mph.tdf ; +; db/ddio_out_31f.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/ddio_out_31f.tdf ; +; lpm_mult.tdf ; yes ; Megafunction ; c:/altera/91sp2/quartus/libraries/megafunctions/lpm_mult.tdf ; +; db/mult_cat.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/mult_cat.tdf ; +; db/mult_aat.tdf ; yes ; Auto-Generated Megafunction ; C:/FireBee/FPGA/db/mult_aat.tdf ; ++----------------------------------------------------------------+-----------------+------------------------------------+--------------------------------------------------------------------------------+ + + ++--------------------------------------------------------------+ +; Analysis & Synthesis Resource Usage Summary ; ++---------------------------------------------+----------------+ +; Resource ; Usage ; ++---------------------------------------------+----------------+ +; Estimated Total logic elements ; 10,706 ; +; ; ; +; Total combinational functions ; 8060 ; +; Logic element usage by number of LUT inputs ; ; +; -- 4 input functions ; 4947 ; +; -- 3 input functions ; 1867 ; +; -- <=2 input functions ; 1246 ; +; ; ; +; Logic elements by mode ; ; +; -- normal mode ; 7261 ; +; -- arithmetic mode ; 799 ; +; ; ; +; Total registers ; 4740 ; +; -- Dedicated logic registers ; 4612 ; +; -- I/O registers ; 256 ; +; ; ; +; I/O pins ; 295 ; +; Total memory bits ; 109344 ; +; Embedded Multiplier 9-bit elements ; 6 ; +; Total PLLs ; 4 ; +; Maximum fan-out node ; MAIN_CLK~input ; +; Maximum fan-out ; 2327 ; +; Total fan-out ; 49317 ; +; Average fan-out ; 3.57 ; ++---------------------------------------------+----------------+ + + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Analysis & Synthesis Resource Utilization by Entity ; ++-----------------------------------------------------------------------------+-------------------+--------------+-------------+--------------+---------+-----------+------+--------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------+ +; Compilation Hierarchy Node ; LC Combinationals ; LC Registers ; Memory Bits ; DSP Elements ; DSP 9x9 ; DSP 18x18 ; Pins ; Virtual Pins ; Full Hierarchy Name ; Library Name ; ++-----------------------------------------------------------------------------+-------------------+--------------+-------------+--------------+---------+-----------+------+--------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------+ +; |firebee1 ; 8060 (10) ; 4612 (0) ; 109344 ; 6 ; 0 ; 3 ; 295 ; 0 ; |firebee1 ; work ; +; |DSP:Mathias_Alles| ; 10 (10) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|DSP:Mathias_Alles ; ; +; |FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden| ; 3814 (634) ; 1633 (114) ; 16384 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden ; ; +; |WF1772IP_TOP_SOC:I_FDC| ; 944 (24) ; 406 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC ; ; +; |WF1772IP_AM_DETECTOR:I_AM_DETECTOR| ; 39 (39) ; 27 (27) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_AM_DETECTOR:I_AM_DETECTOR ; ; +; |WF1772IP_CONTROL:I_CONTROL| ; 533 (533) ; 197 (197) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL ; ; +; |WF1772IP_CRC_LOGIC:I_CRC_LOGIC| ; 40 (40) ; 16 (16) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CRC_LOGIC:I_CRC_LOGIC ; ; +; |WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL| ; 104 (104) ; 38 (38) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL ; ; +; |WF1772IP_REGISTERS:I_REGISTERS| ; 86 (86) ; 48 (48) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS ; ; +; |WF1772IP_TRANSCEIVER:I_TRANSCEIVER| ; 118 (118) ; 80 (80) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER ; ; +; |WF2149IP_TOP_SOC:I_SOUND| ; 445 (32) ; 210 (29) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND ; ; +; |WF2149IP_WAVE:I_PSG_WAVE| ; 413 (413) ; 181 (181) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE ; ; +; |WF5380_TOP_SOC:I_SCSI| ; 0 (0) ; 1 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI ; ; +; |WF5380_CONTROL:I_CONTROL| ; 0 (0) ; 1 (1) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL ; ; +; |WF6850IP_TOP_SOC:I_ACIA_KEYBOARD| ; 199 (2) ; 97 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD ; ; +; |WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS| ; 16 (16) ; 11 (11) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS ; ; +; |WF6850IP_RECEIVE:I_UART_RECEIVE| ; 94 (94) ; 47 (47) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_RECEIVE:I_UART_RECEIVE ; ; +; |WF6850IP_TRANSMIT:I_UART_TRANSMIT| ; 87 (87) ; 39 (39) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_TRANSMIT:I_UART_TRANSMIT ; ; +; |WF6850IP_TOP_SOC:I_ACIA_MIDI| ; 203 (2) ; 97 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI ; ; +; |WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS| ; 20 (20) ; 11 (11) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS ; ; +; |WF6850IP_RECEIVE:I_UART_RECEIVE| ; 94 (94) ; 47 (47) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_RECEIVE:I_UART_RECEIVE ; ; +; |WF6850IP_TRANSMIT:I_UART_TRANSMIT| ; 87 (87) ; 39 (39) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_TRANSMIT:I_UART_TRANSMIT ; ; +; |WF68901IP_TOP_SOC:I_MFP| ; 1199 (178) ; 460 (2) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP ; ; +; |WF68901IP_GPIO:I_GPIO| ; 25 (25) ; 24 (24) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO ; ; +; |WF68901IP_INTERRUPTS:I_INTERRUPTS| ; 273 (273) ; 128 (128) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS ; ; +; |WF68901IP_TIMERS:I_TIMERS| ; 434 (434) ; 166 (166) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS ; ; +; |WF68901IP_USART_TOP:I_USART| ; 289 (4) ; 140 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART ; ; +; |WF68901IP_USART_CTRL:I_USART_CTRL| ; 38 (38) ; 49 (49) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL ; ; +; |WF68901IP_USART_RX:I_USART_RECEIVE| ; 159 (159) ; 56 (56) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_RX:I_USART_RECEIVE ; ; +; |WF68901IP_USART_TX:I_USART_TRANSMIT| ; 88 (88) ; 35 (35) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_TX:I_USART_TRANSMIT ; ; +; |dcfifo0:RDF| ; 94 (0) ; 124 (0) ; 8192 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF ; ; +; |dcfifo_mixed_widths:dcfifo_mixed_widths_component| ; 94 (0) ; 124 (0) ; 8192 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component ; ; +; |dcfifo_0hh1:auto_generated| ; 94 (17) ; 124 (42) ; 8192 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated ; ; +; |a_gray2bin_lfb:wrptr_g_gray2bin| ; 7 (7) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_gray2bin_lfb:wrptr_g_gray2bin ; ; +; |a_gray2bin_lfb:ws_dgrp_gray2bin| ; 8 (8) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_gray2bin_lfb:ws_dgrp_gray2bin ; ; +; |a_graycounter_fic:wrptr_g1p| ; 16 (16) ; 13 (13) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p ; ; +; |a_graycounter_k47:rdptr_g1p| ; 17 (17) ; 13 (13) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_k47:rdptr_g1p ; ; +; |alt_synch_pipe_ikd:rs_dgwp| ; 0 (0) ; 18 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_ikd:rs_dgwp ; ; +; |dffpipe_hd9:dffpipe12| ; 0 (0) ; 18 (18) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_ikd:rs_dgwp|dffpipe_hd9:dffpipe12 ; ; +; |alt_synch_pipe_jkd:ws_dgrp| ; 0 (0) ; 18 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_jkd:ws_dgrp ; ; +; |dffpipe_id9:dffpipe17| ; 0 (0) ; 18 (18) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_jkd:ws_dgrp|dffpipe_id9:dffpipe17 ; ; +; |altsyncram_bi31:fifo_ram| ; 0 (0) ; 0 (0) ; 8192 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram ; ; +; |cmpr_156:rdempty_eq_comp1_msb| ; 1 (1) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|cmpr_156:rdempty_eq_comp1_msb ; ; +; |cmpr_156:wrfull_eq_comp1_msb| ; 1 (1) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|cmpr_156:wrfull_eq_comp1_msb ; ; +; |cntr_t2e:cntr_b| ; 3 (3) ; 2 (2) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|cntr_t2e:cntr_b ; ; +; |dffpipe_gd9:ws_brp| ; 0 (0) ; 8 (8) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|dffpipe_gd9:ws_brp ; ; +; |dffpipe_pe9:ws_bwp| ; 0 (0) ; 10 (10) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|dffpipe_pe9:ws_bwp ; ; +; |mux_a18:rdemp_eq_comp_lsb_mux| ; 7 (7) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|mux_a18:rdemp_eq_comp_lsb_mux ; ; +; |mux_a18:rdemp_eq_comp_msb_mux| ; 5 (5) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|mux_a18:rdemp_eq_comp_msb_mux ; ; +; |mux_a18:wrfull_eq_comp_lsb_mux| ; 7 (7) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|mux_a18:wrfull_eq_comp_lsb_mux ; ; +; |mux_a18:wrfull_eq_comp_msb_mux| ; 5 (5) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|mux_a18:wrfull_eq_comp_msb_mux ; ; +; |dcfifo1:WRF| ; 96 (0) ; 124 (0) ; 8192 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF ; ; +; |dcfifo_mixed_widths:dcfifo_mixed_widths_component| ; 96 (0) ; 124 (0) ; 8192 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component ; ; +; |dcfifo_3fh1:auto_generated| ; 96 (18) ; 124 (42) ; 8192 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated ; ; +; |a_gray2bin_lfb:rdptr_g_gray2bin| ; 8 (8) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_gray2bin_lfb:rdptr_g_gray2bin ; ; +; |a_gray2bin_lfb:rs_dgwp_gray2bin| ; 8 (8) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_gray2bin_lfb:rs_dgwp_gray2bin ; ; +; |a_graycounter_gic:wrptr_g1p| ; 16 (16) ; 13 (13) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_gic:wrptr_g1p ; ; +; |a_graycounter_j47:rdptr_g1p| ; 16 (16) ; 13 (13) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p ; ; +; |alt_synch_pipe_kkd:rs_dgwp| ; 0 (0) ; 18 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_kkd:rs_dgwp ; ; +; |dffpipe_jd9:dffpipe12| ; 0 (0) ; 18 (18) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_kkd:rs_dgwp|dffpipe_jd9:dffpipe12 ; ; +; |alt_synch_pipe_lkd:ws_dgrp| ; 0 (0) ; 18 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_lkd:ws_dgrp ; ; +; |dffpipe_kd9:dffpipe15| ; 0 (0) ; 18 (18) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_lkd:ws_dgrp|dffpipe_kd9:dffpipe15 ; ; +; |altsyncram_ci31:fifo_ram| ; 0 (0) ; 0 (0) ; 8192 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram ; ; +; |cmpr_156:rdempty_eq_comp1_msb| ; 1 (1) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|cmpr_156:rdempty_eq_comp1_msb ; ; +; |cntr_t2e:cntr_b| ; 4 (4) ; 2 (2) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|cntr_t2e:cntr_b ; ; +; |dffpipe_gd9:rs_bwp| ; 0 (0) ; 8 (8) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|dffpipe_gd9:rs_bwp ; ; +; |dffpipe_pe9:rs_brp| ; 0 (0) ; 10 (10) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|dffpipe_pe9:rs_brp ; ; +; |mux_a18:rdemp_eq_comp_lsb_mux| ; 7 (7) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|mux_a18:rdemp_eq_comp_lsb_mux ; ; +; |mux_a18:rdemp_eq_comp_msb_mux| ; 5 (5) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|mux_a18:rdemp_eq_comp_msb_mux ; ; +; |mux_a18:wrfull_eq_comp_lsb_mux| ; 7 (7) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|mux_a18:wrfull_eq_comp_lsb_mux ; ; +; |mux_a18:wrfull_eq_comp_msb_mux| ; 6 (6) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|mux_a18:wrfull_eq_comp_msb_mux ; ; +; |Video:Fredi_Aschwanden| ; 3109 (10) ; 2172 (4) ; 92816 ; 6 ; 0 ; 3 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden ; ; +; |DDR_CTR:DDR_CTR| ; 348 (314) ; 158 (158) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR ; ; +; |lpm_bustri_BYT:$00002| ; 3 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|lpm_bustri_BYT:$00002 ; ; +; |lpm_bustri:lpm_bustri_component| ; 3 (3) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|lpm_bustri_BYT:$00002|lpm_bustri:lpm_bustri_component ; ; +; |lpm_bustri_BYT:$00004| ; 31 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|lpm_bustri_BYT:$00004 ; ; +; |lpm_bustri:lpm_bustri_component| ; 31 (31) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|lpm_bustri_BYT:$00004|lpm_bustri:lpm_bustri_component ; ; +; |VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR| ; 1260 (1013) ; 529 (529) ; 0 ; 6 ; 0 ; 3 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR ; ; +; |lpm_bustri_WORD:$00000| ; 187 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_bustri_WORD:$00000 ; ; +; |lpm_bustri:lpm_bustri_component| ; 187 (187) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_bustri_WORD:$00000|lpm_bustri:lpm_bustri_component ; ; +; |lpm_bustri_WORD:$00002| ; 60 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_bustri_WORD:$00002 ; ; +; |lpm_bustri:lpm_bustri_component| ; 60 (60) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_bustri_WORD:$00002|lpm_bustri:lpm_bustri_component ; ; +; |lpm_mult:op_12| ; 0 (0) ; 0 (0) ; 0 ; 2 ; 0 ; 1 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_mult:op_12 ; ; +; |mult_aat:auto_generated| ; 0 (0) ; 0 (0) ; 0 ; 2 ; 0 ; 1 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_mult:op_12|mult_aat:auto_generated ; ; +; |lpm_mult:op_14| ; 0 (0) ; 0 (0) ; 0 ; 2 ; 0 ; 1 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_mult:op_14 ; ; +; |mult_cat:auto_generated| ; 0 (0) ; 0 (0) ; 0 ; 2 ; 0 ; 1 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_mult:op_14|mult_cat:auto_generated ; ; +; |lpm_mult:op_6| ; 0 (0) ; 0 (0) ; 0 ; 2 ; 0 ; 1 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_mult:op_6 ; ; +; |mult_aat:auto_generated| ; 0 (0) ; 0 (0) ; 0 ; 2 ; 0 ; 1 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_mult:op_6|mult_aat:auto_generated ; ; +; |altddio_bidir0:inst1| ; 0 (0) ; 96 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altddio_bidir0:inst1 ; ; +; |altddio_bidir:altddio_bidir_component| ; 0 (0) ; 96 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component ; ; +; |ddio_bidir_3jl:auto_generated| ; 0 (0) ; 96 (96) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated ; ; +; |altddio_out0:inst2| ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altddio_out0:inst2 ; ; +; |altddio_out:altddio_out_component| ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altddio_out0:inst2|altddio_out:altddio_out_component ; ; +; |ddio_out_are:auto_generated| ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altddio_out0:inst2|altddio_out:altddio_out_component|ddio_out_are:auto_generated ; ; +; |altddio_out2:inst5| ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altddio_out2:inst5 ; ; +; |altddio_out:altddio_out_component| ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altddio_out2:inst5|altddio_out:altddio_out_component ; ; +; |ddio_out_o2f:auto_generated| ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altddio_out2:inst5|altddio_out:altddio_out_component|ddio_out_o2f:auto_generated ; ; +; |altdpram0:ST_CLUT_BLUE| ; 0 (0) ; 0 (0) ; 48 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altdpram0:ST_CLUT_BLUE ; ; +; |altsyncram:altsyncram_component| ; 0 (0) ; 0 (0) ; 48 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altdpram0:ST_CLUT_BLUE|altsyncram:altsyncram_component ; ; +; |altsyncram_rb92:auto_generated| ; 0 (0) ; 0 (0) ; 48 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altdpram0:ST_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated ; ; +; |altdpram0:ST_CLUT_GREEN| ; 0 (0) ; 0 (0) ; 48 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altdpram0:ST_CLUT_GREEN ; ; +; |altsyncram:altsyncram_component| ; 0 (0) ; 0 (0) ; 48 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altdpram0:ST_CLUT_GREEN|altsyncram:altsyncram_component ; ; +; |altsyncram_rb92:auto_generated| ; 0 (0) ; 0 (0) ; 48 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altdpram0:ST_CLUT_GREEN|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated ; ; +; |altdpram0:ST_CLUT_RED| ; 0 (0) ; 0 (0) ; 48 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altdpram0:ST_CLUT_RED ; ; +; |altsyncram:altsyncram_component| ; 0 (0) ; 0 (0) ; 48 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altdpram0:ST_CLUT_RED|altsyncram:altsyncram_component ; ; +; |altsyncram_rb92:auto_generated| ; 0 (0) ; 0 (0) ; 48 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altdpram0:ST_CLUT_RED|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated ; ; +; |altdpram1:FALCON_CLUT_BLUE| ; 0 (0) ; 0 (0) ; 1536 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_BLUE ; ; +; |altsyncram:altsyncram_component| ; 0 (0) ; 0 (0) ; 1536 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_BLUE|altsyncram:altsyncram_component ; ; +; |altsyncram_lf92:auto_generated| ; 0 (0) ; 0 (0) ; 1536 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated ; ; +; |altdpram1:FALCON_CLUT_GREEN| ; 0 (0) ; 0 (0) ; 1536 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_GREEN ; ; +; |altsyncram:altsyncram_component| ; 0 (0) ; 0 (0) ; 1536 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_GREEN|altsyncram:altsyncram_component ; ; +; |altsyncram_lf92:auto_generated| ; 0 (0) ; 0 (0) ; 1536 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_GREEN|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated ; ; +; |altdpram1:FALCON_CLUT_RED| ; 0 (0) ; 0 (0) ; 1536 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED ; ; +; |altsyncram:altsyncram_component| ; 0 (0) ; 0 (0) ; 1536 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component ; ; +; |altsyncram_lf92:auto_generated| ; 0 (0) ; 0 (0) ; 1536 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated ; ; +; |altdpram2:ACP_CLUT_RAM54| ; 0 (0) ; 0 (0) ; 2048 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54 ; ; +; |altsyncram:altsyncram_component| ; 0 (0) ; 0 (0) ; 2048 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component ; ; +; |altsyncram_pf92:auto_generated| ; 0 (0) ; 0 (0) ; 2048 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated ; ; +; |altdpram2:ACP_CLUT_RAM55| ; 0 (0) ; 0 (0) ; 2048 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55 ; ; +; |altsyncram:altsyncram_component| ; 0 (0) ; 0 (0) ; 2048 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component ; ; +; |altsyncram_pf92:auto_generated| ; 0 (0) ; 0 (0) ; 2048 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated ; ; +; |altdpram2:ACP_CLUT_RAM| ; 0 (0) ; 0 (0) ; 2048 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM ; ; +; |altsyncram:altsyncram_component| ; 0 (0) ; 0 (0) ; 2048 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM|altsyncram:altsyncram_component ; ; +; |altsyncram_pf92:auto_generated| ; 0 (0) ; 0 (0) ; 2048 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated ; ; +; |lpm_bustri_LONG:inst119| ; 5 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_bustri_LONG:inst119 ; ; +; |lpm_bustri:lpm_bustri_component| ; 5 (5) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_bustri_LONG:inst119|lpm_bustri:lpm_bustri_component ; ; +; |lpm_ff0:inst13| ; 0 (0) ; 32 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff0:inst13 ; ; +; |lpm_ff:lpm_ff_component| ; 0 (0) ; 32 (32) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component ; ; +; |lpm_ff0:inst14| ; 0 (0) ; 32 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff0:inst14 ; ; +; |lpm_ff:lpm_ff_component| ; 0 (0) ; 32 (32) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component ; ; +; |lpm_ff0:inst15| ; 0 (0) ; 32 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff0:inst15 ; ; +; |lpm_ff:lpm_ff_component| ; 0 (0) ; 32 (32) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component ; ; +; |lpm_ff0:inst16| ; 0 (0) ; 32 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff0:inst16 ; ; +; |lpm_ff:lpm_ff_component| ; 0 (0) ; 32 (32) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component ; ; +; |lpm_ff0:inst17| ; 0 (0) ; 32 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff0:inst17 ; ; +; |lpm_ff:lpm_ff_component| ; 0 (0) ; 32 (32) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff0:inst17|lpm_ff:lpm_ff_component ; ; +; |lpm_ff0:inst18| ; 0 (0) ; 32 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff0:inst18 ; ; +; |lpm_ff:lpm_ff_component| ; 0 (0) ; 32 (32) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff0:inst18|lpm_ff:lpm_ff_component ; ; +; |lpm_ff0:inst19| ; 0 (0) ; 32 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff0:inst19 ; ; +; |lpm_ff:lpm_ff_component| ; 0 (0) ; 32 (32) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff0:inst19|lpm_ff:lpm_ff_component ; ; +; |lpm_ff1:inst12| ; 0 (0) ; 32 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff1:inst12 ; ; +; |lpm_ff:lpm_ff_component| ; 0 (0) ; 32 (32) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component ; ; +; |lpm_ff1:inst20| ; 0 (0) ; 32 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff1:inst20 ; ; +; |lpm_ff:lpm_ff_component| ; 0 (0) ; 32 (32) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component ; ; +; |lpm_ff1:inst3| ; 0 (0) ; 32 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff1:inst3 ; ; +; |lpm_ff:lpm_ff_component| ; 0 (0) ; 32 (32) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component ; ; +; |lpm_ff1:inst4| ; 0 (0) ; 32 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff1:inst4 ; ; +; |lpm_ff:lpm_ff_component| ; 0 (0) ; 32 (32) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component ; ; +; |lpm_ff1:inst9| ; 0 (0) ; 24 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff1:inst9 ; ; +; |lpm_ff:lpm_ff_component| ; 0 (0) ; 24 (24) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff1:inst9|lpm_ff:lpm_ff_component ; ; +; |lpm_ff3:inst46| ; 0 (0) ; 18 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff3:inst46 ; ; +; |lpm_ff:lpm_ff_component| ; 0 (0) ; 18 (18) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff3:inst46|lpm_ff:lpm_ff_component ; ; +; |lpm_ff3:inst47| ; 0 (0) ; 18 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff3:inst47 ; ; +; |lpm_ff:lpm_ff_component| ; 0 (0) ; 18 (18) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff3:inst47|lpm_ff:lpm_ff_component ; ; +; |lpm_ff3:inst49| ; 0 (0) ; 9 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff3:inst49 ; ; +; |lpm_ff:lpm_ff_component| ; 0 (0) ; 9 (9) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff3:inst49|lpm_ff:lpm_ff_component ; ; +; |lpm_ff3:inst52| ; 0 (0) ; 9 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff3:inst52 ; ; +; |lpm_ff:lpm_ff_component| ; 0 (0) ; 9 (9) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff3:inst52|lpm_ff:lpm_ff_component ; ; +; |lpm_ff4:inst10| ; 0 (0) ; 16 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff4:inst10 ; ; +; |lpm_ff:lpm_ff_component| ; 0 (0) ; 16 (16) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff4:inst10|lpm_ff:lpm_ff_component ; ; +; |lpm_ff5:inst11| ; 0 (0) ; 8 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff5:inst11 ; ; +; |lpm_ff:lpm_ff_component| ; 0 (0) ; 8 (8) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff5:inst11|lpm_ff:lpm_ff_component ; ; +; |lpm_ff5:inst97| ; 0 (0) ; 5 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff5:inst97 ; ; +; |lpm_ff:lpm_ff_component| ; 0 (0) ; 5 (5) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component ; ; +; |lpm_ff6:inst71| ; 0 (0) ; 128 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff6:inst71 ; ; +; |lpm_ff:lpm_ff_component| ; 0 (0) ; 128 (128) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component ; ; +; |lpm_ff6:inst94| ; 0 (0) ; 128 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff6:inst94 ; ; +; |lpm_ff:lpm_ff_component| ; 0 (0) ; 128 (128) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_ff6:inst94|lpm_ff:lpm_ff_component ; ; +; |lpm_fifoDZ:inst63| ; 22 (0) ; 21 (0) ; 16384 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_fifoDZ:inst63 ; ; +; |scfifo:scfifo_component| ; 22 (0) ; 21 (0) ; 16384 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component ; ; +; |scfifo_lk21:auto_generated| ; 22 (0) ; 21 (0) ; 16384 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated ; ; +; |a_dpfifo_oq21:dpfifo| ; 22 (9) ; 21 (8) ; 16384 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo ; ; +; |altsyncram_gj81:FIFOram| ; 0 (0) ; 0 (0) ; 16384 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram ; ; +; |cntr_omb:rd_ptr_msb| ; 6 (6) ; 6 (6) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb ; ; +; |cntr_pmb:wr_ptr| ; 7 (7) ; 7 (7) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_pmb:wr_ptr ; ; +; |lpm_fifo_dc0:inst| ; 66 (0) ; 98 (0) ; 65536 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_fifo_dc0:inst ; ; +; |dcfifo:dcfifo_component| ; 66 (0) ; 98 (0) ; 65536 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component ; ; +; |dcfifo_8fi1:auto_generated| ; 66 (12) ; 98 (20) ; 65536 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated ; ; +; |a_gray2bin_tgb:wrptr_g_gray2bin| ; 9 (9) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_gray2bin_tgb:wrptr_g_gray2bin ; ; +; |a_gray2bin_tgb:ws_dgrp_gray2bin| ; 9 (9) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_gray2bin_tgb:ws_dgrp_gray2bin ; ; +; |a_graycounter_njc:wrptr_gp| ; 17 (17) ; 14 (14) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp ; ; +; |a_graycounter_s57:rdptr_g1p| ; 19 (19) ; 14 (14) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p ; ; +; |alt_synch_pipe_sld:ws_dgrp| ; 0 (0) ; 30 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp ; ; +; |dffpipe_re9:dffpipe22| ; 0 (0) ; 30 (30) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22 ; ; +; |altsyncram_tl31:fifo_ram| ; 0 (0) ; 0 (0) ; 65536 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram ; ; +; |dffpipe_9d9:wraclr| ; 0 (0) ; 2 (2) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_9d9:wraclr ; ; +; |dffpipe_oe9:ws_brp| ; 0 (0) ; 9 (9) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_brp ; ; +; |dffpipe_oe9:ws_bwp| ; 0 (0) ; 9 (9) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_bwp ; ; +; |lpm_latch0:inst27| ; 32 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_latch0:inst27 ; ; +; |lpm_latch:lpm_latch_component| ; 32 (32) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component ; ; +; |lpm_mux0:inst21| ; 48 (0) ; 96 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_mux0:inst21 ; ; +; |lpm_mux:lpm_mux_component| ; 48 (0) ; 96 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component ; ; +; |mux_gpe:auto_generated| ; 48 (48) ; 96 (96) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated ; ; +; |lpm_mux1:inst24| ; 80 (0) ; 81 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_mux1:inst24 ; ; +; |lpm_mux:lpm_mux_component| ; 80 (0) ; 81 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component ; ; +; |mux_npe:auto_generated| ; 80 (80) ; 81 (81) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated ; ; +; |lpm_mux2:inst25| ; 80 (0) ; 41 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_mux2:inst25 ; ; +; |lpm_mux:lpm_mux_component| ; 80 (0) ; 41 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component ; ; +; |mux_mpe:auto_generated| ; 80 (80) ; 41 (41) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated ; ; +; |lpm_mux3:inst102| ; 1 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_mux3:inst102 ; ; +; |lpm_mux:lpm_mux_component| ; 1 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_mux3:inst102|lpm_mux:lpm_mux_component ; ; +; |mux_96e:auto_generated| ; 1 (1) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_mux3:inst102|lpm_mux:lpm_mux_component|mux_96e:auto_generated ; ; +; |lpm_mux4:inst81| ; 7 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_mux4:inst81 ; ; +; |lpm_mux:lpm_mux_component| ; 7 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_mux4:inst81|lpm_mux:lpm_mux_component ; ; +; |mux_f6e:auto_generated| ; 7 (7) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_mux4:inst81|lpm_mux:lpm_mux_component|mux_f6e:auto_generated ; ; +; |lpm_mux5:inst22| ; 64 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_mux5:inst22 ; ; +; |lpm_mux:lpm_mux_component| ; 64 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_mux5:inst22|lpm_mux:lpm_mux_component ; ; +; |mux_58e:auto_generated| ; 64 (64) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_mux5:inst22|lpm_mux:lpm_mux_component|mux_58e:auto_generated ; ; +; |lpm_mux6:inst7| ; 90 (0) ; 67 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_mux6:inst7 ; ; +; |lpm_mux:lpm_mux_component| ; 90 (0) ; 67 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component ; ; +; |mux_kpe:auto_generated| ; 90 (90) ; 67 (67) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated ; ; +; |lpm_muxDZ:inst62| ; 128 (0) ; 128 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_muxDZ:inst62 ; ; +; |lpm_mux:lpm_mux_component| ; 128 (0) ; 128 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component ; ; +; |mux_dcf:auto_generated| ; 128 (128) ; 128 (128) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated ; ; +; |lpm_muxVDM:inst100| ; 736 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_muxVDM:inst100 ; ; +; |lpm_mux:lpm_mux_component| ; 736 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_muxVDM:inst100|lpm_mux:lpm_mux_component ; ; +; |mux_bbe:auto_generated| ; 736 (736) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_muxVDM:inst100|lpm_mux:lpm_mux_component|mux_bbe:auto_generated ; ; +; |lpm_shiftreg0:sr0| ; 15 (0) ; 16 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg0:sr0 ; ; +; |lpm_shiftreg:lpm_shiftreg_component| ; 15 (15) ; 16 (16) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component ; ; +; |lpm_shiftreg0:sr1| ; 15 (0) ; 16 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg0:sr1 ; ; +; |lpm_shiftreg:lpm_shiftreg_component| ; 15 (15) ; 16 (16) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg0:sr1|lpm_shiftreg:lpm_shiftreg_component ; ; +; |lpm_shiftreg0:sr2| ; 15 (0) ; 16 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg0:sr2 ; ; +; |lpm_shiftreg:lpm_shiftreg_component| ; 15 (15) ; 16 (16) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component ; ; +; |lpm_shiftreg0:sr3| ; 15 (0) ; 16 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg0:sr3 ; ; +; |lpm_shiftreg:lpm_shiftreg_component| ; 15 (15) ; 16 (16) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg0:sr3|lpm_shiftreg:lpm_shiftreg_component ; ; +; |lpm_shiftreg0:sr4| ; 15 (0) ; 16 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg0:sr4 ; ; +; |lpm_shiftreg:lpm_shiftreg_component| ; 15 (15) ; 16 (16) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg0:sr4|lpm_shiftreg:lpm_shiftreg_component ; ; +; |lpm_shiftreg0:sr5| ; 15 (0) ; 16 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg0:sr5 ; ; +; |lpm_shiftreg:lpm_shiftreg_component| ; 15 (15) ; 16 (16) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg0:sr5|lpm_shiftreg:lpm_shiftreg_component ; ; +; |lpm_shiftreg0:sr6| ; 16 (0) ; 16 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg0:sr6 ; ; +; |lpm_shiftreg:lpm_shiftreg_component| ; 16 (16) ; 16 (16) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg0:sr6|lpm_shiftreg:lpm_shiftreg_component ; ; +; |lpm_shiftreg0:sr7| ; 16 (0) ; 16 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg0:sr7 ; ; +; |lpm_shiftreg:lpm_shiftreg_component| ; 16 (16) ; 16 (16) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg0:sr7|lpm_shiftreg:lpm_shiftreg_component ; ; +; |lpm_shiftreg4:inst26| ; 0 (0) ; 5 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg4:inst26 ; ; +; |lpm_shiftreg:lpm_shiftreg_component| ; 0 (0) ; 5 (5) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg4:inst26|lpm_shiftreg:lpm_shiftreg_component ; ; +; |lpm_shiftreg6:inst92| ; 0 (0) ; 5 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg6:inst92 ; ; +; |lpm_shiftreg:lpm_shiftreg_component| ; 0 (0) ; 5 (5) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|lpm_shiftreg6:inst92|lpm_shiftreg:lpm_shiftreg_component ; ; +; |mux41:inst40| ; 1 (1) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|mux41:inst40 ; ; +; |mux41:inst41| ; 1 (1) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|mux41:inst41 ; ; +; |mux41:inst42| ; 2 (2) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|mux41:inst42 ; ; +; |mux41:inst43| ; 2 (2) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|mux41:inst43 ; ; +; |mux41:inst44| ; 2 (2) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|mux41:inst44 ; ; +; |mux41:inst45| ; 2 (2) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|Video:Fredi_Aschwanden|mux41:inst45 ; ; +; |altddio_out3:inst5| ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altddio_out3:inst5 ; ; +; |altddio_out:altddio_out_component| ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altddio_out3:inst5|altddio_out:altddio_out_component ; ; +; |ddio_out_31f:auto_generated| ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altddio_out3:inst5|altddio_out:altddio_out_component|ddio_out_31f:auto_generated ; ; +; |altddio_out3:inst6| ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altddio_out3:inst6 ; ; +; |altddio_out:altddio_out_component| ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altddio_out3:inst6|altddio_out:altddio_out_component ; ; +; |ddio_out_31f:auto_generated| ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altddio_out3:inst6|altddio_out:altddio_out_component|ddio_out_31f:auto_generated ; ; +; |altddio_out3:inst8| ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altddio_out3:inst8 ; ; +; |altddio_out:altddio_out_component| ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altddio_out3:inst8|altddio_out:altddio_out_component ; ; +; |ddio_out_31f:auto_generated| ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altddio_out3:inst8|altddio_out:altddio_out_component|ddio_out_31f:auto_generated ; ; +; |altddio_out3:inst9| ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altddio_out3:inst9 ; work ; +; |altddio_out:altddio_out_component| ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altddio_out3:inst9|altddio_out:altddio_out_component ; work ; +; |ddio_out_31f:auto_generated| ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altddio_out3:inst9|altddio_out:altddio_out_component|ddio_out_31f:auto_generated ; work ; +; |altpll1:inst| ; 1 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altpll1:inst ; ; +; |altpll:altpll_component| ; 1 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altpll1:inst|altpll:altpll_component ; ; +; |altpll_pul2:auto_generated| ; 1 (1) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated ; ; +; |altpll2:inst12| ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altpll2:inst12 ; ; +; |altpll:altpll_component| ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altpll2:inst12|altpll:altpll_component ; ; +; |altpll_isv2:auto_generated| ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated ; ; +; |altpll3:inst13| ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altpll3:inst13 ; ; +; |altpll:altpll_component| ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altpll3:inst13|altpll:altpll_component ; ; +; |altpll_41p2:auto_generated| ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated ; ; +; |altpll4:inst22| ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altpll4:inst22 ; ; +; |altpll:altpll_component| ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altpll4:inst22|altpll:altpll_component ; ; +; |altpll_c6j2:auto_generated| ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated ; ; +; |altpll_reconfig1:inst7| ; 309 (0) ; 128 (0) ; 144 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altpll_reconfig1:inst7 ; ; +; |altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component| ; 309 (211) ; 128 (80) ; 144 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component ; ; +; |altsyncram:altsyncram4| ; 0 (0) ; 0 (0) ; 144 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|altsyncram:altsyncram4 ; ; +; |altsyncram_46r:auto_generated| ; 0 (0) ; 0 (0) ; 144 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|altsyncram:altsyncram4|altsyncram_46r:auto_generated ; ; +; |lpm_compare:cmpr7| ; 3 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_compare:cmpr7 ; ; +; |cmpr_tnd:auto_generated| ; 3 (3) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_compare:cmpr7|cmpr_tnd:auto_generated ; ; +; |lpm_counter:cntr12| ; 10 (0) ; 8 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr12 ; ; +; |cntr_30l:auto_generated| ; 10 (10) ; 8 (8) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr12|cntr_30l:auto_generated ; ; +; |lpm_counter:cntr13| ; 7 (0) ; 6 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr13 ; ; +; |cntr_qij:auto_generated| ; 7 (7) ; 6 (6) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr13|cntr_qij:auto_generated ; ; +; |lpm_counter:cntr14| ; 5 (0) ; 5 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr14 ; ; +; |cntr_pij:auto_generated| ; 5 (5) ; 5 (5) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr14|cntr_pij:auto_generated ; ; +; |lpm_counter:cntr15| ; 18 (0) ; 8 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr15 ; ; +; |cntr_30l:auto_generated| ; 18 (18) ; 8 (8) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr15|cntr_30l:auto_generated ; ; +; |lpm_counter:cntr1| ; 41 (0) ; 8 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr1 ; ; +; |cntr_30l:auto_generated| ; 41 (41) ; 8 (8) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr1|cntr_30l:auto_generated ; ; +; |lpm_counter:cntr2| ; 9 (0) ; 8 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr2 ; ; +; |cntr_9cj:auto_generated| ; 9 (9) ; 8 (8) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr2|cntr_9cj:auto_generated ; ; +; |lpm_counter:cntr3| ; 5 (0) ; 5 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr3 ; ; +; |cntr_pij:auto_generated| ; 5 (5) ; 5 (5) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr3|cntr_pij:auto_generated ; ; +; |interrupt_handler:nobody| ; 789 (711) ; 633 (633) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|interrupt_handler:nobody ; ; +; |lpm_bustri_BYT:$00000| ; 16 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|interrupt_handler:nobody|lpm_bustri_BYT:$00000 ; ; +; |lpm_bustri:lpm_bustri_component| ; 16 (16) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|interrupt_handler:nobody|lpm_bustri_BYT:$00000|lpm_bustri:lpm_bustri_component ; ; +; |lpm_bustri_BYT:$00002| ; 24 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|interrupt_handler:nobody|lpm_bustri_BYT:$00002 ; ; +; |lpm_bustri:lpm_bustri_component| ; 24 (24) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|interrupt_handler:nobody|lpm_bustri_BYT:$00002|lpm_bustri:lpm_bustri_component ; ; +; |lpm_bustri_BYT:$00004| ; 16 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|interrupt_handler:nobody|lpm_bustri_BYT:$00004 ; ; +; |lpm_bustri:lpm_bustri_component| ; 16 (16) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|interrupt_handler:nobody|lpm_bustri_BYT:$00004|lpm_bustri:lpm_bustri_component ; ; +; |lpm_bustri_BYT:$00006| ; 22 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|interrupt_handler:nobody|lpm_bustri_BYT:$00006 ; ; +; |lpm_bustri:lpm_bustri_component| ; 22 (22) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|interrupt_handler:nobody|lpm_bustri_BYT:$00006|lpm_bustri:lpm_bustri_component ; ; +; |lpm_counter0:inst18| ; 18 (0) ; 18 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|lpm_counter0:inst18 ; ; +; |lpm_counter:lpm_counter_component| ; 18 (0) ; 18 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|lpm_counter0:inst18|lpm_counter:lpm_counter_component ; ; +; |cntr_mph:auto_generated| ; 18 (18) ; 18 (18) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated ; ; +; |lpm_ff0:inst1| ; 0 (0) ; 28 (0) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|lpm_ff0:inst1 ; ; +; |lpm_ff:lpm_ff_component| ; 0 (0) ; 28 (28) ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; |firebee1|lpm_ff0:inst1|lpm_ff:lpm_ff_component ; ; ++-----------------------------------------------------------------------------+-------------------+--------------+-------------+--------------+---------+-----------+------+--------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------+ +Note: For table entries with two numbers listed, the numbers in parentheses indicate the number of resources of the given type used by the specific entity alone. The numbers listed outside of parentheses indicate the total resources of the given type used by the specific entity and all of its sub-entities in the hierarchy. + + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Analysis & Synthesis RAM Summary ; ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+------------------+--------------+--------------+--------------+--------------+-------+------+ +; Name ; Type ; Mode ; Port A Depth ; Port A Width ; Port B Depth ; Port B Width ; Size ; MIF ; ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+------------------+--------------+--------------+--------------+--------------+-------+------+ +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|ALTSYNCRAM ; AUTO ; Simple Dual Port ; 1024 ; 8 ; 256 ; 32 ; 8192 ; None ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram|ALTSYNCRAM ; AUTO ; Simple Dual Port ; 256 ; 32 ; 1024 ; 8 ; 8192 ; None ; +; Video:Fredi_Aschwanden|altdpram0:ST_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated|ALTSYNCRAM ; AUTO ; True Dual Port ; 16 ; 3 ; 16 ; 3 ; 48 ; None ; +; Video:Fredi_Aschwanden|altdpram0:ST_CLUT_GREEN|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated|ALTSYNCRAM ; AUTO ; True Dual Port ; 16 ; 3 ; 16 ; 3 ; 48 ; None ; +; Video:Fredi_Aschwanden|altdpram0:ST_CLUT_RED|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated|ALTSYNCRAM ; AUTO ; True Dual Port ; 16 ; 3 ; 16 ; 3 ; 48 ; None ; +; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ALTSYNCRAM ; AUTO ; True Dual Port ; 256 ; 6 ; 256 ; 6 ; 1536 ; None ; +; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_GREEN|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ALTSYNCRAM ; AUTO ; True Dual Port ; 256 ; 6 ; 256 ; 6 ; 1536 ; None ; +; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ALTSYNCRAM ; AUTO ; True Dual Port ; 256 ; 6 ; 256 ; 6 ; 1536 ; None ; +; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|ALTSYNCRAM ; AUTO ; True Dual Port ; 256 ; 8 ; 256 ; 8 ; 2048 ; None ; +; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|ALTSYNCRAM ; AUTO ; True Dual Port ; 256 ; 8 ; 256 ; 8 ; 2048 ; None ; +; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|ALTSYNCRAM ; AUTO ; True Dual Port ; 256 ; 8 ; 256 ; 8 ; 2048 ; None ; +; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ALTSYNCRAM ; AUTO ; Simple Dual Port ; 128 ; 128 ; 128 ; 128 ; 16384 ; None ; +; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ALTSYNCRAM ; AUTO ; Simple Dual Port ; 512 ; 128 ; 512 ; 128 ; 65536 ; None ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|altsyncram:altsyncram4|altsyncram_46r:auto_generated|ALTSYNCRAM ; AUTO ; Single Port ; 144 ; 1 ; -- ; -- ; 144 ; None ; ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+------------------+--------------+--------------+--------------+--------------+-------+------+ + + ++-----------------------------------------------------+ +; Analysis & Synthesis DSP Block Usage Summary ; ++---------------------------------------+-------------+ +; Statistic ; Number Used ; ++---------------------------------------+-------------+ +; Simple Multipliers (9-bit) ; 0 ; +; Simple Multipliers (18-bit) ; 3 ; +; Embedded Multiplier Blocks ; -- ; +; Embedded Multiplier 9-bit elements ; 6 ; +; Signed Embedded Multipliers ; 0 ; +; Unsigned Embedded Multipliers ; 3 ; +; Mixed Sign Embedded Multipliers ; 0 ; +; Variable Sign Embedded Multipliers ; 0 ; +; Dedicated Input Shift Register Chains ; 0 ; ++---------------------------------------+-------------+ +Note: number of Embedded Multiplier Blocks used is only available after a successful fit. + + +Encoding Type: One-Hot ++----------------------------------------------------------------------------+ +; State Machine - |firebee1|Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FB_REGDDR ; ++---------+-------+-------+-------+-------+----------------------------------+ +; Name ; FR_S3 ; FR_S2 ; FR_S1 ; FR_S0 ; FR_WAIT ; ++---------+-------+-------+-------+-------+----------------------------------+ +; FR_WAIT ; 0 ; 0 ; 0 ; 0 ; 0 ; +; FR_S0 ; 0 ; 0 ; 0 ; 1 ; 1 ; +; FR_S1 ; 0 ; 0 ; 1 ; 0 ; 1 ; +; FR_S2 ; 0 ; 1 ; 0 ; 0 ; 1 ; +; FR_S3 ; 1 ; 0 ; 0 ; 0 ; 1 ; ++---------+-------+-------+-------+-------+----------------------------------+ + + +Encoding Type: One-Hot ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; State Machine - |firebee1|Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_SM ; ++---------+-------+-------+-------+-------+-------+--------+--------+---------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+--------+--------+-------+ +; Name ; DS_R6 ; DS_R5 ; DS_R4 ; DS_R3 ; DS_R2 ; DS_CB8 ; DS_CB6 ; DS_T10F ; DS_T9F ; DS_T8F ; DS_T7F ; DS_T6F ; DS_T5F ; DS_T4F ; DS_T9W ; DS_T8W ; DS_T7W ; DS_T6W ; DS_T5W ; DS_T4W ; DS_T5R ; DS_T4R ; DS_C7 ; DS_C6 ; DS_C5 ; DS_C4 ; DS_C3 ; DS_C2 ; DS_N8 ; DS_N7 ; DS_N6 ; DS_N5 ; DS_T3 ; DS_T2B ; DS_T2A ; DS_T1 ; ++---------+-------+-------+-------+-------+-------+--------+--------+---------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+--------+--------+-------+ +; DS_T1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; +; DS_T2A ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 1 ; +; DS_T2B ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 1 ; +; DS_T3 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 1 ; +; DS_N5 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 1 ; +; DS_N6 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; DS_N7 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; DS_N8 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; DS_C2 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; DS_C3 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; DS_C4 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; DS_C5 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; DS_C6 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; DS_C7 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; DS_T4R ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; DS_T5R ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; DS_T4W ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; DS_T5W ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; DS_T6W ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; DS_T7W ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; DS_T8W ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; DS_T9W ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; DS_T4F ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; DS_T5F ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; DS_T6F ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; DS_T7F ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; DS_T8F ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; DS_T9F ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; DS_T10F ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; DS_CB6 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; DS_CB8 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; DS_R2 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; DS_R3 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; DS_R4 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; DS_R5 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; DS_R6 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; ++---------+-------+-------+-------+-------+-------+--------+--------+---------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+--------+--------+-------+ + + +Encoding Type: One-Hot ++-----------------------------------------------------------------------------------------------------------------------------------------------------------+ +; State Machine - |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_STATE ; ++--------------------+------------------+------------------+------------------+------------------+------------------+------------------+--------------------+ +; Name ; FCF_STATE.FCF_T7 ; FCF_STATE.FCF_T6 ; FCF_STATE.FCF_T3 ; FCF_STATE.FCF_T2 ; FCF_STATE.FCF_T1 ; FCF_STATE.FCF_T0 ; FCF_STATE.FCF_IDLE ; ++--------------------+------------------+------------------+------------------+------------------+------------------+------------------+--------------------+ +; FCF_STATE.FCF_IDLE ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; +; FCF_STATE.FCF_T0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 1 ; +; FCF_STATE.FCF_T1 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 1 ; +; FCF_STATE.FCF_T2 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 1 ; +; FCF_STATE.FCF_T3 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 1 ; +; FCF_STATE.FCF_T6 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; FCF_STATE.FCF_T7 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; ++--------------------+------------------+------------------+------------------+------------------+------------------+------------------+--------------------+ + + +Encoding Type: One-Hot ++---------------------------------------------------------------------------------------------------+ +; State Machine - |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|CMD_STATE ; ++----------------+--------------+--------------+--------------+-------------------------------------+ +; Name ; CMD_STATE.T7 ; CMD_STATE.T6 ; CMD_STATE.T1 ; CMD_STATE.IDLE ; ++----------------+--------------+--------------+--------------+-------------------------------------+ +; CMD_STATE.IDLE ; 0 ; 0 ; 0 ; 0 ; +; CMD_STATE.T1 ; 0 ; 0 ; 1 ; 1 ; +; CMD_STATE.T6 ; 0 ; 1 ; 0 ; 1 ; +; CMD_STATE.T7 ; 1 ; 0 ; 0 ; 1 ; ++----------------+--------------+--------------+--------------+-------------------------------------+ + + +Encoding Type: One-Hot ++-------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; State Machine - |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|INT_STATE ; ++----------------------+----------------------+-------------------+-------------------------------------------------------------------------------------------+ +; Name ; INT_STATE.VECTOR_OUT ; INT_STATE.REQUEST ; INT_STATE.SCAN ; ++----------------------+----------------------+-------------------+-------------------------------------------------------------------------------------------+ +; INT_STATE.SCAN ; 0 ; 0 ; 0 ; +; INT_STATE.REQUEST ; 0 ; 1 ; 1 ; +; INT_STATE.VECTOR_OUT ; 1 ; 0 ; 1 ; ++----------------------+----------------------+-------------------+-------------------------------------------------------------------------------------------+ + + +Encoding Type: One-Hot ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; State Machine - |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_TX:I_USART_TRANSMIT|TR_STATE ; ++----------------------+----------------+----------------+-----------------+-------------------+----------------+--------------------+----------------------+------------------------------+ +; Name ; TR_STATE.STOP2 ; TR_STATE.STOP1 ; TR_STATE.PARITY ; TR_STATE.SHIFTOUT ; TR_STATE.START ; TR_STATE.LOAD_SHFT ; TR_STATE.CHECK_BREAK ; TR_STATE.IDLE ; ++----------------------+----------------+----------------+-----------------+-------------------+----------------+--------------------+----------------------+------------------------------+ +; TR_STATE.IDLE ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; +; TR_STATE.CHECK_BREAK ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 1 ; +; TR_STATE.LOAD_SHFT ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 1 ; +; TR_STATE.START ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 1 ; +; TR_STATE.SHIFTOUT ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 1 ; +; TR_STATE.PARITY ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; TR_STATE.STOP1 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; TR_STATE.STOP2 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; ++----------------------+----------------+----------------+-----------------+-------------------+----------------+--------------------+----------------------+------------------------------+ + + +Encoding Type: One-Hot ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; State Machine - |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_RX:I_USART_RECEIVE|RCV_STATE ; ++----------------------+----------------+-----------------+-----------------+------------------+------------------+----------------------+-------------------------------------------------+ +; Name ; RCV_STATE.SYNC ; RCV_STATE.STOP2 ; RCV_STATE.STOP1 ; RCV_STATE.PARITY ; RCV_STATE.SAMPLE ; RCV_STATE.WAIT_START ; RCV_STATE.IDLE ; ++----------------------+----------------+-----------------+-----------------+------------------+------------------+----------------------+-------------------------------------------------+ +; RCV_STATE.IDLE ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; +; RCV_STATE.WAIT_START ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 1 ; +; RCV_STATE.SAMPLE ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 1 ; +; RCV_STATE.PARITY ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 1 ; +; RCV_STATE.STOP1 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 1 ; +; RCV_STATE.STOP2 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; RCV_STATE.SYNC ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; ++----------------------+----------------+-----------------+-----------------+------------------+------------------+----------------------+-------------------------------------------------+ + + +Encoding Type: One-Hot ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; State Machine - |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_TRANSMIT:I_UART_TRANSMIT|TR_STATE ; ++--------------------+----------------+----------------+-----------------+-------------------+----------------+--------------------+------------------------------+ +; Name ; TR_STATE.STOP2 ; TR_STATE.STOP1 ; TR_STATE.PARITY ; TR_STATE.SHIFTOUT ; TR_STATE.START ; TR_STATE.LOAD_SHFT ; TR_STATE.IDLE ; ++--------------------+----------------+----------------+-----------------+-------------------+----------------+--------------------+------------------------------+ +; TR_STATE.IDLE ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; +; TR_STATE.LOAD_SHFT ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 1 ; +; TR_STATE.START ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 1 ; +; TR_STATE.SHIFTOUT ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 1 ; +; TR_STATE.PARITY ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 1 ; +; TR_STATE.STOP1 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; TR_STATE.STOP2 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; ++--------------------+----------------+----------------+-----------------+-------------------+----------------+--------------------+------------------------------+ + + +Encoding Type: One-Hot ++----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; State Machine - |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_RECEIVE:I_UART_RECEIVE|RCV_STATE ; ++----------------------+----------------+-----------------+-----------------+------------------+------------------+----------------------+-----------------------+ +; Name ; RCV_STATE.SYNC ; RCV_STATE.STOP2 ; RCV_STATE.STOP1 ; RCV_STATE.PARITY ; RCV_STATE.SAMPLE ; RCV_STATE.WAIT_START ; RCV_STATE.IDLE ; ++----------------------+----------------+-----------------+-----------------+------------------+------------------+----------------------+-----------------------+ +; RCV_STATE.IDLE ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; +; RCV_STATE.WAIT_START ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 1 ; +; RCV_STATE.SAMPLE ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 1 ; +; RCV_STATE.PARITY ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 1 ; +; RCV_STATE.STOP1 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 1 ; +; RCV_STATE.STOP2 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; RCV_STATE.SYNC ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; ++----------------------+----------------+-----------------+-----------------+------------------+------------------+----------------------+-----------------------+ + + +Encoding Type: One-Hot ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; State Machine - |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_TRANSMIT:I_UART_TRANSMIT|TR_STATE ; ++--------------------+----------------+----------------+-----------------+-------------------+----------------+--------------------+----------------------------------+ +; Name ; TR_STATE.STOP2 ; TR_STATE.STOP1 ; TR_STATE.PARITY ; TR_STATE.SHIFTOUT ; TR_STATE.START ; TR_STATE.LOAD_SHFT ; TR_STATE.IDLE ; ++--------------------+----------------+----------------+-----------------+-------------------+----------------+--------------------+----------------------------------+ +; TR_STATE.IDLE ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; +; TR_STATE.LOAD_SHFT ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 1 ; +; TR_STATE.START ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 1 ; +; TR_STATE.SHIFTOUT ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 1 ; +; TR_STATE.PARITY ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 1 ; +; TR_STATE.STOP1 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; TR_STATE.STOP2 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; ++--------------------+----------------+----------------+-----------------+-------------------+----------------+--------------------+----------------------------------+ + + +Encoding Type: One-Hot ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; State Machine - |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_RECEIVE:I_UART_RECEIVE|RCV_STATE ; ++----------------------+----------------+-----------------+-----------------+------------------+------------------+----------------------+---------------------------+ +; Name ; RCV_STATE.SYNC ; RCV_STATE.STOP2 ; RCV_STATE.STOP1 ; RCV_STATE.PARITY ; RCV_STATE.SAMPLE ; RCV_STATE.WAIT_START ; RCV_STATE.IDLE ; ++----------------------+----------------+-----------------+-----------------+------------------+------------------+----------------------+---------------------------+ +; RCV_STATE.IDLE ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; +; RCV_STATE.WAIT_START ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 1 ; +; RCV_STATE.SAMPLE ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 1 ; +; RCV_STATE.PARITY ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 1 ; +; RCV_STATE.STOP1 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 1 ; +; RCV_STATE.STOP2 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; RCV_STATE.SYNC ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; ++----------------------+----------------+-----------------+-----------------+------------------+------------------+----------------------+---------------------------+ + + +Encoding Type: One-Hot ++--------------------------------------------------------------------------------------------------------------------------------------------------+ +; State Machine - |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|DMA_STATE ; ++----------------------+----------------------+----------------------+----------------------+----------------------+-------------------------------+ +; Name ; DMA_STATE.DMA_STEP_4 ; DMA_STATE.DMA_STEP_3 ; DMA_STATE.DMA_STEP_2 ; DMA_STATE.DMA_STEP_1 ; DMA_STATE.IDLE ; ++----------------------+----------------------+----------------------+----------------------+----------------------+-------------------------------+ +; DMA_STATE.IDLE ; 0 ; 0 ; 0 ; 0 ; 0 ; +; DMA_STATE.DMA_STEP_1 ; 0 ; 0 ; 0 ; 1 ; 1 ; +; DMA_STATE.DMA_STEP_2 ; 0 ; 0 ; 1 ; 0 ; 1 ; +; DMA_STATE.DMA_STEP_3 ; 0 ; 1 ; 0 ; 0 ; 1 ; +; DMA_STATE.DMA_STEP_4 ; 1 ; 0 ; 0 ; 0 ; 1 ; ++----------------------+----------------------+----------------------+----------------------+----------------------+-------------------------------+ + + +Encoding Type: One-Hot ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; State Machine - |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|CTRL_STATE ; ++-------------------------+-------------------------+-------------------------+---------------------+------------------------+-----------------------+-----------------+ +; Name ; CTRL_STATE.DMA_INIT_RCV ; CTRL_STATE.DMA_TARG_RCV ; CTRL_STATE.DMA_SEND ; CTRL_STATE.WAIT_2200ns ; CTRL_STATE.WAIT_800ns ; CTRL_STATE.IDLE ; ++-------------------------+-------------------------+-------------------------+---------------------+------------------------+-----------------------+-----------------+ +; CTRL_STATE.IDLE ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; +; CTRL_STATE.WAIT_800ns ; 0 ; 0 ; 0 ; 0 ; 1 ; 1 ; +; CTRL_STATE.WAIT_2200ns ; 0 ; 0 ; 0 ; 1 ; 0 ; 1 ; +; CTRL_STATE.DMA_SEND ; 0 ; 0 ; 1 ; 0 ; 0 ; 1 ; +; CTRL_STATE.DMA_TARG_RCV ; 0 ; 1 ; 0 ; 0 ; 0 ; 1 ; +; CTRL_STATE.DMA_INIT_RCV ; 1 ; 0 ; 0 ; 0 ; 0 ; 1 ; ++-------------------------+-------------------------+-------------------------+---------------------+------------------------+-----------------------+-----------------+ + + +Encoding Type: One-Hot ++-----------------------------------------------------------------------------------------------------------------------------------------------------------+ +; State Machine - |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|PRECOMP ; ++-----------------+--------------+---------------+----------------------------------------------------------------------------------------------------------+ +; Name ; PRECOMP.LATE ; PRECOMP.EARLY ; PRECOMP.NOMINAL ; ++-----------------+--------------+---------------+----------------------------------------------------------------------------------------------------------+ +; PRECOMP.NOMINAL ; 0 ; 0 ; 0 ; +; PRECOMP.EARLY ; 0 ; 1 ; 1 ; +; PRECOMP.LATE ; 1 ; 0 ; 1 ; ++-----------------+--------------+---------------+----------------------------------------------------------------------------------------------------------+ + + +Encoding Type: One-Hot ++-------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; State Machine - |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|MFM_STATE ; ++----------------+----------------+----------------+----------------------------------------------------------------------------------------------------------+ +; Name ; MFM_STATE.C_10 ; MFM_STATE.B_01 ; MFM_STATE.A_00 ; ++----------------+----------------+----------------+----------------------------------------------------------------------------------------------------------+ +; MFM_STATE.A_00 ; 0 ; 0 ; 0 ; +; MFM_STATE.B_01 ; 0 ; 1 ; 1 ; +; MFM_STATE.C_10 ; 1 ; 0 ; 1 ; ++----------------+----------------+----------------+----------------------------------------------------------------------------------------------------------+ + + +Encoding Type: One-Hot ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; State Machine - |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE ; ++----------------------------+-------------------------+----------------------+-----------------------+------------------------+--------------------------+------------------------+------------------------+---------------------+------------------------+--------------------------+-----------------------+-------------------------+------------------------+----------------------------+--------------------+-----------------------+-----------------------+----------------------------+----------------------+------------------------+----------------------------+-------------------------+-----------------------+-----------------+--------------------+---------------------+---------------------+-----------------------+---------------------------+----------------------+------------------------+--------------------+------------------------+------------------------+-------------------------+-----------------------+---------------------------+-----------------------+----------------------+-----------------------+------------------------+---------------------------+---------------------+---------------------------+-----------------------+------------------------+------------------------+------------------------+---------------------------+-----------------------+------------------------+-------------------------+-------------------+-------------------------+-------------------------+---------------------------+-----------------------+-------------------------+-----------------------+-------------------------+-------------------+-------------------+------------------------+------------------------+--------------------------+------------------------+-----------------------+---------------------------+------------------+----------------------+------------------+----------------+----------------+ +; Name ; CMD_STATE.T3_VERIFY_CRC ; CMD_STATE.T3_LOAD_SR ; CMD_STATE.T3_CHECK_RD ; CMD_STATE.T3_SET_DRQ_2 ; CMD_STATE.T3_LOAD_DATA_2 ; CMD_STATE.T3_SHIFT_ADR ; CMD_STATE.T3_VERIFY_AM ; CMD_STATE.T3_RD_ADR ; CMD_STATE.T3_SET_DRQ_1 ; CMD_STATE.T3_LOAD_DATA_1 ; CMD_STATE.T3_CHECK_DR ; CMD_STATE.T3_CHECK_BYTE ; CMD_STATE.T3_DETECT_AM ; CMD_STATE.T3_CHECK_INDEX_3 ; CMD_STATE.T3_SHIFT ; CMD_STATE.T3_RD_TRACK ; CMD_STATE.T3_DATALOST ; CMD_STATE.T3_CHECK_INDEX_2 ; CMD_STATE.T3_WR_DATA ; CMD_STATE.T3_LOAD_SHFT ; CMD_STATE.T3_CHECK_INDEX_1 ; CMD_STATE.T3_VERIFY_DRQ ; CMD_STATE.T3_DELAY_B3 ; CMD_STATE.T3_WR ; CMD_STATE.T2_WR_FF ; CMD_STATE.T2_WR_CRC ; CMD_STATE.T2_WRSTAT ; CMD_STATE.T2_DATALOST ; CMD_STATE.T2_VERIFY_DRQ_3 ; CMD_STATE.T2_WR_BYTE ; CMD_STATE.T2_LOAD_SHFT ; CMD_STATE.T2_WR_AM ; CMD_STATE.T2_WR_LEADIN ; CMD_STATE.T2_DELAY_B11 ; CMD_STATE.T2_CHECK_MODE ; CMD_STATE.T2_DELAY_B1 ; CMD_STATE.T2_VERIFY_DRQ_2 ; CMD_STATE.T2_DELAY_B8 ; CMD_STATE.T2_SET_DRQ ; CMD_STATE.T2_DELAY_B2 ; CMD_STATE.T2_MULTISECT ; CMD_STATE.T2_VERIFY_CRC_2 ; CMD_STATE.T2_RDSTAT ; CMD_STATE.T2_VERIFY_DRQ_1 ; CMD_STATE.T2_NEXTBYTE ; CMD_STATE.T2_LOAD_DATA ; CMD_STATE.T2_FIRSTBYTE ; CMD_STATE.T2_VERIFY_AM ; CMD_STATE.T2_VERIFY_CRC_1 ; CMD_STATE.T2_SCAN_LEN ; CMD_STATE.T2_SCAN_SECT ; CMD_STATE.T2_SCAN_TRACK ; CMD_STATE.T2_INIT ; CMD_STATE.T2_RD_WR_SECT ; CMD_STATE.T1_VERIFY_CRC ; CMD_STATE.T1_VERIFY_DELAY ; CMD_STATE.T1_SCAN_CRC ; CMD_STATE.T1_SCAN_TRACK ; CMD_STATE.T1_SPINDOWN ; CMD_STATE.T1_STEP_DELAY ; CMD_STATE.T1_TRAP ; CMD_STATE.T1_STEP ; CMD_STATE.T1_HEAD_CTRL ; CMD_STATE.T1_CHECK_DIR ; CMD_STATE.T1_COMP_TR_DSR ; CMD_STATE.T1_LOAD_SHFT ; CMD_STATE.T1_STEPPING ; CMD_STATE.T1_SEEK_RESTORE ; CMD_STATE.DECODE ; CMD_STATE.DELAY_15MS ; CMD_STATE.SPINUP ; CMD_STATE.INIT ; CMD_STATE.IDLE ; ++----------------------------+-------------------------+----------------------+-----------------------+------------------------+--------------------------+------------------------+------------------------+---------------------+------------------------+--------------------------+-----------------------+-------------------------+------------------------+----------------------------+--------------------+-----------------------+-----------------------+----------------------------+----------------------+------------------------+----------------------------+-------------------------+-----------------------+-----------------+--------------------+---------------------+---------------------+-----------------------+---------------------------+----------------------+------------------------+--------------------+------------------------+------------------------+-------------------------+-----------------------+---------------------------+-----------------------+----------------------+-----------------------+------------------------+---------------------------+---------------------+---------------------------+-----------------------+------------------------+------------------------+------------------------+---------------------------+-----------------------+------------------------+-------------------------+-------------------+-------------------------+-------------------------+---------------------------+-----------------------+-------------------------+-----------------------+-------------------------+-------------------+-------------------+------------------------+------------------------+--------------------------+------------------------+-----------------------+---------------------------+------------------+----------------------+------------------+----------------+----------------+ +; CMD_STATE.IDLE ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; +; CMD_STATE.INIT ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 1 ; +; CMD_STATE.SPINUP ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 1 ; +; CMD_STATE.DELAY_15MS ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 1 ; +; CMD_STATE.DECODE ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T1_SEEK_RESTORE ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T1_STEPPING ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T1_LOAD_SHFT ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T1_COMP_TR_DSR ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T1_CHECK_DIR ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T1_HEAD_CTRL ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T1_STEP ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T1_TRAP ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T1_STEP_DELAY ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T1_SPINDOWN ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T1_SCAN_TRACK ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T1_SCAN_CRC ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T1_VERIFY_DELAY ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T1_VERIFY_CRC ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T2_RD_WR_SECT ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T2_INIT ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T2_SCAN_TRACK ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T2_SCAN_SECT ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T2_SCAN_LEN ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T2_VERIFY_CRC_1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T2_VERIFY_AM ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T2_FIRSTBYTE ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T2_LOAD_DATA ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T2_NEXTBYTE ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T2_VERIFY_DRQ_1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T2_RDSTAT ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T2_VERIFY_CRC_2 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T2_MULTISECT ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T2_DELAY_B2 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T2_SET_DRQ ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T2_DELAY_B8 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T2_VERIFY_DRQ_2 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T2_DELAY_B1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T2_CHECK_MODE ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T2_DELAY_B11 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T2_WR_LEADIN ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T2_WR_AM ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T2_LOAD_SHFT ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T2_WR_BYTE ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T2_VERIFY_DRQ_3 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T2_DATALOST ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T2_WRSTAT ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T2_WR_CRC ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T2_WR_FF ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T3_WR ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T3_DELAY_B3 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T3_VERIFY_DRQ ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T3_CHECK_INDEX_1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T3_LOAD_SHFT ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T3_WR_DATA ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T3_CHECK_INDEX_2 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T3_DATALOST ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T3_RD_TRACK ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T3_SHIFT ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T3_CHECK_INDEX_3 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T3_DETECT_AM ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T3_CHECK_BYTE ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T3_CHECK_DR ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T3_LOAD_DATA_1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T3_SET_DRQ_1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T3_RD_ADR ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T3_VERIFY_AM ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T3_SHIFT_ADR ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T3_LOAD_DATA_2 ; 0 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T3_SET_DRQ_2 ; 0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T3_CHECK_RD ; 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T3_LOAD_SR ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; +; CMD_STATE.T3_VERIFY_CRC ; 1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 1 ; ++----------------------------+-------------------------+----------------------+-----------------------+------------------------+--------------------------+------------------------+------------------------+---------------------+------------------------+--------------------------+-----------------------+-------------------------+------------------------+----------------------------+--------------------+-----------------------+-----------------------+----------------------------+----------------------+------------------------+----------------------------+-------------------------+-----------------------+-----------------+--------------------+---------------------+---------------------+-----------------------+---------------------------+----------------------+------------------------+--------------------+------------------------+------------------------+-------------------------+-----------------------+---------------------------+-----------------------+----------------------+-----------------------+------------------------+---------------------------+---------------------+---------------------------+-----------------------+------------------------+------------------------+------------------------+---------------------------+-----------------------+------------------------+-------------------------+-------------------+-------------------------+-------------------------+---------------------------+-----------------------+-------------------------+-----------------------+-------------------------+-------------------+-------------------+------------------------+------------------------+--------------------------+------------------------+-----------------------+---------------------------+------------------+----------------------+------------------+----------------+----------------+ + + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Registers Protected by Synthesis ; ++----------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------+--------------------------------------------+ +; Register Name ; Protected by Synthesis Attribute or Preserve Register Assignment ; Not to be Touched by Netlist Optimizations ; ++----------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------+--------------------------------------------+ +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|areset_state ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|idle_state ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[16] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[16] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|shift_reg[1] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|shift_reg[10] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|shift_reg[0] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|tmp_nominal_data_out_state ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[31] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[31] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|areset_init_state_1 ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr3|cntr_pij:auto_generated|counter_reg_bit[4] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr3|cntr_pij:auto_generated|counter_reg_bit[3] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr3|cntr_pij:auto_generated|counter_reg_bit[2] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr3|cntr_pij:auto_generated|counter_reg_bit[1] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr3|cntr_pij:auto_generated|counter_reg_bit[0] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|write_data_state ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|write_nominal_state ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|reconfig_wait_state ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|read_last_nominal_state ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|read_last_state ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|reset_state ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[30] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[30] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[13] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[13] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[12] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[12] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[17] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[17] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|shift_reg[2] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|shift_reg[11] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[18] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[18] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|shift_reg[3] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|shift_reg[12] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|C0_data_state ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|C1_data_state ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|C2_data_state ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|C3_data_state ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|C4_data_state ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|reconfig_post_state ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|reconfig_seq_data_state ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr14|cntr_pij:auto_generated|counter_reg_bit[4] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr14|cntr_pij:auto_generated|counter_reg_bit[3] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr14|cntr_pij:auto_generated|counter_reg_bit[2] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr14|cntr_pij:auto_generated|counter_reg_bit[1] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr14|cntr_pij:auto_generated|counter_reg_bit[0] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|configupdate3_state ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|configupdate_state ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[26] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[26] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[25] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[25] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[24] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[24] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|shift_reg[8] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|shift_reg[17] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|shift_reg[7] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|shift_reg[16] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|shift_reg[6] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|shift_reg[15] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|shift_reg[5] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|shift_reg[14] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|shift_reg[4] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|shift_reg[13] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[23] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[23] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[22] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[22] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[21] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[21] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[20] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[20] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[19] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[19] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[15] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[15] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[14] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[14] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[29] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[29] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[28] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[28] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[27] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[27] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[11] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[11] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[10] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[10] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[9] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[9] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[8] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[8] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[7] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[7] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[6] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[6] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[5] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[5] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[4] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[4] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[3] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[3] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[2] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[2] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[1] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[1] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[0] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[0] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[16] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[16] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|read_data_state ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|read_data_nominal_state ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|read_init_nominal_state ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|read_init_state ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[7] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|shift_reg[9] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[17] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[31] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|counter_param_latch_reg[2] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|counter_param_latch_reg[1] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|counter_param_latch_reg[0] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|counter_type_latch_reg[3] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|counter_type_latch_reg[2] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|counter_type_latch_reg[1] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|write_init_nominal_state ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|write_init_state ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|read_first_state ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|counter_type_latch_reg[0] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|read_first_nominal_state ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|reconfig_counter_state ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|reconfig_init_state ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|reconfig_seq_ena_state ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[30] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[13] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[12] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[17] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[15] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[6] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[18] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[14] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[5] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|C0_ena_state ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|C1_ena_state ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|C2_ena_state ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|C3_ena_state ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|C4_ena_state ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr13|cntr_qij:auto_generated|counter_reg_bit[5] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr13|cntr_qij:auto_generated|counter_reg_bit[4] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr13|cntr_qij:auto_generated|counter_reg_bit[3] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr13|cntr_qij:auto_generated|counter_reg_bit[2] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr13|cntr_qij:auto_generated|counter_reg_bit[1] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr13|cntr_qij:auto_generated|counter_reg_bit[0] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr1|cntr_30l:auto_generated|counter_reg_bit[0] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr2|cntr_9cj:auto_generated|counter_reg_bit[0] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr15|cntr_30l:auto_generated|counter_reg_bit[0] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr12|cntr_30l:auto_generated|counter_reg_bit[0] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr1|cntr_30l:auto_generated|counter_reg_bit[1] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr2|cntr_9cj:auto_generated|counter_reg_bit[1] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr15|cntr_30l:auto_generated|counter_reg_bit[1] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr12|cntr_30l:auto_generated|counter_reg_bit[1] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr1|cntr_30l:auto_generated|counter_reg_bit[2] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr2|cntr_9cj:auto_generated|counter_reg_bit[2] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr15|cntr_30l:auto_generated|counter_reg_bit[2] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr12|cntr_30l:auto_generated|counter_reg_bit[2] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr1|cntr_30l:auto_generated|counter_reg_bit[3] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr2|cntr_9cj:auto_generated|counter_reg_bit[3] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr15|cntr_30l:auto_generated|counter_reg_bit[3] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr12|cntr_30l:auto_generated|counter_reg_bit[3] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr1|cntr_30l:auto_generated|counter_reg_bit[4] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr2|cntr_9cj:auto_generated|counter_reg_bit[4] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr15|cntr_30l:auto_generated|counter_reg_bit[4] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr12|cntr_30l:auto_generated|counter_reg_bit[4] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr1|cntr_30l:auto_generated|counter_reg_bit[5] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr2|cntr_9cj:auto_generated|counter_reg_bit[5] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr15|cntr_30l:auto_generated|counter_reg_bit[5] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr12|cntr_30l:auto_generated|counter_reg_bit[5] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr1|cntr_30l:auto_generated|counter_reg_bit[6] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr2|cntr_9cj:auto_generated|counter_reg_bit[6] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr15|cntr_30l:auto_generated|counter_reg_bit[6] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr12|cntr_30l:auto_generated|counter_reg_bit[6] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr1|cntr_30l:auto_generated|counter_reg_bit[7] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr2|cntr_9cj:auto_generated|counter_reg_bit[7] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr15|cntr_30l:auto_generated|counter_reg_bit[7] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr12|cntr_30l:auto_generated|counter_reg_bit[7] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|configupdate2_state ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[26] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[25] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[24] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[9] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[0] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[10] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[1] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[11] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[2] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[12] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[3] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[13] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[4] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[23] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[22] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[21] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[20] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[19] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[15] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[14] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[29] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[28] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[27] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[11] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[10] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[9] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[8] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[7] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[6] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[5] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[4] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[3] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[2] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[1] ; no ; yes ; +; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[0] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|nominal_data[8] ; no ; yes ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|tmp_seq_ena_state ; no ; yes ; ++----------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------+--------------------------------------------+ + + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; User-Specified and Inferred Latches ; ++------------------------------------------------------------------------------------+--------------------------------------------------------------------------+------------------------+ +; Latch Name ; Latch Enable Signal ; Free of Timing Hazards ; ++------------------------------------------------------------------------------------+--------------------------------------------------------------------------+------------------------+ +; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[16] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; yes ; +; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[31] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; yes ; +; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[30] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; yes ; +; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[13] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; yes ; +; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[12] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; yes ; +; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[17] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; yes ; +; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[18] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; yes ; +; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[26] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; yes ; +; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[25] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; yes ; +; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[24] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; yes ; +; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[23] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; yes ; +; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[22] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; yes ; +; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[21] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; yes ; +; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[20] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; yes ; +; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[19] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; yes ; +; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[15] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; yes ; +; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[14] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; yes ; +; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[29] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; yes ; +; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[28] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; yes ; +; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[27] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; yes ; +; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[11] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; yes ; +; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[10] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; yes ; +; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[9] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; yes ; +; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; yes ; +; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[7] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; yes ; +; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[6] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; yes ; +; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[5] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; yes ; +; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; yes ; +; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; yes ; +; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; yes ; +; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; yes ; +; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; yes ; +; Number of user-specified and inferred latches = 32 ; ; ; ++------------------------------------------------------------------------------------+--------------------------------------------------------------------------+------------------------+ +Note: All latches listed above may not be present at the end of synthesis due to various synthesis optimizations. + + ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Registers Removed During Synthesis ; ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Register name ; Reason for Removal ; ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; interrupt_handler:nobody|INT_LATCH[31] ; Stuck at GND due to stuck port clock ; +; interrupt_handler:nobody|INT_CLEAR[31] ; Lost fanout ; +; interrupt_handler:nobody|INT_LATCH[30] ; Stuck at GND due to stuck port clock ; +; interrupt_handler:nobody|INT_CLEAR[30] ; Lost fanout ; +; interrupt_handler:nobody|INT_LATCH[29] ; Stuck at GND due to stuck port clock ; +; interrupt_handler:nobody|INT_CLEAR[29] ; Lost fanout ; +; interrupt_handler:nobody|INT_LATCH[28] ; Stuck at GND due to stuck port clock ; +; interrupt_handler:nobody|INT_CLEAR[28] ; Lost fanout ; +; interrupt_handler:nobody|INT_LATCH[27] ; Stuck at GND due to stuck port clock ; +; interrupt_handler:nobody|INT_CLEAR[27] ; Lost fanout ; +; interrupt_handler:nobody|INT_LATCH[26] ; Stuck at GND due to stuck port clock ; +; interrupt_handler:nobody|INT_CLEAR[26] ; Lost fanout ; +; interrupt_handler:nobody|INT_LATCH[25] ; Stuck at GND due to stuck port clock ; +; interrupt_handler:nobody|INT_CLEAR[25] ; Lost fanout ; +; interrupt_handler:nobody|INT_LATCH[24] ; Stuck at GND due to stuck port clock ; +; interrupt_handler:nobody|INT_CLEAR[24] ; Lost fanout ; +; interrupt_handler:nobody|INT_LATCH[23] ; Stuck at GND due to stuck port clock ; +; interrupt_handler:nobody|INT_CLEAR[23] ; Lost fanout ; +; interrupt_handler:nobody|INT_LATCH[22] ; Stuck at GND due to stuck port clock ; +; interrupt_handler:nobody|INT_CLEAR[22] ; Lost fanout ; +; interrupt_handler:nobody|INT_LATCH[21] ; Stuck at GND due to stuck port clock ; +; interrupt_handler:nobody|INT_CLEAR[21] ; Lost fanout ; +; interrupt_handler:nobody|INT_LATCH[20] ; Stuck at GND due to stuck port clock ; +; interrupt_handler:nobody|INT_CLEAR[20] ; Lost fanout ; +; interrupt_handler:nobody|INT_LATCH[19] ; Stuck at GND due to stuck port clock ; +; interrupt_handler:nobody|INT_CLEAR[19] ; Lost fanout ; +; interrupt_handler:nobody|INT_LATCH[18] ; Stuck at GND due to stuck port clock ; +; interrupt_handler:nobody|INT_CLEAR[18] ; Lost fanout ; +; interrupt_handler:nobody|INT_LATCH[17] ; Stuck at GND due to stuck port clock ; +; interrupt_handler:nobody|INT_CLEAR[17] ; Lost fanout ; +; interrupt_handler:nobody|INT_LATCH[16] ; Stuck at GND due to stuck port clock ; +; interrupt_handler:nobody|INT_CLEAR[16] ; Lost fanout ; +; interrupt_handler:nobody|INT_LATCH[15] ; Stuck at GND due to stuck port clock ; +; interrupt_handler:nobody|INT_CLEAR[15] ; Lost fanout ; +; interrupt_handler:nobody|INT_LATCH[14] ; Stuck at GND due to stuck port clock ; +; interrupt_handler:nobody|INT_CLEAR[14] ; Lost fanout ; +; interrupt_handler:nobody|INT_LATCH[13] ; Stuck at GND due to stuck port clock ; +; interrupt_handler:nobody|INT_CLEAR[13] ; Lost fanout ; +; interrupt_handler:nobody|INT_LATCH[12] ; Stuck at GND due to stuck port clock ; +; interrupt_handler:nobody|INT_CLEAR[12] ; Lost fanout ; +; interrupt_handler:nobody|INT_LATCH[11] ; Stuck at GND due to stuck port clock ; +; interrupt_handler:nobody|INT_CLEAR[11] ; Lost fanout ; +; interrupt_handler:nobody|INT_LATCH[10] ; Stuck at GND due to stuck port clock ; +; interrupt_handler:nobody|INT_CLEAR[10] ; Lost fanout ; +; interrupt_handler:nobody|INT_LATCH[7] ; Stuck at GND due to stuck port clock ; +; interrupt_handler:nobody|INT_CLEAR[7] ; Lost fanout ; +; interrupt_handler:nobody|WERTE[7][13] ; Stuck at VCC due to stuck port data_in ; +; interrupt_handler:nobody|WERTE[6][10] ; Stuck at GND due to stuck port clear ; +; interrupt_handler:nobody|WERTE[2][11] ; Stuck at VCC due to stuck port data_in ; +; interrupt_handler:nobody|WERTE[1][11] ; Stuck at VCC due to stuck port data_in ; +; interrupt_handler:nobody|WERTE[0][11] ; Stuck at VCC due to stuck port data_in ; +; Video:Fredi_Aschwanden|lpm_ff3:inst47|lpm_ff:lpm_ff_component|dffs[0..1,8..9,16..17] ; Stuck at GND due to stuck port data_in ; +; Video:Fredi_Aschwanden|lpm_ff3:inst46|lpm_ff:lpm_ff_component|dffs[0..1,8..9,16..17] ; Stuck at GND due to stuck port data_in ; +; Video:Fredi_Aschwanden|lpm_ff3:inst52|lpm_ff:lpm_ff_component|dffs[0..4,8..12,16..20] ; Stuck at GND due to stuck port data_in ; +; Video:Fredi_Aschwanden|lpm_ff3:inst49|lpm_ff:lpm_ff_component|dffs[0..4,8..12,16..20] ; Stuck at GND due to stuck port data_in ; +; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BLITTER_REQ ; Stuck at GND due to stuck port data_in ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|DCD_In ; Stuck at GND due to stuck port data_in ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|CTS_In ; Stuck at GND due to stuck port data_in ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|DCD_In ; Stuck at GND due to stuck port data_in ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|CTS_In ; Stuck at GND due to stuck port data_in ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|FM_In ; Lost fanout ; +; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_5n7:usedw_counter|counter_reg_bit[0..6] ; Lost fanout ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|\P_WAVSTRB:TMP ; Lost fanout ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|\P_IRQ:DCD_TRANS ; Lost fanout ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|\P_IRQ:DCD_TRANS ; Lost fanout ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|AIP ; Lost fanout ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|LA ; Lost fanout ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|BSY_ERR ; Lost fanout ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS|TCR[3] ; Lost fanout ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS|IDR[0..5] ; Lost fanout ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS|\PARITY:LOCK ; Lost fanout ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\FM_ENCODER:CNT[0..7] ; Lost fanout ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS|ICR[6] ; Stuck at GND due to stuck port data_in ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS|MR2[0,2..5,7] ; Stuck at GND due to stuck port data_in ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS|TCR[0..2] ; Stuck at GND due to stuck port data_in ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS|SER[0..7] ; Stuck at GND due to stuck port data_in ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS|SPER ; Stuck at GND due to stuck port data_in ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|BUS_FREE ; Lost fanout ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS|\REGISTERS:BSY_LOCK ; Lost fanout ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|\P_BUSFREE:TMP[0..2] ; Lost fanout ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS|IDR[6..7] ; Lost fanout ; +; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_bwp|dffe21a[9] ; Lost fanout ; +; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_brp|dffe21a[9] ; Lost fanout ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|dffpipe_gd9:rs_bwp|dffe15a[8] ; Lost fanout ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|dffpipe_pe9:rs_brp|dffe16a[10] ; Lost fanout ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|dffpipe_pe9:ws_bwp|dffe16a[10] ; Lost fanout ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|dffpipe_gd9:ws_brp|dffe15a[8] ; Lost fanout ; +; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe1a[2] ; Merged with Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe1a[2] ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|NOISE_OUT ; Merged with FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|\NOISEGENERATOR:N_SHFT[16] ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_RX:I_USART_RECEIVE|OE ; Merged with FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_RX:I_USART_RECEIVE|\OVERRUN:FIRST_READ ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_RECEIVE:I_UART_RECEIVE|OVR ; Merged with FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_RECEIVE:I_UART_RECEIVE|\OVERRUN:FIRST_READ ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_RECEIVE:I_UART_RECEIVE|OVR ; Merged with FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_RECEIVE:I_UART_RECEIVE|\OVERRUN:FIRST_READ ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS|MR2[6] ; Merged with FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS|ICR[7] ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS|ICR[0..3] ; Merged with FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS|ICR[4] ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|DCD_FLAGn ; Stuck at GND due to stuck port data_in ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|DCD_FLAGn ; Stuck at GND due to stuck port data_in ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|\P_DRQ:LOCK ; Stuck at GND due to stuck port data_in ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|DMA_ACTIVE_I ; Stuck at GND due to stuck port data_in ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS|ICR[4,7] ; Stuck at GND due to stuck port data_in ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS|MR2[1] ; Stuck at GND due to stuck port data_in ; +; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe18 ; Stuck at GND due to stuck port data_in ; +; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe2 ; Stuck at GND due to stuck port data_in ; +; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe20 ; Stuck at GND due to stuck port data_in ; +; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe34 ; Stuck at GND due to stuck port data_in ; +; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe36 ; Stuck at GND due to stuck port data_in ; +; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe4 ; Stuck at GND due to stuck port data_in ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|INT ; Stuck at GND due to stuck port data_in ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|DRQ ; Stuck at GND due to stuck port data_in ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS|ODR[0..7] ; Stuck at GND due to stuck port data_in ; +; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_DDRWR_D_SEL ; Merged with Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_DDR_WR ; +; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_VDMP[0..2] ; Merged with Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_VDMP[3] ; +; Video:Fredi_Aschwanden|inst88 ; Merged with Video:Fredi_Aschwanden|inst90 ; +; Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[0..2] ; Merged with Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[3] ; +; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BLITTER_AC ; Stuck at GND due to stuck port data_in ; +; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VSYNC_I[2] ; Stuck at GND due to stuck port data_in ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|DMA_STATE.IDLE ; Lost fanout ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|DMA_STATE.DMA_STEP_1 ; Lost fanout ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|DMA_STATE.DMA_STEP_2 ; Lost fanout ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|DMA_STATE.DMA_STEP_3 ; Lost fanout ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|DMA_STATE.DMA_STEP_4 ; Lost fanout ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|CTRL_STATE.IDLE ; Lost fanout ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|CTRL_STATE.DMA_SEND ; Lost fanout ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|CTRL_STATE.DMA_TARG_RCV ; Lost fanout ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|CTRL_STATE.DMA_INIT_RCV ; Lost fanout ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|CTRL_STATE.WAIT_2200ns ; Lost fanout ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|MFM_STATE.A_00 ; Lost fanout ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|CTRL_STATE.WAIT_800ns ; Stuck at GND due to stuck port data_in ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|DATA_EN ; Stuck at GND due to stuck port data_in ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|DELAY_800ns ; Stuck at GND due to stuck port data_in ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|\DELAY_800:TMP[0..3] ; Stuck at GND due to stuck port data_in ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\MFM_PRECOMPENSATION:WRITEPATTERN[0] ; Merged with FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|MFM_STATE.B_01 ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|\ADDER:ADDER_DATA[12] ; Lost fanout ; +; Total Number of Removed Registers = 223 ; ; ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Removed Registers Triggering Further Register Optimizations ; ++-----------------------------------------------------------------------------------------------------------------------------------------------+---------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Register name ; Reason for Removal ; Registers Removed due to This Register ; ++-----------------------------------------------------------------------------------------------------------------------------------------------+---------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------+ +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|CTRL_STATE.WAIT_800ns ; Stuck at GND ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|DATA_EN, ; +; ; due to stuck port data_in ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|\DELAY_800:TMP[2] ; +; interrupt_handler:nobody|INT_LATCH[30] ; Stuck at GND ; interrupt_handler:nobody|INT_CLEAR[30] ; +; ; due to stuck port clock ; ; +; interrupt_handler:nobody|INT_LATCH[29] ; Stuck at GND ; interrupt_handler:nobody|INT_CLEAR[29] ; +; ; due to stuck port clock ; ; +; interrupt_handler:nobody|INT_LATCH[28] ; Stuck at GND ; interrupt_handler:nobody|INT_CLEAR[28] ; +; ; due to stuck port clock ; ; +; interrupt_handler:nobody|INT_LATCH[27] ; Stuck at GND ; interrupt_handler:nobody|INT_CLEAR[27] ; +; ; due to stuck port clock ; ; +; interrupt_handler:nobody|INT_LATCH[26] ; Stuck at GND ; interrupt_handler:nobody|INT_CLEAR[26] ; +; ; due to stuck port clock ; ; +; interrupt_handler:nobody|INT_LATCH[25] ; Stuck at GND ; interrupt_handler:nobody|INT_CLEAR[25] ; +; ; due to stuck port clock ; ; +; interrupt_handler:nobody|INT_LATCH[24] ; Stuck at GND ; interrupt_handler:nobody|INT_CLEAR[24] ; +; ; due to stuck port clock ; ; +; interrupt_handler:nobody|INT_LATCH[23] ; Stuck at GND ; interrupt_handler:nobody|INT_CLEAR[23] ; +; ; due to stuck port clock ; ; +; interrupt_handler:nobody|INT_LATCH[22] ; Stuck at GND ; interrupt_handler:nobody|INT_CLEAR[22] ; +; ; due to stuck port clock ; ; +; interrupt_handler:nobody|INT_LATCH[21] ; Stuck at GND ; interrupt_handler:nobody|INT_CLEAR[21] ; +; ; due to stuck port clock ; ; +; interrupt_handler:nobody|INT_LATCH[20] ; Stuck at GND ; interrupt_handler:nobody|INT_CLEAR[20] ; +; ; due to stuck port clock ; ; +; interrupt_handler:nobody|INT_LATCH[19] ; Stuck at GND ; interrupt_handler:nobody|INT_CLEAR[19] ; +; ; due to stuck port clock ; ; +; interrupt_handler:nobody|INT_LATCH[18] ; Stuck at GND ; interrupt_handler:nobody|INT_CLEAR[18] ; +; ; due to stuck port clock ; ; +; interrupt_handler:nobody|INT_LATCH[17] ; Stuck at GND ; interrupt_handler:nobody|INT_CLEAR[17] ; +; ; due to stuck port clock ; ; +; interrupt_handler:nobody|INT_LATCH[16] ; Stuck at GND ; interrupt_handler:nobody|INT_CLEAR[16] ; +; ; due to stuck port clock ; ; +; interrupt_handler:nobody|INT_LATCH[15] ; Stuck at GND ; interrupt_handler:nobody|INT_CLEAR[15] ; +; ; due to stuck port clock ; ; +; interrupt_handler:nobody|INT_LATCH[14] ; Stuck at GND ; interrupt_handler:nobody|INT_CLEAR[14] ; +; ; due to stuck port clock ; ; +; interrupt_handler:nobody|INT_LATCH[13] ; Stuck at GND ; interrupt_handler:nobody|INT_CLEAR[13] ; +; ; due to stuck port clock ; ; +; interrupt_handler:nobody|INT_LATCH[12] ; Stuck at GND ; interrupt_handler:nobody|INT_CLEAR[12] ; +; ; due to stuck port clock ; ; +; interrupt_handler:nobody|INT_LATCH[11] ; Stuck at GND ; interrupt_handler:nobody|INT_CLEAR[11] ; +; ; due to stuck port clock ; ; +; interrupt_handler:nobody|INT_LATCH[10] ; Stuck at GND ; interrupt_handler:nobody|INT_CLEAR[10] ; +; ; due to stuck port clock ; ; +; interrupt_handler:nobody|INT_LATCH[7] ; Stuck at GND ; interrupt_handler:nobody|INT_CLEAR[7] ; +; ; due to stuck port clock ; ; +; Video:Fredi_Aschwanden|lpm_ff3:inst47|lpm_ff:lpm_ff_component|dffs[17] ; Stuck at GND ; Video:Fredi_Aschwanden|lpm_ff3:inst46|lpm_ff:lpm_ff_component|dffs[17] ; +; ; due to stuck port data_in ; ; +; Video:Fredi_Aschwanden|lpm_ff3:inst47|lpm_ff:lpm_ff_component|dffs[16] ; Stuck at GND ; Video:Fredi_Aschwanden|lpm_ff3:inst46|lpm_ff:lpm_ff_component|dffs[16] ; +; ; due to stuck port data_in ; ; +; Video:Fredi_Aschwanden|lpm_ff3:inst47|lpm_ff:lpm_ff_component|dffs[9] ; Stuck at GND ; Video:Fredi_Aschwanden|lpm_ff3:inst46|lpm_ff:lpm_ff_component|dffs[9] ; +; ; due to stuck port data_in ; ; +; Video:Fredi_Aschwanden|lpm_ff3:inst47|lpm_ff:lpm_ff_component|dffs[8] ; Stuck at GND ; Video:Fredi_Aschwanden|lpm_ff3:inst46|lpm_ff:lpm_ff_component|dffs[8] ; +; ; due to stuck port data_in ; ; +; Video:Fredi_Aschwanden|lpm_ff3:inst47|lpm_ff:lpm_ff_component|dffs[1] ; Stuck at GND ; Video:Fredi_Aschwanden|lpm_ff3:inst46|lpm_ff:lpm_ff_component|dffs[1] ; +; ; due to stuck port data_in ; ; +; Video:Fredi_Aschwanden|lpm_ff3:inst47|lpm_ff:lpm_ff_component|dffs[0] ; Stuck at GND ; Video:Fredi_Aschwanden|lpm_ff3:inst46|lpm_ff:lpm_ff_component|dffs[0] ; +; ; due to stuck port data_in ; ; +; Video:Fredi_Aschwanden|lpm_ff3:inst52|lpm_ff:lpm_ff_component|dffs[20] ; Stuck at GND ; Video:Fredi_Aschwanden|lpm_ff3:inst49|lpm_ff:lpm_ff_component|dffs[20] ; +; ; due to stuck port data_in ; ; +; Video:Fredi_Aschwanden|lpm_ff3:inst52|lpm_ff:lpm_ff_component|dffs[19] ; Stuck at GND ; Video:Fredi_Aschwanden|lpm_ff3:inst49|lpm_ff:lpm_ff_component|dffs[19] ; +; ; due to stuck port data_in ; ; +; Video:Fredi_Aschwanden|lpm_ff3:inst52|lpm_ff:lpm_ff_component|dffs[18] ; Stuck at GND ; Video:Fredi_Aschwanden|lpm_ff3:inst49|lpm_ff:lpm_ff_component|dffs[18] ; +; ; due to stuck port data_in ; ; +; Video:Fredi_Aschwanden|lpm_ff3:inst52|lpm_ff:lpm_ff_component|dffs[17] ; Stuck at GND ; Video:Fredi_Aschwanden|lpm_ff3:inst49|lpm_ff:lpm_ff_component|dffs[17] ; +; ; due to stuck port data_in ; ; +; Video:Fredi_Aschwanden|lpm_ff3:inst52|lpm_ff:lpm_ff_component|dffs[16] ; Stuck at GND ; Video:Fredi_Aschwanden|lpm_ff3:inst49|lpm_ff:lpm_ff_component|dffs[16] ; +; ; due to stuck port data_in ; ; +; Video:Fredi_Aschwanden|lpm_ff3:inst52|lpm_ff:lpm_ff_component|dffs[12] ; Stuck at GND ; Video:Fredi_Aschwanden|lpm_ff3:inst49|lpm_ff:lpm_ff_component|dffs[12] ; +; ; due to stuck port data_in ; ; +; Video:Fredi_Aschwanden|lpm_ff3:inst52|lpm_ff:lpm_ff_component|dffs[11] ; Stuck at GND ; Video:Fredi_Aschwanden|lpm_ff3:inst49|lpm_ff:lpm_ff_component|dffs[11] ; +; ; due to stuck port data_in ; ; +; Video:Fredi_Aschwanden|lpm_ff3:inst52|lpm_ff:lpm_ff_component|dffs[10] ; Stuck at GND ; Video:Fredi_Aschwanden|lpm_ff3:inst49|lpm_ff:lpm_ff_component|dffs[10] ; +; ; due to stuck port data_in ; ; +; Video:Fredi_Aschwanden|lpm_ff3:inst52|lpm_ff:lpm_ff_component|dffs[9] ; Stuck at GND ; Video:Fredi_Aschwanden|lpm_ff3:inst49|lpm_ff:lpm_ff_component|dffs[9] ; +; ; due to stuck port data_in ; ; +; interrupt_handler:nobody|INT_LATCH[31] ; Stuck at GND ; interrupt_handler:nobody|INT_CLEAR[31] ; +; ; due to stuck port clock ; ; +; Video:Fredi_Aschwanden|lpm_ff3:inst52|lpm_ff:lpm_ff_component|dffs[4] ; Stuck at GND ; Video:Fredi_Aschwanden|lpm_ff3:inst49|lpm_ff:lpm_ff_component|dffs[4] ; +; ; due to stuck port data_in ; ; +; Video:Fredi_Aschwanden|lpm_ff3:inst52|lpm_ff:lpm_ff_component|dffs[3] ; Stuck at GND ; Video:Fredi_Aschwanden|lpm_ff3:inst49|lpm_ff:lpm_ff_component|dffs[3] ; +; ; due to stuck port data_in ; ; +; Video:Fredi_Aschwanden|lpm_ff3:inst52|lpm_ff:lpm_ff_component|dffs[2] ; Stuck at GND ; Video:Fredi_Aschwanden|lpm_ff3:inst49|lpm_ff:lpm_ff_component|dffs[2] ; +; ; due to stuck port data_in ; ; +; Video:Fredi_Aschwanden|lpm_ff3:inst52|lpm_ff:lpm_ff_component|dffs[1] ; Stuck at GND ; Video:Fredi_Aschwanden|lpm_ff3:inst49|lpm_ff:lpm_ff_component|dffs[1] ; +; ; due to stuck port data_in ; ; +; Video:Fredi_Aschwanden|lpm_ff3:inst52|lpm_ff:lpm_ff_component|dffs[0] ; Stuck at GND ; Video:Fredi_Aschwanden|lpm_ff3:inst49|lpm_ff:lpm_ff_component|dffs[0] ; +; ; due to stuck port data_in ; ; +; Video:Fredi_Aschwanden|lpm_ff3:inst52|lpm_ff:lpm_ff_component|dffs[8] ; Stuck at GND ; Video:Fredi_Aschwanden|lpm_ff3:inst49|lpm_ff:lpm_ff_component|dffs[8] ; +; ; due to stuck port data_in ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|CTS_In ; Stuck at GND ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS|TCR[3] ; +; ; due to stuck port data_in ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|DCD_In ; Stuck at GND ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|\P_IRQ:DCD_TRANS ; +; ; due to stuck port data_in ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS|MR2[2] ; Stuck at GND ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS|ICR[4] ; +; ; due to stuck port data_in ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS|MR2[0] ; Stuck at GND ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|BUS_FREE ; +; ; due to stuck port data_in ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|DCD_FLAGn ; Stuck at GND ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS|ODR[2] ; +; ; due to stuck port data_in ; ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|DCD_In ; Stuck at GND ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|\P_IRQ:DCD_TRANS ; +; ; due to stuck port data_in ; ; ++-----------------------------------------------------------------------------------------------------------------------------------------------+---------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------+ + + ++------------------------------------------------------+ +; General Register Statistics ; ++----------------------------------------------+-------+ +; Statistic ; Value ; ++----------------------------------------------+-------+ +; Total registers ; 4612 ; +; Number of registers using Synchronous Clear ; 156 ; +; Number of registers using Synchronous Load ; 204 ; +; Number of registers using Asynchronous Clear ; 1431 ; +; Number of registers using Asynchronous Load ; 0 ; +; Number of registers using Clock Enable ; 2735 ; +; Number of registers using Preset ; 0 ; ++----------------------------------------------+-------+ + + ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Inverted Register Statistics ; ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------+ +; Inverted Register ; Fan out ; ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------+ +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|WR_CNT[3] ; 4 ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|WR_CNT[2] ; 5 ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|WR_CNT[1] ; 5 ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|WR_CNT[0] ; 4 ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|PER_CNT[7] ; 7 ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_TRANSMIT:I_UART_TRANSMIT|TDRE ; 7 ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_TRANSMIT:I_UART_TRANSMIT|TDRE ; 7 ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|IRQ_ACIAn ; 2 ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|rdemp_eq_comp_lsb_aeb ; 1 ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|rdemp_eq_comp_msb_aeb ; 1 ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_k47:rdptr_g1p|counter5a0 ; 8 ; +; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|reset_state ; 2 ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|rdemp_eq_comp_lsb_aeb ; 1 ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|rdemp_eq_comp_msb_aeb ; 1 ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_k47:rdptr_g1p|parity6 ; 4 ; +; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|sub_parity12a0 ; 1 ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_gic:wrptr_g1p|counter8a0 ; 8 ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_gic:wrptr_g1p|parity9 ; 4 ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|sub_parity6a0 ; 1 ; +; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|sub_parity9a0 ; 1 ; +; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a0 ; 7 ; +; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|parity6 ; 3 ; +; Total number of inverted registers = 22 ; ; ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------+ + + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Multiplexer Restructuring Statistics (Restructuring Performed) ; ++--------------------+-----------+---------------+----------------------+------------------------+------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Multiplexer Inputs ; Bus Width ; Baseline Area ; Area if Restructured ; Saving if Restructured ; Registered ; Example Multiplexer Output ; ++--------------------+-----------+---------------+----------------------+------------------------+------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; 3:1 ; 8 bits ; 16 LEs ; 16 LEs ; 0 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|SECTOR_REG[7] ; +; 3:1 ; 4 bits ; 8 LEs ; 4 LEs ; 4 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|\NOISEGENERATOR:CLK_DIV[0] ; +; 3:1 ; 2 bits ; 4 LEs ; 4 LEs ; 0 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_RX:I_USART_RECEIVE|\P_SAMPLE:HI_FLT[0] ; +; 3:1 ; 8 bits ; 16 LEs ; 8 LEs ; 8 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_RX:I_USART_RECEIVE|SHIFT_REG[6] ; +; 3:1 ; 8 bits ; 16 LEs ; 8 LEs ; 8 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|CTRL_REG[2] ; +; 3:1 ; 2 bits ; 4 LEs ; 0 LEs ; 4 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_RECEIVE:I_UART_RECEIVE|\P_SAMPLE:FLT_TMP[0] ; +; 3:1 ; 8 bits ; 16 LEs ; 8 LEs ; 8 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_RECEIVE:I_UART_RECEIVE|SHIFT_REG[0] ; +; 3:1 ; 8 bits ; 16 LEs ; 8 LEs ; 8 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|CTRL_REG[7] ; +; 3:1 ; 2 bits ; 4 LEs ; 0 LEs ; 4 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_RECEIVE:I_UART_RECEIVE|\P_SAMPLE:FLT_TMP[0] ; +; 3:1 ; 8 bits ; 16 LEs ; 8 LEs ; 8 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_RECEIVE:I_UART_RECEIVE|SHIFT_REG[4] ; +; 3:1 ; 8 bits ; 16 LEs ; 0 LEs ; 16 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|COMMAND_REG[7] ; +; 3:1 ; 16 bits ; 32 LEs ; 16 LEs ; 16 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_AM_DETECTOR:I_AM_DETECTOR|SHIFT[4] ; +; 3:1 ; 5 bits ; 10 LEs ; 5 LEs ; 5 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_AM_DETECTOR:I_AM_DETECTOR|\MFM_SYNCLOCK:TMP[4] ; +; 3:1 ; 4 bits ; 8 LEs ; 4 LEs ; 4 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|\PRESCALE_D:PRESCALE[4] ; +; 3:1 ; 4 bits ; 8 LEs ; 4 LEs ; 4 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|\PRESCALE_C:PRESCALE[4] ; +; 3:1 ; 4 bits ; 8 LEs ; 4 LEs ; 4 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|\PRESCALE_B:PRESCALE[7] ; +; 3:1 ; 4 bits ; 8 LEs ; 4 LEs ; 4 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|\PRESCALE_A:PRESCALE[6] ; +; 3:1 ; 2 bits ; 4 LEs ; 0 LEs ; 4 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|UCR[3] ; +; 3:1 ; 8 bits ; 16 LEs ; 8 LEs ; 8 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\RESTORE_TRAP:STEP_CNT[2] ; +; 4:1 ; 4 bits ; 8 LEs ; 4 LEs ; 4 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|SHIFT_REG[3] ; +; 4:1 ; 4 bits ; 8 LEs ; 8 LEs ; 0 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|SHIFT_REG[6] ; +; 4:1 ; 7 bits ; 14 LEs ; 14 LEs ; 0 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_TRANSMIT:I_UART_TRANSMIT|SHIFT_REG[4] ; +; 3:1 ; 3 bits ; 6 LEs ; 3 LEs ; 3 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_TRANSMIT:I_UART_TRANSMIT|BITCNT[2] ; +; 3:1 ; 3 bits ; 6 LEs ; 3 LEs ; 3 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_TX:I_USART_TRANSMIT|BITCNT[0] ; +; 4:1 ; 7 bits ; 14 LEs ; 14 LEs ; 0 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_TRANSMIT:I_UART_TRANSMIT|SHIFT_REG[6] ; +; 3:1 ; 3 bits ; 6 LEs ; 3 LEs ; 3 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_TRANSMIT:I_UART_TRANSMIT|BITCNT[0] ; +; 4:1 ; 5 bits ; 10 LEs ; 5 LEs ; 5 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_TX:I_USART_TRANSMIT|\CLKDIV:CLK_DIVCNT[0] ; +; 4:1 ; 3 bits ; 6 LEs ; 3 LEs ; 3 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_RX:I_USART_RECEIVE|\P_START_BIT:TMP[0] ; +; 4:1 ; 2 bits ; 4 LEs ; 2 LEs ; 2 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_RX:I_USART_RECEIVE|\P_SAMPLE:LOW_FLT[0] ; +; 4:1 ; 5 bits ; 10 LEs ; 10 LEs ; 0 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_RX:I_USART_RECEIVE|\CLKDIV:CLK_DIVCNT[3] ; +; 3:1 ; 3 bits ; 6 LEs ; 3 LEs ; 3 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_RECEIVE:I_UART_RECEIVE|BITCNT[0] ; +; 3:1 ; 3 bits ; 6 LEs ; 3 LEs ; 3 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_RECEIVE:I_UART_RECEIVE|BITCNT[1] ; +; 4:1 ; 7 bits ; 14 LEs ; 7 LEs ; 7 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_TRANSMIT:I_UART_TRANSMIT|DATA_REG[0] ; +; 4:1 ; 7 bits ; 14 LEs ; 7 LEs ; 7 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_TRANSMIT:I_UART_TRANSMIT|DATA_REG[2] ; +; 4:1 ; 7 bits ; 14 LEs ; 14 LEs ; 0 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_RECEIVE:I_UART_RECEIVE|DATA_REG[0] ; +; 4:1 ; 7 bits ; 14 LEs ; 14 LEs ; 0 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_RECEIVE:I_UART_RECEIVE|DATA_REG[2] ; +; 4:1 ; 5 bits ; 10 LEs ; 10 LEs ; 0 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[3] ; +; 4:1 ; 3 bits ; 6 LEs ; 3 LEs ; 3 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_RX:I_USART_RECEIVE|BITCNT[0] ; +; 3:1 ; 4 bits ; 8 LEs ; 4 LEs ; 4 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|SECT_LEN[7] ; +; 5:1 ; 21 bits ; 63 LEs ; 42 LEs ; 21 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\CLK_MASK:MASK_SHFT[7] ; +; 5:1 ; 2 bits ; 6 LEs ; 4 LEs ; 2 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\CLK_MASK:MASK_SHFT[19] ; +; 5:1 ; 5 bits ; 15 LEs ; 10 LEs ; 5 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_TX:I_USART_TRANSMIT|SHIFT_REG[1] ; +; 5:1 ; 5 bits ; 15 LEs ; 10 LEs ; 5 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|\NOISEGENERATOR:CNT_NOISE[0] ; +; 4:1 ; 31 bits ; 62 LEs ; 62 LEs ; 0 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[26] ; +; 5:1 ; 3 bits ; 9 LEs ; 6 LEs ; 3 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_RX:I_USART_RECEIVE|\P_SAMPLE:TIMER[1] ; +; 5:1 ; 8 bits ; 24 LEs ; 16 LEs ; 8 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|DATA_REG[4] ; +; 10:1 ; 4 bits ; 24 LEs ; 24 LEs ; 0 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|\PRESCALE_A:PRESCALE[5] ; +; 10:1 ; 4 bits ; 24 LEs ; 24 LEs ; 0 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|\PRESCALE_D:PRESCALE[2] ; +; 10:1 ; 4 bits ; 24 LEs ; 24 LEs ; 0 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|\PRESCALE_B:PRESCALE[1] ; +; 10:1 ; 4 bits ; 24 LEs ; 24 LEs ; 0 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|\PRESCALE_C:PRESCALE[5] ; +; 5:1 ; 8 bits ; 24 LEs ; 16 LEs ; 8 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_D[3] ; +; 5:1 ; 8 bits ; 24 LEs ; 16 LEs ; 8 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_C[0] ; +; 7:1 ; 7 bits ; 28 LEs ; 14 LEs ; 14 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_TRANSMIT:I_UART_TRANSMIT|\CLKDIV:CLK_DIVCNT[2] ; +; 7:1 ; 7 bits ; 28 LEs ; 21 LEs ; 7 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_RECEIVE:I_UART_RECEIVE|\CLKDIV:CLK_DIVCNT[4] ; +; 7:1 ; 7 bits ; 28 LEs ; 14 LEs ; 14 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_TRANSMIT:I_UART_TRANSMIT|\CLKDIV:CLK_DIVCNT[4] ; +; 7:1 ; 7 bits ; 28 LEs ; 21 LEs ; 7 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_RECEIVE:I_UART_RECEIVE|\CLKDIV:CLK_DIVCNT[5] ; +; 6:1 ; 8 bits ; 32 LEs ; 16 LEs ; 16 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|TRACK_REG[6] ; +; 7:1 ; 2 bits ; 8 LEs ; 4 LEs ; 4 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|nIDE_RD~reg0 ; +; 7:1 ; 13 bits ; 52 LEs ; 52 LEs ; 0 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CRC_LOGIC:I_CRC_LOGIC|CRC_SHIFT[10] ; +; 6:1 ; 20 bits ; 80 LEs ; 20 LEs ; 60 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; +; 11:1 ; 2 bits ; 14 LEs ; 10 LEs ; 4 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|\PHASE_DECODER:PHASE_AMOUNT[1] ; +; 8:1 ; 5 bits ; 25 LEs ; 20 LEs ; 5 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL|UDR[0] ; +; 9:1 ; 2 bits ; 12 LEs ; 8 LEs ; 4 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CRC_LOGIC:I_CRC_LOGIC|CRC_SHIFT[5] ; +; 14:1 ; 5 bits ; 45 LEs ; 10 LEs ; 35 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|VOL_ENV[3] ; +; 11:1 ; 8 bits ; 56 LEs ; 16 LEs ; 40 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_B[1] ; +; 11:1 ; 8 bits ; 56 LEs ; 16 LEs ; 40 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_A[1] ; +; 17:1 ; 4 bits ; 44 LEs ; 40 LEs ; 4 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|VECT_NUMBER[2] ; +; 17:1 ; 4 bits ; 44 LEs ; 0 LEs ; 44 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|VECT_NUMBER[7] ; +; 3:1 ; 8 bits ; 16 LEs ; 16 LEs ; 0 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MID[1] ; +; 3:1 ; 8 bits ; 16 LEs ; 16 LEs ; 0 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[5] ; +; 3:1 ; 24 bits ; 48 LEs ; 48 LEs ; 0 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[1] ; +; 3:1 ; 8 bits ; 16 LEs ; 16 LEs ; 0 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[16] ; +; 3:1 ; 4 bits ; 8 LEs ; 4 LEs ; 4 LEs ; Yes ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|WR_CNT[0] ; +; 3:1 ; 2 bits ; 4 LEs ; 2 LEs ; 2 LEs ; No ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE ; +; 3:1 ; 2 bits ; 4 LEs ; 4 LEs ; 0 LEs ; No ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_RX:I_USART_RECEIVE|RCV_NEXT_STATE ; +; 3:1 ; 5 bits ; 10 LEs ; 10 LEs ; 0 LEs ; No ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE ; +; 3:1 ; 4 bits ; 8 LEs ; 8 LEs ; 0 LEs ; No ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|INDEXCNT ; +; 3:1 ; 8 bits ; 16 LEs ; 16 LEs ; 0 LEs ; No ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[21] ; +; 3:1 ; 6 bits ; 12 LEs ; 12 LEs ; 0 LEs ; No ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|DATA_OUT[4] ; +; 3:1 ; 6 bits ; 12 LEs ; 12 LEs ; 0 LEs ; No ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|DATA_OUT[1] ; +; 3:1 ; 8 bits ; 16 LEs ; 16 LEs ; 0 LEs ; No ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CNT ; +; 3:1 ; 2 bits ; 4 LEs ; 4 LEs ; 0 LEs ; No ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_RECEIVE:I_UART_RECEIVE|RCV_NEXT_STATE ; +; 3:1 ; 2 bits ; 4 LEs ; 4 LEs ; 0 LEs ; No ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_RECEIVE:I_UART_RECEIVE|RCV_NEXT_STATE ; +; 3:1 ; 2 bits ; 4 LEs ; 2 LEs ; 2 LEs ; No ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|NEXT_CMD_STATE ; +; 3:1 ; 4 bits ; 8 LEs ; 8 LEs ; 0 LEs ; No ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|AMPLITUDE_A[1] ; +; 3:1 ; 4 bits ; 8 LEs ; 8 LEs ; 0 LEs ; No ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|AMPLITUDE_B[2] ; +; 3:1 ; 4 bits ; 8 LEs ; 8 LEs ; 0 LEs ; No ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|AMPLITUDE_C[1] ; +; 16:1 ; 8 bits ; 80 LEs ; 24 LEs ; 56 LEs ; No ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|DATA_OUT[2] ; +; 4:1 ; 8 bits ; 16 LEs ; 16 LEs ; 0 LEs ; No ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|ADDER_IN[1] ; +; 64:1 ; 3 bits ; 126 LEs ; 126 LEs ; 0 LEs ; No ; |firebee1|interrupt_handler:nobody|_ ; +; 17:1 ; 3 bits ; 33 LEs ; 18 LEs ; 15 LEs ; No ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|DA_OUT[7] ; +; 18:1 ; 4 bits ; 48 LEs ; 44 LEs ; 4 LEs ; No ; |firebee1|FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|DA_OUT[2] ; ++--------------------+-----------+---------------+----------------------+------------------------+------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated ; ++---------------------------------------+-------------------------------------------------------------------------------------+-----------------+-------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------------------+-------------------------------------------------------------------------------------+-----------------+-------------------------------+ +; AUTO_SHIFT_REGISTER_RECOGNITION ; OFF ; - ; - ; +; REMOVE_DUPLICATE_REGISTERS ; OFF ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; d101 ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; d102 ; - ; - ; +; SYNCHRONIZER_IDENTIFICATION ; OFF ; - ; - ; +; SYNCHRONIZATION_REGISTER_CHAIN_LENGTH ; 3 ; - ; - ; +; SYNCHRONIZER_IDENTIFICATION ; FORCED_IF_ASYNCHRONOUS ; - ; rdemp_eq_comp_lsb_aeb ; +; POWER_UP_LEVEL ; HIGH ; - ; rdemp_eq_comp_lsb_aeb ; +; SYNCHRONIZER_IDENTIFICATION ; FORCED_IF_ASYNCHRONOUS ; - ; rdemp_eq_comp_msb_aeb ; +; POWER_UP_LEVEL ; HIGH ; - ; rdemp_eq_comp_msb_aeb ; +; SYNCHRONIZER_IDENTIFICATION ; FORCED_IF_ASYNCHRONOUS ; - ; rs_dgwp_reg ; +; SYNCHRONIZER_IDENTIFICATION ; FORCED_IF_ASYNCHRONOUS ; - ; wrfull_eq_comp_lsb_mux_reg ; +; SYNCHRONIZER_IDENTIFICATION ; FORCED_IF_ASYNCHRONOUS ; - ; wrfull_eq_comp_msb_mux_reg ; +; SUPPRESS_DA_RULE_INTERNAL ; S102 ; - ; wrptr_g ; +; SYNCHRONIZER_IDENTIFICATION ; FORCED_IF_ASYNCHRONOUS ; - ; ws_dgrp_reg ; +; CUT ; ON ; rdptr_g ; ws_dgrp|dffpipe17|dffe18a ; +; SDC_STATEMENT ; set_false_path -from *rdptr_g* -to *ws_dgrp|dffpipe_id9:dffpipe17|dffe18a* ; - ; - ; +; CUT ; ON ; delayed_wrptr_g ; rs_dgwp|dffpipe12|dffe13a ; +; SDC_STATEMENT ; set_false_path -from *delayed_wrptr_g* -to *rs_dgwp|dffpipe_hd9:dffpipe12|dffe13a* ; - ; - ; ++---------------------------------------+-------------------------------------------------------------------------------------+-----------------+-------------------------------+ + + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_k47:rdptr_g1p ; ++----------------+-------+------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++----------------+-------+------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; POWER_UP_LEVEL ; HIGH ; - ; counter5a0 ; +; POWER_UP_LEVEL ; HIGH ; - ; parity6 ; ++----------------+-------+------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p ; ++---------------------------+-------+------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------+-------+------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; SUPPRESS_DA_RULE_INTERNAL ; S102 ; - ; - ; +; POWER_UP_LEVEL ; HIGH ; - ; sub_parity9a0 ; +; POWER_UP_LEVEL ; LOW ; - ; parity8 ; ++---------------------------+-------+------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram ; ++---------------------------------+--------------------+------+------------------------------------------------------------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------------+--------------------+------+------------------------------------------------------------------------------------------------------------------------------------------+ +; OPTIMIZE_POWER_DURING_SYNTHESIS ; NORMAL_COMPILATION ; - ; - ; ++---------------------------------+--------------------+------+------------------------------------------------------------------------------------------------------------------------------------------+ + + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_ikd:rs_dgwp ; ++-----------------------------+------------------------+------+--------------------------------------------------------------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++-----------------------------+------------------------+------+--------------------------------------------------------------------------------------------------------------------------------------------+ +; X_ON_VIOLATION_OPTION ; OFF ; - ; - ; +; SYNCHRONIZER_IDENTIFICATION ; FORCED_IF_ASYNCHRONOUS ; - ; - ; ++-----------------------------+------------------------+------+--------------------------------------------------------------------------------------------------------------------------------------------+ + + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_ikd:rs_dgwp|dffpipe_hd9:dffpipe12 ; ++---------------------------------+-------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------------+-------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; AUTO_SHIFT_REGISTER_RECOGNITION ; OFF ; - ; - ; ++---------------------------------+-------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|dffpipe_gd9:ws_brp ; ++---------------------------------+-------+------+-------------------------------------------------------------------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------------+-------+------+-------------------------------------------------------------------------------------------------------------------------------------------------+ +; AUTO_SHIFT_REGISTER_RECOGNITION ; OFF ; - ; - ; ++---------------------------------+-------+------+-------------------------------------------------------------------------------------------------------------------------------------------------+ + + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|dffpipe_pe9:ws_bwp ; ++---------------------------------+-------+------+-------------------------------------------------------------------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------------+-------+------+-------------------------------------------------------------------------------------------------------------------------------------------------+ +; AUTO_SHIFT_REGISTER_RECOGNITION ; OFF ; - ; - ; ++---------------------------------+-------+------+-------------------------------------------------------------------------------------------------------------------------------------------------+ + + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_jkd:ws_dgrp ; ++-----------------------------+------------------------+------+--------------------------------------------------------------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++-----------------------------+------------------------+------+--------------------------------------------------------------------------------------------------------------------------------------------+ +; X_ON_VIOLATION_OPTION ; OFF ; - ; - ; +; SYNCHRONIZER_IDENTIFICATION ; FORCED_IF_ASYNCHRONOUS ; - ; - ; ++-----------------------------+------------------------+------+--------------------------------------------------------------------------------------------------------------------------------------------+ + + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_jkd:ws_dgrp|dffpipe_id9:dffpipe17 ; ++---------------------------------+-------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------------+-------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; AUTO_SHIFT_REGISTER_RECOGNITION ; OFF ; - ; - ; ++---------------------------------+-------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated ; ++---------------------------------------+-------------------------------------------------------------------------------------+-----------------+-------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------------------+-------------------------------------------------------------------------------------+-----------------+-------------------------------+ +; AUTO_SHIFT_REGISTER_RECOGNITION ; OFF ; - ; - ; +; REMOVE_DUPLICATE_REGISTERS ; OFF ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; d101 ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; d102 ; - ; - ; +; SYNCHRONIZER_IDENTIFICATION ; OFF ; - ; - ; +; SYNCHRONIZATION_REGISTER_CHAIN_LENGTH ; 3 ; - ; - ; +; SYNCHRONIZER_IDENTIFICATION ; FORCED_IF_ASYNCHRONOUS ; - ; rdemp_eq_comp_lsb_aeb ; +; POWER_UP_LEVEL ; HIGH ; - ; rdemp_eq_comp_lsb_aeb ; +; SYNCHRONIZER_IDENTIFICATION ; FORCED_IF_ASYNCHRONOUS ; - ; rdemp_eq_comp_msb_aeb ; +; POWER_UP_LEVEL ; HIGH ; - ; rdemp_eq_comp_msb_aeb ; +; SYNCHRONIZER_IDENTIFICATION ; FORCED_IF_ASYNCHRONOUS ; - ; rs_dgwp_reg ; +; SYNCHRONIZER_IDENTIFICATION ; FORCED_IF_ASYNCHRONOUS ; - ; wrfull_eq_comp_lsb_mux_reg ; +; SYNCHRONIZER_IDENTIFICATION ; FORCED_IF_ASYNCHRONOUS ; - ; wrfull_eq_comp_msb_mux_reg ; +; SUPPRESS_DA_RULE_INTERNAL ; S102 ; - ; wrptr_g ; +; SYNCHRONIZER_IDENTIFICATION ; FORCED_IF_ASYNCHRONOUS ; - ; ws_dgrp_reg ; +; CUT ; ON ; rdptr_g ; ws_dgrp|dffpipe15|dffe16a ; +; SDC_STATEMENT ; set_false_path -from *rdptr_g* -to *ws_dgrp|dffpipe_kd9:dffpipe15|dffe16a* ; - ; - ; +; CUT ; ON ; delayed_wrptr_g ; rs_dgwp|dffpipe12|dffe13a ; +; SDC_STATEMENT ; set_false_path -from *delayed_wrptr_g* -to *rs_dgwp|dffpipe_jd9:dffpipe12|dffe13a* ; - ; - ; ++---------------------------------------+-------------------------------------------------------------------------------------+-----------------+-------------------------------+ + + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p ; ++----------------+-------+------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++----------------+-------+------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; POWER_UP_LEVEL ; HIGH ; - ; sub_parity6a0 ; +; POWER_UP_LEVEL ; LOW ; - ; parity5 ; ++----------------+-------+------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_gic:wrptr_g1p ; ++---------------------------+-------+------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------+-------+------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; SUPPRESS_DA_RULE_INTERNAL ; S102 ; - ; - ; +; POWER_UP_LEVEL ; HIGH ; - ; counter8a0 ; +; POWER_UP_LEVEL ; HIGH ; - ; parity9 ; ++---------------------------+-------+------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram ; ++---------------------------------+--------------------+------+------------------------------------------------------------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------------+--------------------+------+------------------------------------------------------------------------------------------------------------------------------------------+ +; OPTIMIZE_POWER_DURING_SYNTHESIS ; NORMAL_COMPILATION ; - ; - ; ++---------------------------------+--------------------+------+------------------------------------------------------------------------------------------------------------------------------------------+ + + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|dffpipe_pe9:rs_brp ; ++---------------------------------+-------+------+-------------------------------------------------------------------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------------+-------+------+-------------------------------------------------------------------------------------------------------------------------------------------------+ +; AUTO_SHIFT_REGISTER_RECOGNITION ; OFF ; - ; - ; ++---------------------------------+-------+------+-------------------------------------------------------------------------------------------------------------------------------------------------+ + + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|dffpipe_gd9:rs_bwp ; ++---------------------------------+-------+------+-------------------------------------------------------------------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------------+-------+------+-------------------------------------------------------------------------------------------------------------------------------------------------+ +; AUTO_SHIFT_REGISTER_RECOGNITION ; OFF ; - ; - ; ++---------------------------------+-------+------+-------------------------------------------------------------------------------------------------------------------------------------------------+ + + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_kkd:rs_dgwp ; ++-----------------------------+------------------------+------+--------------------------------------------------------------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++-----------------------------+------------------------+------+--------------------------------------------------------------------------------------------------------------------------------------------+ +; X_ON_VIOLATION_OPTION ; OFF ; - ; - ; +; SYNCHRONIZER_IDENTIFICATION ; FORCED_IF_ASYNCHRONOUS ; - ; - ; ++-----------------------------+------------------------+------+--------------------------------------------------------------------------------------------------------------------------------------------+ + + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_kkd:rs_dgwp|dffpipe_jd9:dffpipe12 ; ++---------------------------------+-------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------------+-------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; AUTO_SHIFT_REGISTER_RECOGNITION ; OFF ; - ; - ; ++---------------------------------+-------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_lkd:ws_dgrp ; ++-----------------------------+------------------------+------+--------------------------------------------------------------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++-----------------------------+------------------------+------+--------------------------------------------------------------------------------------------------------------------------------------------+ +; X_ON_VIOLATION_OPTION ; OFF ; - ; - ; +; SYNCHRONIZER_IDENTIFICATION ; FORCED_IF_ASYNCHRONOUS ; - ; - ; ++-----------------------------+------------------------+------+--------------------------------------------------------------------------------------------------------------------------------------------+ + + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_lkd:ws_dgrp|dffpipe_kd9:dffpipe15 ; ++---------------------------------+-------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------------+-------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; AUTO_SHIFT_REGISTER_RECOGNITION ; OFF ; - ; - ; ++---------------------------------+-------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + ++-----------------------------------------------------------------------------------------+ +; Source assignments for Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component ; ++---------------------------------+-------+------+----------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------------+-------+------+----------------------------------------+ +; AUTO_SHIFT_REGISTER_RECOGNITION ; OFF ; - ; - ; ++---------------------------------+-------+------+----------------------------------------+ + + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated ; ++---------------------------------------+-------------------------------------------------------------------------------------+-----------------+----------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------------------+-------------------------------------------------------------------------------------+-----------------+----------------------------+ +; AUTO_SHIFT_REGISTER_RECOGNITION ; OFF ; - ; - ; +; REMOVE_DUPLICATE_REGISTERS ; OFF ; - ; - ; +; SYNCHRONIZER_IDENTIFICATION ; OFF ; - ; - ; +; SYNCHRONIZATION_REGISTER_CHAIN_LENGTH ; 4 ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; d101 ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; d102 ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; R105 ; - ; - ; +; SYNCHRONIZER_IDENTIFICATION ; FORCED_IF_ASYNCHRONOUS ; - ; rdemp_eq_comp_lsb_aeb ; +; POWER_UP_LEVEL ; HIGH ; - ; rdemp_eq_comp_lsb_aeb ; +; SYNCHRONIZER_IDENTIFICATION ; FORCED_IF_ASYNCHRONOUS ; - ; rdemp_eq_comp_msb_aeb ; +; POWER_UP_LEVEL ; HIGH ; - ; rdemp_eq_comp_msb_aeb ; +; SYNCHRONIZER_IDENTIFICATION ; FORCED_IF_ASYNCHRONOUS ; - ; rs_dgwp_reg ; +; SYNCHRONIZER_IDENTIFICATION ; FORCED_IF_ASYNCHRONOUS ; - ; wrfull_eq_comp_lsb_mux_reg ; +; SYNCHRONIZER_IDENTIFICATION ; FORCED_IF_ASYNCHRONOUS ; - ; wrfull_eq_comp_msb_mux_reg ; +; SYNCHRONIZER_IDENTIFICATION ; FORCED_IF_ASYNCHRONOUS ; - ; ws_dgrp_reg ; +; CUT ; ON ; rdptr_g ; ws_dgrp|dffpipe22|dffe23a ; +; SDC_STATEMENT ; set_false_path -from *rdptr_g* -to *ws_dgrp|dffpipe_re9:dffpipe22|dffe23a* ; - ; - ; +; CUT ; ON ; delayed_wrptr_g ; rs_dgwp|dffpipe15|dffe16a ; +; SDC_STATEMENT ; set_false_path -from *delayed_wrptr_g* -to *rs_dgwp|dffpipe_qe9:dffpipe15|dffe16a* ; - ; - ; ++---------------------------------------+-------------------------------------------------------------------------------------+-----------------+----------------------------+ + + ++------------------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p ; ++----------------+-------+------+----------------------------------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++----------------+-------+------+----------------------------------------------------------------------------------------------------------------+ +; POWER_UP_LEVEL ; HIGH ; - ; counter5a0 ; +; POWER_UP_LEVEL ; HIGH ; - ; parity6 ; ++----------------+-------+------+----------------------------------------------------------------------------------------------------------------+ + + ++------------------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_ojc:wrptr_g1p ; ++---------------------------+-------+------+-----------------------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------+-------+------+-----------------------------------------------------------------------------------------------------+ +; SUPPRESS_DA_RULE_INTERNAL ; S102 ; - ; - ; +; POWER_UP_LEVEL ; HIGH ; - ; counter8a0 ; +; POWER_UP_LEVEL ; HIGH ; - ; parity9 ; ++---------------------------+-------+------+-----------------------------------------------------------------------------------------------------+ + + ++-----------------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp ; ++---------------------------+-------+------+----------------------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------+-------+------+----------------------------------------------------------------------------------------------------+ +; SUPPRESS_DA_RULE_INTERNAL ; S102 ; - ; - ; +; POWER_UP_LEVEL ; HIGH ; - ; sub_parity12a0 ; +; POWER_UP_LEVEL ; LOW ; - ; parity11 ; ++---------------------------+-------+------+----------------------------------------------------------------------------------------------------+ + + ++---------------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram ; ++---------------------------------+--------------------+------+-------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------------+--------------------+------+-------------------------------------------------------------------------------+ +; OPTIMIZE_POWER_DURING_SYNTHESIS ; NORMAL_COMPILATION ; - ; - ; ++---------------------------------+--------------------+------+-------------------------------------------------------------------------------+ + + ++-----------------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_rld:rs_dgwp ; ++-----------------------------+------------------------+------+---------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++-----------------------------+------------------------+------+---------------------------------------------------------------------------------+ +; X_ON_VIOLATION_OPTION ; OFF ; - ; - ; +; SYNCHRONIZER_IDENTIFICATION ; FORCED_IF_ASYNCHRONOUS ; - ; - ; ++-----------------------------+------------------------+------+---------------------------------------------------------------------------------+ + + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_rld:rs_dgwp|dffpipe_qe9:dffpipe15 ; ++---------------------------------+-------+------+--------------------------------------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------------+-------+------+--------------------------------------------------------------------------------------------------------------------+ +; AUTO_SHIFT_REGISTER_RECOGNITION ; OFF ; - ; - ; ++---------------------------------+-------+------+--------------------------------------------------------------------------------------------------------------------+ + + ++---------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_9d9:wraclr ; ++---------------------------------+-------+------+--------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------------+-------+------+--------------------------------------------------------------------------------------+ +; AUTO_SHIFT_REGISTER_RECOGNITION ; OFF ; - ; - ; ++---------------------------------+-------+------+--------------------------------------------------------------------------------------+ + + ++---------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_brp ; ++---------------------------------+-------+------+--------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------------+-------+------+--------------------------------------------------------------------------------------+ +; AUTO_SHIFT_REGISTER_RECOGNITION ; OFF ; - ; - ; ++---------------------------------+-------+------+--------------------------------------------------------------------------------------+ + + ++---------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_bwp ; ++---------------------------------+-------+------+--------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------------+-------+------+--------------------------------------------------------------------------------------+ +; AUTO_SHIFT_REGISTER_RECOGNITION ; OFF ; - ; - ; ++---------------------------------+-------+------+--------------------------------------------------------------------------------------+ + + ++-----------------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp ; ++-----------------------------+------------------------+------+---------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++-----------------------------+------------------------+------+---------------------------------------------------------------------------------+ +; X_ON_VIOLATION_OPTION ; OFF ; - ; - ; +; SYNCHRONIZER_IDENTIFICATION ; FORCED_IF_ASYNCHRONOUS ; - ; - ; ++-----------------------------+------------------------+------+---------------------------------------------------------------------------------+ + + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22 ; ++---------------------------------+-------+------+--------------------------------------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------------+-------+------+--------------------------------------------------------------------------------------------------------------------+ +; AUTO_SHIFT_REGISTER_RECOGNITION ; OFF ; - ; - ; ++---------------------------------+-------+------+--------------------------------------------------------------------------------------------------------------------+ + + ++----------------------------------------------------------------------------------------------------------+ +; Source assignments for Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component ; ++---------------------------+-------------+------+---------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------+-------------+------+---------------------------------------------------------+ +; ADV_NETLIST_OPT_ALLOWED ; NEVER_ALLOW ; - ; - ; +; PRESERVE_REGISTER ; ON ; - ; output_cell_L ; +; DDIO_OUTPUT_REGISTER ; LOW ; - ; output_cell_L ; +; DDIO_OUTPUT_REGISTER ; HIGH ; - ; mux ; +; DDIO_INPUT_REGISTER ; LOW ; - ; input_cell_L ; +; DDIO_INPUT_REGISTER ; HIGH ; - ; input_cell_H ; +; SUPPRESS_DA_RULE_INTERNAL ; D101 ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; D103 ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; C104 ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; C106 ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; D102 ; - ; - ; ++---------------------------+-------------+------+---------------------------------------------------------+ + + ++----------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated ; ++-----------------------------+-------+------+-------------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++-----------------------------+-------+------+-------------------------------------------------------------------------------------------+ +; SYNCHRONIZER_IDENTIFICATION ; OFF ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; C106 ; - ; - ; +; DDIO_INPUT_REGISTER ; HIGH ; - ; input_cell_h ; +; DDIO_INPUT_REGISTER ; LOW ; - ; input_cell_l ; +; MEGAFUNCTION_GENERATED_TRI ; ON ; - ; tri_buf1a ; ++-----------------------------+-------+------+-------------------------------------------------------------------------------------------+ + + ++----------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated ; ++---------------------------------+--------------------+------+--------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------------+--------------------+------+--------------------------------------------------------------------------+ +; OPTIMIZE_POWER_DURING_SYNTHESIS ; NORMAL_COMPILATION ; - ; - ; ++---------------------------------+--------------------+------+--------------------------------------------------------------------------+ + + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram ; ++---------------------------------+--------------------+------+---------------------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------------+--------------------+------+---------------------------------------------------------------------------------------------------+ +; OPTIMIZE_POWER_DURING_SYNTHESIS ; NORMAL_COMPILATION ; - ; - ; ++---------------------------------+--------------------+------+---------------------------------------------------------------------------------------------------+ + + ++------------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_GREEN|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated ; ++---------------------------------+--------------------+------+----------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------------+--------------------+------+----------------------------------------------------------------------------+ +; OPTIMIZE_POWER_DURING_SYNTHESIS ; NORMAL_COMPILATION ; - ; - ; ++---------------------------------+--------------------+------+----------------------------------------------------------------------------+ + + ++-----------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated ; ++---------------------------------+--------------------+------+---------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------------+--------------------+------+---------------------------------------------------------------------------+ +; OPTIMIZE_POWER_DURING_SYNTHESIS ; NORMAL_COMPILATION ; - ; - ; ++---------------------------------+--------------------+------+---------------------------------------------------------------------------+ + + ++------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for Video:Fredi_Aschwanden|altdpram0:ST_CLUT_RED|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated ; ++---------------------------------+--------------------+------+----------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------------+--------------------+------+----------------------------------------------------------------------+ +; OPTIMIZE_POWER_DURING_SYNTHESIS ; NORMAL_COMPILATION ; - ; - ; ++---------------------------------+--------------------+------+----------------------------------------------------------------------+ + + ++--------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for Video:Fredi_Aschwanden|altdpram0:ST_CLUT_GREEN|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated ; ++---------------------------------+--------------------+------+------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------------+--------------------+------+------------------------------------------------------------------------+ +; OPTIMIZE_POWER_DURING_SYNTHESIS ; NORMAL_COMPILATION ; - ; - ; ++---------------------------------+--------------------+------+------------------------------------------------------------------------+ + + ++-------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for Video:Fredi_Aschwanden|altdpram0:ST_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated ; ++---------------------------------+--------------------+------+-----------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------------+--------------------+------+-----------------------------------------------------------------------+ +; OPTIMIZE_POWER_DURING_SYNTHESIS ; NORMAL_COMPILATION ; - ; - ; ++---------------------------------+--------------------+------+-----------------------------------------------------------------------+ + + ++---------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated ; ++---------------------------------+--------------------+------+-------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------------+--------------------+------+-------------------------------------------------------------------------+ +; OPTIMIZE_POWER_DURING_SYNTHESIS ; NORMAL_COMPILATION ; - ; - ; ++---------------------------------+--------------------+------+-------------------------------------------------------------------------+ + + ++---------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated ; ++---------------------------------+--------------------+------+-------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------------+--------------------+------+-------------------------------------------------------------------------+ +; OPTIMIZE_POWER_DURING_SYNTHESIS ; NORMAL_COMPILATION ; - ; - ; ++---------------------------------+--------------------+------+-------------------------------------------------------------------------+ + + ++-------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated ; ++---------------------------------+--------------------+------+-----------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------------+--------------------+------+-----------------------------------------------------------------------+ +; OPTIMIZE_POWER_DURING_SYNTHESIS ; NORMAL_COMPILATION ; - ; - ; ++---------------------------------+--------------------+------+-----------------------------------------------------------------------+ + + ++----------------------------------------------------------------------------------------------------+ +; Source assignments for Video:Fredi_Aschwanden|altddio_out2:inst5|altddio_out:altddio_out_component ; ++---------------------------+-------------+------+---------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------+-------------+------+---------------------------------------------------+ +; ADV_NETLIST_OPT_ALLOWED ; NEVER_ALLOW ; - ; - ; +; PRESERVE_REGISTER ; ON ; - ; output_cell_L ; +; DDIO_OUTPUT_REGISTER ; LOW ; - ; output_cell_L ; +; DDIO_OUTPUT_REGISTER ; HIGH ; - ; mux ; +; SUPPRESS_DA_RULE_INTERNAL ; C104 ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; C106 ; - ; - ; ++---------------------------+-------------+------+---------------------------------------------------+ + + ++--------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for Video:Fredi_Aschwanden|altddio_out2:inst5|altddio_out:altddio_out_component|ddio_out_o2f:auto_generated ; ++-----------------------------+-------+------+-----------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++-----------------------------+-------+------+-----------------------------------------------------------------------------------+ +; SYNCHRONIZER_IDENTIFICATION ; OFF ; - ; - ; ++-----------------------------+-------+------+-----------------------------------------------------------------------------------+ + + ++----------------------------------------------------------------------------------------------------+ +; Source assignments for Video:Fredi_Aschwanden|altddio_out0:inst2|altddio_out:altddio_out_component ; ++---------------------------+-------------+------+---------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------+-------------+------+---------------------------------------------------+ +; ADV_NETLIST_OPT_ALLOWED ; NEVER_ALLOW ; - ; - ; +; PRESERVE_REGISTER ; ON ; - ; output_cell_L ; +; DDIO_OUTPUT_REGISTER ; LOW ; - ; output_cell_L ; +; DDIO_OUTPUT_REGISTER ; HIGH ; - ; mux ; +; SUPPRESS_DA_RULE_INTERNAL ; C104 ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; C106 ; - ; - ; ++---------------------------+-------------+------+---------------------------------------------------+ + + ++--------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for Video:Fredi_Aschwanden|altddio_out0:inst2|altddio_out:altddio_out_component|ddio_out_are:auto_generated ; ++-----------------------------+-------+------+-----------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++-----------------------------+-------+------+-----------------------------------------------------------------------------------+ +; SYNCHRONIZER_IDENTIFICATION ; OFF ; - ; - ; ++-----------------------------+-------+------+-----------------------------------------------------------------------------------+ + + ++------------------------------------------------------------------------------------------+ +; Source assignments for altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated ; ++---------------------------+-------+------+-----------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------+-------+------+-----------------------------------------------+ +; SUPPRESS_DA_RULE_INTERNAL ; C104 ; - ; - ; ++---------------------------+-------+------+-----------------------------------------------+ + + ++-------------------------------------------------------------------------------------------------------------------+ +; Source assignments for altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component ; ++---------------------------------------+-------------+------+------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------------------+-------------+------+------------------------------------------------------+ +; ADV_NETLIST_OPT_ALLOWED ; NEVER_ALLOW ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; C106 ; - ; - ; +; PLL_SCAN_RECONFIG_COUNTER_REMAP_LCELL ; 2 ; - ; le_comb10 ; +; PLL_SCAN_RECONFIG_COUNTER_REMAP_LCELL ; 0 ; - ; le_comb8 ; +; PLL_SCAN_RECONFIG_COUNTER_REMAP_LCELL ; 1 ; - ; le_comb9 ; +; POWER_UP_LEVEL ; LOW ; - ; idle_state ; +; POWER_UP_LEVEL ; LOW ; - ; read_data_nominal_state ; +; POWER_UP_LEVEL ; LOW ; - ; read_data_state ; +; POWER_UP_LEVEL ; LOW ; - ; read_first_nominal_state ; +; POWER_UP_LEVEL ; LOW ; - ; read_first_state ; +; POWER_UP_LEVEL ; LOW ; - ; read_init_nominal_state ; +; POWER_UP_LEVEL ; LOW ; - ; read_init_state ; +; POWER_UP_LEVEL ; LOW ; - ; read_last_nominal_state ; +; POWER_UP_LEVEL ; LOW ; - ; read_last_state ; +; POWER_UP_LEVEL ; LOW ; - ; reconfig_counter_state ; +; POWER_UP_LEVEL ; LOW ; - ; reconfig_init_state ; +; POWER_UP_LEVEL ; LOW ; - ; reconfig_post_state ; +; POWER_UP_LEVEL ; LOW ; - ; reconfig_seq_data_state ; +; POWER_UP_LEVEL ; LOW ; - ; reconfig_seq_ena_state ; +; POWER_UP_LEVEL ; LOW ; - ; reconfig_wait_state ; +; POWER_UP_LEVEL ; HIGH ; - ; reset_state ; +; POWER_UP_LEVEL ; LOW ; - ; write_data_state ; +; POWER_UP_LEVEL ; LOW ; - ; write_init_nominal_state ; +; POWER_UP_LEVEL ; LOW ; - ; write_init_state ; +; POWER_UP_LEVEL ; LOW ; - ; write_nominal_state ; ++---------------------------------------+-------------+------+------------------------------------------------------+ + + ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|altsyncram:altsyncram4|altsyncram_46r:auto_generated ; ++---------------------------------+--------------------+------+----------------------------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------------+--------------------+------+----------------------------------------------------------------------------------------------------------+ +; OPTIMIZE_POWER_DURING_SYNTHESIS ; NORMAL_COMPILATION ; - ; - ; ++---------------------------------+--------------------+------+----------------------------------------------------------------------------------------------------------+ + + ++-------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr1 ; ++---------------------------+-------+------+------------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------+-------+------+------------------------------------------------------------------------------------------+ +; SUPPRESS_DA_RULE_INTERNAL ; a101 ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; s102 ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; s103 ; - ; - ; ++---------------------------+-------+------+------------------------------------------------------------------------------------------+ + + ++--------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr12 ; ++---------------------------+-------+------+-------------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------+-------+------+-------------------------------------------------------------------------------------------+ +; SUPPRESS_DA_RULE_INTERNAL ; a101 ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; s102 ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; s103 ; - ; - ; ++---------------------------+-------+------+-------------------------------------------------------------------------------------------+ + + ++--------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr13 ; ++---------------------------+-------+------+-------------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------+-------+------+-------------------------------------------------------------------------------------------+ +; SUPPRESS_DA_RULE_INTERNAL ; a101 ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; s102 ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; s103 ; - ; - ; ++---------------------------+-------+------+-------------------------------------------------------------------------------------------+ + + ++--------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr14 ; ++---------------------------+-------+------+-------------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------+-------+------+-------------------------------------------------------------------------------------------+ +; SUPPRESS_DA_RULE_INTERNAL ; a101 ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; s102 ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; s103 ; - ; - ; ++---------------------------+-------+------+-------------------------------------------------------------------------------------------+ + + ++--------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr15 ; ++---------------------------+-------+------+-------------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------+-------+------+-------------------------------------------------------------------------------------------+ +; SUPPRESS_DA_RULE_INTERNAL ; a101 ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; s102 ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; s103 ; - ; - ; ++---------------------------+-------+------+-------------------------------------------------------------------------------------------+ + + ++-------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr2 ; ++---------------------------+-------+------+------------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------+-------+------+------------------------------------------------------------------------------------------+ +; SUPPRESS_DA_RULE_INTERNAL ; a101 ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; s102 ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; s103 ; - ; - ; ++---------------------------+-------+------+------------------------------------------------------------------------------------------+ + + ++-------------------------------------------------------------------------------------------------------------------------------------+ +; Source assignments for altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr3 ; ++---------------------------+-------+------+------------------------------------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------+-------+------+------------------------------------------------------------------------------------------+ +; SUPPRESS_DA_RULE_INTERNAL ; a101 ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; s102 ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; s103 ; - ; - ; ++---------------------------+-------+------+------------------------------------------------------------------------------------------+ + + ++------------------------------------------------------------------------------+ +; Source assignments for lpm_counter0:inst18|lpm_counter:lpm_counter_component ; ++---------------------------+-------+------+-----------------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------+-------+------+-----------------------------------+ +; SUPPRESS_DA_RULE_INTERNAL ; a101 ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; s102 ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; s103 ; - ; - ; ++---------------------------+-------+------+-----------------------------------+ + + ++-----------------------------------------------------------------------------+ +; Source assignments for altddio_out3:inst5|altddio_out:altddio_out_component ; ++---------------------------+-------------+------+----------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------+-------------+------+----------------------------+ +; ADV_NETLIST_OPT_ALLOWED ; NEVER_ALLOW ; - ; - ; +; PRESERVE_REGISTER ; ON ; - ; output_cell_L ; +; DDIO_OUTPUT_REGISTER ; LOW ; - ; output_cell_L ; +; DDIO_OUTPUT_REGISTER ; HIGH ; - ; mux ; +; SUPPRESS_DA_RULE_INTERNAL ; C104 ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; C106 ; - ; - ; ++---------------------------+-------------+------+----------------------------+ + + ++---------------------------------------------------------------------------------------------------------+ +; Source assignments for altddio_out3:inst5|altddio_out:altddio_out_component|ddio_out_31f:auto_generated ; ++-----------------------------+-------+------+------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++-----------------------------+-------+------+------------------------------------------------------------+ +; SYNCHRONIZER_IDENTIFICATION ; OFF ; - ; - ; ++-----------------------------+-------+------+------------------------------------------------------------+ + + ++-----------------------------------------------------------------------------+ +; Source assignments for altddio_out3:inst6|altddio_out:altddio_out_component ; ++---------------------------+-------------+------+----------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------+-------------+------+----------------------------+ +; ADV_NETLIST_OPT_ALLOWED ; NEVER_ALLOW ; - ; - ; +; PRESERVE_REGISTER ; ON ; - ; output_cell_L ; +; DDIO_OUTPUT_REGISTER ; LOW ; - ; output_cell_L ; +; DDIO_OUTPUT_REGISTER ; HIGH ; - ; mux ; +; SUPPRESS_DA_RULE_INTERNAL ; C104 ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; C106 ; - ; - ; ++---------------------------+-------------+------+----------------------------+ + + ++---------------------------------------------------------------------------------------------------------+ +; Source assignments for altddio_out3:inst6|altddio_out:altddio_out_component|ddio_out_31f:auto_generated ; ++-----------------------------+-------+------+------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++-----------------------------+-------+------+------------------------------------------------------------+ +; SYNCHRONIZER_IDENTIFICATION ; OFF ; - ; - ; ++-----------------------------+-------+------+------------------------------------------------------------+ + + ++-----------------------------------------------------------------------------+ +; Source assignments for altddio_out3:inst8|altddio_out:altddio_out_component ; ++---------------------------+-------------+------+----------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------+-------------+------+----------------------------+ +; ADV_NETLIST_OPT_ALLOWED ; NEVER_ALLOW ; - ; - ; +; PRESERVE_REGISTER ; ON ; - ; output_cell_L ; +; DDIO_OUTPUT_REGISTER ; LOW ; - ; output_cell_L ; +; DDIO_OUTPUT_REGISTER ; HIGH ; - ; mux ; +; SUPPRESS_DA_RULE_INTERNAL ; C104 ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; C106 ; - ; - ; ++---------------------------+-------------+------+----------------------------+ + + ++---------------------------------------------------------------------------------------------------------+ +; Source assignments for altddio_out3:inst8|altddio_out:altddio_out_component|ddio_out_31f:auto_generated ; ++-----------------------------+-------+------+------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++-----------------------------+-------+------+------------------------------------------------------------+ +; SYNCHRONIZER_IDENTIFICATION ; OFF ; - ; - ; ++-----------------------------+-------+------+------------------------------------------------------------+ + + ++-----------------------------------------------------------------------------+ +; Source assignments for altddio_out3:inst9|altddio_out:altddio_out_component ; ++---------------------------+-------------+------+----------------------------+ +; Assignment ; Value ; From ; To ; ++---------------------------+-------------+------+----------------------------+ +; ADV_NETLIST_OPT_ALLOWED ; NEVER_ALLOW ; - ; - ; +; PRESERVE_REGISTER ; ON ; - ; output_cell_L ; +; DDIO_OUTPUT_REGISTER ; LOW ; - ; output_cell_L ; +; DDIO_OUTPUT_REGISTER ; HIGH ; - ; mux ; +; SUPPRESS_DA_RULE_INTERNAL ; C104 ; - ; - ; +; SUPPRESS_DA_RULE_INTERNAL ; C106 ; - ; - ; ++---------------------------+-------------+------+----------------------------+ + + ++---------------------------------------------------------------------------------------------------------+ +; Source assignments for altddio_out3:inst9|altddio_out:altddio_out_component|ddio_out_31f:auto_generated ; ++-----------------------------+-------+------+------------------------------------------------------------+ +; Assignment ; Value ; From ; To ; ++-----------------------------+-------+------+------------------------------------------------------------+ +; SYNCHRONIZER_IDENTIFICATION ; OFF ; - ; - ; ++-----------------------------+-------+------+------------------------------------------------------------+ + + ++-----------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: altpll1:inst|altpll:altpll_component ; ++-------------------------------+--------------------+------------------------------+ +; Parameter Name ; Value ; Type ; ++-------------------------------+--------------------+------------------------------+ +; OPERATION_MODE ; SOURCE_SYNCHRONOUS ; Untyped ; +; PLL_TYPE ; AUTO ; Untyped ; +; QUALIFY_CONF_DONE ; OFF ; Untyped ; +; COMPENSATE_CLOCK ; CLK0 ; Untyped ; +; SCAN_CHAIN ; LONG ; Untyped ; +; PRIMARY_CLOCK ; INCLK0 ; Untyped ; +; INCLK0_INPUT_FREQUENCY ; 30303 ; Signed Integer ; +; INCLK1_INPUT_FREQUENCY ; 0 ; Untyped ; +; GATE_LOCK_SIGNAL ; NO ; Untyped ; +; GATE_LOCK_COUNTER ; 0 ; Untyped ; +; LOCK_HIGH ; 1 ; Untyped ; +; LOCK_LOW ; 1 ; Untyped ; +; VALID_LOCK_MULTIPLIER ; 1 ; Untyped ; +; INVALID_LOCK_MULTIPLIER ; 5 ; Untyped ; +; SWITCH_OVER_ON_LOSSCLK ; OFF ; Untyped ; +; SWITCH_OVER_ON_GATED_LOCK ; OFF ; Untyped ; +; ENABLE_SWITCH_OVER_COUNTER ; OFF ; Untyped ; +; SKIP_VCO ; OFF ; Untyped ; +; SWITCH_OVER_COUNTER ; 0 ; Untyped ; +; SWITCH_OVER_TYPE ; AUTO ; Untyped ; +; FEEDBACK_SOURCE ; EXTCLK0 ; Untyped ; +; BANDWIDTH ; 0 ; Untyped ; +; BANDWIDTH_TYPE ; AUTO ; Untyped ; +; SPREAD_FREQUENCY ; 0 ; Untyped ; +; DOWN_SPREAD ; 0 ; Untyped ; +; SELF_RESET_ON_GATED_LOSS_LOCK ; OFF ; Untyped ; +; SELF_RESET_ON_LOSS_LOCK ; OFF ; Untyped ; +; CLK9_MULTIPLY_BY ; 0 ; Untyped ; +; CLK8_MULTIPLY_BY ; 0 ; Untyped ; +; CLK7_MULTIPLY_BY ; 0 ; Untyped ; +; CLK6_MULTIPLY_BY ; 0 ; Untyped ; +; CLK5_MULTIPLY_BY ; 1 ; Untyped ; +; CLK4_MULTIPLY_BY ; 1 ; Untyped ; +; CLK3_MULTIPLY_BY ; 1 ; Untyped ; +; CLK2_MULTIPLY_BY ; 67 ; Signed Integer ; +; CLK1_MULTIPLY_BY ; 67 ; Signed Integer ; +; CLK0_MULTIPLY_BY ; 1 ; Signed Integer ; +; CLK9_DIVIDE_BY ; 0 ; Untyped ; +; CLK8_DIVIDE_BY ; 0 ; Untyped ; +; CLK7_DIVIDE_BY ; 0 ; Untyped ; +; CLK6_DIVIDE_BY ; 0 ; Untyped ; +; CLK5_DIVIDE_BY ; 1 ; Untyped ; +; CLK4_DIVIDE_BY ; 1 ; Untyped ; +; CLK3_DIVIDE_BY ; 1 ; Untyped ; +; CLK2_DIVIDE_BY ; 90 ; Signed Integer ; +; CLK1_DIVIDE_BY ; 900 ; Signed Integer ; +; CLK0_DIVIDE_BY ; 66 ; Signed Integer ; +; CLK9_PHASE_SHIFT ; 0 ; Untyped ; +; CLK8_PHASE_SHIFT ; 0 ; Untyped ; +; CLK7_PHASE_SHIFT ; 0 ; Untyped ; +; CLK6_PHASE_SHIFT ; 0 ; Untyped ; +; CLK5_PHASE_SHIFT ; 0 ; Untyped ; +; CLK4_PHASE_SHIFT ; 0 ; Untyped ; +; CLK3_PHASE_SHIFT ; 0 ; Untyped ; +; CLK2_PHASE_SHIFT ; 0 ; Untyped ; +; CLK1_PHASE_SHIFT ; 0 ; Untyped ; +; CLK0_PHASE_SHIFT ; 0 ; Untyped ; +; CLK5_TIME_DELAY ; 0 ; Untyped ; +; CLK4_TIME_DELAY ; 0 ; Untyped ; +; CLK3_TIME_DELAY ; 0 ; Untyped ; +; CLK2_TIME_DELAY ; 0 ; Untyped ; +; CLK1_TIME_DELAY ; 0 ; Untyped ; +; CLK0_TIME_DELAY ; 0 ; Untyped ; +; CLK9_DUTY_CYCLE ; 50 ; Untyped ; +; CLK8_DUTY_CYCLE ; 50 ; Untyped ; +; CLK7_DUTY_CYCLE ; 50 ; Untyped ; +; CLK6_DUTY_CYCLE ; 50 ; Untyped ; +; CLK5_DUTY_CYCLE ; 50 ; Untyped ; +; CLK4_DUTY_CYCLE ; 50 ; Untyped ; +; CLK3_DUTY_CYCLE ; 50 ; Untyped ; +; CLK2_DUTY_CYCLE ; 50 ; Signed Integer ; +; CLK1_DUTY_CYCLE ; 50 ; Signed Integer ; +; CLK0_DUTY_CYCLE ; 50 ; Signed Integer ; +; CLK9_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK8_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK7_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK6_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK5_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK4_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK3_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK2_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK1_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK0_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK9_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK8_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK7_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK6_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK5_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK4_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK3_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK2_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK1_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK0_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; LOCK_WINDOW_UI ; 0.05 ; Untyped ; +; LOCK_WINDOW_UI_BITS ; UNUSED ; Untyped ; +; VCO_RANGE_DETECTOR_LOW_BITS ; UNUSED ; Untyped ; +; VCO_RANGE_DETECTOR_HIGH_BITS ; UNUSED ; Untyped ; +; DPA_MULTIPLY_BY ; 0 ; Untyped ; +; DPA_DIVIDE_BY ; 1 ; Untyped ; +; DPA_DIVIDER ; 0 ; Untyped ; +; EXTCLK3_MULTIPLY_BY ; 1 ; Untyped ; +; EXTCLK2_MULTIPLY_BY ; 1 ; Untyped ; +; EXTCLK1_MULTIPLY_BY ; 1 ; Untyped ; +; EXTCLK0_MULTIPLY_BY ; 1 ; Untyped ; +; EXTCLK3_DIVIDE_BY ; 1 ; Untyped ; +; EXTCLK2_DIVIDE_BY ; 1 ; Untyped ; +; EXTCLK1_DIVIDE_BY ; 1 ; Untyped ; +; EXTCLK0_DIVIDE_BY ; 1 ; Untyped ; +; EXTCLK3_PHASE_SHIFT ; 0 ; Untyped ; +; EXTCLK2_PHASE_SHIFT ; 0 ; Untyped ; +; EXTCLK1_PHASE_SHIFT ; 0 ; Untyped ; +; EXTCLK0_PHASE_SHIFT ; 0 ; Untyped ; +; EXTCLK3_TIME_DELAY ; 0 ; Untyped ; +; EXTCLK2_TIME_DELAY ; 0 ; Untyped ; +; EXTCLK1_TIME_DELAY ; 0 ; Untyped ; +; EXTCLK0_TIME_DELAY ; 0 ; Untyped ; +; EXTCLK3_DUTY_CYCLE ; 50 ; Untyped ; +; EXTCLK2_DUTY_CYCLE ; 50 ; Untyped ; +; EXTCLK1_DUTY_CYCLE ; 50 ; Untyped ; +; EXTCLK0_DUTY_CYCLE ; 50 ; Untyped ; +; VCO_MULTIPLY_BY ; 0 ; Untyped ; +; VCO_DIVIDE_BY ; 0 ; Untyped ; +; SCLKOUT0_PHASE_SHIFT ; 0 ; Untyped ; +; SCLKOUT1_PHASE_SHIFT ; 0 ; Untyped ; +; VCO_MIN ; 0 ; Untyped ; +; VCO_MAX ; 0 ; Untyped ; +; VCO_CENTER ; 0 ; Untyped ; +; PFD_MIN ; 0 ; Untyped ; +; PFD_MAX ; 0 ; Untyped ; +; M_INITIAL ; 0 ; Untyped ; +; M ; 0 ; Untyped ; +; N ; 1 ; Untyped ; +; M2 ; 1 ; Untyped ; +; N2 ; 1 ; Untyped ; +; SS ; 1 ; Untyped ; +; C0_HIGH ; 0 ; Untyped ; +; C1_HIGH ; 0 ; Untyped ; +; C2_HIGH ; 0 ; Untyped ; +; C3_HIGH ; 0 ; Untyped ; +; C4_HIGH ; 0 ; Untyped ; +; C5_HIGH ; 0 ; Untyped ; +; C6_HIGH ; 0 ; Untyped ; +; C7_HIGH ; 0 ; Untyped ; +; C8_HIGH ; 0 ; Untyped ; +; C9_HIGH ; 0 ; Untyped ; +; C0_LOW ; 0 ; Untyped ; +; C1_LOW ; 0 ; Untyped ; +; C2_LOW ; 0 ; Untyped ; +; C3_LOW ; 0 ; Untyped ; +; C4_LOW ; 0 ; Untyped ; +; C5_LOW ; 0 ; Untyped ; +; C6_LOW ; 0 ; Untyped ; +; C7_LOW ; 0 ; Untyped ; +; C8_LOW ; 0 ; Untyped ; +; C9_LOW ; 0 ; Untyped ; +; C0_INITIAL ; 0 ; Untyped ; +; C1_INITIAL ; 0 ; Untyped ; +; C2_INITIAL ; 0 ; Untyped ; +; C3_INITIAL ; 0 ; Untyped ; +; C4_INITIAL ; 0 ; Untyped ; +; C5_INITIAL ; 0 ; Untyped ; +; C6_INITIAL ; 0 ; Untyped ; +; C7_INITIAL ; 0 ; Untyped ; +; C8_INITIAL ; 0 ; Untyped ; +; C9_INITIAL ; 0 ; Untyped ; +; C0_MODE ; BYPASS ; Untyped ; +; C1_MODE ; BYPASS ; Untyped ; +; C2_MODE ; BYPASS ; Untyped ; +; C3_MODE ; BYPASS ; Untyped ; +; C4_MODE ; BYPASS ; Untyped ; +; C5_MODE ; BYPASS ; Untyped ; +; C6_MODE ; BYPASS ; Untyped ; +; C7_MODE ; BYPASS ; Untyped ; +; C8_MODE ; BYPASS ; Untyped ; +; C9_MODE ; BYPASS ; Untyped ; +; C0_PH ; 0 ; Untyped ; +; C1_PH ; 0 ; Untyped ; +; C2_PH ; 0 ; Untyped ; +; C3_PH ; 0 ; Untyped ; +; C4_PH ; 0 ; Untyped ; +; C5_PH ; 0 ; Untyped ; +; C6_PH ; 0 ; Untyped ; +; C7_PH ; 0 ; Untyped ; +; C8_PH ; 0 ; Untyped ; +; C9_PH ; 0 ; Untyped ; +; L0_HIGH ; 1 ; Untyped ; +; L1_HIGH ; 1 ; Untyped ; +; G0_HIGH ; 1 ; Untyped ; +; G1_HIGH ; 1 ; Untyped ; +; G2_HIGH ; 1 ; Untyped ; +; G3_HIGH ; 1 ; Untyped ; +; E0_HIGH ; 1 ; Untyped ; +; E1_HIGH ; 1 ; Untyped ; +; E2_HIGH ; 1 ; Untyped ; +; E3_HIGH ; 1 ; Untyped ; +; L0_LOW ; 1 ; Untyped ; +; L1_LOW ; 1 ; Untyped ; +; G0_LOW ; 1 ; Untyped ; +; G1_LOW ; 1 ; Untyped ; +; G2_LOW ; 1 ; Untyped ; +; G3_LOW ; 1 ; Untyped ; +; E0_LOW ; 1 ; Untyped ; +; E1_LOW ; 1 ; Untyped ; +; E2_LOW ; 1 ; Untyped ; +; E3_LOW ; 1 ; Untyped ; +; L0_INITIAL ; 1 ; Untyped ; +; L1_INITIAL ; 1 ; Untyped ; +; G0_INITIAL ; 1 ; Untyped ; +; G1_INITIAL ; 1 ; Untyped ; +; G2_INITIAL ; 1 ; Untyped ; +; G3_INITIAL ; 1 ; Untyped ; +; E0_INITIAL ; 1 ; Untyped ; +; E1_INITIAL ; 1 ; Untyped ; +; E2_INITIAL ; 1 ; Untyped ; +; E3_INITIAL ; 1 ; Untyped ; +; L0_MODE ; BYPASS ; Untyped ; +; L1_MODE ; BYPASS ; Untyped ; +; G0_MODE ; BYPASS ; Untyped ; +; G1_MODE ; BYPASS ; Untyped ; +; G2_MODE ; BYPASS ; Untyped ; +; G3_MODE ; BYPASS ; Untyped ; +; E0_MODE ; BYPASS ; Untyped ; +; E1_MODE ; BYPASS ; Untyped ; +; E2_MODE ; BYPASS ; Untyped ; +; E3_MODE ; BYPASS ; Untyped ; +; L0_PH ; 0 ; Untyped ; +; L1_PH ; 0 ; Untyped ; +; G0_PH ; 0 ; Untyped ; +; G1_PH ; 0 ; Untyped ; +; G2_PH ; 0 ; Untyped ; +; G3_PH ; 0 ; Untyped ; +; E0_PH ; 0 ; Untyped ; +; E1_PH ; 0 ; Untyped ; +; E2_PH ; 0 ; Untyped ; +; E3_PH ; 0 ; Untyped ; +; M_PH ; 0 ; Untyped ; +; C1_USE_CASC_IN ; OFF ; Untyped ; +; C2_USE_CASC_IN ; OFF ; Untyped ; +; C3_USE_CASC_IN ; OFF ; Untyped ; +; C4_USE_CASC_IN ; OFF ; Untyped ; +; C5_USE_CASC_IN ; OFF ; Untyped ; +; C6_USE_CASC_IN ; OFF ; Untyped ; +; C7_USE_CASC_IN ; OFF ; Untyped ; +; C8_USE_CASC_IN ; OFF ; Untyped ; +; C9_USE_CASC_IN ; OFF ; Untyped ; +; CLK0_COUNTER ; G0 ; Untyped ; +; CLK1_COUNTER ; G0 ; Untyped ; +; CLK2_COUNTER ; G0 ; Untyped ; +; CLK3_COUNTER ; G0 ; Untyped ; +; CLK4_COUNTER ; G0 ; Untyped ; +; CLK5_COUNTER ; G0 ; Untyped ; +; CLK6_COUNTER ; E0 ; Untyped ; +; CLK7_COUNTER ; E1 ; Untyped ; +; CLK8_COUNTER ; E2 ; Untyped ; +; CLK9_COUNTER ; E3 ; Untyped ; +; L0_TIME_DELAY ; 0 ; Untyped ; +; L1_TIME_DELAY ; 0 ; Untyped ; +; G0_TIME_DELAY ; 0 ; Untyped ; +; G1_TIME_DELAY ; 0 ; Untyped ; +; G2_TIME_DELAY ; 0 ; Untyped ; +; G3_TIME_DELAY ; 0 ; Untyped ; +; E0_TIME_DELAY ; 0 ; Untyped ; +; E1_TIME_DELAY ; 0 ; Untyped ; +; E2_TIME_DELAY ; 0 ; Untyped ; +; E3_TIME_DELAY ; 0 ; Untyped ; +; M_TIME_DELAY ; 0 ; Untyped ; +; N_TIME_DELAY ; 0 ; Untyped ; +; EXTCLK3_COUNTER ; E3 ; Untyped ; +; EXTCLK2_COUNTER ; E2 ; Untyped ; +; EXTCLK1_COUNTER ; E1 ; Untyped ; +; EXTCLK0_COUNTER ; E0 ; Untyped ; +; ENABLE0_COUNTER ; L0 ; Untyped ; +; ENABLE1_COUNTER ; L0 ; Untyped ; +; CHARGE_PUMP_CURRENT ; 2 ; Untyped ; +; LOOP_FILTER_R ; 1.000000 ; Untyped ; +; LOOP_FILTER_C ; 5 ; Untyped ; +; CHARGE_PUMP_CURRENT_BITS ; 9999 ; Untyped ; +; LOOP_FILTER_R_BITS ; 9999 ; Untyped ; +; LOOP_FILTER_C_BITS ; 9999 ; Untyped ; +; VCO_POST_SCALE ; 0 ; Untyped ; +; CLK2_OUTPUT_FREQUENCY ; 0 ; Untyped ; +; CLK1_OUTPUT_FREQUENCY ; 0 ; Untyped ; +; CLK0_OUTPUT_FREQUENCY ; 0 ; Untyped ; +; INTENDED_DEVICE_FAMILY ; Cyclone III ; Untyped ; +; PORT_CLKENA0 ; PORT_UNUSED ; Untyped ; +; PORT_CLKENA1 ; PORT_UNUSED ; Untyped ; +; PORT_CLKENA2 ; PORT_UNUSED ; Untyped ; +; PORT_CLKENA3 ; PORT_UNUSED ; Untyped ; +; PORT_CLKENA4 ; PORT_UNUSED ; Untyped ; +; PORT_CLKENA5 ; PORT_UNUSED ; Untyped ; +; PORT_EXTCLKENA0 ; PORT_CONNECTIVITY ; Untyped ; +; PORT_EXTCLKENA1 ; PORT_CONNECTIVITY ; Untyped ; +; PORT_EXTCLKENA2 ; PORT_CONNECTIVITY ; Untyped ; +; PORT_EXTCLKENA3 ; PORT_CONNECTIVITY ; Untyped ; +; PORT_EXTCLK0 ; PORT_UNUSED ; Untyped ; +; PORT_EXTCLK1 ; PORT_UNUSED ; Untyped ; +; PORT_EXTCLK2 ; PORT_UNUSED ; Untyped ; +; PORT_EXTCLK3 ; PORT_UNUSED ; Untyped ; +; PORT_CLKBAD0 ; PORT_UNUSED ; Untyped ; +; PORT_CLKBAD1 ; PORT_UNUSED ; Untyped ; +; PORT_CLK0 ; PORT_USED ; Untyped ; +; PORT_CLK1 ; PORT_USED ; Untyped ; +; PORT_CLK2 ; PORT_USED ; Untyped ; +; PORT_CLK3 ; PORT_UNUSED ; Untyped ; +; PORT_CLK4 ; PORT_UNUSED ; Untyped ; +; PORT_CLK5 ; PORT_UNUSED ; Untyped ; +; PORT_CLK6 ; PORT_UNUSED ; Untyped ; +; PORT_CLK7 ; PORT_UNUSED ; Untyped ; +; PORT_CLK8 ; PORT_UNUSED ; Untyped ; +; PORT_CLK9 ; PORT_UNUSED ; Untyped ; +; PORT_SCANDATA ; PORT_UNUSED ; Untyped ; +; PORT_SCANDATAOUT ; PORT_UNUSED ; Untyped ; +; PORT_SCANDONE ; PORT_UNUSED ; Untyped ; +; PORT_SCLKOUT1 ; PORT_CONNECTIVITY ; Untyped ; +; PORT_SCLKOUT0 ; PORT_CONNECTIVITY ; Untyped ; +; PORT_ACTIVECLOCK ; PORT_UNUSED ; Untyped ; +; PORT_CLKLOSS ; PORT_UNUSED ; Untyped ; +; PORT_INCLK1 ; PORT_UNUSED ; Untyped ; +; PORT_INCLK0 ; PORT_USED ; Untyped ; +; PORT_FBIN ; PORT_UNUSED ; Untyped ; +; PORT_PLLENA ; PORT_UNUSED ; Untyped ; +; PORT_CLKSWITCH ; PORT_UNUSED ; Untyped ; +; PORT_ARESET ; PORT_UNUSED ; Untyped ; +; PORT_PFDENA ; PORT_UNUSED ; Untyped ; +; PORT_SCANCLK ; PORT_UNUSED ; Untyped ; +; PORT_SCANACLR ; PORT_UNUSED ; Untyped ; +; PORT_SCANREAD ; PORT_UNUSED ; Untyped ; +; PORT_SCANWRITE ; PORT_UNUSED ; Untyped ; +; PORT_ENABLE0 ; PORT_CONNECTIVITY ; Untyped ; +; PORT_ENABLE1 ; PORT_CONNECTIVITY ; Untyped ; +; PORT_LOCKED ; PORT_USED ; Untyped ; +; PORT_CONFIGUPDATE ; PORT_UNUSED ; Untyped ; +; PORT_FBOUT ; PORT_CONNECTIVITY ; Untyped ; +; PORT_PHASEDONE ; PORT_UNUSED ; Untyped ; +; PORT_PHASESTEP ; PORT_UNUSED ; Untyped ; +; PORT_PHASEUPDOWN ; PORT_UNUSED ; Untyped ; +; PORT_SCANCLKENA ; PORT_UNUSED ; Untyped ; +; PORT_PHASECOUNTERSELECT ; PORT_UNUSED ; Untyped ; +; PORT_VCOOVERRANGE ; PORT_CONNECTIVITY ; Untyped ; +; PORT_VCOUNDERRANGE ; PORT_CONNECTIVITY ; Untyped ; +; M_TEST_SOURCE ; 5 ; Untyped ; +; C0_TEST_SOURCE ; 5 ; Untyped ; +; C1_TEST_SOURCE ; 5 ; Untyped ; +; C2_TEST_SOURCE ; 5 ; Untyped ; +; C3_TEST_SOURCE ; 5 ; Untyped ; +; C4_TEST_SOURCE ; 5 ; Untyped ; +; C5_TEST_SOURCE ; 5 ; Untyped ; +; C6_TEST_SOURCE ; 5 ; Untyped ; +; C7_TEST_SOURCE ; 5 ; Untyped ; +; C8_TEST_SOURCE ; 5 ; Untyped ; +; C9_TEST_SOURCE ; 5 ; Untyped ; +; CBXI_PARAMETER ; altpll_pul2 ; Untyped ; +; VCO_FREQUENCY_CONTROL ; AUTO ; Untyped ; +; VCO_PHASE_SHIFT_STEP ; 0 ; Untyped ; +; WIDTH_CLOCK ; 5 ; Signed Integer ; +; WIDTH_PHASECOUNTERSELECT ; 4 ; Untyped ; +; USING_FBMIMICBIDIR_PORT ; OFF ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; SCAN_CHAIN_MIF_FILE ; UNUSED ; Untyped ; +; SIM_GATE_LOCK_DEVICE_BEHAVIOR ; OFF ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++-------------------------------+--------------------+------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component ; ++--------------------------+-------------+---------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++--------------------------+-------------+---------------------------------------------------------------------------------------------------------------------------------+ +; ACF_DISABLE_MLAB_RAM_USE ; FALSE ; Untyped ; +; ADD_RAM_OUTPUT_REGISTER ; OFF ; Untyped ; +; ADD_USEDW_MSB_BIT ; OFF ; Untyped ; +; CLOCKS_ARE_SYNCHRONIZED ; FALSE ; Untyped ; +; DELAY_RDUSEDW ; 1 ; Untyped ; +; DELAY_WRUSEDW ; 1 ; Untyped ; +; LPM_NUMWORDS ; 1024 ; Signed Integer ; +; LPM_SHOWAHEAD ; OFF ; Untyped ; +; LPM_WIDTH ; 8 ; Signed Integer ; +; LPM_WIDTH_R ; 32 ; Signed Integer ; +; LPM_WIDTHU ; 10 ; Signed Integer ; +; LPM_WIDTHU_R ; 8 ; Signed Integer ; +; MAXIMIZE_SPEED ; 5 ; Untyped ; +; OVERFLOW_CHECKING ; ON ; Untyped ; +; RAM_BLOCK_TYPE ; AUTO ; Untyped ; +; RDSYNC_DELAYPIPE ; 5 ; Signed Integer ; +; UNDERFLOW_CHECKING ; ON ; Untyped ; +; USE_EAB ; ON ; Untyped ; +; WRITE_ACLR_SYNCH ; OFF ; Untyped ; +; WRSYNC_DELAYPIPE ; 5 ; Signed Integer ; +; CBXI_PARAMETER ; dcfifo_0hh1 ; Untyped ; ++--------------------------+-------------+---------------------------------------------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component ; ++--------------------------+-------------+---------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++--------------------------+-------------+---------------------------------------------------------------------------------------------------------------------------------+ +; ACF_DISABLE_MLAB_RAM_USE ; FALSE ; Untyped ; +; ADD_RAM_OUTPUT_REGISTER ; OFF ; Untyped ; +; ADD_USEDW_MSB_BIT ; OFF ; Untyped ; +; CLOCKS_ARE_SYNCHRONIZED ; FALSE ; Untyped ; +; DELAY_RDUSEDW ; 1 ; Untyped ; +; DELAY_WRUSEDW ; 1 ; Untyped ; +; LPM_NUMWORDS ; 256 ; Signed Integer ; +; LPM_SHOWAHEAD ; OFF ; Untyped ; +; LPM_WIDTH ; 32 ; Signed Integer ; +; LPM_WIDTH_R ; 8 ; Signed Integer ; +; LPM_WIDTHU ; 8 ; Signed Integer ; +; LPM_WIDTHU_R ; 10 ; Signed Integer ; +; MAXIMIZE_SPEED ; 5 ; Untyped ; +; OVERFLOW_CHECKING ; ON ; Untyped ; +; RAM_BLOCK_TYPE ; AUTO ; Untyped ; +; RDSYNC_DELAYPIPE ; 5 ; Signed Integer ; +; UNDERFLOW_CHECKING ; ON ; Untyped ; +; USE_EAB ; ON ; Untyped ; +; WRITE_ACLR_SYNCH ; OFF ; Untyped ; +; WRSYNC_DELAYPIPE ; 5 ; Signed Integer ; +; CBXI_PARAMETER ; dcfifo_3fh1 ; Untyped ; ++--------------------------+-------------+---------------------------------------------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL ; ++----------------+-------+---------------------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++----------------+-------+---------------------------------------------------------------------------------------------------------------------------------------------+ +; TOP ; 152 ; Signed Integer ; +; BOTTOM ; 104 ; Signed Integer ; +; PHASE_CORR ; 75 ; Signed Integer ; ++----------------+-------+---------------------------------------------------------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++-------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: altpll3:inst13|altpll:altpll_component ; ++-------------------------------+--------------------+--------------------------------+ +; Parameter Name ; Value ; Type ; ++-------------------------------+--------------------+--------------------------------+ +; OPERATION_MODE ; SOURCE_SYNCHRONOUS ; Untyped ; +; PLL_TYPE ; AUTO ; Untyped ; +; QUALIFY_CONF_DONE ; OFF ; Untyped ; +; COMPENSATE_CLOCK ; CLK1 ; Untyped ; +; SCAN_CHAIN ; LONG ; Untyped ; +; PRIMARY_CLOCK ; INCLK0 ; Untyped ; +; INCLK0_INPUT_FREQUENCY ; 30303 ; Signed Integer ; +; INCLK1_INPUT_FREQUENCY ; 0 ; Untyped ; +; GATE_LOCK_SIGNAL ; NO ; Untyped ; +; GATE_LOCK_COUNTER ; 0 ; Untyped ; +; LOCK_HIGH ; 1 ; Untyped ; +; LOCK_LOW ; 1 ; Untyped ; +; VALID_LOCK_MULTIPLIER ; 1 ; Untyped ; +; INVALID_LOCK_MULTIPLIER ; 5 ; Untyped ; +; SWITCH_OVER_ON_LOSSCLK ; OFF ; Untyped ; +; SWITCH_OVER_ON_GATED_LOCK ; OFF ; Untyped ; +; ENABLE_SWITCH_OVER_COUNTER ; OFF ; Untyped ; +; SKIP_VCO ; OFF ; Untyped ; +; SWITCH_OVER_COUNTER ; 0 ; Untyped ; +; SWITCH_OVER_TYPE ; AUTO ; Untyped ; +; FEEDBACK_SOURCE ; EXTCLK0 ; Untyped ; +; BANDWIDTH ; 0 ; Untyped ; +; BANDWIDTH_TYPE ; AUTO ; Untyped ; +; SPREAD_FREQUENCY ; 0 ; Untyped ; +; DOWN_SPREAD ; 0 ; Untyped ; +; SELF_RESET_ON_GATED_LOSS_LOCK ; OFF ; Untyped ; +; SELF_RESET_ON_LOSS_LOCK ; OFF ; Untyped ; +; CLK9_MULTIPLY_BY ; 0 ; Untyped ; +; CLK8_MULTIPLY_BY ; 0 ; Untyped ; +; CLK7_MULTIPLY_BY ; 0 ; Untyped ; +; CLK6_MULTIPLY_BY ; 0 ; Untyped ; +; CLK5_MULTIPLY_BY ; 1 ; Untyped ; +; CLK4_MULTIPLY_BY ; 1 ; Untyped ; +; CLK3_MULTIPLY_BY ; 16 ; Signed Integer ; +; CLK2_MULTIPLY_BY ; 25 ; Signed Integer ; +; CLK1_MULTIPLY_BY ; 16 ; Signed Integer ; +; CLK0_MULTIPLY_BY ; 2 ; Signed Integer ; +; CLK9_DIVIDE_BY ; 0 ; Untyped ; +; CLK8_DIVIDE_BY ; 0 ; Untyped ; +; CLK7_DIVIDE_BY ; 0 ; Untyped ; +; CLK6_DIVIDE_BY ; 0 ; Untyped ; +; CLK5_DIVIDE_BY ; 1 ; Untyped ; +; CLK4_DIVIDE_BY ; 1 ; Untyped ; +; CLK3_DIVIDE_BY ; 11 ; Signed Integer ; +; CLK2_DIVIDE_BY ; 33 ; Signed Integer ; +; CLK1_DIVIDE_BY ; 33 ; Signed Integer ; +; CLK0_DIVIDE_BY ; 33 ; Signed Integer ; +; CLK9_PHASE_SHIFT ; 0 ; Untyped ; +; CLK8_PHASE_SHIFT ; 0 ; Untyped ; +; CLK7_PHASE_SHIFT ; 0 ; Untyped ; +; CLK6_PHASE_SHIFT ; 0 ; Untyped ; +; CLK5_PHASE_SHIFT ; 0 ; Untyped ; +; CLK4_PHASE_SHIFT ; 0 ; Untyped ; +; CLK3_PHASE_SHIFT ; 0 ; Untyped ; +; CLK2_PHASE_SHIFT ; 0 ; Untyped ; +; CLK1_PHASE_SHIFT ; 0 ; Untyped ; +; CLK0_PHASE_SHIFT ; 0 ; Untyped ; +; CLK5_TIME_DELAY ; 0 ; Untyped ; +; CLK4_TIME_DELAY ; 0 ; Untyped ; +; CLK3_TIME_DELAY ; 0 ; Untyped ; +; CLK2_TIME_DELAY ; 0 ; Untyped ; +; CLK1_TIME_DELAY ; 0 ; Untyped ; +; CLK0_TIME_DELAY ; 0 ; Untyped ; +; CLK9_DUTY_CYCLE ; 50 ; Untyped ; +; CLK8_DUTY_CYCLE ; 50 ; Untyped ; +; CLK7_DUTY_CYCLE ; 50 ; Untyped ; +; CLK6_DUTY_CYCLE ; 50 ; Untyped ; +; CLK5_DUTY_CYCLE ; 50 ; Untyped ; +; CLK4_DUTY_CYCLE ; 50 ; Untyped ; +; CLK3_DUTY_CYCLE ; 50 ; Signed Integer ; +; CLK2_DUTY_CYCLE ; 50 ; Signed Integer ; +; CLK1_DUTY_CYCLE ; 50 ; Signed Integer ; +; CLK0_DUTY_CYCLE ; 50 ; Signed Integer ; +; CLK9_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK8_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK7_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK6_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK5_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK4_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK3_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK2_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK1_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK0_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK9_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK8_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK7_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK6_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK5_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK4_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK3_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK2_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK1_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK0_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; LOCK_WINDOW_UI ; 0.05 ; Untyped ; +; LOCK_WINDOW_UI_BITS ; UNUSED ; Untyped ; +; VCO_RANGE_DETECTOR_LOW_BITS ; UNUSED ; Untyped ; +; VCO_RANGE_DETECTOR_HIGH_BITS ; UNUSED ; Untyped ; +; DPA_MULTIPLY_BY ; 0 ; Untyped ; +; DPA_DIVIDE_BY ; 1 ; Untyped ; +; DPA_DIVIDER ; 0 ; Untyped ; +; EXTCLK3_MULTIPLY_BY ; 1 ; Untyped ; +; EXTCLK2_MULTIPLY_BY ; 1 ; Untyped ; +; EXTCLK1_MULTIPLY_BY ; 1 ; Untyped ; +; EXTCLK0_MULTIPLY_BY ; 1 ; Untyped ; +; EXTCLK3_DIVIDE_BY ; 1 ; Untyped ; +; EXTCLK2_DIVIDE_BY ; 1 ; Untyped ; +; EXTCLK1_DIVIDE_BY ; 1 ; Untyped ; +; EXTCLK0_DIVIDE_BY ; 1 ; Untyped ; +; EXTCLK3_PHASE_SHIFT ; 0 ; Untyped ; +; EXTCLK2_PHASE_SHIFT ; 0 ; Untyped ; +; EXTCLK1_PHASE_SHIFT ; 0 ; Untyped ; +; EXTCLK0_PHASE_SHIFT ; 0 ; Untyped ; +; EXTCLK3_TIME_DELAY ; 0 ; Untyped ; +; EXTCLK2_TIME_DELAY ; 0 ; Untyped ; +; EXTCLK1_TIME_DELAY ; 0 ; Untyped ; +; EXTCLK0_TIME_DELAY ; 0 ; Untyped ; +; EXTCLK3_DUTY_CYCLE ; 50 ; Untyped ; +; EXTCLK2_DUTY_CYCLE ; 50 ; Untyped ; +; EXTCLK1_DUTY_CYCLE ; 50 ; Untyped ; +; EXTCLK0_DUTY_CYCLE ; 50 ; Untyped ; +; VCO_MULTIPLY_BY ; 0 ; Untyped ; +; VCO_DIVIDE_BY ; 0 ; Untyped ; +; SCLKOUT0_PHASE_SHIFT ; 0 ; Untyped ; +; SCLKOUT1_PHASE_SHIFT ; 0 ; Untyped ; +; VCO_MIN ; 0 ; Untyped ; +; VCO_MAX ; 0 ; Untyped ; +; VCO_CENTER ; 0 ; Untyped ; +; PFD_MIN ; 0 ; Untyped ; +; PFD_MAX ; 0 ; Untyped ; +; M_INITIAL ; 0 ; Untyped ; +; M ; 0 ; Untyped ; +; N ; 1 ; Untyped ; +; M2 ; 1 ; Untyped ; +; N2 ; 1 ; Untyped ; +; SS ; 1 ; Untyped ; +; C0_HIGH ; 0 ; Untyped ; +; C1_HIGH ; 0 ; Untyped ; +; C2_HIGH ; 0 ; Untyped ; +; C3_HIGH ; 0 ; Untyped ; +; C4_HIGH ; 0 ; Untyped ; +; C5_HIGH ; 0 ; Untyped ; +; C6_HIGH ; 0 ; Untyped ; +; C7_HIGH ; 0 ; Untyped ; +; C8_HIGH ; 0 ; Untyped ; +; C9_HIGH ; 0 ; Untyped ; +; C0_LOW ; 0 ; Untyped ; +; C1_LOW ; 0 ; Untyped ; +; C2_LOW ; 0 ; Untyped ; +; C3_LOW ; 0 ; Untyped ; +; C4_LOW ; 0 ; Untyped ; +; C5_LOW ; 0 ; Untyped ; +; C6_LOW ; 0 ; Untyped ; +; C7_LOW ; 0 ; Untyped ; +; C8_LOW ; 0 ; Untyped ; +; C9_LOW ; 0 ; Untyped ; +; C0_INITIAL ; 0 ; Untyped ; +; C1_INITIAL ; 0 ; Untyped ; +; C2_INITIAL ; 0 ; Untyped ; +; C3_INITIAL ; 0 ; Untyped ; +; C4_INITIAL ; 0 ; Untyped ; +; C5_INITIAL ; 0 ; Untyped ; +; C6_INITIAL ; 0 ; Untyped ; +; C7_INITIAL ; 0 ; Untyped ; +; C8_INITIAL ; 0 ; Untyped ; +; C9_INITIAL ; 0 ; Untyped ; +; C0_MODE ; BYPASS ; Untyped ; +; C1_MODE ; BYPASS ; Untyped ; +; C2_MODE ; BYPASS ; Untyped ; +; C3_MODE ; BYPASS ; Untyped ; +; C4_MODE ; BYPASS ; Untyped ; +; C5_MODE ; BYPASS ; Untyped ; +; C6_MODE ; BYPASS ; Untyped ; +; C7_MODE ; BYPASS ; Untyped ; +; C8_MODE ; BYPASS ; Untyped ; +; C9_MODE ; BYPASS ; Untyped ; +; C0_PH ; 0 ; Untyped ; +; C1_PH ; 0 ; Untyped ; +; C2_PH ; 0 ; Untyped ; +; C3_PH ; 0 ; Untyped ; +; C4_PH ; 0 ; Untyped ; +; C5_PH ; 0 ; Untyped ; +; C6_PH ; 0 ; Untyped ; +; C7_PH ; 0 ; Untyped ; +; C8_PH ; 0 ; Untyped ; +; C9_PH ; 0 ; Untyped ; +; L0_HIGH ; 1 ; Untyped ; +; L1_HIGH ; 1 ; Untyped ; +; G0_HIGH ; 1 ; Untyped ; +; G1_HIGH ; 1 ; Untyped ; +; G2_HIGH ; 1 ; Untyped ; +; G3_HIGH ; 1 ; Untyped ; +; E0_HIGH ; 1 ; Untyped ; +; E1_HIGH ; 1 ; Untyped ; +; E2_HIGH ; 1 ; Untyped ; +; E3_HIGH ; 1 ; Untyped ; +; L0_LOW ; 1 ; Untyped ; +; L1_LOW ; 1 ; Untyped ; +; G0_LOW ; 1 ; Untyped ; +; G1_LOW ; 1 ; Untyped ; +; G2_LOW ; 1 ; Untyped ; +; G3_LOW ; 1 ; Untyped ; +; E0_LOW ; 1 ; Untyped ; +; E1_LOW ; 1 ; Untyped ; +; E2_LOW ; 1 ; Untyped ; +; E3_LOW ; 1 ; Untyped ; +; L0_INITIAL ; 1 ; Untyped ; +; L1_INITIAL ; 1 ; Untyped ; +; G0_INITIAL ; 1 ; Untyped ; +; G1_INITIAL ; 1 ; Untyped ; +; G2_INITIAL ; 1 ; Untyped ; +; G3_INITIAL ; 1 ; Untyped ; +; E0_INITIAL ; 1 ; Untyped ; +; E1_INITIAL ; 1 ; Untyped ; +; E2_INITIAL ; 1 ; Untyped ; +; E3_INITIAL ; 1 ; Untyped ; +; L0_MODE ; BYPASS ; Untyped ; +; L1_MODE ; BYPASS ; Untyped ; +; G0_MODE ; BYPASS ; Untyped ; +; G1_MODE ; BYPASS ; Untyped ; +; G2_MODE ; BYPASS ; Untyped ; +; G3_MODE ; BYPASS ; Untyped ; +; E0_MODE ; BYPASS ; Untyped ; +; E1_MODE ; BYPASS ; Untyped ; +; E2_MODE ; BYPASS ; Untyped ; +; E3_MODE ; BYPASS ; Untyped ; +; L0_PH ; 0 ; Untyped ; +; L1_PH ; 0 ; Untyped ; +; G0_PH ; 0 ; Untyped ; +; G1_PH ; 0 ; Untyped ; +; G2_PH ; 0 ; Untyped ; +; G3_PH ; 0 ; Untyped ; +; E0_PH ; 0 ; Untyped ; +; E1_PH ; 0 ; Untyped ; +; E2_PH ; 0 ; Untyped ; +; E3_PH ; 0 ; Untyped ; +; M_PH ; 0 ; Untyped ; +; C1_USE_CASC_IN ; OFF ; Untyped ; +; C2_USE_CASC_IN ; OFF ; Untyped ; +; C3_USE_CASC_IN ; OFF ; Untyped ; +; C4_USE_CASC_IN ; OFF ; Untyped ; +; C5_USE_CASC_IN ; OFF ; Untyped ; +; C6_USE_CASC_IN ; OFF ; Untyped ; +; C7_USE_CASC_IN ; OFF ; Untyped ; +; C8_USE_CASC_IN ; OFF ; Untyped ; +; C9_USE_CASC_IN ; OFF ; Untyped ; +; CLK0_COUNTER ; G0 ; Untyped ; +; CLK1_COUNTER ; G0 ; Untyped ; +; CLK2_COUNTER ; G0 ; Untyped ; +; CLK3_COUNTER ; G0 ; Untyped ; +; CLK4_COUNTER ; G0 ; Untyped ; +; CLK5_COUNTER ; G0 ; Untyped ; +; CLK6_COUNTER ; E0 ; Untyped ; +; CLK7_COUNTER ; E1 ; Untyped ; +; CLK8_COUNTER ; E2 ; Untyped ; +; CLK9_COUNTER ; E3 ; Untyped ; +; L0_TIME_DELAY ; 0 ; Untyped ; +; L1_TIME_DELAY ; 0 ; Untyped ; +; G0_TIME_DELAY ; 0 ; Untyped ; +; G1_TIME_DELAY ; 0 ; Untyped ; +; G2_TIME_DELAY ; 0 ; Untyped ; +; G3_TIME_DELAY ; 0 ; Untyped ; +; E0_TIME_DELAY ; 0 ; Untyped ; +; E1_TIME_DELAY ; 0 ; Untyped ; +; E2_TIME_DELAY ; 0 ; Untyped ; +; E3_TIME_DELAY ; 0 ; Untyped ; +; M_TIME_DELAY ; 0 ; Untyped ; +; N_TIME_DELAY ; 0 ; Untyped ; +; EXTCLK3_COUNTER ; E3 ; Untyped ; +; EXTCLK2_COUNTER ; E2 ; Untyped ; +; EXTCLK1_COUNTER ; E1 ; Untyped ; +; EXTCLK0_COUNTER ; E0 ; Untyped ; +; ENABLE0_COUNTER ; L0 ; Untyped ; +; ENABLE1_COUNTER ; L0 ; Untyped ; +; CHARGE_PUMP_CURRENT ; 2 ; Untyped ; +; LOOP_FILTER_R ; 1.000000 ; Untyped ; +; LOOP_FILTER_C ; 5 ; Untyped ; +; CHARGE_PUMP_CURRENT_BITS ; 9999 ; Untyped ; +; LOOP_FILTER_R_BITS ; 9999 ; Untyped ; +; LOOP_FILTER_C_BITS ; 9999 ; Untyped ; +; VCO_POST_SCALE ; 0 ; Untyped ; +; CLK2_OUTPUT_FREQUENCY ; 0 ; Untyped ; +; CLK1_OUTPUT_FREQUENCY ; 0 ; Untyped ; +; CLK0_OUTPUT_FREQUENCY ; 0 ; Untyped ; +; INTENDED_DEVICE_FAMILY ; Cyclone III ; Untyped ; +; PORT_CLKENA0 ; PORT_UNUSED ; Untyped ; +; PORT_CLKENA1 ; PORT_UNUSED ; Untyped ; +; PORT_CLKENA2 ; PORT_UNUSED ; Untyped ; +; PORT_CLKENA3 ; PORT_UNUSED ; Untyped ; +; PORT_CLKENA4 ; PORT_UNUSED ; Untyped ; +; PORT_CLKENA5 ; PORT_UNUSED ; Untyped ; +; PORT_EXTCLKENA0 ; PORT_CONNECTIVITY ; Untyped ; +; PORT_EXTCLKENA1 ; PORT_CONNECTIVITY ; Untyped ; +; PORT_EXTCLKENA2 ; PORT_CONNECTIVITY ; Untyped ; +; PORT_EXTCLKENA3 ; PORT_CONNECTIVITY ; Untyped ; +; PORT_EXTCLK0 ; PORT_UNUSED ; Untyped ; +; PORT_EXTCLK1 ; PORT_UNUSED ; Untyped ; +; PORT_EXTCLK2 ; PORT_UNUSED ; Untyped ; +; PORT_EXTCLK3 ; PORT_UNUSED ; Untyped ; +; PORT_CLKBAD0 ; PORT_UNUSED ; Untyped ; +; PORT_CLKBAD1 ; PORT_UNUSED ; Untyped ; +; PORT_CLK0 ; PORT_USED ; Untyped ; +; PORT_CLK1 ; PORT_USED ; Untyped ; +; PORT_CLK2 ; PORT_USED ; Untyped ; +; PORT_CLK3 ; PORT_USED ; Untyped ; +; PORT_CLK4 ; PORT_UNUSED ; Untyped ; +; PORT_CLK5 ; PORT_UNUSED ; Untyped ; +; PORT_CLK6 ; PORT_UNUSED ; Untyped ; +; PORT_CLK7 ; PORT_UNUSED ; Untyped ; +; PORT_CLK8 ; PORT_UNUSED ; Untyped ; +; PORT_CLK9 ; PORT_UNUSED ; Untyped ; +; PORT_SCANDATA ; PORT_UNUSED ; Untyped ; +; PORT_SCANDATAOUT ; PORT_UNUSED ; Untyped ; +; PORT_SCANDONE ; PORT_UNUSED ; Untyped ; +; PORT_SCLKOUT1 ; PORT_CONNECTIVITY ; Untyped ; +; PORT_SCLKOUT0 ; PORT_CONNECTIVITY ; Untyped ; +; PORT_ACTIVECLOCK ; PORT_UNUSED ; Untyped ; +; PORT_CLKLOSS ; PORT_UNUSED ; Untyped ; +; PORT_INCLK1 ; PORT_UNUSED ; Untyped ; +; PORT_INCLK0 ; PORT_USED ; Untyped ; +; PORT_FBIN ; PORT_UNUSED ; Untyped ; +; PORT_PLLENA ; PORT_UNUSED ; Untyped ; +; PORT_CLKSWITCH ; PORT_UNUSED ; Untyped ; +; PORT_ARESET ; PORT_UNUSED ; Untyped ; +; PORT_PFDENA ; PORT_UNUSED ; Untyped ; +; PORT_SCANCLK ; PORT_UNUSED ; Untyped ; +; PORT_SCANACLR ; PORT_UNUSED ; Untyped ; +; PORT_SCANREAD ; PORT_UNUSED ; Untyped ; +; PORT_SCANWRITE ; PORT_UNUSED ; Untyped ; +; PORT_ENABLE0 ; PORT_CONNECTIVITY ; Untyped ; +; PORT_ENABLE1 ; PORT_CONNECTIVITY ; Untyped ; +; PORT_LOCKED ; PORT_UNUSED ; Untyped ; +; PORT_CONFIGUPDATE ; PORT_UNUSED ; Untyped ; +; PORT_FBOUT ; PORT_CONNECTIVITY ; Untyped ; +; PORT_PHASEDONE ; PORT_UNUSED ; Untyped ; +; PORT_PHASESTEP ; PORT_UNUSED ; Untyped ; +; PORT_PHASEUPDOWN ; PORT_UNUSED ; Untyped ; +; PORT_SCANCLKENA ; PORT_UNUSED ; Untyped ; +; PORT_PHASECOUNTERSELECT ; PORT_UNUSED ; Untyped ; +; PORT_VCOOVERRANGE ; PORT_CONNECTIVITY ; Untyped ; +; PORT_VCOUNDERRANGE ; PORT_CONNECTIVITY ; Untyped ; +; M_TEST_SOURCE ; 5 ; Untyped ; +; C0_TEST_SOURCE ; 5 ; Untyped ; +; C1_TEST_SOURCE ; 5 ; Untyped ; +; C2_TEST_SOURCE ; 5 ; Untyped ; +; C3_TEST_SOURCE ; 5 ; Untyped ; +; C4_TEST_SOURCE ; 5 ; Untyped ; +; C5_TEST_SOURCE ; 5 ; Untyped ; +; C6_TEST_SOURCE ; 5 ; Untyped ; +; C7_TEST_SOURCE ; 5 ; Untyped ; +; C8_TEST_SOURCE ; 5 ; Untyped ; +; C9_TEST_SOURCE ; 5 ; Untyped ; +; CBXI_PARAMETER ; altpll_41p2 ; Untyped ; +; VCO_FREQUENCY_CONTROL ; AUTO ; Untyped ; +; VCO_PHASE_SHIFT_STEP ; 0 ; Untyped ; +; WIDTH_CLOCK ; 5 ; Signed Integer ; +; WIDTH_PHASECOUNTERSELECT ; 4 ; Untyped ; +; USING_FBMIMICBIDIR_PORT ; OFF ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; SCAN_CHAIN_MIF_FILE ; UNUSED ; Untyped ; +; SIM_GATE_LOCK_DEVICE_BEHAVIOR ; OFF ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++-------------------------------+--------------------+--------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_bustri_WORD:$00000|lpm_bustri:lpm_bustri_component ; ++----------------+-------+-----------------------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++----------------+-------+-----------------------------------------------------------------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 16 ; Signed Integer ; ++----------------+-------+-----------------------------------------------------------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_bustri_WORD:$00002|lpm_bustri:lpm_bustri_component ; ++----------------+-------+-----------------------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++----------------+-------+-----------------------------------------------------------------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 16 ; Signed Integer ; ++----------------+-------+-----------------------------------------------------------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_shiftreg6:inst89|lpm_shiftreg:lpm_shiftreg_component ; ++------------------------+-------------+---------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+---------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 5 ; Signed Integer ; +; LPM_DIRECTION ; RIGHT ; Untyped ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+---------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++-------------------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|lpm_bustri_BYT:$00002|lpm_bustri:lpm_bustri_component ; ++----------------+-------+------------------------------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++----------------+-------+------------------------------------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 8 ; Signed Integer ; ++----------------+-------+------------------------------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++-------------------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|lpm_bustri_BYT:$00004|lpm_bustri:lpm_bustri_component ; ++----------------+-------+------------------------------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++----------------+-------+------------------------------------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 8 ; Signed Integer ; ++----------------+-------+------------------------------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++---------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component ; ++-------------------------+-------------+-----------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++-------------------------+-------------+-----------------------------------------------------------------------+ +; WIDTH_BYTEENA ; 1 ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; LPM_WIDTH ; 128 ; Signed Integer ; +; LPM_NUMWORDS ; 512 ; Signed Integer ; +; LPM_WIDTHU ; 9 ; Signed Integer ; +; LPM_SHOWAHEAD ; OFF ; Untyped ; +; UNDERFLOW_CHECKING ; OFF ; Untyped ; +; OVERFLOW_CHECKING ; OFF ; Untyped ; +; USE_EAB ; ON ; Untyped ; +; ADD_RAM_OUTPUT_REGISTER ; OFF ; Untyped ; +; DELAY_RDUSEDW ; 1 ; Untyped ; +; DELAY_WRUSEDW ; 1 ; Untyped ; +; RDSYNC_DELAYPIPE ; 6 ; Signed Integer ; +; WRSYNC_DELAYPIPE ; 6 ; Signed Integer ; +; CLOCKS_ARE_SYNCHRONIZED ; FALSE ; Untyped ; +; MAXIMIZE_SPEED ; 5 ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; ADD_USEDW_MSB_BIT ; OFF ; Untyped ; +; WRITE_ACLR_SYNCH ; ON ; Untyped ; +; CBXI_PARAMETER ; dcfifo_8fi1 ; Untyped ; ++-------------------------+-------------+-----------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_shiftreg4:inst26|lpm_shiftreg:lpm_shiftreg_component ; ++------------------------+-------------+---------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+---------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 5 ; Signed Integer ; +; LPM_DIRECTION ; RIGHT ; Untyped ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+---------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_muxVDM:inst100|LPM_MUX:lpm_mux_component ; ++------------------------+-------------+---------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+---------------------------------------------------------------------------+ +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; LPM_WIDTH ; 128 ; Signed Integer ; +; LPM_SIZE ; 16 ; Signed Integer ; +; LPM_WIDTHS ; 4 ; Signed Integer ; +; LPM_PIPELINE ; 0 ; Signed Integer ; +; CBXI_PARAMETER ; mux_bbe ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; ++------------------------+-------------+---------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff6:inst94|lpm_ff:lpm_ff_component ; ++------------------------+-------------+---------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+---------------------------------------------------------------------+ +; LPM_WIDTH ; 128 ; Signed Integer ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; LPM_FFTYPE ; DFF ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; NOTHING ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+---------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component ; ++------------------------+-------------+---------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+---------------------------------------------------------------------+ +; LPM_WIDTH ; 128 ; Signed Integer ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; LPM_FFTYPE ; DFF ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; NOTHING ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+---------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++-----------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component ; ++------------------------+-------------+--------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+--------------------------------------------------------------------+ +; LPM_WIDTH ; 32 ; Signed Integer ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; LPM_FFTYPE ; DFF ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; NOTHING ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+--------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++-----------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component ; ++------------------------+-------------+--------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+--------------------------------------------------------------------+ +; LPM_WIDTH ; 32 ; Signed Integer ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; LPM_FFTYPE ; DFF ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; NOTHING ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+--------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++--------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component ; ++--------------------------+----------------+------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++--------------------------+----------------+------------------------------------------------------------------------------------+ +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; WIDTH ; 32 ; Signed Integer ; +; POWER_UP_HIGH ; OFF ; Untyped ; +; OE_REG ; UNUSED ; Untyped ; +; extend_oe_disable ; UNUSED ; Untyped ; +; IMPLEMENT_INPUT_IN_LCELL ; ON ; Untyped ; +; INTENDED_DEVICE_FAMILY ; Cyclone III ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; ddio_bidir_3jl ; Untyped ; ++--------------------------+----------------+------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++---------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_mux5:inst22|LPM_MUX:lpm_mux_component ; ++------------------------+-------------+------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+------------------------------------------------------------------------+ +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; LPM_WIDTH ; 64 ; Signed Integer ; +; LPM_SIZE ; 4 ; Signed Integer ; +; LPM_WIDTHS ; 2 ; Signed Integer ; +; LPM_PIPELINE ; 0 ; Signed Integer ; +; CBXI_PARAMETER ; mux_58e ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; ++------------------------+-------------+------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component ; ++------------------------+-------------+---------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+---------------------------------------------------------------------+ +; LPM_WIDTH ; 32 ; Signed Integer ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; LPM_FFTYPE ; DFF ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; NOTHING ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+---------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component ; ++------------------------+-------------+---------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+---------------------------------------------------------------------+ +; LPM_WIDTH ; 32 ; Signed Integer ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; LPM_FFTYPE ; DFF ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; NOTHING ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+---------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component ; ++------------------------+-------------+---------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+---------------------------------------------------------------------+ +; LPM_WIDTH ; 32 ; Signed Integer ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; LPM_FFTYPE ; DFF ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; NOTHING ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+---------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component ; ++------------------------+-------------+---------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+---------------------------------------------------------------------+ +; LPM_WIDTH ; 32 ; Signed Integer ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; LPM_FFTYPE ; DFF ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; NOTHING ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+---------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component ; ++------------------------+-------------+---------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+---------------------------------------------------------------------+ +; LPM_WIDTH ; 32 ; Signed Integer ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; LPM_FFTYPE ; DFF ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; NOTHING ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+---------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component ; ++------------------------+-------------+---------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+---------------------------------------------------------------------+ +; LPM_WIDTH ; 32 ; Signed Integer ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; LPM_FFTYPE ; DFF ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; NOTHING ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+---------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff6:inst36|lpm_ff:lpm_ff_component ; ++------------------------+-------------+---------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+---------------------------------------------------------------------+ +; LPM_WIDTH ; 128 ; Signed Integer ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; LPM_FFTYPE ; DFF ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; NOTHING ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+---------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++-----------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_bustri_LONG:inst108|lpm_bustri:lpm_bustri_component ; ++----------------+-------+----------------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++----------------+-------+----------------------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 32 ; Signed Integer ; ++----------------+-------+----------------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++---------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component ; ++----------------+--------+-------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++----------------+--------+-------------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 32 ; Signed Integer ; +; LPM_AVALUE ; UNUSED ; Untyped ; ++----------------+--------+-------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++-----------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_bustri_LONG:inst119|lpm_bustri:lpm_bustri_component ; ++----------------+-------+----------------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++----------------+-------+----------------------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 32 ; Signed Integer ; ++----------------+-------+----------------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff0:inst19|lpm_ff:lpm_ff_component ; ++------------------------+-------------+---------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+---------------------------------------------------------------------+ +; LPM_WIDTH ; 32 ; Signed Integer ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; LPM_FFTYPE ; DFF ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; NOTHING ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+---------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_shiftreg6:inst92|lpm_shiftreg:lpm_shiftreg_component ; ++------------------------+-------------+---------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+---------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 5 ; Signed Integer ; +; LPM_DIRECTION ; RIGHT ; Untyped ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+---------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++-----------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_bustri_LONG:inst110|lpm_bustri:lpm_bustri_component ; ++----------------+-------+----------------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++----------------+-------+----------------------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 32 ; Signed Integer ; ++----------------+-------+----------------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff0:inst18|lpm_ff:lpm_ff_component ; ++------------------------+-------------+---------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+---------------------------------------------------------------------+ +; LPM_WIDTH ; 32 ; Signed Integer ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; LPM_FFTYPE ; DFF ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; NOTHING ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+---------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++-----------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_bustri_LONG:inst109|lpm_bustri:lpm_bustri_component ; ++----------------+-------+----------------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++----------------+-------+----------------------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 32 ; Signed Integer ; ++----------------+-------+----------------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff0:inst17|lpm_ff:lpm_ff_component ; ++------------------------+-------------+---------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+---------------------------------------------------------------------+ +; LPM_WIDTH ; 32 ; Signed Integer ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; LPM_FFTYPE ; DFF ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; NOTHING ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+---------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_bustri3:inst66|lpm_bustri:lpm_bustri_component ; ++----------------+-------+-----------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++----------------+-------+-----------------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 6 ; Signed Integer ; ++----------------+-------+-----------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++-------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component ; ++------------------------------------+-----------------+------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------------------+-----------------+------------------------------------------------------------------------+ +; BYTE_SIZE_BLOCK ; 8 ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; WIDTH_BYTEENA ; 1 ; Untyped ; +; OPERATION_MODE ; BIDIR_DUAL_PORT ; Untyped ; +; WIDTH_A ; 6 ; Signed Integer ; +; WIDTHAD_A ; 8 ; Signed Integer ; +; NUMWORDS_A ; 256 ; Signed Integer ; +; OUTDATA_REG_A ; CLOCK0 ; Untyped ; +; ADDRESS_ACLR_A ; NONE ; Untyped ; +; OUTDATA_ACLR_A ; NONE ; Untyped ; +; WRCONTROL_ACLR_A ; NONE ; Untyped ; +; INDATA_ACLR_A ; NONE ; Untyped ; +; BYTEENA_ACLR_A ; NONE ; Untyped ; +; WIDTH_B ; 6 ; Signed Integer ; +; WIDTHAD_B ; 8 ; Signed Integer ; +; NUMWORDS_B ; 256 ; Signed Integer ; +; INDATA_REG_B ; CLOCK1 ; Untyped ; +; WRCONTROL_WRADDRESS_REG_B ; CLOCK1 ; Untyped ; +; RDCONTROL_REG_B ; CLOCK1 ; Untyped ; +; ADDRESS_REG_B ; CLOCK1 ; Untyped ; +; OUTDATA_REG_B ; CLOCK1 ; Untyped ; +; BYTEENA_REG_B ; CLOCK1 ; Untyped ; +; INDATA_ACLR_B ; NONE ; Untyped ; +; WRCONTROL_ACLR_B ; NONE ; Untyped ; +; ADDRESS_ACLR_B ; NONE ; Untyped ; +; OUTDATA_ACLR_B ; NONE ; Untyped ; +; RDCONTROL_ACLR_B ; NONE ; Untyped ; +; BYTEENA_ACLR_B ; NONE ; Untyped ; +; WIDTH_BYTEENA_A ; 1 ; Signed Integer ; +; WIDTH_BYTEENA_B ; 1 ; Signed Integer ; +; RAM_BLOCK_TYPE ; AUTO ; Untyped ; +; BYTE_SIZE ; 8 ; Untyped ; +; READ_DURING_WRITE_MODE_MIXED_PORTS ; DONT_CARE ; Untyped ; +; READ_DURING_WRITE_MODE_PORT_A ; OLD_DATA ; Untyped ; +; READ_DURING_WRITE_MODE_PORT_B ; OLD_DATA ; Untyped ; +; INIT_FILE ; UNUSED ; Untyped ; +; INIT_FILE_LAYOUT ; PORT_A ; Untyped ; +; MAXIMUM_DEPTH ; 0 ; Untyped ; +; CLOCK_ENABLE_INPUT_A ; BYPASS ; Untyped ; +; CLOCK_ENABLE_INPUT_B ; BYPASS ; Untyped ; +; CLOCK_ENABLE_OUTPUT_A ; BYPASS ; Untyped ; +; CLOCK_ENABLE_OUTPUT_B ; BYPASS ; Untyped ; +; CLOCK_ENABLE_CORE_A ; USE_INPUT_CLKEN ; Untyped ; +; CLOCK_ENABLE_CORE_B ; USE_INPUT_CLKEN ; Untyped ; +; ENABLE_ECC ; FALSE ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; altsyncram_lf92 ; Untyped ; ++------------------------------------+-----------------+------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++---------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component ; ++------------------------+-------------+------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 16 ; Signed Integer ; +; LPM_DIRECTION ; LEFT ; Untyped ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++---------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_shiftreg0:sr4|lpm_shiftreg:lpm_shiftreg_component ; ++------------------------+-------------+------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 16 ; Signed Integer ; +; LPM_DIRECTION ; LEFT ; Untyped ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++---------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_shiftreg0:sr5|lpm_shiftreg:lpm_shiftreg_component ; ++------------------------+-------------+------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 16 ; Signed Integer ; +; LPM_DIRECTION ; LEFT ; Untyped ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++---------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_shiftreg0:sr6|lpm_shiftreg:lpm_shiftreg_component ; ++------------------------+-------------+------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 16 ; Signed Integer ; +; LPM_DIRECTION ; LEFT ; Untyped ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++---------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_shiftreg0:sr7|lpm_shiftreg:lpm_shiftreg_component ; ++------------------------+-------------+------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 16 ; Signed Integer ; +; LPM_DIRECTION ; LEFT ; Untyped ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++----------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_muxDZ:inst62|LPM_MUX:lpm_mux_component ; ++------------------------+-------------+-------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+-------------------------------------------------------------------------+ +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; LPM_WIDTH ; 128 ; Signed Integer ; +; LPM_SIZE ; 2 ; Signed Integer ; +; LPM_WIDTHS ; 1 ; Signed Integer ; +; LPM_PIPELINE ; 1 ; Signed Integer ; +; CBXI_PARAMETER ; mux_dcf ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; ++------------------------+-------------+-------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++---------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component ; ++-------------------------+-------------+-----------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++-------------------------+-------------+-----------------------------------------------------------------------+ +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; lpm_width ; 128 ; Signed Integer ; +; LPM_NUMWORDS ; 128 ; Signed Integer ; +; LPM_WIDTHU ; 7 ; Signed Integer ; +; LPM_SHOWAHEAD ; ON ; Untyped ; +; UNDERFLOW_CHECKING ; OFF ; Untyped ; +; OVERFLOW_CHECKING ; OFF ; Untyped ; +; ALLOW_RWCYCLE_WHEN_FULL ; OFF ; Untyped ; +; ADD_RAM_OUTPUT_REGISTER ; OFF ; Untyped ; +; ALMOST_FULL_VALUE ; 0 ; Untyped ; +; ALMOST_EMPTY_VALUE ; 0 ; Untyped ; +; USE_EAB ; ON ; Untyped ; +; MAXIMIZE_SPEED ; 5 ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; OPTIMIZE_FOR_SPEED ; 9 ; Untyped ; +; CBXI_PARAMETER ; scfifo_lk21 ; Untyped ; ++-------------------------+-------------+-----------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++---------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_shiftreg0:sr1|lpm_shiftreg:lpm_shiftreg_component ; ++------------------------+-------------+------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 16 ; Signed Integer ; +; LPM_DIRECTION ; LEFT ; Untyped ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++---------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component ; ++------------------------+-------------+------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 16 ; Signed Integer ; +; LPM_DIRECTION ; LEFT ; Untyped ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++---------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_shiftreg0:sr3|lpm_shiftreg:lpm_shiftreg_component ; ++------------------------+-------------+------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 16 ; Signed Integer ; +; LPM_DIRECTION ; LEFT ; Untyped ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_bustri3:inst70|lpm_bustri:lpm_bustri_component ; ++----------------+-------+-----------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++----------------+-------+-----------------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 6 ; Signed Integer ; ++----------------+-------+-----------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++---------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_GREEN|altsyncram:altsyncram_component ; ++------------------------------------+-----------------+--------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------------------+-----------------+--------------------------------------------------------------------------+ +; BYTE_SIZE_BLOCK ; 8 ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; WIDTH_BYTEENA ; 1 ; Untyped ; +; OPERATION_MODE ; BIDIR_DUAL_PORT ; Untyped ; +; WIDTH_A ; 6 ; Signed Integer ; +; WIDTHAD_A ; 8 ; Signed Integer ; +; NUMWORDS_A ; 256 ; Signed Integer ; +; OUTDATA_REG_A ; CLOCK0 ; Untyped ; +; ADDRESS_ACLR_A ; NONE ; Untyped ; +; OUTDATA_ACLR_A ; NONE ; Untyped ; +; WRCONTROL_ACLR_A ; NONE ; Untyped ; +; INDATA_ACLR_A ; NONE ; Untyped ; +; BYTEENA_ACLR_A ; NONE ; Untyped ; +; WIDTH_B ; 6 ; Signed Integer ; +; WIDTHAD_B ; 8 ; Signed Integer ; +; NUMWORDS_B ; 256 ; Signed Integer ; +; INDATA_REG_B ; CLOCK1 ; Untyped ; +; WRCONTROL_WRADDRESS_REG_B ; CLOCK1 ; Untyped ; +; RDCONTROL_REG_B ; CLOCK1 ; Untyped ; +; ADDRESS_REG_B ; CLOCK1 ; Untyped ; +; OUTDATA_REG_B ; CLOCK1 ; Untyped ; +; BYTEENA_REG_B ; CLOCK1 ; Untyped ; +; INDATA_ACLR_B ; NONE ; Untyped ; +; WRCONTROL_ACLR_B ; NONE ; Untyped ; +; ADDRESS_ACLR_B ; NONE ; Untyped ; +; OUTDATA_ACLR_B ; NONE ; Untyped ; +; RDCONTROL_ACLR_B ; NONE ; Untyped ; +; BYTEENA_ACLR_B ; NONE ; Untyped ; +; WIDTH_BYTEENA_A ; 1 ; Signed Integer ; +; WIDTH_BYTEENA_B ; 1 ; Signed Integer ; +; RAM_BLOCK_TYPE ; AUTO ; Untyped ; +; BYTE_SIZE ; 8 ; Untyped ; +; READ_DURING_WRITE_MODE_MIXED_PORTS ; DONT_CARE ; Untyped ; +; READ_DURING_WRITE_MODE_PORT_A ; OLD_DATA ; Untyped ; +; READ_DURING_WRITE_MODE_PORT_B ; OLD_DATA ; Untyped ; +; INIT_FILE ; UNUSED ; Untyped ; +; INIT_FILE_LAYOUT ; PORT_A ; Untyped ; +; MAXIMUM_DEPTH ; 0 ; Untyped ; +; CLOCK_ENABLE_INPUT_A ; BYPASS ; Untyped ; +; CLOCK_ENABLE_INPUT_B ; BYPASS ; Untyped ; +; CLOCK_ENABLE_OUTPUT_A ; BYPASS ; Untyped ; +; CLOCK_ENABLE_OUTPUT_B ; BYPASS ; Untyped ; +; CLOCK_ENABLE_CORE_A ; USE_INPUT_CLKEN ; Untyped ; +; CLOCK_ENABLE_CORE_B ; USE_INPUT_CLKEN ; Untyped ; +; ENABLE_ECC ; FALSE ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; altsyncram_lf92 ; Untyped ; ++------------------------------------+-----------------+--------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_bustri3:inst74|lpm_bustri:lpm_bustri_component ; ++----------------+-------+-----------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++----------------+-------+-----------------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 6 ; Signed Integer ; ++----------------+-------+-----------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++--------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_BLUE|altsyncram:altsyncram_component ; ++------------------------------------+-----------------+-------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------------------+-----------------+-------------------------------------------------------------------------+ +; BYTE_SIZE_BLOCK ; 8 ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; WIDTH_BYTEENA ; 1 ; Untyped ; +; OPERATION_MODE ; BIDIR_DUAL_PORT ; Untyped ; +; WIDTH_A ; 6 ; Signed Integer ; +; WIDTHAD_A ; 8 ; Signed Integer ; +; NUMWORDS_A ; 256 ; Signed Integer ; +; OUTDATA_REG_A ; CLOCK0 ; Untyped ; +; ADDRESS_ACLR_A ; NONE ; Untyped ; +; OUTDATA_ACLR_A ; NONE ; Untyped ; +; WRCONTROL_ACLR_A ; NONE ; Untyped ; +; INDATA_ACLR_A ; NONE ; Untyped ; +; BYTEENA_ACLR_A ; NONE ; Untyped ; +; WIDTH_B ; 6 ; Signed Integer ; +; WIDTHAD_B ; 8 ; Signed Integer ; +; NUMWORDS_B ; 256 ; Signed Integer ; +; INDATA_REG_B ; CLOCK1 ; Untyped ; +; WRCONTROL_WRADDRESS_REG_B ; CLOCK1 ; Untyped ; +; RDCONTROL_REG_B ; CLOCK1 ; Untyped ; +; ADDRESS_REG_B ; CLOCK1 ; Untyped ; +; OUTDATA_REG_B ; CLOCK1 ; Untyped ; +; BYTEENA_REG_B ; CLOCK1 ; Untyped ; +; INDATA_ACLR_B ; NONE ; Untyped ; +; WRCONTROL_ACLR_B ; NONE ; Untyped ; +; ADDRESS_ACLR_B ; NONE ; Untyped ; +; OUTDATA_ACLR_B ; NONE ; Untyped ; +; RDCONTROL_ACLR_B ; NONE ; Untyped ; +; BYTEENA_ACLR_B ; NONE ; Untyped ; +; WIDTH_BYTEENA_A ; 1 ; Signed Integer ; +; WIDTH_BYTEENA_B ; 1 ; Signed Integer ; +; RAM_BLOCK_TYPE ; AUTO ; Untyped ; +; BYTE_SIZE ; 8 ; Untyped ; +; READ_DURING_WRITE_MODE_MIXED_PORTS ; DONT_CARE ; Untyped ; +; READ_DURING_WRITE_MODE_PORT_A ; OLD_DATA ; Untyped ; +; READ_DURING_WRITE_MODE_PORT_B ; OLD_DATA ; Untyped ; +; INIT_FILE ; UNUSED ; Untyped ; +; INIT_FILE_LAYOUT ; PORT_A ; Untyped ; +; MAXIMUM_DEPTH ; 0 ; Untyped ; +; CLOCK_ENABLE_INPUT_A ; BYPASS ; Untyped ; +; CLOCK_ENABLE_INPUT_B ; BYPASS ; Untyped ; +; CLOCK_ENABLE_OUTPUT_A ; BYPASS ; Untyped ; +; CLOCK_ENABLE_OUTPUT_B ; BYPASS ; Untyped ; +; CLOCK_ENABLE_CORE_A ; USE_INPUT_CLKEN ; Untyped ; +; CLOCK_ENABLE_CORE_B ; USE_INPUT_CLKEN ; Untyped ; +; ENABLE_ECC ; FALSE ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; altsyncram_lf92 ; Untyped ; ++------------------------------------+-----------------+-------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_bustri1:inst51|lpm_bustri:lpm_bustri_component ; ++----------------+-------+-----------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++----------------+-------+-----------------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 3 ; Signed Integer ; ++----------------+-------+-----------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++---------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|altdpram0:ST_CLUT_RED|altsyncram:altsyncram_component ; ++------------------------------------+-----------------+--------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------------------+-----------------+--------------------------------------------------------------------+ +; BYTE_SIZE_BLOCK ; 8 ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; WIDTH_BYTEENA ; 1 ; Untyped ; +; OPERATION_MODE ; BIDIR_DUAL_PORT ; Untyped ; +; WIDTH_A ; 3 ; Signed Integer ; +; WIDTHAD_A ; 4 ; Signed Integer ; +; NUMWORDS_A ; 16 ; Signed Integer ; +; OUTDATA_REG_A ; CLOCK0 ; Untyped ; +; ADDRESS_ACLR_A ; NONE ; Untyped ; +; OUTDATA_ACLR_A ; NONE ; Untyped ; +; WRCONTROL_ACLR_A ; NONE ; Untyped ; +; INDATA_ACLR_A ; NONE ; Untyped ; +; BYTEENA_ACLR_A ; NONE ; Untyped ; +; WIDTH_B ; 3 ; Signed Integer ; +; WIDTHAD_B ; 4 ; Signed Integer ; +; NUMWORDS_B ; 16 ; Signed Integer ; +; INDATA_REG_B ; CLOCK1 ; Untyped ; +; WRCONTROL_WRADDRESS_REG_B ; CLOCK1 ; Untyped ; +; RDCONTROL_REG_B ; CLOCK1 ; Untyped ; +; ADDRESS_REG_B ; CLOCK1 ; Untyped ; +; OUTDATA_REG_B ; CLOCK1 ; Untyped ; +; BYTEENA_REG_B ; CLOCK1 ; Untyped ; +; INDATA_ACLR_B ; NONE ; Untyped ; +; WRCONTROL_ACLR_B ; NONE ; Untyped ; +; ADDRESS_ACLR_B ; NONE ; Untyped ; +; OUTDATA_ACLR_B ; NONE ; Untyped ; +; RDCONTROL_ACLR_B ; NONE ; Untyped ; +; BYTEENA_ACLR_B ; NONE ; Untyped ; +; WIDTH_BYTEENA_A ; 1 ; Signed Integer ; +; WIDTH_BYTEENA_B ; 1 ; Signed Integer ; +; RAM_BLOCK_TYPE ; AUTO ; Untyped ; +; BYTE_SIZE ; 8 ; Untyped ; +; READ_DURING_WRITE_MODE_MIXED_PORTS ; DONT_CARE ; Untyped ; +; READ_DURING_WRITE_MODE_PORT_A ; OLD_DATA ; Untyped ; +; READ_DURING_WRITE_MODE_PORT_B ; OLD_DATA ; Untyped ; +; INIT_FILE ; UNUSED ; Untyped ; +; INIT_FILE_LAYOUT ; PORT_A ; Untyped ; +; MAXIMUM_DEPTH ; 0 ; Untyped ; +; CLOCK_ENABLE_INPUT_A ; BYPASS ; Untyped ; +; CLOCK_ENABLE_INPUT_B ; BYPASS ; Untyped ; +; CLOCK_ENABLE_OUTPUT_A ; BYPASS ; Untyped ; +; CLOCK_ENABLE_OUTPUT_B ; BYPASS ; Untyped ; +; CLOCK_ENABLE_CORE_A ; USE_INPUT_CLKEN ; Untyped ; +; CLOCK_ENABLE_CORE_B ; USE_INPUT_CLKEN ; Untyped ; +; ENABLE_ECC ; FALSE ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; altsyncram_rb92 ; Untyped ; ++------------------------------------+-----------------+--------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_bustri1:inst56|lpm_bustri:lpm_bustri_component ; ++----------------+-------+-----------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++----------------+-------+-----------------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 3 ; Signed Integer ; ++----------------+-------+-----------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++-----------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|altdpram0:ST_CLUT_GREEN|altsyncram:altsyncram_component ; ++------------------------------------+-----------------+----------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------------------+-----------------+----------------------------------------------------------------------+ +; BYTE_SIZE_BLOCK ; 8 ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; WIDTH_BYTEENA ; 1 ; Untyped ; +; OPERATION_MODE ; BIDIR_DUAL_PORT ; Untyped ; +; WIDTH_A ; 3 ; Signed Integer ; +; WIDTHAD_A ; 4 ; Signed Integer ; +; NUMWORDS_A ; 16 ; Signed Integer ; +; OUTDATA_REG_A ; CLOCK0 ; Untyped ; +; ADDRESS_ACLR_A ; NONE ; Untyped ; +; OUTDATA_ACLR_A ; NONE ; Untyped ; +; WRCONTROL_ACLR_A ; NONE ; Untyped ; +; INDATA_ACLR_A ; NONE ; Untyped ; +; BYTEENA_ACLR_A ; NONE ; Untyped ; +; WIDTH_B ; 3 ; Signed Integer ; +; WIDTHAD_B ; 4 ; Signed Integer ; +; NUMWORDS_B ; 16 ; Signed Integer ; +; INDATA_REG_B ; CLOCK1 ; Untyped ; +; WRCONTROL_WRADDRESS_REG_B ; CLOCK1 ; Untyped ; +; RDCONTROL_REG_B ; CLOCK1 ; Untyped ; +; ADDRESS_REG_B ; CLOCK1 ; Untyped ; +; OUTDATA_REG_B ; CLOCK1 ; Untyped ; +; BYTEENA_REG_B ; CLOCK1 ; Untyped ; +; INDATA_ACLR_B ; NONE ; Untyped ; +; WRCONTROL_ACLR_B ; NONE ; Untyped ; +; ADDRESS_ACLR_B ; NONE ; Untyped ; +; OUTDATA_ACLR_B ; NONE ; Untyped ; +; RDCONTROL_ACLR_B ; NONE ; Untyped ; +; BYTEENA_ACLR_B ; NONE ; Untyped ; +; WIDTH_BYTEENA_A ; 1 ; Signed Integer ; +; WIDTH_BYTEENA_B ; 1 ; Signed Integer ; +; RAM_BLOCK_TYPE ; AUTO ; Untyped ; +; BYTE_SIZE ; 8 ; Untyped ; +; READ_DURING_WRITE_MODE_MIXED_PORTS ; DONT_CARE ; Untyped ; +; READ_DURING_WRITE_MODE_PORT_A ; OLD_DATA ; Untyped ; +; READ_DURING_WRITE_MODE_PORT_B ; OLD_DATA ; Untyped ; +; INIT_FILE ; UNUSED ; Untyped ; +; INIT_FILE_LAYOUT ; PORT_A ; Untyped ; +; MAXIMUM_DEPTH ; 0 ; Untyped ; +; CLOCK_ENABLE_INPUT_A ; BYPASS ; Untyped ; +; CLOCK_ENABLE_INPUT_B ; BYPASS ; Untyped ; +; CLOCK_ENABLE_OUTPUT_A ; BYPASS ; Untyped ; +; CLOCK_ENABLE_OUTPUT_B ; BYPASS ; Untyped ; +; CLOCK_ENABLE_CORE_A ; USE_INPUT_CLKEN ; Untyped ; +; CLOCK_ENABLE_CORE_B ; USE_INPUT_CLKEN ; Untyped ; +; ENABLE_ECC ; FALSE ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; altsyncram_rb92 ; Untyped ; ++------------------------------------+-----------------+----------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_bustri1:inst61|lpm_bustri:lpm_bustri_component ; ++----------------+-------+-----------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++----------------+-------+-----------------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 3 ; Signed Integer ; ++----------------+-------+-----------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++----------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|altdpram0:ST_CLUT_BLUE|altsyncram:altsyncram_component ; ++------------------------------------+-----------------+---------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------------------+-----------------+---------------------------------------------------------------------+ +; BYTE_SIZE_BLOCK ; 8 ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; WIDTH_BYTEENA ; 1 ; Untyped ; +; OPERATION_MODE ; BIDIR_DUAL_PORT ; Untyped ; +; WIDTH_A ; 3 ; Signed Integer ; +; WIDTHAD_A ; 4 ; Signed Integer ; +; NUMWORDS_A ; 16 ; Signed Integer ; +; OUTDATA_REG_A ; CLOCK0 ; Untyped ; +; ADDRESS_ACLR_A ; NONE ; Untyped ; +; OUTDATA_ACLR_A ; NONE ; Untyped ; +; WRCONTROL_ACLR_A ; NONE ; Untyped ; +; INDATA_ACLR_A ; NONE ; Untyped ; +; BYTEENA_ACLR_A ; NONE ; Untyped ; +; WIDTH_B ; 3 ; Signed Integer ; +; WIDTHAD_B ; 4 ; Signed Integer ; +; NUMWORDS_B ; 16 ; Signed Integer ; +; INDATA_REG_B ; CLOCK1 ; Untyped ; +; WRCONTROL_WRADDRESS_REG_B ; CLOCK1 ; Untyped ; +; RDCONTROL_REG_B ; CLOCK1 ; Untyped ; +; ADDRESS_REG_B ; CLOCK1 ; Untyped ; +; OUTDATA_REG_B ; CLOCK1 ; Untyped ; +; BYTEENA_REG_B ; CLOCK1 ; Untyped ; +; INDATA_ACLR_B ; NONE ; Untyped ; +; WRCONTROL_ACLR_B ; NONE ; Untyped ; +; ADDRESS_ACLR_B ; NONE ; Untyped ; +; OUTDATA_ACLR_B ; NONE ; Untyped ; +; RDCONTROL_ACLR_B ; NONE ; Untyped ; +; BYTEENA_ACLR_B ; NONE ; Untyped ; +; WIDTH_BYTEENA_A ; 1 ; Signed Integer ; +; WIDTH_BYTEENA_B ; 1 ; Signed Integer ; +; RAM_BLOCK_TYPE ; AUTO ; Untyped ; +; BYTE_SIZE ; 8 ; Untyped ; +; READ_DURING_WRITE_MODE_MIXED_PORTS ; DONT_CARE ; Untyped ; +; READ_DURING_WRITE_MODE_PORT_A ; OLD_DATA ; Untyped ; +; READ_DURING_WRITE_MODE_PORT_B ; OLD_DATA ; Untyped ; +; INIT_FILE ; UNUSED ; Untyped ; +; INIT_FILE_LAYOUT ; PORT_A ; Untyped ; +; MAXIMUM_DEPTH ; 0 ; Untyped ; +; CLOCK_ENABLE_INPUT_A ; BYPASS ; Untyped ; +; CLOCK_ENABLE_INPUT_B ; BYPASS ; Untyped ; +; CLOCK_ENABLE_OUTPUT_A ; BYPASS ; Untyped ; +; CLOCK_ENABLE_OUTPUT_B ; BYPASS ; Untyped ; +; CLOCK_ENABLE_CORE_A ; USE_INPUT_CLKEN ; Untyped ; +; CLOCK_ENABLE_CORE_B ; USE_INPUT_CLKEN ; Untyped ; +; ENABLE_ECC ; FALSE ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; altsyncram_rb92 ; Untyped ; ++------------------------------------+-----------------+---------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++---------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_bustri_BYT:inst58|lpm_bustri:lpm_bustri_component ; ++----------------+-------+--------------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++----------------+-------+--------------------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 8 ; Signed Integer ; ++----------------+-------+--------------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component ; ++------------------------------------+-----------------+-----------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------------------+-----------------+-----------------------------------------------------------------------+ +; BYTE_SIZE_BLOCK ; 8 ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; WIDTH_BYTEENA ; 1 ; Untyped ; +; OPERATION_MODE ; BIDIR_DUAL_PORT ; Untyped ; +; WIDTH_A ; 8 ; Signed Integer ; +; WIDTHAD_A ; 8 ; Signed Integer ; +; NUMWORDS_A ; 256 ; Signed Integer ; +; OUTDATA_REG_A ; CLOCK0 ; Untyped ; +; ADDRESS_ACLR_A ; NONE ; Untyped ; +; OUTDATA_ACLR_A ; NONE ; Untyped ; +; WRCONTROL_ACLR_A ; NONE ; Untyped ; +; INDATA_ACLR_A ; NONE ; Untyped ; +; BYTEENA_ACLR_A ; NONE ; Untyped ; +; WIDTH_B ; 8 ; Signed Integer ; +; WIDTHAD_B ; 8 ; Signed Integer ; +; NUMWORDS_B ; 256 ; Signed Integer ; +; INDATA_REG_B ; CLOCK1 ; Untyped ; +; WRCONTROL_WRADDRESS_REG_B ; CLOCK1 ; Untyped ; +; RDCONTROL_REG_B ; CLOCK1 ; Untyped ; +; ADDRESS_REG_B ; CLOCK1 ; Untyped ; +; OUTDATA_REG_B ; CLOCK1 ; Untyped ; +; BYTEENA_REG_B ; CLOCK1 ; Untyped ; +; INDATA_ACLR_B ; NONE ; Untyped ; +; WRCONTROL_ACLR_B ; NONE ; Untyped ; +; ADDRESS_ACLR_B ; NONE ; Untyped ; +; OUTDATA_ACLR_B ; NONE ; Untyped ; +; RDCONTROL_ACLR_B ; NONE ; Untyped ; +; BYTEENA_ACLR_B ; NONE ; Untyped ; +; WIDTH_BYTEENA_A ; 1 ; Signed Integer ; +; WIDTH_BYTEENA_B ; 1 ; Signed Integer ; +; RAM_BLOCK_TYPE ; AUTO ; Untyped ; +; BYTE_SIZE ; 8 ; Untyped ; +; READ_DURING_WRITE_MODE_MIXED_PORTS ; DONT_CARE ; Untyped ; +; READ_DURING_WRITE_MODE_PORT_A ; OLD_DATA ; Untyped ; +; READ_DURING_WRITE_MODE_PORT_B ; OLD_DATA ; Untyped ; +; INIT_FILE ; UNUSED ; Untyped ; +; INIT_FILE_LAYOUT ; PORT_A ; Untyped ; +; MAXIMUM_DEPTH ; 0 ; Untyped ; +; CLOCK_ENABLE_INPUT_A ; BYPASS ; Untyped ; +; CLOCK_ENABLE_INPUT_B ; BYPASS ; Untyped ; +; CLOCK_ENABLE_OUTPUT_A ; BYPASS ; Untyped ; +; CLOCK_ENABLE_OUTPUT_B ; BYPASS ; Untyped ; +; CLOCK_ENABLE_CORE_A ; USE_INPUT_CLKEN ; Untyped ; +; CLOCK_ENABLE_CORE_B ; USE_INPUT_CLKEN ; Untyped ; +; ENABLE_ECC ; FALSE ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; altsyncram_pf92 ; Untyped ; ++------------------------------------+-----------------+-----------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++----------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_mux3:inst102|LPM_MUX:lpm_mux_component ; ++------------------------+-------------+-------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+-------------------------------------------------------------------------+ +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; LPM_WIDTH ; 1 ; Signed Integer ; +; LPM_SIZE ; 2 ; Signed Integer ; +; LPM_WIDTHS ; 1 ; Signed Integer ; +; LPM_PIPELINE ; 0 ; Signed Integer ; +; CBXI_PARAMETER ; mux_96e ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; ++------------------------+-------------+-------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff5:inst11|lpm_ff:lpm_ff_component ; ++------------------------+-------------+---------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+---------------------------------------------------------------------+ +; LPM_WIDTH ; 8 ; Signed Integer ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; LPM_FFTYPE ; DFF ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; NOTHING ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+---------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++---------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_mux2:inst25|LPM_MUX:lpm_mux_component ; ++------------------------+-------------+------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+------------------------------------------------------------------------+ +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; LPM_WIDTH ; 8 ; Signed Integer ; +; LPM_SIZE ; 16 ; Signed Integer ; +; LPM_WIDTHS ; 4 ; Signed Integer ; +; LPM_PIPELINE ; 2 ; Signed Integer ; +; CBXI_PARAMETER ; mux_mpe ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; ++------------------------+-------------+------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++---------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_mux4:inst81|LPM_MUX:lpm_mux_component ; ++------------------------+-------------+------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+------------------------------------------------------------------------+ +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; LPM_WIDTH ; 7 ; Signed Integer ; +; LPM_SIZE ; 2 ; Signed Integer ; +; LPM_WIDTHS ; 1 ; Signed Integer ; +; LPM_PIPELINE ; 0 ; Signed Integer ; +; CBXI_PARAMETER ; mux_f6e ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; ++------------------------+-------------+------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_constant3:inst82|lpm_constant:lpm_constant_component ; ++--------------------+------------------+--------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++--------------------+------------------+--------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 7 ; Signed Integer ; +; LPM_CVALUE ; 0 ; Signed Integer ; +; ENABLE_RUNTIME_MOD ; NO ; Untyped ; +; CBXI_PARAMETER ; lpm_constant_pf6 ; Untyped ; ++--------------------+------------------+--------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++---------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_bustri_BYT:inst57|lpm_bustri:lpm_bustri_component ; ++----------------+-------+--------------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++----------------+-------+--------------------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 8 ; Signed Integer ; ++----------------+-------+--------------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component ; ++------------------------------------+-----------------+-----------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------------------+-----------------+-----------------------------------------------------------------------+ +; BYTE_SIZE_BLOCK ; 8 ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; WIDTH_BYTEENA ; 1 ; Untyped ; +; OPERATION_MODE ; BIDIR_DUAL_PORT ; Untyped ; +; WIDTH_A ; 8 ; Signed Integer ; +; WIDTHAD_A ; 8 ; Signed Integer ; +; NUMWORDS_A ; 256 ; Signed Integer ; +; OUTDATA_REG_A ; CLOCK0 ; Untyped ; +; ADDRESS_ACLR_A ; NONE ; Untyped ; +; OUTDATA_ACLR_A ; NONE ; Untyped ; +; WRCONTROL_ACLR_A ; NONE ; Untyped ; +; INDATA_ACLR_A ; NONE ; Untyped ; +; BYTEENA_ACLR_A ; NONE ; Untyped ; +; WIDTH_B ; 8 ; Signed Integer ; +; WIDTHAD_B ; 8 ; Signed Integer ; +; NUMWORDS_B ; 256 ; Signed Integer ; +; INDATA_REG_B ; CLOCK1 ; Untyped ; +; WRCONTROL_WRADDRESS_REG_B ; CLOCK1 ; Untyped ; +; RDCONTROL_REG_B ; CLOCK1 ; Untyped ; +; ADDRESS_REG_B ; CLOCK1 ; Untyped ; +; OUTDATA_REG_B ; CLOCK1 ; Untyped ; +; BYTEENA_REG_B ; CLOCK1 ; Untyped ; +; INDATA_ACLR_B ; NONE ; Untyped ; +; WRCONTROL_ACLR_B ; NONE ; Untyped ; +; ADDRESS_ACLR_B ; NONE ; Untyped ; +; OUTDATA_ACLR_B ; NONE ; Untyped ; +; RDCONTROL_ACLR_B ; NONE ; Untyped ; +; BYTEENA_ACLR_B ; NONE ; Untyped ; +; WIDTH_BYTEENA_A ; 1 ; Signed Integer ; +; WIDTH_BYTEENA_B ; 1 ; Signed Integer ; +; RAM_BLOCK_TYPE ; AUTO ; Untyped ; +; BYTE_SIZE ; 8 ; Untyped ; +; READ_DURING_WRITE_MODE_MIXED_PORTS ; DONT_CARE ; Untyped ; +; READ_DURING_WRITE_MODE_PORT_A ; OLD_DATA ; Untyped ; +; READ_DURING_WRITE_MODE_PORT_B ; OLD_DATA ; Untyped ; +; INIT_FILE ; UNUSED ; Untyped ; +; INIT_FILE_LAYOUT ; PORT_A ; Untyped ; +; MAXIMUM_DEPTH ; 0 ; Untyped ; +; CLOCK_ENABLE_INPUT_A ; BYPASS ; Untyped ; +; CLOCK_ENABLE_INPUT_B ; BYPASS ; Untyped ; +; CLOCK_ENABLE_OUTPUT_A ; BYPASS ; Untyped ; +; CLOCK_ENABLE_OUTPUT_B ; BYPASS ; Untyped ; +; CLOCK_ENABLE_CORE_A ; USE_INPUT_CLKEN ; Untyped ; +; CLOCK_ENABLE_CORE_B ; USE_INPUT_CLKEN ; Untyped ; +; ENABLE_ECC ; FALSE ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; altsyncram_pf92 ; Untyped ; ++------------------------------------+-----------------+-----------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++---------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_bustri_BYT:inst53|lpm_bustri:lpm_bustri_component ; ++----------------+-------+--------------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++----------------+-------+--------------------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 8 ; Signed Integer ; ++----------------+-------+--------------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++----------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM|altsyncram:altsyncram_component ; ++------------------------------------+-----------------+---------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------------------+-----------------+---------------------------------------------------------------------+ +; BYTE_SIZE_BLOCK ; 8 ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; WIDTH_BYTEENA ; 1 ; Untyped ; +; OPERATION_MODE ; BIDIR_DUAL_PORT ; Untyped ; +; WIDTH_A ; 8 ; Signed Integer ; +; WIDTHAD_A ; 8 ; Signed Integer ; +; NUMWORDS_A ; 256 ; Signed Integer ; +; OUTDATA_REG_A ; CLOCK0 ; Untyped ; +; ADDRESS_ACLR_A ; NONE ; Untyped ; +; OUTDATA_ACLR_A ; NONE ; Untyped ; +; WRCONTROL_ACLR_A ; NONE ; Untyped ; +; INDATA_ACLR_A ; NONE ; Untyped ; +; BYTEENA_ACLR_A ; NONE ; Untyped ; +; WIDTH_B ; 8 ; Signed Integer ; +; WIDTHAD_B ; 8 ; Signed Integer ; +; NUMWORDS_B ; 256 ; Signed Integer ; +; INDATA_REG_B ; CLOCK1 ; Untyped ; +; WRCONTROL_WRADDRESS_REG_B ; CLOCK1 ; Untyped ; +; RDCONTROL_REG_B ; CLOCK1 ; Untyped ; +; ADDRESS_REG_B ; CLOCK1 ; Untyped ; +; OUTDATA_REG_B ; CLOCK1 ; Untyped ; +; BYTEENA_REG_B ; CLOCK1 ; Untyped ; +; INDATA_ACLR_B ; NONE ; Untyped ; +; WRCONTROL_ACLR_B ; NONE ; Untyped ; +; ADDRESS_ACLR_B ; NONE ; Untyped ; +; OUTDATA_ACLR_B ; NONE ; Untyped ; +; RDCONTROL_ACLR_B ; NONE ; Untyped ; +; BYTEENA_ACLR_B ; NONE ; Untyped ; +; WIDTH_BYTEENA_A ; 1 ; Signed Integer ; +; WIDTH_BYTEENA_B ; 1 ; Signed Integer ; +; RAM_BLOCK_TYPE ; AUTO ; Untyped ; +; BYTE_SIZE ; 8 ; Untyped ; +; READ_DURING_WRITE_MODE_MIXED_PORTS ; DONT_CARE ; Untyped ; +; READ_DURING_WRITE_MODE_PORT_A ; OLD_DATA ; Untyped ; +; READ_DURING_WRITE_MODE_PORT_B ; OLD_DATA ; Untyped ; +; INIT_FILE ; UNUSED ; Untyped ; +; INIT_FILE_LAYOUT ; PORT_A ; Untyped ; +; MAXIMUM_DEPTH ; 0 ; Untyped ; +; CLOCK_ENABLE_INPUT_A ; BYPASS ; Untyped ; +; CLOCK_ENABLE_INPUT_B ; BYPASS ; Untyped ; +; CLOCK_ENABLE_OUTPUT_A ; BYPASS ; Untyped ; +; CLOCK_ENABLE_OUTPUT_B ; BYPASS ; Untyped ; +; CLOCK_ENABLE_CORE_A ; USE_INPUT_CLKEN ; Untyped ; +; CLOCK_ENABLE_CORE_B ; USE_INPUT_CLKEN ; Untyped ; +; ENABLE_ECC ; FALSE ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; altsyncram_pf92 ; Untyped ; ++------------------------------------+-----------------+---------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++--------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|altddio_out2:inst5|altddio_out:altddio_out_component ; ++------------------------+--------------+----------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+--------------+----------------------------------------------------------------------------------+ +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; WIDTH ; 24 ; Signed Integer ; +; POWER_UP_HIGH ; OFF ; Untyped ; +; OE_REG ; UNUSED ; Untyped ; +; extend_oe_disable ; UNUSED ; Untyped ; +; INTENDED_DEVICE_FAMILY ; Cyclone III ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; ddio_out_o2f ; Untyped ; ++------------------------+--------------+----------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++--------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_mux6:inst7|LPM_MUX:lpm_mux_component ; ++------------------------+-------------+-----------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+-----------------------------------------------------------------------+ +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; LPM_WIDTH ; 24 ; Signed Integer ; +; LPM_SIZE ; 8 ; Signed Integer ; +; LPM_WIDTHS ; 3 ; Signed Integer ; +; LPM_PIPELINE ; 2 ; Signed Integer ; +; CBXI_PARAMETER ; mux_kpe ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; ++------------------------+-------------+-----------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff3:inst49|lpm_ff:lpm_ff_component ; ++------------------------+-------------+---------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+---------------------------------------------------------------------+ +; LPM_WIDTH ; 24 ; Signed Integer ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; LPM_FFTYPE ; DFF ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; NOTHING ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+---------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff3:inst52|lpm_ff:lpm_ff_component ; ++------------------------+-------------+---------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+---------------------------------------------------------------------+ +; LPM_WIDTH ; 24 ; Signed Integer ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; LPM_FFTYPE ; DFF ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; NOTHING ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+---------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_constant0:inst59|lpm_constant:lpm_constant_component ; ++--------------------+------------------+--------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++--------------------+------------------+--------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 5 ; Signed Integer ; +; LPM_CVALUE ; 0 ; Signed Integer ; +; ENABLE_RUNTIME_MOD ; NO ; Untyped ; +; CBXI_PARAMETER ; lpm_constant_nf6 ; Untyped ; ++--------------------+------------------+--------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_constant0:inst54|lpm_constant:lpm_constant_component ; ++--------------------+------------------+--------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++--------------------+------------------+--------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 5 ; Signed Integer ; +; LPM_CVALUE ; 0 ; Signed Integer ; +; ENABLE_RUNTIME_MOD ; NO ; Untyped ; +; CBXI_PARAMETER ; lpm_constant_nf6 ; Untyped ; ++--------------------+------------------+--------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_constant0:inst64|lpm_constant:lpm_constant_component ; ++--------------------+------------------+--------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++--------------------+------------------+--------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 5 ; Signed Integer ; +; LPM_CVALUE ; 0 ; Signed Integer ; +; ENABLE_RUNTIME_MOD ; NO ; Untyped ; +; CBXI_PARAMETER ; lpm_constant_nf6 ; Untyped ; ++--------------------+------------------+--------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff3:inst46|lpm_ff:lpm_ff_component ; ++------------------------+-------------+---------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+---------------------------------------------------------------------+ +; LPM_WIDTH ; 24 ; Signed Integer ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; LPM_FFTYPE ; DFF ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; NOTHING ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+---------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff3:inst47|lpm_ff:lpm_ff_component ; ++------------------------+-------------+---------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+---------------------------------------------------------------------+ +; LPM_WIDTH ; 24 ; Signed Integer ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; LPM_FFTYPE ; DFF ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; NOTHING ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+---------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_constant1:inst77|lpm_constant:lpm_constant_component ; ++--------------------+------------------+--------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++--------------------+------------------+--------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 2 ; Signed Integer ; +; LPM_CVALUE ; 0 ; Signed Integer ; +; ENABLE_RUNTIME_MOD ; NO ; Untyped ; +; CBXI_PARAMETER ; lpm_constant_4e6 ; Untyped ; ++--------------------+------------------+--------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_constant1:inst80|lpm_constant:lpm_constant_component ; ++--------------------+------------------+--------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++--------------------+------------------+--------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 2 ; Signed Integer ; +; LPM_CVALUE ; 0 ; Signed Integer ; +; ENABLE_RUNTIME_MOD ; NO ; Untyped ; +; CBXI_PARAMETER ; lpm_constant_4e6 ; Untyped ; ++--------------------+------------------+--------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_constant1:inst83|lpm_constant:lpm_constant_component ; ++--------------------+------------------+--------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++--------------------+------------------+--------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 2 ; Signed Integer ; +; LPM_CVALUE ; 0 ; Signed Integer ; +; ENABLE_RUNTIME_MOD ; NO ; Untyped ; +; CBXI_PARAMETER ; lpm_constant_4e6 ; Untyped ; ++--------------------+------------------+--------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff4:inst10|lpm_ff:lpm_ff_component ; ++------------------------+-------------+---------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+---------------------------------------------------------------------+ +; LPM_WIDTH ; 16 ; Signed Integer ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; LPM_FFTYPE ; DFF ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; NOTHING ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+---------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++---------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_mux1:inst24|LPM_MUX:lpm_mux_component ; ++------------------------+-------------+------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+------------------------------------------------------------------------+ +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; LPM_WIDTH ; 16 ; Signed Integer ; +; LPM_SIZE ; 8 ; Signed Integer ; +; LPM_WIDTHS ; 3 ; Signed Integer ; +; LPM_PIPELINE ; 4 ; Signed Integer ; +; CBXI_PARAMETER ; mux_npe ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; ++------------------------+-------------+------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_constant2:inst23|lpm_constant:lpm_constant_component ; ++--------------------+------------------+--------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++--------------------+------------------+--------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 8 ; Signed Integer ; +; LPM_CVALUE ; 0 ; Signed Integer ; +; ENABLE_RUNTIME_MOD ; NO ; Untyped ; +; CBXI_PARAMETER ; lpm_constant_qf6 ; Untyped ; ++--------------------+------------------+--------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++-----------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff1:inst9|lpm_ff:lpm_ff_component ; ++------------------------+-------------+--------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+--------------------------------------------------------------------+ +; LPM_WIDTH ; 32 ; Signed Integer ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; LPM_FFTYPE ; DFF ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; NOTHING ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+--------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++---------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_mux0:inst21|LPM_MUX:lpm_mux_component ; ++------------------------+-------------+------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+------------------------------------------------------------------------+ +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; LPM_WIDTH ; 32 ; Signed Integer ; +; LPM_SIZE ; 4 ; Signed Integer ; +; LPM_WIDTHS ; 2 ; Signed Integer ; +; LPM_PIPELINE ; 4 ; Signed Integer ; +; CBXI_PARAMETER ; mux_gpe ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; ++------------------------+-------------+------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++--------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|altddio_out0:inst2|altddio_out:altddio_out_component ; ++------------------------+--------------+----------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+--------------+----------------------------------------------------------------------------------+ +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; WIDTH ; 4 ; Signed Integer ; +; POWER_UP_HIGH ; ON ; Untyped ; +; OE_REG ; UNUSED ; Untyped ; +; extend_oe_disable ; UNUSED ; Untyped ; +; INTENDED_DEVICE_FAMILY ; Cyclone III ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; ddio_out_are ; Untyped ; ++------------------------+--------------+----------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component ; ++------------------------+-------------+---------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+---------------------------------------------------------------------+ +; LPM_WIDTH ; 8 ; Signed Integer ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; LPM_FFTYPE ; DFF ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; NOTHING ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+---------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++-------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: altpll2:inst12|altpll:altpll_component ; ++-------------------------------+--------------------+--------------------------------+ +; Parameter Name ; Value ; Type ; ++-------------------------------+--------------------+--------------------------------+ +; OPERATION_MODE ; SOURCE_SYNCHRONOUS ; Untyped ; +; PLL_TYPE ; AUTO ; Untyped ; +; QUALIFY_CONF_DONE ; OFF ; Untyped ; +; COMPENSATE_CLOCK ; CLK0 ; Untyped ; +; SCAN_CHAIN ; LONG ; Untyped ; +; PRIMARY_CLOCK ; INCLK0 ; Untyped ; +; INCLK0_INPUT_FREQUENCY ; 30303 ; Signed Integer ; +; INCLK1_INPUT_FREQUENCY ; 0 ; Untyped ; +; GATE_LOCK_SIGNAL ; NO ; Untyped ; +; GATE_LOCK_COUNTER ; 0 ; Untyped ; +; LOCK_HIGH ; 1 ; Untyped ; +; LOCK_LOW ; 1 ; Untyped ; +; VALID_LOCK_MULTIPLIER ; 1 ; Untyped ; +; INVALID_LOCK_MULTIPLIER ; 5 ; Untyped ; +; SWITCH_OVER_ON_LOSSCLK ; OFF ; Untyped ; +; SWITCH_OVER_ON_GATED_LOCK ; OFF ; Untyped ; +; ENABLE_SWITCH_OVER_COUNTER ; OFF ; Untyped ; +; SKIP_VCO ; OFF ; Untyped ; +; SWITCH_OVER_COUNTER ; 0 ; Untyped ; +; SWITCH_OVER_TYPE ; AUTO ; Untyped ; +; FEEDBACK_SOURCE ; EXTCLK0 ; Untyped ; +; BANDWIDTH ; 0 ; Untyped ; +; BANDWIDTH_TYPE ; AUTO ; Untyped ; +; SPREAD_FREQUENCY ; 0 ; Untyped ; +; DOWN_SPREAD ; 0 ; Untyped ; +; SELF_RESET_ON_GATED_LOSS_LOCK ; OFF ; Untyped ; +; SELF_RESET_ON_LOSS_LOCK ; OFF ; Untyped ; +; CLK9_MULTIPLY_BY ; 0 ; Untyped ; +; CLK8_MULTIPLY_BY ; 0 ; Untyped ; +; CLK7_MULTIPLY_BY ; 0 ; Untyped ; +; CLK6_MULTIPLY_BY ; 0 ; Untyped ; +; CLK5_MULTIPLY_BY ; 1 ; Untyped ; +; CLK4_MULTIPLY_BY ; 2 ; Signed Integer ; +; CLK3_MULTIPLY_BY ; 4 ; Signed Integer ; +; CLK2_MULTIPLY_BY ; 4 ; Signed Integer ; +; CLK1_MULTIPLY_BY ; 4 ; Signed Integer ; +; CLK0_MULTIPLY_BY ; 4 ; Signed Integer ; +; CLK9_DIVIDE_BY ; 0 ; Untyped ; +; CLK8_DIVIDE_BY ; 0 ; Untyped ; +; CLK7_DIVIDE_BY ; 0 ; Untyped ; +; CLK6_DIVIDE_BY ; 0 ; Untyped ; +; CLK5_DIVIDE_BY ; 1 ; Untyped ; +; CLK4_DIVIDE_BY ; 1 ; Signed Integer ; +; CLK3_DIVIDE_BY ; 1 ; Signed Integer ; +; CLK2_DIVIDE_BY ; 1 ; Signed Integer ; +; CLK1_DIVIDE_BY ; 1 ; Signed Integer ; +; CLK0_DIVIDE_BY ; 1 ; Signed Integer ; +; CLK9_PHASE_SHIFT ; 0 ; Untyped ; +; CLK8_PHASE_SHIFT ; 0 ; Untyped ; +; CLK7_PHASE_SHIFT ; 0 ; Untyped ; +; CLK6_PHASE_SHIFT ; 0 ; Untyped ; +; CLK5_PHASE_SHIFT ; 0 ; Untyped ; +; CLK4_PHASE_SHIFT ; 11364 ; Untyped ; +; CLK3_PHASE_SHIFT ; 2210 ; Untyped ; +; CLK2_PHASE_SHIFT ; 3788 ; Untyped ; +; CLK1_PHASE_SHIFT ; 0 ; Untyped ; +; CLK0_PHASE_SHIFT ; 5051 ; Untyped ; +; CLK5_TIME_DELAY ; 0 ; Untyped ; +; CLK4_TIME_DELAY ; 0 ; Untyped ; +; CLK3_TIME_DELAY ; 0 ; Untyped ; +; CLK2_TIME_DELAY ; 0 ; Untyped ; +; CLK1_TIME_DELAY ; 0 ; Untyped ; +; CLK0_TIME_DELAY ; 0 ; Untyped ; +; CLK9_DUTY_CYCLE ; 50 ; Untyped ; +; CLK8_DUTY_CYCLE ; 50 ; Untyped ; +; CLK7_DUTY_CYCLE ; 50 ; Untyped ; +; CLK6_DUTY_CYCLE ; 50 ; Untyped ; +; CLK5_DUTY_CYCLE ; 50 ; Untyped ; +; CLK4_DUTY_CYCLE ; 50 ; Signed Integer ; +; CLK3_DUTY_CYCLE ; 50 ; Signed Integer ; +; CLK2_DUTY_CYCLE ; 50 ; Signed Integer ; +; CLK1_DUTY_CYCLE ; 50 ; Signed Integer ; +; CLK0_DUTY_CYCLE ; 50 ; Signed Integer ; +; CLK9_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK8_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK7_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK6_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK5_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK4_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK3_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK2_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK1_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK0_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK9_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK8_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK7_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK6_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK5_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK4_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK3_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK2_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK1_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK0_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; LOCK_WINDOW_UI ; 0.05 ; Untyped ; +; LOCK_WINDOW_UI_BITS ; UNUSED ; Untyped ; +; VCO_RANGE_DETECTOR_LOW_BITS ; UNUSED ; Untyped ; +; VCO_RANGE_DETECTOR_HIGH_BITS ; UNUSED ; Untyped ; +; DPA_MULTIPLY_BY ; 0 ; Untyped ; +; DPA_DIVIDE_BY ; 1 ; Untyped ; +; DPA_DIVIDER ; 0 ; Untyped ; +; EXTCLK3_MULTIPLY_BY ; 1 ; Untyped ; +; EXTCLK2_MULTIPLY_BY ; 1 ; Untyped ; +; EXTCLK1_MULTIPLY_BY ; 1 ; Untyped ; +; EXTCLK0_MULTIPLY_BY ; 1 ; Untyped ; +; EXTCLK3_DIVIDE_BY ; 1 ; Untyped ; +; EXTCLK2_DIVIDE_BY ; 1 ; Untyped ; +; EXTCLK1_DIVIDE_BY ; 1 ; Untyped ; +; EXTCLK0_DIVIDE_BY ; 1 ; Untyped ; +; EXTCLK3_PHASE_SHIFT ; 0 ; Untyped ; +; EXTCLK2_PHASE_SHIFT ; 0 ; Untyped ; +; EXTCLK1_PHASE_SHIFT ; 0 ; Untyped ; +; EXTCLK0_PHASE_SHIFT ; 0 ; Untyped ; +; EXTCLK3_TIME_DELAY ; 0 ; Untyped ; +; EXTCLK2_TIME_DELAY ; 0 ; Untyped ; +; EXTCLK1_TIME_DELAY ; 0 ; Untyped ; +; EXTCLK0_TIME_DELAY ; 0 ; Untyped ; +; EXTCLK3_DUTY_CYCLE ; 50 ; Untyped ; +; EXTCLK2_DUTY_CYCLE ; 50 ; Untyped ; +; EXTCLK1_DUTY_CYCLE ; 50 ; Untyped ; +; EXTCLK0_DUTY_CYCLE ; 50 ; Untyped ; +; VCO_MULTIPLY_BY ; 0 ; Untyped ; +; VCO_DIVIDE_BY ; 0 ; Untyped ; +; SCLKOUT0_PHASE_SHIFT ; 0 ; Untyped ; +; SCLKOUT1_PHASE_SHIFT ; 0 ; Untyped ; +; VCO_MIN ; 0 ; Untyped ; +; VCO_MAX ; 0 ; Untyped ; +; VCO_CENTER ; 0 ; Untyped ; +; PFD_MIN ; 0 ; Untyped ; +; PFD_MAX ; 0 ; Untyped ; +; M_INITIAL ; 0 ; Untyped ; +; M ; 0 ; Untyped ; +; N ; 1 ; Untyped ; +; M2 ; 1 ; Untyped ; +; N2 ; 1 ; Untyped ; +; SS ; 1 ; Untyped ; +; C0_HIGH ; 0 ; Untyped ; +; C1_HIGH ; 0 ; Untyped ; +; C2_HIGH ; 0 ; Untyped ; +; C3_HIGH ; 0 ; Untyped ; +; C4_HIGH ; 0 ; Untyped ; +; C5_HIGH ; 0 ; Untyped ; +; C6_HIGH ; 0 ; Untyped ; +; C7_HIGH ; 0 ; Untyped ; +; C8_HIGH ; 0 ; Untyped ; +; C9_HIGH ; 0 ; Untyped ; +; C0_LOW ; 0 ; Untyped ; +; C1_LOW ; 0 ; Untyped ; +; C2_LOW ; 0 ; Untyped ; +; C3_LOW ; 0 ; Untyped ; +; C4_LOW ; 0 ; Untyped ; +; C5_LOW ; 0 ; Untyped ; +; C6_LOW ; 0 ; Untyped ; +; C7_LOW ; 0 ; Untyped ; +; C8_LOW ; 0 ; Untyped ; +; C9_LOW ; 0 ; Untyped ; +; C0_INITIAL ; 0 ; Untyped ; +; C1_INITIAL ; 0 ; Untyped ; +; C2_INITIAL ; 0 ; Untyped ; +; C3_INITIAL ; 0 ; Untyped ; +; C4_INITIAL ; 0 ; Untyped ; +; C5_INITIAL ; 0 ; Untyped ; +; C6_INITIAL ; 0 ; Untyped ; +; C7_INITIAL ; 0 ; Untyped ; +; C8_INITIAL ; 0 ; Untyped ; +; C9_INITIAL ; 0 ; Untyped ; +; C0_MODE ; BYPASS ; Untyped ; +; C1_MODE ; BYPASS ; Untyped ; +; C2_MODE ; BYPASS ; Untyped ; +; C3_MODE ; BYPASS ; Untyped ; +; C4_MODE ; BYPASS ; Untyped ; +; C5_MODE ; BYPASS ; Untyped ; +; C6_MODE ; BYPASS ; Untyped ; +; C7_MODE ; BYPASS ; Untyped ; +; C8_MODE ; BYPASS ; Untyped ; +; C9_MODE ; BYPASS ; Untyped ; +; C0_PH ; 0 ; Untyped ; +; C1_PH ; 0 ; Untyped ; +; C2_PH ; 0 ; Untyped ; +; C3_PH ; 0 ; Untyped ; +; C4_PH ; 0 ; Untyped ; +; C5_PH ; 0 ; Untyped ; +; C6_PH ; 0 ; Untyped ; +; C7_PH ; 0 ; Untyped ; +; C8_PH ; 0 ; Untyped ; +; C9_PH ; 0 ; Untyped ; +; L0_HIGH ; 1 ; Untyped ; +; L1_HIGH ; 1 ; Untyped ; +; G0_HIGH ; 1 ; Untyped ; +; G1_HIGH ; 1 ; Untyped ; +; G2_HIGH ; 1 ; Untyped ; +; G3_HIGH ; 1 ; Untyped ; +; E0_HIGH ; 1 ; Untyped ; +; E1_HIGH ; 1 ; Untyped ; +; E2_HIGH ; 1 ; Untyped ; +; E3_HIGH ; 1 ; Untyped ; +; L0_LOW ; 1 ; Untyped ; +; L1_LOW ; 1 ; Untyped ; +; G0_LOW ; 1 ; Untyped ; +; G1_LOW ; 1 ; Untyped ; +; G2_LOW ; 1 ; Untyped ; +; G3_LOW ; 1 ; Untyped ; +; E0_LOW ; 1 ; Untyped ; +; E1_LOW ; 1 ; Untyped ; +; E2_LOW ; 1 ; Untyped ; +; E3_LOW ; 1 ; Untyped ; +; L0_INITIAL ; 1 ; Untyped ; +; L1_INITIAL ; 1 ; Untyped ; +; G0_INITIAL ; 1 ; Untyped ; +; G1_INITIAL ; 1 ; Untyped ; +; G2_INITIAL ; 1 ; Untyped ; +; G3_INITIAL ; 1 ; Untyped ; +; E0_INITIAL ; 1 ; Untyped ; +; E1_INITIAL ; 1 ; Untyped ; +; E2_INITIAL ; 1 ; Untyped ; +; E3_INITIAL ; 1 ; Untyped ; +; L0_MODE ; BYPASS ; Untyped ; +; L1_MODE ; BYPASS ; Untyped ; +; G0_MODE ; BYPASS ; Untyped ; +; G1_MODE ; BYPASS ; Untyped ; +; G2_MODE ; BYPASS ; Untyped ; +; G3_MODE ; BYPASS ; Untyped ; +; E0_MODE ; BYPASS ; Untyped ; +; E1_MODE ; BYPASS ; Untyped ; +; E2_MODE ; BYPASS ; Untyped ; +; E3_MODE ; BYPASS ; Untyped ; +; L0_PH ; 0 ; Untyped ; +; L1_PH ; 0 ; Untyped ; +; G0_PH ; 0 ; Untyped ; +; G1_PH ; 0 ; Untyped ; +; G2_PH ; 0 ; Untyped ; +; G3_PH ; 0 ; Untyped ; +; E0_PH ; 0 ; Untyped ; +; E1_PH ; 0 ; Untyped ; +; E2_PH ; 0 ; Untyped ; +; E3_PH ; 0 ; Untyped ; +; M_PH ; 0 ; Untyped ; +; C1_USE_CASC_IN ; OFF ; Untyped ; +; C2_USE_CASC_IN ; OFF ; Untyped ; +; C3_USE_CASC_IN ; OFF ; Untyped ; +; C4_USE_CASC_IN ; OFF ; Untyped ; +; C5_USE_CASC_IN ; OFF ; Untyped ; +; C6_USE_CASC_IN ; OFF ; Untyped ; +; C7_USE_CASC_IN ; OFF ; Untyped ; +; C8_USE_CASC_IN ; OFF ; Untyped ; +; C9_USE_CASC_IN ; OFF ; Untyped ; +; CLK0_COUNTER ; G0 ; Untyped ; +; CLK1_COUNTER ; G0 ; Untyped ; +; CLK2_COUNTER ; G0 ; Untyped ; +; CLK3_COUNTER ; G0 ; Untyped ; +; CLK4_COUNTER ; G0 ; Untyped ; +; CLK5_COUNTER ; G0 ; Untyped ; +; CLK6_COUNTER ; E0 ; Untyped ; +; CLK7_COUNTER ; E1 ; Untyped ; +; CLK8_COUNTER ; E2 ; Untyped ; +; CLK9_COUNTER ; E3 ; Untyped ; +; L0_TIME_DELAY ; 0 ; Untyped ; +; L1_TIME_DELAY ; 0 ; Untyped ; +; G0_TIME_DELAY ; 0 ; Untyped ; +; G1_TIME_DELAY ; 0 ; Untyped ; +; G2_TIME_DELAY ; 0 ; Untyped ; +; G3_TIME_DELAY ; 0 ; Untyped ; +; E0_TIME_DELAY ; 0 ; Untyped ; +; E1_TIME_DELAY ; 0 ; Untyped ; +; E2_TIME_DELAY ; 0 ; Untyped ; +; E3_TIME_DELAY ; 0 ; Untyped ; +; M_TIME_DELAY ; 0 ; Untyped ; +; N_TIME_DELAY ; 0 ; Untyped ; +; EXTCLK3_COUNTER ; E3 ; Untyped ; +; EXTCLK2_COUNTER ; E2 ; Untyped ; +; EXTCLK1_COUNTER ; E1 ; Untyped ; +; EXTCLK0_COUNTER ; E0 ; Untyped ; +; ENABLE0_COUNTER ; L0 ; Untyped ; +; ENABLE1_COUNTER ; L0 ; Untyped ; +; CHARGE_PUMP_CURRENT ; 2 ; Untyped ; +; LOOP_FILTER_R ; 1.000000 ; Untyped ; +; LOOP_FILTER_C ; 5 ; Untyped ; +; CHARGE_PUMP_CURRENT_BITS ; 9999 ; Untyped ; +; LOOP_FILTER_R_BITS ; 9999 ; Untyped ; +; LOOP_FILTER_C_BITS ; 9999 ; Untyped ; +; VCO_POST_SCALE ; 0 ; Untyped ; +; CLK2_OUTPUT_FREQUENCY ; 0 ; Untyped ; +; CLK1_OUTPUT_FREQUENCY ; 0 ; Untyped ; +; CLK0_OUTPUT_FREQUENCY ; 0 ; Untyped ; +; INTENDED_DEVICE_FAMILY ; Cyclone III ; Untyped ; +; PORT_CLKENA0 ; PORT_UNUSED ; Untyped ; +; PORT_CLKENA1 ; PORT_UNUSED ; Untyped ; +; PORT_CLKENA2 ; PORT_UNUSED ; Untyped ; +; PORT_CLKENA3 ; PORT_UNUSED ; Untyped ; +; PORT_CLKENA4 ; PORT_UNUSED ; Untyped ; +; PORT_CLKENA5 ; PORT_UNUSED ; Untyped ; +; PORT_EXTCLKENA0 ; PORT_CONNECTIVITY ; Untyped ; +; PORT_EXTCLKENA1 ; PORT_CONNECTIVITY ; Untyped ; +; PORT_EXTCLKENA2 ; PORT_CONNECTIVITY ; Untyped ; +; PORT_EXTCLKENA3 ; PORT_CONNECTIVITY ; Untyped ; +; PORT_EXTCLK0 ; PORT_UNUSED ; Untyped ; +; PORT_EXTCLK1 ; PORT_UNUSED ; Untyped ; +; PORT_EXTCLK2 ; PORT_UNUSED ; Untyped ; +; PORT_EXTCLK3 ; PORT_UNUSED ; Untyped ; +; PORT_CLKBAD0 ; PORT_UNUSED ; Untyped ; +; PORT_CLKBAD1 ; PORT_UNUSED ; Untyped ; +; PORT_CLK0 ; PORT_USED ; Untyped ; +; PORT_CLK1 ; PORT_USED ; Untyped ; +; PORT_CLK2 ; PORT_USED ; Untyped ; +; PORT_CLK3 ; PORT_USED ; Untyped ; +; PORT_CLK4 ; PORT_USED ; Untyped ; +; PORT_CLK5 ; PORT_UNUSED ; Untyped ; +; PORT_CLK6 ; PORT_UNUSED ; Untyped ; +; PORT_CLK7 ; PORT_UNUSED ; Untyped ; +; PORT_CLK8 ; PORT_UNUSED ; Untyped ; +; PORT_CLK9 ; PORT_UNUSED ; Untyped ; +; PORT_SCANDATA ; PORT_UNUSED ; Untyped ; +; PORT_SCANDATAOUT ; PORT_UNUSED ; Untyped ; +; PORT_SCANDONE ; PORT_UNUSED ; Untyped ; +; PORT_SCLKOUT1 ; PORT_CONNECTIVITY ; Untyped ; +; PORT_SCLKOUT0 ; PORT_CONNECTIVITY ; Untyped ; +; PORT_ACTIVECLOCK ; PORT_UNUSED ; Untyped ; +; PORT_CLKLOSS ; PORT_UNUSED ; Untyped ; +; PORT_INCLK1 ; PORT_UNUSED ; Untyped ; +; PORT_INCLK0 ; PORT_USED ; Untyped ; +; PORT_FBIN ; PORT_UNUSED ; Untyped ; +; PORT_PLLENA ; PORT_UNUSED ; Untyped ; +; PORT_CLKSWITCH ; PORT_UNUSED ; Untyped ; +; PORT_ARESET ; PORT_UNUSED ; Untyped ; +; PORT_PFDENA ; PORT_UNUSED ; Untyped ; +; PORT_SCANCLK ; PORT_UNUSED ; Untyped ; +; PORT_SCANACLR ; PORT_UNUSED ; Untyped ; +; PORT_SCANREAD ; PORT_UNUSED ; Untyped ; +; PORT_SCANWRITE ; PORT_UNUSED ; Untyped ; +; PORT_ENABLE0 ; PORT_CONNECTIVITY ; Untyped ; +; PORT_ENABLE1 ; PORT_CONNECTIVITY ; Untyped ; +; PORT_LOCKED ; PORT_UNUSED ; Untyped ; +; PORT_CONFIGUPDATE ; PORT_UNUSED ; Untyped ; +; PORT_FBOUT ; PORT_CONNECTIVITY ; Untyped ; +; PORT_PHASEDONE ; PORT_UNUSED ; Untyped ; +; PORT_PHASESTEP ; PORT_UNUSED ; Untyped ; +; PORT_PHASEUPDOWN ; PORT_UNUSED ; Untyped ; +; PORT_SCANCLKENA ; PORT_UNUSED ; Untyped ; +; PORT_PHASECOUNTERSELECT ; PORT_UNUSED ; Untyped ; +; PORT_VCOOVERRANGE ; PORT_CONNECTIVITY ; Untyped ; +; PORT_VCOUNDERRANGE ; PORT_CONNECTIVITY ; Untyped ; +; M_TEST_SOURCE ; 5 ; Untyped ; +; C0_TEST_SOURCE ; 5 ; Untyped ; +; C1_TEST_SOURCE ; 5 ; Untyped ; +; C2_TEST_SOURCE ; 5 ; Untyped ; +; C3_TEST_SOURCE ; 5 ; Untyped ; +; C4_TEST_SOURCE ; 5 ; Untyped ; +; C5_TEST_SOURCE ; 5 ; Untyped ; +; C6_TEST_SOURCE ; 5 ; Untyped ; +; C7_TEST_SOURCE ; 5 ; Untyped ; +; C8_TEST_SOURCE ; 5 ; Untyped ; +; C9_TEST_SOURCE ; 5 ; Untyped ; +; CBXI_PARAMETER ; altpll_isv2 ; Untyped ; +; VCO_FREQUENCY_CONTROL ; AUTO ; Untyped ; +; VCO_PHASE_SHIFT_STEP ; 0 ; Untyped ; +; WIDTH_CLOCK ; 5 ; Signed Integer ; +; WIDTH_PHASECOUNTERSELECT ; 4 ; Untyped ; +; USING_FBMIMICBIDIR_PORT ; OFF ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; SCAN_CHAIN_MIF_FILE ; UNUSED ; Untyped ; +; SIM_GATE_LOCK_DEVICE_BEHAVIOR ; OFF ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++-------------------------------+--------------------+--------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++-------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: altpll4:inst22|altpll:altpll_component ; ++-------------------------------+-------------------+---------------------------------+ +; Parameter Name ; Value ; Type ; ++-------------------------------+-------------------+---------------------------------+ +; OPERATION_MODE ; NORMAL ; Untyped ; +; PLL_TYPE ; AUTO ; Untyped ; +; QUALIFY_CONF_DONE ; OFF ; Untyped ; +; COMPENSATE_CLOCK ; CLK0 ; Untyped ; +; SCAN_CHAIN ; LONG ; Untyped ; +; PRIMARY_CLOCK ; INCLK0 ; Untyped ; +; INCLK0_INPUT_FREQUENCY ; 20833 ; Untyped ; +; INCLK1_INPUT_FREQUENCY ; 0 ; Untyped ; +; GATE_LOCK_SIGNAL ; NO ; Untyped ; +; GATE_LOCK_COUNTER ; 0 ; Untyped ; +; LOCK_HIGH ; 1 ; Untyped ; +; LOCK_LOW ; 1 ; Untyped ; +; VALID_LOCK_MULTIPLIER ; 1 ; Untyped ; +; INVALID_LOCK_MULTIPLIER ; 5 ; Untyped ; +; SWITCH_OVER_ON_LOSSCLK ; OFF ; Untyped ; +; SWITCH_OVER_ON_GATED_LOCK ; OFF ; Untyped ; +; ENABLE_SWITCH_OVER_COUNTER ; OFF ; Untyped ; +; SKIP_VCO ; OFF ; Untyped ; +; SWITCH_OVER_COUNTER ; 0 ; Untyped ; +; SWITCH_OVER_TYPE ; AUTO ; Untyped ; +; FEEDBACK_SOURCE ; EXTCLK0 ; Untyped ; +; BANDWIDTH ; 0 ; Untyped ; +; BANDWIDTH_TYPE ; AUTO ; Untyped ; +; SPREAD_FREQUENCY ; 0 ; Untyped ; +; DOWN_SPREAD ; 0 ; Untyped ; +; SELF_RESET_ON_GATED_LOSS_LOCK ; OFF ; Untyped ; +; SELF_RESET_ON_LOSS_LOCK ; OFF ; Untyped ; +; CLK9_MULTIPLY_BY ; 0 ; Untyped ; +; CLK8_MULTIPLY_BY ; 0 ; Untyped ; +; CLK7_MULTIPLY_BY ; 0 ; Untyped ; +; CLK6_MULTIPLY_BY ; 0 ; Untyped ; +; CLK5_MULTIPLY_BY ; 1 ; Untyped ; +; CLK4_MULTIPLY_BY ; 1 ; Untyped ; +; CLK3_MULTIPLY_BY ; 1 ; Untyped ; +; CLK2_MULTIPLY_BY ; 1 ; Untyped ; +; CLK1_MULTIPLY_BY ; 1 ; Untyped ; +; CLK0_MULTIPLY_BY ; 2 ; Untyped ; +; CLK9_DIVIDE_BY ; 0 ; Untyped ; +; CLK8_DIVIDE_BY ; 0 ; Untyped ; +; CLK7_DIVIDE_BY ; 0 ; Untyped ; +; CLK6_DIVIDE_BY ; 0 ; Untyped ; +; CLK5_DIVIDE_BY ; 1 ; Untyped ; +; CLK4_DIVIDE_BY ; 1 ; Untyped ; +; CLK3_DIVIDE_BY ; 1 ; Untyped ; +; CLK2_DIVIDE_BY ; 1 ; Untyped ; +; CLK1_DIVIDE_BY ; 1 ; Untyped ; +; CLK0_DIVIDE_BY ; 1 ; Untyped ; +; CLK9_PHASE_SHIFT ; 0 ; Untyped ; +; CLK8_PHASE_SHIFT ; 0 ; Untyped ; +; CLK7_PHASE_SHIFT ; 0 ; Untyped ; +; CLK6_PHASE_SHIFT ; 0 ; Untyped ; +; CLK5_PHASE_SHIFT ; 0 ; Untyped ; +; CLK4_PHASE_SHIFT ; 0 ; Untyped ; +; CLK3_PHASE_SHIFT ; 0 ; Untyped ; +; CLK2_PHASE_SHIFT ; 0 ; Untyped ; +; CLK1_PHASE_SHIFT ; 0 ; Untyped ; +; CLK0_PHASE_SHIFT ; 0 ; Untyped ; +; CLK5_TIME_DELAY ; 0 ; Untyped ; +; CLK4_TIME_DELAY ; 0 ; Untyped ; +; CLK3_TIME_DELAY ; 0 ; Untyped ; +; CLK2_TIME_DELAY ; 0 ; Untyped ; +; CLK1_TIME_DELAY ; 0 ; Untyped ; +; CLK0_TIME_DELAY ; 0 ; Untyped ; +; CLK9_DUTY_CYCLE ; 50 ; Untyped ; +; CLK8_DUTY_CYCLE ; 50 ; Untyped ; +; CLK7_DUTY_CYCLE ; 50 ; Untyped ; +; CLK6_DUTY_CYCLE ; 50 ; Untyped ; +; CLK5_DUTY_CYCLE ; 50 ; Untyped ; +; CLK4_DUTY_CYCLE ; 50 ; Untyped ; +; CLK3_DUTY_CYCLE ; 50 ; Untyped ; +; CLK2_DUTY_CYCLE ; 50 ; Untyped ; +; CLK1_DUTY_CYCLE ; 50 ; Untyped ; +; CLK0_DUTY_CYCLE ; 50 ; Untyped ; +; CLK9_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK8_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK7_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK6_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK5_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK4_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK3_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK2_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK1_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK0_USE_EVEN_COUNTER_MODE ; OFF ; Untyped ; +; CLK9_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK8_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK7_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK6_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK5_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK4_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK3_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK2_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK1_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; CLK0_USE_EVEN_COUNTER_VALUE ; OFF ; Untyped ; +; LOCK_WINDOW_UI ; 0.05 ; Untyped ; +; LOCK_WINDOW_UI_BITS ; UNUSED ; Untyped ; +; VCO_RANGE_DETECTOR_LOW_BITS ; UNUSED ; Untyped ; +; VCO_RANGE_DETECTOR_HIGH_BITS ; UNUSED ; Untyped ; +; DPA_MULTIPLY_BY ; 0 ; Untyped ; +; DPA_DIVIDE_BY ; 1 ; Untyped ; +; DPA_DIVIDER ; 0 ; Untyped ; +; EXTCLK3_MULTIPLY_BY ; 1 ; Untyped ; +; EXTCLK2_MULTIPLY_BY ; 1 ; Untyped ; +; EXTCLK1_MULTIPLY_BY ; 1 ; Untyped ; +; EXTCLK0_MULTIPLY_BY ; 1 ; Untyped ; +; EXTCLK3_DIVIDE_BY ; 1 ; Untyped ; +; EXTCLK2_DIVIDE_BY ; 1 ; Untyped ; +; EXTCLK1_DIVIDE_BY ; 1 ; Untyped ; +; EXTCLK0_DIVIDE_BY ; 1 ; Untyped ; +; EXTCLK3_PHASE_SHIFT ; 0 ; Untyped ; +; EXTCLK2_PHASE_SHIFT ; 0 ; Untyped ; +; EXTCLK1_PHASE_SHIFT ; 0 ; Untyped ; +; EXTCLK0_PHASE_SHIFT ; 0 ; Untyped ; +; EXTCLK3_TIME_DELAY ; 0 ; Untyped ; +; EXTCLK2_TIME_DELAY ; 0 ; Untyped ; +; EXTCLK1_TIME_DELAY ; 0 ; Untyped ; +; EXTCLK0_TIME_DELAY ; 0 ; Untyped ; +; EXTCLK3_DUTY_CYCLE ; 50 ; Untyped ; +; EXTCLK2_DUTY_CYCLE ; 50 ; Untyped ; +; EXTCLK1_DUTY_CYCLE ; 50 ; Untyped ; +; EXTCLK0_DUTY_CYCLE ; 50 ; Untyped ; +; VCO_MULTIPLY_BY ; 0 ; Untyped ; +; VCO_DIVIDE_BY ; 0 ; Untyped ; +; SCLKOUT0_PHASE_SHIFT ; 0 ; Untyped ; +; SCLKOUT1_PHASE_SHIFT ; 0 ; Untyped ; +; VCO_MIN ; 0 ; Untyped ; +; VCO_MAX ; 0 ; Untyped ; +; VCO_CENTER ; 0 ; Untyped ; +; PFD_MIN ; 0 ; Untyped ; +; PFD_MAX ; 0 ; Untyped ; +; M_INITIAL ; 0 ; Untyped ; +; M ; 0 ; Untyped ; +; N ; 1 ; Untyped ; +; M2 ; 1 ; Untyped ; +; N2 ; 1 ; Untyped ; +; SS ; 1 ; Untyped ; +; C0_HIGH ; 0 ; Untyped ; +; C1_HIGH ; 0 ; Untyped ; +; C2_HIGH ; 0 ; Untyped ; +; C3_HIGH ; 0 ; Untyped ; +; C4_HIGH ; 0 ; Untyped ; +; C5_HIGH ; 0 ; Untyped ; +; C6_HIGH ; 0 ; Untyped ; +; C7_HIGH ; 0 ; Untyped ; +; C8_HIGH ; 0 ; Untyped ; +; C9_HIGH ; 0 ; Untyped ; +; C0_LOW ; 0 ; Untyped ; +; C1_LOW ; 0 ; Untyped ; +; C2_LOW ; 0 ; Untyped ; +; C3_LOW ; 0 ; Untyped ; +; C4_LOW ; 0 ; Untyped ; +; C5_LOW ; 0 ; Untyped ; +; C6_LOW ; 0 ; Untyped ; +; C7_LOW ; 0 ; Untyped ; +; C8_LOW ; 0 ; Untyped ; +; C9_LOW ; 0 ; Untyped ; +; C0_INITIAL ; 0 ; Untyped ; +; C1_INITIAL ; 0 ; Untyped ; +; C2_INITIAL ; 0 ; Untyped ; +; C3_INITIAL ; 0 ; Untyped ; +; C4_INITIAL ; 0 ; Untyped ; +; C5_INITIAL ; 0 ; Untyped ; +; C6_INITIAL ; 0 ; Untyped ; +; C7_INITIAL ; 0 ; Untyped ; +; C8_INITIAL ; 0 ; Untyped ; +; C9_INITIAL ; 0 ; Untyped ; +; C0_MODE ; BYPASS ; Untyped ; +; C1_MODE ; BYPASS ; Untyped ; +; C2_MODE ; BYPASS ; Untyped ; +; C3_MODE ; BYPASS ; Untyped ; +; C4_MODE ; BYPASS ; Untyped ; +; C5_MODE ; BYPASS ; Untyped ; +; C6_MODE ; BYPASS ; Untyped ; +; C7_MODE ; BYPASS ; Untyped ; +; C8_MODE ; BYPASS ; Untyped ; +; C9_MODE ; BYPASS ; Untyped ; +; C0_PH ; 0 ; Untyped ; +; C1_PH ; 0 ; Untyped ; +; C2_PH ; 0 ; Untyped ; +; C3_PH ; 0 ; Untyped ; +; C4_PH ; 0 ; Untyped ; +; C5_PH ; 0 ; Untyped ; +; C6_PH ; 0 ; Untyped ; +; C7_PH ; 0 ; Untyped ; +; C8_PH ; 0 ; Untyped ; +; C9_PH ; 0 ; Untyped ; +; L0_HIGH ; 1 ; Untyped ; +; L1_HIGH ; 1 ; Untyped ; +; G0_HIGH ; 1 ; Untyped ; +; G1_HIGH ; 1 ; Untyped ; +; G2_HIGH ; 1 ; Untyped ; +; G3_HIGH ; 1 ; Untyped ; +; E0_HIGH ; 1 ; Untyped ; +; E1_HIGH ; 1 ; Untyped ; +; E2_HIGH ; 1 ; Untyped ; +; E3_HIGH ; 1 ; Untyped ; +; L0_LOW ; 1 ; Untyped ; +; L1_LOW ; 1 ; Untyped ; +; G0_LOW ; 1 ; Untyped ; +; G1_LOW ; 1 ; Untyped ; +; G2_LOW ; 1 ; Untyped ; +; G3_LOW ; 1 ; Untyped ; +; E0_LOW ; 1 ; Untyped ; +; E1_LOW ; 1 ; Untyped ; +; E2_LOW ; 1 ; Untyped ; +; E3_LOW ; 1 ; Untyped ; +; L0_INITIAL ; 1 ; Untyped ; +; L1_INITIAL ; 1 ; Untyped ; +; G0_INITIAL ; 1 ; Untyped ; +; G1_INITIAL ; 1 ; Untyped ; +; G2_INITIAL ; 1 ; Untyped ; +; G3_INITIAL ; 1 ; Untyped ; +; E0_INITIAL ; 1 ; Untyped ; +; E1_INITIAL ; 1 ; Untyped ; +; E2_INITIAL ; 1 ; Untyped ; +; E3_INITIAL ; 1 ; Untyped ; +; L0_MODE ; BYPASS ; Untyped ; +; L1_MODE ; BYPASS ; Untyped ; +; G0_MODE ; BYPASS ; Untyped ; +; G1_MODE ; BYPASS ; Untyped ; +; G2_MODE ; BYPASS ; Untyped ; +; G3_MODE ; BYPASS ; Untyped ; +; E0_MODE ; BYPASS ; Untyped ; +; E1_MODE ; BYPASS ; Untyped ; +; E2_MODE ; BYPASS ; Untyped ; +; E3_MODE ; BYPASS ; Untyped ; +; L0_PH ; 0 ; Untyped ; +; L1_PH ; 0 ; Untyped ; +; G0_PH ; 0 ; Untyped ; +; G1_PH ; 0 ; Untyped ; +; G2_PH ; 0 ; Untyped ; +; G3_PH ; 0 ; Untyped ; +; E0_PH ; 0 ; Untyped ; +; E1_PH ; 0 ; Untyped ; +; E2_PH ; 0 ; Untyped ; +; E3_PH ; 0 ; Untyped ; +; M_PH ; 0 ; Untyped ; +; C1_USE_CASC_IN ; OFF ; Untyped ; +; C2_USE_CASC_IN ; OFF ; Untyped ; +; C3_USE_CASC_IN ; OFF ; Untyped ; +; C4_USE_CASC_IN ; OFF ; Untyped ; +; C5_USE_CASC_IN ; OFF ; Untyped ; +; C6_USE_CASC_IN ; OFF ; Untyped ; +; C7_USE_CASC_IN ; OFF ; Untyped ; +; C8_USE_CASC_IN ; OFF ; Untyped ; +; C9_USE_CASC_IN ; OFF ; Untyped ; +; CLK0_COUNTER ; G0 ; Untyped ; +; CLK1_COUNTER ; G0 ; Untyped ; +; CLK2_COUNTER ; G0 ; Untyped ; +; CLK3_COUNTER ; G0 ; Untyped ; +; CLK4_COUNTER ; G0 ; Untyped ; +; CLK5_COUNTER ; G0 ; Untyped ; +; CLK6_COUNTER ; E0 ; Untyped ; +; CLK7_COUNTER ; E1 ; Untyped ; +; CLK8_COUNTER ; E2 ; Untyped ; +; CLK9_COUNTER ; E3 ; Untyped ; +; L0_TIME_DELAY ; 0 ; Untyped ; +; L1_TIME_DELAY ; 0 ; Untyped ; +; G0_TIME_DELAY ; 0 ; Untyped ; +; G1_TIME_DELAY ; 0 ; Untyped ; +; G2_TIME_DELAY ; 0 ; Untyped ; +; G3_TIME_DELAY ; 0 ; Untyped ; +; E0_TIME_DELAY ; 0 ; Untyped ; +; E1_TIME_DELAY ; 0 ; Untyped ; +; E2_TIME_DELAY ; 0 ; Untyped ; +; E3_TIME_DELAY ; 0 ; Untyped ; +; M_TIME_DELAY ; 0 ; Untyped ; +; N_TIME_DELAY ; 0 ; Untyped ; +; EXTCLK3_COUNTER ; E3 ; Untyped ; +; EXTCLK2_COUNTER ; E2 ; Untyped ; +; EXTCLK1_COUNTER ; E1 ; Untyped ; +; EXTCLK0_COUNTER ; E0 ; Untyped ; +; ENABLE0_COUNTER ; L0 ; Untyped ; +; ENABLE1_COUNTER ; L0 ; Untyped ; +; CHARGE_PUMP_CURRENT ; 2 ; Untyped ; +; LOOP_FILTER_R ; 1.000000 ; Untyped ; +; LOOP_FILTER_C ; 5 ; Untyped ; +; CHARGE_PUMP_CURRENT_BITS ; 9999 ; Untyped ; +; LOOP_FILTER_R_BITS ; 9999 ; Untyped ; +; LOOP_FILTER_C_BITS ; 9999 ; Untyped ; +; VCO_POST_SCALE ; 0 ; Untyped ; +; CLK2_OUTPUT_FREQUENCY ; 0 ; Untyped ; +; CLK1_OUTPUT_FREQUENCY ; 0 ; Untyped ; +; CLK0_OUTPUT_FREQUENCY ; 0 ; Untyped ; +; INTENDED_DEVICE_FAMILY ; Cyclone III ; Untyped ; +; PORT_CLKENA0 ; PORT_UNUSED ; Untyped ; +; PORT_CLKENA1 ; PORT_UNUSED ; Untyped ; +; PORT_CLKENA2 ; PORT_UNUSED ; Untyped ; +; PORT_CLKENA3 ; PORT_UNUSED ; Untyped ; +; PORT_CLKENA4 ; PORT_UNUSED ; Untyped ; +; PORT_CLKENA5 ; PORT_UNUSED ; Untyped ; +; PORT_EXTCLKENA0 ; PORT_CONNECTIVITY ; Untyped ; +; PORT_EXTCLKENA1 ; PORT_CONNECTIVITY ; Untyped ; +; PORT_EXTCLKENA2 ; PORT_CONNECTIVITY ; Untyped ; +; PORT_EXTCLKENA3 ; PORT_CONNECTIVITY ; Untyped ; +; PORT_EXTCLK0 ; PORT_UNUSED ; Untyped ; +; PORT_EXTCLK1 ; PORT_UNUSED ; Untyped ; +; PORT_EXTCLK2 ; PORT_UNUSED ; Untyped ; +; PORT_EXTCLK3 ; PORT_UNUSED ; Untyped ; +; PORT_CLKBAD0 ; PORT_UNUSED ; Untyped ; +; PORT_CLKBAD1 ; PORT_UNUSED ; Untyped ; +; PORT_CLK0 ; PORT_USED ; Untyped ; +; PORT_CLK1 ; PORT_UNUSED ; Untyped ; +; PORT_CLK2 ; PORT_UNUSED ; Untyped ; +; PORT_CLK3 ; PORT_UNUSED ; Untyped ; +; PORT_CLK4 ; PORT_UNUSED ; Untyped ; +; PORT_CLK5 ; PORT_UNUSED ; Untyped ; +; PORT_CLK6 ; PORT_UNUSED ; Untyped ; +; PORT_CLK7 ; PORT_UNUSED ; Untyped ; +; PORT_CLK8 ; PORT_UNUSED ; Untyped ; +; PORT_CLK9 ; PORT_UNUSED ; Untyped ; +; PORT_SCANDATA ; PORT_USED ; Untyped ; +; PORT_SCANDATAOUT ; PORT_USED ; Untyped ; +; PORT_SCANDONE ; PORT_USED ; Untyped ; +; PORT_SCLKOUT1 ; PORT_CONNECTIVITY ; Untyped ; +; PORT_SCLKOUT0 ; PORT_CONNECTIVITY ; Untyped ; +; PORT_ACTIVECLOCK ; PORT_UNUSED ; Untyped ; +; PORT_CLKLOSS ; PORT_UNUSED ; Untyped ; +; PORT_INCLK1 ; PORT_UNUSED ; Untyped ; +; PORT_INCLK0 ; PORT_USED ; Untyped ; +; PORT_FBIN ; PORT_UNUSED ; Untyped ; +; PORT_PLLENA ; PORT_UNUSED ; Untyped ; +; PORT_CLKSWITCH ; PORT_UNUSED ; Untyped ; +; PORT_ARESET ; PORT_USED ; Untyped ; +; PORT_PFDENA ; PORT_UNUSED ; Untyped ; +; PORT_SCANCLK ; PORT_USED ; Untyped ; +; PORT_SCANACLR ; PORT_UNUSED ; Untyped ; +; PORT_SCANREAD ; PORT_UNUSED ; Untyped ; +; PORT_SCANWRITE ; PORT_UNUSED ; Untyped ; +; PORT_ENABLE0 ; PORT_CONNECTIVITY ; Untyped ; +; PORT_ENABLE1 ; PORT_CONNECTIVITY ; Untyped ; +; PORT_LOCKED ; PORT_USED ; Untyped ; +; PORT_CONFIGUPDATE ; PORT_USED ; Untyped ; +; PORT_FBOUT ; PORT_CONNECTIVITY ; Untyped ; +; PORT_PHASEDONE ; PORT_UNUSED ; Untyped ; +; PORT_PHASESTEP ; PORT_UNUSED ; Untyped ; +; PORT_PHASEUPDOWN ; PORT_UNUSED ; Untyped ; +; PORT_SCANCLKENA ; PORT_USED ; Untyped ; +; PORT_PHASECOUNTERSELECT ; PORT_UNUSED ; Untyped ; +; PORT_VCOOVERRANGE ; PORT_CONNECTIVITY ; Untyped ; +; PORT_VCOUNDERRANGE ; PORT_CONNECTIVITY ; Untyped ; +; M_TEST_SOURCE ; 5 ; Untyped ; +; C0_TEST_SOURCE ; 5 ; Untyped ; +; C1_TEST_SOURCE ; 5 ; Untyped ; +; C2_TEST_SOURCE ; 5 ; Untyped ; +; C3_TEST_SOURCE ; 5 ; Untyped ; +; C4_TEST_SOURCE ; 5 ; Untyped ; +; C5_TEST_SOURCE ; 5 ; Untyped ; +; C6_TEST_SOURCE ; 5 ; Untyped ; +; C7_TEST_SOURCE ; 5 ; Untyped ; +; C8_TEST_SOURCE ; 5 ; Untyped ; +; C9_TEST_SOURCE ; 5 ; Untyped ; +; CBXI_PARAMETER ; altpll_c6j2 ; Untyped ; +; VCO_FREQUENCY_CONTROL ; AUTO ; Untyped ; +; VCO_PHASE_SHIFT_STEP ; 0 ; Untyped ; +; WIDTH_CLOCK ; 5 ; Untyped ; +; WIDTH_PHASECOUNTERSELECT ; 4 ; Untyped ; +; USING_FBMIMICBIDIR_PORT ; OFF ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; SCAN_CHAIN_MIF_FILE ; altpll4.mif ; Untyped ; +; SIM_GATE_LOCK_DEVICE_BEHAVIOR ; OFF ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++-------------------------------+-------------------+---------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++-----------------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component ; ++-----------------+-------+---------------------------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++-----------------+-------+---------------------------------------------------------------------------------------------------------------+ +; WIDTH_BYTEENA_A ; 1 ; Untyped ; +; WIDTH_BYTEENA_B ; 1 ; Untyped ; ++-----------------+-------+---------------------------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|altsyncram:altsyncram4 ; ++------------------------------------+----------------------+----------------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------------------+----------------------+----------------------------------------------------------------------------------------------------+ +; BYTE_SIZE_BLOCK ; 8 ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; WIDTH_BYTEENA ; 1 ; Untyped ; +; OPERATION_MODE ; SINGLE_PORT ; Untyped ; +; WIDTH_A ; 1 ; Untyped ; +; WIDTHAD_A ; 8 ; Untyped ; +; NUMWORDS_A ; 144 ; Untyped ; +; OUTDATA_REG_A ; UNREGISTERED ; Untyped ; +; ADDRESS_ACLR_A ; NONE ; Untyped ; +; OUTDATA_ACLR_A ; NONE ; Untyped ; +; WRCONTROL_ACLR_A ; NONE ; Untyped ; +; INDATA_ACLR_A ; NONE ; Untyped ; +; BYTEENA_ACLR_A ; NONE ; Untyped ; +; WIDTH_B ; 1 ; Untyped ; +; WIDTHAD_B ; 1 ; Untyped ; +; NUMWORDS_B ; 1 ; Untyped ; +; INDATA_REG_B ; CLOCK1 ; Untyped ; +; WRCONTROL_WRADDRESS_REG_B ; CLOCK1 ; Untyped ; +; RDCONTROL_REG_B ; CLOCK1 ; Untyped ; +; ADDRESS_REG_B ; CLOCK1 ; Untyped ; +; OUTDATA_REG_B ; UNREGISTERED ; Untyped ; +; BYTEENA_REG_B ; CLOCK1 ; Untyped ; +; INDATA_ACLR_B ; NONE ; Untyped ; +; WRCONTROL_ACLR_B ; NONE ; Untyped ; +; ADDRESS_ACLR_B ; NONE ; Untyped ; +; OUTDATA_ACLR_B ; NONE ; Untyped ; +; RDCONTROL_ACLR_B ; NONE ; Untyped ; +; BYTEENA_ACLR_B ; NONE ; Untyped ; +; WIDTH_BYTEENA_A ; 1 ; Untyped ; +; WIDTH_BYTEENA_B ; 1 ; Untyped ; +; RAM_BLOCK_TYPE ; AUTO ; Untyped ; +; BYTE_SIZE ; 8 ; Untyped ; +; READ_DURING_WRITE_MODE_MIXED_PORTS ; DONT_CARE ; Untyped ; +; READ_DURING_WRITE_MODE_PORT_A ; NEW_DATA_NO_NBE_READ ; Untyped ; +; READ_DURING_WRITE_MODE_PORT_B ; NEW_DATA_NO_NBE_READ ; Untyped ; +; INIT_FILE ; UNUSED ; Untyped ; +; INIT_FILE_LAYOUT ; PORT_A ; Untyped ; +; MAXIMUM_DEPTH ; 0 ; Untyped ; +; CLOCK_ENABLE_INPUT_A ; NORMAL ; Untyped ; +; CLOCK_ENABLE_INPUT_B ; NORMAL ; Untyped ; +; CLOCK_ENABLE_OUTPUT_A ; NORMAL ; Untyped ; +; CLOCK_ENABLE_OUTPUT_B ; NORMAL ; Untyped ; +; CLOCK_ENABLE_CORE_A ; USE_INPUT_CLKEN ; Untyped ; +; CLOCK_ENABLE_CORE_B ; USE_INPUT_CLKEN ; Untyped ; +; ENABLE_ECC ; FALSE ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; altsyncram_46r ; Untyped ; ++------------------------------------+----------------------+----------------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_add_sub:add_sub5 ; ++------------------------+-------------+-----------------------------------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+-----------------------------------------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 9 ; Untyped ; +; LPM_REPRESENTATION ; SIGNED ; Untyped ; +; LPM_DIRECTION ; DEFAULT ; Untyped ; +; ONE_INPUT_IS_CONSTANT ; NO ; Untyped ; +; LPM_PIPELINE ; 0 ; Untyped ; +; MAXIMIZE_SPEED ; 5 ; Untyped ; +; REGISTERED_AT_END ; 0 ; Untyped ; +; OPTIMIZE_FOR_SPEED ; 9 ; Untyped ; +; USE_CS_BUFFERS ; 1 ; Untyped ; +; CARRY_CHAIN ; MANUAL ; Untyped ; +; CARRY_CHAIN_LENGTH ; 48 ; CARRY_CHAIN_LENGTH ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; USE_WYS ; OFF ; Untyped ; +; STYLE ; FAST ; Untyped ; +; CBXI_PARAMETER ; add_sub_hpa ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+-----------------------------------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_add_sub:add_sub6 ; ++------------------------+-------------+-----------------------------------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+-----------------------------------------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 8 ; Untyped ; +; LPM_REPRESENTATION ; SIGNED ; Untyped ; +; LPM_DIRECTION ; DEFAULT ; Untyped ; +; ONE_INPUT_IS_CONSTANT ; NO ; Untyped ; +; LPM_PIPELINE ; 0 ; Untyped ; +; MAXIMIZE_SPEED ; 5 ; Untyped ; +; REGISTERED_AT_END ; 0 ; Untyped ; +; OPTIMIZE_FOR_SPEED ; 9 ; Untyped ; +; USE_CS_BUFFERS ; 1 ; Untyped ; +; CARRY_CHAIN ; MANUAL ; Untyped ; +; CARRY_CHAIN_LENGTH ; 48 ; CARRY_CHAIN_LENGTH ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; USE_WYS ; OFF ; Untyped ; +; STYLE ; FAST ; Untyped ; +; CBXI_PARAMETER ; add_sub_k8a ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+-----------------------------------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_compare:cmpr7 ; ++------------------------+-------------+--------------------------------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+--------------------------------------------------------------------------------------------------------------------+ +; lpm_width ; 8 ; Untyped ; +; LPM_REPRESENTATION ; UNSIGNED ; Untyped ; +; LPM_PIPELINE ; 0 ; Untyped ; +; CHAIN_SIZE ; 8 ; Untyped ; +; ONE_INPUT_IS_CONSTANT ; NO ; Untyped ; +; CARRY_CHAIN ; MANUAL ; Untyped ; +; CASCADE_CHAIN ; MANUAL ; Untyped ; +; CARRY_CHAIN_LENGTH ; 48 ; CARRY_CHAIN_LENGTH ; +; CASCADE_CHAIN_LENGTH ; 2 ; CASCADE_CHAIN_LENGTH ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; cmpr_tnd ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+--------------------------------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr1 ; ++------------------------+-------------+--------------------------------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+--------------------------------------------------------------------------------------------------------------------+ +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; LPM_WIDTH ; 8 ; Untyped ; +; LPM_DIRECTION ; DOWN ; Untyped ; +; LPM_MODULUS ; 144 ; Untyped ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; LPM_PORT_UPDOWN ; PORT_UNUSED ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CARRY_CHAIN ; MANUAL ; Untyped ; +; CARRY_CHAIN_LENGTH ; 48 ; CARRY_CHAIN_LENGTH ; +; NOT_GATE_PUSH_BACK ; ON ; NOT_GATE_PUSH_BACK ; +; CARRY_CNT_EN ; SMART ; Untyped ; +; LABWIDE_SCLR ; ON ; Untyped ; +; USE_NEW_VERSION ; TRUE ; Untyped ; +; CBXI_PARAMETER ; cntr_30l ; Untyped ; ++------------------------+-------------+--------------------------------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr12 ; ++------------------------+-------------+---------------------------------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+---------------------------------------------------------------------------------------------------------------------+ +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; LPM_WIDTH ; 8 ; Untyped ; +; LPM_DIRECTION ; DOWN ; Untyped ; +; LPM_MODULUS ; 144 ; Untyped ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; LPM_PORT_UPDOWN ; PORT_UNUSED ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CARRY_CHAIN ; MANUAL ; Untyped ; +; CARRY_CHAIN_LENGTH ; 48 ; CARRY_CHAIN_LENGTH ; +; NOT_GATE_PUSH_BACK ; ON ; NOT_GATE_PUSH_BACK ; +; CARRY_CNT_EN ; SMART ; Untyped ; +; LABWIDE_SCLR ; ON ; Untyped ; +; USE_NEW_VERSION ; TRUE ; Untyped ; +; CBXI_PARAMETER ; cntr_30l ; Untyped ; ++------------------------+-------------+---------------------------------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr13 ; ++------------------------+-------------+---------------------------------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+---------------------------------------------------------------------------------------------------------------------+ +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; LPM_WIDTH ; 6 ; Untyped ; +; LPM_DIRECTION ; DOWN ; Untyped ; +; LPM_MODULUS ; 0 ; Untyped ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; LPM_PORT_UPDOWN ; PORT_UNUSED ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CARRY_CHAIN ; MANUAL ; Untyped ; +; CARRY_CHAIN_LENGTH ; 48 ; CARRY_CHAIN_LENGTH ; +; NOT_GATE_PUSH_BACK ; ON ; NOT_GATE_PUSH_BACK ; +; CARRY_CNT_EN ; SMART ; Untyped ; +; LABWIDE_SCLR ; ON ; Untyped ; +; USE_NEW_VERSION ; TRUE ; Untyped ; +; CBXI_PARAMETER ; cntr_qij ; Untyped ; ++------------------------+-------------+---------------------------------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr14 ; ++------------------------+-------------+---------------------------------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+---------------------------------------------------------------------------------------------------------------------+ +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; LPM_WIDTH ; 5 ; Untyped ; +; LPM_DIRECTION ; DOWN ; Untyped ; +; LPM_MODULUS ; 0 ; Untyped ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; LPM_PORT_UPDOWN ; PORT_UNUSED ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CARRY_CHAIN ; MANUAL ; Untyped ; +; CARRY_CHAIN_LENGTH ; 48 ; CARRY_CHAIN_LENGTH ; +; NOT_GATE_PUSH_BACK ; ON ; NOT_GATE_PUSH_BACK ; +; CARRY_CNT_EN ; SMART ; Untyped ; +; LABWIDE_SCLR ; ON ; Untyped ; +; USE_NEW_VERSION ; TRUE ; Untyped ; +; CBXI_PARAMETER ; cntr_pij ; Untyped ; ++------------------------+-------------+---------------------------------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr15 ; ++------------------------+-------------+---------------------------------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+---------------------------------------------------------------------------------------------------------------------+ +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; LPM_WIDTH ; 8 ; Untyped ; +; LPM_DIRECTION ; DOWN ; Untyped ; +; LPM_MODULUS ; 144 ; Untyped ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; LPM_PORT_UPDOWN ; PORT_UNUSED ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CARRY_CHAIN ; MANUAL ; Untyped ; +; CARRY_CHAIN_LENGTH ; 48 ; CARRY_CHAIN_LENGTH ; +; NOT_GATE_PUSH_BACK ; ON ; NOT_GATE_PUSH_BACK ; +; CARRY_CNT_EN ; SMART ; Untyped ; +; LABWIDE_SCLR ; ON ; Untyped ; +; USE_NEW_VERSION ; TRUE ; Untyped ; +; CBXI_PARAMETER ; cntr_30l ; Untyped ; ++------------------------+-------------+---------------------------------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr2 ; ++------------------------+-------------+--------------------------------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+--------------------------------------------------------------------------------------------------------------------+ +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; LPM_WIDTH ; 8 ; Untyped ; +; LPM_DIRECTION ; UP ; Untyped ; +; LPM_MODULUS ; 0 ; Untyped ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; LPM_PORT_UPDOWN ; PORT_UNUSED ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CARRY_CHAIN ; MANUAL ; Untyped ; +; CARRY_CHAIN_LENGTH ; 48 ; CARRY_CHAIN_LENGTH ; +; NOT_GATE_PUSH_BACK ; ON ; NOT_GATE_PUSH_BACK ; +; CARRY_CNT_EN ; SMART ; Untyped ; +; LABWIDE_SCLR ; ON ; Untyped ; +; USE_NEW_VERSION ; TRUE ; Untyped ; +; CBXI_PARAMETER ; cntr_9cj ; Untyped ; ++------------------------+-------------+--------------------------------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr3 ; ++------------------------+-------------+--------------------------------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+--------------------------------------------------------------------------------------------------------------------+ +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; LPM_WIDTH ; 5 ; Untyped ; +; LPM_DIRECTION ; DOWN ; Untyped ; +; LPM_MODULUS ; 0 ; Untyped ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; LPM_PORT_UPDOWN ; PORT_UNUSED ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CARRY_CHAIN ; MANUAL ; Untyped ; +; CARRY_CHAIN_LENGTH ; 48 ; CARRY_CHAIN_LENGTH ; +; NOT_GATE_PUSH_BACK ; ON ; NOT_GATE_PUSH_BACK ; +; CARRY_CNT_EN ; SMART ; Untyped ; +; LABWIDE_SCLR ; ON ; Untyped ; +; USE_NEW_VERSION ; TRUE ; Untyped ; +; CBXI_PARAMETER ; cntr_pij ; Untyped ; ++------------------------+-------------+--------------------------------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_decode:decode11 ; ++------------------------+-------------+----------------------------------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+----------------------------------------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 3 ; Untyped ; +; LPM_DECODES ; 5 ; Untyped ; +; LPM_PIPELINE ; 0 ; Untyped ; +; CASCADE_CHAIN ; MANUAL ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; decode_2af ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+----------------------------------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: lpm_ff0:inst1|lpm_ff:lpm_ff_component ; ++------------------------+-------------+---------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+---------------------------------------------+ +; LPM_WIDTH ; 32 ; Signed Integer ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; LPM_FFTYPE ; DFF ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; NOTHING ; Untyped ; +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; ++------------------------+-------------+---------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++-----------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: interrupt_handler:nobody|lpm_bustri_BYT:$00000|lpm_bustri:lpm_bustri_component ; ++----------------+-------+----------------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++----------------+-------+----------------------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 8 ; Signed Integer ; ++----------------+-------+----------------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++-----------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: interrupt_handler:nobody|lpm_bustri_BYT:$00002|lpm_bustri:lpm_bustri_component ; ++----------------+-------+----------------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++----------------+-------+----------------------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 8 ; Signed Integer ; ++----------------+-------+----------------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++-----------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: interrupt_handler:nobody|lpm_bustri_BYT:$00004|lpm_bustri:lpm_bustri_component ; ++----------------+-------+----------------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++----------------+-------+----------------------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 8 ; Signed Integer ; ++----------------+-------+----------------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++-----------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: interrupt_handler:nobody|lpm_bustri_BYT:$00006|lpm_bustri:lpm_bustri_component ; ++----------------+-------+----------------------------------------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++----------------+-------+----------------------------------------------------------------------------------------------------+ +; LPM_WIDTH ; 8 ; Signed Integer ; ++----------------+-------+----------------------------------------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++----------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: lpm_counter0:inst18|lpm_counter:lpm_counter_component ; ++------------------------+-------------+-------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+-------------+-------------------------------------------------------------+ +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; LPM_WIDTH ; 18 ; Signed Integer ; +; LPM_DIRECTION ; UP ; Untyped ; +; LPM_MODULUS ; 0 ; Untyped ; +; LPM_AVALUE ; UNUSED ; Untyped ; +; LPM_SVALUE ; UNUSED ; Untyped ; +; LPM_PORT_UPDOWN ; PORT_UNUSED ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CARRY_CHAIN ; MANUAL ; Untyped ; +; CARRY_CHAIN_LENGTH ; 48 ; CARRY_CHAIN_LENGTH ; +; NOT_GATE_PUSH_BACK ; ON ; NOT_GATE_PUSH_BACK ; +; CARRY_CNT_EN ; SMART ; Untyped ; +; LABWIDE_SCLR ; ON ; Untyped ; +; USE_NEW_VERSION ; TRUE ; Untyped ; +; CBXI_PARAMETER ; cntr_mph ; Untyped ; ++------------------------+-------------+-------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++---------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: altddio_out3:inst5|altddio_out:altddio_out_component ; ++------------------------+--------------+-----------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+--------------+-----------------------------------------------------------+ +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; WIDTH ; 1 ; Signed Integer ; +; POWER_UP_HIGH ; OFF ; Untyped ; +; OE_REG ; UNUSED ; Untyped ; +; extend_oe_disable ; UNUSED ; Untyped ; +; INTENDED_DEVICE_FAMILY ; Cyclone III ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; ddio_out_31f ; Untyped ; ++------------------------+--------------+-----------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++---------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: altddio_out3:inst6|altddio_out:altddio_out_component ; ++------------------------+--------------+-----------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+--------------+-----------------------------------------------------------+ +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; WIDTH ; 1 ; Signed Integer ; +; POWER_UP_HIGH ; OFF ; Untyped ; +; OE_REG ; UNUSED ; Untyped ; +; extend_oe_disable ; UNUSED ; Untyped ; +; INTENDED_DEVICE_FAMILY ; Cyclone III ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; ddio_out_31f ; Untyped ; ++------------------------+--------------+-----------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++---------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: altddio_out3:inst8|altddio_out:altddio_out_component ; ++------------------------+--------------+-----------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+--------------+-----------------------------------------------------------+ +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; WIDTH ; 1 ; Signed Integer ; +; POWER_UP_HIGH ; OFF ; Untyped ; +; OE_REG ; UNUSED ; Untyped ; +; extend_oe_disable ; UNUSED ; Untyped ; +; INTENDED_DEVICE_FAMILY ; Cyclone III ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; ddio_out_31f ; Untyped ; ++------------------------+--------------+-----------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++---------------------------------------------------------------------------------------------------+ +; Parameter Settings for User Entity Instance: altddio_out3:inst9|altddio_out:altddio_out_component ; ++------------------------+--------------+-----------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------+--------------+-----------------------------------------------------------+ +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; WIDTH ; 1 ; Signed Integer ; +; POWER_UP_HIGH ; OFF ; Untyped ; +; OE_REG ; UNUSED ; Untyped ; +; extend_oe_disable ; UNUSED ; Untyped ; +; INTENDED_DEVICE_FAMILY ; Cyclone III ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CBXI_PARAMETER ; ddio_out_31f ; Untyped ; ++------------------------+--------------+-----------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for Inferred Entity Instance: Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_mult:op_14 ; ++------------------------------------------------+-------------+---------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------------------------------+-------------+---------------------------------------------------------------------+ +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; LPM_WIDTHA ; 12 ; Untyped ; +; LPM_WIDTHB ; 6 ; Untyped ; +; LPM_WIDTHP ; 18 ; Untyped ; +; LPM_WIDTHR ; 18 ; Untyped ; +; LPM_WIDTHS ; 1 ; Untyped ; +; LPM_REPRESENTATION ; UNSIGNED ; Untyped ; +; LPM_PIPELINE ; 0 ; Untyped ; +; LATENCY ; 0 ; Untyped ; +; INPUT_A_IS_CONSTANT ; NO ; Untyped ; +; INPUT_B_IS_CONSTANT ; NO ; Untyped ; +; USE_EAB ; OFF ; Untyped ; +; MAXIMIZE_SPEED ; 5 ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CARRY_CHAIN ; MANUAL ; Untyped ; +; APEX20K_TECHNOLOGY_MAPPER ; LUT ; TECH_MAPPER_APEX20K ; +; DEDICATED_MULTIPLIER_CIRCUITRY ; AUTO ; Untyped ; +; DEDICATED_MULTIPLIER_MIN_INPUT_WIDTH_FOR_AUTO ; 0 ; Untyped ; +; DEDICATED_MULTIPLIER_MIN_OUTPUT_WIDTH_FOR_AUTO ; 0 ; Untyped ; +; CBXI_PARAMETER ; mult_cat ; Untyped ; +; INPUT_A_FIXED_VALUE ; Bx ; Untyped ; +; INPUT_B_FIXED_VALUE ; Bx ; Untyped ; +; USE_AHDL_IMPLEMENTATION ; OFF ; Untyped ; ++------------------------------------------------+-------------+---------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++-----------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for Inferred Entity Instance: Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_mult:op_6 ; ++------------------------------------------------+-------------+--------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------------------------------+-------------+--------------------------------------------------------------------+ +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; LPM_WIDTHA ; 12 ; Untyped ; +; LPM_WIDTHB ; 5 ; Untyped ; +; LPM_WIDTHP ; 17 ; Untyped ; +; LPM_WIDTHR ; 17 ; Untyped ; +; LPM_WIDTHS ; 1 ; Untyped ; +; LPM_REPRESENTATION ; UNSIGNED ; Untyped ; +; LPM_PIPELINE ; 0 ; Untyped ; +; LATENCY ; 0 ; Untyped ; +; INPUT_A_IS_CONSTANT ; NO ; Untyped ; +; INPUT_B_IS_CONSTANT ; NO ; Untyped ; +; USE_EAB ; OFF ; Untyped ; +; MAXIMIZE_SPEED ; 5 ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CARRY_CHAIN ; MANUAL ; Untyped ; +; APEX20K_TECHNOLOGY_MAPPER ; LUT ; TECH_MAPPER_APEX20K ; +; DEDICATED_MULTIPLIER_CIRCUITRY ; AUTO ; Untyped ; +; DEDICATED_MULTIPLIER_MIN_INPUT_WIDTH_FOR_AUTO ; 0 ; Untyped ; +; DEDICATED_MULTIPLIER_MIN_OUTPUT_WIDTH_FOR_AUTO ; 0 ; Untyped ; +; CBXI_PARAMETER ; mult_aat ; Untyped ; +; INPUT_A_FIXED_VALUE ; Bx ; Untyped ; +; INPUT_B_FIXED_VALUE ; Bx ; Untyped ; +; USE_AHDL_IMPLEMENTATION ; OFF ; Untyped ; ++------------------------------------------------+-------------+--------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------------------------------------------------------------------+ +; Parameter Settings for Inferred Entity Instance: Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_mult:op_12 ; ++------------------------------------------------+-------------+---------------------------------------------------------------------+ +; Parameter Name ; Value ; Type ; ++------------------------------------------------+-------------+---------------------------------------------------------------------+ +; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; +; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; +; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; +; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; +; LPM_WIDTHA ; 12 ; Untyped ; +; LPM_WIDTHB ; 5 ; Untyped ; +; LPM_WIDTHP ; 17 ; Untyped ; +; LPM_WIDTHR ; 17 ; Untyped ; +; LPM_WIDTHS ; 1 ; Untyped ; +; LPM_REPRESENTATION ; UNSIGNED ; Untyped ; +; LPM_PIPELINE ; 0 ; Untyped ; +; LATENCY ; 0 ; Untyped ; +; INPUT_A_IS_CONSTANT ; NO ; Untyped ; +; INPUT_B_IS_CONSTANT ; NO ; Untyped ; +; USE_EAB ; OFF ; Untyped ; +; MAXIMIZE_SPEED ; 5 ; Untyped ; +; DEVICE_FAMILY ; Cyclone III ; Untyped ; +; CARRY_CHAIN ; MANUAL ; Untyped ; +; APEX20K_TECHNOLOGY_MAPPER ; LUT ; TECH_MAPPER_APEX20K ; +; DEDICATED_MULTIPLIER_CIRCUITRY ; AUTO ; Untyped ; +; DEDICATED_MULTIPLIER_MIN_INPUT_WIDTH_FOR_AUTO ; 0 ; Untyped ; +; DEDICATED_MULTIPLIER_MIN_OUTPUT_WIDTH_FOR_AUTO ; 0 ; Untyped ; +; CBXI_PARAMETER ; mult_aat ; Untyped ; +; INPUT_A_FIXED_VALUE ; Bx ; Untyped ; +; INPUT_B_FIXED_VALUE ; Bx ; Untyped ; +; USE_AHDL_IMPLEMENTATION ; OFF ; Untyped ; ++------------------------------------------------+-------------+---------------------------------------------------------------------+ +Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". + + ++------------------------------------------------------------------------+ +; altpll Parameter Settings by Entity Instance ; ++-------------------------------+----------------------------------------+ +; Name ; Value ; ++-------------------------------+----------------------------------------+ +; Number of entity instances ; 4 ; +; Entity Instance ; altpll1:inst|altpll:altpll_component ; +; -- OPERATION_MODE ; SOURCE_SYNCHRONOUS ; +; -- PLL_TYPE ; AUTO ; +; -- PRIMARY_CLOCK ; INCLK0 ; +; -- INCLK0_INPUT_FREQUENCY ; 30303 ; +; -- INCLK1_INPUT_FREQUENCY ; 0 ; +; -- VCO_MULTIPLY_BY ; 0 ; +; -- VCO_DIVIDE_BY ; 0 ; +; Entity Instance ; altpll3:inst13|altpll:altpll_component ; +; -- OPERATION_MODE ; SOURCE_SYNCHRONOUS ; +; -- PLL_TYPE ; AUTO ; +; -- PRIMARY_CLOCK ; INCLK0 ; +; -- INCLK0_INPUT_FREQUENCY ; 30303 ; +; -- INCLK1_INPUT_FREQUENCY ; 0 ; +; -- VCO_MULTIPLY_BY ; 0 ; +; -- VCO_DIVIDE_BY ; 0 ; +; Entity Instance ; altpll2:inst12|altpll:altpll_component ; +; -- OPERATION_MODE ; SOURCE_SYNCHRONOUS ; +; -- PLL_TYPE ; AUTO ; +; -- PRIMARY_CLOCK ; INCLK0 ; +; -- INCLK0_INPUT_FREQUENCY ; 30303 ; +; -- INCLK1_INPUT_FREQUENCY ; 0 ; +; -- VCO_MULTIPLY_BY ; 0 ; +; -- VCO_DIVIDE_BY ; 0 ; +; Entity Instance ; altpll4:inst22|altpll:altpll_component ; +; -- OPERATION_MODE ; NORMAL ; +; -- PLL_TYPE ; AUTO ; +; -- PRIMARY_CLOCK ; INCLK0 ; +; -- INCLK0_INPUT_FREQUENCY ; 20833 ; +; -- INCLK1_INPUT_FREQUENCY ; 0 ; +; -- VCO_MULTIPLY_BY ; 0 ; +; -- VCO_DIVIDE_BY ; 0 ; ++-------------------------------+----------------------------------------+ + + ++--------------------------------------------------------------------------------------------------------------+ +; lpm_shiftreg Parameter Settings by Entity Instance ; ++----------------------------+---------------------------------------------------------------------------------+ +; Name ; Value ; ++----------------------------+---------------------------------------------------------------------------------+ +; Number of entity instances ; 11 ; +; Entity Instance ; Video:Fredi_Aschwanden|lpm_shiftreg6:inst89|lpm_shiftreg:lpm_shiftreg_component ; +; -- LPM_WIDTH ; 5 ; +; -- LPM_DIRECTION ; RIGHT ; +; Entity Instance ; Video:Fredi_Aschwanden|lpm_shiftreg4:inst26|lpm_shiftreg:lpm_shiftreg_component ; +; -- LPM_WIDTH ; 5 ; +; -- LPM_DIRECTION ; RIGHT ; +; Entity Instance ; Video:Fredi_Aschwanden|lpm_shiftreg6:inst92|lpm_shiftreg:lpm_shiftreg_component ; +; -- LPM_WIDTH ; 5 ; +; -- LPM_DIRECTION ; RIGHT ; +; Entity Instance ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component ; +; -- LPM_WIDTH ; 16 ; +; -- LPM_DIRECTION ; LEFT ; +; Entity Instance ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr4|lpm_shiftreg:lpm_shiftreg_component ; +; -- LPM_WIDTH ; 16 ; +; -- LPM_DIRECTION ; LEFT ; +; Entity Instance ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr5|lpm_shiftreg:lpm_shiftreg_component ; +; -- LPM_WIDTH ; 16 ; +; -- LPM_DIRECTION ; LEFT ; +; Entity Instance ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr6|lpm_shiftreg:lpm_shiftreg_component ; +; -- LPM_WIDTH ; 16 ; +; -- LPM_DIRECTION ; LEFT ; +; Entity Instance ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr7|lpm_shiftreg:lpm_shiftreg_component ; +; -- LPM_WIDTH ; 16 ; +; -- LPM_DIRECTION ; LEFT ; +; Entity Instance ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr1|lpm_shiftreg:lpm_shiftreg_component ; +; -- LPM_WIDTH ; 16 ; +; -- LPM_DIRECTION ; LEFT ; +; Entity Instance ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component ; +; -- LPM_WIDTH ; 16 ; +; -- LPM_DIRECTION ; LEFT ; +; Entity Instance ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr3|lpm_shiftreg:lpm_shiftreg_component ; +; -- LPM_WIDTH ; 16 ; +; -- LPM_DIRECTION ; LEFT ; ++----------------------------+---------------------------------------------------------------------------------+ + + ++-----------------------------------------------------------------------------------------------+ +; dcfifo Parameter Settings by Entity Instance ; ++----------------------------+------------------------------------------------------------------+ +; Name ; Value ; ++----------------------------+------------------------------------------------------------------+ +; Number of entity instances ; 1 ; +; Entity Instance ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component ; +; -- FIFO Type ; Dual Clock ; +; -- LPM_WIDTH ; 128 ; +; -- LPM_NUMWORDS ; 512 ; +; -- LPM_SHOWAHEAD ; OFF ; +; -- USE_EAB ; ON ; ++----------------------------+------------------------------------------------------------------+ + + ++-----------------------------------------------------------------------------------------------+ +; scfifo Parameter Settings by Entity Instance ; ++----------------------------+------------------------------------------------------------------+ +; Name ; Value ; ++----------------------------+------------------------------------------------------------------+ +; Number of entity instances ; 1 ; +; Entity Instance ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component ; +; -- FIFO Type ; Single Clock ; +; -- lpm_width ; 128 ; +; -- LPM_NUMWORDS ; 128 ; +; -- LPM_SHOWAHEAD ; ON ; +; -- USE_EAB ; ON ; ++----------------------------+------------------------------------------------------------------+ + + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; altsyncram Parameter Settings by Entity Instance ; ++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +; Name ; Value ; ++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +; Number of entity instances ; 10 ; +; Entity Instance ; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component ; +; -- OPERATION_MODE ; BIDIR_DUAL_PORT ; +; -- WIDTH_A ; 6 ; +; -- NUMWORDS_A ; 256 ; +; -- OUTDATA_REG_A ; CLOCK0 ; +; -- WIDTH_B ; 6 ; +; -- NUMWORDS_B ; 256 ; +; -- ADDRESS_REG_B ; CLOCK1 ; +; -- OUTDATA_REG_B ; CLOCK1 ; +; -- RAM_BLOCK_TYPE ; AUTO ; +; -- READ_DURING_WRITE_MODE_MIXED_PORTS ; DONT_CARE ; +; Entity Instance ; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_GREEN|altsyncram:altsyncram_component ; +; -- OPERATION_MODE ; BIDIR_DUAL_PORT ; +; -- WIDTH_A ; 6 ; +; -- NUMWORDS_A ; 256 ; +; -- OUTDATA_REG_A ; CLOCK0 ; +; -- WIDTH_B ; 6 ; +; -- NUMWORDS_B ; 256 ; +; -- ADDRESS_REG_B ; CLOCK1 ; +; -- OUTDATA_REG_B ; CLOCK1 ; +; -- RAM_BLOCK_TYPE ; AUTO ; +; -- READ_DURING_WRITE_MODE_MIXED_PORTS ; DONT_CARE ; +; Entity Instance ; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_BLUE|altsyncram:altsyncram_component ; +; -- OPERATION_MODE ; BIDIR_DUAL_PORT ; +; -- WIDTH_A ; 6 ; +; -- NUMWORDS_A ; 256 ; +; -- OUTDATA_REG_A ; CLOCK0 ; +; -- WIDTH_B ; 6 ; +; -- NUMWORDS_B ; 256 ; +; -- ADDRESS_REG_B ; CLOCK1 ; +; -- OUTDATA_REG_B ; CLOCK1 ; +; -- RAM_BLOCK_TYPE ; AUTO ; +; -- READ_DURING_WRITE_MODE_MIXED_PORTS ; DONT_CARE ; +; Entity Instance ; Video:Fredi_Aschwanden|altdpram0:ST_CLUT_RED|altsyncram:altsyncram_component ; +; -- OPERATION_MODE ; BIDIR_DUAL_PORT ; +; -- WIDTH_A ; 3 ; +; -- NUMWORDS_A ; 16 ; +; -- OUTDATA_REG_A ; CLOCK0 ; +; -- WIDTH_B ; 3 ; +; -- NUMWORDS_B ; 16 ; +; -- ADDRESS_REG_B ; CLOCK1 ; +; -- OUTDATA_REG_B ; CLOCK1 ; +; -- RAM_BLOCK_TYPE ; AUTO ; +; -- READ_DURING_WRITE_MODE_MIXED_PORTS ; DONT_CARE ; +; Entity Instance ; Video:Fredi_Aschwanden|altdpram0:ST_CLUT_GREEN|altsyncram:altsyncram_component ; +; -- OPERATION_MODE ; BIDIR_DUAL_PORT ; +; -- WIDTH_A ; 3 ; +; -- NUMWORDS_A ; 16 ; +; -- OUTDATA_REG_A ; CLOCK0 ; +; -- WIDTH_B ; 3 ; +; -- NUMWORDS_B ; 16 ; +; -- ADDRESS_REG_B ; CLOCK1 ; +; -- OUTDATA_REG_B ; CLOCK1 ; +; -- RAM_BLOCK_TYPE ; AUTO ; +; -- READ_DURING_WRITE_MODE_MIXED_PORTS ; DONT_CARE ; +; Entity Instance ; Video:Fredi_Aschwanden|altdpram0:ST_CLUT_BLUE|altsyncram:altsyncram_component ; +; -- OPERATION_MODE ; BIDIR_DUAL_PORT ; +; -- WIDTH_A ; 3 ; +; -- NUMWORDS_A ; 16 ; +; -- OUTDATA_REG_A ; CLOCK0 ; +; -- WIDTH_B ; 3 ; +; -- NUMWORDS_B ; 16 ; +; -- ADDRESS_REG_B ; CLOCK1 ; +; -- OUTDATA_REG_B ; CLOCK1 ; +; -- RAM_BLOCK_TYPE ; AUTO ; +; -- READ_DURING_WRITE_MODE_MIXED_PORTS ; DONT_CARE ; +; Entity Instance ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component ; +; -- OPERATION_MODE ; BIDIR_DUAL_PORT ; +; -- WIDTH_A ; 8 ; +; -- NUMWORDS_A ; 256 ; +; -- OUTDATA_REG_A ; CLOCK0 ; +; -- WIDTH_B ; 8 ; +; -- NUMWORDS_B ; 256 ; +; -- ADDRESS_REG_B ; CLOCK1 ; +; -- OUTDATA_REG_B ; CLOCK1 ; +; -- RAM_BLOCK_TYPE ; AUTO ; +; -- READ_DURING_WRITE_MODE_MIXED_PORTS ; DONT_CARE ; +; Entity Instance ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component ; +; -- OPERATION_MODE ; BIDIR_DUAL_PORT ; +; -- WIDTH_A ; 8 ; +; -- NUMWORDS_A ; 256 ; +; -- OUTDATA_REG_A ; CLOCK0 ; +; -- WIDTH_B ; 8 ; +; -- NUMWORDS_B ; 256 ; +; -- ADDRESS_REG_B ; CLOCK1 ; +; -- OUTDATA_REG_B ; CLOCK1 ; +; -- RAM_BLOCK_TYPE ; AUTO ; +; -- READ_DURING_WRITE_MODE_MIXED_PORTS ; DONT_CARE ; +; Entity Instance ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM|altsyncram:altsyncram_component ; +; -- OPERATION_MODE ; BIDIR_DUAL_PORT ; +; -- WIDTH_A ; 8 ; +; -- NUMWORDS_A ; 256 ; +; -- OUTDATA_REG_A ; CLOCK0 ; +; -- WIDTH_B ; 8 ; +; -- NUMWORDS_B ; 256 ; +; -- ADDRESS_REG_B ; CLOCK1 ; +; -- OUTDATA_REG_B ; CLOCK1 ; +; -- RAM_BLOCK_TYPE ; AUTO ; +; -- READ_DURING_WRITE_MODE_MIXED_PORTS ; DONT_CARE ; +; Entity Instance ; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|altsyncram:altsyncram4 ; +; -- OPERATION_MODE ; SINGLE_PORT ; +; -- WIDTH_A ; 1 ; +; -- NUMWORDS_A ; 144 ; +; -- OUTDATA_REG_A ; UNREGISTERED ; +; -- WIDTH_B ; 1 ; +; -- NUMWORDS_B ; 1 ; +; -- ADDRESS_REG_B ; CLOCK1 ; +; -- OUTDATA_REG_B ; UNREGISTERED ; +; -- RAM_BLOCK_TYPE ; AUTO ; +; -- READ_DURING_WRITE_MODE_MIXED_PORTS ; DONT_CARE ; ++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ + + ++---------------------------------------------------------------------------------------------------------------------------+ +; lpm_mult Parameter Settings by Entity Instance ; ++---------------------------------------+-----------------------------------------------------------------------------------+ +; Name ; Value ; ++---------------------------------------+-----------------------------------------------------------------------------------+ +; Number of entity instances ; 3 ; +; Entity Instance ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_mult:op_14 ; +; -- LPM_WIDTHA ; 12 ; +; -- LPM_WIDTHB ; 6 ; +; -- LPM_WIDTHP ; 18 ; +; -- LPM_REPRESENTATION ; UNSIGNED ; +; -- INPUT_A_IS_CONSTANT ; NO ; +; -- INPUT_B_IS_CONSTANT ; NO ; +; -- USE_EAB ; OFF ; +; -- DEDICATED_MULTIPLIER_CIRCUITRY ; AUTO ; +; -- INPUT_A_FIXED_VALUE ; Bx ; +; -- INPUT_B_FIXED_VALUE ; Bx ; +; Entity Instance ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_mult:op_6 ; +; -- LPM_WIDTHA ; 12 ; +; -- LPM_WIDTHB ; 5 ; +; -- LPM_WIDTHP ; 17 ; +; -- LPM_REPRESENTATION ; UNSIGNED ; +; -- INPUT_A_IS_CONSTANT ; NO ; +; -- INPUT_B_IS_CONSTANT ; NO ; +; -- USE_EAB ; OFF ; +; -- DEDICATED_MULTIPLIER_CIRCUITRY ; AUTO ; +; -- INPUT_A_FIXED_VALUE ; Bx ; +; -- INPUT_B_FIXED_VALUE ; Bx ; +; Entity Instance ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_mult:op_12 ; +; -- LPM_WIDTHA ; 12 ; +; -- LPM_WIDTHB ; 5 ; +; -- LPM_WIDTHP ; 17 ; +; -- LPM_REPRESENTATION ; UNSIGNED ; +; -- INPUT_A_IS_CONSTANT ; NO ; +; -- INPUT_B_IS_CONSTANT ; NO ; +; -- USE_EAB ; OFF ; +; -- DEDICATED_MULTIPLIER_CIRCUITRY ; AUTO ; +; -- INPUT_A_FIXED_VALUE ; Bx ; +; -- INPUT_B_FIXED_VALUE ; Bx ; ++---------------------------------------+-----------------------------------------------------------------------------------+ + + ++-----------------------------------------------------------------------------------------------------------------------+ +; Port Connectivity Checks: "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND" ; ++-------------+--------+----------+-------------------------------------------------------------------------------------+ +; Port ; Type ; Severity ; Details ; ++-------------+--------+----------+-------------------------------------------------------------------------------------+ +; seln ; Input ; Info ; Stuck at VCC ; +; bc2 ; Input ; Info ; Stuck at VCC ; +; a9n ; Input ; Info ; Stuck at GND ; +; a8 ; Input ; Info ; Stuck at VCC ; +; da_en ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; +; io_a_in ; Input ; Info ; Stuck at GND ; +; io_a_out[2] ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; +; io_a_en ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; +; io_b_en ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; ++-------------+--------+----------+-------------------------------------------------------------------------------------+ + + ++--------------------------------------------------------------------------------------------------------------------+ +; Port Connectivity Checks: "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP" ; ++----------+--------+----------+-------------------------------------------------------------------------------------+ +; Port ; Type ; Severity ; Details ; ++----------+--------+----------+-------------------------------------------------------------------------------------+ +; data_en ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; +; gpip_out ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; +; gpip_en ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; +; iein ; Input ; Info ; Stuck at GND ; +; ieon ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; +; tai ; Input ; Info ; Stuck at GND ; +; tao ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; +; tbo ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; +; tco ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; +; so_en ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; +; rrn ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; +; trn ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; ++----------+--------+----------+-------------------------------------------------------------------------------------+ + + ++------------------------------------------------------------------------------------------------------------------------+ +; Port Connectivity Checks: "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI" ; ++---------+--------+----------+------------------------------------------------------------------------------------------+ +; Port ; Type ; Severity ; Details ; ++---------+--------+----------+------------------------------------------------------------------------------------------+ +; cs2n ; Input ; Info ; Stuck at GND ; +; data_en ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; +; ctsn ; Input ; Info ; Stuck at GND ; +; dcdn ; Input ; Info ; Stuck at GND ; +; rtsn ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; ++---------+--------+----------+------------------------------------------------------------------------------------------+ + + ++----------------------------------------------------------------------------------------------------------------------------+ +; Port Connectivity Checks: "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD" ; ++---------+--------+----------+----------------------------------------------------------------------------------------------+ +; Port ; Type ; Severity ; Details ; ++---------+--------+----------+----------------------------------------------------------------------------------------------+ +; cs1 ; Input ; Info ; Stuck at VCC ; +; data_en ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; +; ctsn ; Input ; Info ; Stuck at GND ; +; dcdn ; Input ; Info ; Stuck at GND ; +; rtsn ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; ++---------+--------+----------+----------------------------------------------------------------------------------------------+ + + ++----------------------------------------------------------------------------------------------------------------------------------------------+ +; Port Connectivity Checks: "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS" ; ++------------+--------+----------+-------------------------------------------------------------------------------------------------------------+ +; Port ; Type ; Severity ; Details ; ++------------+--------+----------+-------------------------------------------------------------------------------------------------------------+ +; icr_out[7] ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; +; icr_out[5] ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; ++------------+--------+----------+-------------------------------------------------------------------------------------------------------------+ + + ++--------------------------------------------------------------------------------------------------------------------+ +; Port Connectivity Checks: "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI" ; ++----------+--------+----------+-------------------------------------------------------------------------------------+ +; Port ; Type ; Severity ; Details ; ++----------+--------+----------+-------------------------------------------------------------------------------------+ +; data_en ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; +; csn ; Input ; Info ; Stuck at VCC ; +; eopn ; Input ; Info ; Stuck at VCC ; +; ready ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; +; ack_inn ; Input ; Info ; Stuck at VCC ; +; ack_en ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; +; atn_inn ; Input ; Info ; Stuck at VCC ; +; atn_en ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; +; req_outn ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; +; req_en ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; +; ion_out ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; +; io_en ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; +; cdn_out ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; +; cd_en ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; +; msg_outn ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; +; msg_en ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; ++----------+--------+----------+-------------------------------------------------------------------------------------+ + + ++-------------------------------------------------------------------------------------------------------------------+ +; Port Connectivity Checks: "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC" ; ++---------+--------+----------+-------------------------------------------------------------------------------------+ +; Port ; Type ; Severity ; Details ; ++---------+--------+----------+-------------------------------------------------------------------------------------+ +; data_en ; Output ; Info ; Connected to dangling logic. Logic that only feeds a dangling port will be removed. ; +; dden ; Input ; Info ; Stuck at GND ; ++---------+--------+----------+-------------------------------------------------------------------------------------+ + + ++-------------------------------+ +; Analysis & Synthesis Messages ; ++-------------------------------+ +Info: ******************************************************************* +Info: Running Quartus II Analysis & Synthesis + Info: Version 9.1 Build 350 03/24/2010 Service Pack 2 SJ Web Edition + Info: Processing started: Wed Dec 15 02:20:37 2010 +Info: Command: quartus_map --read_settings_files=on --write_settings_files=off firebeei1 -c firebee1 +Info: Found 2 design units, including 1 entities, in source file falconio_sdcard_ide_cf/wf5380/wf5380_control.vhd + Info: Found design unit 1: WF5380_CONTROL-BEHAVIOUR + Info: Found entity 1: WF5380_CONTROL +Info: Found 1 design units, including 0 entities, in source file falconio_sdcard_ide_cf/wf5380/wf5380_pkg.vhd + Info: Found design unit 1: WF5380_PKG +Info: Found 2 design units, including 1 entities, in source file falconio_sdcard_ide_cf/wf5380/wf5380_registers.vhd + Info: Found design unit 1: WF5380_REGISTERS-BEHAVIOUR + Info: Found entity 1: WF5380_REGISTERS +Info: Found 2 design units, including 1 entities, in source file falconio_sdcard_ide_cf/wf5380/wf5380_soc_top.vhd + Info: Found design unit 1: WF5380_TOP_SOC-STRUCTURE + Info: Found entity 1: WF5380_TOP_SOC +Info: Found 2 design units, including 1 entities, in source file falconio_sdcard_ide_cf/wf5380/wf5380_top.vhd + Info: Found design unit 1: WF5380_TOP-STRUCTURE + Info: Found entity 1: WF5380_TOP +Info: Found 2 design units, including 1 entities, in source file falconio_sdcard_ide_cf/wf_fdc1772_ip/wf1772ip_am_detector.vhd + Info: Found design unit 1: WF1772IP_AM_DETECTOR-BEHAVIOR + Info: Found entity 1: WF1772IP_AM_DETECTOR +Info: Found 2 design units, including 1 entities, in source file falconio_sdcard_ide_cf/dcfifo0.vhd + Info: Found design unit 1: dcfifo0-SYN + Info: Found entity 1: dcfifo0 +Info: Found 1 design units, including 1 entities, in source file video/ddr_ctr.tdf + Info: Found entity 1: DDR_CTR +Info: Found 2 design units, including 1 entities, in source file video/lpm_bustri0.vhd + Info: Found design unit 1: lpm_bustri0-SYN + Info: Found entity 1: lpm_bustri0 +Info: Found 2 design units, including 1 entities, in source file falconio_sdcard_ide_cf/wf_fdc1772_ip/wf1772ip_control.vhd + Info: Found design unit 1: WF1772IP_CONTROL-BEHAVIOR + Info: Found entity 1: WF1772IP_CONTROL +Info: Found 2 design units, including 1 entities, in source file falconio_sdcard_ide_cf/wf_fdc1772_ip/wf1772ip_crc_logic.vhd + Info: Found design unit 1: WF1772IP_CRC_LOGIC-BEHAVIOR + Info: Found entity 1: WF1772IP_CRC_LOGIC +Info: Found 2 design units, including 1 entities, in source file falconio_sdcard_ide_cf/wf_fdc1772_ip/wf1772ip_digital_pll.vhd + Info: Found design unit 1: WF1772IP_DIGITAL_PLL-BEHAVIOR + Info: Found entity 1: WF1772IP_DIGITAL_PLL +Info: Found 1 design units, including 0 entities, in source file falconio_sdcard_ide_cf/wf_fdc1772_ip/wf1772ip_pkg.vhd + Info: Found design unit 1: WF1772IP_PKG +Info: Found 2 design units, including 1 entities, in source file falconio_sdcard_ide_cf/wf_fdc1772_ip/wf1772ip_registers.vhd + Info: Found design unit 1: WF1772IP_REGISTERS-BEHAVIOR + Info: Found entity 1: WF1772IP_REGISTERS +Info: Found 2 design units, including 1 entities, in source file falconio_sdcard_ide_cf/wf_fdc1772_ip/wf1772ip_top.vhd + Info: Found design unit 1: WF1772IP_TOP-STRUCTURE + Info: Found entity 1: WF1772IP_TOP +Info: Found 2 design units, including 1 entities, in source file falconio_sdcard_ide_cf/wf_fdc1772_ip/wf1772ip_top_soc.vhd + Info: Found design unit 1: WF1772IP_TOP_SOC-STRUCTURE + Info: Found entity 1: WF1772IP_TOP_SOC +Info: Found 2 design units, including 1 entities, in source file falconio_sdcard_ide_cf/wf_fdc1772_ip/wf1772ip_transceiver.vhd + Info: Found design unit 1: WF1772IP_TRANSCEIVER-BEHAVIOR + Info: Found entity 1: WF1772IP_TRANSCEIVER +Info: Found 2 design units, including 1 entities, in source file video/lpm_bustri5.vhd + Info: Found design unit 1: lpm_bustri5-SYN + Info: Found entity 1: lpm_bustri5 +Info: Found 2 design units, including 1 entities, in source file falconio_sdcard_ide_cf/wf_uart6850_ip/wf6850ip_ctrl_status.vhd + Info: Found design unit 1: WF6850IP_CTRL_STATUS-BEHAVIOR + Info: Found entity 1: WF6850IP_CTRL_STATUS +Info: Found 2 design units, including 1 entities, in source file video/lpm_bustri7.vhd + Info: Found design unit 1: lpm_bustri7-SYN + Info: Found entity 1: lpm_bustri7 +Info: Found 2 design units, including 1 entities, in source file falconio_sdcard_ide_cf/wf_uart6850_ip/wf6850ip_receive.vhd + Info: Found design unit 1: WF6850IP_RECEIVE-BEHAVIOR + Info: Found entity 1: WF6850IP_RECEIVE +Info: Found 2 design units, including 1 entities, in source file falconio_sdcard_ide_cf/wf_uart6850_ip/wf6850ip_top.vhd + Info: Found design unit 1: WF6850IP_TOP-STRUCTURE + Info: Found entity 1: WF6850IP_TOP +Info: Found 2 design units, including 1 entities, in source file falconio_sdcard_ide_cf/wf_uart6850_ip/wf6850ip_top_soc.vhd + Info: Found design unit 1: WF6850IP_TOP_SOC-STRUCTURE + Info: Found entity 1: WF6850IP_TOP_SOC +Info: Found 2 design units, including 1 entities, in source file falconio_sdcard_ide_cf/wf_uart6850_ip/wf6850ip_transmit.vhd + Info: Found design unit 1: WF6850IP_TRANSMIT-BEHAVIOR + Info: Found entity 1: WF6850IP_TRANSMIT +Info: Found 2 design units, including 1 entities, in source file falconio_sdcard_ide_cf/wf_mfp68901_ip/wf68901ip_gpio.vhd + Info: Found design unit 1: WF68901IP_GPIO-BEHAVIOR + Info: Found entity 1: WF68901IP_GPIO +Info: Found 2 design units, including 1 entities, in source file falconio_sdcard_ide_cf/wf_mfp68901_ip/wf68901ip_interrupts.vhd + Info: Found design unit 1: WF68901IP_INTERRUPTS-BEHAVIOR + Info: Found entity 1: WF68901IP_INTERRUPTS +Info: Found 1 design units, including 0 entities, in source file falconio_sdcard_ide_cf/wf_mfp68901_ip/wf68901ip_pkg.vhd + Info: Found design unit 1: WF68901IP_PKG +Info: Found 2 design units, including 1 entities, in source file falconio_sdcard_ide_cf/wf_mfp68901_ip/wf68901ip_timers.vhd + Info: Found design unit 1: WF68901IP_TIMERS-BEHAVIOR + Info: Found entity 1: WF68901IP_TIMERS +Info: Found 2 design units, including 1 entities, in source file falconio_sdcard_ide_cf/wf_mfp68901_ip/wf68901ip_top.vhd + Info: Found design unit 1: WF68901IP_TOP-STRUCTURE + Info: Found entity 1: WF68901IP_TOP +Info: Found 2 design units, including 1 entities, in source file falconio_sdcard_ide_cf/wf_mfp68901_ip/wf68901ip_top_soc.vhd + Info: Found design unit 1: WF68901IP_TOP_SOC-STRUCTURE + Info: Found entity 1: WF68901IP_TOP_SOC +Info: Found 2 design units, including 1 entities, in source file falconio_sdcard_ide_cf/wf_mfp68901_ip/wf68901ip_usart_ctrl.vhd + Info: Found design unit 1: WF68901IP_USART_CTRL-BEHAVIOR + Info: Found entity 1: WF68901IP_USART_CTRL +Info: Found 2 design units, including 1 entities, in source file falconio_sdcard_ide_cf/wf_mfp68901_ip/wf68901ip_usart_rx.vhd + Info: Found design unit 1: WF68901IP_USART_RX-BEHAVIOR + Info: Found entity 1: WF68901IP_USART_RX +Info: Found 2 design units, including 1 entities, in source file falconio_sdcard_ide_cf/wf_mfp68901_ip/wf68901ip_usart_top.vhd + Info: Found design unit 1: WF68901IP_USART_TOP-STRUCTURE + Info: Found entity 1: WF68901IP_USART_TOP +Info: Found 2 design units, including 1 entities, in source file falconio_sdcard_ide_cf/wf_mfp68901_ip/wf68901ip_usart_tx.vhd + Info: Found design unit 1: WF68901IP_USART_TX-BEHAVIOR + Info: Found entity 1: WF68901IP_USART_TX +Info: Found 1 design units, including 0 entities, in source file falconio_sdcard_ide_cf/wf_snd2149_ip/wf2149ip_pkg.vhd + Info: Found design unit 1: WF2149IP_PKG +Info: Found 2 design units, including 1 entities, in source file falconio_sdcard_ide_cf/wf_snd2149_ip/wf2149ip_top.vhd + Info: Found design unit 1: WF2149IP_TOP-STRUCTURE + Info: Found entity 1: WF2149IP_TOP +Info: Found 2 design units, including 1 entities, in source file falconio_sdcard_ide_cf/wf_snd2149_ip/wf2149ip_top_soc.vhd + Info: Found design unit 1: WF2149IP_TOP_SOC-STRUCTURE + Info: Found entity 1: WF2149IP_TOP_SOC +Info: Found 2 design units, including 1 entities, in source file falconio_sdcard_ide_cf/wf_snd2149_ip/wf2149ip_wave.vhd + Info: Found design unit 1: WF2149IP_WAVE-BEHAVIOR + Info: Found entity 1: WF2149IP_WAVE +Info: Found 2 design units, including 1 entities, in source file lpm_latch0.vhd + Info: Found design unit 1: lpm_latch0-SYN + Info: Found entity 1: lpm_latch0 +Info: Found 2 design units, including 1 entities, in source file altpll1.vhd + Info: Found design unit 1: altpll1-SYN + Info: Found entity 1: altpll1 +Info: Found 2 design units, including 1 entities, in source file video/lpm_fifodz.vhd + Info: Found design unit 1: lpm_fifodz-SYN + Info: Found entity 1: lpm_fifoDZ +Info: Found 2 design units, including 1 entities, in source file altpll2.vhd + Info: Found design unit 1: altpll2-SYN + Info: Found entity 1: altpll2 +Info: Found 2 design units, including 1 entities, in source file altpll3.vhd + Info: Found design unit 1: altpll3-SYN + Info: Found entity 1: altpll3 +Info: Found 2 design units, including 1 entities, in source file video/altdpram0.vhd + Info: Found design unit 1: altdpram0-SYN + Info: Found entity 1: altdpram0 +Info: Found 2 design units, including 1 entities, in source file video/lpm_muxdz2.vhd + Info: Found design unit 1: lpm_muxdz2-SYN + Info: Found entity 1: lpm_muxDZ2 +Info: Found 2 design units, including 1 entities, in source file video/lpm_muxdz.vhd + Info: Found design unit 1: lpm_muxdz-SYN + Info: Found entity 1: lpm_muxDZ +Info: Found 2 design units, including 1 entities, in source file video/lpm_bustri3.vhd + Info: Found design unit 1: lpm_bustri3-SYN + Info: Found entity 1: lpm_bustri3 +Info: Found 2 design units, including 1 entities, in source file video/lpm_ff0.vhd + Info: Found design unit 1: lpm_ff0-SYN + Info: Found entity 1: lpm_ff0 +Info: Found 2 design units, including 1 entities, in source file video/lpm_ff1.vhd + Info: Found design unit 1: lpm_ff1-SYN + Info: Found entity 1: lpm_ff1 +Info: Found 2 design units, including 1 entities, in source file video/lpm_ff3.vhd + Info: Found design unit 1: lpm_ff3-SYN + Info: Found entity 1: lpm_ff3 +Info: Found 1 design units, including 1 entities, in source file video/video_mod_mux_clutctr.tdf + Info: Found entity 1: VIDEO_MOD_MUX_CLUTCTR +Info: Found 2 design units, including 1 entities, in source file video/lpm_ff2.vhd + Info: Found design unit 1: lpm_ff2-SYN + Info: Found entity 1: lpm_ff2 +Info: Found 2 design units, including 1 entities, in source file video/lpm_fifo_dc0.vhd + Info: Found design unit 1: lpm_fifo_dc0-SYN + Info: Found entity 1: lpm_fifo_dc0 +Info: Found 1 design units, including 1 entities, in source file video/video.bdf + Info: Found entity 1: Video +Info: Found 1 design units, including 1 entities, in source file firebee1.bdf + Info: Found entity 1: firebee1 +Info: Found 2 design units, including 1 entities, in source file altpll0.vhd + Info: Found design unit 1: altpll0-SYN + Info: Found entity 1: altpll0 +Info: Found 2 design units, including 1 entities, in source file lpm_counter0.vhd + Info: Found design unit 1: lpm_counter0-SYN + Info: Found entity 1: lpm_counter0 +Info: Found 2 design units, including 1 entities, in source file falconio_sdcard_ide_cf/falconio_sdcard_ide_cf.vhd + Info: Found design unit 1: FalconIO_SDCard_IDE_CF-FalconIO_SDCard_IDE_CF_architecture + Info: Found entity 1: FalconIO_SDCard_IDE_CF +Info: Found 2 design units, including 1 entities, in source file dsp/dsp.vhd + Info: Found design unit 1: DSP-DSP_architecture + Info: Found entity 1: DSP +Info: Found 2 design units, including 1 entities, in source file video/lpm_shiftreg0.vhd + Info: Found design unit 1: lpm_shiftreg0-SYN + Info: Found entity 1: lpm_shiftreg0 +Info: Found 2 design units, including 1 entities, in source file video/lpm_bustri1.vhd + Info: Found design unit 1: lpm_bustri1-SYN + Info: Found entity 1: lpm_bustri1 +Info: Found 2 design units, including 1 entities, in source file video/altdpram1.vhd + Info: Found design unit 1: altdpram1-SYN + Info: Found entity 1: altdpram1 +Info: Found 2 design units, including 1 entities, in source file video/lpm_bustri2.vhd + Info: Found design unit 1: lpm_bustri2-SYN + Info: Found entity 1: lpm_bustri2 +Info: Found 2 design units, including 1 entities, in source file video/lpm_bustri4.vhd + Info: Found design unit 1: lpm_bustri4-SYN + Info: Found entity 1: lpm_bustri4 +Info: Found 2 design units, including 1 entities, in source file video/lpm_constant0.vhd + Info: Found design unit 1: lpm_constant0-SYN + Info: Found entity 1: lpm_constant0 +Info: Found 2 design units, including 1 entities, in source file video/lpm_constant1.vhd + Info: Found design unit 1: lpm_constant1-SYN + Info: Found entity 1: lpm_constant1 +Info: Found 2 design units, including 1 entities, in source file video/lpm_mux0.vhd + Info: Found design unit 1: lpm_mux0-SYN + Info: Found entity 1: lpm_mux0 +Info: Found 2 design units, including 1 entities, in source file video/lpm_mux1.vhd + Info: Found design unit 1: lpm_mux1-SYN + Info: Found entity 1: lpm_mux1 +Info: Found 2 design units, including 1 entities, in source file video/lpm_mux2.vhd + Info: Found design unit 1: lpm_mux2-SYN + Info: Found entity 1: lpm_mux2 +Info: Found 2 design units, including 1 entities, in source file video/lpm_constant2.vhd + Info: Found design unit 1: lpm_constant2-SYN + Info: Found entity 1: lpm_constant2 +Info: Found 2 design units, including 1 entities, in source file video/altdpram2.vhd + Info: Found design unit 1: altdpram2-SYN + Info: Found entity 1: altdpram2 +Info: Found 2 design units, including 1 entities, in source file video/lpm_bustri6.vhd + Info: Found design unit 1: lpm_bustri6-SYN + Info: Found entity 1: lpm_bustri6 +Info: Found 2 design units, including 1 entities, in source file video/lpm_mux3.vhd + Info: Found design unit 1: lpm_mux3-SYN + Info: Found entity 1: lpm_mux3 +Info: Found 2 design units, including 1 entities, in source file video/lpm_mux4.vhd + Info: Found design unit 1: lpm_mux4-SYN + Info: Found entity 1: lpm_mux4 +Info: Found 2 design units, including 1 entities, in source file video/lpm_constant3.vhd + Info: Found design unit 1: lpm_constant3-SYN + Info: Found entity 1: lpm_constant3 +Info: Found 2 design units, including 1 entities, in source file video/lpm_shiftreg1.vhd + Info: Found design unit 1: lpm_shiftreg1-SYN + Info: Found entity 1: lpm_shiftreg1 +Info: Found 2 design units, including 1 entities, in source file video/lpm_latch1.vhd + Info: Found design unit 1: lpm_latch1-SYN + Info: Found entity 1: lpm_latch1 +Info: Found 2 design units, including 1 entities, in source file video/lpm_constant4.vhd + Info: Found design unit 1: lpm_constant4-SYN + Info: Found entity 1: lpm_constant4 +Info: Found 2 design units, including 1 entities, in source file video/lpm_shiftreg2.vhd + Info: Found design unit 1: lpm_shiftreg2-SYN + Info: Found entity 1: lpm_shiftreg2 +Info: Found 2 design units, including 1 entities, in source file video/lpm_compare1.vhd + Info: Found design unit 1: lpm_compare1-SYN + Info: Found entity 1: lpm_compare1 +Info: Found 1 design units, including 1 entities, in source file interrupt_handler/interrupt_handler.tdf + Info: Found entity 1: interrupt_handler +Info: Found 2 design units, including 1 entities, in source file lpm_bustri_long.vhd + Info: Found design unit 1: lpm_bustri_long-SYN + Info: Found entity 1: lpm_bustri_LONG +Info: Found 2 design units, including 1 entities, in source file lpm_bustri_byt.vhd + Info: Found design unit 1: lpm_bustri_byt-SYN + Info: Found entity 1: lpm_bustri_BYT +Info: Found 2 design units, including 1 entities, in source file lpm_bustri_word.vhd + Info: Found design unit 1: lpm_bustri_word-SYN + Info: Found entity 1: lpm_bustri_WORD +Info: Found 2 design units, including 1 entities, in source file video/lpm_ff4.vhd + Info: Found design unit 1: lpm_ff4-SYN + Info: Found entity 1: lpm_ff4 +Info: Found 2 design units, including 1 entities, in source file video/lpm_ff5.vhd + Info: Found design unit 1: lpm_ff5-SYN + Info: Found entity 1: lpm_ff5 +Info: Found 2 design units, including 1 entities, in source file video/lpm_ff6.vhd + Info: Found design unit 1: lpm_ff6-SYN + Info: Found entity 1: lpm_ff6 +Info: Found 2 design units, including 1 entities, in source file video/lpm_shiftreg3.vhd + Info: Found design unit 1: lpm_shiftreg3-SYN + Info: Found entity 1: lpm_shiftreg3 +Info: Found 2 design units, including 1 entities, in source file video/altddio_bidir0.vhd + Info: Found design unit 1: altddio_bidir0-SYN + Info: Found entity 1: altddio_bidir0 +Info: Found 2 design units, including 1 entities, in source file video/altddio_out0.vhd + Info: Found design unit 1: altddio_out0-SYN + Info: Found entity 1: altddio_out0 +Info: Found 2 design units, including 1 entities, in source file video/lpm_mux5.vhd + Info: Found design unit 1: lpm_mux5-SYN + Info: Found entity 1: lpm_mux5 +Info: Found 2 design units, including 1 entities, in source file video/blitter/blitter.vhd + Info: Found design unit 1: BLITTER-BLITTER_architecture + Info: Found entity 1: BLITTER +Info: Found 2 design units, including 1 entities, in source file video/lpm_shiftreg5.vhd + Info: Found design unit 1: lpm_shiftreg5-SYN + Info: Found entity 1: lpm_shiftreg5 +Info: Found 2 design units, including 1 entities, in source file video/lpm_shiftreg6.vhd + Info: Found design unit 1: lpm_shiftreg6-SYN + Info: Found entity 1: lpm_shiftreg6 +Info: Found 2 design units, including 1 entities, in source file video/lpm_shiftreg4.vhd + Info: Found design unit 1: lpm_shiftreg4-SYN + Info: Found entity 1: lpm_shiftreg4 +Info: Found 2 design units, including 1 entities, in source file video/altddio_out1.vhd + Info: Found design unit 1: altddio_out1-SYN + Info: Found entity 1: altddio_out1 +Info: Found 2 design units, including 1 entities, in source file video/altddio_out2.vhd + Info: Found design unit 1: altddio_out2-SYN + Info: Found entity 1: altddio_out2 +Info: Found 2 design units, including 1 entities, in source file altddio_out3.vhd + Info: Found design unit 1: altddio_out3-SYN + Info: Found entity 1: altddio_out3 +Info: Found 2 design units, including 1 entities, in source file video/lpm_mux6.vhd + Info: Found design unit 1: lpm_mux6-SYN + Info: Found entity 1: lpm_mux6 +Info: Found 1 design units, including 0 entities, in source file falconio_sdcard_ide_cf/falconio_sdcard_ide_cf_pgk.vhd + Info: Found design unit 1: FalconIO_SDCard_IDE_CF_PKG +Info: Found 2 design units, including 1 entities, in source file falconio_sdcard_ide_cf/dcfifo1.vhd + Info: Found design unit 1: dcfifo1-SYN + Info: Found entity 1: dcfifo1 +Info: Found 2 design units, including 1 entities, in source file video/lpm_muxvdm.vhd + Info: Found design unit 1: lpm_muxvdm-SYN + Info: Found entity 1: lpm_muxVDM +Info: Elaborating entity "firebee1" for the top level hierarchy +Warning: Pin "TOUT0" not connected +Warning: Pin "nMASTER" not connected +Info: Elaborating entity "altpll1" for hierarchy "altpll1:inst" +Info: Elaborating entity "altpll" for hierarchy "altpll1:inst|altpll:altpll_component" +Info: Elaborated megafunction instantiation "altpll1:inst|altpll:altpll_component" +Info: Instantiated megafunction "altpll1:inst|altpll:altpll_component" with the following parameter: + Info: Parameter "bandwidth_type" = "AUTO" + Info: Parameter "clk0_divide_by" = "66" + Info: Parameter "clk0_duty_cycle" = "50" + Info: Parameter "clk0_multiply_by" = "1" + Info: Parameter "clk0_phase_shift" = "0" + Info: Parameter "clk1_divide_by" = "900" + Info: Parameter "clk1_duty_cycle" = "50" + Info: Parameter "clk1_multiply_by" = "67" + Info: Parameter "clk1_phase_shift" = "0" + Info: Parameter "clk2_divide_by" = "90" + Info: Parameter "clk2_duty_cycle" = "50" + Info: Parameter "clk2_multiply_by" = "67" + Info: Parameter "clk2_phase_shift" = "0" + Info: Parameter "compensate_clock" = "CLK0" + Info: Parameter "inclk0_input_frequency" = "30303" + Info: Parameter "intended_device_family" = "Cyclone III" + Info: Parameter "lpm_type" = "altpll" + Info: Parameter "operation_mode" = "SOURCE_SYNCHRONOUS" + Info: Parameter "pll_type" = "AUTO" + Info: Parameter "port_activeclock" = "PORT_UNUSED" + Info: Parameter "port_areset" = "PORT_UNUSED" + Info: Parameter "port_clkbad0" = "PORT_UNUSED" + Info: Parameter "port_clkbad1" = "PORT_UNUSED" + Info: Parameter "port_clkloss" = "PORT_UNUSED" + Info: Parameter "port_clkswitch" = "PORT_UNUSED" + Info: Parameter "port_configupdate" = "PORT_UNUSED" + Info: Parameter "port_fbin" = "PORT_UNUSED" + Info: Parameter "port_inclk0" = "PORT_USED" + Info: Parameter "port_inclk1" = "PORT_UNUSED" + Info: Parameter "port_locked" = "PORT_USED" + Info: Parameter "port_pfdena" = "PORT_UNUSED" + Info: Parameter "port_phasecounterselect" = "PORT_UNUSED" + Info: Parameter "port_phasedone" = "PORT_UNUSED" + Info: Parameter "port_phasestep" = "PORT_UNUSED" + Info: Parameter "port_phaseupdown" = "PORT_UNUSED" + Info: Parameter "port_pllena" = "PORT_UNUSED" + Info: Parameter "port_scanaclr" = "PORT_UNUSED" + Info: Parameter "port_scanclk" = "PORT_UNUSED" + Info: Parameter "port_scanclkena" = "PORT_UNUSED" + Info: Parameter "port_scandata" = "PORT_UNUSED" + Info: Parameter "port_scandataout" = "PORT_UNUSED" + Info: Parameter "port_scandone" = "PORT_UNUSED" + Info: Parameter "port_scanread" = "PORT_UNUSED" + Info: Parameter "port_scanwrite" = "PORT_UNUSED" + Info: Parameter "port_clk0" = "PORT_USED" + Info: Parameter "port_clk1" = "PORT_USED" + Info: Parameter "port_clk2" = "PORT_USED" + Info: Parameter "port_clk3" = "PORT_UNUSED" + Info: Parameter "port_clk4" = "PORT_UNUSED" + Info: Parameter "port_clk5" = "PORT_UNUSED" + Info: Parameter "port_clkena0" = "PORT_UNUSED" + Info: Parameter "port_clkena1" = "PORT_UNUSED" + Info: Parameter "port_clkena2" = "PORT_UNUSED" + Info: Parameter "port_clkena3" = "PORT_UNUSED" + Info: Parameter "port_clkena4" = "PORT_UNUSED" + Info: Parameter "port_clkena5" = "PORT_UNUSED" + Info: Parameter "port_extclk0" = "PORT_UNUSED" + Info: Parameter "port_extclk1" = "PORT_UNUSED" + Info: Parameter "port_extclk2" = "PORT_UNUSED" + Info: Parameter "port_extclk3" = "PORT_UNUSED" + Info: Parameter "self_reset_on_loss_lock" = "OFF" + Info: Parameter "width_clock" = "5" +Info: Found 1 design units, including 1 entities, in source file db/altpll_pul2.tdf + Info: Found entity 1: altpll_pul2 +Info: Elaborating entity "altpll_pul2" for hierarchy "altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated" +Info: Elaborating entity "FalconIO_SDCard_IDE_CF" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden" +Warning (10036): Verilog HDL or VHDL warning at FalconIO_SDCard_IDE_CF.vhd(244): object "SCSI_CSn" assigned a value but never read +Warning (10492): VHDL Process Statement warning at FalconIO_SDCard_IDE_CF.vhd(303): signal "nIDE_RD" is read inside the Process Statement but isn't in the Process Statement's sensitivity list +Warning (10492): VHDL Process Statement warning at FalconIO_SDCard_IDE_CF.vhd(304): signal "nIDE_WR" is read inside the Process Statement but isn't in the Process Statement's sensitivity list +Warning (10492): VHDL Process Statement warning at FalconIO_SDCard_IDE_CF.vhd(313): signal "IDE_CF_CS" is read inside the Process Statement but isn't in the Process Statement's sensitivity list +Warning (10492): VHDL Process Statement warning at FalconIO_SDCard_IDE_CF.vhd(314): signal "nFB_WR" is read inside the Process Statement but isn't in the Process Statement's sensitivity list +Warning (10492): VHDL Process Statement warning at FalconIO_SDCard_IDE_CF.vhd(315): signal "nFB_WR" is read inside the Process Statement but isn't in the Process Statement's sensitivity list +Warning (10492): VHDL Process Statement warning at FalconIO_SDCard_IDE_CF.vhd(324): signal "nFB_WR" is read inside the Process Statement but isn't in the Process Statement's sensitivity list +Warning (10492): VHDL Process Statement warning at FalconIO_SDCard_IDE_CF.vhd(325): signal "nFB_WR" is read inside the Process Statement but isn't in the Process Statement's sensitivity list +Warning (10492): VHDL Process Statement warning at FalconIO_SDCard_IDE_CF.vhd(335): signal "nFB_WR" is read inside the Process Statement but isn't in the Process Statement's sensitivity list +Warning (10492): VHDL Process Statement warning at FalconIO_SDCard_IDE_CF.vhd(336): signal "nFB_WR" is read inside the Process Statement but isn't in the Process Statement's sensitivity list +Critical Warning (10920): VHDL Incomplete Partial Association warning at FalconIO_SDCard_IDE_CF.vhd(928): port or argument "IO_A_OUT" has 1/8 unassociated elements +Info: Elaborating entity "dcfifo0" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF" +Info: Elaborating entity "dcfifo_mixed_widths" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component" +Info: Elaborated megafunction instantiation "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component" +Info: Instantiated megafunction "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component" with the following parameter: + Info: Parameter "intended_device_family" = "Cyclone III" + Info: Parameter "lpm_numwords" = "1024" + Info: Parameter "lpm_showahead" = "OFF" + Info: Parameter "lpm_type" = "dcfifo" + Info: Parameter "lpm_width" = "8" + Info: Parameter "lpm_widthu" = "10" + Info: Parameter "lpm_widthu_r" = "8" + Info: Parameter "lpm_width_r" = "32" + Info: Parameter "overflow_checking" = "ON" + Info: Parameter "rdsync_delaypipe" = "5" + Info: Parameter "underflow_checking" = "ON" + Info: Parameter "use_eab" = "ON" + Info: Parameter "write_aclr_synch" = "OFF" + Info: Parameter "wrsync_delaypipe" = "5" +Info: Found 1 design units, including 1 entities, in source file db/dcfifo_0hh1.tdf + Info: Found entity 1: dcfifo_0hh1 +Info: Elaborating entity "dcfifo_0hh1" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated" +Info: Found 1 design units, including 1 entities, in source file db/a_gray2bin_lfb.tdf + Info: Found entity 1: a_gray2bin_lfb +Info: Elaborating entity "a_gray2bin_lfb" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_gray2bin_lfb:wrptr_g_gray2bin" +Info: Found 1 design units, including 1 entities, in source file db/a_graycounter_k47.tdf + Info: Found entity 1: a_graycounter_k47 +Info: Elaborating entity "a_graycounter_k47" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_k47:rdptr_g1p" +Info: Found 1 design units, including 1 entities, in source file db/a_graycounter_fic.tdf + Info: Found entity 1: a_graycounter_fic +Info: Elaborating entity "a_graycounter_fic" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p" +Info: Found 1 design units, including 1 entities, in source file db/altsyncram_bi31.tdf + Info: Found entity 1: altsyncram_bi31 +Info: Elaborating entity "altsyncram_bi31" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram" +Info: Found 1 design units, including 1 entities, in source file db/alt_synch_pipe_ikd.tdf + Info: Found entity 1: alt_synch_pipe_ikd +Info: Elaborating entity "alt_synch_pipe_ikd" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_ikd:rs_dgwp" +Info: Found 1 design units, including 1 entities, in source file db/dffpipe_hd9.tdf + Info: Found entity 1: dffpipe_hd9 +Info: Elaborating entity "dffpipe_hd9" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_ikd:rs_dgwp|dffpipe_hd9:dffpipe12" +Info: Found 1 design units, including 1 entities, in source file db/dffpipe_gd9.tdf + Info: Found entity 1: dffpipe_gd9 +Info: Elaborating entity "dffpipe_gd9" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|dffpipe_gd9:ws_brp" +Info: Found 1 design units, including 1 entities, in source file db/dffpipe_pe9.tdf + Info: Found entity 1: dffpipe_pe9 +Info: Elaborating entity "dffpipe_pe9" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|dffpipe_pe9:ws_bwp" +Info: Found 1 design units, including 1 entities, in source file db/alt_synch_pipe_jkd.tdf + Info: Found entity 1: alt_synch_pipe_jkd +Info: Elaborating entity "alt_synch_pipe_jkd" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_jkd:ws_dgrp" +Info: Found 1 design units, including 1 entities, in source file db/dffpipe_id9.tdf + Info: Found entity 1: dffpipe_id9 +Info: Elaborating entity "dffpipe_id9" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_jkd:ws_dgrp|dffpipe_id9:dffpipe17" +Info: Found 1 design units, including 1 entities, in source file db/cmpr_256.tdf + Info: Found entity 1: cmpr_256 +Info: Elaborating entity "cmpr_256" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|cmpr_256:rdempty_eq_comp1_lsb" +Info: Found 1 design units, including 1 entities, in source file db/cmpr_156.tdf + Info: Found entity 1: cmpr_156 +Info: Elaborating entity "cmpr_156" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|cmpr_156:rdempty_eq_comp1_msb" +Info: Found 1 design units, including 1 entities, in source file db/cntr_t2e.tdf + Info: Found entity 1: cntr_t2e +Info: Elaborating entity "cntr_t2e" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|cntr_t2e:cntr_b" +Info: Found 1 design units, including 1 entities, in source file db/mux_a18.tdf + Info: Found entity 1: mux_a18 +Info: Elaborating entity "mux_a18" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|mux_a18:rdemp_eq_comp_lsb_mux" +Info: Elaborating entity "dcfifo1" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF" +Info: Elaborating entity "dcfifo_mixed_widths" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component" +Info: Elaborated megafunction instantiation "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component" +Info: Instantiated megafunction "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component" with the following parameter: + Info: Parameter "intended_device_family" = "Cyclone III" + Info: Parameter "lpm_numwords" = "256" + Info: Parameter "lpm_showahead" = "OFF" + Info: Parameter "lpm_type" = "dcfifo" + Info: Parameter "lpm_width" = "32" + Info: Parameter "lpm_widthu" = "8" + Info: Parameter "lpm_widthu_r" = "10" + Info: Parameter "lpm_width_r" = "8" + Info: Parameter "overflow_checking" = "ON" + Info: Parameter "rdsync_delaypipe" = "5" + Info: Parameter "underflow_checking" = "ON" + Info: Parameter "use_eab" = "ON" + Info: Parameter "write_aclr_synch" = "OFF" + Info: Parameter "wrsync_delaypipe" = "5" +Info: Found 1 design units, including 1 entities, in source file db/dcfifo_3fh1.tdf + Info: Found entity 1: dcfifo_3fh1 +Info: Elaborating entity "dcfifo_3fh1" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated" +Info: Found 1 design units, including 1 entities, in source file db/a_graycounter_j47.tdf + Info: Found entity 1: a_graycounter_j47 +Info: Elaborating entity "a_graycounter_j47" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p" +Info: Found 1 design units, including 1 entities, in source file db/a_graycounter_gic.tdf + Info: Found entity 1: a_graycounter_gic +Info: Elaborating entity "a_graycounter_gic" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_gic:wrptr_g1p" +Info: Found 1 design units, including 1 entities, in source file db/altsyncram_ci31.tdf + Info: Found entity 1: altsyncram_ci31 +Info: Elaborating entity "altsyncram_ci31" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|altsyncram_ci31:fifo_ram" +Info: Found 1 design units, including 1 entities, in source file db/alt_synch_pipe_kkd.tdf + Info: Found entity 1: alt_synch_pipe_kkd +Info: Elaborating entity "alt_synch_pipe_kkd" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_kkd:rs_dgwp" +Info: Found 1 design units, including 1 entities, in source file db/dffpipe_jd9.tdf + Info: Found entity 1: dffpipe_jd9 +Info: Elaborating entity "dffpipe_jd9" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_kkd:rs_dgwp|dffpipe_jd9:dffpipe12" +Info: Found 1 design units, including 1 entities, in source file db/alt_synch_pipe_lkd.tdf + Info: Found entity 1: alt_synch_pipe_lkd +Info: Elaborating entity "alt_synch_pipe_lkd" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_lkd:ws_dgrp" +Info: Found 1 design units, including 1 entities, in source file db/dffpipe_kd9.tdf + Info: Found entity 1: dffpipe_kd9 +Info: Elaborating entity "dffpipe_kd9" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_lkd:ws_dgrp|dffpipe_kd9:dffpipe15" +Info: Elaborating entity "WF1772IP_TOP_SOC" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC" +Info: Elaborating entity "WF1772IP_CONTROL" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL" +Info: Elaborating entity "WF1772IP_REGISTERS" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS" +Info: Elaborating entity "WF1772IP_DIGITAL_PLL" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL" +Info: Elaborating entity "WF1772IP_AM_DETECTOR" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_AM_DETECTOR:I_AM_DETECTOR" +Info: Elaborating entity "WF1772IP_CRC_LOGIC" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CRC_LOGIC:I_CRC_LOGIC" +Info: Elaborating entity "WF1772IP_TRANSCEIVER" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER" +Info: Elaborating entity "WF5380_TOP_SOC" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI" +Info: Elaborating entity "WF5380_REGISTERS" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS" +Info: Elaborating entity "WF5380_CONTROL" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL" +Info: Elaborating entity "WF6850IP_TOP_SOC" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD" +Info: Elaborating entity "WF6850IP_CTRL_STATUS" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS" +Info: Elaborating entity "WF6850IP_RECEIVE" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_RECEIVE:I_UART_RECEIVE" +Info: Elaborating entity "WF6850IP_TRANSMIT" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_TRANSMIT:I_UART_TRANSMIT" +Info: Elaborating entity "WF68901IP_TOP_SOC" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP" +Info: Elaborating entity "WF68901IP_USART_TOP" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART" +Info: Elaborating entity "WF68901IP_USART_CTRL" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_CTRL:I_USART_CTRL" +Info: Elaborating entity "WF68901IP_USART_RX" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_RX:I_USART_RECEIVE" +Info: Elaborating entity "WF68901IP_USART_TX" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_TX:I_USART_TRANSMIT" +Info: Elaborating entity "WF68901IP_INTERRUPTS" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS" +Info: Elaborating entity "WF68901IP_GPIO" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_GPIO:I_GPIO" +Info: Elaborating entity "WF68901IP_TIMERS" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS" +Info: Elaborating entity "WF2149IP_TOP_SOC" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND" +Info: Elaborating entity "WF2149IP_WAVE" for hierarchy "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE" +Info: Elaborating entity "altpll3" for hierarchy "altpll3:inst13" +Info: Elaborating entity "altpll" for hierarchy "altpll3:inst13|altpll:altpll_component" +Info: Elaborated megafunction instantiation "altpll3:inst13|altpll:altpll_component" +Info: Instantiated megafunction "altpll3:inst13|altpll:altpll_component" with the following parameter: + Info: Parameter "bandwidth_type" = "AUTO" + Info: Parameter "clk0_divide_by" = "33" + Info: Parameter "clk0_duty_cycle" = "50" + Info: Parameter "clk0_multiply_by" = "2" + Info: Parameter "clk0_phase_shift" = "0" + Info: Parameter "clk1_divide_by" = "33" + Info: Parameter "clk1_duty_cycle" = "50" + Info: Parameter "clk1_multiply_by" = "16" + Info: Parameter "clk1_phase_shift" = "0" + Info: Parameter "clk2_divide_by" = "33" + Info: Parameter "clk2_duty_cycle" = "50" + Info: Parameter "clk2_multiply_by" = "25" + Info: Parameter "clk2_phase_shift" = "0" + Info: Parameter "clk3_divide_by" = "11" + Info: Parameter "clk3_duty_cycle" = "50" + Info: Parameter "clk3_multiply_by" = "16" + Info: Parameter "clk3_phase_shift" = "0" + Info: Parameter "compensate_clock" = "CLK1" + Info: Parameter "inclk0_input_frequency" = "30303" + Info: Parameter "intended_device_family" = "Cyclone III" + Info: Parameter "lpm_type" = "altpll" + Info: Parameter "operation_mode" = "SOURCE_SYNCHRONOUS" + Info: Parameter "pll_type" = "AUTO" + Info: Parameter "port_activeclock" = "PORT_UNUSED" + Info: Parameter "port_areset" = "PORT_UNUSED" + Info: Parameter "port_clkbad0" = "PORT_UNUSED" + Info: Parameter "port_clkbad1" = "PORT_UNUSED" + Info: Parameter "port_clkloss" = "PORT_UNUSED" + Info: Parameter "port_clkswitch" = "PORT_UNUSED" + Info: Parameter "port_configupdate" = "PORT_UNUSED" + Info: Parameter "port_fbin" = "PORT_UNUSED" + Info: Parameter "port_inclk0" = "PORT_USED" + Info: Parameter "port_inclk1" = "PORT_UNUSED" + Info: Parameter "port_locked" = "PORT_UNUSED" + Info: Parameter "port_pfdena" = "PORT_UNUSED" + Info: Parameter "port_phasecounterselect" = "PORT_UNUSED" + Info: Parameter "port_phasedone" = "PORT_UNUSED" + Info: Parameter "port_phasestep" = "PORT_UNUSED" + Info: Parameter "port_phaseupdown" = "PORT_UNUSED" + Info: Parameter "port_pllena" = "PORT_UNUSED" + Info: Parameter "port_scanaclr" = "PORT_UNUSED" + Info: Parameter "port_scanclk" = "PORT_UNUSED" + Info: Parameter "port_scanclkena" = "PORT_UNUSED" + Info: Parameter "port_scandata" = "PORT_UNUSED" + Info: Parameter "port_scandataout" = "PORT_UNUSED" + Info: Parameter "port_scandone" = "PORT_UNUSED" + Info: Parameter "port_scanread" = "PORT_UNUSED" + Info: Parameter "port_scanwrite" = "PORT_UNUSED" + Info: Parameter "port_clk0" = "PORT_USED" + Info: Parameter "port_clk1" = "PORT_USED" + Info: Parameter "port_clk2" = "PORT_USED" + Info: Parameter "port_clk3" = "PORT_USED" + Info: Parameter "port_clk4" = "PORT_UNUSED" + Info: Parameter "port_clk5" = "PORT_UNUSED" + Info: Parameter "port_clkena0" = "PORT_UNUSED" + Info: Parameter "port_clkena1" = "PORT_UNUSED" + Info: Parameter "port_clkena2" = "PORT_UNUSED" + Info: Parameter "port_clkena3" = "PORT_UNUSED" + Info: Parameter "port_clkena4" = "PORT_UNUSED" + Info: Parameter "port_clkena5" = "PORT_UNUSED" + Info: Parameter "port_extclk0" = "PORT_UNUSED" + Info: Parameter "port_extclk1" = "PORT_UNUSED" + Info: Parameter "port_extclk2" = "PORT_UNUSED" + Info: Parameter "port_extclk3" = "PORT_UNUSED" + Info: Parameter "width_clock" = "5" +Info: Found 1 design units, including 1 entities, in source file db/altpll_41p2.tdf + Info: Found entity 1: altpll_41p2 +Info: Elaborating entity "altpll_41p2" for hierarchy "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated" +Info: Elaborating entity "Video" for hierarchy "Video:Fredi_Aschwanden" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "FB_ADR[31..0]" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "MAIN_CLK" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "nFB_CS1" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "nFB_CS2" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "nFB_CS3" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "nFB_WR" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "FB_SIZE0" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "FB_SIZE1" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "nRSTO" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "nFB_OE" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "FB_ALE" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "DDRCLK[3..0]" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "DDR_SYNC_66M" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "CLK33M" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "CLK25M" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "CLK_VIDEO" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "VR_D[8..0]" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "VR_BUSY" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "VG[7..0]" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "VB[7..0]" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "VR[7..0]" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "nBLANK" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "VA[12..0]" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "nVWE" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "nVCAS" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "nVRAS" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "nVCS" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "VDM[3..0]" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "nPD_VGA" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "VCKE" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "VSYNC" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "HSYNC" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "nSYNC" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "VIDEO_TA" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "PIXEL_CLK" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "BA[1..0]" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "VIDEO_RECONFIG" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "VR_WR" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "VR_RD" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "VDQS[3..0]" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "FB_AD[31..0]" +Warning: INPUTC, OUTPUTC and BIDIRC pins not supported for pin "VD[31..0]" +Info: Elaborating entity "VIDEO_MOD_MUX_CLUTCTR" for hierarchy "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR" +Warning: Variable or input pin "nRSTO" is defined but never used +Warning: Variable or input pin "nFB_CS3" is defined but never used +Warning: Variable or input pin "nFB_BURST" is defined but never used +Info: Elaborating entity "lpm_bustri_WORD" for hierarchy "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_bustri_WORD:$00000" +Info: Elaborating entity "lpm_bustri" for hierarchy "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_bustri_WORD:$00000|lpm_bustri:lpm_bustri_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_bustri_WORD:$00000|lpm_bustri:lpm_bustri_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_bustri_WORD:$00000|lpm_bustri:lpm_bustri_component" with the following parameter: + Info: Parameter "lpm_type" = "LPM_BUSTRI" + Info: Parameter "lpm_width" = "16" +Info: Elaborating entity "BLITTER" for hierarchy "Video:Fredi_Aschwanden|BLITTER:BLITTER" +Info: Elaborating entity "lpm_shiftreg6" for hierarchy "Video:Fredi_Aschwanden|lpm_shiftreg6:inst89" +Info: Elaborating entity "lpm_shiftreg" for hierarchy "Video:Fredi_Aschwanden|lpm_shiftreg6:inst89|lpm_shiftreg:lpm_shiftreg_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|lpm_shiftreg6:inst89|lpm_shiftreg:lpm_shiftreg_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|lpm_shiftreg6:inst89|lpm_shiftreg:lpm_shiftreg_component" with the following parameter: + Info: Parameter "lpm_direction" = "RIGHT" + Info: Parameter "lpm_type" = "LPM_SHIFTREG" + Info: Parameter "lpm_width" = "5" +Info: Elaborating entity "DDR_CTR" for hierarchy "Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR" +Warning: Variable or input pin "nFB_CS2" is defined but never used +Warning: Variable or input pin "nFB_CS3" is defined but never used +Warning: Variable or input pin "nRSTO" is defined but never used +Info: Elaborating entity "lpm_bustri_BYT" for hierarchy "Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|lpm_bustri_BYT:$00002" +Info: Elaborating entity "lpm_bustri" for hierarchy "Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|lpm_bustri_BYT:$00002|lpm_bustri:lpm_bustri_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|lpm_bustri_BYT:$00002|lpm_bustri:lpm_bustri_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|lpm_bustri_BYT:$00002|lpm_bustri:lpm_bustri_component" with the following parameter: + Info: Parameter "lpm_type" = "LPM_BUSTRI" + Info: Parameter "lpm_width" = "8" +Info: Elaborating entity "lpm_fifo_dc0" for hierarchy "Video:Fredi_Aschwanden|lpm_fifo_dc0:inst" +Info: Elaborating entity "dcfifo" for hierarchy "Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component" with the following parameter: + Info: Parameter "intended_device_family" = "Cyclone III" + Info: Parameter "lpm_numwords" = "512" + Info: Parameter "lpm_showahead" = "OFF" + Info: Parameter "lpm_type" = "dcfifo" + Info: Parameter "lpm_width" = "128" + Info: Parameter "lpm_widthu" = "9" + Info: Parameter "overflow_checking" = "OFF" + Info: Parameter "rdsync_delaypipe" = "6" + Info: Parameter "underflow_checking" = "OFF" + Info: Parameter "use_eab" = "ON" + Info: Parameter "write_aclr_synch" = "ON" + Info: Parameter "wrsync_delaypipe" = "6" +Info: Found 1 design units, including 1 entities, in source file db/dcfifo_8fi1.tdf + Info: Found entity 1: dcfifo_8fi1 +Info: Elaborating entity "dcfifo_8fi1" for hierarchy "Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated" +Info: Found 1 design units, including 1 entities, in source file db/a_gray2bin_tgb.tdf + Info: Found entity 1: a_gray2bin_tgb +Info: Elaborating entity "a_gray2bin_tgb" for hierarchy "Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_gray2bin_tgb:wrptr_g_gray2bin" +Info: Found 1 design units, including 1 entities, in source file db/a_graycounter_s57.tdf + Info: Found entity 1: a_graycounter_s57 +Info: Elaborating entity "a_graycounter_s57" for hierarchy "Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p" +Info: Found 1 design units, including 1 entities, in source file db/a_graycounter_ojc.tdf + Info: Found entity 1: a_graycounter_ojc +Info: Elaborating entity "a_graycounter_ojc" for hierarchy "Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_ojc:wrptr_g1p" +Info: Found 1 design units, including 1 entities, in source file db/a_graycounter_njc.tdf + Info: Found entity 1: a_graycounter_njc +Info: Elaborating entity "a_graycounter_njc" for hierarchy "Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp" +Info: Found 1 design units, including 1 entities, in source file db/altsyncram_tl31.tdf + Info: Found entity 1: altsyncram_tl31 +Info: Elaborating entity "altsyncram_tl31" for hierarchy "Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram" +Info: Found 1 design units, including 1 entities, in source file db/alt_synch_pipe_rld.tdf + Info: Found entity 1: alt_synch_pipe_rld +Info: Elaborating entity "alt_synch_pipe_rld" for hierarchy "Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_rld:rs_dgwp" +Info: Found 1 design units, including 1 entities, in source file db/dffpipe_qe9.tdf + Info: Found entity 1: dffpipe_qe9 +Info: Elaborating entity "dffpipe_qe9" for hierarchy "Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_rld:rs_dgwp|dffpipe_qe9:dffpipe15" +Info: Found 1 design units, including 1 entities, in source file db/dffpipe_9d9.tdf + Info: Found entity 1: dffpipe_9d9 +Info: Elaborating entity "dffpipe_9d9" for hierarchy "Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_9d9:wraclr" +Info: Found 1 design units, including 1 entities, in source file db/dffpipe_oe9.tdf + Info: Found entity 1: dffpipe_oe9 +Info: Elaborating entity "dffpipe_oe9" for hierarchy "Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_brp" +Info: Found 1 design units, including 1 entities, in source file db/alt_synch_pipe_sld.tdf + Info: Found entity 1: alt_synch_pipe_sld +Info: Elaborating entity "alt_synch_pipe_sld" for hierarchy "Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp" +Info: Found 1 design units, including 1 entities, in source file db/dffpipe_re9.tdf + Info: Found entity 1: dffpipe_re9 +Info: Elaborating entity "dffpipe_re9" for hierarchy "Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22" +Info: Elaborating entity "lpm_shiftreg4" for hierarchy "Video:Fredi_Aschwanden|lpm_shiftreg4:inst26" +Info: Elaborating entity "lpm_shiftreg" for hierarchy "Video:Fredi_Aschwanden|lpm_shiftreg4:inst26|lpm_shiftreg:lpm_shiftreg_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|lpm_shiftreg4:inst26|lpm_shiftreg:lpm_shiftreg_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|lpm_shiftreg4:inst26|lpm_shiftreg:lpm_shiftreg_component" with the following parameter: + Info: Parameter "lpm_direction" = "RIGHT" + Info: Parameter "lpm_type" = "LPM_SHIFTREG" + Info: Parameter "lpm_width" = "5" +Info: Elaborating entity "lpm_muxVDM" for hierarchy "Video:Fredi_Aschwanden|lpm_muxVDM:inst100" +Info: Elaborating entity "LPM_MUX" for hierarchy "Video:Fredi_Aschwanden|lpm_muxVDM:inst100|LPM_MUX:lpm_mux_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|lpm_muxVDM:inst100|LPM_MUX:lpm_mux_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|lpm_muxVDM:inst100|LPM_MUX:lpm_mux_component" with the following parameter: + Info: Parameter "LPM_WIDTH" = "128" + Info: Parameter "LPM_SIZE" = "16" + Info: Parameter "LPM_WIDTHS" = "4" + Info: Parameter "LPM_PIPELINE" = "0" + Info: Parameter "LPM_TYPE" = "LPM_MUX" + Info: Parameter "LPM_HINT" = "UNUSED" +Info: Found 1 design units, including 1 entities, in source file db/mux_bbe.tdf + Info: Found entity 1: mux_bbe +Info: Elaborating entity "mux_bbe" for hierarchy "Video:Fredi_Aschwanden|lpm_muxVDM:inst100|LPM_MUX:lpm_mux_component|mux_bbe:auto_generated" +Info: Elaborating entity "lpm_ff6" for hierarchy "Video:Fredi_Aschwanden|lpm_ff6:inst94" +Info: Elaborating entity "lpm_ff" for hierarchy "Video:Fredi_Aschwanden|lpm_ff6:inst94|lpm_ff:lpm_ff_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|lpm_ff6:inst94|lpm_ff:lpm_ff_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|lpm_ff6:inst94|lpm_ff:lpm_ff_component" with the following parameter: + Info: Parameter "lpm_fftype" = "DFF" + Info: Parameter "lpm_type" = "LPM_FF" + Info: Parameter "lpm_width" = "128" +Info: Elaborating entity "lpm_ff1" for hierarchy "Video:Fredi_Aschwanden|lpm_ff1:inst4" +Info: Elaborating entity "lpm_ff" for hierarchy "Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component" with the following parameter: + Info: Parameter "lpm_fftype" = "DFF" + Info: Parameter "lpm_type" = "LPM_FF" + Info: Parameter "lpm_width" = "32" +Info: Elaborating entity "altddio_bidir0" for hierarchy "Video:Fredi_Aschwanden|altddio_bidir0:inst1" +Info: Elaborating entity "altddio_bidir" for hierarchy "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component" with the following parameter: + Info: Parameter "extend_oe_disable" = "UNUSED" + Info: Parameter "implement_input_in_lcell" = "ON" + Info: Parameter "intended_device_family" = "Cyclone III" + Info: Parameter "invert_output" = "OFF" + Info: Parameter "lpm_type" = "altddio_bidir" + Info: Parameter "oe_reg" = "UNUSED" + Info: Parameter "power_up_high" = "OFF" + Info: Parameter "width" = "32" +Info: Found 1 design units, including 1 entities, in source file db/ddio_bidir_3jl.tdf + Info: Found entity 1: ddio_bidir_3jl +Info: Elaborating entity "ddio_bidir_3jl" for hierarchy "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated" +Info: Elaborating entity "lpm_mux5" for hierarchy "Video:Fredi_Aschwanden|lpm_mux5:inst22" +Info: Elaborating entity "LPM_MUX" for hierarchy "Video:Fredi_Aschwanden|lpm_mux5:inst22|LPM_MUX:lpm_mux_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|lpm_mux5:inst22|LPM_MUX:lpm_mux_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|lpm_mux5:inst22|LPM_MUX:lpm_mux_component" with the following parameter: + Info: Parameter "LPM_WIDTH" = "64" + Info: Parameter "LPM_SIZE" = "4" + Info: Parameter "LPM_WIDTHS" = "2" + Info: Parameter "LPM_PIPELINE" = "0" + Info: Parameter "LPM_TYPE" = "LPM_MUX" + Info: Parameter "LPM_HINT" = "UNUSED" +Info: Found 1 design units, including 1 entities, in source file db/mux_58e.tdf + Info: Found entity 1: mux_58e +Info: Elaborating entity "mux_58e" for hierarchy "Video:Fredi_Aschwanden|lpm_mux5:inst22|LPM_MUX:lpm_mux_component|mux_58e:auto_generated" +Info: Elaborating entity "lpm_ff0" for hierarchy "Video:Fredi_Aschwanden|lpm_ff0:inst14" +Info: Elaborating entity "lpm_ff" for hierarchy "Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component" with the following parameter: + Info: Parameter "lpm_fftype" = "DFF" + Info: Parameter "lpm_type" = "LPM_FF" + Info: Parameter "lpm_width" = "32" +Info: Elaborating entity "lpm_bustri_LONG" for hierarchy "Video:Fredi_Aschwanden|lpm_bustri_LONG:inst108" +Info: Elaborating entity "lpm_bustri" for hierarchy "Video:Fredi_Aschwanden|lpm_bustri_LONG:inst108|lpm_bustri:lpm_bustri_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|lpm_bustri_LONG:inst108|lpm_bustri:lpm_bustri_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|lpm_bustri_LONG:inst108|lpm_bustri:lpm_bustri_component" with the following parameter: + Info: Parameter "lpm_type" = "LPM_BUSTRI" + Info: Parameter "lpm_width" = "32" +Info: Elaborating entity "lpm_latch0" for hierarchy "Video:Fredi_Aschwanden|lpm_latch0:inst27" +Info: Elaborating entity "lpm_latch" for hierarchy "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component" with the following parameter: + Info: Parameter "lpm_type" = "LPM_LATCH" + Info: Parameter "lpm_width" = "32" +Info: Elaborating entity "lpm_bustri3" for hierarchy "Video:Fredi_Aschwanden|lpm_bustri3:inst66" +Info: Elaborating entity "lpm_bustri" for hierarchy "Video:Fredi_Aschwanden|lpm_bustri3:inst66|lpm_bustri:lpm_bustri_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|lpm_bustri3:inst66|lpm_bustri:lpm_bustri_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|lpm_bustri3:inst66|lpm_bustri:lpm_bustri_component" with the following parameter: + Info: Parameter "lpm_type" = "LPM_BUSTRI" + Info: Parameter "lpm_width" = "6" +Info: Elaborating entity "altdpram1" for hierarchy "Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED" +Info: Elaborating entity "altsyncram" for hierarchy "Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component" with the following parameter: + Info: Parameter "address_reg_b" = "CLOCK1" + Info: Parameter "clock_enable_input_a" = "BYPASS" + Info: Parameter "clock_enable_input_b" = "BYPASS" + Info: Parameter "clock_enable_output_a" = "BYPASS" + Info: Parameter "clock_enable_output_b" = "BYPASS" + Info: Parameter "indata_reg_b" = "CLOCK1" + Info: Parameter "intended_device_family" = "Cyclone III" + Info: Parameter "lpm_type" = "altsyncram" + Info: Parameter "numwords_a" = "256" + Info: Parameter "numwords_b" = "256" + Info: Parameter "operation_mode" = "BIDIR_DUAL_PORT" + Info: Parameter "outdata_aclr_a" = "NONE" + Info: Parameter "outdata_aclr_b" = "NONE" + Info: Parameter "outdata_reg_a" = "CLOCK0" + Info: Parameter "outdata_reg_b" = "CLOCK1" + Info: Parameter "power_up_uninitialized" = "FALSE" + Info: Parameter "read_during_write_mode_port_a" = "OLD_DATA" + Info: Parameter "read_during_write_mode_port_b" = "OLD_DATA" + Info: Parameter "widthad_a" = "8" + Info: Parameter "widthad_b" = "8" + Info: Parameter "width_a" = "6" + Info: Parameter "width_b" = "6" + Info: Parameter "width_byteena_a" = "1" + Info: Parameter "width_byteena_b" = "1" + Info: Parameter "wrcontrol_wraddress_reg_b" = "CLOCK1" +Info: Found 1 design units, including 1 entities, in source file db/altsyncram_lf92.tdf + Info: Found entity 1: altsyncram_lf92 +Info: Elaborating entity "altsyncram_lf92" for hierarchy "Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated" +Info: Elaborating entity "lpm_shiftreg0" for hierarchy "Video:Fredi_Aschwanden|lpm_shiftreg0:sr0" +Info: Elaborating entity "lpm_shiftreg" for hierarchy "Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component" with the following parameter: + Info: Parameter "lpm_direction" = "LEFT" + Info: Parameter "lpm_type" = "LPM_SHIFTREG" + Info: Parameter "lpm_width" = "16" +Info: Elaborating entity "MUX41" for hierarchy "Video:Fredi_Aschwanden|MUX41:inst45" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|MUX41:inst45" +Info: Elaborating entity "lpm_muxDZ" for hierarchy "Video:Fredi_Aschwanden|lpm_muxDZ:inst62" +Info: Elaborating entity "LPM_MUX" for hierarchy "Video:Fredi_Aschwanden|lpm_muxDZ:inst62|LPM_MUX:lpm_mux_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|lpm_muxDZ:inst62|LPM_MUX:lpm_mux_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|lpm_muxDZ:inst62|LPM_MUX:lpm_mux_component" with the following parameter: + Info: Parameter "LPM_WIDTH" = "128" + Info: Parameter "LPM_SIZE" = "2" + Info: Parameter "LPM_WIDTHS" = "1" + Info: Parameter "LPM_PIPELINE" = "1" + Info: Parameter "LPM_TYPE" = "LPM_MUX" + Info: Parameter "LPM_HINT" = "UNUSED" +Info: Found 1 design units, including 1 entities, in source file db/mux_dcf.tdf + Info: Found entity 1: mux_dcf +Info: Elaborating entity "mux_dcf" for hierarchy "Video:Fredi_Aschwanden|lpm_muxDZ:inst62|LPM_MUX:lpm_mux_component|mux_dcf:auto_generated" +Info: Elaborating entity "lpm_fifoDZ" for hierarchy "Video:Fredi_Aschwanden|lpm_fifoDZ:inst63" +Info: Elaborating entity "scfifo" for hierarchy "Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component" with the following parameter: + Info: Parameter "add_ram_output_register" = "OFF" + Info: Parameter "intended_device_family" = "Cyclone III" + Info: Parameter "lpm_numwords" = "128" + Info: Parameter "lpm_showahead" = "ON" + Info: Parameter "lpm_type" = "scfifo" + Info: Parameter "lpm_width" = "128" + Info: Parameter "lpm_widthu" = "7" + Info: Parameter "overflow_checking" = "OFF" + Info: Parameter "underflow_checking" = "OFF" + Info: Parameter "use_eab" = "ON" +Info: Found 1 design units, including 1 entities, in source file db/scfifo_lk21.tdf + Info: Found entity 1: scfifo_lk21 +Info: Elaborating entity "scfifo_lk21" for hierarchy "Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated" +Info: Found 1 design units, including 1 entities, in source file db/a_dpfifo_oq21.tdf + Info: Found entity 1: a_dpfifo_oq21 +Info: Elaborating entity "a_dpfifo_oq21" for hierarchy "Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo" +Info: Found 1 design units, including 1 entities, in source file db/altsyncram_gj81.tdf + Info: Found entity 1: altsyncram_gj81 +Info: Elaborating entity "altsyncram_gj81" for hierarchy "Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram" +Info: Found 1 design units, including 1 entities, in source file db/cmpr_br8.tdf + Info: Found entity 1: cmpr_br8 +Info: Elaborating entity "cmpr_br8" for hierarchy "Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cmpr_br8:almost_full_comparer" +Info: Elaborating entity "cmpr_br8" for hierarchy "Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cmpr_br8:three_comparison" +Info: Found 1 design units, including 1 entities, in source file db/cntr_omb.tdf + Info: Found entity 1: cntr_omb +Info: Elaborating entity "cntr_omb" for hierarchy "Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb" +Info: Found 1 design units, including 1 entities, in source file db/cntr_5n7.tdf + Info: Found entity 1: cntr_5n7 +Info: Elaborating entity "cntr_5n7" for hierarchy "Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_5n7:usedw_counter" +Info: Found 1 design units, including 1 entities, in source file db/cntr_pmb.tdf + Info: Found entity 1: cntr_pmb +Info: Elaborating entity "cntr_pmb" for hierarchy "Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_pmb:wr_ptr" +Info: Elaborating entity "lpm_bustri1" for hierarchy "Video:Fredi_Aschwanden|lpm_bustri1:inst51" +Info: Elaborating entity "lpm_bustri" for hierarchy "Video:Fredi_Aschwanden|lpm_bustri1:inst51|lpm_bustri:lpm_bustri_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|lpm_bustri1:inst51|lpm_bustri:lpm_bustri_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|lpm_bustri1:inst51|lpm_bustri:lpm_bustri_component" with the following parameter: + Info: Parameter "lpm_type" = "LPM_BUSTRI" + Info: Parameter "lpm_width" = "3" +Info: Elaborating entity "altdpram0" for hierarchy "Video:Fredi_Aschwanden|altdpram0:ST_CLUT_RED" +Info: Elaborating entity "altsyncram" for hierarchy "Video:Fredi_Aschwanden|altdpram0:ST_CLUT_RED|altsyncram:altsyncram_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|altdpram0:ST_CLUT_RED|altsyncram:altsyncram_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|altdpram0:ST_CLUT_RED|altsyncram:altsyncram_component" with the following parameter: + Info: Parameter "address_reg_b" = "CLOCK1" + Info: Parameter "clock_enable_input_a" = "BYPASS" + Info: Parameter "clock_enable_input_b" = "BYPASS" + Info: Parameter "clock_enable_output_a" = "BYPASS" + Info: Parameter "clock_enable_output_b" = "BYPASS" + Info: Parameter "indata_reg_b" = "CLOCK1" + Info: Parameter "intended_device_family" = "Cyclone III" + Info: Parameter "lpm_type" = "altsyncram" + Info: Parameter "numwords_a" = "16" + Info: Parameter "numwords_b" = "16" + Info: Parameter "operation_mode" = "BIDIR_DUAL_PORT" + Info: Parameter "outdata_aclr_a" = "NONE" + Info: Parameter "outdata_aclr_b" = "NONE" + Info: Parameter "outdata_reg_a" = "CLOCK0" + Info: Parameter "outdata_reg_b" = "CLOCK1" + Info: Parameter "power_up_uninitialized" = "FALSE" + Info: Parameter "read_during_write_mode_port_a" = "OLD_DATA" + Info: Parameter "read_during_write_mode_port_b" = "OLD_DATA" + Info: Parameter "widthad_a" = "4" + Info: Parameter "widthad_b" = "4" + Info: Parameter "width_a" = "3" + Info: Parameter "width_b" = "3" + Info: Parameter "width_byteena_a" = "1" + Info: Parameter "width_byteena_b" = "1" + Info: Parameter "wrcontrol_wraddress_reg_b" = "CLOCK1" +Info: Found 1 design units, including 1 entities, in source file db/altsyncram_rb92.tdf + Info: Found entity 1: altsyncram_rb92 +Info: Elaborating entity "altsyncram_rb92" for hierarchy "Video:Fredi_Aschwanden|altdpram0:ST_CLUT_RED|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated" +Info: Elaborating entity "altdpram2" for hierarchy "Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55" +Info: Elaborating entity "altsyncram" for hierarchy "Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component" with the following parameter: + Info: Parameter "address_reg_b" = "CLOCK1" + Info: Parameter "clock_enable_input_a" = "BYPASS" + Info: Parameter "clock_enable_input_b" = "BYPASS" + Info: Parameter "clock_enable_output_a" = "BYPASS" + Info: Parameter "clock_enable_output_b" = "BYPASS" + Info: Parameter "indata_reg_b" = "CLOCK1" + Info: Parameter "intended_device_family" = "Cyclone III" + Info: Parameter "lpm_type" = "altsyncram" + Info: Parameter "numwords_a" = "256" + Info: Parameter "numwords_b" = "256" + Info: Parameter "operation_mode" = "BIDIR_DUAL_PORT" + Info: Parameter "outdata_aclr_a" = "NONE" + Info: Parameter "outdata_aclr_b" = "NONE" + Info: Parameter "outdata_reg_a" = "CLOCK0" + Info: Parameter "outdata_reg_b" = "CLOCK1" + Info: Parameter "power_up_uninitialized" = "FALSE" + Info: Parameter "read_during_write_mode_port_a" = "OLD_DATA" + Info: Parameter "read_during_write_mode_port_b" = "OLD_DATA" + Info: Parameter "widthad_a" = "8" + Info: Parameter "widthad_b" = "8" + Info: Parameter "width_a" = "8" + Info: Parameter "width_b" = "8" + Info: Parameter "width_byteena_a" = "1" + Info: Parameter "width_byteena_b" = "1" + Info: Parameter "wrcontrol_wraddress_reg_b" = "CLOCK1" +Info: Found 1 design units, including 1 entities, in source file db/altsyncram_pf92.tdf + Info: Found entity 1: altsyncram_pf92 +Info: Elaborating entity "altsyncram_pf92" for hierarchy "Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated" +Info: Elaborating entity "lpm_mux3" for hierarchy "Video:Fredi_Aschwanden|lpm_mux3:inst102" +Info: Elaborating entity "LPM_MUX" for hierarchy "Video:Fredi_Aschwanden|lpm_mux3:inst102|LPM_MUX:lpm_mux_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|lpm_mux3:inst102|LPM_MUX:lpm_mux_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|lpm_mux3:inst102|LPM_MUX:lpm_mux_component" with the following parameter: + Info: Parameter "LPM_WIDTH" = "1" + Info: Parameter "LPM_SIZE" = "2" + Info: Parameter "LPM_WIDTHS" = "1" + Info: Parameter "LPM_PIPELINE" = "0" + Info: Parameter "LPM_TYPE" = "LPM_MUX" + Info: Parameter "LPM_HINT" = "UNUSED" +Info: Found 1 design units, including 1 entities, in source file db/mux_96e.tdf + Info: Found entity 1: mux_96e +Info: Elaborating entity "mux_96e" for hierarchy "Video:Fredi_Aschwanden|lpm_mux3:inst102|LPM_MUX:lpm_mux_component|mux_96e:auto_generated" +Info: Elaborating entity "lpm_ff5" for hierarchy "Video:Fredi_Aschwanden|lpm_ff5:inst11" +Info: Elaborating entity "lpm_ff" for hierarchy "Video:Fredi_Aschwanden|lpm_ff5:inst11|lpm_ff:lpm_ff_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|lpm_ff5:inst11|lpm_ff:lpm_ff_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|lpm_ff5:inst11|lpm_ff:lpm_ff_component" with the following parameter: + Info: Parameter "lpm_fftype" = "DFF" + Info: Parameter "lpm_type" = "LPM_FF" + Info: Parameter "lpm_width" = "8" +Info: Elaborating entity "lpm_mux2" for hierarchy "Video:Fredi_Aschwanden|lpm_mux2:inst25" +Info: Elaborating entity "LPM_MUX" for hierarchy "Video:Fredi_Aschwanden|lpm_mux2:inst25|LPM_MUX:lpm_mux_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|lpm_mux2:inst25|LPM_MUX:lpm_mux_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|lpm_mux2:inst25|LPM_MUX:lpm_mux_component" with the following parameter: + Info: Parameter "LPM_WIDTH" = "8" + Info: Parameter "LPM_SIZE" = "16" + Info: Parameter "LPM_WIDTHS" = "4" + Info: Parameter "LPM_PIPELINE" = "2" + Info: Parameter "LPM_TYPE" = "LPM_MUX" + Info: Parameter "LPM_HINT" = "UNUSED" +Info: Found 1 design units, including 1 entities, in source file db/mux_mpe.tdf + Info: Found entity 1: mux_mpe +Info: Elaborating entity "mux_mpe" for hierarchy "Video:Fredi_Aschwanden|lpm_mux2:inst25|LPM_MUX:lpm_mux_component|mux_mpe:auto_generated" +Info: Elaborating entity "lpm_mux4" for hierarchy "Video:Fredi_Aschwanden|lpm_mux4:inst81" +Info: Elaborating entity "LPM_MUX" for hierarchy "Video:Fredi_Aschwanden|lpm_mux4:inst81|LPM_MUX:lpm_mux_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|lpm_mux4:inst81|LPM_MUX:lpm_mux_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|lpm_mux4:inst81|LPM_MUX:lpm_mux_component" with the following parameter: + Info: Parameter "LPM_WIDTH" = "7" + Info: Parameter "LPM_SIZE" = "2" + Info: Parameter "LPM_WIDTHS" = "1" + Info: Parameter "LPM_PIPELINE" = "0" + Info: Parameter "LPM_TYPE" = "LPM_MUX" + Info: Parameter "LPM_HINT" = "UNUSED" +Info: Found 1 design units, including 1 entities, in source file db/mux_f6e.tdf + Info: Found entity 1: mux_f6e +Info: Elaborating entity "mux_f6e" for hierarchy "Video:Fredi_Aschwanden|lpm_mux4:inst81|LPM_MUX:lpm_mux_component|mux_f6e:auto_generated" +Info: Elaborating entity "lpm_constant3" for hierarchy "Video:Fredi_Aschwanden|lpm_constant3:inst82" +Info: Elaborating entity "lpm_constant" for hierarchy "Video:Fredi_Aschwanden|lpm_constant3:inst82|lpm_constant:lpm_constant_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|lpm_constant3:inst82|lpm_constant:lpm_constant_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|lpm_constant3:inst82|lpm_constant:lpm_constant_component" with the following parameter: + Info: Parameter "lpm_cvalue" = "0" + Info: Parameter "lpm_hint" = "ENABLE_RUNTIME_MOD=NO" + Info: Parameter "lpm_type" = "LPM_CONSTANT" + Info: Parameter "lpm_width" = "7" +Info: Elaborating entity "altddio_out2" for hierarchy "Video:Fredi_Aschwanden|altddio_out2:inst5" +Info: Elaborating entity "altddio_out" for hierarchy "Video:Fredi_Aschwanden|altddio_out2:inst5|altddio_out:altddio_out_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|altddio_out2:inst5|altddio_out:altddio_out_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|altddio_out2:inst5|altddio_out:altddio_out_component" with the following parameter: + Info: Parameter "extend_oe_disable" = "UNUSED" + Info: Parameter "intended_device_family" = "Cyclone III" + Info: Parameter "invert_output" = "OFF" + Info: Parameter "lpm_type" = "altddio_out" + Info: Parameter "oe_reg" = "UNUSED" + Info: Parameter "power_up_high" = "OFF" + Info: Parameter "width" = "24" +Info: Found 1 design units, including 1 entities, in source file db/ddio_out_o2f.tdf + Info: Found entity 1: ddio_out_o2f +Info: Elaborating entity "ddio_out_o2f" for hierarchy "Video:Fredi_Aschwanden|altddio_out2:inst5|altddio_out:altddio_out_component|ddio_out_o2f:auto_generated" +Info: Elaborating entity "lpm_mux6" for hierarchy "Video:Fredi_Aschwanden|lpm_mux6:inst7" +Info: Elaborating entity "LPM_MUX" for hierarchy "Video:Fredi_Aschwanden|lpm_mux6:inst7|LPM_MUX:lpm_mux_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|lpm_mux6:inst7|LPM_MUX:lpm_mux_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|lpm_mux6:inst7|LPM_MUX:lpm_mux_component" with the following parameter: + Info: Parameter "LPM_WIDTH" = "24" + Info: Parameter "LPM_SIZE" = "8" + Info: Parameter "LPM_WIDTHS" = "3" + Info: Parameter "LPM_PIPELINE" = "2" + Info: Parameter "LPM_TYPE" = "LPM_MUX" + Info: Parameter "LPM_HINT" = "UNUSED" +Info: Found 1 design units, including 1 entities, in source file db/mux_kpe.tdf + Info: Found entity 1: mux_kpe +Info: Elaborating entity "mux_kpe" for hierarchy "Video:Fredi_Aschwanden|lpm_mux6:inst7|LPM_MUX:lpm_mux_component|mux_kpe:auto_generated" +Info: Elaborating entity "lpm_ff3" for hierarchy "Video:Fredi_Aschwanden|lpm_ff3:inst49" +Info: Elaborating entity "lpm_ff" for hierarchy "Video:Fredi_Aschwanden|lpm_ff3:inst49|lpm_ff:lpm_ff_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|lpm_ff3:inst49|lpm_ff:lpm_ff_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|lpm_ff3:inst49|lpm_ff:lpm_ff_component" with the following parameter: + Info: Parameter "lpm_fftype" = "DFF" + Info: Parameter "lpm_type" = "LPM_FF" + Info: Parameter "lpm_width" = "24" +Info: Elaborating entity "lpm_constant0" for hierarchy "Video:Fredi_Aschwanden|lpm_constant0:inst59" +Info: Elaborating entity "lpm_constant" for hierarchy "Video:Fredi_Aschwanden|lpm_constant0:inst59|lpm_constant:lpm_constant_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|lpm_constant0:inst59|lpm_constant:lpm_constant_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|lpm_constant0:inst59|lpm_constant:lpm_constant_component" with the following parameter: + Info: Parameter "lpm_cvalue" = "0" + Info: Parameter "lpm_hint" = "ENABLE_RUNTIME_MOD=NO" + Info: Parameter "lpm_type" = "LPM_CONSTANT" + Info: Parameter "lpm_width" = "5" +Info: Elaborating entity "lpm_constant1" for hierarchy "Video:Fredi_Aschwanden|lpm_constant1:inst77" +Info: Elaborating entity "lpm_constant" for hierarchy "Video:Fredi_Aschwanden|lpm_constant1:inst77|lpm_constant:lpm_constant_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|lpm_constant1:inst77|lpm_constant:lpm_constant_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|lpm_constant1:inst77|lpm_constant:lpm_constant_component" with the following parameter: + Info: Parameter "lpm_cvalue" = "0" + Info: Parameter "lpm_hint" = "ENABLE_RUNTIME_MOD=NO" + Info: Parameter "lpm_type" = "LPM_CONSTANT" + Info: Parameter "lpm_width" = "2" +Info: Elaborating entity "lpm_ff4" for hierarchy "Video:Fredi_Aschwanden|lpm_ff4:inst10" +Info: Elaborating entity "lpm_ff" for hierarchy "Video:Fredi_Aschwanden|lpm_ff4:inst10|lpm_ff:lpm_ff_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|lpm_ff4:inst10|lpm_ff:lpm_ff_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|lpm_ff4:inst10|lpm_ff:lpm_ff_component" with the following parameter: + Info: Parameter "lpm_fftype" = "DFF" + Info: Parameter "lpm_type" = "LPM_FF" + Info: Parameter "lpm_width" = "16" +Info: Elaborating entity "lpm_mux1" for hierarchy "Video:Fredi_Aschwanden|lpm_mux1:inst24" +Info: Elaborating entity "LPM_MUX" for hierarchy "Video:Fredi_Aschwanden|lpm_mux1:inst24|LPM_MUX:lpm_mux_component" +Info: Assertion information: Value of LPM_PIPELINE parameter (4) should be lower -- use 1 for best performance/utilization +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|lpm_mux1:inst24|LPM_MUX:lpm_mux_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|lpm_mux1:inst24|LPM_MUX:lpm_mux_component" with the following parameter: + Info: Parameter "LPM_WIDTH" = "16" + Info: Parameter "LPM_SIZE" = "8" + Info: Parameter "LPM_WIDTHS" = "3" + Info: Parameter "LPM_PIPELINE" = "4" + Info: Parameter "LPM_TYPE" = "LPM_MUX" + Info: Parameter "LPM_HINT" = "UNUSED" +Info: Assertion information: Value of LPM_PIPELINE parameter 4 should be lower -- use 1 for best performance/utilization +Info: Found 1 design units, including 1 entities, in source file db/mux_npe.tdf + Info: Found entity 1: mux_npe +Info: Elaborating entity "mux_npe" for hierarchy "Video:Fredi_Aschwanden|lpm_mux1:inst24|LPM_MUX:lpm_mux_component|mux_npe:auto_generated" +Info: Elaborating entity "lpm_constant2" for hierarchy "Video:Fredi_Aschwanden|lpm_constant2:inst23" +Info: Elaborating entity "lpm_constant" for hierarchy "Video:Fredi_Aschwanden|lpm_constant2:inst23|lpm_constant:lpm_constant_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|lpm_constant2:inst23|lpm_constant:lpm_constant_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|lpm_constant2:inst23|lpm_constant:lpm_constant_component" with the following parameter: + Info: Parameter "lpm_cvalue" = "0" + Info: Parameter "lpm_hint" = "ENABLE_RUNTIME_MOD=NO" + Info: Parameter "lpm_type" = "LPM_CONSTANT" + Info: Parameter "lpm_width" = "8" +Info: Elaborating entity "lpm_mux0" for hierarchy "Video:Fredi_Aschwanden|lpm_mux0:inst21" +Info: Elaborating entity "LPM_MUX" for hierarchy "Video:Fredi_Aschwanden|lpm_mux0:inst21|LPM_MUX:lpm_mux_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|lpm_mux0:inst21|LPM_MUX:lpm_mux_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|lpm_mux0:inst21|LPM_MUX:lpm_mux_component" with the following parameter: + Info: Parameter "LPM_WIDTH" = "32" + Info: Parameter "LPM_SIZE" = "4" + Info: Parameter "LPM_WIDTHS" = "2" + Info: Parameter "LPM_PIPELINE" = "4" + Info: Parameter "LPM_TYPE" = "LPM_MUX" + Info: Parameter "LPM_HINT" = "UNUSED" +Info: Found 1 design units, including 1 entities, in source file db/mux_gpe.tdf + Info: Found entity 1: mux_gpe +Info: Elaborating entity "mux_gpe" for hierarchy "Video:Fredi_Aschwanden|lpm_mux0:inst21|LPM_MUX:lpm_mux_component|mux_gpe:auto_generated" +Info: Elaborating entity "altddio_out0" for hierarchy "Video:Fredi_Aschwanden|altddio_out0:inst2" +Info: Elaborating entity "altddio_out" for hierarchy "Video:Fredi_Aschwanden|altddio_out0:inst2|altddio_out:altddio_out_component" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|altddio_out0:inst2|altddio_out:altddio_out_component" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|altddio_out0:inst2|altddio_out:altddio_out_component" with the following parameter: + Info: Parameter "extend_oe_disable" = "UNUSED" + Info: Parameter "intended_device_family" = "Cyclone III" + Info: Parameter "invert_output" = "ON" + Info: Parameter "lpm_type" = "altddio_out" + Info: Parameter "oe_reg" = "UNUSED" + Info: Parameter "power_up_high" = "ON" + Info: Parameter "width" = "4" +Info: Found 1 design units, including 1 entities, in source file db/ddio_out_are.tdf + Info: Found entity 1: ddio_out_are +Info: Elaborating entity "ddio_out_are" for hierarchy "Video:Fredi_Aschwanden|altddio_out0:inst2|altddio_out:altddio_out_component|ddio_out_are:auto_generated" +Info: Elaborating entity "altpll2" for hierarchy "altpll2:inst12" +Info: Elaborating entity "altpll" for hierarchy "altpll2:inst12|altpll:altpll_component" +Info: Elaborated megafunction instantiation "altpll2:inst12|altpll:altpll_component" +Info: Instantiated megafunction "altpll2:inst12|altpll:altpll_component" with the following parameter: + Info: Parameter "bandwidth_type" = "AUTO" + Info: Parameter "clk0_divide_by" = "1" + Info: Parameter "clk0_duty_cycle" = "50" + Info: Parameter "clk0_multiply_by" = "4" + Info: Parameter "clk0_phase_shift" = "5051" + Info: Parameter "clk1_divide_by" = "1" + Info: Parameter "clk1_duty_cycle" = "50" + Info: Parameter "clk1_multiply_by" = "4" + Info: Parameter "clk1_phase_shift" = "0" + Info: Parameter "clk2_divide_by" = "1" + Info: Parameter "clk2_duty_cycle" = "50" + Info: Parameter "clk2_multiply_by" = "4" + Info: Parameter "clk2_phase_shift" = "3788" + Info: Parameter "clk3_divide_by" = "1" + Info: Parameter "clk3_duty_cycle" = "50" + Info: Parameter "clk3_multiply_by" = "4" + Info: Parameter "clk3_phase_shift" = "2210" + Info: Parameter "clk4_divide_by" = "1" + Info: Parameter "clk4_duty_cycle" = "50" + Info: Parameter "clk4_multiply_by" = "2" + Info: Parameter "clk4_phase_shift" = "11364" + Info: Parameter "compensate_clock" = "CLK0" + Info: Parameter "inclk0_input_frequency" = "30303" + Info: Parameter "intended_device_family" = "Cyclone III" + Info: Parameter "lpm_type" = "altpll" + Info: Parameter "operation_mode" = "SOURCE_SYNCHRONOUS" + Info: Parameter "pll_type" = "AUTO" + Info: Parameter "port_activeclock" = "PORT_UNUSED" + Info: Parameter "port_areset" = "PORT_UNUSED" + Info: Parameter "port_clkbad0" = "PORT_UNUSED" + Info: Parameter "port_clkbad1" = "PORT_UNUSED" + Info: Parameter "port_clkloss" = "PORT_UNUSED" + Info: Parameter "port_clkswitch" = "PORT_UNUSED" + Info: Parameter "port_configupdate" = "PORT_UNUSED" + Info: Parameter "port_fbin" = "PORT_UNUSED" + Info: Parameter "port_inclk0" = "PORT_USED" + Info: Parameter "port_inclk1" = "PORT_UNUSED" + Info: Parameter "port_locked" = "PORT_UNUSED" + Info: Parameter "port_pfdena" = "PORT_UNUSED" + Info: Parameter "port_phasecounterselect" = "PORT_UNUSED" + Info: Parameter "port_phasedone" = "PORT_UNUSED" + Info: Parameter "port_phasestep" = "PORT_UNUSED" + Info: Parameter "port_phaseupdown" = "PORT_UNUSED" + Info: Parameter "port_pllena" = "PORT_UNUSED" + Info: Parameter "port_scanaclr" = "PORT_UNUSED" + Info: Parameter "port_scanclk" = "PORT_UNUSED" + Info: Parameter "port_scanclkena" = "PORT_UNUSED" + Info: Parameter "port_scandata" = "PORT_UNUSED" + Info: Parameter "port_scandataout" = "PORT_UNUSED" + Info: Parameter "port_scandone" = "PORT_UNUSED" + Info: Parameter "port_scanread" = "PORT_UNUSED" + Info: Parameter "port_scanwrite" = "PORT_UNUSED" + Info: Parameter "port_clk0" = "PORT_USED" + Info: Parameter "port_clk1" = "PORT_USED" + Info: Parameter "port_clk2" = "PORT_USED" + Info: Parameter "port_clk3" = "PORT_USED" + Info: Parameter "port_clk4" = "PORT_USED" + Info: Parameter "port_clk5" = "PORT_UNUSED" + Info: Parameter "port_clkena0" = "PORT_UNUSED" + Info: Parameter "port_clkena1" = "PORT_UNUSED" + Info: Parameter "port_clkena2" = "PORT_UNUSED" + Info: Parameter "port_clkena3" = "PORT_UNUSED" + Info: Parameter "port_clkena4" = "PORT_UNUSED" + Info: Parameter "port_clkena5" = "PORT_UNUSED" + Info: Parameter "port_extclk0" = "PORT_UNUSED" + Info: Parameter "port_extclk1" = "PORT_UNUSED" + Info: Parameter "port_extclk2" = "PORT_UNUSED" + Info: Parameter "port_extclk3" = "PORT_UNUSED" + Info: Parameter "width_clock" = "5" +Info: Found 1 design units, including 1 entities, in source file db/altpll_isv2.tdf + Info: Found entity 1: altpll_isv2 +Info: Elaborating entity "altpll_isv2" for hierarchy "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated" +Warning: Using design file altpll4.tdf, which is not specified as a design file for the current project, but contains definitions for 1 design units and 1 entities in project + Info: Found entity 1: altpll4 +Info: Elaborating entity "altpll4" for hierarchy "altpll4:inst22" +Info: Elaborating entity "altpll" for hierarchy "altpll4:inst22|altpll:altpll_component" +Info: Elaborated megafunction instantiation "altpll4:inst22|altpll:altpll_component" +Info: Instantiated megafunction "altpll4:inst22|altpll:altpll_component" with the following parameter: + Info: Parameter "bandwidth_type" = "AUTO" + Info: Parameter "clk0_divide_by" = "1" + Info: Parameter "clk0_duty_cycle" = "50" + Info: Parameter "clk0_multiply_by" = "2" + Info: Parameter "clk0_phase_shift" = "0" + Info: Parameter "compensate_clock" = "CLK0" + Info: Parameter "inclk0_input_frequency" = "20833" + Info: Parameter "intended_device_family" = "Cyclone III" + Info: Parameter "lpm_type" = "altpll" + Info: Parameter "operation_mode" = "NORMAL" + Info: Parameter "pll_type" = "AUTO" + Info: Parameter "port_activeclock" = "PORT_UNUSED" + Info: Parameter "port_areset" = "PORT_USED" + Info: Parameter "port_clk0" = "PORT_USED" + Info: Parameter "port_clk1" = "PORT_UNUSED" + Info: Parameter "port_clk2" = "PORT_UNUSED" + Info: Parameter "port_clk3" = "PORT_UNUSED" + Info: Parameter "port_clk4" = "PORT_UNUSED" + Info: Parameter "port_clk5" = "PORT_UNUSED" + Info: Parameter "port_clkbad0" = "PORT_UNUSED" + Info: Parameter "port_clkbad1" = "PORT_UNUSED" + Info: Parameter "port_clkena0" = "PORT_UNUSED" + Info: Parameter "port_clkena1" = "PORT_UNUSED" + Info: Parameter "port_clkena2" = "PORT_UNUSED" + Info: Parameter "port_clkena3" = "PORT_UNUSED" + Info: Parameter "port_clkena4" = "PORT_UNUSED" + Info: Parameter "port_clkena5" = "PORT_UNUSED" + Info: Parameter "port_clkloss" = "PORT_UNUSED" + Info: Parameter "port_clkswitch" = "PORT_UNUSED" + Info: Parameter "port_configupdate" = "PORT_USED" + Info: Parameter "port_extclk0" = "PORT_UNUSED" + Info: Parameter "port_extclk1" = "PORT_UNUSED" + Info: Parameter "port_extclk2" = "PORT_UNUSED" + Info: Parameter "port_extclk3" = "PORT_UNUSED" + Info: Parameter "port_fbin" = "PORT_UNUSED" + Info: Parameter "port_inclk0" = "PORT_USED" + Info: Parameter "port_inclk1" = "PORT_UNUSED" + Info: Parameter "port_locked" = "PORT_USED" + Info: Parameter "port_pfdena" = "PORT_UNUSED" + Info: Parameter "port_phasecounterselect" = "PORT_UNUSED" + Info: Parameter "port_phasedone" = "PORT_UNUSED" + Info: Parameter "port_phasestep" = "PORT_UNUSED" + Info: Parameter "port_phaseupdown" = "PORT_UNUSED" + Info: Parameter "port_pllena" = "PORT_UNUSED" + Info: Parameter "port_scanaclr" = "PORT_UNUSED" + Info: Parameter "port_scanclk" = "PORT_USED" + Info: Parameter "port_scanclkena" = "PORT_USED" + Info: Parameter "port_scandata" = "PORT_USED" + Info: Parameter "port_scandataout" = "PORT_USED" + Info: Parameter "port_scandone" = "PORT_USED" + Info: Parameter "port_scanread" = "PORT_UNUSED" + Info: Parameter "port_scanwrite" = "PORT_UNUSED" + Info: Parameter "scan_chain_mif_file" = "altpll4.mif" + Info: Parameter "self_reset_on_loss_lock" = "OFF" + Info: Parameter "width_clock" = "5" + Info: Parameter "width_phasecounterselect" = "4" +Info: Found 1 design units, including 1 entities, in source file db/altpll_c6j2.tdf + Info: Found entity 1: altpll_c6j2 +Info: Elaborating entity "altpll_c6j2" for hierarchy "altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated" +Warning: Using design file altpll_reconfig1.tdf, which is not specified as a design file for the current project, but contains definitions for 1 design units and 1 entities in project + Info: Found entity 1: altpll_reconfig1 +Info: Elaborating entity "altpll_reconfig1" for hierarchy "altpll_reconfig1:inst7" +Warning: Using design file altpll_reconfig1_pllrcfg_t4q.tdf, which is not specified as a design file for the current project, but contains definitions for 1 design units and 1 entities in project + Info: Found entity 1: altpll_reconfig1_pllrcfg_t4q +Info: Elaborating entity "altpll_reconfig1_pllrcfg_t4q" for hierarchy "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component" +Info: Elaborating entity "altsyncram" for hierarchy "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|altsyncram:altsyncram4" +Info: Elaborated megafunction instantiation "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|altsyncram:altsyncram4" +Info: Instantiated megafunction "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|altsyncram:altsyncram4" with the following parameter: + Info: Parameter "OPERATION_MODE" = "SINGLE_PORT" + Info: Parameter "WIDTH_A" = "1" + Info: Parameter "WIDTHAD_A" = "8" + Info: Parameter "NUMWORDS_A" = "144" + Info: Parameter "WIDTH_BYTEENA_A" = "1" +Info: Found 1 design units, including 1 entities, in source file db/altsyncram_46r.tdf + Info: Found entity 1: altsyncram_46r +Info: Elaborating entity "altsyncram_46r" for hierarchy "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|altsyncram:altsyncram4|altsyncram_46r:auto_generated" +Info: Elaborating entity "lpm_add_sub" for hierarchy "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_add_sub:add_sub5" +Info: Elaborated megafunction instantiation "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_add_sub:add_sub5" +Info: Instantiated megafunction "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_add_sub:add_sub5" with the following parameter: + Info: Parameter "LPM_WIDTH" = "9" +Info: Found 1 design units, including 1 entities, in source file db/add_sub_hpa.tdf + Info: Found entity 1: add_sub_hpa +Info: Elaborating entity "add_sub_hpa" for hierarchy "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_add_sub:add_sub5|add_sub_hpa:auto_generated" +Info: Elaborating entity "lpm_add_sub" for hierarchy "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_add_sub:add_sub6" +Info: Elaborated megafunction instantiation "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_add_sub:add_sub6" +Info: Instantiated megafunction "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_add_sub:add_sub6" with the following parameter: + Info: Parameter "LPM_WIDTH" = "8" +Info: Found 1 design units, including 1 entities, in source file db/add_sub_k8a.tdf + Info: Found entity 1: add_sub_k8a +Info: Elaborating entity "add_sub_k8a" for hierarchy "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_add_sub:add_sub6|add_sub_k8a:auto_generated" +Info: Elaborating entity "lpm_compare" for hierarchy "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_compare:cmpr7" +Info: Elaborated megafunction instantiation "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_compare:cmpr7" +Info: Instantiated megafunction "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_compare:cmpr7" with the following parameter: + Info: Parameter "LPM_WIDTH" = "8" +Info: Found 1 design units, including 1 entities, in source file db/cmpr_tnd.tdf + Info: Found entity 1: cmpr_tnd +Info: Elaborating entity "cmpr_tnd" for hierarchy "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_compare:cmpr7|cmpr_tnd:auto_generated" +Info: Elaborating entity "lpm_counter" for hierarchy "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr1" +Info: Elaborated megafunction instantiation "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr1" +Info: Instantiated megafunction "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr1" with the following parameter: + Info: Parameter "LPM_DIRECTION" = "DOWN" + Info: Parameter "lpm_modulus" = "144" + Info: Parameter "lpm_port_updown" = "PORT_UNUSED" + Info: Parameter "LPM_WIDTH" = "8" +Info: Found 1 design units, including 1 entities, in source file db/cntr_30l.tdf + Info: Found entity 1: cntr_30l +Info: Elaborating entity "cntr_30l" for hierarchy "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr1|cntr_30l:auto_generated" +Info: Elaborating entity "lpm_counter" for hierarchy "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr13" +Info: Elaborated megafunction instantiation "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr13" +Info: Instantiated megafunction "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr13" with the following parameter: + Info: Parameter "LPM_DIRECTION" = "DOWN" + Info: Parameter "lpm_port_updown" = "PORT_UNUSED" + Info: Parameter "LPM_WIDTH" = "6" +Info: Found 1 design units, including 1 entities, in source file db/cntr_qij.tdf + Info: Found entity 1: cntr_qij +Info: Elaborating entity "cntr_qij" for hierarchy "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr13|cntr_qij:auto_generated" +Info: Elaborating entity "lpm_counter" for hierarchy "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr14" +Info: Elaborated megafunction instantiation "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr14" +Info: Instantiated megafunction "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr14" with the following parameter: + Info: Parameter "LPM_DIRECTION" = "DOWN" + Info: Parameter "lpm_port_updown" = "PORT_UNUSED" + Info: Parameter "LPM_WIDTH" = "5" +Info: Found 1 design units, including 1 entities, in source file db/cntr_pij.tdf + Info: Found entity 1: cntr_pij +Info: Elaborating entity "cntr_pij" for hierarchy "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr14|cntr_pij:auto_generated" +Info: Elaborating entity "lpm_counter" for hierarchy "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr2" +Info: Elaborated megafunction instantiation "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr2" +Info: Instantiated megafunction "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr2" with the following parameter: + Info: Parameter "LPM_DIRECTION" = "UP" + Info: Parameter "lpm_port_updown" = "PORT_UNUSED" + Info: Parameter "LPM_WIDTH" = "8" +Info: Found 1 design units, including 1 entities, in source file db/cntr_9cj.tdf + Info: Found entity 1: cntr_9cj +Info: Elaborating entity "cntr_9cj" for hierarchy "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_counter:cntr2|cntr_9cj:auto_generated" +Info: Elaborating entity "lpm_decode" for hierarchy "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_decode:decode11" +Info: Elaborated megafunction instantiation "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_decode:decode11" +Info: Instantiated megafunction "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_decode:decode11" with the following parameter: + Info: Parameter "LPM_DECODES" = "5" + Info: Parameter "LPM_WIDTH" = "3" +Info: Found 1 design units, including 1 entities, in source file db/decode_2af.tdf + Info: Found entity 1: decode_2af +Info: Elaborating entity "decode_2af" for hierarchy "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|lpm_decode:decode11|decode_2af:auto_generated" +Info: Elaborating entity "DSP" for hierarchy "DSP:Mathias_Alles" +Info: Elaborating entity "interrupt_handler" for hierarchy "interrupt_handler:nobody" +Info: Elaborating entity "lpm_counter0" for hierarchy "lpm_counter0:inst18" +Info: Elaborating entity "lpm_counter" for hierarchy "lpm_counter0:inst18|lpm_counter:lpm_counter_component" +Info: Elaborated megafunction instantiation "lpm_counter0:inst18|lpm_counter:lpm_counter_component" +Info: Instantiated megafunction "lpm_counter0:inst18|lpm_counter:lpm_counter_component" with the following parameter: + Info: Parameter "lpm_direction" = "UP" + Info: Parameter "lpm_port_updown" = "PORT_UNUSED" + Info: Parameter "lpm_type" = "LPM_COUNTER" + Info: Parameter "lpm_width" = "18" +Info: Found 1 design units, including 1 entities, in source file db/cntr_mph.tdf + Info: Found entity 1: cntr_mph +Info: Elaborating entity "cntr_mph" for hierarchy "lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated" +Info: Elaborating entity "altddio_out3" for hierarchy "altddio_out3:inst5" +Info: Elaborating entity "altddio_out" for hierarchy "altddio_out3:inst5|altddio_out:altddio_out_component" +Info: Elaborated megafunction instantiation "altddio_out3:inst5|altddio_out:altddio_out_component" +Info: Instantiated megafunction "altddio_out3:inst5|altddio_out:altddio_out_component" with the following parameter: + Info: Parameter "extend_oe_disable" = "UNUSED" + Info: Parameter "intended_device_family" = "Cyclone III" + Info: Parameter "invert_output" = "OFF" + Info: Parameter "lpm_type" = "altddio_out" + Info: Parameter "oe_reg" = "UNUSED" + Info: Parameter "power_up_high" = "OFF" + Info: Parameter "width" = "1" +Info: Found 1 design units, including 1 entities, in source file db/ddio_out_31f.tdf + Info: Found entity 1: ddio_out_31f +Info: Elaborating entity "ddio_out_31f" for hierarchy "altddio_out3:inst5|altddio_out:altddio_out_component|ddio_out_31f:auto_generated" +Warning: Timing-Driven Synthesis is skipped because the Classic Timing Analyzer is turned on +Info: Inferred 3 megafunctions from design logic + Info: Inferred multiplier megafunction ("lpm_mult") from the following logic: "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|op_14" + Info: Inferred multiplier megafunction ("lpm_mult") from the following logic: "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|op_6" + Info: Inferred multiplier megafunction ("lpm_mult") from the following logic: "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|op_12" +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_mult:op_14" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_mult:op_14" with the following parameter: + Info: Parameter "LPM_WIDTHA" = "12" + Info: Parameter "LPM_WIDTHB" = "6" + Info: Parameter "LPM_WIDTHP" = "18" + Info: Parameter "LPM_WIDTHR" = "18" + Info: Parameter "LPM_WIDTHS" = "1" + Info: Parameter "LPM_REPRESENTATION" = "UNSIGNED" + Info: Parameter "INPUT_A_IS_CONSTANT" = "NO" + Info: Parameter "INPUT_B_IS_CONSTANT" = "NO" + Info: Parameter "MAXIMIZE_SPEED" = "5" +Info: Found 1 design units, including 1 entities, in source file db/mult_cat.tdf + Info: Found entity 1: mult_cat +Info: Elaborated megafunction instantiation "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_mult:op_6" +Info: Instantiated megafunction "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_mult:op_6" with the following parameter: + Info: Parameter "LPM_WIDTHA" = "12" + Info: Parameter "LPM_WIDTHB" = "5" + Info: Parameter "LPM_WIDTHP" = "17" + Info: Parameter "LPM_WIDTHR" = "17" + Info: Parameter "LPM_WIDTHS" = "1" + Info: Parameter "LPM_REPRESENTATION" = "UNSIGNED" + Info: Parameter "INPUT_A_IS_CONSTANT" = "NO" + Info: Parameter "INPUT_B_IS_CONSTANT" = "NO" + Info: Parameter "MAXIMIZE_SPEED" = "5" +Info: Found 1 design units, including 1 entities, in source file db/mult_aat.tdf + Info: Found entity 1: mult_aat +Warning: The following nodes have both tri-state and non-tri-state drivers + Warning: Inserted always-enabled tri-state buffer between "IO[17]" and its non-tri-state driver. + Warning: Inserted always-enabled tri-state buffer between "IO[16]" and its non-tri-state driver. + Warning: Inserted always-enabled tri-state buffer between "IO[15]" and its non-tri-state driver. + Warning: Inserted always-enabled tri-state buffer between "IO[14]" and its non-tri-state driver. + Warning: Inserted always-enabled tri-state buffer between "IO[13]" and its non-tri-state driver. + Warning: Inserted always-enabled tri-state buffer between "IO[12]" and its non-tri-state driver. + Warning: Inserted always-enabled tri-state buffer between "IO[11]" and its non-tri-state driver. + Warning: Inserted always-enabled tri-state buffer between "IO[10]" and its non-tri-state driver. + Warning: Inserted always-enabled tri-state buffer between "IO[9]" and its non-tri-state driver. + Warning: Inserted always-enabled tri-state buffer between "IO[8]" and its non-tri-state driver. + Warning: Inserted always-enabled tri-state buffer between "IO[7]" and its non-tri-state driver. + Warning: Inserted always-enabled tri-state buffer between "IO[6]" and its non-tri-state driver. + Warning: Inserted always-enabled tri-state buffer between "IO[5]" and its non-tri-state driver. + Warning: Inserted always-enabled tri-state buffer between "IO[4]" and its non-tri-state driver. + Warning: Inserted always-enabled tri-state buffer between "IO[3]" and its non-tri-state driver. + Warning: Inserted always-enabled tri-state buffer between "IO[2]" and its non-tri-state driver. + Warning: Inserted always-enabled tri-state buffer between "IO[1]" and its non-tri-state driver. + Warning: Inserted always-enabled tri-state buffer between "IO[0]" and its non-tri-state driver. +Info: Registers with preset signals will power-up high +Info: DEV_CLRn pin will set, and not reset, register with preset signal due to NOT Gate Push-Back +Warning: TRI or OPNDRN buffers permanently disabled + Warning: Node "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|SCSI_PAR~synth" + Warning: Node "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|nSCSI_RST~synth" + Warning: Node "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|SCSI_D[7]~synth" + Warning: Node "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|SCSI_D[6]~synth" + Warning: Node "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|SCSI_D[5]~synth" + Warning: Node "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|SCSI_D[4]~synth" + Warning: Node "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|SCSI_D[3]~synth" + Warning: Node "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|SCSI_D[2]~synth" + Warning: Node "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|SCSI_D[1]~synth" + Warning: Node "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|SCSI_D[0]~synth" +Warning: TRI or OPNDRN buffers permanently enabled + Warning: Node "IO~synth" + Warning: Node "IO~synth" + Warning: Node "IO~synth" + Warning: Node "IO~synth" + Warning: Node "IO~synth" + Warning: Node "IO~synth" + Warning: Node "IO~synth" + Warning: Node "IO~synth" + Warning: Node "IO~synth" + Warning: Node "IO~synth" + Warning: Node "IO~synth" + Warning: Node "IO~synth" + Warning: Node "IO~synth" + Warning: Node "IO~synth" + Warning: Node "IO~synth" + Warning: Node "IO~synth" + Warning: Node "IO~synth" + Warning: Node "IO~synth" + Warning: Node "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|nSCSI_SEL~synth" + Warning: Node "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|nSCSI_BUSY~synth" +Warning: Output pins are stuck at VCC or GND + Warning (13410): Pin "nACSI_ACK" is stuck at VCC + Warning (13410): Pin "nACSI_CS" is stuck at VCC + Warning (13410): Pin "ACSI_DIR" is stuck at GND + Warning (13410): Pin "nSCSI_ACK" is stuck at VCC + Warning (13410): Pin "nSCSI_ATN" is stuck at VCC + Warning (13410): Pin "SCSI_DIR" is stuck at VCC + Warning (13410): Pin "nSYNC" is stuck at GND +Info: 78 registers lost all their fanouts during netlist optimizations. The first 78 are displayed below. + Info: Register "interrupt_handler:nobody|INT_CLEAR[31]" lost all its fanouts during netlist optimizations. + Info: Register "interrupt_handler:nobody|INT_CLEAR[30]" lost all its fanouts during netlist optimizations. + Info: Register "interrupt_handler:nobody|INT_CLEAR[29]" lost all its fanouts during netlist optimizations. + Info: Register "interrupt_handler:nobody|INT_CLEAR[28]" lost all its fanouts during netlist optimizations. + Info: Register "interrupt_handler:nobody|INT_CLEAR[27]" lost all its fanouts during netlist optimizations. + Info: Register "interrupt_handler:nobody|INT_CLEAR[26]" lost all its fanouts during netlist optimizations. + Info: Register "interrupt_handler:nobody|INT_CLEAR[25]" lost all its fanouts during netlist optimizations. + Info: Register "interrupt_handler:nobody|INT_CLEAR[24]" lost all its fanouts during netlist optimizations. + Info: Register "interrupt_handler:nobody|INT_CLEAR[23]" lost all its fanouts during netlist optimizations. + Info: Register "interrupt_handler:nobody|INT_CLEAR[22]" lost all its fanouts during netlist optimizations. + Info: Register "interrupt_handler:nobody|INT_CLEAR[21]" lost all its fanouts during netlist optimizations. + Info: Register "interrupt_handler:nobody|INT_CLEAR[20]" lost all its fanouts during netlist optimizations. + Info: Register "interrupt_handler:nobody|INT_CLEAR[19]" lost all its fanouts during netlist optimizations. + Info: Register "interrupt_handler:nobody|INT_CLEAR[18]" lost all its fanouts during netlist optimizations. + Info: Register "interrupt_handler:nobody|INT_CLEAR[17]" lost all its fanouts during netlist optimizations. + Info: Register "interrupt_handler:nobody|INT_CLEAR[16]" lost all its fanouts during netlist optimizations. + Info: Register "interrupt_handler:nobody|INT_CLEAR[15]" lost all its fanouts during netlist optimizations. + Info: Register "interrupt_handler:nobody|INT_CLEAR[14]" lost all its fanouts during netlist optimizations. + Info: Register "interrupt_handler:nobody|INT_CLEAR[13]" lost all its fanouts during netlist optimizations. + Info: Register "interrupt_handler:nobody|INT_CLEAR[12]" lost all its fanouts during netlist optimizations. + Info: Register "interrupt_handler:nobody|INT_CLEAR[11]" lost all its fanouts during netlist optimizations. + Info: Register "interrupt_handler:nobody|INT_CLEAR[10]" lost all its fanouts during netlist optimizations. + Info: Register "interrupt_handler:nobody|INT_CLEAR[7]" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|FM_In" lost all its fanouts during netlist optimizations. + Info: Register "Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_5n7:usedw_counter|counter_reg_bit[6]" lost all its fanouts during netlist optimizations. + Info: Register "Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_5n7:usedw_counter|counter_reg_bit[5]" lost all its fanouts during netlist optimizations. + Info: Register "Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_5n7:usedw_counter|counter_reg_bit[4]" lost all its fanouts during netlist optimizations. + Info: Register "Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_5n7:usedw_counter|counter_reg_bit[3]" lost all its fanouts during netlist optimizations. + Info: Register "Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_5n7:usedw_counter|counter_reg_bit[2]" lost all its fanouts during netlist optimizations. + Info: Register "Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_5n7:usedw_counter|counter_reg_bit[1]" lost all its fanouts during netlist optimizations. + Info: Register "Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_5n7:usedw_counter|counter_reg_bit[0]" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|\P_WAVSTRB:TMP" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_MIDI|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|\P_IRQ:DCD_TRANS" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|\P_IRQ:DCD_TRANS" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|AIP" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|LA" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|BSY_ERR" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS|TCR[3]" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS|IDR[5]" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS|IDR[4]" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS|IDR[3]" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS|IDR[2]" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS|IDR[1]" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS|IDR[0]" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS|\PARITY:LOCK" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\FM_ENCODER:CNT[7]" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\FM_ENCODER:CNT[6]" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\FM_ENCODER:CNT[5]" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\FM_ENCODER:CNT[4]" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\FM_ENCODER:CNT[3]" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\FM_ENCODER:CNT[2]" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\FM_ENCODER:CNT[1]" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\FM_ENCODER:CNT[0]" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|BUS_FREE" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS|\REGISTERS:BSY_LOCK" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|\P_BUSFREE:TMP[2]" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|\P_BUSFREE:TMP[1]" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|\P_BUSFREE:TMP[0]" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS|IDR[7]" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_REGISTERS:I_REGISTERS|IDR[6]" lost all its fanouts during netlist optimizations. + Info: Register "Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_bwp|dffe21a[9]" lost all its fanouts during netlist optimizations. + Info: Register "Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_brp|dffe21a[9]" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|dffpipe_gd9:rs_bwp|dffe15a[8]" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|dffpipe_pe9:rs_brp|dffe16a[10]" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|dffpipe_pe9:ws_bwp|dffe16a[10]" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|dffpipe_gd9:ws_brp|dffe15a[8]" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|DMA_STATE.IDLE" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|DMA_STATE.DMA_STEP_1" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|DMA_STATE.DMA_STEP_2" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|DMA_STATE.DMA_STEP_3" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|DMA_STATE.DMA_STEP_4" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|CTRL_STATE.IDLE" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|CTRL_STATE.DMA_SEND" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|CTRL_STATE.DMA_TARG_RCV" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|CTRL_STATE.DMA_INIT_RCV" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF5380_TOP_SOC:I_SCSI|WF5380_CONTROL:I_CONTROL|CTRL_STATE.WAIT_2200ns" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|MFM_STATE.A_00" lost all its fanouts during netlist optimizations. + Info: Register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|\ADDER:ADDER_DATA[12]" lost all its fanouts during netlist optimizations. +Info: Found the following redundant logic cells in design + Info (17048): Logic cell "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|cuda_combout_wire[0]" + Info (17048): Logic cell "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|cuda_combout_wire[1]" + Info (17048): Logic cell "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|cuda_combout_wire[2]" +Warning: Design contains 18 input pin(s) that do not drive logic + Warning (15610): No output dependent on input pin "nFB_BURST" + Warning (15610): No output dependent on input pin "nACSI_DRQ" + Warning (15610): No output dependent on input pin "nACSI_INT" + Warning (15610): No output dependent on input pin "nSCSI_DRQ" + Warning (15610): No output dependent on input pin "nSCSI_MSG" + Warning (15610): No output dependent on input pin "nDCHG" + Warning (15610): No output dependent on input pin "SD_DATA0" + Warning (15610): No output dependent on input pin "SD_DATA1" + Warning (15610): No output dependent on input pin "SD_DATA2" + Warning (15610): No output dependent on input pin "SD_CARD_DEDECT" + Warning (15610): No output dependent on input pin "SD_WP" + Warning (15610): No output dependent on input pin "nDACK0" + Warning (15610): No output dependent on input pin "WP_CF_CARD" + Warning (15610): No output dependent on input pin "nSCSI_C_D" + Warning (15610): No output dependent on input pin "nSCSI_I_O" + Warning (15610): No output dependent on input pin "nFB_CS3" + Warning (15610): No output dependent on input pin "TOUT0" + Warning (15610): No output dependent on input pin "nMASTER" +Info: Implemented 11489 device resources after synthesis - the final resource count might be different + Info: Implemented 51 input pins + Info: Implemented 112 output pins + Info: Implemented 132 bidirectional pins + Info: Implemented 10796 logic cells + Info: Implemented 324 RAM segments + Info: Implemented 4 PLLs + Info: Implemented 6 DSP elements +Info: Quartus II Analysis & Synthesis was successful. 0 errors, 143 warnings + Info: Peak virtual memory: 347 megabytes + Info: Processing ended: Wed Dec 15 02:21:56 2010 + Info: Elapsed time: 00:01:19 + Info: Total CPU time (on all processors): 00:01:20 + + diff --git a/FPGA_quartus/firebee1.map.summary b/FPGA_quartus/firebee1.map.summary new file mode 100644 index 0000000..f8da91e --- /dev/null +++ b/FPGA_quartus/firebee1.map.summary @@ -0,0 +1,14 @@ +Analysis & Synthesis Status : Successful - Wed Dec 15 02:21:55 2010 +Quartus II Version : 9.1 Build 350 03/24/2010 SP 2 SJ Web Edition +Revision Name : firebee1 +Top-level Entity Name : firebee1 +Family : Cyclone III +Total logic elements : 10,706 + Total combinational functions : 8,060 + Dedicated logic registers : 4,612 +Total registers : 4740 +Total pins : 295 +Total virtual pins : 0 +Total memory bits : 109,344 +Embedded Multiplier 9-bit elements : 6 +Total PLLs : 4 diff --git a/FPGA_quartus/firebee1.pin b/FPGA_quartus/firebee1.pin new file mode 100644 index 0000000..50b8dd7 --- /dev/null +++ b/FPGA_quartus/firebee1.pin @@ -0,0 +1,557 @@ + -- Copyright (C) 1991-2010 Altera Corporation + -- Your use of Altera Corporation's design tools, logic functions + -- and other software and tools, and its AMPP partner logic + -- functions, and any output files from any of the foregoing + -- (including device programming or simulation files), and any + -- associated documentation or information are expressly subject + -- to the terms and conditions of the Altera Program License + -- Subscription Agreement, Altera MegaCore Function License + -- Agreement, or other applicable license agreement, including, + -- without limitation, that your use is for the sole purpose of + -- programming logic devices manufactured by Altera and sold by + -- Altera or its authorized distributors. Please refer to the + -- applicable agreement for further details. + -- + -- This is a Quartus II output file. It is for reporting purposes only, and is + -- not intended for use as a Quartus II input file. This file cannot be used + -- to make Quartus II pin assignments - for instructions on how to make pin + -- assignments, please see Quartus II help. + --------------------------------------------------------------------------------- + + + + --------------------------------------------------------------------------------- + -- NC : No Connect. This pin has no internal connection to the device. + -- DNU : Do Not Use. This pin MUST NOT be connected. + -- VCCINT : Dedicated power pin, which MUST be connected to VCC (1.2V). + -- VCCIO : Dedicated power pin, which MUST be connected to VCC + -- of its bank. + -- Bank 1: 3.3V + -- Bank 2: 3.3V + -- Bank 3: 3.3V + -- Bank 4: 2.5V + -- Bank 5: 2.5V + -- Bank 6: 3.0V + -- Bank 7: 3.3V + -- Bank 8: 3.3V + -- GND : Dedicated ground pin. Dedicated GND pins MUST be connected to GND. + -- It can also be used to report unused dedicated pins. The connection + -- on the board for unused dedicated pins depends on whether this will + -- be used in a future design. One example is device migration. When + -- using device migration, refer to the device pin-tables. If it is a + -- GND pin in the pin table or if it will not be used in a future design + -- for another purpose the it MUST be connected to GND. If it is an unused + -- dedicated pin, then it can be connected to a valid signal on the board + -- (low, high, or toggling) if that signal is required for a different + -- revision of the design. + -- GND+ : Unused input pin. It can also be used to report unused dual-purpose pins. + -- This pin should be connected to GND. It may also be connected to a + -- valid signal on the board (low, high, or toggling) if that signal + -- is required for a different revision of the design. + -- GND* : Unused I/O pin. For transceiver I/O banks, connect each pin marked GND* + -- either individually through a 10k Ohm resistor to GND or tie all pins + -- together and connect through a single 10k Ohm resistor to GND. + -- For non-transceiver I/O banks, connect each pin marked GND* directly to GND + -- or leave it unconnected. + -- RESERVED : Unused I/O pin, which MUST be left unconnected. + -- RESERVED_INPUT : Pin is tri-stated and should be connected to the board. + -- RESERVED_INPUT_WITH_WEAK_PULLUP : Pin is tri-stated with internal weak pull-up resistor. + -- RESERVED_INPUT_WITH_BUS_HOLD : Pin is tri-stated with bus-hold circuitry. + -- RESERVED_OUTPUT_DRIVEN_HIGH : Pin is output driven high. + --------------------------------------------------------------------------------- + + + + --------------------------------------------------------------------------------- + -- Pin directions (input, output or bidir) are based on device operating in user mode. + --------------------------------------------------------------------------------- + +Quartus II Version 9.1 Build 350 03/24/2010 Service Pack 2 SJ Web Edition +CHIP "firebee1" ASSIGNED TO AN: EP3C40F484C6 + +Pin Name/Usage : Location : Dir. : I/O Standard : Voltage : I/O Bank : User Assignment +------------------------------------------------------------------------------------------------------------- +GND : A1 : gnd : : : : +VCCIO8 : A2 : power : : 3.3V : 8 : +LP_D[6] : A3 : bidir : 3.3-V LVTTL : : 8 : Y +nSRBLE : A4 : output : 3.3-V LVTTL : : 8 : Y +SRD[1] : A5 : bidir : 3.3-V LVTTL : : 8 : Y +IO[3] : A6 : bidir : 3.3-V LVTTL : : 8 : Y +IO[1] : A7 : bidir : 3.3-V LVTTL : : 8 : Y +IO[0] : A8 : bidir : 3.3-V LVTTL : : 8 : Y +SRD[10] : A9 : bidir : 3.3-V LVTTL : : 8 : Y +SRD[9] : A10 : bidir : 3.3-V LVTTL : : 8 : Y +DVI_INT : A11 : input : 3.3-V LVTTL : : 8 : Y +nDACK1 : A12 : input : 3.3-V LVTTL : : 7 : Y +IO[16] : A13 : bidir : 3.3-V LVTTL : : 7 : Y +IO[14] : A14 : bidir : 3.3-V LVTTL : : 7 : Y +IO[9] : A15 : bidir : 3.3-V LVTTL : : 7 : Y +SD_DATA1 : A16 : input : 3.3-V LVTTL : : 7 : Y +YM_QA : A17 : output : 3.3-V LVTTL : : 7 : Y +TxD : A18 : output : 3.3-V LVTTL : : 7 : Y +DCD : A19 : input : 3.3-V LVTTL : : 7 : Y +nRD_DATA : A20 : input : 3.3-V LVTTL : : 7 : Y +VCCIO7 : A21 : power : : 3.3V : 7 : +GND : A22 : gnd : : : : +nPCI_INTA : AA1 : input : 3.3-V LVTTL : : 2 : Y +PIC_INT : AA2 : input : 3.3-V LVTTL : : 2 : Y +FB_AD[2] : AA3 : bidir : 3.3-V LVTTL : : 3 : Y +FB_AD[6] : AA4 : bidir : 3.3-V LVTTL : : 3 : Y +FB_AD[8] : AA5 : bidir : 3.3-V LVTTL : : 3 : Y +VCCIO3 : AA6 : power : : 3.3V : 3 : +FB_AD[15] : AA7 : bidir : 3.3-V LVTTL : : 3 : Y +FB_AD[22] : AA8 : bidir : 3.3-V LVTTL : : 3 : Y +FB_AD[25] : AA9 : bidir : 3.3-V LVTTL : : 3 : Y +FB_AD[31] : AA10 : bidir : 3.3-V LVTTL : : 3 : Y +GND+ : AA11 : : : : 3 : +GND+ : AA12 : : : : 4 : +VD[18] : AA13 : bidir : 2.5 V : : 4 : Y +VD[25] : AA14 : bidir : 2.5 V : : 4 : Y +VDQS[0] : AA15 : bidir : 2.5 V : : 4 : Y +VDM[0] : AA16 : output : 2.5 V : : 4 : Y +nDDR_CLK : AA17 : output : 2.5 V : : 4 : Y +VA[12] : AA18 : output : 2.5 V : : 4 : Y +BA[1] : AA19 : output : 2.5 V : : 4 : Y +VA[7] : AA20 : output : 2.5 V : : 4 : Y +VA[6] : AA21 : output : 2.5 V : : 5 : Y +VA[4] : AA22 : output : 2.5 V : : 5 : Y +GND : AB1 : gnd : : : : +VCCIO3 : AB2 : power : : 3.3V : 3 : +FB_AD[3] : AB3 : bidir : 3.3-V LVTTL : : 3 : Y +FB_AD[7] : AB4 : bidir : 3.3-V LVTTL : : 3 : Y +FB_AD[9] : AB5 : bidir : 3.3-V LVTTL : : 3 : Y +GND : AB6 : gnd : : : : +FB_AD[16] : AB7 : bidir : 3.3-V LVTTL : : 3 : Y +FB_AD[23] : AB8 : bidir : 3.3-V LVTTL : : 3 : Y +FB_AD[26] : AB9 : bidir : 3.3-V LVTTL : : 3 : Y +CLK24M576 : AB10 : output : 3.3-V LVTTL : : 3 : Y +GND+ : AB11 : : : : 3 : +CLK33M : AB12 : input : 3.3-V LVTTL : : 4 : Y +VD[29] : AB13 : bidir : 2.5 V : : 4 : Y +VD[26] : AB14 : bidir : 2.5 V : : 4 : Y +VD[24] : AB15 : bidir : 2.5 V : : 4 : Y +VD[23] : AB16 : bidir : 2.5 V : : 4 : Y +DDR_CLK : AB17 : output : 2.5 V : : 4 : Y +nVCAS : AB18 : output : 2.5 V : : 4 : Y +VA[9] : AB19 : output : 2.5 V : : 4 : Y +VA[8] : AB20 : output : 2.5 V : : 4 : Y +VCCIO4 : AB21 : power : : 2.5V : 4 : +GND : AB22 : gnd : : : : +ACSI_D[0] : B1 : bidir : 3.3-V LVTTL : : 1 : Y +MIDI_TLR : B2 : output : 3.3-V LVTTL : : 1 : Y +LP_D[5] : B3 : bidir : 3.3-V LVTTL : : 8 : Y +nSRBHE : B4 : output : 3.3-V LVTTL : : 8 : Y +SRD[0] : B5 : bidir : 3.3-V LVTTL : : 8 : Y +IO[4] : B6 : bidir : 3.3-V LVTTL : : 8 : Y +IO[2] : B7 : bidir : 3.3-V LVTTL : : 8 : Y +nSRCS : B8 : output : 3.3-V LVTTL : : 8 : Y +SRD[8] : B9 : bidir : 3.3-V LVTTL : : 8 : Y +SRD[11] : B10 : bidir : 3.3-V LVTTL : : 8 : Y +nRSTO_MCF : B11 : input : 3.3-V LVTTL : : 8 : Y +nDACK0 : B12 : input : 3.3-V LVTTL : : 7 : Y +IO[17] : B13 : bidir : 3.3-V LVTTL : : 7 : Y +IO[15] : B14 : bidir : 3.3-V LVTTL : : 7 : Y +IO[10] : B15 : bidir : 3.3-V LVTTL : : 7 : Y +SD_DATA0 : B16 : input : 3.3-V LVTTL : : 7 : Y +SD_DATA2 : B17 : input : 3.3-V LVTTL : : 7 : Y +RTS : B18 : output : 3.3-V LVTTL : : 7 : Y +RI : B19 : input : 3.3-V LVTTL : : 7 : Y +nSDSEL : B20 : output : 3.3-V LVTTL : : 7 : Y +VB[5] : B21 : output : 3.0-V LVTTL : : 6 : Y +VB[4] : B22 : output : 3.0-V LVTTL : : 6 : Y +ACSI_D[4] : C1 : bidir : 3.3-V LVTTL : : 1 : Y +ACSI_D[3] : C2 : bidir : 3.3-V LVTTL : : 1 : Y +LP_D[2] : C3 : bidir : 3.3-V LVTTL : : 8 : Y +LP_D[1] : C4 : bidir : 3.3-V LVTTL : : 8 : Y +GND : C5 : gnd : : : : +SRD[2] : C6 : bidir : 3.3-V LVTTL : : 8 : Y +IO[7] : C7 : bidir : 3.3-V LVTTL : : 8 : Y +IO[6] : C8 : bidir : 3.3-V LVTTL : : 8 : Y +GND : C9 : gnd : : : : +SRD[4] : C10 : bidir : 3.3-V LVTTL : : 8 : Y +GND : C11 : gnd : : : : +GND : C12 : gnd : : : : +IO[11] : C13 : bidir : 3.3-V LVTTL : : 7 : Y +GND : C14 : gnd : : : : +SD_CLK : C15 : output : 3.3-V LVTTL : : 7 : Y +GND : C16 : gnd : : : : +nDCHG : C17 : input : 3.3-V LVTTL : : 7 : Y +GND : C18 : gnd : : : : +TRACK00 : C19 : input : 3.3-V LVTTL : : 7 : Y +VB[6] : C20 : output : 3.0-V LVTTL : : 6 : Y +VB[3] : C21 : output : 3.0-V LVTTL : : 6 : Y +VB[2] : C22 : output : 3.0-V LVTTL : : 6 : Y +~ALTERA_ASDO_DATA1~ / RESERVED_INPUT : D1 : input : 3.3-V LVTTL : : 1 : N +ACSI_D[5] : D2 : bidir : 3.3-V LVTTL : : 1 : Y +GND : D3 : gnd : : : : +VCCIO1 : D4 : power : : 3.3V : 1 : +VCCIO8 : D5 : power : : 3.3V : 8 : +LP_D[4] : D6 : bidir : 3.3-V LVTTL : : 8 : Y +RESERVED_INPUT_WITH_WEAK_PULLUP : D7 : : : : 8 : +GND : D8 : gnd : : : : +VCCIO8 : D9 : power : : 3.3V : 8 : +SRD[12] : D10 : bidir : 3.3-V LVTTL : : 8 : Y +VCCIO8 : D11 : power : : 3.3V : 8 : +VCCIO7 : D12 : power : : 3.3V : 7 : +IO[12] : D13 : bidir : 3.3-V LVTTL : : 7 : Y +VCCIO7 : D14 : power : : 3.3V : 7 : +DTR : D15 : output : 3.3-V LVTTL : : 7 : Y +VCCIO7 : D16 : power : : 3.3V : 7 : +nWR_GATE : D17 : output : 3.3-V LVTTL : : 7 : Y +VCCIO7 : D18 : power : : 3.3V : 7 : +nWP : D19 : input : 3.3-V LVTTL : : 7 : Y +VB[7] : D20 : output : 3.0-V LVTTL : : 6 : Y +VG[7] : D21 : output : 3.0-V LVTTL : : 6 : Y +VG[6] : D22 : output : 3.0-V LVTTL : : 6 : Y +SCSI_D[1] : E1 : bidir : 3.3-V LVTTL : : 1 : Y +~ALTERA_FLASH_nCE_nCSO~ / RESERVED_INPUT : E2 : input : 3.3-V LVTTL : : 1 : N +ACSI_D[2] : E3 : bidir : 3.3-V LVTTL : : 1 : Y +RESERVED_INPUT_WITH_WEAK_PULLUP : E4 : : : : 1 : +LPDIR : E5 : output : 3.3-V LVTTL : : 8 : Y +LP_STR : E6 : output : 3.3-V LVTTL : : 8 : Y +LP_D[3] : E7 : bidir : 3.3-V LVTTL : : 8 : Y +VCCIO8 : E8 : power : : 3.3V : 8 : +IO[5] : E9 : bidir : 3.3-V LVTTL : : 8 : Y +SRD[6] : E10 : bidir : 3.3-V LVTTL : : 8 : Y +nDREQ1 : E11 : output : 3.3-V LVTTL : : 7 : Y +MIDI_IN : E12 : input : 3.3-V LVTTL : : 7 : Y +IO[13] : E13 : bidir : 3.3-V LVTTL : : 7 : Y +SD_CMD_D1 : E14 : bidir : 3.3-V LVTTL : : 7 : Y +YM_QC : E15 : output : 3.3-V LVTTL : : 7 : Y +nINDEX : E16 : input : 3.3-V LVTTL : : 7 : Y +VCCD_PLL2 : E17 : power : : 1.2V : : +GNDA2 : E18 : gnd : : : : +VCCIO6 : E19 : power : : 3.0V : 6 : +GND : E20 : gnd : : : : +VG[2] : E21 : output : 3.0-V LVTTL : : 6 : Y +VG[1] : E22 : output : 3.0-V LVTTL : : 6 : Y +SCSI_D[3] : F1 : bidir : 3.3-V LVTTL : : 1 : Y +SCSI_D[2] : F2 : bidir : 3.3-V LVTTL : : 1 : Y +GND : F3 : gnd : : : : +VCCIO1 : F4 : power : : 3.3V : 1 : +GNDA3 : F5 : gnd : : : : +VCCD_PLL3 : F6 : power : : 1.2V : : +LP_D[0] : F7 : bidir : 3.3-V LVTTL : : 8 : Y +nSRWE : F8 : output : 3.3-V LVTTL : : 8 : Y +SRD[5] : F9 : bidir : 3.3-V LVTTL : : 8 : Y +SRD[13] : F10 : bidir : 3.3-V LVTTL : : 8 : Y +nSROE : F11 : output : 3.3-V LVTTL : : 7 : Y +GND : F12 : gnd : : : : +SD_CD_DATA3 : F13 : bidir : 3.3-V LVTTL : : 7 : Y +nSTEP : F14 : output : 3.3-V LVTTL : : 7 : Y +DSA_D : F15 : output : 3.3-V LVTTL : : 7 : Y +HD_DD : F16 : input : 3.3-V LVTTL : : 7 : Y +nSYNC : F17 : output : 3.0-V LVCMOS : : 6 : Y +VCCA2 : F18 : power : : 2.5V : : +PIXEL_CLK_PAD : F19 : output : 3.0-V LVTTL : : 6 : Y +nIRQ[4] : F20 : output : 3.0-V LVCMOS : : 6 : Y +nIRQ[2] : F21 : output : 3.0-V LVCMOS : : 6 : Y +VR[7] : F22 : output : 3.0-V LVTTL : : 6 : Y +GND+ : G1 : : : : 1 : +MAIN_CLK : G2 : input : 3.3-V LVTTL : : 1 : Y +SCSI_D[5] : G3 : bidir : 3.3-V LVTTL : : 1 : Y +SCSI_D[4] : G4 : bidir : 3.3-V LVTTL : : 1 : Y +ACSI_D[1] : G5 : bidir : 3.3-V LVTTL : : 1 : Y +VCCA3 : G6 : power : : 2.5V : : +LP_BUSY : G7 : input : 3.3-V LVTTL : : 8 : Y +LP_D[7] : G8 : bidir : 3.3-V LVTTL : : 8 : Y +SRD[14] : G9 : bidir : 3.3-V LVTTL : : 8 : Y +IO[8] : G10 : bidir : 3.3-V LVTTL : : 8 : Y +SRD[3] : G11 : bidir : 3.3-V LVTTL : : 8 : Y +VCCINT : G12 : power : : 1.2V : : +YM_QB : G13 : output : 3.3-V LVTTL : : 7 : Y +nWR : G14 : output : 3.3-V LVTTL : : 7 : Y +nSTEP_DIR : G15 : output : 3.3-V LVTTL : : 7 : Y +nMOT_ON : G16 : output : 3.3-V LVTTL : : 7 : Y +nBLANK_PAD : G17 : output : 3.0-V LVTTL : : 6 : Y +VB[0] : G18 : output : 3.0-V LVTTL : : 6 : Y +VCCIO6 : G19 : power : : 3.0V : 6 : +GND : G20 : gnd : : : : +E0_INT : G21 : input : 3.3-V LVTTL : : 6 : Y +IDE_INT : G22 : input : 3.3-V LVTTL : : 6 : Y +nSCSI_C_D : H1 : input : 3.3-V LVTTL : : 1 : Y +nSCSI_MSG : H2 : input : 3.3-V LVTTL : : 1 : Y +GND : H3 : gnd : : : : +VCCIO1 : H4 : power : : 3.3V : 1 : +MIDI_OLR : H5 : output : 3.3-V LVTTL : : 1 : Y +ACSI_D[7] : H6 : bidir : 3.3-V LVTTL : : 1 : Y +ACSI_D[6] : H7 : bidir : 3.3-V LVTTL : : 1 : Y +RESERVED_INPUT_WITH_WEAK_PULLUP : H8 : : : : 1 : +VCCINT : H9 : power : : 1.2V : : +SRD[15] : H10 : bidir : 3.3-V LVTTL : : 8 : Y +SRD[7] : H11 : bidir : 3.3-V LVTTL : : 8 : Y +GND : H12 : gnd : : : : +GND : H13 : gnd : : : : +CTS : H14 : input : 3.3-V LVTTL : : 7 : Y +RxD : H15 : input : 3.3-V LVTTL : : 7 : Y +VG[5] : H16 : output : 3.0-V LVTTL : : 6 : Y +VB[1] : H17 : output : 3.0-V LVTTL : : 6 : Y +VG[3] : H18 : output : 3.0-V LVTTL : : 6 : Y +VG[0] : H19 : output : 3.0-V LVTTL : : 6 : Y +nIRQ[3] : H20 : output : 3.0-V LVCMOS : : 6 : Y +VR[3] : H21 : output : 3.0-V LVTTL : : 6 : Y +VR[2] : H22 : output : 3.0-V LVTTL : : 6 : Y +CLKUSB : J1 : output : 3.3-V LVTTL : : 1 : Y +RESERVED_INPUT_WITH_WEAK_PULLUP : J2 : : : : 1 : +nSCSI_I_O : J3 : input : 3.3-V LVTTL : : 1 : Y +nACSI_INT : J4 : input : 3.3-V LVTTL : : 1 : Y +RESERVED_INPUT_WITH_WEAK_PULLUP : J5 : : : : 1 : +SCSI_D[0] : J6 : bidir : 3.3-V LVTTL : : 1 : Y +SCSI_DIR : J7 : output : 3.3-V LVTTL : : 1 : Y +RESERVED_INPUT_WITH_WEAK_PULLUP : J8 : : : : 1 : +GND : J9 : gnd : : : : +VCCINT : J10 : power : : 1.2V : : +VCCINT : J11 : power : : 1.2V : : +VCCINT : J12 : power : : 1.2V : : +VCCINT : J13 : power : : 1.2V : : +VCCINT : J14 : power : : 1.2V : : +GND : J15 : gnd : : : : +VCCINT : J16 : power : : 1.2V : : +VG[4] : J17 : output : 3.0-V LVTTL : : 6 : Y +VR[6] : J18 : output : 3.0-V LVTTL : : 6 : Y +GND : J19 : gnd : : : : +VCCIO6 : J20 : power : : 3.0V : 6 : +VR[1] : J21 : output : 3.0-V LVTTL : : 6 : Y +VR[0] : J22 : output : 3.0-V LVTTL : : 6 : Y +~ALTERA_DATA0~ / RESERVED_INPUT : K1 : input : 3.3-V LVTTL : : 1 : N +~ALTERA_DCLK~ / RESERVED_INPUT : K2 : input : 3.3-V LVTTL : : 1 : N +GND : K3 : gnd : : : : +VCCIO1 : K4 : power : : 3.3V : 1 : +nCONFIG : K5 : : : : 1 : +nSTATUS : K6 : : : : 1 : +nACSI_DRQ : K7 : input : 3.3-V LVTTL : : 1 : Y +SCSI_D[7] : K8 : bidir : 3.3-V LVTTL : : 1 : Y +VCCINT : K9 : power : : 1.2V : : +GND : K10 : gnd : : : : +GND : K11 : gnd : : : : +GND : K12 : gnd : : : : +GND : K13 : gnd : : : : +VCCINT : K14 : power : : 1.2V : : +VCCINT : K15 : power : : 1.2V : : +GND : K16 : gnd : : : : +VR[4] : K17 : output : 3.0-V LVTTL : : 6 : Y +VR[5] : K18 : output : 3.0-V LVTTL : : 6 : Y +VSYNC_PAD : K19 : output : 3.0-V LVTTL : : 6 : Y +MSEL3 : K20 : : : : 6 : +HSYNC_PAD : K21 : output : 3.0-V LVTTL : : 6 : Y +~ALTERA_nCEO~ / RESERVED_OUTPUT_OPEN_DRAIN : K22 : output : 3.0-V LVTTL : : 6 : N +TMS : L1 : input : : : 1 : +TCK : L2 : input : : : 1 : +nCE : L3 : : : : 1 : +TDO : L4 : output : : : 1 : +TDI : L5 : input : : : 1 : +ACSI_DIR : L6 : output : 3.3-V LVTTL : : 2 : Y +PIC_AMKB_RX : L7 : input : 3.3-V LVTTL : : 2 : Y +SCSI_D[6] : L8 : bidir : 3.3-V LVTTL : : 1 : Y +VCCINT : L9 : power : : 1.2V : : +GND : L10 : gnd : : : : +GND : L11 : gnd : : : : +GND : L12 : gnd : : : : +GND : L13 : gnd : : : : +VCCINT : L14 : power : : 1.2V : : +GND : L15 : gnd : : : : +VCCINT : L16 : power : : 1.2V : : +MSEL2 : L17 : : : : 6 : +MSEL1 : L18 : : : : 6 : +VCCIO6 : L19 : power : : 3.0V : 6 : +GND : L20 : gnd : : : : +RESERVED_INPUT_WITH_WEAK_PULLUP : L21 : : : : 6 : +RESERVED_INPUT_WITH_WEAK_PULLUP : L22 : : : : 6 : +nACSI_RESET : M1 : output : 3.3-V LVTTL : : 2 : Y +nACSI_CS : M2 : output : 3.3-V LVTTL : : 2 : Y +nSCSI_ATN : M3 : output : 3.3-V LVTTL : : 2 : Y +nACSI_ACK : M4 : output : 3.3-V LVTTL : : 2 : Y +IDE_RES : M5 : output : 3.3-V LVTTL : : 2 : Y +ACSI_A1 : M6 : output : 3.3-V LVTTL : : 2 : Y +SCSI_PAR : M7 : bidir : 3.3-V LVTTL : : 2 : Y +nSCSI_SEL : M8 : bidir : 3.3-V LVTTL : : 2 : Y +VCCINT : M9 : power : : 1.2V : : +GND : M10 : gnd : : : : +GND : M11 : gnd : : : : +GND : M12 : gnd : : : : +GND : M13 : gnd : : : : +VCCINT : M14 : power : : 1.2V : : +VCCINT : M15 : power : : 1.2V : : +RESERVED_INPUT_WITH_WEAK_PULLUP : M16 : : : : 5 : +MSEL0 : M17 : : : : 6 : +CONF_DONE : M18 : : : : 6 : +SD_WP : M19 : input : 3.3-V LVTTL : : 5 : Y +SD_CARD_DEDECT : M20 : input : 3.3-V LVTTL : : 5 : Y +VD[1] : M21 : bidir : 2.5 V : : 5 : Y +VD[0] : M22 : bidir : 2.5 V : : 5 : Y +AMKB_TX : N1 : output : 3.3-V LVCMOS : : 2 : Y +nSCSI_ACK : N2 : output : 3.3-V LVTTL : : 2 : Y +GND : N3 : gnd : : : : +VCCIO2 : N4 : power : : 3.3V : 2 : +nRP_LDS : N5 : output : 3.3-V LVTTL : : 2 : Y +nSCSI_RST : N6 : bidir : 3.3-V LVTTL : : 2 : Y +nIRQ[7] : N7 : output : 3.3-V LVTTL : : 2 : Y +nSCSI_BUSY : N8 : bidir : 3.3-V LVTTL : : 2 : Y +VCCINT : N9 : power : : 1.2V : : +GND : N10 : gnd : : : : +GND : N11 : gnd : : : : +GND : N12 : gnd : : : : +GND : N13 : gnd : : : : +VCCINT : N14 : power : : 1.2V : : +GND : N15 : gnd : : : : +RESERVED_INPUT_WITH_WEAK_PULLUP : N16 : : : : 5 : +VD[12] : N17 : bidir : 2.5 V : : 5 : Y +RESERVED_INPUT_WITH_WEAK_PULLUP : N18 : : : : 5 : +LED_FPGA_OK : N19 : output : 2.5 V : : 5 : Y +VD[15] : N20 : bidir : 2.5 V : : 5 : Y +~ALTERA_DEV_CLRn~ / RESERVED_INPUT : N21 : input : 2.5 V : : 5 : N +~ALTERA_DEV_OE~ / RESERVED_INPUT : N22 : input : 2.5 V : : 5 : N +nIDE_RD : P1 : output : 3.3-V LVTTL : : 2 : Y +nIDE_WR : P2 : output : 3.3-V LVTTL : : 2 : Y +nROM3 : P3 : output : 3.3-V LVTTL : : 2 : Y +nRP_UDS : P4 : output : 3.3-V LVTTL : : 2 : Y +nIRQ[5] : P5 : output : 3.3-V LVTTL : : 2 : Y +nPCI_INTD : P6 : input : 3.3-V LVTTL : : 2 : Y +nIRQ[6] : P7 : output : 3.3-V LVTTL : : 2 : Y +GND : P8 : gnd : : : : +VCCINT : P9 : power : : 1.2V : : +VCCINT : P10 : power : : 1.2V : : +VCCINT : P11 : power : : 1.2V : : +VCCINT : P12 : power : : 1.2V : : +VCCINT : P13 : power : : 1.2V : : +VCCINT : P14 : power : : 1.2V : : +RESERVED_INPUT_WITH_WEAK_PULLUP : P15 : : : : 5 : +RESERVED_INPUT_WITH_WEAK_PULLUP : P16 : : : : 5 : +VD[10] : P17 : bidir : 2.5 V : : 5 : Y +VCCIO5 : P18 : power : : 2.5V : 5 : +GND : P19 : gnd : : : : +VD[13] : P20 : bidir : 2.5 V : : 5 : Y +VD[4] : P21 : bidir : 2.5 V : : 5 : Y +VD[2] : P22 : bidir : 2.5 V : : 5 : Y +nIDE_CS1 : R1 : output : 3.3-V LVTTL : : 2 : Y +nIDE_CS0 : R2 : output : 3.3-V LVTTL : : 2 : Y +GND : R3 : gnd : : : : +VCCIO2 : R4 : power : : 3.3V : 2 : +TIN0 : R5 : output : 3.3-V LVTTL : : 2 : Y +nFB_OE : R6 : input : 3.3-V LVTTL : : 2 : Y +FB_ALE : R7 : input : 3.3-V LVTTL : : 2 : Y +VCCINT : R8 : power : : 1.2V : : +GND : R9 : gnd : : : : +VCCINT : R10 : power : : 1.2V : : +GND : R11 : gnd : : : : +VCCINT : R12 : power : : 1.2V : : +GND : R13 : gnd : : : : +RESERVED_INPUT_WITH_WEAK_PULLUP : R14 : : : : 4 : +RESERVED_INPUT_WITH_WEAK_PULLUP : R15 : : : : 4 : +RESERVED_INPUT_WITH_WEAK_PULLUP : R16 : : : : 4 : +VD[5] : R17 : bidir : 2.5 V : : 5 : Y +VD[9] : R18 : bidir : 2.5 V : : 5 : Y +VD[6] : R19 : bidir : 2.5 V : : 5 : Y +VD[3] : R20 : bidir : 2.5 V : : 5 : Y +VD[11] : R21 : bidir : 2.5 V : : 5 : Y +VD[14] : R22 : bidir : 2.5 V : : 5 : Y +WP_CF_CARD : T1 : input : 3.3-V LVTTL : : 2 : Y +GND+ : T2 : : : : 2 : +nFB_BURST : T3 : input : 3.3-V LVTTL : : 2 : Y +CLK25M : T4 : output : 3.3-V LVTTL : : 2 : Y +nFB_WR : T5 : input : 3.3-V LVTTL : : 2 : Y +VCCA1 : T6 : power : : 2.5V : : +nFB_TA : T7 : output : 3.3-V LVTTL : : 2 : Y +nFB_CS1 : T8 : input : 3.3-V LVTTL : : 3 : Y +nFB_CS2 : T9 : input : 3.3-V LVTTL : : 3 : Y +FB_AD[20] : T10 : bidir : 3.3-V LVTTL : : 3 : Y +FB_AD[24] : T11 : bidir : 3.3-V LVTTL : : 3 : Y +VD[16] : T12 : bidir : 2.5 V : : 4 : Y +RESERVED_INPUT_WITH_WEAK_PULLUP : T13 : : : : 4 : +RESERVED_INPUT_WITH_WEAK_PULLUP : T14 : : : : 4 : +RESERVED_INPUT_WITH_WEAK_PULLUP : T15 : : : : 4 : +VDQS[3] : T16 : bidir : 2.5 V : : 4 : Y +VDM[3] : T17 : output : 2.5 V : : 5 : Y +nVCS : T18 : output : 2.5 V : : 5 : Y +VCCIO5 : T19 : power : : 2.5V : 5 : +GND : T20 : gnd : : : : +nMASTER : T21 : input : 3.3-V LVTTL : : 5 : Y +TOUT0 : T22 : input : 3.3-V LVTTL : : 5 : Y +nSCSI_DRQ : U1 : input : 3.3-V LVTTL : : 2 : Y +nROM4 : U2 : output : 3.3-V LVTTL : : 2 : Y +GND : U3 : gnd : : : : +VCCIO2 : U4 : power : : 3.3V : 2 : +GNDA1 : U5 : gnd : : : : +VCCD_PLL1 : U6 : power : : 1.2V : : +RESERVED_INPUT_WITH_WEAK_PULLUP : U7 : : : : 3 : +FB_SIZE0 : U8 : input : 3.3-V LVTTL : : 3 : Y +FB_AD[12] : U9 : bidir : 3.3-V LVTTL : : 3 : Y +FB_AD[21] : U10 : bidir : 3.3-V LVTTL : : 3 : Y +FB_AD[27] : U11 : bidir : 3.3-V LVTTL : : 3 : Y +VD[31] : U12 : bidir : 2.5 V : : 4 : Y +VD[20] : U13 : bidir : 2.5 V : : 4 : Y +RESERVED_INPUT_WITH_WEAK_PULLUP : U14 : : : : 4 : +VCKE : U15 : output : 2.5 V : : 4 : Y +RESERVED_INPUT_WITH_WEAK_PULLUP : U16 : : : : 4 : +RESERVED_INPUT_WITH_WEAK_PULLUP : U17 : : : : 4 : +VCCA4 : U18 : power : : 2.5V : : +VA[11] : U19 : output : 2.5 V : : 5 : Y +VDM[2] : U20 : output : 2.5 V : : 5 : Y +VD[7] : U21 : bidir : 2.5 V : : 5 : Y +VDQS[2] : U22 : bidir : 2.5 V : : 5 : Y +nPD_VGA : V1 : output : 3.3-V LVTTL : : 2 : Y +RESERVED_INPUT_WITH_WEAK_PULLUP : V2 : : : : 2 : +nPCI_INTC : V3 : input : 3.3-V LVTTL : : 2 : Y +nPCI_INTB : V4 : input : 3.3-V LVTTL : : 2 : Y +RESERVED_INPUT_WITH_WEAK_PULLUP : V5 : : : : 3 : +nFB_CS3 : V6 : input : 3.3-V LVTTL : : 3 : Y +FB_AD[5] : V7 : bidir : 3.3-V LVTTL : : 3 : Y +FB_AD[13] : V8 : bidir : 3.3-V LVTTL : : 3 : Y +FB_AD[18] : V9 : bidir : 3.3-V LVTTL : : 3 : Y +FB_AD[19] : V10 : bidir : 3.3-V LVTTL : : 3 : Y +FB_AD[28] : V11 : bidir : 3.3-V LVTTL : : 3 : Y +VD[30] : V12 : bidir : 2.5 V : : 4 : Y +VD[27] : V13 : bidir : 2.5 V : : 4 : Y +VD[19] : V14 : bidir : 2.5 V : : 4 : Y +VD[21] : V15 : bidir : 2.5 V : : 4 : Y +VDM[1] : V16 : output : 2.5 V : : 4 : Y +VCCD_PLL4 : V17 : power : : 1.2V : : +GNDA4 : V18 : gnd : : : : +VCCIO5 : V19 : power : : 2.5V : 5 : +GND : V20 : gnd : : : : +VA[10] : V21 : output : 2.5 V : : 5 : Y +VD[8] : V22 : bidir : 2.5 V : : 5 : Y +nCF_CS1 : W1 : output : 3.3-V LVTTL : : 2 : Y +nCF_CS0 : W2 : output : 3.3-V LVTTL : : 2 : Y +GND : W3 : gnd : : : : +VCCIO2 : W4 : power : : 3.3V : 2 : +VCCIO3 : W5 : power : : 3.3V : 3 : +FB_AD[4] : W6 : bidir : 3.3-V LVTTL : : 3 : Y +FB_AD[10] : W7 : bidir : 3.3-V LVTTL : : 3 : Y +FB_AD[14] : W8 : bidir : 3.3-V LVTTL : : 3 : Y +VCCIO3 : W9 : power : : 3.3V : 3 : +FB_AD[29] : W10 : bidir : 3.3-V LVTTL : : 3 : Y +VCCIO3 : W11 : power : : 3.3V : 3 : +VCCIO4 : W12 : power : : 2.5V : 4 : +VD[28] : W13 : bidir : 2.5 V : : 4 : Y +VD[22] : W14 : bidir : 2.5 V : : 4 : Y +VDQS[1] : W15 : bidir : 2.5 V : : 4 : Y +VCCIO4 : W16 : power : : 2.5V : 4 : +nVRAS : W17 : output : 2.5 V : : 4 : Y +VCCIO4 : W18 : power : : 2.5V : 4 : +BA[0] : W19 : output : 2.5 V : : 5 : Y +VA[0] : W20 : output : 2.5 V : : 5 : Y +VA[2] : W21 : output : 2.5 V : : 5 : Y +VA[1] : W22 : output : 2.5 V : : 5 : Y +IDE_RDY : Y1 : input : 3.3-V LVTTL : : 2 : Y +AMKB_RX : Y2 : input : 3.3-V LVTTL : : 2 : Y +FB_AD[0] : Y3 : bidir : 3.3-V LVTTL : : 3 : Y +FB_SIZE1 : Y4 : input : 3.3-V LVTTL : : 3 : Y +GND : Y5 : gnd : : : : +FB_AD[1] : Y6 : bidir : 3.3-V LVTTL : : 3 : Y +FB_AD[11] : Y7 : bidir : 3.3-V LVTTL : : 3 : Y +FB_AD[17] : Y8 : bidir : 3.3-V LVTTL : : 3 : Y +GND : Y9 : gnd : : : : +FB_AD[30] : Y10 : bidir : 3.3-V LVTTL : : 3 : Y +GND : Y11 : gnd : : : : +GND : Y12 : gnd : : : : +VD[17] : Y13 : bidir : 2.5 V : : 4 : Y +VCCIO4 : Y14 : power : : 2.5V : 4 : +GND : Y15 : gnd : : : : +GND : Y16 : gnd : : : : +nVWE : Y17 : output : 2.5 V : : 4 : Y +GND : Y18 : gnd : : : : +VCCIO5 : Y19 : power : : 2.5V : 5 : +GND : Y20 : gnd : : : : +VA[5] : Y21 : output : 2.5 V : : 5 : Y +VA[3] : Y22 : output : 2.5 V : : 5 : Y diff --git a/FPGA_quartus/firebee1.qsf b/FPGA_quartus/firebee1.qsf new file mode 100644 index 0000000..86e8842 --- /dev/null +++ b/FPGA_quartus/firebee1.qsf @@ -0,0 +1,740 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 1991-2010 Altera Corporation +# Your use of Altera Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Altera Program License +# Subscription Agreement, Altera MegaCore Function License +# Agreement, or other applicable license agreement, including, +# without limitation, that your use is for the sole purpose of +# programming logic devices manufactured by Altera and sold by +# Altera or its authorized distributors. Please refer to the +# applicable agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus II +# Version 9.1 Build 350 03/24/2010 Service Pack 2 SJ Web Edition +# Date created = 12:45:00 November 06, 2010 +# +# -------------------------------------------------------------------------- # +# +# Notes: +# +# 1) The default values for assignments are stored in the file: +# firebee1_assignment_defaults.qdf +# If this file doesn't exist, see file: +# assignment_defaults.qdf +# +# 2) Altera recommends that you do not modify this file. This +# file is updated automatically by the Quartus II software +# and any changes you make may be lost or overwritten. +# +# -------------------------------------------------------------------------- # + + + +# Project-Wide Assignments +# ======================== +set_global_assignment -name ORIGINAL_QUARTUS_VERSION 8.1 +set_global_assignment -name PROJECT_CREATION_TIME_DATE "10:07:29 SEPTEMBER 03, 2009" +set_global_assignment -name LAST_QUARTUS_VERSION "9.1 SP2" +set_global_assignment -name MISC_FILE "C:/firebee/FPGA/firebee1.dpf" +set_global_assignment -name SOURCE_FILE Video/altddio_bidir0.cmp +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF5380/wf5380_control.vhd +set_global_assignment -name SOURCE_FILE Video/altddio_out0.cmp +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF5380/wf5380_pkg.vhd +set_global_assignment -name SOURCE_FILE Video/altddio_out1.cmp +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF5380/wf5380_registers.vhd +set_global_assignment -name SOURCE_FILE Video/altddio_out2.cmp +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF5380/wf5380_soc_top.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF5380/wf5380_top.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_am_detector.vhd +set_global_assignment -name SOURCE_FILE FalconIO_SDCard_IDE_CF/dcfifo0.cmp +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/dcfifo0.vhd +set_global_assignment -name SOURCE_FILE Video/altdpram2.cmp +set_global_assignment -name SOURCE_FILE FalconIO_SDCard_IDE_CF/dcfifo1.cmp +set_global_assignment -name AHDL_FILE Video/DDR_CTR.tdf +set_global_assignment -name SOURCE_FILE Video/lpm_bustri0.cmp +set_global_assignment -name VHDL_FILE Video/lpm_bustri0.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_control.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_crc_logic.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_digital_pll.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_pkg.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_registers.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_top.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_top_soc.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_transceiver.vhd +set_global_assignment -name SOURCE_FILE Video/lpm_bustri5.cmp +set_global_assignment -name VHDL_FILE Video/lpm_bustri5.vhd +set_global_assignment -name SOURCE_FILE Video/lpm_bustri6.cmp +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_ctrl_status.vhd +set_global_assignment -name SOURCE_FILE Video/lpm_bustri7.cmp +set_global_assignment -name VHDL_FILE Video/lpm_bustri7.vhd +set_global_assignment -name SOURCE_FILE Video/lpm_compare1.cmp +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_receive.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top_soc.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_transmit.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_gpio.vhd +set_global_assignment -name SOURCE_FILE Video/lpm_constant2.cmp +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_interrupts.vhd +set_global_assignment -name SOURCE_FILE Video/lpm_constant3.cmp +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_pkg.vhd +set_global_assignment -name SOURCE_FILE Video/lpm_constant4.cmp +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_timers.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_top.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_top_soc.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_ctrl.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_rx.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_top.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_tx.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_pkg.vhd +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_top.vhd +set_global_assignment -name SOURCE_FILE Video/lpm_ff4.cmp +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_top_soc.vhd +set_global_assignment -name SOURCE_FILE Video/lpm_ff5.cmp +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_wave.vhd +set_global_assignment -name SOURCE_FILE Video/lpm_ff6.cmp +set_global_assignment -name VHDL_FILE lpm_latch0.vhd +set_global_assignment -name SOURCE_FILE lpm_latch0.cmp +set_global_assignment -name QIP_FILE altpll1.qip +set_global_assignment -name SOURCE_FILE Video/lpm_fifoDZ.cmp +set_global_assignment -name VHDL_FILE Video/lpm_fifoDZ.vhd +set_global_assignment -name SOURCE_FILE Video/lpm_latch1.cmp +set_global_assignment -name SOURCE_FILE Video/lpm_mux0.cmp +set_global_assignment -name QIP_FILE altpll2.qip +set_global_assignment -name SOURCE_FILE Video/lpm_mux1.cmp +set_global_assignment -name SOURCE_FILE Video/lpm_mux2.cmp +set_global_assignment -name QIP_FILE altpll3.qip +set_global_assignment -name SOURCE_FILE Video/lpm_mux3.cmp +set_global_assignment -name SOURCE_FILE Video/lpm_mux4.cmp +set_global_assignment -name SOURCE_FILE Video/altdpram0.cmp +set_global_assignment -name SOURCE_FILE Video/lpm_mux5.cmp +set_global_assignment -name VHDL_FILE Video/altdpram0.vhd +set_global_assignment -name SOURCE_FILE Video/lpm_mux6.cmp +set_global_assignment -name SOURCE_FILE Video/altdpram1.cmp +set_global_assignment -name SOURCE_FILE Video/lpm_muxDZ2.cmp +set_global_assignment -name VHDL_FILE Video/lpm_muxDZ2.vhd +set_global_assignment -name SOURCE_FILE Video/lpm_muxDZ.cmp +set_global_assignment -name VHDL_FILE Video/lpm_muxDZ.vhd +set_global_assignment -name SOURCE_FILE altpll0.cmp +set_global_assignment -name SOURCE_FILE Video/lpm_bustri1.cmp +set_global_assignment -name SOURCE_FILE Video/lpm_shiftreg1.cmp +set_global_assignment -name SOURCE_FILE Video/lpm_ff0.cmp +set_global_assignment -name SOURCE_FILE Video/lpm_shiftreg2.cmp +set_global_assignment -name SOURCE_FILE Video/lpm_bustri2.cmp +set_global_assignment -name SOURCE_FILE Video/lpm_shiftreg3.cmp +set_global_assignment -name SOURCE_FILE altpll2.cmp +set_global_assignment -name SOURCE_FILE Video/lpm_shiftreg4.cmp +set_global_assignment -name SOURCE_FILE Video/lpm_bustri3.cmp +set_global_assignment -name SOURCE_FILE Video/lpm_shiftreg5.cmp +set_global_assignment -name VHDL_FILE Video/lpm_bustri3.vhd +set_global_assignment -name SOURCE_FILE Video/lpm_shiftreg6.cmp +set_global_assignment -name SOURCE_FILE Video/lpm_bustri4.cmp +set_global_assignment -name VHDL_FILE altpll2.vhd +set_global_assignment -name SOURCE_FILE Video/lpm_constant0.cmp +set_global_assignment -name SOURCE_FILE altpll3.cmp +set_global_assignment -name SOURCE_FILE Video/lpm_constant1.cmp +set_global_assignment -name VHDL_FILE altpll3.vhd +set_global_assignment -name SOURCE_FILE lpm_counter0.cmp +set_global_assignment -name VHDL_FILE Video/lpm_ff0.vhd +set_global_assignment -name SOURCE_FILE Video/lpm_ff1.cmp +set_global_assignment -name SOURCE_FILE Video/lpm_shiftreg0.cmp +set_global_assignment -name VHDL_FILE Video/lpm_ff1.vhd +set_global_assignment -name SOURCE_FILE Video/lpm_ff2.cmp +set_global_assignment -name SOURCE_FILE Video/lpm_ff3.cmp +set_global_assignment -name VHDL_FILE Video/lpm_ff3.vhd +set_global_assignment -name AHDL_FILE Video/VIDEO_MOD_MUX_CLUTCTR.tdf +set_global_assignment -name VHDL_FILE Video/lpm_ff2.vhd +set_global_assignment -name SOURCE_FILE Video/lpm_fifo_dc0.cmp +set_global_assignment -name VHDL_FILE Video/lpm_fifo_dc0.vhd +set_global_assignment -name BDF_FILE Video/Video.bdf +set_global_assignment -name VHDL_FILE altpll1.vhd +set_global_assignment -name SOURCE_FILE altpll1.cmp +set_global_assignment -name BDF_FILE firebee1.bdf +set_global_assignment -name QIP_FILE altpll0.qip +set_global_assignment -name QIP_FILE lpm_counter0.qip +set_global_assignment -name VHDL_FILE "C:\\firebee\\FPGA\\FalconIO_SDCard_IDE_CF\\FalconIO_SDCard_IDE_CF.vhd" +set_global_assignment -name VHDL_FILE "C:\\firebee\\FPGA\\DSP\\DSP.vhd" +set_global_assignment -name QIP_FILE Video/lpm_shiftreg0.qip +set_global_assignment -name QIP_FILE Video/altdpram0.qip +set_global_assignment -name QIP_FILE Video/lpm_bustri1.qip +set_global_assignment -name QIP_FILE Video/altdpram1.qip +set_global_assignment -name QIP_FILE Video/lpm_bustri2.qip +set_global_assignment -name QIP_FILE Video/lpm_bustri4.qip +set_global_assignment -name QIP_FILE Video/lpm_constant0.qip +set_global_assignment -name QIP_FILE Video/lpm_constant1.qip +set_global_assignment -name QIP_FILE Video/lpm_mux0.qip +set_global_assignment -name QIP_FILE Video/lpm_mux1.qip +set_global_assignment -name QIP_FILE Video/lpm_mux2.qip +set_global_assignment -name QIP_FILE Video/lpm_constant2.qip +set_global_assignment -name QIP_FILE Video/altdpram2.qip +set_global_assignment -name QIP_FILE Video/lpm_bustri6.qip +set_global_assignment -name QIP_FILE Video/lpm_mux3.qip +set_global_assignment -name QIP_FILE Video/lpm_mux4.qip +set_global_assignment -name QIP_FILE Video/lpm_constant3.qip +set_global_assignment -name QIP_FILE Video/lpm_shiftreg1.qip +set_global_assignment -name QIP_FILE Video/lpm_latch1.qip +set_global_assignment -name QIP_FILE Video/lpm_constant4.qip +set_global_assignment -name QIP_FILE Video/lpm_shiftreg2.qip +set_global_assignment -name QIP_FILE Video/lpm_compare1.qip +set_global_assignment -name AHDL_FILE "C:\\firebee\\FPGA\\Interrupt_Handler\\interrupt_handler.tdf" +set_global_assignment -name QIP_FILE lpm_bustri_LONG.qip +set_global_assignment -name QIP_FILE lpm_bustri_BYT.qip +set_global_assignment -name QIP_FILE lpm_bustri_WORD.qip +set_global_assignment -name QIP_FILE Video/lpm_ff4.qip +set_global_assignment -name QIP_FILE Video/lpm_ff5.qip +set_global_assignment -name QIP_FILE Video/lpm_ff6.qip +set_global_assignment -name VECTOR_WAVEFORM_FILE firebee1.vwf +set_global_assignment -name QIP_FILE Video/lpm_shiftreg3.qip +set_global_assignment -name QIP_FILE Video/altddio_bidir0.qip +set_global_assignment -name QIP_FILE Video/altddio_out0.qip +set_global_assignment -name QIP_FILE Video/lpm_mux5.qip +set_global_assignment -name VHDL_FILE "C:\\firebee\\FPGA\\Video\\BLITTER\\BLITTER.vhd" +set_global_assignment -name QIP_FILE Video/lpm_shiftreg5.qip +set_global_assignment -name QIP_FILE Video/lpm_shiftreg6.qip +set_global_assignment -name QIP_FILE Video/lpm_shiftreg4.qip +set_global_assignment -name QIP_FILE Video/altddio_out1.qip +set_global_assignment -name QIP_FILE Video/altddio_out2.qip +set_global_assignment -name QIP_FILE altddio_out3.qip +set_global_assignment -name QIP_FILE Video/lpm_mux6.qip +set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF_pgk.vhd +set_global_assignment -name QIP_FILE FalconIO_SDCard_IDE_CF/dcfifo0.qip +set_global_assignment -name QIP_FILE FalconIO_SDCard_IDE_CF/dcfifo1.qip +set_global_assignment -name QIP_FILE Video/lpm_muxDZ.qip +set_global_assignment -name QIP_FILE Video/lpm_muxVDM.qip +set_global_assignment -name SOURCE_FILE firebee1.fit.summary_alt + +# Pin & Location Assignments +# ========================== +set_location_assignment PIN_AB12 -to CLK33M +set_location_assignment PIN_G2 -to MAIN_CLK +set_location_assignment PIN_Y3 -to FB_AD[0] +set_location_assignment PIN_Y6 -to FB_AD[1] +set_location_assignment PIN_AA3 -to FB_AD[2] +set_location_assignment PIN_AB3 -to FB_AD[3] +set_location_assignment PIN_W6 -to FB_AD[4] +set_location_assignment PIN_V7 -to FB_AD[5] +set_location_assignment PIN_AA4 -to FB_AD[6] +set_location_assignment PIN_AB4 -to FB_AD[7] +set_location_assignment PIN_AA5 -to FB_AD[8] +set_location_assignment PIN_AB5 -to FB_AD[9] +set_location_assignment PIN_W7 -to FB_AD[10] +set_location_assignment PIN_Y7 -to FB_AD[11] +set_location_assignment PIN_U9 -to FB_AD[12] +set_location_assignment PIN_V8 -to FB_AD[13] +set_location_assignment PIN_W8 -to FB_AD[14] +set_location_assignment PIN_AA7 -to FB_AD[15] +set_location_assignment PIN_AB7 -to FB_AD[16] +set_location_assignment PIN_Y8 -to FB_AD[17] +set_location_assignment PIN_V9 -to FB_AD[18] +set_location_assignment PIN_V10 -to FB_AD[19] +set_location_assignment PIN_T10 -to FB_AD[20] +set_location_assignment PIN_U10 -to FB_AD[21] +set_location_assignment PIN_AA8 -to FB_AD[22] +set_location_assignment PIN_AB8 -to FB_AD[23] +set_location_assignment PIN_T11 -to FB_AD[24] +set_location_assignment PIN_AA9 -to FB_AD[25] +set_location_assignment PIN_AB9 -to FB_AD[26] +set_location_assignment PIN_U11 -to FB_AD[27] +set_location_assignment PIN_V11 -to FB_AD[28] +set_location_assignment PIN_W10 -to FB_AD[29] +set_location_assignment PIN_Y10 -to FB_AD[30] +set_location_assignment PIN_AA10 -to FB_AD[31] +set_location_assignment PIN_R7 -to FB_ALE +set_location_assignment PIN_N19 -to LED_FPGA_OK +set_location_assignment PIN_AB10 -to CLK24M576 +set_location_assignment PIN_J1 -to CLKUSB +set_location_assignment PIN_T4 -to CLK25M +set_location_assignment PIN_U8 -to FB_SIZE0 +set_location_assignment PIN_Y4 -to FB_SIZE1 +set_location_assignment PIN_T3 -to nFB_BURST +set_location_assignment PIN_T8 -to nFB_CS1 +set_location_assignment PIN_T9 -to nFB_CS2 +set_location_assignment PIN_V6 -to nFB_CS3 +set_location_assignment PIN_R6 -to nFB_OE +set_location_assignment PIN_T5 -to nFB_WR +set_location_assignment PIN_R5 -to TIN0 +set_location_assignment PIN_T21 -to nMASTER +set_location_assignment PIN_E11 -to nDREQ1 +set_location_assignment PIN_A12 -to nDACK1 +set_location_assignment PIN_B12 -to nDACK0 +set_location_assignment PIN_T22 -to TOUT0 +set_location_assignment PIN_AB17 -to DDR_CLK +set_location_assignment PIN_AA17 -to nDDR_CLK +set_location_assignment PIN_AB18 -to nVCAS +set_location_assignment PIN_T18 -to nVCS +set_location_assignment PIN_W17 -to nVRAS +set_location_assignment PIN_Y17 -to nVWE +set_location_assignment PIN_W20 -to VA[0] +set_location_assignment PIN_W22 -to VA[1] +set_location_assignment PIN_W21 -to VA[2] +set_location_assignment PIN_Y22 -to VA[3] +set_location_assignment PIN_AA22 -to VA[4] +set_location_assignment PIN_Y21 -to VA[5] +set_location_assignment PIN_AA21 -to VA[6] +set_location_assignment PIN_AA20 -to VA[7] +set_location_assignment PIN_AB20 -to VA[8] +set_location_assignment PIN_AB19 -to VA[9] +set_location_assignment PIN_V21 -to VA[10] +set_location_assignment PIN_U19 -to VA[11] +set_location_assignment PIN_AA18 -to VA[12] +set_location_assignment PIN_U15 -to VCKE +set_location_assignment PIN_M22 -to VD[0] +set_location_assignment PIN_M21 -to VD[1] +set_location_assignment PIN_P22 -to VD[2] +set_location_assignment PIN_R20 -to VD[3] +set_location_assignment PIN_P21 -to VD[4] +set_location_assignment PIN_R17 -to VD[5] +set_location_assignment PIN_R19 -to VD[6] +set_location_assignment PIN_U21 -to VD[7] +set_location_assignment PIN_V22 -to VD[8] +set_location_assignment PIN_R18 -to VD[9] +set_location_assignment PIN_P17 -to VD[10] +set_location_assignment PIN_R21 -to VD[11] +set_location_assignment PIN_N17 -to VD[12] +set_location_assignment PIN_P20 -to VD[13] +set_location_assignment PIN_R22 -to VD[14] +set_location_assignment PIN_N20 -to VD[15] +set_location_assignment PIN_T12 -to VD[16] +set_location_assignment PIN_Y13 -to VD[17] +set_location_assignment PIN_AA13 -to VD[18] +set_location_assignment PIN_V14 -to VD[19] +set_location_assignment PIN_U13 -to VD[20] +set_location_assignment PIN_V15 -to VD[21] +set_location_assignment PIN_W14 -to VD[22] +set_location_assignment PIN_AB16 -to VD[23] +set_location_assignment PIN_AB15 -to VD[24] +set_location_assignment PIN_AA14 -to VD[25] +set_location_assignment PIN_AB14 -to VD[26] +set_location_assignment PIN_V13 -to VD[27] +set_location_assignment PIN_W13 -to VD[28] +set_location_assignment PIN_AB13 -to VD[29] +set_location_assignment PIN_V12 -to VD[30] +set_location_assignment PIN_U12 -to VD[31] +set_location_assignment PIN_AA16 -to VDM[0] +set_location_assignment PIN_V16 -to VDM[1] +set_location_assignment PIN_U20 -to VDM[2] +set_location_assignment PIN_T17 -to VDM[3] +set_location_assignment PIN_AA15 -to VDQS[0] +set_location_assignment PIN_W15 -to VDQS[1] +set_location_assignment PIN_U22 -to VDQS[2] +set_location_assignment PIN_T16 -to VDQS[3] +set_location_assignment PIN_V1 -to nPD_VGA +set_location_assignment PIN_G18 -to VB[0] +set_location_assignment PIN_H17 -to VB[1] +set_location_assignment PIN_C22 -to VB[2] +set_location_assignment PIN_C21 -to VB[3] +set_location_assignment PIN_B22 -to VB[4] +set_location_assignment PIN_B21 -to VB[5] +set_location_assignment PIN_C20 -to VB[6] +set_location_assignment PIN_D20 -to VB[7] +set_location_assignment PIN_H19 -to VG[0] +set_location_assignment PIN_E22 -to VG[1] +set_location_assignment PIN_E21 -to VG[2] +set_location_assignment PIN_H18 -to VG[3] +set_location_assignment PIN_J17 -to VG[4] +set_location_assignment PIN_H16 -to VG[5] +set_location_assignment PIN_D22 -to VG[6] +set_location_assignment PIN_D21 -to VG[7] +set_location_assignment PIN_J22 -to VR[0] +set_location_assignment PIN_J21 -to VR[1] +set_location_assignment PIN_H22 -to VR[2] +set_location_assignment PIN_H21 -to VR[3] +set_location_assignment PIN_K17 -to VR[4] +set_location_assignment PIN_K18 -to VR[5] +set_location_assignment PIN_J18 -to VR[6] +set_location_assignment PIN_F22 -to VR[7] +set_location_assignment PIN_M6 -to ACSI_A1 +set_location_assignment PIN_B1 -to ACSI_D[0] +set_location_assignment PIN_G5 -to ACSI_D[1] +set_location_assignment PIN_E3 -to ACSI_D[2] +set_location_assignment PIN_C2 -to ACSI_D[3] +set_location_assignment PIN_C1 -to ACSI_D[4] +set_location_assignment PIN_D2 -to ACSI_D[5] +set_location_assignment PIN_H7 -to ACSI_D[6] +set_location_assignment PIN_H6 -to ACSI_D[7] +set_location_assignment PIN_L6 -to ACSI_DIR +set_location_assignment PIN_N1 -to AMKB_TX +set_location_assignment PIN_F15 -to DSA_D +set_location_assignment PIN_D15 -to DTR +set_location_assignment PIN_A11 -to DVI_INT +set_location_assignment PIN_G21 -to E0_INT +set_location_assignment PIN_M5 -to IDE_RES +set_location_assignment PIN_A8 -to IO[0] +set_location_assignment PIN_A7 -to IO[1] +set_location_assignment PIN_B7 -to IO[2] +set_location_assignment PIN_A6 -to IO[3] +set_location_assignment PIN_B6 -to IO[4] +set_location_assignment PIN_E9 -to IO[5] +set_location_assignment PIN_C8 -to IO[6] +set_location_assignment PIN_C7 -to IO[7] +set_location_assignment PIN_G10 -to IO[8] +set_location_assignment PIN_A15 -to IO[9] +set_location_assignment PIN_B15 -to IO[10] +set_location_assignment PIN_C13 -to IO[11] +set_location_assignment PIN_D13 -to IO[12] +set_location_assignment PIN_E13 -to IO[13] +set_location_assignment PIN_A14 -to IO[14] +set_location_assignment PIN_B14 -to IO[15] +set_location_assignment PIN_A13 -to IO[16] +set_location_assignment PIN_B13 -to IO[17] +set_location_assignment PIN_F7 -to LP_D[0] +set_location_assignment PIN_C4 -to LP_D[1] +set_location_assignment PIN_C3 -to LP_D[2] +set_location_assignment PIN_E7 -to LP_D[3] +set_location_assignment PIN_D6 -to LP_D[4] +set_location_assignment PIN_B3 -to LP_D[5] +set_location_assignment PIN_A3 -to LP_D[6] +set_location_assignment PIN_G8 -to LP_D[7] +set_location_assignment PIN_E6 -to LP_STR +set_location_assignment PIN_H5 -to MIDI_OLR +set_location_assignment PIN_B2 -to MIDI_TLR +set_location_assignment PIN_M4 -to nACSI_ACK +set_location_assignment PIN_M2 -to nACSI_CS +set_location_assignment PIN_M1 -to nACSI_RESET +set_location_assignment PIN_W2 -to nCF_CS0 +set_location_assignment PIN_W1 -to nCF_CS1 +set_location_assignment PIN_T7 -to nFB_TA +set_location_assignment PIN_R2 -to nIDE_CS0 +set_location_assignment PIN_R1 -to nIDE_CS1 +set_location_assignment PIN_P1 -to nIDE_RD +set_location_assignment PIN_P2 -to nIDE_WR +set_location_assignment PIN_F21 -to nIRQ[2] +set_location_assignment PIN_H20 -to nIRQ[3] +set_location_assignment PIN_F20 -to nIRQ[4] +set_location_assignment PIN_P5 -to nIRQ[5] +set_location_assignment PIN_P7 -to nIRQ[6] +set_location_assignment PIN_N7 -to nIRQ[7] +set_location_assignment PIN_AA1 -to nPCI_INTA +set_location_assignment PIN_V4 -to nPCI_INTB +set_location_assignment PIN_V3 -to nPCI_INTC +set_location_assignment PIN_P6 -to nPCI_INTD +set_location_assignment PIN_P3 -to nROM3 +set_location_assignment PIN_U2 -to nROM4 +set_location_assignment PIN_N5 -to nRP_LDS +set_location_assignment PIN_P4 -to nRP_UDS +set_location_assignment PIN_N2 -to nSCSI_ACK +set_location_assignment PIN_M3 -to nSCSI_ATN +set_location_assignment PIN_N8 -to nSCSI_BUSY +set_location_assignment PIN_N6 -to nSCSI_RST +set_location_assignment PIN_M8 -to nSCSI_SEL +set_location_assignment PIN_B20 -to nSDSEL +set_location_assignment PIN_B4 -to nSRBHE +set_location_assignment PIN_A4 -to nSRBLE +set_location_assignment PIN_B8 -to nSRCS +set_location_assignment PIN_F11 -to nSROE +set_location_assignment PIN_F8 -to nSRWE +set_location_assignment PIN_G14 -to nWR +set_location_assignment PIN_D17 -to nWR_GATE +set_location_assignment PIN_AA2 -to PIC_INT +set_location_assignment PIN_B18 -to RTS +set_location_assignment PIN_J6 -to SCSI_D[0] +set_location_assignment PIN_E1 -to SCSI_D[1] +set_location_assignment PIN_F2 -to SCSI_D[2] +set_location_assignment PIN_F1 -to SCSI_D[3] +set_location_assignment PIN_G4 -to SCSI_D[4] +set_location_assignment PIN_G3 -to SCSI_D[5] +set_location_assignment PIN_L8 -to SCSI_D[6] +set_location_assignment PIN_K8 -to SCSI_D[7] +set_location_assignment PIN_J7 -to SCSI_DIR +set_location_assignment PIN_M7 -to SCSI_PAR +set_location_assignment PIN_F13 -to SD_CD_DATA3 +set_location_assignment PIN_C15 -to SD_CLK +set_location_assignment PIN_E14 -to SD_CMD_D1 +set_location_assignment PIN_B5 -to SRD[0] +set_location_assignment PIN_A5 -to SRD[1] +set_location_assignment PIN_C6 -to SRD[2] +set_location_assignment PIN_G11 -to SRD[3] +set_location_assignment PIN_C10 -to SRD[4] +set_location_assignment PIN_F9 -to SRD[5] +set_location_assignment PIN_E10 -to SRD[6] +set_location_assignment PIN_H11 -to SRD[7] +set_location_assignment PIN_B9 -to SRD[8] +set_location_assignment PIN_A10 -to SRD[9] +set_location_assignment PIN_A9 -to SRD[10] +set_location_assignment PIN_B10 -to SRD[11] +set_location_assignment PIN_D10 -to SRD[12] +set_location_assignment PIN_F10 -to SRD[13] +set_location_assignment PIN_G9 -to SRD[14] +set_location_assignment PIN_H10 -to SRD[15] +set_location_assignment PIN_A18 -to TxD +set_location_assignment PIN_A17 -to YM_QA +set_location_assignment PIN_G13 -to YM_QB +set_location_assignment PIN_E15 -to YM_QC +set_location_assignment PIN_T1 -to WP_CF_CARD +set_location_assignment PIN_C19 -to TRACK00 +set_location_assignment PIN_M19 -to SD_WP +set_location_assignment PIN_B17 -to SD_DATA2 +set_location_assignment PIN_A16 -to SD_DATA1 +set_location_assignment PIN_B16 -to SD_DATA0 +set_location_assignment PIN_M20 -to SD_CARD_DEDECT +set_location_assignment PIN_H15 -to RxD +set_location_assignment PIN_B19 -to RI +set_location_assignment PIN_L7 -to PIC_AMKB_RX +set_location_assignment PIN_D19 -to nWP +set_location_assignment PIN_H2 -to nSCSI_MSG +set_location_assignment PIN_J3 -to nSCSI_I_O +set_location_assignment PIN_U1 -to nSCSI_DRQ +set_location_assignment PIN_H1 -to nSCSI_C_D +set_location_assignment PIN_A20 -to nRD_DATA +set_location_assignment PIN_C17 -to nDCHG +set_location_assignment PIN_J4 -to nACSI_INT +set_location_assignment PIN_K7 -to nACSI_DRQ +set_location_assignment PIN_E12 -to MIDI_IN +set_location_assignment PIN_G7 -to LP_BUSY +set_location_assignment PIN_Y1 -to IDE_RDY +set_location_assignment PIN_G22 -to IDE_INT +set_location_assignment PIN_F16 -to HD_DD +set_location_assignment PIN_A19 -to DCD +set_location_assignment PIN_H14 -to CTS +set_location_assignment PIN_Y2 -to AMKB_RX +set_location_assignment PIN_E16 -to nINDEX +set_location_assignment PIN_W19 -to BA[0] +set_location_assignment PIN_AA19 -to BA[1] +set_location_assignment PIN_K21 -to HSYNC_PAD +set_location_assignment PIN_K19 -to VSYNC_PAD +set_location_assignment PIN_G17 -to nBLANK_PAD +set_location_assignment PIN_F19 -to PIXEL_CLK_PAD +set_location_assignment PIN_F17 -to nSYNC +set_location_assignment PIN_G15 -to nSTEP_DIR +set_location_assignment PIN_F14 -to nSTEP +set_location_assignment PIN_G16 -to nMOT_ON + +# Classic Timing Assignments +# ========================== +set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0 +set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85 +set_global_assignment -name NOMINAL_CORE_SUPPLY_VOLTAGE 1.2V +set_global_assignment -name TPD_REQUIREMENT "1 ns" +set_global_assignment -name TSU_REQUIREMENT "1 ns" +set_global_assignment -name TCO_REQUIREMENT "1 ns" +set_global_assignment -name TH_REQUIREMENT "1 ns" +set_global_assignment -name FMAX_REQUIREMENT "30 ns" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER OFF + +# Analysis & Synthesis Assignments +# ================================ +set_global_assignment -name FAMILY "Cyclone III" +set_global_assignment -name TOP_LEVEL_ENTITY firebee1 +set_global_assignment -name DEVICE_FILTER_PACKAGE FBGA +set_global_assignment -name DEVICE_FILTER_PIN_COUNT 484 +set_global_assignment -name CYCLONEII_OPTIMIZATION_TECHNIQUE SPEED +set_global_assignment -name SAFE_STATE_MACHINE OFF +set_global_assignment -name STATE_MACHINE_PROCESSING "ONE-HOT" + +# Fitter Assignments +# ================== +set_global_assignment -name DEVICE EP3C40F484C6 +set_global_assignment -name ENABLE_DEVICE_WIDE_RESET ON +set_global_assignment -name ENABLE_DEVICE_WIDE_OE ON +set_global_assignment -name CYCLONEIII_CONFIGURATION_SCHEME "PASSIVE SERIAL" +set_global_assignment -name FORCE_CONFIGURATION_VCCIO ON +set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "3.3-V LVTTL" +set_global_assignment -name FITTER_EFFORT "AUTO FIT" +set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC ON +set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_DUPLICATION ON +set_global_assignment -name PHYSICAL_SYNTHESIS_ASYNCHRONOUS_SIGNAL_PIPELINING OFF +set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_RETIMING OFF +set_global_assignment -name PHYSICAL_SYNTHESIS_EFFORT FAST +set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC_FOR_AREA ON +set_global_assignment -name PHYSICAL_SYNTHESIS_MAP_LOGIC_TO_MEMORY_FOR_AREA OFF +set_instance_assignment -name IO_STANDARD "2.5 V" -to DDR_CLK +set_instance_assignment -name IO_STANDARD "2.5 V" -to VA +set_instance_assignment -name IO_STANDARD "2.5 V" -to VD +set_instance_assignment -name IO_STANDARD "2.5 V" -to VDM +set_instance_assignment -name IO_STANDARD "2.5 V" -to VDQS +set_instance_assignment -name IO_STANDARD "2.5 V" -to nVWE +set_instance_assignment -name IO_STANDARD "2.5 V" -to nVRAS +set_instance_assignment -name IO_STANDARD "2.5 V" -to nVCS +set_instance_assignment -name IO_STANDARD "2.5 V" -to nVCAS +set_instance_assignment -name IO_STANDARD "2.5 V" -to nDDR_CLK +set_instance_assignment -name IO_STANDARD "2.5 V" -to VCKE +set_instance_assignment -name IO_STANDARD "2.5 V" -to LED_FPGA_OK +set_global_assignment -name FITTER_AUTO_EFFORT_DESIRED_SLACK_MARGIN "0 ns" +set_instance_assignment -name IO_STANDARD "2.5 V" -to BA +set_instance_assignment -name IO_STANDARD "3.0-V LVTTL" -to HSYNC_PAD +set_instance_assignment -name IO_STANDARD "3.0-V LVTTL" -to PIXEL_CLK_PAD +set_instance_assignment -name IO_STANDARD "3.0-V LVTTL" -to VB +set_instance_assignment -name IO_STANDARD "3.0-V LVTTL" -to VG +set_instance_assignment -name IO_STANDARD "3.0-V LVTTL" -to VR +set_instance_assignment -name IO_STANDARD "3.0-V LVTTL" -to VSYNC_PAD +set_instance_assignment -name IO_STANDARD "3.0-V LVTTL" -to nBLANK_PAD +set_instance_assignment -name IO_STANDARD "3.0-V LVCMOS" -to nSYNC +set_instance_assignment -name IO_STANDARD "3.0-V LVCMOS" -to nIRQ[2] +set_instance_assignment -name IO_STANDARD "3.0-V LVCMOS" -to nIRQ[3] +set_instance_assignment -name IO_STANDARD "3.0-V LVCMOS" -to nIRQ[4] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to AMKB_TX + +# Assembler Assignments +# ===================== +set_global_assignment -name GENERATE_TTF_FILE OFF +set_global_assignment -name GENERATE_RBF_FILE ON +set_global_assignment -name GENERATE_HEX_FILE OFF +set_global_assignment -name HEXOUT_FILE_START_ADDRESS 0XE0700000 + +# Simulator Assignments +# ===================== +set_global_assignment -name END_TIME "2 us" +set_global_assignment -name ADD_DEFAULT_PINS_TO_SIMULATION_OUTPUT_WAVEFORMS OFF +set_global_assignment -name SETUP_HOLD_DETECTION OFF +set_global_assignment -name GLITCH_DETECTION OFF +set_global_assignment -name CHECK_OUTPUTS OFF +set_global_assignment -name SIMULATION_MODE TIMING +set_global_assignment -name INCREMENTAL_VECTOR_INPUT_SOURCE firebee1.vwf + +# start EDA_TOOL_SETTINGS(eda_blast_fpga) +# --------------------------------------- + + # Analysis & Synthesis Assignments + # ================================ +set_global_assignment -name USE_GENERATED_PHYSICAL_CONSTRAINTS OFF -section_id eda_blast_fpga + +# end EDA_TOOL_SETTINGS(eda_blast_fpga) +# ------------------------------------- + +# start CLOCK(fast) +# ----------------- + + # Classic Timing Assignments + # ========================== +set_global_assignment -name FMAX_REQUIREMENT "133 MHz" -section_id fast + +# end CLOCK(fast) +# --------------- + +# start ASSIGNMENT_GROUP(fast) +# ---------------------------- + + # Assignment Group Assignments + # ============================ +set_global_assignment -name ASSIGNMENT_GROUP_MEMBER DDRCLK -section_id fast +set_global_assignment -name ASSIGNMENT_GROUP_MEMBER DDRCLK[0] -section_id fast +set_global_assignment -name ASSIGNMENT_GROUP_MEMBER DDRCLK[1] -section_id fast +set_global_assignment -name ASSIGNMENT_GROUP_MEMBER DDRCLK[2] -section_id fast +set_global_assignment -name ASSIGNMENT_GROUP_MEMBER DDRCLK[3] -section_id fast +set_global_assignment -name ASSIGNMENT_GROUP_MEMBER "Video:Fredi_Aschwanden|DDRCLK" -section_id fast +set_global_assignment -name ASSIGNMENT_GROUP_MEMBER "Video:Fredi_Aschwanden|DDRCLK[0]" -section_id fast +set_global_assignment -name ASSIGNMENT_GROUP_MEMBER "Video:Fredi_Aschwanden|DDRCLK[1]" -section_id fast +set_global_assignment -name ASSIGNMENT_GROUP_MEMBER "Video:Fredi_Aschwanden|DDRCLK[2]" -section_id fast +set_global_assignment -name ASSIGNMENT_GROUP_MEMBER "Video:Fredi_Aschwanden|DDRCLK[3]" -section_id fast +set_global_assignment -name ASSIGNMENT_GROUP_MEMBER "Video:Fredi_Aschwanden|DDR_CTR_BLITTER:DDR_CTR_BLITTER|DDRCLK" -section_id fast +set_global_assignment -name ASSIGNMENT_GROUP_MEMBER "Video:Fredi_Aschwanden|DDR_CTR_BLITTER:DDR_CTR_BLITTER|DDRCLK[0]" -section_id fast +set_global_assignment -name ASSIGNMENT_GROUP_MEMBER "Video:Fredi_Aschwanden|DDR_CTR_BLITTER:DDR_CTR_BLITTER|DDRCLK[1]" -section_id fast +set_global_assignment -name ASSIGNMENT_GROUP_MEMBER "Video:Fredi_Aschwanden|DDR_CTR_BLITTER:DDR_CTR_BLITTER|DDRCLK[2]" -section_id fast +set_global_assignment -name ASSIGNMENT_GROUP_MEMBER "Video:Fredi_Aschwanden|DDR_CTR_BLITTER:DDR_CTR_BLITTER|DDRCLK[3]" -section_id fast + +# end ASSIGNMENT_GROUP(fast) +# -------------------------- + +# ---------------------- +# start ENTITY(firebee1) + + # Classic Timing Assignments + # ========================== +set_instance_assignment -name CLOCK_SETTINGS fast -to DDRCLK +set_instance_assignment -name CLOCK_SETTINGS fast -to DDRCLK[0] +set_instance_assignment -name CLOCK_SETTINGS fast -to DDRCLK[1] +set_instance_assignment -name CLOCK_SETTINGS fast -to DDRCLK[2] +set_instance_assignment -name CLOCK_SETTINGS fast -to DDRCLK[3] +set_instance_assignment -name CLOCK_SETTINGS fast -to "Video:Fredi_Aschwanden|DDRCLK" +set_instance_assignment -name CLOCK_SETTINGS fast -to "Video:Fredi_Aschwanden|DDRCLK[0]" +set_instance_assignment -name CLOCK_SETTINGS fast -to "Video:Fredi_Aschwanden|DDRCLK[1]" +set_instance_assignment -name CLOCK_SETTINGS fast -to "Video:Fredi_Aschwanden|DDRCLK[2]" +set_instance_assignment -name CLOCK_SETTINGS fast -to "Video:Fredi_Aschwanden|DDRCLK[3]" +set_instance_assignment -name CLOCK_SETTINGS fast -to "Video:Fredi_Aschwanden|DDR_CTR_BLITTER:DDR_CTR_BLITTER|DDRCLK" +set_instance_assignment -name CLOCK_SETTINGS fast -to "Video:Fredi_Aschwanden|DDR_CTR_BLITTER:DDR_CTR_BLITTER|DDRCLK[0]" +set_instance_assignment -name CLOCK_SETTINGS fast -to "Video:Fredi_Aschwanden|DDR_CTR_BLITTER:DDR_CTR_BLITTER|DDRCLK[1]" +set_instance_assignment -name CLOCK_SETTINGS fast -to "Video:Fredi_Aschwanden|DDR_CTR_BLITTER:DDR_CTR_BLITTER|DDRCLK[2]" +set_instance_assignment -name CLOCK_SETTINGS fast -to "Video:Fredi_Aschwanden|DDR_CTR_BLITTER:DDR_CTR_BLITTER|DDRCLK[3]" +set_instance_assignment -name INPUT_MAX_DELAY "4 ns" -from * -to FB_ALE +set_instance_assignment -name MAX_DELAY "5 ns" -from VD -to FB_AD +set_instance_assignment -name MAX_DELAY "5 ns" -from FB_AD -to VA +set_instance_assignment -name MAX_DELAY "5 ns" -from FB_AD -to nVRAS +set_instance_assignment -name MAX_DELAY "5 ns" -from FB_AD -to BA + + # Fitter Assignments + # ================== +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to LED_FPGA_OK +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VCKE +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to nVCS +set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to FB_AD +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to BA +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to DDR_CLK +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VA +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VDM +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VDQS +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to nVWE +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to nVRAS +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to nVCAS +set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to nDDR_CLK +set_instance_assignment -name CURRENT_STRENGTH_NEW 16MA -to HSYNC_PAD +set_instance_assignment -name CURRENT_STRENGTH_NEW 16MA -to PIXEL_CLK_PAD +set_instance_assignment -name CURRENT_STRENGTH_NEW 16MA -to VB +set_instance_assignment -name CURRENT_STRENGTH_NEW 16MA -to VG +set_instance_assignment -name CURRENT_STRENGTH_NEW 16MA -to VR +set_instance_assignment -name CURRENT_STRENGTH_NEW 16MA -to nBLANK_PAD +set_instance_assignment -name CURRENT_STRENGTH_NEW 16MA -to VSYNC_PAD +set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to nPD_VGA +set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to nSYNC +set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SRD +set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to IO +set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to nSRWE +set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to nSROE +set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to nSRCS +set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to nSRBLE +set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to nSRBHE +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to CLK24M576 +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to CLKUSB +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to CLK25M +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to AMKB_TX + + # Simulator Assignments + # ===================== +set_instance_assignment -name PASSIVE_RESISTOR "PULL-UP" -to FB_AD +set_instance_assignment -name PASSIVE_RESISTOR "PULL-UP" -to nACSI_DRQ +set_instance_assignment -name PASSIVE_RESISTOR "PULL-UP" -to nACSI_INT +set_instance_assignment -name PASSIVE_RESISTOR "PULL-UP" -to SD_CARD_DEDECT +set_instance_assignment -name PASSIVE_RESISTOR "PULL-UP" -to SD_WP +set_instance_assignment -name PASSIVE_RESISTOR "PULL-UP" -to SD_DATA2 +set_instance_assignment -name PASSIVE_RESISTOR "PULL-UP" -to SD_DATA1 +set_instance_assignment -name PASSIVE_RESISTOR "PULL-UP" -to SD_DATA0 +set_instance_assignment -name PASSIVE_RESISTOR "PULL-UP" -to SD_CMD_D1 +set_instance_assignment -name PASSIVE_RESISTOR "PULL-UP" -to SD_CLK +set_instance_assignment -name PASSIVE_RESISTOR "PULL-UP" -to SD_CD_DATA3 + + # start LOGICLOCK_REGION(Root Region) + # ----------------------------------- + + # LogicLock Region Assignments + # ============================ +set_global_assignment -name LL_ROOT_REGION ON -section_id "Root Region" +set_global_assignment -name LL_MEMBER_STATE LOCKED -section_id "Root Region" + + # end LOGICLOCK_REGION(Root Region) + # --------------------------------- + + # start DESIGN_PARTITION(Top) + # --------------------------- + + # Incremental Compilation Assignments + # =================================== +set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top +set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top + + # end DESIGN_PARTITION(Top) + # ------------------------- + +# end ENTITY(firebee1) +# -------------------- +set_global_assignment -name MISC_FILE "C:/FireBee/FPGA/firebee1.dpf" +set_global_assignment -name QIP_FILE altpll_reconfig1.qip +set_global_assignment -name QIP_FILE altpll4.qip +set_location_assignment PIN_E5 -to LPDIR +set_location_assignment PIN_B11 -to nRSTO_MCF +set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top \ No newline at end of file diff --git a/FPGA_quartus/firebee1.qws b/FPGA_quartus/firebee1.qws new file mode 100644 index 0000000..ed1a121 --- /dev/null +++ b/FPGA_quartus/firebee1.qws @@ -0,0 +1,4 @@ +[ProjectWorkspace] +ptn_Child1=Frames +[ProjectWorkspace.Frames] +ptn_Child1=ChildFrames diff --git a/FPGA_quartus/firebee1.rbf b/FPGA_quartus/firebee1.rbf new file mode 100644 index 0000000000000000000000000000000000000000..63c16f1d687e91f02187b06b1c5e3ecfe12b2e04 GIT binary patch literal 428953 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 ifXZVq- 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�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
H{i-C6`@~Su}Ozcr?Jzh&I@Rpd6aJjC01c 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 z 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 U=hL4+!mCCDWBSlvWHTmq_Cz8fhX2!-DX}e)r zqzzf3iil==5S_^m3U(fwCZIXTR?Z>f_uzrW2^8dJhbEXw*YkGk;T8|p72n6?2!4}G ztHP^!oN^Skl5ndf`jP=D?+<24GV52aMtZsoIuwRu4D?f z6*XDG5Z@2-)Ehu5uubY1LVPCqMWXYZ<0|i3CFQA77ma*Muu^?n)f;lc6jb|| zF##rGBh^eeaSOX_ti^;reVMYVNt}8p|XyK1hNLgdbMvsAO`< zfq^Q9KFO+)x>VDW(oc%Xn{#wAUiRh^Bo#BMWg1Idrez1H0cHoVf4fwxk!@sxBTqR8 zeM@3!7DL1`sB}k3xf${o=f|~c@|2cZk|XJgRFTZQ3Ha+@IqHFhl%5AXzXXqjPH>t= zf*_Lpw@l8BPOYQ`jR?L>KAVuN66sedLe(6+c%er1L!ZR0Vfj%797xSp3PvG~SH#pT zHX$PBwhOPI^72-?pkZGKev#@IzdP??tv|7;_^xqzUBXztVMG2ZZBUl))6F|&60?rF}BfF;b?>Mw%`@BJYWpQ|gyzZW2aYW>&_?gL#l>N#w zX|iyC8F@^ctjW*0yIdju%WI>>?OEKX$*!mo`@};_uhXnN)Y`bRctf&^thpL;&d!0G zR9g?Nmr=&CS`itm8(#Q*0lo`E6lxaKcFO>#jJOlH*Q-<)uB-G&pmTc{n^gku$-~w2 z_vX(?Shyc`W{wtTv@^jovj#PpDO62VrBqy&wer>EC-E!gsfL&3hvC%aS}{ih8&vYf z9Yu|+c}HIxcB3-o;!BbCAB4rjCjr-JQyxPwvyb28%> zy*3M{PK_%^t&R#*OL>}LGb}3969Gh^ym{oi%ouS90vs$38sUx?`LQAounPw91p5l! zu}DC^g)?;^PqYGMMnIo16F90gP{hT`Kw?H$$ZU%$#G)?20Xj6c;d|2HigQRoUtn2e z2_9MjHIt%^G>aIW<){dNhXxQ1Syrh^jKs1&e>O>@UI~pdNdtmVz@Y9|&?J+}lDpsl z1?ti}YobRJ>)3oLG@~8fV$9z7%mz-^0jse}VrV8@{Dkn5p)C}scJ#Z>r7IkW9 zs+mJ&7c>j~p4yv*8l-nUGbyxhq*Ei8&JYa_lb{Oflv+rVTRv(!q{ZpPhub*u;Z|Uz KH!VKav+)0Lo+J7I literal 0 HcmV?d00001 diff --git a/FPGA_quartus/firebee1.sof b/FPGA_quartus/firebee1.sof new file mode 100644 index 0000000000000000000000000000000000000000..7b75b23a4b88d2cfeb69c53b102f7a3c667cf14e GIT binary patch literal 1171297 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¬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 literal 0 HcmV?d00001 diff --git a/FPGA_quartus/firebee1.tan.rpt b/FPGA_quartus/firebee1.tan.rpt new file mode 100644 index 0000000..b84e104 --- /dev/null +++ b/FPGA_quartus/firebee1.tan.rpt @@ -0,0 +1,6936 @@ +Classic Timing Analyzer report for firebee1 +Wed Dec 15 02:25:22 2010 +Quartus II Version 9.1 Build 350 03/24/2010 Service Pack 2 SJ Web Edition + + +--------------------- +; Table of Contents ; +--------------------- + 1. Legal Notice + 2. Timing Analyzer Summary + 3. Timing Analyzer Settings + 4. Clock Settings Summary + 5. Parallel Compilation + 6. Clock Setup: 'altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0]' + 7. Clock Setup: 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0]' + 8. Clock Setup: 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1]' + 9. Clock Setup: 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2]' + 10. Clock Setup: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0]' + 11. Clock Setup: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1]' + 12. Clock Setup: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2]' + 13. Clock Setup: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3]' + 14. Clock Setup: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4]' + 15. Clock Setup: 'altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0]' + 16. Clock Setup: 'CLK33M' + 17. Clock Setup: 'MAIN_CLK' + 18. Clock Hold: 'altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0]' + 19. Clock Hold: 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0]' + 20. Clock Hold: 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1]' + 21. Clock Hold: 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2]' + 22. Clock Hold: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0]' + 23. Clock Hold: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1]' + 24. Clock Hold: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2]' + 25. Clock Hold: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3]' + 26. Clock Hold: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4]' + 27. Clock Hold: 'altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0]' + 28. Clock Hold: 'CLK33M' + 29. Clock Hold: 'MAIN_CLK' + 30. tsu + 31. tco + 32. tpd + 33. th + 34. Board Trace Model Assignments + 35. Input Transition Times + 36. Slow Corner Signal Integrity Metrics + 37. Fast Corner Signal Integrity Metrics + 38. Ignored Timing Assignments + 39. Timing Analyzer Messages + + + +---------------- +; Legal Notice ; +---------------- +Copyright (C) 1991-2010 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. + + + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Timing Analyzer Summary ; ++-----------------------------------------------------------------------------------------+-------------+-----------------------------------+------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------+ +; Type ; Slack ; Required Time ; Actual Time ; From ; To ; From Clock ; To Clock ; Failed Paths ; ++-----------------------------------------------------------------------------------------+-------------+-----------------------------------+------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------+ +; Worst-case tsu ; -4.528 ns ; 1.000 ns ; 5.528 ns ; MAIN_CLK ; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|idle_state ; -- ; MAIN_CLK ; 6867 ; +; Worst-case tco ; -14.840 ns ; 1.000 ns ; 15.840 ns ; interrupt_handler:nobody|INT_LATCH[8] ; nIRQ[5] ; MAIN_CLK ; -- ; 4976 ; +; Worst-case tpd ; -11.944 ns ; 1.000 ns ; 12.944 ns ; nFB_CS1 ; FB_AD[18] ; -- ; -- ; 514 ; +; Worst-case th ; -0.401 ns ; 1.000 ns ; 1.401 ns ; FB_AD[25] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[9] ; -- ; MAIN_CLK ; 117 ; +; Clock Setup: 'CLK33M' ; -5.966 ns ; 33.00 MHz ( period = 30.303 ns ) ; N/A ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[35] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 3741 ; +; Clock Setup: 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2]' ; -4.615 ns ; 24.98 MHz ( period = 40.033 ns ) ; N/A ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[35] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 3741 ; +; Clock Setup: 'altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0]' ; -4.294 ns ; 95.92 MHz ( period = 10.425 ns ) ; N/A ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[35] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 3741 ; +; Clock Setup: 'MAIN_CLK' ; -4.261 ns ; 33.00 MHz ( period = 30.303 ns ) ; N/A ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_k47:rdptr_g1p|counter5a7 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 27347 ; +; Clock Setup: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0]' ; -2.673 ns ; 132.01 MHz ( period = 7.575 ns ) ; N/A ; FB_ALE ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BUS_CYC ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 86 ; +; Clock Setup: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4]' ; -1.712 ns ; 66.00 MHz ( period = 15.151 ns ) ; N/A ; FB_ALE ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 29 ; +; Clock Setup: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3]' ; 1.672 ns ; 132.01 MHz ( period = 7.575 ns ) ; N/A ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[2] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[2]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0 ; +; Clock Setup: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1]' ; 2.965 ns ; 132.01 MHz ( period = 7.575 ns ) ; Restricted to 500.00 MHz ( period = 2.000 ns ) ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[6] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[6] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 0 ; +; Clock Setup: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2]' ; 5.299 ns ; 132.01 MHz ( period = 7.575 ns ) ; N/A ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_VDMP[3] ; Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; 0 ; +; Clock Setup: 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1]' ; 28.590 ns ; 15.99 MHz ( period = 62.552 ns ) ; 186.15 MHz ( period = 5.372 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|RD_In ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|\EDGEDETECT:LOCK ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0 ; +; Clock Setup: 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0]' ; 498.663 ns ; 2.00 MHz ( period = 500.416 ns ) ; Restricted to 500.00 MHz ( period = 2.000 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 0 ; +; Clock Setup: 'altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0]' ; 1997.239 ns ; 0.50 MHz ( period = 1999.998 ns ) ; 362.45 MHz ( period = 2.759 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0 ; +; Clock Hold: 'MAIN_CLK' ; -3.786 ns ; 33.00 MHz ( period = 30.303 ns ) ; N/A ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VCT[6] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VERZ[1][0] ; MAIN_CLK ; MAIN_CLK ; 108 ; +; Clock Hold: 'CLK33M' ; -0.687 ns ; 33.00 MHz ( period = 30.303 ns ) ; N/A ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6] ; CLK33M ; CLK33M ; 26 ; +; Clock Hold: 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2]' ; -0.454 ns ; 24.98 MHz ( period = 40.033 ns ) ; N/A ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 26 ; +; Clock Hold: 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1]' ; 0.502 ns ; 15.99 MHz ( period = 62.552 ns ) ; N/A ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|WG~_Duplicate_1 ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|WG~_Duplicate_1 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0 ; +; Clock Hold: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0]' ; 0.502 ns ; 132.01 MHz ( period = 7.575 ns ) ; N/A ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[6] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[6] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0 ; +; Clock Hold: 'altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0]' ; 0.502 ns ; 95.92 MHz ( period = 10.425 ns ) ; N/A ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0 ; +; Clock Hold: 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0]' ; 0.564 ns ; 2.00 MHz ( period = 500.416 ns ) ; N/A ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 0 ; +; Clock Hold: 'altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0]' ; 0.825 ns ; 0.50 MHz ( period = 1999.998 ns ) ; N/A ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0 ; +; Clock Hold: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2]' ; 1.825 ns ; 132.01 MHz ( period = 7.575 ns ) ; N/A ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_VDMP[6] ; Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[6] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; 0 ; +; Clock Hold: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4]' ; 2.664 ns ; 66.00 MHz ( period = 15.151 ns ) ; N/A ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 0 ; +; Clock Hold: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3]' ; 3.263 ns ; 132.01 MHz ( period = 7.575 ns ) ; N/A ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[29] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[29]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0 ; +; Clock Hold: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1]' ; 4.336 ns ; 132.01 MHz ( period = 7.575 ns ) ; N/A ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[2] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 0 ; +; Total number of failed paths ; ; ; ; ; ; ; ; 51319 ; ++-----------------------------------------------------------------------------------------+-------------+-----------------------------------+------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------+ + + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Timing Analyzer Settings ; ++------------------------------------------------------------------------------------------------------+--------------------+-----------------+---------------------------+-------------+ +; Option ; Setting ; From ; To ; Entity Name ; ++------------------------------------------------------------------------------------------------------+--------------------+-----------------+---------------------------+-------------+ +; Device Name ; EP3C40F484C6 ; ; ; ; +; Timing Models ; Final ; ; ; ; +; Default hold multicycle ; Same as Multicycle ; ; ; ; +; Cut paths between unrelated clock domains ; On ; ; ; ; +; Cut off read during write signal paths ; On ; ; ; ; +; Cut off feedback from I/O pins ; On ; ; ; ; +; Report Combined Fast/Slow Timing ; Off ; ; ; ; +; tpd Requirement ; 1 ns ; ; ; ; +; th Requirement ; 1 ns ; ; ; ; +; tsu Requirement ; 1 ns ; ; ; ; +; tco Requirement ; 1 ns ; ; ; ; +; fmax Requirement ; 30 ns ; ; ; ; +; Ignore Clock Settings ; Off ; ; ; ; +; Analyze latches as synchronous elements ; On ; ; ; ; +; Enable Recovery/Removal analysis ; Off ; ; ; ; +; Enable Clock Latency ; Off ; ; ; ; +; Use TimeQuest Timing Analyzer ; Off ; ; ; ; +; Nominal Core Supply Voltage ; 1.2V ; ; ; ; +; Minimum Core Junction Temperature ; 0 ; ; ; ; +; Maximum Core Junction Temperature ; 85 ; ; ; ; +; Number of source nodes to report per destination node ; 10 ; ; ; ; +; Number of destination nodes to report ; 10 ; ; ; ; +; Number of paths to report ; 200 ; ; ; ; +; Report Minimum Timing Checks ; Off ; ; ; ; +; Use Fast Timing Models ; Off ; ; ; ; +; Report IO Paths Separately ; Off ; ; ; ; +; Perform Multicorner Analysis ; On ; ; ; ; +; Reports the worst-case path for each clock domain and analysis ; Off ; ; ; ; +; Reports worst-case timing paths for each clock domain and analysis ; On ; ; ; ; +; Specifies the maximum number of worst-case timing paths to report for each clock domain and analysis ; 100 ; ; ; ; +; Removes common clock path pessimism (CCPP) during slack computation ; On ; ; ; ; +; Output I/O Timing Endpoint ; Near End ; ; ; ; +; Cut Timing Path ; On ; delayed_wrptr_g ; rs_dgwp|dffpipe12|dffe13a ; dcfifo_0hh1 ; +; Cut Timing Path ; On ; rdptr_g ; ws_dgrp|dffpipe17|dffe18a ; dcfifo_0hh1 ; +; Cut Timing Path ; On ; delayed_wrptr_g ; rs_dgwp|dffpipe12|dffe13a ; dcfifo_3fh1 ; +; Cut Timing Path ; On ; rdptr_g ; ws_dgrp|dffpipe15|dffe16a ; dcfifo_3fh1 ; +; Cut Timing Path ; On ; rdptr_g ; ws_dgrp|dffpipe22|dffe23a ; dcfifo_8fi1 ; +; Input Maximum Delay ; 4 ns ; * ; FB_ALE ; ; +; Maximum Delay ; 5 ns ; FB_AD ; BA ; ; +; Maximum Delay ; 5 ns ; FB_AD ; VA ; ; +; Maximum Delay ; 5 ns ; FB_AD ; nVRAS ; ; ++------------------------------------------------------------------------------------------------------+--------------------+-----------------+---------------------------+-------------+ + + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Clock Settings Summary ; ++--------------------------------------------------------------------------+--------------------+------------+------------------+---------------+--------------+----------+-----------------------+---------------------+-----------+--------------+ +; Clock Node Name ; Clock Setting Name ; Type ; Fmax Requirement ; Early Latency ; Late Latency ; Based on ; Multiply Base Fmax by ; Divide Base Fmax by ; Offset ; Phase offset ; ++--------------------------------------------------------------------------+--------------------+------------+------------------+---------------+--------------+----------+-----------------------+---------------------+-----------+--------------+ +; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; ; PLL output ; 0.5 MHz ; 0.000 ns ; 0.000 ns ; CLK33M ; 1 ; 66 ; -9.578 ns ; ; +; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[1] ; ; PLL output ; 2.46 MHz ; 0.000 ns ; 0.000 ns ; CLK33M ; 67 ; 900 ; -9.578 ns ; ; +; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[2] ; ; PLL output ; 24.57 MHz ; 0.000 ns ; 0.000 ns ; CLK33M ; 67 ; 90 ; -9.578 ns ; ; +; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; ; PLL output ; 2.0 MHz ; 0.000 ns ; 0.000 ns ; CLK33M ; 109 ; 1800 ; -1.864 ns ; ; +; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; ; PLL output ; 15.99 MHz ; 0.000 ns ; 0.000 ns ; CLK33M ; 109 ; 225 ; -1.864 ns ; ; +; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; ; PLL output ; 24.98 MHz ; 0.000 ns ; 0.000 ns ; CLK33M ; 109 ; 144 ; -1.864 ns ; ; +; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[3] ; ; PLL output ; 47.96 MHz ; 0.000 ns ; 0.000 ns ; CLK33M ; 109 ; 75 ; -1.864 ns ; ; +; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; ; PLL output ; 132.01 MHz ; 0.000 ns ; 0.000 ns ; MAIN_CLK ; 4 ; 1 ; -3.620 ns ; ; +; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; ; PLL output ; 132.01 MHz ; 0.000 ns ; 0.000 ns ; MAIN_CLK ; 4 ; 1 ; -1.094 ns ; ; +; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; ; PLL output ; 132.01 MHz ; 0.000 ns ; 0.000 ns ; MAIN_CLK ; 4 ; 1 ; 2.693 ns ; ; +; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; ; PLL output ; 132.01 MHz ; 0.000 ns ; 0.000 ns ; MAIN_CLK ; 4 ; 1 ; 1.115 ns ; ; +; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; ; PLL output ; 66.0 MHz ; 0.000 ns ; 0.000 ns ; MAIN_CLK ; 2 ; 1 ; -4.884 ns ; ; +; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; ; PLL output ; 95.92 MHz ; 0.000 ns ; 0.000 ns ; CLK33M ; 218 ; 75 ; -2.843 ns ; ; +; CLK33M ; ; User Pin ; 33.0 MHz ; 0.000 ns ; 0.000 ns ; -- ; N/A ; N/A ; N/A ; ; +; MAIN_CLK ; ; User Pin ; 33.0 MHz ; 0.000 ns ; 0.000 ns ; -- ; N/A ; N/A ; N/A ; ; ++--------------------------------------------------------------------------+--------------------+------------+------------------+---------------+--------------+----------+-----------------------+---------------------+-----------+--------------+ + + +Parallel compilation was disabled, but you have multiple processors available. Enable parallel compilation to reduce compilation time. ++-------------------------------------+ +; Parallel Compilation ; ++----------------------------+--------+ +; Processors ; Number ; ++----------------------------+--------+ +; Number detected on machine ; 4 ; +; Maximum allowed ; 1 ; ++----------------------------+--------+ + + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Clock Setup: 'altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0]' ; ++-------------+---------------------------------------------+---------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+------------------------------------------------------------------------+-----------------------------+---------------------------+-------------------------+ +; Slack ; Actual fmax (period) ; From ; To ; From Clock ; To Clock ; Required Setup Relationship ; Required Longest P2P Time ; Actual Longest P2P Time ; ++-------------+---------------------------------------------+---------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+------------------------------------------------------------------------+-----------------------------+---------------------------+-------------------------+ +; 1997.239 ns ; 362.45 MHz ( period = 2.759 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 2.574 ns ; +; 1997.297 ns ; 370.23 MHz ( period = 2.701 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 2.516 ns ; +; 1997.355 ns ; 378.36 MHz ( period = 2.643 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 2.458 ns ; +; 1997.413 ns ; 386.85 MHz ( period = 2.585 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 2.400 ns ; +; 1997.476 ns ; 396.51 MHz ( period = 2.522 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 2.337 ns ; +; 1997.531 ns ; 405.35 MHz ( period = 2.467 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 2.282 ns ; +; 1997.593 ns ; 415.80 MHz ( period = 2.405 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 2.220 ns ; +; 1997.626 ns ; 421.59 MHz ( period = 2.372 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 2.187 ns ; +; 1997.647 ns ; 425.35 MHz ( period = 2.351 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 2.166 ns ; +; 1997.684 ns ; 432.15 MHz ( period = 2.314 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 2.129 ns ; +; 1997.684 ns ; 432.15 MHz ( period = 2.314 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 2.129 ns ; +; 1997.709 ns ; 436.87 MHz ( period = 2.289 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 2.104 ns ; +; 1997.742 ns ; 443.26 MHz ( period = 2.256 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 2.071 ns ; +; 1997.742 ns ; 443.26 MHz ( period = 2.256 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 2.071 ns ; +; 1997.742 ns ; 443.26 MHz ( period = 2.256 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 2.071 ns ; +; 1997.765 ns ; 447.83 MHz ( period = 2.233 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 2.049 ns ; +; 1997.800 ns ; 454.96 MHz ( period = 2.198 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 2.013 ns ; +; 1997.800 ns ; 454.96 MHz ( period = 2.198 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 2.013 ns ; +; 1997.800 ns ; 454.96 MHz ( period = 2.198 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 2.013 ns ; +; 1997.800 ns ; 454.96 MHz ( period = 2.198 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 2.013 ns ; +; 1997.822 ns ; 459.56 MHz ( period = 2.176 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.992 ns ; +; 1997.858 ns ; 467.29 MHz ( period = 2.140 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.955 ns ; +; 1997.858 ns ; 467.29 MHz ( period = 2.140 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.955 ns ; +; 1997.858 ns ; 467.29 MHz ( period = 2.140 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.955 ns ; +; 1997.858 ns ; 467.29 MHz ( period = 2.140 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.955 ns ; +; 1997.863 ns ; 468.38 MHz ( period = 2.135 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.950 ns ; +; 1997.880 ns ; 472.14 MHz ( period = 2.118 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.934 ns ; +; 1997.916 ns ; 480.31 MHz ( period = 2.082 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.897 ns ; +; 1997.916 ns ; 480.31 MHz ( period = 2.082 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.897 ns ; +; 1997.916 ns ; 480.31 MHz ( period = 2.082 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.897 ns ; +; 1997.916 ns ; 480.31 MHz ( period = 2.082 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.897 ns ; +; 1997.918 ns ; 480.77 MHz ( period = 2.080 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.895 ns ; +; 1997.921 ns ; 481.46 MHz ( period = 2.077 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.892 ns ; +; 1997.941 ns ; 486.14 MHz ( period = 2.057 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.873 ns ; +; 1997.974 ns ; 494.07 MHz ( period = 2.024 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.839 ns ; +; 1997.974 ns ; 494.07 MHz ( period = 2.024 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.839 ns ; +; 1997.974 ns ; 494.07 MHz ( period = 2.024 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.839 ns ; +; 1997.974 ns ; 494.07 MHz ( period = 2.024 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.839 ns ; +; 1997.976 ns ; 494.56 MHz ( period = 2.022 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.837 ns ; +; 1997.979 ns ; 495.29 MHz ( period = 2.019 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.834 ns ; +; 1997.980 ns ; 495.54 MHz ( period = 2.018 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.833 ns ; +; 1997.995 ns ; 499.25 MHz ( period = 2.003 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.819 ns ; +; 1998.032 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.781 ns ; +; 1998.032 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.781 ns ; +; 1998.032 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.781 ns ; +; 1998.032 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.781 ns ; +; 1998.034 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.779 ns ; +; 1998.034 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.779 ns ; +; 1998.037 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.776 ns ; +; 1998.038 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.775 ns ; +; 1998.055 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.759 ns ; +; 1998.090 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.723 ns ; +; 1998.090 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.723 ns ; +; 1998.090 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.723 ns ; +; 1998.091 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.723 ns ; +; 1998.092 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.721 ns ; +; 1998.092 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.721 ns ; +; 1998.095 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.718 ns ; +; 1998.096 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.717 ns ; +; 1998.096 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.717 ns ; +; 1998.113 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.701 ns ; +; 1998.148 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.665 ns ; +; 1998.148 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.665 ns ; +; 1998.149 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.665 ns ; +; 1998.149 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.665 ns ; +; 1998.150 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.663 ns ; +; 1998.150 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.663 ns ; +; 1998.152 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.662 ns ; +; 1998.153 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.660 ns ; +; 1998.154 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.659 ns ; +; 1998.154 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.659 ns ; +; 1998.167 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.647 ns ; +; 1998.206 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.607 ns ; +; 1998.207 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.607 ns ; +; 1998.207 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.607 ns ; +; 1998.207 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.607 ns ; +; 1998.208 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.605 ns ; +; 1998.208 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.605 ns ; +; 1998.209 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.605 ns ; +; 1998.210 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.604 ns ; +; 1998.211 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.602 ns ; +; 1998.212 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.601 ns ; +; 1998.212 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.601 ns ; +; 1998.265 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.549 ns ; +; 1998.265 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.549 ns ; +; 1998.265 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.549 ns ; +; 1998.265 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.549 ns ; +; 1998.266 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.547 ns ; +; 1998.266 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.547 ns ; +; 1998.267 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.547 ns ; +; 1998.267 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.547 ns ; +; 1998.268 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.546 ns ; +; 1998.269 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.544 ns ; +; 1998.270 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.543 ns ; +; 1998.270 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.543 ns ; +; 1998.323 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.491 ns ; +; 1998.323 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.491 ns ; +; 1998.323 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.491 ns ; +; 1998.323 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.491 ns ; +; 1998.324 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.489 ns ; +; 1998.324 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.489 ns ; +; 1998.325 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.489 ns ; +; 1998.325 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.489 ns ; +; 1998.326 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.488 ns ; +; 1998.328 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.486 ns ; +; 1998.328 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.485 ns ; +; 1998.328 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.485 ns ; +; 1998.328 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.486 ns ; +; 1998.381 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.433 ns ; +; 1998.381 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.433 ns ; +; 1998.381 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.433 ns ; +; 1998.381 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.433 ns ; +; 1998.382 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.432 ns ; +; 1998.382 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.431 ns ; +; 1998.383 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.431 ns ; +; 1998.383 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.431 ns ; +; 1998.383 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.431 ns ; +; 1998.384 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.430 ns ; +; 1998.386 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.428 ns ; +; 1998.386 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.427 ns ; +; 1998.386 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.427 ns ; +; 1998.386 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.428 ns ; +; 1998.439 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.375 ns ; +; 1998.439 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.375 ns ; +; 1998.439 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.375 ns ; +; 1998.439 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.375 ns ; +; 1998.440 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.374 ns ; +; 1998.440 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.373 ns ; +; 1998.441 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.373 ns ; +; 1998.441 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.373 ns ; +; 1998.441 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.373 ns ; +; 1998.442 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.372 ns ; +; 1998.442 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.372 ns ; +; 1998.444 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.370 ns ; +; 1998.444 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.369 ns ; +; 1998.444 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.370 ns ; +; 1998.445 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.369 ns ; +; 1998.497 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.317 ns ; +; 1998.497 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.317 ns ; +; 1998.497 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.317 ns ; +; 1998.497 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.317 ns ; +; 1998.498 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.316 ns ; +; 1998.499 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.315 ns ; +; 1998.499 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.315 ns ; +; 1998.499 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.315 ns ; +; 1998.499 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.315 ns ; +; 1998.500 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.314 ns ; +; 1998.500 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.314 ns ; +; 1998.500 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.314 ns ; +; 1998.502 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.312 ns ; +; 1998.502 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.813 ns ; 1.311 ns ; +; 1998.502 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.312 ns ; +; 1998.503 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.311 ns ; +; 1998.671 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 1.143 ns ; +; 1999.023 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 0.791 ns ; +; 1999.024 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 0.790 ns ; +; 1999.025 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 0.789 ns ; +; 1999.025 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 0.789 ns ; +; 1999.026 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 0.788 ns ; +; 1999.026 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 0.788 ns ; +; 1999.026 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 0.788 ns ; +; 1999.027 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 0.787 ns ; +; 1999.027 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 0.787 ns ; +; 1999.027 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 0.787 ns ; +; 1999.027 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 0.787 ns ; +; 1999.027 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 0.787 ns ; +; 1999.028 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 0.786 ns ; +; 1999.028 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 0.786 ns ; +; 1999.029 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 0.785 ns ; +; 1999.029 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 0.785 ns ; +; 1999.031 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 1999.998 ns ; 1999.814 ns ; 0.783 ns ; ++-------------+---------------------------------------------+---------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+------------------------------------------------------------------------+-----------------------------+---------------------------+-------------------------+ + + ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Clock Setup: 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0]' ; ++------------+---------------------------------------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+-----------------------------+---------------------------+-------------------------+ +; Slack ; Actual fmax (period) ; From ; To ; From Clock ; To Clock ; Required Setup Relationship ; Required Longest P2P Time ; Actual Longest P2P Time ; ++------------+---------------------------------------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+-----------------------------+---------------------------+-------------------------+ +; 498.663 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 500.416 ns ; 500.232 ns ; 1.569 ns ; +; 498.663 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 500.416 ns ; 500.232 ns ; 1.569 ns ; +; 498.663 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 500.416 ns ; 500.232 ns ; 1.569 ns ; +; 498.663 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 500.416 ns ; 500.232 ns ; 1.569 ns ; +; 498.663 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 500.416 ns ; 500.232 ns ; 1.569 ns ; +; 498.729 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[2] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 500.416 ns ; 500.232 ns ; 1.503 ns ; +; 498.743 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 500.416 ns ; 500.232 ns ; 1.489 ns ; +; 498.787 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[2] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 500.416 ns ; 500.232 ns ; 1.445 ns ; +; 498.800 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 500.416 ns ; 500.232 ns ; 1.432 ns ; +; 498.801 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 500.416 ns ; 500.232 ns ; 1.431 ns ; +; 498.858 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 500.416 ns ; 500.232 ns ; 1.374 ns ; +; 498.859 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 500.416 ns ; 500.232 ns ; 1.373 ns ; +; 498.894 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 500.416 ns ; 500.232 ns ; 1.338 ns ; +; 498.916 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 500.416 ns ; 500.232 ns ; 1.316 ns ; +; 498.917 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 500.416 ns ; 500.232 ns ; 1.315 ns ; +; 499.319 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[2] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 500.416 ns ; 500.232 ns ; 0.913 ns ; +; 499.422 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 500.416 ns ; 500.232 ns ; 0.810 ns ; +; 499.444 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 500.416 ns ; 500.232 ns ; 0.788 ns ; +; 499.449 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 500.416 ns ; 500.232 ns ; 0.783 ns ; ++------------+---------------------------------------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+-----------------------------+---------------------------+-------------------------+ + + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Clock Setup: 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1]' ; ++-----------------------------------------+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+-----------------------------+---------------------------+-------------------------+ +; Slack ; Actual fmax (period) ; From ; To ; From Clock ; To Clock ; Required Setup Relationship ; Required Longest P2P Time ; Actual Longest P2P Time ; ++-----------------------------------------+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+-----------------------------+---------------------------+-------------------------+ +; 28.590 ns ; 186.15 MHz ( period = 5.372 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|RD_In ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|\EDGEDETECT:LOCK ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 31.276 ns ; 31.135 ns ; 2.545 ns ; +; 28.759 ns ; 198.65 MHz ( period = 5.034 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|RD_In ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|RD_PULSE ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 31.276 ns ; 31.135 ns ; 2.376 ns ; +; 54.429 ns ; 123.11 MHz ( period = 8.123 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_VERIFY_DELAY ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.370 ns ; 7.941 ns ; +; 54.452 ns ; 123.46 MHz ( period = 8.100 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_VERIFY_DELAY ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.372 ns ; 7.920 ns ; +; 54.563 ns ; 125.17 MHz ( period = 7.989 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_SET_DRQ ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.366 ns ; 7.803 ns ; +; 54.586 ns ; 125.53 MHz ( period = 7.966 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_SET_DRQ ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.368 ns ; 7.782 ns ; +; 54.600 ns ; 125.75 MHz ( period = 7.952 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_DELAY_B3 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.366 ns ; 7.766 ns ; +; 54.623 ns ; 126.12 MHz ( period = 7.929 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_DELAY_B3 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.368 ns ; 7.745 ns ; +; 54.812 ns ; 129.20 MHz ( period = 7.740 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|INTRQ ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.363 ns ; 7.551 ns ; +; 54.822 ns ; 129.37 MHz ( period = 7.730 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.DELAY_15MS ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.372 ns ; 7.550 ns ; +; 54.835 ns ; 129.58 MHz ( period = 7.717 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|INTRQ ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.365 ns ; 7.530 ns ; +; 54.845 ns ; 129.75 MHz ( period = 7.707 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.DELAY_15MS ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.374 ns ; 7.529 ns ; +; 54.868 ns ; 130.14 MHz ( period = 7.684 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[15] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_VERIFY_DELAY ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.359 ns ; 7.491 ns ; +; 54.889 ns ; 130.50 MHz ( period = 7.663 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CRC_ERRFLAG ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.363 ns ; 7.474 ns ; +; 54.889 ns ; 130.50 MHz ( period = 7.663 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_SCAN_SECT ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.370 ns ; 7.481 ns ; +; 54.889 ns ; 130.50 MHz ( period = 7.663 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_SCAN_LEN ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.370 ns ; 7.481 ns ; +; 54.889 ns ; 130.50 MHz ( period = 7.663 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_SCAN_CRC ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.370 ns ; 7.481 ns ; +; 54.910 ns ; 130.86 MHz ( period = 7.642 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_DELAY_B2 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.366 ns ; 7.456 ns ; +; 54.912 ns ; 130.89 MHz ( period = 7.640 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CRC_ERRFLAG ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.365 ns ; 7.453 ns ; +; 54.912 ns ; 130.89 MHz ( period = 7.640 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_SCAN_SECT ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.372 ns ; 7.460 ns ; +; 54.912 ns ; 130.89 MHz ( period = 7.640 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_SCAN_LEN ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.372 ns ; 7.460 ns ; +; 54.912 ns ; 130.89 MHz ( period = 7.640 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_SCAN_CRC ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.372 ns ; 7.460 ns ; +; 54.933 ns ; 131.25 MHz ( period = 7.619 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_DELAY_B2 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.368 ns ; 7.435 ns ; +; 54.944 ns ; 131.44 MHz ( period = 7.608 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_WR_FF ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.361 ns ; 7.417 ns ; +; 54.947 ns ; 131.49 MHz ( period = 7.605 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_CHECK_INDEX_3 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.361 ns ; 7.414 ns ; +; 54.948 ns ; 131.51 MHz ( period = 7.604 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_SHIFT ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.361 ns ; 7.413 ns ; +; 54.948 ns ; 131.51 MHz ( period = 7.604 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_WR_AM ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.361 ns ; 7.413 ns ; +; 54.967 ns ; 131.84 MHz ( period = 7.585 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_WR_FF ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.363 ns ; 7.396 ns ; +; 54.970 ns ; 131.89 MHz ( period = 7.582 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_CHECK_INDEX_3 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.363 ns ; 7.393 ns ; +; 54.971 ns ; 131.91 MHz ( period = 7.581 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_SHIFT ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.363 ns ; 7.392 ns ; +; 54.971 ns ; 131.91 MHz ( period = 7.581 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_WR_AM ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.363 ns ; 7.392 ns ; +; 54.979 ns ; 132.05 MHz ( period = 7.573 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_CHECK_DR ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.361 ns ; 7.382 ns ; +; 54.981 ns ; 132.08 MHz ( period = 7.571 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_VERIFY_DELAY ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.368 ns ; 7.387 ns ; +; 54.996 ns ; 132.35 MHz ( period = 7.556 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[12] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_VERIFY_DELAY ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.370 ns ; 7.374 ns ; +; 55.002 ns ; 132.45 MHz ( period = 7.550 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_CHECK_DR ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.363 ns ; 7.361 ns ; +; 55.002 ns ; 132.45 MHz ( period = 7.550 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[15] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_SET_DRQ ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.355 ns ; 7.353 ns ; +; 55.010 ns ; 132.59 MHz ( period = 7.542 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_VERIFY_DELAY ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.372 ns ; 7.362 ns ; +; 55.035 ns ; 133.03 MHz ( period = 7.517 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[10] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_VERIFY_DELAY ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.361 ns ; 7.326 ns ; +; 55.039 ns ; 133.10 MHz ( period = 7.513 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[15] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_DELAY_B3 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.355 ns ; 7.316 ns ; +; 55.047 ns ; 133.24 MHz ( period = 7.505 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[8] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_VERIFY_DELAY ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.359 ns ; 7.312 ns ; +; 55.078 ns ; 133.80 MHz ( period = 7.474 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.INIT ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.369 ns ; 7.291 ns ; +; 55.090 ns ; 134.01 MHz ( period = 7.462 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_LOAD_DATA ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.360 ns ; 7.270 ns ; +; 55.094 ns ; 134.08 MHz ( period = 7.458 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_WR_CRC ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.360 ns ; 7.266 ns ; +; 55.101 ns ; 134.21 MHz ( period = 7.451 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.INIT ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.371 ns ; 7.270 ns ; +; 55.102 ns ; 134.23 MHz ( period = 7.450 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_CHECK_INDEX_2 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.361 ns ; 7.259 ns ; +; 55.104 ns ; 134.26 MHz ( period = 7.448 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_WRSTAT ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.361 ns ; 7.257 ns ; +; 55.113 ns ; 134.43 MHz ( period = 7.439 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_LOAD_DATA ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.362 ns ; 7.249 ns ; +; 55.113 ns ; 134.43 MHz ( period = 7.439 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_LOAD_DATA_1 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.361 ns ; 7.248 ns ; +; 55.115 ns ; 134.46 MHz ( period = 7.437 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_SET_DRQ ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.364 ns ; 7.249 ns ; +; 55.117 ns ; 134.50 MHz ( period = 7.435 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_WR_CRC ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.362 ns ; 7.245 ns ; +; 55.125 ns ; 134.64 MHz ( period = 7.427 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_CHECK_INDEX_2 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.363 ns ; 7.238 ns ; +; 55.127 ns ; 134.68 MHz ( period = 7.425 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_WRSTAT ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.363 ns ; 7.236 ns ; +; 55.127 ns ; 134.68 MHz ( period = 7.425 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[11] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_VERIFY_DELAY ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.370 ns ; 7.243 ns ; +; 55.130 ns ; 134.73 MHz ( period = 7.422 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[12] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_SET_DRQ ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.366 ns ; 7.236 ns ; +; 55.136 ns ; 134.84 MHz ( period = 7.416 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_LOAD_DATA_1 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.363 ns ; 7.227 ns ; +; 55.140 ns ; 134.92 MHz ( period = 7.412 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[5] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_VERIFY_DELAY ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.372 ns ; 7.232 ns ; +; 55.144 ns ; 134.99 MHz ( period = 7.408 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_SET_DRQ ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.368 ns ; 7.224 ns ; +; 55.152 ns ; 135.14 MHz ( period = 7.400 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_DELAY_B3 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.364 ns ; 7.212 ns ; +; 55.152 ns ; 135.14 MHz ( period = 7.400 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[14] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_VERIFY_DELAY ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.370 ns ; 7.218 ns ; +; 55.161 ns ; 135.30 MHz ( period = 7.391 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|COMMAND_REG[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_VERIFY_DELAY ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.369 ns ; 7.208 ns ; +; 55.167 ns ; 135.41 MHz ( period = 7.385 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[12] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_DELAY_B3 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.366 ns ; 7.199 ns ; +; 55.169 ns ; 135.45 MHz ( period = 7.383 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[10] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_SET_DRQ ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.357 ns ; 7.188 ns ; +; 55.181 ns ; 135.67 MHz ( period = 7.371 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[8] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_SET_DRQ ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.355 ns ; 7.174 ns ; +; 55.181 ns ; 135.67 MHz ( period = 7.371 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_DELAY_B3 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.368 ns ; 7.187 ns ; +; 55.190 ns ; 135.83 MHz ( period = 7.362 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[2] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_VERIFY_DELAY ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.359 ns ; 7.169 ns ; +; 55.204 ns ; 136.09 MHz ( period = 7.348 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_HEAD_CTRL ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.370 ns ; 7.166 ns ; +; 55.206 ns ; 136.13 MHz ( period = 7.346 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[10] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_DELAY_B3 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.357 ns ; 7.151 ns ; +; 55.218 ns ; 136.35 MHz ( period = 7.334 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[8] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_DELAY_B3 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.355 ns ; 7.137 ns ; +; 55.227 ns ; 136.52 MHz ( period = 7.325 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_HEAD_CTRL ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.372 ns ; 7.145 ns ; +; 55.251 ns ; 136.97 MHz ( period = 7.301 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[15] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|INTRQ ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.352 ns ; 7.101 ns ; +; 55.261 ns ; 137.16 MHz ( period = 7.291 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[11] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_SET_DRQ ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.366 ns ; 7.105 ns ; +; 55.261 ns ; 137.16 MHz ( period = 7.291 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[15] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.DELAY_15MS ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.361 ns ; 7.100 ns ; +; 55.272 ns ; 137.36 MHz ( period = 7.280 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|COMMAND_REG[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_VERIFY_DELAY ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.369 ns ; 7.097 ns ; +; 55.274 ns ; 137.40 MHz ( period = 7.278 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[5] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_SET_DRQ ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.368 ns ; 7.094 ns ; +; 55.278 ns ; 137.48 MHz ( period = 7.274 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|TRACK_REG[2] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|DIR ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.274 ns ; 6.996 ns ; +; 55.286 ns ; 137.63 MHz ( period = 7.266 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[14] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_SET_DRQ ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.366 ns ; 7.080 ns ; +; 55.288 ns ; 137.67 MHz ( period = 7.264 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[7] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_VERIFY_DELAY ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.372 ns ; 7.084 ns ; +; 55.294 ns ; 137.78 MHz ( period = 7.258 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[13] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_VERIFY_DELAY ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.370 ns ; 7.076 ns ; +; 55.295 ns ; 137.80 MHz ( period = 7.257 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|COMMAND_REG[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_SET_DRQ ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.365 ns ; 7.070 ns ; +; 55.298 ns ; 137.85 MHz ( period = 7.254 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[11] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_DELAY_B3 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.366 ns ; 7.068 ns ; +; 55.299 ns ; 137.87 MHz ( period = 7.253 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_WR_DATA ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.364 ns ; 7.065 ns ; +; 55.300 ns ; 137.89 MHz ( period = 7.252 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.368 ns ; 7.068 ns ; +; 55.303 ns ; 137.95 MHz ( period = 7.249 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_DELAY_B8 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.364 ns ; 7.061 ns ; +; 55.311 ns ; 138.10 MHz ( period = 7.241 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[5] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_DELAY_B3 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.368 ns ; 7.057 ns ; +; 55.316 ns ; 138.20 MHz ( period = 7.236 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_RD_TRACK ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.361 ns ; 7.045 ns ; +; 55.316 ns ; 138.20 MHz ( period = 7.236 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_VERIFY_DRQ_3 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.361 ns ; 7.045 ns ; +; 55.316 ns ; 138.20 MHz ( period = 7.236 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_WR_LEADIN ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.368 ns ; 7.052 ns ; +; 55.317 ns ; 138.22 MHz ( period = 7.235 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_VERIFY_DRQ_2 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.361 ns ; 7.044 ns ; +; 55.319 ns ; 138.26 MHz ( period = 7.233 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_CHECK_INDEX_1 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.361 ns ; 7.042 ns ; +; 55.322 ns ; 138.31 MHz ( period = 7.230 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_WR_DATA ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.366 ns ; 7.044 ns ; +; 55.323 ns ; 138.33 MHz ( period = 7.229 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[14] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_DELAY_B3 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.366 ns ; 7.043 ns ; +; 55.323 ns ; 138.33 MHz ( period = 7.229 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.370 ns ; 7.047 ns ; +; 55.324 ns ; 138.35 MHz ( period = 7.228 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[2] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_SET_DRQ ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.355 ns ; 7.031 ns ; +; 55.326 ns ; 138.39 MHz ( period = 7.226 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_DELAY_B8 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.366 ns ; 7.040 ns ; +; 55.328 ns ; 138.43 MHz ( period = 7.224 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[15] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CRC_ERRFLAG ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.352 ns ; 7.024 ns ; +; 55.328 ns ; 138.43 MHz ( period = 7.224 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[15] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_SCAN_SECT ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.359 ns ; 7.031 ns ; +; 55.328 ns ; 138.43 MHz ( period = 7.224 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[15] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_SCAN_LEN ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.359 ns ; 7.031 ns ; +; 55.328 ns ; 138.43 MHz ( period = 7.224 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[15] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_SCAN_CRC ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.359 ns ; 7.031 ns ; +; 55.331 ns ; 138.48 MHz ( period = 7.221 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_VERIFY_CRC ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.363 ns ; 7.032 ns ; +; 55.331 ns ; 138.48 MHz ( period = 7.221 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_LOAD_SHFT ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.360 ns ; 7.029 ns ; +; 55.332 ns ; 138.50 MHz ( period = 7.220 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_MULTISECT ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.360 ns ; 7.028 ns ; +; 55.332 ns ; 138.50 MHz ( period = 7.220 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|COMMAND_REG[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_DELAY_B3 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.365 ns ; 7.033 ns ; +; 55.333 ns ; 138.52 MHz ( period = 7.219 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_VERIFY_CRC_2 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.360 ns ; 7.027 ns ; +; 55.333 ns ; 138.52 MHz ( period = 7.219 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_FIRSTBYTE ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.360 ns ; 7.027 ns ; +; 55.339 ns ; 138.64 MHz ( period = 7.213 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_RD_TRACK ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.363 ns ; 7.024 ns ; +; 55.339 ns ; 138.64 MHz ( period = 7.213 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_VERIFY_DRQ_3 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.363 ns ; 7.024 ns ; +; 55.339 ns ; 138.64 MHz ( period = 7.213 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_WR_LEADIN ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.370 ns ; 7.031 ns ; +; 55.340 ns ; 138.66 MHz ( period = 7.212 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_VERIFY_DRQ_2 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.363 ns ; 7.023 ns ; +; 55.341 ns ; 138.68 MHz ( period = 7.211 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_RDSTAT ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.360 ns ; 7.019 ns ; +; 55.342 ns ; 138.70 MHz ( period = 7.210 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_CHECK_INDEX_1 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.363 ns ; 7.021 ns ; +; 55.344 ns ; 138.73 MHz ( period = 7.208 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_VERIFY_DRQ_1 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.360 ns ; 7.016 ns ; +; 55.344 ns ; 138.73 MHz ( period = 7.208 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_VERIFY_AM ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.366 ns ; 7.022 ns ; +; 55.349 ns ; 138.83 MHz ( period = 7.203 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[15] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_DELAY_B2 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.355 ns ; 7.006 ns ; +; 55.354 ns ; 138.93 MHz ( period = 7.198 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_VERIFY_CRC ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.365 ns ; 7.011 ns ; +; 55.354 ns ; 138.93 MHz ( period = 7.198 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_LOAD_SHFT ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.362 ns ; 7.008 ns ; +; 55.355 ns ; 138.95 MHz ( period = 7.197 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_MULTISECT ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.362 ns ; 7.007 ns ; +; 55.356 ns ; 138.97 MHz ( period = 7.196 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_VERIFY_CRC_2 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.362 ns ; 7.006 ns ; +; 55.356 ns ; 138.97 MHz ( period = 7.196 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_FIRSTBYTE ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.362 ns ; 7.006 ns ; +; 55.361 ns ; 139.06 MHz ( period = 7.191 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[2] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_DELAY_B3 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.355 ns ; 6.994 ns ; +; 55.364 ns ; 139.12 MHz ( period = 7.188 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|INTRQ ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.361 ns ; 6.997 ns ; +; 55.364 ns ; 139.12 MHz ( period = 7.188 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_RDSTAT ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.362 ns ; 6.998 ns ; +; 55.367 ns ; 139.18 MHz ( period = 7.185 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_VERIFY_DRQ_1 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.362 ns ; 6.995 ns ; +; 55.367 ns ; 139.18 MHz ( period = 7.185 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_VERIFY_AM ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.368 ns ; 7.001 ns ; +; 55.374 ns ; 139.31 MHz ( period = 7.178 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.DELAY_15MS ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.370 ns ; 6.996 ns ; +; 55.376 ns ; 139.35 MHz ( period = 7.176 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_SCAN_TRACK ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.363 ns ; 6.987 ns ; +; 55.379 ns ; 139.41 MHz ( period = 7.173 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[12] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|INTRQ ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.363 ns ; 6.984 ns ; +; 55.383 ns ; 139.49 MHz ( period = 7.169 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_NEXTBYTE ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.363 ns ; 6.980 ns ; +; 55.383 ns ; 139.49 MHz ( period = 7.169 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[15] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_WR_FF ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.350 ns ; 6.967 ns ; +; 55.384 ns ; 139.51 MHz ( period = 7.168 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[9] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_VERIFY_DELAY ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.370 ns ; 6.986 ns ; +; 55.386 ns ; 139.55 MHz ( period = 7.166 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[15] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_CHECK_INDEX_3 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.350 ns ; 6.964 ns ; +; 55.386 ns ; 139.55 MHz ( period = 7.166 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_VERIFY_CRC_1 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.368 ns ; 6.982 ns ; +; 55.387 ns ; 139.57 MHz ( period = 7.165 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[15] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_SHIFT ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.350 ns ; 6.963 ns ; +; 55.387 ns ; 139.57 MHz ( period = 7.165 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[15] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_WR_AM ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.350 ns ; 6.963 ns ; +; 55.389 ns ; 139.61 MHz ( period = 7.163 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[12] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.DELAY_15MS ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.372 ns ; 6.983 ns ; +; 55.393 ns ; 139.68 MHz ( period = 7.159 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|INTRQ ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.365 ns ; 6.972 ns ; +; 55.399 ns ; 139.80 MHz ( period = 7.153 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_SCAN_TRACK ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.365 ns ; 6.966 ns ; +; 55.403 ns ; 139.88 MHz ( period = 7.149 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.DELAY_15MS ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.374 ns ; 6.971 ns ; +; 55.406 ns ; 139.94 MHz ( period = 7.146 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|COMMAND_REG[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_SET_DRQ ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.365 ns ; 6.959 ns ; +; 55.406 ns ; 139.94 MHz ( period = 7.146 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_NEXTBYTE ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.365 ns ; 6.959 ns ; +; 55.408 ns ; 139.98 MHz ( period = 7.144 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_ACTIV ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|ram_block11a0~porta_datain_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.739 ns ; 7.331 ns ; +; 55.409 ns ; 140.00 MHz ( period = 7.143 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_VERIFY_CRC_1 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.370 ns ; 6.961 ns ; +; 55.415 ns ; 140.11 MHz ( period = 7.137 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_VERIFY_DELAY ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.359 ns ; 6.944 ns ; +; 55.418 ns ; 140.17 MHz ( period = 7.134 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[10] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|INTRQ ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.354 ns ; 6.936 ns ; +; 55.418 ns ; 140.17 MHz ( period = 7.134 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[15] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_CHECK_DR ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.350 ns ; 6.932 ns ; +; 55.422 ns ; 140.25 MHz ( period = 7.130 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[7] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_SET_DRQ ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.368 ns ; 6.946 ns ; +; 55.428 ns ; 140.37 MHz ( period = 7.124 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[13] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_SET_DRQ ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.366 ns ; 6.938 ns ; +; 55.428 ns ; 140.37 MHz ( period = 7.124 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[10] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.DELAY_15MS ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.363 ns ; 6.935 ns ; +; 55.430 ns ; 140.41 MHz ( period = 7.122 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[8] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|INTRQ ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.352 ns ; 6.922 ns ; +; 55.440 ns ; 140.61 MHz ( period = 7.112 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[8] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.DELAY_15MS ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.361 ns ; 6.921 ns ; +; 55.441 ns ; 140.63 MHz ( period = 7.111 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CRC_ERRFLAG ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.361 ns ; 6.920 ns ; +; 55.441 ns ; 140.63 MHz ( period = 7.111 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_SCAN_SECT ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.368 ns ; 6.927 ns ; +; 55.441 ns ; 140.63 MHz ( period = 7.111 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_SCAN_LEN ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.368 ns ; 6.927 ns ; +; 55.441 ns ; 140.63 MHz ( period = 7.111 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_SCAN_CRC ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.368 ns ; 6.927 ns ; +; 55.441 ns ; 140.63 MHz ( period = 7.111 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[17] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_VERIFY_DELAY ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.359 ns ; 6.918 ns ; +; 55.443 ns ; 140.67 MHz ( period = 7.109 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|COMMAND_REG[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_DELAY_B3 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.365 ns ; 6.922 ns ; +; 55.456 ns ; 140.92 MHz ( period = 7.096 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[12] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CRC_ERRFLAG ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.363 ns ; 6.907 ns ; +; 55.456 ns ; 140.92 MHz ( period = 7.096 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[12] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_SCAN_SECT ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.370 ns ; 6.914 ns ; +; 55.456 ns ; 140.92 MHz ( period = 7.096 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[12] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_SCAN_LEN ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.370 ns ; 6.914 ns ; +; 55.456 ns ; 140.92 MHz ( period = 7.096 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[12] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_SCAN_CRC ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.370 ns ; 6.914 ns ; +; 55.459 ns ; 140.98 MHz ( period = 7.093 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[7] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_DELAY_B3 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.368 ns ; 6.909 ns ; +; 55.462 ns ; 141.04 MHz ( period = 7.090 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_DELAY_B2 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.364 ns ; 6.902 ns ; +; 55.463 ns ; 141.06 MHz ( period = 7.089 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_STEP_DELAY ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.364 ns ; 6.901 ns ; +; 55.465 ns ; 141.10 MHz ( period = 7.087 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[13] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_DELAY_B3 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.366 ns ; 6.901 ns ; +; 55.467 ns ; 141.14 MHz ( period = 7.085 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_SET_DRQ_1 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.364 ns ; 6.897 ns ; +; 55.469 ns ; 141.18 MHz ( period = 7.083 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_TRAP ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.364 ns ; 6.895 ns ; +; 55.470 ns ; 141.20 MHz ( period = 7.082 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CRC_ERRFLAG ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.365 ns ; 6.895 ns ; +; 55.470 ns ; 141.20 MHz ( period = 7.082 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_SCAN_SECT ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.372 ns ; 6.902 ns ; +; 55.470 ns ; 141.20 MHz ( period = 7.082 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_SCAN_LEN ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.372 ns ; 6.902 ns ; +; 55.470 ns ; 141.20 MHz ( period = 7.082 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_SCAN_CRC ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.372 ns ; 6.902 ns ; +; 55.471 ns ; 141.22 MHz ( period = 7.081 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_WR_BYTE ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.364 ns ; 6.893 ns ; +; 55.477 ns ; 141.34 MHz ( period = 7.075 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[12] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_DELAY_B2 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.366 ns ; 6.889 ns ; +; 55.478 ns ; 141.36 MHz ( period = 7.074 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[9] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.368 ns ; 6.890 ns ; +; 55.480 ns ; 141.40 MHz ( period = 7.072 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[11] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.368 ns ; 6.888 ns ; +; 55.483 ns ; 141.46 MHz ( period = 7.069 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[14] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.368 ns ; 6.885 ns ; +; 55.486 ns ; 141.52 MHz ( period = 7.066 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_STEP_DELAY ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.366 ns ; 6.880 ns ; +; 55.487 ns ; 141.54 MHz ( period = 7.065 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[18] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_VERIFY_DELAY ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.370 ns ; 6.883 ns ; +; 55.490 ns ; 141.60 MHz ( period = 7.062 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|SHIFT_REG[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|DIR ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.278 ns ; 6.788 ns ; +; 55.490 ns ; 141.60 MHz ( period = 7.062 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_SET_DRQ_1 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.366 ns ; 6.876 ns ; +; 55.491 ns ; 141.62 MHz ( period = 7.061 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_DELAY_B2 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.368 ns ; 6.877 ns ; +; 55.492 ns ; 141.64 MHz ( period = 7.060 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_TRAP ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.366 ns ; 6.874 ns ; +; 55.494 ns ; 141.68 MHz ( period = 7.058 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_WR_BYTE ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.366 ns ; 6.872 ns ; +; 55.495 ns ; 141.70 MHz ( period = 7.057 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[10] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CRC_ERRFLAG ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.354 ns ; 6.859 ns ; +; 55.495 ns ; 141.70 MHz ( period = 7.057 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[10] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_SCAN_SECT ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.361 ns ; 6.866 ns ; +; 55.495 ns ; 141.70 MHz ( period = 7.057 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[10] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_SCAN_LEN ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.361 ns ; 6.866 ns ; +; 55.495 ns ; 141.70 MHz ( period = 7.057 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[10] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_SCAN_CRC ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.361 ns ; 6.866 ns ; +; 55.496 ns ; 141.72 MHz ( period = 7.056 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_WR_FF ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.359 ns ; 6.863 ns ; +; 55.497 ns ; 141.74 MHz ( period = 7.055 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.IDLE ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.363 ns ; 6.866 ns ; +; 55.499 ns ; 141.78 MHz ( period = 7.053 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_CHECK_INDEX_3 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.359 ns ; 6.860 ns ; +; 55.500 ns ; 141.80 MHz ( period = 7.052 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_SHIFT ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.359 ns ; 6.859 ns ; +; 55.500 ns ; 141.80 MHz ( period = 7.052 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[19] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_VERIFY_DELAY ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.361 ns ; 6.861 ns ; +; 55.500 ns ; 141.80 MHz ( period = 7.052 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_WR_AM ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.359 ns ; 6.859 ns ; +; 55.501 ns ; 141.82 MHz ( period = 7.051 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[9] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.370 ns ; 6.869 ns ; +; 55.503 ns ; 141.86 MHz ( period = 7.049 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[11] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.370 ns ; 6.867 ns ; +; 55.506 ns ; 141.92 MHz ( period = 7.046 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[14] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.370 ns ; 6.864 ns ; +; 55.507 ns ; 141.94 MHz ( period = 7.045 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[8] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CRC_ERRFLAG ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.352 ns ; 6.845 ns ; +; 55.507 ns ; 141.94 MHz ( period = 7.045 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[8] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_SCAN_SECT ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.359 ns ; 6.852 ns ; +; 55.507 ns ; 141.94 MHz ( period = 7.045 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[8] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_SCAN_LEN ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.359 ns ; 6.852 ns ; +; 55.507 ns ; 141.94 MHz ( period = 7.045 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_VERIFY_CRC ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.363 ns ; 6.856 ns ; +; 55.507 ns ; 141.94 MHz ( period = 7.045 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[8] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_SCAN_CRC ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.359 ns ; 6.852 ns ; +; 55.508 ns ; 141.96 MHz ( period = 7.044 ns ) ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\P_DELAY:DELCNT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_SCAN_TRACK ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 62.552 ns ; 62.363 ns ; 6.855 ns ; +; Timing analysis restricted to 200 rows. ; To change the limit use Settings (Assignments menu) ; ; ; ; ; ; ; ; ++-----------------------------------------+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+-----------------------------+---------------------------+-------------------------+ + + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Clock Setup: 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2]' ; ++-----------------------------------------+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+-----------------------------+---------------------------+-------------------------+ +; Slack ; Actual fmax (period) ; From ; To ; From Clock ; To Clock ; Required Setup Relationship ; Required Longest P2P Time ; Actual Longest P2P Time ; ++-----------------------------------------+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+-----------------------------+---------------------------+-------------------------+ +; -4.615 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[35] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.928 ns ; 3.687 ns ; +; -4.573 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[95] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.921 ns ; 3.652 ns ; +; -4.568 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[107] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.926 ns ; 3.642 ns ; +; -4.562 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[90] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.915 ns ; 3.647 ns ; +; -4.553 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[33] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.918 ns ; 3.635 ns ; +; -4.549 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[49] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.918 ns ; 3.631 ns ; +; -4.541 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[34] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.928 ns ; 3.613 ns ; +; -4.533 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[99] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.610 ns ; +; -4.526 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[57] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.918 ns ; 3.608 ns ; +; -4.479 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.581 ns ; 3.898 ns ; +; -4.440 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FIFO_RDE ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.299 ns ; 4.141 ns ; +; -4.440 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[42] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.517 ns ; +; -4.413 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FIFO_RDE ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.299 ns ; 4.114 ns ; +; -4.409 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[111] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.486 ns ; +; -4.407 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[84] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.916 ns ; 3.491 ns ; +; -4.406 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[88] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.914 ns ; 3.492 ns ; +; -4.394 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[85] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.926 ns ; 3.468 ns ; +; -4.391 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[60] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.926 ns ; 3.465 ns ; +; -4.391 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[48] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.925 ns ; 3.466 ns ; +; -4.386 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[50] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.925 ns ; 3.461 ns ; +; -4.381 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[97] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.458 ns ; +; -4.378 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[23] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.455 ns ; +; -4.372 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[83] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.925 ns ; 3.447 ns ; +; -4.370 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[28] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.447 ns ; +; -4.370 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[20] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.447 ns ; +; -4.370 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[41] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.925 ns ; 3.445 ns ; +; -4.369 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FIFO_RDE ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.301 ns ; 4.068 ns ; +; -4.367 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[108] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.444 ns ; +; -4.366 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[78] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.925 ns ; 3.441 ns ; +; -4.366 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[59] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.925 ns ; 3.441 ns ; +; -4.364 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[43] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.441 ns ; +; -4.363 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[1] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.300 ns ; 4.063 ns ; +; -4.363 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[3] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.440 ns ; +; -4.361 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[72] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.925 ns ; 3.436 ns ; +; -4.360 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[70] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.926 ns ; 3.434 ns ; +; -4.360 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[81] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.925 ns ; 3.435 ns ; +; -4.357 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[38] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.926 ns ; 3.431 ns ; +; -4.356 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[112] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.433 ns ; +; -4.353 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[75] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.925 ns ; 3.428 ns ; +; -4.353 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[82] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.925 ns ; 3.428 ns ; +; -4.351 ns ; None ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|q_b[4] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe27 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.931 ns ; 3.420 ns ; +; -4.348 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[46] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.922 ns ; 3.426 ns ; +; -4.318 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[92] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.916 ns ; 3.402 ns ; +; -4.316 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[17] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.919 ns ; 3.397 ns ; +; -4.308 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FIFO_RDE ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.300 ns ; 4.008 ns ; +; -4.306 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[1] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.581 ns ; 3.725 ns ; +; -4.305 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[37] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.926 ns ; 3.379 ns ; +; -4.301 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.299 ns ; 4.002 ns ; +; -4.299 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[80] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.376 ns ; +; -4.298 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[45] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.924 ns ; 3.374 ns ; +; -4.297 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[124] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.374 ns ; +; -4.294 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[104] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.922 ns ; 3.372 ns ; +; -4.293 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[91] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.370 ns ; +; -4.293 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[30] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.922 ns ; 3.371 ns ; +; -4.290 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[58] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.925 ns ; 3.365 ns ; +; -4.289 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[15] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.366 ns ; +; -4.289 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.925 ns ; 3.364 ns ; +; -4.288 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[47] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.925 ns ; 3.363 ns ; +; -4.279 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[96] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.356 ns ; +; -4.278 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[10] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.355 ns ; +; -4.277 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[7] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.354 ns ; +; -4.273 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[69] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.926 ns ; 3.347 ns ; +; -4.271 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.299 ns ; 3.972 ns ; +; -4.269 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[0] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.299 ns ; 3.970 ns ; +; -4.269 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[54] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.926 ns ; 3.343 ns ; +; -4.269 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[68] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.346 ns ; +; -4.269 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[113] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.346 ns ; +; -4.268 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[110] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.345 ns ; +; -4.268 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[106] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.345 ns ; +; -4.267 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[13] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.344 ns ; +; -4.266 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[22] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.343 ns ; +; -4.264 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[116] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.341 ns ; +; -4.264 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[127] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.341 ns ; +; -4.262 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[125] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.339 ns ; +; -4.262 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[12] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.339 ns ; +; -4.259 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[3] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.299 ns ; 3.960 ns ; +; -4.259 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[51] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.925 ns ; 3.334 ns ; +; -4.258 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[61] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.926 ns ; 3.332 ns ; +; -4.256 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[122] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.333 ns ; +; -4.256 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[98] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.333 ns ; +; -4.255 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[86] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.926 ns ; 3.329 ns ; +; -4.255 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[40] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.925 ns ; 3.330 ns ; +; -4.253 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[109] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.330 ns ; +; -4.253 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[118] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.926 ns ; 3.327 ns ; +; -4.251 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[65] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.328 ns ; +; -4.248 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[4] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.325 ns ; +; -4.247 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[105] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.324 ns ; +; -4.246 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[31] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.323 ns ; +; -4.245 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[53] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.926 ns ; 3.319 ns ; +; -4.243 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[5] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.299 ns ; 3.944 ns ; +; -4.241 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[67] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.925 ns ; 3.316 ns ; +; -4.236 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[55] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.926 ns ; 3.310 ns ; +; -4.230 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.301 ns ; 3.929 ns ; +; -4.229 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[1] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.301 ns ; 3.928 ns ; +; -4.219 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.300 ns ; 3.919 ns ; +; -4.217 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[8] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.925 ns ; 3.292 ns ; +; -4.215 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[4] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.299 ns ; 3.916 ns ; +; -4.203 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[4] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.299 ns ; 3.904 ns ; +; -4.199 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[4] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.300 ns ; 3.899 ns ; +; -4.195 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[2] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.581 ns ; 3.614 ns ; +; -4.194 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[26] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.925 ns ; 3.269 ns ; +; -4.190 ns ; None ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|q_b[7] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe33 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.933 ns ; 3.257 ns ; +; -4.188 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[3] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.301 ns ; 3.887 ns ; +; -4.188 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a9 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.624 ns ; 3.564 ns ; +; -4.179 ns ; None ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|q_b[5] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe29 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.931 ns ; 3.248 ns ; +; -4.175 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[0] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.299 ns ; 3.876 ns ; +; -4.172 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[3] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.581 ns ; 3.591 ns ; +; -4.156 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[0] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.301 ns ; 3.855 ns ; +; -4.154 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[1] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.603 ns ; 3.551 ns ; +; -4.149 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[2] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.299 ns ; 3.850 ns ; +; -4.148 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[4] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.301 ns ; 3.847 ns ; +; -4.143 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[9] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.603 ns ; 3.540 ns ; +; -4.142 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[1] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe15 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.612 ns ; 3.530 ns ; +; -4.140 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a8 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.624 ns ; 3.516 ns ; +; -4.139 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[89] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.216 ns ; +; -4.138 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[0] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.300 ns ; 3.838 ns ; +; -4.137 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[11] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.926 ns ; 3.211 ns ; +; -4.135 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[87] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.212 ns ; +; -4.135 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[100] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.212 ns ; +; -4.135 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[71] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.212 ns ; +; -4.134 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[39] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.211 ns ; +; -4.133 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[121] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.210 ns ; +; -4.133 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[14] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.925 ns ; 3.208 ns ; +; -4.133 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[9] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.925 ns ; 3.208 ns ; +; -4.130 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[123] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.926 ns ; 3.204 ns ; +; -4.130 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[120] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.925 ns ; 3.205 ns ; +; -4.128 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[126] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.205 ns ; +; -4.127 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[114] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.925 ns ; 3.202 ns ; +; -4.125 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[117] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.926 ns ; 3.199 ns ; +; -4.124 ns ; None ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|q_b[2] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe23 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.933 ns ; 3.191 ns ; +; -4.113 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[74] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.190 ns ; +; -4.113 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[44] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.190 ns ; +; -4.113 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLUT_MUX_ADR[1] ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe22 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.616 ns ; 3.497 ns ; +; -4.109 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[64] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.186 ns ; +; -4.108 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[5] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.603 ns ; 3.505 ns ; +; -4.104 ns ; None ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|q_b[7] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe17 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.933 ns ; 3.171 ns ; +; -4.102 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[6] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.926 ns ; 3.176 ns ; +; -4.101 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[1] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.299 ns ; 3.802 ns ; +; -4.100 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[4] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.581 ns ; 3.519 ns ; +; -4.098 ns ; None ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|q_b[4] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe43 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.936 ns ; 3.162 ns ; +; -4.098 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[3] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.603 ns ; 3.495 ns ; +; -4.097 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[2] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.301 ns ; 3.796 ns ; +; -4.092 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[1] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.299 ns ; 3.793 ns ; +; -4.088 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[5] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.581 ns ; 3.507 ns ; +; -4.083 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[4] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.603 ns ; 3.480 ns ; +; -4.078 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[3] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.299 ns ; 3.779 ns ; +; -4.069 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|rd_ptr_lsb ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.306 ns ; 3.763 ns ; +; -4.068 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[1] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe13 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.612 ns ; 3.456 ns ; +; -4.068 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|rd_ptr_lsb ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.306 ns ; 3.762 ns ; +; -4.064 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|rd_ptr_lsb ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.307 ns ; 3.757 ns ; +; -4.049 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[1] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe49 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.613 ns ; 3.436 ns ; +; -4.045 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[7] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.603 ns ; 3.442 ns ; +; -4.045 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.603 ns ; 3.442 ns ; +; -4.041 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|rd_ptr_lsb ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.308 ns ; 3.733 ns ; +; -4.038 ns ; None ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[110] ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe26 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.615 ns ; 3.423 ns ; +; -4.034 ns ; None ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|q_b[5] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe45 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.938 ns ; 3.096 ns ; +; -4.034 ns ; None ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|q_b[4] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe11 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.943 ns ; 3.091 ns ; +; -4.034 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[3] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.300 ns ; 3.734 ns ; +; -4.024 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[1] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe47 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.613 ns ; 3.411 ns ; +; -4.019 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[6] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.581 ns ; 3.438 ns ; +; -4.016 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[79] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.093 ns ; +; -4.015 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[32] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.092 ns ; +; -4.014 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[73] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.091 ns ; +; -4.014 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[119] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.091 ns ; +; -4.014 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[24] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.925 ns ; 3.089 ns ; +; -4.012 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[77] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.089 ns ; +; -4.012 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[63] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.089 ns ; +; -4.012 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[36] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.089 ns ; +; -4.011 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[93] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.088 ns ; +; -4.011 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[115] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.926 ns ; 3.085 ns ; +; -4.009 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[56] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.925 ns ; 3.084 ns ; +; -4.006 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[102] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.926 ns ; 3.080 ns ; +; -4.006 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[8] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.603 ns ; 3.403 ns ; +; -4.005 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[18] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.925 ns ; 3.080 ns ; +; -4.004 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[5] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.301 ns ; 3.703 ns ; +; -4.000 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[9] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.581 ns ; 3.419 ns ; +; -3.998 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[76] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.075 ns ; +; -3.998 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[5] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.299 ns ; 3.699 ns ; +; -3.996 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[62] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.073 ns ; +; -3.995 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[2] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.603 ns ; 3.392 ns ; +; -3.993 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[52] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.070 ns ; +; -3.991 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[66] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.068 ns ; +; -3.989 ns ; None ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|q_b[3] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe41 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.938 ns ; 3.051 ns ; +; -3.989 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[0] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe43 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.610 ns ; 3.379 ns ; +; -3.988 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[103] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.923 ns ; 3.065 ns ; +; -3.986 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[16] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.925 ns ; 3.061 ns ; +; -3.986 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[1] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.925 ns ; 3.061 ns ; +; -3.985 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[94] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.925 ns ; 3.060 ns ; +; -3.985 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[29] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.926 ns ; 3.059 ns ; +; -3.985 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[5] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.926 ns ; 3.059 ns ; +; -3.985 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.925 ns ; 3.060 ns ; +; -3.984 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[19] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.926 ns ; 3.058 ns ; +; -3.984 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[25] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.925 ns ; 3.059 ns ; +; -3.983 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[27] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.926 ns ; 3.057 ns ; +; -3.982 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[21] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.926 ns ; 3.056 ns ; +; -3.981 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[101] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.926 ns ; 3.055 ns ; +; -3.972 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[6] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.603 ns ; 3.369 ns ; +; -3.970 ns ; None ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|q_b[3] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe25 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.933 ns ; 3.037 ns ; +; -3.966 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[5] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.300 ns ; 3.666 ns ; +; -3.954 ns ; None ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|q_b[3] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe9 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.145 ns ; -0.935 ns ; 3.019 ns ; +; Timing analysis restricted to 200 rows. ; To change the limit use Settings (Assignments menu) ; ; ; ; ; ; ; ; ++-----------------------------------------+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+-----------------------------+---------------------------+-------------------------+ + + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Clock Setup: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0]' ; ++-----------------------------------------+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+-----------------------------+---------------------------+-------------------------+ +; Slack ; Actual fmax (period) ; From ; To ; From Clock ; To Clock ; Required Setup Relationship ; Required Longest P2P Time ; Actual Longest P2P Time ; ++-----------------------------------------+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+-----------------------------+---------------------------+-------------------------+ +; -2.673 ns ; None ; FB_ALE ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BUS_CYC ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.262 ns ; 0.814 ns ; 3.487 ns ; +; -2.447 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[10] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.083 ns ; 3.530 ns ; +; -2.348 ns ; None ; FB_ALE ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FIFO_BANK_OK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.262 ns ; 0.807 ns ; 3.155 ns ; +; -2.346 ns ; None ; FB_ALE ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FIFO_AC ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.262 ns ; 0.807 ns ; 3.153 ns ; +; -2.275 ns ; None ; FB_ALE ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[10] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.262 ns ; 0.807 ns ; 3.082 ns ; +; -2.254 ns ; None ; FB_ALE ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_AC ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.262 ns ; 0.807 ns ; 3.061 ns ; +; -2.243 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[3] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.138 ns ; 3.381 ns ; +; -2.194 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[9] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.100 ns ; 3.294 ns ; +; -2.187 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.075 ns ; 3.262 ns ; +; -2.094 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[1] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_VDMP[5] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.145 ns ; 3.239 ns ; +; -2.024 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[0] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_VDMP[7] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.145 ns ; 3.169 ns ; +; -2.006 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[1] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_VDMP[7] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.145 ns ; 3.151 ns ; +; -1.993 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[17] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.132 ns ; 3.125 ns ; +; -1.990 ns ; None ; FB_ALE ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_FIFO_WRE ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.262 ns ; 0.807 ns ; 2.797 ns ; +; -1.911 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[2] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.140 ns ; 3.051 ns ; +; -1.896 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BA_S[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.090 ns ; 2.986 ns ; +; -1.895 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BA_S[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.090 ns ; 2.985 ns ; +; -1.873 ns ; None ; FB_ALE ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_T7F ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.262 ns ; 0.807 ns ; 2.680 ns ; +; -1.871 ns ; None ; FB_ALE ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_T3 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.262 ns ; 0.807 ns ; 2.678 ns ; +; -1.838 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLR_FIFO ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CLR_FIFO_SYNC ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; -1.306 ns ; 0.532 ns ; +; -1.834 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[19] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[5] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.131 ns ; 2.965 ns ; +; -1.828 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.079 ns ; 2.907 ns ; +; -1.827 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[6] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.079 ns ; 2.906 ns ; +; -1.824 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.079 ns ; 2.903 ns ; +; -1.800 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.131 ns ; 2.931 ns ; +; -1.800 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[5] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.079 ns ; 2.879 ns ; +; -1.765 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[0] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_VDMP[5] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.145 ns ; 2.910 ns ; +; -1.763 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[20] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[6] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.132 ns ; 2.895 ns ; +; -1.755 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[16] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.136 ns ; 2.891 ns ; +; -1.647 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[4] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.133 ns ; 2.780 ns ; +; -1.646 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[9] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[7] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.133 ns ; 2.779 ns ; +; -1.641 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[6] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.129 ns ; 2.770 ns ; +; -1.610 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[8] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[6] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.129 ns ; 2.739 ns ; +; -1.593 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[11] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[9] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.152 ns ; 2.745 ns ; +; -1.556 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[21] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[7] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.134 ns ; 2.690 ns ; +; -1.553 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[5] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.129 ns ; 2.682 ns ; +; -1.470 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[12] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BA_S[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.142 ns ; 2.612 ns ; +; -1.465 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[7] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[5] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.129 ns ; 2.594 ns ; +; -1.463 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[10] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.127 ns ; 2.590 ns ; +; -1.451 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[1] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_VDMP[6] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.145 ns ; 2.596 ns ; +; -1.441 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[1] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_VDMP[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.145 ns ; 2.586 ns ; +; -1.436 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[24] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[10] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.136 ns ; 2.572 ns ; +; -1.413 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[14] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.142 ns ; 2.555 ns ; +; -1.361 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[0] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_VDMP[6] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.145 ns ; 2.506 ns ; +; -1.341 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[0] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_VDMP[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.145 ns ; 2.486 ns ; +; -1.329 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_P[9] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.075 ns ; 2.404 ns ; +; -1.327 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FIFO_AC ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.083 ns ; 2.410 ns ; +; -1.326 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_P[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.084 ns ; 2.410 ns ; +; -1.302 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.083 ns ; 2.385 ns ; +; -1.298 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[22] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.126 ns ; 2.424 ns ; +; -1.271 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[11] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.077 ns ; 2.348 ns ; +; -1.252 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_AC ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.083 ns ; 2.335 ns ; +; -1.216 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[13] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BA_S[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.142 ns ; 2.358 ns ; +; -1.202 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_P[6] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.075 ns ; 2.277 ns ; +; -1.202 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_P[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.075 ns ; 2.277 ns ; +; -1.181 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[7] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.083 ns ; 2.264 ns ; +; -1.167 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_CB8 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.079 ns ; 2.246 ns ; +; -1.162 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_T8F ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.079 ns ; 2.241 ns ; +; -1.139 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[26] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[12] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.130 ns ; 2.269 ns ; +; -1.102 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[12] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.084 ns ; 2.186 ns ; +; -1.077 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[15] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.140 ns ; 2.217 ns ; +; -1.048 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[23] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[9] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.151 ns ; 2.199 ns ; +; -1.047 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_P[7] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.084 ns ; 2.131 ns ; +; -0.910 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[25] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[11] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.123 ns ; 2.033 ns ; +; -0.901 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_P[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.091 ns ; 1.992 ns ; +; -0.827 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BUS_CYC ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.090 ns ; 1.917 ns ; +; -0.750 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_P[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.091 ns ; 1.841 ns ; +; -0.750 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_T2A ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.091 ns ; 1.841 ns ; +; -0.741 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_P[5] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.091 ns ; 1.832 ns ; +; -0.642 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.088 ns ; 1.730 ns ; +; -0.623 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_P[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.088 ns ; 1.711 ns ; +; -0.616 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_P[10] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.088 ns ; 1.704 ns ; +; -0.600 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_C5 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.088 ns ; 1.688 ns ; +; -0.596 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_T1 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.087 ns ; 1.683 ns ; +; -0.413 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_P[12] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.077 ns ; 1.490 ns ; +; -0.410 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_P[11] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.077 ns ; 1.487 ns ; +; -0.199 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.090 ns ; 1.289 ns ; +; -0.193 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_T2B ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.090 ns ; 1.283 ns ; +; -0.191 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_P[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.091 ns ; 1.282 ns ; +; -0.186 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[0] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a14~porta_datain_reg0 ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.175 ns ; 4.361 ns ; +; -0.183 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BA_P[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.091 ns ; 1.274 ns ; +; -0.102 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[24] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FIFO_REQ ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 3.040 ns ; 3.142 ns ; +; -0.068 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[1] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a4~porta_datain_reg0 ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.171 ns ; 4.239 ns ; +; -0.062 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[1] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a14~porta_datain_reg0 ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.175 ns ; 4.237 ns ; +; -0.041 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[0] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a1~porta_datain_reg0 ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.162 ns ; 4.203 ns ; +; -0.024 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[1] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a3~porta_datain_reg0 ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.181 ns ; 4.205 ns ; +; 0.003 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[0] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a5~porta_datain_reg0 ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.168 ns ; 4.165 ns ; +; 0.039 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[1] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a0~porta_datain_reg0 ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.173 ns ; 4.134 ns ; +; 0.059 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BA_P[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 1.264 ns ; 1.091 ns ; 1.032 ns ; +; 0.073 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[0] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a4~porta_datain_reg0 ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.171 ns ; 4.098 ns ; +; 0.080 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[0] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a2~porta_datain_reg0 ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.167 ns ; 4.087 ns ; +; 0.108 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[0] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a3~porta_datain_reg0 ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.181 ns ; 4.073 ns ; +; 0.123 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[1] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a5~porta_datain_reg0 ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.168 ns ; 4.045 ns ; +; 0.165 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[0] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a7~porta_datain_reg0 ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.182 ns ; 4.017 ns ; +; 0.166 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[0] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a0~porta_datain_reg0 ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.173 ns ; 4.007 ns ; +; 0.194 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[1] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a2~porta_datain_reg0 ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.167 ns ; 3.973 ns ; +; 0.201 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[1] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a1~porta_datain_reg0 ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.162 ns ; 3.961 ns ; +; 0.250 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[3] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a1~porta_datain_reg0 ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.464 ns ; 4.214 ns ; +; 0.301 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[2] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a3~porta_datain_reg0 ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.522 ns ; 4.221 ns ; +; 0.306 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[3] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a3~porta_datain_reg0 ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.483 ns ; 4.177 ns ; +; 0.375 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[2] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a0~porta_datain_reg0 ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.514 ns ; 4.139 ns ; +; 0.401 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[3] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a0~porta_datain_reg0 ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.475 ns ; 4.074 ns ; +; 0.451 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[1] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a7~porta_datain_reg0 ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.182 ns ; 3.731 ns ; +; 0.454 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[3] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a14~porta_datain_reg0 ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.477 ns ; 4.023 ns ; +; 0.467 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[3] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a4~porta_datain_reg0 ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.473 ns ; 4.006 ns ; +; 0.509 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[2] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a1~porta_datain_reg0 ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.503 ns ; 3.994 ns ; +; 0.514 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[3] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a2~porta_datain_reg0 ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.469 ns ; 3.955 ns ; +; 0.539 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[3] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a7~porta_datain_reg0 ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.484 ns ; 3.945 ns ; +; 0.568 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[10] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.391 ns ; 3.823 ns ; +; 0.576 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[3] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a5~porta_datain_reg0 ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.470 ns ; 3.894 ns ; +; 0.579 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[8] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.383 ns ; 3.804 ns ; +; 0.580 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[9] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.408 ns ; 3.828 ns ; +; 0.619 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[5] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.387 ns ; 3.768 ns ; +; 0.677 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[2] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a14~porta_datain_reg0 ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.516 ns ; 3.839 ns ; +; 0.695 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[2] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a2~porta_datain_reg0 ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.508 ns ; 3.813 ns ; +; 0.773 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[2] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a4~porta_datain_reg0 ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.512 ns ; 3.739 ns ; +; 0.800 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[6] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.387 ns ; 3.587 ns ; +; 0.805 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[3] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.387 ns ; 3.582 ns ; +; 0.810 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[2] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a5~porta_datain_reg0 ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.509 ns ; 3.699 ns ; +; 0.818 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_L_D[2] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a7~porta_datain_reg0 ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.523 ns ; 3.705 ns ; +; 0.834 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BUS_CYC ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.212 ns ; 3.378 ns ; +; 0.838 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_P[9] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.383 ns ; 3.545 ns ; +; 0.840 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FIFO_AC ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.391 ns ; 3.551 ns ; +; 0.841 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_P[2] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.392 ns ; 3.551 ns ; +; 0.933 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[4] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.387 ns ; 3.454 ns ; +; 0.965 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_P[6] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.383 ns ; 3.418 ns ; +; 0.965 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_P[8] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.383 ns ; 3.418 ns ; +; 1.026 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[2] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.391 ns ; 3.365 ns ; +; 1.038 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[11] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.385 ns ; 3.347 ns ; +; 1.057 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_AC ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.391 ns ; 3.334 ns ; +; 1.110 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BUS_CYC ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.057 ns ; 2.947 ns ; +; 1.120 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_P[7] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.392 ns ; 3.272 ns ; +; 1.147 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[7] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.391 ns ; 3.244 ns ; +; 1.153 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BA_S[1] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.398 ns ; 3.245 ns ; +; 1.207 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[12] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.392 ns ; 3.185 ns ; +; 1.266 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_P[4] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.399 ns ; 3.133 ns ; +; 1.344 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BUS_CYC ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.057 ns ; 2.713 ns ; +; 1.374 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BA_S[0] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.398 ns ; 3.024 ns ; +; 1.417 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_P[3] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.399 ns ; 2.982 ns ; +; 1.417 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_T2A ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.399 ns ; 2.982 ns ; +; 1.426 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_P[5] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.399 ns ; 2.973 ns ; +; 1.426 ns ; 162.63 MHz ( period = 6.149 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_bwp|dffe21a[0] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[10] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.362 ns ; 5.936 ns ; +; 1.427 ns ; 162.65 MHz ( period = 6.148 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_brp|dffe21a[0] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[10] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.362 ns ; 5.935 ns ; +; 1.481 ns ; 164.10 MHz ( period = 6.094 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_bwp|dffe21a[1] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[10] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.362 ns ; 5.881 ns ; +; 1.482 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BUS_CYC ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.398 ns ; 2.916 ns ; +; 1.484 ns ; 164.18 MHz ( period = 6.091 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_brp|dffe21a[1] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[10] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.362 ns ; 5.878 ns ; +; 1.526 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[24] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CLEAR_FIFO_CNT ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 3.055 ns ; 1.529 ns ; +; 1.527 ns ; 165.34 MHz ( period = 6.048 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_brp|dffe21a[4] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[10] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.362 ns ; 5.835 ns ; +; 1.540 ns ; 165.70 MHz ( period = 6.035 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_bwp|dffe21a[2] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[10] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.362 ns ; 5.822 ns ; +; 1.543 ns ; 165.78 MHz ( period = 6.032 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_brp|dffe21a[2] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[10] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.362 ns ; 5.819 ns ; +; 1.582 ns ; None ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[16] ; Video:Fredi_Aschwanden|lpm_ff0:inst19|lpm_ff:lpm_ff_component|dffs[16] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 5.049 ns ; 4.858 ns ; 3.276 ns ; +; 1.589 ns ; 167.06 MHz ( period = 5.986 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_bwp|dffe21a[5] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[10] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.362 ns ; 5.773 ns ; +; 1.598 ns ; 167.31 MHz ( period = 5.977 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_bwp|dffe21a[3] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[10] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.362 ns ; 5.764 ns ; +; 1.601 ns ; 167.39 MHz ( period = 5.974 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_brp|dffe21a[3] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[10] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.362 ns ; 5.761 ns ; +; 1.656 ns ; 168.95 MHz ( period = 5.919 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_bwp|dffe21a[4] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[10] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.362 ns ; 5.706 ns ; +; 1.676 ns ; None ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[17] ; Video:Fredi_Aschwanden|lpm_ff0:inst18|lpm_ff:lpm_ff_component|dffs[17] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 5.049 ns ; 4.850 ns ; 3.174 ns ; +; 1.677 ns ; None ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[24] ; Video:Fredi_Aschwanden|lpm_ff0:inst18|lpm_ff:lpm_ff_component|dffs[24] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 5.049 ns ; 4.824 ns ; 3.147 ns ; +; 1.679 ns ; 169.61 MHz ( period = 5.896 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_bwp|dffe21a[0] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[9] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.379 ns ; 5.700 ns ; +; 1.680 ns ; 169.64 MHz ( period = 5.895 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_brp|dffe21a[0] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[9] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.379 ns ; 5.699 ns ; +; 1.686 ns ; 169.81 MHz ( period = 5.889 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_bwp|dffe21a[0] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.354 ns ; 5.668 ns ; +; 1.687 ns ; 169.84 MHz ( period = 5.888 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_brp|dffe21a[0] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.354 ns ; 5.667 ns ; +; 1.714 ns ; 170.62 MHz ( period = 5.861 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_brp|dffe21a[5] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[10] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.362 ns ; 5.648 ns ; +; 1.734 ns ; 171.20 MHz ( period = 5.841 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_bwp|dffe21a[1] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[9] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.379 ns ; 5.645 ns ; +; 1.737 ns ; 171.29 MHz ( period = 5.838 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_brp|dffe21a[1] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[9] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.379 ns ; 5.642 ns ; +; 1.738 ns ; None ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[21] ; Video:Fredi_Aschwanden|lpm_ff0:inst19|lpm_ff:lpm_ff_component|dffs[21] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 5.049 ns ; 4.841 ns ; 3.103 ns ; +; 1.741 ns ; 171.41 MHz ( period = 5.834 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_bwp|dffe21a[1] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.354 ns ; 5.613 ns ; +; 1.744 ns ; 171.50 MHz ( period = 5.831 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_brp|dffe21a[1] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.354 ns ; 5.610 ns ; +; 1.746 ns ; None ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[21] ; Video:Fredi_Aschwanden|lpm_ff0:inst17|lpm_ff:lpm_ff_component|dffs[21] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 5.049 ns ; 4.841 ns ; 3.095 ns ; +; 1.747 ns ; None ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[1] ; Video:Fredi_Aschwanden|lpm_ff0:inst19|lpm_ff:lpm_ff_component|dffs[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 5.049 ns ; 4.865 ns ; 3.118 ns ; +; 1.750 ns ; None ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[26] ; Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component|dffs[26] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 5.049 ns ; 4.866 ns ; 3.116 ns ; +; 1.756 ns ; 171.85 MHz ( period = 5.819 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_bwp|dffe21a[6] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[10] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.362 ns ; 5.606 ns ; +; 1.760 ns ; None ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[1] ; Video:Fredi_Aschwanden|lpm_ff0:inst17|lpm_ff:lpm_ff_component|dffs[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 5.049 ns ; 4.865 ns ; 3.105 ns ; +; 1.779 ns ; None ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[24] ; Video:Fredi_Aschwanden|lpm_ff0:inst19|lpm_ff:lpm_ff_component|dffs[24] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 5.049 ns ; 4.824 ns ; 3.045 ns ; +; 1.780 ns ; 172.56 MHz ( period = 5.795 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_brp|dffe21a[4] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[9] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.379 ns ; 5.599 ns ; +; 1.787 ns ; 172.77 MHz ( period = 5.788 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_brp|dffe21a[4] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.354 ns ; 5.567 ns ; +; 1.792 ns ; None ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[24] ; Video:Fredi_Aschwanden|lpm_ff0:inst17|lpm_ff:lpm_ff_component|dffs[24] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 5.049 ns ; 4.824 ns ; 3.032 ns ; +; 1.793 ns ; 172.95 MHz ( period = 5.782 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_bwp|dffe21a[2] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[9] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.379 ns ; 5.586 ns ; +; 1.796 ns ; 173.04 MHz ( period = 5.779 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_brp|dffe21a[2] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[9] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.379 ns ; 5.583 ns ; +; 1.800 ns ; 173.16 MHz ( period = 5.775 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_bwp|dffe21a[2] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.354 ns ; 5.554 ns ; +; 1.803 ns ; 173.25 MHz ( period = 5.772 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_brp|dffe21a[2] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.354 ns ; 5.551 ns ; +; 1.805 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_P[12] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.385 ns ; 2.580 ns ; +; 1.808 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_P[11] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.385 ns ; 2.577 ns ; +; 1.812 ns ; None ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[23] ; Video:Fredi_Aschwanden|lpm_ff0:inst17|lpm_ff:lpm_ff_component|dffs[23] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 5.049 ns ; 4.831 ns ; 3.019 ns ; +; 1.829 ns ; 174.03 MHz ( period = 5.746 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_bwp|dffe21a[0] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FIFO_REQ ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.354 ns ; 5.525 ns ; +; 1.830 ns ; 174.06 MHz ( period = 5.745 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_brp|dffe21a[0] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FIFO_REQ ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.354 ns ; 5.524 ns ; +; 1.840 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_P[0] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.399 ns ; 2.559 ns ; +; 1.842 ns ; 174.43 MHz ( period = 5.733 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_bwp|dffe21a[5] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[9] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.379 ns ; 5.537 ns ; +; 1.842 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BA_P[1] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.399 ns ; 2.557 ns ; +; 1.842 ns ; None ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[28] ; Video:Fredi_Aschwanden|lpm_ff0:inst17|lpm_ff:lpm_ff_component|dffs[28] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 5.049 ns ; 4.824 ns ; 2.982 ns ; +; 1.845 ns ; None ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[31] ; Video:Fredi_Aschwanden|lpm_ff0:inst18|lpm_ff:lpm_ff_component|dffs[31] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 5.049 ns ; 4.847 ns ; 3.002 ns ; +; 1.847 ns ; None ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[23] ; Video:Fredi_Aschwanden|lpm_ff0:inst19|lpm_ff:lpm_ff_component|dffs[23] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 5.049 ns ; 4.847 ns ; 3.000 ns ; +; 1.849 ns ; 174.64 MHz ( period = 5.726 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_bwp|dffe21a[5] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.354 ns ; 5.505 ns ; +; 1.851 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[0] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 3.955 ns ; 4.398 ns ; 2.547 ns ; +; 1.851 ns ; 174.70 MHz ( period = 5.724 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_bwp|dffe21a[3] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[9] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.379 ns ; 5.528 ns ; +; 1.854 ns ; 174.79 MHz ( period = 5.721 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_brp|dffe21a[3] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[9] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.379 ns ; 5.525 ns ; +; 1.858 ns ; 174.92 MHz ( period = 5.717 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_bwp|dffe21a[3] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.354 ns ; 5.496 ns ; +; 1.861 ns ; 175.01 MHz ( period = 5.714 ns ) ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_oe9:ws_brp|dffe21a[3] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 7.575 ns ; 7.354 ns ; 5.493 ns ; +; 1.865 ns ; None ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[16] ; Video:Fredi_Aschwanden|lpm_ff0:inst17|lpm_ff:lpm_ff_component|dffs[16] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 5.049 ns ; 4.826 ns ; 2.961 ns ; +; 1.873 ns ; None ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[17] ; Video:Fredi_Aschwanden|lpm_ff0:inst19|lpm_ff:lpm_ff_component|dffs[17] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 5.049 ns ; 4.829 ns ; 2.956 ns ; +; 1.881 ns ; None ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[17] ; Video:Fredi_Aschwanden|lpm_ff0:inst17|lpm_ff:lpm_ff_component|dffs[17] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 5.049 ns ; 4.829 ns ; 2.948 ns ; +; Timing analysis restricted to 200 rows. ; To change the limit use Settings (Assignments menu) ; ; ; ; ; ; ; ; ++-----------------------------------------+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+-----------------------------+---------------------------+-------------------------+ + + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Clock Setup: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1]' ; ++----------+---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+-----------------------------+---------------------------+-------------------------+ +; Slack ; Actual fmax (period) ; From ; To ; From Clock ; To Clock ; Required Setup Relationship ; Required Longest P2P Time ; Actual Longest P2P Time ; ++----------+---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+-----------------------------+---------------------------+-------------------------+ +; 2.965 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[6] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[6] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 3.788 ns ; 3.604 ns ; 0.639 ns ; +; 2.966 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[25] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[25] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 3.788 ns ; 3.604 ns ; 0.638 ns ; +; 2.967 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[29] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[29] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 3.788 ns ; 3.604 ns ; 0.637 ns ; +; 2.968 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[28] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[28] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 3.788 ns ; 3.604 ns ; 0.636 ns ; +; 3.093 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[20] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[20] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 3.788 ns ; 3.604 ns ; 0.511 ns ; +; 3.093 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[11] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[11] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 3.788 ns ; 3.604 ns ; 0.511 ns ; +; 3.093 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[9] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[9] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 3.788 ns ; 3.604 ns ; 0.511 ns ; +; 3.093 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[16] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[16] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 3.788 ns ; 3.604 ns ; 0.511 ns ; +; 3.093 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[15] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[15] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 3.788 ns ; 3.604 ns ; 0.511 ns ; +; 3.093 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[30] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[30] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 3.788 ns ; 3.604 ns ; 0.511 ns ; +; 3.094 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[14] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[14] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 3.788 ns ; 3.604 ns ; 0.510 ns ; +; 3.094 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[0] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 3.788 ns ; 3.604 ns ; 0.510 ns ; +; 3.094 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[13] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[13] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 3.788 ns ; 3.604 ns ; 0.510 ns ; +; 3.094 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[4] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 3.788 ns ; 3.604 ns ; 0.510 ns ; +; 3.094 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[24] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[24] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 3.788 ns ; 3.604 ns ; 0.510 ns ; +; 3.094 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[18] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[18] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 3.788 ns ; 3.604 ns ; 0.510 ns ; +; 3.094 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[17] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[17] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 3.788 ns ; 3.604 ns ; 0.510 ns ; +; 3.094 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[31] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[31] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 3.788 ns ; 3.604 ns ; 0.510 ns ; +; 3.095 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[7] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[7] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 3.788 ns ; 3.604 ns ; 0.509 ns ; +; 3.095 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[10] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[10] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 3.788 ns ; 3.604 ns ; 0.509 ns ; +; 3.095 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[23] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[23] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 3.788 ns ; 3.604 ns ; 0.509 ns ; +; 3.095 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[19] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[19] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 3.788 ns ; 3.604 ns ; 0.509 ns ; +; 3.095 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[26] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[26] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 3.788 ns ; 3.604 ns ; 0.509 ns ; +; 3.095 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[22] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[22] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 3.788 ns ; 3.604 ns ; 0.509 ns ; +; 3.096 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[3] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 3.788 ns ; 3.604 ns ; 0.508 ns ; +; 3.096 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[5] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[5] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 3.788 ns ; 3.604 ns ; 0.508 ns ; +; 3.096 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[21] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[21] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 3.788 ns ; 3.604 ns ; 0.508 ns ; +; 3.097 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[2] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 3.788 ns ; 3.604 ns ; 0.507 ns ; +; 3.097 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[8] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 3.788 ns ; 3.604 ns ; 0.507 ns ; +; 3.097 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[12] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[12] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 3.788 ns ; 3.604 ns ; 0.507 ns ; +; 3.097 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[27] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[27] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 3.788 ns ; 3.604 ns ; 0.507 ns ; +; 3.097 ns ; Restricted to 500.0 MHz ( period = 2.0 ns ) ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[1] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; 3.788 ns ; 3.604 ns ; 0.507 ns ; ++----------+---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+-----------------------------+---------------------------+-------------------------+ + + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Clock Setup: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2]' ; ++----------+----------------------+---------------------------------------------------+-----------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+-----------------------------+---------------------------+-------------------------+ +; Slack ; Actual fmax (period) ; From ; To ; From Clock ; To Clock ; Required Setup Relationship ; Required Longest P2P Time ; Actual Longest P2P Time ; ++----------+----------------------+---------------------------------------------------+-----------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+-----------------------------+---------------------------+-------------------------+ +; 5.299 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_VDMP[3] ; Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; 6.313 ns ; 6.118 ns ; 0.819 ns ; +; 5.479 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_VDMP[5] ; Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[5] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; 6.313 ns ; 6.116 ns ; 0.637 ns ; +; 5.480 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_VDMP[4] ; Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; 6.313 ns ; 6.116 ns ; 0.636 ns ; +; 5.606 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_VDMP[7] ; Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[7] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; 6.313 ns ; 6.116 ns ; 0.510 ns ; +; 5.608 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_VDMP[6] ; Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[6] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; 6.313 ns ; 6.116 ns ; 0.508 ns ; ++----------+----------------------+---------------------------------------------------+-----------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+-----------------------------+---------------------------+-------------------------+ + + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Clock Setup: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3]' ; ++-----------------------------------------+-----------------------------------------------------+------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+-----------------------------+---------------------------+-------------------------+ +; Slack ; Actual fmax (period) ; From ; To ; From Clock ; To Clock ; Required Setup Relationship ; Required Longest P2P Time ; Actual Longest P2P Time ; ++-----------------------------------------+-----------------------------------------------------+------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+-----------------------------+---------------------------+-------------------------+ +; 1.672 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[2] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[2]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.308 ns ; 3.636 ns ; +; 1.683 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[15] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[15]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.304 ns ; 3.621 ns ; +; 1.703 ns ; 170.30 MHz ( period = 5.872 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[2]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 6.893 ns ; 5.190 ns ; +; 1.806 ns ; 173.34 MHz ( period = 5.769 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[9]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 6.887 ns ; 5.081 ns ; +; 1.842 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[4] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[4]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.327 ns ; 3.485 ns ; +; 1.881 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[7] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[7]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.309 ns ; 3.428 ns ; +; 1.904 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[11] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[11]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.325 ns ; 3.421 ns ; +; 1.914 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[13] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[13]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.309 ns ; 3.395 ns ; +; 1.923 ns ; 176.93 MHz ( period = 5.652 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[13]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 6.893 ns ; 4.970 ns ; +; 2.000 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[2] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[2]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.308 ns ; 3.308 ns ; +; 2.018 ns ; 179.95 MHz ( period = 5.557 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[3]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 6.883 ns ; 4.865 ns ; +; 2.034 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[9] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[9]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.321 ns ; 3.287 ns ; +; 2.040 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[5] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[5]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.293 ns ; 3.253 ns ; +; 2.068 ns ; 181.59 MHz ( period = 5.507 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[6]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 6.887 ns ; 4.819 ns ; +; 2.105 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[6] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[6]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.302 ns ; 3.197 ns ; +; 2.112 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_DDR_WR ; Video:Fredi_Aschwanden|inst90~_Duplicate_2 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 4.735 ns ; 4.488 ns ; 2.376 ns ; +; 2.131 ns ; 183.69 MHz ( period = 5.444 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[15]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 6.896 ns ; 4.765 ns ; +; 2.141 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[12] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[12]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.316 ns ; 3.175 ns ; +; 2.151 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[14] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[14]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.307 ns ; 3.156 ns ; +; 2.155 ns ; 184.50 MHz ( period = 5.420 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[12]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 6.900 ns ; 4.745 ns ; +; 2.159 ns ; 184.64 MHz ( period = 5.416 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[14]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 6.891 ns ; 4.732 ns ; +; 2.166 ns ; 184.88 MHz ( period = 5.409 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[10]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 6.878 ns ; 4.712 ns ; +; 2.178 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[13] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[13]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.309 ns ; 3.131 ns ; +; 2.202 ns ; 186.12 MHz ( period = 5.373 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[4]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 6.893 ns ; 4.691 ns ; +; 2.203 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[5] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[5]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.312 ns ; 3.109 ns ; +; 2.207 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[1] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[1]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.335 ns ; 3.128 ns ; +; 2.238 ns ; 187.37 MHz ( period = 5.337 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[5]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 6.878 ns ; 4.640 ns ; +; 2.242 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[3] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[3]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.317 ns ; 3.075 ns ; +; 2.260 ns ; 188.15 MHz ( period = 5.315 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[11]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 6.891 ns ; 4.631 ns ; +; 2.265 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_DDR_WR ; Video:Fredi_Aschwanden|inst90~_Duplicate_1 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 4.735 ns ; 4.428 ns ; 2.163 ns ; +; 2.273 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_DDR_WR ; Video:Fredi_Aschwanden|inst90~_Duplicate_3 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 4.735 ns ; 4.492 ns ; 2.219 ns ; +; 2.298 ns ; 189.50 MHz ( period = 5.277 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[0]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 6.901 ns ; 4.603 ns ; +; 2.325 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[0] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[0]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.316 ns ; 2.991 ns ; +; 2.338 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[18] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[18]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.383 ns ; 3.045 ns ; +; 2.357 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[9] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[9]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.321 ns ; 2.964 ns ; +; 2.370 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[6] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[6]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.302 ns ; 2.932 ns ; +; 2.376 ns ; 192.34 MHz ( period = 5.199 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[7]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 6.883 ns ; 4.507 ns ; +; 2.385 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[7] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[7]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.635 ns ; 3.250 ns ; +; 2.410 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[12] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[12]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.316 ns ; 2.906 ns ; +; 2.417 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[14] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[14]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.307 ns ; 2.890 ns ; +; 2.434 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[28] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[28]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.373 ns ; 2.939 ns ; +; 2.445 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_DDR_WR ; Video:Fredi_Aschwanden|inst90 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 4.735 ns ; 4.495 ns ; 2.050 ns ; +; 2.447 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[10] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[10]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.312 ns ; 2.865 ns ; +; 2.470 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[13] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[13]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.645 ns ; 3.175 ns ; +; 2.502 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[12] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[12]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.652 ns ; 3.150 ns ; +; 2.509 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[11] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[11]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.643 ns ; 3.134 ns ; +; 2.516 ns ; 197.67 MHz ( period = 5.059 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[13]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 7.241 ns ; 4.725 ns ; +; 2.517 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[4] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[4]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.308 ns ; 2.791 ns ; +; 2.520 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[8] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[8]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.293 ns ; 2.773 ns ; +; 2.523 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[2] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[2]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.645 ns ; 3.122 ns ; +; 2.531 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[6] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[6]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.639 ns ; 3.108 ns ; +; 2.548 ns ; 198.93 MHz ( period = 5.027 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[12]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 7.248 ns ; 4.700 ns ; +; 2.549 ns ; 198.97 MHz ( period = 5.026 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[8]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 6.878 ns ; 4.329 ns ; +; 2.550 ns ; 199.00 MHz ( period = 5.025 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[1]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 6.901 ns ; 4.351 ns ; +; 2.550 ns ; 199.00 MHz ( period = 5.025 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[11]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 7.239 ns ; 4.689 ns ; +; 2.561 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[25] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[25]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.375 ns ; 2.814 ns ; +; 2.567 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[7] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[7]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.290 ns ; 2.723 ns ; +; 2.569 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[3] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[3]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.317 ns ; 2.748 ns ; +; 2.569 ns ; 199.76 MHz ( period = 5.006 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[7]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 7.231 ns ; 4.662 ns ; +; 2.570 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[26] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[26]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.375 ns ; 2.805 ns ; +; 2.571 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[14] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[14]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.643 ns ; 3.072 ns ; +; 2.572 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[11] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[11]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.306 ns ; 2.734 ns ; +; 2.597 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[0] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[0]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.316 ns ; 2.719 ns ; +; 2.603 ns ; 201.13 MHz ( period = 4.972 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[2]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 7.241 ns ; 4.638 ns ; +; 2.614 ns ; 201.57 MHz ( period = 4.961 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[14]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 7.239 ns ; 4.625 ns ; +; 2.616 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[19] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[19]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.377 ns ; 2.761 ns ; +; 2.622 ns ; 201.90 MHz ( period = 4.953 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[28]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 6.947 ns ; 4.325 ns ; +; 2.641 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[4] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[4]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.645 ns ; 3.004 ns ; +; 2.685 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[15] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[15]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.330 ns ; 2.645 ns ; +; 2.690 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[9] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[9]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.639 ns ; 2.949 ns ; +; 2.695 ns ; 204.92 MHz ( period = 4.880 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[18]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 6.949 ns ; 4.254 ns ; +; 2.697 ns ; 205.00 MHz ( period = 4.878 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[10]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 7.226 ns ; 4.529 ns ; +; 2.708 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[15] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[15]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.648 ns ; 2.940 ns ; +; 2.716 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[10] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[10]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.312 ns ; 2.596 ns ; +; 2.717 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[8] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[8]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.630 ns ; 2.913 ns ; +; 2.718 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[5] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[5]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.630 ns ; 2.912 ns ; +; 2.724 ns ; 206.14 MHz ( period = 4.851 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[4]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 7.241 ns ; 4.517 ns ; +; 2.733 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[29] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[29]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.356 ns ; 2.623 ns ; +; 2.734 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[13] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[13]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.645 ns ; 2.911 ns ; +; 2.734 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[24] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[24]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.381 ns ; 2.647 ns ; +; 2.734 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_DDR_WR ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 4.735 ns ; 4.559 ns ; 1.825 ns ; +; 2.751 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[20] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[20]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.377 ns ; 2.626 ns ; +; 2.758 ns ; 207.60 MHz ( period = 4.817 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[15]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 7.244 ns ; 4.486 ns ; +; 2.761 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[3] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[3]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.635 ns ; 2.874 ns ; +; 2.761 ns ; 207.73 MHz ( period = 4.814 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[26]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 6.949 ns ; 4.188 ns ; +; 2.764 ns ; 207.86 MHz ( period = 4.811 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[25]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 6.949 ns ; 4.185 ns ; +; 2.768 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[12] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[12]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.652 ns ; 2.884 ns ; +; 2.771 ns ; 208.16 MHz ( period = 4.804 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[9]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 7.235 ns ; 4.464 ns ; +; 2.776 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[11] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[11]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.643 ns ; 2.867 ns ; +; 2.778 ns ; 208.46 MHz ( period = 4.797 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[30]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 6.948 ns ; 4.170 ns ; +; 2.780 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[7] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[7]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.635 ns ; 2.855 ns ; +; 2.793 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[2] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[2]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.645 ns ; 2.852 ns ; +; 2.793 ns ; 209.12 MHz ( period = 4.782 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[8]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 7.226 ns ; 4.433 ns ; +; 2.797 ns ; 209.29 MHz ( period = 4.778 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[5]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 7.226 ns ; 4.429 ns ; +; 2.798 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[22] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[22]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.378 ns ; 2.580 ns ; +; 2.807 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[31] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[31]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.779 ns ; 2.972 ns ; +; 2.808 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[30] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[30]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.374 ns ; 2.566 ns ; +; 2.815 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[31] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[31]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.373 ns ; 2.558 ns ; +; 2.821 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[6] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[6]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.639 ns ; 2.818 ns ; +; 2.838 ns ; 211.10 MHz ( period = 4.737 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[3]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 7.231 ns ; 4.393 ns ; +; 2.839 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[14] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[14]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.643 ns ; 2.804 ns ; +; 2.846 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[8] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[8]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.293 ns ; 2.447 ns ; +; 2.851 ns ; None ; Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[7] ; Video:Fredi_Aschwanden|altddio_out0:inst2|altddio_out:altddio_out_component|ddio_out_are:auto_generated|ddio_outa[3]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.997 ns ; 5.334 ns ; 2.483 ns ; +; 2.862 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[1] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[1]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.316 ns ; 2.454 ns ; +; 2.909 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[4] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[4]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.645 ns ; 2.736 ns ; +; 2.935 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[21] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[21]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.358 ns ; 2.423 ns ; +; 2.937 ns ; 215.61 MHz ( period = 4.638 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[19]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 6.943 ns ; 4.006 ns ; +; 2.951 ns ; 216.26 MHz ( period = 4.624 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[29]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 6.949 ns ; 3.998 ns ; +; 2.954 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[9] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[9]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.639 ns ; 2.685 ns ; +; 2.960 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[0] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[0]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.655 ns ; 2.695 ns ; +; 2.963 ns ; 216.83 MHz ( period = 4.612 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[21]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 6.943 ns ; 3.980 ns ; +; 2.969 ns ; 217.11 MHz ( period = 4.606 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[17]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 6.947 ns ; 3.978 ns ; +; 2.977 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[15] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[15]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.648 ns ; 2.671 ns ; +; 2.983 ns ; 217.77 MHz ( period = 4.592 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[6]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 7.235 ns ; 4.252 ns ; +; 2.984 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[5] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[5]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.630 ns ; 2.646 ns ; +; 2.985 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[8] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[8]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.630 ns ; 2.645 ns ; +; 2.988 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[28] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[28]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.779 ns ; 2.791 ns ; +; 3.004 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[17] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[17]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.362 ns ; 2.358 ns ; +; 3.005 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[18] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[18]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.364 ns ; 2.359 ns ; +; 3.010 ns ; 219.06 MHz ( period = 4.565 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[22]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 7.292 ns ; 4.282 ns ; +; 3.018 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[1] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[1]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.653 ns ; 2.635 ns ; +; 3.027 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[3] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[3]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.635 ns ; 2.608 ns ; +; 3.042 ns ; 220.60 MHz ( period = 4.533 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[23]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 7.294 ns ; 4.252 ns ; +; 3.047 ns ; None ; Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[3] ; Video:Fredi_Aschwanden|altddio_out0:inst2|altddio_out:altddio_out_component|ddio_out_are:auto_generated|ddio_outa[1]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.997 ns ; 5.729 ns ; 2.682 ns ; +; 3.051 ns ; 221.04 MHz ( period = 4.524 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[0]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 7.249 ns ; 4.198 ns ; +; 3.058 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[31] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[31]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.354 ns ; 2.296 ns ; +; 3.061 ns ; 221.53 MHz ( period = 4.514 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[1]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 7.249 ns ; 4.188 ns ; +; 3.074 ns ; 222.17 MHz ( period = 4.501 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[16]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 6.946 ns ; 3.872 ns ; +; 3.096 ns ; 223.26 MHz ( period = 4.479 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[24]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 6.947 ns ; 3.851 ns ; +; 3.115 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[16] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[16]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.361 ns ; 2.246 ns ; +; 3.127 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[28] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[28]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.361 ns ; 2.234 ns ; +; 3.131 ns ; 225.02 MHz ( period = 4.444 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[20]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 6.943 ns ; 3.812 ns ; +; 3.141 ns ; None ; Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[6] ; Video:Fredi_Aschwanden|altddio_out0:inst2|altddio_out:altddio_out_component|ddio_out_are:auto_generated|ddio_outa[2]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.997 ns ; 5.325 ns ; 2.184 ns ; +; 3.143 ns ; 225.63 MHz ( period = 4.432 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[28]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 7.295 ns ; 4.152 ns ; +; 3.151 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[10] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[10]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.630 ns ; 2.479 ns ; +; 3.158 ns ; 226.40 MHz ( period = 4.417 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[27]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 7.292 ns ; 4.134 ns ; +; 3.159 ns ; 226.45 MHz ( period = 4.416 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[20]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 7.291 ns ; 4.132 ns ; +; 3.162 ns ; 226.60 MHz ( period = 4.413 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[24]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 7.295 ns ; 4.133 ns ; +; 3.163 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[30] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[30]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.780 ns ; 2.617 ns ; +; 3.173 ns ; None ; Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[3] ; Video:Fredi_Aschwanden|altddio_out0:inst2|altddio_out:altddio_out_component|ddio_out_are:auto_generated|ddio_outa[3]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.997 ns ; 5.680 ns ; 2.507 ns ; +; 3.181 ns ; 227.58 MHz ( period = 4.394 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[22]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 6.944 ns ; 3.763 ns ; +; 3.192 ns ; 228.15 MHz ( period = 4.383 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[31]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 6.947 ns ; 3.755 ns ; +; 3.199 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[10] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[10]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.630 ns ; 2.431 ns ; +; 3.207 ns ; None ; Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[3] ; Video:Fredi_Aschwanden|altddio_out0:inst2|altddio_out:altddio_out_component|ddio_out_are:auto_generated|ddio_outa[2]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.997 ns ; 5.671 ns ; 2.464 ns ; +; 3.208 ns ; 228.99 MHz ( period = 4.367 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[23]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 6.946 ns ; 3.738 ns ; +; 3.209 ns ; 229.04 MHz ( period = 4.366 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[27]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 6.944 ns ; 3.735 ns ; +; 3.225 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[19] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[19]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.695 ns ; 2.470 ns ; +; 3.226 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[0] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[0]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.655 ns ; 2.429 ns ; +; 3.233 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[27] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[27]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.359 ns ; 2.126 ns ; +; 3.236 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[23] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[23]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.361 ns ; 2.125 ns ; +; 3.251 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[19] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[19]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.358 ns ; 2.107 ns ; +; 3.253 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[30] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[30]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.355 ns ; 2.102 ns ; +; 3.261 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[21] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[21]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.358 ns ; 2.097 ns ; +; 3.262 ns ; 231.86 MHz ( period = 4.313 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[25]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 7.297 ns ; 4.035 ns ; +; 3.263 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[26] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[26]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.363 ns ; 2.100 ns ; +; 3.266 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[25] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[25]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.363 ns ; 2.097 ns ; +; 3.271 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[17] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[17]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.362 ns ; 2.091 ns ; +; 3.277 ns ; 232.67 MHz ( period = 4.298 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[19]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 7.291 ns ; 4.014 ns ; +; 3.279 ns ; 232.77 MHz ( period = 4.296 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[21]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 7.291 ns ; 4.012 ns ; +; 3.282 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[1] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[1]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.653 ns ; 2.371 ns ; +; 3.307 ns ; None ; Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[5] ; Video:Fredi_Aschwanden|altddio_out0:inst2|altddio_out:altddio_out_component|ddio_out_are:auto_generated|ddio_outa[1]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.997 ns ; 5.383 ns ; 2.076 ns ; +; 3.346 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[16] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[16]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.698 ns ; 2.352 ns ; +; 3.351 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[21] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[21]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.695 ns ; 2.344 ns ; +; 3.365 ns ; 237.53 MHz ( period = 4.210 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[30]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 7.296 ns ; 3.931 ns ; +; 3.387 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[16] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[16]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.361 ns ; 1.974 ns ; +; 3.390 ns ; 238.95 MHz ( period = 4.185 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[16]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 7.294 ns ; 3.904 ns ; +; 3.410 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[24] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[24]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.362 ns ; 1.952 ns ; +; 3.415 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[22] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[22]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.698 ns ; 2.283 ns ; +; 3.429 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[20] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[20]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.358 ns ; 1.929 ns ; +; 3.438 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[29] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[29]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.375 ns ; 1.937 ns ; +; 3.450 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[23] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[23]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.700 ns ; 2.250 ns ; +; 3.458 ns ; 242.90 MHz ( period = 4.117 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[31]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 7.295 ns ; 3.837 ns ; +; 3.459 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[22] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[22]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.698 ns ; 2.239 ns ; +; 3.461 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[29] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[29]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.781 ns ; 2.320 ns ; +; 3.474 ns ; None ; Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[4] ; Video:Fredi_Aschwanden|altddio_out0:inst2|altddio_out:altddio_out_component|ddio_out_are:auto_generated|ddio_outa[0]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.997 ns ; 5.380 ns ; 1.906 ns ; +; 3.477 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[22] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[22]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.359 ns ; 1.882 ns ; +; 3.492 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[19] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[19]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.695 ns ; 2.203 ns ; +; 3.495 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[23] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[23]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.700 ns ; 2.205 ns ; +; 3.499 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[27] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[27]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.359 ns ; 1.860 ns ; +; 3.504 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[23] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[23]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.361 ns ; 1.857 ns ; +; 3.558 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[17] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[17]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.699 ns ; 2.141 ns ; +; 3.575 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[20] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[20]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.697 ns ; 2.122 ns ; +; 3.602 ns ; 251.70 MHz ( period = 3.973 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[17]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 7.295 ns ; 3.693 ns ; +; 3.610 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[24] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[24]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.699 ns ; 2.089 ns ; +; 3.614 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[16] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[16]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.698 ns ; 2.084 ns ; +; 3.616 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[26] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[26]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.701 ns ; 2.085 ns ; +; 3.617 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[27] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[27]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.696 ns ; 2.079 ns ; +; 3.620 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[20] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[20]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.697 ns ; 2.077 ns ; +; 3.625 ns ; 253.16 MHz ( period = 3.950 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[29]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 7.297 ns ; 3.672 ns ; +; 3.640 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[28] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[28]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.699 ns ; 2.059 ns ; +; 3.649 ns ; None ; Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[3] ; Video:Fredi_Aschwanden|altddio_out0:inst2|altddio_out:altddio_out_component|ddio_out_are:auto_generated|ddio_outa[0]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.997 ns ; 5.726 ns ; 2.077 ns ; +; 3.657 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[24] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[24]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.699 ns ; 2.042 ns ; +; 3.663 ns ; 255.62 MHz ( period = 3.912 ns ) ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[26]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 7.575 ns ; 7.297 ns ; 3.634 ns ; +; 3.664 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[27] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[27]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.696 ns ; 2.032 ns ; +; 3.673 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[25] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[25]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.703 ns ; 2.030 ns ; +; 3.675 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[31] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[31]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.699 ns ; 2.024 ns ; +; 3.708 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[18] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[18]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.702 ns ; 1.994 ns ; +; 3.720 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[25] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[25]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.703 ns ; 1.983 ns ; +; 3.738 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[21] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[21]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.697 ns ; 1.959 ns ; +; 3.825 ns ; None ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[17] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[17]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 5.999 ns ; 5.699 ns ; 1.874 ns ; +; Timing analysis restricted to 200 rows. ; To change the limit use Settings (Assignments menu) ; ; ; ; ; ; ; ; ++-----------------------------------------+-----------------------------------------------------+------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+-----------------------------+---------------------------+-------------------------+ + + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Clock Setup: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4]' ; ++-----------------------------------------+-----------------------------------------------------+------------------------------------------------+------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+-----------------------------+---------------------------+-------------------------+ +; Slack ; Actual fmax (period) ; From ; To ; From Clock ; To Clock ; Required Setup Relationship ; Required Longest P2P Time ; Actual Longest P2P Time ; ++-----------------------------------------+-----------------------------------------------------+------------------------------------------------+------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+-----------------------------+---------------------------+-------------------------+ +; -1.712 ns ; None ; FB_ALE ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 1.576 ns ; 1.118 ns ; 2.830 ns ; +; -1.664 ns ; None ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[27] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 1.576 ns ; 0.992 ns ; 2.656 ns ; +; -1.597 ns ; None ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[26] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 1.576 ns ; 0.992 ns ; 2.589 ns ; +; -1.597 ns ; None ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[25] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 1.576 ns ; 0.992 ns ; 2.589 ns ; +; -1.358 ns ; None ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[20] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 1.576 ns ; 0.985 ns ; 2.343 ns ; +; -1.358 ns ; None ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[24] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 1.576 ns ; 0.985 ns ; 2.343 ns ; +; -1.358 ns ; None ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[17] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 1.576 ns ; 0.985 ns ; 2.343 ns ; +; -1.358 ns ; None ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[16] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 1.576 ns ; 0.985 ns ; 2.343 ns ; +; -1.354 ns ; None ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[21] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 1.576 ns ; 0.987 ns ; 2.341 ns ; +; -1.354 ns ; None ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[22] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 1.576 ns ; 0.987 ns ; 2.341 ns ; +; -1.354 ns ; None ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[23] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 1.576 ns ; 0.987 ns ; 2.341 ns ; +; -1.333 ns ; None ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[19] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 1.576 ns ; 0.986 ns ; 2.319 ns ; +; -1.333 ns ; None ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 1.576 ns ; 0.986 ns ; 2.319 ns ; +; -1.280 ns ; None ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[12] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 1.576 ns ; 0.986 ns ; 2.266 ns ; +; -1.280 ns ; None ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[15] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 1.576 ns ; 0.986 ns ; 2.266 ns ; +; -1.280 ns ; None ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[14] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 1.576 ns ; 0.986 ns ; 2.266 ns ; +; -1.280 ns ; None ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[13] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 1.576 ns ; 0.986 ns ; 2.266 ns ; +; -1.278 ns ; None ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[11] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 1.576 ns ; 0.986 ns ; 2.264 ns ; +; -1.278 ns ; None ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[10] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 1.576 ns ; 0.986 ns ; 2.264 ns ; +; -1.250 ns ; None ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[7] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 1.576 ns ; 0.988 ns ; 2.238 ns ; +; -1.250 ns ; None ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[6] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 1.576 ns ; 0.988 ns ; 2.238 ns ; +; -1.250 ns ; None ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 1.576 ns ; 0.988 ns ; 2.238 ns ; +; -1.250 ns ; None ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[9] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 1.576 ns ; 0.988 ns ; 2.238 ns ; +; -1.248 ns ; None ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 1.576 ns ; 0.989 ns ; 2.237 ns ; +; -1.243 ns ; None ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 1.576 ns ; 0.989 ns ; 2.232 ns ; +; -1.228 ns ; None ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 1.576 ns ; 0.988 ns ; 2.216 ns ; +; -1.228 ns ; None ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 1.576 ns ; 0.988 ns ; 2.216 ns ; +; -1.228 ns ; None ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 1.576 ns ; 0.988 ns ; 2.216 ns ; +; -1.228 ns ; None ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[5] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 1.576 ns ; 0.988 ns ; 2.216 ns ; +; 4.485 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BUS_CYC ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 6.311 ns ; 6.117 ns ; 1.632 ns ; +; 6.612 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[18] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.393 ns ; 3.781 ns ; +; 6.644 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[0] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.392 ns ; 3.748 ns ; +; 6.644 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[20] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.392 ns ; 3.748 ns ; +; 6.644 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[22] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.392 ns ; 3.748 ns ; +; 6.644 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[23] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.392 ns ; 3.748 ns ; +; 6.644 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[25] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.392 ns ; 3.748 ns ; +; 6.665 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[6] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.538 ns ; 3.873 ns ; +; 6.665 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[16] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.538 ns ; 3.873 ns ; +; 6.665 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[17] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.538 ns ; 3.873 ns ; +; 6.672 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[7] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.527 ns ; 3.855 ns ; +; 6.672 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[25] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.527 ns ; 3.855 ns ; +; 6.672 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[26] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.527 ns ; 3.855 ns ; +; 6.672 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[28] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.527 ns ; 3.855 ns ; +; 6.672 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[29] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.527 ns ; 3.855 ns ; +; 6.672 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[30] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.527 ns ; 3.855 ns ; +; 6.672 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[31] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.527 ns ; 3.855 ns ; +; 6.685 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[12] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.537 ns ; 3.852 ns ; +; 6.685 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[13] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.537 ns ; 3.852 ns ; +; 6.685 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[14] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.537 ns ; 3.852 ns ; +; 6.727 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[0] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.538 ns ; 3.811 ns ; +; 6.727 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[2] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.538 ns ; 3.811 ns ; +; 6.727 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[8] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.538 ns ; 3.811 ns ; +; 6.727 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[21] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.538 ns ; 3.811 ns ; +; 6.727 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[23] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.538 ns ; 3.811 ns ; +; 6.727 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[27] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.538 ns ; 3.811 ns ; +; 6.788 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[28] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.234 ns ; 3.446 ns ; +; 6.788 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[29] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.234 ns ; 3.446 ns ; +; 6.788 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[30] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.234 ns ; 3.446 ns ; +; 6.788 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[31] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.234 ns ; 3.446 ns ; +; 6.826 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[1] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.394 ns ; 3.568 ns ; +; 6.826 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[6] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.394 ns ; 3.568 ns ; +; 6.826 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[19] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.394 ns ; 3.568 ns ; +; 6.826 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[24] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.394 ns ; 3.568 ns ; +; 6.826 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[26] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.394 ns ; 3.568 ns ; +; 6.826 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[27] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.394 ns ; 3.568 ns ; +; 6.843 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[15] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.545 ns ; 3.702 ns ; +; 6.845 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[10] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.394 ns ; 3.549 ns ; +; 6.845 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[11] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.394 ns ; 3.549 ns ; +; 6.845 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[12] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.394 ns ; 3.549 ns ; +; 6.845 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[13] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.394 ns ; 3.549 ns ; +; 6.845 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[14] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.394 ns ; 3.549 ns ; +; 6.845 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[15] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.394 ns ; 3.549 ns ; +; 6.845 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[16] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.394 ns ; 3.549 ns ; +; 6.845 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[17] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.394 ns ; 3.549 ns ; +; 6.849 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[2] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.394 ns ; 3.545 ns ; +; 6.849 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[3] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.394 ns ; 3.545 ns ; +; 6.849 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[4] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.394 ns ; 3.545 ns ; +; 6.849 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[5] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.394 ns ; 3.545 ns ; +; 6.849 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[7] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.394 ns ; 3.545 ns ; +; 6.849 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[8] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.394 ns ; 3.545 ns ; +; 6.849 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[9] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.394 ns ; 3.545 ns ; +; 6.849 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[21] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.394 ns ; 3.545 ns ; +; 6.955 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[3] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.519 ns ; 3.564 ns ; +; 6.955 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[9] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.519 ns ; 3.564 ns ; +; 6.955 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[10] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.519 ns ; 3.564 ns ; +; 6.969 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[1] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.519 ns ; 3.550 ns ; +; 6.969 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[3] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.519 ns ; 3.550 ns ; +; 6.969 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[4] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.519 ns ; 3.550 ns ; +; 6.969 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[5] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.519 ns ; 3.550 ns ; +; 6.969 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[9] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.519 ns ; 3.550 ns ; +; 6.969 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[10] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.519 ns ; 3.550 ns ; +; 6.969 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[11] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.519 ns ; 3.550 ns ; +; 6.969 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[15] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.519 ns ; 3.550 ns ; +; 6.969 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[18] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.519 ns ; 3.550 ns ; +; 6.969 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[19] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.519 ns ; 3.550 ns ; +; 6.969 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[20] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.519 ns ; 3.550 ns ; +; 6.969 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[22] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.519 ns ; 3.550 ns ; +; 6.969 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[24] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.519 ns ; 3.550 ns ; +; 7.011 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[15] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.390 ns ; 3.379 ns ; +; 7.016 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[7] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.546 ns ; 3.530 ns ; +; 7.016 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[29] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.546 ns ; 3.530 ns ; +; 7.016 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[30] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.546 ns ; 3.530 ns ; +; 7.016 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[31] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.546 ns ; 3.530 ns ; +; 7.074 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[12] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.537 ns ; 3.463 ns ; +; 7.074 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[13] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.537 ns ; 3.463 ns ; +; 7.074 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[14] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.537 ns ; 3.463 ns ; +; 7.111 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.514 ns ; 3.403 ns ; +; 7.123 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[3] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.364 ns ; 3.241 ns ; +; 7.123 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[9] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.364 ns ; 3.241 ns ; +; 7.123 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[10] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.364 ns ; 3.241 ns ; +; 7.147 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[0] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.656 ns ; 3.509 ns ; +; 7.147 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[20] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.656 ns ; 3.509 ns ; +; 7.147 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[21] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.656 ns ; 3.509 ns ; +; 7.147 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[22] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.656 ns ; 3.509 ns ; +; 7.147 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[23] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.656 ns ; 3.509 ns ; +; 7.147 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[25] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.656 ns ; 3.509 ns ; +; 7.184 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[7] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.391 ns ; 3.207 ns ; +; 7.184 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[29] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.391 ns ; 3.207 ns ; +; 7.184 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[30] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.391 ns ; 3.207 ns ; +; 7.184 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[31] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.391 ns ; 3.207 ns ; +; 7.242 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[12] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.382 ns ; 3.140 ns ; +; 7.242 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[13] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.382 ns ; 3.140 ns ; +; 7.242 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[14] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.382 ns ; 3.140 ns ; +; 7.264 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[18] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.548 ns ; 3.284 ns ; +; 7.286 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[1] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.538 ns ; 3.252 ns ; +; 7.286 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[4] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.538 ns ; 3.252 ns ; +; 7.286 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[6] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.538 ns ; 3.252 ns ; +; 7.286 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[11] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.538 ns ; 3.252 ns ; +; 7.286 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[16] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.538 ns ; 3.252 ns ; +; 7.286 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[17] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.538 ns ; 3.252 ns ; +; 7.286 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[18] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.538 ns ; 3.252 ns ; +; 7.286 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[19] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.538 ns ; 3.252 ns ; +; 7.286 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[24] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.538 ns ; 3.252 ns ; +; 7.296 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[0] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.547 ns ; 3.251 ns ; +; 7.296 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[20] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.547 ns ; 3.251 ns ; +; 7.296 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[22] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.547 ns ; 3.251 ns ; +; 7.296 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[23] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.547 ns ; 3.251 ns ; +; 7.296 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[25] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.547 ns ; 3.251 ns ; +; 7.297 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[2] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.658 ns ; 3.361 ns ; +; 7.297 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[3] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.658 ns ; 3.361 ns ; +; 7.297 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[4] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.658 ns ; 3.361 ns ; +; 7.297 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[5] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.658 ns ; 3.361 ns ; +; 7.297 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[6] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.658 ns ; 3.361 ns ; +; 7.297 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[8] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.658 ns ; 3.361 ns ; +; 7.297 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[9] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.658 ns ; 3.361 ns ; +; 7.297 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[18] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.658 ns ; 3.361 ns ; +; 7.298 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[0] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.547 ns ; 3.249 ns ; +; 7.298 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[20] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.547 ns ; 3.249 ns ; +; 7.298 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[21] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.547 ns ; 3.249 ns ; +; 7.298 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[22] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.547 ns ; 3.249 ns ; +; 7.298 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[23] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.547 ns ; 3.249 ns ; +; 7.298 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[25] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.547 ns ; 3.249 ns ; +; 7.323 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[25] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.539 ns ; 3.216 ns ; +; 7.323 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[26] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.539 ns ; 3.216 ns ; +; 7.323 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[28] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.539 ns ; 3.216 ns ; +; 7.334 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[10] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.658 ns ; 3.324 ns ; +; 7.334 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[11] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.658 ns ; 3.324 ns ; +; 7.334 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[12] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.658 ns ; 3.324 ns ; +; 7.334 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[13] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.658 ns ; 3.324 ns ; +; 7.334 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[14] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.658 ns ; 3.324 ns ; +; 7.334 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[15] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.658 ns ; 3.324 ns ; +; 7.334 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[16] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.658 ns ; 3.324 ns ; +; 7.334 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[17] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.658 ns ; 3.324 ns ; +; 7.380 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[1] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.658 ns ; 3.278 ns ; +; 7.380 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[7] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.658 ns ; 3.278 ns ; +; 7.380 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[19] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.658 ns ; 3.278 ns ; +; 7.380 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[24] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.658 ns ; 3.278 ns ; +; 7.380 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[26] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.658 ns ; 3.278 ns ; +; 7.380 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[27] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.658 ns ; 3.278 ns ; +; 7.380 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[28] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.658 ns ; 3.278 ns ; +; 7.380 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[29] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.658 ns ; 3.278 ns ; +; 7.380 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[30] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.658 ns ; 3.278 ns ; +; 7.380 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[31] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.658 ns ; 3.278 ns ; +; 7.411 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[0] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.538 ns ; 3.127 ns ; +; 7.411 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[2] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.538 ns ; 3.127 ns ; +; 7.411 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[5] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.538 ns ; 3.127 ns ; +; 7.411 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[8] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.538 ns ; 3.127 ns ; +; 7.411 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[20] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.538 ns ; 3.127 ns ; +; 7.411 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[21] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.538 ns ; 3.127 ns ; +; 7.411 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[22] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.538 ns ; 3.127 ns ; +; 7.411 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[23] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.538 ns ; 3.127 ns ; +; 7.411 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[27] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.538 ns ; 3.127 ns ; +; 7.440 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[28] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.389 ns ; 2.949 ns ; +; 7.440 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[29] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.389 ns ; 2.949 ns ; +; 7.440 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[30] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.389 ns ; 2.949 ns ; +; 7.440 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[31] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.389 ns ; 2.949 ns ; +; 7.448 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[2] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.549 ns ; 3.101 ns ; +; 7.448 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[3] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.549 ns ; 3.101 ns ; +; 7.448 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[4] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.549 ns ; 3.101 ns ; +; 7.448 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[5] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.549 ns ; 3.101 ns ; +; 7.448 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[6] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.549 ns ; 3.101 ns ; +; 7.448 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[8] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.549 ns ; 3.101 ns ; +; 7.448 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[9] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.549 ns ; 3.101 ns ; +; 7.448 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[18] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.549 ns ; 3.101 ns ; +; 7.454 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[1] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.383 ns ; 2.929 ns ; +; 7.454 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[4] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.383 ns ; 2.929 ns ; +; 7.454 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[6] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.383 ns ; 2.929 ns ; +; 7.454 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[11] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.383 ns ; 2.929 ns ; +; 7.454 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[16] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.383 ns ; 2.929 ns ; +; 7.454 ns ; None ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[17] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 10.267 ns ; 10.383 ns ; 2.929 ns ; +; Timing analysis restricted to 200 rows. ; To change the limit use Settings (Assignments menu) ; ; ; ; ; ; ; ; ++-----------------------------------------+-----------------------------------------------------+------------------------------------------------+------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+-----------------------------+---------------------------+-------------------------+ + + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Clock Setup: 'altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0]' ; ++-----------------------------------------+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+-----------------------------+---------------------------+-------------------------+ +; Slack ; Actual fmax (period) ; From ; To ; From Clock ; To Clock ; Required Setup Relationship ; Required Longest P2P Time ; Actual Longest P2P Time ; ++-----------------------------------------+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+-----------------------------+---------------------------+-------------------------+ +; -4.294 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[35] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.607 ns ; 3.687 ns ; +; -4.252 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[95] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.600 ns ; 3.652 ns ; +; -4.247 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[107] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.605 ns ; 3.642 ns ; +; -4.241 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[90] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.594 ns ; 3.647 ns ; +; -4.232 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[33] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.597 ns ; 3.635 ns ; +; -4.228 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[49] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.597 ns ; 3.631 ns ; +; -4.220 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[34] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.607 ns ; 3.613 ns ; +; -4.212 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[99] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.610 ns ; +; -4.205 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[57] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.597 ns ; 3.608 ns ; +; -4.158 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.260 ns ; 3.898 ns ; +; -4.119 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FIFO_RDE ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.022 ns ; 4.141 ns ; +; -4.119 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[42] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.517 ns ; +; -4.092 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FIFO_RDE ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.022 ns ; 4.114 ns ; +; -4.088 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[111] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.486 ns ; +; -4.086 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[84] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.595 ns ; 3.491 ns ; +; -4.085 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[88] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.593 ns ; 3.492 ns ; +; -4.073 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[85] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.605 ns ; 3.468 ns ; +; -4.070 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[60] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.605 ns ; 3.465 ns ; +; -4.070 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[48] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.604 ns ; 3.466 ns ; +; -4.065 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[50] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.604 ns ; 3.461 ns ; +; -4.060 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[97] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.458 ns ; +; -4.057 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[23] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.455 ns ; +; -4.051 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[83] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.604 ns ; 3.447 ns ; +; -4.049 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[28] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.447 ns ; +; -4.049 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[20] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.447 ns ; +; -4.049 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[41] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.604 ns ; 3.445 ns ; +; -4.048 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FIFO_RDE ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.020 ns ; 4.068 ns ; +; -4.046 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[108] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.444 ns ; +; -4.045 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[78] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.604 ns ; 3.441 ns ; +; -4.045 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[59] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.604 ns ; 3.441 ns ; +; -4.043 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[43] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.441 ns ; +; -4.042 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[1] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.021 ns ; 4.063 ns ; +; -4.042 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.440 ns ; +; -4.040 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[72] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.604 ns ; 3.436 ns ; +; -4.039 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[70] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.605 ns ; 3.434 ns ; +; -4.039 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[81] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.604 ns ; 3.435 ns ; +; -4.036 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[38] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.605 ns ; 3.431 ns ; +; -4.035 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[112] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.433 ns ; +; -4.032 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[75] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.604 ns ; 3.428 ns ; +; -4.032 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[82] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.604 ns ; 3.428 ns ; +; -4.030 ns ; None ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|q_b[4] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe27 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.610 ns ; 3.420 ns ; +; -4.027 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[46] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.601 ns ; 3.426 ns ; +; -3.997 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[92] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.595 ns ; 3.402 ns ; +; -3.995 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[17] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.598 ns ; 3.397 ns ; +; -3.987 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FIFO_RDE ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.021 ns ; 4.008 ns ; +; -3.985 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[1] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.260 ns ; 3.725 ns ; +; -3.984 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[37] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.605 ns ; 3.379 ns ; +; -3.980 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.022 ns ; 4.002 ns ; +; -3.978 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[80] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.376 ns ; +; -3.977 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[45] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.603 ns ; 3.374 ns ; +; -3.976 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[124] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.374 ns ; +; -3.973 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[104] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.601 ns ; 3.372 ns ; +; -3.972 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[91] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.370 ns ; +; -3.972 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[30] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.601 ns ; 3.371 ns ; +; -3.969 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[58] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.604 ns ; 3.365 ns ; +; -3.968 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[15] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.366 ns ; +; -3.968 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.604 ns ; 3.364 ns ; +; -3.967 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[47] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.604 ns ; 3.363 ns ; +; -3.958 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[96] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.356 ns ; +; -3.957 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[10] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.355 ns ; +; -3.956 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[7] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.354 ns ; +; -3.952 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[69] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.605 ns ; 3.347 ns ; +; -3.950 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.022 ns ; 3.972 ns ; +; -3.948 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[0] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.022 ns ; 3.970 ns ; +; -3.948 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[54] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.605 ns ; 3.343 ns ; +; -3.948 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[68] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.346 ns ; +; -3.948 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[113] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.346 ns ; +; -3.947 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[110] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.345 ns ; +; -3.947 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[106] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.345 ns ; +; -3.946 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[13] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.344 ns ; +; -3.945 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[22] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.343 ns ; +; -3.943 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[116] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.341 ns ; +; -3.943 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[127] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.341 ns ; +; -3.941 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[125] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.339 ns ; +; -3.941 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[12] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.339 ns ; +; -3.938 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[3] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.022 ns ; 3.960 ns ; +; -3.938 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[51] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.604 ns ; 3.334 ns ; +; -3.937 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[61] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.605 ns ; 3.332 ns ; +; -3.935 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[122] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.333 ns ; +; -3.935 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[98] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.333 ns ; +; -3.934 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[86] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.605 ns ; 3.329 ns ; +; -3.934 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[40] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.604 ns ; 3.330 ns ; +; -3.932 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[109] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.330 ns ; +; -3.932 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[118] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.605 ns ; 3.327 ns ; +; -3.930 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[65] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.328 ns ; +; -3.927 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.325 ns ; +; -3.926 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[105] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.324 ns ; +; -3.925 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[31] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.323 ns ; +; -3.924 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[53] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.605 ns ; 3.319 ns ; +; -3.922 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[5] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.022 ns ; 3.944 ns ; +; -3.920 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[67] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.604 ns ; 3.316 ns ; +; -3.915 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[55] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.605 ns ; 3.310 ns ; +; -3.909 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.020 ns ; 3.929 ns ; +; -3.908 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[1] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.020 ns ; 3.928 ns ; +; -3.898 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.021 ns ; 3.919 ns ; +; -3.896 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[8] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.604 ns ; 3.292 ns ; +; -3.894 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[4] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.022 ns ; 3.916 ns ; +; -3.882 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[4] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.022 ns ; 3.904 ns ; +; -3.878 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[4] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.021 ns ; 3.899 ns ; +; -3.874 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[2] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.260 ns ; 3.614 ns ; +; -3.873 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[26] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.604 ns ; 3.269 ns ; +; -3.869 ns ; None ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|q_b[7] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe33 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.612 ns ; 3.257 ns ; +; -3.867 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[3] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.020 ns ; 3.887 ns ; +; -3.867 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a9 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.303 ns ; 3.564 ns ; +; -3.858 ns ; None ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|q_b[5] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe29 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.610 ns ; 3.248 ns ; +; -3.854 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[0] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.022 ns ; 3.876 ns ; +; -3.851 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[3] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.260 ns ; 3.591 ns ; +; -3.835 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[0] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.020 ns ; 3.855 ns ; +; -3.833 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[1] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.282 ns ; 3.551 ns ; +; -3.828 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[2] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.022 ns ; 3.850 ns ; +; -3.827 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[4] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.020 ns ; 3.847 ns ; +; -3.822 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[9] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.282 ns ; 3.540 ns ; +; -3.821 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[1] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe15 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.291 ns ; 3.530 ns ; +; -3.819 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a8 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.303 ns ; 3.516 ns ; +; -3.818 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[89] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.216 ns ; +; -3.817 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[0] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.021 ns ; 3.838 ns ; +; -3.816 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[11] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.605 ns ; 3.211 ns ; +; -3.814 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[87] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.212 ns ; +; -3.814 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[100] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.212 ns ; +; -3.814 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[71] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.212 ns ; +; -3.813 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[39] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.211 ns ; +; -3.812 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[121] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.210 ns ; +; -3.812 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[14] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.604 ns ; 3.208 ns ; +; -3.812 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[9] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.604 ns ; 3.208 ns ; +; -3.809 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[123] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.605 ns ; 3.204 ns ; +; -3.809 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[120] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.604 ns ; 3.205 ns ; +; -3.807 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[126] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.205 ns ; +; -3.806 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[114] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.604 ns ; 3.202 ns ; +; -3.804 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[117] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.605 ns ; 3.199 ns ; +; -3.803 ns ; None ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|q_b[2] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe23 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.612 ns ; 3.191 ns ; +; -3.792 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[74] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.190 ns ; +; -3.792 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[44] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.190 ns ; +; -3.792 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLUT_MUX_ADR[1] ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe22 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.295 ns ; 3.497 ns ; +; -3.788 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[64] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.186 ns ; +; -3.787 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[5] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.282 ns ; 3.505 ns ; +; -3.783 ns ; None ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|q_b[7] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe17 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.612 ns ; 3.171 ns ; +; -3.781 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[6] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.605 ns ; 3.176 ns ; +; -3.780 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[1] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.022 ns ; 3.802 ns ; +; -3.779 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[4] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.260 ns ; 3.519 ns ; +; -3.777 ns ; None ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|q_b[4] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe43 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.615 ns ; 3.162 ns ; +; -3.777 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[3] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.282 ns ; 3.495 ns ; +; -3.776 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[2] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.020 ns ; 3.796 ns ; +; -3.771 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[1] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.022 ns ; 3.793 ns ; +; -3.767 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[5] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.260 ns ; 3.507 ns ; +; -3.762 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[4] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.282 ns ; 3.480 ns ; +; -3.757 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[3] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.022 ns ; 3.779 ns ; +; -3.748 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|rd_ptr_lsb ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.015 ns ; 3.763 ns ; +; -3.747 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[1] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe13 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.291 ns ; 3.456 ns ; +; -3.747 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|rd_ptr_lsb ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.015 ns ; 3.762 ns ; +; -3.743 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|rd_ptr_lsb ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.014 ns ; 3.757 ns ; +; -3.728 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[1] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe49 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.292 ns ; 3.436 ns ; +; -3.724 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[7] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.282 ns ; 3.442 ns ; +; -3.724 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.282 ns ; 3.442 ns ; +; -3.720 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|rd_ptr_lsb ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.013 ns ; 3.733 ns ; +; -3.717 ns ; None ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[110] ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe26 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.294 ns ; 3.423 ns ; +; -3.713 ns ; None ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|q_b[5] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe45 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.617 ns ; 3.096 ns ; +; -3.713 ns ; None ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|q_b[4] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe11 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.622 ns ; 3.091 ns ; +; -3.713 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[3] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.021 ns ; 3.734 ns ; +; -3.703 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[1] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe47 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.292 ns ; 3.411 ns ; +; -3.698 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[6] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.260 ns ; 3.438 ns ; +; -3.695 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[79] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.093 ns ; +; -3.694 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[32] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.092 ns ; +; -3.693 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[73] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.091 ns ; +; -3.693 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[119] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.091 ns ; +; -3.693 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[24] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.604 ns ; 3.089 ns ; +; -3.691 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[77] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.089 ns ; +; -3.691 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[63] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.089 ns ; +; -3.691 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[36] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.089 ns ; +; -3.690 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[93] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.088 ns ; +; -3.690 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[115] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.605 ns ; 3.085 ns ; +; -3.688 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[56] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.604 ns ; 3.084 ns ; +; -3.685 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[102] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.605 ns ; 3.080 ns ; +; -3.685 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[8] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.282 ns ; 3.403 ns ; +; -3.684 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[18] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.604 ns ; 3.080 ns ; +; -3.683 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[5] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.020 ns ; 3.703 ns ; +; -3.679 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[9] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.260 ns ; 3.419 ns ; +; -3.677 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[76] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.075 ns ; +; -3.677 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[5] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.022 ns ; 3.699 ns ; +; -3.675 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[62] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.073 ns ; +; -3.674 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[2] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.282 ns ; 3.392 ns ; +; -3.672 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[52] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.070 ns ; +; -3.670 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[66] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.068 ns ; +; -3.668 ns ; None ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|q_b[3] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe41 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.617 ns ; 3.051 ns ; +; -3.668 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[0] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe43 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.289 ns ; 3.379 ns ; +; -3.667 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[103] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.602 ns ; 3.065 ns ; +; -3.665 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[16] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.604 ns ; 3.061 ns ; +; -3.665 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.604 ns ; 3.061 ns ; +; -3.664 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[94] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.604 ns ; 3.060 ns ; +; -3.664 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[29] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.605 ns ; 3.059 ns ; +; -3.664 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[5] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.605 ns ; 3.059 ns ; +; -3.664 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.604 ns ; 3.060 ns ; +; -3.663 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[19] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.605 ns ; 3.058 ns ; +; -3.663 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[25] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.604 ns ; 3.059 ns ; +; -3.662 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[27] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.605 ns ; 3.057 ns ; +; -3.661 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[21] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.605 ns ; 3.056 ns ; +; -3.660 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[101] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.605 ns ; 3.055 ns ; +; -3.651 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[6] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.282 ns ; 3.369 ns ; +; -3.649 ns ; None ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|q_b[3] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe25 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.612 ns ; 3.037 ns ; +; -3.645 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[5] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; 0.021 ns ; 3.666 ns ; +; -3.633 ns ; None ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|q_b[3] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe9 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.272 ns ; -0.614 ns ; 3.019 ns ; +; Timing analysis restricted to 200 rows. ; To change the limit use Settings (Assignments menu) ; ; ; ; ; ; ; ; ++-----------------------------------------+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+-----------------------------+---------------------------+-------------------------+ + + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Clock Setup: 'CLK33M' ; ++-----------------------------------------+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+----------+-----------------------------+---------------------------+-------------------------+ +; Slack ; Actual fmax (period) ; From ; To ; From Clock ; To Clock ; Required Setup Relationship ; Required Longest P2P Time ; Actual Longest P2P Time ; ++-----------------------------------------+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+----------+-----------------------------+---------------------------+-------------------------+ +; -5.966 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[35] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.279 ns ; 3.687 ns ; +; -5.924 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[95] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.272 ns ; 3.652 ns ; +; -5.919 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[107] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.277 ns ; 3.642 ns ; +; -5.913 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[90] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.266 ns ; 3.647 ns ; +; -5.904 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[33] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.269 ns ; 3.635 ns ; +; -5.900 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[49] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.269 ns ; 3.631 ns ; +; -5.892 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[34] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.279 ns ; 3.613 ns ; +; -5.884 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[99] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.610 ns ; +; -5.877 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[57] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.269 ns ; 3.608 ns ; +; -5.830 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.932 ns ; 3.898 ns ; +; -5.791 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FIFO_RDE ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.650 ns ; 4.141 ns ; +; -5.791 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[42] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.517 ns ; +; -5.764 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FIFO_RDE ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.650 ns ; 4.114 ns ; +; -5.760 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[111] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.486 ns ; +; -5.758 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[84] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.267 ns ; 3.491 ns ; +; -5.757 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[88] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.265 ns ; 3.492 ns ; +; -5.745 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[85] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.277 ns ; 3.468 ns ; +; -5.742 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[60] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.277 ns ; 3.465 ns ; +; -5.742 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[48] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.276 ns ; 3.466 ns ; +; -5.737 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[50] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.276 ns ; 3.461 ns ; +; -5.732 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[97] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.458 ns ; +; -5.729 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[23] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.455 ns ; +; -5.723 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[83] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.276 ns ; 3.447 ns ; +; -5.721 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[28] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.447 ns ; +; -5.721 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[20] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.447 ns ; +; -5.721 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[41] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.276 ns ; 3.445 ns ; +; -5.720 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FIFO_RDE ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.652 ns ; 4.068 ns ; +; -5.718 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[108] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.444 ns ; +; -5.717 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[78] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.276 ns ; 3.441 ns ; +; -5.717 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[59] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.276 ns ; 3.441 ns ; +; -5.715 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[43] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.441 ns ; +; -5.714 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[1] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.651 ns ; 4.063 ns ; +; -5.714 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.440 ns ; +; -5.712 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[72] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.276 ns ; 3.436 ns ; +; -5.711 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[70] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.277 ns ; 3.434 ns ; +; -5.711 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[81] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.276 ns ; 3.435 ns ; +; -5.708 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[38] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.277 ns ; 3.431 ns ; +; -5.707 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[112] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.433 ns ; +; -5.704 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[75] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.276 ns ; 3.428 ns ; +; -5.704 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[82] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.276 ns ; 3.428 ns ; +; -5.702 ns ; None ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|q_b[4] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe27 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.282 ns ; 3.420 ns ; +; -5.699 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[46] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.273 ns ; 3.426 ns ; +; -5.669 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[92] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.267 ns ; 3.402 ns ; +; -5.667 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[17] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.270 ns ; 3.397 ns ; +; -5.659 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FIFO_RDE ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.651 ns ; 4.008 ns ; +; -5.657 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[1] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.932 ns ; 3.725 ns ; +; -5.656 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[37] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.277 ns ; 3.379 ns ; +; -5.652 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.650 ns ; 4.002 ns ; +; -5.650 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[80] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.376 ns ; +; -5.649 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[45] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.275 ns ; 3.374 ns ; +; -5.648 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[124] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.374 ns ; +; -5.645 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[104] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.273 ns ; 3.372 ns ; +; -5.644 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[91] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.370 ns ; +; -5.644 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[30] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.273 ns ; 3.371 ns ; +; -5.641 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[58] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.276 ns ; 3.365 ns ; +; -5.640 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[15] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.366 ns ; +; -5.640 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.276 ns ; 3.364 ns ; +; -5.639 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[47] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.276 ns ; 3.363 ns ; +; -5.630 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[96] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.356 ns ; +; -5.629 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[10] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.355 ns ; +; -5.628 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[7] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.354 ns ; +; -5.624 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[69] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.277 ns ; 3.347 ns ; +; -5.622 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.650 ns ; 3.972 ns ; +; -5.620 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[0] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.650 ns ; 3.970 ns ; +; -5.620 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[54] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.277 ns ; 3.343 ns ; +; -5.620 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[68] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.346 ns ; +; -5.620 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[113] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.346 ns ; +; -5.619 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[110] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.345 ns ; +; -5.619 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[106] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.345 ns ; +; -5.618 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[13] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.344 ns ; +; -5.617 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[22] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.343 ns ; +; -5.615 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[116] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.341 ns ; +; -5.615 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[127] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.341 ns ; +; -5.613 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[125] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.339 ns ; +; -5.613 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[12] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.339 ns ; +; -5.610 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[3] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.650 ns ; 3.960 ns ; +; -5.610 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[51] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.276 ns ; 3.334 ns ; +; -5.609 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[61] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.277 ns ; 3.332 ns ; +; -5.607 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[122] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.333 ns ; +; -5.607 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[98] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.333 ns ; +; -5.606 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[86] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.277 ns ; 3.329 ns ; +; -5.606 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[40] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.276 ns ; 3.330 ns ; +; -5.604 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[109] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.330 ns ; +; -5.604 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[118] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.277 ns ; 3.327 ns ; +; -5.602 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[65] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.328 ns ; +; -5.599 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.325 ns ; +; -5.598 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[105] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.324 ns ; +; -5.597 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[31] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.323 ns ; +; -5.596 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[53] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.277 ns ; 3.319 ns ; +; -5.594 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[5] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.650 ns ; 3.944 ns ; +; -5.592 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[67] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.276 ns ; 3.316 ns ; +; -5.587 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[55] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.277 ns ; 3.310 ns ; +; -5.581 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.652 ns ; 3.929 ns ; +; -5.580 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[1] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.652 ns ; 3.928 ns ; +; -5.570 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.651 ns ; 3.919 ns ; +; -5.568 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[8] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.276 ns ; 3.292 ns ; +; -5.566 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[4] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.650 ns ; 3.916 ns ; +; -5.554 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[4] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.650 ns ; 3.904 ns ; +; -5.550 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[4] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.651 ns ; 3.899 ns ; +; -5.546 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[2] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.932 ns ; 3.614 ns ; +; -5.545 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[26] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.276 ns ; 3.269 ns ; +; -5.541 ns ; None ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|q_b[7] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe33 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.284 ns ; 3.257 ns ; +; -5.539 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[3] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.652 ns ; 3.887 ns ; +; -5.539 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a9 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.975 ns ; 3.564 ns ; +; -5.530 ns ; None ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|q_b[5] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe29 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.282 ns ; 3.248 ns ; +; -5.526 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[0] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.650 ns ; 3.876 ns ; +; -5.523 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[3] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.932 ns ; 3.591 ns ; +; -5.507 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[0] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.652 ns ; 3.855 ns ; +; -5.505 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[1] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.954 ns ; 3.551 ns ; +; -5.500 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[2] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.650 ns ; 3.850 ns ; +; -5.499 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[4] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.652 ns ; 3.847 ns ; +; -5.494 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[9] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.954 ns ; 3.540 ns ; +; -5.493 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[1] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe15 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.963 ns ; 3.530 ns ; +; -5.491 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a8 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.975 ns ; 3.516 ns ; +; -5.490 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[89] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.216 ns ; +; -5.489 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[0] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.651 ns ; 3.838 ns ; +; -5.488 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[11] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.277 ns ; 3.211 ns ; +; -5.486 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[87] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.212 ns ; +; -5.486 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[100] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.212 ns ; +; -5.486 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[71] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.212 ns ; +; -5.485 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[39] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.211 ns ; +; -5.484 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[121] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.210 ns ; +; -5.484 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[14] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.276 ns ; 3.208 ns ; +; -5.484 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[9] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.276 ns ; 3.208 ns ; +; -5.481 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[123] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.277 ns ; 3.204 ns ; +; -5.481 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[120] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.276 ns ; 3.205 ns ; +; -5.479 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[126] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.205 ns ; +; -5.478 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[114] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.276 ns ; 3.202 ns ; +; -5.476 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[117] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.277 ns ; 3.199 ns ; +; -5.475 ns ; None ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|q_b[2] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe23 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.284 ns ; 3.191 ns ; +; -5.464 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[74] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.190 ns ; +; -5.464 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[44] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.190 ns ; +; -5.464 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLUT_MUX_ADR[1] ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe22 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.967 ns ; 3.497 ns ; +; -5.460 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[64] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.186 ns ; +; -5.459 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[5] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.954 ns ; 3.505 ns ; +; -5.455 ns ; None ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|q_b[7] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe17 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.284 ns ; 3.171 ns ; +; -5.453 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[6] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.277 ns ; 3.176 ns ; +; -5.452 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[1] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.650 ns ; 3.802 ns ; +; -5.451 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[4] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.932 ns ; 3.519 ns ; +; -5.449 ns ; None ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|q_b[4] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe43 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.287 ns ; 3.162 ns ; +; -5.449 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[3] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.954 ns ; 3.495 ns ; +; -5.448 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[2] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.652 ns ; 3.796 ns ; +; -5.443 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[1] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.650 ns ; 3.793 ns ; +; -5.439 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[5] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.932 ns ; 3.507 ns ; +; -5.434 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[4] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.954 ns ; 3.480 ns ; +; -5.429 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[3] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.650 ns ; 3.779 ns ; +; -5.420 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|rd_ptr_lsb ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.657 ns ; 3.763 ns ; +; -5.419 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[1] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe13 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.963 ns ; 3.456 ns ; +; -5.419 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|rd_ptr_lsb ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.657 ns ; 3.762 ns ; +; -5.415 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|rd_ptr_lsb ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.658 ns ; 3.757 ns ; +; -5.400 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[1] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe49 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.964 ns ; 3.436 ns ; +; -5.396 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[7] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.954 ns ; 3.442 ns ; +; -5.396 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.954 ns ; 3.442 ns ; +; -5.392 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|rd_ptr_lsb ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.659 ns ; 3.733 ns ; +; -5.389 ns ; None ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[110] ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe26 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.966 ns ; 3.423 ns ; +; -5.385 ns ; None ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|q_b[5] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe45 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.289 ns ; 3.096 ns ; +; -5.385 ns ; None ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|q_b[4] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe11 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.294 ns ; 3.091 ns ; +; -5.385 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[3] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.651 ns ; 3.734 ns ; +; -5.375 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[1] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe47 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.964 ns ; 3.411 ns ; +; -5.370 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[6] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.932 ns ; 3.438 ns ; +; -5.367 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[79] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.093 ns ; +; -5.366 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[32] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.092 ns ; +; -5.365 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[73] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.091 ns ; +; -5.365 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[119] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.091 ns ; +; -5.365 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[24] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.276 ns ; 3.089 ns ; +; -5.363 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[77] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.089 ns ; +; -5.363 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[63] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.089 ns ; +; -5.363 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[36] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.089 ns ; +; -5.362 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[93] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.088 ns ; +; -5.362 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[115] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.277 ns ; 3.085 ns ; +; -5.360 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[56] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.276 ns ; 3.084 ns ; +; -5.357 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[102] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.277 ns ; 3.080 ns ; +; -5.357 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[8] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.954 ns ; 3.403 ns ; +; -5.356 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[18] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.276 ns ; 3.080 ns ; +; -5.355 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[5] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.652 ns ; 3.703 ns ; +; -5.351 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[9] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.932 ns ; 3.419 ns ; +; -5.349 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[76] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.075 ns ; +; -5.349 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[5] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.650 ns ; 3.699 ns ; +; -5.347 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[62] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.073 ns ; +; -5.346 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[2] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.954 ns ; 3.392 ns ; +; -5.344 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[52] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.070 ns ; +; -5.342 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[66] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.068 ns ; +; -5.340 ns ; None ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|q_b[3] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe41 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.289 ns ; 3.051 ns ; +; -5.340 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[0] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe43 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.961 ns ; 3.379 ns ; +; -5.339 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[103] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.274 ns ; 3.065 ns ; +; -5.337 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[16] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.276 ns ; 3.061 ns ; +; -5.337 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.276 ns ; 3.061 ns ; +; -5.336 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[94] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.276 ns ; 3.060 ns ; +; -5.336 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[29] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.277 ns ; 3.059 ns ; +; -5.336 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[5] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.277 ns ; 3.059 ns ; +; -5.336 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.276 ns ; 3.060 ns ; +; -5.335 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[19] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.277 ns ; 3.058 ns ; +; -5.335 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[25] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.276 ns ; 3.059 ns ; +; -5.334 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[27] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.277 ns ; 3.057 ns ; +; -5.333 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[21] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.277 ns ; 3.056 ns ; +; -5.332 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~portb_address_reg0 ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[101] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.277 ns ; 3.055 ns ; +; -5.323 ns ; None ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[6] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.954 ns ; 3.369 ns ; +; -5.321 ns ; None ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM54|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|q_b[3] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe25 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.284 ns ; 3.037 ns ; +; -5.317 ns ; None ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_omb:rd_ptr_msb|counter_reg_bit[5] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -1.651 ns ; 3.666 ns ; +; -5.305 ns ; None ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|q_b[3] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe9 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; CLK33M ; 0.196 ns ; -2.286 ns ; 3.019 ns ; +; Timing analysis restricted to 200 rows. ; To change the limit use Settings (Assignments menu) ; ; ; ; ; ; ; ; ++-----------------------------------------+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+----------+-----------------------------+---------------------------+-------------------------+ + + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Clock Setup: 'MAIN_CLK' ; ++-----------------------------------------+-----------------------------------------------------+------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+----------+-----------------------------+---------------------------+-------------------------+ +; Slack ; Actual fmax (period) ; From ; To ; From Clock ; To Clock ; Required Setup Relationship ; Required Longest P2P Time ; Actual Longest P2P Time ; ++-----------------------------------------+-----------------------------------------------------+------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+----------+-----------------------------+---------------------------+-------------------------+ +; -4.261 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_k47:rdptr_g1p|counter5a7 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.057 ns ; 4.318 ns ; +; -4.260 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_k47:rdptr_g1p|counter5a8 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.057 ns ; 4.317 ns ; +; -4.258 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_k47:rdptr_g1p|counter5a6 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.057 ns ; 4.315 ns ; +; -4.239 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_k47:rdptr_g1p|counter5a5 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.057 ns ; 4.296 ns ; +; -4.204 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|q_b[31] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.122 ns ; 4.326 ns ; +; -4.204 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|q_b[30] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.122 ns ; 4.326 ns ; +; -4.204 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|q_b[29] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.122 ns ; 4.326 ns ; +; -4.204 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|q_b[28] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.122 ns ; 4.326 ns ; +; -4.204 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|q_b[27] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.122 ns ; 4.326 ns ; +; -4.204 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|q_b[26] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.122 ns ; 4.326 ns ; +; -4.204 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|q_b[25] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.122 ns ; 4.326 ns ; +; -4.204 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|q_b[24] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.122 ns ; 4.326 ns ; +; -4.204 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|q_b[23] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.122 ns ; 4.326 ns ; +; -4.204 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|q_b[22] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.122 ns ; 4.326 ns ; +; -4.204 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|q_b[21] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.122 ns ; 4.326 ns ; +; -4.204 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|q_b[20] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.122 ns ; 4.326 ns ; +; -4.204 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|q_b[19] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.122 ns ; 4.326 ns ; +; -4.204 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|q_b[18] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.122 ns ; 4.326 ns ; +; -4.204 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|q_b[17] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.122 ns ; 4.326 ns ; +; -4.204 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|q_b[16] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.122 ns ; 4.326 ns ; +; -4.204 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|q_b[15] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.122 ns ; 4.326 ns ; +; -4.204 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|q_b[14] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.122 ns ; 4.326 ns ; +; -4.204 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|q_b[13] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.122 ns ; 4.326 ns ; +; -4.204 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|q_b[12] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.122 ns ; 4.326 ns ; +; -4.204 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|q_b[11] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.122 ns ; 4.326 ns ; +; -4.204 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|q_b[10] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.122 ns ; 4.326 ns ; +; -4.204 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|q_b[9] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.122 ns ; 4.326 ns ; +; -4.204 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|q_b[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.122 ns ; 4.326 ns ; +; -4.204 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|q_b[7] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.122 ns ; 4.326 ns ; +; -4.204 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|q_b[6] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.122 ns ; 4.326 ns ; +; -4.204 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|q_b[5] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.122 ns ; 4.326 ns ; +; -4.204 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|q_b[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.122 ns ; 4.326 ns ; +; -4.204 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|q_b[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.122 ns ; 4.326 ns ; +; -4.204 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|q_b[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.122 ns ; 4.326 ns ; +; -4.204 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|q_b[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.122 ns ; 4.326 ns ; +; -4.204 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|q_b[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.122 ns ; 4.326 ns ; +; -4.071 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|ram_block11a0~portb_address_reg0 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.225 ns ; 4.296 ns ; +; -4.023 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_k47:rdptr_g1p|counter5a0 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.012 ns ; 4.035 ns ; +; -4.023 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|rdptr_g[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.012 ns ; 4.035 ns ; +; -3.979 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_k47:rdptr_g1p|counter5a2 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.272 ns ; 4.251 ns ; +; -3.910 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_k47:rdptr_g1p|counter5a4 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.057 ns ; 3.967 ns ; +; -3.907 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_k47:rdptr_g1p|counter5a3 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.057 ns ; 3.964 ns ; +; -3.784 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_k47:rdptr_g1p|sub_parity7a[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.055 ns ; 3.839 ns ; +; -3.784 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_k47:rdptr_g1p|sub_parity7a[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.055 ns ; 3.839 ns ; +; -3.784 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_k47:rdptr_g1p|sub_parity7a[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.055 ns ; 3.839 ns ; +; -3.784 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_k47:rdptr_g1p|parity6 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.055 ns ; 3.839 ns ; +; -3.784 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|rdptr_g[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.055 ns ; 3.839 ns ; +; -3.784 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|rdptr_g[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.055 ns ; 3.839 ns ; +; -3.784 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|rdptr_g[6] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.055 ns ; 3.839 ns ; +; -3.784 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|rdptr_g[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.055 ns ; 3.839 ns ; +; -3.784 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|rdptr_g[7] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.055 ns ; 3.839 ns ; +; -3.784 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|rdptr_g[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.055 ns ; 3.839 ns ; +; -3.784 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|rdptr_g[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.055 ns ; 3.839 ns ; +; -3.784 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|rdptr_g[5] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.055 ns ; 3.839 ns ; +; -3.546 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_k47:rdptr_g1p|counter5a1 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.057 ns ; 3.603 ns ; +; -3.544 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|rdemp_eq_comp_lsb_aeb ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.057 ns ; 3.601 ns ; +; -3.541 ns ; None ; FB_ALE ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_WAIT ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.096 ns ; 3.637 ns ; +; -3.426 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|rdemp_eq_comp_msb_aeb ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; -0.013 ns ; 3.413 ns ; +; -3.055 ns ; None ; FB_ALE ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.360 ns ; 3.415 ns ; +; -3.039 ns ; None ; FB_ALE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WRF_WRE ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; -0.013 ns ; 3.026 ns ; +; -2.598 ns ; None ; FB_ALE ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; MAIN_CLK ; 1.094 ns ; 0.205 ns ; 2.803 ns ; +; -2.463 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.067 ns ; 6.530 ns ; +; -2.463 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.067 ns ; 6.530 ns ; +; -2.375 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLUT_TA ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.768 ns ; 7.143 ns ; +; -2.355 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|IRQn ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.986 ns ; 6.341 ns ; +; -2.320 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[7] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|IRQn ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.984 ns ; 6.304 ns ; +; -2.317 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[19] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.067 ns ; 6.384 ns ; +; -2.317 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[19] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.067 ns ; 6.384 ns ; +; -2.290 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[7] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLUT_TA ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.766 ns ; 7.056 ns ; +; -2.250 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[11] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.067 ns ; 6.317 ns ; +; -2.250 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[11] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.067 ns ; 6.317 ns ; +; -2.246 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_B[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.999 ns ; 6.245 ns ; +; -2.239 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[17] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.068 ns ; 6.307 ns ; +; -2.239 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[17] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.068 ns ; 6.307 ns ; +; -2.229 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[19] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLUT_TA ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.768 ns ; 6.997 ns ; +; -2.209 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[19] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|IRQn ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.986 ns ; 6.195 ns ; +; -2.199 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[22] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[30] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.118 ns ; 6.317 ns ; +; -2.199 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[22] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[31] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.118 ns ; 6.317 ns ; +; -2.183 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_M_D[7] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.129 ns ; 6.312 ns ; +; -2.177 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_TOP[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.213 ns ; 6.390 ns ; +; -2.177 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_TOP[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.213 ns ; 6.390 ns ; +; -2.151 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[17] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLUT_TA ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.769 ns ; 6.920 ns ; +; -2.151 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[12] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[30] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.119 ns ; 6.270 ns ; +; -2.151 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[12] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[31] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.119 ns ; 6.270 ns ; +; -2.147 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[23] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[30] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.118 ns ; 6.265 ns ; +; -2.147 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[23] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[31] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.118 ns ; 6.265 ns ; +; -2.146 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[20] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[30] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.120 ns ; 6.266 ns ; +; -2.146 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[20] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[31] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.120 ns ; 6.266 ns ; +; -2.142 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[21] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[30] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.118 ns ; 6.260 ns ; +; -2.142 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[19] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[30] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.119 ns ; 6.261 ns ; +; -2.142 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[21] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[31] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.118 ns ; 6.260 ns ; +; -2.142 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[19] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[31] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.119 ns ; 6.261 ns ; +; -2.139 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[5] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLUT_TA ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.766 ns ; 6.905 ns ; +; -2.135 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[22] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.822 ns ; 5.957 ns ; +; -2.135 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[20] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.822 ns ; 5.957 ns ; +; -2.135 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[19] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.822 ns ; 5.957 ns ; +; -2.135 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[21] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.822 ns ; 5.957 ns ; +; -2.135 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[16] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.822 ns ; 5.957 ns ; +; -2.135 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[17] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.822 ns ; 5.957 ns ; +; -2.135 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[15] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.822 ns ; 5.957 ns ; +; -2.135 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[18] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.822 ns ; 5.957 ns ; +; -2.135 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.822 ns ; 5.957 ns ; +; -2.135 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[7] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.822 ns ; 5.957 ns ; +; -2.135 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[10] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.822 ns ; 5.957 ns ; +; -2.135 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[9] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.822 ns ; 5.957 ns ; +; -2.133 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[12] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|IRQn ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.986 ns ; 6.119 ns ; +; -2.132 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|IRQn ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.984 ns ; 6.116 ns ; +; -2.131 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[17] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|IRQn ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.987 ns ; 6.118 ns ; +; -2.129 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[14] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[30] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.119 ns ; 6.248 ns ; +; -2.129 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[14] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[31] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.119 ns ; 6.248 ns ; +; -2.122 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[8] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.065 ns ; 6.187 ns ; +; -2.122 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[8] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.065 ns ; 6.187 ns ; +; -2.118 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[16] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.068 ns ; 6.186 ns ; +; -2.118 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[16] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.068 ns ; 6.186 ns ; +; -2.100 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[19] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_B[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.999 ns ; 6.099 ns ; +; -2.098 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[7] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[30] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.117 ns ; 6.215 ns ; +; -2.098 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[7] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[31] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.117 ns ; 6.215 ns ; +; -2.094 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[7] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.065 ns ; 6.159 ns ; +; -2.094 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[7] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.065 ns ; 6.159 ns ; +; -2.084 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[3] ; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|shift_reg[14] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.238 ns ; 6.322 ns ; +; -2.084 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[3] ; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|shift_reg[15] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.238 ns ; 6.322 ns ; +; -2.084 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[3] ; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|shift_reg[17] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.238 ns ; 6.322 ns ; +; -2.083 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[22] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[15] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.537 ns ; 6.620 ns ; +; -2.062 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[11] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLUT_TA ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.768 ns ; 6.830 ns ; +; -2.060 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[12] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLUT_TA ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.768 ns ; 6.828 ns ; +; -2.048 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_X_D[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.176 ns ; 6.224 ns ; +; -2.048 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_X_D[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.176 ns ; 6.224 ns ; +; -2.048 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_X_D[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.176 ns ; 6.224 ns ; +; -2.045 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[6] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLUT_TA ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.766 ns ; 6.811 ns ; +; -2.045 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_USART_TOP:I_USART|WF68901IP_USART_TX:I_USART_TRANSMIT|UE ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.701 ns ; 5.746 ns ; +; -2.037 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[19] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_BASE_M_D[7] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.129 ns ; 6.166 ns ; +; -2.035 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[12] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[15] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.538 ns ; 6.573 ns ; +; -2.033 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; interrupt_handler:nobody|WERTE[3][19] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.251 ns ; 6.284 ns ; +; -2.033 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; interrupt_handler:nobody|WERTE[4][19] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.251 ns ; 6.284 ns ; +; -2.033 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; interrupt_handler:nobody|WERTE[5][19] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.251 ns ; 6.284 ns ; +; -2.033 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[5] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|IRQn ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.984 ns ; 6.017 ns ; +; -2.031 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[23] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[15] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.537 ns ; 6.568 ns ; +; -2.031 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[19] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_TOP[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.213 ns ; 6.244 ns ; +; -2.031 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[19] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_TOP[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.213 ns ; 6.244 ns ; +; -2.031 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[25] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[30] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.113 ns ; 6.144 ns ; +; -2.031 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[25] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[31] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.113 ns ; 6.144 ns ; +; -2.030 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[16] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLUT_TA ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.769 ns ; 6.799 ns ; +; -2.030 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[20] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[15] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.539 ns ; 6.569 ns ; +; -2.026 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[21] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[15] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.537 ns ; 6.563 ns ; +; -2.026 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[19] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[15] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.538 ns ; 6.564 ns ; +; -2.022 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[17] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_B[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.000 ns ; 6.022 ns ; +; -2.022 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[22] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.819 ns ; 5.841 ns ; +; -2.022 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[20] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.819 ns ; 5.841 ns ; +; -2.022 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[19] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.819 ns ; 5.841 ns ; +; -2.022 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[21] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.819 ns ; 5.841 ns ; +; -2.022 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[16] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.819 ns ; 5.841 ns ; +; -2.022 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[17] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.819 ns ; 5.841 ns ; +; -2.022 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[15] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.819 ns ; 5.841 ns ; +; -2.022 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[18] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.819 ns ; 5.841 ns ; +; -2.022 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.819 ns ; 5.841 ns ; +; -2.022 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[7] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.819 ns ; 5.841 ns ; +; -2.022 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[10] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.819 ns ; 5.841 ns ; +; -2.022 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[9] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.819 ns ; 5.841 ns ; +; -2.013 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[14] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[15] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.538 ns ; 6.551 ns ; +; -2.010 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[16] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|IRQn ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.987 ns ; 5.997 ns ; +; -2.005 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[22] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.819 ns ; 5.824 ns ; +; -2.005 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[20] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.819 ns ; 5.824 ns ; +; -2.005 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[19] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.819 ns ; 5.824 ns ; +; -2.005 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[21] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.819 ns ; 5.824 ns ; +; -2.005 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[16] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.819 ns ; 5.824 ns ; +; -2.005 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[17] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.819 ns ; 5.824 ns ; +; -2.005 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[15] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.819 ns ; 5.824 ns ; +; -2.005 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[18] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.819 ns ; 5.824 ns ; +; -2.005 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.819 ns ; 5.824 ns ; +; -2.005 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[7] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.819 ns ; 5.824 ns ; +; -2.005 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[10] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.819 ns ; 5.824 ns ; +; -2.005 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[9] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.819 ns ; 5.824 ns ; +; -2.002 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[8] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|IRQn ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.984 ns ; 5.986 ns ; +; -2.001 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|IRQn ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.984 ns ; 5.985 ns ; +; -1.998 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|VECT_NUMBER[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.013 ns ; 6.011 ns ; +; -1.998 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|VECT_NUMBER[5] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.013 ns ; 6.011 ns ; +; -1.998 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|VECT_NUMBER[6] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.013 ns ; 6.011 ns ; +; -1.998 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|VECT_NUMBER[7] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.013 ns ; 6.011 ns ; +; -1.998 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[14] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|FREQUENCY_B[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.999 ns ; 5.997 ns ; +; -1.997 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF6850IP_TOP_SOC:I_ACIA_KEYBOARD|WF6850IP_CTRL_STATUS:I_UART_CTRL_STATUS|IRQn ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.984 ns ; 5.981 ns ; +; -1.996 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.064 ns ; 6.060 ns ; +; -1.996 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_LOW[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.064 ns ; 6.060 ns ; +; -1.993 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[26] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[30] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.113 ns ; 6.106 ns ; +; -1.993 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[26] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[31] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.113 ns ; 6.106 ns ; +; -1.991 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[7] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.050 ns ; 6.041 ns ; +; -1.991 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[6] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.050 ns ; 6.041 ns ; +; -1.990 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[13] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[30] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.119 ns ; 6.109 ns ; +; -1.990 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[13] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[31] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.119 ns ; 6.109 ns ; +; -1.989 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[8] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[30] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.117 ns ; 6.106 ns ; +; -1.989 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[8] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[31] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 4.117 ns ; 6.106 ns ; +; -1.989 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[19] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[22] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.822 ns ; 5.811 ns ; +; -1.989 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[19] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[20] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.822 ns ; 5.811 ns ; +; -1.989 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[19] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[19] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.822 ns ; 5.811 ns ; +; -1.989 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[19] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[21] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.822 ns ; 5.811 ns ; +; -1.989 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[19] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[16] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.822 ns ; 5.811 ns ; +; -1.989 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[19] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[17] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.822 ns ; 5.811 ns ; +; -1.989 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[19] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[15] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.822 ns ; 5.811 ns ; +; -1.989 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[19] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[18] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.822 ns ; 5.811 ns ; +; -1.989 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[19] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.822 ns ; 5.811 ns ; +; -1.989 ns ; None ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[19] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_BYT_CNT[7] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; MAIN_CLK ; 4.884 ns ; 3.822 ns ; 5.811 ns ; +; Timing analysis restricted to 200 rows. ; To change the limit use Settings (Assignments menu) ; ; ; ; ; ; ; ; ++-----------------------------------------+-----------------------------------------------------+------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+----------+-----------------------------+---------------------------+-------------------------+ + + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Clock Hold: 'altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0]' ; ++---------------+---------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+------------------------------------------------------------------------+----------------------------+----------------------------+--------------------------+ +; Minimum Slack ; From ; To ; From Clock ; To Clock ; Required Hold Relationship ; Required Shortest P2P Time ; Actual Shortest P2P Time ; ++---------------+---------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+------------------------------------------------------------------------+----------------------------+----------------------------+--------------------------+ +; 0.825 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.783 ns ; +; 0.827 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.785 ns ; +; 0.827 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.785 ns ; +; 0.828 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.786 ns ; +; 0.828 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.786 ns ; +; 0.829 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.787 ns ; +; 0.829 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.787 ns ; +; 0.829 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.787 ns ; +; 0.829 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.787 ns ; +; 0.829 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.787 ns ; +; 0.830 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.788 ns ; +; 0.830 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.788 ns ; +; 0.830 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.788 ns ; +; 0.831 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.789 ns ; +; 0.831 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.789 ns ; +; 0.832 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.790 ns ; +; 0.833 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.791 ns ; +; 1.185 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.143 ns ; +; 1.353 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.311 ns ; +; 1.354 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.312 ns ; +; 1.354 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.311 ns ; +; 1.354 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.312 ns ; +; 1.356 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.314 ns ; +; 1.356 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.314 ns ; +; 1.356 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.314 ns ; +; 1.357 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.315 ns ; +; 1.357 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.315 ns ; +; 1.357 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.315 ns ; +; 1.357 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.315 ns ; +; 1.358 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.316 ns ; +; 1.359 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.317 ns ; +; 1.359 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.317 ns ; +; 1.359 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.317 ns ; +; 1.359 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.317 ns ; +; 1.411 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.369 ns ; +; 1.412 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.370 ns ; +; 1.412 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.369 ns ; +; 1.412 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.370 ns ; +; 1.414 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.372 ns ; +; 1.414 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.372 ns ; +; 1.415 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.373 ns ; +; 1.415 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.373 ns ; +; 1.415 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.373 ns ; +; 1.416 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.374 ns ; +; 1.416 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.373 ns ; +; 1.417 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.375 ns ; +; 1.417 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.375 ns ; +; 1.417 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.375 ns ; +; 1.417 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.375 ns ; +; 1.470 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.428 ns ; +; 1.470 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.427 ns ; +; 1.470 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.427 ns ; +; 1.470 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.428 ns ; +; 1.472 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.430 ns ; +; 1.473 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.431 ns ; +; 1.473 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.431 ns ; +; 1.473 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.431 ns ; +; 1.474 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.432 ns ; +; 1.474 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.431 ns ; +; 1.475 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.433 ns ; +; 1.475 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.433 ns ; +; 1.475 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.433 ns ; +; 1.475 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.433 ns ; +; 1.528 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.486 ns ; +; 1.528 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.485 ns ; +; 1.528 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.485 ns ; +; 1.528 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.486 ns ; +; 1.530 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.488 ns ; +; 1.531 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.489 ns ; +; 1.531 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.489 ns ; +; 1.532 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.489 ns ; +; 1.532 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.489 ns ; +; 1.533 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.491 ns ; +; 1.533 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.491 ns ; +; 1.533 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.491 ns ; +; 1.533 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.491 ns ; +; 1.586 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.543 ns ; +; 1.586 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.543 ns ; +; 1.587 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.544 ns ; +; 1.588 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.546 ns ; +; 1.589 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.547 ns ; +; 1.589 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.547 ns ; +; 1.590 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.547 ns ; +; 1.590 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.547 ns ; +; 1.591 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.549 ns ; +; 1.591 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.549 ns ; +; 1.591 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.549 ns ; +; 1.591 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.549 ns ; +; 1.644 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.601 ns ; +; 1.644 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.601 ns ; +; 1.645 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.602 ns ; +; 1.646 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.604 ns ; +; 1.647 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.605 ns ; +; 1.648 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.605 ns ; +; 1.648 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.605 ns ; +; 1.649 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.607 ns ; +; 1.649 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.607 ns ; +; 1.649 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.607 ns ; +; 1.650 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.607 ns ; +; 1.689 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.647 ns ; +; 1.702 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.659 ns ; +; 1.702 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.659 ns ; +; 1.703 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.660 ns ; +; 1.704 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.662 ns ; +; 1.706 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.663 ns ; +; 1.706 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.663 ns ; +; 1.707 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.665 ns ; +; 1.707 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.665 ns ; +; 1.708 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.665 ns ; +; 1.708 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.665 ns ; +; 1.743 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.701 ns ; +; 1.760 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.717 ns ; +; 1.760 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.717 ns ; +; 1.761 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.718 ns ; +; 1.764 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.721 ns ; +; 1.764 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.721 ns ; +; 1.765 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.723 ns ; +; 1.766 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.723 ns ; +; 1.766 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.723 ns ; +; 1.766 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.723 ns ; +; 1.801 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.759 ns ; +; 1.818 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.775 ns ; +; 1.819 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.776 ns ; +; 1.822 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.779 ns ; +; 1.822 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.779 ns ; +; 1.824 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.781 ns ; +; 1.824 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.781 ns ; +; 1.824 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.781 ns ; +; 1.824 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.781 ns ; +; 1.861 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.819 ns ; +; 1.876 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.833 ns ; +; 1.877 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.834 ns ; +; 1.880 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.837 ns ; +; 1.882 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.839 ns ; +; 1.882 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.839 ns ; +; 1.882 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.839 ns ; +; 1.882 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.839 ns ; +; 1.915 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.873 ns ; +; 1.935 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.892 ns ; +; 1.938 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.895 ns ; +; 1.940 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.897 ns ; +; 1.940 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.897 ns ; +; 1.940 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.897 ns ; +; 1.940 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.897 ns ; +; 1.976 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[11] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.934 ns ; +; 1.993 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.950 ns ; +; 1.998 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.955 ns ; +; 1.998 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.955 ns ; +; 1.998 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.955 ns ; +; 1.998 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[12] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.955 ns ; +; 2.034 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.992 ns ; +; 2.056 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 2.013 ns ; +; 2.056 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 2.013 ns ; +; 2.056 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 2.013 ns ; +; 2.056 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[13] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 2.013 ns ; +; 2.091 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[9] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 2.049 ns ; +; 2.114 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 2.071 ns ; +; 2.114 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 2.071 ns ; +; 2.114 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[14] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 2.071 ns ; +; 2.147 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[8] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 2.104 ns ; +; 2.172 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 2.129 ns ; +; 2.172 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[15] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 2.129 ns ; +; 2.209 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[7] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 2.166 ns ; +; 2.230 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[16] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 2.187 ns ; +; 2.263 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[6] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 2.220 ns ; +; 2.325 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[5] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 2.282 ns ; +; 2.380 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[4] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 2.337 ns ; +; 2.443 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[3] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 2.400 ns ; +; 2.501 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[2] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 2.458 ns ; +; 2.559 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[1] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 2.516 ns ; +; 2.617 ns ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] ; lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 2.574 ns ; ++---------------+---------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+------------------------------------------------------------------------+----------------------------+----------------------------+--------------------------+ + + ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Clock Hold: 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0]' ; ++---------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+----------------------------+----------------------------+--------------------------+ +; Minimum Slack ; From ; To ; From Clock ; To Clock ; Required Hold Relationship ; Required Shortest P2P Time ; Actual Shortest P2P Time ; ++---------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+----------------------------+----------------------------+--------------------------+ +; 0.564 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.522 ns ; +; 0.825 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.783 ns ; +; 0.830 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.788 ns ; +; 0.852 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.810 ns ; +; 0.955 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[2] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.913 ns ; +; 1.357 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.315 ns ; +; 1.358 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.316 ns ; +; 1.380 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.338 ns ; +; 1.415 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.373 ns ; +; 1.416 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.374 ns ; +; 1.473 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.431 ns ; +; 1.474 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.432 ns ; +; 1.487 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[2] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.445 ns ; +; 1.531 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.489 ns ; +; 1.545 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[2] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.503 ns ; +; 1.611 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.569 ns ; +; 1.611 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.569 ns ; +; 1.611 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.569 ns ; +; 1.611 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.569 ns ; ++---------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+----------------------------+----------------------------+--------------------------+ + + ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Clock Hold: 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1]' ; ++-----------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+----------------------------+----------------------------+--------------------------+ +; Minimum Slack ; From ; To ; From Clock ; To Clock ; Required Hold Relationship ; Required Shortest P2P Time ; Actual Shortest P2P Time ; ++-----------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+----------------------------+----------------------------+--------------------------+ +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|WG~_Duplicate_1 ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|WG~_Duplicate_1 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|WR_PR ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|WR_PR ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[7] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[7] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[6] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[8] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[8] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[2] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[5] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[5] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\CLK_MASK:MASK_SHFT[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\CLK_MASK:MASK_SHFT[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\MOTORSWITCH:LOCK ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\MOTORSWITCH:LOCK ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\MOTORSWITCH:INDEXCNT[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\MOTORSWITCH:INDEXCNT[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\MOTORSWITCH:INDEXCNT[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\MOTORSWITCH:INDEXCNT[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\MOTORSWITCH:INDEXCNT[2] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\MOTORSWITCH:INDEXCNT[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\MOTORSWITCH:INDEXCNT[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\MOTORSWITCH:INDEXCNT[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\INDEX_COUNTER:LOCK ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\INDEX_COUNTER:LOCK ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\BYTEASMBLY:CNT[2] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\BYTEASMBLY:CNT[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\BYTEASMBLY:CNT[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\BYTEASMBLY:CNT[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\BYTEASMBLY:CNT[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\BYTEASMBLY:CNT[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\BYTEASMBLY:CNT[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\BYTEASMBLY:CNT[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|SECTOR_REG[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|SECTOR_REG[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\CNT_T3BYTES:CNT[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\CNT_T3BYTES:CNT[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\CNT_T3BYTES:CNT[2] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\CNT_T3BYTES:CNT[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\CNT_T3BYTES:CNT[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\CNT_T3BYTES:CNT[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|MO~_Duplicate_1 ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|MO~_Duplicate_1 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CRC_LOGIC:I_CRC_LOGIC|CRC_SHIFT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CRC_LOGIC:I_CRC_LOGIC|CRC_SHIFT[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CRC_LOGIC:I_CRC_LOGIC|CRC_SHIFT[9] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CRC_LOGIC:I_CRC_LOGIC|CRC_SHIFT[9] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|\EDGEDETECT:LOCK ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|\EDGEDETECT:LOCK ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|\FREQUENCY_DECODER:FREQ_AMOUNT[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|\FREQUENCY_DECODER:FREQ_AMOUNT[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|SECT_LEN[5] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|SECT_LEN[5] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|SECT_LEN[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|SECT_LEN[6] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|SECT_LEN[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|SECT_LEN[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|SECT_LEN[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|SECT_LEN[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|SECT_LEN[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|SECT_LEN[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|SECT_LEN[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|SECT_LEN[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|SHIFT_REG[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|SHIFT_REG[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|SHIFT_REG[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|SHIFT_REG[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|\PHASE_DECODER:PHASE_AMOUNT[5] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|\PHASE_DECODER:PHASE_AMOUNT[5] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|SECT_LEN[2] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|SECT_LEN[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|SHIFT_REG[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|SHIFT_REG[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_VERIFY_CRC ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_VERIFY_CRC ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_VERIFY_CRC_1 ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_VERIFY_CRC_1 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_SHIFT ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_SHIFT ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_SHIFT_ADR ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_SHIFT_ADR ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|INDEX_MARK ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|INDEX_MARK ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|PLL_D ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|PLL_D ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_CHECK_DIR ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T1_CHECK_DIR ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|counter7a[7] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|counter7a[7] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|counter7a[8] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|counter7a[8] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_STATE.FCF_T7 ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_STATE.FCF_T7 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|counter7a[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|counter7a[6] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|counter7a[5] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|counter7a[5] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|counter7a[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|counter7a[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|counter7a[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|counter7a[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|counter7a[2] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|counter7a[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|counter7a[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|counter7a[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|counter7a[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|counter7a[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_ACTIV ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_ACTIV ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_WR_LEADIN ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_WR_LEADIN ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|BUSY ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|BUSY ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\CLK_MASK:LOCK ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\CLK_MASK:LOCK ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|SHIFT_REG[7] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|SHIFT_REG[7] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CRC_LOGIC:I_CRC_LOGIC|CRC_SHIFT[15] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CRC_LOGIC:I_CRC_LOGIC|CRC_SHIFT[15] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_WR_FF ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_WR_FF ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\MFM_PRECOMPENSATION:WRITEPATTERN[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\MFM_PRECOMPENSATION:WRITEPATTERN[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\MFM_PRECOMPENSATION:WRITEPATTERN[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\MFM_PRECOMPENSATION:WRITEPATTERN[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\MFM_PRECOMPENSATION:WRITEPATTERN[2] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\MFM_PRECOMPENSATION:WRITEPATTERN[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_WR_AM ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T2_WR_AM ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\MFM_STROBES:CNT[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\MFM_STROBES:CNT[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\MFM_WR_TIMING:CLKMASK_MFM ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\MFM_WR_TIMING:CLKMASK_MFM ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|DEC_STATE ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|DEC_STATE ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|MFM_STATE.B_01 ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|MFM_STATE.B_01 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|MFM_STATE.C_10 ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|MFM_STATE.C_10 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.547 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\MFM_PRECOMPENSATION:WRITEPATTERN[2] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\MFM_PRECOMPENSATION:WRITEPATTERN[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.505 ns ; +; 0.549 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[19] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[20] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.507 ns ; +; 0.549 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|TRACKMEM[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|SECTOR_REG[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.507 ns ; +; 0.550 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_jkd:ws_dgrp|dffpipe_id9:dffpipe17|dffe18a[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_jkd:ws_dgrp|dffpipe_id9:dffpipe17|dffe19a[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.508 ns ; +; 0.550 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[9] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[10] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.508 ns ; +; 0.550 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[11] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[12] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.508 ns ; +; 0.550 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[13] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[14] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.508 ns ; +; 0.550 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_kkd:rs_dgwp|dffpipe_jd9:dffpipe12|dffe13a[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_kkd:rs_dgwp|dffpipe_jd9:dffpipe12|dffe14a[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.508 ns ; +; 0.550 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_STATE.FCF_T2 ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_STATE.FCF_T3 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.508 ns ; +; 0.550 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[28] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[29] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.508 ns ; +; 0.550 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\MFM_PRECOMPENSATION:WRITEPATTERN[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\MFM_PRECOMPENSATION:WRITEPATTERN[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.508 ns ; +; 0.551 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|sub_parity9a1 ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|parity8 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.509 ns ; +; 0.551 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_jkd:ws_dgrp|dffpipe_id9:dffpipe17|dffe18a[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_jkd:ws_dgrp|dffpipe_id9:dffpipe17|dffe19a[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.509 ns ; +; 0.551 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_jkd:ws_dgrp|dffpipe_id9:dffpipe17|dffe18a[7] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_jkd:ws_dgrp|dffpipe_id9:dffpipe17|dffe19a[7] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.509 ns ; +; 0.551 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[2] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.509 ns ; +; 0.551 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[7] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[8] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.509 ns ; +; 0.551 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[10] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[11] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.509 ns ; +; 0.551 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_kkd:rs_dgwp|dffpipe_jd9:dffpipe12|dffe13a[2] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_kkd:rs_dgwp|dffpipe_jd9:dffpipe12|dffe14a[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.509 ns ; +; 0.551 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_kkd:rs_dgwp|dffpipe_jd9:dffpipe12|dffe13a[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_kkd:rs_dgwp|dffpipe_jd9:dffpipe12|dffe14a[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.509 ns ; +; 0.551 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|sub_parity6a1 ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|parity5 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.509 ns ; +; 0.552 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_jkd:ws_dgrp|dffpipe_id9:dffpipe17|dffe18a[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_jkd:ws_dgrp|dffpipe_id9:dffpipe17|dffe19a[6] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.510 ns ; +; 0.552 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_jkd:ws_dgrp|dffpipe_id9:dffpipe17|dffe18a[2] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_jkd:ws_dgrp|dffpipe_id9:dffpipe17|dffe19a[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.510 ns ; +; 0.552 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[5] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[6] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.510 ns ; +; 0.552 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[8] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[9] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.510 ns ; +; 0.552 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[17] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[18] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.510 ns ; +; 0.552 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[20] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[21] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.510 ns ; +; 0.553 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.511 ns ; +; 0.553 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[16] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[17] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.511 ns ; +; 0.553 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_kkd:rs_dgwp|dffpipe_jd9:dffpipe12|dffe13a[7] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_kkd:rs_dgwp|dffpipe_jd9:dffpipe12|dffe14a[7] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.511 ns ; +; 0.553 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_AM_DETECTOR:I_AM_DETECTOR|\ADRMARK_STROBES:DDATA_AM_LOCK ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_AM_DETECTOR:I_AM_DETECTOR|DDATA_AM ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.511 ns ; +; 0.553 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[30] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[31] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.511 ns ; +; 0.559 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\RESTORE_TRAP:STEP_CNT[7] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\RESTORE_TRAP:STEP_CNT[7] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.517 ns ; +; 0.562 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_CHECK_RD ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_LOAD_SR ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.520 ns ; +; 0.563 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|cntr_t2e:cntr_b|counter_reg_bit[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|wrptr_g[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.521 ns ; +; 0.569 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_AM_DETECTOR:I_AM_DETECTOR|\MFM_SYNCLOCK:TMP[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_AM_DETECTOR:I_AM_DETECTOR|\MFM_SYNCLOCK:TMP[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.527 ns ; +; 0.569 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|\ADDER:ADDER_DATA[11] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|\ADDER:ADDER_DATA[11] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.527 ns ; +; 0.571 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[7] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|sub_parity9a1 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.529 ns ; +; 0.572 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_RD_ADR ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_VERIFY_AM ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.530 ns ; +; 0.572 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|SHIFT_REG[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|SHIFT_REG[5] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.530 ns ; +; 0.573 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|cntr_t2e:cntr_b|counter_reg_bit[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|rdptr_b[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.531 ns ; +; 0.577 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_kkd:rs_dgwp|dffpipe_jd9:dffpipe12|dffe14a[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|rs_dgwp_reg[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.535 ns ; +; 0.580 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|counter7a[8] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|sub_parity6a2 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.538 ns ; +; 0.582 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|parity5 ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|counter7a[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.540 ns ; +; 0.584 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|parity5 ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|counter7a[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.542 ns ; +; 0.591 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|WR_CNT[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|WR_CNT[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.549 ns ; +; 0.592 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[8] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|sub_parity9a2 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.550 ns ; +; 0.593 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|counter7a[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|sub_parity6a0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.551 ns ; +; 0.608 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.566 ns ; +; 0.609 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_SET_DRQ_2 ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\CNT_T3BYTES:CNT[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.567 ns ; +; 0.610 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[2] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.568 ns ; +; 0.610 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[2] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.568 ns ; +; 0.614 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|sub_parity9a0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.572 ns ; +; 0.614 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.572 ns ; +; 0.616 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_SET_DRQ_2 ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\CNT_T3BYTES:CNT[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.574 ns ; +; 0.616 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_SET_DRQ_2 ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_CHECK_RD ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.574 ns ; +; 0.625 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[5] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[8] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.583 ns ; +; 0.626 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[5] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[7] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.584 ns ; +; 0.627 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[5] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[6] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.585 ns ; +; 0.667 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[23] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[24] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.625 ns ; +; 0.668 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\CLK_MASK:MASK_SHFT[8] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\CLK_MASK:MASK_SHFT[9] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.626 ns ; +; 0.669 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\CLK_MASK:MASK_SHFT[14] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\CLK_MASK:MASK_SHFT[15] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.627 ns ; +; 0.670 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[5] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.628 ns ; +; 0.670 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\CLK_MASK:MASK_SHFT[12] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\CLK_MASK:MASK_SHFT[13] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.628 ns ; +; 0.670 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[25] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[26] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.628 ns ; +; 0.670 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[26] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[27] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.628 ns ; +; 0.670 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[27] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[28] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.628 ns ; +; 0.670 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\CLK_MASK:MASK_SHFT[21] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\CLK_MASK:MASK_SHFT[22] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.628 ns ; +; 0.670 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\CLK_MASK:MASK_SHFT[22] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\CLK_MASK:MASK_SHFT[23] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.628 ns ; +; 0.671 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|sub_parity9a0 ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|parity8 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.629 ns ; +; 0.671 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\CLK_MASK:MASK_SHFT[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\CLK_MASK:MASK_SHFT[7] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.629 ns ; +; 0.671 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\CLK_MASK:MASK_SHFT[10] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\CLK_MASK:MASK_SHFT[11] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.629 ns ; +; 0.671 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\CLK_MASK:MASK_SHFT[16] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\CLK_MASK:MASK_SHFT[17] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.629 ns ; +; 0.671 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|TRACKMEM[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|SECTOR_REG[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.629 ns ; +; 0.671 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|sub_parity6a0 ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|parity5 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.629 ns ; +; 0.672 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\CLK_MASK:MASK_SHFT[7] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\CLK_MASK:MASK_SHFT[8] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.630 ns ; +; 0.672 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\CLK_MASK:MASK_SHFT[13] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|\CLK_MASK:MASK_SHFT[14] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.630 ns ; +; 0.672 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[24] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[25] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.630 ns ; +; 0.673 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[29] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[30] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.631 ns ; +; 0.675 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_kkd:rs_dgwp|dffpipe_jd9:dffpipe12|dffe13a[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_kkd:rs_dgwp|dffpipe_jd9:dffpipe12|dffe14a[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.633 ns ; +; 0.677 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_jkd:ws_dgrp|dffpipe_id9:dffpipe17|dffe18a[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_jkd:ws_dgrp|dffpipe_id9:dffpipe17|dffe19a[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.635 ns ; +; 0.677 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_jkd:ws_dgrp|dffpipe_id9:dffpipe17|dffe18a[5] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_jkd:ws_dgrp|dffpipe_id9:dffpipe17|dffe19a[5] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.635 ns ; +; 0.677 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.635 ns ; +; 0.678 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|cntr_t2e:cntr_b|counter_reg_bit[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|wrptr_g[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.636 ns ; +; 0.678 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_jkd:ws_dgrp|dffpipe_id9:dffpipe17|dffe18a[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_jkd:ws_dgrp|dffpipe_id9:dffpipe17|dffe19a[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.636 ns ; +; 0.678 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[15] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[16] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.636 ns ; +; 0.678 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_STATE.FCF_T1 ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_STATE.FCF_T2 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.636 ns ; +; 0.678 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_kkd:rs_dgwp|dffpipe_jd9:dffpipe12|dffe13a[8] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_kkd:rs_dgwp|dffpipe_jd9:dffpipe12|dffe14a[8] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.636 ns ; +; 0.679 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_kkd:rs_dgwp|dffpipe_jd9:dffpipe12|dffe13a[5] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_kkd:rs_dgwp|dffpipe_jd9:dffpipe12|dffe14a[5] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.637 ns ; +; 0.680 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_jkd:ws_dgrp|dffpipe_id9:dffpipe17|dffe19a[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|ws_dgrp_reg[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.041 ns ; 0.639 ns ; +; 0.680 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_kkd:rs_dgwp|dffpipe_jd9:dffpipe12|dffe13a[6] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_kkd:rs_dgwp|dffpipe_jd9:dffpipe12|dffe14a[6] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.638 ns ; +; 0.680 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_STATE.FCF_T3 ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_STATE.FCF_T6 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.638 ns ; +; 0.681 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[14] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_TRANSCEIVER:I_TRANSCEIVER|AM_SHFT[15] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.639 ns ; +; 0.683 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_AM_DETECTOR:I_AM_DETECTOR|SHIFT[14] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_AM_DETECTOR:I_AM_DETECTOR|SHIFT[15] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.641 ns ; +; 0.683 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_AM_DETECTOR:I_AM_DETECTOR|SHIFT[5] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_AM_DETECTOR:I_AM_DETECTOR|SHIFT[6] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.641 ns ; +; 0.689 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|rs_dgwp_reg[2] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|dffpipe_gd9:rs_bwp|dffe15a[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.647 ns ; +; 0.689 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|\CNT_T3BYTES:CNT[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_LOAD_SR ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.647 ns ; +; 0.690 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|rs_dgwp_reg[2] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|dffpipe_gd9:rs_bwp|dffe15a[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.041 ns ; 0.649 ns ; +; 0.690 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_LOAD_DATA_2 ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_SET_DRQ_2 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.648 ns ; +; 0.690 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_SHIFT_ADR ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.T3_LOAD_DATA_2 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.648 ns ; +; 0.690 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_AM_DETECTOR:I_AM_DETECTOR|SHIFT[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_AM_DETECTOR:I_AM_DETECTOR|SHIFT[5] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.648 ns ; +; 0.691 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_AM_DETECTOR:I_AM_DETECTOR|SHIFT[8] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_AM_DETECTOR:I_AM_DETECTOR|SHIFT[9] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.649 ns ; +; 0.693 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|rs_dgwp_reg[2] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|dffpipe_gd9:rs_bwp|dffe15a[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.041 ns ; 0.652 ns ; +; 0.698 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|wrptr_g[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|ram_block11a0~porta_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; 0.330 ns ; 1.028 ns ; +; 0.699 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|wrptr_g[7] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|delayed_wrptr_g[5] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.657 ns ; +; 0.700 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|TRACKMEM[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_REGISTERS:I_REGISTERS|SECTOR_REG[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.658 ns ; +; 0.701 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|wrptr_g[5] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.659 ns ; +; 0.701 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CRC_LOGIC:I_CRC_LOGIC|CRC_SHIFT[8] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CRC_LOGIC:I_CRC_LOGIC|CRC_SHIFT[9] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.659 ns ; +; 0.701 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|counter7a[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|sub_parity6a1 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.659 ns ; +; 0.704 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|sub_parity9a1 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.662 ns ; +; 0.704 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_kkd:rs_dgwp|dffpipe_jd9:dffpipe12|dffe13a[4] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|alt_synch_pipe_kkd:rs_dgwp|dffpipe_jd9:dffpipe12|dffe14a[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.662 ns ; +; 0.706 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|HISTORY_REG[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|HISTORY_REG[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.664 ns ; +; 0.708 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_AM_DETECTOR:I_AM_DETECTOR|SHIFT[7] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_AM_DETECTOR:I_AM_DETECTOR|SHIFT[8] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.666 ns ; +; 0.711 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|cntr_t2e:cntr_b|counter_reg_bit[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|rdptr_b[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.669 ns ; +; 0.712 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_jkd:ws_dgrp|dffpipe_id9:dffpipe17|dffe18a[8] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_jkd:ws_dgrp|dffpipe_id9:dffpipe17|dffe19a[8] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.043 ns ; 0.669 ns ; +; 0.712 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|counter7a[0] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|sub_parity6a0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.670 ns ; +; 0.714 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|wrptr_g[8] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|delayed_wrptr_g[6] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.041 ns ; 0.673 ns ; +; 0.715 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_jkd:ws_dgrp|dffpipe_id9:dffpipe17|dffe19a[3] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|ws_dgrp_reg[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.673 ns ; +; 0.715 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|alt_synch_pipe_jkd:ws_dgrp|dffpipe_id9:dffpipe17|dffe19a[2] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|ws_dgrp_reg[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.673 ns ; +; 0.720 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CRC_PRES ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CRC_LOGIC:I_CRC_LOGIC|CRC_SHIFT[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.678 ns ; +; 0.724 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[1] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|sub_parity9a0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.682 ns ; +; 0.726 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|wrptr_g[7] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|altsyncram_bi31:fifo_ram|ram_block11a0~porta_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; 0.330 ns ; 1.056 ns ; +; 0.726 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|wrptr_g[10] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|delayed_wrptr_g[8] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.041 ns ; 0.685 ns ; +; 0.726 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|a_graycounter_j47:rdptr_g1p|counter7a[8] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo1:WRF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_3fh1:auto_generated|rdptr_g[8] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.684 ns ; +; 0.728 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_fic:wrptr_g1p|counter10a[2] ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|wrptr_g[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] ; 0.000 ns ; -0.042 ns ; 0.686 ns ; +; Timing analysis restricted to 200 rows. ; To change the limit use Settings (Assignments menu) ; ; ; ; ; ; ; ++-----------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+----------------------------+----------------------------+--------------------------+ + + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Clock Hold: 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2]' ; ++-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+----------------------------+----------------------------+--------------------------+ +; Minimum Slack ; From ; To ; From Clock ; To Clock ; Required Hold Relationship ; Required Shortest P2P Time ; Actual Shortest P2P Time ; ++-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+----------------------------+----------------------------+--------------------------+ +; -0.454 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 0.460 ns ; +; -0.454 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[5] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[5] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 0.460 ns ; +; -0.454 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[4] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 0.460 ns ; +; -0.454 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[3] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 0.460 ns ; +; -0.454 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[2] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 0.460 ns ; +; -0.454 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[1] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 0.460 ns ; +; -0.454 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[0] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 0.460 ns ; +; -0.454 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|rd_ptr_lsb ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|rd_ptr_lsb ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 0.460 ns ; +; -0.454 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|DISP_ON ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|DISP_ON ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 0.460 ns ; +; -0.454 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSYNC_I[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSYNC_I[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 0.460 ns ; +; -0.454 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VSYNC_I[1] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VSYNC_I[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 0.460 ns ; +; -0.454 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VSYNC_I[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VSYNC_I[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 0.460 ns ; +; -0.454 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|SUB_PIXEL_CNT[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|SUB_PIXEL_CNT[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 0.460 ns ; +; -0.454 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDTRON ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDTRON ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 0.460 ns ; +; -0.454 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a7 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a7 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 0.460 ns ; +; -0.454 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a1 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a1 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 0.460 ns ; +; -0.454 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a4 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a4 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 0.460 ns ; +; -0.454 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a5 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a5 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 0.460 ns ; +; -0.454 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a8 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a8 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 0.460 ns ; +; -0.454 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a0 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 0.460 ns ; +; -0.454 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a2 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a2 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 0.460 ns ; +; -0.454 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a6 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a6 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 0.460 ns ; +; -0.454 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a9 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a9 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 0.460 ns ; +; -0.454 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a3 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a3 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 0.460 ns ; +; -0.454 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 0.460 ns ; +; -0.454 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLK13M ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLK13M ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.531 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[45] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe29 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.912 ns ; 1.443 ns ; +; 0.536 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VSYNC ; altddio_out3:inst5|altddio_out:altddio_out_component|ddio_out_31f:auto_generated|ddio_outa[0]~DFFHI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 2.403 ns ; 2.939 ns ; +; 0.538 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[0] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe48 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.912 ns ; 1.450 ns ; +; 0.538 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[0] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe28 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.912 ns ; 1.450 ns ; +; 0.541 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[0] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe30 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.912 ns ; 1.453 ns ; +; 0.551 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[1] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[33] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.908 ns ; 1.459 ns ; +; 0.556 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[62] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~porta_datain_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.947 ns ; 1.503 ns ; +; 0.557 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[35] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~porta_datain_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.960 ns ; 1.517 ns ; +; 0.559 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[19] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[35] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.912 ns ; 1.471 ns ; +; 0.559 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|SYNC_PIX2 ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FIFO_RDE ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.935 ns ; 1.494 ns ; +; 0.560 ns ; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|q_b[5] ; Video:Fredi_Aschwanden|lpm_ff3:inst47|lpm_ff:lpm_ff_component|dffs[23] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.583 ns ; 1.143 ns ; +; 0.560 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[11] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[11] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.916 ns ; 1.476 ns ; +; 0.561 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr1|lpm_shiftreg:lpm_shiftreg_component|dffs[9] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.917 ns ; 1.478 ns ; +; 0.564 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[11] ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[11] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.570 ns ; 1.134 ns ; +; 0.567 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[79] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~porta_datain_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.947 ns ; 1.514 ns ; +; 0.570 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[12] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[13] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.916 ns ; 1.486 ns ; +; 0.573 ns ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe16 ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|external_latency_ffsa[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.905 ns ; 1.478 ns ; +; 0.576 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|sub_parity7a[1] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|parity6 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.929 ns ; 1.505 ns ; +; 0.578 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[19] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[19] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.912 ns ; 1.490 ns ; +; 0.579 ns ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe29 ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|external_latency_ffsa[6] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 1.493 ns ; +; 0.580 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_pmb:wr_ptr|counter_reg_bit[4] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~porta_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 1.284 ns ; 1.864 ns ; +; 0.583 ns ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe48 ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|external_latency_ffsa[23] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.919 ns ; 1.502 ns ; +; 0.583 ns ; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_GREEN|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|q_b[3] ; Video:Fredi_Aschwanden|lpm_ff3:inst47|lpm_ff:lpm_ff_component|dffs[13] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.584 ns ; 1.167 ns ; +; 0.583 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[67] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe8 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.911 ns ; 1.494 ns ; +; 0.584 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[93] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_datain_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.967 ns ; 1.551 ns ; +; 0.585 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[67] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.911 ns ; 1.496 ns ; +; 0.586 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[27] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr6|lpm_shiftreg:lpm_shiftreg_component|dffs[11] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 1.500 ns ; +; 0.588 ns ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe49 ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|external_latency_ffsa[23] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.916 ns ; 1.504 ns ; +; 0.589 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe1a[2] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[11] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.906 ns ; 1.495 ns ; +; 0.589 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst9|lpm_ff:lpm_ff_component|dffs[10] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe23 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.909 ns ; 1.498 ns ; +; 0.590 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr5|lpm_shiftreg:lpm_shiftreg_component|dffs[3] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr5|lpm_shiftreg:lpm_shiftreg_component|dffs[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 1.504 ns ; +; 0.591 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_pmb:wr_ptr|counter_reg_bit[1] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~porta_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 1.284 ns ; 1.875 ns ; +; 0.592 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe1a[2] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[15] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.915 ns ; 1.507 ns ; +; 0.592 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDO_ON ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDTRON ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.929 ns ; 1.521 ns ; +; 0.597 ns ; Video:Fredi_Aschwanden|lpm_ff3:inst49|lpm_ff:lpm_ff_component|dffs[15] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe32 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 1.511 ns ; +; 0.600 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[18] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[50] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.917 ns ; 1.517 ns ; +; 0.600 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[82] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe6 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.924 ns ; 1.524 ns ; +; 0.600 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[0] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.921 ns ; 1.521 ns ; +; 0.600 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_pmb:wr_ptr|counter_reg_bit[5] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~porta_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 1.282 ns ; 1.882 ns ; +; 0.601 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[55] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[87] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.912 ns ; 1.513 ns ; +; 0.601 ns ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe16 ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|external_latency_ffsa[7] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.926 ns ; 1.527 ns ; +; 0.604 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[48] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~porta_datain_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.947 ns ; 1.551 ns ; +; 0.608 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[1] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe22 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.916 ns ; 1.524 ns ; +; 0.608 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[5] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[6] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 1.522 ns ; +; 0.609 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSYNC ; altddio_out3:inst6|altddio_out:altddio_out_component|ddio_out_31f:auto_generated|ddio_outa[0]~DFFHI ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 2.401 ns ; 3.010 ns ; +; 0.610 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_pmb:wr_ptr|counter_reg_bit[4] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 1.284 ns ; 1.894 ns ; +; 0.611 ns ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe9 ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|external_latency_ffsa[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.917 ns ; 1.528 ns ; +; 0.613 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[67] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr3|lpm_shiftreg:lpm_shiftreg_component|dffs[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 1.527 ns ; +; 0.613 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr5|lpm_shiftreg:lpm_shiftreg_component|dffs[7] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.917 ns ; 1.530 ns ; +; 0.613 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[125] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_datain_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.967 ns ; 1.580 ns ; +; 0.614 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe1a[2] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[6] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.912 ns ; 1.526 ns ; +; 0.614 ns ; Video:Fredi_Aschwanden|lpm_ff4:inst10|lpm_ff:lpm_ff_component|dffs[3] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe15 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.912 ns ; 1.526 ns ; +; 0.614 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr3|lpm_shiftreg:lpm_shiftreg_component|dffs[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.917 ns ; 1.531 ns ; +; 0.614 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[36] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_datain_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.947 ns ; 1.561 ns ; +; 0.614 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr3|lpm_shiftreg:lpm_shiftreg_component|dffs[14] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.917 ns ; 1.531 ns ; +; 0.617 ns ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe13 ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|external_latency_ffsa[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.917 ns ; 1.534 ns ; +; 0.618 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[16] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~porta_datain_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.962 ns ; 1.580 ns ; +; 0.619 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.921 ns ; 1.540 ns ; +; 0.620 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[5] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.921 ns ; 1.541 ns ; +; 0.620 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[6] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[7] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 1.534 ns ; +; 0.620 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr3|lpm_shiftreg:lpm_shiftreg_component|dffs[10] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.921 ns ; 1.541 ns ; +; 0.622 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[26] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[42] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.920 ns ; 1.542 ns ; +; 0.622 ns ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe12 ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|external_latency_ffsa[5] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.917 ns ; 1.539 ns ; +; 0.622 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[9] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.924 ns ; 1.546 ns ; +; 0.622 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[88] ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[88] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.597 ns ; 1.219 ns ; +; 0.622 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLUT_MUX_AV[1][0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLUT_MUX_ADR[0] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.906 ns ; 1.528 ns ; +; 0.623 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[38] ; Video:Fredi_Aschwanden|lpm_ff4:inst10|lpm_ff:lpm_ff_component|dffs[6] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 1.537 ns ; +; 0.623 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[6] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.921 ns ; 1.544 ns ; +; 0.623 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_pmb:wr_ptr|counter_reg_bit[4] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~porta_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 1.283 ns ; 1.906 ns ; +; 0.626 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.921 ns ; 1.547 ns ; +; 0.626 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[8] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.924 ns ; 1.550 ns ; +; 0.626 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[11] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.924 ns ; 1.550 ns ; +; 0.627 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.921 ns ; 1.548 ns ; +; 0.627 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[10] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.924 ns ; 1.551 ns ; +; 0.627 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLUT_MUX_ADR[3] ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe1a[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.917 ns ; 1.544 ns ; +; 0.628 ns ; Video:Fredi_Aschwanden|lpm_ff3:inst46|lpm_ff:lpm_ff_component|dffs[20] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe42 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.915 ns ; 1.543 ns ; +; 0.628 ns ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe15 ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|external_latency_ffsa[6] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.915 ns ; 1.543 ns ; +; 0.628 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_pmb:wr_ptr|counter_reg_bit[1] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 1.284 ns ; 1.912 ns ; +; 0.628 ns ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe12 ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|external_latency_ffsa[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.917 ns ; 1.545 ns ; +; 0.628 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[20] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[36] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.913 ns ; 1.541 ns ; +; 0.629 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.921 ns ; 1.550 ns ; +; 0.629 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr3|lpm_shiftreg:lpm_shiftreg_component|dffs[9] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.921 ns ; 1.550 ns ; +; 0.629 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[14] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.924 ns ; 1.553 ns ; +; 0.630 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr1|lpm_shiftreg:lpm_shiftreg_component|dffs[3] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr1|lpm_shiftreg:lpm_shiftreg_component|dffs[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 1.544 ns ; +; 0.630 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[7] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.924 ns ; 1.554 ns ; +; 0.631 ns ; Video:Fredi_Aschwanden|lpm_ff3:inst46|lpm_ff:lpm_ff_component|dffs[18] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe38 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 1.545 ns ; +; 0.632 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[96] ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[96] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.588 ns ; 1.220 ns ; +; 0.633 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[54] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[86] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.913 ns ; 1.546 ns ; +; 0.633 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|RAND[5] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|RAND[6] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.916 ns ; 1.549 ns ; +; 0.636 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[43] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe25 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.909 ns ; 1.545 ns ; +; 0.637 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[117] ; Video:Fredi_Aschwanden|lpm_ff1:inst9|lpm_ff:lpm_ff_component|dffs[21] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 1.551 ns ; +; 0.637 ns ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe33 ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|external_latency_ffsa[7] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 1.551 ns ; +; 0.638 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[5] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[37] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.917 ns ; 1.555 ns ; +; 0.638 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[25] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr6|lpm_shiftreg:lpm_shiftreg_component|dffs[9] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.911 ns ; 1.549 ns ; +; 0.638 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[71] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[103] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 1.552 ns ; +; 0.639 ns ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe39 ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|external_latency_ffsa[18] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.917 ns ; 1.556 ns ; +; 0.639 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr1|lpm_shiftreg:lpm_shiftreg_component|dffs[14] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.916 ns ; 1.555 ns ; +; 0.641 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[16] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[16] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.917 ns ; 1.558 ns ; +; 0.641 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[101] ; Video:Fredi_Aschwanden|lpm_ff1:inst9|lpm_ff:lpm_ff_component|dffs[5] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 1.555 ns ; +; 0.642 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[13] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.916 ns ; 1.558 ns ; +; 0.643 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[111] ; Video:Fredi_Aschwanden|lpm_ff1:inst9|lpm_ff:lpm_ff_component|dffs[15] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 1.557 ns ; +; 0.644 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe30 ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[14] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 1.558 ns ; +; 0.644 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[124] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_datain_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.967 ns ; 1.611 ns ; +; 0.645 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe1a[2] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[9] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.912 ns ; 1.557 ns ; +; 0.646 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[75] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[107] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 1.560 ns ; +; 0.646 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[8] ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[8] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.586 ns ; 1.232 ns ; +; 0.647 ns ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe20 ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|external_latency_ffsa[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 1.561 ns ; +; 0.647 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.910 ns ; 1.557 ns ; +; 0.647 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[5] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.910 ns ; 1.557 ns ; +; 0.647 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[9] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.910 ns ; 1.557 ns ; +; 0.647 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[8] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.910 ns ; 1.557 ns ; +; 0.647 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[10] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.910 ns ; 1.557 ns ; +; 0.647 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[11] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.910 ns ; 1.557 ns ; +; 0.647 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[6] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.910 ns ; 1.557 ns ; +; 0.647 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[7] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.910 ns ; 1.557 ns ; +; 0.647 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.910 ns ; 1.557 ns ; +; 0.647 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[3] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.910 ns ; 1.557 ns ; +; 0.647 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.910 ns ; 1.557 ns ; +; 0.648 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe1a[2] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[7] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.907 ns ; 1.555 ns ; +; 0.648 ns ; Video:Fredi_Aschwanden|altdpram0:ST_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated|q_b[1] ; Video:Fredi_Aschwanden|lpm_ff3:inst52|lpm_ff:lpm_ff_component|dffs[6] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.577 ns ; 1.225 ns ; +; 0.648 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[114] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.912 ns ; 1.560 ns ; +; 0.648 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr3|lpm_shiftreg:lpm_shiftreg_component|dffs[10] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr3|lpm_shiftreg:lpm_shiftreg_component|dffs[11] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.907 ns ; 1.555 ns ; +; 0.648 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[103] ; Video:Fredi_Aschwanden|lpm_ff1:inst9|lpm_ff:lpm_ff_component|dffs[7] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 1.562 ns ; +; 0.649 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[49] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[81] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.917 ns ; 1.566 ns ; +; 0.649 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[1] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe42 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.918 ns ; 1.567 ns ; +; 0.649 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[119] ; Video:Fredi_Aschwanden|lpm_ff1:inst9|lpm_ff:lpm_ff_component|dffs[23] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 1.563 ns ; +; 0.650 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[1] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe26 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.918 ns ; 1.568 ns ; +; 0.650 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[107] ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[107] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.570 ns ; 1.220 ns ; +; 0.651 ns ; Video:Fredi_Aschwanden|altdpram0:ST_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated|q_b[0] ; Video:Fredi_Aschwanden|lpm_ff3:inst52|lpm_ff:lpm_ff_component|dffs[5] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.577 ns ; 1.228 ns ; +; 0.651 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VSYNC ; altddio_out3:inst5|altddio_out:altddio_out_component|ddio_out_31f:auto_generated|ddio_outa[0]~DFFLO ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 2.404 ns ; 3.055 ns ; +; 0.652 ns ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe40 ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|external_latency_ffsa[19] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.924 ns ; 1.576 ns ; +; 0.653 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[77] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe28 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 1.567 ns ; +; 0.653 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr7|lpm_shiftreg:lpm_shiftreg_component|dffs[5] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr7|lpm_shiftreg:lpm_shiftreg_component|dffs[6] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 1.567 ns ; +; 0.655 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[19] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_datain_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.947 ns ; 1.602 ns ; +; 0.656 ns ; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|q_b[1] ; Video:Fredi_Aschwanden|lpm_ff3:inst47|lpm_ff:lpm_ff_component|dffs[19] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.585 ns ; 1.241 ns ; +; 0.656 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_pmb:wr_ptr|counter_reg_bit[4] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~porta_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 1.282 ns ; 1.938 ns ; +; 0.657 ns ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe41 ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|external_latency_ffsa[19] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.924 ns ; 1.581 ns ; +; 0.657 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[9] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[10] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 1.571 ns ; +; 0.658 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[46] ; Video:Fredi_Aschwanden|lpm_ff4:inst10|lpm_ff:lpm_ff_component|dffs[14] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.905 ns ; 1.563 ns ; +; 0.658 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr5|lpm_shiftreg:lpm_shiftreg_component|dffs[12] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr5|lpm_shiftreg:lpm_shiftreg_component|dffs[13] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 1.572 ns ; +; 0.659 ns ; Video:Fredi_Aschwanden|lpm_ff4:inst10|lpm_ff:lpm_ff_component|dffs[8] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe29 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.906 ns ; 1.565 ns ; +; 0.660 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[28] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_datain_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.967 ns ; 1.627 ns ; +; 0.661 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[30] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~porta_datain_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.947 ns ; 1.608 ns ; +; 0.661 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[13] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[14] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 1.575 ns ; +; 0.662 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLUT_MUX_ADR[1] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe22 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.915 ns ; 1.577 ns ; +; 0.662 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[100] ; Video:Fredi_Aschwanden|lpm_ff1:inst9|lpm_ff:lpm_ff_component|dffs[4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.912 ns ; 1.574 ns ; +; 0.662 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr1|lpm_shiftreg:lpm_shiftreg_component|dffs[12] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr1|lpm_shiftreg:lpm_shiftreg_component|dffs[13] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 1.576 ns ; +; 0.662 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VERZ[0][3] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VERZ[0][4] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.918 ns ; 1.580 ns ; +; 0.663 ns ; Video:Fredi_Aschwanden|lpm_ff3:inst47|lpm_ff:lpm_ff_component|dffs[12] ; Video:Fredi_Aschwanden|lpm_ff3:inst46|lpm_ff:lpm_ff_component|dffs[12] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.916 ns ; 1.579 ns ; +; 0.663 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[44] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_datain_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.947 ns ; 1.610 ns ; +; 0.664 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[13] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe29 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.911 ns ; 1.575 ns ; +; 0.664 ns ; Video:Fredi_Aschwanden|lpm_ff3:inst52|lpm_ff:lpm_ff_component|dffs[21] ; Video:Fredi_Aschwanden|lpm_ff3:inst49|lpm_ff:lpm_ff_component|dffs[21] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.930 ns ; 1.594 ns ; +; 0.664 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[13] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[45] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.906 ns ; 1.570 ns ; +; 0.664 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[1] ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe9 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.920 ns ; 1.584 ns ; +; 0.665 ns ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe37 ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|external_latency_ffsa[17] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.917 ns ; 1.582 ns ; +; 0.665 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLUT_MUX_ADR[1] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe33 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 1.579 ns ; +; 0.665 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[8] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[40] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.913 ns ; 1.578 ns ; +; 0.666 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe4 ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 1.580 ns ; +; 0.666 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr4|lpm_shiftreg:lpm_shiftreg_component|dffs[0] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr4|lpm_shiftreg:lpm_shiftreg_component|dffs[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 1.580 ns ; +; 0.667 ns ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe24 ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|external_latency_ffsa[11] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 1.581 ns ; +; 0.667 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[109] ; Video:Fredi_Aschwanden|lpm_ff1:inst9|lpm_ff:lpm_ff_component|dffs[13] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 1.581 ns ; +; 0.667 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[1] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[1] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.920 ns ; 1.587 ns ; +; 0.667 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[0] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[16] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.913 ns ; 1.580 ns ; +; 0.667 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[12] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_datain_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.967 ns ; 1.634 ns ; +; 0.669 ns ; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|q_b[3] ; Video:Fredi_Aschwanden|lpm_ff3:inst47|lpm_ff:lpm_ff_component|dffs[21] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.585 ns ; 1.254 ns ; +; 0.669 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[106] ; Video:Fredi_Aschwanden|lpm_ff1:inst9|lpm_ff:lpm_ff_component|dffs[10] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.913 ns ; 1.582 ns ; +; 0.669 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_pmb:wr_ptr|counter_reg_bit[6] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~porta_address_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 1.284 ns ; 1.953 ns ; +; 0.669 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[117] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_datain_reg0 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.967 ns ; 1.636 ns ; +; 0.669 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[5] ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe25 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 1.583 ns ; +; 0.670 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[33] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[65] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.914 ns ; 1.584 ns ; +; 0.670 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[3] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[35] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.917 ns ; 1.587 ns ; +; 0.671 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[17] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[49] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.915 ns ; 1.586 ns ; +; 0.671 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[99] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe8 ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] ; 0.000 ns ; 0.908 ns ; 1.579 ns ; +; Timing analysis restricted to 200 rows. ; To change the limit use Settings (Assignments menu) ; ; ; ; ; ; ; ++-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+----------------------------+----------------------------+--------------------------+ + + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Clock Hold: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0]' ; ++-----------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+----------------------------+----------------------------+--------------------------+ +; Minimum Slack ; From ; To ; From Clock ; To Clock ; Required Hold Relationship ; Required Shortest P2P Time ; Actual Shortest P2P Time ; ++-----------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+----------------------------+----------------------------+--------------------------+ +; 0.502 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[6] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[6] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[7] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[7] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_REFRESH_SIG[0] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_REFRESH_SIG[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_REFRESH_SIG[2] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_REFRESH_SIG[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_REFRESH_SIG[1] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_REFRESH_SIG[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[0] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[4] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[3] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[5] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[5] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[1] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[2] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[9] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[9] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[8] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FIFO_AC ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FIFO_AC ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FIFO_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FIFO_REQ ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.549 ns ; Video:Fredi_Aschwanden|lpm_shiftreg6:inst92|lpm_shiftreg:lpm_shiftreg_component|dffs[4] ; Video:Fredi_Aschwanden|lpm_shiftreg6:inst92|lpm_shiftreg:lpm_shiftreg_component|dffs[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.507 ns ; +; 0.549 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[11] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[75] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.507 ns ; +; 0.549 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[3] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[99] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.507 ns ; +; 0.549 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[1] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[65] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.507 ns ; +; 0.549 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[17] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[81] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.507 ns ; +; 0.549 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe23a[8] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe24a[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.507 ns ; +; 0.549 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe23a[9] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe24a[9] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.507 ns ; +; 0.549 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe24a[2] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe25a[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.507 ns ; +; 0.549 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe25a[5] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|ws_dgrp_reg[5] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.507 ns ; +; 0.550 ns ; Video:Fredi_Aschwanden|lpm_shiftreg6:inst92|lpm_shiftreg:lpm_shiftreg_component|dffs[2] ; Video:Fredi_Aschwanden|lpm_shiftreg6:inst92|lpm_shiftreg:lpm_shiftreg_component|dffs[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.508 ns ; +; 0.550 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[23] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[87] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.508 ns ; +; 0.550 ns ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[6] ; Video:Fredi_Aschwanden|lpm_ff6:inst94|lpm_ff:lpm_ff_component|dffs[6] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.508 ns ; +; 0.550 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[9] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[105] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.508 ns ; +; 0.550 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[14] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[110] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.508 ns ; +; 0.550 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[30] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[94] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.508 ns ; +; 0.550 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe23a[7] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe24a[7] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.508 ns ; +; 0.550 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe23a[5] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe24a[5] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.508 ns ; +; 0.550 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_R5 ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_R6 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.508 ns ; +; 0.550 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe24a[4] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe25a[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.508 ns ; +; 0.550 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe24a[1] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe25a[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.508 ns ; +; 0.551 ns ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[5] ; Video:Fredi_Aschwanden|lpm_ff6:inst94|lpm_ff:lpm_ff_component|dffs[5] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.509 ns ; +; 0.551 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[28] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[124] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.509 ns ; +; 0.551 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[27] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[123] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.509 ns ; +; 0.551 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[2] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[66] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.509 ns ; +; 0.551 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[30] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[126] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.509 ns ; +; 0.551 ns ; Video:Fredi_Aschwanden|lpm_shiftreg4:inst26|lpm_shiftreg:lpm_shiftreg_component|dffs[4] ; Video:Fredi_Aschwanden|lpm_shiftreg4:inst26|lpm_shiftreg:lpm_shiftreg_component|dffs[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.509 ns ; +; 0.551 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_R4 ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_R5 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.509 ns ; +; 0.551 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe23a[4] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe24a[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.509 ns ; +; 0.551 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe23a[1] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe24a[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.509 ns ; +; 0.551 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe24a[0] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe25a[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.509 ns ; +; 0.551 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe24a[8] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe25a[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.509 ns ; +; 0.551 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe24a[9] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe25a[9] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.509 ns ; +; 0.551 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe25a[4] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|ws_dgrp_reg[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.509 ns ; +; 0.551 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe25a[7] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|ws_dgrp_reg[7] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.509 ns ; +; 0.551 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_9d9:wraclr|dffe19a[0] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|dffpipe_9d9:wraclr|dffe20a[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.509 ns ; +; 0.552 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[6] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[102] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.510 ns ; +; 0.552 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[22] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[86] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.510 ns ; +; 0.552 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[22] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[118] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.510 ns ; +; 0.552 ns ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[4] ; Video:Fredi_Aschwanden|lpm_ff6:inst94|lpm_ff:lpm_ff_component|dffs[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.510 ns ; +; 0.552 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[3] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[67] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.510 ns ; +; 0.552 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[19] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[83] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.510 ns ; +; 0.552 ns ; Video:Fredi_Aschwanden|lpm_shiftreg4:inst26|lpm_shiftreg:lpm_shiftreg_component|dffs[3] ; Video:Fredi_Aschwanden|lpm_shiftreg4:inst26|lpm_shiftreg:lpm_shiftreg_component|dffs[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.510 ns ; +; 0.552 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_C5 ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_C6 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.510 ns ; +; 0.552 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe23a[6] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe24a[6] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.510 ns ; +; 0.552 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|sub_parity12a0 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|parity11 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.510 ns ; +; 0.553 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[29] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[125] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.511 ns ; +; 0.553 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[28] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[92] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.511 ns ; +; 0.553 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[9] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[73] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.511 ns ; +; 0.553 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[25] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[121] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.511 ns ; +; 0.553 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe23a[0] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe24a[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.511 ns ; +; 0.553 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|MCS[1] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_DDR_SYNC ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.511 ns ; +; 0.554 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[24] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[120] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.512 ns ; +; 0.554 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe24a[6] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe25a[6] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.512 ns ; +; 0.558 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[25] ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[25] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.516 ns ; +; 0.558 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[24] ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[24] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.516 ns ; +; 0.558 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[20] ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[20] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.516 ns ; +; 0.558 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component|dffs[27] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[27] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.516 ns ; +; 0.559 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component|dffs[2] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.517 ns ; +; 0.559 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[10] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[42] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.517 ns ; +; 0.559 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[0] ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.517 ns ; +; 0.559 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[24] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[56] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.517 ns ; +; 0.560 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component|dffs[2] ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.518 ns ; +; 0.560 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[10] ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[10] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.518 ns ; +; 0.560 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[0] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[32] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.518 ns ; +; 0.560 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component|dffs[15] ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[15] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.518 ns ; +; 0.560 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component|dffs[15] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[15] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.518 ns ; +; 0.561 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[7] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[39] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.519 ns ; +; 0.561 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[8] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[40] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.519 ns ; +; 0.562 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component|dffs[27] ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[27] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.520 ns ; +; 0.562 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[7] ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[7] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.520 ns ; +; 0.562 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[8] ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.520 ns ; +; 0.563 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[20] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[52] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.521 ns ; +; 0.563 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[25] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[57] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.521 ns ; +; 0.569 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component|dffs[0] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.527 ns ; +; 0.569 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component|dffs[31] ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[31] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.527 ns ; +; 0.569 ns ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[30] ; Video:Fredi_Aschwanden|lpm_ff6:inst94|lpm_ff:lpm_ff_component|dffs[30] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.527 ns ; +; 0.570 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component|dffs[8] ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.528 ns ; +; 0.570 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component|dffs[16] ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[16] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.528 ns ; +; 0.571 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component|dffs[6] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[6] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.529 ns ; +; 0.571 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component|dffs[10] ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[10] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.529 ns ; +; 0.571 ns ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[19] ; Video:Fredi_Aschwanden|lpm_ff6:inst94|lpm_ff:lpm_ff_component|dffs[19] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.529 ns ; +; 0.572 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_ADR_CNT[22] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VIDEO_ADR_CNT[22] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.530 ns ; +; 0.573 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component|dffs[11] ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[11] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.531 ns ; +; 0.573 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[3] ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.531 ns ; +; 0.573 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component|dffs[17] ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[17] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.531 ns ; +; 0.573 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component|dffs[30] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[30] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.531 ns ; +; 0.573 ns ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[84] ; Video:Fredi_Aschwanden|lpm_ff6:inst94|lpm_ff:lpm_ff_component|dffs[84] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.531 ns ; +; 0.573 ns ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[95] ; Video:Fredi_Aschwanden|lpm_ff6:inst94|lpm_ff:lpm_ff_component|dffs[95] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.531 ns ; +; 0.573 ns ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[46] ; Video:Fredi_Aschwanden|lpm_ff6:inst94|lpm_ff:lpm_ff_component|dffs[46] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.531 ns ; +; 0.573 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|parity11 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.531 ns ; +; 0.573 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|parity11 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.531 ns ; +; 0.574 ns ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[18] ; Video:Fredi_Aschwanden|lpm_ff6:inst94|lpm_ff:lpm_ff_component|dffs[18] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.532 ns ; +; 0.582 ns ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[70] ; Video:Fredi_Aschwanden|lpm_ff6:inst94|lpm_ff:lpm_ff_component|dffs[70] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.540 ns ; +; 0.583 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_REFRESH_SIG[3] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_R3 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.541 ns ; +; 0.592 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[4] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[5] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.550 ns ; +; 0.593 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[4] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|sub_parity12a1 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.551 ns ; +; 0.595 ns ; Video:Fredi_Aschwanden|lpm_shiftreg6:inst92|lpm_shiftreg:lpm_shiftreg_component|dffs[1] ; Video:Fredi_Aschwanden|lpm_shiftreg6:inst92|lpm_shiftreg:lpm_shiftreg_component|dffs[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.553 ns ; +; 0.601 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[2] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.559 ns ; +; 0.604 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[7] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[9] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.562 ns ; +; 0.605 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[2] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|sub_parity12a0 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.563 ns ; +; 0.605 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[7] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.563 ns ; +; 0.643 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[2] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a3~porta_address_reg0 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; 0.340 ns ; 0.983 ns ; +; 0.647 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[7] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a5~porta_address_reg0 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; 0.332 ns ; 0.979 ns ; +; 0.654 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[1] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a14~porta_address_reg0 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; 0.334 ns ; 0.988 ns ; +; 0.670 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[6] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a0~porta_address_reg0 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; 0.332 ns ; 1.002 ns ; +; 0.671 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_R3 ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_R4 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.629 ns ; +; 0.673 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[5] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a14~porta_address_reg0 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; 0.334 ns ; 1.007 ns ; +; 0.675 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[26] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[90] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.633 ns ; +; 0.676 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_C2 ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_C3 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.634 ns ; +; 0.677 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[13] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[77] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.635 ns ; +; 0.677 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[24] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[88] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.635 ns ; +; 0.678 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[1] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[97] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.636 ns ; +; 0.678 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe23a[2] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe24a[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.636 ns ; +; 0.678 ns ; Video:Fredi_Aschwanden|lpm_shiftreg4:inst26|lpm_shiftreg:lpm_shiftreg_component|dffs[1] ; Video:Fredi_Aschwanden|lpm_shiftreg4:inst26|lpm_shiftreg:lpm_shiftreg_component|dffs[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.636 ns ; +; 0.679 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[21] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[85] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.637 ns ; +; 0.679 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[4] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[100] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.637 ns ; +; 0.679 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe23a[3] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe24a[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.637 ns ; +; 0.679 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe24a[5] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe25a[5] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.637 ns ; +; 0.680 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[29] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[93] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.638 ns ; +; 0.680 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[18] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[114] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.638 ns ; +; 0.680 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|alt_synch_pipe_sld:ws_dgrp|dffpipe_re9:dffpipe22|dffe25a[3] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|ws_dgrp_reg[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.638 ns ; +; 0.681 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[2] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[98] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.639 ns ; +; 0.687 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component|dffs[18] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[18] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.645 ns ; +; 0.687 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component|dffs[1] ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.645 ns ; +; 0.688 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component|dffs[5] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[5] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.646 ns ; +; 0.688 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component|dffs[18] ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[18] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.646 ns ; +; 0.688 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component|dffs[9] ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[9] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.646 ns ; +; 0.688 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[11] ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[11] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.646 ns ; +; 0.688 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component|dffs[9] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[9] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.646 ns ; +; 0.689 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[22] ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[22] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.647 ns ; +; 0.689 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component|dffs[3] ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.647 ns ; +; 0.689 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component|dffs[12] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[12] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.647 ns ; +; 0.689 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[9] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[41] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.647 ns ; +; 0.689 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[17] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[49] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.647 ns ; +; 0.690 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component|dffs[19] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[19] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.648 ns ; +; 0.690 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[12] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[44] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.648 ns ; +; 0.690 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component|dffs[3] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.648 ns ; +; 0.690 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[1] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[33] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.648 ns ; +; 0.690 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[29] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[61] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.648 ns ; +; 0.690 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_C4 ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_T1 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.648 ns ; +; 0.691 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[9] ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[9] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.649 ns ; +; 0.691 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[12] ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[12] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.649 ns ; +; 0.691 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[11] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[43] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.649 ns ; +; 0.691 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component|dffs[1] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.649 ns ; +; 0.691 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[17] ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[17] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.649 ns ; +; 0.692 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[29] ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[29] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.650 ns ; +; 0.692 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component|dffs[19] ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[19] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.650 ns ; +; 0.692 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component|dffs[5] ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[5] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.650 ns ; +; 0.692 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[1] ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.650 ns ; +; 0.692 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[22] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[54] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.650 ns ; +; 0.692 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[27] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[91] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 0.649 ns ; +; 0.692 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_R6 ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_N5 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.650 ns ; +; 0.693 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component|dffs[12] ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[12] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.651 ns ; +; 0.694 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[6] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a14~porta_address_reg0 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; 0.334 ns ; 1.028 ns ; +; 0.695 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[10] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[106] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.039 ns ; 0.656 ns ; +; 0.698 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[27] ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[27] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.656 ns ; +; 0.698 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component|dffs[23] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[23] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.656 ns ; +; 0.698 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[13] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[45] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.656 ns ; +; 0.698 ns ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[77] ; Video:Fredi_Aschwanden|lpm_ff6:inst94|lpm_ff:lpm_ff_component|dffs[77] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.656 ns ; +; 0.698 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[15] ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[15] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.656 ns ; +; 0.698 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[13] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[109] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 0.655 ns ; +; 0.698 ns ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[12] ; Video:Fredi_Aschwanden|lpm_ff6:inst94|lpm_ff:lpm_ff_component|dffs[12] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.656 ns ; +; 0.698 ns ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[27] ; Video:Fredi_Aschwanden|lpm_ff6:inst94|lpm_ff:lpm_ff_component|dffs[27] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.656 ns ; +; 0.698 ns ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[14] ; Video:Fredi_Aschwanden|lpm_ff6:inst94|lpm_ff:lpm_ff_component|dffs[14] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.656 ns ; +; 0.698 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_C4 ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_C5 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.041 ns ; 0.657 ns ; +; 0.699 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[14] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[46] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.657 ns ; +; 0.699 ns ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[78] ; Video:Fredi_Aschwanden|lpm_ff6:inst94|lpm_ff:lpm_ff_component|dffs[78] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.657 ns ; +; 0.700 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst12|lpm_ff:lpm_ff_component|dffs[28] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[28] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.658 ns ; +; 0.700 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[30] ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[30] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.658 ns ; +; 0.700 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[21] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[53] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.658 ns ; +; 0.700 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst20|lpm_ff:lpm_ff_component|dffs[18] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[82] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.658 ns ; +; 0.700 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_T7W ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_T8W ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.658 ns ; +; 0.701 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[14] ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[14] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.659 ns ; +; 0.701 ns ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[15] ; Video:Fredi_Aschwanden|lpm_ff6:inst94|lpm_ff:lpm_ff_component|dffs[15] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.659 ns ; +; 0.701 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_C3 ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_C4 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.659 ns ; +; 0.701 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_T1 ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_R2 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.659 ns ; +; 0.701 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_T4W ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DS_T5W ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.659 ns ; +; 0.703 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[19] ; Video:Fredi_Aschwanden|lpm_ff1:inst4|lpm_ff:lpm_ff_component|dffs[19] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.661 ns ; +; 0.703 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[1] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|sub_parity12a0 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.661 ns ; +; 0.704 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[5] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a5~porta_address_reg0 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; 0.327 ns ; 1.031 ns ; +; 0.705 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[5] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a7~porta_address_reg0 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; 0.341 ns ; 1.046 ns ; +; 0.706 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[6] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|ram_block14a5~porta_address_reg0 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; 0.327 ns ; 1.033 ns ; +; 0.707 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst3|lpm_ff:lpm_ff_component|dffs[19] ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[51] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.665 ns ; +; 0.710 ns ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[0] ; Video:Fredi_Aschwanden|lpm_ff6:inst94|lpm_ff:lpm_ff_component|dffs[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.041 ns ; 0.669 ns ; +; 0.712 ns ; Video:Fredi_Aschwanden|lpm_ff6:inst71|lpm_ff:lpm_ff_component|dffs[40] ; Video:Fredi_Aschwanden|lpm_ff6:inst94|lpm_ff:lpm_ff_component|dffs[40] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 0.669 ns ; +; Timing analysis restricted to 200 rows. ; To change the limit use Settings (Assignments menu) ; ; ; ; ; ; ; ++-----------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+----------------------------+----------------------------+--------------------------+ + + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Clock Hold: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1]' ; ++---------------+----------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+----------------------------+----------------------------+--------------------------+ +; Minimum Slack ; From ; To ; From Clock ; To Clock ; Required Hold Relationship ; Required Shortest P2P Time ; Actual Shortest P2P Time ; ++---------------+----------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+----------------------------+----------------------------+--------------------------+ +; 4.336 ns ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[2] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; -3.787 ns ; -3.829 ns ; 0.507 ns ; +; 4.336 ns ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[8] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; -3.787 ns ; -3.829 ns ; 0.507 ns ; +; 4.336 ns ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[12] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[12] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; -3.787 ns ; -3.829 ns ; 0.507 ns ; +; 4.336 ns ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[27] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[27] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; -3.787 ns ; -3.829 ns ; 0.507 ns ; +; 4.336 ns ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[1] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; -3.787 ns ; -3.829 ns ; 0.507 ns ; +; 4.337 ns ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[3] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; -3.787 ns ; -3.829 ns ; 0.508 ns ; +; 4.337 ns ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[5] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[5] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; -3.787 ns ; -3.829 ns ; 0.508 ns ; +; 4.337 ns ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[21] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[21] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; -3.787 ns ; -3.829 ns ; 0.508 ns ; +; 4.338 ns ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[7] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[7] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; -3.787 ns ; -3.829 ns ; 0.509 ns ; +; 4.338 ns ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[10] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[10] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; -3.787 ns ; -3.829 ns ; 0.509 ns ; +; 4.338 ns ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[23] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[23] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; -3.787 ns ; -3.829 ns ; 0.509 ns ; +; 4.338 ns ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[19] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[19] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; -3.787 ns ; -3.829 ns ; 0.509 ns ; +; 4.338 ns ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[26] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[26] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; -3.787 ns ; -3.829 ns ; 0.509 ns ; +; 4.338 ns ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[22] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[22] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; -3.787 ns ; -3.829 ns ; 0.509 ns ; +; 4.339 ns ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[14] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[14] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; -3.787 ns ; -3.829 ns ; 0.510 ns ; +; 4.339 ns ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[0] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; -3.787 ns ; -3.829 ns ; 0.510 ns ; +; 4.339 ns ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[13] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[13] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; -3.787 ns ; -3.829 ns ; 0.510 ns ; +; 4.339 ns ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[4] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; -3.787 ns ; -3.829 ns ; 0.510 ns ; +; 4.339 ns ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[24] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[24] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; -3.787 ns ; -3.829 ns ; 0.510 ns ; +; 4.339 ns ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[18] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[18] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; -3.787 ns ; -3.829 ns ; 0.510 ns ; +; 4.339 ns ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[17] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[17] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; -3.787 ns ; -3.829 ns ; 0.510 ns ; +; 4.339 ns ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[31] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[31] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; -3.787 ns ; -3.829 ns ; 0.510 ns ; +; 4.340 ns ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[20] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[20] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; -3.787 ns ; -3.829 ns ; 0.511 ns ; +; 4.340 ns ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[11] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[11] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; -3.787 ns ; -3.829 ns ; 0.511 ns ; +; 4.340 ns ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[9] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[9] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; -3.787 ns ; -3.829 ns ; 0.511 ns ; +; 4.340 ns ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[16] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[16] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; -3.787 ns ; -3.829 ns ; 0.511 ns ; +; 4.340 ns ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[15] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[15] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; -3.787 ns ; -3.829 ns ; 0.511 ns ; +; 4.340 ns ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[30] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[30] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; -3.787 ns ; -3.829 ns ; 0.511 ns ; +; 4.465 ns ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[28] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[28] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; -3.787 ns ; -3.829 ns ; 0.636 ns ; +; 4.466 ns ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[29] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[29] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; -3.787 ns ; -3.829 ns ; 0.637 ns ; +; 4.467 ns ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[25] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[25] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; -3.787 ns ; -3.829 ns ; 0.638 ns ; +; 4.468 ns ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[6] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[6] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] ; -3.787 ns ; -3.829 ns ; 0.639 ns ; ++---------------+----------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+----------------------------+----------------------------+--------------------------+ + + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Clock Hold: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2]' ; ++---------------+---------------------------------------------------+-----------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+----------------------------+----------------------------+--------------------------+ +; Minimum Slack ; From ; To ; From Clock ; To Clock ; Required Hold Relationship ; Required Shortest P2P Time ; Actual Shortest P2P Time ; ++---------------+---------------------------------------------------+-----------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+----------------------------+----------------------------+--------------------------+ +; 1.825 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_VDMP[6] ; Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[6] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; -1.262 ns ; -1.317 ns ; 0.508 ns ; +; 1.827 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_VDMP[7] ; Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[7] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; -1.262 ns ; -1.317 ns ; 0.510 ns ; +; 1.953 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_VDMP[4] ; Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; -1.262 ns ; -1.317 ns ; 0.636 ns ; +; 1.954 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_VDMP[5] ; Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[5] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; -1.262 ns ; -1.317 ns ; 0.637 ns ; +; 2.134 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_VDMP[3] ; Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; -1.262 ns ; -1.315 ns ; 0.819 ns ; ++---------------+---------------------------------------------------+-----------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+----------------------------+----------------------------+--------------------------+ + + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Clock Hold: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3]' ; ++-----------------------------------------+------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+----------------------------+----------------------------+--------------------------+ +; Minimum Slack ; From ; To ; From Clock ; To Clock ; Required Hold Relationship ; Required Shortest P2P Time ; Actual Shortest P2P Time ; ++-----------------------------------------+------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+----------------------------+----------------------------+--------------------------+ +; 3.263 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[29] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[29]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.693 ns ; 1.570 ns ; +; 3.273 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[18] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[18]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.693 ns ; 1.580 ns ; +; 3.460 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[18]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.097 ns ; 3.363 ns ; +; 3.511 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[26] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[26]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.693 ns ; 1.818 ns ; +; 3.539 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[30] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[30]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.694 ns ; 1.845 ns ; +; 3.543 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[23] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[23]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.686 ns ; 1.857 ns ; +; 3.548 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[27] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[27]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.688 ns ; 1.860 ns ; +; 3.569 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[17] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[17]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.695 ns ; 1.874 ns ; +; 3.570 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[22] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[22]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.688 ns ; 1.882 ns ; +; 3.573 ns ; Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[4] ; Video:Fredi_Aschwanden|altddio_out0:inst2|altddio_out:altddio_out_component|ddio_out_are:auto_generated|ddio_outa[0]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.578 ns ; -1.667 ns ; 1.906 ns ; +; 3.609 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[29] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[29]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.672 ns ; 1.937 ns ; +; 3.618 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[20] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[20]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.689 ns ; 1.929 ns ; +; 3.637 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[24] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[24]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.685 ns ; 1.952 ns ; +; 3.656 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[21] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[21]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.697 ns ; 1.959 ns ; +; 3.660 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[16] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[16]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.686 ns ; 1.974 ns ; +; 3.674 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[25] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[25]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.691 ns ; 1.983 ns ; +; 3.686 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[18] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[18]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.692 ns ; 1.994 ns ; +; 3.719 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[31] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[31]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.695 ns ; 2.024 ns ; +; 3.721 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[25] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[25]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.691 ns ; 2.030 ns ; +; 3.730 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[27] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[27]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.698 ns ; 2.032 ns ; +; 3.731 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[26]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.097 ns ; 3.634 ns ; +; 3.737 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[24] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[24]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.695 ns ; 2.042 ns ; +; 3.740 ns ; Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[5] ; Video:Fredi_Aschwanden|altddio_out0:inst2|altddio_out:altddio_out_component|ddio_out_are:auto_generated|ddio_outa[1]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.578 ns ; -1.664 ns ; 2.076 ns ; +; 3.745 ns ; Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[3] ; Video:Fredi_Aschwanden|altddio_out0:inst2|altddio_out:altddio_out_component|ddio_out_are:auto_generated|ddio_outa[0]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.578 ns ; -1.668 ns ; 2.077 ns ; +; 3.754 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[28] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[28]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.695 ns ; 2.059 ns ; +; 3.769 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[29]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.097 ns ; 3.672 ns ; +; 3.774 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[20] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[20]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.697 ns ; 2.077 ns ; +; 3.776 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[17] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[17]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.685 ns ; 2.091 ns ; +; 3.777 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[27] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[27]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.698 ns ; 2.079 ns ; +; 3.778 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[26] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[26]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.693 ns ; 2.085 ns ; +; 3.780 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[16] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[16]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.696 ns ; 2.084 ns ; +; 3.781 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[25] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[25]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.684 ns ; 2.097 ns ; +; 3.784 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[24] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[24]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.695 ns ; 2.089 ns ; +; 3.784 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[26] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[26]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.684 ns ; 2.100 ns ; +; 3.786 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[21] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[21]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.689 ns ; 2.097 ns ; +; 3.792 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[17]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.099 ns ; 3.693 ns ; +; 3.794 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[30] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[30]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.692 ns ; 2.102 ns ; +; 3.796 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[19] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[19]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.689 ns ; 2.107 ns ; +; 3.811 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[23] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[23]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.686 ns ; 2.125 ns ; +; 3.814 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[27] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[27]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.688 ns ; 2.126 ns ; +; 3.819 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[20] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[20]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.697 ns ; 2.122 ns ; +; 3.836 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[17] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[17]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.695 ns ; 2.141 ns ; +; 3.838 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[27]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.103 ns ; 3.735 ns ; +; 3.839 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[23]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.101 ns ; 3.738 ns ; +; 3.855 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[31]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.100 ns ; 3.755 ns ; +; 3.866 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[22]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.103 ns ; 3.763 ns ; +; 3.899 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[23] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[23]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.694 ns ; 2.205 ns ; +; 3.902 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[19] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[19]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.699 ns ; 2.203 ns ; +; 3.906 ns ; Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[6] ; Video:Fredi_Aschwanden|altddio_out0:inst2|altddio_out:altddio_out_component|ddio_out_are:auto_generated|ddio_outa[2]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.578 ns ; -1.722 ns ; 2.184 ns ; +; 3.916 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[20]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.104 ns ; 3.812 ns ; +; 3.920 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[28] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[28]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.686 ns ; 2.234 ns ; +; 3.932 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[16] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[16]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.686 ns ; 2.246 ns ; +; 3.933 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[29] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[29]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.613 ns ; 2.320 ns ; +; 3.935 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[22] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[22]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.696 ns ; 2.239 ns ; +; 3.936 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[31]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.099 ns ; 3.837 ns ; +; 3.944 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[23] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[23]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.694 ns ; 2.250 ns ; +; 3.951 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[24]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.100 ns ; 3.851 ns ; +; 3.973 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[16]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.101 ns ; 3.872 ns ; +; 3.979 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[22] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[22]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.696 ns ; 2.283 ns ; +; 3.989 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[31] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[31]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.693 ns ; 2.296 ns ; +; 4.004 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[16]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.100 ns ; 3.904 ns ; +; 4.029 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[30]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.098 ns ; 3.931 ns ; +; 4.042 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[18] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[18]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.683 ns ; 2.359 ns ; +; 4.043 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[17] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[17]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.685 ns ; 2.358 ns ; +; 4.043 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[21] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[21]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.699 ns ; 2.344 ns ; +; 4.048 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[16] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[16]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.696 ns ; 2.352 ns ; +; 4.078 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[17]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.100 ns ; 3.978 ns ; +; 4.084 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[21]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.104 ns ; 3.980 ns ; +; 4.096 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[29]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.098 ns ; 3.998 ns ; +; 4.110 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[19]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.104 ns ; 4.006 ns ; +; 4.112 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[1] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[1]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.741 ns ; 2.371 ns ; +; 4.112 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[21] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[21]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.689 ns ; 2.423 ns ; +; 4.115 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[21]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.103 ns ; 4.012 ns ; +; 4.117 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[19]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.103 ns ; 4.014 ns ; +; 4.132 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[25]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.097 ns ; 4.035 ns ; +; 4.168 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[0] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[0]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.739 ns ; 2.429 ns ; +; 4.169 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[19] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[19]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.699 ns ; 2.470 ns ; +; 4.185 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[1] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[1]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.731 ns ; 2.454 ns ; +; 4.187 ns ; Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[3] ; Video:Fredi_Aschwanden|altddio_out0:inst2|altddio_out:altddio_out_component|ddio_out_are:auto_generated|ddio_outa[2]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.578 ns ; -1.723 ns ; 2.464 ns ; +; 4.195 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[10] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[10]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.764 ns ; 2.431 ns ; +; 4.196 ns ; Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[7] ; Video:Fredi_Aschwanden|altddio_out0:inst2|altddio_out:altddio_out_component|ddio_out_are:auto_generated|ddio_outa[3]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.578 ns ; -1.713 ns ; 2.483 ns ; +; 4.201 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[8] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[8]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.754 ns ; 2.447 ns ; +; 4.221 ns ; Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[3] ; Video:Fredi_Aschwanden|altddio_out0:inst2|altddio_out:altddio_out_component|ddio_out_are:auto_generated|ddio_outa[3]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.578 ns ; -1.714 ns ; 2.507 ns ; +; 4.231 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[30] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[30]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.614 ns ; 2.617 ns ; +; 4.232 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[24]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.099 ns ; 4.133 ns ; +; 4.232 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[31] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[31]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.674 ns ; 2.558 ns ; +; 4.235 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[20]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.103 ns ; 4.132 ns ; +; 4.236 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[27]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.102 ns ; 4.134 ns ; +; 4.239 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[30] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[30]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.673 ns ; 2.566 ns ; +; 4.243 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[10] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[10]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.764 ns ; 2.479 ns ; +; 4.249 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[22] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[22]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.669 ns ; 2.580 ns ; +; 4.251 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[28]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.099 ns ; 4.152 ns ; +; 4.269 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[30]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.099 ns ; 4.170 ns ; +; 4.283 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[25]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.098 ns ; 4.185 ns ; +; 4.286 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[26]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.098 ns ; 4.188 ns ; +; 4.296 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[20] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[20]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.670 ns ; 2.626 ns ; +; 4.313 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[24] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[24]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.666 ns ; 2.647 ns ; +; 4.314 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[29] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[29]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.691 ns ; 2.623 ns ; +; 4.331 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[10] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[10]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.735 ns ; 2.596 ns ; +; 4.333 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[1]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.145 ns ; 4.188 ns ; +; 4.343 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[0]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.145 ns ; 4.198 ns ; +; 4.347 ns ; Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[3] ; Video:Fredi_Aschwanden|altddio_out0:inst2|altddio_out:altddio_out_component|ddio_out_are:auto_generated|ddio_outa[1]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.578 ns ; -1.665 ns ; 2.682 ns ; +; 4.352 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[18]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.098 ns ; 4.254 ns ; +; 4.352 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[23]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.100 ns ; 4.252 ns ; +; 4.362 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[15] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[15]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.717 ns ; 2.645 ns ; +; 4.367 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[3] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[3]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.759 ns ; 2.608 ns ; +; 4.376 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[1] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[1]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.741 ns ; 2.635 ns ; +; 4.384 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[22]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.102 ns ; 4.282 ns ; +; 4.406 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[28] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[28]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.615 ns ; 2.791 ns ; +; 4.409 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[8] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[8]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.764 ns ; 2.645 ns ; +; 4.410 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[5] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[5]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.764 ns ; 2.646 ns ; +; 4.411 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[6]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.159 ns ; 4.252 ns ; +; 4.417 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[15] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[15]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.746 ns ; 2.671 ns ; +; 4.425 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[28]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.100 ns ; 4.325 ns ; +; 4.431 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[19] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[19]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.670 ns ; 2.761 ns ; +; 4.434 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[0] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[0]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.739 ns ; 2.695 ns ; +; 4.440 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[9] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[9]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.755 ns ; 2.685 ns ; +; 4.450 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[0] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[0]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.731 ns ; 2.719 ns ; +; 4.475 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[11] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[11]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.741 ns ; 2.734 ns ; +; 4.477 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[26] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[26]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.672 ns ; 2.805 ns ; +; 4.478 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[3] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[3]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.730 ns ; 2.748 ns ; +; 4.480 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[7] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[7]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.757 ns ; 2.723 ns ; +; 4.485 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[4] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[4]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.749 ns ; 2.736 ns ; +; 4.486 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[25] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[25]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.672 ns ; 2.814 ns ; +; 4.497 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[1]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.146 ns ; 4.351 ns ; +; 4.498 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[8]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.169 ns ; 4.329 ns ; +; 4.527 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[8] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[8]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.754 ns ; 2.773 ns ; +; 4.530 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[4] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[4]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.739 ns ; 2.791 ns ; +; 4.555 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[14] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[14]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.751 ns ; 2.804 ns ; +; 4.556 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[3]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.163 ns ; 4.393 ns ; +; 4.573 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[6] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[6]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.755 ns ; 2.818 ns ; +; 4.587 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[31] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[31]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.615 ns ; 2.972 ns ; +; 4.597 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[5]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.168 ns ; 4.429 ns ; +; 4.600 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[10] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[10]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.735 ns ; 2.865 ns ; +; 4.601 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[2] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[2]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.749 ns ; 2.852 ns ; +; 4.601 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[8]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.168 ns ; 4.433 ns ; +; 4.613 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[28] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[28]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.674 ns ; 2.939 ns ; +; 4.614 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[7] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[7]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.759 ns ; 2.855 ns ; +; 4.618 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[11] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[11]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.751 ns ; 2.867 ns ; +; 4.623 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[9]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.159 ns ; 4.464 ns ; +; 4.626 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[12] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[12]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.742 ns ; 2.884 ns ; +; 4.630 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[14] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[14]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.740 ns ; 2.890 ns ; +; 4.633 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[3] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[3]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.759 ns ; 2.874 ns ; +; 4.636 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[15]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.150 ns ; 4.486 ns ; +; 4.637 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[12] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[12]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.731 ns ; 2.906 ns ; +; 4.660 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[13] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[13]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.749 ns ; 2.911 ns ; +; 4.670 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[4]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.153 ns ; 4.517 ns ; +; 4.671 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[7]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.164 ns ; 4.507 ns ; +; 4.676 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[5] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[5]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.764 ns ; 2.912 ns ; +; 4.677 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[6] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[6]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.745 ns ; 2.932 ns ; +; 4.677 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[8] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[8]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.764 ns ; 2.913 ns ; +; 4.686 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[15] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[15]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.746 ns ; 2.940 ns ; +; 4.690 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[9] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[9]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.726 ns ; 2.964 ns ; +; 4.697 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[10]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.168 ns ; 4.529 ns ; +; 4.699 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_DDR_WR ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -2.840 ns ; -2.874 ns ; 1.825 ns ; +; 4.704 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[9] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[9]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.755 ns ; 2.949 ns ; +; 4.709 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[18] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[18]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.664 ns ; 3.045 ns ; +; 4.722 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[0] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[0]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.731 ns ; 2.991 ns ; +; 4.749 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[0]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.146 ns ; 4.603 ns ; +; 4.753 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[4] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[4]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.749 ns ; 3.004 ns ; +; 4.780 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[14]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.155 ns ; 4.625 ns ; +; 4.787 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[11]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.156 ns ; 4.631 ns ; +; 4.791 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[2]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.153 ns ; 4.638 ns ; +; 4.805 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[3] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[3]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.730 ns ; 3.075 ns ; +; 4.809 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[5]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.169 ns ; 4.640 ns ; +; 4.823 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[14] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[14]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.751 ns ; 3.072 ns ; +; 4.825 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[7]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.163 ns ; 4.662 ns ; +; 4.840 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[1] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[1]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.712 ns ; 3.128 ns ; +; 4.844 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[5] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[5]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.735 ns ; 3.109 ns ; +; 4.844 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[11]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.155 ns ; 4.689 ns ; +; 4.845 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[4]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.154 ns ; 4.691 ns ; +; 4.846 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[12]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.146 ns ; 4.700 ns ; +; 4.863 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[6] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[6]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.755 ns ; 3.108 ns ; +; 4.869 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[13] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[13]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.738 ns ; 3.131 ns ; +; 4.871 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[2] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[2]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.749 ns ; 3.122 ns ; +; 4.878 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[13]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.153 ns ; 4.725 ns ; +; 4.881 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[10]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.169 ns ; 4.712 ns ; +; 4.885 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[11] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[11]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.751 ns ; 3.134 ns ; +; 4.888 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[14]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.156 ns ; 4.732 ns ; +; 4.892 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[12]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.147 ns ; 4.745 ns ; +; 4.892 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[12] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[12]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.742 ns ; 3.150 ns ; +; 4.896 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[14] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[14]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.740 ns ; 3.156 ns ; +; 4.906 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[12] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[12]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.731 ns ; 3.175 ns ; +; 4.916 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_DDR_WR ; Video:Fredi_Aschwanden|inst90 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -2.840 ns ; -2.866 ns ; 2.050 ns ; +; 4.916 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[15]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.151 ns ; 4.765 ns ; +; 4.924 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[13] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[13]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.749 ns ; 3.175 ns ; +; 4.942 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[6] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[6]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.745 ns ; 3.197 ns ; +; 4.979 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[6]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.160 ns ; 4.819 ns ; +; 5.007 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[5] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[5]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.754 ns ; 3.253 ns ; +; 5.009 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[7] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[7]~DFFLO ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.759 ns ; 3.250 ns ; +; 5.013 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[9] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[9]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.726 ns ; 3.287 ns ; +; 5.029 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[3]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.164 ns ; 4.865 ns ; +; 5.047 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[2] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[2]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.739 ns ; 3.308 ns ; +; 5.088 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_DDR_WR ; Video:Fredi_Aschwanden|inst90~_Duplicate_3 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -2.840 ns ; -2.869 ns ; 2.219 ns ; +; 5.096 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_DDR_WR ; Video:Fredi_Aschwanden|inst90~_Duplicate_1 ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -2.840 ns ; -2.933 ns ; 2.163 ns ; +; 5.124 ns ; Video:Fredi_Aschwanden|inst90~_Duplicate_4 ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[13]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; 0.000 ns ; -0.154 ns ; 4.970 ns ; +; 5.133 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[13] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[13]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.738 ns ; 3.395 ns ; +; 5.143 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[11] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[11]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.722 ns ; 3.421 ns ; +; 5.166 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[7] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[7]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.738 ns ; 3.428 ns ; +; 5.205 ns ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[4] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[4]~DFFHI ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] ; -1.576 ns ; -1.720 ns ; 3.485 ns ; +; Timing analysis restricted to 200 rows. ; To change the limit use Settings (Assignments menu) ; ; ; ; ; ; ; ++-----------------------------------------+------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+----------------------------+----------------------------+--------------------------+ + + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Clock Hold: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4]' ; ++-----------------------------------------+---------------------------------------------------------------------------------+------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+----------------------------+----------------------------+--------------------------+ +; Minimum Slack ; From ; To ; From Clock ; To Clock ; Required Hold Relationship ; Required Shortest P2P Time ; Actual Shortest P2P Time ; ++-----------------------------------------+---------------------------------------------------------------------------------+------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+----------------------------+----------------------------+--------------------------+ +; 2.664 ns ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[2] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 0.000 ns ; -0.448 ns ; 2.216 ns ; +; 2.664 ns ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 0.000 ns ; -0.448 ns ; 2.216 ns ; +; 2.664 ns ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[3] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 0.000 ns ; -0.448 ns ; 2.216 ns ; +; 2.664 ns ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[5] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 0.000 ns ; -0.448 ns ; 2.216 ns ; +; 2.679 ns ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 0.000 ns ; -0.447 ns ; 2.232 ns ; +; 2.684 ns ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[1] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 0.000 ns ; -0.447 ns ; 2.237 ns ; +; 2.686 ns ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[7] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 0.000 ns ; -0.448 ns ; 2.238 ns ; +; 2.686 ns ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[6] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 0.000 ns ; -0.448 ns ; 2.238 ns ; +; 2.686 ns ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[8] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 0.000 ns ; -0.448 ns ; 2.238 ns ; +; 2.686 ns ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[9] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 0.000 ns ; -0.448 ns ; 2.238 ns ; +; 2.714 ns ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[11] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 0.000 ns ; -0.450 ns ; 2.264 ns ; +; 2.714 ns ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[10] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 0.000 ns ; -0.450 ns ; 2.264 ns ; +; 2.716 ns ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[12] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 0.000 ns ; -0.450 ns ; 2.266 ns ; +; 2.716 ns ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[15] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 0.000 ns ; -0.450 ns ; 2.266 ns ; +; 2.716 ns ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[14] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 0.000 ns ; -0.450 ns ; 2.266 ns ; +; 2.716 ns ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[13] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 0.000 ns ; -0.450 ns ; 2.266 ns ; +; 2.769 ns ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[19] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 0.000 ns ; -0.450 ns ; 2.319 ns ; +; 2.769 ns ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 0.000 ns ; -0.450 ns ; 2.319 ns ; +; 2.790 ns ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[21] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 0.000 ns ; -0.449 ns ; 2.341 ns ; +; 2.790 ns ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[22] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 0.000 ns ; -0.449 ns ; 2.341 ns ; +; 2.790 ns ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[23] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 0.000 ns ; -0.449 ns ; 2.341 ns ; +; 2.794 ns ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[20] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 0.000 ns ; -0.451 ns ; 2.343 ns ; +; 2.794 ns ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[24] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 0.000 ns ; -0.451 ns ; 2.343 ns ; +; 2.794 ns ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[17] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 0.000 ns ; -0.451 ns ; 2.343 ns ; +; 2.794 ns ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[16] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 0.000 ns ; -0.451 ns ; 2.343 ns ; +; 2.948 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BUS_CYC ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -1.264 ns ; -1.316 ns ; 1.632 ns ; +; 3.033 ns ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[26] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 0.000 ns ; -0.444 ns ; 2.589 ns ; +; 3.033 ns ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[25] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 0.000 ns ; -0.444 ns ; 2.589 ns ; +; 3.088 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 0.000 ns ; -0.042 ns ; 3.046 ns ; +; 3.100 ns ; FB_ALE ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[27] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 0.000 ns ; -0.444 ns ; 2.656 ns ; +; 3.146 ns ; FB_ALE ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; 0.000 ns ; -0.316 ns ; 2.830 ns ; +; 6.237 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.309 ns ; 1.928 ns ; +; 6.282 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.386 ns ; 1.896 ns ; +; 6.650 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_WAIT ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[0] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.362 ns ; 2.288 ns ; +; 6.650 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_WAIT ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[2] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.362 ns ; 2.288 ns ; +; 6.650 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_WAIT ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[5] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.362 ns ; 2.288 ns ; +; 6.650 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_WAIT ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[8] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.362 ns ; 2.288 ns ; +; 6.650 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_WAIT ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[20] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.362 ns ; 2.288 ns ; +; 6.650 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_WAIT ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[21] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.362 ns ; 2.288 ns ; +; 6.650 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_WAIT ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[22] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.362 ns ; 2.288 ns ; +; 6.650 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_WAIT ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[23] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.362 ns ; 2.288 ns ; +; 6.650 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_WAIT ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[27] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.362 ns ; 2.288 ns ; +; 6.738 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_WAIT ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[25] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.361 ns ; 2.377 ns ; +; 6.738 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_WAIT ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[26] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.361 ns ; 2.377 ns ; +; 6.738 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_WAIT ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[28] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.361 ns ; 2.377 ns ; +; 6.739 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[1] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.381 ns ; 2.358 ns ; +; 6.739 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[3] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.381 ns ; 2.358 ns ; +; 6.739 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[4] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.381 ns ; 2.358 ns ; +; 6.739 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[5] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.381 ns ; 2.358 ns ; +; 6.739 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[9] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.381 ns ; 2.358 ns ; +; 6.739 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[10] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.381 ns ; 2.358 ns ; +; 6.739 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[11] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.381 ns ; 2.358 ns ; +; 6.739 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[15] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.381 ns ; 2.358 ns ; +; 6.739 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[18] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.381 ns ; 2.358 ns ; +; 6.739 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[19] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.381 ns ; 2.358 ns ; +; 6.739 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[20] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.381 ns ; 2.358 ns ; +; 6.739 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[22] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.381 ns ; 2.358 ns ; +; 6.739 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[24] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.381 ns ; 2.358 ns ; +; 6.775 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_WAIT ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[1] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.362 ns ; 2.413 ns ; +; 6.775 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_WAIT ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[4] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.362 ns ; 2.413 ns ; +; 6.775 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_WAIT ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[6] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.362 ns ; 2.413 ns ; +; 6.775 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_WAIT ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[11] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.362 ns ; 2.413 ns ; +; 6.775 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_WAIT ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[16] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.362 ns ; 2.413 ns ; +; 6.775 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_WAIT ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[17] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.362 ns ; 2.413 ns ; +; 6.775 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_WAIT ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[18] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.362 ns ; 2.413 ns ; +; 6.775 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_WAIT ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[19] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.362 ns ; 2.413 ns ; +; 6.775 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_WAIT ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[24] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.362 ns ; 2.413 ns ; +; 6.981 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[0] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.362 ns ; 2.619 ns ; +; 6.981 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[2] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.362 ns ; 2.619 ns ; +; 6.981 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[8] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.362 ns ; 2.619 ns ; +; 6.981 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[21] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.362 ns ; 2.619 ns ; +; 6.981 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[23] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.362 ns ; 2.619 ns ; +; 6.981 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[27] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.362 ns ; 2.619 ns ; +; 6.987 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_WAIT ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[12] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.363 ns ; 2.624 ns ; +; 6.987 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_WAIT ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[13] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.363 ns ; 2.624 ns ; +; 6.987 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_WAIT ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[14] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.363 ns ; 2.624 ns ; +; 7.023 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[12] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.363 ns ; 2.660 ns ; +; 7.023 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[13] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.363 ns ; 2.660 ns ; +; 7.023 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[14] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.363 ns ; 2.660 ns ; +; 7.036 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[7] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.373 ns ; 2.663 ns ; +; 7.036 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[25] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.373 ns ; 2.663 ns ; +; 7.036 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[26] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.373 ns ; 2.663 ns ; +; 7.036 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[28] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.373 ns ; 2.663 ns ; +; 7.036 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[29] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.373 ns ; 2.663 ns ; +; 7.036 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[30] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.373 ns ; 2.663 ns ; +; 7.036 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[31] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.373 ns ; 2.663 ns ; +; 7.043 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[6] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.362 ns ; 2.681 ns ; +; 7.043 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[16] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.362 ns ; 2.681 ns ; +; 7.043 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[17] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.362 ns ; 2.681 ns ; +; 7.045 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_WAIT ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[7] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.354 ns ; 2.691 ns ; +; 7.045 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_WAIT ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[29] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.354 ns ; 2.691 ns ; +; 7.045 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_WAIT ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[30] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.354 ns ; 2.691 ns ; +; 7.045 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_WAIT ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[31] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.354 ns ; 2.691 ns ; +; 7.106 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_WAIT ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[3] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.381 ns ; 2.725 ns ; +; 7.106 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_WAIT ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[9] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.381 ns ; 2.725 ns ; +; 7.106 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_WAIT ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[10] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.381 ns ; 2.725 ns ; +; 7.218 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_WAIT ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[15] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.355 ns ; 2.863 ns ; +; 7.413 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.650 ns ; 2.763 ns ; +; 7.427 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.650 ns ; 2.777 ns ; +; 7.430 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[0] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.626 ns ; 2.804 ns ; +; 7.430 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[2] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.626 ns ; 2.804 ns ; +; 7.430 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[5] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.626 ns ; 2.804 ns ; +; 7.430 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[8] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.626 ns ; 2.804 ns ; +; 7.430 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[20] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.626 ns ; 2.804 ns ; +; 7.430 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[21] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.626 ns ; 2.804 ns ; +; 7.430 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[22] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.626 ns ; 2.804 ns ; +; 7.430 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[23] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.626 ns ; 2.804 ns ; +; 7.430 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[27] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.626 ns ; 2.804 ns ; +; 7.478 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[1] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.018 ns ; +; 7.478 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[7] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.018 ns ; +; 7.478 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[19] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.018 ns ; +; 7.478 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[24] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.018 ns ; +; 7.478 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[26] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.018 ns ; +; 7.478 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[27] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.018 ns ; +; 7.478 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[28] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.018 ns ; +; 7.478 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[29] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.018 ns ; +; 7.478 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[30] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.018 ns ; +; 7.478 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[31] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.018 ns ; +; 7.508 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[2] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.048 ns ; +; 7.508 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[3] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.048 ns ; +; 7.508 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[4] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.048 ns ; +; 7.508 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[5] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.048 ns ; +; 7.508 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[7] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.048 ns ; +; 7.508 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[8] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.048 ns ; +; 7.508 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[9] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.048 ns ; +; 7.508 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[21] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.048 ns ; +; 7.512 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[10] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.052 ns ; +; 7.512 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[11] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.052 ns ; +; 7.512 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[12] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.052 ns ; +; 7.512 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[13] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.052 ns ; +; 7.512 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[14] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.052 ns ; +; 7.512 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[15] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.052 ns ; +; 7.512 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[16] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.052 ns ; +; 7.512 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[17] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.052 ns ; +; 7.518 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[25] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.625 ns ; 2.893 ns ; +; 7.518 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[26] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.625 ns ; 2.893 ns ; +; 7.518 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[28] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.625 ns ; 2.893 ns ; +; 7.524 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[10] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.064 ns ; +; 7.524 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[11] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.064 ns ; +; 7.524 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[12] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.064 ns ; +; 7.524 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[13] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.064 ns ; +; 7.524 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[14] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.064 ns ; +; 7.524 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[15] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.064 ns ; +; 7.524 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[16] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.064 ns ; +; 7.524 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[17] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.064 ns ; +; 7.531 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[1] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.071 ns ; +; 7.531 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[6] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.071 ns ; +; 7.531 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[19] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.071 ns ; +; 7.531 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[24] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.071 ns ; +; 7.531 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[26] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.071 ns ; +; 7.531 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[27] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.071 ns ; +; 7.555 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[1] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.626 ns ; 2.929 ns ; +; 7.555 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[4] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.626 ns ; 2.929 ns ; +; 7.555 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[6] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.626 ns ; 2.929 ns ; +; 7.555 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[11] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.626 ns ; 2.929 ns ; +; 7.555 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[16] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.626 ns ; 2.929 ns ; +; 7.555 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[17] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.626 ns ; 2.929 ns ; +; 7.555 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[18] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.626 ns ; 2.929 ns ; +; 7.555 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[19] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.626 ns ; 2.929 ns ; +; 7.555 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[24] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.626 ns ; 2.929 ns ; +; 7.561 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[2] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.101 ns ; +; 7.561 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[3] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.101 ns ; +; 7.561 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[4] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.101 ns ; +; 7.561 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[5] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.101 ns ; +; 7.561 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[6] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.101 ns ; +; 7.561 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[8] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.101 ns ; +; 7.561 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[9] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.101 ns ; +; 7.561 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[18] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.460 ns ; 3.101 ns ; +; 7.571 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[28] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.622 ns ; 2.949 ns ; +; 7.571 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[29] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.622 ns ; 2.949 ns ; +; 7.571 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[30] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.622 ns ; 2.949 ns ; +; 7.571 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[31] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.622 ns ; 2.949 ns ; +; 7.598 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[0] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.471 ns ; 3.127 ns ; +; 7.598 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[2] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.471 ns ; 3.127 ns ; +; 7.598 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[5] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.471 ns ; 3.127 ns ; +; 7.598 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[8] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.471 ns ; 3.127 ns ; +; 7.598 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[20] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.471 ns ; 3.127 ns ; +; 7.598 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[21] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.471 ns ; 3.127 ns ; +; 7.598 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[22] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.471 ns ; 3.127 ns ; +; 7.598 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[23] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.471 ns ; 3.127 ns ; +; 7.598 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[27] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.471 ns ; 3.127 ns ; +; 7.629 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[1] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.351 ns ; 3.278 ns ; +; 7.629 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[7] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.351 ns ; 3.278 ns ; +; 7.629 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[19] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.351 ns ; 3.278 ns ; +; 7.629 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[24] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.351 ns ; 3.278 ns ; +; 7.629 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[26] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.351 ns ; 3.278 ns ; +; 7.629 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[27] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.351 ns ; 3.278 ns ; +; 7.629 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[28] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.351 ns ; 3.278 ns ; +; 7.629 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[29] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.351 ns ; 3.278 ns ; +; 7.629 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[30] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.351 ns ; 3.278 ns ; +; 7.629 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[31] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.351 ns ; 3.278 ns ; +; 7.675 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[10] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.351 ns ; 3.324 ns ; +; 7.675 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[11] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.351 ns ; 3.324 ns ; +; 7.675 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[12] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.351 ns ; 3.324 ns ; +; 7.675 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[13] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.351 ns ; 3.324 ns ; +; 7.675 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[14] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.351 ns ; 3.324 ns ; +; 7.675 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[15] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.351 ns ; 3.324 ns ; +; 7.675 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[16] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.351 ns ; 3.324 ns ; +; 7.675 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[17] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.351 ns ; 3.324 ns ; +; 7.686 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[25] ; MAIN_CLK ; altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] ; -4.884 ns ; -4.470 ns ; 3.216 ns ; +; Timing analysis restricted to 200 rows. ; To change the limit use Settings (Assignments menu) ; ; ; ; ; ; ; ++-----------------------------------------+---------------------------------------------------------------------------------+------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+----------------------------+----------------------------+--------------------------+ + + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Clock Hold: 'altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0]' ; ++-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+----------------------------+----------------------------+--------------------------+ +; Minimum Slack ; From ; To ; From Clock ; To Clock ; Required Hold Relationship ; Required Shortest P2P Time ; Actual Shortest P2P Time ; ++-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+----------------------------+----------------------------+--------------------------+ +; 0.502 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[5] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[5] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[4] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[4] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[3] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[3] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[2] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[1] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[1] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[0] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|rd_ptr_lsb ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|rd_ptr_lsb ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|DISP_ON ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|DISP_ON ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSYNC_I[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSYNC_I[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VSYNC_I[1] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VSYNC_I[1] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VSYNC_I[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VSYNC_I[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|SUB_PIXEL_CNT[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|SUB_PIXEL_CNT[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDTRON ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDTRON ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a7 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a7 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a1 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a1 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a4 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a4 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a5 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a5 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a8 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a8 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a0 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a2 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a2 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a6 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a6 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a9 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a9 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a3 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a3 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 0.502 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 0.460 ns ; +; 1.487 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[45] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe29 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.044 ns ; 1.443 ns ; +; 1.492 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VSYNC ; altddio_out3:inst5|altddio_out:altddio_out_component|ddio_out_31f:auto_generated|ddio_outa[0]~DFFHI ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; 1.447 ns ; 2.939 ns ; +; 1.494 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[0] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe48 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.044 ns ; 1.450 ns ; +; 1.494 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[0] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe28 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.044 ns ; 1.450 ns ; +; 1.497 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[0] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe30 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.044 ns ; 1.453 ns ; +; 1.507 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[1] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[33] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.048 ns ; 1.459 ns ; +; 1.512 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[62] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~porta_datain_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.009 ns ; 1.503 ns ; +; 1.513 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[35] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~porta_datain_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; 0.004 ns ; 1.517 ns ; +; 1.515 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[19] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[35] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.044 ns ; 1.471 ns ; +; 1.515 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|SYNC_PIX2 ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FIFO_RDE ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.021 ns ; 1.494 ns ; +; 1.516 ns ; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|q_b[5] ; Video:Fredi_Aschwanden|lpm_ff3:inst47|lpm_ff:lpm_ff_component|dffs[23] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.373 ns ; 1.143 ns ; +; 1.516 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[11] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[11] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.040 ns ; 1.476 ns ; +; 1.517 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr1|lpm_shiftreg:lpm_shiftreg_component|dffs[9] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.039 ns ; 1.478 ns ; +; 1.520 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[11] ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[11] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.386 ns ; 1.134 ns ; +; 1.523 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[79] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~porta_datain_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.009 ns ; 1.514 ns ; +; 1.526 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[12] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[13] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.040 ns ; 1.486 ns ; +; 1.529 ns ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe16 ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|external_latency_ffsa[3] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.051 ns ; 1.478 ns ; +; 1.532 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|sub_parity7a[1] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|parity6 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.027 ns ; 1.505 ns ; +; 1.534 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[19] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[19] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.044 ns ; 1.490 ns ; +; 1.535 ns ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe29 ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|external_latency_ffsa[6] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.493 ns ; +; 1.536 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_pmb:wr_ptr|counter_reg_bit[4] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~porta_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; 0.328 ns ; 1.864 ns ; +; 1.539 ns ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe48 ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|external_latency_ffsa[23] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.037 ns ; 1.502 ns ; +; 1.539 ns ; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_GREEN|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|q_b[3] ; Video:Fredi_Aschwanden|lpm_ff3:inst47|lpm_ff:lpm_ff_component|dffs[13] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.372 ns ; 1.167 ns ; +; 1.539 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[67] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe8 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.045 ns ; 1.494 ns ; +; 1.540 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[93] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_datain_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; 0.011 ns ; 1.551 ns ; +; 1.541 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[67] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[3] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.045 ns ; 1.496 ns ; +; 1.542 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[27] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr6|lpm_shiftreg:lpm_shiftreg_component|dffs[11] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.500 ns ; +; 1.544 ns ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe49 ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|external_latency_ffsa[23] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.040 ns ; 1.504 ns ; +; 1.545 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe1a[2] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[11] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.050 ns ; 1.495 ns ; +; 1.545 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst9|lpm_ff:lpm_ff_component|dffs[10] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe23 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.047 ns ; 1.498 ns ; +; 1.546 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr5|lpm_shiftreg:lpm_shiftreg_component|dffs[3] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr5|lpm_shiftreg:lpm_shiftreg_component|dffs[4] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.504 ns ; +; 1.547 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_pmb:wr_ptr|counter_reg_bit[1] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~porta_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; 0.328 ns ; 1.875 ns ; +; 1.548 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe1a[2] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[15] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.041 ns ; 1.507 ns ; +; 1.548 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDO_ON ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDTRON ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.027 ns ; 1.521 ns ; +; 1.553 ns ; Video:Fredi_Aschwanden|lpm_ff3:inst49|lpm_ff:lpm_ff_component|dffs[15] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe32 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.511 ns ; +; 1.556 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[18] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[50] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.039 ns ; 1.517 ns ; +; 1.556 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[82] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe6 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.032 ns ; 1.524 ns ; +; 1.556 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[0] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[1] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.035 ns ; 1.521 ns ; +; 1.556 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_pmb:wr_ptr|counter_reg_bit[5] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~porta_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; 0.326 ns ; 1.882 ns ; +; 1.557 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[55] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[87] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.044 ns ; 1.513 ns ; +; 1.557 ns ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe16 ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|external_latency_ffsa[7] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.030 ns ; 1.527 ns ; +; 1.560 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[48] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~porta_datain_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.009 ns ; 1.551 ns ; +; 1.564 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[1] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe22 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.040 ns ; 1.524 ns ; +; 1.564 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[5] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[6] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.522 ns ; +; 1.565 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSYNC ; altddio_out3:inst6|altddio_out:altddio_out_component|ddio_out_31f:auto_generated|ddio_outa[0]~DFFHI ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; 1.445 ns ; 3.010 ns ; +; 1.566 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_pmb:wr_ptr|counter_reg_bit[4] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; 0.328 ns ; 1.894 ns ; +; 1.567 ns ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe9 ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|external_latency_ffsa[1] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.039 ns ; 1.528 ns ; +; 1.569 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[67] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr3|lpm_shiftreg:lpm_shiftreg_component|dffs[3] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.527 ns ; +; 1.569 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr5|lpm_shiftreg:lpm_shiftreg_component|dffs[7] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.039 ns ; 1.530 ns ; +; 1.569 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[125] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_datain_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; 0.011 ns ; 1.580 ns ; +; 1.570 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe1a[2] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[6] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.044 ns ; 1.526 ns ; +; 1.570 ns ; Video:Fredi_Aschwanden|lpm_ff4:inst10|lpm_ff:lpm_ff_component|dffs[3] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe15 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.044 ns ; 1.526 ns ; +; 1.570 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr3|lpm_shiftreg:lpm_shiftreg_component|dffs[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.039 ns ; 1.531 ns ; +; 1.570 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[36] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_datain_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.009 ns ; 1.561 ns ; +; 1.570 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr3|lpm_shiftreg:lpm_shiftreg_component|dffs[14] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.039 ns ; 1.531 ns ; +; 1.573 ns ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe13 ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|external_latency_ffsa[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.039 ns ; 1.534 ns ; +; 1.574 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[16] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~porta_datain_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; 0.006 ns ; 1.580 ns ; +; 1.575 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[1] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.035 ns ; 1.540 ns ; +; 1.576 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[5] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.035 ns ; 1.541 ns ; +; 1.576 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[6] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[7] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.534 ns ; +; 1.576 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr3|lpm_shiftreg:lpm_shiftreg_component|dffs[10] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.035 ns ; 1.541 ns ; +; 1.578 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[26] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[42] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.036 ns ; 1.542 ns ; +; 1.578 ns ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe12 ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|external_latency_ffsa[5] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.039 ns ; 1.539 ns ; +; 1.578 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[9] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.032 ns ; 1.546 ns ; +; 1.578 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[88] ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[88] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.359 ns ; 1.219 ns ; +; 1.578 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLUT_MUX_AV[1][0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLUT_MUX_ADR[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.050 ns ; 1.528 ns ; +; 1.579 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[38] ; Video:Fredi_Aschwanden|lpm_ff4:inst10|lpm_ff:lpm_ff_component|dffs[6] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.537 ns ; +; 1.579 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[6] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.035 ns ; 1.544 ns ; +; 1.579 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_pmb:wr_ptr|counter_reg_bit[4] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~porta_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; 0.327 ns ; 1.906 ns ; +; 1.582 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[3] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.035 ns ; 1.547 ns ; +; 1.582 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[8] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.032 ns ; 1.550 ns ; +; 1.582 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[11] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.032 ns ; 1.550 ns ; +; 1.583 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[4] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.035 ns ; 1.548 ns ; +; 1.583 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[10] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.032 ns ; 1.551 ns ; +; 1.583 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLUT_MUX_ADR[3] ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe1a[3] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.039 ns ; 1.544 ns ; +; 1.584 ns ; Video:Fredi_Aschwanden|lpm_ff3:inst46|lpm_ff:lpm_ff_component|dffs[20] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe42 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.041 ns ; 1.543 ns ; +; 1.584 ns ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe15 ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|external_latency_ffsa[6] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.041 ns ; 1.543 ns ; +; 1.584 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_pmb:wr_ptr|counter_reg_bit[1] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; 0.328 ns ; 1.912 ns ; +; 1.584 ns ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe12 ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|external_latency_ffsa[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.039 ns ; 1.545 ns ; +; 1.584 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[20] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[36] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.541 ns ; +; 1.585 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.035 ns ; 1.550 ns ; +; 1.585 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr3|lpm_shiftreg:lpm_shiftreg_component|dffs[9] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.035 ns ; 1.550 ns ; +; 1.585 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[14] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.032 ns ; 1.553 ns ; +; 1.586 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr1|lpm_shiftreg:lpm_shiftreg_component|dffs[3] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr1|lpm_shiftreg:lpm_shiftreg_component|dffs[4] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.544 ns ; +; 1.586 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[7] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.032 ns ; 1.554 ns ; +; 1.587 ns ; Video:Fredi_Aschwanden|lpm_ff3:inst46|lpm_ff:lpm_ff_component|dffs[18] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe38 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.545 ns ; +; 1.588 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[96] ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[96] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.368 ns ; 1.220 ns ; +; 1.589 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[54] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[86] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.546 ns ; +; 1.589 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|RAND[5] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|RAND[6] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.040 ns ; 1.549 ns ; +; 1.592 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[43] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe25 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.047 ns ; 1.545 ns ; +; 1.593 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[117] ; Video:Fredi_Aschwanden|lpm_ff1:inst9|lpm_ff:lpm_ff_component|dffs[21] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.551 ns ; +; 1.593 ns ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe33 ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|external_latency_ffsa[7] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.551 ns ; +; 1.594 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[5] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[37] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.039 ns ; 1.555 ns ; +; 1.594 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[25] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr6|lpm_shiftreg:lpm_shiftreg_component|dffs[9] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.045 ns ; 1.549 ns ; +; 1.594 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[71] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[103] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.552 ns ; +; 1.595 ns ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe39 ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|external_latency_ffsa[18] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.039 ns ; 1.556 ns ; +; 1.595 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr1|lpm_shiftreg:lpm_shiftreg_component|dffs[14] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.040 ns ; 1.555 ns ; +; 1.597 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[16] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[16] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.039 ns ; 1.558 ns ; +; 1.597 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[101] ; Video:Fredi_Aschwanden|lpm_ff1:inst9|lpm_ff:lpm_ff_component|dffs[5] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.555 ns ; +; 1.598 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[13] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.040 ns ; 1.558 ns ; +; 1.599 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[111] ; Video:Fredi_Aschwanden|lpm_ff1:inst9|lpm_ff:lpm_ff_component|dffs[15] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.557 ns ; +; 1.600 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe30 ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[14] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.558 ns ; +; 1.600 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[124] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_datain_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; 0.011 ns ; 1.611 ns ; +; 1.601 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe1a[2] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[9] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.044 ns ; 1.557 ns ; +; 1.602 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[75] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[107] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.560 ns ; +; 1.602 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[8] ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[8] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.370 ns ; 1.232 ns ; +; 1.603 ns ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe20 ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|external_latency_ffsa[4] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.561 ns ; +; 1.603 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[4] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.046 ns ; 1.557 ns ; +; 1.603 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[5] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.046 ns ; 1.557 ns ; +; 1.603 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[9] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.046 ns ; 1.557 ns ; +; 1.603 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[8] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.046 ns ; 1.557 ns ; +; 1.603 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[10] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.046 ns ; 1.557 ns ; +; 1.603 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[11] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.046 ns ; 1.557 ns ; +; 1.603 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[6] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.046 ns ; 1.557 ns ; +; 1.603 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[7] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.046 ns ; 1.557 ns ; +; 1.603 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.046 ns ; 1.557 ns ; +; 1.603 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[3] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.046 ns ; 1.557 ns ; +; 1.603 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[1] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.046 ns ; 1.557 ns ; +; 1.604 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe1a[2] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[7] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.049 ns ; 1.555 ns ; +; 1.604 ns ; Video:Fredi_Aschwanden|altdpram0:ST_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated|q_b[1] ; Video:Fredi_Aschwanden|lpm_ff3:inst52|lpm_ff:lpm_ff_component|dffs[6] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.379 ns ; 1.225 ns ; +; 1.604 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[114] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[2] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.044 ns ; 1.560 ns ; +; 1.604 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr3|lpm_shiftreg:lpm_shiftreg_component|dffs[10] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr3|lpm_shiftreg:lpm_shiftreg_component|dffs[11] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.049 ns ; 1.555 ns ; +; 1.604 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[103] ; Video:Fredi_Aschwanden|lpm_ff1:inst9|lpm_ff:lpm_ff_component|dffs[7] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.562 ns ; +; 1.605 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[49] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[81] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.039 ns ; 1.566 ns ; +; 1.605 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[1] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe42 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.038 ns ; 1.567 ns ; +; 1.605 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[119] ; Video:Fredi_Aschwanden|lpm_ff1:inst9|lpm_ff:lpm_ff_component|dffs[23] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.563 ns ; +; 1.606 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[1] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe26 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.038 ns ; 1.568 ns ; +; 1.606 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[107] ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[107] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.386 ns ; 1.220 ns ; +; 1.607 ns ; Video:Fredi_Aschwanden|altdpram0:ST_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated|q_b[0] ; Video:Fredi_Aschwanden|lpm_ff3:inst52|lpm_ff:lpm_ff_component|dffs[5] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.379 ns ; 1.228 ns ; +; 1.607 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VSYNC ; altddio_out3:inst5|altddio_out:altddio_out_component|ddio_out_31f:auto_generated|ddio_outa[0]~DFFLO ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; 1.448 ns ; 3.055 ns ; +; 1.608 ns ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe40 ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|external_latency_ffsa[19] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.032 ns ; 1.576 ns ; +; 1.609 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[77] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe28 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.567 ns ; +; 1.609 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr7|lpm_shiftreg:lpm_shiftreg_component|dffs[5] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr7|lpm_shiftreg:lpm_shiftreg_component|dffs[6] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.567 ns ; +; 1.611 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[19] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_datain_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.009 ns ; 1.602 ns ; +; 1.612 ns ; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|q_b[1] ; Video:Fredi_Aschwanden|lpm_ff3:inst47|lpm_ff:lpm_ff_component|dffs[19] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.371 ns ; 1.241 ns ; +; 1.612 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_pmb:wr_ptr|counter_reg_bit[4] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~porta_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; 0.326 ns ; 1.938 ns ; +; 1.613 ns ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe41 ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|external_latency_ffsa[19] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.032 ns ; 1.581 ns ; +; 1.613 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[9] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[10] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.571 ns ; +; 1.614 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[46] ; Video:Fredi_Aschwanden|lpm_ff4:inst10|lpm_ff:lpm_ff_component|dffs[14] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.051 ns ; 1.563 ns ; +; 1.614 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr5|lpm_shiftreg:lpm_shiftreg_component|dffs[12] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr5|lpm_shiftreg:lpm_shiftreg_component|dffs[13] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.572 ns ; +; 1.615 ns ; Video:Fredi_Aschwanden|lpm_ff4:inst10|lpm_ff:lpm_ff_component|dffs[8] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe29 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.050 ns ; 1.565 ns ; +; 1.616 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[28] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_datain_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; 0.011 ns ; 1.627 ns ; +; 1.617 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[30] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~porta_datain_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.009 ns ; 1.608 ns ; +; 1.617 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[13] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[14] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.575 ns ; +; 1.618 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLUT_MUX_ADR[1] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe22 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.041 ns ; 1.577 ns ; +; 1.618 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[100] ; Video:Fredi_Aschwanden|lpm_ff1:inst9|lpm_ff:lpm_ff_component|dffs[4] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.044 ns ; 1.574 ns ; +; 1.618 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr1|lpm_shiftreg:lpm_shiftreg_component|dffs[12] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr1|lpm_shiftreg:lpm_shiftreg_component|dffs[13] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.576 ns ; +; 1.618 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VERZ[0][3] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VERZ[0][4] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.038 ns ; 1.580 ns ; +; 1.619 ns ; Video:Fredi_Aschwanden|lpm_ff3:inst47|lpm_ff:lpm_ff_component|dffs[12] ; Video:Fredi_Aschwanden|lpm_ff3:inst46|lpm_ff:lpm_ff_component|dffs[12] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.040 ns ; 1.579 ns ; +; 1.619 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[44] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_datain_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.009 ns ; 1.610 ns ; +; 1.620 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[13] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe29 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.045 ns ; 1.575 ns ; +; 1.620 ns ; Video:Fredi_Aschwanden|lpm_ff3:inst52|lpm_ff:lpm_ff_component|dffs[21] ; Video:Fredi_Aschwanden|lpm_ff3:inst49|lpm_ff:lpm_ff_component|dffs[21] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.026 ns ; 1.594 ns ; +; 1.620 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[13] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[45] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.050 ns ; 1.570 ns ; +; 1.620 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[1] ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe9 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.036 ns ; 1.584 ns ; +; 1.621 ns ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe37 ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|external_latency_ffsa[17] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.039 ns ; 1.582 ns ; +; 1.621 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLUT_MUX_ADR[1] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe33 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.579 ns ; +; 1.621 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[8] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[40] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.578 ns ; +; 1.622 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe4 ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[1] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.580 ns ; +; 1.622 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr4|lpm_shiftreg:lpm_shiftreg_component|dffs[0] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr4|lpm_shiftreg:lpm_shiftreg_component|dffs[1] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.580 ns ; +; 1.623 ns ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe24 ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|external_latency_ffsa[11] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.581 ns ; +; 1.623 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[109] ; Video:Fredi_Aschwanden|lpm_ff1:inst9|lpm_ff:lpm_ff_component|dffs[13] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.581 ns ; +; 1.623 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[1] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[1] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.036 ns ; 1.587 ns ; +; 1.623 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[0] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[16] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.580 ns ; +; 1.623 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[12] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_datain_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; 0.011 ns ; 1.634 ns ; +; 1.625 ns ; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|q_b[3] ; Video:Fredi_Aschwanden|lpm_ff3:inst47|lpm_ff:lpm_ff_component|dffs[21] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.371 ns ; 1.254 ns ; +; 1.625 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[106] ; Video:Fredi_Aschwanden|lpm_ff1:inst9|lpm_ff:lpm_ff_component|dffs[10] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.043 ns ; 1.582 ns ; +; 1.625 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_pmb:wr_ptr|counter_reg_bit[6] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~porta_address_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; 0.328 ns ; 1.953 ns ; +; 1.625 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[117] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_datain_reg0 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; 0.011 ns ; 1.636 ns ; +; 1.625 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[5] ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe25 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.583 ns ; +; 1.626 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[33] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[65] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.584 ns ; +; 1.626 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[3] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[35] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.039 ns ; 1.587 ns ; +; 1.627 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[17] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[49] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.041 ns ; 1.586 ns ; +; 1.627 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[99] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe8 ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.048 ns ; 1.579 ns ; +; 1.627 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr4|lpm_shiftreg:lpm_shiftreg_component|dffs[12] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr4|lpm_shiftreg:lpm_shiftreg_component|dffs[13] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] ; 0.000 ns ; -0.042 ns ; 1.585 ns ; +; Timing analysis restricted to 200 rows. ; To change the limit use Settings (Assignments menu) ; ; ; ; ; ; ; ++-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+----------------------------+----------------------------+--------------------------+ + + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Clock Hold: 'CLK33M' ; ++-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------+----------+----------------------------+----------------------------+--------------------------+ +; Minimum Slack ; From ; To ; From Clock ; To Clock ; Required Hold Relationship ; Required Shortest P2P Time ; Actual Shortest P2P Time ; ++-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------+----------+----------------------------+----------------------------+--------------------------+ +; -0.687 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 0.460 ns ; +; -0.687 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[5] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[5] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 0.460 ns ; +; -0.687 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[4] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[4] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 0.460 ns ; +; -0.687 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[3] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[3] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 0.460 ns ; +; -0.687 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[2] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[2] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 0.460 ns ; +; -0.687 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[1] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[1] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 0.460 ns ; +; -0.687 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[0] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[0] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 0.460 ns ; +; -0.687 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|rd_ptr_lsb ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|rd_ptr_lsb ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 0.460 ns ; +; -0.687 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|DISP_ON ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|DISP_ON ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 0.460 ns ; +; -0.687 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSYNC_I[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSYNC_I[0] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 0.460 ns ; +; -0.687 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VSYNC_I[1] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VSYNC_I[1] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 0.460 ns ; +; -0.687 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VSYNC_I[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VSYNC_I[0] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 0.460 ns ; +; -0.687 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|SUB_PIXEL_CNT[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|SUB_PIXEL_CNT[0] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 0.460 ns ; +; -0.687 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDTRON ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDTRON ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 0.460 ns ; +; -0.687 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a7 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a7 ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 0.460 ns ; +; -0.687 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a1 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a1 ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 0.460 ns ; +; -0.687 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a4 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a4 ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 0.460 ns ; +; -0.687 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a5 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a5 ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 0.460 ns ; +; -0.687 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a8 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a8 ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 0.460 ns ; +; -0.687 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a0 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a0 ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 0.460 ns ; +; -0.687 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a2 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a2 ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 0.460 ns ; +; -0.687 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a6 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a6 ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 0.460 ns ; +; -0.687 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a9 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a9 ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 0.460 ns ; +; -0.687 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a3 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a3 ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 0.460 ns ; +; -0.687 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[0] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 0.460 ns ; +; -0.687 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[0] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 0.460 ns ; +; 0.298 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[45] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe29 ; CLK33M ; CLK33M ; 0.000 ns ; 1.145 ns ; 1.443 ns ; +; 0.303 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VSYNC ; altddio_out3:inst5|altddio_out:altddio_out_component|ddio_out_31f:auto_generated|ddio_outa[0]~DFFHI ; CLK33M ; CLK33M ; 0.000 ns ; 2.636 ns ; 2.939 ns ; +; 0.305 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[0] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe48 ; CLK33M ; CLK33M ; 0.000 ns ; 1.145 ns ; 1.450 ns ; +; 0.305 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[0] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe28 ; CLK33M ; CLK33M ; 0.000 ns ; 1.145 ns ; 1.450 ns ; +; 0.308 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[0] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe30 ; CLK33M ; CLK33M ; 0.000 ns ; 1.145 ns ; 1.453 ns ; +; 0.318 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[1] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[33] ; CLK33M ; CLK33M ; 0.000 ns ; 1.141 ns ; 1.459 ns ; +; 0.323 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[62] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~porta_datain_reg0 ; CLK33M ; CLK33M ; 0.000 ns ; 1.180 ns ; 1.503 ns ; +; 0.324 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[35] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~porta_datain_reg0 ; CLK33M ; CLK33M ; 0.000 ns ; 1.193 ns ; 1.517 ns ; +; 0.326 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[19] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[35] ; CLK33M ; CLK33M ; 0.000 ns ; 1.145 ns ; 1.471 ns ; +; 0.326 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|SYNC_PIX2 ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FIFO_RDE ; CLK33M ; CLK33M ; 0.000 ns ; 1.168 ns ; 1.494 ns ; +; 0.327 ns ; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|q_b[5] ; Video:Fredi_Aschwanden|lpm_ff3:inst47|lpm_ff:lpm_ff_component|dffs[23] ; CLK33M ; CLK33M ; 0.000 ns ; 0.816 ns ; 1.143 ns ; +; 0.327 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[11] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[11] ; CLK33M ; CLK33M ; 0.000 ns ; 1.149 ns ; 1.476 ns ; +; 0.328 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr1|lpm_shiftreg:lpm_shiftreg_component|dffs[9] ; CLK33M ; CLK33M ; 0.000 ns ; 1.150 ns ; 1.478 ns ; +; 0.331 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[11] ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[11] ; CLK33M ; CLK33M ; 0.000 ns ; 0.803 ns ; 1.134 ns ; +; 0.334 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[79] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~porta_datain_reg0 ; CLK33M ; CLK33M ; 0.000 ns ; 1.180 ns ; 1.514 ns ; +; 0.337 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[12] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[13] ; CLK33M ; CLK33M ; 0.000 ns ; 1.149 ns ; 1.486 ns ; +; 0.340 ns ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe16 ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|external_latency_ffsa[3] ; CLK33M ; CLK33M ; 0.000 ns ; 1.138 ns ; 1.478 ns ; +; 0.343 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|sub_parity7a[1] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|parity6 ; CLK33M ; CLK33M ; 0.000 ns ; 1.162 ns ; 1.505 ns ; +; 0.345 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[19] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[19] ; CLK33M ; CLK33M ; 0.000 ns ; 1.145 ns ; 1.490 ns ; +; 0.346 ns ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe29 ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|external_latency_ffsa[6] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.493 ns ; +; 0.347 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_pmb:wr_ptr|counter_reg_bit[4] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~porta_address_reg0 ; CLK33M ; CLK33M ; 0.000 ns ; 1.517 ns ; 1.864 ns ; +; 0.350 ns ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe48 ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|external_latency_ffsa[23] ; CLK33M ; CLK33M ; 0.000 ns ; 1.152 ns ; 1.502 ns ; +; 0.350 ns ; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_GREEN|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|q_b[3] ; Video:Fredi_Aschwanden|lpm_ff3:inst47|lpm_ff:lpm_ff_component|dffs[13] ; CLK33M ; CLK33M ; 0.000 ns ; 0.817 ns ; 1.167 ns ; +; 0.350 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[67] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe8 ; CLK33M ; CLK33M ; 0.000 ns ; 1.144 ns ; 1.494 ns ; +; 0.351 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[93] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_datain_reg0 ; CLK33M ; CLK33M ; 0.000 ns ; 1.200 ns ; 1.551 ns ; +; 0.352 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[67] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[3] ; CLK33M ; CLK33M ; 0.000 ns ; 1.144 ns ; 1.496 ns ; +; 0.353 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[27] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr6|lpm_shiftreg:lpm_shiftreg_component|dffs[11] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.500 ns ; +; 0.355 ns ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe49 ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|external_latency_ffsa[23] ; CLK33M ; CLK33M ; 0.000 ns ; 1.149 ns ; 1.504 ns ; +; 0.356 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe1a[2] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[11] ; CLK33M ; CLK33M ; 0.000 ns ; 1.139 ns ; 1.495 ns ; +; 0.356 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst9|lpm_ff:lpm_ff_component|dffs[10] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe23 ; CLK33M ; CLK33M ; 0.000 ns ; 1.142 ns ; 1.498 ns ; +; 0.357 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr5|lpm_shiftreg:lpm_shiftreg_component|dffs[3] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr5|lpm_shiftreg:lpm_shiftreg_component|dffs[4] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.504 ns ; +; 0.358 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_pmb:wr_ptr|counter_reg_bit[1] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~porta_address_reg0 ; CLK33M ; CLK33M ; 0.000 ns ; 1.517 ns ; 1.875 ns ; +; 0.359 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe1a[2] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[15] ; CLK33M ; CLK33M ; 0.000 ns ; 1.148 ns ; 1.507 ns ; +; 0.359 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDO_ON ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDTRON ; CLK33M ; CLK33M ; 0.000 ns ; 1.162 ns ; 1.521 ns ; +; 0.364 ns ; Video:Fredi_Aschwanden|lpm_ff3:inst49|lpm_ff:lpm_ff_component|dffs[15] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe32 ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.511 ns ; +; 0.367 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[18] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[50] ; CLK33M ; CLK33M ; 0.000 ns ; 1.150 ns ; 1.517 ns ; +; 0.367 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[82] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe6 ; CLK33M ; CLK33M ; 0.000 ns ; 1.157 ns ; 1.524 ns ; +; 0.367 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[0] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[1] ; CLK33M ; CLK33M ; 0.000 ns ; 1.154 ns ; 1.521 ns ; +; 0.367 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_pmb:wr_ptr|counter_reg_bit[5] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~porta_address_reg0 ; CLK33M ; CLK33M ; 0.000 ns ; 1.515 ns ; 1.882 ns ; +; 0.368 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[55] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[87] ; CLK33M ; CLK33M ; 0.000 ns ; 1.145 ns ; 1.513 ns ; +; 0.368 ns ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe16 ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|external_latency_ffsa[7] ; CLK33M ; CLK33M ; 0.000 ns ; 1.159 ns ; 1.527 ns ; +; 0.371 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[48] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~porta_datain_reg0 ; CLK33M ; CLK33M ; 0.000 ns ; 1.180 ns ; 1.551 ns ; +; 0.375 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[1] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe22 ; CLK33M ; CLK33M ; 0.000 ns ; 1.149 ns ; 1.524 ns ; +; 0.375 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[5] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[6] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.522 ns ; +; 0.376 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSYNC ; altddio_out3:inst6|altddio_out:altddio_out_component|ddio_out_31f:auto_generated|ddio_outa[0]~DFFHI ; CLK33M ; CLK33M ; 0.000 ns ; 2.634 ns ; 3.010 ns ; +; 0.377 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_pmb:wr_ptr|counter_reg_bit[4] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_address_reg0 ; CLK33M ; CLK33M ; 0.000 ns ; 1.517 ns ; 1.894 ns ; +; 0.378 ns ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe9 ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|external_latency_ffsa[1] ; CLK33M ; CLK33M ; 0.000 ns ; 1.150 ns ; 1.528 ns ; +; 0.380 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[67] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr3|lpm_shiftreg:lpm_shiftreg_component|dffs[3] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.527 ns ; +; 0.380 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr5|lpm_shiftreg:lpm_shiftreg_component|dffs[7] ; CLK33M ; CLK33M ; 0.000 ns ; 1.150 ns ; 1.530 ns ; +; 0.380 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[125] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_datain_reg0 ; CLK33M ; CLK33M ; 0.000 ns ; 1.200 ns ; 1.580 ns ; +; 0.381 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe1a[2] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[6] ; CLK33M ; CLK33M ; 0.000 ns ; 1.145 ns ; 1.526 ns ; +; 0.381 ns ; Video:Fredi_Aschwanden|lpm_ff4:inst10|lpm_ff:lpm_ff_component|dffs[3] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe15 ; CLK33M ; CLK33M ; 0.000 ns ; 1.145 ns ; 1.526 ns ; +; 0.381 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr3|lpm_shiftreg:lpm_shiftreg_component|dffs[2] ; CLK33M ; CLK33M ; 0.000 ns ; 1.150 ns ; 1.531 ns ; +; 0.381 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[36] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_datain_reg0 ; CLK33M ; CLK33M ; 0.000 ns ; 1.180 ns ; 1.561 ns ; +; 0.381 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr3|lpm_shiftreg:lpm_shiftreg_component|dffs[14] ; CLK33M ; CLK33M ; 0.000 ns ; 1.150 ns ; 1.531 ns ; +; 0.384 ns ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe13 ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|external_latency_ffsa[2] ; CLK33M ; CLK33M ; 0.000 ns ; 1.150 ns ; 1.534 ns ; +; 0.385 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[16] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~porta_datain_reg0 ; CLK33M ; CLK33M ; 0.000 ns ; 1.195 ns ; 1.580 ns ; +; 0.386 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[1] ; CLK33M ; CLK33M ; 0.000 ns ; 1.154 ns ; 1.540 ns ; +; 0.387 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[5] ; CLK33M ; CLK33M ; 0.000 ns ; 1.154 ns ; 1.541 ns ; +; 0.387 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[6] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[7] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.534 ns ; +; 0.387 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr3|lpm_shiftreg:lpm_shiftreg_component|dffs[10] ; CLK33M ; CLK33M ; 0.000 ns ; 1.154 ns ; 1.541 ns ; +; 0.389 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[26] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[42] ; CLK33M ; CLK33M ; 0.000 ns ; 1.153 ns ; 1.542 ns ; +; 0.389 ns ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe12 ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|external_latency_ffsa[5] ; CLK33M ; CLK33M ; 0.000 ns ; 1.150 ns ; 1.539 ns ; +; 0.389 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[9] ; CLK33M ; CLK33M ; 0.000 ns ; 1.157 ns ; 1.546 ns ; +; 0.389 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[88] ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[88] ; CLK33M ; CLK33M ; 0.000 ns ; 0.830 ns ; 1.219 ns ; +; 0.389 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLUT_MUX_AV[1][0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLUT_MUX_ADR[0] ; CLK33M ; CLK33M ; 0.000 ns ; 1.139 ns ; 1.528 ns ; +; 0.390 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[38] ; Video:Fredi_Aschwanden|lpm_ff4:inst10|lpm_ff:lpm_ff_component|dffs[6] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.537 ns ; +; 0.390 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[6] ; CLK33M ; CLK33M ; 0.000 ns ; 1.154 ns ; 1.544 ns ; +; 0.390 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_pmb:wr_ptr|counter_reg_bit[4] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~porta_address_reg0 ; CLK33M ; CLK33M ; 0.000 ns ; 1.516 ns ; 1.906 ns ; +; 0.393 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[3] ; CLK33M ; CLK33M ; 0.000 ns ; 1.154 ns ; 1.547 ns ; +; 0.393 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[8] ; CLK33M ; CLK33M ; 0.000 ns ; 1.157 ns ; 1.550 ns ; +; 0.393 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[11] ; CLK33M ; CLK33M ; 0.000 ns ; 1.157 ns ; 1.550 ns ; +; 0.394 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[4] ; CLK33M ; CLK33M ; 0.000 ns ; 1.154 ns ; 1.548 ns ; +; 0.394 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[10] ; CLK33M ; CLK33M ; 0.000 ns ; 1.157 ns ; 1.551 ns ; +; 0.394 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLUT_MUX_ADR[3] ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe1a[3] ; CLK33M ; CLK33M ; 0.000 ns ; 1.150 ns ; 1.544 ns ; +; 0.395 ns ; Video:Fredi_Aschwanden|lpm_ff3:inst46|lpm_ff:lpm_ff_component|dffs[20] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe42 ; CLK33M ; CLK33M ; 0.000 ns ; 1.148 ns ; 1.543 ns ; +; 0.395 ns ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe15 ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|external_latency_ffsa[6] ; CLK33M ; CLK33M ; 0.000 ns ; 1.148 ns ; 1.543 ns ; +; 0.395 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_pmb:wr_ptr|counter_reg_bit[1] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_address_reg0 ; CLK33M ; CLK33M ; 0.000 ns ; 1.517 ns ; 1.912 ns ; +; 0.395 ns ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe12 ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|external_latency_ffsa[2] ; CLK33M ; CLK33M ; 0.000 ns ; 1.150 ns ; 1.545 ns ; +; 0.395 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[20] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[36] ; CLK33M ; CLK33M ; 0.000 ns ; 1.146 ns ; 1.541 ns ; +; 0.396 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[2] ; CLK33M ; CLK33M ; 0.000 ns ; 1.154 ns ; 1.550 ns ; +; 0.396 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr3|lpm_shiftreg:lpm_shiftreg_component|dffs[9] ; CLK33M ; CLK33M ; 0.000 ns ; 1.154 ns ; 1.550 ns ; +; 0.396 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[14] ; CLK33M ; CLK33M ; 0.000 ns ; 1.157 ns ; 1.553 ns ; +; 0.397 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr1|lpm_shiftreg:lpm_shiftreg_component|dffs[3] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr1|lpm_shiftreg:lpm_shiftreg_component|dffs[4] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.544 ns ; +; 0.397 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr2|lpm_shiftreg:lpm_shiftreg_component|dffs[7] ; CLK33M ; CLK33M ; 0.000 ns ; 1.157 ns ; 1.554 ns ; +; 0.398 ns ; Video:Fredi_Aschwanden|lpm_ff3:inst46|lpm_ff:lpm_ff_component|dffs[18] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe38 ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.545 ns ; +; 0.399 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[96] ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[96] ; CLK33M ; CLK33M ; 0.000 ns ; 0.821 ns ; 1.220 ns ; +; 0.400 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[54] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[86] ; CLK33M ; CLK33M ; 0.000 ns ; 1.146 ns ; 1.546 ns ; +; 0.400 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|RAND[5] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|RAND[6] ; CLK33M ; CLK33M ; 0.000 ns ; 1.149 ns ; 1.549 ns ; +; 0.403 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[43] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe25 ; CLK33M ; CLK33M ; 0.000 ns ; 1.142 ns ; 1.545 ns ; +; 0.404 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[117] ; Video:Fredi_Aschwanden|lpm_ff1:inst9|lpm_ff:lpm_ff_component|dffs[21] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.551 ns ; +; 0.404 ns ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe33 ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|external_latency_ffsa[7] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.551 ns ; +; 0.405 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[5] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[37] ; CLK33M ; CLK33M ; 0.000 ns ; 1.150 ns ; 1.555 ns ; +; 0.405 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[25] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr6|lpm_shiftreg:lpm_shiftreg_component|dffs[9] ; CLK33M ; CLK33M ; 0.000 ns ; 1.144 ns ; 1.549 ns ; +; 0.405 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[71] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[103] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.552 ns ; +; 0.406 ns ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe39 ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|external_latency_ffsa[18] ; CLK33M ; CLK33M ; 0.000 ns ; 1.150 ns ; 1.556 ns ; +; 0.406 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr1|lpm_shiftreg:lpm_shiftreg_component|dffs[14] ; CLK33M ; CLK33M ; 0.000 ns ; 1.149 ns ; 1.555 ns ; +; 0.408 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[16] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[16] ; CLK33M ; CLK33M ; 0.000 ns ; 1.150 ns ; 1.558 ns ; +; 0.408 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[101] ; Video:Fredi_Aschwanden|lpm_ff1:inst9|lpm_ff:lpm_ff_component|dffs[5] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.555 ns ; +; 0.409 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[13] ; CLK33M ; CLK33M ; 0.000 ns ; 1.149 ns ; 1.558 ns ; +; 0.410 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[111] ; Video:Fredi_Aschwanden|lpm_ff1:inst9|lpm_ff:lpm_ff_component|dffs[15] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.557 ns ; +; 0.411 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe30 ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[14] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.558 ns ; +; 0.411 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[124] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_datain_reg0 ; CLK33M ; CLK33M ; 0.000 ns ; 1.200 ns ; 1.611 ns ; +; 0.412 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe1a[2] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[9] ; CLK33M ; CLK33M ; 0.000 ns ; 1.145 ns ; 1.557 ns ; +; 0.413 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[75] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[107] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.560 ns ; +; 0.413 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[8] ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[8] ; CLK33M ; CLK33M ; 0.000 ns ; 0.819 ns ; 1.232 ns ; +; 0.414 ns ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe20 ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|external_latency_ffsa[4] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.561 ns ; +; 0.414 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[4] ; CLK33M ; CLK33M ; 0.000 ns ; 1.143 ns ; 1.557 ns ; +; 0.414 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[5] ; CLK33M ; CLK33M ; 0.000 ns ; 1.143 ns ; 1.557 ns ; +; 0.414 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[9] ; CLK33M ; CLK33M ; 0.000 ns ; 1.143 ns ; 1.557 ns ; +; 0.414 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[8] ; CLK33M ; CLK33M ; 0.000 ns ; 1.143 ns ; 1.557 ns ; +; 0.414 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[10] ; CLK33M ; CLK33M ; 0.000 ns ; 1.143 ns ; 1.557 ns ; +; 0.414 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[11] ; CLK33M ; CLK33M ; 0.000 ns ; 1.143 ns ; 1.557 ns ; +; 0.414 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[6] ; CLK33M ; CLK33M ; 0.000 ns ; 1.143 ns ; 1.557 ns ; +; 0.414 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[7] ; CLK33M ; CLK33M ; 0.000 ns ; 1.143 ns ; 1.557 ns ; +; 0.414 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[2] ; CLK33M ; CLK33M ; 0.000 ns ; 1.143 ns ; 1.557 ns ; +; 0.414 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[3] ; CLK33M ; CLK33M ; 0.000 ns ; 1.143 ns ; 1.557 ns ; +; 0.414 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[1] ; CLK33M ; CLK33M ; 0.000 ns ; 1.143 ns ; 1.557 ns ; +; 0.415 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe1a[2] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[7] ; CLK33M ; CLK33M ; 0.000 ns ; 1.140 ns ; 1.555 ns ; +; 0.415 ns ; Video:Fredi_Aschwanden|altdpram0:ST_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated|q_b[1] ; Video:Fredi_Aschwanden|lpm_ff3:inst52|lpm_ff:lpm_ff_component|dffs[6] ; CLK33M ; CLK33M ; 0.000 ns ; 0.810 ns ; 1.225 ns ; +; 0.415 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[114] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[2] ; CLK33M ; CLK33M ; 0.000 ns ; 1.145 ns ; 1.560 ns ; +; 0.415 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr3|lpm_shiftreg:lpm_shiftreg_component|dffs[10] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr3|lpm_shiftreg:lpm_shiftreg_component|dffs[11] ; CLK33M ; CLK33M ; 0.000 ns ; 1.140 ns ; 1.555 ns ; +; 0.415 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[103] ; Video:Fredi_Aschwanden|lpm_ff1:inst9|lpm_ff:lpm_ff_component|dffs[7] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.562 ns ; +; 0.416 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[49] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[81] ; CLK33M ; CLK33M ; 0.000 ns ; 1.150 ns ; 1.566 ns ; +; 0.416 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[1] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe42 ; CLK33M ; CLK33M ; 0.000 ns ; 1.151 ns ; 1.567 ns ; +; 0.416 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[119] ; Video:Fredi_Aschwanden|lpm_ff1:inst9|lpm_ff:lpm_ff_component|dffs[23] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.563 ns ; +; 0.417 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[1] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe26 ; CLK33M ; CLK33M ; 0.000 ns ; 1.151 ns ; 1.568 ns ; +; 0.417 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[107] ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[107] ; CLK33M ; CLK33M ; 0.000 ns ; 0.803 ns ; 1.220 ns ; +; 0.418 ns ; Video:Fredi_Aschwanden|altdpram0:ST_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated|q_b[0] ; Video:Fredi_Aschwanden|lpm_ff3:inst52|lpm_ff:lpm_ff_component|dffs[5] ; CLK33M ; CLK33M ; 0.000 ns ; 0.810 ns ; 1.228 ns ; +; 0.418 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VSYNC ; altddio_out3:inst5|altddio_out:altddio_out_component|ddio_out_31f:auto_generated|ddio_outa[0]~DFFLO ; CLK33M ; CLK33M ; 0.000 ns ; 2.637 ns ; 3.055 ns ; +; 0.419 ns ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe40 ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|external_latency_ffsa[19] ; CLK33M ; CLK33M ; 0.000 ns ; 1.157 ns ; 1.576 ns ; +; 0.420 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[77] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe28 ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.567 ns ; +; 0.420 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr7|lpm_shiftreg:lpm_shiftreg_component|dffs[5] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr7|lpm_shiftreg:lpm_shiftreg_component|dffs[6] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.567 ns ; +; 0.422 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[19] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_datain_reg0 ; CLK33M ; CLK33M ; 0.000 ns ; 1.180 ns ; 1.602 ns ; +; 0.423 ns ; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|q_b[1] ; Video:Fredi_Aschwanden|lpm_ff3:inst47|lpm_ff:lpm_ff_component|dffs[19] ; CLK33M ; CLK33M ; 0.000 ns ; 0.818 ns ; 1.241 ns ; +; 0.423 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_pmb:wr_ptr|counter_reg_bit[4] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~porta_address_reg0 ; CLK33M ; CLK33M ; 0.000 ns ; 1.515 ns ; 1.938 ns ; +; 0.424 ns ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe41 ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|external_latency_ffsa[19] ; CLK33M ; CLK33M ; 0.000 ns ; 1.157 ns ; 1.581 ns ; +; 0.424 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[9] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[10] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.571 ns ; +; 0.425 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[46] ; Video:Fredi_Aschwanden|lpm_ff4:inst10|lpm_ff:lpm_ff_component|dffs[14] ; CLK33M ; CLK33M ; 0.000 ns ; 1.138 ns ; 1.563 ns ; +; 0.425 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr5|lpm_shiftreg:lpm_shiftreg_component|dffs[12] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr5|lpm_shiftreg:lpm_shiftreg_component|dffs[13] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.572 ns ; +; 0.426 ns ; Video:Fredi_Aschwanden|lpm_ff4:inst10|lpm_ff:lpm_ff_component|dffs[8] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe29 ; CLK33M ; CLK33M ; 0.000 ns ; 1.139 ns ; 1.565 ns ; +; 0.427 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[28] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_datain_reg0 ; CLK33M ; CLK33M ; 0.000 ns ; 1.200 ns ; 1.627 ns ; +; 0.428 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[30] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~porta_datain_reg0 ; CLK33M ; CLK33M ; 0.000 ns ; 1.180 ns ; 1.608 ns ; +; 0.428 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[13] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[14] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.575 ns ; +; 0.429 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLUT_MUX_ADR[1] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe22 ; CLK33M ; CLK33M ; 0.000 ns ; 1.148 ns ; 1.577 ns ; +; 0.429 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[100] ; Video:Fredi_Aschwanden|lpm_ff1:inst9|lpm_ff:lpm_ff_component|dffs[4] ; CLK33M ; CLK33M ; 0.000 ns ; 1.145 ns ; 1.574 ns ; +; 0.429 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr1|lpm_shiftreg:lpm_shiftreg_component|dffs[12] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr1|lpm_shiftreg:lpm_shiftreg_component|dffs[13] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.576 ns ; +; 0.429 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VERZ[0][3] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VERZ[0][4] ; CLK33M ; CLK33M ; 0.000 ns ; 1.151 ns ; 1.580 ns ; +; 0.430 ns ; Video:Fredi_Aschwanden|lpm_ff3:inst47|lpm_ff:lpm_ff_component|dffs[12] ; Video:Fredi_Aschwanden|lpm_ff3:inst46|lpm_ff:lpm_ff_component|dffs[12] ; CLK33M ; CLK33M ; 0.000 ns ; 1.149 ns ; 1.579 ns ; +; 0.430 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[44] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_datain_reg0 ; CLK33M ; CLK33M ; 0.000 ns ; 1.180 ns ; 1.610 ns ; +; 0.431 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[13] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe29 ; CLK33M ; CLK33M ; 0.000 ns ; 1.144 ns ; 1.575 ns ; +; 0.431 ns ; Video:Fredi_Aschwanden|lpm_ff3:inst52|lpm_ff:lpm_ff_component|dffs[21] ; Video:Fredi_Aschwanden|lpm_ff3:inst49|lpm_ff:lpm_ff_component|dffs[21] ; CLK33M ; CLK33M ; 0.000 ns ; 1.163 ns ; 1.594 ns ; +; 0.431 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[13] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[45] ; CLK33M ; CLK33M ; 0.000 ns ; 1.139 ns ; 1.570 ns ; +; 0.431 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[1] ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe9 ; CLK33M ; CLK33M ; 0.000 ns ; 1.153 ns ; 1.584 ns ; +; 0.432 ns ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe37 ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|external_latency_ffsa[17] ; CLK33M ; CLK33M ; 0.000 ns ; 1.150 ns ; 1.582 ns ; +; 0.432 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLUT_MUX_ADR[1] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe33 ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.579 ns ; +; 0.432 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[8] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[40] ; CLK33M ; CLK33M ; 0.000 ns ; 1.146 ns ; 1.578 ns ; +; 0.433 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe4 ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[1] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.580 ns ; +; 0.433 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr4|lpm_shiftreg:lpm_shiftreg_component|dffs[0] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr4|lpm_shiftreg:lpm_shiftreg_component|dffs[1] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.580 ns ; +; 0.434 ns ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe24 ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|external_latency_ffsa[11] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.581 ns ; +; 0.434 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[109] ; Video:Fredi_Aschwanden|lpm_ff1:inst9|lpm_ff:lpm_ff_component|dffs[13] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.581 ns ; +; 0.434 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[1] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[1] ; CLK33M ; CLK33M ; 0.000 ns ; 1.153 ns ; 1.587 ns ; +; 0.434 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[0] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[16] ; CLK33M ; CLK33M ; 0.000 ns ; 1.146 ns ; 1.580 ns ; +; 0.434 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[12] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_datain_reg0 ; CLK33M ; CLK33M ; 0.000 ns ; 1.200 ns ; 1.634 ns ; +; 0.436 ns ; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|q_b[3] ; Video:Fredi_Aschwanden|lpm_ff3:inst47|lpm_ff:lpm_ff_component|dffs[21] ; CLK33M ; CLK33M ; 0.000 ns ; 0.818 ns ; 1.254 ns ; +; 0.436 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[106] ; Video:Fredi_Aschwanden|lpm_ff1:inst9|lpm_ff:lpm_ff_component|dffs[10] ; CLK33M ; CLK33M ; 0.000 ns ; 1.146 ns ; 1.582 ns ; +; 0.436 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_pmb:wr_ptr|counter_reg_bit[6] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~porta_address_reg0 ; CLK33M ; CLK33M ; 0.000 ns ; 1.517 ns ; 1.953 ns ; +; 0.436 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[117] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_datain_reg0 ; CLK33M ; CLK33M ; 0.000 ns ; 1.200 ns ; 1.636 ns ; +; 0.436 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[5] ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe25 ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.583 ns ; +; 0.437 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[33] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[65] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.584 ns ; +; 0.437 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[3] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[35] ; CLK33M ; CLK33M ; 0.000 ns ; 1.150 ns ; 1.587 ns ; +; 0.438 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[17] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[49] ; CLK33M ; CLK33M ; 0.000 ns ; 1.148 ns ; 1.586 ns ; +; 0.438 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[99] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe8 ; CLK33M ; CLK33M ; 0.000 ns ; 1.141 ns ; 1.579 ns ; +; 0.438 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr4|lpm_shiftreg:lpm_shiftreg_component|dffs[12] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr4|lpm_shiftreg:lpm_shiftreg_component|dffs[13] ; CLK33M ; CLK33M ; 0.000 ns ; 1.147 ns ; 1.585 ns ; +; Timing analysis restricted to 200 rows. ; To change the limit use Settings (Assignments menu) ; ; ; ; ; ; ; ++-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------+----------+----------------------------+----------------------------+--------------------------+ + + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Clock Hold: 'MAIN_CLK' ; ++-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------+----------+----------------------------+----------------------------+--------------------------+ +; Minimum Slack ; From ; To ; From Clock ; To Clock ; Required Hold Relationship ; Required Shortest P2P Time ; Actual Shortest P2P Time ; ++-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------+----------+----------------------------+----------------------------+--------------------------+ +; -3.786 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VCT[6] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VERZ[1][0] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 5.716 ns ; 1.930 ns ; +; -3.611 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[7] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[0] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 5.756 ns ; 2.145 ns ; +; -3.448 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VCT[5] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VERZ[2][0] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 5.709 ns ; 2.261 ns ; +; -3.293 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[25] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|RAND[0] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 4.327 ns ; 1.034 ns ; +; -3.012 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[1] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 5.706 ns ; 2.694 ns ; +; -2.912 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[0] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 5.706 ns ; 2.794 ns ; +; -2.048 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[6] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSYNC_I[6] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.740 ns ; 1.692 ns ; +; -1.996 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[19] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe41 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.143 ns ; 1.147 ns ; +; -1.985 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[2] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSYNC_I[2] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.356 ns ; 1.371 ns ; +; -1.961 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[15] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VERZ[2][0] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.104 ns ; 1.143 ns ; +; -1.958 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[23] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe49 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.142 ns ; 1.184 ns ; +; -1.934 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[5] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSYNC_I[5] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.356 ns ; 1.422 ns ; +; -1.923 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[3] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSYNC_I[3] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.356 ns ; 1.433 ns ; +; -1.867 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[21] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe45 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.143 ns ; 1.276 ns ; +; -1.842 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[4] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSYNC_I[4] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.356 ns ; 1.514 ns ; +; -1.835 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[11] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe25 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.390 ns ; 1.555 ns ; +; -1.795 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[13] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe29 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.392 ns ; 1.597 ns ; +; -1.749 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[10] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe23 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.390 ns ; 1.641 ns ; +; -1.745 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[12] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe27 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.392 ns ; 1.647 ns ; +; -1.641 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSYNC_I[0] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.348 ns ; 1.707 ns ; +; -1.595 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[2] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[1] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.204 ns ; 1.609 ns ; +; -1.569 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[22] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe47 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.142 ns ; 1.573 ns ; +; -1.508 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[15] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VERZ[1][0] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.111 ns ; 1.603 ns ; +; -1.350 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[14] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe31 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.398 ns ; 2.048 ns ; +; -1.326 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[1] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSYNC_I[1] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.623 ns ; 2.297 ns ; +; -1.242 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[20] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe43 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.145 ns ; 1.903 ns ; +; -1.234 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VMD[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|DOP_ZEI ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.973 ns ; 0.739 ns ; +; -1.159 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[5] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe13 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.081 ns ; 1.922 ns ; +; -1.152 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[16] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe35 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.141 ns ; 1.989 ns ; +; -1.113 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[7] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSYNC_I[7] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.740 ns ; 2.627 ns ; +; -1.095 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[17] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe37 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.141 ns ; 2.046 ns ; +; -1.072 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[8] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe19 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.362 ns ; 2.290 ns ; +; -1.055 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[18] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe39 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.141 ns ; 2.086 ns ; +; -1.001 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[6] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|DOP_ZEI ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.966 ns ; 0.965 ns ; +; -0.993 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VCT[2] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[5] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 2.303 ns ; 1.310 ns ; +; -0.961 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[6] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe15 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.081 ns ; 2.120 ns ; +; -0.918 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[15] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe33 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.364 ns ; 2.446 ns ; +; -0.893 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[6] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[5] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 2.350 ns ; 1.457 ns ; +; -0.849 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[9] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[0] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 2.563 ns ; 1.714 ns ; +; -0.825 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[7] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe17 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.091 ns ; 2.266 ns ; +; -0.819 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[1] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe5 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.080 ns ; 2.261 ns ; +; -0.770 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[0] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe3 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.080 ns ; 2.310 ns ; +; -0.743 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[9] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[7] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 2.179 ns ; 1.436 ns ; +; -0.742 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[9] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[6] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 2.179 ns ; 1.437 ns ; +; -0.692 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[3] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe9 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.089 ns ; 2.397 ns ; +; -0.675 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDE[10] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDO_ZL ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.521 ns ; 2.846 ns ; +; -0.672 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.132 ns ; 0.460 ns ; +; -0.672 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[5] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[5] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.132 ns ; 0.460 ns ; +; -0.672 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[4] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[4] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.132 ns ; 0.460 ns ; +; -0.672 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[3] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[3] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.132 ns ; 0.460 ns ; +; -0.672 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[2] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[2] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.132 ns ; 0.460 ns ; +; -0.672 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[1] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[1] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.132 ns ; 0.460 ns ; +; -0.672 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[0] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[0] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.132 ns ; 0.460 ns ; +; -0.672 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|rd_ptr_lsb ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|rd_ptr_lsb ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.132 ns ; 0.460 ns ; +; -0.672 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|DISP_ON ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|DISP_ON ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.132 ns ; 0.460 ns ; +; -0.672 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSYNC_I[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSYNC_I[0] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.132 ns ; 0.460 ns ; +; -0.672 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VSYNC_I[1] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VSYNC_I[1] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.132 ns ; 0.460 ns ; +; -0.672 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VSYNC_I[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VSYNC_I[0] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.132 ns ; 0.460 ns ; +; -0.672 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|SUB_PIXEL_CNT[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|SUB_PIXEL_CNT[0] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.132 ns ; 0.460 ns ; +; -0.672 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDTRON ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDTRON ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.132 ns ; 0.460 ns ; +; -0.672 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a7 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a7 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.132 ns ; 0.460 ns ; +; -0.672 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a1 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a1 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.132 ns ; 0.460 ns ; +; -0.672 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a4 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a4 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.132 ns ; 0.460 ns ; +; -0.672 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a5 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a5 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.132 ns ; 0.460 ns ; +; -0.672 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a8 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a8 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.132 ns ; 0.460 ns ; +; -0.672 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a0 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a0 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.132 ns ; 0.460 ns ; +; -0.672 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a2 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a2 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.132 ns ; 0.460 ns ; +; -0.672 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a6 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a6 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.132 ns ; 0.460 ns ; +; -0.672 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a9 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a9 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.132 ns ; 0.460 ns ; +; -0.672 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a3 ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|counter5a3 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.132 ns ; 0.460 ns ; +; -0.672 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VHCNT[0] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.132 ns ; 0.460 ns ; +; -0.672 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VVCNT[0] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.132 ns ; 0.460 ns ; +; -0.668 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[9] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDO_OFF ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.643 ns ; 2.975 ns ; +; -0.658 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[9] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[5] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 2.563 ns ; 1.905 ns ; +; -0.655 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[8] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[5] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 2.563 ns ; 1.908 ns ; +; -0.591 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[4] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe11 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.081 ns ; 2.490 ns ; +; -0.569 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[5] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 2.300 ns ; 1.731 ns ; +; -0.553 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[9] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[1] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 2.296 ns ; 1.743 ns ; +; -0.530 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[9] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[4] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 2.563 ns ; 2.033 ns ; +; -0.447 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[7] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[5] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 2.350 ns ; 1.903 ns ; +; -0.441 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VMD[2] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[1] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 2.090 ns ; 1.649 ns ; +; -0.422 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[4] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 2.300 ns ; 1.878 ns ; +; -0.420 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[0] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 2.300 ns ; 1.880 ns ; +; -0.407 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[2] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe7 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.091 ns ; 2.684 ns ; +; -0.353 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[8] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[4] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 2.563 ns ; 2.210 ns ; +; -0.320 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[3] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 2.300 ns ; 1.980 ns ; +; -0.319 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[2] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 2.300 ns ; 1.981 ns ; +; -0.198 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[1] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDO_OFF ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.526 ns ; 3.328 ns ; +; -0.184 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDO_ZL ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 5.709 ns ; 5.525 ns ; +; -0.155 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[2] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FIFO_RDE ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.216 ns ; 3.061 ns ; +; -0.143 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[3] ; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ram_block1a0~portb_address_reg0 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 4.133 ns ; 3.990 ns ; +; -0.133 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 5.718 ns ; 5.585 ns ; +; -0.126 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[2] ; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ram_block1a0~portb_address_reg0 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 4.133 ns ; 4.007 ns ; +; -0.126 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDO_OFF ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 5.685 ns ; 5.559 ns ; +; -0.125 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[2] ; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ram_block1a0~portb_address_reg0 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 4.129 ns ; 4.004 ns ; +; -0.116 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[0] ; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ram_block1a0~portb_address_reg0 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 4.133 ns ; 4.017 ns ; +; -0.097 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSYNC_START ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 5.690 ns ; 5.593 ns ; +; -0.097 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[2] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDO_ON ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.411 ns ; 3.314 ns ; +; -0.092 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[3] ; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ram_block1a0~portb_address_reg0 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 4.129 ns ; 4.037 ns ; +; -0.070 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[11] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|DPO_ON ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.885 ns ; 3.815 ns ; +; -0.067 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HHT[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.214 ns ; 3.147 ns ; +; -0.065 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[11] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDO_ON ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.849 ns ; 3.784 ns ; +; -0.060 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[1] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDO_ON ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.917 ns ; 3.857 ns ; +; -0.059 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[9] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe21 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.363 ns ; 3.304 ns ; +; -0.046 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[26] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 4.311 ns ; 4.265 ns ; +; -0.025 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDO_ON ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 5.690 ns ; 5.665 ns ; +; -0.022 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDO_ON ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.411 ns ; 3.389 ns ; +; -0.006 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VCT[2] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[1] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 2.036 ns ; 2.030 ns ; +; 0.007 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|DOP_ZEI ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|INTER_ZEI ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.760 ns ; 3.767 ns ; +; 0.026 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 5.689 ns ; 5.715 ns ; +; 0.067 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDO_OFF ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.526 ns ; 3.593 ns ; +; 0.072 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[7] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDO_OFF ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.526 ns ; 3.598 ns ; +; 0.091 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HSS[7] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSYNC_START ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.637 ns ; 3.728 ns ; +; 0.093 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[10] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|DPO_ON ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.885 ns ; 3.978 ns ; +; 0.093 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VR_FRQ[2] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[1] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 0.961 ns ; 1.054 ns ; +; 0.097 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VCT[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[1] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 2.036 ns ; 2.133 ns ; +; 0.104 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FIFO_RDE ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 5.718 ns ; 5.822 ns ; +; 0.118 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[11] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDO_OFF ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.643 ns ; 3.761 ns ; +; 0.119 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VCT[2] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[3] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 2.303 ns ; 2.422 ns ; +; 0.119 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VCT[2] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[2] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 2.303 ns ; 2.422 ns ; +; 0.121 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HHT[5] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 4.598 ns ; 4.719 ns ; +; 0.123 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[8] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDO_ON ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.849 ns ; 3.972 ns ; +; 0.132 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[7] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[1] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 2.083 ns ; 2.215 ns ; +; 0.150 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBB[3] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|DPO_OFF ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.815 ns ; 3.965 ns ; +; 0.151 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[0] ; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ram_block1a0~portb_address_reg0 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 4.129 ns ; 4.280 ns ; +; 0.158 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VR_FRQ[1] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[0] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.228 ns ; 1.386 ns ; +; 0.167 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VCT[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[4] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 2.303 ns ; 2.470 ns ; +; 0.168 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[16] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.817 ns ; 3.985 ns ; +; 0.177 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VMD[2] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[5] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 2.357 ns ; 2.534 ns ; +; 0.181 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|DPO_ON ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 5.689 ns ; 5.870 ns ; +; 0.184 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[0] ; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ram_block1a0~portb_address_reg0 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 6.017 ns ; 6.201 ns ; +; 0.186 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBB[11] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|DPO_OFF ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.615 ns ; 3.801 ns ; +; 0.188 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[10] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDO_ON ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.849 ns ; 4.037 ns ; +; 0.191 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[3] ; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_GREEN|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ram_block1a0~portb_address_reg0 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 4.132 ns ; 4.323 ns ; +; 0.192 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[0] ; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_GREEN|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ram_block1a0~portb_address_reg0 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 4.132 ns ; 4.324 ns ; +; 0.195 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBB[4] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|DPO_OFF ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.498 ns ; 3.693 ns ; +; 0.216 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[16] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.685 ns ; 3.901 ns ; +; 0.226 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HHT[4] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 4.598 ns ; 4.824 ns ; +; 0.231 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[2] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 5.707 ns ; 5.938 ns ; +; 0.235 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[0] ; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ram_block1a0~portb_address_reg0 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 6.013 ns ; 6.248 ns ; +; 0.243 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[1] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|DPO_ON ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.459 ns ; 3.702 ns ; +; 0.261 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[7] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.916 ns ; 2.177 ns ; +; 0.262 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[6] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.916 ns ; 2.178 ns ; +; 0.265 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[2] ; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_GREEN|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ram_block1a0~portb_address_reg0 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 4.132 ns ; 4.397 ns ; +; 0.266 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|DPO_ZL ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 5.707 ns ; 5.973 ns ; +; 0.291 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[5] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDO_ON ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.917 ns ; 4.208 ns ; +; 0.311 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[7] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDO_ON ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.411 ns ; 3.722 ns ; +; 0.313 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[45] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe29 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.130 ns ; 1.443 ns ; +; 0.314 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[1] ; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ram_block1a0~portb_address_reg0 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 4.133 ns ; 4.447 ns ; +; 0.315 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBB[7] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|DPO_OFF ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.498 ns ; 3.813 ns ; +; 0.315 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[1] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 2.033 ns ; 2.348 ns ; +; 0.318 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VSYNC ; altddio_out3:inst5|altddio_out:altddio_out_component|ddio_out_31f:auto_generated|ddio_outa[0]~DFFHI ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 2.621 ns ; 2.939 ns ; +; 0.320 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[0] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe48 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.130 ns ; 1.450 ns ; +; 0.320 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[0] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe28 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.130 ns ; 1.450 ns ; +; 0.323 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCSEL[0] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe30 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.130 ns ; 1.453 ns ; +; 0.324 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[7] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FIFO_RDE ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 5.768 ns ; 6.092 ns ; +; 0.333 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[1] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[33] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.126 ns ; 1.459 ns ; +; 0.338 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[62] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~porta_datain_reg0 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.165 ns ; 1.503 ns ; +; 0.339 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[35] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~porta_datain_reg0 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.178 ns ; 1.517 ns ; +; 0.341 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[19] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[35] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.130 ns ; 1.471 ns ; +; 0.341 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|SYNC_PIX2 ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FIFO_RDE ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.153 ns ; 1.494 ns ; +; 0.342 ns ; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_RED|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|q_b[5] ; Video:Fredi_Aschwanden|lpm_ff3:inst47|lpm_ff:lpm_ff_component|dffs[23] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 0.801 ns ; 1.143 ns ; +; 0.342 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[11] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[11] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.134 ns ; 1.476 ns ; +; 0.343 ns ; Video:Fredi_Aschwanden|inst95 ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr1|lpm_shiftreg:lpm_shiftreg_component|dffs[9] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.135 ns ; 1.478 ns ; +; 0.344 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HSS[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSYNC_START ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.637 ns ; 3.981 ns ; +; 0.346 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[11] ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[11] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 0.788 ns ; 1.134 ns ; +; 0.347 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[10] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDO_OFF ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.643 ns ; 3.990 ns ; +; 0.349 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[79] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a0~porta_datain_reg0 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.165 ns ; 1.514 ns ; +; 0.350 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VCT[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[5] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 2.303 ns ; 2.653 ns ; +; 0.352 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[12] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr0|lpm_shiftreg:lpm_shiftreg_component|dffs[13] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.134 ns ; 1.486 ns ; +; 0.354 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[7] ; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|ram_block1a0~portb_address_reg0 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 6.067 ns ; 6.421 ns ; +; 0.355 ns ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe16 ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|external_latency_ffsa[3] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.123 ns ; 1.478 ns ; +; 0.355 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBB[5] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|DPO_OFF ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.498 ns ; 3.853 ns ; +; 0.358 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|sub_parity7a[1] ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_s57:rdptr_g1p|parity6 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.147 ns ; 1.505 ns ; +; 0.360 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[19] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[19] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.130 ns ; 1.490 ns ; +; 0.360 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[4] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDO_ON ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.411 ns ; 3.771 ns ; +; 0.361 ns ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|dffe29 ; Video:Fredi_Aschwanden|lpm_mux2:inst25|lpm_mux:lpm_mux_component|mux_mpe:auto_generated|external_latency_ffsa[6] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.132 ns ; 1.493 ns ; +; 0.362 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_pmb:wr_ptr|counter_reg_bit[4] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~porta_address_reg0 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.502 ns ; 1.864 ns ; +; 0.365 ns ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe48 ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|external_latency_ffsa[23] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.137 ns ; 1.502 ns ; +; 0.365 ns ; Video:Fredi_Aschwanden|altdpram1:FALCON_CLUT_GREEN|altsyncram:altsyncram_component|altsyncram_lf92:auto_generated|q_b[3] ; Video:Fredi_Aschwanden|lpm_ff3:inst47|lpm_ff:lpm_ff_component|dffs[13] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 0.802 ns ; 1.167 ns ; +; 0.365 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[67] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe8 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.129 ns ; 1.494 ns ; +; 0.366 ns ; Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|altsyncram_tl31:fifo_ram|q_b[93] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a3~porta_datain_reg0 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.185 ns ; 1.551 ns ; +; 0.366 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VMD[2] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDO_ON ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 5.747 ns ; 6.113 ns ; +; 0.367 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[67] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[3] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.129 ns ; 1.496 ns ; +; 0.367 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VR_FRQ[5] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSY_LEN[5] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 0.868 ns ; 1.235 ns ; +; 0.367 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VMD[2] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|LAST ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 5.746 ns ; 6.113 ns ; +; 0.368 ns ; Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[27] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr6|lpm_shiftreg:lpm_shiftreg_component|dffs[11] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.132 ns ; 1.500 ns ; +; 0.368 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HSS[10] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSYNC_START ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 4.264 ns ; 4.632 ns ; +; 0.370 ns ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe49 ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|external_latency_ffsa[23] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.134 ns ; 1.504 ns ; +; 0.371 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe1a[2] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[11] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.124 ns ; 1.495 ns ; +; 0.371 ns ; Video:Fredi_Aschwanden|lpm_ff1:inst9|lpm_ff:lpm_ff_component|dffs[10] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe23 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.127 ns ; 1.498 ns ; +; 0.372 ns ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr5|lpm_shiftreg:lpm_shiftreg_component|dffs[3] ; Video:Fredi_Aschwanden|lpm_shiftreg0:sr5|lpm_shiftreg:lpm_shiftreg_component|dffs[4] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.132 ns ; 1.504 ns ; +; 0.373 ns ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|cntr_pmb:wr_ptr|counter_reg_bit[1] ; Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a5~porta_address_reg0 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.502 ns ; 1.875 ns ; +; 0.374 ns ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|dffe1a[2] ; Video:Fredi_Aschwanden|lpm_mux1:inst24|lpm_mux:lpm_mux_component|mux_npe:auto_generated|external_latency_ffsa[15] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.133 ns ; 1.507 ns ; +; 0.374 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VSYNC_START ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 5.706 ns ; 6.080 ns ; +; 0.374 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDO_ON ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDTRON ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.147 ns ; 1.521 ns ; +; 0.376 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|DPO_OFF ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 5.690 ns ; 6.066 ns ; +; 0.379 ns ; Video:Fredi_Aschwanden|lpm_ff3:inst49|lpm_ff:lpm_ff_component|dffs[15] ; Video:Fredi_Aschwanden|lpm_mux6:inst7|lpm_mux:lpm_mux_component|mux_kpe:auto_generated|dffe32 ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.132 ns ; 1.511 ns ; +; 0.381 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDO_ON ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 3.460 ns ; 3.841 ns ; +; 0.382 ns ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[18] ; Video:Fredi_Aschwanden|lpm_mux0:inst21|lpm_mux:lpm_mux_component|mux_gpe:auto_generated|external_latency_ffsa[50] ; MAIN_CLK ; MAIN_CLK ; 0.000 ns ; 1.135 ns ; 1.517 ns ; +; Timing analysis restricted to 200 rows. ; To change the limit use Settings (Assignments menu) ; ; ; ; ; ; ; ++-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------+----------+----------------------------+----------------------------+--------------------------+ + + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; tsu ; ++-----------------------------------------+-----------------------------------------------------+------------+-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+----------+ +; Slack ; Required tsu ; Actual tsu ; From ; To ; To Clock ; ++-----------------------------------------+-----------------------------------------------------+------------+-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+----------+ +; -4.528 ns ; 1.000 ns ; 5.528 ns ; MAIN_CLK ; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|idle_state ; MAIN_CLK ; +; -4.169 ns ; 1.000 ns ; 5.169 ns ; VD[19] ; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[19] ; MAIN_CLK ; +; -4.134 ns ; 1.000 ns ; 5.134 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[15] ; MAIN_CLK ; +; -4.083 ns ; 1.000 ns ; 5.083 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[18] ; MAIN_CLK ; +; -4.051 ns ; 1.000 ns ; 5.051 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[0] ; MAIN_CLK ; +; -4.051 ns ; 1.000 ns ; 5.051 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[20] ; MAIN_CLK ; +; -4.051 ns ; 1.000 ns ; 5.051 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[22] ; MAIN_CLK ; +; -4.051 ns ; 1.000 ns ; 5.051 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[23] ; MAIN_CLK ; +; -4.051 ns ; 1.000 ns ; 5.051 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[25] ; MAIN_CLK ; +; -4.047 ns ; 1.000 ns ; 5.047 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[0] ; MAIN_CLK ; +; -4.047 ns ; 1.000 ns ; 5.047 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[20] ; MAIN_CLK ; +; -4.047 ns ; 1.000 ns ; 5.047 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[21] ; MAIN_CLK ; +; -4.047 ns ; 1.000 ns ; 5.047 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[22] ; MAIN_CLK ; +; -4.047 ns ; 1.000 ns ; 5.047 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[23] ; MAIN_CLK ; +; -4.047 ns ; 1.000 ns ; 5.047 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[25] ; MAIN_CLK ; +; -4.022 ns ; 1.000 ns ; 5.022 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[3] ; MAIN_CLK ; +; -4.022 ns ; 1.000 ns ; 5.022 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[9] ; MAIN_CLK ; +; -4.022 ns ; 1.000 ns ; 5.022 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[10] ; MAIN_CLK ; +; -3.961 ns ; 1.000 ns ; 4.961 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[7] ; MAIN_CLK ; +; -3.961 ns ; 1.000 ns ; 4.961 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[29] ; MAIN_CLK ; +; -3.961 ns ; 1.000 ns ; 4.961 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[30] ; MAIN_CLK ; +; -3.961 ns ; 1.000 ns ; 4.961 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[31] ; MAIN_CLK ; +; -3.956 ns ; 1.000 ns ; 4.956 ns ; VD[27] ; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[27] ; MAIN_CLK ; +; -3.930 ns ; 1.000 ns ; 4.930 ns ; nINDEX ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|MO ; CLK33M ; +; -3.930 ns ; 1.000 ns ; 4.930 ns ; VD[31] ; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[31] ; MAIN_CLK ; +; -3.927 ns ; 1.000 ns ; 4.927 ns ; VD[1] ; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[1] ; MAIN_CLK ; +; -3.927 ns ; 1.000 ns ; 4.927 ns ; VD[9] ; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[9] ; MAIN_CLK ; +; -3.913 ns ; 1.000 ns ; 4.913 ns ; VD[2] ; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[2] ; MAIN_CLK ; +; -3.912 ns ; 1.000 ns ; 4.912 ns ; VD[12] ; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[12] ; MAIN_CLK ; +; -3.907 ns ; 1.000 ns ; 4.907 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[28] ; MAIN_CLK ; +; -3.907 ns ; 1.000 ns ; 4.907 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[29] ; MAIN_CLK ; +; -3.907 ns ; 1.000 ns ; 4.907 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[30] ; MAIN_CLK ; +; -3.907 ns ; 1.000 ns ; 4.907 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[31] ; MAIN_CLK ; +; -3.903 ns ; 1.000 ns ; 4.903 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[12] ; MAIN_CLK ; +; -3.903 ns ; 1.000 ns ; 4.903 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[13] ; MAIN_CLK ; +; -3.903 ns ; 1.000 ns ; 4.903 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[14] ; MAIN_CLK ; +; -3.897 ns ; 1.000 ns ; 4.897 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[2] ; MAIN_CLK ; +; -3.897 ns ; 1.000 ns ; 4.897 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[3] ; MAIN_CLK ; +; -3.897 ns ; 1.000 ns ; 4.897 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[4] ; MAIN_CLK ; +; -3.897 ns ; 1.000 ns ; 4.897 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[5] ; MAIN_CLK ; +; -3.897 ns ; 1.000 ns ; 4.897 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[6] ; MAIN_CLK ; +; -3.897 ns ; 1.000 ns ; 4.897 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[8] ; MAIN_CLK ; +; -3.897 ns ; 1.000 ns ; 4.897 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[9] ; MAIN_CLK ; +; -3.897 ns ; 1.000 ns ; 4.897 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[18] ; MAIN_CLK ; +; -3.885 ns ; 1.000 ns ; 4.885 ns ; VD[20] ; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[20] ; MAIN_CLK ; +; -3.883 ns ; 1.000 ns ; 4.883 ns ; VD[25] ; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[25] ; MAIN_CLK ; +; -3.869 ns ; 1.000 ns ; 4.869 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[1] ; MAIN_CLK ; +; -3.869 ns ; 1.000 ns ; 4.869 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[6] ; MAIN_CLK ; +; -3.869 ns ; 1.000 ns ; 4.869 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[19] ; MAIN_CLK ; +; -3.869 ns ; 1.000 ns ; 4.869 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[24] ; MAIN_CLK ; +; -3.869 ns ; 1.000 ns ; 4.869 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[26] ; MAIN_CLK ; +; -3.869 ns ; 1.000 ns ; 4.869 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[27] ; MAIN_CLK ; +; -3.860 ns ; 1.000 ns ; 4.860 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[10] ; MAIN_CLK ; +; -3.860 ns ; 1.000 ns ; 4.860 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[11] ; MAIN_CLK ; +; -3.860 ns ; 1.000 ns ; 4.860 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[12] ; MAIN_CLK ; +; -3.860 ns ; 1.000 ns ; 4.860 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[13] ; MAIN_CLK ; +; -3.860 ns ; 1.000 ns ; 4.860 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[14] ; MAIN_CLK ; +; -3.860 ns ; 1.000 ns ; 4.860 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[15] ; MAIN_CLK ; +; -3.860 ns ; 1.000 ns ; 4.860 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[16] ; MAIN_CLK ; +; -3.860 ns ; 1.000 ns ; 4.860 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[17] ; MAIN_CLK ; +; -3.859 ns ; 1.000 ns ; 4.859 ns ; VD[28] ; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[28] ; MAIN_CLK ; +; -3.855 ns ; 1.000 ns ; 4.855 ns ; VD[22] ; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[22] ; MAIN_CLK ; +; -3.851 ns ; 1.000 ns ; 4.851 ns ; VD[17] ; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[17] ; MAIN_CLK ; +; -3.850 ns ; 1.000 ns ; 4.850 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[10] ; MAIN_CLK ; +; -3.850 ns ; 1.000 ns ; 4.850 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[11] ; MAIN_CLK ; +; -3.850 ns ; 1.000 ns ; 4.850 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[12] ; MAIN_CLK ; +; -3.850 ns ; 1.000 ns ; 4.850 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[13] ; MAIN_CLK ; +; -3.850 ns ; 1.000 ns ; 4.850 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[14] ; MAIN_CLK ; +; -3.850 ns ; 1.000 ns ; 4.850 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[15] ; MAIN_CLK ; +; -3.850 ns ; 1.000 ns ; 4.850 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[16] ; MAIN_CLK ; +; -3.850 ns ; 1.000 ns ; 4.850 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[17] ; MAIN_CLK ; +; -3.846 ns ; 1.000 ns ; 4.846 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[2] ; MAIN_CLK ; +; -3.846 ns ; 1.000 ns ; 4.846 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[3] ; MAIN_CLK ; +; -3.846 ns ; 1.000 ns ; 4.846 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[4] ; MAIN_CLK ; +; -3.846 ns ; 1.000 ns ; 4.846 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[5] ; MAIN_CLK ; +; -3.846 ns ; 1.000 ns ; 4.846 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[7] ; MAIN_CLK ; +; -3.846 ns ; 1.000 ns ; 4.846 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[8] ; MAIN_CLK ; +; -3.846 ns ; 1.000 ns ; 4.846 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[9] ; MAIN_CLK ; +; -3.846 ns ; 1.000 ns ; 4.846 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[21] ; MAIN_CLK ; +; -3.827 ns ; 1.000 ns ; 4.827 ns ; VD[11] ; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[11] ; MAIN_CLK ; +; -3.814 ns ; 1.000 ns ; 4.814 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[1] ; MAIN_CLK ; +; -3.814 ns ; 1.000 ns ; 4.814 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[7] ; MAIN_CLK ; +; -3.814 ns ; 1.000 ns ; 4.814 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[19] ; MAIN_CLK ; +; -3.814 ns ; 1.000 ns ; 4.814 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[24] ; MAIN_CLK ; +; -3.814 ns ; 1.000 ns ; 4.814 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[26] ; MAIN_CLK ; +; -3.814 ns ; 1.000 ns ; 4.814 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[27] ; MAIN_CLK ; +; -3.814 ns ; 1.000 ns ; 4.814 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[28] ; MAIN_CLK ; +; -3.814 ns ; 1.000 ns ; 4.814 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[29] ; MAIN_CLK ; +; -3.814 ns ; 1.000 ns ; 4.814 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[30] ; MAIN_CLK ; +; -3.814 ns ; 1.000 ns ; 4.814 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[31] ; MAIN_CLK ; +; -3.804 ns ; 1.000 ns ; 4.804 ns ; VD[0] ; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[0] ; MAIN_CLK ; +; -3.801 ns ; 1.000 ns ; 4.801 ns ; VD[10] ; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[10] ; MAIN_CLK ; +; -3.796 ns ; 1.000 ns ; 4.796 ns ; MAIN_CLK ; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|reconfig_post_state ; MAIN_CLK ; +; -3.794 ns ; 1.000 ns ; 4.794 ns ; MAIN_CLK ; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|areset_init_state_1 ; MAIN_CLK ; +; -3.794 ns ; 1.000 ns ; 4.794 ns ; MAIN_CLK ; altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|reconfig_wait_state ; MAIN_CLK ; +; -3.783 ns ; 1.000 ns ; 4.783 ns ; VD[14] ; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[14] ; MAIN_CLK ; +; -3.768 ns ; 1.000 ns ; 4.768 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[6] ; MAIN_CLK ; +; -3.768 ns ; 1.000 ns ; 4.768 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[16] ; MAIN_CLK ; +; -3.768 ns ; 1.000 ns ; 4.768 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[17] ; MAIN_CLK ; +; -3.765 ns ; 1.000 ns ; 4.765 ns ; nFB_WR ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|MO ; CLK33M ; +; -3.761 ns ; 1.000 ns ; 4.761 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[7] ; MAIN_CLK ; +; -3.761 ns ; 1.000 ns ; 4.761 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[25] ; MAIN_CLK ; +; -3.761 ns ; 1.000 ns ; 4.761 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[26] ; MAIN_CLK ; +; -3.761 ns ; 1.000 ns ; 4.761 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[28] ; MAIN_CLK ; +; -3.761 ns ; 1.000 ns ; 4.761 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[29] ; MAIN_CLK ; +; -3.761 ns ; 1.000 ns ; 4.761 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[30] ; MAIN_CLK ; +; -3.761 ns ; 1.000 ns ; 4.761 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[31] ; MAIN_CLK ; +; -3.752 ns ; 1.000 ns ; 4.752 ns ; VD[6] ; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[6] ; MAIN_CLK ; +; -3.748 ns ; 1.000 ns ; 4.748 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[12] ; MAIN_CLK ; +; -3.748 ns ; 1.000 ns ; 4.748 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[13] ; MAIN_CLK ; +; -3.748 ns ; 1.000 ns ; 4.748 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[14] ; MAIN_CLK ; +; -3.744 ns ; 1.000 ns ; 4.744 ns ; VD[21] ; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[21] ; MAIN_CLK ; +; -3.742 ns ; 1.000 ns ; 4.742 ns ; FB_SIZE0 ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; MAIN_CLK ; +; -3.740 ns ; 1.000 ns ; 4.740 ns ; FB_SIZE0 ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BUS_CYC ; MAIN_CLK ; +; -3.740 ns ; 1.000 ns ; 4.740 ns ; VD[16] ; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[16] ; MAIN_CLK ; +; -3.739 ns ; 1.000 ns ; 4.739 ns ; VD[29] ; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[29] ; MAIN_CLK ; +; -3.735 ns ; 1.000 ns ; 4.735 ns ; VD[15] ; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[15] ; MAIN_CLK ; +; -3.708 ns ; 1.000 ns ; 4.708 ns ; VD[26] ; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[26] ; MAIN_CLK ; +; -3.707 ns ; 1.000 ns ; 4.707 ns ; VD[13] ; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[13] ; MAIN_CLK ; +; -3.706 ns ; 1.000 ns ; 4.706 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[0] ; MAIN_CLK ; +; -3.706 ns ; 1.000 ns ; 4.706 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[2] ; MAIN_CLK ; +; -3.706 ns ; 1.000 ns ; 4.706 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[8] ; MAIN_CLK ; +; -3.706 ns ; 1.000 ns ; 4.706 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[21] ; MAIN_CLK ; +; -3.706 ns ; 1.000 ns ; 4.706 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[23] ; MAIN_CLK ; +; -3.706 ns ; 1.000 ns ; 4.706 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[27] ; MAIN_CLK ; +; -3.703 ns ; 1.000 ns ; 4.703 ns ; VD[3] ; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[3] ; MAIN_CLK ; +; -3.699 ns ; 1.000 ns ; 4.699 ns ; VD[30] ; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[30] ; MAIN_CLK ; +; -3.694 ns ; 1.000 ns ; 4.694 ns ; VD[24] ; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[24] ; MAIN_CLK ; +; -3.691 ns ; 1.000 ns ; 4.691 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[1] ; MAIN_CLK ; +; -3.691 ns ; 1.000 ns ; 4.691 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[4] ; MAIN_CLK ; +; -3.691 ns ; 1.000 ns ; 4.691 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[6] ; MAIN_CLK ; +; -3.691 ns ; 1.000 ns ; 4.691 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[11] ; MAIN_CLK ; +; -3.691 ns ; 1.000 ns ; 4.691 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[16] ; MAIN_CLK ; +; -3.691 ns ; 1.000 ns ; 4.691 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[17] ; MAIN_CLK ; +; -3.691 ns ; 1.000 ns ; 4.691 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[18] ; MAIN_CLK ; +; -3.691 ns ; 1.000 ns ; 4.691 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[19] ; MAIN_CLK ; +; -3.691 ns ; 1.000 ns ; 4.691 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[24] ; MAIN_CLK ; +; -3.684 ns ; 1.000 ns ; 4.684 ns ; FB_SIZE1 ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BUS_CYC ; MAIN_CLK ; +; -3.684 ns ; 1.000 ns ; 4.684 ns ; FB_SIZE1 ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; MAIN_CLK ; +; -3.680 ns ; 1.000 ns ; 4.680 ns ; FB_AD[30] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; MAIN_CLK ; +; -3.654 ns ; 1.000 ns ; 4.654 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[25] ; MAIN_CLK ; +; -3.654 ns ; 1.000 ns ; 4.654 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[26] ; MAIN_CLK ; +; -3.654 ns ; 1.000 ns ; 4.654 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[28] ; MAIN_CLK ; +; -3.634 ns ; 1.000 ns ; 4.634 ns ; FB_AD[31] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; MAIN_CLK ; +; -3.566 ns ; 1.000 ns ; 4.566 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[0] ; MAIN_CLK ; +; -3.566 ns ; 1.000 ns ; 4.566 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[2] ; MAIN_CLK ; +; -3.566 ns ; 1.000 ns ; 4.566 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[5] ; MAIN_CLK ; +; -3.566 ns ; 1.000 ns ; 4.566 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[8] ; MAIN_CLK ; +; -3.566 ns ; 1.000 ns ; 4.566 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[20] ; MAIN_CLK ; +; -3.566 ns ; 1.000 ns ; 4.566 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[21] ; MAIN_CLK ; +; -3.566 ns ; 1.000 ns ; 4.566 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[22] ; MAIN_CLK ; +; -3.566 ns ; 1.000 ns ; 4.566 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[23] ; MAIN_CLK ; +; -3.566 ns ; 1.000 ns ; 4.566 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[27] ; MAIN_CLK ; +; -3.471 ns ; 1.000 ns ; 4.471 ns ; VD[4] ; Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[4] ; MAIN_CLK ; +; -3.464 ns ; 1.000 ns ; 4.464 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[1] ; MAIN_CLK ; +; -3.464 ns ; 1.000 ns ; 4.464 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[3] ; MAIN_CLK ; +; -3.464 ns ; 1.000 ns ; 4.464 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[4] ; MAIN_CLK ; +; -3.464 ns ; 1.000 ns ; 4.464 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[5] ; MAIN_CLK ; +; -3.464 ns ; 1.000 ns ; 4.464 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[9] ; MAIN_CLK ; +; -3.464 ns ; 1.000 ns ; 4.464 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[10] ; MAIN_CLK ; +; -3.464 ns ; 1.000 ns ; 4.464 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[11] ; MAIN_CLK ; +; -3.464 ns ; 1.000 ns ; 4.464 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[15] ; MAIN_CLK ; +; -3.464 ns ; 1.000 ns ; 4.464 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[18] ; MAIN_CLK ; +; -3.464 ns ; 1.000 ns ; 4.464 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[19] ; MAIN_CLK ; +; -3.464 ns ; 1.000 ns ; 4.464 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[20] ; MAIN_CLK ; +; -3.464 ns ; 1.000 ns ; 4.464 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[22] ; MAIN_CLK ; +; -3.464 ns ; 1.000 ns ; 4.464 ns ; nFB_WR ; Video:Fredi_Aschwanden|lpm_ff0:inst15|lpm_ff:lpm_ff_component|dffs[24] ; MAIN_CLK ; +; -3.386 ns ; 1.000 ns ; 4.386 ns ; FB_AD[5] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[5] ; MAIN_CLK ; +; -3.339 ns ; 1.000 ns ; 4.339 ns ; FB_SIZE0 ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[10] ; MAIN_CLK ; +; -3.334 ns ; 1.000 ns ; 4.334 ns ; nFB_WR ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|CMD_STATE.IDLE ; CLK33M ; +; -3.324 ns ; 1.000 ns ; 4.324 ns ; nFB_WR ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; MAIN_CLK ; +; -3.290 ns ; 1.000 ns ; 4.290 ns ; nFB_WR ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BUS_CYC ; MAIN_CLK ; +; -3.272 ns ; 1.000 ns ; 4.272 ns ; FB_AD[12] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BUS_CYC ; MAIN_CLK ; +; -3.248 ns ; 1.000 ns ; 4.248 ns ; nFB_WR ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|INTRQ ; CLK33M ; +; -3.245 ns ; 1.000 ns ; 4.245 ns ; FB_AD[7] ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[7] ; MAIN_CLK ; +; -3.236 ns ; 1.000 ns ; 4.236 ns ; FB_AD[17] ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[17] ; MAIN_CLK ; +; -3.226 ns ; 1.000 ns ; 4.226 ns ; FB_AD[16] ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[16] ; MAIN_CLK ; +; -3.226 ns ; 1.000 ns ; 4.226 ns ; FB_AD[17] ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[17] ; MAIN_CLK ; +; -3.218 ns ; 1.000 ns ; 4.218 ns ; FB_AD[16] ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[16] ; MAIN_CLK ; +; -3.214 ns ; 1.000 ns ; 4.214 ns ; FB_AD[1] ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[1] ; MAIN_CLK ; +; -3.214 ns ; 1.000 ns ; 4.214 ns ; FB_AD[7] ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[7] ; MAIN_CLK ; +; -3.211 ns ; 1.000 ns ; 4.211 ns ; FB_SIZE0 ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_AC ; MAIN_CLK ; +; -3.208 ns ; 1.000 ns ; 4.208 ns ; FB_AD[3] ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[3] ; MAIN_CLK ; +; -3.206 ns ; 1.000 ns ; 4.206 ns ; FB_AD[4] ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[4] ; MAIN_CLK ; +; -3.203 ns ; 1.000 ns ; 4.203 ns ; FB_AD[1] ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[1] ; MAIN_CLK ; +; -3.199 ns ; 1.000 ns ; 4.199 ns ; FB_AD[31] ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[10] ; MAIN_CLK ; +; -3.197 ns ; 1.000 ns ; 4.197 ns ; FB_AD[3] ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[3] ; MAIN_CLK ; +; -3.194 ns ; 1.000 ns ; 4.194 ns ; FB_AD[4] ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[4] ; MAIN_CLK ; +; -3.193 ns ; 1.000 ns ; 4.193 ns ; FB_AD[15] ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[15] ; MAIN_CLK ; +; -3.190 ns ; 1.000 ns ; 4.190 ns ; FB_AD[10] ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[10] ; MAIN_CLK ; +; -3.187 ns ; 1.000 ns ; 4.187 ns ; FB_AD[15] ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[15] ; MAIN_CLK ; +; -3.182 ns ; 1.000 ns ; 4.182 ns ; HD_DD ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|\FREQUENCY_DECODER:FREQ_AMOUNT[1] ; CLK33M ; +; -3.181 ns ; 1.000 ns ; 4.181 ns ; FB_AD[5] ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[5] ; MAIN_CLK ; +; -3.174 ns ; 1.000 ns ; 4.174 ns ; FB_AD[12] ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[12] ; MAIN_CLK ; +; -3.173 ns ; 1.000 ns ; 4.173 ns ; FB_SIZE1 ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[10] ; MAIN_CLK ; +; -3.172 ns ; 1.000 ns ; 4.172 ns ; FB_ALE ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ ; MAIN_CLK ; +; -3.171 ns ; 1.000 ns ; 4.171 ns ; FB_AD[5] ; Video:Fredi_Aschwanden|lpm_ff0:inst16|lpm_ff:lpm_ff_component|dffs[5] ; MAIN_CLK ; +; -3.167 ns ; 1.000 ns ; 4.167 ns ; FB_AD[6] ; Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[6] ; MAIN_CLK ; +; -3.162 ns ; 1.000 ns ; 4.162 ns ; FB_AD[1] ; Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[1] ; MAIN_CLK ; +; -3.160 ns ; 1.000 ns ; 4.160 ns ; nFB_WR ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[9] ; MAIN_CLK ; +; Timing analysis restricted to 200 rows. ; To change the limit use Settings (Assignments menu) ; ; ; ; ; ++-----------------------------------------+-----------------------------------------------------+------------+-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+----------+ + + ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; tco ; ++-----------------------------------------+-----------------------------------------------------+------------+----------------------------------------------------------------------------------------------------------------------------------------------+-----------+------------+ +; Slack ; Required tco ; Actual tco ; From ; To ; From Clock ; ++-----------------------------------------+-----------------------------------------------------+------------+----------------------------------------------------------------------------------------------------------------------------------------------+-----------+------------+ +; -14.840 ns ; 1.000 ns ; 15.840 ns ; interrupt_handler:nobody|INT_LATCH[8] ; nIRQ[5] ; MAIN_CLK ; +; -14.829 ns ; 1.000 ns ; 15.829 ns ; interrupt_handler:nobody|INT_LATCH[9] ; nIRQ[5] ; MAIN_CLK ; +; -13.764 ns ; 1.000 ns ; 14.764 ns ; interrupt_handler:nobody|INT_LATCH[8] ; FB_AD[8] ; MAIN_CLK ; +; -13.654 ns ; 1.000 ns ; 14.654 ns ; interrupt_handler:nobody|INT_LATCH[9] ; FB_AD[9] ; MAIN_CLK ; +; -13.587 ns ; 1.000 ns ; 14.587 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HSS[2] ; FB_AD[18] ; MAIN_CLK ; +; -13.587 ns ; 1.000 ns ; 14.587 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[2] ; FB_AD[18] ; MAIN_CLK ; +; -13.587 ns ; 1.000 ns ; 14.587 ns ; interrupt_handler:nobody|INT_LATCH[8] ; FB_AD[29] ; MAIN_CLK ; +; -13.575 ns ; 1.000 ns ; 14.575 ns ; interrupt_handler:nobody|INT_LATCH[9] ; FB_AD[29] ; MAIN_CLK ; +; -13.493 ns ; 1.000 ns ; 14.493 ns ; interrupt_handler:nobody|RTC_ADR[0] ; FB_AD[18] ; MAIN_CLK ; +; -13.477 ns ; 1.000 ns ; 14.477 ns ; interrupt_handler:nobody|RTC_ADR[1] ; FB_AD[18] ; MAIN_CLK ; +; -13.457 ns ; 1.000 ns ; 14.457 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[18] ; FB_AD[18] ; MAIN_CLK ; +; -13.418 ns ; 1.000 ns ; 14.418 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBB[2] ; FB_AD[18] ; MAIN_CLK ; +; -13.386 ns ; 1.000 ns ; 14.386 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[7] ; FB_AD[7] ; MAIN_CLK ; +; -13.358 ns ; 1.000 ns ; 14.358 ns ; interrupt_handler:nobody|RTC_ADR[3] ; FB_AD[18] ; MAIN_CLK ; +; -13.358 ns ; 1.000 ns ; 14.358 ns ; interrupt_handler:nobody|RTC_ADR[4] ; FB_AD[18] ; MAIN_CLK ; +; -13.309 ns ; 1.000 ns ; 14.309 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; FB_AD[27] ; MAIN_CLK ; +; -13.294 ns ; 1.000 ns ; 14.294 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[11] ; FB_AD[27] ; MAIN_CLK ; +; -13.259 ns ; 1.000 ns ; 14.259 ns ; interrupt_handler:nobody|RTC_ADR[2] ; FB_AD[18] ; MAIN_CLK ; +; -13.250 ns ; 1.000 ns ; 14.250 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[2] ; FB_AD[18] ; MAIN_CLK ; +; -13.227 ns ; 1.000 ns ; 14.227 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[2] ; FB_AD[18] ; MAIN_CLK ; +; -13.207 ns ; 1.000 ns ; 14.207 ns ; interrupt_handler:nobody|RTC_ADR[5] ; FB_AD[18] ; MAIN_CLK ; +; -13.171 ns ; 1.000 ns ; 14.171 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDB[2] ; FB_AD[18] ; MAIN_CLK ; +; -13.170 ns ; 1.000 ns ; 14.170 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBB[11] ; FB_AD[27] ; MAIN_CLK ; +; -13.157 ns ; 1.000 ns ; 14.157 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VSS[2] ; FB_AD[18] ; MAIN_CLK ; +; -13.028 ns ; 1.000 ns ; 14.028 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; FB_AD[27] ; MAIN_CLK ; +; -13.015 ns ; 1.000 ns ; 14.015 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|ADR_I[2] ; FB_AD[27] ; MAIN_CLK ; +; -12.999 ns ; 1.000 ns ; 13.999 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_R_B[2] ; FB_AD[18] ; MAIN_CLK ; +; -12.921 ns ; 1.000 ns ; 13.921 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[2] ; FB_AD[18] ; MAIN_CLK ; +; -12.886 ns ; 1.000 ns ; 13.886 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[11] ; FB_AD[27] ; MAIN_CLK ; +; -12.876 ns ; 1.000 ns ; 13.876 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[11] ; FB_AD[27] ; MAIN_CLK ; +; -12.861 ns ; 1.000 ns ; 13.861 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|ADR_I[1] ; FB_AD[27] ; MAIN_CLK ; +; -12.846 ns ; 1.000 ns ; 13.846 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; FB_AD[27] ; MAIN_CLK ; +; -12.836 ns ; 1.000 ns ; 13.836 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[18] ; FB_AD[18] ; MAIN_CLK ; +; -12.823 ns ; 1.000 ns ; 13.823 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_R_D[2] ; FB_AD[18] ; MAIN_CLK ; +; -12.817 ns ; 1.000 ns ; 13.817 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|ADR_I[0] ; FB_AD[27] ; MAIN_CLK ; +; -12.784 ns ; 1.000 ns ; 13.784 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; FB_AD[27] ; MAIN_CLK ; +; -12.732 ns ; 1.000 ns ; 13.732 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_R_D[5] ; FB_AD[7] ; MAIN_CLK ; +; -12.620 ns ; 1.000 ns ; 13.620 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HSS[11] ; FB_AD[27] ; MAIN_CLK ; +; -12.567 ns ; 1.000 ns ; 13.567 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|ADR_I[3] ; FB_AD[27] ; MAIN_CLK ; +; -12.434 ns ; 1.000 ns ; 13.434 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[7] ; FB_AD[7] ; MAIN_CLK ; +; -12.425 ns ; 1.000 ns ; 13.425 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; FB_AD[7] ; MAIN_CLK ; +; -12.404 ns ; 1.000 ns ; 13.404 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VSYNC ; FB_AD[8] ; MAIN_CLK ; +; -12.403 ns ; 1.000 ns ; 13.403 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[7] ; FB_AD[7] ; MAIN_CLK ; +; -12.361 ns ; 1.000 ns ; 13.361 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HHT[7] ; FB_AD[23] ; MAIN_CLK ; +; -12.361 ns ; 1.000 ns ; 13.361 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HHT[11] ; FB_AD[27] ; MAIN_CLK ; +; -12.302 ns ; 1.000 ns ; 13.302 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TCDCR[4] ; FB_AD[7] ; MAIN_CLK ; +; -12.301 ns ; 1.000 ns ; 13.301 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[27] ; FB_AD[27] ; MAIN_CLK ; +; -12.300 ns ; 1.000 ns ; 13.300 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_R_A[2] ; FB_AD[18] ; MAIN_CLK ; +; -12.286 ns ; 1.000 ns ; 13.286 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[18] ; FB_AD[18] ; MAIN_CLK ; +; -12.285 ns ; 1.000 ns ; 13.285 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TCDCR[2] ; FB_AD[18] ; MAIN_CLK ; +; -12.283 ns ; 1.000 ns ; 13.283 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|INTRQ ; FB_AD[7] ; CLK33M ; +; -12.260 ns ; 1.000 ns ; 13.260 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[7] ; FB_AD[7] ; MAIN_CLK ; +; -12.241 ns ; 1.000 ns ; 13.241 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_R_A[5] ; FB_AD[7] ; MAIN_CLK ; +; -12.219 ns ; 1.000 ns ; 13.219 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TACR[2] ; FB_AD[18] ; MAIN_CLK ; +; -12.211 ns ; 1.000 ns ; 13.211 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HHT[2] ; FB_AD[18] ; MAIN_CLK ; +; -12.205 ns ; 1.000 ns ; 13.205 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; FB_AD[27] ; MAIN_CLK ; +; -12.200 ns ; 1.000 ns ; 13.200 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[7] ; FB_AD[7] ; MAIN_CLK ; +; -12.186 ns ; 1.000 ns ; 13.186 ns ; interrupt_handler:nobody|WERTE[2][0] ; FB_AD[18] ; MAIN_CLK ; +; -12.182 ns ; 1.000 ns ; 13.182 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[22] ; FB_AD[22] ; MAIN_CLK ; +; -12.177 ns ; 1.000 ns ; 13.177 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; FB_AD[18] ; MAIN_CLK ; +; -12.175 ns ; 1.000 ns ; 13.175 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_R_C[2] ; FB_AD[18] ; MAIN_CLK ; +; -12.173 ns ; 1.000 ns ; 13.173 ns ; interrupt_handler:nobody|RTC_ADR[0] ; FB_AD[17] ; MAIN_CLK ; +; -12.166 ns ; 1.000 ns ; 13.166 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[18] ; FB_AD[18] ; MAIN_CLK ; +; -12.158 ns ; 1.000 ns ; 13.158 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VFT[2] ; FB_AD[18] ; MAIN_CLK ; +; -12.157 ns ; 1.000 ns ; 13.157 ns ; interrupt_handler:nobody|RTC_ADR[1] ; FB_AD[17] ; MAIN_CLK ; +; -12.082 ns ; 1.000 ns ; 13.082 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TBCR[2] ; FB_AD[18] ; MAIN_CLK ; +; -12.055 ns ; 1.000 ns ; 13.055 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[21] ; FB_AD[21] ; MAIN_CLK ; +; -12.052 ns ; 1.000 ns ; 13.052 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HHT[1] ; FB_AD[17] ; MAIN_CLK ; +; -12.039 ns ; 1.000 ns ; 13.039 ns ; interrupt_handler:nobody|ACP_CONF[28] ; FB_AD[7] ; MAIN_CLK ; +; -12.038 ns ; 1.000 ns ; 13.038 ns ; interrupt_handler:nobody|RTC_ADR[3] ; FB_AD[17] ; MAIN_CLK ; +; -12.022 ns ; 1.000 ns ; 13.022 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_R_C[5] ; FB_AD[7] ; MAIN_CLK ; +; -12.008 ns ; 1.000 ns ; 13.008 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|\NOISEGENERATOR:N_SHFT[16] ; YM_QB ; MAIN_CLK ; +; -12.005 ns ; 1.000 ns ; 13.005 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VR_DOUT[2] ; FB_AD[18] ; MAIN_CLK ; +; -12.004 ns ; 1.000 ns ; 13.004 ns ; interrupt_handler:nobody|WERTE[2][62] ; FB_AD[18] ; MAIN_CLK ; +; -11.984 ns ; 1.000 ns ; 12.984 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; FB_AD[27] ; MAIN_CLK ; +; -11.978 ns ; 1.000 ns ; 12.978 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|CTRL_REG[1] ; YM_QB ; MAIN_CLK ; +; -11.968 ns ; 1.000 ns ; 12.968 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[27] ; FB_AD[27] ; MAIN_CLK ; +; -11.957 ns ; 1.000 ns ; 12.957 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; FB_AD[7] ; MAIN_CLK ; +; -11.946 ns ; 1.000 ns ; 12.946 ns ; interrupt_handler:nobody|WERTE[2][42] ; FB_AD[18] ; MAIN_CLK ; +; -11.939 ns ; 1.000 ns ; 12.939 ns ; interrupt_handler:nobody|RTC_ADR[2] ; FB_AD[17] ; MAIN_CLK ; +; -11.938 ns ; 1.000 ns ; 12.938 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|CTRL_REG[4] ; YM_QB ; MAIN_CLK ; +; -11.937 ns ; 1.000 ns ; 12.937 ns ; interrupt_handler:nobody|WERTE[2][10] ; FB_AD[18] ; MAIN_CLK ; +; -11.935 ns ; 1.000 ns ; 12.935 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSYNC ; FB_AD[9] ; MAIN_CLK ; +; -11.933 ns ; 1.000 ns ; 12.933 ns ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; FB_AD[18] ; MAIN_CLK ; +; -11.924 ns ; 1.000 ns ; 12.924 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSYNC ; FB_AD[26] ; MAIN_CLK ; +; -11.922 ns ; 1.000 ns ; 12.922 ns ; interrupt_handler:nobody|WERTE[2][58] ; FB_AD[18] ; MAIN_CLK ; +; -11.900 ns ; 1.000 ns ; 12.900 ns ; interrupt_handler:nobody|RTC_ADR[4] ; FB_AD[17] ; MAIN_CLK ; +; -11.874 ns ; 1.000 ns ; 12.874 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[1] ; FB_AD[17] ; MAIN_CLK ; +; -11.871 ns ; 1.000 ns ; 12.871 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; FB_AD[20] ; MAIN_CLK ; +; -11.867 ns ; 1.000 ns ; 12.867 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDE[2] ; FB_AD[18] ; MAIN_CLK ; +; -11.859 ns ; 1.000 ns ; 12.859 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; FB_AD[7] ; MAIN_CLK ; +; -11.857 ns ; 1.000 ns ; 12.857 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[4] ; FB_AD[20] ; MAIN_CLK ; +; -11.845 ns ; 1.000 ns ; 12.845 ns ; interrupt_handler:nobody|RTC_ADR[5] ; FB_AD[17] ; MAIN_CLK ; +; -11.842 ns ; 1.000 ns ; 12.842 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[20] ; FB_AD[20] ; MAIN_CLK ; +; -11.834 ns ; 1.000 ns ; 12.834 ns ; interrupt_handler:nobody|RTC_ADR[2] ; FB_AD[20] ; MAIN_CLK ; +; -11.831 ns ; 1.000 ns ; 12.831 ns ; interrupt_handler:nobody|WERTE[2][4] ; FB_AD[18] ; MAIN_CLK ; +; -11.813 ns ; 1.000 ns ; 12.813 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[18] ; FB_AD[18] ; MAIN_CLK ; +; -11.794 ns ; 1.000 ns ; 12.794 ns ; interrupt_handler:nobody|WERTE[2][43] ; FB_AD[18] ; MAIN_CLK ; +; -11.787 ns ; 1.000 ns ; 12.787 ns ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[19] ; FB_AD[18] ; MAIN_CLK ; +; -11.775 ns ; 1.000 ns ; 12.775 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S2 ; FB_AD[7] ; MAIN_CLK ; +; -11.774 ns ; 1.000 ns ; 12.774 ns ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[18] ; FB_AD[27] ; MAIN_CLK ; +; -11.769 ns ; 1.000 ns ; 12.769 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; FB_AD[18] ; MAIN_CLK ; +; -11.762 ns ; 1.000 ns ; 12.762 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[4] ; FB_AD[20] ; MAIN_CLK ; +; -11.751 ns ; 1.000 ns ; 12.751 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|CTRL_REG[5] ; YM_QC ; MAIN_CLK ; +; -11.747 ns ; 1.000 ns ; 12.747 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDB[7] ; FB_AD[23] ; MAIN_CLK ; +; -11.746 ns ; 1.000 ns ; 12.746 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[27] ; FB_AD[27] ; MAIN_CLK ; +; -11.736 ns ; 1.000 ns ; 12.736 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; FB_AD[7] ; MAIN_CLK ; +; -11.727 ns ; 1.000 ns ; 12.727 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HSS[7] ; FB_AD[23] ; MAIN_CLK ; +; -11.725 ns ; 1.000 ns ; 12.725 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|INT_STATE.VECTOR_OUT ; FB_AD[7] ; MAIN_CLK ; +; -11.724 ns ; 1.000 ns ; 12.724 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|CTRL_REG[2] ; YM_QC ; MAIN_CLK ; +; -11.721 ns ; 1.000 ns ; 12.721 ns ; interrupt_handler:nobody|WERTE[5][8] ; FB_AD[21] ; MAIN_CLK ; +; -11.717 ns ; 1.000 ns ; 12.717 ns ; interrupt_handler:nobody|RTC_ADR[1] ; FB_AD[23] ; MAIN_CLK ; +; -11.710 ns ; 1.000 ns ; 12.710 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_R_D[7] ; FB_AD[9] ; MAIN_CLK ; +; -11.709 ns ; 1.000 ns ; 12.709 ns ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[17] ; FB_AD[18] ; MAIN_CLK ; +; -11.708 ns ; 1.000 ns ; 12.708 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IPRB[5] ; FB_AD[7] ; MAIN_CLK ; +; -11.700 ns ; 1.000 ns ; 12.700 ns ; interrupt_handler:nobody|WERTE[2][2] ; FB_AD[18] ; MAIN_CLK ; +; -11.694 ns ; 1.000 ns ; 12.694 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VSYNC ; FB_AD[28] ; MAIN_CLK ; +; -11.693 ns ; 1.000 ns ; 12.693 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MODUS[6] ; FB_AD[9] ; MAIN_CLK ; +; -11.692 ns ; 1.000 ns ; 12.692 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S0 ; FB_AD[18] ; MAIN_CLK ; +; -11.680 ns ; 1.000 ns ; 12.680 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBB[1] ; FB_AD[17] ; MAIN_CLK ; +; -11.675 ns ; 1.000 ns ; 12.675 ns ; interrupt_handler:nobody|RTC_ADR[0] ; FB_AD[23] ; MAIN_CLK ; +; -11.673 ns ; 1.000 ns ; 12.673 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_R_B[5] ; FB_AD[7] ; MAIN_CLK ; +; -11.659 ns ; 1.000 ns ; 12.659 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[7] ; FB_AD[23] ; MAIN_CLK ; +; -11.649 ns ; 1.000 ns ; 12.649 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[7] ; FB_AD[23] ; MAIN_CLK ; +; -11.648 ns ; 1.000 ns ; 12.648 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; FB_AD[25] ; MAIN_CLK ; +; -11.646 ns ; 1.000 ns ; 12.646 ns ; interrupt_handler:nobody|RTC_ADR[3] ; FB_AD[20] ; MAIN_CLK ; +; -11.640 ns ; 1.000 ns ; 12.640 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[7] ; FB_AD[23] ; MAIN_CLK ; +; -11.633 ns ; 1.000 ns ; 12.633 ns ; interrupt_handler:nobody|WERTE[2][38] ; FB_AD[18] ; MAIN_CLK ; +; -11.631 ns ; 1.000 ns ; 12.631 ns ; interrupt_handler:nobody|RTC_ADR[2] ; FB_AD[19] ; MAIN_CLK ; +; -11.628 ns ; 1.000 ns ; 12.628 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[1] ; FB_AD[17] ; MAIN_CLK ; +; -11.628 ns ; 1.000 ns ; 12.628 ns ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[19] ; FB_AD[27] ; MAIN_CLK ; +; -11.627 ns ; 1.000 ns ; 12.627 ns ; interrupt_handler:nobody|WERTE[2][63] ; FB_AD[18] ; MAIN_CLK ; +; -11.620 ns ; 1.000 ns ; 12.620 ns ; interrupt_handler:nobody|WERTE[2][61] ; FB_AD[18] ; MAIN_CLK ; +; -11.620 ns ; 1.000 ns ; 12.620 ns ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[11] ; FB_AD[18] ; MAIN_CLK ; +; -11.619 ns ; 1.000 ns ; 12.619 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|VOL_ENV[0] ; YM_QB ; MAIN_CLK ; +; -11.618 ns ; 1.000 ns ; 12.618 ns ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[12] ; FB_AD[18] ; MAIN_CLK ; +; -11.616 ns ; 1.000 ns ; 12.616 ns ; interrupt_handler:nobody|RTC_ADR[1] ; FB_AD[20] ; MAIN_CLK ; +; -11.616 ns ; 1.000 ns ; 12.616 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBB[9] ; FB_AD[25] ; MAIN_CLK ; +; -11.608 ns ; 1.000 ns ; 12.608 ns ; interrupt_handler:nobody|RTC_ADR[3] ; FB_AD[19] ; MAIN_CLK ; +; -11.607 ns ; 1.000 ns ; 12.607 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; FB_AD[21] ; MAIN_CLK ; +; -11.595 ns ; 1.000 ns ; 12.595 ns ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[7] ; FB_AD[27] ; MAIN_CLK ; +; -11.592 ns ; 1.000 ns ; 12.592 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[19] ; FB_AD[20] ; MAIN_CLK ; +; -11.592 ns ; 1.000 ns ; 12.592 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; FB_AD[18] ; MAIN_CLK ; +; -11.589 ns ; 1.000 ns ; 12.589 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|CTRL_REG[3] ; YM_QA ; MAIN_CLK ; +; -11.588 ns ; 1.000 ns ; 12.588 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBB[2] ; FB_AD[18] ; MAIN_CLK ; +; -11.588 ns ; 1.000 ns ; 12.588 ns ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[16] ; FB_AD[18] ; MAIN_CLK ; +; -11.583 ns ; 1.000 ns ; 12.583 ns ; interrupt_handler:nobody|WERTE[2][57] ; FB_AD[18] ; MAIN_CLK ; +; -11.582 ns ; 1.000 ns ; 12.582 ns ; interrupt_handler:nobody|RTC_ADR[0] ; FB_AD[22] ; MAIN_CLK ; +; -11.579 ns ; 1.000 ns ; 12.579 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|\NOISEGENERATOR:N_SHFT[16] ; YM_QA ; MAIN_CLK ; +; -11.578 ns ; 1.000 ns ; 12.578 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBB[5] ; FB_AD[21] ; MAIN_CLK ; +; -11.576 ns ; 1.000 ns ; 12.576 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_R_D[7] ; FB_AD[23] ; MAIN_CLK ; +; -11.576 ns ; 1.000 ns ; 12.576 ns ; interrupt_handler:nobody|RTC_ADR[3] ; FB_AD[22] ; MAIN_CLK ; +; -11.567 ns ; 1.000 ns ; 12.567 ns ; interrupt_handler:nobody|RTC_ADR[1] ; FB_AD[22] ; MAIN_CLK ; +; -11.559 ns ; 1.000 ns ; 12.559 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|DMA_MODUS[6] ; FB_AD[23] ; MAIN_CLK ; +; -11.552 ns ; 1.000 ns ; 12.552 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|\NOISEGENERATOR:N_SHFT[16] ; YM_QC ; MAIN_CLK ; +; -11.550 ns ; 1.000 ns ; 12.550 ns ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[17] ; FB_AD[27] ; MAIN_CLK ; +; -11.545 ns ; 1.000 ns ; 12.545 ns ; interrupt_handler:nobody|WERTE[2][31] ; FB_AD[18] ; MAIN_CLK ; +; -11.544 ns ; 1.000 ns ; 12.544 ns ; interrupt_handler:nobody|WERTE[2][6] ; FB_AD[18] ; MAIN_CLK ; +; -11.543 ns ; 1.000 ns ; 12.543 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VMD[2] ; FB_AD[18] ; MAIN_CLK ; +; -11.542 ns ; 1.000 ns ; 12.542 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBE[2] ; FB_AD[18] ; MAIN_CLK ; +; -11.541 ns ; 1.000 ns ; 12.541 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_CS ; FB_AD[23] ; MAIN_CLK ; +; -11.540 ns ; 1.000 ns ; 12.540 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_TIMERS:I_TIMERS|TIMER_R_D[4] ; FB_AD[20] ; MAIN_CLK ; +; -11.540 ns ; 1.000 ns ; 12.540 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDB[5] ; FB_AD[21] ; MAIN_CLK ; +; -11.537 ns ; 1.000 ns ; 12.537 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[3] ; FB_AD[3] ; MAIN_CLK ; +; -11.531 ns ; 1.000 ns ; 12.531 ns ; interrupt_handler:nobody|WERTE[2][45] ; FB_AD[18] ; MAIN_CLK ; +; -11.527 ns ; 1.000 ns ; 12.527 ns ; interrupt_handler:nobody|WERTE[2][7] ; FB_AD[18] ; MAIN_CLK ; +; -11.527 ns ; 1.000 ns ; 12.527 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[9] ; FB_AD[25] ; MAIN_CLK ; +; -11.526 ns ; 1.000 ns ; 12.526 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[4] ; FB_AD[20] ; MAIN_CLK ; +; -11.526 ns ; 1.000 ns ; 12.526 ns ; interrupt_handler:nobody|RTC_ADR[3] ; FB_AD[23] ; MAIN_CLK ; +; -11.526 ns ; 1.000 ns ; 12.526 ns ; interrupt_handler:nobody|RTC_ADR[4] ; FB_AD[23] ; MAIN_CLK ; +; -11.508 ns ; 1.000 ns ; 12.508 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|LEVEL_C[3] ; FB_AD[27] ; MAIN_CLK ; +; -11.507 ns ; 1.000 ns ; 12.507 ns ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[7] ; FB_AD[18] ; MAIN_CLK ; +; -11.505 ns ; 1.000 ns ; 12.505 ns ; interrupt_handler:nobody|RTC_ADR[2] ; FB_AD[23] ; MAIN_CLK ; +; -11.504 ns ; 1.000 ns ; 12.504 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[27] ; FB_AD[27] ; MAIN_CLK ; +; -11.502 ns ; 1.000 ns ; 12.502 ns ; interrupt_handler:nobody|WERTE[2][60] ; FB_AD[18] ; MAIN_CLK ; +; -11.502 ns ; 1.000 ns ; 12.502 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDE[10] ; FB_AD[26] ; MAIN_CLK ; +; -11.495 ns ; 1.000 ns ; 12.495 ns ; interrupt_handler:nobody|WERTE[2][53] ; FB_AD[18] ; MAIN_CLK ; +; -11.492 ns ; 1.000 ns ; 12.492 ns ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[8] ; FB_AD[18] ; MAIN_CLK ; +; -11.488 ns ; 1.000 ns ; 12.488 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[3] ; FB_AD[3] ; MAIN_CLK ; +; -11.487 ns ; 1.000 ns ; 12.487 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; FB_AD[7] ; MAIN_CLK ; +; -11.480 ns ; 1.000 ns ; 12.480 ns ; interrupt_handler:nobody|RTC_ADR[5] ; FB_AD[23] ; MAIN_CLK ; +; -11.480 ns ; 1.000 ns ; 12.480 ns ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[5] ; FB_AD[21] ; MAIN_CLK ; +; -11.479 ns ; 1.000 ns ; 12.479 ns ; interrupt_handler:nobody|WERTE[2][36] ; FB_AD[18] ; MAIN_CLK ; +; -11.478 ns ; 1.000 ns ; 12.478 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|VOL_ENV[2] ; YM_QB ; MAIN_CLK ; +; -11.470 ns ; 1.000 ns ; 12.470 ns ; interrupt_handler:nobody|WERTE[2][15] ; FB_AD[18] ; MAIN_CLK ; +; -11.461 ns ; 1.000 ns ; 12.461 ns ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[11] ; FB_AD[27] ; MAIN_CLK ; +; -11.460 ns ; 1.000 ns ; 12.460 ns ; interrupt_handler:nobody|WERTE[2][8] ; FB_AD[18] ; MAIN_CLK ; +; -11.459 ns ; 1.000 ns ; 12.459 ns ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[12] ; FB_AD[27] ; MAIN_CLK ; +; -11.455 ns ; 1.000 ns ; 12.455 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|CTRL_REG[0] ; YM_QA ; MAIN_CLK ; +; -11.455 ns ; 1.000 ns ; 12.455 ns ; interrupt_handler:nobody|RTC_ADR[4] ; FB_AD[22] ; MAIN_CLK ; +; -11.451 ns ; 1.000 ns ; 12.451 ns ; interrupt_handler:nobody|WERTE[2][50] ; FB_AD[18] ; MAIN_CLK ; +; -11.447 ns ; 1.000 ns ; 12.447 ns ; interrupt_handler:nobody|WERTE[2][52] ; FB_AD[18] ; MAIN_CLK ; +; -11.444 ns ; 1.000 ns ; 12.444 ns ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[5] ; FB_AD[27] ; MAIN_CLK ; +; -11.443 ns ; 1.000 ns ; 12.443 ns ; interrupt_handler:nobody|RTC_ADR[0] ; FB_AD[20] ; MAIN_CLK ; +; -11.441 ns ; 1.000 ns ; 12.441 ns ; lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[13] ; FB_AD[18] ; MAIN_CLK ; +; -11.435 ns ; 1.000 ns ; 12.435 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S3 ; FB_AD[18] ; MAIN_CLK ; +; -11.433 ns ; 1.000 ns ; 12.433 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF2149IP_TOP_SOC:I_SOUND|WF2149IP_WAVE:I_PSG_WAVE|VOL_ENV[4] ; YM_QB ; MAIN_CLK ; +; -11.432 ns ; 1.000 ns ; 12.432 ns ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|IMRB[5] ; FB_AD[7] ; MAIN_CLK ; +; -11.431 ns ; 1.000 ns ; 12.431 ns ; Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|FR_S1 ; FB_AD[20] ; MAIN_CLK ; +; -11.429 ns ; 1.000 ns ; 12.429 ns ; interrupt_handler:nobody|WERTE[2][55] ; FB_AD[18] ; MAIN_CLK ; +; Timing analysis restricted to 200 rows. ; To change the limit use Settings (Assignments menu) ; ; ; ; ; ++-----------------------------------------+-----------------------------------------------------+------------+----------------------------------------------------------------------------------------------------------------------------------------------+-----------+------------+ + + ++----------------------------------------------------------------------------------------------------------------------------------------+ +; tpd ; ++-----------------------------------------+-----------------------------------------------------+-----------------+----------+-----------+ +; Slack ; Required P2P Time ; Actual P2P Time ; From ; To ; ++-----------------------------------------+-----------------------------------------------------+-----------------+----------+-----------+ +; -11.944 ns ; 1.000 ns ; 12.944 ns ; nFB_CS1 ; FB_AD[18] ; +; -11.849 ns ; 1.000 ns ; 12.849 ns ; FB_SIZE0 ; FB_AD[27] ; +; -11.785 ns ; 1.000 ns ; 12.785 ns ; nFB_CS1 ; FB_AD[27] ; +; -11.694 ns ; 1.000 ns ; 12.694 ns ; nFB_CS1 ; FB_AD[7] ; +; -11.672 ns ; 1.000 ns ; 12.672 ns ; FB_SIZE1 ; FB_AD[27] ; +; -11.625 ns ; 1.000 ns ; 12.625 ns ; nFB_WR ; FB_AD[7] ; +; -11.514 ns ; 1.000 ns ; 12.514 ns ; FB_SIZE0 ; FB_AD[18] ; +; -11.464 ns ; 1.000 ns ; 12.464 ns ; IDE_INT ; FB_AD[7] ; +; -11.450 ns ; 1.000 ns ; 12.450 ns ; SRD[11] ; FB_AD[27] ; +; -11.438 ns ; 1.000 ns ; 12.438 ns ; nFB_OE ; FB_AD[27] ; +; -11.420 ns ; 1.000 ns ; 12.420 ns ; nFB_CS2 ; FB_AD[27] ; +; -11.399 ns ; 1.000 ns ; 12.399 ns ; nFB_WR ; FB_AD[27] ; +; -11.376 ns ; 1.000 ns ; 12.376 ns ; nFB_WR ; FB_AD[18] ; +; -11.337 ns ; 1.000 ns ; 12.337 ns ; FB_SIZE1 ; FB_AD[18] ; +; -11.243 ns ; 1.000 ns ; 12.243 ns ; nFB_CS2 ; FB_AD[18] ; +; -10.918 ns ; 1.000 ns ; 11.918 ns ; nFB_CS1 ; FB_AD[20] ; +; -10.824 ns ; 1.000 ns ; 11.824 ns ; nFB_CS2 ; FB_AD[7] ; +; -10.814 ns ; 1.000 ns ; 11.814 ns ; FB_SIZE0 ; FB_AD[7] ; +; -10.798 ns ; 1.000 ns ; 11.798 ns ; nFB_OE ; FB_AD[7] ; +; -10.779 ns ; 1.000 ns ; 11.779 ns ; CTS ; FB_AD[18] ; +; -10.758 ns ; 1.000 ns ; 11.758 ns ; FB_SIZE1 ; FB_AD[7] ; +; -10.658 ns ; 1.000 ns ; 11.658 ns ; MAIN_CLK ; FB_AD[27] ; +; -10.631 ns ; 1.000 ns ; 11.631 ns ; nFB_OE ; FB_AD[18] ; +; -10.578 ns ; 1.000 ns ; 11.578 ns ; MAIN_CLK ; FB_AD[7] ; +; -10.573 ns ; 1.000 ns ; 11.573 ns ; nFB_CS2 ; FB_AD[20] ; +; -10.561 ns ; 1.000 ns ; 11.561 ns ; nFB_CS1 ; FB_AD[6] ; +; -10.549 ns ; 1.000 ns ; 11.549 ns ; FB_SIZE0 ; FB_AD[20] ; +; -10.543 ns ; 1.000 ns ; 11.543 ns ; nFB_CS1 ; FB_AD[9] ; +; -10.529 ns ; 1.000 ns ; 11.529 ns ; FB_SIZE0 ; FB_AD[23] ; +; -10.521 ns ; 1.000 ns ; 11.521 ns ; nFB_CS1 ; FB_AD[23] ; +; -10.471 ns ; 1.000 ns ; 11.471 ns ; FB_SIZE1 ; FB_AD[20] ; +; -10.451 ns ; 1.000 ns ; 11.451 ns ; FB_SIZE1 ; FB_AD[23] ; +; -10.425 ns ; 1.000 ns ; 11.425 ns ; nFB_WR ; FB_AD[9] ; +; -10.420 ns ; 1.000 ns ; 11.420 ns ; nFB_CS1 ; FB_AD[17] ; +; -10.415 ns ; 1.000 ns ; 11.415 ns ; nFB_CS1 ; FB_AD[25] ; +; -10.412 ns ; 1.000 ns ; 11.412 ns ; nFB_CS1 ; FB_AD[21] ; +; -10.370 ns ; 1.000 ns ; 11.370 ns ; nFB_OE ; FB_AD[20] ; +; -10.364 ns ; 1.000 ns ; 11.364 ns ; nFB_WR ; FB_AD[25] ; +; -10.362 ns ; 1.000 ns ; 11.362 ns ; nFB_CS1 ; FB_AD[26] ; +; -10.361 ns ; 1.000 ns ; 11.361 ns ; nFB_WR ; FB_AD[20] ; +; -10.335 ns ; 1.000 ns ; 11.335 ns ; nFB_CS2 ; FB_AD[23] ; +; -10.318 ns ; 1.000 ns ; 11.318 ns ; nFB_CS2 ; FB_AD[21] ; +; -10.317 ns ; 1.000 ns ; 11.317 ns ; nFB_WR ; FB_AD[22] ; +; -10.312 ns ; 1.000 ns ; 11.312 ns ; nFB_CS1 ; FB_AD[22] ; +; -10.311 ns ; 1.000 ns ; 11.311 ns ; nFB_WR ; FB_AD[26] ; +; -10.291 ns ; 1.000 ns ; 11.291 ns ; nFB_WR ; FB_AD[23] ; +; -10.278 ns ; 1.000 ns ; 11.278 ns ; FB_SIZE0 ; FB_AD[17] ; +; -10.277 ns ; 1.000 ns ; 11.277 ns ; MAIN_CLK ; FB_AD[18] ; +; -10.221 ns ; 1.000 ns ; 11.221 ns ; FB_SIZE0 ; FB_AD[29] ; +; -10.220 ns ; 1.000 ns ; 11.220 ns ; nFB_CS2 ; FB_AD[22] ; +; -10.178 ns ; 1.000 ns ; 11.178 ns ; FB_SIZE0 ; FB_AD[19] ; +; -10.146 ns ; 1.000 ns ; 11.146 ns ; FB_SIZE0 ; FB_AD[31] ; +; -10.136 ns ; 1.000 ns ; 11.136 ns ; nFB_CS1 ; FB_AD[24] ; +; -10.123 ns ; 1.000 ns ; 11.123 ns ; nFB_CS1 ; FB_AD[19] ; +; -10.101 ns ; 1.000 ns ; 11.101 ns ; FB_SIZE1 ; FB_AD[17] ; +; -10.085 ns ; 1.000 ns ; 11.085 ns ; nFB_WR ; FB_AD[24] ; +; -10.081 ns ; 1.000 ns ; 11.081 ns ; nFB_CS1 ; FB_AD[16] ; +; -10.077 ns ; 1.000 ns ; 11.077 ns ; nFB_CS2 ; FB_AD[19] ; +; -10.077 ns ; 1.000 ns ; 11.077 ns ; FB_SIZE0 ; FB_AD[21] ; +; -10.076 ns ; 1.000 ns ; 11.076 ns ; FB_SIZE1 ; FB_AD[19] ; +; -10.074 ns ; 1.000 ns ; 11.074 ns ; SRD[9] ; FB_AD[25] ; +; -10.070 ns ; 1.000 ns ; 11.070 ns ; nFB_CS1 ; FB_AD[29] ; +; -10.061 ns ; 1.000 ns ; 11.061 ns ; nFB_OE ; FB_AD[21] ; +; -10.060 ns ; 1.000 ns ; 11.060 ns ; nFB_WR ; FB_AD[21] ; +; -10.051 ns ; 1.000 ns ; 11.051 ns ; nFB_WR ; FB_AD[19] ; +; -10.044 ns ; 1.000 ns ; 11.044 ns ; FB_SIZE1 ; FB_AD[29] ; +; -10.041 ns ; 1.000 ns ; 11.041 ns ; FB_SIZE0 ; FB_AD[30] ; +; -10.021 ns ; 1.000 ns ; 11.021 ns ; FB_SIZE1 ; FB_AD[21] ; +; -10.019 ns ; 1.000 ns ; 11.019 ns ; nFB_WR ; FB_AD[29] ; +; -10.004 ns ; 1.000 ns ; 11.004 ns ; nFB_WR ; FB_AD[6] ; +; -9.969 ns ; 1.000 ns ; 10.969 ns ; FB_SIZE1 ; FB_AD[31] ; +; -9.951 ns ; 1.000 ns ; 10.951 ns ; FB_SIZE0 ; FB_AD[22] ; +; -9.938 ns ; 1.000 ns ; 10.938 ns ; nFB_CS2 ; FB_AD[26] ; +; -9.918 ns ; 1.000 ns ; 10.918 ns ; nFB_CS1 ; FB_AD[31] ; +; -9.914 ns ; 1.000 ns ; 10.914 ns ; nFB_CS2 ; FB_AD[17] ; +; -9.903 ns ; 1.000 ns ; 10.903 ns ; FB_SIZE0 ; FB_AD[25] ; +; -9.899 ns ; 1.000 ns ; 10.899 ns ; IDE_INT ; FB_AD[21] ; +; -9.876 ns ; 1.000 ns ; 10.876 ns ; nFB_CS2 ; FB_AD[31] ; +; -9.864 ns ; 1.000 ns ; 10.864 ns ; FB_SIZE1 ; FB_AD[30] ; +; -9.835 ns ; 1.000 ns ; 10.835 ns ; LP_D[3] ; FB_AD[27] ; +; -9.823 ns ; 1.000 ns ; 10.823 ns ; nFB_WR ; FB_AD[17] ; +; -9.820 ns ; 1.000 ns ; 10.820 ns ; nFB_CS2 ; FB_AD[30] ; +; -9.813 ns ; 1.000 ns ; 10.813 ns ; MAIN_CLK ; FB_AD[20] ; +; -9.802 ns ; 1.000 ns ; 10.802 ns ; nFB_CS2 ; FB_AD[25] ; +; -9.801 ns ; 1.000 ns ; 10.801 ns ; FB_SIZE1 ; FB_AD[25] ; +; -9.792 ns ; 1.000 ns ; 10.792 ns ; nFB_CS2 ; FB_AD[29] ; +; -9.791 ns ; 1.000 ns ; 10.791 ns ; nFB_OE ; FB_AD[25] ; +; -9.778 ns ; 1.000 ns ; 10.778 ns ; FB_SIZE1 ; FB_AD[22] ; +; -9.770 ns ; 1.000 ns ; 10.770 ns ; nFB_OE ; FB_AD[23] ; +; -9.763 ns ; 1.000 ns ; 10.763 ns ; nFB_CS1 ; FB_AD[2] ; +; -9.750 ns ; 1.000 ns ; 10.750 ns ; nFB_WR ; FB_AD[31] ; +; -9.729 ns ; 1.000 ns ; 10.729 ns ; FB_SIZE0 ; FB_AD[9] ; +; -9.729 ns ; 1.000 ns ; 10.729 ns ; nFB_CS1 ; FB_AD[30] ; +; -9.701 ns ; 1.000 ns ; 10.701 ns ; MAIN_CLK ; FB_AD[21] ; +; -9.699 ns ; 1.000 ns ; 10.699 ns ; FB_SIZE0 ; FB_AD[24] ; +; -9.692 ns ; 1.000 ns ; 10.692 ns ; nFB_OE ; FB_AD[22] ; +; -9.685 ns ; 1.000 ns ; 10.685 ns ; nFB_OE ; FB_AD[31] ; +; -9.684 ns ; 1.000 ns ; 10.684 ns ; nFB_OE ; FB_AD[19] ; +; -9.671 ns ; 1.000 ns ; 10.671 ns ; nFB_OE ; FB_AD[17] ; +; -9.634 ns ; 1.000 ns ; 10.634 ns ; nFB_CS2 ; FB_AD[24] ; +; -9.630 ns ; 1.000 ns ; 10.630 ns ; SRD[2] ; FB_AD[18] ; +; -9.629 ns ; 1.000 ns ; 10.629 ns ; nFB_WR ; FB_AD[30] ; +; -9.628 ns ; 1.000 ns ; 10.628 ns ; nFB_CS2 ; FB_AD[9] ; +; -9.627 ns ; 1.000 ns ; 10.627 ns ; FB_SIZE1 ; FB_AD[9] ; +; -9.600 ns ; 1.000 ns ; 10.600 ns ; nFB_CS1 ; FB_AD[28] ; +; -9.597 ns ; 1.000 ns ; 10.597 ns ; FB_SIZE1 ; FB_AD[24] ; +; -9.593 ns ; 1.000 ns ; 10.593 ns ; nFB_WR ; FB_AD[16] ; +; -9.574 ns ; 1.000 ns ; 10.574 ns ; FB_SIZE0 ; FB_AD[28] ; +; -9.572 ns ; 1.000 ns ; 10.572 ns ; DCD ; FB_AD[17] ; +; -9.565 ns ; 1.000 ns ; 10.565 ns ; nFB_OE ; FB_AD[24] ; +; -9.559 ns ; 1.000 ns ; 10.559 ns ; nFB_WR ; FB_AD[8] ; +; -9.554 ns ; 1.000 ns ; 10.554 ns ; nFB_CS1 ; FB_AD[8] ; +; -9.521 ns ; 1.000 ns ; 10.521 ns ; nFB_CS1 ; FB_AD[3] ; +; -9.491 ns ; 1.000 ns ; 10.491 ns ; nFB_WR ; FB_AD[28] ; +; -9.477 ns ; 1.000 ns ; 10.477 ns ; nFB_CS2 ; FB_AD[3] ; +; -9.455 ns ; 1.000 ns ; 10.455 ns ; FB_SIZE0 ; FB_AD[26] ; +; -9.418 ns ; 1.000 ns ; 10.418 ns ; RI ; FB_AD[22] ; +; -9.410 ns ; 1.000 ns ; 10.410 ns ; nFB_CS1 ; FB_AD[5] ; +; -9.398 ns ; 1.000 ns ; 10.398 ns ; MAIN_CLK ; FB_AD[26] ; +; -9.397 ns ; 1.000 ns ; 10.397 ns ; FB_SIZE1 ; FB_AD[28] ; +; -9.394 ns ; 1.000 ns ; 10.394 ns ; SRD[8] ; FB_AD[24] ; +; -9.381 ns ; 1.000 ns ; 10.381 ns ; nFB_OE ; FB_AD[26] ; +; -9.380 ns ; 1.000 ns ; 10.380 ns ; nFB_CS2 ; FB_AD[11] ; +; -9.371 ns ; 1.000 ns ; 10.371 ns ; FB_SIZE0 ; FB_AD[4] ; +; -9.370 ns ; 1.000 ns ; 10.370 ns ; nFB_WR ; FB_AD[5] ; +; -9.355 ns ; 1.000 ns ; 10.355 ns ; nFB_OE ; FB_AD[4] ; +; -9.344 ns ; 1.000 ns ; 10.344 ns ; nFB_CS2 ; FB_AD[5] ; +; -9.333 ns ; 1.000 ns ; 10.333 ns ; FB_SIZE0 ; FB_AD[16] ; +; -9.328 ns ; 1.000 ns ; 10.328 ns ; FB_SIZE0 ; FB_AD[2] ; +; -9.315 ns ; 1.000 ns ; 10.315 ns ; FB_SIZE1 ; FB_AD[4] ; +; -9.312 ns ; 1.000 ns ; 10.312 ns ; FB_SIZE0 ; FB_AD[3] ; +; -9.312 ns ; 1.000 ns ; 10.312 ns ; nFB_OE ; FB_AD[2] ; +; -9.309 ns ; 1.000 ns ; 10.309 ns ; MAIN_CLK ; FB_AD[22] ; +; -9.305 ns ; 1.000 ns ; 10.305 ns ; MAIN_CLK ; FB_AD[25] ; +; -9.296 ns ; 1.000 ns ; 10.296 ns ; nFB_OE ; FB_AD[3] ; +; -9.278 ns ; 1.000 ns ; 10.278 ns ; FB_SIZE1 ; FB_AD[26] ; +; -9.275 ns ; 1.000 ns ; 10.275 ns ; nFB_WR ; FB_AD[2] ; +; -9.273 ns ; 1.000 ns ; 10.273 ns ; nFB_CS1 ; nFB_TA ; +; -9.272 ns ; 1.000 ns ; 10.272 ns ; FB_SIZE1 ; FB_AD[2] ; +; -9.271 ns ; 1.000 ns ; 10.271 ns ; nFB_CS2 ; FB_AD[16] ; +; -9.262 ns ; 1.000 ns ; 10.262 ns ; nFB_OE ; FB_AD[28] ; +; -9.256 ns ; 1.000 ns ; 10.256 ns ; FB_SIZE1 ; FB_AD[3] ; +; -9.245 ns ; 1.000 ns ; 10.245 ns ; nFB_CS2 ; FB_AD[2] ; +; -9.231 ns ; 1.000 ns ; 10.231 ns ; CLK33M ; VB[7] ; +; -9.210 ns ; 1.000 ns ; 10.210 ns ; nFB_CS2 ; FB_AD[4] ; +; -9.203 ns ; 1.000 ns ; 10.203 ns ; nFB_OE ; FB_AD[9] ; +; -9.201 ns ; 1.000 ns ; 10.201 ns ; nFB_CS2 ; FB_AD[8] ; +; -9.199 ns ; 1.000 ns ; 10.199 ns ; MAIN_CLK ; FB_AD[31] ; +; -9.198 ns ; 1.000 ns ; 10.198 ns ; CLK33M ; VSYNC_PAD ; +; -9.193 ns ; 1.000 ns ; 10.193 ns ; CLK33M ; VR[6] ; +; -9.191 ns ; 1.000 ns ; 10.191 ns ; CLK33M ; VG[3] ; +; -9.176 ns ; 1.000 ns ; 10.176 ns ; nFB_CS1 ; FB_AD[4] ; +; -9.168 ns ; 1.000 ns ; 10.168 ns ; LP_D[7] ; FB_AD[31] ; +; -9.156 ns ; 1.000 ns ; 10.156 ns ; FB_SIZE1 ; FB_AD[16] ; +; -9.145 ns ; 1.000 ns ; 10.145 ns ; MAIN_CLK ; FB_AD[23] ; +; -9.145 ns ; 1.000 ns ; 10.145 ns ; nFB_CS2 ; FB_AD[28] ; +; -9.112 ns ; 1.000 ns ; 10.112 ns ; nFB_WR ; FB_AD[3] ; +; -9.099 ns ; 1.000 ns ; 10.099 ns ; MAIN_CLK ; FB_AD[19] ; +; -9.089 ns ; 1.000 ns ; 10.089 ns ; nFB_OE ; FB_AD[5] ; +; -9.088 ns ; 1.000 ns ; 10.088 ns ; SRD[5] ; FB_AD[21] ; +; -9.081 ns ; 1.000 ns ; 10.081 ns ; nFB_OE ; FB_AD[16] ; +; -9.079 ns ; 1.000 ns ; 10.079 ns ; MAIN_CLK ; FB_AD[24] ; +; -9.047 ns ; 1.000 ns ; 10.047 ns ; nFB_CS2 ; FB_AD[10] ; +; -9.019 ns ; 1.000 ns ; 10.019 ns ; nFB_CS2 ; FB_AD[13] ; +; -9.004 ns ; 1.000 ns ; 10.004 ns ; FB_SIZE0 ; FB_AD[8] ; +; -8.984 ns ; 1.000 ns ; 9.984 ns ; LP_D[5] ; FB_AD[29] ; +; -8.935 ns ; 1.000 ns ; 9.935 ns ; SRD[4] ; FB_AD[20] ; +; -8.933 ns ; 1.000 ns ; 9.933 ns ; nFB_OE ; FB_AD[30] ; +; -8.927 ns ; 1.000 ns ; 9.927 ns ; SRD[10] ; FB_AD[26] ; +; -8.926 ns ; 1.000 ns ; 9.926 ns ; nFB_OE ; FB_AD[8] ; +; -8.924 ns ; 1.000 ns ; 9.924 ns ; nFB_CS2 ; FB_AD[6] ; +; -8.921 ns ; 1.000 ns ; 9.921 ns ; nFB_WR ; FB_AD[4] ; +; -8.916 ns ; 1.000 ns ; 9.916 ns ; LP_D[6] ; FB_AD[30] ; +; -8.909 ns ; 1.000 ns ; 9.909 ns ; nFB_CS2 ; FB_AD[15] ; +; -8.902 ns ; 1.000 ns ; 9.902 ns ; FB_SIZE1 ; FB_AD[8] ; +; -8.896 ns ; 1.000 ns ; 9.896 ns ; FB_SIZE0 ; FB_AD[5] ; +; -8.876 ns ; 1.000 ns ; 9.876 ns ; nFB_CS2 ; FB_AD[14] ; +; -8.873 ns ; 1.000 ns ; 9.873 ns ; LP_BUSY ; FB_AD[16] ; +; -8.869 ns ; 1.000 ns ; 9.869 ns ; MAIN_CLK ; FB_AD[4] ; +; -8.864 ns ; 1.000 ns ; 9.864 ns ; nFB_OE ; FB_AD[29] ; +; -8.852 ns ; 1.000 ns ; 9.852 ns ; nFB_CS2 ; FB_AD[12] ; +; -8.840 ns ; 1.000 ns ; 9.840 ns ; FB_SIZE1 ; FB_AD[5] ; +; -8.826 ns ; 1.000 ns ; 9.826 ns ; MAIN_CLK ; FB_AD[2] ; +; -8.819 ns ; 1.000 ns ; 9.819 ns ; DCD ; FB_AD[3] ; +; -8.810 ns ; 1.000 ns ; 9.810 ns ; MAIN_CLK ; FB_AD[3] ; +; -8.804 ns ; 1.000 ns ; 9.804 ns ; nFB_OE ; FB_AD[13] ; +; -8.803 ns ; 1.000 ns ; 9.803 ns ; SRD[7] ; FB_AD[23] ; +; -8.780 ns ; 1.000 ns ; 9.780 ns ; nFB_CS2 ; FB_AD[1] ; +; -8.776 ns ; 1.000 ns ; 9.776 ns ; MAIN_CLK ; FB_AD[28] ; +; -8.715 ns ; 1.000 ns ; 9.715 ns ; FB_SIZE0 ; FB_AD[12] ; +; -8.715 ns ; 1.000 ns ; 9.715 ns ; FB_SIZE0 ; FB_AD[11] ; +; -8.699 ns ; 1.000 ns ; 9.699 ns ; FB_SIZE0 ; BA[0] ; +; -8.699 ns ; 1.000 ns ; 9.699 ns ; nFB_OE ; FB_AD[12] ; +; -8.699 ns ; 1.000 ns ; 9.699 ns ; nFB_OE ; FB_AD[11] ; +; -8.672 ns ; 1.000 ns ; 9.672 ns ; FB_SIZE0 ; FB_AD[6] ; +; -8.660 ns ; 1.000 ns ; 9.660 ns ; RI ; FB_AD[8] ; +; -8.659 ns ; 1.000 ns ; 9.659 ns ; FB_SIZE1 ; FB_AD[12] ; +; -8.659 ns ; 1.000 ns ; 9.659 ns ; FB_SIZE1 ; FB_AD[11] ; +; -8.656 ns ; 1.000 ns ; 9.656 ns ; nFB_OE ; FB_AD[6] ; +; -8.651 ns ; 1.000 ns ; 9.651 ns ; FB_SIZE0 ; FB_AD[0] ; +; Timing analysis restricted to 200 rows. ; To change the limit use Settings (Assignments menu) ; ; ; ; ++-----------------------------------------+-----------------------------------------------------+-----------------+----------+-----------+ + + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; th ; ++-----------------------------------------+-----------------------------------------------------+-----------+-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+----------+ +; Minimum Slack ; Required th ; Actual th ; From ; To ; To Clock ; ++-----------------------------------------+-----------------------------------------------------+-----------+-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+----------+ +; -0.401 ns ; 1.000 ns ; 1.401 ns ; FB_AD[25] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[9] ; MAIN_CLK ; +; -0.386 ns ; 1.000 ns ; 1.386 ns ; FB_AD[25] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDB[9] ; MAIN_CLK ; +; -0.383 ns ; 1.000 ns ; 1.383 ns ; FB_AD[21] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VSS[5] ; MAIN_CLK ; +; -0.383 ns ; 1.000 ns ; 1.383 ns ; FB_AD[21] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[21] ; MAIN_CLK ; +; -0.370 ns ; 1.000 ns ; 1.370 ns ; CTS ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|INT_SRC_EDGE[2] ; MAIN_CLK ; +; -0.339 ns ; 1.000 ns ; 1.339 ns ; FB_AD[18] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[2] ; MAIN_CLK ; +; -0.333 ns ; 1.000 ns ; 1.333 ns ; FB_AD[22] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[22] ; MAIN_CLK ; +; -0.328 ns ; 1.000 ns ; 1.328 ns ; FB_AD[25] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HHT[9] ; MAIN_CLK ; +; -0.325 ns ; 1.000 ns ; 1.325 ns ; FB_AD[27] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HHT[11] ; MAIN_CLK ; +; -0.325 ns ; 1.000 ns ; 1.325 ns ; RI ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|INT_SRC_EDGE[14] ; MAIN_CLK ; +; -0.321 ns ; 1.000 ns ; 1.321 ns ; FB_AD[21] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDB[5] ; MAIN_CLK ; +; -0.320 ns ; 1.000 ns ; 1.320 ns ; FB_AD[25] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[25] ; MAIN_CLK ; +; -0.310 ns ; 1.000 ns ; 1.310 ns ; FB_AD[5] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[5] ; MAIN_CLK ; +; -0.302 ns ; 1.000 ns ; 1.302 ns ; FB_AD[27] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HSS[11] ; MAIN_CLK ; +; -0.302 ns ; 1.000 ns ; 1.302 ns ; CTS ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|\EDGE_ENA:LOCK[2] ; MAIN_CLK ; +; -0.293 ns ; 1.000 ns ; 1.293 ns ; FB_AD[18] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[2] ; MAIN_CLK ; +; -0.285 ns ; 1.000 ns ; 1.285 ns ; FB_AD[6] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[6] ; MAIN_CLK ; +; -0.283 ns ; 1.000 ns ; 1.283 ns ; FB_AD[25] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[9] ; MAIN_CLK ; +; -0.275 ns ; 1.000 ns ; 1.275 ns ; FB_AD[17] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[17] ; MAIN_CLK ; +; -0.272 ns ; 1.000 ns ; 1.272 ns ; FB_AD[24] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[8] ; MAIN_CLK ; +; -0.269 ns ; 1.000 ns ; 1.269 ns ; FB_AD[4] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[4] ; MAIN_CLK ; +; -0.265 ns ; 1.000 ns ; 1.265 ns ; FB_AD[4] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[4] ; MAIN_CLK ; +; -0.252 ns ; 1.000 ns ; 1.252 ns ; FB_AD[19] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[3] ; MAIN_CLK ; +; -0.247 ns ; 1.000 ns ; 1.247 ns ; FB_AD[24] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBB[8] ; MAIN_CLK ; +; -0.246 ns ; 1.000 ns ; 1.246 ns ; FB_AD[26] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[26] ; MAIN_CLK ; +; -0.245 ns ; 1.000 ns ; 1.245 ns ; FB_AD[23] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[23] ; MAIN_CLK ; +; -0.238 ns ; 1.000 ns ; 1.238 ns ; FB_AD[16] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[16] ; MAIN_CLK ; +; -0.235 ns ; 1.000 ns ; 1.235 ns ; FB_AD[19] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VR_FRQ[3] ; MAIN_CLK ; +; -0.235 ns ; 1.000 ns ; 1.235 ns ; FB_AD[24] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[8] ; MAIN_CLK ; +; -0.227 ns ; 1.000 ns ; 1.227 ns ; FB_AD[18] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[18] ; MAIN_CLK ; +; -0.226 ns ; 1.000 ns ; 1.226 ns ; FB_AD[10] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[10] ; MAIN_CLK ; +; -0.224 ns ; 1.000 ns ; 1.224 ns ; FB_AD[18] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[18] ; MAIN_CLK ; +; -0.223 ns ; 1.000 ns ; 1.223 ns ; FB_AD[16] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HHT[0] ; MAIN_CLK ; +; -0.222 ns ; 1.000 ns ; 1.222 ns ; FB_AD[16] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[0] ; MAIN_CLK ; +; -0.216 ns ; 1.000 ns ; 1.216 ns ; FB_AD[26] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDB[10] ; MAIN_CLK ; +; -0.208 ns ; 1.000 ns ; 1.208 ns ; FB_AD[24] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[8] ; MAIN_CLK ; +; -0.202 ns ; 1.000 ns ; 1.202 ns ; FB_AD[22] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[22] ; MAIN_CLK ; +; -0.197 ns ; 1.000 ns ; 1.197 ns ; FB_AD[9] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[9] ; MAIN_CLK ; +; -0.194 ns ; 1.000 ns ; 1.194 ns ; FB_AD[15] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[15] ; MAIN_CLK ; +; -0.191 ns ; 1.000 ns ; 1.191 ns ; FB_AD[5] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[5] ; MAIN_CLK ; +; -0.189 ns ; 1.000 ns ; 1.189 ns ; FB_AD[6] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[6] ; MAIN_CLK ; +; -0.187 ns ; 1.000 ns ; 1.187 ns ; FB_AD[1] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[1] ; MAIN_CLK ; +; -0.181 ns ; 1.000 ns ; 1.181 ns ; FB_AD[20] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[4] ; MAIN_CLK ; +; -0.179 ns ; 1.000 ns ; 1.179 ns ; FB_AD[3] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[3] ; MAIN_CLK ; +; -0.173 ns ; 1.000 ns ; 1.173 ns ; FB_AD[18] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[18] ; MAIN_CLK ; +; -0.172 ns ; 1.000 ns ; 1.172 ns ; FB_AD[16] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[0] ; MAIN_CLK ; +; -0.166 ns ; 1.000 ns ; 1.166 ns ; FB_AD[26] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HHT[10] ; MAIN_CLK ; +; -0.165 ns ; 1.000 ns ; 1.165 ns ; FB_AD[26] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBB[10] ; MAIN_CLK ; +; -0.162 ns ; 1.000 ns ; 1.162 ns ; FB_AD[22] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBE[6] ; MAIN_CLK ; +; -0.159 ns ; 1.000 ns ; 1.159 ns ; FB_AD[19] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[19] ; MAIN_CLK ; +; -0.159 ns ; 1.000 ns ; 1.159 ns ; FB_AD[27] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[27] ; MAIN_CLK ; +; -0.154 ns ; 1.000 ns ; 1.154 ns ; FB_AD[19] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[19] ; MAIN_CLK ; +; -0.151 ns ; 1.000 ns ; 1.151 ns ; FB_AD[25] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HSS[9] ; MAIN_CLK ; +; -0.149 ns ; 1.000 ns ; 1.149 ns ; FB_AD[26] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[26] ; MAIN_CLK ; +; -0.146 ns ; 1.000 ns ; 1.146 ns ; FB_AD[17] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[1] ; MAIN_CLK ; +; -0.145 ns ; 1.000 ns ; 1.145 ns ; FB_AD[21] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[5] ; MAIN_CLK ; +; -0.142 ns ; 1.000 ns ; 1.142 ns ; FB_AD[25] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VSS[9] ; MAIN_CLK ; +; -0.141 ns ; 1.000 ns ; 1.141 ns ; FB_AD[26] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HSS[10] ; MAIN_CLK ; +; -0.140 ns ; 1.000 ns ; 1.140 ns ; FB_AD[4] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[4] ; MAIN_CLK ; +; -0.137 ns ; 1.000 ns ; 1.137 ns ; FB_AD[3] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[3] ; MAIN_CLK ; +; -0.134 ns ; 1.000 ns ; 1.134 ns ; FB_AD[23] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VR_FRQ[7] ; MAIN_CLK ; +; -0.130 ns ; 1.000 ns ; 1.130 ns ; FB_AD[22] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[22] ; MAIN_CLK ; +; -0.130 ns ; 1.000 ns ; 1.130 ns ; FB_AD[26] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[10] ; MAIN_CLK ; +; -0.125 ns ; 1.000 ns ; 1.125 ns ; FB_AD[7] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[7] ; MAIN_CLK ; +; -0.121 ns ; 1.000 ns ; 1.121 ns ; FB_AD[16] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VSS[0] ; MAIN_CLK ; +; -0.121 ns ; 1.000 ns ; 1.121 ns ; FB_AD[18] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[2] ; MAIN_CLK ; +; -0.113 ns ; 1.000 ns ; 1.113 ns ; FB_AD[21] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VFT[5] ; MAIN_CLK ; +; -0.109 ns ; 1.000 ns ; 1.109 ns ; FB_AD[23] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VSS[7] ; MAIN_CLK ; +; -0.108 ns ; 1.000 ns ; 1.108 ns ; FB_AD[18] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HHT[2] ; MAIN_CLK ; +; -0.099 ns ; 1.000 ns ; 1.099 ns ; FB_AD[10] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[10] ; MAIN_CLK ; +; -0.094 ns ; 1.000 ns ; 1.094 ns ; FB_AD[19] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[19] ; MAIN_CLK ; +; -0.092 ns ; 1.000 ns ; 1.092 ns ; FB_AD[25] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDE[9] ; MAIN_CLK ; +; -0.090 ns ; 1.000 ns ; 1.090 ns ; FB_AD[26] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBE[10] ; MAIN_CLK ; +; -0.089 ns ; 1.000 ns ; 1.089 ns ; FB_AD[23] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[23] ; MAIN_CLK ; +; -0.087 ns ; 1.000 ns ; 1.087 ns ; FB_AD[19] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[3] ; MAIN_CLK ; +; -0.086 ns ; 1.000 ns ; 1.086 ns ; FB_AD[21] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[5] ; MAIN_CLK ; +; -0.085 ns ; 1.000 ns ; 1.085 ns ; FB_AD[9] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[9] ; MAIN_CLK ; +; -0.081 ns ; 1.000 ns ; 1.081 ns ; FB_AD[22] ; Video:Fredi_Aschwanden|altdpram0:ST_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated|ram_block1a0~porta_datain_reg0 ; MAIN_CLK ; +; -0.079 ns ; 1.000 ns ; 1.079 ns ; FB_AD[24] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[24] ; MAIN_CLK ; +; -0.078 ns ; 1.000 ns ; 1.078 ns ; FB_AD[25] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBE[9] ; MAIN_CLK ; +; -0.077 ns ; 1.000 ns ; 1.077 ns ; FB_AD[25] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBB[9] ; MAIN_CLK ; +; -0.075 ns ; 1.000 ns ; 1.075 ns ; FB_AD[18] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDE[2] ; MAIN_CLK ; +; -0.074 ns ; 1.000 ns ; 1.074 ns ; FB_AD[21] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[21] ; MAIN_CLK ; +; -0.070 ns ; 1.000 ns ; 1.070 ns ; FB_AD[1] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[1] ; MAIN_CLK ; +; -0.070 ns ; 1.000 ns ; 1.070 ns ; FB_AD[14] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[14] ; MAIN_CLK ; +; -0.068 ns ; 1.000 ns ; 1.068 ns ; FB_AD[21] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDE[5] ; MAIN_CLK ; +; -0.068 ns ; 1.000 ns ; 1.068 ns ; FB_AD[22] ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|ram_block1a0~porta_datain_reg0 ; MAIN_CLK ; +; -0.065 ns ; 1.000 ns ; 1.065 ns ; FB_AD[14] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[14] ; MAIN_CLK ; +; -0.064 ns ; 1.000 ns ; 1.064 ns ; FB_AD[7] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[7] ; MAIN_CLK ; +; -0.064 ns ; 1.000 ns ; 1.064 ns ; FB_AD[26] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VFT[10] ; MAIN_CLK ; +; -0.062 ns ; 1.000 ns ; 1.062 ns ; FB_AD[27] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[27] ; MAIN_CLK ; +; -0.059 ns ; 1.000 ns ; 1.059 ns ; FB_AD[19] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBB[3] ; MAIN_CLK ; +; -0.057 ns ; 1.000 ns ; 1.057 ns ; FB_AD[20] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VSS[4] ; MAIN_CLK ; +; -0.055 ns ; 1.000 ns ; 1.055 ns ; FB_AD[18] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[18] ; MAIN_CLK ; +; -0.055 ns ; 1.000 ns ; 1.055 ns ; FB_AD[6] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[6] ; MAIN_CLK ; +; -0.055 ns ; 1.000 ns ; 1.055 ns ; FB_AD[25] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[25] ; MAIN_CLK ; +; -0.053 ns ; 1.000 ns ; 1.053 ns ; FB_AD[25] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[9] ; MAIN_CLK ; +; -0.047 ns ; 1.000 ns ; 1.047 ns ; FB_AD[19] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HHT[3] ; MAIN_CLK ; +; -0.047 ns ; 1.000 ns ; 1.047 ns ; FB_AD[25] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[9] ; MAIN_CLK ; +; -0.046 ns ; 1.000 ns ; 1.046 ns ; FB_AD[23] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBB[7] ; MAIN_CLK ; +; -0.042 ns ; 1.000 ns ; 1.042 ns ; FB_AD[18] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[18] ; MAIN_CLK ; +; -0.042 ns ; 1.000 ns ; 1.042 ns ; FB_AD[24] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDE[8] ; MAIN_CLK ; +; -0.039 ns ; 1.000 ns ; 1.039 ns ; FB_AD[21] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[21] ; MAIN_CLK ; +; -0.037 ns ; 1.000 ns ; 1.037 ns ; FB_AD[23] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[7] ; MAIN_CLK ; +; -0.037 ns ; 1.000 ns ; 1.037 ns ; FB_AD[4] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[4] ; MAIN_CLK ; +; -0.035 ns ; 1.000 ns ; 1.035 ns ; FB_AD[14] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[14] ; MAIN_CLK ; +; -0.033 ns ; 1.000 ns ; 1.033 ns ; FB_AD[20] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[20] ; MAIN_CLK ; +; -0.028 ns ; 1.000 ns ; 1.028 ns ; FB_AD[20] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HSS[4] ; MAIN_CLK ; +; -0.026 ns ; 1.000 ns ; 1.026 ns ; FB_AD[18] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBB[2] ; MAIN_CLK ; +; -0.022 ns ; 1.000 ns ; 1.022 ns ; FB_AD[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[0] ; MAIN_CLK ; +; -0.018 ns ; 1.000 ns ; 1.018 ns ; FB_AD[23] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HHT[7] ; MAIN_CLK ; +; -0.018 ns ; 1.000 ns ; 1.018 ns ; FB_AD[12] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[12] ; MAIN_CLK ; +; -0.017 ns ; 1.000 ns ; 1.017 ns ; FB_AD[17] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[17] ; MAIN_CLK ; +; -0.017 ns ; 1.000 ns ; 1.017 ns ; FB_AD[23] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[7] ; MAIN_CLK ; +; -0.011 ns ; 1.000 ns ; 1.011 ns ; FB_AD[3] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[3] ; MAIN_CLK ; +; -0.010 ns ; 1.000 ns ; 1.010 ns ; FB_AD[19] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[3] ; MAIN_CLK ; +; -0.004 ns ; 1.000 ns ; 1.004 ns ; FB_AD[19] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VSS[3] ; MAIN_CLK ; +; 0.007 ns ; 1.000 ns ; 0.993 ns ; FB_AD[18] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HSS[2] ; MAIN_CLK ; +; 0.008 ns ; 1.000 ns ; 0.992 ns ; FB_AD[25] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[25] ; MAIN_CLK ; +; 0.009 ns ; 1.000 ns ; 0.991 ns ; FB_AD[10] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[10] ; MAIN_CLK ; +; 0.009 ns ; 1.000 ns ; 0.991 ns ; FB_AD[26] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VSS[10] ; MAIN_CLK ; +; 0.010 ns ; 1.000 ns ; 0.990 ns ; FB_AD[25] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[25] ; MAIN_CLK ; +; 0.015 ns ; 1.000 ns ; 0.985 ns ; FB_AD[18] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[2] ; MAIN_CLK ; +; 0.018 ns ; 1.000 ns ; 0.982 ns ; FB_AD[18] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDB[2] ; MAIN_CLK ; +; 0.021 ns ; 1.000 ns ; 0.979 ns ; FB_AD[1] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[1] ; MAIN_CLK ; +; 0.022 ns ; 1.000 ns ; 0.978 ns ; FB_AD[2] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[2] ; MAIN_CLK ; +; 0.027 ns ; 1.000 ns ; 0.973 ns ; FB_AD[7] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[7] ; MAIN_CLK ; +; 0.033 ns ; 1.000 ns ; 0.967 ns ; FB_AD[2] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[2] ; MAIN_CLK ; +; 0.036 ns ; 1.000 ns ; 0.964 ns ; FB_AD[22] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBB[6] ; MAIN_CLK ; +; 0.042 ns ; 1.000 ns ; 0.958 ns ; FB_AD[24] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HSS[8] ; MAIN_CLK ; +; 0.044 ns ; 1.000 ns ; 0.956 ns ; FB_AD[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[0] ; MAIN_CLK ; +; 0.045 ns ; 1.000 ns ; 0.955 ns ; FB_AD[22] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[22] ; MAIN_CLK ; +; 0.045 ns ; 1.000 ns ; 0.955 ns ; FB_AD[26] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDE[10] ; MAIN_CLK ; +; 0.046 ns ; 1.000 ns ; 0.954 ns ; FB_AD[14] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[14] ; MAIN_CLK ; +; 0.047 ns ; 1.000 ns ; 0.953 ns ; FB_AD[19] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBB[3] ; MAIN_CLK ; +; 0.049 ns ; 1.000 ns ; 0.951 ns ; FB_AD[22] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[6] ; MAIN_CLK ; +; 0.049 ns ; 1.000 ns ; 0.951 ns ; VD[14] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[14] ; MAIN_CLK ; +; 0.049 ns ; 1.000 ns ; 0.951 ns ; VD[5] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[5] ; MAIN_CLK ; +; 0.049 ns ; 1.000 ns ; 0.951 ns ; VD[5] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[5] ; MAIN_CLK ; +; 0.050 ns ; 1.000 ns ; 0.950 ns ; VD[14] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[14] ; MAIN_CLK ; +; 0.050 ns ; 1.000 ns ; 0.950 ns ; RI ; FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF68901IP_TOP_SOC:I_MFP|WF68901IP_INTERRUPTS:I_INTERRUPTS|\EDGE_ENA:LOCK[14] ; MAIN_CLK ; +; 0.054 ns ; 1.000 ns ; 0.946 ns ; FB_AD[3] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[3] ; MAIN_CLK ; +; 0.054 ns ; 1.000 ns ; 0.946 ns ; FB_AD[18] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBB[2] ; MAIN_CLK ; +; 0.055 ns ; 1.000 ns ; 0.945 ns ; FB_AD[29] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[29] ; MAIN_CLK ; +; 0.055 ns ; 1.000 ns ; 0.945 ns ; VD[4] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[4] ; MAIN_CLK ; +; 0.057 ns ; 1.000 ns ; 0.943 ns ; VD[4] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[4] ; MAIN_CLK ; +; 0.064 ns ; 1.000 ns ; 0.936 ns ; FB_AD[20] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[20] ; MAIN_CLK ; +; 0.078 ns ; 1.000 ns ; 0.922 ns ; FB_AD[18] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VR_FRQ[2] ; MAIN_CLK ; +; 0.079 ns ; 1.000 ns ; 0.921 ns ; FB_AD[19] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[3] ; MAIN_CLK ; +; 0.079 ns ; 1.000 ns ; 0.921 ns ; VD[8] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[8] ; MAIN_CLK ; +; 0.079 ns ; 1.000 ns ; 0.921 ns ; VD[8] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[8] ; MAIN_CLK ; +; 0.081 ns ; 1.000 ns ; 0.919 ns ; VD[7] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[7] ; MAIN_CLK ; +; 0.082 ns ; 1.000 ns ; 0.918 ns ; VD[7] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[7] ; MAIN_CLK ; +; 0.091 ns ; 1.000 ns ; 0.909 ns ; FB_AD[17] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB[1] ; MAIN_CLK ; +; 0.098 ns ; 1.000 ns ; 0.902 ns ; FB_AD[3] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[3] ; MAIN_CLK ; +; 0.106 ns ; 1.000 ns ; 0.894 ns ; FB_AD[25] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VFT[9] ; MAIN_CLK ; +; 0.107 ns ; 1.000 ns ; 0.893 ns ; FB_AD[16] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[16] ; MAIN_CLK ; +; 0.109 ns ; 1.000 ns ; 0.891 ns ; FB_AD[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[0] ; MAIN_CLK ; +; 0.110 ns ; 1.000 ns ; 0.890 ns ; FB_AD[27] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[27] ; MAIN_CLK ; +; 0.114 ns ; 1.000 ns ; 0.886 ns ; FB_AD[21] ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|ram_block1a0~porta_datain_reg0 ; MAIN_CLK ; +; 0.119 ns ; 1.000 ns ; 0.881 ns ; FB_AD[21] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[21] ; MAIN_CLK ; +; 0.125 ns ; 1.000 ns ; 0.875 ns ; FB_AD[20] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBB[4] ; MAIN_CLK ; +; 0.125 ns ; 1.000 ns ; 0.875 ns ; FB_AD[5] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[5] ; MAIN_CLK ; +; 0.128 ns ; 1.000 ns ; 0.872 ns ; FB_AD[2] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HL[2] ; MAIN_CLK ; +; 0.131 ns ; 1.000 ns ; 0.869 ns ; FB_AD[21] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[21] ; MAIN_CLK ; +; 0.131 ns ; 1.000 ns ; 0.869 ns ; FB_AD[29] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[29] ; MAIN_CLK ; +; 0.132 ns ; 1.000 ns ; 0.868 ns ; FB_AD[26] ; Video:Fredi_Aschwanden|altdpram0:ST_CLUT_RED|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated|ram_block1a0~porta_datain_reg0 ; MAIN_CLK ; +; 0.133 ns ; 1.000 ns ; 0.867 ns ; FB_AD[8] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[8] ; MAIN_CLK ; +; 0.136 ns ; 1.000 ns ; 0.864 ns ; FB_AD[16] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VBE[0] ; MAIN_CLK ; +; 0.148 ns ; 1.000 ns ; 0.852 ns ; FB_AD[9] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VH[9] ; MAIN_CLK ; +; 0.149 ns ; 1.000 ns ; 0.851 ns ; FB_AD[22] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HHT[6] ; MAIN_CLK ; +; 0.151 ns ; 1.000 ns ; 0.849 ns ; FB_AD[16] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HSS[0] ; MAIN_CLK ; +; 0.151 ns ; 1.000 ns ; 0.849 ns ; FB_AD[2] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[2] ; MAIN_CLK ; +; 0.158 ns ; 1.000 ns ; 0.842 ns ; FB_AD[7] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[7] ; MAIN_CLK ; +; 0.159 ns ; 1.000 ns ; 0.841 ns ; FB_AD[23] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VFT[7] ; MAIN_CLK ; +; 0.159 ns ; 1.000 ns ; 0.841 ns ; FB_AD[22] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[22] ; MAIN_CLK ; +; 0.161 ns ; 1.000 ns ; 0.839 ns ; FB_AD[20] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[4] ; MAIN_CLK ; +; 0.163 ns ; 1.000 ns ; 0.837 ns ; FB_AD[16] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VFT[0] ; MAIN_CLK ; +; 0.168 ns ; 1.000 ns ; 0.832 ns ; FB_AD[7] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[7] ; MAIN_CLK ; +; 0.170 ns ; 1.000 ns ; 0.830 ns ; FB_AD[21] ; Video:Fredi_Aschwanden|altdpram0:ST_CLUT_BLUE|altsyncram:altsyncram_component|altsyncram_rb92:auto_generated|ram_block1a0~porta_datain_reg0 ; MAIN_CLK ; +; 0.170 ns ; 1.000 ns ; 0.830 ns ; FB_AD[22] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDE[6] ; MAIN_CLK ; +; 0.172 ns ; 1.000 ns ; 0.828 ns ; FB_AD[8] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[8] ; MAIN_CLK ; +; 0.178 ns ; 1.000 ns ; 0.822 ns ; FB_AD[10] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[10] ; MAIN_CLK ; +; 0.180 ns ; 1.000 ns ; 0.820 ns ; FB_AD[10] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[10] ; MAIN_CLK ; +; 0.181 ns ; 1.000 ns ; 0.819 ns ; FB_AD[17] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VFT[1] ; MAIN_CLK ; +; 0.186 ns ; 1.000 ns ; 0.814 ns ; FB_AD[0] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[0] ; MAIN_CLK ; +; 0.188 ns ; 1.000 ns ; 0.812 ns ; FB_AD[16] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|FALCON_SHIFT_MODE[0] ; MAIN_CLK ; +; 0.191 ns ; 1.000 ns ; 0.809 ns ; FB_AD[26] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[26] ; MAIN_CLK ; +; 0.195 ns ; 1.000 ns ; 0.805 ns ; FB_AD[23] ; Video:Fredi_Aschwanden|altdpram2:ACP_CLUT_RAM55|altsyncram:altsyncram_component|altsyncram_pf92:auto_generated|ram_block1a0~porta_datain_reg0 ; MAIN_CLK ; +; 0.198 ns ; 1.000 ns ; 0.802 ns ; FB_AD[21] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBB[5] ; MAIN_CLK ; +; 0.201 ns ; 1.000 ns ; 0.799 ns ; FB_AD[8] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_VL[8] ; MAIN_CLK ; +; 0.202 ns ; 1.000 ns ; 0.798 ns ; FB_AD[17] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HHT[1] ; MAIN_CLK ; +; 0.209 ns ; 1.000 ns ; 0.791 ns ; FB_AD[20] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VFT[4] ; MAIN_CLK ; +; 0.213 ns ; 1.000 ns ; 0.787 ns ; FB_AD[24] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ST_SHIFT_MODE[0] ; MAIN_CLK ; +; 0.216 ns ; 1.000 ns ; 0.784 ns ; FB_AD[20] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CCR[20] ; MAIN_CLK ; +; 0.220 ns ; 1.000 ns ; 0.780 ns ; VD[26] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[26] ; MAIN_CLK ; +; 0.221 ns ; 1.000 ns ; 0.779 ns ; VD[26] ; Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_h[26] ; MAIN_CLK ; +; 0.228 ns ; 1.000 ns ; 0.772 ns ; FB_AD[16] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VDB[0] ; MAIN_CLK ; +; 0.228 ns ; 1.000 ns ; 0.772 ns ; FB_AD[21] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDE[5] ; MAIN_CLK ; +; 0.233 ns ; 1.000 ns ; 0.767 ns ; FB_AD[3] ; Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ATARI_HH[3] ; MAIN_CLK ; +; Timing analysis restricted to 200 rows. ; To change the limit use Settings (Assignments menu) ; ; ; ; ; ++-----------------------------------------+-----------------------------------------------------+-----------+-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+----------+ + + ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Board Trace Model Assignments ; ++---------------+--------------+-------------------+-------------------------+-------------------------+---------------+---------------------+----------------+------------------+--------+------------------+------------------------+------------------------+--------------+---------------+-----------------+-------+---------------------+--------------------+ +; Pin ; I/O Standard ; Near Tline Length ; Near Tline L per Length ; Near Tline C per Length ; Near Series R ; Near Differential R ; Near Pull-up R ; Near Pull-down R ; Near C ; Far Tline Length ; Far Tline L per Length ; Far Tline C per Length ; Far Series R ; Far Pull-up R ; Far Pull-down R ; Far C ; Termination Voltage ; Far Differential R ; ++---------------+--------------+-------------------+-------------------------+-------------------------+---------------+---------------------+----------------+------------------+--------+------------------+------------------------+------------------------+--------------+---------------+-----------------+-------+---------------------+--------------------+ +; CLK24M576 ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; LP_STR ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; CLK25M ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nACSI_ACK ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nACSI_RESET ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nACSI_CS ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; ACSI_DIR ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; ACSI_A1 ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nSCSI_ACK ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nSCSI_ATN ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; SCSI_DIR ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; MIDI_OLR ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; MIDI_TLR ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; TxD ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; RTS ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; DTR ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; AMKB_TX ; 3.3-V LVCMOS ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; IDE_RES ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nIDE_CS0 ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nIDE_CS1 ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nIDE_WR ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nIDE_RD ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nCF_CS0 ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nCF_CS1 ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nROM3 ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nROM4 ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nRP_UDS ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nRP_LDS ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nSDSEL ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nWR_GATE ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nWR ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; YM_QA ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; YM_QB ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; YM_QC ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; SD_CLK ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; DSA_D ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nVWE ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nVCAS ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nVRAS ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nVCS ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nPD_VGA ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; TIN0 ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nSRCS ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nSRBLE ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nSRBHE ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nSRWE ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nDREQ1 ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; LED_FPGA_OK ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nSROE ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VCKE ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nFB_TA ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nDDR_CLK ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; DDR_CLK ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VSYNC_PAD ; 3.0-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; HSYNC_PAD ; 3.0-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nBLANK_PAD ; 3.0-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; PIXEL_CLK_PAD ; 3.0-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nSYNC ; 3.0-V LVCMOS ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nMOT_ON ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nSTEP_DIR ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nSTEP ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; CLKUSB ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; LPDIR ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; BA[1] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; BA[0] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nIRQ[7] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nIRQ[6] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nIRQ[5] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nIRQ[4] ; 3.0-V LVCMOS ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nIRQ[3] ; 3.0-V LVCMOS ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nIRQ[2] ; 3.0-V LVCMOS ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VA[12] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VA[11] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VA[10] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VA[9] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VA[8] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VA[7] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VA[6] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VA[5] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VA[4] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VA[3] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VA[2] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VA[1] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VA[0] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VB[7] ; 3.0-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VB[6] ; 3.0-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VB[5] ; 3.0-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VB[4] ; 3.0-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VB[3] ; 3.0-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VB[2] ; 3.0-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VB[1] ; 3.0-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VB[0] ; 3.0-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VDM[3] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VDM[2] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VDM[1] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VDM[0] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VG[7] ; 3.0-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VG[6] ; 3.0-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VG[5] ; 3.0-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VG[4] ; 3.0-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VG[3] ; 3.0-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VG[2] ; 3.0-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VG[1] ; 3.0-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VG[0] ; 3.0-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VR[7] ; 3.0-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VR[6] ; 3.0-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VR[5] ; 3.0-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VR[4] ; 3.0-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VR[3] ; 3.0-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VR[2] ; 3.0-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VR[1] ; 3.0-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VR[0] ; 3.0-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; FB_AD[31] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; FB_AD[30] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; FB_AD[29] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; FB_AD[28] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; FB_AD[27] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; FB_AD[26] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; FB_AD[25] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; FB_AD[24] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; FB_AD[23] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; FB_AD[22] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; FB_AD[21] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; FB_AD[20] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; FB_AD[19] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; FB_AD[18] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; FB_AD[17] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; FB_AD[16] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; FB_AD[15] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; FB_AD[14] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; FB_AD[13] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; FB_AD[12] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; FB_AD[11] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; FB_AD[10] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; FB_AD[9] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; FB_AD[8] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; FB_AD[7] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; FB_AD[6] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; FB_AD[5] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; FB_AD[4] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; FB_AD[3] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; FB_AD[2] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; FB_AD[1] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; FB_AD[0] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VD[31] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VD[30] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VD[29] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VD[28] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VD[27] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VD[26] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VD[25] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VD[24] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VD[23] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VD[22] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VD[21] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VD[20] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VD[19] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VD[18] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VD[17] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VD[16] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VD[15] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VD[14] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VD[13] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VD[12] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VD[11] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VD[10] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VD[9] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VD[8] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VD[7] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VD[6] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VD[5] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VD[4] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VD[3] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VD[2] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VD[1] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VD[0] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VDQS[3] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VDQS[2] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VDQS[1] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; VDQS[0] ; 2.5 V ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; IO[17] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; IO[16] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; IO[15] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; IO[14] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; IO[13] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; IO[12] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; IO[11] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; IO[10] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; IO[9] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; IO[8] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; IO[7] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; IO[6] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; IO[5] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; IO[4] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; IO[3] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; IO[2] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; IO[1] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; IO[0] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; SRD[15] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; SRD[14] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; SRD[13] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; SRD[12] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; SRD[11] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; SRD[10] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; SRD[9] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; SRD[8] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; SRD[7] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; SRD[6] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; SRD[5] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; SRD[4] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; SRD[3] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; SRD[2] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; SRD[1] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; SRD[0] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; SCSI_PAR ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nSCSI_SEL ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nSCSI_BUSY ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; nSCSI_RST ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; SD_CD_DATA3 ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; SD_CMD_D1 ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; ACSI_D[7] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; ACSI_D[6] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; ACSI_D[5] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; ACSI_D[4] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; ACSI_D[3] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; ACSI_D[2] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; ACSI_D[1] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; ACSI_D[0] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; LP_D[7] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; LP_D[6] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; LP_D[5] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; LP_D[4] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; LP_D[3] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; LP_D[2] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; LP_D[1] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; LP_D[0] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; SCSI_D[7] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; SCSI_D[6] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; SCSI_D[5] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; SCSI_D[4] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; SCSI_D[3] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; SCSI_D[2] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; SCSI_D[1] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; SCSI_D[0] ; 3.3-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; +; ~ALTERA_nCEO~ ; 3.0-V LVTTL ; 0 in ; 0 H/in ; 0 F/in ; short ; - ; open ; open ; open ; 0 in ; 0 H/in ; 0 F/in ; short ; open ; open ; open ; 0 V ; - ; ++---------------+--------------+-------------------+-------------------------+-------------------------+---------------+---------------------+----------------+------------------+--------+------------------+------------------------+------------------------+--------------+---------------+-----------------+-------+---------------------+--------------------+ + + ++----------------------------------------------------------------------------+ +; Input Transition Times ; ++-------------------------+--------------+-----------------+-----------------+ +; Pin ; I/O Standard ; 10-90 Rise Time ; 90-10 Fall Time ; ++-------------------------+--------------+-----------------+-----------------+ +; nFB_BURST ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; nACSI_DRQ ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; nACSI_INT ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; nSCSI_DRQ ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; nSCSI_MSG ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; nDCHG ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; SD_DATA0 ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; SD_DATA1 ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; SD_DATA2 ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; SD_CARD_DEDECT ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; SD_WP ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; nDACK0 ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; WP_CF_CARD ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; nSCSI_C_D ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; nSCSI_I_O ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; nFB_CS3 ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; TOUT0 ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; nMASTER ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_AD[31] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_AD[30] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_AD[29] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_AD[28] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_AD[27] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_AD[26] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_AD[25] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_AD[24] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_AD[23] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_AD[22] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_AD[21] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_AD[20] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_AD[19] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_AD[18] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_AD[17] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_AD[16] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_AD[15] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_AD[14] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_AD[13] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_AD[12] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_AD[11] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_AD[10] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_AD[9] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_AD[8] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_AD[7] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_AD[6] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_AD[5] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_AD[4] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_AD[3] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_AD[2] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_AD[1] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_AD[0] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; VD[31] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VD[30] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VD[29] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VD[28] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VD[27] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VD[26] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VD[25] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VD[24] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VD[23] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VD[22] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VD[21] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VD[20] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VD[19] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VD[18] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VD[17] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VD[16] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VD[15] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VD[14] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VD[13] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VD[12] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VD[11] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VD[10] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VD[9] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VD[8] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VD[7] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VD[6] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VD[5] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VD[4] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VD[3] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VD[2] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VD[1] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VD[0] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VDQS[3] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VDQS[2] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VDQS[1] ; 2.5 V ; 2000 ps ; 2000 ps ; +; VDQS[0] ; 2.5 V ; 2000 ps ; 2000 ps ; +; IO[17] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; IO[16] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; IO[15] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; IO[14] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; IO[13] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; IO[12] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; IO[11] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; IO[10] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; IO[9] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; IO[8] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; IO[7] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; IO[6] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; IO[5] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; IO[4] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; IO[3] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; IO[2] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; IO[1] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; IO[0] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; SRD[15] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; SRD[14] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; SRD[13] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; SRD[12] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; SRD[11] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; SRD[10] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; SRD[9] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; SRD[8] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; SRD[7] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; SRD[6] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; SRD[5] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; SRD[4] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; SRD[3] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; SRD[2] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; SRD[1] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; SRD[0] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; SCSI_PAR ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; nSCSI_SEL ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; nSCSI_BUSY ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; nSCSI_RST ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; SD_CD_DATA3 ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; SD_CMD_D1 ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; ACSI_D[7] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; ACSI_D[6] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; ACSI_D[5] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; ACSI_D[4] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; ACSI_D[3] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; ACSI_D[2] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; ACSI_D[1] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; ACSI_D[0] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; LP_D[7] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; LP_D[6] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; LP_D[5] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; LP_D[4] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; LP_D[3] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; LP_D[2] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; LP_D[1] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; LP_D[0] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; SCSI_D[7] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; SCSI_D[6] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; SCSI_D[5] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; SCSI_D[4] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; SCSI_D[3] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; SCSI_D[2] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; SCSI_D[1] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; SCSI_D[0] ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; nRSTO_MCF ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; nFB_WR ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; nFB_CS1 ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_SIZE1 ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_SIZE0 ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; FB_ALE ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; nFB_CS2 ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; MAIN_CLK ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; nDACK1 ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; nFB_OE ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; IDE_RDY ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; CLK33M ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; HD_DD ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; nINDEX ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; RxD ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; nWP ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; LP_BUSY ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; DCD ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; CTS ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; TRACK00 ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; IDE_INT ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; RI ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; nPCI_INTD ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; nPCI_INTC ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; nPCI_INTB ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; nPCI_INTA ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; DVI_INT ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; E0_INT ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; PIC_INT ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; PIC_AMKB_RX ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; MIDI_IN ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; nRD_DATA ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; AMKB_RX ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; ~ALTERA_ASDO_DATA1~ ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; ~ALTERA_FLASH_nCE_nCSO~ ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; ~ALTERA_DCLK~ ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; ~ALTERA_DATA0~ ; 3.3-V LVTTL ; 2640 ps ; 2640 ps ; +; ~ALTERA_DEV_OE~ ; 2.5 V ; 2000 ps ; 2000 ps ; +; ~ALTERA_DEV_CLRn~ ; 2.5 V ; 2000 ps ; 2000 ps ; ++-------------------------+--------------+-----------------+-----------------+ + + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Slow Corner Signal Integrity Metrics ; ++---------------+--------------+---------------------+---------------------+------------------------------+------------------------------+---------------------+---------------------+--------------------------------------+--------------------------------------+-----------------------------+-----------------------------+----------------------------+----------------------------+-----------------------------+-----------------------------+--------------------+--------------------+-------------------------------------+-------------------------------------+----------------------------+----------------------------+---------------------------+---------------------------+ +; Pin ; I/O Standard ; Board Delay on Rise ; Board Delay on Fall ; Steady State Voh at FPGA Pin ; Steady State Vol at FPGA Pin ; Voh Max at FPGA Pin ; Vol Min at FPGA Pin ; Ringback Voltage on Rise at FPGA Pin ; Ringback Voltage on Fall at FPGA Pin ; 10-90 Rise Time at FPGA Pin ; 90-10 Fall Time at FPGA Pin ; Monotonic Rise at FPGA Pin ; Monotonic Fall at FPGA Pin ; Steady State Voh at Far-end ; Steady State Vol at Far-end ; Voh Max at Far-end ; Vol Min at Far-end ; Ringback Voltage on Rise at Far-end ; Ringback Voltage on Fall at Far-end ; 10-90 Rise Time at Far-end ; 90-10 Fall Time at Far-end ; Monotonic Rise at Far-end ; Monotonic Fall at Far-end ; ++---------------+--------------+---------------------+---------------------+------------------------------+------------------------------+---------------------+---------------------+--------------------------------------+--------------------------------------+-----------------------------+-----------------------------+----------------------------+----------------------------+-----------------------------+-----------------------------+--------------------+--------------------+-------------------------------------+-------------------------------------+----------------------------+----------------------------+---------------------------+---------------------------+ +; CLK24M576 ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; LP_STR ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; CLK25M ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0394 V ; 0.292 V ; 0.188 V ; 9.15e-010 s ; 8.35e-010 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0394 V ; 0.292 V ; 0.188 V ; 9.15e-010 s ; 8.35e-010 s ; No ; Yes ; +; nACSI_ACK ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; nACSI_RESET ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; nACSI_CS ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; ACSI_DIR ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; ACSI_A1 ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; nSCSI_ACK ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; nSCSI_ATN ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; SCSI_DIR ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; MIDI_OLR ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.08 V ; -0.0041 V ; 0.274 V ; 0.267 V ; 5.67e-009 s ; 4.62e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.08 V ; -0.0041 V ; 0.274 V ; 0.267 V ; 5.67e-009 s ; 4.62e-009 s ; No ; Yes ; +; MIDI_TLR ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; TxD ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; RTS ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; DTR ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.08 V ; -0.00548 V ; 0.305 V ; 0.267 V ; 5.3e-009 s ; 4.39e-009 s ; Yes ; Yes ; 3.08 V ; 3.08e-006 V ; 3.08 V ; -0.00548 V ; 0.305 V ; 0.267 V ; 5.3e-009 s ; 4.39e-009 s ; Yes ; Yes ; +; AMKB_TX ; 3.3-V LVCMOS ; 0 s ; 0 s ; 3.08 V ; 3.36e-006 V ; 3.09 V ; -0.013 V ; 0.103 V ; 0.224 V ; 1.59e-009 s ; 1.71e-009 s ; Yes ; Yes ; 3.08 V ; 3.36e-006 V ; 3.09 V ; -0.013 V ; 0.103 V ; 0.224 V ; 1.59e-009 s ; 1.71e-009 s ; Yes ; Yes ; +; IDE_RES ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.08 V ; -0.0041 V ; 0.274 V ; 0.267 V ; 5.67e-009 s ; 4.62e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.08 V ; -0.0041 V ; 0.274 V ; 0.267 V ; 5.67e-009 s ; 4.62e-009 s ; No ; Yes ; +; nIDE_CS0 ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; nIDE_CS1 ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; nIDE_WR ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; nIDE_RD ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; nCF_CS0 ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; nCF_CS1 ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; nROM3 ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; nROM4 ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; nRP_UDS ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; nRP_LDS ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0394 V ; 0.292 V ; 0.188 V ; 9.15e-010 s ; 8.35e-010 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0394 V ; 0.292 V ; 0.188 V ; 9.15e-010 s ; 8.35e-010 s ; No ; Yes ; +; nSDSEL ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; nWR_GATE ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.08 V ; -0.00548 V ; 0.305 V ; 0.267 V ; 5.3e-009 s ; 4.39e-009 s ; Yes ; Yes ; 3.08 V ; 3.08e-006 V ; 3.08 V ; -0.00548 V ; 0.305 V ; 0.267 V ; 5.3e-009 s ; 4.39e-009 s ; Yes ; Yes ; +; nWR ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; YM_QA ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; YM_QB ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; YM_QC ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; SD_CLK ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.08 V ; -0.00548 V ; 0.305 V ; 0.267 V ; 5.3e-009 s ; 4.39e-009 s ; Yes ; Yes ; 3.08 V ; 3.08e-006 V ; 3.08 V ; -0.00548 V ; 0.305 V ; 0.267 V ; 5.3e-009 s ; 4.39e-009 s ; Yes ; Yes ; +; DSA_D ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; nVWE ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; +; nVCAS ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; +; nVRAS ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; +; nVCS ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 6.14e-007 V ; 2.37 V ; -0.00683 V ; 0.081 V ; 0.016 V ; 4.14e-010 s ; 5.19e-010 s ; Yes ; Yes ; 2.32 V ; 6.14e-007 V ; 2.37 V ; -0.00683 V ; 0.081 V ; 0.016 V ; 4.14e-010 s ; 5.19e-010 s ; Yes ; Yes ; +; nPD_VGA ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; TIN0 ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.08 V ; -0.0041 V ; 0.274 V ; 0.267 V ; 5.67e-009 s ; 4.62e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.08 V ; -0.0041 V ; 0.274 V ; 0.267 V ; 5.67e-009 s ; 4.62e-009 s ; No ; Yes ; +; nSRCS ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; nSRBLE ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; nSRBHE ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; nSRWE ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; nDREQ1 ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; LED_FPGA_OK ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 1.97e-006 V ; 2.34 V ; -0.00258 V ; 0.168 V ; 0.069 V ; 1.53e-009 s ; 1.92e-009 s ; No ; Yes ; 2.32 V ; 1.97e-006 V ; 2.34 V ; -0.00258 V ; 0.168 V ; 0.069 V ; 1.53e-009 s ; 1.92e-009 s ; No ; Yes ; +; nSROE ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; VCKE ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; +; nFB_TA ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; nDDR_CLK ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; +; DDR_CLK ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; +; VSYNC_PAD ; 3.0-V LVTTL ; 0 s ; 0 s ; 2.8 V ; 6.88e-007 V ; 2.81 V ; -0.00874 V ; 0.219 V ; 0.11 V ; 1.91e-009 s ; 2.08e-009 s ; Yes ; Yes ; 2.8 V ; 6.88e-007 V ; 2.81 V ; -0.00874 V ; 0.219 V ; 0.11 V ; 1.91e-009 s ; 2.08e-009 s ; Yes ; Yes ; +; HSYNC_PAD ; 3.0-V LVTTL ; 0 s ; 0 s ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; +; nBLANK_PAD ; 3.0-V LVTTL ; 0 s ; 0 s ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; +; PIXEL_CLK_PAD ; 3.0-V LVTTL ; 0 s ; 0 s ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; +; nSYNC ; 3.0-V LVCMOS ; 0 s ; 0 s ; 2.8 V ; 6.97e-007 V ; 2.86 V ; -0.0234 V ; 0.145 V ; 0.061 V ; 4.67e-010 s ; 4.98e-010 s ; Yes ; Yes ; 2.8 V ; 6.97e-007 V ; 2.86 V ; -0.0234 V ; 0.145 V ; 0.061 V ; 4.67e-010 s ; 4.98e-010 s ; Yes ; Yes ; +; nMOT_ON ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; nSTEP_DIR ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; nSTEP ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; CLKUSB ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; LPDIR ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; BA[1] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; +; BA[0] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 6.14e-007 V ; 2.33 V ; -0.00279 V ; 0.14 V ; 0.06 V ; 2.15e-009 s ; 2.83e-009 s ; Yes ; Yes ; 2.32 V ; 6.14e-007 V ; 2.33 V ; -0.00279 V ; 0.14 V ; 0.06 V ; 2.15e-009 s ; 2.83e-009 s ; Yes ; Yes ; +; nIRQ[7] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; nIRQ[6] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; nIRQ[5] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.08 V ; -0.0041 V ; 0.274 V ; 0.267 V ; 5.67e-009 s ; 4.62e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.08 V ; -0.0041 V ; 0.274 V ; 0.267 V ; 5.67e-009 s ; 4.62e-009 s ; No ; Yes ; +; nIRQ[4] ; 3.0-V LVCMOS ; 0 s ; 0 s ; 2.8 V ; 1.1e-006 V ; 2.84 V ; -0.0267 V ; 0.263 V ; 0.124 V ; 7.35e-010 s ; 8.02e-010 s ; Yes ; Yes ; 2.8 V ; 1.1e-006 V ; 2.84 V ; -0.0267 V ; 0.263 V ; 0.124 V ; 7.35e-010 s ; 8.02e-010 s ; Yes ; Yes ; +; nIRQ[3] ; 3.0-V LVCMOS ; 0 s ; 0 s ; 2.8 V ; 1.1e-006 V ; 2.84 V ; -0.0267 V ; 0.263 V ; 0.124 V ; 7.35e-010 s ; 8.02e-010 s ; Yes ; Yes ; 2.8 V ; 1.1e-006 V ; 2.84 V ; -0.0267 V ; 0.263 V ; 0.124 V ; 7.35e-010 s ; 8.02e-010 s ; Yes ; Yes ; +; nIRQ[2] ; 3.0-V LVCMOS ; 0 s ; 0 s ; 2.8 V ; 1.1e-006 V ; 2.84 V ; -0.0267 V ; 0.263 V ; 0.124 V ; 7.35e-010 s ; 8.02e-010 s ; Yes ; Yes ; 2.8 V ; 1.1e-006 V ; 2.84 V ; -0.0267 V ; 0.263 V ; 0.124 V ; 7.35e-010 s ; 8.02e-010 s ; Yes ; Yes ; +; VA[12] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 9.13e-007 V ; 2.33 V ; -0.00282 V ; 0.119 V ; 0.046 V ; 2.08e-009 s ; 2.71e-009 s ; Yes ; Yes ; 2.32 V ; 9.13e-007 V ; 2.33 V ; -0.00282 V ; 0.119 V ; 0.046 V ; 2.08e-009 s ; 2.71e-009 s ; Yes ; Yes ; +; VA[11] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; +; VA[10] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; +; VA[9] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; +; VA[8] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; +; VA[7] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; +; VA[6] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; +; VA[5] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; +; VA[4] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; +; VA[3] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; +; VA[2] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; +; VA[1] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; +; VA[0] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 6.14e-007 V ; 2.37 V ; -0.00683 V ; 0.081 V ; 0.016 V ; 4.14e-010 s ; 5.19e-010 s ; Yes ; Yes ; 2.32 V ; 6.14e-007 V ; 2.37 V ; -0.00683 V ; 0.081 V ; 0.016 V ; 4.14e-010 s ; 5.19e-010 s ; Yes ; Yes ; +; VB[7] ; 3.0-V LVTTL ; 0 s ; 0 s ; 2.8 V ; 6.88e-007 V ; 2.81 V ; -0.00874 V ; 0.219 V ; 0.11 V ; 1.91e-009 s ; 2.08e-009 s ; Yes ; Yes ; 2.8 V ; 6.88e-007 V ; 2.81 V ; -0.00874 V ; 0.219 V ; 0.11 V ; 1.91e-009 s ; 2.08e-009 s ; Yes ; Yes ; +; VB[6] ; 3.0-V LVTTL ; 0 s ; 0 s ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; +; VB[5] ; 3.0-V LVTTL ; 0 s ; 0 s ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; +; VB[4] ; 3.0-V LVTTL ; 0 s ; 0 s ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; +; VB[3] ; 3.0-V LVTTL ; 0 s ; 0 s ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; +; VB[2] ; 3.0-V LVTTL ; 0 s ; 0 s ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; +; VB[1] ; 3.0-V LVTTL ; 0 s ; 0 s ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; +; VB[0] ; 3.0-V LVTTL ; 0 s ; 0 s ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; +; VDM[3] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 6.14e-007 V ; 2.37 V ; -0.00683 V ; 0.081 V ; 0.016 V ; 4.14e-010 s ; 5.19e-010 s ; Yes ; Yes ; 2.32 V ; 6.14e-007 V ; 2.37 V ; -0.00683 V ; 0.081 V ; 0.016 V ; 4.14e-010 s ; 5.19e-010 s ; Yes ; Yes ; +; VDM[2] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; +; VDM[1] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 9.13e-007 V ; 2.33 V ; -0.00282 V ; 0.119 V ; 0.046 V ; 2.08e-009 s ; 2.71e-009 s ; Yes ; Yes ; 2.32 V ; 9.13e-007 V ; 2.33 V ; -0.00282 V ; 0.119 V ; 0.046 V ; 2.08e-009 s ; 2.71e-009 s ; Yes ; Yes ; +; VDM[0] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; +; VG[7] ; 3.0-V LVTTL ; 0 s ; 0 s ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; +; VG[6] ; 3.0-V LVTTL ; 0 s ; 0 s ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; +; VG[5] ; 3.0-V LVTTL ; 0 s ; 0 s ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; +; VG[4] ; 3.0-V LVTTL ; 0 s ; 0 s ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; +; VG[3] ; 3.0-V LVTTL ; 0 s ; 0 s ; 2.8 V ; 6.88e-007 V ; 2.81 V ; -0.00874 V ; 0.219 V ; 0.11 V ; 1.91e-009 s ; 2.08e-009 s ; Yes ; Yes ; 2.8 V ; 6.88e-007 V ; 2.81 V ; -0.00874 V ; 0.219 V ; 0.11 V ; 1.91e-009 s ; 2.08e-009 s ; Yes ; Yes ; +; VG[2] ; 3.0-V LVTTL ; 0 s ; 0 s ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; +; VG[1] ; 3.0-V LVTTL ; 0 s ; 0 s ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; +; VG[0] ; 3.0-V LVTTL ; 0 s ; 0 s ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; +; VR[7] ; 3.0-V LVTTL ; 0 s ; 0 s ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; +; VR[6] ; 3.0-V LVTTL ; 0 s ; 0 s ; 2.8 V ; 6.88e-007 V ; 2.81 V ; -0.00874 V ; 0.219 V ; 0.11 V ; 1.91e-009 s ; 2.08e-009 s ; Yes ; Yes ; 2.8 V ; 6.88e-007 V ; 2.81 V ; -0.00874 V ; 0.219 V ; 0.11 V ; 1.91e-009 s ; 2.08e-009 s ; Yes ; Yes ; +; VR[5] ; 3.0-V LVTTL ; 0 s ; 0 s ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; +; VR[4] ; 3.0-V LVTTL ; 0 s ; 0 s ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; +; VR[3] ; 3.0-V LVTTL ; 0 s ; 0 s ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; +; VR[2] ; 3.0-V LVTTL ; 0 s ; 0 s ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; +; VR[1] ; 3.0-V LVTTL ; 0 s ; 0 s ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; +; VR[0] ; 3.0-V LVTTL ; 0 s ; 0 s ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; 2.8 V ; 6.88e-007 V ; 2.86 V ; -0.0441 V ; 0.132 V ; 0.083 V ; 4.56e-010 s ; 4.87e-010 s ; Yes ; Yes ; +; FB_AD[31] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; FB_AD[30] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; FB_AD[29] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; FB_AD[28] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; FB_AD[27] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.08 V ; -0.00548 V ; 0.305 V ; 0.267 V ; 5.3e-009 s ; 4.39e-009 s ; Yes ; Yes ; 3.08 V ; 3.08e-006 V ; 3.08 V ; -0.00548 V ; 0.305 V ; 0.267 V ; 5.3e-009 s ; 4.39e-009 s ; Yes ; Yes ; +; FB_AD[26] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; FB_AD[25] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; FB_AD[24] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; FB_AD[23] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; FB_AD[22] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; FB_AD[21] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; FB_AD[20] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; FB_AD[19] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; FB_AD[18] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.08 V ; -0.00548 V ; 0.305 V ; 0.267 V ; 5.3e-009 s ; 4.39e-009 s ; Yes ; Yes ; 3.08 V ; 3.08e-006 V ; 3.08 V ; -0.00548 V ; 0.305 V ; 0.267 V ; 5.3e-009 s ; 4.39e-009 s ; Yes ; Yes ; +; FB_AD[17] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; FB_AD[16] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; FB_AD[15] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; FB_AD[14] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; FB_AD[13] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; FB_AD[12] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; FB_AD[11] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; FB_AD[10] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; FB_AD[9] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; FB_AD[8] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; FB_AD[7] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.08 V ; -0.00548 V ; 0.305 V ; 0.267 V ; 5.3e-009 s ; 4.39e-009 s ; Yes ; Yes ; 3.08 V ; 3.08e-006 V ; 3.08 V ; -0.00548 V ; 0.305 V ; 0.267 V ; 5.3e-009 s ; 4.39e-009 s ; Yes ; Yes ; +; FB_AD[6] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; FB_AD[5] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; FB_AD[4] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; FB_AD[3] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; FB_AD[2] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; FB_AD[1] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; FB_AD[0] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; VD[31] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; +; VD[30] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 9.13e-007 V ; 2.33 V ; -0.00282 V ; 0.119 V ; 0.046 V ; 2.08e-009 s ; 2.71e-009 s ; Yes ; Yes ; 2.32 V ; 9.13e-007 V ; 2.33 V ; -0.00282 V ; 0.119 V ; 0.046 V ; 2.08e-009 s ; 2.71e-009 s ; Yes ; Yes ; +; VD[29] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; +; VD[28] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; +; VD[27] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; +; VD[26] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; +; VD[25] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; +; VD[24] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; +; VD[23] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; +; VD[22] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 9.13e-007 V ; 2.33 V ; -0.00282 V ; 0.119 V ; 0.046 V ; 2.08e-009 s ; 2.71e-009 s ; Yes ; Yes ; 2.32 V ; 9.13e-007 V ; 2.33 V ; -0.00282 V ; 0.119 V ; 0.046 V ; 2.08e-009 s ; 2.71e-009 s ; Yes ; Yes ; +; VD[21] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; +; VD[20] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; +; VD[19] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; +; VD[18] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; +; VD[17] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; +; VD[16] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; +; VD[15] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; +; VD[14] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; +; VD[13] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 6.14e-007 V ; 2.33 V ; -0.00279 V ; 0.14 V ; 0.06 V ; 2.15e-009 s ; 2.83e-009 s ; Yes ; Yes ; 2.32 V ; 6.14e-007 V ; 2.33 V ; -0.00279 V ; 0.14 V ; 0.06 V ; 2.15e-009 s ; 2.83e-009 s ; Yes ; Yes ; +; VD[12] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; +; VD[11] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; +; VD[10] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 6.14e-007 V ; 2.37 V ; -0.00683 V ; 0.081 V ; 0.016 V ; 4.14e-010 s ; 5.19e-010 s ; Yes ; Yes ; 2.32 V ; 6.14e-007 V ; 2.37 V ; -0.00683 V ; 0.081 V ; 0.016 V ; 4.14e-010 s ; 5.19e-010 s ; Yes ; Yes ; +; VD[9] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; +; VD[8] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; +; VD[7] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; +; VD[6] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; +; VD[5] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 6.14e-007 V ; 2.33 V ; -0.00279 V ; 0.14 V ; 0.06 V ; 2.15e-009 s ; 2.83e-009 s ; Yes ; Yes ; 2.32 V ; 6.14e-007 V ; 2.33 V ; -0.00279 V ; 0.14 V ; 0.06 V ; 2.15e-009 s ; 2.83e-009 s ; Yes ; Yes ; +; VD[4] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; +; VD[3] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; +; VD[2] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; +; VD[1] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; +; VD[0] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; +; VDQS[3] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; +; VDQS[2] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; 2.32 V ; 6.14e-007 V ; 2.36 V ; -0.00551 V ; 0.142 V ; 0.014 V ; 4.9e-010 s ; 6.6e-010 s ; Yes ; Yes ; +; VDQS[1] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; +; VDQS[0] ; 2.5 V ; 0 s ; 0 s ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; 2.32 V ; 9.13e-007 V ; 2.36 V ; -0.00797 V ; 0.096 V ; 0.016 V ; 2.7e-010 s ; 3.71e-010 s ; Yes ; Yes ; +; IO[17] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; IO[16] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; IO[15] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; IO[14] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; IO[13] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.08 V ; -0.00548 V ; 0.305 V ; 0.267 V ; 5.3e-009 s ; 4.39e-009 s ; Yes ; Yes ; 3.08 V ; 3.08e-006 V ; 3.08 V ; -0.00548 V ; 0.305 V ; 0.267 V ; 5.3e-009 s ; 4.39e-009 s ; Yes ; Yes ; +; IO[12] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; IO[11] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; IO[10] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; IO[9] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; IO[8] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; IO[7] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; IO[6] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; IO[5] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.08 V ; -0.00548 V ; 0.305 V ; 0.267 V ; 5.3e-009 s ; 4.39e-009 s ; Yes ; Yes ; 3.08 V ; 3.08e-006 V ; 3.08 V ; -0.00548 V ; 0.305 V ; 0.267 V ; 5.3e-009 s ; 4.39e-009 s ; Yes ; Yes ; +; IO[4] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; IO[3] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; IO[2] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; IO[1] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; IO[0] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; SRD[15] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; SRD[14] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; SRD[13] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; SRD[12] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; SRD[11] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; SRD[10] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; SRD[9] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; SRD[8] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; SRD[7] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; SRD[6] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; SRD[5] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; SRD[4] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.08 V ; -0.00548 V ; 0.305 V ; 0.267 V ; 5.3e-009 s ; 4.39e-009 s ; Yes ; Yes ; 3.08 V ; 3.08e-006 V ; 3.08 V ; -0.00548 V ; 0.305 V ; 0.267 V ; 5.3e-009 s ; 4.39e-009 s ; Yes ; Yes ; +; SRD[3] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; SRD[2] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; SRD[1] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; SRD[0] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.08 V ; -0.00548 V ; 0.305 V ; 0.267 V ; 5.3e-009 s ; 4.39e-009 s ; Yes ; Yes ; 3.08 V ; 3.08e-006 V ; 3.08 V ; -0.00548 V ; 0.305 V ; 0.267 V ; 5.3e-009 s ; 4.39e-009 s ; Yes ; Yes ; +; SCSI_PAR ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; nSCSI_SEL ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; nSCSI_BUSY ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; nSCSI_RST ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; SD_CD_DATA3 ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; SD_CMD_D1 ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; ACSI_D[7] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; ACSI_D[6] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.08 V ; -0.0041 V ; 0.274 V ; 0.267 V ; 5.67e-009 s ; 4.62e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.08 V ; -0.0041 V ; 0.274 V ; 0.267 V ; 5.67e-009 s ; 4.62e-009 s ; No ; Yes ; +; ACSI_D[5] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; ACSI_D[4] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; ACSI_D[3] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; ACSI_D[2] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; ACSI_D[1] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.08 V ; -0.0041 V ; 0.274 V ; 0.267 V ; 5.67e-009 s ; 4.62e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.08 V ; -0.0041 V ; 0.274 V ; 0.267 V ; 5.67e-009 s ; 4.62e-009 s ; No ; Yes ; +; ACSI_D[0] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; LP_D[7] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; LP_D[6] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; LP_D[5] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; LP_D[4] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.08 V ; -0.00548 V ; 0.305 V ; 0.267 V ; 5.3e-009 s ; 4.39e-009 s ; Yes ; Yes ; 3.08 V ; 3.08e-006 V ; 3.08 V ; -0.00548 V ; 0.305 V ; 0.267 V ; 5.3e-009 s ; 4.39e-009 s ; Yes ; Yes ; +; LP_D[3] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; LP_D[2] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; LP_D[1] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; LP_D[0] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; 3.08 V ; 3.08e-006 V ; 3.13 V ; -0.0541 V ; 0.237 V ; 0.168 V ; 6.67e-010 s ; 6.12e-010 s ; No ; No ; +; SCSI_D[7] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; SCSI_D[6] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; SCSI_D[5] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; SCSI_D[4] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; SCSI_D[3] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; SCSI_D[2] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; SCSI_D[1] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; SCSI_D[0] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; 3.08 V ; 2.06e-006 V ; 3.12 V ; -0.0308 V ; 0.224 V ; 0.218 V ; 1.32e-009 s ; 1.07e-009 s ; No ; Yes ; +; ~ALTERA_nCEO~ ; 3.0-V LVTTL ; 0 s ; 0 s ; 2.8 V ; 1.43e-006 V ; 2.84 V ; -0.0141 V ; 0.183 V ; 0.066 V ; 8.84e-010 s ; 1.02e-009 s ; No ; Yes ; 2.8 V ; 1.43e-006 V ; 2.84 V ; -0.0141 V ; 0.183 V ; 0.066 V ; 8.84e-010 s ; 1.02e-009 s ; No ; Yes ; ++---------------+--------------+---------------------+---------------------+------------------------------+------------------------------+---------------------+---------------------+--------------------------------------+--------------------------------------+-----------------------------+-----------------------------+----------------------------+----------------------------+-----------------------------+-----------------------------+--------------------+--------------------+-------------------------------------+-------------------------------------+----------------------------+----------------------------+---------------------------+---------------------------+ + + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Fast Corner Signal Integrity Metrics ; ++---------------+--------------+---------------------+---------------------+------------------------------+------------------------------+---------------------+---------------------+--------------------------------------+--------------------------------------+-----------------------------+-----------------------------+----------------------------+----------------------------+-----------------------------+-----------------------------+--------------------+--------------------+-------------------------------------+-------------------------------------+----------------------------+----------------------------+---------------------------+---------------------------+ +; Pin ; I/O Standard ; Board Delay on Rise ; Board Delay on Fall ; Steady State Voh at FPGA Pin ; Steady State Vol at FPGA Pin ; Voh Max at FPGA Pin ; Vol Min at FPGA Pin ; Ringback Voltage on Rise at FPGA Pin ; Ringback Voltage on Fall at FPGA Pin ; 10-90 Rise Time at FPGA Pin ; 90-10 Fall Time at FPGA Pin ; Monotonic Rise at FPGA Pin ; Monotonic Fall at FPGA Pin ; Steady State Voh at Far-end ; Steady State Vol at Far-end ; Voh Max at Far-end ; Vol Min at Far-end ; Ringback Voltage on Rise at Far-end ; Ringback Voltage on Fall at Far-end ; 10-90 Rise Time at Far-end ; 90-10 Fall Time at Far-end ; Monotonic Rise at Far-end ; Monotonic Fall at Far-end ; ++---------------+--------------+---------------------+---------------------+------------------------------+------------------------------+---------------------+---------------------+--------------------------------------+--------------------------------------+-----------------------------+-----------------------------+----------------------------+----------------------------+-----------------------------+-----------------------------+--------------------+--------------------+-------------------------------------+-------------------------------------+----------------------------+----------------------------+---------------------------+---------------------------+ +; CLK24M576 ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; LP_STR ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; CLK25M ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.57 V ; -0.0649 V ; 0.332 V ; 0.165 V ; 6.78e-010 s ; 6.19e-010 s ; No ; Yes ; 3.46 V ; 1.29e-007 V ; 3.57 V ; -0.0649 V ; 0.332 V ; 0.165 V ; 6.78e-010 s ; 6.19e-010 s ; No ; Yes ; +; nACSI_ACK ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; nACSI_RESET ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; nACSI_CS ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; ACSI_DIR ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; ACSI_A1 ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; nSCSI_ACK ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; nSCSI_ATN ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; SCSI_DIR ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; MIDI_OLR ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.48 V ; -0.0136 V ; 0.352 V ; 0.347 V ; 4.12e-009 s ; 3.35e-009 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.48 V ; -0.0136 V ; 0.352 V ; 0.347 V ; 4.12e-009 s ; 3.35e-009 s ; No ; No ; +; MIDI_TLR ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; TxD ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; RTS ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; DTR ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.48 V ; -0.0145 V ; 0.362 V ; 0.287 V ; 3.89e-009 s ; 3.26e-009 s ; No ; No ; 3.46 V ; 1.9e-007 V ; 3.48 V ; -0.0145 V ; 0.362 V ; 0.287 V ; 3.89e-009 s ; 3.26e-009 s ; No ; No ; +; AMKB_TX ; 3.3-V LVCMOS ; 0 s ; 0 s ; 3.46 V ; 2.1e-007 V ; 3.5 V ; -0.042 V ; 0.297 V ; 0.24 V ; 1.12e-009 s ; 1.29e-009 s ; No ; No ; 3.46 V ; 2.1e-007 V ; 3.5 V ; -0.042 V ; 0.297 V ; 0.24 V ; 1.12e-009 s ; 1.29e-009 s ; No ; No ; +; IDE_RES ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.48 V ; -0.0136 V ; 0.352 V ; 0.347 V ; 4.12e-009 s ; 3.35e-009 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.48 V ; -0.0136 V ; 0.352 V ; 0.347 V ; 4.12e-009 s ; 3.35e-009 s ; No ; No ; +; nIDE_CS0 ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; nIDE_CS1 ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; nIDE_WR ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; nIDE_RD ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; nCF_CS0 ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; nCF_CS1 ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; nROM3 ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; nROM4 ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; nRP_UDS ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; nRP_LDS ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.57 V ; -0.0649 V ; 0.332 V ; 0.165 V ; 6.78e-010 s ; 6.19e-010 s ; No ; Yes ; 3.46 V ; 1.29e-007 V ; 3.57 V ; -0.0649 V ; 0.332 V ; 0.165 V ; 6.78e-010 s ; 6.19e-010 s ; No ; Yes ; +; nSDSEL ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; nWR_GATE ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.48 V ; -0.0145 V ; 0.362 V ; 0.287 V ; 3.89e-009 s ; 3.26e-009 s ; No ; No ; 3.46 V ; 1.9e-007 V ; 3.48 V ; -0.0145 V ; 0.362 V ; 0.287 V ; 3.89e-009 s ; 3.26e-009 s ; No ; No ; +; nWR ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; YM_QA ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; YM_QB ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; YM_QC ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; SD_CLK ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.48 V ; -0.0145 V ; 0.362 V ; 0.287 V ; 3.89e-009 s ; 3.26e-009 s ; No ; No ; 3.46 V ; 1.9e-007 V ; 3.48 V ; -0.0145 V ; 0.362 V ; 0.287 V ; 3.89e-009 s ; 3.26e-009 s ; No ; No ; +; DSA_D ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; nVWE ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; +; nVCAS ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; +; nVRAS ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; +; nVCS ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 2.33e-008 V ; 2.73 V ; -0.0168 V ; 0.137 V ; 0.024 V ; 2.65e-010 s ; 3.37e-010 s ; Yes ; Yes ; 2.62 V ; 2.33e-008 V ; 2.73 V ; -0.0168 V ; 0.137 V ; 0.024 V ; 2.65e-010 s ; 3.37e-010 s ; Yes ; Yes ; +; nPD_VGA ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; TIN0 ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.48 V ; -0.0136 V ; 0.352 V ; 0.347 V ; 4.12e-009 s ; 3.35e-009 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.48 V ; -0.0136 V ; 0.352 V ; 0.347 V ; 4.12e-009 s ; 3.35e-009 s ; No ; No ; +; nSRCS ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; nSRBLE ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; nSRBHE ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; nSRWE ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; nDREQ1 ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; LED_FPGA_OK ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 7.2e-008 V ; 2.68 V ; -0.0147 V ; 0.295 V ; 0.167 V ; 9.36e-010 s ; 1.3e-009 s ; No ; Yes ; 2.62 V ; 7.2e-008 V ; 2.68 V ; -0.0147 V ; 0.295 V ; 0.167 V ; 9.36e-010 s ; 1.3e-009 s ; No ; Yes ; +; nSROE ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; VCKE ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; +; nFB_TA ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; nDDR_CLK ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; +; DDR_CLK ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; +; VSYNC_PAD ; 3.0-V LVTTL ; 0 s ; 0 s ; 3.15 V ; 3.57e-008 V ; 3.19 V ; -0.0203 V ; 0.22 V ; 0.194 V ; 1.43e-009 s ; 1.59e-009 s ; No ; Yes ; 3.15 V ; 3.57e-008 V ; 3.19 V ; -0.0203 V ; 0.22 V ; 0.194 V ; 1.43e-009 s ; 1.59e-009 s ; No ; Yes ; +; HSYNC_PAD ; 3.0-V LVTTL ; 0 s ; 0 s ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; +; nBLANK_PAD ; 3.0-V LVTTL ; 0 s ; 0 s ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; +; PIXEL_CLK_PAD ; 3.0-V LVTTL ; 0 s ; 0 s ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; +; nSYNC ; 3.0-V LVCMOS ; 0 s ; 0 s ; 3.15 V ; 3.66e-008 V ; 3.29 V ; -0.0256 V ; 0.236 V ; 0.049 V ; 2.86e-010 s ; 3.59e-010 s ; Yes ; Yes ; 3.15 V ; 3.66e-008 V ; 3.29 V ; -0.0256 V ; 0.236 V ; 0.049 V ; 2.86e-010 s ; 3.59e-010 s ; Yes ; Yes ; +; nMOT_ON ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; nSTEP_DIR ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; nSTEP ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; CLKUSB ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; LPDIR ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; BA[1] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; +; BA[0] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 2.33e-008 V ; 2.65 V ; -0.00959 V ; 0.236 V ; 0.105 V ; 1.48e-009 s ; 2e-009 s ; No ; Yes ; 2.62 V ; 2.33e-008 V ; 2.65 V ; -0.00959 V ; 0.236 V ; 0.105 V ; 1.48e-009 s ; 2e-009 s ; No ; Yes ; +; nIRQ[7] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; nIRQ[6] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; nIRQ[5] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.48 V ; -0.0136 V ; 0.352 V ; 0.347 V ; 4.12e-009 s ; 3.35e-009 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.48 V ; -0.0136 V ; 0.352 V ; 0.347 V ; 4.12e-009 s ; 3.35e-009 s ; No ; No ; +; nIRQ[4] ; 3.0-V LVCMOS ; 0 s ; 0 s ; 3.15 V ; 5.7e-008 V ; 3.25 V ; -0.0382 V ; 0.318 V ; 0.098 V ; 5.02e-010 s ; 5.55e-010 s ; No ; Yes ; 3.15 V ; 5.7e-008 V ; 3.25 V ; -0.0382 V ; 0.318 V ; 0.098 V ; 5.02e-010 s ; 5.55e-010 s ; No ; Yes ; +; nIRQ[3] ; 3.0-V LVCMOS ; 0 s ; 0 s ; 3.15 V ; 5.7e-008 V ; 3.25 V ; -0.0382 V ; 0.318 V ; 0.098 V ; 5.02e-010 s ; 5.55e-010 s ; No ; Yes ; 3.15 V ; 5.7e-008 V ; 3.25 V ; -0.0382 V ; 0.318 V ; 0.098 V ; 5.02e-010 s ; 5.55e-010 s ; No ; Yes ; +; nIRQ[2] ; 3.0-V LVCMOS ; 0 s ; 0 s ; 3.15 V ; 5.7e-008 V ; 3.25 V ; -0.0382 V ; 0.318 V ; 0.098 V ; 5.02e-010 s ; 5.55e-010 s ; No ; Yes ; 3.15 V ; 5.7e-008 V ; 3.25 V ; -0.0382 V ; 0.318 V ; 0.098 V ; 5.02e-010 s ; 5.55e-010 s ; No ; Yes ; +; VA[12] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 3.47e-008 V ; 2.65 V ; -0.00976 V ; 0.206 V ; 0.133 V ; 1.45e-009 s ; 1.89e-009 s ; No ; Yes ; 2.62 V ; 3.47e-008 V ; 2.65 V ; -0.00976 V ; 0.206 V ; 0.133 V ; 1.45e-009 s ; 1.89e-009 s ; No ; Yes ; +; VA[11] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; +; VA[10] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; +; VA[9] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; +; VA[8] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; +; VA[7] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; +; VA[6] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; +; VA[5] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; +; VA[4] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; +; VA[3] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; +; VA[2] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; +; VA[1] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; +; VA[0] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 2.33e-008 V ; 2.73 V ; -0.0168 V ; 0.137 V ; 0.024 V ; 2.65e-010 s ; 3.37e-010 s ; Yes ; Yes ; 2.62 V ; 2.33e-008 V ; 2.73 V ; -0.0168 V ; 0.137 V ; 0.024 V ; 2.65e-010 s ; 3.37e-010 s ; Yes ; Yes ; +; VB[7] ; 3.0-V LVTTL ; 0 s ; 0 s ; 3.15 V ; 3.57e-008 V ; 3.19 V ; -0.0203 V ; 0.22 V ; 0.194 V ; 1.43e-009 s ; 1.59e-009 s ; No ; Yes ; 3.15 V ; 3.57e-008 V ; 3.19 V ; -0.0203 V ; 0.22 V ; 0.194 V ; 1.43e-009 s ; 1.59e-009 s ; No ; Yes ; +; VB[6] ; 3.0-V LVTTL ; 0 s ; 0 s ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; +; VB[5] ; 3.0-V LVTTL ; 0 s ; 0 s ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; +; VB[4] ; 3.0-V LVTTL ; 0 s ; 0 s ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; +; VB[3] ; 3.0-V LVTTL ; 0 s ; 0 s ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; +; VB[2] ; 3.0-V LVTTL ; 0 s ; 0 s ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; +; VB[1] ; 3.0-V LVTTL ; 0 s ; 0 s ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; +; VB[0] ; 3.0-V LVTTL ; 0 s ; 0 s ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; +; VDM[3] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 2.33e-008 V ; 2.73 V ; -0.0168 V ; 0.137 V ; 0.024 V ; 2.65e-010 s ; 3.37e-010 s ; Yes ; Yes ; 2.62 V ; 2.33e-008 V ; 2.73 V ; -0.0168 V ; 0.137 V ; 0.024 V ; 2.65e-010 s ; 3.37e-010 s ; Yes ; Yes ; +; VDM[2] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; +; VDM[1] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 3.47e-008 V ; 2.65 V ; -0.00976 V ; 0.206 V ; 0.133 V ; 1.45e-009 s ; 1.89e-009 s ; No ; Yes ; 2.62 V ; 3.47e-008 V ; 2.65 V ; -0.00976 V ; 0.206 V ; 0.133 V ; 1.45e-009 s ; 1.89e-009 s ; No ; Yes ; +; VDM[0] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; +; VG[7] ; 3.0-V LVTTL ; 0 s ; 0 s ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; +; VG[6] ; 3.0-V LVTTL ; 0 s ; 0 s ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; +; VG[5] ; 3.0-V LVTTL ; 0 s ; 0 s ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; +; VG[4] ; 3.0-V LVTTL ; 0 s ; 0 s ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; +; VG[3] ; 3.0-V LVTTL ; 0 s ; 0 s ; 3.15 V ; 3.57e-008 V ; 3.19 V ; -0.0203 V ; 0.22 V ; 0.194 V ; 1.43e-009 s ; 1.59e-009 s ; No ; Yes ; 3.15 V ; 3.57e-008 V ; 3.19 V ; -0.0203 V ; 0.22 V ; 0.194 V ; 1.43e-009 s ; 1.59e-009 s ; No ; Yes ; +; VG[2] ; 3.0-V LVTTL ; 0 s ; 0 s ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; +; VG[1] ; 3.0-V LVTTL ; 0 s ; 0 s ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; +; VG[0] ; 3.0-V LVTTL ; 0 s ; 0 s ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; +; VR[7] ; 3.0-V LVTTL ; 0 s ; 0 s ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; +; VR[6] ; 3.0-V LVTTL ; 0 s ; 0 s ; 3.15 V ; 3.57e-008 V ; 3.19 V ; -0.0203 V ; 0.22 V ; 0.194 V ; 1.43e-009 s ; 1.59e-009 s ; No ; Yes ; 3.15 V ; 3.57e-008 V ; 3.19 V ; -0.0203 V ; 0.22 V ; 0.194 V ; 1.43e-009 s ; 1.59e-009 s ; No ; Yes ; +; VR[5] ; 3.0-V LVTTL ; 0 s ; 0 s ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; +; VR[4] ; 3.0-V LVTTL ; 0 s ; 0 s ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; +; VR[3] ; 3.0-V LVTTL ; 0 s ; 0 s ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; +; VR[2] ; 3.0-V LVTTL ; 0 s ; 0 s ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; +; VR[1] ; 3.0-V LVTTL ; 0 s ; 0 s ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; +; VR[0] ; 3.0-V LVTTL ; 0 s ; 0 s ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; 3.15 V ; 3.57e-008 V ; 3.27 V ; -0.0618 V ; 0.21 V ; 0.097 V ; 2.81e-010 s ; 3.83e-010 s ; Yes ; Yes ; +; FB_AD[31] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; FB_AD[30] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; FB_AD[29] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; FB_AD[28] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; FB_AD[27] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.48 V ; -0.0145 V ; 0.362 V ; 0.287 V ; 3.89e-009 s ; 3.26e-009 s ; No ; No ; 3.46 V ; 1.9e-007 V ; 3.48 V ; -0.0145 V ; 0.362 V ; 0.287 V ; 3.89e-009 s ; 3.26e-009 s ; No ; No ; +; FB_AD[26] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; FB_AD[25] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; FB_AD[24] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; FB_AD[23] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; FB_AD[22] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; FB_AD[21] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; FB_AD[20] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; FB_AD[19] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; FB_AD[18] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.48 V ; -0.0145 V ; 0.362 V ; 0.287 V ; 3.89e-009 s ; 3.26e-009 s ; No ; No ; 3.46 V ; 1.9e-007 V ; 3.48 V ; -0.0145 V ; 0.362 V ; 0.287 V ; 3.89e-009 s ; 3.26e-009 s ; No ; No ; +; FB_AD[17] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; FB_AD[16] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; FB_AD[15] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; FB_AD[14] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; FB_AD[13] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; FB_AD[12] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; FB_AD[11] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; FB_AD[10] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; FB_AD[9] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; FB_AD[8] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; FB_AD[7] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.48 V ; -0.0145 V ; 0.362 V ; 0.287 V ; 3.89e-009 s ; 3.26e-009 s ; No ; No ; 3.46 V ; 1.9e-007 V ; 3.48 V ; -0.0145 V ; 0.362 V ; 0.287 V ; 3.89e-009 s ; 3.26e-009 s ; No ; No ; +; FB_AD[6] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; FB_AD[5] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; FB_AD[4] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; FB_AD[3] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; FB_AD[2] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; FB_AD[1] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; FB_AD[0] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; VD[31] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; +; VD[30] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 3.47e-008 V ; 2.65 V ; -0.00976 V ; 0.206 V ; 0.133 V ; 1.45e-009 s ; 1.89e-009 s ; No ; Yes ; 2.62 V ; 3.47e-008 V ; 2.65 V ; -0.00976 V ; 0.206 V ; 0.133 V ; 1.45e-009 s ; 1.89e-009 s ; No ; Yes ; +; VD[29] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; +; VD[28] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; +; VD[27] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; +; VD[26] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; +; VD[25] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; +; VD[24] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; +; VD[23] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; +; VD[22] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 3.47e-008 V ; 2.65 V ; -0.00976 V ; 0.206 V ; 0.133 V ; 1.45e-009 s ; 1.89e-009 s ; No ; Yes ; 2.62 V ; 3.47e-008 V ; 2.65 V ; -0.00976 V ; 0.206 V ; 0.133 V ; 1.45e-009 s ; 1.89e-009 s ; No ; Yes ; +; VD[21] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; +; VD[20] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; +; VD[19] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; +; VD[18] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; +; VD[17] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; +; VD[16] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; +; VD[15] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; +; VD[14] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; +; VD[13] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 2.33e-008 V ; 2.65 V ; -0.00959 V ; 0.236 V ; 0.105 V ; 1.48e-009 s ; 2e-009 s ; No ; Yes ; 2.62 V ; 2.33e-008 V ; 2.65 V ; -0.00959 V ; 0.236 V ; 0.105 V ; 1.48e-009 s ; 2e-009 s ; No ; Yes ; +; VD[12] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; +; VD[11] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; +; VD[10] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 2.33e-008 V ; 2.73 V ; -0.0168 V ; 0.137 V ; 0.024 V ; 2.65e-010 s ; 3.37e-010 s ; Yes ; Yes ; 2.62 V ; 2.33e-008 V ; 2.73 V ; -0.0168 V ; 0.137 V ; 0.024 V ; 2.65e-010 s ; 3.37e-010 s ; Yes ; Yes ; +; VD[9] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; +; VD[8] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; +; VD[7] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; +; VD[6] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; +; VD[5] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 2.33e-008 V ; 2.65 V ; -0.00959 V ; 0.236 V ; 0.105 V ; 1.48e-009 s ; 2e-009 s ; No ; Yes ; 2.62 V ; 2.33e-008 V ; 2.65 V ; -0.00959 V ; 0.236 V ; 0.105 V ; 1.48e-009 s ; 2e-009 s ; No ; Yes ; +; VD[4] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; +; VD[3] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; +; VD[2] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; +; VD[1] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; +; VD[0] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; +; VDQS[3] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; +; VDQS[2] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; 2.62 V ; 2.33e-008 V ; 2.72 V ; -0.00806 V ; 0.218 V ; 0.013 V ; 2.92e-010 s ; 4.58e-010 s ; Yes ; Yes ; +; VDQS[1] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; +; VDQS[0] ; 2.5 V ; 0 s ; 0 s ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; 2.62 V ; 3.47e-008 V ; 2.83 V ; -0.0265 V ; 0.321 V ; 0.029 V ; 1.21e-010 s ; 2.36e-010 s ; No ; Yes ; +; IO[17] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; IO[16] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; IO[15] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; IO[14] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; IO[13] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.48 V ; -0.0145 V ; 0.362 V ; 0.287 V ; 3.89e-009 s ; 3.26e-009 s ; No ; No ; 3.46 V ; 1.9e-007 V ; 3.48 V ; -0.0145 V ; 0.362 V ; 0.287 V ; 3.89e-009 s ; 3.26e-009 s ; No ; No ; +; IO[12] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; IO[11] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; IO[10] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; IO[9] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; IO[8] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; IO[7] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; IO[6] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; IO[5] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.48 V ; -0.0145 V ; 0.362 V ; 0.287 V ; 3.89e-009 s ; 3.26e-009 s ; No ; No ; 3.46 V ; 1.9e-007 V ; 3.48 V ; -0.0145 V ; 0.362 V ; 0.287 V ; 3.89e-009 s ; 3.26e-009 s ; No ; No ; +; IO[4] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; IO[3] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; IO[2] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; IO[1] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; IO[0] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; SRD[15] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; SRD[14] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; SRD[13] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; SRD[12] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; SRD[11] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; SRD[10] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; SRD[9] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; SRD[8] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; SRD[7] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; SRD[6] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; SRD[5] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; SRD[4] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.48 V ; -0.0145 V ; 0.362 V ; 0.287 V ; 3.89e-009 s ; 3.26e-009 s ; No ; No ; 3.46 V ; 1.9e-007 V ; 3.48 V ; -0.0145 V ; 0.362 V ; 0.287 V ; 3.89e-009 s ; 3.26e-009 s ; No ; No ; +; SRD[3] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; SRD[2] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; SRD[1] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; SRD[0] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.48 V ; -0.0145 V ; 0.362 V ; 0.287 V ; 3.89e-009 s ; 3.26e-009 s ; No ; No ; 3.46 V ; 1.9e-007 V ; 3.48 V ; -0.0145 V ; 0.362 V ; 0.287 V ; 3.89e-009 s ; 3.26e-009 s ; No ; No ; +; SCSI_PAR ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; nSCSI_SEL ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; nSCSI_BUSY ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; nSCSI_RST ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; SD_CD_DATA3 ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; SD_CMD_D1 ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; ACSI_D[7] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; ACSI_D[6] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.48 V ; -0.0136 V ; 0.352 V ; 0.347 V ; 4.12e-009 s ; 3.35e-009 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.48 V ; -0.0136 V ; 0.352 V ; 0.347 V ; 4.12e-009 s ; 3.35e-009 s ; No ; No ; +; ACSI_D[5] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; ACSI_D[4] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; ACSI_D[3] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; ACSI_D[2] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; ACSI_D[1] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.48 V ; -0.0136 V ; 0.352 V ; 0.347 V ; 4.12e-009 s ; 3.35e-009 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.48 V ; -0.0136 V ; 0.352 V ; 0.347 V ; 4.12e-009 s ; 3.35e-009 s ; No ; No ; +; ACSI_D[0] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; LP_D[7] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; LP_D[6] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; LP_D[5] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; LP_D[4] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.48 V ; -0.0145 V ; 0.362 V ; 0.287 V ; 3.89e-009 s ; 3.26e-009 s ; No ; No ; 3.46 V ; 1.9e-007 V ; 3.48 V ; -0.0145 V ; 0.362 V ; 0.287 V ; 3.89e-009 s ; 3.26e-009 s ; No ; No ; +; LP_D[3] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; LP_D[2] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; LP_D[1] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; LP_D[0] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; 3.46 V ; 1.9e-007 V ; 3.59 V ; -0.0877 V ; 0.332 V ; 0.187 V ; 4.6e-010 s ; 4.2e-010 s ; No ; Yes ; +; SCSI_D[7] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; SCSI_D[6] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; SCSI_D[5] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; SCSI_D[4] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; SCSI_D[3] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; SCSI_D[2] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; SCSI_D[1] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; SCSI_D[0] ; 3.3-V LVTTL ; 0 s ; 0 s ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; 3.46 V ; 1.29e-007 V ; 3.55 V ; -0.053 V ; 0.341 V ; 0.351 V ; 9.04e-010 s ; 7.28e-010 s ; No ; No ; +; ~ALTERA_nCEO~ ; 3.0-V LVTTL ; 0 s ; 0 s ; 3.15 V ; 7.44e-008 V ; 3.24 V ; -0.0384 V ; 0.38 V ; 0.235 V ; 5.22e-010 s ; 7e-010 s ; No ; Yes ; 3.15 V ; 7.44e-008 V ; 3.24 V ; -0.0384 V ; 0.38 V ; 0.235 V ; 5.22e-010 s ; 7e-010 s ; No ; Yes ; ++---------------+--------------+---------------------+---------------------+------------------------------+------------------------------+---------------------+---------------------+--------------------------------------+--------------------------------------+-----------------------------+-----------------------------+----------------------------+----------------------------+-----------------------------+-----------------------------+--------------------+--------------------+-------------------------------------+-------------------------------------+----------------------------+----------------------------+---------------------------+---------------------------+ + + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +; Ignored Timing Assignments ; ++-----------------+----------+-----------------+------------------------------------------------------------------+-------------+------------------------------------------------------------------------------------------------------------+ +; Option ; Setting ; From ; To ; Entity Name ; Help ; ++-----------------+----------+-----------------+------------------------------------------------------------------+-------------+------------------------------------------------------------------------------------------------------------+ +; Cut Timing Path ; On ; delayed_wrptr_g ; rs_dgwp|dffpipe15|dffe16a ; dcfifo_8fi1 ; Node named delayed_wrptr_g removed during synthesis ; +; Clock Settings ; fast ; ; DDRCLK ; ; Node named DDRCLK removed during synthesis ; +; Clock Settings ; fast ; ; DDRCLK[0] ; ; Node named DDRCLK[0] removed during synthesis ; +; Clock Settings ; fast ; ; DDRCLK[1] ; ; Node named DDRCLK[1] removed during synthesis ; +; Clock Settings ; fast ; ; DDRCLK[2] ; ; Node named DDRCLK[2] removed during synthesis ; +; Clock Settings ; fast ; ; DDRCLK[3] ; ; Node named DDRCLK[3] removed during synthesis ; +; Clock Settings ; fast ; ; Video:Fredi_Aschwanden|DDRCLK ; ; Node named Video:Fredi_Aschwanden|DDRCLK removed during synthesis ; +; Clock Settings ; fast ; ; Video:Fredi_Aschwanden|DDRCLK[0] ; ; Node named Video:Fredi_Aschwanden|DDRCLK[0] removed during synthesis ; +; Clock Settings ; fast ; ; Video:Fredi_Aschwanden|DDRCLK[1] ; ; Node named Video:Fredi_Aschwanden|DDRCLK[1] removed during synthesis ; +; Clock Settings ; fast ; ; Video:Fredi_Aschwanden|DDRCLK[2] ; ; Node named Video:Fredi_Aschwanden|DDRCLK[2] removed during synthesis ; +; Clock Settings ; fast ; ; Video:Fredi_Aschwanden|DDRCLK[3] ; ; Node named Video:Fredi_Aschwanden|DDRCLK[3] removed during synthesis ; +; Clock Settings ; fast ; ; Video:Fredi_Aschwanden|DDR_CTR_BLITTER:DDR_CTR_BLITTER|DDRCLK ; ; No element named Video:Fredi_Aschwanden|DDR_CTR_BLITTER:DDR_CTR_BLITTER|DDRCLK was found in the netlist ; +; Clock Settings ; fast ; ; Video:Fredi_Aschwanden|DDR_CTR_BLITTER:DDR_CTR_BLITTER|DDRCLK[0] ; ; No element named Video:Fredi_Aschwanden|DDR_CTR_BLITTER:DDR_CTR_BLITTER|DDRCLK[0] was found in the netlist ; +; Clock Settings ; fast ; ; Video:Fredi_Aschwanden|DDR_CTR_BLITTER:DDR_CTR_BLITTER|DDRCLK[1] ; ; No element named Video:Fredi_Aschwanden|DDR_CTR_BLITTER:DDR_CTR_BLITTER|DDRCLK[1] was found in the netlist ; +; Clock Settings ; fast ; ; Video:Fredi_Aschwanden|DDR_CTR_BLITTER:DDR_CTR_BLITTER|DDRCLK[2] ; ; No element named Video:Fredi_Aschwanden|DDR_CTR_BLITTER:DDR_CTR_BLITTER|DDRCLK[2] was found in the netlist ; +; Clock Settings ; fast ; ; Video:Fredi_Aschwanden|DDR_CTR_BLITTER:DDR_CTR_BLITTER|DDRCLK[3] ; ; No element named Video:Fredi_Aschwanden|DDR_CTR_BLITTER:DDR_CTR_BLITTER|DDRCLK[3] was found in the netlist ; +; Maximum Delay ; 5 ns ; VD ; FB_AD ; ; No timing path applicable to specified source and destination ; +; MAX_DELAY ; 5.000 ns ; FB_AD[13] ; BA[0] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[13] ; VA[3] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[12] ; VA[7] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[31] ; VA[1] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[16] ; VA[2] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[13] ; VA[12] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[22] ; VA[8] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[12] ; VA[0] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[30] ; VA[8] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[31] ; VA[10] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[17] ; VA[3] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[13] ; VA[5] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[12] ; VA[9] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[12] ; VA[1] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[30] ; VA[9] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[30] ; VA[1] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[31] ; VA[7] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[18] ; nVRAS ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[18] ; VA[4] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[13] ; VA[6] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[12] ; VA[10] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[12] ; VA[2] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[24] ; VA[10] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[30] ; VA[10] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[30] ; VA[2] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[31] ; VA[8] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[31] ; VA[0] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[13] ; VA[7] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[15] ; VA[1] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[12] ; BA[0] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[12] ; VA[11] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[12] ; VA[3] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[25] ; VA[11] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[30] ; BA[0] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[30] ; VA[11] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[30] ; VA[3] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[31] ; VA[5] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[12] ; nVRAS ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[30] ; nVRAS ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[13] ; VA[8] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[13] ; VA[0] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[12] ; BA[1] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[12] ; VA[12] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[12] ; VA[4] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[30] ; BA[1] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[30] ; VA[12] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[30] ; VA[4] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[31] ; VA[6] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[19] ; VA[5] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[23] ; VA[9] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[13] ; VA[9] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[13] ; VA[1] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[12] ; VA[5] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[30] ; VA[5] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[31] ; BA[0] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[31] ; VA[11] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[31] ; VA[3] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[31] ; nVRAS ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[13] ; VA[10] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[13] ; VA[2] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[14] ; VA[0] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[12] ; VA[6] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[26] ; VA[12] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[30] ; VA[6] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[31] ; BA[1] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[31] ; VA[12] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[31] ; VA[4] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[21] ; VA[7] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[13] ; VA[11] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[30] ; VA[7] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[31] ; VA[9] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[13] ; nVRAS ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[20] ; VA[6] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[13] ; BA[1] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[13] ; VA[4] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[12] ; VA[8] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[30] ; VA[0] ; ; Assignment is illegal for node and/or path ; +; MAX_DELAY ; 5.000 ns ; FB_AD[31] ; VA[2] ; ; Assignment is illegal for node and/or path ; ++-----------------+----------+-----------------+------------------------------------------------------------------+-------------+------------------------------------------------------------------------------------------------------------+ + + ++--------------------------+ +; Timing Analyzer Messages ; ++--------------------------+ +Info: ******************************************************************* +Info: Running Quartus II Classic Timing Analyzer + Info: Version 9.1 Build 350 03/24/2010 Service Pack 2 SJ Web Edition + Info: Processing started: Wed Dec 15 02:25:14 2010 +Info: Command: quartus_tan --read_settings_files=off --write_settings_files=off firebeei1 -c firebee1 --timing_analysis_only +Warning: Timing Analysis is analyzing one or more combinational loops as latches + Warning: Node "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[31]" is a latch + Warning: Node "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[30]" is a latch + Warning: Node "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[29]" is a latch + Warning: Node "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[28]" is a latch + Warning: Node "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[27]" is a latch + Warning: Node "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[26]" is a latch + Warning: Node "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[25]" is a latch + Warning: Node "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[24]" is a latch + Warning: Node "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[23]" is a latch + Warning: Node "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[22]" is a latch + Warning: Node "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[21]" is a latch + Warning: Node "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[20]" is a latch + Warning: Node "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[19]" is a latch + Warning: Node "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[18]" is a latch + Warning: Node "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[17]" is a latch + Warning: Node "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[16]" is a latch + Warning: Node "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[15]" is a latch + Warning: Node "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[14]" is a latch + Warning: Node "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[13]" is a latch + Warning: Node "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[12]" is a latch + Warning: Node "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[11]" is a latch + Warning: Node "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[10]" is a latch + Warning: Node "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[9]" is a latch + Warning: Node "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[8]" is a latch + Warning: Node "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[7]" is a latch + Warning: Node "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[6]" is a latch + Warning: Node "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[5]" is a latch + Warning: Node "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[4]" is a latch + Warning: Node "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[3]" is a latch + Warning: Node "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[2]" is a latch + Warning: Node "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[1]" is a latch + Warning: Node "Video:Fredi_Aschwanden|lpm_latch0:inst27|lpm_latch:lpm_latch_component|latches[0]" is a latch +Warning: Clock latency analysis for PLL offsets is supported for the current device family, but is not enabled +Warning: Clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[3]" frequency requirement of 47.96 MHz overrides "Cyclone III" PLL "altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0]" input frequency requirement of 48.0 MHz +Warning: Clock Setting "fast" is unassigned +Warning: PLL "altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0]" input frequency requirement of 0.5 MHz overrides default required fmax of 33.33 MHz -- Slack information will be reported +Warning: PLL "altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[1]" input frequency requirement of 2.46 MHz overrides default required fmax of 33.33 MHz -- Slack information will be reported +Warning: PLL "altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[2]" input frequency requirement of 24.57 MHz overrides default required fmax of 33.33 MHz -- Slack information will be reported +Warning: PLL "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0]" input frequency requirement of 2.0 MHz overrides default required fmax of 33.33 MHz -- Slack information will be reported +Warning: PLL "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1]" input frequency requirement of 15.99 MHz overrides default required fmax of 33.33 MHz -- Slack information will be reported +Warning: PLL "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2]" input frequency requirement of 24.98 MHz overrides default required fmax of 33.33 MHz -- Slack information will be reported +Warning: PLL "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[3]" input frequency requirement of 47.96 MHz overrides default required fmax of 33.33 MHz -- Slack information will be reported +Warning: PLL "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0]" input frequency requirement of 132.01 MHz overrides default required fmax of 33.33 MHz -- Slack information will be reported +Warning: PLL "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1]" input frequency requirement of 132.01 MHz overrides default required fmax of 33.33 MHz -- Slack information will be reported +Warning: PLL "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2]" input frequency requirement of 132.01 MHz overrides default required fmax of 33.33 MHz -- Slack information will be reported +Warning: PLL "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3]" input frequency requirement of 132.01 MHz overrides default required fmax of 33.33 MHz -- Slack information will be reported +Warning: PLL "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4]" input frequency requirement of 66.0 MHz overrides default required fmax of 33.33 MHz -- Slack information will be reported +Warning: PLL "altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0]" input frequency requirement of 95.92 MHz overrides default required fmax of 33.33 MHz -- Slack information will be reported +Warning: Found 38 node(s) in clock paths which may be acting as ripple and/or gated clocks -- node(s) analyzed as buffer(s) resulting in clock skew + Info: Detected ripple clock "interrupt_handler:nobody|INT_ENA[3]" as buffer + Info: Detected ripple clock "interrupt_handler:nobody|INT_ENA[1]" as buffer + Info: Detected ripple clock "interrupt_handler:nobody|INT_ENA[4]" as buffer + Info: Detected ripple clock "interrupt_handler:nobody|INT_ENA[2]" as buffer + Info: Detected ripple clock "interrupt_handler:nobody|INT_ENA[5]" as buffer + Info: Detected gated clock "interrupt_handler:nobody|INT_LATCH[3]~23" as buffer + Info: Detected gated clock "interrupt_handler:nobody|INT_LATCH[1]~25" as buffer + Info: Detected gated clock "interrupt_handler:nobody|INT_LATCH[4]~22" as buffer + Info: Detected gated clock "interrupt_handler:nobody|INT_LATCH[2]~24" as buffer + Info: Detected ripple clock "interrupt_handler:nobody|INT_ENA[0]" as buffer + Info: Detected ripple clock "interrupt_handler:nobody|INT_ENA[6]" as buffer + Info: Detected ripple clock "interrupt_handler:nobody|INT_ENA[9]" as buffer + Info: Detected ripple clock "interrupt_handler:nobody|INT_ENA[8]" as buffer + Info: Detected gated clock "interrupt_handler:nobody|INT_LATCH[5]~21" as buffer + Info: Detected gated clock "interrupt_handler:nobody|INT_LATCH[0]~26" as buffer + Info: Detected gated clock "interrupt_handler:nobody|INT_LATCH[6]~20" as buffer + Info: Detected gated clock "interrupt_handler:nobody|INT_LATCH[9]~18" as buffer + Info: Detected gated clock "interrupt_handler:nobody|INT_LATCH[8]~19" as buffer + Info: Detected ripple clock "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|HSYNC" as buffer + Info: Detected ripple clock "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VSYNC" as buffer + Info: Detected ripple clock "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VMD[2]" as buffer + Info: Detected ripple clock "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VCT[0]" as buffer + Info: Detected ripple clock "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[8]" as buffer + Info: Detected gated clock "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~31" as buffer + Info: Detected gated clock "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~30" as buffer + Info: Detected ripple clock "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLK17M" as buffer + Info: Detected ripple clock "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLK13M" as buffer + Info: Detected gated clock "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~2" as buffer + Info: Detected ripple clock "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VCT[2]" as buffer + Info: Detected ripple clock "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[7]" as buffer + Info: Detected ripple clock "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[6]" as buffer + Info: Detected gated clock "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~0" as buffer + Info: Detected ripple clock "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[0]" as buffer + Info: Detected ripple clock "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[9]" as buffer + Info: Detected gated clock "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~4" as buffer + Info: Detected gated clock "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~3" as buffer + Info: Detected gated clock "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|_~29" as buffer + Info: Detected gated clock "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~1" as buffer +Info: Found timing assignments -- calculating delays +Info: Slack time is 1.997 us for clock "altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0]" between source register "lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0]" and destination register "lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17]" + Info: Fmax is 362.45 MHz (period= 2.759 ns) + Info: + Largest register to register requirement is 1999.813 ns + Info: + Setup relationship between source and destination is 1999.998 ns + Info: + Latch edge is 1990.420 ns + Info: Clock period of Destination clock "altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0]" is 1999.998 ns with offset of -9.578 ns and duty cycle of 50 + Info: Multicycle Setup factor for Destination register is 1 + Info: - Launch edge is -9.578 ns + Info: Clock period of Source clock "altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0]" is 1999.998 ns with offset of -9.578 ns and duty cycle of 50 + Info: Multicycle Setup factor for Source register is 1 + Info: + Largest clock skew is -0.001 ns + Info: + Shortest clock path from clock "altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0]" to destination register is 3.531 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_3; Fanout = 1; CLK Node = 'altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0]' + Info: 2: + IC(1.914 ns) + CELL(0.000 ns) = 1.914 ns; Loc. = CLKCTRL_G14; Fanout = 52; COMB Node = 'altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0]~clkctrl' + Info: 3: + IC(1.083 ns) + CELL(0.534 ns) = 3.531 ns; Loc. = FF_X65_Y15_N27; Fanout = 2; REG Node = 'lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17]' + Info: Total cell delay = 0.534 ns ( 15.12 % ) + Info: Total interconnect delay = 2.997 ns ( 84.88 % ) + Info: - Longest clock path from clock "altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0]" to source register is 3.532 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_3; Fanout = 1; CLK Node = 'altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0]' + Info: 2: + IC(1.914 ns) + CELL(0.000 ns) = 1.914 ns; Loc. = CLKCTRL_G14; Fanout = 52; COMB Node = 'altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0]~clkctrl' + Info: 3: + IC(1.084 ns) + CELL(0.534 ns) = 3.532 ns; Loc. = FF_X65_Y16_N15; Fanout = 2; REG Node = 'lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0]' + Info: Total cell delay = 0.534 ns ( 15.12 % ) + Info: Total interconnect delay = 2.998 ns ( 84.88 % ) + Info: - Micro clock to output delay of source is 0.199 ns + Info: - Micro setup delay of destination is -0.015 ns + Info: - Longest register to register delay is 2.574 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = FF_X65_Y16_N15; Fanout = 2; REG Node = 'lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0]' + Info: 2: + IC(0.325 ns) + CELL(0.446 ns) = 0.771 ns; Loc. = LCCOMB_X65_Y16_N14; Fanout = 2; COMB Node = 'lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_comb_bita0~COUT' + Info: 3: + IC(0.000 ns) + CELL(0.058 ns) = 0.829 ns; Loc. = LCCOMB_X65_Y16_N16; Fanout = 2; COMB Node = 'lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_comb_bita1~COUT' + Info: 4: + IC(0.000 ns) + CELL(0.058 ns) = 0.887 ns; Loc. = LCCOMB_X65_Y16_N18; Fanout = 2; COMB Node = 'lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_comb_bita2~COUT' + Info: 5: + IC(0.000 ns) + CELL(0.058 ns) = 0.945 ns; Loc. = LCCOMB_X65_Y16_N20; Fanout = 2; COMB Node = 'lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_comb_bita3~COUT' + Info: 6: + IC(0.000 ns) + CELL(0.058 ns) = 1.003 ns; Loc. = LCCOMB_X65_Y16_N22; Fanout = 2; COMB Node = 'lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_comb_bita4~COUT' + Info: 7: + IC(0.000 ns) + CELL(0.058 ns) = 1.061 ns; Loc. = LCCOMB_X65_Y16_N24; Fanout = 2; COMB Node = 'lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_comb_bita5~COUT' + Info: 8: + IC(0.000 ns) + CELL(0.058 ns) = 1.119 ns; Loc. = LCCOMB_X65_Y16_N26; Fanout = 2; COMB Node = 'lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_comb_bita6~COUT' + Info: 9: + IC(0.000 ns) + CELL(0.058 ns) = 1.177 ns; Loc. = LCCOMB_X65_Y16_N28; Fanout = 2; COMB Node = 'lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_comb_bita7~COUT' + Info: 10: + IC(0.000 ns) + CELL(0.058 ns) = 1.235 ns; Loc. = LCCOMB_X65_Y16_N30; Fanout = 2; COMB Node = 'lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_comb_bita8~COUT' + Info: 11: + IC(0.000 ns) + CELL(0.058 ns) = 1.293 ns; Loc. = LCCOMB_X65_Y15_N0; Fanout = 2; COMB Node = 'lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_comb_bita9~COUT' + Info: 12: + IC(0.000 ns) + CELL(0.058 ns) = 1.351 ns; Loc. = LCCOMB_X65_Y15_N2; Fanout = 2; COMB Node = 'lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_comb_bita10~COUT' + Info: 13: + IC(0.000 ns) + CELL(0.058 ns) = 1.409 ns; Loc. = LCCOMB_X65_Y15_N4; Fanout = 2; COMB Node = 'lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_comb_bita11~COUT' + Info: 14: + IC(0.000 ns) + CELL(0.058 ns) = 1.467 ns; Loc. = LCCOMB_X65_Y15_N6; Fanout = 2; COMB Node = 'lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_comb_bita12~COUT' + Info: 15: + IC(0.000 ns) + CELL(0.058 ns) = 1.525 ns; Loc. = LCCOMB_X65_Y15_N8; Fanout = 2; COMB Node = 'lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_comb_bita13~COUT' + Info: 16: + IC(0.000 ns) + CELL(0.058 ns) = 1.583 ns; Loc. = LCCOMB_X65_Y15_N10; Fanout = 2; COMB Node = 'lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_comb_bita14~COUT' + Info: 17: + IC(0.000 ns) + CELL(0.058 ns) = 1.641 ns; Loc. = LCCOMB_X65_Y15_N12; Fanout = 2; COMB Node = 'lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_comb_bita15~COUT' + Info: 18: + IC(0.000 ns) + CELL(0.058 ns) = 1.699 ns; Loc. = LCCOMB_X65_Y15_N14; Fanout = 1; COMB Node = 'lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_comb_bita16~COUT' + Info: 19: + IC(0.000 ns) + CELL(0.455 ns) = 2.154 ns; Loc. = LCCOMB_X65_Y15_N16; Fanout = 1; COMB Node = 'lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_comb_bita17' + Info: 20: + IC(0.199 ns) + CELL(0.130 ns) = 2.483 ns; Loc. = LCCOMB_X65_Y15_N26; Fanout = 1; COMB Node = 'lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17]~feeder' + Info: 21: + IC(0.000 ns) + CELL(0.091 ns) = 2.574 ns; Loc. = FF_X65_Y15_N27; Fanout = 2; REG Node = 'lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17]' + Info: Total cell delay = 2.050 ns ( 79.64 % ) + Info: Total interconnect delay = 0.524 ns ( 20.36 % ) +Info: No valid register-to-register data paths exist for clock "altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[1]" +Info: No valid register-to-register data paths exist for clock "altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[2]" +Info: Slack time is 498.663 ns for clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0]" between source register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4]" and destination register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[0]" + Info: Fmax is restricted to 500.0 MHz due to tcl and tch limits + Info: + Largest register to register requirement is 500.232 ns + Info: + Setup relationship between source and destination is 500.416 ns + Info: + Latch edge is 498.552 ns + Info: Clock period of Destination clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0]" is 500.416 ns with offset of -1.864 ns and duty cycle of 50 + Info: Multicycle Setup factor for Destination register is 1 + Info: - Launch edge is -1.864 ns + Info: Clock period of Source clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0]" is 500.416 ns with offset of -1.864 ns and duty cycle of 50 + Info: Multicycle Setup factor for Source register is 1 + Info: + Largest clock skew is 0.000 ns + Info: + Shortest clock path from clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0]" to destination register is 3.522 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_4; Fanout = 1; CLK Node = 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0]' + Info: 2: + IC(1.909 ns) + CELL(0.000 ns) = 1.909 ns; Loc. = CLKCTRL_G16; Fanout = 7; COMB Node = 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0]~clkctrl' + Info: 3: + IC(1.079 ns) + CELL(0.534 ns) = 3.522 ns; Loc. = FF_X1_Y10_N3; Fanout = 2; REG Node = 'FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[0]' + Info: Total cell delay = 0.534 ns ( 15.16 % ) + Info: Total interconnect delay = 2.988 ns ( 84.84 % ) + Info: - Longest clock path from clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0]" to source register is 3.522 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_4; Fanout = 1; CLK Node = 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0]' + Info: 2: + IC(1.909 ns) + CELL(0.000 ns) = 1.909 ns; Loc. = CLKCTRL_G16; Fanout = 7; COMB Node = 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0]~clkctrl' + Info: 3: + IC(1.079 ns) + CELL(0.534 ns) = 3.522 ns; Loc. = FF_X1_Y10_N11; Fanout = 2; REG Node = 'FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4]' + Info: Total cell delay = 0.534 ns ( 15.16 % ) + Info: Total interconnect delay = 2.988 ns ( 84.84 % ) + Info: - Micro clock to output delay of source is 0.199 ns + Info: - Micro setup delay of destination is -0.015 ns + Info: - Longest register to register delay is 1.569 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = FF_X1_Y10_N11; Fanout = 2; REG Node = 'FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4]' + Info: 2: + IC(0.344 ns) + CELL(0.376 ns) = 0.720 ns; Loc. = LCCOMB_X1_Y10_N14; Fanout = 5; COMB Node = 'FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[3]~13' + Info: 3: + IC(0.240 ns) + CELL(0.609 ns) = 1.569 ns; Loc. = FF_X1_Y10_N3; Fanout = 2; REG Node = 'FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[0]' + Info: Total cell delay = 0.985 ns ( 62.78 % ) + Info: Total interconnect delay = 0.584 ns ( 37.22 % ) +Info: Slack time is 28.59 ns for clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1]" between source register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|RD_In" and destination register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|\EDGEDETECT:LOCK" + Info: Fmax is 186.15 MHz (period= 5.372 ns) + Info: + Largest register to register requirement is 31.135 ns + Info: + Setup relationship between source and destination is 31.276 ns + Info: + Latch edge is 60.688 ns + Info: Clock period of Destination clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1]" is 62.552 ns with offset of -1.864 ns and duty cycle of 50 + Info: Multicycle Setup factor for Destination register is 1 + Info: - Launch edge is 29.412 ns + Info: Clock period of Source clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1]" is 62.552 ns with inverted offset of 29.412 ns and duty cycle of 50 + Info: Multicycle Setup factor for Source register is 1 + Info: + Largest clock skew is 0.020 ns + Info: + Shortest clock path from clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1]" to destination register is 3.508 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_4; Fanout = 1; CLK Node = 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1]' + Info: 2: + IC(1.909 ns) + CELL(0.000 ns) = 1.909 ns; Loc. = CLKCTRL_G17; Fanout = 595; COMB Node = 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1]~clkctrl' + Info: 3: + IC(1.065 ns) + CELL(0.534 ns) = 3.508 ns; Loc. = FF_X30_Y32_N3; Fanout = 2; REG Node = 'FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|\EDGEDETECT:LOCK' + Info: Total cell delay = 0.534 ns ( 15.22 % ) + Info: Total interconnect delay = 2.974 ns ( 84.78 % ) + Info: - Longest clock path from clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1]" to source register is 3.488 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_4; Fanout = 1; CLK Node = 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1]' + Info: 2: + IC(1.909 ns) + CELL(0.000 ns) = 1.909 ns; Loc. = CLKCTRL_G17; Fanout = 595; COMB Node = 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1]~clkctrl' + Info: 3: + IC(1.131 ns) + CELL(0.448 ns) = 3.488 ns; Loc. = FF_X59_Y43_N10; Fanout = 2; REG Node = 'FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|RD_In' + Info: Total cell delay = 0.448 ns ( 12.84 % ) + Info: Total interconnect delay = 3.040 ns ( 87.16 % ) + Info: - Micro clock to output delay of source is 0.176 ns + Info: - Micro setup delay of destination is -0.015 ns + Info: - Longest register to register delay is 2.545 ns + Info: 1: + IC(0.000 ns) + CELL(0.418 ns) = 0.418 ns; Loc. = FF_X59_Y43_N10; Fanout = 2; REG Node = 'FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|RD_In' + Info: 2: + IC(1.655 ns) + CELL(0.381 ns) = 2.454 ns; Loc. = LCCOMB_X30_Y32_N2; Fanout = 1; COMB Node = 'FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|\EDGEDETECT:LOCK~0' + Info: 3: + IC(0.000 ns) + CELL(0.091 ns) = 2.545 ns; Loc. = FF_X30_Y32_N3; Fanout = 2; REG Node = 'FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|\EDGEDETECT:LOCK' + Info: Total cell delay = 0.890 ns ( 34.97 % ) + Info: Total interconnect delay = 1.655 ns ( 65.03 % ) +Info: Slack time is -4.615 ns for clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2]" between source memory "Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0" and destination register "Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[35]" + Info: + Largest memory to register requirement is -0.928 ns + Info: + Setup relationship between source and destination is 0.145 ns + Info: + Latch edge is 0.221 ns + Info: Clock period of Destination clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2]" is 40.033 ns with offset of -1.864 ns and duty cycle of 50 + Info: Multicycle Setup factor for Destination register is 1 + Info: - Launch edge is 0.076 ns + Info: Clock period of Source clock "altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0]" is 10.425 ns with offset of -2.843 ns and duty cycle of 50 + Info: Multicycle Setup factor for Source register is 1 + Info: + Largest clock skew is -0.862 ns + Info: + Shortest clock path from clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2]" to destination register is 7.507 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_4; Fanout = 1; CLK Node = 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2]' + Info: 2: + IC(1.909 ns) + CELL(0.000 ns) = 1.909 ns; Loc. = CLKCTRL_G18; Fanout = 4; COMB Node = 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2]~clkctrl' + Info: 3: + IC(1.472 ns) + CELL(0.307 ns) = 3.688 ns; Loc. = LCCOMB_X26_Y18_N8; Fanout = 1; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~3' + Info: 4: + IC(0.203 ns) + CELL(0.243 ns) = 4.134 ns; Loc. = LCCOMB_X26_Y18_N4; Fanout = 3; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK' + Info: 5: + IC(1.732 ns) + CELL(0.000 ns) = 5.866 ns; Loc. = CLKCTRL_G6; Fanout = 1105; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~clkctrl' + Info: 6: + IC(1.107 ns) + CELL(0.534 ns) = 7.507 ns; Loc. = FF_X41_Y18_N15; Fanout = 4; REG Node = 'Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[35]' + Info: Total cell delay = 1.084 ns ( 14.44 % ) + Info: Total interconnect delay = 6.423 ns ( 85.56 % ) + Info: - Longest clock path from clock "altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0]" to source memory is 8.369 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_2; Fanout = 1; CLK Node = 'altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0]' + Info: 2: + IC(1.881 ns) + CELL(0.000 ns) = 1.881 ns; Loc. = CLKCTRL_G8; Fanout = 1; COMB Node = 'altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0]~clkctrl' + Info: 3: + IC(1.469 ns) + CELL(0.342 ns) = 3.692 ns; Loc. = LCCOMB_X22_Y18_N24; Fanout = 1; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~1' + Info: 4: + IC(0.650 ns) + CELL(0.367 ns) = 4.709 ns; Loc. = LCCOMB_X26_Y18_N4; Fanout = 3; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK' + Info: 5: + IC(1.732 ns) + CELL(0.000 ns) = 6.441 ns; Loc. = CLKCTRL_G6; Fanout = 1105; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~clkctrl' + Info: 6: + IC(1.112 ns) + CELL(0.816 ns) = 8.369 ns; Loc. = M9K_X40_Y20_N0; Fanout = 36; MEM Node = 'Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0' + Info: Total cell delay = 1.525 ns ( 18.22 % ) + Info: Total interconnect delay = 6.844 ns ( 81.78 % ) + Info: - Micro clock to output delay of source is 0.226 ns + Info: - Micro setup delay of destination is -0.015 ns + Info: - Longest memory to register delay is 3.687 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = M9K_X40_Y20_N0; Fanout = 36; MEM Node = 'Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0' + Info: 2: + IC(0.000 ns) + CELL(2.479 ns) = 2.479 ns; Loc. = M9K_X40_Y20_N0; Fanout = 1; MEM Node = 'Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|q_b[35]' + Info: 3: + IC(0.987 ns) + CELL(0.130 ns) = 3.596 ns; Loc. = LCCOMB_X41_Y18_N14; Fanout = 1; COMB Node = 'Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|result_node[35]~67' + Info: 4: + IC(0.000 ns) + CELL(0.091 ns) = 3.687 ns; Loc. = FF_X41_Y18_N15; Fanout = 4; REG Node = 'Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[35]' + Info: Total cell delay = 2.700 ns ( 73.23 % ) + Info: Total interconnect delay = 0.987 ns ( 26.77 % ) +Warning: Can't achieve timing requirement Clock Setup: 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2]' along 3741 path(s). See Report window for details. +Info: No valid register-to-register data paths exist for clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[3]" +Info: Slack time is -2.673 ns for clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0]" between source pin "FB_ALE" and destination register "Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BUS_CYC" + Info: + Largest pin to register requirement is 0.814 ns + Info: + Setup relationship between source and destination is 1.262 ns + Info: + Latch edge is 3.955 ns + Info: Clock period of Destination clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0]" is 7.575 ns with offset of -3.620 ns and duty cycle of 50 + Info: Multicycle Setup factor for Destination register is 1 + Info: - Launch edge is 2.693 ns + Info: Clock period of Source clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2]" is 7.575 ns with offset of 2.693 ns and duty cycle of 50 + Info: Multicycle Setup factor for Source register is 1 + Info: + Largest clock skew is 3.537 ns + Info: + Shortest clock path from clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0]" to destination register is 3.537 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_1; Fanout = 1; CLK Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0]' + Info: 2: + IC(1.901 ns) + CELL(0.000 ns) = 1.901 ns; Loc. = CLKCTRL_G3; Fanout = 707; COMB Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0]~clkctrl' + Info: 3: + IC(1.102 ns) + CELL(0.534 ns) = 3.537 ns; Loc. = FF_X25_Y6_N21; Fanout = 6; REG Node = 'Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BUS_CYC' + Info: Total cell delay = 0.534 ns ( 15.10 % ) + Info: Total interconnect delay = 3.003 ns ( 84.90 % ) + Info: - Micro setup delay of destination is -0.015 ns + Info: - Max Input delay of pin is 4.0 ns + Info: - Longest pin to register delay is 3.487 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PIN_R7; Fanout = 1; PIN Node = 'FB_ALE' + Info: 2: + IC(0.000 ns) + CELL(0.941 ns) = 0.941 ns; Loc. = IOIBUF_X0_Y2_N1; Fanout = 33; COMB Node = 'FB_ALE~input' + Info: 3: + IC(1.144 ns) + CELL(0.130 ns) = 2.215 ns; Loc. = LCCOMB_X22_Y6_N18; Fanout = 18; COMB Node = 'Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|_~5' + Info: 4: + IC(0.241 ns) + CELL(0.130 ns) = 2.586 ns; Loc. = LCCOMB_X22_Y6_N24; Fanout = 19; COMB Node = 'Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|VA_S[10]~0' + Info: 5: + IC(0.680 ns) + CELL(0.130 ns) = 3.396 ns; Loc. = LCCOMB_X25_Y6_N20; Fanout = 1; COMB Node = 'Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BUS_CYC~1' + Info: 6: + IC(0.000 ns) + CELL(0.091 ns) = 3.487 ns; Loc. = FF_X25_Y6_N21; Fanout = 6; REG Node = 'Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BUS_CYC' + Info: Total cell delay = 1.422 ns ( 40.78 % ) + Info: Total interconnect delay = 2.065 ns ( 59.22 % ) +Warning: Can't achieve timing requirement Clock Setup: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0]' along 86 path(s). See Report window for details. +Info: Slack time is 2.965 ns for clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1]" between source register "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[6]" and destination register "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[6]" + Info: Fmax is restricted to 500.0 MHz due to tcl and tch limits + Info: + Largest register to register requirement is 3.604 ns + Info: + Setup relationship between source and destination is 3.788 ns + Info: + Latch edge is 6.481 ns + Info: Clock period of Destination clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1]" is 7.575 ns with offset of -1.094 ns and duty cycle of 50 + Info: Multicycle Setup factor for Destination register is 1 + Info: - Launch edge is 2.693 ns + Info: Clock period of Source clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1]" is 7.575 ns with inverted offset of 2.693 ns and duty cycle of 50 + Info: Multicycle Setup factor for Source register is 1 + Info: + Largest clock skew is 0.000 ns + Info: + Shortest clock path from clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1]" to destination register is 3.531 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_1; Fanout = 1; CLK Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1]' + Info: 2: + IC(1.901 ns) + CELL(0.000 ns) = 1.901 ns; Loc. = CLKCTRL_G1; Fanout = 96; COMB Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1]~clkctrl' + Info: 3: + IC(1.096 ns) + CELL(0.534 ns) = 3.531 ns; Loc. = FF_X66_Y12_N3; Fanout = 2; REG Node = 'Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[6]' + Info: Total cell delay = 0.534 ns ( 15.12 % ) + Info: Total interconnect delay = 2.997 ns ( 84.88 % ) + Info: - Longest clock path from clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1]" to source register is 3.531 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_1; Fanout = 1; CLK Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1]' + Info: 2: + IC(1.901 ns) + CELL(0.000 ns) = 1.901 ns; Loc. = CLKCTRL_G1; Fanout = 96; COMB Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1]~clkctrl' + Info: 3: + IC(1.096 ns) + CELL(0.534 ns) = 3.531 ns; Loc. = FF_X66_Y12_N27; Fanout = 1; REG Node = 'Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[6]' + Info: Total cell delay = 0.534 ns ( 15.12 % ) + Info: Total interconnect delay = 2.997 ns ( 84.88 % ) + Info: - Micro clock to output delay of source is 0.199 ns + Info: - Micro setup delay of destination is -0.015 ns + Info: - Longest register to register delay is 0.639 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = FF_X66_Y12_N27; Fanout = 1; REG Node = 'Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[6]' + Info: 2: + IC(0.297 ns) + CELL(0.342 ns) = 0.639 ns; Loc. = FF_X66_Y12_N3; Fanout = 2; REG Node = 'Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[6]' + Info: Total cell delay = 0.342 ns ( 53.52 % ) + Info: Total interconnect delay = 0.297 ns ( 46.48 % ) +Info: Slack time is 5.299 ns for clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2]" between source register "Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_VDMP[3]" and destination register "Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[3]" + Info: + Largest register to register requirement is 6.118 ns + Info: + Setup relationship between source and destination is 6.313 ns + Info: + Latch edge is 10.268 ns + Info: Clock period of Destination clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2]" is 7.575 ns with offset of 2.693 ns and duty cycle of 50 + Info: Multicycle Setup factor for Destination register is 1 + Info: - Launch edge is 3.955 ns + Info: Clock period of Source clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0]" is 7.575 ns with offset of -3.620 ns and duty cycle of 50 + Info: Multicycle Setup factor for Source register is 1 + Info: + Largest clock skew is -0.011 ns + Info: + Shortest clock path from clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2]" to destination register is 3.532 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_1; Fanout = 1; CLK Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2]' + Info: 2: + IC(1.901 ns) + CELL(0.000 ns) = 1.901 ns; Loc. = CLKCTRL_G0; Fanout = 5; COMB Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2]~clkctrl' + Info: 3: + IC(1.097 ns) + CELL(0.534 ns) = 3.532 ns; Loc. = FF_X28_Y12_N29; Fanout = 4; REG Node = 'Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[3]' + Info: Total cell delay = 0.534 ns ( 15.12 % ) + Info: Total interconnect delay = 2.998 ns ( 84.88 % ) + Info: - Longest clock path from clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0]" to source register is 3.543 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_1; Fanout = 1; CLK Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0]' + Info: 2: + IC(1.901 ns) + CELL(0.000 ns) = 1.901 ns; Loc. = CLKCTRL_G3; Fanout = 707; COMB Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0]~clkctrl' + Info: 3: + IC(1.108 ns) + CELL(0.534 ns) = 3.543 ns; Loc. = FF_X25_Y12_N27; Fanout = 1; REG Node = 'Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_VDMP[3]' + Info: Total cell delay = 0.534 ns ( 15.07 % ) + Info: Total interconnect delay = 3.009 ns ( 84.93 % ) + Info: - Micro clock to output delay of source is 0.199 ns + Info: - Micro setup delay of destination is -0.015 ns + Info: - Longest register to register delay is 0.819 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = FF_X25_Y12_N27; Fanout = 1; REG Node = 'Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_VDMP[3]' + Info: 2: + IC(0.598 ns) + CELL(0.130 ns) = 0.728 ns; Loc. = LCCOMB_X28_Y12_N28; Fanout = 1; COMB Node = 'Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[3]~feeder' + Info: 3: + IC(0.000 ns) + CELL(0.091 ns) = 0.819 ns; Loc. = FF_X28_Y12_N29; Fanout = 4; REG Node = 'Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[3]' + Info: Total cell delay = 0.221 ns ( 26.98 % ) + Info: Total interconnect delay = 0.598 ns ( 73.02 % ) +Info: Slack time is 1.672 ns for clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3]" between source register "Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[2]" and destination register "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[2]~DFFHI" + Info: + Largest register to register requirement is 5.308 ns + Info: + Setup relationship between source and destination is 5.999 ns + Info: + Latch edge is 8.690 ns + Info: Clock period of Destination clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3]" is 7.575 ns with offset of 1.115 ns and duty cycle of 50 + Info: Multicycle Setup factor for Destination register is 1 + Info: - Launch edge is 2.691 ns + Info: Clock period of Source clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4]" is 15.151 ns with offset of -4.884 ns and duty cycle of 50 + Info: Multicycle Setup factor for Source register is 1 + Info: + Largest clock skew is -0.064 ns + Info: + Shortest clock path from clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3]" to destination register is 3.487 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_1; Fanout = 1; CLK Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3]' + Info: 2: + IC(1.901 ns) + CELL(0.000 ns) = 1.901 ns; Loc. = CLKCTRL_G2; Fanout = 113; COMB Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3]~clkctrl' + Info: 3: + IC(1.098 ns) + CELL(0.488 ns) = 3.487 ns; Loc. = DDIOOUTCELL_X67_Y14_N11; Fanout = 1; REG Node = 'Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[2]~DFFHI' + Info: Total cell delay = 0.488 ns ( 13.99 % ) + Info: Total interconnect delay = 2.999 ns ( 86.01 % ) + Info: - Longest clock path from clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4]" to source register is 3.551 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_1; Fanout = 1; CLK Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4]' + Info: 2: + IC(1.901 ns) + CELL(0.000 ns) = 1.901 ns; Loc. = CLKCTRL_G4; Fanout = 189; COMB Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4]~clkctrl' + Info: 3: + IC(1.116 ns) + CELL(0.534 ns) = 3.551 ns; Loc. = FF_X22_Y2_N13; Fanout = 1; REG Node = 'Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[2]' + Info: Total cell delay = 0.534 ns ( 15.04 % ) + Info: Total interconnect delay = 3.017 ns ( 84.96 % ) + Info: - Micro clock to output delay of source is 0.199 ns + Info: - Micro setup delay of destination is 0.428 ns + Info: - Longest register to register delay is 3.636 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = FF_X22_Y2_N13; Fanout = 1; REG Node = 'Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[2]' + Info: 2: + IC(0.330 ns) + CELL(0.367 ns) = 0.697 ns; Loc. = LCCOMB_X22_Y2_N14; Fanout = 1; COMB Node = 'Video:Fredi_Aschwanden|lpm_mux5:inst22|lpm_mux:lpm_mux_component|mux_58e:auto_generated|result_node[34]~59' + Info: 3: + IC(2.591 ns) + CELL(0.348 ns) = 3.636 ns; Loc. = DDIOOUTCELL_X67_Y14_N11; Fanout = 1; REG Node = 'Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[2]~DFFHI' + Info: Total cell delay = 0.715 ns ( 19.66 % ) + Info: Total interconnect delay = 2.921 ns ( 80.34 % ) +Info: Slack time is -1.712 ns for clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4]" between source pin "FB_ALE" and destination register "Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ" + Info: + Largest pin to register requirement is 1.118 ns + Info: + Setup relationship between source and destination is 1.576 ns + Info: + Latch edge is 2.691 ns + Info: Clock period of Destination clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4]" is 15.151 ns with offset of -4.884 ns and duty cycle of 50 + Info: Multicycle Setup factor for Destination register is 1 + Info: - Launch edge is 1.115 ns + Info: Clock period of Source clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3]" is 7.575 ns with offset of 1.115 ns and duty cycle of 50 + Info: Multicycle Setup factor for Source register is 1 + Info: + Largest clock skew is 3.527 ns + Info: + Shortest clock path from clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4]" to destination register is 3.527 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_1; Fanout = 1; CLK Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4]' + Info: 2: + IC(1.901 ns) + CELL(0.000 ns) = 1.901 ns; Loc. = CLKCTRL_G4; Fanout = 189; COMB Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4]~clkctrl' + Info: 3: + IC(1.092 ns) + CELL(0.534 ns) = 3.527 ns; Loc. = FF_X21_Y6_N19; Fanout = 19; REG Node = 'Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ' + Info: Total cell delay = 0.534 ns ( 15.14 % ) + Info: Total interconnect delay = 2.993 ns ( 84.86 % ) + Info: - Micro setup delay of destination is -0.015 ns + Info: - Max Input delay of pin is 4.0 ns + Info: - Longest pin to register delay is 2.830 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PIN_R7; Fanout = 1; PIN Node = 'FB_ALE' + Info: 2: + IC(0.000 ns) + CELL(0.941 ns) = 0.941 ns; Loc. = IOIBUF_X0_Y2_N1; Fanout = 33; COMB Node = 'FB_ALE~input' + Info: 3: + IC(1.138 ns) + CELL(0.130 ns) = 2.209 ns; Loc. = LCCOMB_X22_Y6_N4; Fanout = 7; COMB Node = 'Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|DDR_SEL' + Info: 4: + IC(0.400 ns) + CELL(0.130 ns) = 2.739 ns; Loc. = LCCOMB_X21_Y6_N18; Fanout = 1; COMB Node = 'Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ~2' + Info: 5: + IC(0.000 ns) + CELL(0.091 ns) = 2.830 ns; Loc. = FF_X21_Y6_N19; Fanout = 19; REG Node = 'Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ' + Info: Total cell delay = 1.292 ns ( 45.65 % ) + Info: Total interconnect delay = 1.538 ns ( 54.35 % ) +Warning: Can't achieve timing requirement Clock Setup: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4]' along 29 path(s). See Report window for details. +Info: Slack time is -4.294 ns for clock "altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0]" between source memory "Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0" and destination register "Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[35]" + Info: + Largest memory to register requirement is -0.607 ns + Info: + Setup relationship between source and destination is 0.272 ns + Info: + Latch edge is 0.493 ns + Info: Clock period of Destination clock "altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0]" is 10.425 ns with offset of -2.843 ns and duty cycle of 50 + Info: Multicycle Setup factor for Destination register is 1 + Info: - Launch edge is 0.221 ns + Info: Clock period of Source clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2]" is 40.033 ns with offset of -1.864 ns and duty cycle of 50 + Info: Multicycle Setup factor for Source register is 1 + Info: + Largest clock skew is -0.668 ns + Info: + Shortest clock path from clock "altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0]" to destination register is 8.082 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_2; Fanout = 1; CLK Node = 'altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0]' + Info: 2: + IC(1.881 ns) + CELL(0.000 ns) = 1.881 ns; Loc. = CLKCTRL_G8; Fanout = 1; COMB Node = 'altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0]~clkctrl' + Info: 3: + IC(1.469 ns) + CELL(0.342 ns) = 3.692 ns; Loc. = LCCOMB_X22_Y18_N24; Fanout = 1; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~1' + Info: 4: + IC(0.650 ns) + CELL(0.367 ns) = 4.709 ns; Loc. = LCCOMB_X26_Y18_N4; Fanout = 3; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK' + Info: 5: + IC(1.732 ns) + CELL(0.000 ns) = 6.441 ns; Loc. = CLKCTRL_G6; Fanout = 1105; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~clkctrl' + Info: 6: + IC(1.107 ns) + CELL(0.534 ns) = 8.082 ns; Loc. = FF_X41_Y18_N15; Fanout = 4; REG Node = 'Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[35]' + Info: Total cell delay = 1.243 ns ( 15.38 % ) + Info: Total interconnect delay = 6.839 ns ( 84.62 % ) + Info: - Longest clock path from clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2]" to source memory is 8.750 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_4; Fanout = 1; CLK Node = 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2]' + Info: 2: + IC(1.909 ns) + CELL(0.000 ns) = 1.909 ns; Loc. = CLKCTRL_G18; Fanout = 4; COMB Node = 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2]~clkctrl' + Info: 3: + IC(1.466 ns) + CELL(0.367 ns) = 3.742 ns; Loc. = LCCOMB_X22_Y18_N0; Fanout = 1; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~0' + Info: 4: + IC(0.201 ns) + CELL(0.130 ns) = 4.073 ns; Loc. = LCCOMB_X22_Y18_N24; Fanout = 1; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~1' + Info: 5: + IC(0.650 ns) + CELL(0.367 ns) = 5.090 ns; Loc. = LCCOMB_X26_Y18_N4; Fanout = 3; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK' + Info: 6: + IC(1.732 ns) + CELL(0.000 ns) = 6.822 ns; Loc. = CLKCTRL_G6; Fanout = 1105; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~clkctrl' + Info: 7: + IC(1.112 ns) + CELL(0.816 ns) = 8.750 ns; Loc. = M9K_X40_Y20_N0; Fanout = 36; MEM Node = 'Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0' + Info: Total cell delay = 1.680 ns ( 19.20 % ) + Info: Total interconnect delay = 7.070 ns ( 80.80 % ) + Info: - Micro clock to output delay of source is 0.226 ns + Info: - Micro setup delay of destination is -0.015 ns + Info: - Longest memory to register delay is 3.687 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = M9K_X40_Y20_N0; Fanout = 36; MEM Node = 'Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0' + Info: 2: + IC(0.000 ns) + CELL(2.479 ns) = 2.479 ns; Loc. = M9K_X40_Y20_N0; Fanout = 1; MEM Node = 'Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|q_b[35]' + Info: 3: + IC(0.987 ns) + CELL(0.130 ns) = 3.596 ns; Loc. = LCCOMB_X41_Y18_N14; Fanout = 1; COMB Node = 'Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|result_node[35]~67' + Info: 4: + IC(0.000 ns) + CELL(0.091 ns) = 3.687 ns; Loc. = FF_X41_Y18_N15; Fanout = 4; REG Node = 'Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[35]' + Info: Total cell delay = 2.700 ns ( 73.23 % ) + Info: Total interconnect delay = 0.987 ns ( 26.77 % ) +Warning: Can't achieve timing requirement Clock Setup: 'altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0]' along 3741 path(s). See Report window for details. +Info: Slack time is -5.966 ns for clock "CLK33M" between source memory "Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0" and destination register "Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[35]" + Info: + Largest memory to register requirement is -2.279 ns + Info: + Setup relationship between source and destination is 0.196 ns + Info: + Latch edge is 0.278 ns + Info: Clock period of Destination clock "CLK33M" is 30.303 ns with offset of 0.000 ns and duty cycle of 50 + Info: Multicycle Setup factor for Destination register is 1 + Info: - Launch edge is 0.082 ns + Info: Clock period of Source clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2]" is 40.033 ns with offset of -1.864 ns and duty cycle of 50 + Info: Multicycle Setup factor for Source register is 1 + Info: + Largest clock skew is -2.264 ns + Info: + Shortest clock path from clock "CLK33M" to destination register is 6.486 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PIN_AB12; Fanout = 1; CLK Node = 'CLK33M' + Info: 2: + IC(0.000 ns) + CELL(0.918 ns) = 0.918 ns; Loc. = IOIBUF_X36_Y0_N1; Fanout = 8; COMB Node = 'CLK33M~input' + Info: 3: + IC(1.438 ns) + CELL(0.311 ns) = 2.667 ns; Loc. = LCCOMB_X26_Y18_N8; Fanout = 1; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~3' + Info: 4: + IC(0.203 ns) + CELL(0.243 ns) = 3.113 ns; Loc. = LCCOMB_X26_Y18_N4; Fanout = 3; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK' + Info: 5: + IC(1.732 ns) + CELL(0.000 ns) = 4.845 ns; Loc. = CLKCTRL_G6; Fanout = 1105; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~clkctrl' + Info: 6: + IC(1.107 ns) + CELL(0.534 ns) = 6.486 ns; Loc. = FF_X41_Y18_N15; Fanout = 4; REG Node = 'Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[35]' + Info: Total cell delay = 2.006 ns ( 30.93 % ) + Info: Total interconnect delay = 4.480 ns ( 69.07 % ) + Info: - Longest clock path from clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2]" to source memory is 8.750 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_4; Fanout = 1; CLK Node = 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2]' + Info: 2: + IC(1.909 ns) + CELL(0.000 ns) = 1.909 ns; Loc. = CLKCTRL_G18; Fanout = 4; COMB Node = 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2]~clkctrl' + Info: 3: + IC(1.466 ns) + CELL(0.367 ns) = 3.742 ns; Loc. = LCCOMB_X22_Y18_N0; Fanout = 1; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~0' + Info: 4: + IC(0.201 ns) + CELL(0.130 ns) = 4.073 ns; Loc. = LCCOMB_X22_Y18_N24; Fanout = 1; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~1' + Info: 5: + IC(0.650 ns) + CELL(0.367 ns) = 5.090 ns; Loc. = LCCOMB_X26_Y18_N4; Fanout = 3; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK' + Info: 6: + IC(1.732 ns) + CELL(0.000 ns) = 6.822 ns; Loc. = CLKCTRL_G6; Fanout = 1105; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~clkctrl' + Info: 7: + IC(1.112 ns) + CELL(0.816 ns) = 8.750 ns; Loc. = M9K_X40_Y20_N0; Fanout = 36; MEM Node = 'Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0' + Info: Total cell delay = 1.680 ns ( 19.20 % ) + Info: Total interconnect delay = 7.070 ns ( 80.80 % ) + Info: - Micro clock to output delay of source is 0.226 ns + Info: - Micro setup delay of destination is -0.015 ns + Info: - Longest memory to register delay is 3.687 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = M9K_X40_Y20_N0; Fanout = 36; MEM Node = 'Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0' + Info: 2: + IC(0.000 ns) + CELL(2.479 ns) = 2.479 ns; Loc. = M9K_X40_Y20_N0; Fanout = 1; MEM Node = 'Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|q_b[35]' + Info: 3: + IC(0.987 ns) + CELL(0.130 ns) = 3.596 ns; Loc. = LCCOMB_X41_Y18_N14; Fanout = 1; COMB Node = 'Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|result_node[35]~67' + Info: 4: + IC(0.000 ns) + CELL(0.091 ns) = 3.687 ns; Loc. = FF_X41_Y18_N15; Fanout = 4; REG Node = 'Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[35]' + Info: Total cell delay = 2.700 ns ( 73.23 % ) + Info: Total interconnect delay = 0.987 ns ( 26.77 % ) +Warning: Can't achieve timing requirement Clock Setup: 'CLK33M' along 3741 path(s). See Report window for details. +Info: Slack time is -4.261 ns for clock "MAIN_CLK" between source pin "FB_ALE" and destination register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_k47:rdptr_g1p|counter5a7" + Info: + Largest pin to register requirement is 0.057 ns + Info: + Setup relationship between source and destination is 1.094 ns + Info: + Latch edge is 7.575 ns + Info: Clock period of Destination clock "MAIN_CLK" is 30.303 ns with offset of 0.000 ns and duty cycle of 50 + Info: Multicycle Setup factor for Destination register is 1 + Info: - Launch edge is 6.481 ns + Info: Clock period of Source clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1]" is 7.575 ns with offset of -1.094 ns and duty cycle of 50 + Info: Multicycle Setup factor for Source register is 1 + Info: + Largest clock skew is 2.948 ns + Info: + Shortest clock path from clock "MAIN_CLK" to destination register is 2.948 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PIN_G2; Fanout = 1; CLK Node = 'MAIN_CLK' + Info: 2: + IC(0.000 ns) + CELL(0.981 ns) = 0.981 ns; Loc. = IOIBUF_X0_Y21_N1; Fanout = 2380; COMB Node = 'MAIN_CLK~input' + Info: 3: + IC(1.433 ns) + CELL(0.534 ns) = 2.948 ns; Loc. = FF_X22_Y7_N17; Fanout = 5; REG Node = 'FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_k47:rdptr_g1p|counter5a7' + Info: Total cell delay = 1.515 ns ( 51.39 % ) + Info: Total interconnect delay = 1.433 ns ( 48.61 % ) + Info: - Micro setup delay of destination is -0.015 ns + Info: - Max Input delay of pin is 4.0 ns + Info: - Longest pin to register delay is 4.318 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PIN_R7; Fanout = 1; PIN Node = 'FB_ALE' + Info: 2: + IC(0.000 ns) + CELL(0.941 ns) = 0.941 ns; Loc. = IOIBUF_X0_Y2_N1; Fanout = 33; COMB Node = 'FB_ALE~input' + Info: 3: + IC(1.524 ns) + CELL(0.130 ns) = 2.595 ns; Loc. = LCCOMB_X23_Y7_N20; Fanout = 2; COMB Node = 'FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FCF_APH~2' + Info: 4: + IC(0.212 ns) + CELL(0.130 ns) = 2.937 ns; Loc. = LCCOMB_X23_Y7_N18; Fanout = 52; COMB Node = 'FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|valid_rdreq~1' + Info: 5: + IC(0.445 ns) + CELL(0.130 ns) = 3.512 ns; Loc. = LCCOMB_X22_Y7_N0; Fanout = 4; COMB Node = 'FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_k47:rdptr_g1p|_~2' + Info: 6: + IC(0.235 ns) + CELL(0.130 ns) = 3.877 ns; Loc. = LCCOMB_X22_Y7_N28; Fanout = 3; COMB Node = 'FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_k47:rdptr_g1p|_~4' + Info: 7: + IC(0.220 ns) + CELL(0.130 ns) = 4.227 ns; Loc. = LCCOMB_X22_Y7_N16; Fanout = 1; COMB Node = 'FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_k47:rdptr_g1p|counter5a7~0' + Info: 8: + IC(0.000 ns) + CELL(0.091 ns) = 4.318 ns; Loc. = FF_X22_Y7_N17; Fanout = 5; REG Node = 'FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_k47:rdptr_g1p|counter5a7' + Info: Total cell delay = 1.682 ns ( 38.95 % ) + Info: Total interconnect delay = 2.636 ns ( 61.05 % ) +Warning: Can't achieve timing requirement Clock Setup: 'MAIN_CLK' along 27347 path(s). See Report window for details. +Info: Minimum slack time is 825 ps for clock "altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0]" between source register "lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10]" and destination register "lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10]" + Info: + Shortest register to register delay is 0.783 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = FF_X65_Y15_N3; Fanout = 2; REG Node = 'lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10]' + Info: 2: + IC(0.323 ns) + CELL(0.369 ns) = 0.692 ns; Loc. = LCCOMB_X65_Y15_N2; Fanout = 1; COMB Node = 'lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_comb_bita10' + Info: 3: + IC(0.000 ns) + CELL(0.091 ns) = 0.783 ns; Loc. = FF_X65_Y15_N3; Fanout = 2; REG Node = 'lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10]' + Info: Total cell delay = 0.460 ns ( 58.75 % ) + Info: Total interconnect delay = 0.323 ns ( 41.25 % ) + Info: - Smallest register to register requirement is -0.042 ns + Info: + Hold relationship between source and destination is 0.000 ns + Info: + Latch edge is -9.578 ns + Info: Clock period of Destination clock "altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0]" is 1999.998 ns with offset of -9.578 ns and duty cycle of 50 + Info: Multicycle Setup factor for Destination register is 1 + Info: Multicycle Hold factor for Destination register is 1 + Info: - Launch edge is -9.578 ns + Info: Clock period of Source clock "altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0]" is 1999.998 ns with offset of -9.578 ns and duty cycle of 50 + Info: Multicycle Setup factor for Source register is 1 + Info: Multicycle Hold factor for Source register is 1 + Info: + Smallest clock skew is 0.000 ns + Info: + Longest clock path from clock "altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0]" to destination register is 3.531 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_3; Fanout = 1; CLK Node = 'altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0]' + Info: 2: + IC(1.914 ns) + CELL(0.000 ns) = 1.914 ns; Loc. = CLKCTRL_G14; Fanout = 52; COMB Node = 'altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0]~clkctrl' + Info: 3: + IC(1.083 ns) + CELL(0.534 ns) = 3.531 ns; Loc. = FF_X65_Y15_N3; Fanout = 2; REG Node = 'lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10]' + Info: Total cell delay = 0.534 ns ( 15.12 % ) + Info: Total interconnect delay = 2.997 ns ( 84.88 % ) + Info: - Shortest clock path from clock "altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0]" to source register is 3.531 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_3; Fanout = 1; CLK Node = 'altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0]' + Info: 2: + IC(1.914 ns) + CELL(0.000 ns) = 1.914 ns; Loc. = CLKCTRL_G14; Fanout = 52; COMB Node = 'altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0]~clkctrl' + Info: 3: + IC(1.083 ns) + CELL(0.534 ns) = 3.531 ns; Loc. = FF_X65_Y15_N3; Fanout = 2; REG Node = 'lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10]' + Info: Total cell delay = 0.534 ns ( 15.12 % ) + Info: Total interconnect delay = 2.997 ns ( 84.88 % ) + Info: - Micro clock to output delay of source is 0.199 ns + Info: + Micro hold delay of destination is 0.157 ns +Info: Minimum slack time is 564 ps for clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0]" between source register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4]" and destination register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4]" + Info: + Shortest register to register delay is 0.522 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = FF_X1_Y10_N11; Fanout = 2; REG Node = 'FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4]' + Info: 2: + IC(0.301 ns) + CELL(0.130 ns) = 0.431 ns; Loc. = LCCOMB_X1_Y10_N10; Fanout = 1; COMB Node = 'FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4]~14' + Info: 3: + IC(0.000 ns) + CELL(0.091 ns) = 0.522 ns; Loc. = FF_X1_Y10_N11; Fanout = 2; REG Node = 'FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4]' + Info: Total cell delay = 0.221 ns ( 42.34 % ) + Info: Total interconnect delay = 0.301 ns ( 57.66 % ) + Info: - Smallest register to register requirement is -0.042 ns + Info: + Hold relationship between source and destination is 0.000 ns + Info: + Latch edge is -1.864 ns + Info: Clock period of Destination clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0]" is 500.416 ns with offset of -1.864 ns and duty cycle of 50 + Info: Multicycle Setup factor for Destination register is 1 + Info: Multicycle Hold factor for Destination register is 1 + Info: - Launch edge is -1.864 ns + Info: Clock period of Source clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0]" is 500.416 ns with offset of -1.864 ns and duty cycle of 50 + Info: Multicycle Setup factor for Source register is 1 + Info: Multicycle Hold factor for Source register is 1 + Info: + Smallest clock skew is 0.000 ns + Info: + Longest clock path from clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0]" to destination register is 3.522 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_4; Fanout = 1; CLK Node = 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0]' + Info: 2: + IC(1.909 ns) + CELL(0.000 ns) = 1.909 ns; Loc. = CLKCTRL_G16; Fanout = 7; COMB Node = 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0]~clkctrl' + Info: 3: + IC(1.079 ns) + CELL(0.534 ns) = 3.522 ns; Loc. = FF_X1_Y10_N11; Fanout = 2; REG Node = 'FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4]' + Info: Total cell delay = 0.534 ns ( 15.16 % ) + Info: Total interconnect delay = 2.988 ns ( 84.84 % ) + Info: - Shortest clock path from clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0]" to source register is 3.522 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_4; Fanout = 1; CLK Node = 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0]' + Info: 2: + IC(1.909 ns) + CELL(0.000 ns) = 1.909 ns; Loc. = CLKCTRL_G16; Fanout = 7; COMB Node = 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0]~clkctrl' + Info: 3: + IC(1.079 ns) + CELL(0.534 ns) = 3.522 ns; Loc. = FF_X1_Y10_N11; Fanout = 2; REG Node = 'FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4]' + Info: Total cell delay = 0.534 ns ( 15.16 % ) + Info: Total interconnect delay = 2.988 ns ( 84.84 % ) + Info: - Micro clock to output delay of source is 0.199 ns + Info: + Micro hold delay of destination is 0.157 ns +Info: Minimum slack time is 502 ps for clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1]" between source register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|WG~_Duplicate_1" and destination register "FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|WG~_Duplicate_1" + Info: + Shortest register to register delay is 0.460 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = FF_X34_Y28_N5; Fanout = 1; REG Node = 'FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|WG~_Duplicate_1' + Info: 2: + IC(0.000 ns) + CELL(0.369 ns) = 0.369 ns; Loc. = LCCOMB_X34_Y28_N4; Fanout = 2; COMB Node = 'FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|Selector77~1' + Info: 3: + IC(0.000 ns) + CELL(0.091 ns) = 0.460 ns; Loc. = FF_X34_Y28_N5; Fanout = 1; REG Node = 'FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|WG~_Duplicate_1' + Info: Total cell delay = 0.460 ns ( 100.00 % ) + Info: - Smallest register to register requirement is -0.042 ns + Info: + Hold relationship between source and destination is 0.000 ns + Info: + Latch edge is -1.864 ns + Info: Clock period of Destination clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1]" is 62.552 ns with offset of -1.864 ns and duty cycle of 50 + Info: Multicycle Setup factor for Destination register is 1 + Info: Multicycle Hold factor for Destination register is 1 + Info: - Launch edge is -1.864 ns + Info: Clock period of Source clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1]" is 62.552 ns with offset of -1.864 ns and duty cycle of 50 + Info: Multicycle Setup factor for Source register is 1 + Info: Multicycle Hold factor for Source register is 1 + Info: + Smallest clock skew is 0.000 ns + Info: + Longest clock path from clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1]" to destination register is 3.526 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_4; Fanout = 1; CLK Node = 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1]' + Info: 2: + IC(1.909 ns) + CELL(0.000 ns) = 1.909 ns; Loc. = CLKCTRL_G17; Fanout = 595; COMB Node = 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1]~clkctrl' + Info: 3: + IC(1.083 ns) + CELL(0.534 ns) = 3.526 ns; Loc. = FF_X34_Y28_N5; Fanout = 1; REG Node = 'FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|WG~_Duplicate_1' + Info: Total cell delay = 0.534 ns ( 15.14 % ) + Info: Total interconnect delay = 2.992 ns ( 84.86 % ) + Info: - Shortest clock path from clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1]" to source register is 3.526 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_4; Fanout = 1; CLK Node = 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1]' + Info: 2: + IC(1.909 ns) + CELL(0.000 ns) = 1.909 ns; Loc. = CLKCTRL_G17; Fanout = 595; COMB Node = 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1]~clkctrl' + Info: 3: + IC(1.083 ns) + CELL(0.534 ns) = 3.526 ns; Loc. = FF_X34_Y28_N5; Fanout = 1; REG Node = 'FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|WG~_Duplicate_1' + Info: Total cell delay = 0.534 ns ( 15.14 % ) + Info: Total interconnect delay = 2.992 ns ( 84.86 % ) + Info: - Micro clock to output delay of source is 0.199 ns + Info: + Micro hold delay of destination is 0.157 ns +Info: Minimum slack time is -454 ps for clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2]" between source register "Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6]" and destination register "Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6]" + Info: + Shortest register to register delay is 0.460 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = FF_X37_Y20_N13; Fanout = 1; REG Node = 'Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6]' + Info: 2: + IC(0.000 ns) + CELL(0.369 ns) = 0.369 ns; Loc. = LCCOMB_X37_Y20_N12; Fanout = 5; COMB Node = 'Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|ram_read_address[6]~6' + Info: 3: + IC(0.000 ns) + CELL(0.091 ns) = 0.460 ns; Loc. = FF_X37_Y20_N13; Fanout = 1; REG Node = 'Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6]' + Info: Total cell delay = 0.460 ns ( 100.00 % ) + Info: - Smallest register to register requirement is 0.914 ns + Info: + Hold relationship between source and destination is 0.000 ns + Info: + Latch edge is -1.864 ns + Info: Clock period of Destination clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2]" is 40.033 ns with offset of -1.864 ns and duty cycle of 50 + Info: Multicycle Setup factor for Destination register is 1 + Info: Multicycle Hold factor for Destination register is 1 + Info: - Launch edge is -1.864 ns + Info: Clock period of Source clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2]" is 40.033 ns with offset of -1.864 ns and duty cycle of 50 + Info: Multicycle Setup factor for Source register is 1 + Info: Multicycle Hold factor for Source register is 1 + Info: + Smallest clock skew is 0.956 ns + Info: + Longest clock path from clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2]" to destination register is 8.469 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_4; Fanout = 1; CLK Node = 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2]' + Info: 2: + IC(1.909 ns) + CELL(0.000 ns) = 1.909 ns; Loc. = CLKCTRL_G18; Fanout = 4; COMB Node = 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2]~clkctrl' + Info: 3: + IC(1.466 ns) + CELL(0.367 ns) = 3.742 ns; Loc. = LCCOMB_X22_Y18_N0; Fanout = 1; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~0' + Info: 4: + IC(0.201 ns) + CELL(0.130 ns) = 4.073 ns; Loc. = LCCOMB_X22_Y18_N24; Fanout = 1; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~1' + Info: 5: + IC(0.650 ns) + CELL(0.367 ns) = 5.090 ns; Loc. = LCCOMB_X26_Y18_N4; Fanout = 3; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK' + Info: 6: + IC(1.732 ns) + CELL(0.000 ns) = 6.822 ns; Loc. = CLKCTRL_G6; Fanout = 1105; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~clkctrl' + Info: 7: + IC(1.113 ns) + CELL(0.534 ns) = 8.469 ns; Loc. = FF_X37_Y20_N13; Fanout = 1; REG Node = 'Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6]' + Info: Total cell delay = 1.398 ns ( 16.51 % ) + Info: Total interconnect delay = 7.071 ns ( 83.49 % ) + Info: - Shortest clock path from clock "altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2]" to source register is 7.513 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_4; Fanout = 1; CLK Node = 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2]' + Info: 2: + IC(1.909 ns) + CELL(0.000 ns) = 1.909 ns; Loc. = CLKCTRL_G18; Fanout = 4; COMB Node = 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2]~clkctrl' + Info: 3: + IC(1.472 ns) + CELL(0.307 ns) = 3.688 ns; Loc. = LCCOMB_X26_Y18_N8; Fanout = 1; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~3' + Info: 4: + IC(0.203 ns) + CELL(0.243 ns) = 4.134 ns; Loc. = LCCOMB_X26_Y18_N4; Fanout = 3; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK' + Info: 5: + IC(1.732 ns) + CELL(0.000 ns) = 5.866 ns; Loc. = CLKCTRL_G6; Fanout = 1105; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~clkctrl' + Info: 6: + IC(1.113 ns) + CELL(0.534 ns) = 7.513 ns; Loc. = FF_X37_Y20_N13; Fanout = 1; REG Node = 'Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6]' + Info: Total cell delay = 1.084 ns ( 14.43 % ) + Info: Total interconnect delay = 6.429 ns ( 85.57 % ) + Info: - Micro clock to output delay of source is 0.199 ns + Info: + Micro hold delay of destination is 0.157 ns +Warning: Can't achieve minimum setup and hold requirement altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] along 26 path(s). See Report window for details. +Info: Minimum slack time is 502 ps for clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0]" between source register "Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[6]" and destination register "Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[6]" + Info: + Shortest register to register delay is 0.460 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = FF_X45_Y15_N13; Fanout = 14; REG Node = 'Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[6]' + Info: 2: + IC(0.000 ns) + CELL(0.369 ns) = 0.369 ns; Loc. = LCCOMB_X45_Y15_N12; Fanout = 1; COMB Node = 'Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[6]~3' + Info: 3: + IC(0.000 ns) + CELL(0.091 ns) = 0.460 ns; Loc. = FF_X45_Y15_N13; Fanout = 14; REG Node = 'Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[6]' + Info: Total cell delay = 0.460 ns ( 100.00 % ) + Info: - Smallest register to register requirement is -0.042 ns + Info: + Hold relationship between source and destination is 0.000 ns + Info: + Latch edge is -3.620 ns + Info: Clock period of Destination clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0]" is 7.575 ns with offset of -3.620 ns and duty cycle of 50 + Info: Multicycle Setup factor for Destination register is 1 + Info: Multicycle Hold factor for Destination register is 1 + Info: - Launch edge is -3.620 ns + Info: Clock period of Source clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0]" is 7.575 ns with offset of -3.620 ns and duty cycle of 50 + Info: Multicycle Setup factor for Source register is 1 + Info: Multicycle Hold factor for Source register is 1 + Info: + Smallest clock skew is 0.000 ns + Info: + Longest clock path from clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0]" to destination register is 3.559 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_1; Fanout = 1; CLK Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0]' + Info: 2: + IC(1.901 ns) + CELL(0.000 ns) = 1.901 ns; Loc. = CLKCTRL_G3; Fanout = 707; COMB Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0]~clkctrl' + Info: 3: + IC(1.124 ns) + CELL(0.534 ns) = 3.559 ns; Loc. = FF_X45_Y15_N13; Fanout = 14; REG Node = 'Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[6]' + Info: Total cell delay = 0.534 ns ( 15.00 % ) + Info: Total interconnect delay = 3.025 ns ( 85.00 % ) + Info: - Shortest clock path from clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0]" to source register is 3.559 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_1; Fanout = 1; CLK Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0]' + Info: 2: + IC(1.901 ns) + CELL(0.000 ns) = 1.901 ns; Loc. = CLKCTRL_G3; Fanout = 707; COMB Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0]~clkctrl' + Info: 3: + IC(1.124 ns) + CELL(0.534 ns) = 3.559 ns; Loc. = FF_X45_Y15_N13; Fanout = 14; REG Node = 'Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[6]' + Info: Total cell delay = 0.534 ns ( 15.00 % ) + Info: Total interconnect delay = 3.025 ns ( 85.00 % ) + Info: - Micro clock to output delay of source is 0.199 ns + Info: + Micro hold delay of destination is 0.157 ns +Info: Minimum slack time is 4.336 ns for clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1]" between source register "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[2]" and destination register "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[2]" + Info: + Shortest register to register delay is 0.507 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = FF_X66_Y14_N29; Fanout = 1; REG Node = 'Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[2]' + Info: 2: + IC(0.286 ns) + CELL(0.130 ns) = 0.416 ns; Loc. = LCCOMB_X66_Y14_N30; Fanout = 1; COMB Node = 'Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[2]~feeder' + Info: 3: + IC(0.000 ns) + CELL(0.091 ns) = 0.507 ns; Loc. = FF_X66_Y14_N31; Fanout = 2; REG Node = 'Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[2]' + Info: Total cell delay = 0.221 ns ( 43.59 % ) + Info: Total interconnect delay = 0.286 ns ( 56.41 % ) + Info: - Smallest register to register requirement is -3.829 ns + Info: + Hold relationship between source and destination is -3.787 ns + Info: + Latch edge is -1.094 ns + Info: Clock period of Destination clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1]" is 7.575 ns with offset of -1.094 ns and duty cycle of 50 + Info: Multicycle Setup factor for Destination register is 1 + Info: Multicycle Hold factor for Destination register is 1 + Info: - Launch edge is 2.693 ns + Info: Clock period of Source clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1]" is 7.575 ns with inverted offset of 2.693 ns and duty cycle of 50 + Info: Multicycle Setup factor for Source register is 1 + Info: Multicycle Hold factor for Source register is 1 + Info: + Smallest clock skew is 0.000 ns + Info: + Longest clock path from clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1]" to destination register is 3.538 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_1; Fanout = 1; CLK Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1]' + Info: 2: + IC(1.901 ns) + CELL(0.000 ns) = 1.901 ns; Loc. = CLKCTRL_G1; Fanout = 96; COMB Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1]~clkctrl' + Info: 3: + IC(1.103 ns) + CELL(0.534 ns) = 3.538 ns; Loc. = FF_X66_Y14_N31; Fanout = 2; REG Node = 'Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[2]' + Info: Total cell delay = 0.534 ns ( 15.09 % ) + Info: Total interconnect delay = 3.004 ns ( 84.91 % ) + Info: - Shortest clock path from clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1]" to source register is 3.538 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_1; Fanout = 1; CLK Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1]' + Info: 2: + IC(1.901 ns) + CELL(0.000 ns) = 1.901 ns; Loc. = CLKCTRL_G1; Fanout = 96; COMB Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1]~clkctrl' + Info: 3: + IC(1.103 ns) + CELL(0.534 ns) = 3.538 ns; Loc. = FF_X66_Y14_N29; Fanout = 1; REG Node = 'Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[2]' + Info: Total cell delay = 0.534 ns ( 15.09 % ) + Info: Total interconnect delay = 3.004 ns ( 84.91 % ) + Info: - Micro clock to output delay of source is 0.199 ns + Info: + Micro hold delay of destination is 0.157 ns +Info: Minimum slack time is 1.825 ns for clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2]" between source register "Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_VDMP[6]" and destination register "Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[6]" + Info: + Shortest register to register delay is 0.508 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = FF_X25_Y12_N19; Fanout = 1; REG Node = 'Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_VDMP[6]' + Info: 2: + IC(0.287 ns) + CELL(0.130 ns) = 0.417 ns; Loc. = LCCOMB_X25_Y12_N6; Fanout = 1; COMB Node = 'Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[6]~feeder' + Info: 3: + IC(0.000 ns) + CELL(0.091 ns) = 0.508 ns; Loc. = FF_X25_Y12_N7; Fanout = 1; REG Node = 'Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[6]' + Info: Total cell delay = 0.221 ns ( 43.50 % ) + Info: Total interconnect delay = 0.287 ns ( 56.50 % ) + Info: - Smallest register to register requirement is -1.317 ns + Info: + Hold relationship between source and destination is -1.262 ns + Info: + Latch edge is 2.693 ns + Info: Clock period of Destination clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2]" is 7.575 ns with offset of 2.693 ns and duty cycle of 50 + Info: Multicycle Setup factor for Destination register is 1 + Info: Multicycle Hold factor for Destination register is 1 + Info: - Launch edge is 3.955 ns + Info: Clock period of Source clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0]" is 7.575 ns with offset of -3.620 ns and duty cycle of 50 + Info: Multicycle Setup factor for Source register is 1 + Info: Multicycle Hold factor for Source register is 1 + Info: + Smallest clock skew is -0.013 ns + Info: + Longest clock path from clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2]" to destination register is 3.530 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_1; Fanout = 1; CLK Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2]' + Info: 2: + IC(1.901 ns) + CELL(0.000 ns) = 1.901 ns; Loc. = CLKCTRL_G0; Fanout = 5; COMB Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2]~clkctrl' + Info: 3: + IC(1.095 ns) + CELL(0.534 ns) = 3.530 ns; Loc. = FF_X25_Y12_N7; Fanout = 1; REG Node = 'Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[6]' + Info: Total cell delay = 0.534 ns ( 15.13 % ) + Info: Total interconnect delay = 2.996 ns ( 84.87 % ) + Info: - Shortest clock path from clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0]" to source register is 3.543 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_1; Fanout = 1; CLK Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0]' + Info: 2: + IC(1.901 ns) + CELL(0.000 ns) = 1.901 ns; Loc. = CLKCTRL_G3; Fanout = 707; COMB Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0]~clkctrl' + Info: 3: + IC(1.108 ns) + CELL(0.534 ns) = 3.543 ns; Loc. = FF_X25_Y12_N19; Fanout = 1; REG Node = 'Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_VDMP[6]' + Info: Total cell delay = 0.534 ns ( 15.07 % ) + Info: Total interconnect delay = 3.009 ns ( 84.93 % ) + Info: - Micro clock to output delay of source is 0.199 ns + Info: + Micro hold delay of destination is 0.157 ns +Info: Minimum slack time is 3.263 ns for clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3]" between source register "Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[29]" and destination register "Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[29]~DFFLO" + Info: + Shortest register to register delay is 1.570 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = FF_X34_Y2_N1; Fanout = 1; REG Node = 'Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[29]' + Info: 2: + IC(0.000 ns) + CELL(0.369 ns) = 0.369 ns; Loc. = LCCOMB_X34_Y2_N0; Fanout = 1; COMB Node = 'Video:Fredi_Aschwanden|lpm_mux5:inst22|lpm_mux:lpm_mux_component|mux_58e:auto_generated|result_node[29]~4' + Info: 3: + IC(0.737 ns) + CELL(0.464 ns) = 1.570 ns; Loc. = DDIOOUTCELL_X38_Y0_N25; Fanout = 1; REG Node = 'Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[29]~DFFLO' + Info: Total cell delay = 0.833 ns ( 53.06 % ) + Info: Total interconnect delay = 0.737 ns ( 46.94 % ) + Info: - Smallest register to register requirement is -1.693 ns + Info: + Hold relationship between source and destination is -1.576 ns + Info: + Latch edge is 1.115 ns + Info: Clock period of Destination clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3]" is 7.575 ns with offset of 1.115 ns and duty cycle of 50 + Info: Multicycle Setup factor for Destination register is 1 + Info: Multicycle Hold factor for Destination register is 1 + Info: - Launch edge is 2.691 ns + Info: Clock period of Source clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4]" is 15.151 ns with offset of -4.884 ns and duty cycle of 50 + Info: Multicycle Setup factor for Source register is 1 + Info: Multicycle Hold factor for Source register is 1 + Info: + Smallest clock skew is -0.019 ns + Info: + Longest clock path from clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3]" to destination register is 3.543 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_1; Fanout = 1; CLK Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3]' + Info: 2: + IC(1.901 ns) + CELL(0.000 ns) = 1.901 ns; Loc. = CLKCTRL_G2; Fanout = 113; COMB Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3]~clkctrl' + Info: 3: + IC(1.154 ns) + CELL(0.488 ns) = 3.543 ns; Loc. = DDIOOUTCELL_X38_Y0_N25; Fanout = 1; REG Node = 'Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[29]~DFFLO' + Info: Total cell delay = 0.488 ns ( 13.77 % ) + Info: Total interconnect delay = 3.055 ns ( 86.23 % ) + Info: - Shortest clock path from clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4]" to source register is 3.562 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_1; Fanout = 1; CLK Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4]' + Info: 2: + IC(1.901 ns) + CELL(0.000 ns) = 1.901 ns; Loc. = CLKCTRL_G4; Fanout = 189; COMB Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4]~clkctrl' + Info: 3: + IC(1.127 ns) + CELL(0.534 ns) = 3.562 ns; Loc. = FF_X34_Y2_N1; Fanout = 1; REG Node = 'Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[29]' + Info: Total cell delay = 0.534 ns ( 14.99 % ) + Info: Total interconnect delay = 3.028 ns ( 85.01 % ) + Info: - Micro clock to output delay of source is 0.199 ns + Info: + Micro hold delay of destination is 0.101 ns +Info: Minimum slack time is 2.664 ns for clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4]" between source pin "FB_ALE" and destination register "lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[2]" + Info: + Shortest pin to register delay is 2.216 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PIN_R7; Fanout = 1; PIN Node = 'FB_ALE' + Info: 2: + IC(0.000 ns) + CELL(0.941 ns) = 0.941 ns; Loc. = IOIBUF_X0_Y2_N1; Fanout = 33; COMB Node = 'FB_ALE~input' + Info: 3: + IC(0.929 ns) + CELL(0.346 ns) = 2.216 ns; Loc. = FF_X7_Y0_N31; Fanout = 120; REG Node = 'lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[2]' + Info: Total cell delay = 1.287 ns ( 58.08 % ) + Info: Total interconnect delay = 0.929 ns ( 41.92 % ) + Info: - Smallest pin to register requirement is -0.448 ns + Info: + Hold relationship between source and destination is 0.000 ns + Info: + Latch edge is -4.884 ns + Info: Clock period of Destination clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4]" is 15.151 ns with offset of -4.884 ns and duty cycle of 50 + Info: Multicycle Setup factor for Destination register is 1 + Info: Multicycle Hold factor for Destination register is 1 + Info: - Launch edge is -4.884 ns + Info: Clock period of Source clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4]" is 15.151 ns with offset of -4.884 ns and duty cycle of 50 + Info: Multicycle Setup factor for Source register is 1 + Info: Multicycle Hold factor for Source register is 1 + Info: + Smallest clock skew is 3.500 ns + Info: + Longest clock path from clock "altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4]" to destination register is 3.500 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_1; Fanout = 1; CLK Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4]' + Info: 2: + IC(1.901 ns) + CELL(0.000 ns) = 1.901 ns; Loc. = CLKCTRL_G4; Fanout = 189; COMB Node = 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4]~clkctrl' + Info: 3: + IC(1.151 ns) + CELL(0.448 ns) = 3.500 ns; Loc. = FF_X7_Y0_N31; Fanout = 120; REG Node = 'lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[2]' + Info: Total cell delay = 0.448 ns ( 12.80 % ) + Info: Total interconnect delay = 3.052 ns ( 87.20 % ) + Info: + Micro hold delay of destination is 0.052 ns + Info: - Min Input delay of pin is 4.0 ns +Info: Minimum slack time is 502 ps for clock "altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0]" between source register "Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6]" and destination register "Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6]" + Info: + Shortest register to register delay is 0.460 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = FF_X37_Y20_N13; Fanout = 1; REG Node = 'Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6]' + Info: 2: + IC(0.000 ns) + CELL(0.369 ns) = 0.369 ns; Loc. = LCCOMB_X37_Y20_N12; Fanout = 5; COMB Node = 'Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|ram_read_address[6]~6' + Info: 3: + IC(0.000 ns) + CELL(0.091 ns) = 0.460 ns; Loc. = FF_X37_Y20_N13; Fanout = 1; REG Node = 'Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6]' + Info: Total cell delay = 0.460 ns ( 100.00 % ) + Info: - Smallest register to register requirement is -0.042 ns + Info: + Hold relationship between source and destination is 0.000 ns + Info: + Latch edge is -2.843 ns + Info: Clock period of Destination clock "altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0]" is 10.425 ns with offset of -2.843 ns and duty cycle of 50 + Info: Multicycle Setup factor for Destination register is 1 + Info: Multicycle Hold factor for Destination register is 1 + Info: - Launch edge is -2.843 ns + Info: Clock period of Source clock "altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0]" is 10.425 ns with offset of -2.843 ns and duty cycle of 50 + Info: Multicycle Setup factor for Source register is 1 + Info: Multicycle Hold factor for Source register is 1 + Info: + Smallest clock skew is 0.000 ns + Info: + Longest clock path from clock "altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0]" to destination register is 8.088 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_2; Fanout = 1; CLK Node = 'altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0]' + Info: 2: + IC(1.881 ns) + CELL(0.000 ns) = 1.881 ns; Loc. = CLKCTRL_G8; Fanout = 1; COMB Node = 'altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0]~clkctrl' + Info: 3: + IC(1.469 ns) + CELL(0.342 ns) = 3.692 ns; Loc. = LCCOMB_X22_Y18_N24; Fanout = 1; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~1' + Info: 4: + IC(0.650 ns) + CELL(0.367 ns) = 4.709 ns; Loc. = LCCOMB_X26_Y18_N4; Fanout = 3; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK' + Info: 5: + IC(1.732 ns) + CELL(0.000 ns) = 6.441 ns; Loc. = CLKCTRL_G6; Fanout = 1105; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~clkctrl' + Info: 6: + IC(1.113 ns) + CELL(0.534 ns) = 8.088 ns; Loc. = FF_X37_Y20_N13; Fanout = 1; REG Node = 'Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6]' + Info: Total cell delay = 1.243 ns ( 15.37 % ) + Info: Total interconnect delay = 6.845 ns ( 84.63 % ) + Info: - Shortest clock path from clock "altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0]" to source register is 8.088 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PLL_2; Fanout = 1; CLK Node = 'altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0]' + Info: 2: + IC(1.881 ns) + CELL(0.000 ns) = 1.881 ns; Loc. = CLKCTRL_G8; Fanout = 1; COMB Node = 'altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0]~clkctrl' + Info: 3: + IC(1.469 ns) + CELL(0.342 ns) = 3.692 ns; Loc. = LCCOMB_X22_Y18_N24; Fanout = 1; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~1' + Info: 4: + IC(0.650 ns) + CELL(0.367 ns) = 4.709 ns; Loc. = LCCOMB_X26_Y18_N4; Fanout = 3; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK' + Info: 5: + IC(1.732 ns) + CELL(0.000 ns) = 6.441 ns; Loc. = CLKCTRL_G6; Fanout = 1105; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~clkctrl' + Info: 6: + IC(1.113 ns) + CELL(0.534 ns) = 8.088 ns; Loc. = FF_X37_Y20_N13; Fanout = 1; REG Node = 'Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6]' + Info: Total cell delay = 1.243 ns ( 15.37 % ) + Info: Total interconnect delay = 6.845 ns ( 84.63 % ) + Info: - Micro clock to output delay of source is 0.199 ns + Info: + Micro hold delay of destination is 0.157 ns +Info: Minimum slack time is -687 ps for clock "CLK33M" between source register "Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6]" and destination register "Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6]" + Info: + Shortest register to register delay is 0.460 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = FF_X37_Y20_N13; Fanout = 1; REG Node = 'Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6]' + Info: 2: + IC(0.000 ns) + CELL(0.369 ns) = 0.369 ns; Loc. = LCCOMB_X37_Y20_N12; Fanout = 5; COMB Node = 'Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|ram_read_address[6]~6' + Info: 3: + IC(0.000 ns) + CELL(0.091 ns) = 0.460 ns; Loc. = FF_X37_Y20_N13; Fanout = 1; REG Node = 'Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6]' + Info: Total cell delay = 0.460 ns ( 100.00 % ) + Info: - Smallest register to register requirement is 1.147 ns + Info: + Hold relationship between source and destination is 0.000 ns + Info: + Latch edge is 0.000 ns + Info: Clock period of Destination clock "CLK33M" is 30.303 ns with offset of 0.000 ns and duty cycle of 50 + Info: Multicycle Setup factor for Destination register is 1 + Info: Multicycle Hold factor for Destination register is 1 + Info: - Launch edge is 0.000 ns + Info: Clock period of Source clock "CLK33M" is 30.303 ns with offset of 0.000 ns and duty cycle of 50 + Info: Multicycle Setup factor for Source register is 1 + Info: Multicycle Hold factor for Source register is 1 + Info: + Smallest clock skew is 1.189 ns + Info: + Longest clock path from clock "CLK33M" to destination register is 7.681 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PIN_AB12; Fanout = 1; CLK Node = 'CLK33M' + Info: 2: + IC(0.000 ns) + CELL(0.918 ns) = 0.918 ns; Loc. = IOIBUF_X36_Y0_N1; Fanout = 8; COMB Node = 'CLK33M~input' + Info: 3: + IC(1.161 ns) + CELL(0.733 ns) = 2.812 ns; Loc. = FF_X33_Y18_N25; Fanout = 2; REG Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|CLK17M' + Info: 4: + IC(0.852 ns) + CELL(0.311 ns) = 3.975 ns; Loc. = LCCOMB_X26_Y18_N0; Fanout = 1; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~4' + Info: 5: + IC(0.197 ns) + CELL(0.130 ns) = 4.302 ns; Loc. = LCCOMB_X26_Y18_N4; Fanout = 3; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK' + Info: 6: + IC(1.732 ns) + CELL(0.000 ns) = 6.034 ns; Loc. = CLKCTRL_G6; Fanout = 1105; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~clkctrl' + Info: 7: + IC(1.113 ns) + CELL(0.534 ns) = 7.681 ns; Loc. = FF_X37_Y20_N13; Fanout = 1; REG Node = 'Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6]' + Info: Total cell delay = 2.626 ns ( 34.19 % ) + Info: Total interconnect delay = 5.055 ns ( 65.81 % ) + Info: - Shortest clock path from clock "CLK33M" to source register is 6.492 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PIN_AB12; Fanout = 1; CLK Node = 'CLK33M' + Info: 2: + IC(0.000 ns) + CELL(0.918 ns) = 0.918 ns; Loc. = IOIBUF_X36_Y0_N1; Fanout = 8; COMB Node = 'CLK33M~input' + Info: 3: + IC(1.438 ns) + CELL(0.311 ns) = 2.667 ns; Loc. = LCCOMB_X26_Y18_N8; Fanout = 1; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~3' + Info: 4: + IC(0.203 ns) + CELL(0.243 ns) = 3.113 ns; Loc. = LCCOMB_X26_Y18_N4; Fanout = 3; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK' + Info: 5: + IC(1.732 ns) + CELL(0.000 ns) = 4.845 ns; Loc. = CLKCTRL_G6; Fanout = 1105; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~clkctrl' + Info: 6: + IC(1.113 ns) + CELL(0.534 ns) = 6.492 ns; Loc. = FF_X37_Y20_N13; Fanout = 1; REG Node = 'Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6]' + Info: Total cell delay = 2.006 ns ( 30.90 % ) + Info: Total interconnect delay = 4.486 ns ( 69.10 % ) + Info: - Micro clock to output delay of source is 0.199 ns + Info: + Micro hold delay of destination is 0.157 ns +Warning: Can't achieve minimum setup and hold requirement CLK33M along 26 path(s). See Report window for details. +Info: Minimum slack time is -3.786 ns for clock "MAIN_CLK" between source register "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VCT[6]" and destination register "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VERZ[1][0]" + Info: + Shortest register to register delay is 1.930 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = FF_X26_Y18_N19; Fanout = 2; REG Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VCT[6]' + Info: 2: + IC(1.597 ns) + CELL(0.242 ns) = 1.839 ns; Loc. = LCCOMB_X34_Y15_N4; Fanout = 1; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VERZ[1][0]~1' + Info: 3: + IC(0.000 ns) + CELL(0.091 ns) = 1.930 ns; Loc. = FF_X34_Y15_N5; Fanout = 1; REG Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VERZ[1][0]' + Info: Total cell delay = 0.333 ns ( 17.25 % ) + Info: Total interconnect delay = 1.597 ns ( 82.75 % ) + Info: - Smallest register to register requirement is 5.716 ns + Info: + Hold relationship between source and destination is 0.000 ns + Info: + Latch edge is 0.000 ns + Info: Clock period of Destination clock "MAIN_CLK" is 30.303 ns with offset of 0.000 ns and duty cycle of 50 + Info: Multicycle Setup factor for Destination register is 1 + Info: Multicycle Hold factor for Destination register is 1 + Info: - Launch edge is 0.000 ns + Info: Clock period of Source clock "MAIN_CLK" is 30.303 ns with offset of 0.000 ns and duty cycle of 50 + Info: Multicycle Setup factor for Source register is 1 + Info: Multicycle Hold factor for Source register is 1 + Info: + Smallest clock skew is 5.758 ns + Info: + Longest clock path from clock "MAIN_CLK" to destination register is 8.630 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PIN_G2; Fanout = 1; CLK Node = 'MAIN_CLK' + Info: 2: + IC(0.000 ns) + CELL(0.981 ns) = 0.981 ns; Loc. = IOIBUF_X0_Y21_N1; Fanout = 2380; COMB Node = 'MAIN_CLK~input' + Info: 3: + IC(1.360 ns) + CELL(0.733 ns) = 3.074 ns; Loc. = FF_X28_Y18_N31; Fanout = 208; REG Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[0]' + Info: 4: + IC(0.922 ns) + CELL(0.243 ns) = 4.239 ns; Loc. = LCCOMB_X22_Y18_N24; Fanout = 1; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~1' + Info: 5: + IC(0.650 ns) + CELL(0.367 ns) = 5.256 ns; Loc. = LCCOMB_X26_Y18_N4; Fanout = 3; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK' + Info: 6: + IC(1.732 ns) + CELL(0.000 ns) = 6.988 ns; Loc. = CLKCTRL_G6; Fanout = 1105; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~clkctrl' + Info: 7: + IC(1.108 ns) + CELL(0.534 ns) = 8.630 ns; Loc. = FF_X34_Y15_N5; Fanout = 1; REG Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VERZ[1][0]' + Info: Total cell delay = 2.858 ns ( 33.12 % ) + Info: Total interconnect delay = 5.772 ns ( 66.88 % ) + Info: - Shortest clock path from clock "MAIN_CLK" to source register is 2.872 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PIN_G2; Fanout = 1; CLK Node = 'MAIN_CLK' + Info: 2: + IC(0.000 ns) + CELL(0.981 ns) = 0.981 ns; Loc. = IOIBUF_X0_Y21_N1; Fanout = 2380; COMB Node = 'MAIN_CLK~input' + Info: 3: + IC(1.357 ns) + CELL(0.534 ns) = 2.872 ns; Loc. = FF_X26_Y18_N19; Fanout = 2; REG Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VCT[6]' + Info: Total cell delay = 1.515 ns ( 52.75 % ) + Info: Total interconnect delay = 1.357 ns ( 47.25 % ) + Info: - Micro clock to output delay of source is 0.199 ns + Info: + Micro hold delay of destination is 0.157 ns +Warning: Can't achieve minimum setup and hold requirement MAIN_CLK along 108 path(s). See Report window for details. +Warning: Can't achieve timing requirement tsu along 6867 path(s). See Report window for details. +Info: Slack time is -4.528 ns for clock "MAIN_CLK" between source clock "MAIN_CLK" and destination register "altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|idle_state" + Info: + tsu requirement for source pin and destination register is 1.000 ns + Info: - tsu from clock to input pin is 5.528 ns + Info: + Longest clock to register delay is 8.706 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PIN_G2; Fanout = 1; CLK Node = 'MAIN_CLK' + Info: 2: + IC(0.000 ns) + CELL(0.981 ns) = 0.981 ns; Loc. = IOIBUF_X0_Y21_N1; Fanout = 2380; COMB Node = 'MAIN_CLK~input' + Info: 3: + IC(4.109 ns) + CELL(0.869 ns) = 5.959 ns; Loc. = PLL_2; Fanout = 4; COMB Node = 'altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|scandone' + Info: 4: + IC(1.722 ns) + CELL(0.130 ns) = 7.811 ns; Loc. = LCCOMB_X21_Y26_N18; Fanout = 1; COMB Node = 'altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|idle_state~0' + Info: 5: + IC(0.198 ns) + CELL(0.130 ns) = 8.139 ns; Loc. = LCCOMB_X21_Y26_N28; Fanout = 1; COMB Node = 'altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|idle_state~1' + Info: 6: + IC(0.346 ns) + CELL(0.130 ns) = 8.615 ns; Loc. = LCCOMB_X22_Y26_N16; Fanout = 1; COMB Node = 'altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|idle_state~2' + Info: 7: + IC(0.000 ns) + CELL(0.091 ns) = 8.706 ns; Loc. = FF_X22_Y26_N17; Fanout = 8; REG Node = 'altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|idle_state' + Info: Total cell delay = 2.331 ns ( 26.77 % ) + Info: Total interconnect delay = 6.375 ns ( 73.23 % ) + Info: + Micro setup delay of destination is -0.015 ns + Info: - Shortest clock path from clock "MAIN_CLK" to destination register is 3.163 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PIN_G2; Fanout = 1; CLK Node = 'MAIN_CLK' + Info: 2: + IC(0.000 ns) + CELL(0.981 ns) = 0.981 ns; Loc. = IOIBUF_X0_Y21_N1; Fanout = 2380; COMB Node = 'MAIN_CLK~input' + Info: 3: + IC(1.648 ns) + CELL(0.534 ns) = 3.163 ns; Loc. = FF_X22_Y26_N17; Fanout = 8; REG Node = 'altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|idle_state' + Info: Total cell delay = 1.515 ns ( 47.90 % ) + Info: Total interconnect delay = 1.648 ns ( 52.10 % ) +Warning: Can't achieve timing requirement tco along 4976 path(s). See Report window for details. +Info: Slack time is -14.84 ns for clock "MAIN_CLK" between source register "interrupt_handler:nobody|INT_LATCH[8]" and destination pin "nIRQ[5]" + Info: + tco requirement for source register and destination pin is 1.000 ns + Info: - tco from clock to output pin is 15.840 ns + Info: + Longest clock path from clock "MAIN_CLK" to source register is 9.460 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PIN_G2; Fanout = 1; CLK Node = 'MAIN_CLK' + Info: 2: + IC(0.000 ns) + CELL(0.981 ns) = 0.981 ns; Loc. = IOIBUF_X0_Y21_N1; Fanout = 2380; COMB Node = 'MAIN_CLK~input' + Info: 3: + IC(1.360 ns) + CELL(0.733 ns) = 3.074 ns; Loc. = FF_X28_Y18_N31; Fanout = 208; REG Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|ACP_VCTR[0]' + Info: 4: + IC(0.922 ns) + CELL(0.243 ns) = 4.239 ns; Loc. = LCCOMB_X22_Y18_N24; Fanout = 1; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK~1' + Info: 5: + IC(0.650 ns) + CELL(0.367 ns) = 5.256 ns; Loc. = LCCOMB_X26_Y18_N4; Fanout = 3; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|PIXEL_CLK' + Info: 6: + IC(1.232 ns) + CELL(0.733 ns) = 7.221 ns; Loc. = FF_X18_Y15_N21; Fanout = 5; REG Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VSYNC' + Info: 7: + IC(0.716 ns) + CELL(0.308 ns) = 8.245 ns; Loc. = LCCOMB_X15_Y15_N6; Fanout = 1; COMB Node = 'interrupt_handler:nobody|INT_LATCH[8]~19' + Info: 8: + IC(0.681 ns) + CELL(0.534 ns) = 9.460 ns; Loc. = FF_X16_Y12_N5; Fanout = 3; REG Node = 'interrupt_handler:nobody|INT_LATCH[8]' + Info: Total cell delay = 3.899 ns ( 41.22 % ) + Info: Total interconnect delay = 5.561 ns ( 58.78 % ) + Info: + Micro clock to output delay of source is 0.199 ns + Info: + Longest register to pin delay is 6.181 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = FF_X16_Y12_N5; Fanout = 3; REG Node = 'interrupt_handler:nobody|INT_LATCH[8]' + Info: 2: + IC(0.325 ns) + CELL(0.241 ns) = 0.566 ns; Loc. = LCCOMB_X16_Y12_N20; Fanout = 1; COMB Node = 'interrupt_handler:nobody|_~17' + Info: 3: + IC(0.198 ns) + CELL(0.130 ns) = 0.894 ns; Loc. = LCCOMB_X16_Y12_N22; Fanout = 1; COMB Node = 'interrupt_handler:nobody|nIRQ[5]' + Info: 4: + IC(1.158 ns) + CELL(4.129 ns) = 6.181 ns; Loc. = IOOBUF_X0_Y12_N16; Fanout = 1; COMB Node = 'nIRQ[5]~output' + Info: 5: + IC(0.000 ns) + CELL(0.000 ns) = 6.181 ns; Loc. = PIN_P5; Fanout = 0; PIN Node = 'nIRQ[5]' + Info: Total cell delay = 4.500 ns ( 72.80 % ) + Info: Total interconnect delay = 1.681 ns ( 27.20 % ) +Info: Slack time is -11.944 ns between source pin "nFB_CS1" and destination pin "FB_AD[18]" + Info: + Longest pin to pin requirement is 1.000 ns + Info: - Longest pin to pin delay is 12.944 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PIN_T8; Fanout = 1; PIN Node = 'nFB_CS1' + Info: 2: + IC(0.000 ns) + CELL(0.918 ns) = 0.918 ns; Loc. = IOIBUF_X14_Y0_N29; Fanout = 59; COMB Node = 'nFB_CS1~input' + Info: 3: + IC(1.591 ns) + CELL(0.241 ns) = 2.750 ns; Loc. = LCCOMB_X27_Y14_N12; Fanout = 68; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE_CS~1' + Info: 4: + IC(0.915 ns) + CELL(0.130 ns) = 3.795 ns; Loc. = LCCOMB_X29_Y10_N14; Fanout = 12; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HDB_CS' + Info: 5: + IC(0.302 ns) + CELL(0.342 ns) = 4.439 ns; Loc. = LCCOMB_X29_Y10_N18; Fanout = 1; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_bustri_WORD:$00000|lpm_bustri:lpm_bustri_component|dout[2]~44' + Info: 6: + IC(0.648 ns) + CELL(0.243 ns) = 5.330 ns; Loc. = LCCOMB_X30_Y13_N24; Fanout = 1; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_bustri_WORD:$00000|lpm_bustri:lpm_bustri_component|dout[2]~48' + Info: 7: + IC(0.807 ns) + CELL(0.243 ns) = 6.380 ns; Loc. = LCCOMB_X28_Y12_N12; Fanout = 1; COMB Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|lpm_bustri_WORD:$00000|lpm_bustri:lpm_bustri_component|dout[2]~55' + Info: 8: + IC(0.200 ns) + CELL(0.130 ns) = 6.710 ns; Loc. = LCCOMB_X28_Y12_N30; Fanout = 1; COMB Node = 'FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[18]~180_RESYN4_BDD5' + Info: 9: + IC(1.088 ns) + CELL(0.242 ns) = 8.040 ns; Loc. = LCCOMB_X21_Y14_N4; Fanout = 1; COMB Node = 'FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|FB_AD[18]~180' + Info: 10: + IC(0.876 ns) + CELL(4.028 ns) = 12.944 ns; Loc. = IOOBUF_X20_Y0_N23; Fanout = 1; COMB Node = 'FB_AD[18]~output' + Info: 11: + IC(0.000 ns) + CELL(0.000 ns) = 12.944 ns; Loc. = PIN_V9; Fanout = 0; PIN Node = 'FB_AD[18]' + Info: Total cell delay = 6.517 ns ( 50.35 % ) + Info: Total interconnect delay = 6.427 ns ( 49.65 % ) +Warning: Can't achieve timing requirement tpd along 514 path(s). See Report window for details. +Warning: Can't achieve timing requirement th along 117 path(s). See Report window for details. +Info: Minimum slack time is -401 ps for clock "MAIN_CLK" between source pin "FB_AD[25]" and destination register "Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[9]" + Info: + th requirement for source pin and destination register is 1.000 ns + Info: - th from clock to input pin is 1.401 ns + Info: + Longest clock path from clock "MAIN_CLK" to destination register is 4.679 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PIN_G2; Fanout = 1; CLK Node = 'MAIN_CLK' + Info: 2: + IC(0.000 ns) + CELL(0.981 ns) = 0.981 ns; Loc. = IOIBUF_X0_Y21_N1; Fanout = 2380; COMB Node = 'MAIN_CLK~input' + Info: 3: + IC(3.164 ns) + CELL(0.534 ns) = 4.679 ns; Loc. = FF_X30_Y10_N5; Fanout = 4; REG Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[9]' + Info: Total cell delay = 1.515 ns ( 32.38 % ) + Info: Total interconnect delay = 3.164 ns ( 67.62 % ) + Info: + Micro hold delay of destination is 0.157 ns + Info: - Shortest pin to register delay is 3.435 ns + Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = PIN_AA9; Fanout = 1; PIN Node = 'FB_AD[25]' + Info: 2: + IC(0.000 ns) + CELL(0.918 ns) = 0.918 ns; Loc. = IOIBUF_X27_Y0_N8; Fanout = 59; COMB Node = 'FB_AD[25]~input' + Info: 3: + IC(2.175 ns) + CELL(0.342 ns) = 3.435 ns; Loc. = FF_X30_Y10_N5; Fanout = 4; REG Node = 'Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[9]' + Info: Total cell delay = 1.260 ns ( 36.68 % ) + Info: Total interconnect delay = 2.175 ns ( 63.32 % ) +Critical Warning: Timing requirements for slow timing model timing analysis were not met. See Report window for details. +Warning: Found invalid timing assignments -- see Ignored Timing Assignments report for details +Info: Quartus II Classic Timing Analyzer was successful. 0 errors, 65 warnings + Info: Peak virtual memory: 238 megabytes + Info: Processing ended: Wed Dec 15 02:25:23 2010 + Info: Elapsed time: 00:00:09 + Info: Total CPU time (on all processors): 00:00:11 + + diff --git a/FPGA_quartus/firebee1.tan.summary b/FPGA_quartus/firebee1.tan.summary new file mode 100644 index 0000000..219f117 --- /dev/null +++ b/FPGA_quartus/firebee1.tan.summary @@ -0,0 +1,296 @@ +-------------------------------------------------------------------------------------- +Timing Analyzer Summary +-------------------------------------------------------------------------------------- + +Type : Worst-case tsu +Slack : -4.528 ns +Required Time : 1.000 ns +Actual Time : 5.528 ns +From : MAIN_CLK +To : altpll_reconfig1:inst7|altpll_reconfig1_pllrcfg_t4q:altpll_reconfig1_pllrcfg_t4q_component|idle_state +From Clock : -- +To Clock : MAIN_CLK +Failed Paths : 6867 + +Type : Worst-case tco +Slack : -14.840 ns +Required Time : 1.000 ns +Actual Time : 15.840 ns +From : interrupt_handler:nobody|INT_LATCH[8] +To : nIRQ[5] +From Clock : MAIN_CLK +To Clock : -- +Failed Paths : 4976 + +Type : Worst-case tpd +Slack : -11.944 ns +Required Time : 1.000 ns +Actual Time : 12.944 ns +From : nFB_CS1 +To : FB_AD[18] +From Clock : -- +To Clock : -- +Failed Paths : 514 + +Type : Worst-case th +Slack : -0.401 ns +Required Time : 1.000 ns +Actual Time : 1.401 ns +From : FB_AD[25] +To : Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_HBE[9] +From Clock : -- +To Clock : MAIN_CLK +Failed Paths : 117 + +Type : Clock Setup: 'CLK33M' +Slack : -5.966 ns +Required Time : 33.00 MHz ( period = 30.303 ns ) +Actual Time : N/A +From : Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 +To : Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[35] +From Clock : altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] +To Clock : CLK33M +Failed Paths : 3741 + +Type : Clock Setup: 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2]' +Slack : -4.615 ns +Required Time : 24.98 MHz ( period = 40.033 ns ) +Actual Time : N/A +From : Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 +To : Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[35] +From Clock : altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] +To Clock : altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] +Failed Paths : 3741 + +Type : Clock Setup: 'altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0]' +Slack : -4.294 ns +Required Time : 95.92 MHz ( period = 10.425 ns ) +Actual Time : N/A +From : Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|altsyncram_gj81:FIFOram|ram_block1a1~portb_address_reg0 +To : Video:Fredi_Aschwanden|lpm_muxDZ:inst62|lpm_mux:lpm_mux_component|mux_dcf:auto_generated|external_latency_ffsa[35] +From Clock : altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] +To Clock : altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] +Failed Paths : 3741 + +Type : Clock Setup: 'MAIN_CLK' +Slack : -4.261 ns +Required Time : 33.00 MHz ( period = 30.303 ns ) +Actual Time : N/A +From : FB_ALE +To : FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|dcfifo0:RDF|dcfifo_mixed_widths:dcfifo_mixed_widths_component|dcfifo_0hh1:auto_generated|a_graycounter_k47:rdptr_g1p|counter5a7 +From Clock : altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] +To Clock : MAIN_CLK +Failed Paths : 27347 + +Type : Clock Setup: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0]' +Slack : -2.673 ns +Required Time : 132.01 MHz ( period = 7.575 ns ) +Actual Time : N/A +From : FB_ALE +To : Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|BUS_CYC +From Clock : altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] +To Clock : altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] +Failed Paths : 86 + +Type : Clock Setup: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4]' +Slack : -1.712 ns +Required Time : 66.00 MHz ( period = 15.151 ns ) +Actual Time : N/A +From : FB_ALE +To : Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|CPU_REQ +From Clock : altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] +To Clock : altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] +Failed Paths : 29 + +Type : Clock Setup: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3]' +Slack : 1.672 ns +Required Time : 132.01 MHz ( period = 7.575 ns ) +Actual Time : N/A +From : Video:Fredi_Aschwanden|lpm_ff0:inst13|lpm_ff:lpm_ff_component|dffs[2] +To : Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[2]~DFFHI +From Clock : altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] +To Clock : altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] +Failed Paths : 0 + +Type : Clock Setup: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1]' +Slack : 2.965 ns +Required Time : 132.01 MHz ( period = 7.575 ns ) +Actual Time : Restricted to 500.00 MHz ( period = 2.000 ns ) +From : Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[6] +To : Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[6] +From Clock : altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] +To Clock : altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] +Failed Paths : 0 + +Type : Clock Setup: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2]' +Slack : 5.299 ns +Required Time : 132.01 MHz ( period = 7.575 ns ) +Actual Time : N/A +From : Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_VDMP[3] +To : Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[3] +From Clock : altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] +To Clock : altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] +Failed Paths : 0 + +Type : Clock Setup: 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1]' +Slack : 28.590 ns +Required Time : 15.99 MHz ( period = 62.552 ns ) +Actual Time : 186.15 MHz ( period = 5.372 ns ) +From : FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|RD_In +To : FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_DIGITAL_PLL:I_DIGITAL_PLL|\EDGEDETECT:LOCK +From Clock : altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] +To Clock : altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] +Failed Paths : 0 + +Type : Clock Setup: 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0]' +Slack : 498.663 ns +Required Time : 2.00 MHz ( period = 500.416 ns ) +Actual Time : Restricted to 500.00 MHz ( period = 2.000 ns ) +From : FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4] +To : FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[0] +From Clock : altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] +To Clock : altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] +Failed Paths : 0 + +Type : Clock Setup: 'altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0]' +Slack : 1997.239 ns +Required Time : 0.50 MHz ( period = 1999.998 ns ) +Actual Time : 362.45 MHz ( period = 2.759 ns ) +From : lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[0] +To : lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[17] +From Clock : altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] +To Clock : altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] +Failed Paths : 0 + +Type : Clock Hold: 'MAIN_CLK' +Slack : -3.786 ns +Required Time : 33.00 MHz ( period = 30.303 ns ) +Actual Time : N/A +From : Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VDL_VCT[6] +To : Video:Fredi_Aschwanden|VIDEO_MOD_MUX_CLUTCTR:VIDEO_MOD_MUX_CLUTCTR|VERZ[1][0] +From Clock : MAIN_CLK +To Clock : MAIN_CLK +Failed Paths : 108 + +Type : Clock Hold: 'CLK33M' +Slack : -0.687 ns +Required Time : 33.00 MHz ( period = 30.303 ns ) +Actual Time : N/A +From : Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6] +To : Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6] +From Clock : CLK33M +To Clock : CLK33M +Failed Paths : 26 + +Type : Clock Hold: 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2]' +Slack : -0.454 ns +Required Time : 24.98 MHz ( period = 40.033 ns ) +Actual Time : N/A +From : Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6] +To : Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6] +From Clock : altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] +To Clock : altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[2] +Failed Paths : 26 + +Type : Clock Hold: 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1]' +Slack : 0.502 ns +Required Time : 15.99 MHz ( period = 62.552 ns ) +Actual Time : N/A +From : FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|WG~_Duplicate_1 +To : FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|WF1772IP_TOP_SOC:I_FDC|WF1772IP_CONTROL:I_CONTROL|WG~_Duplicate_1 +From Clock : altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] +To Clock : altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[1] +Failed Paths : 0 + +Type : Clock Hold: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0]' +Slack : 0.502 ns +Required Time : 132.01 MHz ( period = 7.575 ns ) +Actual Time : N/A +From : Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[6] +To : Video:Fredi_Aschwanden|lpm_fifo_dc0:inst|dcfifo:dcfifo_component|dcfifo_8fi1:auto_generated|a_graycounter_njc:wrptr_gp|counter13a[6] +From Clock : altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] +To Clock : altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] +Failed Paths : 0 + +Type : Clock Hold: 'altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0]' +Slack : 0.502 ns +Required Time : 95.92 MHz ( period = 10.425 ns ) +Actual Time : N/A +From : Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6] +To : Video:Fredi_Aschwanden|lpm_fifoDZ:inst63|scfifo:scfifo_component|scfifo_lk21:auto_generated|a_dpfifo_oq21:dpfifo|low_addressa[6] +From Clock : altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] +To Clock : altpll4:inst22|altpll:altpll_component|altpll_c6j2:auto_generated|clk[0] +Failed Paths : 0 + +Type : Clock Hold: 'altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0]' +Slack : 0.564 ns +Required Time : 2.00 MHz ( period = 500.416 ns ) +Actual Time : N/A +From : FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4] +To : FalconIO_SDCard_IDE_CF:Wolfgang_Foerster_and_Fredi_Aschwanden|AMKB_REG[4] +From Clock : altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] +To Clock : altpll3:inst13|altpll:altpll_component|altpll_41p2:auto_generated|clk[0] +Failed Paths : 0 + +Type : Clock Hold: 'altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0]' +Slack : 0.825 ns +Required Time : 0.50 MHz ( period = 1999.998 ns ) +Actual Time : N/A +From : lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] +To : lpm_counter0:inst18|lpm_counter:lpm_counter_component|cntr_mph:auto_generated|counter_reg_bit[10] +From Clock : altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] +To Clock : altpll1:inst|altpll:altpll_component|altpll_pul2:auto_generated|clk[0] +Failed Paths : 0 + +Type : Clock Hold: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2]' +Slack : 1.825 ns +Required Time : 132.01 MHz ( period = 7.575 ns ) +Actual Time : N/A +From : Video:Fredi_Aschwanden|DDR_CTR:DDR_CTR|SR_VDMP[6] +To : Video:Fredi_Aschwanden|lpm_ff5:inst97|lpm_ff:lpm_ff_component|dffs[6] +From Clock : altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[0] +To Clock : altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[2] +Failed Paths : 0 + +Type : Clock Hold: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4]' +Slack : 2.664 ns +Required Time : 66.00 MHz ( period = 15.151 ns ) +Actual Time : N/A +From : FB_ALE +To : lpm_ff0:inst1|lpm_ff:lpm_ff_component|dffs[2] +From Clock : altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] +To Clock : altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] +Failed Paths : 0 + +Type : Clock Hold: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3]' +Slack : 3.263 ns +Required Time : 132.01 MHz ( period = 7.575 ns ) +Actual Time : N/A +From : Video:Fredi_Aschwanden|lpm_ff0:inst14|lpm_ff:lpm_ff_component|dffs[29] +To : Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|ddio_outa[29]~DFFLO +From Clock : altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[4] +To Clock : altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[3] +Failed Paths : 0 + +Type : Clock Hold: 'altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1]' +Slack : 4.336 ns +Required Time : 132.01 MHz ( period = 7.575 ns ) +Actual Time : N/A +From : Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_cell_l[2] +To : Video:Fredi_Aschwanden|altddio_bidir0:inst1|altddio_bidir:altddio_bidir_component|ddio_bidir_3jl:auto_generated|input_latch_l[2] +From Clock : altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] +To Clock : altpll2:inst12|altpll:altpll_component|altpll_isv2:auto_generated|clk[1] +Failed Paths : 0 + +Type : Total number of failed paths +Slack : +Required Time : +Actual Time : +From : +To : +From Clock : +To Clock : +Failed Paths : 51319 + +-------------------------------------------------------------------------------------- + diff --git a/FPGA_quartus/firebee1_assignment_defaults.qdf b/FPGA_quartus/firebee1_assignment_defaults.qdf new file mode 100644 index 0000000..2119467 --- /dev/null +++ b/FPGA_quartus/firebee1_assignment_defaults.qdf @@ -0,0 +1,687 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 1991-2010 Altera Corporation +# Your use of Altera Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Altera Program License +# Subscription Agreement, Altera MegaCore Function License +# Agreement, or other applicable license agreement, including, +# without limitation, that your use is for the sole purpose of +# programming logic devices manufactured by Altera and sold by +# Altera or its authorized distributors. Please refer to the +# applicable agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus II +# Version 9.1 Build 350 03/24/2010 Service Pack 2 SJ Web Edition +# Date created = 08:49:57 June 14, 2010 +# +# -------------------------------------------------------------------------- # +# +# Note: +# +# 1) Do not modify this file. This file was generated +# automatically by the Quartus II software and is used +# to preserve global assignments across Quartus II versions. +# +# -------------------------------------------------------------------------- # + +set_global_assignment -name PROJECT_SHOW_ENTITY_NAME On +set_global_assignment -name PROJECT_USE_SIMPLIFIED_NAMES Off +set_global_assignment -name ENABLE_REDUCED_MEMORY_MODE Off +set_global_assignment -name VER_COMPATIBLE_DB_DIR export_db +set_global_assignment -name AUTO_EXPORT_VER_COMPATIBLE_DB Off +set_global_assignment -name SMART_RECOMPILE Off +set_global_assignment -name FLOW_DISABLE_ASSEMBLER Off +set_global_assignment -name FLOW_ENABLE_HC_COMPARE Off +set_global_assignment -name HC_OUTPUT_DIR hc_output +set_global_assignment -name SAVE_MIGRATION_INFO_DURING_COMPILATION Off +set_global_assignment -name FLOW_ENABLE_IO_ASSIGNMENT_ANALYSIS Off +set_global_assignment -name RUN_FULL_COMPILE_ON_DEVICE_CHANGE On +set_global_assignment -name FLOW_ENABLE_RTL_VIEWER Off +set_global_assignment -name READ_OR_WRITE_IN_BYTE_ADDRESS "Use global settings" +set_global_assignment -name FLOW_HARDCOPY_DESIGN_READINESS_CHECK On +set_global_assignment -name FLOW_ENABLE_PARALLEL_MODULES On +set_global_assignment -name ENABLE_COMPACT_REPORT_TABLE Off +set_global_assignment -name DEFAULT_HOLD_MULTICYCLE "Same as Multicycle" +set_global_assignment -name CUT_OFF_PATHS_BETWEEN_CLOCK_DOMAINS On +set_global_assignment -name CUT_OFF_READ_DURING_WRITE_PATHS On +set_global_assignment -name CUT_OFF_IO_PIN_FEEDBACK On +set_global_assignment -name DO_COMBINED_ANALYSIS Off +set_global_assignment -name IGNORE_CLOCK_SETTINGS Off +set_global_assignment -name ANALYZE_LATCHES_AS_SYNCHRONOUS_ELEMENTS On +set_global_assignment -name ENABLE_RECOVERY_REMOVAL_ANALYSIS Off +set_global_assignment -name ENABLE_CLOCK_LATENCY Off +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family MAX7000B +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family "HardCopy II" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER On -family "Cyclone IV E" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER On -family "Stratix IV" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER On -family "Cyclone III" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family "HardCopy Stratix" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family MAX7000AE +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family Cyclone +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family "Stratix II GX" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family "MAX II" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER On -family "Arria II GX" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family "Stratix GX" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER On -family "HardCopy III" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family MAX7000S +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family "Cyclone II" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER On -family "Cyclone IV GX" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER On -family "HardCopy IV" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER On -family "Cyclone III LS" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER On -family "Stratix III" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER On -family "Arria GX" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family MAX3000A +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family "Stratix II" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family Stratix +set_global_assignment -name NUMBER_OF_SOURCES_PER_DESTINATION_TO_REPORT 10 +set_global_assignment -name NUMBER_OF_DESTINATION_TO_REPORT 10 +set_global_assignment -name NUMBER_OF_PATHS_TO_REPORT 200 +set_global_assignment -name DO_MIN_ANALYSIS Off +set_global_assignment -name DO_MIN_TIMING Off +set_global_assignment -name REPORT_IO_PATHS_SEPARATELY Off +set_global_assignment -name FLOW_ENABLE_TIMING_CONSTRAINT_CHECK Off +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family MAX7000B +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "HardCopy II" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "Cyclone IV E" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "Stratix IV" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "Cyclone III" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family "HardCopy Stratix" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family MAX7000AE +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family Cyclone +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "Stratix II GX" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family "MAX II" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "Arria II GX" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family "Stratix GX" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "HardCopy III" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family MAX7000S +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "Cyclone II" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "Cyclone IV GX" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "HardCopy IV" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "Cyclone III LS" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "Stratix III" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "Arria GX" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family MAX3000A +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "Stratix II" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family Stratix +set_global_assignment -name TIMEQUEST_DO_REPORT_TIMING Off +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS On -family MAX7000B +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS Off -family "HardCopy II" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS Off -family "Stratix IV" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS On -family "Cyclone IV E" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS On -family "Cyclone III" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS Off -family "HardCopy Stratix" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS On -family MAX7000AE +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS Off -family "Stratix II GX" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS On -family Cyclone +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS On -family "MAX II" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS Off -family "Arria II GX" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS Off -family "Stratix GX" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS On -family MAX7000S +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS Off -family "HardCopy III" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS On -family "Cyclone II" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS On -family "Cyclone IV GX" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS Off -family "HardCopy IV" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS On -family "Cyclone III LS" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS Off -family "Stratix III" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS Off -family "Arria GX" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS On -family MAX3000A +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS Off -family "Stratix II" +set_global_assignment -name TIMEQUEST_REPORT_WORST_CASE_TIMING_PATHS Off -family Stratix +set_global_assignment -name TIMEQUEST_REPORT_NUM_WORST_CASE_TIMING_PATHS 100 +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family MAX7000B +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family "HardCopy II" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL On -family "Cyclone IV E" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL On -family "Stratix IV" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL On -family "Cyclone III" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family "HardCopy Stratix" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family MAX7000AE +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family Cyclone +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family "Stratix II GX" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family "MAX II" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL On -family "Arria II GX" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family "Stratix GX" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL On -family "HardCopy III" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family MAX7000S +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family "Cyclone II" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL On -family "Cyclone IV GX" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL On -family "HardCopy IV" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL On -family "Cyclone III LS" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL On -family "Stratix III" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family "Arria GX" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family MAX3000A +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family "Stratix II" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family Stratix +set_global_assignment -name MUX_RESTRUCTURE Auto +set_global_assignment -name ENABLE_IP_DEBUG Off +set_global_assignment -name SAVE_DISK_SPACE On +set_global_assignment -name DISABLE_OCP_HW_EVAL Off +set_global_assignment -name DEVICE_FILTER_PACKAGE Any +set_global_assignment -name DEVICE_FILTER_PIN_COUNT Any +set_global_assignment -name DEVICE_FILTER_SPEED_GRADE Any +set_global_assignment -name EDA_DESIGN_ENTRY_SYNTHESIS_TOOL "" +set_global_assignment -name VERILOG_INPUT_VERSION Verilog_2001 +set_global_assignment -name VHDL_INPUT_VERSION VHDL_1993 +set_global_assignment -name FAMILY "Stratix II" +set_global_assignment -name TRUE_WYSIWYG_FLOW Off +set_global_assignment -name SMART_COMPILE_IGNORES_TDC_FOR_STRATIX_PLL_CHANGES Off +set_global_assignment -name STATE_MACHINE_PROCESSING Auto +set_global_assignment -name SAFE_STATE_MACHINE Off +set_global_assignment -name EXTRACT_VERILOG_STATE_MACHINES On +set_global_assignment -name EXTRACT_VHDL_STATE_MACHINES On +set_global_assignment -name IGNORE_VERILOG_INITIAL_CONSTRUCTS Off +set_global_assignment -name VERILOG_CONSTANT_LOOP_LIMIT 5000 +set_global_assignment -name VERILOG_NON_CONSTANT_LOOP_LIMIT 250 +set_global_assignment -name ADD_PASS_THROUGH_LOGIC_TO_INFERRED_RAMS On +set_global_assignment -name PARALLEL_SYNTHESIS -value ON +set_global_assignment -name DSP_BLOCK_BALANCING Auto +set_global_assignment -name MAX_BALANCING_DSP_BLOCKS "-1 (Unlimited)" +set_global_assignment -name NOT_GATE_PUSH_BACK On +set_global_assignment -name ALLOW_POWER_UP_DONT_CARE On +set_global_assignment -name REMOVE_REDUNDANT_LOGIC_CELLS Off +set_global_assignment -name REMOVE_DUPLICATE_REGISTERS On +set_global_assignment -name IGNORE_CARRY_BUFFERS Off +set_global_assignment -name IGNORE_CASCADE_BUFFERS Off +set_global_assignment -name IGNORE_GLOBAL_BUFFERS Off +set_global_assignment -name IGNORE_ROW_GLOBAL_BUFFERS Off +set_global_assignment -name IGNORE_LCELL_BUFFERS Off +set_global_assignment -name MAX7000_IGNORE_LCELL_BUFFERS AUTO +set_global_assignment -name IGNORE_SOFT_BUFFERS On +set_global_assignment -name MAX7000_IGNORE_SOFT_BUFFERS Off +set_global_assignment -name LIMIT_AHDL_INTEGERS_TO_32_BITS Off +set_global_assignment -name AUTO_GLOBAL_CLOCK_MAX On +set_global_assignment -name AUTO_GLOBAL_OE_MAX On +set_global_assignment -name MAX_AUTO_GLOBAL_REGISTER_CONTROLS On +set_global_assignment -name AUTO_IMPLEMENT_IN_ROM Off +set_global_assignment -name APEX20K_TECHNOLOGY_MAPPER Lut +set_global_assignment -name OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name STRATIXII_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name CYCLONE_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name CYCLONEII_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name STRATIX_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name MAXII_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name MAX7000_OPTIMIZATION_TECHNIQUE Speed +set_global_assignment -name APEX20K_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name MERCURY_OPTIMIZATION_TECHNIQUE Area +set_global_assignment -name FLEX6K_OPTIMIZATION_TECHNIQUE Area +set_global_assignment -name FLEX10K_OPTIMIZATION_TECHNIQUE Area +set_global_assignment -name ALLOW_XOR_GATE_USAGE On +set_global_assignment -name AUTO_LCELL_INSERTION On +set_global_assignment -name CARRY_CHAIN_LENGTH 48 +set_global_assignment -name FLEX6K_CARRY_CHAIN_LENGTH 32 +set_global_assignment -name FLEX10K_CARRY_CHAIN_LENGTH 32 +set_global_assignment -name MERCURY_CARRY_CHAIN_LENGTH 48 +set_global_assignment -name STRATIX_CARRY_CHAIN_LENGTH 70 +set_global_assignment -name STRATIXII_CARRY_CHAIN_LENGTH 70 +set_global_assignment -name CASCADE_CHAIN_LENGTH 2 +set_global_assignment -name PARALLEL_EXPANDER_CHAIN_LENGTH 16 +set_global_assignment -name MAX7000_PARALLEL_EXPANDER_CHAIN_LENGTH 4 +set_global_assignment -name AUTO_CARRY_CHAINS On +set_global_assignment -name AUTO_CASCADE_CHAINS On +set_global_assignment -name AUTO_PARALLEL_EXPANDERS On +set_global_assignment -name AUTO_OPEN_DRAIN_PINS On +set_global_assignment -name ADV_NETLIST_OPT_SYNTH_WYSIWYG_REMAP Off +set_global_assignment -name AUTO_ROM_RECOGNITION On +set_global_assignment -name AUTO_RAM_RECOGNITION On +set_global_assignment -name AUTO_DSP_RECOGNITION On +set_global_assignment -name AUTO_SHIFT_REGISTER_RECOGNITION Auto +set_global_assignment -name AUTO_CLOCK_ENABLE_RECOGNITION On +set_global_assignment -name STRICT_RAM_RECOGNITION Off +set_global_assignment -name ALLOW_SYNCH_CTRL_USAGE On +set_global_assignment -name FORCE_SYNCH_CLEAR Off +set_global_assignment -name AUTO_RAM_BLOCK_BALANCING On +set_global_assignment -name AUTO_RAM_TO_LCELL_CONVERSION Off +set_global_assignment -name AUTO_RESOURCE_SHARING Off +set_global_assignment -name ALLOW_ANY_RAM_SIZE_FOR_RECOGNITION Off +set_global_assignment -name ALLOW_ANY_ROM_SIZE_FOR_RECOGNITION Off +set_global_assignment -name ALLOW_ANY_SHIFT_REGISTER_SIZE_FOR_RECOGNITION Off +set_global_assignment -name MAX7000_FANIN_PER_CELL 100 +set_global_assignment -name USE_LOGICLOCK_CONSTRAINTS_IN_BALANCING On +set_global_assignment -name MAX_RAM_BLOCKS_M512 "-1 (Unlimited)" +set_global_assignment -name MAX_RAM_BLOCKS_M4K "-1 (Unlimited)" +set_global_assignment -name MAX_RAM_BLOCKS_MRAM "-1 (Unlimited)" +set_global_assignment -name IGNORE_TRANSLATE_OFF_AND_SYNTHESIS_OFF Off +set_global_assignment -name STRATIXGX_BYPASS_REMAPPING_OF_FORCE_SIGNAL_DETECT_SIGNAL_THRESHOLD_SELECT Off +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS -value ON -family "Cyclone III LS" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS -value ON -family "Cyclone III" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS -value ON -family "Stratix III" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS -value ON -family "HardCopy III" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS Off -family "Arria GX" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS Off -family "Cyclone II" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS Off -family "HardCopy II" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS Off -family "Stratix II GX" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS -value ON -family "Cyclone IV E" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS -value ON -family "Cyclone IV GX" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS Off -family "Stratix II" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS -value ON -family "Stratix IV" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS -value ON -family "Arria II GX" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS -value ON -family "HardCopy IV" +set_global_assignment -name SHOW_PARAMETER_SETTINGS_TABLES_IN_SYNTHESIS_REPORT On +set_global_assignment -name IGNORE_MAX_FANOUT_ASSIGNMENTS Off +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 +set_global_assignment -name OPTIMIZE_POWER_DURING_SYNTHESIS "Normal compilation" +set_global_assignment -name HDL_MESSAGE_LEVEL Level2 +set_global_assignment -name USE_HIGH_SPEED_ADDER Auto +set_global_assignment -name NUMBER_OF_REMOVED_REGISTERS_REPORTED 5000 +set_global_assignment -name NUMBER_OF_INVERTED_REGISTERS_REPORTED 100 +set_global_assignment -name SYNTH_CLOCK_MUX_PROTECTION On +set_global_assignment -name SYNTH_GATED_CLOCK_CONVERSION Off +set_global_assignment -name BLOCK_DESIGN_NAMING Auto +set_global_assignment -name SYNTH_PROTECT_SDC_CONSTRAINT Off +set_global_assignment -name SYNTHESIS_EFFORT Auto +set_global_assignment -name SHIFT_REGISTER_RECOGNITION_ACLR_SIGNAL On +set_global_assignment -name PRE_MAPPING_RESYNTHESIS Off +set_global_assignment -name SYNTH_MESSAGE_LEVEL Medium +set_global_assignment -name DISABLE_REGISTER_MERGING_ACROSS_HIERARCHIES Auto +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Cyclone III LS" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Cyclone III" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Stratix III" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "HardCopy III" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "HardCopy Stratix" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Cyclone II" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family Cyclone +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "HardCopy II" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Cyclone IV E" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Cyclone IV GX" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Stratix II" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Stratix IV" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Arria II GX" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family Stratix +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "HardCopy IV" +set_global_assignment -name MAX_LABS "-1 (Unlimited)" +set_global_assignment -name ADCE_ENABLED Auto +set_global_assignment -name ROUTER_TIMING_OPTIMIZATION_LEVEL Normal +set_global_assignment -name PLACEMENT_EFFORT_MULTIPLIER 1.0 +set_global_assignment -name ROUTER_EFFORT_MULTIPLIER 1.0 +set_global_assignment -name FIT_ATTEMPTS_TO_SKIP 0.0 +set_global_assignment -name ECO_ALLOW_ROUTING_CHANGES Off +set_global_assignment -name DEVICE AUTO +set_global_assignment -name BASE_PIN_OUT_FILE_ON_SAMEFRAME_DEVICE Off +set_global_assignment -name ENABLE_JTAG_BST_SUPPORT Off +set_global_assignment -name MAX7000_ENABLE_JTAG_BST_SUPPORT On +set_global_assignment -name RESERVE_NCEO_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name CYCLONEII_RESERVE_NCEO_AFTER_CONFIGURATION "Use as programming pin" +set_global_assignment -name STRATIXIII_UPDATE_MODE Standard +set_global_assignment -name STRATIX_UPDATE_MODE Standard +set_global_assignment -name STRATIXIII_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name CYCLONEIII_CONFIGURATION_SCHEME "Active Serial" +set_global_assignment -name STRATIXII_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name CYCLONEII_CONFIGURATION_SCHEME "Active Serial" +set_global_assignment -name APEX20K_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name STRATIX_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name CYCLONE_CONFIGURATION_SCHEME "Active Serial" +set_global_assignment -name MERCURY_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name FLEX6K_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name FLEX10K_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name APEXII_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name USER_START_UP_CLOCK Off +set_global_assignment -name ENABLE_VREFA_PIN Off +set_global_assignment -name ENABLE_VREFB_PIN Off +set_global_assignment -name ALWAYS_ENABLE_INPUT_BUFFERS Off +set_global_assignment -name ENABLE_ASMI_FOR_FLASH_LOADER Off +set_global_assignment -name ENABLE_DEVICE_WIDE_RESET Off +set_global_assignment -name ENABLE_DEVICE_WIDE_OE Off +set_global_assignment -name RESERVE_ALL_UNUSED_PINS "As output driving ground" +set_global_assignment -name FLEX10K_ENABLE_LOCK_OUTPUT Off +set_global_assignment -name ENABLE_INIT_DONE_OUTPUT Off +set_global_assignment -name RESERVE_NWS_NRS_NCS_CS_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_RDYNBUSY_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DATA7_THROUGH_DATA1_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DATA0_AFTER_CONFIGURATION "As input tri-stated" +set_global_assignment -name RESERVE_ASDO_AFTER_CONFIGURATION "Use as regular IO" -family "Cyclone II" +set_global_assignment -name RESERVE_ASDO_AFTER_CONFIGURATION "Use as regular IO" -family Cyclone +set_global_assignment -name RESERVE_ASDO_AFTER_CONFIGURATION "Use as regular IO" -family "Stratix II GX" +set_global_assignment -name RESERVE_ASDO_AFTER_CONFIGURATION "Use as regular IO" -family "HardCopy II" +set_global_assignment -name RESERVE_ASDO_AFTER_CONFIGURATION "Use as regular IO" -family "Arria GX" +set_global_assignment -name RESERVE_ASDO_AFTER_CONFIGURATION "Use as regular IO" -family "Stratix II" +set_global_assignment -name RESERVE_DATA1_AFTER_CONFIGURATION "As input tri-stated" +set_global_assignment -name RESERVE_DATA7_THROUGH_DATA2_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_FLASH_NCE_AFTER_CONFIGURATION "As input tri-stated" +set_global_assignment -name RESERVE_OTHER_AP_PINS_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DCLK_AFTER_CONFIGURATION "Use as programming pin" +set_global_assignment -name CRC_ERROR_CHECKING Off +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family "Stratix GX" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "HardCopy III" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family "Cyclone II" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family "HardCopy II" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Cyclone IV E" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Cyclone IV GX" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Stratix IV" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "HardCopy IV" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Cyclone III LS" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Cyclone III" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Stratix III" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family "HardCopy Stratix" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Arria GX" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family "Stratix II GX" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family Cyclone +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family "Stratix II" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family "MAX II" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family Stratix +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Arria II GX" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING Off +set_global_assignment -name BLOCK_RAM_TO_MLAB_CELL_CONVERSION On +set_global_assignment -name BLOCK_RAM_AND_MLAB_EQUIVALENT_POWER_UP_CONDITIONS Auto +set_global_assignment -name BLOCK_RAM_AND_MLAB_EQUIVALENT_PAUSED_READ_CAPABILITIES Care +set_global_assignment -name PROGRAMMABLE_POWER_TECHNOLOGY_SETTING "Force All Tiles with Failing Timing Paths to High Speed" +set_global_assignment -name PROGRAMMABLE_POWER_MAXIMUM_HIGH_SPEED_FRACTION_OF_USED_LAB_TILES 1.0 +set_global_assignment -name GUARANTEE_MIN_DELAY_CORNER_IO_ZERO_HOLD_TIME On +set_global_assignment -name OPTIMIZE_POWER_DURING_FITTING "Normal compilation" +set_global_assignment -name OPTIMIZE_SSN Off -family "Cyclone III LS" +set_global_assignment -name OPTIMIZE_SSN Off -family "Cyclone III" +set_global_assignment -name OPTIMIZE_SSN Off -family "Stratix III" +set_global_assignment -name OPTIMIZE_SSN Off -family "HardCopy III" +set_global_assignment -name OPTIMIZE_SSN Off -family "Cyclone IV E" +set_global_assignment -name OPTIMIZE_SSN Off -family "Stratix IV" +set_global_assignment -name OPTIMIZE_SSN Off -family "Cyclone IV GX" +set_global_assignment -name OPTIMIZE_SSN Off -family "HardCopy IV" +set_global_assignment -name OPTIMIZE_SSN Off -family "Arria II GX" +set_global_assignment -name OPTIMIZE_TIMING "Normal compilation" +set_global_assignment -name ECO_OPTIMIZE_TIMING Off +set_global_assignment -name ECO_REGENERATE_REPORT Off +set_global_assignment -name OPTIMIZE_IOC_REGISTER_PLACEMENT_FOR_TIMING On +set_global_assignment -name FIT_ONLY_ONE_ATTEMPT Off +set_global_assignment -name FINAL_PLACEMENT_OPTIMIZATION Automatically +set_global_assignment -name FITTER_AGGRESSIVE_ROUTABILITY_OPTIMIZATION Automatically +set_global_assignment -name SEED 1 +set_global_assignment -name SLOW_SLEW_RATE Off +set_global_assignment -name PCI_IO Off +set_global_assignment -name TURBO_BIT On +set_global_assignment -name WEAK_PULL_UP_RESISTOR Off +set_global_assignment -name ENABLE_BUS_HOLD_CIRCUITRY Off +set_global_assignment -name AUTO_GLOBAL_MEMORY_CONTROLS Off +set_global_assignment -name MIGRATION_CONSTRAIN_CORE_RESOURCES On +set_global_assignment -name AUTO_PACKED_REGISTERS_STRATIXII AUTO +set_global_assignment -name AUTO_PACKED_REGISTERS_MAXII AUTO +set_global_assignment -name AUTO_PACKED_REGISTERS_CYCLONE Auto +set_global_assignment -name AUTO_PACKED_REGISTERS Off +set_global_assignment -name AUTO_PACKED_REGISTERS_STRATIX AUTO +set_global_assignment -name NORMAL_LCELL_INSERT On +set_global_assignment -name CARRY_OUT_PINS_LCELL_INSERT On +set_global_assignment -name AUTO_DELAY_CHAINS On +set_global_assignment -name XSTL_INPUT_ALLOW_SE_BUFFER Off +set_global_assignment -name TREAT_BIDIR_AS_OUTPUT Off +set_global_assignment -name AUTO_MERGE_PLLS On +set_global_assignment -name IGNORE_MODE_FOR_MERGE Off +set_global_assignment -name AUTO_TURBO_BIT ON +set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC_FOR_AREA Off +set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC Off +set_global_assignment -name PHYSICAL_SYNTHESIS_LOG_FILE Off +set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_DUPLICATION Off +set_global_assignment -name PHYSICAL_SYNTHESIS_MAP_LOGIC_TO_MEMORY_FOR_AREA Off +set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_RETIMING Off +set_global_assignment -name PHYSICAL_SYNTHESIS_ASYNCHRONOUS_SIGNAL_PIPELINING Off +set_global_assignment -name IO_PLACEMENT_OPTIMIZATION On +set_global_assignment -name ALLOW_LVTTL_LVCMOS_INPUT_LEVELS_TO_OVERDRIVE_INPUT_BUFFER Off +set_global_assignment -name OVERRIDE_DEFAULT_ELECTROMIGRATION_PARAMETERS Off +set_global_assignment -name FITTER_EFFORT "Auto Fit" +set_global_assignment -name FITTER_AUTO_EFFORT_DESIRED_SLACK_MARGIN 0ns +set_global_assignment -name PHYSICAL_SYNTHESIS_EFFORT Normal +set_global_assignment -name ROUTER_LCELL_INSERTION_AND_LOGIC_DUPLICATION AUTO +set_global_assignment -name ROUTER_REGISTER_DUPLICATION AUTO +set_global_assignment -name STRATIXGX_ALLOW_CLOCK_FANOUT_WITH_ANALOG_RESET Off +set_global_assignment -name AUTO_GLOBAL_CLOCK On +set_global_assignment -name AUTO_GLOBAL_OE On +set_global_assignment -name AUTO_GLOBAL_REGISTER_CONTROLS On +set_global_assignment -name FITTER_EARLY_TIMING_ESTIMATE_MODE Realistic +set_global_assignment -name STRATIXGX_ALLOW_GIGE_UNDER_FULL_DATARATE_RANGE Off +set_global_assignment -name STRATIXGX_ALLOW_RX_CORECLK_FROM_NON_RX_CLKOUT_SOURCE_IN_DOUBLE_DATA_WIDTH_MODE Off +set_global_assignment -name STRATIXGX_ALLOW_GIGE_IN_DOUBLE_DATA_WIDTH_MODE Off +set_global_assignment -name STRATIXGX_ALLOW_PARALLEL_LOOPBACK_IN_DOUBLE_DATA_WIDTH_MODE Off +set_global_assignment -name STRATIXGX_ALLOW_XAUI_IN_SINGLE_DATA_WIDTH_MODE Off +set_global_assignment -name STRATIXGX_ALLOW_XAUI_WITH_CORECLK_SELECTED_AT_RATE_MATCHER Off +set_global_assignment -name STRATIXGX_ALLOW_XAUI_WITH_RX_CORECLK_FROM_NON_TXPLL_SOURCE Off +set_global_assignment -name STRATIXGX_ALLOW_GIGE_WITH_CORECLK_SELECTED_AT_RATE_MATCHER Off +set_global_assignment -name STRATIXGX_ALLOW_GIGE_WITHOUT_8B10B Off +set_global_assignment -name STRATIXGX_ALLOW_GIGE_WITH_RX_CORECLK_FROM_NON_TXPLL_SOURCE Off +set_global_assignment -name STRATIXGX_ALLOW_POST8B10B_LOOPBACK Off +set_global_assignment -name STRATIXGX_ALLOW_REVERSE_PARALLEL_LOOPBACK Off +set_global_assignment -name STRATIXGX_ALLOW_USE_OF_GXB_COUPLED_IOS Off +set_global_assignment -name GENERATE_GXB_RECONFIG_MIF Off +set_global_assignment -name GENERATE_GXB_RECONFIG_MIF_WITH_PLL Off +set_global_assignment -name RESERVE_ALL_UNUSED_PINS_WEAK_PULLUP "As input tri-stated with weak pull-up" +set_global_assignment -name STOP_AFTER_CONGESTION_MAP Off +set_global_assignment -name ENABLE_HOLD_BACK_OFF On +set_global_assignment -name CONFIGURATION_VCCIO_LEVEL Auto +set_global_assignment -name FORCE_CONFIGURATION_VCCIO Off +set_global_assignment -name SYNCHRONIZER_IDENTIFICATION Off +set_global_assignment -name ENABLE_BENEFICIAL_SKEW_OPTIMIZATION On +set_global_assignment -name OPTIMIZE_FOR_METASTABILITY On +set_global_assignment -name CRC_ERROR_OPEN_DRAIN Off +set_global_assignment -name MAX_GLOBAL_CLOCKS_ALLOWED "-1 (Unlimited)" +set_global_assignment -name MAX_REGIONAL_CLOCKS_ALLOWED "-1 (Unlimited)" +set_global_assignment -name MAX_PERIPHERY_CLOCKS_ALLOWED "-1 (Unlimited)" +set_global_assignment -name MAX_CLOCKS_ALLOWED "-1 (Unlimited)" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_40MHz +set_global_assignment -name M144K_BLOCK_READ_CLOCK_DUTY_CYCLE_DEPENDENCY Off +set_global_assignment -name STRATIXIII_MRAM_COMPATIBILITY On +set_global_assignment -name FORCE_FITTER_TO_AVOID_PERIPHERY_PLACEMENT_WARNINGS Off +set_global_assignment -name AUTO_C3_M9K_BIT_SKIP Off +set_global_assignment -name EDA_SIMULATION_TOOL "" +set_global_assignment -name EDA_TIMING_ANALYSIS_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_TIMING_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_SYMBOL_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_SIGNAL_INTEGRITY_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_BOUNDARY_SCAN_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_TOOL "" +set_global_assignment -name EDA_FORMAL_VERIFICATION_TOOL "" +set_global_assignment -name EDA_RESYNTHESIS_TOOL "" +set_global_assignment -name ON_CHIP_BITSTREAM_DECOMPRESSION On +set_global_assignment -name COMPRESSION_MODE Off +set_global_assignment -name CLOCK_SOURCE Internal +set_global_assignment -name CONFIGURATION_CLOCK_FREQUENCY "10 MHz" +set_global_assignment -name CONFIGURATION_CLOCK_DIVISOR 1 +set_global_assignment -name ENABLE_LOW_VOLTAGE_MODE_ON_CONFIG_DEVICE On +set_global_assignment -name FLEX6K_ENABLE_LOW_VOLTAGE_MODE_ON_CONFIG_DEVICE Off +set_global_assignment -name FLEX10K_ENABLE_LOW_VOLTAGE_MODE_ON_CONFIG_DEVICE On +set_global_assignment -name MAX7000S_JTAG_USER_CODE FFFF +set_global_assignment -name STRATIX_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name APEX20K_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name MERCURY_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name FLEX10K_JTAG_USER_CODE 7F +set_global_assignment -name MAX7000_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name MAX7000_USE_CHECKSUM_AS_USERCODE Off +set_global_assignment -name USE_CHECKSUM_AS_USERCODE Off +set_global_assignment -name SECURITY_BIT Off +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family MAX7000B +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "HardCopy II" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Cyclone IV E" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Stratix IV" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Cyclone III" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "HardCopy Stratix" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family MAX7000AE +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family Cyclone +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "Stratix II GX" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "MAX II" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Arria II GX" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "Stratix GX" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "HardCopy III" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family MAX7000S +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "Cyclone II" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Cyclone IV GX" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "HardCopy IV" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Cyclone III LS" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Stratix III" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "Arria GX" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family MAX3000A +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "Stratix II" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family Stratix +set_global_assignment -name CYCLONEIII_CONFIGURATION_DEVICE Auto +set_global_assignment -name STRATIXII_CONFIGURATION_DEVICE Auto +set_global_assignment -name APEX20K_CONFIGURATION_DEVICE Auto +set_global_assignment -name MERCURY_CONFIGURATION_DEVICE Auto +set_global_assignment -name FLEX6K_CONFIGURATION_DEVICE Auto +set_global_assignment -name FLEX10K_CONFIGURATION_DEVICE Auto +set_global_assignment -name CYCLONE_CONFIGURATION_DEVICE Auto +set_global_assignment -name STRATIX_CONFIGURATION_DEVICE Auto +set_global_assignment -name APEX20K_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name STRATIX_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name MERCURY_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name FLEX10K_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name EPROM_USE_CHECKSUM_AS_USERCODE Off +set_global_assignment -name AUTO_INCREMENT_CONFIG_DEVICE_JTAG_USER_CODE On +set_global_assignment -name DISABLE_NCS_AND_OE_PULLUPS_ON_CONFIG_DEVICE Off +set_global_assignment -name GENERATE_TTF_FILE Off +set_global_assignment -name GENERATE_RBF_FILE Off +set_global_assignment -name GENERATE_HEX_FILE Off +set_global_assignment -name HEXOUT_FILE_START_ADDRESS 0 +set_global_assignment -name HEXOUT_FILE_COUNT_DIRECTION Up +set_global_assignment -name RESERVE_ALL_UNUSED_PINS_NO_OUTPUT_GND "As output driving an unspecified signal" +set_global_assignment -name RELEASE_CLEARS_BEFORE_TRI_STATES Off +set_global_assignment -name AUTO_RESTART_CONFIGURATION On +set_global_assignment -name HARDCOPYII_POWER_ON_EXTRA_DELAY Off +set_global_assignment -name STRATIXII_MRAM_COMPATIBILITY Off +set_global_assignment -name CYCLONEII_M4K_COMPATIBILITY On +set_global_assignment -name ENABLE_OCT_DONE Off +set_global_assignment -name USE_CHECKERED_PATTERN_AS_UNINITIALIZED_RAM_CONTENT Off +set_global_assignment -name START_TIME 0ns +set_global_assignment -name SIMULATION_MODE TIMING +set_global_assignment -name AUTO_USE_SIMULATION_PDB_NETLIST Off +set_global_assignment -name ADD_DEFAULT_PINS_TO_SIMULATION_OUTPUT_WAVEFORMS On +set_global_assignment -name SETUP_HOLD_DETECTION Off +set_global_assignment -name SETUP_HOLD_DETECTION_INPUT_REGISTERS_BIDIR_PINS_DISABLED Off +set_global_assignment -name CHECK_OUTPUTS Off +set_global_assignment -name SIMULATION_COVERAGE On +set_global_assignment -name SIMULATION_COMPLETE_COVERAGE_REPORT_PANEL On +set_global_assignment -name SIMULATION_MISSING_1_VALUE_COVERAGE_REPORT_PANEL On +set_global_assignment -name SIMULATION_MISSING_0_VALUE_COVERAGE_REPORT_PANEL On +set_global_assignment -name GLITCH_DETECTION Off +set_global_assignment -name GLITCH_INTERVAL 1ns +set_global_assignment -name SIMULATOR_GENERATE_SIGNAL_ACTIVITY_FILE Off +set_global_assignment -name SIMULATION_WITH_GLITCH_FILTERING_WHEN_GENERATING_SAF On +set_global_assignment -name SIMULATION_BUS_CHANNEL_GROUPING Off +set_global_assignment -name SIMULATION_VDB_RESULT_FLUSH On +set_global_assignment -name VECTOR_COMPARE_TRIGGER_MODE INPUT_EDGE +set_global_assignment -name SIMULATION_NETLIST_VIEWER Off +set_global_assignment -name SIMULATION_INTERCONNECT_DELAY_MODEL_TYPE TRANSPORT +set_global_assignment -name SIMULATION_CELL_DELAY_MODEL_TYPE TRANSPORT +set_global_assignment -name SIMULATOR_GENERATE_POWERPLAY_VCD_FILE Off +set_global_assignment -name SIMULATOR_PVT_TIMING_MODEL_TYPE AUTO +set_global_assignment -name SIMULATION_WITH_AUTO_GLITCH_FILTERING AUTO +set_global_assignment -name DRC_TOP_FANOUT 50 +set_global_assignment -name DRC_FANOUT_EXCEEDING 30 +set_global_assignment -name DRC_GATED_CLOCK_FEED 30 +set_global_assignment -name HARDCOPY_FLOW_AUTOMATION MIGRATION_ONLY +set_global_assignment -name ENABLE_DRC_SETTINGS Off +set_global_assignment -name CLK_RULE_CLKNET_CLKSPINES_THRESHOLD 25 +set_global_assignment -name DRC_DETAIL_MESSAGE_LIMIT 10 +set_global_assignment -name DRC_VIOLATION_MESSAGE_LIMIT 30 +set_global_assignment -name DRC_DEADLOCK_STATE_LIMIT 2 +set_global_assignment -name MERGE_HEX_FILE Off +set_global_assignment -name GENERATE_SVF_FILE Off +set_global_assignment -name GENERATE_ISC_FILE Off +set_global_assignment -name GENERATE_JAM_FILE Off +set_global_assignment -name GENERATE_JBC_FILE Off +set_global_assignment -name GENERATE_JBC_FILE_COMPRESSED On +set_global_assignment -name GENERATE_CONFIG_SVF_FILE Off +set_global_assignment -name GENERATE_CONFIG_ISC_FILE Off +set_global_assignment -name GENERATE_CONFIG_JAM_FILE Off +set_global_assignment -name GENERATE_CONFIG_JBC_FILE Off +set_global_assignment -name GENERATE_CONFIG_JBC_FILE_COMPRESSED On +set_global_assignment -name GENERATE_CONFIG_HEXOUT_FILE Off +set_global_assignment -name ISP_CLAMP_STATE_DEFAULT "Tri-state" +set_global_assignment -name SIGNALPROBE_ALLOW_OVERUSE Off +set_global_assignment -name SIGNALPROBE_DURING_NORMAL_COMPILATION Off +set_global_assignment -name LOGICLOCK_INCREMENTAL_COMPILE_ASSIGNMENT Off +set_global_assignment -name POWER_DEFAULT_TOGGLE_RATE 12.5% +set_global_assignment -name POWER_DEFAULT_INPUT_IO_TOGGLE_RATE 12.5% +set_global_assignment -name POWER_USE_PVA On +set_global_assignment -name POWER_USE_INPUT_FILE "No File" +set_global_assignment -name POWER_USE_INPUT_FILES Off +set_global_assignment -name POWER_VCD_FILTER_GLITCHES On +set_global_assignment -name POWER_REPORT_SIGNAL_ACTIVITY Off +set_global_assignment -name POWER_REPORT_POWER_DISSIPATION Off +set_global_assignment -name POWER_USE_DEVICE_CHARACTERISTICS TYPICAL +set_global_assignment -name POWER_AUTO_COMPUTE_TJ On +set_global_assignment -name POWER_TJ_VALUE 25 +set_global_assignment -name POWER_USE_TA_VALUE 25 +set_global_assignment -name POWER_USE_CUSTOM_COOLING_SOLUTION Off +set_global_assignment -name POWER_BOARD_TEMPERATURE 25 +set_global_assignment -name INCREMENTAL_COMPILATION FULL_INCREMENTAL_COMPILATION +set_global_assignment -name AUTO_EXPORT_INCREMENTAL_COMPILATION Off +set_global_assignment -name INCREMENTAL_COMPILATION_EXPORT_NETLIST_TYPE POST_FIT +set_global_assignment -name OUTPUT_IO_TIMING_ENDPOINT "Near End" +set_global_assignment -name RTLV_REMOVE_FANOUT_FREE_REGISTERS On +set_global_assignment -name RTLV_SIMPLIFIED_LOGIC On +set_global_assignment -name RTLV_GROUP_RELATED_NODES On +set_global_assignment -name RTLV_GROUP_COMB_LOGIC_IN_CLOUD Off +set_global_assignment -name RTLV_GROUP_COMB_LOGIC_IN_CLOUD_TMV Off +set_global_assignment -name RTLV_GROUP_RELATED_NODES_TMV On +set_global_assignment -name EQC_CONSTANT_DFF_DETECTION On +set_global_assignment -name EQC_DUPLICATE_DFF_DETECTION On +set_global_assignment -name EQC_BBOX_MERGE On +set_global_assignment -name EQC_LVDS_MERGE On +set_global_assignment -name EQC_RAM_UNMERGING On +set_global_assignment -name EQC_DFF_SS_EMULATION On +set_global_assignment -name EQC_RAM_REGISTER_UNPACK On +set_global_assignment -name EQC_MAC_REGISTER_UNPACK On +set_global_assignment -name EQC_SET_PARTITION_BB_TO_VCC_GND On +set_global_assignment -name EQC_STRUCTURE_MATCHING On +set_global_assignment -name EQC_AUTO_BREAK_CONE On +set_global_assignment -name EQC_POWER_UP_COMPARE Off +set_global_assignment -name EQC_AUTO_COMP_LOOP_CUT On +set_global_assignment -name EQC_AUTO_INVERSION On +set_global_assignment -name EQC_AUTO_TERMINATE On +set_global_assignment -name EQC_SUB_CONE_REPORT Off +set_global_assignment -name EQC_RENAMING_RULES On +set_global_assignment -name EQC_PARAMETER_CHECK On +set_global_assignment -name EQC_AUTO_PORTSWAP On +set_global_assignment -name EQC_DETECT_DONT_CARES On +set_global_assignment -name EQC_SHOW_ALL_MAPPED_POINTS Off +set_global_assignment -name DUTY_CYCLE 50 -section_id ? +set_global_assignment -name INVERT_BASE_CLOCK Off -section_id ? +set_global_assignment -name MULTIPLY_BASE_CLOCK_PERIOD_BY 1 -section_id ? +set_global_assignment -name DIVIDE_BASE_CLOCK_PERIOD_BY 1 -section_id ? +set_global_assignment -name EDA_INPUT_GND_NAME GND -section_id ? +set_global_assignment -name EDA_INPUT_VCC_NAME VCC -section_id ? +set_global_assignment -name EDA_INPUT_DATA_FORMAT NONE -section_id ? +set_global_assignment -name EDA_SHOW_LMF_MAPPING_MESSAGES Off -section_id ? +set_global_assignment -name EDA_RUN_TOOL_AUTOMATICALLY Off -section_id ? +set_global_assignment -name RESYNTHESIS_RETIMING FULL -section_id ? +set_global_assignment -name RESYNTHESIS_OPTIMIZATION_EFFORT Normal -section_id ? +set_global_assignment -name RESYNTHESIS_PHYSICAL_SYNTHESIS Normal -section_id ? +set_global_assignment -name USE_GENERATED_PHYSICAL_CONSTRAINTS On -section_id ? +set_global_assignment -name VCCPD_VOLTAGE 3.3V -section_id ? +set_global_assignment -name EDA_USER_COMPILED_SIMULATION_LIBRARY_DIRECTORY "" -section_id ? +set_global_assignment -name EDA_LAUNCH_CMD_LINE_TOOL Off -section_id ? +set_global_assignment -name EDA_NATIVELINK_GENERATE_SCRIPT_ONLY Off -section_id ? +set_global_assignment -name EDA_WAIT_FOR_GUI_TOOL_COMPLETION Off -section_id ? +set_global_assignment -name EDA_TRUNCATE_LONG_HIERARCHY_PATHS Off -section_id ? +set_global_assignment -name EDA_FLATTEN_BUSES Off -section_id ? +set_global_assignment -name EDA_MAP_ILLEGAL_CHARACTERS Off -section_id ? +set_global_assignment -name EDA_GENERATE_TIMING_CLOSURE_DATA Off -section_id ? +set_global_assignment -name EDA_GENERATE_POWER_INPUT_FILE Off -section_id ? +set_global_assignment -name EDA_TEST_BENCH_ENABLE_STATUS NOT_USED -section_id ? +set_global_assignment -name EDA_RTL_SIM_MODE NOT_USED -section_id ? +set_global_assignment -name EDA_MAINTAIN_DESIGN_HIERARCHY Off -section_id ? +set_global_assignment -name EDA_GENERATE_FUNCTIONAL_NETLIST Off -section_id ? +set_global_assignment -name EDA_WRITE_DEVICE_CONTROL_PORTS Off -section_id ? +set_global_assignment -name EDA_SIMULATION_VCD_OUTPUT_TCL_FILE Off -section_id ? +set_global_assignment -name EDA_SIMULATION_VCD_OUTPUT_SIGNALS_TO_TCL_FILE "All Except Combinational Logic Element Outputs" -section_id ? +set_global_assignment -name EDA_ENABLE_GLITCH_FILTERING Off -section_id ? +set_global_assignment -name EDA_WRITE_NODES_FOR_POWER_ESTIMATION OFF -section_id ? +set_global_assignment -name EDA_SETUP_HOLD_DETECTION_INPUT_REGISTERS_BIDIR_PINS_DISABLED Off -section_id ? +set_global_assignment -name EDA_WRITER_DONT_WRITE_TOP_ENTITY Off -section_id ? +set_global_assignment -name EDA_VHDL_ARCH_NAME structure -section_id ? +set_global_assignment -name EDA_IBIS_MODEL_SELECTOR Off -section_id ? +set_global_assignment -name EDA_IBIS_MUTUAL_COUPLING Off -section_id ? +set_global_assignment -name EDA_FORMAL_VERIFICATION_ALLOW_RETIMING Off -section_id ? +set_global_assignment -name EDA_BOARD_BOUNDARY_SCAN_OPERATION PRE_CONFIG -section_id ? +set_global_assignment -name EDA_GENERATE_RTL_SIMULATION_COMMAND_SCRIPT Off -section_id ? +set_global_assignment -name EDA_GENERATE_GATE_LEVEL_SIMULATION_COMMAND_SCRIPT Off -section_id ? +set_global_assignment -name SIM_VECTOR_COMPARED_CLOCK_OFFSET 0ns -section_id ? +set_global_assignment -name SIM_VECTOR_COMPARED_CLOCK_DUTY_CYCLE 50 -section_id ? +set_global_assignment -name APEX20K_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name MAX7K_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name MERCURY_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name FLEX6K_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name FLEX10K_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name PARTITION_IMPORT_ASSIGNMENTS On -section_id ? -entity ? +set_global_assignment -name PARTITION_IMPORT_EXISTING_ASSIGNMENTS REPLACE_CONFLICTING -section_id ? -entity ? +set_global_assignment -name PARTITION_IMPORT_EXISTING_LOGICLOCK_REGIONS REPLACE_CONFLICTING -section_id ? -entity ? +set_global_assignment -name PARTITION_IMPORT_PROMOTE_ASSIGNMENTS On -section_id ? -entity ? diff --git a/FPGA_quartus/firebeei1.qpf b/FPGA_quartus/firebeei1.qpf new file mode 100644 index 0000000..8ab6c97 --- /dev/null +++ b/FPGA_quartus/firebeei1.qpf @@ -0,0 +1,23 @@ +# Copyright (C) 1991-2008 Altera Corporation +# Your use of Altera Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Altera Program License +# Subscription Agreement, Altera MegaCore Function License +# Agreement, or other applicable license agreement, including, +# without limitation, that your use is for the sole purpose of +# programming logic devices manufactured by Altera and sold by +# Altera or its authorized distributors. Please refer to the +# applicable agreement for further details. + + + +QUARTUS_VERSION = "8.1" +DATE = "10:07:29 September 03, 2009" + + +# Revisions + +PROJECT_REVISION = "firebee1" diff --git a/FPGA_quartus/firebeei1.qws b/FPGA_quartus/firebeei1.qws new file mode 100644 index 0000000..89bdcec --- /dev/null +++ b/FPGA_quartus/firebeei1.qws @@ -0,0 +1,27 @@ +[ProjectWorkspace] +ptn_Child1=Frames +[ProjectWorkspace.Frames] +ptn_Child1=ChildFrames +[ProjectWorkspace.Frames.ChildFrames] +ptn_Child1=Document-0 +ptn_Child2=Document-1 +ptn_Child3=Document-2 +ptn_Child4=Document-3 +[ProjectWorkspace.Frames.ChildFrames.Document-0] +ptn_Child1=ViewFrame-0 +[ProjectWorkspace.Frames.ChildFrames.Document-0.ViewFrame-0] +DocPathName=firebee1.bdf +DocumentCLSID={7b19e8f2-2bbe-11d1-a082-0020affa5bde} +IsChildFrameDetached=False +IsActiveChildFrame=False +ptn_Child1=StateMap +[ProjectWorkspace.Frames.ChildFrames.Document-1] +ptn_Child1=ViewFrame-0 +[ProjectWorkspace.Frames.ChildFrames.Document-1.ViewFrame-0] +DocPathName=FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF.vhd +DocumentCLSID={ca385d57-a4c7-11d1-a098-0020affa43f2} +IsChildFrameDetached=False +IsActiveChildFrame=False +ptn_Child1=StateMap +[ProjectWorkspace.Frames.ChildFrames.Document-1.ViewFrame-0.StateMap] +AFC_IN_REPORT=False diff --git a/FPGA_quartus/lpm_bustri_BYT.bsf b/FPGA_quartus/lpm_bustri_BYT.bsf new file mode 100644 index 0000000..dcc4b63 --- /dev/null +++ b/FPGA_quartus/lpm_bustri_BYT.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 96 40) + (text "lpm_bustri_BYT" (rect 2 1 110 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 24 25 36)(font "Arial" )) + (port + (pt 40 40) + (input) + (text "enabledt" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "enabledt" (rect 40 -6 53 36)(font "Arial" (font_size 8))(invisible)) + (line (pt 40 40)(pt 40 28)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "data[7..0]" (rect 0 0 53 14)(font "Arial" (font_size 8))) + (text "data[7..0]" (rect -3 -21 10 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 32 24)(line_width 3)) + ) + (port + (pt 96 24) + (bidir) + (text "tridata[7..0]" (rect 0 0 63 14)(font "Arial" (font_size 8))) + (text "tridata[7..0]" (rect 100 -30 113 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 96 24)(pt 48 24)(line_width 3)) + ) + (drawing + (text "8" (rect 71 25 76 37)(font "Arial" )) + (text "8" (rect 15 25 20 37)(font "Arial" )) + (line (pt 32 16)(pt 48 24)(line_width 1)) + (line (pt 48 24)(pt 32 32)(line_width 1)) + (line (pt 32 32)(pt 32 16)(line_width 1)) + (line (pt 66 28)(pt 74 20)(line_width 1)) + (line (pt 10 28)(pt 18 20)(line_width 1)) + ) +) diff --git a/FPGA_quartus/lpm_bustri_BYT.cmp b/FPGA_quartus/lpm_bustri_BYT.cmp new file mode 100644 index 0000000..3cf925e --- /dev/null +++ b/FPGA_quartus/lpm_bustri_BYT.cmp @@ -0,0 +1,23 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_bustri_BYT + PORT + ( + data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + enabledt : IN STD_LOGIC ; + tridata : INOUT STD_LOGIC_VECTOR (7 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/lpm_bustri_BYT.inc b/FPGA_quartus/lpm_bustri_BYT.inc new file mode 100644 index 0000000..8cb4941 --- /dev/null +++ b/FPGA_quartus/lpm_bustri_BYT.inc @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_bustri_BYT +( + data[7..0], + enabledt +) + +RETURNS ( + tridata[7..0] +); diff --git a/FPGA_quartus/lpm_bustri_BYT.qip b/FPGA_quartus/lpm_bustri_BYT.qip new file mode 100644 index 0000000..89e40bd --- /dev/null +++ b/FPGA_quartus/lpm_bustri_BYT.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_BUSTRI" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_bustri_BYT.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri_BYT.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri_BYT.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri_BYT.cmp"] diff --git a/FPGA_quartus/lpm_bustri_BYT.vhd b/FPGA_quartus/lpm_bustri_BYT.vhd new file mode 100644 index 0000000..d24e3cb --- /dev/null +++ b/FPGA_quartus/lpm_bustri_BYT.vhd @@ -0,0 +1,107 @@ +-- megafunction wizard: %LPM_BUSTRI% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_bustri + +-- ============================================================ +-- File Name: lpm_bustri_BYT.vhd +-- Megafunction Name(s): +-- lpm_bustri +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_bustri_BYT IS + PORT + ( + data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + enabledt : IN STD_LOGIC ; + tridata : INOUT STD_LOGIC_VECTOR (7 DOWNTO 0) + ); +END lpm_bustri_BYT; + + +ARCHITECTURE SYN OF lpm_bustri_byt IS + + + + + COMPONENT lpm_bustri + GENERIC ( + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + enabledt : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + tridata : INOUT STD_LOGIC_VECTOR (7 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + + lpm_bustri_component : lpm_bustri + GENERIC MAP ( + lpm_type => "LPM_BUSTRI", + lpm_width => 8 + ) + PORT MAP ( + enabledt => enabledt, + data => data, + tridata => tridata + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: BiDir NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "8" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_BUSTRI" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "8" +-- Retrieval info: USED_PORT: data 0 0 8 0 INPUT NODEFVAL data[7..0] +-- Retrieval info: USED_PORT: enabledt 0 0 0 0 INPUT NODEFVAL enabledt +-- Retrieval info: USED_PORT: tridata 0 0 8 0 BIDIR NODEFVAL tridata[7..0] +-- Retrieval info: CONNECT: tridata 0 0 8 0 @tridata 0 0 8 0 +-- Retrieval info: CONNECT: @data 0 0 8 0 data 0 0 8 0 +-- Retrieval info: CONNECT: @enabledt 0 0 0 0 enabledt 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri_BYT.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri_BYT.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri_BYT.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri_BYT.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri_BYT_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/lpm_bustri_LONG.bsf b/FPGA_quartus/lpm_bustri_LONG.bsf new file mode 100644 index 0000000..6535d3e --- /dev/null +++ b/FPGA_quartus/lpm_bustri_LONG.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 112 40) + (text "lpm_bustri_LONG" (rect 5 1 126 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 24 25 36)(font "Arial" )) + (port + (pt 40 40) + (input) + (text "enabledt" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "enabledt" (rect 40 -6 53 36)(font "Arial" (font_size 8))(invisible)) + (line (pt 40 40)(pt 40 28)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "data[31..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "data[31..0]" (rect -3 -27 10 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 32 24)(line_width 3)) + ) + (port + (pt 112 24) + (bidir) + (text "tridata[31..0]" (rect 0 0 70 14)(font "Arial" (font_size 8))) + (text "tridata[31..0]" (rect 116 -36 129 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 112 24)(pt 48 24)(line_width 3)) + ) + (drawing + (text "32" (rect 77 25 87 37)(font "Arial" )) + (text "32" (rect 13 25 23 37)(font "Arial" )) + (line (pt 32 16)(pt 48 24)(line_width 1)) + (line (pt 48 24)(pt 32 32)(line_width 1)) + (line (pt 32 32)(pt 32 16)(line_width 1)) + (line (pt 72 28)(pt 80 20)(line_width 1)) + (line (pt 8 28)(pt 16 20)(line_width 1)) + ) +) diff --git a/FPGA_quartus/lpm_bustri_LONG.cmp b/FPGA_quartus/lpm_bustri_LONG.cmp new file mode 100644 index 0000000..3a268db --- /dev/null +++ b/FPGA_quartus/lpm_bustri_LONG.cmp @@ -0,0 +1,23 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_bustri_LONG + PORT + ( + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + enabledt : IN STD_LOGIC ; + tridata : INOUT STD_LOGIC_VECTOR (31 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/lpm_bustri_LONG.inc b/FPGA_quartus/lpm_bustri_LONG.inc new file mode 100644 index 0000000..f180c48 --- /dev/null +++ b/FPGA_quartus/lpm_bustri_LONG.inc @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_bustri_LONG +( + data[31..0], + enabledt +) + +RETURNS ( + tridata[31..0] +); diff --git a/FPGA_quartus/lpm_bustri_LONG.qip b/FPGA_quartus/lpm_bustri_LONG.qip new file mode 100644 index 0000000..67b7232 --- /dev/null +++ b/FPGA_quartus/lpm_bustri_LONG.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_BUSTRI" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_bustri_LONG.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri_LONG.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri_LONG.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri_LONG.cmp"] diff --git a/FPGA_quartus/lpm_bustri_LONG.vhd b/FPGA_quartus/lpm_bustri_LONG.vhd new file mode 100644 index 0000000..3de83c0 --- /dev/null +++ b/FPGA_quartus/lpm_bustri_LONG.vhd @@ -0,0 +1,107 @@ +-- megafunction wizard: %LPM_BUSTRI% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_bustri + +-- ============================================================ +-- File Name: lpm_bustri_LONG.vhd +-- Megafunction Name(s): +-- lpm_bustri +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_bustri_LONG IS + PORT + ( + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + enabledt : IN STD_LOGIC ; + tridata : INOUT STD_LOGIC_VECTOR (31 DOWNTO 0) + ); +END lpm_bustri_LONG; + + +ARCHITECTURE SYN OF lpm_bustri_long IS + + + + + COMPONENT lpm_bustri + GENERIC ( + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + enabledt : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + tridata : INOUT STD_LOGIC_VECTOR (31 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + + lpm_bustri_component : lpm_bustri + GENERIC MAP ( + lpm_type => "LPM_BUSTRI", + lpm_width => 32 + ) + PORT MAP ( + enabledt => enabledt, + data => data, + tridata => tridata + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: BiDir NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "32" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_BUSTRI" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "32" +-- Retrieval info: USED_PORT: data 0 0 32 0 INPUT NODEFVAL data[31..0] +-- Retrieval info: USED_PORT: enabledt 0 0 0 0 INPUT NODEFVAL enabledt +-- Retrieval info: USED_PORT: tridata 0 0 32 0 BIDIR NODEFVAL tridata[31..0] +-- Retrieval info: CONNECT: tridata 0 0 32 0 @tridata 0 0 32 0 +-- Retrieval info: CONNECT: @data 0 0 32 0 data 0 0 32 0 +-- Retrieval info: CONNECT: @enabledt 0 0 0 0 enabledt 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri_LONG.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri_LONG.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri_LONG.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri_LONG.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri_LONG_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/lpm_bustri_WORD.bsf b/FPGA_quartus/lpm_bustri_WORD.bsf new file mode 100644 index 0000000..4e882d1 --- /dev/null +++ b/FPGA_quartus/lpm_bustri_WORD.bsf @@ -0,0 +1,56 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 112 40) + (text "lpm_bustri_WORD" (rect 2 1 129 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 24 25 36)(font "Arial" )) + (port + (pt 40 40) + (input) + (text "enabledt" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "enabledt" (rect 40 -6 53 36)(font "Arial" (font_size 8))(invisible)) + (line (pt 40 40)(pt 40 28)(line_width 1)) + ) + (port + (pt 0 24) + (input) + (text "data[15..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "data[15..0]" (rect -3 -27 10 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 0 24)(pt 32 24)(line_width 3)) + ) + (port + (pt 112 24) + (bidir) + (text "tridata[15..0]" (rect 0 0 70 14)(font "Arial" (font_size 8))) + (text "tridata[15..0]" (rect 116 -36 129 24)(font "Arial" (font_size 8))(invisible)) + (line (pt 112 24)(pt 48 24)(line_width 3)) + ) + (drawing + (text "16" (rect 77 25 87 37)(font "Arial" )) + (text "16" (rect 13 25 23 37)(font "Arial" )) + (line (pt 32 16)(pt 48 24)(line_width 1)) + (line (pt 48 24)(pt 32 32)(line_width 1)) + (line (pt 32 32)(pt 32 16)(line_width 1)) + (line (pt 72 28)(pt 80 20)(line_width 1)) + (line (pt 8 28)(pt 16 20)(line_width 1)) + ) +) diff --git a/FPGA_quartus/lpm_bustri_WORD.cmp b/FPGA_quartus/lpm_bustri_WORD.cmp new file mode 100644 index 0000000..1f03a0e --- /dev/null +++ b/FPGA_quartus/lpm_bustri_WORD.cmp @@ -0,0 +1,23 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_bustri_WORD + PORT + ( + data : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + enabledt : IN STD_LOGIC ; + tridata : INOUT STD_LOGIC_VECTOR (15 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/lpm_bustri_WORD.inc b/FPGA_quartus/lpm_bustri_WORD.inc new file mode 100644 index 0000000..09f6251 --- /dev/null +++ b/FPGA_quartus/lpm_bustri_WORD.inc @@ -0,0 +1,24 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +FUNCTION lpm_bustri_WORD +( + data[15..0], + enabledt +) + +RETURNS ( + tridata[15..0] +); diff --git a/FPGA_quartus/lpm_bustri_WORD.qip b/FPGA_quartus/lpm_bustri_WORD.qip new file mode 100644 index 0000000..57bbe2e --- /dev/null +++ b/FPGA_quartus/lpm_bustri_WORD.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_BUSTRI" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_bustri_WORD.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri_WORD.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri_WORD.inc"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_bustri_WORD.cmp"] diff --git a/FPGA_quartus/lpm_bustri_WORD.vhd b/FPGA_quartus/lpm_bustri_WORD.vhd new file mode 100644 index 0000000..85cbdd1 --- /dev/null +++ b/FPGA_quartus/lpm_bustri_WORD.vhd @@ -0,0 +1,107 @@ +-- megafunction wizard: %LPM_BUSTRI% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_bustri + +-- ============================================================ +-- File Name: lpm_bustri_WORD.vhd +-- Megafunction Name(s): +-- lpm_bustri +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_bustri_WORD IS + PORT + ( + data : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + enabledt : IN STD_LOGIC ; + tridata : INOUT STD_LOGIC_VECTOR (15 DOWNTO 0) + ); +END lpm_bustri_WORD; + + +ARCHITECTURE SYN OF lpm_bustri_word IS + + + + + COMPONENT lpm_bustri + GENERIC ( + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + enabledt : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + tridata : INOUT STD_LOGIC_VECTOR (15 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + + lpm_bustri_component : lpm_bustri + GENERIC MAP ( + lpm_type => "LPM_BUSTRI", + lpm_width => 16 + ) + PORT MAP ( + enabledt => enabledt, + data => data, + tridata => tridata + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: BiDir NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "16" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_BUSTRI" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "16" +-- Retrieval info: USED_PORT: data 0 0 16 0 INPUT NODEFVAL data[15..0] +-- Retrieval info: USED_PORT: enabledt 0 0 0 0 INPUT NODEFVAL enabledt +-- Retrieval info: USED_PORT: tridata 0 0 16 0 BIDIR NODEFVAL tridata[15..0] +-- Retrieval info: CONNECT: tridata 0 0 16 0 @tridata 0 0 16 0 +-- Retrieval info: CONNECT: @data 0 0 16 0 data 0 0 16 0 +-- Retrieval info: CONNECT: @enabledt 0 0 0 0 enabledt 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri_WORD.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri_WORD.inc TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri_WORD.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri_WORD.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_bustri_WORD_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/lpm_counter0.bsf b/FPGA_quartus/lpm_counter0.bsf new file mode 100644 index 0000000..7fc7aaa --- /dev/null +++ b/FPGA_quartus/lpm_counter0.bsf @@ -0,0 +1,49 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 144 64) + (text "lpm_counter0" (rect 33 1 125 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 48 25 60)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "clock" (rect 0 0 29 14)(font "Arial" (font_size 8))) + (text "clock" (rect 26 26 49 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 144 40) + (output) + (text "q[17..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "q[17..0]" (rect 89 34 125 47)(font "Arial" (font_size 8))) + (line (pt 144 40)(pt 128 40)(line_width 3)) + ) + (drawing + (text "up counter" (rect 84 17 128 29)(font "Arial" )) + (line (pt 16 16)(pt 128 16)(line_width 1)) + (line (pt 128 16)(pt 128 48)(line_width 1)) + (line (pt 128 48)(pt 16 48)(line_width 1)) + (line (pt 16 48)(pt 16 16)(line_width 1)) + (line (pt 16 26)(pt 22 32)(line_width 1)) + (line (pt 22 32)(pt 16 38)(line_width 1)) + ) +) diff --git a/FPGA_quartus/lpm_counter0.cmp b/FPGA_quartus/lpm_counter0.cmp new file mode 100644 index 0000000..ad18248 --- /dev/null +++ b/FPGA_quartus/lpm_counter0.cmp @@ -0,0 +1,22 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_counter0 + PORT + ( + clock : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (17 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/lpm_counter0.qip b/FPGA_quartus/lpm_counter0.qip new file mode 100644 index 0000000..a72845b --- /dev/null +++ b/FPGA_quartus/lpm_counter0.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_COUNTER" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_counter0.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_counter0.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_counter0.cmp"] diff --git a/FPGA_quartus/lpm_counter0.vhd b/FPGA_quartus/lpm_counter0.vhd new file mode 100644 index 0000000..9135dbc --- /dev/null +++ b/FPGA_quartus/lpm_counter0.vhd @@ -0,0 +1,126 @@ +-- megafunction wizard: %LPM_COUNTER% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_counter + +-- ============================================================ +-- File Name: lpm_counter0.vhd +-- Megafunction Name(s): +-- lpm_counter +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_counter0 IS + PORT + ( + clock : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (17 DOWNTO 0) + ); +END lpm_counter0; + + +ARCHITECTURE SYN OF lpm_counter0 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (17 DOWNTO 0); + + + + COMPONENT lpm_counter + GENERIC ( + lpm_direction : STRING; + lpm_port_updown : STRING; + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + clock : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (17 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(17 DOWNTO 0); + + lpm_counter_component : lpm_counter + GENERIC MAP ( + lpm_direction => "UP", + lpm_port_updown => "PORT_UNUSED", + lpm_type => "LPM_COUNTER", + lpm_width => 18 + ) + PORT MAP ( + clock => clock, + q => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACLR NUMERIC "0" +-- Retrieval info: PRIVATE: ALOAD NUMERIC "0" +-- Retrieval info: PRIVATE: ASET NUMERIC "0" +-- Retrieval info: PRIVATE: ASET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: CLK_EN NUMERIC "0" +-- Retrieval info: PRIVATE: CNT_EN NUMERIC "0" +-- Retrieval info: PRIVATE: CarryIn NUMERIC "0" +-- Retrieval info: PRIVATE: CarryOut NUMERIC "0" +-- Retrieval info: PRIVATE: Direction NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: ModulusCounter NUMERIC "0" +-- Retrieval info: PRIVATE: ModulusValue NUMERIC "0" +-- Retrieval info: PRIVATE: SCLR NUMERIC "0" +-- Retrieval info: PRIVATE: SLOAD NUMERIC "0" +-- Retrieval info: PRIVATE: SSET NUMERIC "0" +-- Retrieval info: PRIVATE: SSET_ALL1 NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "18" +-- Retrieval info: CONSTANT: LPM_DIRECTION STRING "UP" +-- Retrieval info: CONSTANT: LPM_PORT_UPDOWN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_COUNTER" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "18" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock +-- Retrieval info: USED_PORT: q 0 0 18 0 OUTPUT NODEFVAL q[17..0] +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: q 0 0 18 0 @q 0 0 18 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_counter0.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_counter0.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_counter0.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_counter0.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_counter0_inst.vhd FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_counter0_waveforms.html TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_counter0_wave*.jpg FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/lpm_counter0_wave0.jpg b/FPGA_quartus/lpm_counter0_wave0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3a63bcbcc1f48a55e3e3abcd611ca603eafc855d GIT binary patch literal 56372 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 + +Sample Waveforms for lpm_counter0.vhd + + +

Sample behavioral waveforms for design file lpm_counter0.vhd

+

The following waveforms show the behavior of lpm_counter megafunction for the chosen set of parameters in design lpm_counter0.vhd. The design lpm_counter0.vhd is a 18 bit up counter.

+
+

Fig. 1 : Wave showing counter operation.

+

+

+ + diff --git a/FPGA_quartus/lpm_counter1_waveforms.html b/FPGA_quartus/lpm_counter1_waveforms.html new file mode 100644 index 0000000..cea3320 --- /dev/null +++ b/FPGA_quartus/lpm_counter1_waveforms.html @@ -0,0 +1,16 @@ + + +Sample Waveforms for lpm_counter1.vhd + + +

Sample behavioral waveforms for design file lpm_counter1.vhd

+

The following waveforms show the behavior of lpm_counter megafunction for the chosen set of parameters in design lpm_counter1.vhd. The design lpm_counter1.vhd is a 4 bit up modulus 8 counter.

+
+

Fig. 1 : Wave showing counter operation.

+

+
+

Fig. 2 : Wave showing counter cout and/or modulus operation.

+

The counter counts till the modulus value 7.

+

+ + diff --git a/FPGA_quartus/lpm_fifo_dc0_waveforms.html b/FPGA_quartus/lpm_fifo_dc0_waveforms.html new file mode 100644 index 0000000..12ad5c2 --- /dev/null +++ b/FPGA_quartus/lpm_fifo_dc0_waveforms.html @@ -0,0 +1,16 @@ + + +Sample Waveforms for "lpm_fifo_dc0.vhd" + + +

Sample behavioral waveforms for design file "lpm_fifo_dc0.vhd"

+

The following waveforms show the behavior of dcfifo_mixed_widths megafunction for the chosen set of parameters in design "lpm_fifo_dc0.vhd". The design "lpm_fifo_dc0.vhd" has a write-side depth of 32 words of 8 bits each. a read-side width of 32. The fifo is in legacy synchronous mode. The data becomes available after 'rdreq' is asserted; 'rdreq' acts as a read request.

+
+

Fig. 1 : Wave showing read and write operation.

+

The above waveform shows the behavior of the design under normal read and write conditions .

+
+

Fig. 2 : Wave showing FIFO full operation.

+

The above waveform shows the behavior of the FIFO under wrfull condition. In the example above, data is written into the FIFO till it is full, then data is read back.

+

+ + diff --git a/FPGA_quartus/lpm_latch0.bsf b/FPGA_quartus/lpm_latch0.bsf new file mode 100644 index 0000000..ddb325c --- /dev/null +++ b/FPGA_quartus/lpm_latch0.bsf @@ -0,0 +1,53 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2008 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 160 80) + (text "lpm_latch0" (rect 49 1 123 17)(font "Arial" (font_size 10))) + (text "inst" (rect 8 64 25 76)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "data[31..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "data[31..0]" (rect 20 26 71 39)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "gate" (rect 0 0 24 14)(font "Arial" (font_size 8))) + (text "gate" (rect 20 42 41 55)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 160 32) + (output) + (text "q[31..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "q[31..0]" (rect 105 26 141 39)(font "Arial" (font_size 8))) + (line (pt 160 32)(pt 144 32)(line_width 3)) + ) + (drawing + (line (pt 16 16)(pt 144 16)(line_width 1)) + (line (pt 144 16)(pt 144 64)(line_width 1)) + (line (pt 144 64)(pt 16 64)(line_width 1)) + (line (pt 16 64)(pt 16 16)(line_width 1)) + ) +) diff --git a/FPGA_quartus/lpm_latch0.cmp b/FPGA_quartus/lpm_latch0.cmp new file mode 100644 index 0000000..87fbc04 --- /dev/null +++ b/FPGA_quartus/lpm_latch0.cmp @@ -0,0 +1,23 @@ +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +component lpm_latch0 + PORT + ( + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + gate : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (31 DOWNTO 0) + ); +end component; diff --git a/FPGA_quartus/lpm_latch0.qip b/FPGA_quartus/lpm_latch0.qip new file mode 100644 index 0000000..1bda27a --- /dev/null +++ b/FPGA_quartus/lpm_latch0.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_LATCH" +set_global_assignment -name IP_TOOL_VERSION "8.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "lpm_latch0.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_latch0.bsf"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "lpm_latch0.cmp"] diff --git a/FPGA_quartus/lpm_latch0.vhd b/FPGA_quartus/lpm_latch0.vhd new file mode 100644 index 0000000..1eda161 --- /dev/null +++ b/FPGA_quartus/lpm_latch0.vhd @@ -0,0 +1,110 @@ +-- megafunction wizard: %LPM_LATCH% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: lpm_latch + +-- ============================================================ +-- File Name: lpm_latch0.vhd +-- Megafunction Name(s): +-- lpm_latch +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 8.1 Build 163 10/28/2008 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2008 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.all; + +ENTITY lpm_latch0 IS + PORT + ( + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + gate : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (31 DOWNTO 0) + ); +END lpm_latch0; + + +ARCHITECTURE SYN OF lpm_latch0 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (31 DOWNTO 0); + + + + COMPONENT lpm_latch + GENERIC ( + lpm_type : STRING; + lpm_width : NATURAL + ); + PORT ( + q : OUT STD_LOGIC_VECTOR (31 DOWNTO 0); + data : IN STD_LOGIC_VECTOR (31 DOWNTO 0); + gate : IN STD_LOGIC + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(31 DOWNTO 0); + + lpm_latch_component : lpm_latch + GENERIC MAP ( + lpm_type => "LPM_LATCH", + lpm_width => 32 + ) + PORT MAP ( + data => data, + gate => gate, + q => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: aclr NUMERIC "0" +-- Retrieval info: PRIVATE: aset NUMERIC "0" +-- Retrieval info: PRIVATE: nBit NUMERIC "32" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_LATCH" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "32" +-- Retrieval info: USED_PORT: data 0 0 32 0 INPUT NODEFVAL data[31..0] +-- Retrieval info: USED_PORT: gate 0 0 0 0 INPUT NODEFVAL gate +-- Retrieval info: USED_PORT: q 0 0 32 0 OUTPUT NODEFVAL q[31..0] +-- Retrieval info: CONNECT: @data 0 0 32 0 data 0 0 32 0 +-- Retrieval info: CONNECT: q 0 0 32 0 @q 0 0 32 0 +-- Retrieval info: CONNECT: @gate 0 0 0 0 gate 0 0 0 0 +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_latch0.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_latch0.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_latch0.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_latch0.bsf TRUE FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_latch0_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/FPGA_quartus/serv_req_info.txt b/FPGA_quartus/serv_req_info.txt new file mode 100644 index 0000000..51a4176 --- /dev/null +++ b/FPGA_quartus/serv_req_info.txt @@ -0,0 +1,115 @@ + + quartus.exe + VDB + /quartus/db/vdb/vdb_value_bus.cpp + 4101 + + 0x0382cb44: db_vdb + 0x5cb44 (?get_element@VDB_VALUE_BUS@@QBIPAVVDB_VALUE@@I@Z + 0x54) + + loc < m_value->size() + Tue Oct 13 17:01:46 2009 + Quartus II Version 8.1 Build 163 10/28/2008 SJ Web Edition + loc < m_value->size() +Quartus II Version 8.1 Build 163 10/28/2008 SJ Web Edition + + + + quartus.exe + VDB + /quartus/db/vdb/vdb_value_bus.cpp + 4101 + + 0x0382cb44: db_vdb + 0x5cb44 (?get_element@VDB_VALUE_BUS@@QBIPAVVDB_VALUE@@I@Z + 0x54) + + loc < m_value->size() + Tue Oct 13 17:11:00 2009 + Quartus II Version 8.1 Build 163 10/28/2008 SJ Web Edition + loc < m_value->size() +Quartus II Version 8.1 Build 163 10/28/2008 SJ Web Edition + + + + quartus.exe + unknown + unknown + 0 + Current editor: GED + Wed Oct 14 23:17:06 2009 + Quartus II Version 8.1 Build 163 10/28/2008 SJ Web Edition + Access Violation at 00000000 +Current editor: GED +Quartus II Version 8.1 Build 163 10/28/2008 SJ Web Edition + + + + quartus.exe + unknown + unknown + 0 + Current editor: SFW, STED + Thu Oct 15 19:23:19 2009 + Quartus II Version 8.1 Build 163 10/28/2008 SJ Web Edition + Access Violation at 00000000 +Current editor: SFW, STED +Quartus II Version 8.1 Build 163 10/28/2008 SJ Web Edition + + + + quartus.exe + unknown + unknown + 0 + + 0x1002d196: GCL_AFC + 0x2d196 (?open_document_file@AFC_TEMPLATE_MANAGER@@UAIPAVCDocument@@PBDPBVAFC_DOC_INFO@@PAVAFC_PROJECT_STATE_MAP@@_N33@Z + 0x7b6) + + Current editor: RPW, SFW +Current dockable window: PJN + Fri Oct 16 00:14:03 2009 + Quartus II Version 8.1 Build 163 10/28/2008 SJ Web Edition + Access Violation at 0X1002D196 +Current editor: RPW, SFW +Current dockable window: PJN +Quartus II Version 8.1 Build 163 10/28/2008 SJ Web Edition + + + + quartus.exe + unknown + unknown + 0 + Current editor: SFW + Sat Oct 17 19:01:54 2009 + Quartus II Version 8.1 Build 163 10/28/2008 SJ Web Edition + Access Violation at 00000000 +Current editor: SFW +Quartus II Version 8.1 Build 163 10/28/2008 SJ Web Edition + + + + quartus.exe + AFC + /quartus/gcl/afc/afc_child_frame.cpp + 1940 + + 0x100084fa: GCL_AFC + 0x84fa (?enable_docking@AFC_CHILD_FRAME@@QAIXK@Z + 0x7a) + + (bar != NULL) && bar->Create(this, WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CHILD | WS_VISIBLE | m_s_dock_bar_map[i][1], 0, m_s_dock_bar_map[i][0]) + Mon Oct 19 21:58:36 2009 + Quartus II Version 8.1 Build 163 10/28/2008 SJ Web Edition + (bar != NULL) && bar->Create(this, WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CHILD | WS_VISIBLE | m_s_dock_bar_map[i][1], 0, m_s_dock_bar_map[i][0]) +Quartus II Version 8.1 Build 163 10/28/2008 SJ Web Edition + + + + quartus.exe + unknown + unknown + 0 + Current editor: RPW, GED + Tue Oct 20 00:53:11 2009 + Quartus II Version 8.1 Build 163 10/28/2008 SJ Web Edition + Access Violation at 00000000 +Current editor: RPW, GED +Quartus II Version 8.1 Build 163 10/28/2008 SJ Web Edition + + diff --git a/FPGA_quartus/undo_redo.txt b/FPGA_quartus/undo_redo.txt new file mode 100644 index 0000000..e69de29 diff --git a/Flash/BaS_15_12_10.S19 b/Flash/BaS_15_12_10.S19 new file mode 100644 index 0000000..27a561c --- /dev/null +++ b/Flash/BaS_15_12_10.S19 @@ -0,0 +1,362 @@ +S0030000FC +S321E000000060064EF9E000000846FC2700203CFF0000004E7B0C0F23C0FF10084483 +S321E000001C203CFF0400014E7B0008428023C0FF040000203CFF1000074E7B0C04BE +S321E0000038203CFF1010014E7B0C054FF9FF100FFC203C000C81004E7B00024E719B +S321E000005460FF00000D0E4E7541F9FF00090020BCFFFFFFFF41F9FF00090410BC41 +S321E0000070000541F9FF00860C20BC534C542041F9FF00860C20BC4F4B212041F913 +S321E000008CFF00860C20BC00000A0D4E7541F9FF000A4310BC00FF41F9FF000A4453 +S321E00000A830BCF3CF41F9FF000A4830BC023F41F9FF000A4A30BC023F41F9FF00FD +S321E00000C40A4C10BC000C41F9FF000A4E10BC00FC41F9FF000A4F10BC00FC41F91F +S321E00000E0FF000A5030BC1FFF41F9FF000A5210BC002D41F9FF000A1710BC001EE9 +S321E00000FC4E7551FC41F9FF008640421041F9FF00860410BC00DD41F9FF0086185E +S321E0000118421041F9FF00861C10BC002441F9FF00860810BC002041F9FF0086084E +S321E000013410BC003041F9FF00860810BC004041F9FF00860810BC005041F9FF00DE +S321E0000150860810BC001041F9FF00861430BC870041F9FF00861010BC000341F925 +S321E000016CFF00860010BC00B341F9FF00860010BC000741F9FF00866820BC0000F8 +S321E0000188000F41F9FF00868820BC0000000F41F9FF00866E30BC00F041F9FF00F2 +S321E00001A4868E30BC00F041F9FF00863810BC000141F9FF00860810BC000541F9D3 +S321E00001C0FF008940421041F9FF00890410BC00DD41F9FF008918421041F9FF004F +S321E00001DC891C10BC002441F9FF00890810BC002041F9FF00890810BC003041F9D6 +S321E00001F8FF00890810BC004041F9FF00890810BC005041F9FF00890810BC0010DD +S321E000021441F9FF00891430BC020041F9FF00891010BC000341F9FF00890010BCF5 +S321E000023000B341F9FF00890010BC000741F9FF00896820BC0000000F41F9FF0036 +S321E000024C898820BC0000000F41F9FF00896E30BC00F041F9FF00898E30BC00F07C +S321E000026841F9FF00893810BC000141F9FF00890810BC000541F9FF00076010BCC6 +S321E0000284003F41F9FF00860C20BC00000A0D41F9FF00860C20BC5345524941F967 +S321E00002A0FF00860C20BC414C204F41F9FF00860C20BC4B21202041F9FF00860CD5 +S321E00002BC20BC00000A0D4E7541F9FF00860C20BC444452412039FF000104080063 +S321E00002D8001C660000B641F9FF00000420BC000002AA41F9FF00002020BC0000F2 +S321E00002F4001A41F9FF00002420BC0800001A41F9FF00002820BC1000001A41F9F2 +S321E0000310FF00002C20BC1800001A41F9FF00010820BC7362283041F9FF00010C21 +S321E000032C20BC4677000041F9FF00010420BCE10D000241F9FF00010020BC4001D5 +S321E0000348000041F9FF00010020BC048D000041F9FF00010420BCE10D000241F9C8 +S321E0000364FF00010420BCE10D000441F9FF00010420BCE10D000441F9FF0001007F +S321E000038020BC008D000041F9FF00010420BC710D0F0041F9FF00860C20BC4D2057 +S321E000039C4F4B41F9FF00860C20BC2120202041F9FF00860C20BC00000A0D4E751C +S321E00003B841F9FF00860C20BC4642435341F9FF00050020BCE000000041F9FF004B +S321E00003D4050820BC0004118041F9FF00050420BC007F000141F9FF00050C20BCE5 +S321E00003F0FFF0000041F9FF00051420BC0004218041F9FF00051020BC000F00010F +S321E000040C41F9FF00051820BCF000000041F9FF00052020BC0004210041F9FF0034 +S321E0000428051C20BC07FF000141F9FF00052420BCF800000041F9FF00052C20BC52 +S321E00004440004018041F9FF00052820BC03FF000141F9FF00053020BC4000000062 +S321E000046041F9FF00053820BC0000001841F9FF00053420BC3FFF000141F9FF006A +S321E000047C860C20BC204F4B2141F9FF00860C20BC00000A0D4E7551FC41F9FF002E +S321E0000498860C20BC4650474143F9FF000A0745F9FF000A270891000108910002E7 +S321E00004B40812000066FA0812000566F461FF000009AA08D1000261FF000009A05C +S321E00004D00812000067FA61FF0000099441F9E0700000B1FCE08000006E5610182F +S321E00004EC7208E288650608910003600408D1000308D1000108910001538166E64F +S321E00005080812000567D4223C00000FA008D100014E7108910001538166F26028A3 +S321E000052447F9FF00090820132C3C000186A04A516A0822139280D2866AF44E75F6 +S321E000054041F9FF00860C20BC204E4F5441F9FF00860C20BC204F4B2141F9FF0046 +S321E000055C860C20BC00000A0D41F9FF00860C20BC504C4C2041F9F000060043F9FD +S321E0000578F000080061A6317C001B0048619E317C000100086196317C000C00000D +S321E0000594618E317C000C00406186317C000101146100FF7E317C000101186100CD +S321E00005B0FF74317C0001011C6100FF6A317C000100106100FF60317C00010050C5 +S321E00005CC6100FF56317C000101446100FF4C317C000100446100FF42317C00A5F2 +S321E00005E800046100FF38421141F9FF00860C20BC5345542141F9FF00860C20BCC7 +S321E000060400000A0D4E7551FC700B33C0F00004004E7141F9600000004E7120BC77 +S321E0000620000504004E7120BC000720004E7120BC000701224E7120BC00050400A4 +S321E000063C4E7120BC000600004E7120BC000600004E7120BC000070124E71203C42 +S321E00006580107000223C0F00004004E7541F9FF00860C20BC50434920203C003FBE +S321E0000674003F23C0FF000C00203C0000200423C0FF000B0C203C1010000023C07F +S321E0000690FF000B3C203C0700002023C0FF000B84203C0000100081B9FF000B601E +S321E00006AC203C803FFFFF424023C0FF000B70203CD00FFFFF424023C0FF000B7438 +S321E00006C842B9FF000B78203C0309000023C0FF000B80203CFFFFFFFEC1B9FF000E +S321E00006E40B6041F9FF00860C20BC4F4B212041F9FF00860C20BC00000A0D4E75A6 +S321E000070041F9FF00860C20BC4E454320203C8000880023C0FF000BF841F9D00007 +S321E000071C00002210203C33103500B280670E41F9FF00860C20BC4E4F5420601006 +S321E0000738203C800088E423C0FF000BF810BC0020203C000088E423C0FF000BF8F9 +S321E000075441F9FF00860C20BC4F4B212041F9FF00860C20BC00000A0D4E7551FC53 +S321E00007702F0741F9FF00860C20BC4456492041F9FF008F0410BC003442872007EB +S321E000078C2E0052870C800000000A6E00035241F9FF008F20421041F9FF008F0801 +S321E00007A8421041F9FF008F0810BC000A1239FF008F1041F9FF008F0C421041F90E +S321E00007C4FF008F08421041F9FF008F2010BC000141F9FF008F0810BC00B041F910 +S321E00007E0FF008F1010BC007A61FF0000064A70A241F9FF008F0CB010669070B0C7 +S321E00007FC41F9FF008F08B010668441F9FF008F0C10100280000000FD108041F944 +S321E0000818FF008F10421041F9FF008F0C0810000167F441F9FF008F0C1010028030 +S321E0000834000000FD1080A54001F9FF008F0841F9FF008F1010BC007B61FF000041 +S321E000085005E670A641F9FF008F0CB0106600FF2C70B041F9FF008F08B01066006A +S321E000086CFF1E41F9FF008F0C10100280000000FD108041F9FF008F0810100280F8 +S321E0000888000000EF10801039FF008F1041F9FF008F0C0810000167F441F9FF0087 +S321E00008A48F0C10100280000000FD1080A74001F9FF008F0861FF0000057A1239E7 +S321E00008C0FF008F1041F9FF008F0C0810000167F441F9FF008F0C101002800000DA +S321E00008DC00FD108041F9FF008F0842101039FF008F100C01004C6600FE9641F9F7 +S321E00008F8FF008F08421041F9FF008F0C421041F9FF008F0C0810000566F441F96B +S321E0000914FF008F0810BC00B041F9FF008F1010BC007A61FF0000052870A241F9D8 +S321E0000930FF008F0CB0106600FE5270B041F9FF008F08B0106600FE4441F9FF0024 +S321E000094C8F0C10100280000000FD108041F9FF008F1010BC000841F9FF008F0C5F +S321E00009680810000167F441F9FF008F0C10100280000000FD108041F9FF008F103E +S321E000098410BC00BF41F9FF008F0C0810000167F441F9FF008F0C10100280000028 +S321E00009A000FD108041F9FF008F08421041F9FF008F0C421041F9FF008F0C081094 +S321E00009BC000566F441F9FF008F0810BC00B041F9FF008F1010BC007A61FF000010 +S321E00009D8047A70A241F9FF008F0CB0106600FDA470B041F9FF008F08B0106600DC +S321E00009F4FD9641F9FF008F0C10100280000000FD108041F9FF008F1010BC0008BF +S321E0000A1041F9FF008F0C0810000167F441F9FF008F0C10100280000000FD108099 +S321E0000A2CA54001F9FF008F0841F9FF008F1010BC007B61FF0000041070A641F970 +S321E0000A48FF008F0CB0106600FD3A70B041F9FF008F08B0106600FD2C41F9FF003D +S321E0000A648F0C10100280000000FD108041F9FF008F0810100280000000EF1080D5 +S321E0000A801039FF008F1041F9FF008F0C0810000167F441F9FF008F0C10100280CF +S321E0000A9C000000FD1080A74001F9FF008F0861FF000003A41239FF008F1041F92A +S321E0000AB8FF008F0C0810000167F441F9FF008F0C10100280000000FD108041F9F1 +S321E0000AD4FF008F0842101039FF008F100C0100BF6600FCA4601441F9FF008F083B +S321E0000AF0421041F9FF00860C20BC4E4F542041F9FF00860C20BC4F4B212041F93E +S321E0000B0CFF00860C20BC00000A0D2E1F4E7551FC2F0741F9FF00860C20BC4143A5 +S321E0000B28393741F9FF000A4D10BC00BC41F9FF008800421041F9FF00880042101D +S321E0000B4441F9FF00881430BC030041F9FF00884010BC000341F9FF00886820BC16 +S321E0000B600F00000041F9FF00888820BC0F00000041F9FF00886E30BC00F041F90B +S321E0000B7CFF00888E30BC00F04287600000C841F9FF00880810BC002041F9FF00A7 +S321E0000B98880810BC003041F9FF00880810BC004041F9FF00880810BC000541F926 +S321E0000BB4FF00880C20BCE000000041F9FF00880C20BC02000000A540600A41F9BC +S321E0000BD0FF00880C429052800C800000000D6DEE41F9FF00880C20BCC00000008F +S321E0000BEC41F9FF00880C20BC82000000A540600A41F9FF00880C429052800C8090 +S321E0000C080000000D6DEE61FF000002402239FF00880C2001028080000FFF0C8035 +S321E0000C248000080066242039FF00880C4AB9FF00880C66160281E0000FFF0C81C0 +S321E0000C40E000080066080C8002000000671852870C87000186A06D00FF3241F9E4 +S321E0000C5CFF00860C20BC204E4F5441F9FF00880C20BCE000000041F9FF00880CC2 +S321E0000C7820BC1600000041F9FF00880C20BC06060000A740600A41F9FF00880CB5 +S321E0000C94429052800C800000000D6DEE41F9FF00880C20BCE000000041F9FF0004 +S321E0000CB0880C20BC10000000A540600A41F9FF00880C429052800C800000000D69 +S321E0000CCC6DEE41F9FF00880C20BCE000000041F9FF00880C20BC12000000A540A2 +S321E0000CE8600A41F9FF00880C429052800C800000000D6DEE41F9FF00880C20BC92 +S321E0000D04E000000041F9FF00880C20BC0600000041F9FF00880C4290A740600A6E +S321E0000D2041F9FF00880C429052800C800000000D6DEE41F9FF008888201008C02B +S321E0000D3C001D208041F9FF00880C429041F9FF00860C20BC204F4B2141F9FF009E +S321E0000D58860C20BC00000A0D2E1F4E75203C000C812023C0FF1008104E7B000226 +S321E0000D744E7161FFFFFFF32061FFFFFFF38261FFFFFFF2D861FFFFFFF62E61FF70 +S321E0000D90FFFFF5341039FF000A2C08000006670661FFFFFFF8C261FFFFFFF6ECE9 +S321E0000DAC61FFFFFFF85E61FFFFFFF9BC1039FF000A2C08000006670661FFFFFF27 +S321E0000DC8F93A61FFFFFFFD5041FA002843F9E0000E8893C8247C1FE00000264ACC +S321E0000DE4D7C949F9E000274824D824D824D824D8B1CC6DF44ED34E752F002039A2 +S321E0000E00FF000908048000142440B0B9FF00090865F8201F4E7551FC2F00203937 +S321E0000E1CFF0009080480000203A0B0B9FF00090865F8201F4E7551FC2F002039EE +S321E0000E38FF000908048000003390B0B9FF00090865F8201F4E7551FC2F002039B4 +S321E0000E54FF0009080480000019C8B0B9FF00090865F8201F4E7551FC2F0020397A +S321E0000E70FF000908048000000528B0B9FF00090865F8201F4E7551FC61FF00003A +S321E0000E8C02C24A806F0661FF000002581039FF000A2C08000006675E4DF9FF0011 +S321E0000EA8860C47F9FF00890C49F9FF00890C4BF9FF00895826BC4143504661FF8C +S321E0000EC4FFFFFF382CBC5049432010141C8012141C8114141C822CBC00000A0DCB +S321E0000EE016BC000141F900E0000043F9E060000045F9E07000001039FF000A2C9B +S321E0000EFC08000006661241F900E0000043F9E040000045F9E050000020D9B3CA14 +S321E0000F186DFA1039FF000A2C08000006670000C641F889614281744010140C00ED +S321E0000F340081661C10141081114000025281B40166F210BC003F102800025280B9 +S321E0000F501140000261FF0000069661FF0000084061FF000017E242B9F00100045F +S321E0000F6C41F9FF000F0030BCAAA8203C0001010123C0FF000800703F13C0FF0033 +S321E0000F88077E103C00FE13C0F00100044E7141F9FF000F0510BC00FE4E7141F901 +S321E0000FA4FF000F0C10BC00FF4E7141F9FF00070C20BCFFFFFF0041F9FF0007083A +S321E0000FC020BCBFFFFFFE203C0000000123C0FF0400004E714E7141F88802117C87 +S321E0000FDC000EFFFE10BC008061FFFFFFFE32421041F9F000041020FC032002BAA3 +S321E0000FF820FC020C020A20FC0190015D20FC020C020A41E8FFE020BC0107000292 +S321E000101441F8040043F808004298429842984298B3C86EF4704811C08007203CA9 +S321E000103000E0000021C0042E203C752019F321C00420203C237698AA21C0043A73 +S321E000104C203C5555AAAA21C0051A203C1FE0000021C005A4203C1357BD1321C0EC +S321E000106805A81039FF000A2C08000007670446FC07004EF900E000304E7551FC31 +S321E00010842F002039FF000908048000142440B0B9FF00090865F8201F4E7551FCB1 +S321E00010A02144003408280007002C67F82A280038A168002C4E7551FC183C00FFD1 +S321E00010BC61FFFFFFFFE20C0500FF67F04E7551FC7612183C00FF61FFFFFFFFE460 +S321E00010D80C0500FE66F461FFFFFFFFC014C5538366F44E75283C082000FF41F9FF +S321E00010F4FF008A00203C385588972140000C183C00FF61FFFFFFFF98183C004020 +S321E000111061FFFFFFFF8E183C000061FFFFFFFF84183C000061FFFFFFFF7A183C3E +S321E000112C000061FFFFFFFF70183C000061FFFFFFFF66183C009561FFFFFFFF5C3B +S321E00011484E7551FC598F43F9FF00860C22BC53442D4322BC617264202A7A045AC4 +S321E0001164203C1FFFFFFF23C0FF000A5041F9FF008A0020BC802D3C00203C385564 +S321E000118088972140000C283C082000FF21C40034A168002C20BCC00D3C0061FFC3 +S321E000119CFFFFFEE820BC802D3C0061FFFFFFFEF861FFFFFFFEF261FFFFFFFEECBE +S321E00011B861FFFFFFFEE661FFFFFFFEE061FFFFFFFEDA61FFFFFFFED461FFFFFFF3 +S321E00011D4FECE61FFFFFFFEC861FFFFFFFEC220BC800D3C0061FFFFFFFEB661FFF4 +S321E00011F0FFFFFEB020BC802D3C0061FFFFFFFEA461FFFFFFFE9E61FFFFFFFE7CBA +S321E000120C2C3C00000064263C0000000A61FFFFFFFED22E3C0000000A183C00FFB3 +S321E000122861FFFFFFFE760C050001670C538766F053866700037260D8183C00FFFD +S321E000124461FFFFFFFE5A183C004861FFFFFFFE50183C000061FFFFFFFE46183C60 +S321E0001260000061FFFFFFFE3C183C000161FFFFFFFE32183C00AA61FFFFFFFE288F +S321E000127C183C008761FFFFFFFE1E61FFFFFFFE300C05000567300C05000166A8C2 +S321E000129861FFFFFFFE0661FFFFFFFE0061FFFFFFFDFA61FFFFFFFDF40C0500AA37 +S321E00012B46600013622BC5344484312BC0020183C00FF61FFFFFFFDD8183C007A59 +S321E00012D061FFFFFFFDCE183C000061FFFFFFFDC4183C000061FFFFFFFDBA183CC3 +S321E00012EC000061FFFFFFFDB0183C000061FFFFFFFDA6183C000161FFFFFFFD9C54 +S321E000130861FFFFFFFDAE2C3C566572310C05000567A80C05000166A261FFFFFF77 +S321E0001324FD7E61FFFFFFFD7861FFFFFFFD7261FFFFFFFD6C2C3C00004E20183CBB +S321E000134000FF61FFFFFFFD5C183C007761FFFFFFFD52183C000061FFFFFFFD4886 +S321E000135C183C000061FFFFFFFD3E183C000061FFFFFFFD34183C000061FFFFFF0D +S321E0001378FD2A183C009561FFFFFFFD2061FFFFFFFD320C05000567AE183C00FFDD +S321E000139461FFFFFFFD0A183C006961FFFFFFFD00183C004061FFFFFFFCF6183CA2 +S321E00013B0000061FFFFFFFCEC183C000061FFFFFFFCE2183C000061FFFFFFFCD8DF +S321E00013CC183C009561FFFFFFFCCE61FFFFFFFCE04A0567160C05000567AA538608 +S321E00013E86600FF5453836600FE28600001A6203C385511202140000C183C00FF07 +S321E000140461FFFFFFFC9A183C004A61FFFFFFFC90183C000061FFFFFFFC86183CE2 +S321E0001420000061FFFFFFFC7C183C000061FFFFFFFC72183C000061FFFFFFFC68BE +S321E000143C183C009561FFFFFFFC5E244D61FFFFFFFC8245ED00017E07129A538782 +S321E000145866FA12BC0020183C00FF61FFFFFFFC3C183C004961FFFFFFFC32183CDE +S321E0001474000061FFFFFFFC28183C000061FFFFFFFC1E183C000061FFFFFFFC1466 +S321E0001490183C000061FFFFFFFC0A183C000161FFFFFFFC00244D61FFFFFFFC2404 +S321E00014AC7195EC886624222D0006700EE0A9028100000FFF528171ED0009EE889D +S321E00014C802800000000774089480E4A9600673ED0008528148412601EC8B2E8303 +S321E00014E4E389640A22BC333247426000009CE389640A22BC313647426000008ECE +S321E0001500E389640A22BC2038474260000080E389640822BC203447426072E3899F +S321E000151C640822BC203247426066E389640822BC20314742605AE389640C12BCEE +S321E0001538003522BC31324D42604AE389640C12BC003222BC35364D42603AE38948 +S321E0001554640C12BC003122BC32384D42602AE389640822BC36344D42601EE3892C +S321E0001570640822BC33324D426012E389640822BC31364D42600622BC3C394D42D5 +S321E000158C22BC204F4B2122BC00000A0D604222BC4572726F22BC0000722122BC48 +S321E00015A800000A0D603622BC6E6F6E2122BC00000A0D60240000000000000000D1 +S321E00015C40000000000000000000000000000000000000000000000002017600688 +S321E00015E070FE6002A140588F4E7551FC42804E7B000323C0FF1008144E7B0002FA +S321E00015FC23C0FF1008104E71203CC03FC0404E7B000423C0FF100818203C601F0F +S321E0001618C0004E7B000523C0FF10081C203CE007C4004E7B000623C0FF1008203C +S321E000163442804E7B000723C0FF100824203CFF0400014E7B000823C0FF100828B1 +S321E00016504E71203C0000008023C0FF0400044E717003725E7403761323C0FF042B +S321E000166C001423C1FF04001823C2FF04000423C3FF040004203C00D0001B223CEB +S321E000168860D0001E23C0FF04001423C1FF04001823C2FF040004203C00D00003FE +S321E00016A423C3FF040004203C0000200023C0FF10083842B9FF10083C203C00E01F +S321E00016C00003223C00E0005E23C0FF04001423C1FF04001823C2FF04000423C3BE +S321E00016DCFF040004203C00F00003223CFFF0009E23C0FF04001423C1FF040018D2 +S321E00016F823C2FF04000423C3FF040004203C1FE00003223C1FE0005E23C0FF0418 +S321E0001714001423C1FF04001823C2FF04000423C3FF040004203C1FF00003223C1B +S321E00017301FF0005E23C0FF04001423C1FF04001823C2FF04000423C3FF04000478 +S321E000174C203CA10CA12023C0FF1008104E7B00024E714E7561000F900280FFF009 +S321E0001768000000800000000323C0FF0400140280FFF0000000800000005C23C0D2 +S321E0001784FF040018700323C0FF040004701323C0FF040004201F4E73A179FF1055 +S321E00017A0080042B9FF10080442B9FF10080842B9FF10080C203CFF1000004E7BBD +S321E00017BC080120402448203C0000010043FA00EE24C9538066FA20BCFF100FFCB8 +S321E00017D843FA01922149000443FA01A4214900081039FF000A2C08000007670089 +S321E00017F4007A43FA0F4C2149000C43FA0F442149001043FA01E22149001443FA86 +S321E000181009602149002043FA02242149002843FA02262149002C43FA0228214922 +S321E000182C003843FA022A214900C043FA0222214900C443FA021A214900C843FA98 +S321E00018480212214900CC43FA020A214900D043FA0202214900D443FA01FA2149B0 +S321E000186400D843FA01F2214900DC43FA01F42149010443FA02782149010843FA2C +S321E000188002FC2149010C43FA03802149011043FA04042149011443FA04882149BF +S321E000189C011843FA07102149011C43FA073E2149018043FA079C214901F84E75E3 +S321E00018B846FC2700518F48D720011039FF000A2C080000076600002C302F00081F +S321E00018D40280000003FCD0B9FF10080C2A4020152A6F00042F400004302F000ACD +S321E00018F008C0000D46C0201F4E754E6D4A39FF1008006600003CA179FF100800F1 +S321E000190C23CDFF1008082A79FF1008042B2F000C202F00082B0048404E65028067 +S321E0001928000003FCD0B9FF10080C2A402F55000C4CD72001508F4E732B2F000CCE +S321E0001944202F000808C0000D2B0048404E650280000003FCD0B9FF10080C2A4078 +S321E00019602F55000C4CD72001508F4E7346FC2700203C31415926B0B900000426C8 +S321E000197C6700FF3A4EF9E000000046FC27002F00302F0004028000000C030C808A +S321E000199800000401670000240C80000004026700001A0C8000000802670000109D +S321E00019B40C8000000C0267000006600000242039FF0400080800000166000016BD +S321E00019D02039FF0400100C801FE000006C0000066000FD7E201F6000FED046FC22 +S321E00019EC27002F082F00206F000C301808000007670000045488C0B90000003F7B +S321E0001A080C4000086F00002454880C400039660000085488600000140C40003C4E +S321E0001A246600000C080000076700000454882F48000C201F205F4E7346FC27008D +S321E0001A404AC84E714E7146FC27004AC84E714E7146FC27004AC84E714E7146FCE0 +S321E0001A5C27004AC84E714E7146FC2700518F48D720014BF9FF000F0C1ABC000212 +S321E0001A781039FF000A2C08000007660000144CD72001508F2F390000006446FC34 +S321E0001A9421004E754E6D4A39FF10080066000020A179FF10080023CDFF10080851 +S321E0001AB02A79FF1008042B2F000C2B2F0008600000102B2F000C2B2F000808ED81 +S321E0001ACC000500024E654BF900000064DBF9FF10080C2F55000C1F7C0001000A89 +S321E0001AE84CD72001508F4E7346FC2700518F48D720014BF9FF000F0C1ABC000457 +S321E0001B041039FF000A2C08000007660000144CD72001508F2F390000006846FCA3 +S321E0001B2022004E754E6D4A39FF10080066000020A179FF10080023CDFF100808C3 +S321E0001B3C2A79FF1008042B2F000C2B2F0008600000102B2F000C2B2F000808EDF4 +S321E0001B58000500024E654BF900000068DBF9FF10080C2F55000C1F7C0002000AF7 +S321E0001B744CD72001508F4E7346FC2700518F48D720014BF9FF000F0C1ABC0008C6 +S321E0001B901039FF000A2C08000007660000144CD72001508F2F390000006C46FC13 +S321E0001BAC23004E754E6D4A39FF10080066000020A179FF10080023CDFF10080836 +S321E0001BC82A79FF1008042B2F000C2B2F0008600000102B2F000C2B2F000808ED68 +S321E0001BE4000500024E654BF90000006CDBF9FF10080C2F55000C1F7C0003000A66 +S321E0001C004CD72001508F4E7346FC2700518F48D720014BF9FF000F0C1ABC001031 +S321E0001C1C1039FF000A2C08000007660000144CD72001508F2F390000007046FC82 +S321E0001C3824004E754E6D4A39FF10080066000020A179FF10080023CDFF100808A8 +S321E0001C542A79FF1008042B2F000C2B2F0008600000102B2F000C2B2F000808EDDB +S321E0001C70000500024E654BF900000070DBF9FF10080C2F55000C1F7C0004000AD4 +S321E0001C8C4CD72001508F4E7346FC2700518F48D720014BF9FF000F0C1ABC002095 +S321E0001CA81039FF000A2C08000007660000144CD72001508F2F390000007446FCF2 +S321E0001CC425004E754E6D4A39FF10080066000020A179FF10080023CDFF1008081B +S321E0001CE02A79FF1008042B2F000C2B2F0008600000102B2F000C2B2F000808ED4F +S321E0001CFC000500024E654BF900000074DBF9FF10080C2F55000C1F7C0005000A43 +S321E0001D184CD72001508F4E7346FC2700518F48D720014BF9FF000F0C1ABC0040E8 +S321E0001D342039FF10083C670000E00480700000004BF9FF000908B0956F0000CEF0 +S321E0001D504FEFFFE448D7031F428361000996200323C0FF040010283C00000106E6 +S321E0001D6C23C4FF0400044E712839FF0400044244484423C4FF04001079FC010ED0 +S321E0001D8823C4FF0400044E712839FF040014E48C0C44000666000054068000002E +S321E0001DA4000322036700000C06810000005C6000000806810000001E75FC010B35 +S321E0001DC023C0FF04001423C1FF04001823C2FF0400044E712043D1FC60000000ED +S321E0001DDC2243283C0001000022D822D822D822D8538466F44E71068300100000CA +S321E0001DF80C8300D000006D00FF5E203C0000200023C0FF10083842B9FF10083CC4 +S321E0001E144CD7031F4FEF001C4BF9FFFFFA0B08ED0007FFFC08150007670000065E +S321E0001E30610000DA4A15660000124A2D00026600000A4CD72001508F4E734BF98D +S321E0001E4CFF000A07089500044BFA00B2529520150280000000806600000C4BF918 +S321E0001E68FF000A0708D500041039FF000A2C08000007660000202A79F0020000DF +S321E0001E84DBF9FF10080C20152A6F00042F400004201F46FC26004E754E6D4A3978 +S321E0001EA0FF1008006600003CA179FF10080023CDFF1008082A79FF1008042B2F2F +S321E0001EBC000C2B2F00084E652A79F0020000DBF9FF10080C2F55000C4CD72001A3 +S321E0001ED8508F1F7C000600024E732B2F000C2B2F000808ED000500024E652A79AB +S321E0001EF4F0020000DBF9FF10080C2F55000C4CD720014E75000000002F092F0104 +S321E0001F1043F9FF00860C22BC444D412022BC494E54214BF9F0020110226DFFF47F +S321E0001F2C202DFFF86F000058082D0000FFF0660000264A2DFFFC6A00003E22D5E7 +S321E0001F4822D522D522D5722E13C1FF00860C0480000000106AE0600000224A2DD6 +S321E0001F64FFFC6A00001A2A992A992A992A99722E13C1FF00860C04800000001057 +S321E0001F806AE02B49FFF42B40FFF84A2DFFFC6B984BF9FFFFFA0B08AD00070004D0 +S321E0001F9C08950007323C0D0A33C1FF00860C221F225F4E754FEFFFF448D70101BE +S321E0001FB82079FF1000082F480008302F000C02800000F0000080000000083F4014 +S321E0001FD4000C41F9FF000F0C10BC0080201F205F4E7546FC27004FEFFFEC48D72D +S321E0001FF0090747F9FF00890C12130C0100026600004241F9FF00860C20BC5049EF +S321E000200C432020BC494E542020BC5254432120BC00000D0A41F9FFFF896147F94D +S321E0002028FF00890C4281744016BC008210811028000216805281B40166F24CD7F3 +S321E000204409074FEF00144E7346FC27004FEFFFE448D7031F71B9FFFF82010C40B5 +S321E000206000026D0000EE0C4000D06D00001041F9FF000908281023C4FF10083CCC +S321E000207CE1881039FFFF8203E1881039FFFF820D260078142400E8AA2839FF1016 +S321E0002098083805C46600007E23C4FF1008386100064A23C4FF100838028000F0CA +S321E00020B4000020402248D3FC60000000283C0001000022D822D822D822D853840D +S321E00020D066F423C0FF040010283C0000010623C4FF0400044E712839FF0400043E +S321E00020EC4244484423C4FF040010220006800000001B06816000001E75FC010BA1 +S321E000210823C0FF04001423C1FF04001823C2FF0400044E71200379F9FFFF82100C +S321E000212475F9FFFF82AA73F9FFFF82A89481C8C2D0840C8000E000006C000014AE +S321E000214078142400E8AA2839FF10083805C46700FF5A41F9FF00080008A8000031 +S321E000215C00034E7108E8000000034CD7031F4FEF001C4E7346FC27004FEFFFF4D2 +S321E000217848D7210141F9FF1008004A1066000034A1504E6D214D00082A68000427 +S321E00021942B2F00102B2F000C08ED000500024E652A68000C4BED00182F55001048 +S321E00021B04CD721014FEF000C4E732A6F001010150C00004E670000280C000046D4 +S321E00021CC670002F20C000040670003900C0000F46700041E0C0000F36700049AE3 +S321E00021E84E714AC84E71102D00010C0000736700011A0C0000726700013C0C00F8 +S321E0002204007B670001C008000003660000400C0000606700007E0C00006167005F +S321E0002220007E0C0000626700007C0C0000636700007A0C000064670000780C0042 +S321E000223C0065670000760C000066670000764AC8600000762A6800080C00006819 +S321E0002258670000800C000069670000800C00006A6700007E0C00006B6700007C8C +S321E00022740C00006C6700007A0C00006D670000780C00006E67000078214D0004EC +S321E00022904E65600000702A6F00046000002C2A49600000262A4A600000202A4B3E +S321E00022AC6000001A2A4C600000142A6F00086000000C2A4E600000062A6800044B +S321E00022C8214D000854AF00104CD721014FEF000C4E732F4D000460000024224DC8 +S321E00022E46000001E244D60000018264D60000012284D6000000C2F4D00086000E7 +S321E000230000042C4D54AF00104CD721014FEF000C4E734E6D2F5D000C2F5D00100C +S321E000231C08AF0005000E6600000C4290214D00042A6800084E654CD721014FEF6F +S321E0002338000C4E73102D00020280000007000C4007006700006A0C400600670031 +S321E0002354005A0C4005006700004A0C4004006700003A0C4003006700002A0C400E +S321E000237002006700001A0C4001006700000A4E722000600000364E722100600073 +S321E000238C002E4E722200600000264E7223006000001E4E722400600000164E723E +S321E00023A825006000000E4E722600600000064E72270058AF00104CD721014FEFD3 +S321E00023C4000C4E73302D000202800000F0000800000F660000684A40660000089C +S321E00023E02F17600000C60C401000660000082F01600000B80C40200066000008A3 +S321E00023FC2F02600000AA0C403000660000082F036000009C0C4040006600000892 +S321E00024182F046000008E0C405000660000082F05600000800C4060006600000869 +S321E00024342F06600000722F076000006C0C4080006600000A2F2F00046000005C43 +S321E00024500C409000660000082F096000004E0C40A000660000082F0A6000004027 +S321E000246C0C40B000660000082F0B600000320C40C000660000082F0C60000024FF +S321E00024880C40D0006600000A2F2F0008600000140C40E000660000082F0E6000B5 +S321E00024A400062F2F0004302D000202800000000F219F0C084EB9E00026F24E734A +S321E00024C0102D00010C0000FC670000700C0000C06600000A302F000260000058A8 +S321E00024DC0C0000C16600000830016000004A0C0000C26600000830026000003CDE +S321E00024F80C0000C36600000830036000002E0C0000C466000008300460000020F2 +S321E00025140C0000C5660000083005600000120C0000C66600000830066000000405 +S321E0002530300754AF00106000000A58AF0010302D00020880000D660000104290A2 +S321E000254C4E6D214D00042A6800084E653F40000E4CD721014FEF000C4E73102DF9 +S321E000256800010C0000E7670000862A6F000C4A10670000064BED20000C0000C000 +S321E00025846600000A3F4D00026000005A0C0000C166000008320D6000004C0C006B +S321E00025A000C266000008340D6000003E0C0000C366000008360D600000300C000E +S321E00025BC00C466000008380D600000220C0000C5660000083A0D600000140C001E +S321E00025D800C6660000083C0D600000063E0D4AC854AF00104CD721014FEF000C1F +S321E00025F44E734E714AC84E7154AF0010102D000161000026102D00010C00003042 +S321E00026106500000EF4E84CD721014FEF000C4E73F4284CD721014FEF000C4E73BD +S321E000262C02800000000753806B00002A53806B00002A53806B00002853806B00AF +S321E0002648002653806B00002453806B00002253806B000022204F4E75206F00087F +S321E00026644E7520494E75204A4E75204B4E75204C4E75206F000C4E75204E4E756C +S321E000268054AF0010102D00010C0000406E00002C4EB9E000262C102D00010C009E +S321E000269C00206D00000E54AF0010428030280002D1C0F3104CD721014FEF000C4F +S321E00026B84E730C00007A6700002C4EB9E000262C102D00010C0000606D00000EE8 +S321E00026D454AF0010428030280002D1C0F3504CD721014FEF000C4E73206F001012 +S321E00026F060E24FEFFFF048D7010740C24E7146FC2700428042812040F4E841E83E +S321E000270C001052810C41020066F24281528020400C40000466E64E712039FF1089 +S321E000272808104E7B000246C24CD701074FEF00104E7500004E714AC84E714E7139 +S30DE00027444E7500004E714E7562 +S705E00000001A diff --git a/Flash/BaS_15_12_10.zip b/Flash/BaS_15_12_10.zip new file mode 100644 index 0000000000000000000000000000000000000000..63bf8a3c639765889fec7562fa2e3c9d6b2bb97e GIT binary patch literal 7354 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%0A_W= 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 literal 0 HcmV?d00001 diff --git a/Flash/emutos2.s19 b/Flash/emutos2.s19 new file mode 100644 index 0000000..c8db8ed --- /dev/null +++ b/Flash/emutos2.s19 @@ -0,0 +1,23921 @@ +S00E0000656D75746F73322E73313917 +S315E0600000602E020600E0003000E000000002514C85 +S315E060001000E0003000E424142010112700003D7B4E +S315E0600020000133D800011B7C0001344C45544F532A +S315E060003046FC2700203900FA00000C80FA52235F64 +S315E06000406600000C4DFA00084EF900FA000420390B +S315E0600050000004260C8031415926661620390000DE +S315E0600060042A670E08000000660820404DFAFFE0AB +S315E06000704ED04EF900E007284FF900004A684EB9C5 +S315E060008000E00B784EF900E0493C302F000441F97E +S315E060009000FA0000223CABCDEF42B2986600002841 +S315E06000A001280004670000184FEFFFC448D77FFFC0 +S315E06000B0206800044E904CD77FFF4FEF003C4A909B +S315E06000C020506600FFDC4E7541F900E0067E43F99C +S315E06000D000004E24203C00E001D82340FFFC203C99 +S315E06000E000E001A622802348000423480008234854 +S315E06000F0000C23480010203C00E05012234000141E +S315E060010023480018203C00E001902340001C203C7E +S315E060011000E001EA23400020487900000038487991 +S315E060012000E423B4487900004DE84EB900E00EC41F +S315E06001304FEF000C700013C000004E4813C0000083 +S315E06001404E5513C000004E56487A00103F3C0006FC +S315E06001504EB900E056605C8F4E754FEFFFE048D7D2 +S315E06001600F0F207900004E404E90207900004E44FB +S315E06001704E9043F8FA000829000400016700FFE4A6 +S315E060018008A9000600114CD70F0F4FEF00204E7301 +S315E06001901038FC046A00000E1038FC062079000076 +S315E06001A04E244ED04E757200323900004E1A52819E +S315E06001B0B27900004E166D0000047200B27900005C +S315E06001C04E186700001241F900004D681180180072 +S315E06001D033C100004E1A4E750280000000FF3F00FA +S315E06001E04EB900E05EA4548F4E7570001238FC0084 +S315E06001F010016A00FFF41038FC024A3900004E48EC +S315E0600200660000520C4000F66400000A20790000A7 +S315E06002104E204ED013C000004E4C41F900004E4ACD +S315E060022030BC00010480000000F641F900004E4851 +S315E060023010BB080E41F900004E4910BB080E4E7522 +S315E0600240010203030303040506070705020202022F +S315E0600250060201017200323900004E4A41F900009F +S315E06002604E4C118018007000103900004E495380E2 +S315E060027013C000004E49670000147000303900007A +S315E06002804E4A528033C000004E4A4E7570001039B7 +S315E060029000004E48E580227B080641F900004E4C9E +S315E06002A04ED100E002BE00E002CA00E002CC00E00F +S315E06002B002D600E002E200E002F400E003045288C5 +S315E06002C0227900004E3060000050528822790000AA +S315E06002D04E34600000445288227900004E38600057 +S315E06002E0003843F900004E5412D812D8129055895E +S315E06002F06000001E43F900004E541298135000014E +S315E06003006000000E43F900004E541298135000024C +S315E06003102049227900004E3C2F084E91588F423991 +S315E060032000004E484E75000042B90000038041FA75 +S315E0600330002843F80008703D22C8548853806AF864 +S315E06003404E7541FA009043F80100203C000000BF82 +S315E060035022C853806AFA4E75617E617C617A617803 +S315E06003606176617461726170616E616C616A6168C7 +S315E06003706166616461626160615E615C615A615837 +S315E06003806156615461526150614E614C614A6148A7 +S315E06003906146614461426140613E613C613A613817 +S315E06003A06136613461326130612E612C612A612887 +S315E06003B06126612461226120611E611C611A6118F7 +S315E06003C06116611461126110610E610C610A610867 +S315E06003D061066104487AFF8246FC270023C8000074 +S315E06003E003A441F90000038448D000FF48E87E009A +S315E06003F000244E6823C8000003C8201F23CF0000F6 +S315E060040003C041FAFF549088E288528023C000001E +S315E060041003C44CD700FF41F9000003CC48D000FF8D +S315E060042041F90000038020BC123456784FF9000091 +S315E06004304A684EF900E039E40C4000736600000A51 +S315E06004404EB900E0132C4E730C40FFFE6700000CC3 +S315E06004500C40FFFF670000084E7370FE4E73203C51 +S315E060046000E0132C4E732F007000302F00040280E2 +S315E06004700000070066000010302F000400800000D6 +S315E060048003003F400004201F4E7352B9000004662B +S315E06004902F007000303900000452538033C00000F2 +S315E06004A004526B00009A4FEFFFC848D77FFE52B9FF +S315E06004B0000004624EB900E0A5B020390000045A9D +S315E06004C06700001642B90000045A204043F88240B3 +S315E06004D0700F32D853806AFA20390000045E6700F4 +S315E06004E0002223C00000044E4A7900012B98670081 +S315E06004F0000611C0820DE08811C08203E08811C059 +S315E060050082014EB900E0677A700030390000045429 +S315E06005106700002453802079000004562258B3FC1B +S315E0600520000000006700000C2F082F004E91201F8E +S315E0600530205F53806AE64CD77FFE4FEF003870004D +S315E0600540303900000452528033C000000452201F4C +S315E06005504E7352B9000004BA2F002F0830390001FB +S315E06005601B7A4840303900011B7AE388484033C043 +S315E060057000011B7A6A00002E4FEFFFCC48D77EFE63 +S315E06005804EB900E05E444EB900E063863F39000054 +S315E060059004422079000004004E90548F4CD77EFED2 +S315E06005A04FEF003441F8FA1108900005205F201FF4 +S315E06005B04E732F3AFFFE70FF4E75323900E04EFC07 +S315E06005C041F900E04ECC600C323900E03DE841F99B +S315E06005D000E03C802279000004A2301F0280000027 +S315E06005E03000670A301F3300231F548F6006301FC8 +S315E06005F03300231F43E9FFD848D1F8F823C9000048 +S315E060060004A20800000D660000044E6F7000301F03 +S315E0600610B0416C00000E2200D281D281D1C120505F +S315E06006204E902279000004A24CD1F8F843E9002804 +S315E06006302F193F193F3C40B423C9000004A24E7312 +S315E06006403F014EB900E04EC8548F4E753F014EB93A +S315E060065000E03C7C548F4E75220F2278000841FA08 +S315E0600660001421C8000842804E71206F00044A10D1 +S315E06006704E71700121C900082E414E714E754E755E +S315E06006804E73206F00042F0A2F024E90241F245FC2 +S315E06006904E75206F0004302F00082F0A2F023F00AE +S315E06006A04E90548F241F245F4E75206F0004202FD8 +S315E06006B000082F0A2F022F004E90588F241F245FC8 +S315E06006C04E754CEF030300082F0A2F024FEFFFF041 +S315E06006D048D70303206F001C4E904FEF0010241F95 +S315E06006E0245F4E75302F00042F0A2F022079000018 +S315E06006F005B04E90241F245F4E7500004E754E7116 +S315E0600700700072002040F4E8D1FC000000105281D5 +S315E06007100C810000020066EE7200528020400C8080 +S315E06007200000000466E04E7541F90000080043F9F8 +S315E06007300002514B20099088E488429853806AFA17 +S315E06007404FF900004A68487882826100FF0C4A40AF +S315E06007506700000E41F8800708D000066700004891 +S315E0600760223C752019F3B2B9000004206600003817 +S315E0600770223C237698AAB2B90000043A66000028C3 +S315E0600780223C5555AAAAB2B90000051A66000018BF +S315E06007904A406600000C41F8800110B9000004246C +S315E06007A04EF900E000784A40660000CA91C8117CC4 +S315E06007B0000A8001307C000843F9002000087000E0 +S315E06007C030C032C006800000FA54B1FC000002007E +S315E06007D066EE223C0020000042854286E48E42843A +S315E06007E0207C000400084BFA000C283C0004000062 +S315E06007F06000004A6732207C000800084BFA000C73 +S315E0600800283C0008000060000034671A207C000085 +S315E060081000084BFA0008780060000022660A283C6F +S315E06008200020000058865886DA84048100200000A3 +S315E060083067AA91C8114680016000001CD1C17000B2 +S315E060084043E801F8B0586600000C06800000FA54F0 +S315E0600850B3C866F04ED549F804004DFA000660006C +S315E060086000DE13C60000042423C50000042E4EF902 +S315E060087000E00078700030388006E088E288220088 +S315E0600880028100000001E4880280000000068280A8 +S315E0600890203C00080000E3A00C0100056606203C51 +S315E06008A000E000002A0049F804004DFA0006600006 +S315E06008B0008E23C50000042E7C0048790100040008 +S315E06008C06100FD964A406700004441F8040047F93C +S315E06008D001000400203C1234567820804293B090A8 +S315E06008E06600002A429047F901000000263C0010AD +S315E06008F0000041F338FF48506100FD5E4A40670CF6 +S315E06009005286D7C30C86000008006DE64A8666020A +S315E060091097CB23CB000005A449F9000005A828BCC5 +S315E06009201357BD1349F9010000002A0B6700000A5E +S315E06009304DFA0006600000084EF900E000782805F0 +S315E0600940988CE08C53844BF8010070002040720074 +S315E06009502241740024427600264349EC010048ECCB +S315E06009600F0FFFE048EC0F0FFFC048EC0F0FFFA042 +S315E060097048EC0F0FFF8048EC0F0FFF6048EC0F0F5D +S315E0600980FF4048EC0F0FFF2048EC0F0FFF00D9CD7A +S315E060099053846ACA4ED60000206F00042248428023 +S315E06009A030182F48000402800000000F4A406B00B8 +S315E06009B00018B07A01706A00001041FA0128E588F3 +S315E06009C0207008004E904E733F0055882F08487A95 +S315E06009D0000E4EB900E038144FEF000A4E737063B4 +S315E06009E03D30782530386C783A204C696E652D411B +S315E06009F02063616C6C206E756D626572203078255F +S315E0600A00303378206F7574206F6620626F756E6420 +S315E0600A10730A00004C696E652D41202325780A0033 +S315E0600A2041F900005276200843F900012C2445FA8A +S315E0600A3000B44E75303C00016046303C00026040D8 +S315E0600A40303C0003603A303C00046034303C0005E2 +S315E0600A50602E303C00066028303C00076022303C67 +S315E0600A600008601C303C000B6016303C000C6010E7 +S315E0600A70303C000D600A303C000E6004303C000FF4 +S315E0600A802217048100E009C6028100FFFFFF6600CD +S315E0600A90000820496000000420573F002F08487A8C +S315E0600AA0000E4EB900E038144FEF000A4E757063E1 +S315E0600AB03D30782530386C783A20756E696D706CAB +S315E0600AC0656D656E746564204C696E652D41206365 +S315E0600AD0616C6C206E756D6265722030782530339E +S315E0600AE0780A000000E00A2000E00A3400E00A3AF2 +S315E0600AF000E00A4000E00A4600E00A4C00E00A52E4 +S315E0600B0000E00A5800E00A5E00E20B0C00E20C56D8 +S315E0600B1000E00A6400E00A6A00E00A7000E00A7633 +S315E0600B2000E00A7C0010000046FC270023C80000B5 +S315E0600B3003A441F90000038448D000FF48E8FE00C2 +S315E0600B4000244E6823C8000003C842B9000003C40D +S315E0600B504CD700FF41F9000003CC48D000FF41F9D3 +S315E0600B600000038020BC123456784EF900E039E488 +S315E0600B7046FC27006000FFFE42790001141C4E75BA +S315E0600B800000A0FF000000004E7523DF0000530068 +S315E0600B9023C0000052F023C1000052F423C80000D5 +S315E0600BA052F823C9000052FC4EB900E038142039EF +S315E0600BB0000052F02239000052F42079000052F829 +S315E0600BC02279000052FC2F39000053004E75000078 +S315E0600BD042804E754E465F56455253494F4E000031 +S315E0600BE02002102100E00BEC00E00BF073004E7584 +S315E0600BF073014E75270119924FEFFFF448D7030250 +S315E0600C00486F00104EB900E09534588F4CD7030218 +S315E0600C104FEF000C4E7500004A406700000A2F391E +S315E0600C20000053044E752E7C00005AD842674EB9D8 +S315E0600C3000E0DBAA4E7361000164081700056600F8 +S315E0600C4000124E6830100C400020670000C460005F +S315E0600C50000E302F00060C400020670000DA2F0EF1 +S315E0600C602C790001344C48EE380100682D5F00783D +S315E0600C70301F285F0800000D660000264E6D4BEDC4 +S315E0600C80FFD848D507FE2B0C3B00204F2B082D4D97 +S315E0600C90007C2E7C00005AD841ED003260000020D6 +S315E0600CA04FEFFFD848D707FE2F0C3F004E682F085E +S315E0600CB02D4F007C41EF00322E7C00005AD82F0881 +S315E0600CC04EB900E0C1B4588F2A790001344C2B400C +S315E0600CD000682C6D007C285E301E265E4CD607FED2 +S315E0600CE04DEE00280800000D660000142E4C4E669E +S315E0600CF02F0B3F004CED78010068600000D42E4E6B +S315E0600D004E646000FFEC2A790001344C6000FFC459 +S315E0600D10222800026700000C5381670000562068B5 +S315E0600D200002301F211F0080000020003100200FEC +S315E0600D302E486000009C222F00086700002853813F +S315E0600D4067000030226F0008301F231F33004E68B3 +S315E0600D50BFC86700000A211F2E496000000C2E49BB +S315E0600D6060000008204F5C884E60089700056000D0 +S315E0600D70006070000817000567000004538060009B +S315E0600D8000504E5600002F0841EE00082F084EB97D +S315E0600D9000E0C1B4588F205F4E5E4E75302F000480 +S315E0600DA0028000003000671A3F6F000A000C3F6F58 +S315E0600DB00008000A3F6F000600082F570004588FAE +S315E0600DC04E753F6F000200043F570002548F4E7528 +S315E0600DD03F3C40844E730000206F0004202F0008E3 +S315E0600DE02F077E0060000020206F00042F07302F61 +S315E0600DF0000C1E00E18F1E00300748473E00202FA2 +S315E0600E00000E6F0000B6220808010000670410C7F4 +S315E0600E105380723FB0816F0000864FEFFFDC48D7AA +S315E0600E203C7C2407260728072A072C072247244705 +S315E0600E30264728472A471200E088602841E80100F3 +S315E0600E4048E83EFCFFD448E83EFCFFA848E83EFCA4 +S315E0600E50FF7C48E83EFCFF5048E83EFCFF2448E85B +S315E0600E600EFCFF0053806AD420016700000C02810B +S315E0600E700000003FEC8860184CD73C7C4FEF0024C4 +S315E0600E80603848D030FC48E830FC002041E800405B +S315E0600E9053806AEE4CD73C7C4FEF00242001120071 +S315E0600EA0028100000003E488600220C753806AFA8A +S315E0600EB02001600210C753806AFA2E1F202F0004BB +S315E0600EC04E750000206F0008226F0004B1C96E0005 +S315E0600ED00154670000F220082209B3800800000090 +S315E0600EE0660000E6202F000C670000DCD1C0D3C0AE +S315E0600EF02208080100006700000A1320538067009B +S315E0600F0000C6723FB0816F00009E4FEFFFD448D7B6 +S315E0600F107CFC1200E0886000004E41E8FF0043E997 +S315E0600F20FF004CD07CFC48D17CFC4CE87CFC002C7F +S315E0600F3048E97CFC002C4CE87CFC005848E97CFCE9 +S315E0600F4000584CE87CFC008448E97CFC00844CE872 +S315E0600F507CFC00B048E97CFC00B04CE81CFC00DCA2 +S315E0600F6048E91CFC00DC53806AB02001670001524E +S315E0600F7002810000003FEC886000001E41E8FFC08F +S315E0600F8043E9FFC04CD030FC48D130FC4CE830FC43 +S315E0600F90002048E930FC002053806AE04CD77CFCB6 +S315E0600FA04FEF002C20011200028100000003E4886C +S315E0600FB060000004232053806AFA20016000000488 +S315E0600FC0132053806AFA4E75202F000C6700FFF8F5 +S315E0600FD0D1C0D3C07210B0816D00FFE8120002810B +S315E0600FE00000000FE8886000003241E8FFF043E966 +S315E0600FF0FFF012D812D812D812D812D812D812D856 +S315E060100012D812D812D812D812D812D812D812D84A +S315E060101012D841E8FFF043E9FFF053806ACC200143 +S315E06010206000FFA020082209B38008000000660087 +S315E060103000E8202F000C6700FF8E080100006700C3 +S315E0601040000612D85380723FB0816F0000AA4FEF5E +S315E0601050FFD448D77CFC1200E0886000004E4CD09C +S315E06010607CFC48D17CFC4CE87CFC002C48E97CFCB0 +S315E0601070002C4CE87CFC005848E97CFC00584CE8C5 +S315E06010807CFC008448E97CFC00844CE87CFC00B095 +S315E060109048E97CFC00B04CE81CFC00DC48E91CFC40 +S315E06010A000DC41E8010043E9010053806AB02001B9 +S315E06010B06700000E02810000003FEC886000002AB5 +S315E06010C04CD77CFC4FEF002C6000FEFC4CD030FC33 +S315E06010D048D130FC4CE830FC002048E930FC002088 +S315E06010E041E8004043E9004053806AE04CD77CFC2D +S315E06010F04FEF002C20011200028100000003E4881B +S315E06011006000000422D853806AFA2001600000047F +S315E060111012D853806AFA4E75202F000C7210B08197 +S315E06011206D00FFF0120002810000000FE8886000A9 +S315E0601130002212D812D812D812D812D812D812D8E1 +S315E060114012D812D812D812D812D812D812D812D809 +S315E060115012D853806ADC20016000FFB82F3C0000A3 +S315E060116020504267487900005ADC4EB900E00DE84D +S315E06011704FEF000A4E754AB900013EA466000008CA +S315E0601180202F00044E75206F00044A1066000006AA +S315E060119020084E75202F00042240E7882200ED8962 +S315E06011A04841D081028000001FF841F900005ADC16 +S315E06011B0D1C0700A221867000016B3C16700000C40 +S315E06011C0588853806AEE6000000620184E75206FDE +S315E06011D00004700022006000000E32404840300992 +S315E06011E0E3884840D08112186600FFF03200324151 +S315E06011F048413209ED89484102810000003FB380F1 +S315E06012000280000003FFE588207900013EA420709B +S315E06012100800B1FC000000006600000A202F000410 +S315E06012204EFA003022186700FFF422482041220976 +S315E0601230226F0004101867000010B0196700FFF60F +S315E0601240204158886000FFDE4A116600FFF42041C5 +S315E060125020102240E7882200ED894841D081028053 +S315E060126000001FF841F900005ADCD1C0700A4A90CC +S315E06012706700000C508853806AF46000000820EF35 +S315E06012800004208920094E75206F000420D748D0DD +S315E0601290FCFC70004E75206F0004302F000867007C +S315E06012A00004700122184CD0FCFC2E814E750000C3 +S315E06012B023DF00007B2C23C200007B3023CA0000C2 +S315E06012C07B344E41243900007B30247900007B3446 +S315E06012D02F3900007B2C4E752F0A2F022F2F001618 +S315E06012E02F2F00162F2F00163F2F00183F3C004B84 +S315E06012F04E414FEF0010241F245F4E75206F0008AB +S315E0601300226F00044280528012D866FA53804E758E +S315E0601310206F0004322F00081018670AB00166F8E3 +S315E0601320538820084E7570004E7500004FEFFFC879 +S315E060133048D77FFE244143F90000527A205A22C8FA +S315E060134022DA47F900007B3822CB285A22DA229249 +S315E0601350700030280002322800063F00671E6A06E9 +S315E06013604268000260160C4001006F08303C0100E4 +S315E060137031400002538026DC53806AFA3F016A04FA +S315E0601380426800064EB900E1C64820790000527A0C +S315E0601390315F0006315F00024CD77FFE4FEF0038C9 +S315E06013A042803039000140B84E7541F900004FC2C5 +S315E06013B04A406C00000842406000000AB0506F008E +S315E06013C0000430104A416C00000642414E75B26836 +S315E06013D000026F000006322800024E754A390000AE +S315E06013E05123660000DC4FEFFFC448D77FFF101043 +S315E06013F012000281000000F80C0100F8660000BAF5 +S315E0601400028000000003E2886400000608C0000174 +S315E060141012390000511A028100000003B001670032 +S315E0601420002C3F0122790000523C4E91321F33C0BE +S315E06014300000502202800000FFFF02810000FFFFF3 +S315E0601440B181ED89808113C00000511A4A280001FC +S315E060145066144A280002660E43F90000511A0891A4 +S315E060146000056000005443F90000511A08D10005F8 +S315E060147030390000501C48C012280001488148C13C +S315E0601480D08132390000501E48C1162800024883D8 +S315E060149048C3D2836100FF142279000052444E9122 +S315E06014A06100FF0833C00000501C33C10000501ECD +S315E06014B02279000052404E914CD77FFF4FEF003CBF +S315E06014C04E754FEFFFF048D7030343FA00687000AC +S315E06014D072051018B019664C53816A00FFF6700009 +S315E06014E010180480000000596B00003A0C000003FD +S315E06014F0620000323200E288028100000001D2819F +S315E060150053814FEFFFD448D77CFC227900014970C4 +S315E06015104E914CD77CFC4FEF002C4CD703034FEF3A +S315E060152000104E754CD703034FEF00102F390001C2 +S315E060153049744E750500000000004A7900005020AD +S315E06015406600002C2F032F0240C2360200830000A3 +S315E0601550070046C333C00000511E33C1000051206E +S315E0601560760007F90000512246C2241F261F4E75F9 +S315E06015704E56FF824FEFFFD848D73CFC426EFFA243 +S315E06015803D7C0000FFFA43EEFFA032B9000052D086 +S315E060159033390000529A3339000052D433390000AF +S315E06015A052C63339000052C23339000052C833396B +S315E06015B0000052C43339000052DE3079000052E652 +S315E06015C0362EFF964A79000052DC6608322EFF9A84 +S315E06015D06000008E4FEFFFF848D703003F032F2EE1 +S315E06015E000084EB900E21BEE5C8F4CD703004FEF6C +S315E06015F0000836003D43FFA4342EFF9A38390000D8 +S315E060160052B63039000052B87200603E4FEFFFF8D4 +S315E060161048EF000C000075C036040083FFFF000051 +S315E0601620D68242C5380344C564063401528232022A +S315E06016304CEF000C00004FEF00087A000B39000019 +S315E060164052BB67063A01528532054A4267045382C5 +S315E060165060BA3D41FFA64A6EFF926604307C0000A8 +S315E06016603D48FFFE342EFF94302EFF983C39000053 +S315E060167052DA3E39000052D8426EFFB6082E0000BC +S315E0601680FFA167243839000052D6660E3A2EFFA0D5 +S315E060169002850000FFFE3D45FFA04A79000052BC8E +S315E06016A066063A01DA843205082E0002FFA1670871 +S315E06016B03A01DA86DA873205382EFF9267383D7C62 +S315E06016C00000FFFC3A0404850000070838053D4445 +S315E06016D0FF8267106E1A94813D42FF942A012203CD +S315E06016E0260560123A009A813D45FF98300560060E +S315E06016F02A01220326057A003339000052AC6700DE +S315E060170000BE3339000052AE3339000052B033398F +S315E0601710000052B23339000052B4B46EFF8C6C0CE8 +S315E0601720D483B46EFF8C6E5E6000048EB46EFF8808 +S315E06017306E0004864FEFFFFC48EF00010000D483A3 +S315E0601740538248C2716EFF8894804CEF00010000BE +S315E06017504FEF00046F300282000000016728082E18 +S315E06017600004FFA166204FEFFFFC48EF0001000098 +S315E06017704282302EFF9C3400E388E08AEE8A8082E3 +S315E06017803D40FF9C201FB06EFF8E6C163400D48106 +S315E06017903002340546823A02B06EFF8E6E206000FB +S315E06017A00418B06EFF8A6E0004103400D481538250 +S315E06017B03002B06EFF8A6F06340546823A02426EA8 +S315E06017C0FFE43439000052CE3D42FFF02439000098 +S315E06017D052CA2D42FFF6322EFFA00281FFFF0015AE +S315E06017E04A41670001FC4A6EFF92661208010002F8 +S315E06017F067044A45660808010004670001E44FEFA4 +S315E0601800FFFC48EF001000003039000052BE3400A3 +S315E060181002820000000F3D42FFE802800000FFFF09 +S315E0601820E888E3883439000052C03D6EFF96FFEAEF +S315E0601830362EFFEAD4835382C4EEFFF0382EFFF0F3 +S315E060184044843D44FFF03802D880206EFFF63404CD +S315E06018503A4241F0D800302EFF9A3239000052D633 +S315E0601860DE864A79000052DC671879C1E28C42C3B1 +S315E0601870320444C366045284320402870000FFFFE8 +S315E0601880E28F082E0000FFA16706D0813D41FFB6DA +S315E0601890426EFFE6322EFF96342EFFA00802000469 +S315E06018A067244A79000052DC661C5680382EFFE6D3 +S315E06018B052843D44FFE6382EFF9654843D44FF96BD +S315E06018C03801568432043D40FFECD0873D40FF9AB4 +S315E06018D002800000FFFFE888E388548044803D4052 +S315E06018E0FFEE448038015384C0C42279000052E29E +S315E06018F0776EFFFED3C32D49FFF608020004660645 +S315E060190008020002674C24493600322EFFEE9681CB +S315E060191002830000FFFFE28B5383720034C14A43C7 +S315E06019206704538360F60802000467264A7900007C +S315E060193052DC661E382EFFEC57843D44FFEC382EB1 +S315E0601940FF9A53843D44FF9A3800362EFFEED883E3 +S315E060195030047740D3C33D6EFFA0FF86426EFF9EA4 +S315E06019603D7C0001FFAC426EFFB43D7C0001FFAA06 +S315E06019703D7C0002FFA8382EFFA00284000000052F +S315E06019803D44FFA0281F610002C43D6EFF86FFA0B4 +S315E060199034390000529A3D42FF9E3E2EFFEE3407F8 +S315E06019A044823D42FFF03E02082E0004FFA1671626 +S315E06019B04A79000052DC660E206EFFF648C7DFAE5D +S315E06019C0FFF6610014644279000052BE427900007D +S315E06019D052C0342EFFA002820000FFFA3D42FFA013 +S315E06019E04A6EFF92670461000D364A79000052DC68 +S315E06019F067046100105C082E0000FFA1671C3039A7 +S315E0601A00000052D64A79000052BC660A342EFF9A2C +S315E0601A10D4803D42FF9A3D40FFB64A6EFF90670034 +S315E0601A2000E4302EFF94B06EFF8C6C3A3E00342EAC +S315E0601A30FF96DE823007B06EFF8C6F00017C342E3D +S315E0601A40FF8C9E82322EFF963D47FF963401948747 +S315E0601A503E39000052C0DE8233C7000052C0302EED +S315E0601A60FF8C3D40FF94B06EFF886E00014C3E00F7 +S315E0601A70342EFF96DE8253873007B06EFF886F1094 +S315E0601A80342EFF889E82342EFF9694873D42FF96E1 +S315E0601A90302EFF98B06EFF8E6C3A3E00342EFF9A81 +S315E0601AA0DE823007B06EFF8E6F00010E342EFF8E41 +S315E0601AB09E82322EFF9A3D47FF9A340194873E39E3 +S315E0601AC0000052BEDE8233C7000052BE302EFF8E6B +S315E0601AD03D40FF98B06EFF8A6E0000DE3400322E25 +S315E0601AE0FF9AD48153823002B06EFF8A6F16322E2F +S315E0601AF0FF8A9481322EFF9A92823D41FF9A60047A +S315E0601B00020400083239000052E03D41FFAC3D6E10 +S315E0601B10FFFAFFB43039000052763D40FFAA3A4002 +S315E0601B20207C00E01AFF1030D8003D40FFA8303935 +S315E0601B30000052BE340002820000000F3D42FFE822 +S315E0601B4073C0E68902810000FFFE3439000052C0AE +S315E0601B503D6EFF96FFEA362EFFEAD4835382C4EEEB +S315E0601B60FFF0362EFFF044833D43FFF03602D68128 +S315E0601B70206EFFF648C3D1C32D48FFF63D6EFF9A4F +S315E0601B80FFEC322EFF94362EFF96D2835381302EB1 +S315E0601B90FF984EBA13D222790000044ED3C12D4984 +S315E0601BA0FFF23D40FFE6303900005278360044836C +S315E0601BB03D43FFEE610000963239000052C64A7935 +S315E0601BC0000052DC6714322EFFA6362EFFA44A6E62 +S315E0601BD0FFA267062401220326027400053900008D +S315E0601BE052D167104A79000052BC66083439000069 +S315E0601BF052D6D2824A6EFF926E103439000052C2DB +S315E0601C00D48133C2000052C260364A6EFF826712E8 +S315E0601C106E203439000052C4948133C2000052C44D +S315E0601C20601E3439000052C2948133C2000052C251 +S315E0601C30600E3439000052C4D48133C2000052C40D +S315E0601C404CD73CFC4FEF00284E5E4E754FEFFFFCE5 +S315E0601C5048EF00200000322EFFE63A01362EFFE81C +S315E0601C609A83320530016A144485320500810000AA +S315E0601C7080003A0006850000001030053D41FFD641 +S315E0601C803A00E38D45F900E423F030053A4030321E +S315E0601C90D8003A0046853D45FFD8302EFFE63A004B +S315E0601CA0E38D30053A403632D8003D43FFDA0285AF +S315E0601CB00000FFFFE28D362EFFECDA833405300557 +S315E0601CC03A02362EFFB69A8302850000000FE38D56 +S315E0601CD034053A423432D8003A0246853D45FFDE65 +S315E0601CE042443D7C8000FFB076FF34050C40001036 +S315E0601CF062203A00E38D30053A403232D8003A014C +S315E0601D0046853E2EFFDACE853D47FFDA7EFC32051C +S315E0601D10605632007BC1E88D538532053601661820 +S315E0601D20322EFFE83A013E2EFFECDA8732050C41AF +S315E0601D30002064047E00600C4A6EFFD66D047E046B +S315E0601D4060027E080280FFFF000F4A4066083A03A1 +S315E0601D505385701036053A00E38D30053A403832E7 +S315E0601D60D8003A04468538053D47FF843D43FFE4A5 +S315E0601D703D44FFDC3A0354853605B8426504528536 +S315E0601D8036053D43FFE03D43FFE22A1F6048000021 +S315E0601D90040408080C0C101010101414181800E055 +S315E0601DA021FA00E0224200E0225A00E0228800E0C8 +S315E0601DB0227200E0221C00E0229E00E022B600E0F3 +S315E0601DC022CE00E022D000E022FA00E022E600E047 +S315E0601DD022BA00E0230C4FEFFFF448EF0106000063 +S315E0601DE0302EFF9E73EEFFACE2893D41FFAC3200E0 +S315E0601DF0D38175EEFFB4E28A3D42FFB4D381300110 +S315E0601E003A40207C00E01D8E1030D8003A40207CBD +S315E0601E1000E01D9E2470D800264A2A4A3840207C7D +S315E0601E2000E01DBA2870C800302EFFA06700008A67 +S315E0601E300800000167223239000052D23D41FFB20C +S315E0601E402D4DFFCC4BFA06BA2D4AFFC045FA07186E +S315E0601E502D4CFFB849FA06EC08000000671C426E9C +S315E0601E60FFAE2D4DFFD04BFA04BA2D4AFFC445FABA +S315E0601E7005A22D4CFFBC49FA054808000002673808 +S315E0601E803D6EFF9CFFB02D4DFFC84BFA06FE4A6ED5 +S315E0601E90FF846E246708426EFFE47E006016322E91 +S315E0601EA0FFEC0C41001063104A6EFFD66D047E04B1 +S315E0601EB060027E083D47FF843E2EFF846F062A4A15 +S315E0601EC03A2EFFEE362EFFEA320353813447207C0A +S315E0601ED000E01F362470A80036014CEF01060000D2 +S315E0601EE04FEF000C4ED24FEFFFF848EF00030000D3 +S315E0601EF0716EFFAA538042C13D40FFAA44C16F267E +S315E0601F00206EFFF6226EFFF254892D49FFF24CEF08 +S315E0601F10000300004FEF0008082E0002FFA16700F3 +S315E0601F20FEB66000FD284CEF000300004FEF0008AE +S315E0601F304E7500E01F4200E01F8200E0213600E0BF +S315E0601F402042342EFFDA3C2EFFF03E2EFFEE47FABB +S315E0601F50002460087146D1C07147D3C038112010A3 +S315E0601F60322EFFD66B04E2A86002E3A84840320056 +S315E0601F7048404ED532814A436704538360D6600059 +S315E0601F80FF66284B3C2EFFF03E2EFFEE45FA0062E0 +S315E0601F902A0A47FA002E600E7146D1C07147D3C057 +S315E0601FA0200B26452A0038112010322EFFD66B040E +S315E0601FB0E2A86002E3A8484032004840342EFFDAE7 +S315E0601FC04ED54FEFFFF848EF010100003281320055 +S315E0601FD0346EFFA8304A38318800342EFFDC200B9F +S315E0601FE026452A004CEF010100004FEF00084ED471 +S315E0601FF04FEFFFFC48EF01000000346EFFA8304A67 +S315E060200033818800205F4A4367045383608A6000B7 +S315E0602010FED6204622477D6EFFF0D1C67D45D3C60B +S315E0602020426EFFAE42873C2EFFB23E06E38EE08F05 +S315E0602030EE8F8C873D46FFB2082E0002FFA1660058 +S315E060204005E82C082E093D6EFFE4FFD42018381110 +S315E0602050322EFFD6E3A8484032004840342EFFDAFD +S315E060206047FA00044ED54FEFFFFC48EF0001000051 +S315E06020703281716EFFA8D3C0342EFFD847FA00587C +S315E0602080201F4FEFFFF848EF0028000038003604C5 +S315E0602090C6823018484030014840322EFFD6E3A869 +S315E06020A04840320048403A02468538033601C685E4 +S315E06020B04685B983381132033405776EFFD453838E +S315E06020C042C53D43FFD444C54CEF002800004FEFC6 +S315E06020D000086D184ED44FEFFFFC48EF000100009A +S315E06020E03281716EFFA8D3C0201F6096342EFFDC6C +S315E06020F047FA00044ED532814A436706538360004F +S315E0602100FF126000FDE2204622477D6EFFF0D1C6F9 +S315E06021107D45D3C6426EFFAE42873C2EFFB23E0699 +S315E0602120E38EE08FEE8F8C873D46FFB2082E00028D +S315E0602130FFA1660004F42C082E093D6EFFE4FFD48F +S315E0602140301848403811322EFFD6E2A848403200B7 +S315E06021504840342EFFDA47FA00044ED54FEFFFFCD5 +S315E060216048EF000100003281716EFFA8D3C0342EC3 +S315E0602170FFD847FA0056201F4FEFFFF848EF0028D8 +S315E0602180000038003604C682484030184840322E97 +S315E0602190FFD6E2A84840320048403A024685380316 +S315E06021A03601C6854685B983381132033405776EC4 +S315E06021B0FFD4538342C53D43FFD444C54CEF00286A +S315E06021C000004FEF00086D184ED44FEFFFFC48EF6C +S315E06021D0000100003281716EFFA8D3C0201F6098B5 +S315E06021E0342EFFDC47FA00044ED532814A43670657 +S315E06021F053836000FF126000FCEE4FEFFFFC48EF98 +S315E0602200000100003002468034003004C0823800AD +S315E06022103002468032043400201F4ED34FEFFFFC7D +S315E060222048EF000100003002468034000280000082 +S315E0602230FFFF8280468034003001C0843200201F78 +S315E06022404ED34FEFFFFC48EF000100003001B9804C +S315E0602250C082B9803200201F4ED34FEFFFFC48EFBB +S315E0602260000100003001C0824680C0843200201F39 +S315E06022704ED34FEFFFFC48EF000100003001C08213 +S315E0602280B9803200201F4ED34FEFFFFC48EF0001CC +S315E060229000003001C08280843200201F4ED34FEFB1 +S315E06022A0FFFC48EF0001000030014680C082808478 +S315E06022B03200201F4ED372004ED34FEFFFFC48EF43 +S315E06022C0000100003001C0843200201F4ED34ED39F +S315E06022D04FEFFFFC48EF0001000030014680C0840C +S315E06022E03200201F4ED34FEFFFFC48EF00010000A5 +S315E06022F03001B9803200201F4ED34FEFFFFC48EF2C +S315E06023000001000071C48280201F4ED34FEFFFFCB6 +S315E060231048EF000100003001468080843200201FD3 +S315E06023204ED34FEFFFFC48EF000400004FEFFFF4A1 +S315E060233048D700E03C01CC8232063C2EFFDE082E18 +S315E06023400000FFB1671E42C200820000001044C276 +S315E06023503406DD8648463C02E28E64043C3C8000FE +S315E06023603D46FFDE4A6EFFE46B0ABC6EFFDC64044A +S315E0602370C086600842403E01CE8632073C2EFFB6FC +S315E06023803A0248453A2EFFDCEDAD48453E05484504 +S315E06023903401C487C0853202484132005386200149 +S315E06023A0E28882804A466704538660F2300148419B +S315E06023B04CD700E04FEF000C246EFFD0241F4ED2C6 +S315E06023C04FEFFFF848D700603A2EFFE253853D4570 +S315E06023D0FFE2660A3C013A2EFFDECC8532063C2EF1 +S315E06023E0FFB6484142412A015386E28D82854A46DC +S315E06023F06704538660F43A0148417DEEFFAE82861B +S315E06024003D45FFAE4CD700604FEF0008246EFFBC41 +S315E06024104ED24FEFFFF448D700E03C2EFFDE3A2E77 +S315E0602420FFE253853D45FFE26B2067223A2EFFE2ED +S315E060243053853D45FFE266063A01CA8632053C01B0 +S315E06024403A2EFFDACC853206607C424160063A017C +S315E0602450CA8632054FEFFFFC48EF000100004A6E86 +S315E0602460FFB06B5A3A2EFFE454853E2EFFDC42C045 +S315E060247000800000001044C03007DF8748473E0018 +S315E0602480E28F64063E3C80005285302EFFDA0C40D7 +S315E060249000016602538542C000800000001044C01F +S315E06024A03006DD8648463C00E28E64043C3C8000B3 +S315E06024B0BE46650252853D46FFDE3D45FFE03D6E28 +S315E06024C0FFE0FFE2201F3C2EFFB6484142412A0171 +S315E06024D05386E28D82854A466704538660F43A0104 +S315E06024E048417DEEFFAE82863D45FFAE3A01CA8247 +S315E06024F032054CD700E04FEF000C246EFFC44ED29D +S315E06025004FEFFFF848EF000C00003601342EFFB2C3 +S315E0602510C68232033600342EFFB2C682300342836F +S315E0602520342EFFB23602E38AE08BEE8B84833D4243 +S315E0602530FFB2246EFFCC4CEF000C00004FEF0008BA +S315E06025404ED24FEFFFF848EF000500003401302E21 +S315E0602550FFB2C480246EFFB832024CEF0005000083 +S315E06025604FEF00084ED24FEFFFF848EF000500004E +S315E06025703401302EFFB2C480246EFFC032024CEFCD +S315E0602580000500004FEF00084ED24FEFFFF848EF2E +S315E0602590002800004285362EFFB03A03E38BE08DDB +S315E06025A0EE8D8685E28D42C53D43FFB044C5642E1F +S315E06025B048413200E2894842342EFFDCE28A3D42FD +S315E06025C0FFDC48423D42FFDA6734302EFFD66B1EB1 +S315E06025D03600528330033D40FFD630014841246ED9 +S315E06025E0FFC84CEF002800004FEF00084ED24A00CB +S315E06025F0670836005383300360DC424060D23D4278 +S315E0602600FFDC48423D42FFDA716EFFA8D3C0381165 +S315E0602610700F3A00362EFFD69A83300500800000B0 +S315E060262080003D40FFD660B642873C2EFFB03E0656 +S315E0602630E38EE08FEE8F8C87E28F42C73D46FFB038 +S315E060264044C7640C4A6EFFD66B00F9F86000FAE89E +S315E060265042C600860000001044C642873C2EFFD882 +S315E06026609F873E062C07E2863D46FFD8302EFFDC8C +S315E06026700C40FFFF676A42C600860000001044C651 +S315E06026803C003E06DD8648463C07E28E3D46FFDC82 +S315E0602690302EFFD64A0066063D7C8000FFD8322E9B +S315E06026A0FFDA7DC1E28E42C7320644C767443D41E8 +S315E06026B0FFDA4A406B0E3C2EFFD652863D46FFD689 +S315E06026C06000FA744A00670E302EFFD653803D40B4 +S315E06026D0FFD66000F96E3D7C0001FFD66000FA58D7 +S315E06026E03C2EFFE452863D46FFE43D7C8000FFDC05 +S315E06026F0609E3D7CFFFFFFDA342EFFE453823D426D +S315E0602700FFE4756EFFA8D3C2740F3C029C8034066A +S315E06027100082000080003D42FFD66000F9264FEF60 +S315E0602720FFE448EF0010000C48EF00C000143239B7 +S315E0602730000052BE340102820000000F3D42FFE815 +S315E060274079C1E88C7A0148EF00200010EBAC206E8E +S315E0602750FFF648C4D1C43D6EFF9AFFEC3039000005 +S315E060276052C0322EFF963D41FFEA342EFFF04A6EAC +S315E0602770FF82670001B66D16382EFFF044843D4453 +S315E0602780FFF038015384D084C0C248C0D1C0302E37 +S315E0602790FF9602800000FFFFE888EBA854803D408A +S315E06027A0FFEE2279000052E2796EFFFCD3C44A6EF6 +S315E06027B0FF826E18382EFFEE44843D44FFEE322EE3 +S315E06027C0FF9A38015384C0C448C0D3C0342EFFE8B2 +S315E06027D0363C80004CEF0010000C380338437BC376 +S315E06027E0E4AD7000342EFFEC4CEF004000143C2E5C +S315E06027F0FFF02448264936054CEF002000104CEFE8 +S315E0602800008000184FEF001C6000009648EF00045F +S315E06028100000322EFFEA4CEF0008000460363E10FE +S315E06028203407C4834A426702808414054A02671407 +S315E060283002820000000F3C0448463C04E4AE3806E1 +S315E06028404846E38E4CEF00400008640432C07000F6 +S315E06028507546D1C248EF004000084A41670453819B +S315E060286060BC32807000756EFFEED7C2224B380CCA +S315E060287014054A02671402820000000F3C034846D2 +S315E06028803C03E4AE36064846E38E6402548A204A48 +S315E06028904CEF000400004CEF004000084FEF000CE6 +S315E06028A04FEFFFF448EF000800044A4267065382A0 +S315E06028B06000FF5A302EFF9A322EFF963D41FFECC4 +S315E06028C03D41FF9A3D40FFEA3D40FF96302EFFA432 +S315E06028D03D6EFFA6FFA43D40FFA63D7C0001FFA242 +S315E06028E0302EFFEE4A6EFF826E063600448330037A +S315E06028F03D40FFF0302EFFFC4CEF000800044FEF48 +S315E0602900000C4279000052BE4FEFFFFC48EF000238 +S315E060291000002479000052E27340D5C12D4AFFF6EB +S315E06029204279000052C0221F4E75302EFF9A382E33 +S315E0602930FFE8D084538002800000FFFFE888EBA8C0 +S315E060294054803D40FFEE3400EAAA5382C0C13C00A9 +S315E060295079EEFFFC0086FFFF0000DC842279000050 +S315E060296052E248C6D3C64CEF0010000C4CEF004074 +S315E06029700014607E48EF000200002448360248EF0B +S315E0602980000C0004301A7C00780F48EF0010000C51 +S315E060299073C0EAA93001120534067810028100009E +S315E06029A0001F67103602D582484234033E3C001170 +S315E06029B09E81EEAAD78348433602E9AB3C024CEFF0 +S315E06029C00010000C42C14A446704538460BC44C1B1 +S315E06029D033024CEF000C000442C14A43670653835E +S315E06029E044C1609A44C1736EFFF0D1C14CEF0002FE +S315E06029F0000042C74A416708538144C76000FF76DA +S315E0602A00323CFFFF44C73D6EFFEEFFF022790000E7 +S315E0602A1052E27B6EFFFCD3C52D49FFF630390000EC +S315E0602A2052BE3E003A2EFF9ADE854487028700005A +S315E0602A30000F33C7000052BE4279000052C04CEF2F +S315E0602A40002000104CEF008000184FEF001C4E7520 +S315E0602A504FEFFFF048EF00C000083039000052BE8B +S315E0602A60380002800000000F3D40FFE87DC4E88E3C +S315E0602A70E38E3039000052C0C0EEFFF03E00DE86E5 +S315E0602A80300748EF00010000206EFFF67740D1C3C3 +S315E0602A90342EFFE8363C8000380348EF001000042F +S315E0602AA002830000FFFFE4AB342EFF96322EFF9ADE +S315E0602AB03D42FFEA3D41FFEC2279000052E2717946 +S315E0602AC0000052E6D3C0082E0004FFA16772302EE4 +S315E0602AD0FF9652803D40FF96302EFF9A52803D40F1 +S315E0602AE0FF9A3001E388568002800000FFFFE888A5 +S315E0602AF0E38854803A004CEF004000087C003200E6 +S315E0602B0032C64A456704538560F645E9FFFE3A02F8 +S315E0602B103005E3883A007141D5C034864A4567049A +S315E0602B20538560F23A0071C5E28853803A00350613 +S315E0602B3042C04A456706538544C060F244C06016A9 +S315E0602B4071C1E688E3880080FFFF000054803200B0 +S315E0602B504CEF004000083D41FFEE4CEF0080000C7A +S315E0602B603E39000052BA2007D180781FE9A8E28F8B +S315E0602B708E807E002007D180781FE9A8E28F8E8064 +S315E0602B803E2EFFF03439000052B83A2EFFEA3005A7 +S315E0602B9053803C3C7FFF3A004CEF001100004FEF62 +S315E0602BA000104A876B644FEFFFF448EF00070000C0 +S315E0602BB071C232060081FFFF0000D2804FEFFFF85E +S315E0602BC048EF0001000442C02E80202F00043C0143 +S315E0602BD02F400004201744C04CEF000100044FEF83 +S315E0602BE000084CEF0003000064046100015475477F +S315E0602BF0D1C24CEF000400084FEF000C4A45670471 +S315E0602C00538560A23A3CFFFF60664FEFFFF848EFFE +S315E0602C100006000071C232060081FFFF0000D2802C +S315E0602C204FEFFFF848EF0001000442C02E80202FEE +S315E0602C3000043C012F400004201744C04CEF000123 +S315E0602C4000044FEF00084CEF0002000064046100EE +S315E0602C5000F0610000EC7547D1C24CEF000400045F +S315E0602C604FEF00084A4567045385609E3A3CFFFF94 +S315E0602C704FEFFFF448EF00700000342EFF9A3239D0 +S315E0602C80000052B63039000052B8760079C03A0199 +S315E0602C900085FFFF0000DA8442C6320544C664065A +S315E0602CA03803528436044A876A0638035284360407 +S315E0602CB04A426704538260D433C1000052B63D4352 +S315E0602CC0FF9A3D6EFFA4FF96322EFFEE3D41FFF088 +S315E0602CD0082E0004FFA167542079000052E2717962 +S315E0602CE0000052E6D1C03E0148C743F078024CEF9F +S315E0602CF0007000004FEF000C610001344FEFFFF809 +S315E0602D0048EF000600003039000052E63400322E0B +S315E0602D10FFEED481720F33C1000052BE30024CEF39 +S315E0602D20000600004FEF00086000FBDE303900006F +S315E0602D3052E64CEF007000004FEF000C6000FBC401 +S315E0602D404FEFFFFC48EF000200004FEFFFF448D77B +S315E0602D500058264828492A473D45FFD470003A2E58 +S315E0602D60FFEC53853E39000052B6600A32034843B1 +S315E0602D703601E28B640234583C0ACC834A466646A6 +S315E0602D804A876B1A02820000FFFF32070081FFFF6D +S315E0602D900000D28242C63E0144C664666056028244 +S315E0602DA00000FFFF32070081FFFF0000D28242C6CB +S315E0602DB03E0144C6643E320448443801E28C6434E1 +S315E0602DC032C07000602E02820000FFFF3207008191 +S315E0602DD0FFFF0000D28242C63E0144C66410808492 +S315E0602DE0320448443801E28C640432C070004A8799 +S315E0602DF06A108084320448443801E28C640432C04C +S315E0602E0070004A45670653856000FF6232804CD7A2 +S315E0602E1000584FEF000C204B224C221F48C1D3C113 +S315E0602E202E0D3A2EFFD44E753A4743F0D8003A4716 +S315E0602E3045F1D80071C7E28853803D40FFD43C2E0F +S315E0602E40FF962A4853863E003846264A7A007C003A +S315E0602E502212E2894FEFFFF048EF0002000448EFEC +S315E0602E600080000C201010052200E288741FE5A99E +S315E0602E7080812411140626022203E28B781FE9A9D9 +S315E0602E80868128032204E28C7A1FEBA988812A00D6 +S315E0602E902C00B580B785B9864281E38DDB81220659 +S315E0602EA0E58E7E1EEEA98C81808580864CEF0002E1 +S315E0602EB0000448EF000100002A012C01B581B785C6 +S315E0602EC0B9864280E38DDB802006E58E7E1EEEA825 +S315E0602ED08C804CEF00010000808180858086B7821F +S315E0602EE0B78448EF000800082204E58C761EE6A960 +S315E0602EF088818082808448403C113A063605B183F9 +S315E0602F00C680548A2212122AFFFF3A032601E2891A +S315E0602F107E1FEFAB828332C53A1030C64CEF008835 +S315E0602F2000084FEF00104A47670653876000FF26A8 +S315E0602F304FEFFFFC48EF000100003E2EFFD4204D2E +S315E0602F403C0C244B224A716EFFF0D5C0201F0C4624 +S315E0602F500001660224494A46670653866000FEEA37 +S315E0602F603C3CFFFF4E754FEFFFF848D7000CC2F9C7 +S315E0602F700000527834000280FFFF000F02820000FA +S315E0602F80FFF0163900012B80E6AA48C2D2824CD700 +S315E0602F90000C4FEF00084E752A4F2A6D00042E7C18 +S315E0602FA00000814C200D06800000008023C00001F7 +S315E0602FB08908202D000CD0AD0014D0AD001C068031 +S315E0602FC0000001002F002F0D42673F3C004A4E4152 +S315E0602FD04FEF000C42A73F3C00204E4123C000006B +S315E0602FE0804441F900014F4C20AD002C4EB900E21F +S315E0602FF07DF4207C00014F5C42816000000430C1BA +S315E06030004A806704538060F641F900E0332E23C8B6 +S315E06030100000815E41F900E0333023C80000816240 +S315E06030202C7C00014F5C2A4EDDFC0000074A2B4EEB +S315E0603030003E2E4E4EB900E27FFC30390001890435 +S315E06030404A406600FFA82F39000080443F3C0020DC +S315E06030504E415C8F2F3C000000004E4123DF0000B4 +S315E0603060804823C20000814C23CA00008150427927 +S315E060307000018E64427900018E664E410C8000004C +S315E060308000006C26720133C100018E6433C000011A +S315E06030908E660C40FFE06E12320048C146810481C4 +S315E06030A00000001E33C100018E6624390000814CA9 +S315E06030B02479000081502F39000080484E75220F38 +S315E06030C02F0A2F026100006A207900014DA820686E +S315E06030D000082F28003E224F93FC00000050214953 +S315E06030E0003E6100006222412F29000E2F29000A6E +S315E06030F02F2900063F2900043F3C004B4E414FEF2D +S315E060310000106100002C207900014DA820680008BD +S315E0603110215F003E61000030241F245F720133C1ED +S315E060312000018E644A806B06427900018E644E75BA +S315E06031302F0040C033C000008154008000000700CB +S315E060314046C0201F4E752F0030390000815446C0BE +S315E0603150201F4E752F0040C000800000070046C06B +S315E0603160201F4E752F0040C002800000F8FF46C069 +S315E0603170201F4E7541F8008820BC00E03216203CE6 +S315E060318000E031B42F003F3C01013F3C00054E4D6D +S315E0603190508F4E752039000081566000FFE870FF61 +S315E06031A06100FFE223C000008156203C00E031B4BC +S315E06031B06000FFD2302F0004322F00064FEFFFDCB5 +S315E06031C048D778F8227C00E424203F006600000AB5 +S315E06031D0307C000060000012468030400C400011F8 +S315E06031E06F000006307C0000103098003F013F0021 +S315E06031F04EB900E24F78588F321F48C10C4000004C +S315E060320067000008223C0001000020014CD778F8F6 +S315E06032104FEF00244E754A4067140C4000C86716AD +S315E06032200C4000C967102F390000815A4E7542671D +S315E06032303F3C004C4E416100FEF84E6841E8FFC8F5 +S315E060324048D07FFE4E602C7900014DA82C6E0008B8 +S315E06032503CBC00012D4800422D4F00462E6E003EDC +S315E06032606100FEE42F013F004EB900E2CA3A5C8F8E +S315E06032706100FEBE207900014DA82068000842503A +S315E0603280214F003E2E680046206800424CD07FFE0B +S315E060329041E800384E606100FEAE4E7341F800884A +S315E06032A020B90000815A4E7541F8008823D00000AD +S315E06032B0815A20BC00E032164E7523CF000081664D +S315E06032C04FF9000081FA4FEFFFE848D707073F0064 +S315E06032D04EB900E28974548F4CD707074FEF001858 +S315E06032E02E79000081664E7523CF000081664FF926 +S315E06032F0000081FA4FEFFFE848D707073F013F003C +S315E06033002F3C00E28C964EB900E23CF0508F4CD7F1 +S315E060331007074FEF00182E79000081664E75302F53 +S315E06033200004322F00062F390000815E4E754E751F +S315E060333023CF0000816A4FF90000827A4AB9000023 +S315E060334081766700002652B90000817253B90000A9 +S315E06033508176660000162F39000081722F3C00E20C +S315E060336043A84EB900E23CF0508F3F3C00014EB9B5 +S315E060337000E289F8548F2E790000816A2F390000C7 +S315E0603380816E4E7540C033C00000828200800000CE +S315E0603390070046C0206F0004202F00082068000860 +S315E06033A02268003E23002149003E303900008282D7 +S315E06033B046C04E75207900014DA824680008206853 +S315E06033C0001822680018D3E8001C2308233C00E0BC +S315E06033D0322E4E61200F51802540003E40C008806D +S315E06033E0000D46C0226800084ED14A3900014F58A8 +S315E06033F0670000044E75103900014F58528013C0C3 +S315E060340000014F5840C033C0000082800080000059 +S315E0603410070046C02F0E2C7900014DA82C6E0008DF +S315E06034202D5F003A48EE3FFF00024E6D2D4D0042A3 +S315E06034302D4F003E4FF90000850430390000828050 +S315E060344046C04EF900E23F1640C033C000008280BD +S315E060345000800000070046C02E6F00044CEF3FFF7F +S315E060346000022C6F00424E662C6F003A2E6F003ED3 +S315E0603470423900014F5830390000828046C04E75AF +S315E060348041F90000850820BC00014B60223C000049 +S315E0603490850870734E424E7541F90000850C20AF89 +S315E06034A000044E7541F90000851020AF00044E75AA +S315E06034B041F90000851420AF00044E7541F9000023 +S315E06034C0851820AF00044E7541F900014B6E20AFC0 +S315E06034D000044E7541F900014B7220AF00044E7551 +S315E06034E0206F000420B900014B724E75206F000812 +S315E06034F0226F00044280424112186700000A32C11E +S315E060350052806000FFF44E7541EF0004200A2258B5 +S315E06035102458349924583499245834992450349151 +S315E060352024404E7541EF0004225822D822904E7511 +S315E0603530206F0004322F0008101867000008B00101 +S315E06035406600FFF6538820084E7500002A4F2E7CF1 +S315E060355000008D1C2A6D0004202D000CD0AD0014F7 +S315E0603560D0AD001C0680000001002F002F0D4267E1 +S315E06035703F3C004A4E414FEF000C203C00E0359066 +S315E060358023C0000238BC4EB900E3810642674E4173 +S315E0603590202F000423CF00008D1C2E7C000091209C +S315E06035A02F004EB900E3574C2E7900008D1C4E7506 +S315E06035B0222F0004303C00C84E424E752A6F00044C +S315E06035C02E7C0000A1342F0D202D000CD0AD001410 +S315E06035D0D0AD001C0680000001002F002F0D3F3C9F +S315E06035E000003F3C004A4E414FEF000C2F3C00E0AC +S315E06035F036843F3C01013F3C00054E4D508F23C071 +S315E0603600000091206100002A4EB900E41FD0588F77 +S315E06036106100000642A74E412F39000091203F3CF1 +S315E060362001013F3C00054E4D508F4EBA001E4E756F +S315E06036302F3C00E0365E3F3C01023F3C00054E4DCC +S315E0603640508F23C0000091244E752F3900009124DD +S315E06036503F3C01023F3C00054E4D508F4E754A7926 +S315E060366000025114670000044E7540C002800000FD +S315E06036705FFF46C03F3C00012F3C000251184EB947 +S315E060368000E01296207C00E424344EBA00403F3CD1 +S315E060369000023F3C00024E4D588F02800000005F02 +S315E06036A00C000041670000160C000052670000162F +S315E06036B00C0000496600FFCE42804E75302F000454 +S315E06036C048C04E75303C000148404E754280101847 +S315E06036D00C000000670000182F083F003F3C000226 +S315E06036E03F3C00034E4D5C8F205F4EFAFFE04E7527 +S315E06036F023DF000091284E4D2F39000091284E754A +S315E060370023DF0000912C4E4E2F390000912C4E7530 +S315E06037104E560000202E000880FC000A48404240D9 +S315E060372048404E5E4E754E560000202E000880FCE6 +S315E0603730000A424048404E5E4E7523DF00009130FD +S315E06037404E412F39000091304E7500004FEFFFF487 +S315E060375048D7040C242F0010262F001445F900E00A +S315E0603760F66C4A7900012CEC671A2F032F02487A2F +S315E0603770005C4E922F032F02487A00224E924FEF62 +S315E06037800018600E2F032F02487A00424E924FEFE8 +S315E0603790000C4CD7040C4FEF000C4E752F02720AEA +S315E06037A0342F00087142B28066103F3C000D3F3C0A +S315E06037B000024EB900E03E68588F3F023F3C00028F +S315E06037C04EB900E03E68588F241F4E752F02720A8C +S315E06037D0342F00087142B280660E558F3F3C000D73 +S315E06037E04EB900E0A888588F48823F420008241FFF +S315E06037F060FF000070964E560000486E000C2F2E5B +S315E06038000008487AFF984EB900E0F66C4FEF000C7E +S315E06038104E5E4E754E560000486E000C2F2E000828 +S315E0603820487AFFAA4EB900E0F66C4FEF000C4E5EA8 +S315E06038304E754E560000486E000C2F2E00084EBAAC +S315E0603840FF0C508F4E5E4E756173736572742066C1 +S315E060385061696C656420696E2025733A256C642025 +S315E06038602866756E6374696F6E202573293A202524 +S315E0603870730A00002F2F00102F2F00102F2F00103B +S315E06038802F2F0010487AFFC24EBAFF8A4FEF00141E +S315E06038904E751B760D0A004E6F2073617665642067 +S315E06038A0696E666F20696E20646F70616E69633BF6 +S315E06038B02068616C7465642E0A0050616E69633AD3 +S315E06038C02025732E206676203D20307825303478AA +S315E06038D02C207372203D203078253034782C20708F +S315E06038E063203D2030782530386C780A0050616E70 +S315E06038F069633A20457863657074696F6E206E75AA +S315E06039006D6265722025642E206676203D203078D3 +S315E0603910253034782C207372203D20307825303481 +S315E0603920782C207063203D2030782530386C780A1A +S315E06039300020202020202020666F726D6174203D7B +S315E06039402025642C20766563746F72203D202564A3 +S315E06039502C206661756C74203D2025640A004172F6 +S315E06039606567733A202530386C78202530386C7876 +S315E0603970202530386C78202530386C78202025304A +S315E0603980386C78202530386C78202530386C782093 +S315E06039902530386C780A0044726567733A202530C2 +S315E06039A0386C78202530386C78202530386C782073 +S315E06039B02530386C7820202530386C7820253038F2 +S315E06039C06C78202530386C78202530386C780A00A1 +S315E06039D050726F636573736F722068616C7465644F +S315E06039E02E0A00004E5600002F0A2F02487AFEA4E7 +S315E06039F04EBAFE04588F203C12345678B0B90000B7 +S315E0603A000380670C487AFE914EBAFE28600001207A +S315E0603A102239000003C46612486E000C2F2E00089F +S315E0603A204EBAFD2A508F60000086200174095580E9 +S315E0603A3041FAFE00B48065202F39000003D03F399B +S315E0603A40000003CE43FA01823F39000003CC2F31F8 +S315E0603A501C00487AFE66601A558F2F39000003D045 +S315E0603A603F39000003CE3F39000003CC3F01487A7E +S315E0603A70FE7D4E9073F9000003CCA5424FEF000E39 +S315E0603A802001028000000C00C481E08080823F005B +S315E0603A9020010280000003FCE4803F00700CE0A996 +S315E0603AA03F01487AFE8D4EBAFD8A4FEF000C2F3902 +S315E0603AB0000003C02F39000003BC2F39000003B8B3 +S315E0603AC02F39000003B445FAFD6A2F39000003B0D0 +S315E0603AD02F39000003AC2F39000003A82F3900000E +S315E0603AE003A4487AFE7A4E924FEF00202EB900008A +S315E0603AF003A02F390000039C2F39000003982F396B +S315E0603B00000003942F39000003902F390000038CE6 +S315E0603B102F39000003882F3900000384487AFE7944 +S315E0603B204E924FEF00202EBC00E039D04E924EB957 +S315E0603B3000E00B7000616363657373206572726F9A +S315E0603B40720061646472657373206572726F72008D +S315E0603B50696C6C6567616C20657863657074696FC4 +S315E0603B606E00646976696465206279207A65726F51 +S315E0603B70006461746174797065206F766572666CF5 +S315E0603B806F77202843484B29007472617076206F06 +S315E0603B90766572666C6F7720626974206572726FA3 +S315E0603BA0720070726976696C6567652076696F6CBC +S315E0603BB06174696F6E005472616365004C696E652D +S315E0603BC041004C696E65460000E03B3400E03B3402 +S315E0603BD000E03B3500E03B4200E03B5000E03B620A +S315E0603BE000E03B7100E03B8900E03BA200E03BB6D1 +S315E0603BF000E03BBC00E03BC22F03203C00004E04EB +S315E0603C002F02322F000CA3437541B682671A163C29 +S315E0603C100002203C00004E12B682670C203C000099 +S315E0603C204DE84A416702A140241F261F4E754AB9F6 +S315E0603C300000A13866182039000004BA2079000037 +S315E0603C4004BA48404240D08823C00000A1382039F9 +S315E0603C500000A138223CBB40E62D4C0108005280B2 +S315E0603C6023C00000A138E0884E75203C00004E2459 +S315E0603C704E75206F00044ED0702C4E7542804E75A6 +S315E0603C8000E081A400E0064C00E0799400E079B2BF +S315E0603C9000E07A8000E07E1400E079BA00E07AE243 +S315E0603CA000E06E1000E06DE800E06B5E00E0064C60 +S315E0603CB000E05C6E00E0566000E03BF800E0552016 +S315E0603CC000E05D0200E03C2E00E065C200E06AE0F4 +S315E0603CD000E0064C00E0A61200E0507000E05210F2 +S315E0603CE000E05D3E00E061BA00E0559C00E05616FB +S315E0603CF000E062D000E0632A00E0630400E05694EE +S315E0603D0000E0635000E0064C00E03C6A00E05E06DE +S315E0603D1000E0064C00E079C600E03C7200E0064C4C +S315E0603D2000E0064C00E0673A00E072D000E07942DD +S315E0603D3000E03C7800E0064C00E08E8200E0064C55 +S315E0603D4000E0064C00E0064C00E0064C00E0064C65 +S315E0603D5000E0064C00E0064C00E0064C00E0064C55 +S315E0603D6000E0064C00E0064C00E0064C00E0064C45 +S315E0603D7000E0064C00E0064C00E0064C00E0064C35 +S315E0603D8000E0064C00E0064C00E0064C00E0064C25 +S315E0603D9000E0064C00E0064C00E0064C00E0064C15 +S315E0603DA000E0064C00E0064C00E0064C00E0064C05 +S315E0603DB000E0064C00E0064C00E0064C00E0064CF5 +S315E0603DC000E079E200E079FC00E0064C00E0064CB9 +S315E0603DD000E0064C00E0064C00E0064C00E0064CD5 +S315E0603DE000E07C1C00E07FF2005A00001038FA2BFD +S315E0603DF05DC071004E7542804E7542804E75428060 +S315E0603E004E7542804E754EBAFFE44A8067081038B8 +S315E0603E10FA2F71804E7560FE42804E7542804E7517 +S315E0603E2042804E7542804E754E754E751038FA2D4D +S315E0603E305DC071004E754EBAFFF44A80670A41EF85 +S315E0603E40000711D0FA2F4E7560FEA1404E75A14075 +S315E0603E504E75A1404E75A1404E754E753F6F00069A +S315E0603E60000460FF00005EC43F6F0006000460FF70 +S315E0603E7000006730203C00E057C823C00000051E04 +S315E0603E80203C00E03DEC23C000000522203C00E041 +S315E0603E905D9223C000000526203C00E03DF623C08D +S315E0603EA00000052A203C00E05BD423C00000052E1C +S315E0603EB0203C00E03DFA23C000000532203C00E0F3 +S315E0603EC03DFE23C000000536203C00E03E0223C0F4 +S315E0603ED00000053A203C00E057CC23C00000053ED8 +S315E0603EE0203C00E03E0623C000000542203C00E0A6 +S315E0603EF05DAA23C000000546203C00E05BEC23C0E1 +S315E0603F000000054A203C00E03E1823C00000054E54 +S315E0603F10203C00E03E1C23C000000552203C00E04F +S315E0603F203E2023C000000556203C00E03E2423C02E +S315E0603F300000055A203C00E057DE23C00000057E05 +S315E0603F40203C00E03E3623C000000582203C00E0D5 +S315E0603F503E6823C000000586203C00E05C5623C036 +S315E0603F600000058A203C00E061A223C00000058EC7 +S315E0603F70203C00E03E5C23C000000592203C00E06F +S315E0603F803E2823C000000596203C00E03E2A23C080 +S315E0603F900000059A203C00E057D023C00000055E93 +S315E0603FA0203C00E03E2C23C000000562203C00E09F +S315E0603FB03E4A23C000000566203C00E05C4623C024 +S315E0603FC00000056A203C00E0619223C00000056EB7 +S315E0603FD0203C00E03E4E23C000000572203C00E03D +S315E0603FE03E5223C000000576203C00E03E5623C0EA +S315E0603FF00000057A203C00E03E5A23C00000050E32 +S315E060400023C00000051223C00000050623C000009F +S315E0604010050A23C0000005024E7500004FEFFFD091 +S315E0604020322F003C48D77CFC346F0034302F003EA2 +S315E0604030756F003AA1462A2F0036262F0040794157 +S315E0604040BC84670277C178082E0AC88773C04A4481 +S315E0604050666A781FB881650001383C00CDFC002AAD +S315E06040602046D1FC000114C04A68000C67000122BA +S315E0604070382800287D68000E73442E01DE87E989C2 +S315E06040809287068100011A0A22414C5160067D46FC +S315E06040904C0638006B0000FE4C062800222800081B +S315E06040A0670A2043D1C2B288630000EAC1FC002AF5 +S315E06040B00680000114C42040D690603E7819B8812D +S315E06040C0650000CE734041F900011A042801D884E6 +S315E06040D0E98992844A701800670000B64A836D00E9 +S315E06040E000B4068100011A0620412210670A2043C7 +S315E06040F0D1C2B2886300009E3800220AA340C08124 +S315E06041007D442E0455874DF900E0794247F900E099 +S315E06041106E362440702A4C0608000680000114C002 +S315E06041202A4028404BED002249EC002020020C8218 +S315E060413000007FFF6F0471FC7FFF3F40002E068228 +S315E0604140FFFF8001A341B2866D18558F3F043F158E +S315E06041503F142F033F002F053F0A4E934FEF0014A5 +S315E06041606022320A670C3F072F053F002F034E9609 +S315E0604170600E3F072F053F002F034EB900E072D077 +S315E06041804FEF000C4A826F0E716F002EDA80609CF2 +S315E060419070F1600270F84CD77CFC4FEF00304E75E2 +S315E06041A04FEFFFF4302F001048D7040C741F73C034 +S315E06041B0B481650000B27140143C002A4C002800CE +S315E06041C02042D1FC000114C04A68000C67000098E8 +S315E06041D0A341B2806D000094322800282279000065 +S315E06041E004BA71412600D683E9889083068000018F +S315E06041F01A0E24402012068000000064B0896E6AC0 +S315E06042002F2800043F012479000004C63F3CFFFFED +S315E06042103F3C00012F0A3F3C00084EBAFE004FEFDC +S315E060422000104A4067047140604641F9000114E4B9 +S315E060423071B0280073AA0008B081663241F90001C6 +S315E060424014E571B0280073AA0009B081662041F9CF +S315E0604250000114E671B0280073AA000AB08157C065 +S315E060426071005480600A70F1600642806002A54089 +S315E06042704CD7040C4FEF000C4E754FEFFFE8721F02 +S315E060428048D73C0C342F001C71C2B28065000148EF +S315E06042903602C7FC002A2643D7FC000114C04A6BED +S315E06042A0000C670001322F2B00043F2B00283F3CB7 +S315E06042B0FFFF3F3C00012F39000004C63F3C000889 +S315E06042C04EBAFD5A4FEF00104A406600010A247963 +S315E06042D0000004C64BF900E0672A49EB000E486A25 +S315E06042E0000B4E9573AA000D3880C1C137410010AE +S315E06042F037400012486A00114E953214508F670EAF +S315E060430071C07341EB884C41080037400014486A3D +S315E060431000164BF900E0672A4E953202588FC3FCCF +S315E0604320002A2641D7FC000114C0306B001422003D +S315E06043305281374000163741001849EB001AD088A1 +S315E0604340D28038814A2A000D671A486A00134E9572 +S315E06043503214588F9081360073AA000D77C386C1F8 +S315E06043603743001CC5FC002AA34149F900E0672AEF +S315E06043702642D7FC000114C0716B001C0C80000063 +S315E060438005A05EC04880C0813740001E486A001ABA +S315E06043904E9437400022486A00184E94508F43EAA4 +S315E06043A000083740002041F9000114E4200206804D +S315E06043B0000114CE1191280041F9000114E543EAA9 +S315E06043C0000945EA000A1191280041F9000114E666 +S315E06043D011922800600242804CD73C0C4FEF0018E7 +S315E06043E04E75558F3F3CFFFF4EB900E05D68588FD4 +S315E06043F044C06B16A940C0B9000004C2670C7002E5 +S315E060440033C00000044642804E75424033C000002F +S315E0604410044660FF00002B624201303C02004FEF31 +S315E0604420FFEC48D71C0C41F900011A0033D00001BB +S315E06044301420740242B90001143242B90001143604 +S315E060444047F90001142413C10001142245F9000163 +S315E0604450143A49FAFE2633C00001147C13C1000108 +S315E06044601423558F3F02421B429A4E94588F4A80DE +S315E060447067162040301073790001147C7740B28370 +S315E06044806C0633C00001147C528271427210B280B5 +S315E060449066D0323C0300207C4148444923C8000191 +S315E06044A01472203C0001147241F9000114204CD7CB +S315E06044B01C0C23C00001147623C8000005164FEFDC +S315E06044C0001433C10001147A4E754EB900E070EA0B +S315E06044D0700233C000011A00A740C1B9000004C2EF +S315E06044E04EB900E0787A6000FF30203C0000A13CE5 +S315E06044F023C0000004C6203C00E043E223C0000085 +S315E0604500047A203C00E0427A23C000000472203C3A +S315E060451000E0401C23C000000476203C00E041A09F +S315E060452023C00000047E42B90000046A4EB900E090 +S315E060453065A460964D6178696D756D206E756D6286 +S315E06045406572206F6620706172746974696F6E73EC +S315E06045502072656163686564210A00003279000152 +S315E06045601A004FEFFFF4702048D70C04206F00125A +S315E06045707349B0816610487AFFBC4EB900E03814E2 +S315E0604580588F70FF607E702A52894C01080045F9A9 +S315E0604590000114C047E8000142021590080045F9A1 +S315E06045A0000114C154881593080045F9000114C24E +S315E06045B01590080041F9000114C3118208002040FB +S315E06045C0D1FC000114C045EF001F33C900011A0099 +S315E06045D0342F0010216F00160004216F001A0008C6 +S315E06045E054823142002874013142000C41F90001E5 +S315E06045F014E611920801A340E3A8714081B9000076 +S315E060460004C242404CD70C044FEF000C4E75203983 +S315E0604610000004C24E75736F0004A340E3A8C0B9FE +S315E0604620000004C24E7542412F02206F000843E845 +S315E06046300200719075A800015488E188D082D0812B +S315E06046403200B3C866EC241F4E7500002F02736F0C +S315E06046500008A142206F000AE58922412011B48852 +S315E060466067022288241F4E7570144E7560FFFFFF47 +S315E0604670FFA0558F3F2F00062F390000047E4EB90C +S315E060468000E00692508F4E75558F3F2F00062F390A +S315E0604690000004724EB900E00692508F4E75716F5D +S315E06046A00004AF41B2806D1441F90000055E2F3021 +S315E06046B00C004EB900E00682588F4E7542804E750A +S315E06046C0302F0004AF4141F90000053EC0812F3034 +S315E06046D00C004EB900E00682588F4E75302F00040C +S315E06046E0AF4141F90000051EC0812F300C004EB984 +S315E06046F000E00682588F4E752F2F00103F2F001274 +S315E06047003F2F00123F2F00122F2F00103F2F001275 +S315E06047102F39000004764EB900E006C24FEF001470 +S315E06047204E75302F00043F2F0006AF4141F900007F +S315E0604730057E3F00C0812F300C004EB900E006AA2E +S315E0604740508F4E7562696F735F696E697428290A66 +S315E06047500073637265656E5F696E697428290A0025 +S315E0604760626D656D5F696E697428290A0070726FA3 +S315E0604770636573736F725F696E697428290A006393 +S315E06047806F6F6B69655F696E697428290A006D6190 +S315E06047906368696E655F696E697428290A00766583 +S315E06047A063735F696E697428290A006D66705F6974 +S315E06047B06E697428290A00736E645F696E6974288D +S315E06047C0290A006B62645F696E697428290A006D64 +S315E06047D06964695F696E697428290A00696E69743B +S315E06047E05F616369615F7665637328290A00616664 +S315E06047F074657220696E69745F616369615F76652D +S315E0604800637328290A00616674657220626C6B6462 +S315E060481065765F696E697428290A006166746572F7 +S315E060482020767435325F696E697428290A0061669C +S315E060483074657220636C6F636B5F696E6974282957 +S315E06048400A006166746572206E6C735F696E697486 +S315E060485028290A006166746572206E6C735F736501 +S315E0604860745F6C616E6728290A0061667465722000 +S315E06048706F73696E697428290A00616674657220CF +S315E06048807365745F737228307832333030290A008A +S315E0604890616674657220636172747363616E282900 +S315E06048A00A00616674657220786D616464616C7437 +S315E06048B028290A0062696F735F696E697428292026 +S315E06048C0656E640A00506C6561736520656A656350 +S315E06048D0742074686520666C6F70707920616E64B0 +S315E06048E0206869742052455455524E00006D696ED9 +S315E06048F0742E707267005C4155544F5C2A2E50529C +S315E060490047004C6F6164696E67202573202E2E2EFA +S315E06049100A005B4F4B5D0A005C4155544F5C0043B7 +S315E06049204F4D4D414E442E50524700537973746556 +S315E06049306D2068616C746564210A00004FEFFF18B2 +S315E060494048D77C0C487AFDFE45F900E038144E9273 +S315E06049504EB900E096444EB900E08A78487AFDF3B5 +S315E06049604E924EB900E07E9E487AFDF64E924EB982 +S315E060497000E05838487AFDF74E924EB900E006FC02 +S315E0604980487AFDFD4E924EB900E0894C487AFE00C9 +S315E06049904E924EB900E08BB6487AFE044E924EB91E +S315E06049A000E003284EB900E0034242B9000004CEBD +S315E06049B042B9000004D242B9000004D6203C00E0CF +S315E06049C0046621C00068203C00E0043821C000880D +S315E06049D0203C00E005C821C000B8203C00E006802D +S315E06049E021C0001421C0006421C0006C21C00074A5 +S315E06049F021C0007821C0007C43F900E0048A21C927 +S315E0604A00007043F900E005BA21C900B470FF43F9CC +S315E0604A1000E0099821C9002843F900E0000023C9B5 +S315E0604A20000004F243F900E0067E23C900000400BA +S315E0604A3023C90000040843F9000004CE23C900003E +S315E0604A400456487AFD6742B9000004DA33C00000D4 +S315E0604A5004EE203C00004EE823C0000004A2203CA7 +S315E0604A6000E005B623C000000404700842B9000007 +S315E0604A7004DE42B9000004E242B9000004E642B94D +S315E0604A80000004EA33C0000004544E924FEF002069 +S315E0604A904EB900E056E6487AFD1F4E924EB900E008 +S315E0604AA06298487AFD1F4E924EB900E06234487AC9 +S315E0604AB0FD1F4E924EB900E05C9E487AFD204E9214 +S315E0604AC04EB900E000C8487AFD264E9240C046FCEA +S315E0604AD025004EB900E044EA487AFD2C4E924EB984 +S315E0604AE000E080CA4EB900E0986C4EB900E0991AD1 +S315E0604AF04EB900E0A678487AFD234E92700133C045 +S315E0604B00000004524EB900E03E744EB900E057B87A +S315E0604B104EB900E05032487AFD164E924FEF0020D3 +S315E0604B204EB900E0F9AC487AFD1A4E924EB900E013 +S315E0604B3090862F004EB900E0F9DC487AFD184E9277 +S315E0604B4043F900E02F9823C9000004FE4EB900E067 +S315E0604B50C102487AFD164E9240C046FC2300487A70 +S315E0604B60FD1A4E924FEF00123F3C00034EB900E053 +S315E0604B70008A487AFD1C4E92508F2039000005A4C9 +S315E0604B800C80010000006F160680FF0000002F0019 +S315E0604B902F3C010000004EB900E0BF5C508F487AC0 +S315E0604BA0FD0245F900E038144E92487AFD084E92CF +S315E0604BB0508F203C752019F3B0B900000420661CC4 +S315E0604BC0227C237698AAB3F90000043A660E203C6C +S315E0604BD05555AAAAB0B90000051A6724227C75204B +S315E0604BE019F323C900000420203C237698AA227C8E +S315E0604BF05555AAAA23C00000043A23C90000051A45 +S315E0604C00558F3F3C003045F900E012B04E92588F28 +S315E0604C104A7900011B7466164A7900012BBC660E60 +S315E0604C203F3900E0001E3F3C002B4E92588F4A7998 +S315E0604C3000011B706728203C1234ABCDB0B900E0B0 +S315E0604C400014661A487AFC7F4EB900E011762F00B0 +S315E0604C504EB900E037F64EB900E05DAA508F4EB926 +S315E0604C6000E0848C4EB900E086844EB900E043E211 +S315E0604C703039000004463F0033C00000A53C3F3CAD +S315E0604C80000E4EB900E012B0588F4A7900012B90C1 +S315E0604C90674C558F487A0268487AFC52487AFC4EEF +S315E0604CA03F3C000545F900E012D84E924FEF000A0E +S315E0604CB043F900E035BC20402149000842A8001CC9 +S315E0604CC042A8001442A8000C2EBC00E048EC2F007D +S315E0604CD0487AFC1A3F3C00044E924FEF0010558F25 +S315E0604CE03F3CFFFF4EB900E05D68588F44C0670007 +S315E0604CF00154420047F900E012D81F40001E487890 +S315E0604D00008045EF00222F0A4EB900E09820548FCC +S315E0604D102EBC00E04EFE2F0A487AFBD33F3C0005EE +S315E0604D204E9324402052202A000490882F00486841 +S315E0604D3001004EB900E0979A4FEF00184A806F3C49 +S315E0604D40558F487AFBA82F0A2F003F3C00324E93DE +S315E0604D504FEF0010B5C066244EB900E097E0558F7E +S315E0604D60487AFB8A2F0A487AFB8448803F3C0004F5 +S315E0604D7033C0000004464E934FEF0010558F2F2A44 +S315E0604D80002C3F3C004947F900E012B04E93548F47 +S315E0604D902E8A3F3C00494E935C8F3F3900000446C3 +S315E0604DA04EB900E04616588F4A8067000098558FE6 +S315E0604DB049EF00A02F0C3F3C001A260C49F900E0B1 +S315E0604DC038144BF900E012D84E933F3C0007487A1E +S315E0604DD0FB263F3C004E4E934FEF0010240F0682B9 +S315E0604DE0000000BC45EF00CA4DF900E1C4B660487A +S315E0604DF0101910C066FA1F4000C82F022F0A4E969F +S315E0604E002F0A487AFAFE4E944FEF000A2EBC00E075 +S315E0604E104EFE487AFAD82F0A42674E95487AFAF4F7 +S315E0604E204E944FEF000E2E833F3C001A4E935C8FFC +S315E0604E303F3C004F4E93588F4A40660843FAFADA91 +S315E0604E40204A60AC45F900E012D84A790000048255 +S315E0604E506712558F487A00A8487AFA92487AFAC17A +S315E0604E6042676040558F487A0096487AFA80487A79 +S315E0604E70FA7C3F3C00054E924FEF000A43F9000092 +S315E0604E8004FE20402151000842A8001C42A80014FC +S315E0604E9042A8000C2EBC00E048EC2F00487AFA4E9F +S315E0604EA03F3C00044E924FEF00104EB900E0973859 +S315E0604EB0487AFA794EB900E011762F004EB900E0F3 +S315E0604EC038324EB900E00B7042804E7500E0592AE8 +S315E0604ED000E046DC00E046C000E0472200E046F83D +S315E0604EE000E0464C00E0466800E0468800E0469E0A +S315E0604EF000E0467200E0466C00E05D68000C000091 +S315E0604F002F027013342F00083202C2FCCCCDE0A928 +S315E0604F102001E988C3FC000A9481D082241F4E7583 +S315E0604F202F02740F73AF00092001E888C282241F44 +S315E0604F30C1FC000AD0814E754FEFFFF4720948D785 +S315E0604F40040C242F001026024243484345FAFFB280 +S315E0604F502003E2A80680000000503F004E92720FE8 +S315E0604F6013C00000A5692003EA88C0813E804E92A6 +S315E0604F7013C00000A56A701FC6803E833602D482E5 +S315E0604F804E92723F13C00000A56BC4813E824E9282 +S315E0604F9075C3723F13C00000A56E2002EA88C08127 +S315E0604FA03E804E9213C00000A56D700BE0AA3E8273 +S315E0604FB04E9241F90000A5682F083F3C000613C0F9 +S315E0604FC00000A56C10BC001B4EB900E061BA4CEF66 +S315E0604FD0040C00084FEF00144E7542404878FC21FF +S315E0604FE033C000011B744EB900E00658588F4A8002 +S315E0604FF0671E1038FC21A1417100B280671210383B +S315E0605000FC237100B2806708700133C000011B7435 +S315E06050104E75AD672F2F000848790000A5694EB937 +S315E060502000E00EC44FEF000C700133C00000A566CF +S315E06050304E754A7900012BBC671A70024840B0B9D8 +S315E060504000012BB06D0470F6600270F433C00000AE +S315E0605050A5404E754A7900011B74661271F900E04D +S315E0605060001E484042402F004EBAFECE588F4E7525 +S315E06050704FEFFFF048D7041C202F00144A79000157 +S315E06050802BBC6744721F762F3400C08145F900E07F +S315E06050908E5C780B75C2D0803F0042674E922002EC +S315E06050A0EA88E8AAC0833F003F3C00024E92700463 +S315E06050B03F42001E4CEF041C00083F40001C4FEFCF +S315E06050C0001860FF00003D984A7900011B74670094 +S315E06050D001062600741F4243484373FCCCCD781327 +S315E06050E0307CFC2143F90000A548C4834C021800DB +S315E06050F0E8A9380113C10000A5502203EA89C9FC7A +S315E0605100000A948413C20000A54F740F7813C2821C +S315E0605110343CCCCD4C012800E8AAC5FC000A92825A +S315E060512013C10000A55113C10000A5527209240302 +S315E0605130E2AA323CCCCD4C021800E8A9360113C194 +S315E06051400000A554C7FC000A948313C20000A5536F +S315E06051502400762FD4823202C2FCCCCDE8A9C3FC0F +S315E0605160000A9481721FC28071C013C20000A54814 +S315E06051707412C2FCCCCDE4A92400EA8A13C1000013 +S315E0605180A549C48373FCCCCD4C021800E8A9183C51 +S315E0605190000BE8A8360113C10000A54B73FCCCCD2B +S315E06051A04C001800C7FC000A948313C20000A54AAD +S315E06051B07413E4A9340113C10000A54DC5FC000ACF +S315E06051C0908213C00000A54C10995488B1FCFFFF93 +S315E06051D0FC3B66F460102F4000144CD7041C4FEF84 +S315E06051E000106000FD544CD7041C4FEF00104E7564 +S315E06051F069636C6B6275663A2079656172203D2001 +S315E060520025782C206D6F6E7468203D2025780A0025 +S315E06052104FEFFFE848D7047C4A7900012BBC676C06 +S315E0605220558F3F3C000745F900E08E3478097A1FD8 +S315E06052304E923EBC000816004E923EBC0009C68502 +S315E060524014004E924257720FC48132390000A54075 +S315E06052507180EB8AD081E9A884804E923EBC0002E0 +S315E0605260848316004E923EBC0004180048424242D7 +S315E060527077834E92588F73847180780BEB89E9A8B7 +S315E06052808280828373C18282600001F64A7900017E +S315E06052901B7467000124600812D054885280600C49 +S315E06052A04240307CFC2143F90000A54873407A0C0B +S315E06052B0BA816CE44240307CFC2145F90000A55897 +S315E06052C043F90000A548731014C17519B48166D01E +S315E06052D05280B1FCFFFFFC396704548860E8714096 +S315E06052E0720DB28066BA14390000A552103900001A +S315E06052F0A551760F780F7A0948824880C483C083C7 +S315E060530016390000A554C5FC000A4883C68422020B +S315E0605310D28014390000A553EB89C7FC000A4882A5 +S315E0605320C484200316390000A550D08214390000E9 +S315E0605330A54F4883EBA81A3C000FC684488282805A +S315E0605340C484C7FC000A200316390000A54BD0824E +S315E060535014390000A54A8280488348824841424128 +S315E0605360C684C48418390000A54DC7FC000A488489 +S315E06053702003D08216390000A54C740FC882EB88F2 +S315E06053804883C9FC000AC682240418390000A5498E +S315E0605390D483760BE7AA16390000A5484884C88509 +S315E06053A080824883C685C9FC000A2404D48380824F +S315E06053B071C08280600000CA4240558F4879000023 +S315E06053C0A568721C3F0033C00000A56613C10000EB +S315E06053D0A5684EB900E061BA508F203C007A1200B1 +S315E06053E06002538032390000A56666044A8066F240 +S315E06053F071B90000A56A45FAFB283F0071B9000063 +S315E0605400A5693F00487AFDEA4EB900E0381471B903 +S315E06054100000A5695C8F3F004E92380071B90000CC +S315E0605420A56A3E800684FFFFFFB04E923C0071B9EC +S315E06054300000A56B3E804E923A0071B90000A56E01 +S315E06054403E804E92360071B90000A56D3E8077C30E +S315E0605450E28B4E92340071B90000A56C3E80EB8A17 +S315E06054604E92588F2206EB898483760BE7A8828575 +S315E06054707A09EBAC8480828475C24841424182827B +S315E06054804CD7047C20014FEF00184E754FEFFFF4C8 +S315E060549048D7001C362F0010302F0012322F001430 +S315E06054A0A3447543B88267266D064A436710606613 +S315E06054B0A543B6826728A744B882665A603A420234 +S315E06054C011C2FA1911C1FA1F11C0FA1960484203F4 +S315E06054D011C3FA1B11C1FA2111C0FA1B60381438E6 +S315E06054E0FA1D780FC48411C2FA1D11C1FA2374F053 +S315E06054F0C0821238FA1D60181438FA1D76F0780FFB +S315E0605500C084C48311C2FA1D11C1FA251238FA1D8E +S315E0605510808111C0FA1D4CD7001C4FEF000C4E7510 +S315E06055204FEFFFE8302F001C48D700FC3C2F001EF1 +S315E06055303A2F0020382F0022362F0024342F002601 +S315E06055407E0F73C0BE816520714041FA024A123017 +S315E06055500A0110300A00488148803F013F003F3C25 +S315E060556000034EBAFF285C8F4A466D0633C60001DB +S315E06055701B784A456D0411C5FA294A446D0411C485 +S315E0605580FA2B4A436D0411C3FA2D4A426D0411C2E7 +S315E0605590FA274CD700FC4FEF00184E752F02720FBA +S315E06055A0302F0008AF42C0812200B4806C34240002 +S315E06055B0A3405182E5A81238FA134680C28011C131 +S315E06055C0FA131238FA07C28011C1FA071238FA0BD9 +S315E06055D0C28011C1FA0B1238FA0FC08111C0FA0FFE +S315E06055E06030A340E3A81438FA1546802200C282F0 +S315E06055F011C1FA151238FA09C28011C1FA091238D6 +S315E0605600FA0DC28011C1FA0D1238FA11C08111C0CB +S315E0605610FA11241F4E752F02720F302F0008AF4229 +S315E0605620C0812200B4806C1C5181A340E3A812388B +S315E0605630FA07828011C1FA071238FA13808111C025 +S315E0605640FA136018A340E3A81238FA09828011C100 +S315E0605650FA091238FA15808111C0FA15241F4E75C1 +S315E06056604FEFFFF4700F48D7001C342F0010262F41 +S315E06056700012C4803F024EBAFF247142E5882040A2 +S315E0605680214301003F4200124CEF001C00024FEF45 +S315E0605690000E60824FEFFFF048D7003C342F0014D5 +S315E06056A0302F0016322F0018A745262F001A79C230 +S315E06056B0BA8465283F013F003F0275424EBAFDCE8F +S315E06056C02F43001C41FA00C841F02A004CEF003C31 +S315E06056D000063F50001A4FEF001660844CD7003C3E +S315E06056E04FEF00104E75424011C0FA0111C0FA0347 +S315E06056F011C0FA0511C0FA0711C0FA0911C0FA0B18 +S315E060570011C0FA0D11C0FA0F11C0FA1111C0FA13E7 +S315E060571011C0FA1511C0FA1711C0FA1911C0FA1BB7 +S315E060572011C0FA1D11C0FA1F11C0FA2111C0FA2387 +S315E060573011C0FA2511C0FA2B11C0FA2D33C0000151 +S315E06057401B78704811C0FA17303C1111487900E0B7 +S315E060575005523F3C00C033C000011B7A70143F3CE9 +S315E0605760005033C0000004423F3C00024EBAFF26C0 +S315E060577042673F3C00013F3C00013F3C0088426796 +S315E06057803F3C00014EBAFD9A4FEF00164E75000D94 +S315E06057900008000500040101010201040105010899 +S315E06057A0010A010B01100120014001600180018FB7 +S315E06057B001AF024002600000558F3F3C00204EB9C9 +S315E06057C000E06304588F4E7542804E7542804E7598 +S315E06057D01038FA010800000057C071004E752F0AB4 +S315E06057E02F024EBAFFEC4A80674840C246FC27006B +S315E06057F03F3C000745F900E062D042674E923F3C8D +S315E0605800008708C000073F004E923F3C008F3F2F65 +S315E060581000184E924FEF000A3F3CFFDF4EB900E0C2 +S315E0605820632A3EBC00204EB900E0630440C046C235 +S315E0605830588F241F245F4E75203C00E000000C80EA +S315E060584000E0000067080C80DFFFFFFF630A42406C +S315E060585033C000011B706014700133C000011B701F +S315E0605860203C00E5D6EC23C000E0000C22390000C5 +S315E0605870044E203900E0000C42B90000048E23C1DA +S315E060588000000436928023C0000004FA23C00000C2 +S315E0605890043223C000000492700123C10000049624 +S315E06058A042B90000049A33C00000A5704E7562618B +S315E06058B06C6C6F6328256C64292061742077726F45 +S315E06058C06E672074696D650A0062616C6C6F63284F +S315E06058D0256C64293A206E6F206D656D6F72790A6A +S315E06058E00000222F00044A790000A57066082F01A7 +S315E06058F0487AFFBC6016568170FCC2802079000051 +S315E06059000496B2886F0C2F01487AFFBF4EB900E06B +S315E06059100B2891C1203900000492D28023C8000090 +S315E0605920049623C1000004924E754240206F000445 +S315E060593042A8000433C00000A570203C0000048E3D +S315E06059402140000820804E756D697373696E67202B +S315E0605950465242206275666665720041435349204D +S315E06059602D3E2025640A00004FEFFFB4720A302F07 +S315E0605970005C48D77CFC386F00502E2F00523C2FDD +S315E06059800056282F00589BCD347C860047F900E00E +S315E060599067E4EB8882803F41002E720882803F4157 +S315E06059A000326000021C7146727F343C0080B28037 +S315E06059B06D0234060C84010000006F1A263900017E +S315E06059C02BB46E16487AFF824EB900E03814588FD1 +S315E06059D0A140600001F4260460043A7C0001300CCA +S315E06059E0671A320D671671427209E3A82F002F0419 +S315E06059F02F034EB900E00EC44FEF000C2003E088A1 +S315E0605A002203424148419DCE1F400037200748406F +S315E0605A1048C01F41003B721FC2802007E08871804A +S315E0605A203F41003E73823F40004271872F4100480C +S315E0605A302F400044300C6706302F002E6004302F74 +S315E0605A40003272FF33C10000043E1543000D122F91 +S315E0605A5000371541000B122F003B15410009320C4F +S315E0605A606716323C019835410006323C0098354174 +S315E0605A700006323C01986014323C009835410006DD +S315E0605A80323C019835410006323C009835410006CB +S315E0605A90323C00887180354200043541000635406D +S315E0605AA00004487800644E93588F4A40660000B020 +S315E0605AB0322F003E103CFF8A354000063541000437 +S315E0605AC0487800644E93588F4A4066000092322FC1 +S315E0605AD00042103CFF8A35400006354100044878B4 +S315E0605AE000644E93588F4A406674322F0046103CED +S315E0605AF0FF8A3540000635410004487800644E93DD +S315E0605B00588F4A406658322F004A103CFF8A35402B +S315E0605B10000635410004487800644E93588F4A4049 +S315E0605B20663C4241103C000A3540000635410004BF +S315E0605B30487803E84E93588F4A406622103CFF8AC5 +S315E0605B40323C00803540000642003A3886043541F2 +S315E0605B50000633C00000043E4A456614601E323CCF +S315E0605B60008042407AFF3541000633C00000043EC3 +S315E0605B70528E714EA541B2806600FEBA300C661A4E +S315E0605B80320D671671427209E3A82F002F032F04C6 +S315E0605B904EB900E00EC44FEF000C4A456714558FCE +S315E0605BA03F05487AFDB74EB900E038147145508F2D +S315E0605BB060169C82754272092002DE82E3A8D88074 +S315E0605BC04A466E00FDE242804CD77CFC4FEF004CCB +S315E0605BD04E750000323900004E18303900004E1A1A +S315E0605BE073417140B08156C071004E752F0A2F0225 +S315E0605BF045FAFFE24E924A8067FA40C146FC2700CA +S315E0605C00303900004E18528033C000004E183439E7 +S315E0605C1000004E18303900004E1675427140B08271 +S315E0605C206E08424033C000004E18207900004E12E4 +S315E0605C30303900004E18714071B0080040C246C16C +S315E0605C40241F245F4E751038FC04A541C0814A408C +S315E0605C5056C071004E752F0A45FAFFEC4E924A80A7 +S315E0605C6067FA41EF000B11D0FC06245F4E754FEFEB +S315E0605C70FFF448D70C04246F0012342F001047FA63 +S315E0605C80FFD6600C719A53823F0042674E93588FFD +S315E0605C904A426CF04CD70C044FEF000C4E75307CEA +S315E0605CA0FC0410BC000310BC00154E7530390000D2 +S315E0605CB04E0C588033C000004E0C323900004E0C5A +S315E0605CC0303900004E0873417140B0816E08424041 +S315E0605CD033C000004E0C323900004E0C3039000003 +S315E0605CE04E0873417140B0816716207900004E041A +S315E0605CF0303900004E0C43EF0004714021910800FA +S315E0605D004E752F02A142206F0008222F000C202F33 +S315E0605D100010B488670623C80000A584A142B48158 +S315E0605D20670623C10000A588A141B280670623C04B +S315E0605D300000A58C203C0000A584241F4E754E56BD +S315E0605D40FFFC486EFFFC4EB900E090AA4878001C64 +S315E0605D502F2EFFFC48790000A5844EB900E00EC402 +S315E0605D604FEF00104E5E4E752F02322F0008A142B3 +S315E0605D707141B4806608713900011B7C601010398E +S315E0605D8000011B7C13C100011B7C48807140241F0D +S315E0605D904E75323900004E0A303900004E0C7341C0 +S315E0605DA07140B08156C071004E752F0A2F0240C215 +S315E0605DB045FAFFE04E924A8067FA40C046FC27000B +S315E0605DC0303900004E0A588033C000004E0A32393E +S315E0605DD000004E0A303900004E0873417140B081D0 +S315E0605DE06E08424033C000004E0A207900004E043F +S315E0605DF0303900004E0A71402030080040C146C28A +S315E0605E00241F245F4E7530390000A5762F032F02DC +S315E0605E10306F000C75B90000A579A343322F000EF0 +S315E0605E20E18880827548B6826C0633C80000A57644 +S315E0605E307541A343B6826C0633C10000A578241F82 +S315E0605E40261F4E75103900000484A5414880C28043 +S315E0605E504A41674232390000A5746F3A538133C1D3 +S315E0605E600000A574663008000000671271B9000092 +S315E0605E70A5A1558F3F004EB900E006E4588F2F3953 +S315E0605E800000A5A04EBAFE26588F41F90000A5781D +S315E0605E9033D00000A5744E750708090405060102B3 +S315E0605EA0030000002F0372532F02342F000C71425F +S315E0605EB0B2806626103900011B7C123C000E760C1F +S315E0605EC04880C280B681661208000000670642B963 +S315E0605ED0000004204EB900E00000200202800000CD +S315E0605EE000804A4067000086424002820000FF7FF1 +S315E0605EF0722A33C00000A5747142B28067266D0ACB +S315E0605F00761DB68066000286602E7236B280670ABB +S315E0605F107638B68066000276602A103900011B7C0E +S315E0605F2072FE601C103900011B7C76FDC08313C0D5 +S315E0605F3000011B7C60000256103900011B7C72FB7D +S315E0605F40C08160EA103900011B7C76F7C083363980 +S315E0605F500000A57C13C000011B7C4A436D00022E45 +S315E0605F6070FF33C00000A57C600001C671427236E6 +S315E0605F70B28067206D10761DB680672C123C002AD1 +S315E0605F80B280666A60187638B680672A723AB280FE +S315E0605F90665C6030103900011B7CA34360121039E7 +S315E0605FA000011B7CA5416016103900011B7CA943EA +S315E0605FB080836000FF7A103900011B7C7208808163 +S315E0605FC06000FF6C1039000004844880080000001F +S315E0605FD0670E558F3F3C003A4EB900E006E4588FB5 +S315E0605FE0103900011B7C7610B7806000FF421039E3 +S315E0605FF000011B7C72084880C2804A416700008AC3 +S315E060600022020681FFFFFF9973C17609B681653882 +S315E06060104A790000A57C6C08424033C00000A57C4C +S315E06060200682FFFFFF99754230390000A57C41FA90 +S315E0606030FE6812302800C1FC000A4881D08133C076 +S315E06060400000A57C60000146A741C2804A4167081E +S315E060605020790000A594601C7210C2804A416708EE +S315E060606020790000A598600C20790000A590600476 +S315E06060705488600277421210675A48817341B6814C +S315E060608066EE16280001604EA741C2804A41672647 +S315E060609022020681FFFFFFC573C17609B681650CF2 +S315E06060A00682000000194203600000867342207990 +S315E06060B00000A58860187610C68073424A43670878 +S315E06060C020790000A58C600620790000A584163052 +S315E06060D0180060024203A941C0814A406706701F0A +S315E06060E0C680604C30390000A57A6D2C714020790D +S315E06060F00000A59C738320700C0060025488101029 +S315E0606100670C48807140B28066F21628000172FF23 +S315E060611033C10000A57A6018200353807180AD41D9 +S315E0606120B280650C7783538333C30000A57A605CE5 +S315E0606130103900000484488008000000670C558F21 +S315E06061403F024EB900E006E4588F1039000004843F +S315E0606150758272087783484242424880C081D6821F +S315E06061604A40670E713900011B7C123C0018E3A8B7 +S315E0606170D6802F034EBAFB3623C30000A5A0588F06 +S315E060618041F90000A57633D00000A574241F261FD0 +S315E06061904E751038FC00A541C0814A4056C071007A +S315E06061A04E752F0A45FAFFEC4E924A8067FA41EF48 +S315E06061B0000B11D0FC02245F4E754FEFFFF448D719 +S315E06061C00C04246F0012342F001047FAFFD6600CDF +S315E06061D0719A53823F0042674E93588F4A426CF001 +S315E06061E04CD70C044FEF000C4E752F0A2F02142F7C +S315E06061F0000D45FAFF9E4E924A8067FA11C2FC0294 +S315E0606200241F245F4E752F0A2F02342F000C45FAA7 +S315E0606210FF824E924A8067FA7142E08045FAFF74E7 +S315E060622011C0FC024E924A8067FA11C2FC02241F3A +S315E0606230245F4E75307CFC002F0A45FAFFAE10BC39 +S315E0606240000310BCFF963F3CFF804E923F3C00014E +S315E06062504E923F3C001A4E923F3C00124E924240B4 +S315E0606260508F245F33C00000A574103C001933C022 +S315E06062700000A576103C000533C00000A57870FFED +S315E060628033C00000A57A33C00000A57C700F13C050 +S315E0606290000004846000FAA870C0307C880010BCFE +S315E06062A0000711C08802700710BC000E11C088029A +S315E06062B0203C00E0637A23C0000005AC203C00E0AF +S315E06062C0636E23C0000005B042B90000A5A44E7518 +S315E06062D02F02302F000A40C146FC2700740FC480AD +S315E06062E002800000008011C288004A40670841EFE2 +S315E06062F0000911D088021038880040C246C171801A +S315E0606300241F4E752F0240C046FC2700307C880073 +S315E060631010BC000E1210342F00087381828211C106 +S315E0606320880240C146C0241F4E752F0240C046FC1D +S315E06063302700307C880010BC000E1210342F000855 +S315E06063407381C28211C1880240C146C0241F4E7566 +S315E0606350222F000420390000A5A44A816D0E23C1D6 +S315E06063600000A5A4420113C10000A5A84E75487AB5 +S315E060637000E44EBAFFDC588F4E75487A00F24EBAAA +S315E0606380FFD0588F4E752F0A2F0224790000A5A4FE +S315E06063904A8A670000AA10390000A5A8660643EAA3 +S315E06063A000016036538013C00000A5A8600000902D +S315E06063B011C088007300AF421011B48166141238C0 +S315E06063C0880074C0C282743FC082828011C1880234 +S315E06063D0600411C08802548A54891012204A6CD035 +S315E06063E073800C8100000080670C10110C81000046 +S315E06063F000816634600A204913D80000A5AA603897 +S315E060640011C08800528910390000A5AA1219D081FE +S315E060641013C00000A5AA11C08802718012114881DC +S315E06064207341B2806612600813C00000A5A86706D3 +S315E060643041E90001600291C823C80000A5A4241FB9 +S315E0606440245F4E752F39000005AC4EB900E0068238 +S315E0606450588F4E75003B0100020003000400050002 +S315E0606460060007FE08100D030B800C01FF000034E8 +S315E060647001000200030004000500060007FE0810A4 +S315E060648009000A000B000C100D09FF002F02716F66 +S315E060649000082239000004BA2400D482E988908298 +S315E06064A0068000011A0E204042402081241F33C03E +S315E06064B00000043E4E752F0240C146FC2700700E78 +S315E06064C074F811C0880010388800C0824A6F0008EE +S315E06064D06604A9426002A54280824A6F000A6604A9 +S315E06064E0A342808211C08802420013C00000A5ACBE +S315E06064F040C046C1241F4E75202F00042200E0896B +S315E060650011C0860D4240484011C1860B11C0860914 +S315E06065104E75303C03E860024E7153804A4066F83F +S315E06065204E752F02342F000A41EF000831D08606FF +S315E06065304EBAFFE031C28604241F60D670012F0296 +S315E0606540322F000833C00000043E71790000A5C018 +S315E06065507541B082674AA142B48067182400D4824C +S315E0606560E78841F90000A5B443F90000A5C290822E +S315E060657031910800714133C10000A5C041F90000C6 +S315E0606580A5B42200D281E7889081303008003F00D0 +S315E060659033C00000A5C23F3C00824EBAFF86588FEA +S315E06065A0241F4E75303C00FF33C000000444103CAD +S315E06065B0000333C000000440700113C00000A5ACC6 +S315E06065C04E754FEFFFE848D70C3C266F001C242F32 +S315E06065D000203A2F0024362F00262F0B4EB900E01C +S315E06065E04626588F38004A826D280C8200FFFFFFEE +S315E06065F06F0A3F3C00114E4E548F24002002484003 +S315E060660048C01742000A174000082002E0801740A1 +S315E0606610000971C5A741B280650000A0CBFC0016F9 +S315E060662041FA0B2A43FA0B2C3030580041FA0B2022 +S315E0606630D3C5D1C51750000D2045D1FC00E0714CA3 +S315E06066401751001043FA0B12D3C5175100151740C6 +S315E0606650000BE0881740000C302800041740000E5D +S315E0606660E0881740000F3028000817400011E088E6 +S315E0606670174000123028000A17400013E0881740E0 +S315E060668000143028000E17400016E0881740001707 +S315E06066903028001017400018E088174000193028AD +S315E06066A000121740001AE0881740001B30280014DB +S315E06066B01740001CE0881740001D4A436C0E0A84B0 +S315E06066C0000012344A4457C3488344834A43670A06 +S315E06066D07743A340B083664860202F0B4EB900E055 +S315E06066E04626588F71C00C80000012346632102B3B +S315E06066F001FF5280174001FF60264201174101FE0B +S315E0606700174101FF2F0B4EB900E0462673FC1234A9 +S315E0606710588F92802001E088174101FE174001FF03 +S315E06067204CD70C3C4FEF00184E75206F000471A8F3 +S315E060673000017390E188D0814E752F032F02302FD0 +S315E0606740000C322F000EA34375C0B68265247140FB +S315E0606750163C00032400D482E788204091C275C1CC +S315E0606760D1FC0000A5B63010B6826502308171407A +S315E0606770600270F1241F261F4E752F0A2F024A7998 +S315E06067800000043E6658203900000466AF41C081CF +S315E0606790664C4A390000A5AC6644343C008045FA54 +S315E06067A0FD7231C286064E92343886044E922002DD +S315E06067B00280000000804A40662440C046FC270014 +S315E06067C0720EAD4211C1880012388800828211C112 +S315E06067D08802720113C10000A5AC40C146C0241F07 +S315E06067E0245F4E752F032F02222F000CAB43203916 +S315E06067F0000004BA4C431801D081600C1238FA01EB +S315E06068007420C2824A41670E2239000004BAB08120 +S315E06068106EEA700160024240241F261F4E754FEFFC +S315E0606820FFF448D7040C342F001071790000A5C23C +S315E06068307342B0816754362F0012A74045FAFCE4F4 +S315E0606840C6804A42660C3F033F3C00804E92588FBA +S315E060685060163F023F3C00864E92701086803F0392 +S315E06068603F3C00804E92508F487809C44EBAFF761E +S315E0606870588F4A40670E70FF33C00000A5C2103CD7 +S315E0606880FFFA600833C20000A5C242404CD7040C50 +S315E06068904FEF000C4E75666C6F7072772829206238 +S315E06068A07566203D2030782530386C782C207277FC +S315E06068B0203D2025642C20646576203D2025642CCF +S315E06068C02073656374203D2025642C2074726163B7 +S315E06068D06B203D2025642C2073696465203D20256E +S315E06068E0642C20636F756E74203D2025640A007207 +S315E06068F065747279203D2025640A0074696D656F60 +S315E060690075740A00444D41206572726F720A0066C2 +S315E06069106C6F707277282920657272203D2025643D +S315E06069200A004FEFFFD448D77CFC3C2F003E362F61 +S315E060693000362E2F00303A2F00343A6F0038342F6D +S315E0606940003A382F003C49F900E038143F063F042E +S315E06069503F023F0D3F033F052F07487AFF3A4E94CB +S315E060696071C34FEF0014A341B28065000166558F95 +S315E06069703F034EBAFBC83F043F034EBAFB3A71434E +S315E06069802200D281E788908106800000A5B620408B +S315E06069903F103F024EBAFE884FEF000C3400670EA0 +S315E06069A0558F3F034EBAFAE6588F6000012842449D +S315E06069B0714545FAFB6E47FAFB5A2C40558F3F040A +S315E06069C0487AFF2D4E943F0D3F3C00844E922F0750 +S315E06069D04EBAFB264FEF00104A456622323C0090E5 +S315E06069E0307C019031C1860631C8860631C18606A3 +S315E06069F031C686043F3C00803F3C00806020303CEE +S315E0606A000190323C009031C0860631C1860631C0C5 +S315E0606A10860631C686043F3C00A03F3C01804E922C +S315E0606A202EBC000009C44EBAFDBC588F4A406718B8 +S315E0606A30487AFEC94EB900E038143E834EBAFA4E43 +S315E0606A40588F74FE6000008E307C009031C88606F8 +S315E0606A503038860608000000660C487AFEA84E9438 +S315E0606A60588F74F46040303C008031C086064E93A7 +S315E0606A70343886044E93A341B28E66087040C08275 +S315E0606A804A4066307010C0824A4066147008C08220 +S315E0606A904A406610A940C4804A42671C74FE60069C +S315E0606AA074F8600274FC52847144A541B280670A4E +S315E0606AB06000FF0A74F360024242558F3F034EBAAC +S315E0606AC0F9CC3E82487AFE494EB900E03814508FE0 +S315E0606AD0600274F130024CD77CFC4FEF002C4E75AF +S315E0606AE04FEFFFDC48D71CFC3C2F00383A2F0030D4 +S315E0606AF0342F00323E2F0034386F00364A466F4EF0 +S315E0606B0071C5A341B280654A424342447D46246FE3 +S315E0606B10002847FAFE0E3F3C00013F0C3F073F026C +S315E0606B203F0542672F39000004C64E934FEF0010D1 +S315E0606B304A40670634C2360060025282528471442B +S315E0606B40BC806ED24A43670242527143600642801D +S315E0606B50600270F14CD71CFC4FEF00244E754FEF8E +S315E0606B60FFC448D77CFC262F0040223C8765432142 +S315E0606B70342F0048382F004A3A2F004C3C2F004E05 +S315E0606B80302F0056B2AF00526600024A73C2A34786 +S315E0606B90BE81650002442A44538D73CD1E3C0009D4 +S315E0606BA0BE81650002387340E0891F40003749F9CD +S315E0606BB000E00DE81E3C00011F410035558F487826 +S315E0606BC0003C3F3C004E244345EA02772F034E9457 +S315E0606BD071442C434FEF000C4DEE003C2F400038E3 +S315E0606BE0558F4878000C426747EAFE00486AFDC563 +S315E0606BF04E945C8FA7573F3C00F5486AFDD14E94B2 +S315E0606C0072FE70024FEF000A1545FDD51546FDD6BA +S315E0606C101547FDD71541FDD472F71540FDD81541EE +S315E0606C20FDD9487800163F3C004E486AFDDA4E943E +S315E0606C304FEF000A4878000C4267486AFDF04E94D0 +S315E0606C405C8FA7573F3C00F5486AFDFC4E9470FBAD +S315E0606C504FEF000C1540FDFF16AF0035122F0037E1 +S315E0606C6017410001548BB5CB66EE204B558F10FC77 +S315E0606C70FFF745EB0264487800283F3C004E2F085A +S315E0606C804E944FEF000C200752803E0053807140D7 +S315E0606C90B0AF00386D00FF4A3004558F7FFC026468 +S315E0606CA0C1FCFD9A06800000182E71402F0071CD60 +S315E0606CB03F3C004E52804C070800487608004EB9CB +S315E0606CC000E00DE84FEF000A3F024EBAF8703F066B +S315E0606CD03F024EBAF7E271422200D281E7889081A4 +S315E0606CE006800000A5B620403F103F054EBAFB3057 +S315E0606CF04FEF000C3E00660000AC95CA4DFAF7FA1D +S315E0606D004BFAF82049FAFADE47FAF8082F034E966E +S315E0606D10303C0190323C009031C0860631C1860637 +S315E0606D2031C08606700D31C086043F3C00F03F3CC2 +S315E0606D3001804E95487809C44E944FEF000C4A4066 +S315E0606D40670E558F3F027EFE4EBAF742588F605E01 +S315E0606D50323C009031C18606303886060800000075 +S315E0606D60672C307C008031C886064E9330388604C6 +S315E0606D702F40002E4E93202F002E7240C2804A4153 +S315E0606D806620A941C0814A40671A70FE600270F4CD +S315E0606D90528A734A2041A541B2886600FF703E0080 +S315E0606DA060027EF3558F3F024EBAF6E2588F714726 +S315E0606DB0662C558F3F043F063F053F3C00013F028E +S315E0606DC042A72F034EBAFD1A4FEF00144A80670EB2 +S315E0606DD070F0600A4280600670F1600270F44CD731 +S315E0606DE07CFC4FEF003C4E753F2F00143F2F0014A4 +S315E0606DF03F2F00143F2F00143F2F00143F3C00014B +S315E0606E002F2F00104EBAFB1C4FEF001071404E75ED +S315E0606E103F2F00143F2F00143F2F00143F2F001424 +S315E0606E203F2F001442672F2F00104EBAFAF64FEF4D +S315E0606E30001071404E754FEFFFC8A34148D77CFC08 +S315E0606E403A2F004C362F003C3C2F0042242F003E68 +S315E0606E50282F004471C5B28065000110600000E231 +S315E0606E602E2F002C20044C4708014C4708003C407C +S315E0606E705281A340B08D6720714E02808000000190 +S315E0606E806C0853807EFE808752807F4E2E076A02B2 +S315E0606E905287E28F2C47600242400C82010000007C +S315E0606EA06F74207900012BB44A886F00008E3E0C27 +S315E0606EB06736487802002F022F082F40003C2F41AA +S315E0606EC000404E933F3C0001202F003E3F003F0EC6 +S315E0606ED0222F00463F013F053F032F3900012BB4C7 +S315E0606EE04E924FEF001C60443F3C00013F003F0E76 +S315E0606EF03F013F053F032F084E92487802002F3945 +S315E0606F0000012BB42F022F40004C4E934FEF001C34 +S315E0606F10202F003060163F3C00013F003F0E3F01EE +S315E0606F203F053F032F024E924FEF00104A40660C3A +S315E0606F300682000002005284602470FF7140602C7B +S315E0606F40A347CE83716F0048736F004A45FAF9D460 +S315E0606F5047F900E00EC42F40002C2A4128475386AB +S315E0606F604A466C00FEFC4280600270F14CD77CFCC5 +S315E0606F704FEF00384E753239000004A62F032F021A +S315E0606F802439000004C64A416744303900000446AB +S315E0606F9073417740B2836F363F3C00014267426798 +S315E0606FA03F3C00013F0042672F024EBAF9764FEF51 +S315E0606FB000104A40661C2F024EB900E04626588F04 +S315E0606FC071C00C80000012346710A9406006A540CD +S315E0606FD06002A740241F261F4E754FEFFFC448D7B7 +S315E0606FE07FFF2079000004C64E904CD77FFF4FEFBD +S315E0606FF0003C428060DE4FEFFFE048D73C3C342FF8 +S315E0607000002447F900011A04794220042604D0805E +S315E0607010E98B9680424037803800702A4C0408003D +S315E06070202440D5FC000114C049EA000C42543F02FA +S315E06070304EBAF50A426770FF3F0233C00000A5C250 +S315E06070404EBAF47442673F3C00804EBAF4D6487854 +S315E060705009C44EBAF7904FEF000E4A40667C303C6A +S315E060706000804BFAF4AE31C086064E953A38860417 +S315E06070704E95A940C0854A40676042402043D1FCB6 +S315E060708000011A0433C00000A5C23039000004A62E +S315E0607090528033C0000004A6A340E9A8714081B9DC +S315E06070A0000004C2700238BC00013542002842AAE2 +S315E06070B0000442AA000835400022103C0009354031 +S315E06070C00020103C00013780380071FC020042A8C5 +S315E06070D000022140000642A8000A3F4200244CD745 +S315E06070E03C3C4FEF00206000F3A4303C00FF2F0AE9 +S315E06070F0426745FAFF0233C000000444103C0003D7 +S315E060710033C000000440420033C0000004A670FFB4 +S315E060711033C00000A5C0700113C00000A5AC70FFCD +S315E060712033C00000A5B4700333C00000A5B670FF9D +S315E060713033C00000A5BA700333C00000A5BC4E9210 +S315E06071403F3C00014E92588F245F4E75020001006D +S315E06071500001020000400168FC0000020009000135 +S315E060716000000200020000010200007002D0FD0093 +S315E060717000020009000200000200020000010200B5 +S315E0607180007002D0F800000500090001000002006E +S315E0607190020000010200007005A0F9000005000988 +S315E06071A000020000206F0004202F000873900801A1 +S315E06071B00000671622280004B0816512D2A8000894 +S315E06071C0B08154C0488044804E7542404E7542401E +S315E06071D04E7547454D0042474D004C4E580053575B +S315E06071E050004D495800554E5800515741004D41A9 +S315E06071F0430046333200524157002F0A2F02242FB4 +S315E0607200000CA767487AFFCC2F0245F900E1C50874 +S315E06072104E924FEF000C4A40670000AEA767487A8F +S315E0607220FFB62F024E924FEF000C4A406700009A7D +S315E0607230A767487AFFA62F024E924FEF000C4A40AE +S315E060724067000086A767487AFF962F024E924FEF57 +S315E0607250000C4A406772A767487AFF882F024E9211 +S315E06072604FEF000C4A406760A767487AFF7A2F02C3 +S315E06072704E924FEF000C4A40674EA767487AFF6C24 +S315E06072802F024E924FEF000C4A40673CA767487A60 +S315E0607290FF5E2F024E924FEF000C4A40672AA767C7 +S315E06072A0487AFF502F024E924FEF000C4A40671823 +S315E06072B0A767487AFF422F024E924FEF000C4A4092 +S315E06072C057C04880448060027001241F245F4E7579 +S315E06072D02F2F000A3F2F000C2F2F000A42674267CC +S315E06072E03F2F001C4EB900E094604FEF00104E75E2 +S315E06072F025636425633A0020657874656E64656429 +S315E060730020706172746974696F6E7320756E7375DF +S315E060731070706F727465642079657420002024252E +S315E0607320303278000A00204E6F6E2D41544152494A +S315E060733020726F6F7420736563746F720A005847CA +S315E06073404D0020256325632563002058474D3C00AA +S315E060735020626C6F636B20256C64207265616420CB +S315E06073606661696C65640A000A46697273742073C3 +S315E060737075622D706172746974696F6E20696E20D2 +S315E0607380657874656E646564207061727469746949 +S315E06073906F6E206973206E6F742076616C6964210C +S315E06073A00A000A4944206F6620657874656E6465F4 +S315E06073B06420706172746974696F6E206973206E9F +S315E06073C06F742058474D210A00203E00204943440F +S315E06073D03C004FEFFFC448D77CFC342F0040487830 +S315E06073E00800487900011B804EB900E00DD83F02E5 +S315E06073F0487900011B803F3C000142A74EBAFED2AD +S315E06074004FEF00144A8066000466AF41C282714263 +S315E0607410E6880681000000614A40670C7140A5433A +S315E0607420B6806608706860067061600270733F01DE +S315E06074303F00487AFEBC4EB900E0381471B90001ED +S315E06074401D7E508F0C80000000AA662E71B9000187 +S315E06074501D7F7255B280662A41F900011B801010CB +S315E060746010A80001114000015488B1FC00011D80A4 +S315E060747066EC76013F43002E600E91C83F48002ED1 +S315E0607480600642403F40002E71B900011D7E725594 +S315E0607490B2806600014E71B900011D7F0C8000006C +S315E06074A000AA6600013E76043F42002C2E3C0001B5 +S315E06074B01D422C3C00011D492A3C00011D48283C28 +S315E06074C000011D474DF900011D464BF900011D4DB8 +S315E06074D049F900011D4C47F900011D4B3F4300325D +S315E06074E045F900011D4A74442047121042002046C7 +S315E06074F016131F50003420451F50003520441F42AC +S315E0607500003A14141F5000361F4000391F41003BFB +S315E06075101F56003710153043324214124A01670095 +S315E0607520008471803609E188778380833608E18854 +S315E0607530778380837782E188808367687781AB41F0 +S315E0607540B283670E740FB48367080C83000000850E +S315E0607550660E487AFDA34EB900E03814588F604451 +S315E060756073AF003475AF0035E189828275AF00365E +S315E06075703F2F002EE1892F0071AF003D8282E189C5 +S315E060758082802F01486F00433F2F003A4EB900E0FA +S315E0607590455C4FEF000E3F03487AFD834EB900E04D +S315E06075A03814508F362F00320687000000100686AA +S315E06075B00000001006850000001006840000001040 +S315E06075C04DEE001049EC001047EB001045EA001064 +S315E06075D053833F430032670002864BED0010600044 +S315E06075E0FF06263900011D4245F900011D4647FAAE +S315E06075F0FBB42F032F0A4E93508F4A4067224243D3 +S315E06076004BF900E1C50847F900E038142A3C00E090 +S315E06076100DD84DFAFCBC49F900E0455C6000019686 +S315E06076202F03487900011D524E93508F4A4066CE33 +S315E06076302F03487900011D5E4E93508F4A4066BE27 +S315E06076402F03487900011D6A4E93508F4A4066AE1B +S315E0607650487AFCD44EB900E03814588F600000A632 +S315E060766071920800000067000148A767487AFCD07D +S315E0607670280A52842F044E954FEF000C4A40674229 +S315E060768042672F2A00082F2A00042F043F024E94F7 +S315E06076904FEF00104A4066000126102A0003122AC6 +S315E06076A00002558F488048813F00102A00013F0163 +S315E06076B048803F00487AFC8C4E934FEF000C6000A8 +S315E06076C000F0487AFC864E93282A0004588F2604F8 +S315E06076D04878080048790001238020454E903F02B3 +S315E06076E04879000123803F3C00012F034E964FEF1F +S315E06076F000144A8067142F03487AFC564EB900E0BE +S315E06077003814508F42406000016871B90001254627 +S315E0607710080000006608487AFC504E93607842673D +S315E0607720D6B90001254A2F390001254E2F03487945 +S315E0607730000125473F024E944FEF00104A406666CF +S315E0607740103900012549123900012548558F16394F +S315E0607750000125474880488148833F003F013F0359 +S315E0607760487AFBE04E9371B9000125524FEF000C69 +S315E0607770080000006730A767487AFBC448790001D3 +S315E060778025534E954FEF000C4A40670E487AFC143D +S315E06077904EB900E03814588F600C2604D6B9000163 +S315E06077A025566000FF2C7601487AFC1F4E93588F71 +S315E06077B045EA000CB5FC00011D766600FEA44A436E +S315E06077C06600009C487900011CD749FAFA2E4E946F +S315E06077D0588F4A4067000088487AFBF247F900E034 +S315E06077E038144E9345F900011CD6588F4BF900E0EA +S315E06077F0455C6056719208000000674A260A52832B +S315E06078002F034E94588F4A40673C42672F2A000800 +S315E06078102F2A00042F033F024E954FEF00104A4097 +S315E06078206630102A0003122A0002558F162A0001DC +S315E06078304880488148833F003F013F03487AFB0424 +S315E06078404E934FEF000C45EA000CB5FC00011D3687 +S315E060785066A2487AFB754EB900E03814588F487ACC +S315E0607860FAC44EB900E03814588F7001600270FFB8 +S315E06078704CD77CFC4FEF003C4E754FEFFFA048D7EE +S315E06078807C7C45EF0028487800302A3C00E093ECA9 +S315E0607890487A00D22F0A4EB900E00EC4260F06835E +S315E06078A0000000644FEF000C2C0F280306860000F2 +S315E06078B0005C47F900011A044DF900E094104BFAB8 +S315E06078C0FB126070341A42A742A72F064267204532 +S315E06078D02842548C3F024E90734C4FEF00104A8022 +S315E06078E066442001D080E98992802841D9FC000174 +S315E06078F01A04296F005C000642A72F0442677001F4 +S315E06079003F02378018004E964FEF000C41EC0002C4 +S315E06079104A80660620AF005860024290558F3F026B +S315E06079204E95588F600E2001D080E9899280424062 +S315E060793037801800B68A668C4CD77C7C4FEF006047 +S315E06079404E752F2F000A3F2F000C2F2F000A3F3C69 +S315E0607950000142673F2F001C4EB900E094604FEF94 +S315E060796000104E750010001200110013001400168E +S315E06079700015001700080009000A000B000C000D56 +S315E0607980000E000F00000001000200030004000585 +S315E06079900006000771B8820173B88203E188D0817E +S315E06079A0E1884A7900012B98670673B8820DD08129 +S315E06079B04E7520390000044E4E7541EF000423D029 +S315E06079C00000045A4E7540C046FC23002239000090 +S315E06079D00466207900000466B28867F640C146C056 +S315E06079E04E754A7900012BA0670E3038826241EF0E +S315E06079F0000431D082624E7570E04E754A790001BE +S315E0607A002BA06706303882624E7570E04E7530386E +S315E0607A1082662F021238826024000282000004002F +S315E0607A204A42662624000282000001004A42661E3F +S315E0607A307410C0824A40661A4A01671A7381A3408D +S315E0607A40B08156C048805480600E7001600A701044 +S315E0607A506006700860027004241F4E7550726F6293 +S315E0607A606C656D202D20756E737570706F727465C0 +S315E0607A706420636F6C6F722064657074680A0000DE +S315E0607A804A7900012BB867404EBAFF84A541714040 +S315E0607A90B280674A6D0A123C0001B280661A6010D5 +S315E0607AA0A941B280671E123C0008B280660A600493 +S315E0607AB070024E7570074E75487AFFA24EB900E0C7 +S315E0607AC03814588F42404E7571B882604A79000129 +S315E0607AD02BA06704AF416002A741C0814E7570017B +S315E0607AE04E754FEFFFF448D7001C362F0010342F49 +S315E0607AF000124EBAFF8CA54473C0B881650C714024 +S315E0607B0041FA05AA32300A0060024241303C07770A +S315E0607B104A7900012B986704303C0FFF4A436D2297 +S315E0607B2077437341B2836D1AD68373422043A14390 +S315E0607B30B681660634288240600431428240C08263 +S315E0607B40600242404CD7001C4FEF000C4E752F028E +S315E0607B504EBAFEBC32388210E989340175C284C0FF +S315E0607B603002241F4E75323882C22F02307882A8E6 +S315E0607B70303882AAA542C48190884A42660471C0C0 +S315E0607B80E28808010000670471C0E288241F4E7530 +S315E0607B90566964656F52414D20636F7665727320F6 +S315E0607BA0524F4D206172656121210A004FEFFFF06F +S315E0607BB048D7003C242F001426390000042E71FCBF +S315E0607BC07D004A7900012BB8671A4EBAFF82380009 +S315E0607BD04EBAFF943A004EBAFE3679C4E68CC0C51A +S315E0607BE04C0408009680B682640A487AFFA44EB9CF +S315E0607BF000E00B2820024240484011C0820120028A +S315E0607C00E08811C082034A7900012B98670411C2AB +S315E0607C10820D4CD7003C4FEF00104E754E56FFACD0 +S315E0607C2048D7040C342E00084A7900012BB8670067 +S315E0607C3001D87142A141B280660A30390000A5C41C +S315E0607C40600001C87010C0824A40660408420008BD +S315E0607C504878000A7608487A03EA486EFFF645F9FE +S315E0607C6000E00EC44E924878000A487A03CC486E2B +S315E0607C70FFEC4E924878000A487A03B4486EFFE219 +S315E0607C804E924FEF00244878000A487A0398486E8F +S315E0607C90FFD84E924878000A487A0380486EFFCE55 +S315E0607CA04E924878000A487A0368486EFFC44E925E +S315E0607CB04FEF00244878000A487A034C486EFFBAD2 +S315E0607CC04E924FEF000C7002AF41C282C68211C085 +S315E0607CD0820A420011C0828270C611C0828342006D +S315E0607CE011C08284708D11C08285420011C0828687 +S315E0607CF0701511C08287700211C0828871414A4353 +S315E0607D00670641F60AED600441F60AF7420011D0D3 +S315E0607D10828911C0828A71414A43670641F60AD96F +S315E0607D20600441F60AE3420011D0828B11C0828C76 +S315E0607D30709611C0828D700411C082A2701911C054 +S315E0607D4082A3700311C082A450C011C082A5420014 +S315E0607D5011C082A6703F11C082A7420011C082A8FE +S315E0607D60703F11C082A9700311C082AA50C011C0D1 +S315E0607D7082AB700411C082AC701511C082AD420056 +S315E0607D8011C0820E11C0820F71414A43670A41F603 +S315E0607D900ACE31D08210601071760ACE20006A0277 +S315E0607DA05280E28031C08210260202830000010028 +S315E0607DB071414A43670C30360ABA528031C082C29A +S315E0607DC0600841F60ABA31D082C27001734111C0CF +S315E0607DD082C0708611C082C1420011C0826611C045 +S315E0607DE0826730361AC42600E08B11C08267A340F2 +S315E0607DF011C38266B0816606720111C1826033C2C8 +S315E0607E000000A5C43002600270E04CEE040CFFACEA +S315E0607E104E5E4E752F032F02342F0014362F001658 +S315E0607E20222F000C202F00104A816D0623C100002E +S315E0607E30044E4A806D082F004EBAFD72588F71C2AB +S315E0607E40AF41B28065527142123C0002B2806D0C65 +S315E0607E5013C20000044C11C2826060264A790001B8 +S315E0607E602BA0670611C2826260184A7900012BB8BE +S315E0607E706710A741B280660A558F3F034EBAFD9EF2 +S315E0607E80588F4EB900E080CA4EB900E0991A241FB7 +S315E0607E90261F60FF000027E4241F261F4E754E56FE +S315E0607EA0FFEC48D7003C4A7900012BB8673C2F3C91 +S315E0607EB0000100004EBAFCF6548F486EFFFE3F3C70 +S315E0607EC000023F3C000E42674EB900E08E824FEF03 +S315E0607ED0000C4A406706703A3D40FFFE558F3F2EE4 +S315E0607EE0FFFE4EBAFD38588F6006720211C1820AF3 +S315E0607EF0307C824043FA0156301930C0B1FCFFFF56 +S315E0607F00826066F44EBAFB7A4A7900012BB8672242 +S315E0607F104241307C980043FA0154740FC481528127 +S315E0607F2024312C0020C275410C820000010066EA13 +S315E0607F3060221438FA0173404A026C0CA542B4819F +S315E0607F4056C14881C0816008A342B4816D02700267 +S315E0607F5011C0826013C00000044C7140A341B2803E +S315E0607F60661A3038825E31C082464A7900012BB8A3 +S315E0607F7067282038983C21C0980C601EA542B480E2 +S315E0607F8066183038825E31C082424A7900012BB889 +S315E0607F9067082038983C21C09804343900012BB832 +S315E0607FA026390000042E71FC7D004A42671A4EBAFB +S315E0607FB0FB9E38004EBAFBB03A004EBAFA5279C42C +S315E0607FC0E68CC0C54C0408009680028300FFFF0083 +S315E0607FD04A4266060683FFFFFD002F0323C30000C7 +S315E0607FE0044E4EBAFBC8588F4CEE003CFFEC4E5E3A +S315E0607FF04E754A7900012BB8670871B88006EC883F +S315E06080004E7570E04E750008000400080008000434 +S315E0608010040000000000001001000028005000A0ED +S315E0608020014002800050000D007C00840091005009 +S315E06080300009006B007B00910073000E00A300ABAB +S315E060804000AC0073000A008A009A00AC077707006C +S315E0608050007007700007070700770555033307339D +S315E0608060037307730337073703770000FFFF00FFEB +S315E0608070FF00000000FF0000FFFF0000000000FFBF +S315E0608080FF0000FF00FF00FFBBBB00BB88880088E5 +S315E0608090AA00000000AA0000AAAA0000000000AA48 +S315E06080A0AA0000AA00AA00AA00000000000F0003D0 +S315E06080B000010000766964656F206D6F6465207706 +S315E06080C061733A20256420210A0010390000044CCF +S315E06080D0A7412F02A7424880C0817340B4816614ED +S315E06080E0558F3F3C0003487AFFCC4EB900E0381428 +S315E06080F07002508F4A7900012BB867264EB900E0CE +S315E06081007A0E33C0000052764EB900E07B4E33C043 +S315E06081100000526A4EB900E07B6633C000005272DE +S315E06081206032714041FA00662200D281E788908130 +S315E060813073B008002040D1FC00E0818C43E8000287 +S315E0608140588833D10000526A33C10000527633D08A +S315E06081500000527230390000527673F90000526ABC +S315E0608160A942E689C3C033C10000527833C100003A +S315E0608170527473C0B4816510538071C041FA0020B7 +S315E0608180D1C013D000012B80241F4E75040001403E +S315E060819000C80200028000C801000280019003026C +S315E06081A0000100004FEFFFEC322F001848D71C0C9F +S315E06081B0A343246F001A242F001E7141B680672EF8 +S315E06081C06D084A41671660000126A541B280674C9A +S315E06081D0A943B680660001186000009A558F3F3C5F +S315E06081E000124EB900E061EA588F600001024A8AE7 +S315E06081F0670000F0558F3F3C000847F900E061EA10 +S315E06082004E933EBC000B4E93102A000248803E809F +S315E06082104E93122A000348813E81607C4A8A670059 +S315E060822000C2558F3F3C000947F900E061EA49F931 +S315E060823000E062064E933EAA00044E943EAA000613 +S315E06082404E943EBC000C4E93162A000248833E8351 +S315E06082504E93102A000348803E804E933EBC000E4B +S315E06082604E9342574E933EAA00084E943EAA000AA9 +S315E06082704E9460264A8A676A558F3F3C000A47F902 +S315E060828000E061EA4E93122A000248813E814E93F5 +S315E0608290162A000348833E834E93588F4A8A674284 +S315E06082A07112A341B280660E558F3F3C000F4EB906 +S315E06082B000E061EA588F4A12660E558F3F3C001027 +S315E06082C04EB900E061EA588F558F3F3C000747F9A9 +S315E06082D000E061EA4E93162A000148833E834E939E +S315E06082E0588F4A82671423C200004E34600C203CEB +S315E06082F000E0067E23C000004E344CD71C0C4FEFE6 +S315E060830000144E751B622F200D0A0000487AFFF6B6 +S315E06083104EB900E037F6588F4E750D202020005F8D +S315E0608320000D0A004FEFFFF448D7040C3639000021 +S315E0608330524A487AFFE645F900E037F64E92588FA2 +S315E060834042425D837743600A487AFFD54E92528215 +S315E0608350588F7142B6806CF0487AFFC74EB900E03C +S315E060836037F64CEF040C00044FEF00104E750D002D +S315E060837020004FEFFFF448D7040C36390000524A2C +S315E06083804242487AFFEA45F900E037F64E92588F66 +S315E06083900683FFFFFFDE77C3E28B7743487AFFD23F +S315E06083A04E9252827142588FB6806CF04CD7040C74 +S315E06083B04FEF000C4E751B632563001B63200000C6 +S315E06083C04FEFFFF048D70C0C266F00144EBAFFA4AF +S315E06083D074FF45F900E037F66028700FC680714299 +S315E06083E0B0836716558F20030680000000203F00AB +S315E06083F03403487AFFC24E92508F487AFF744E92A9 +S315E0608400588F161B66D44A42670C487AFFAF4EB95E +S315E060841000E037F6588F203C00E083212F400014BF +S315E06084204CD70C0C4FEF001060FFFFFFB3CC3A2047 +S315E0608430001B622100002F0A2F02242F000C4EBA87 +S315E0608440FF3245F900E037F62F024E92487AFFE0B8 +S315E060845034004E92508F600A487AFF164E925282EE +S315E0608460588F7142720DB2806CEE203C00E0843130 +S315E06084702F40000C241F245F60FFFFFFB37C1B4589 +S315E06084801B661B6225631B63256300003F3C00207F +S315E06084903F3C002F487AFFE84EB900E037F6508F50 +S315E06084A04E7531313131313131313131312037371A +S315E06084B03737373737373737202037373720202079 +S315E06084C03737373700312020202020202020202019 +S315E06084D02020202020202020372020203720202028 +S315E06084E037203720202020003131313120202031E3 +S315E06084F020312020312020203120203720202037D5 +S315E060850020202037202037373720003120202020D8 +S315E060851020312031203120312020203120203720A9 +S315E060852020203720202037202020202037003131BE +S315E0608530313131203120202031202031313120206D +S315E0608540203720202020373737202037373737202D +S315E0608550000A0D00456D75544F5320566572736978 +S315E06085606F6E002573004350552074797065004343 +S315E06085706F6C644669726520563465004D61636868 +S315E0608580696E6500467265652053542D52414D0013 +S315E0608590256C64206B4200467265652046617374A3 +S315E06085A052414D0053637265656E207374617274F7 +S315E06085B00025700047454D444F53206472697665E7 +S315E06085C07300256300426F6F742074696D650025E2 +S315E06085D03034642F253032642F25303264202530E4 +S315E06085E032643A253032643A2530326400486F6C42 +S315E06085F064203C436F6E74726F6C3E20746F2073C0 +S315E06086006B6970204155544F2F41434300486F6C6E +S315E060861064203C416C7465726E6174653E20746F73 +S315E060862020736B69702048444420626F6F74005019 +S315E0608630726573732027432720746F2072756E20EE +S315E0608640616E206561726C7920636F6E736F6C65C5 +S315E0608650001B700020486F6C64203C536869667448 +S315E06086603E20746F2070617573652074686973204D +S315E060867073637265656E20001B71000D1B4B0D0AFE +S315E06086800D0A00004FEFFFDC48D77C3C487AFC934C +S315E0608690760A45F900E037F647FAFD264BFAFD988B +S315E06086A049FAFC6A4E92487AFDFA4E93487AFE178A +S315E06086B04E93487AFE344E93487AFE514E93487A0A +S315E06086C0FE6E4E934EBAFC5E487AFE874E9247F94E +S315E06086D000E01176487AFE7E4E934FEF001C2E80C6 +S315E06086E04E95487900E5D6D8487AFE794E924E9412 +S315E06086F0487AFE744E932F004E95487AFE734E92FA +S315E06087004E94487AFE784E932F004E954FEF0020B8 +S315E06087104EB900E08DE02F004E924E94487AFE66A8 +S315E06087204E932F004E954FEF000A42674DF900E0F9 +S315E0608730BE1CA1674E96487AFE5824004E932202EC +S315E0608740E6A12F012F004E924E944FEF00123F3C70 +S315E06087500001A1674E96508F24006F1E487AFE395D +S315E06087604E93E6A22F004E95487AFE264E932F0250 +S315E06087702F004E924E944FEF0014487AFE2849F946 +S315E060878000E011764E9445FAFCAE47F900E037F624 +S315E060879074012F004E922F390000044E487AFE1382 +S315E06087A04E934EBAFB68487AFE0C4E942F004E927A +S315E06087B0347C00414FEF00187142C0B9000004C23A +S315E06087C0670C558F3F0A487AFDFA4E93508F528A6E +S315E06087D071CA785BB8806704D48260DC49FAFB2EA4 +S315E06087E078154E94487AFDDF47F900E011764E93AE +S315E06087F045F900E037F62F004EBAFC3C4EB900E092 +S315E06088005210720B2A00E2AD2200E8A9183C001F64 +S315E06088102600EA8B2405EA8AC880D8843F04783F3C +S315E0608820C684183C000FC2843F03761FCA83C483A4 +S315E06088303F053F023F017219E2A80680000007BCCF +S315E06088403F00487AFD8B4E924E944EBAFAD8487AFB +S315E0608850FD014E9249FAFB1C4E94487AFD914E9387 +S315E06088604FEF001C2E804E92487AFAB74E924E94A5 +S315E0608870487AFD9B4E932F004E92487AFAA54E9227 +S315E06088804E94487AFDAB4E932F004E92487AFA9317 +S315E06088904E924FEF001C2EBC00E083214E92487A48 +S315E06088A0FA814E924E94487AFDA94E92487AFDA698 +S315E06088B04E9347F900E05D682F004E92487AFDBA24 +S315E06088C04E924FEF00182439000004BA0682000089 +S315E06088D007D045F900E05D92602A558F3F3CFFFF87 +S315E06088E0A7434E93588FC08366F0558F3F3CFFFF9A +S315E06088F0780C4EB900E05D68588FC08466104E9281 +S315E06089004A80660A2039000004BAB4806ECC4EB95B +S315E060891000E05D924A80671C4EB900E05DAA726332 +S315E06089207180B28067067443B4806608760133C3AB +S315E060893000012B90487AFD454EB900E037F64CEFE2 +S315E06089407C3C00044FEF00284E75000041F90000C2 +S315E0608950A5C87014429023C00000A5CC21C805A02C +S315E06089604E756A617220213D204E554C4C0062691D +S315E06089706F732F636F6F6B69652E63006A61722D2B +S315E06089803E74616720213D20746167006E20213D61 +S315E0608990203000004FEFFFEC48D70C1C282F001862 +S315E06089A0247805A04A8A661A487AFFB8487A00822F +S315E06089B048780024487AFFB84EB900E038744FEF43 +S315E06089C00010428347F900E03874601EB88066168E +S315E06089D0487AFFAA487A005A48780028487AFF9091 +S315E06089E04E934FEF00105283508A201266DE242A9F +S315E06089F00004661A487AFF96487A00364878002D71 +S315E0608A00487AFF6C4EB900E038744FEF00102002F0 +S315E0608A105380B0836F102484256F001C0004508A55 +S315E0608A204292254200044CD70C1C4FEF00144E7561 +S315E0608A30636F6F6B69655F61646400006861735F53 +S315E0608A407374655F73686966746572203D2025643A +S315E0608A500A006861735F74745F73686966746572EF +S315E0608A60203D2025640A006861735F766964656C01 +S315E0608A70203D2025640A00004240598F2F0A48783D +S315E0608A80820D33C000012B984EB900E00658588F2E +S315E0608A904A80670000AE725A11C1820D725A103870 +S315E0608AA0820348803F4000061038820D7100B28034 +S315E0608AB0661E420011C0820D303882403F4000069B +S315E0608AC01038820D660A123C000133C100012B9812 +S315E0608AD042404878840033C000012BA04EB900E0E4 +S315E0608AE00658588F4A806708720133C100012BA08F +S315E0608AF042404878828233C000012BB84EB900E02C +S315E0608B000658588F4A806708720133C100012BB856 +S315E0608B10558F3F3900012B9845F900E03814487AC3 +S315E0608B20FF1C4E925C8F3F3900012BA0487AFF24F0 +S315E0608B304E925C8F3F3900012BB8487AFF2B4E92FC +S315E0608B40508F48788E094EB900E00658588F4A80B3 +S315E0608B5067167040721411C08E0D700111C18E01DE +S315E0608B6033C000012BA86008424133C100012BA845 +S315E0608B704EB900E04FDA245F588F60FF0000028C48 +S315E0608B806172616E796D0046697265426565007312 +S315E0608B90657476616C75655F73776928290A00612B +S315E0608BA0667465722073657476616C75655F7377FC +S315E0608BB06928290A00002F0A42A72F3C5F43465FD7 +S315E0608BC04EB900E08994508F700348404A790001BD +S315E0608BD02BB8660C4A7900012BA0670C70024840FE +S315E0608BE023C000012B946012700148404A7900016D +S315E0608BF02B9866EC42B900012B942F3900012B9437 +S315E0608C002F3C5F56444F4EB900E08994487AFF7234 +S315E0608C104EB900E1C4A42F00487AFF66487AFF693E +S315E0608C204EB900E1C55A4FEF00184A406606700536 +S315E0608C304840600C4A7900012BB8670C70034840E5 +S315E0608C4023C000012BB0602E700248404A790001D3 +S315E0608C502BA066EC4A7900012B986714203C000152 +S315E0608C6000104A7900012BA866D67001484060D0B2 +S315E0608C7042B900012BB02F3900012BB02F3C5F4D7C +S315E0608C8043484EB900E08994508F203900012BB0FB +S315E0608C900C800001001067100C800002000067087D +S315E0608CA00C80000300006652487AFEE54EB900E0AB +S315E0608CB0381448789201707F23C000012BA44EB926 +S315E0608CC000E00658508F4A80671030389200714055 +S315E0608CD0E080714023C000012BA4487AFEC34EB900 +S315E0608CE000E038142F3900012BA42F3C5F5357491D +S315E0608CF04EB900E089944FEF000C48788903A37978 +S315E0608D0000012B9C4EB900E00658588F4A806708F0 +S315E0608D10A54081B900012B9C2F3900012B9C2F3C8B +S315E0608D205F534E4445F900E089944E92508F4AB9BC +S315E0608D30000005A46F222F3C000100004EB900E060 +S315E0608D4058E22F002F3C5F46524223C000012BB40D +S315E0608D504E924FEF000C600642B900012BB44EB95B +S315E0608D6000E08FEE2F3900012BC02F3C5F49445461 +S315E0608D7045F900E089944E922F3900012BC42F3CCF +S315E0608D805F414B504E924FEF00107040C0B900010A +S315E0608D902BA46708203C014154436006203C004117 +S315E0608DA0544323C000012BAC2F3900012BAC2F3C80 +S315E0608DB05F46444345F900E089944E924EB900E03F +S315E0608DC096A2508F4A406710487900E00BE02F3C4E +S315E0608DD05F5F4E464E92508F245F60FF000005FA5B +S315E0608DE0203C00E08B874E75420041F90000A668A2 +S315E0608DF01218D081B1FC0000A69866F4718022005A +S315E0608E004681E18980814E75487889614EB900E096 +S315E0608E100658588F4A806712700133C000012BBC38 +S315E0608E20420033C00000A69A4E75424033C000014E +S315E0608E302BBC4E752F02302F00084A7900012BBCFF +S315E0608E40671473C0740DB481650C11C08961103804 +S315E0608E508963718060024240241F4E752F02302F75 +S315E0608E6000084A7900012BBC671473C0740DB481A5 +S315E0608E70650C11C0896141EF000B11D08963241F35 +S315E0608E804E754FEFFFF048D7003C362F0014342F75 +S315E0608E900016382F00184A7900012BBC67000110D4 +S315E0608EA07143A541B280662C700E41F90000A66858 +S315E0608EB0420211C08961528073807A4011C289632F +S315E0608EC010C2BA8166EA700133C00000A69A420019 +S315E0608ED0600000E64A790000A69A6640700E41F9A5 +S315E0608EE00000A66811C0896152807A4012388963B1 +S315E0608EF010C17380BA8166EC700133C00000A69A37 +S315E0608F004EBAFEE673B90000A6987BB90000A69952 +S315E0608F10E18971C08285B28066000098206F001A90 +S315E0608F204A88670000924A426D00008C4A446F00AE +S315E0608F300086D88279447231B2846D7A43F9000052 +S315E0608F40A6684A4367167743A34543F90000A668D7 +S315E0608F50BA836662602610F1080052827142B88078 +S315E0608F606EF46046220206810000000E11C189613E +S315E0608F70528212181381080011C189637142B88068 +S315E0608F806EE24EBAFE64723E743F13C00000A6996C +S315E0608F9011C1896173C0E08911C1896311C28961B8 +S315E0608FA013C10000A69811C089634240600A702E22 +S315E0608FB0600670F4600270FB4CD7003C4FEF001027 +S315E0608FC04E75000042402F032F02736F000C41FA8A +S315E0608FD0020A755041E8000CB282670C5280754017 +S315E0608FE07609B68266EC4240241F261F4E754E56C1 +S315E0608FF0FFFC558F486EFFFC3F3C00043F3C00069B +S315E060900042674EB900E08E824FEF000C4A406742FD +S315E0609010717900E0001C558FE2803F004EBAFFA6F2 +S315E0609020588F41FA01B671402200E589E98890815E +S315E0609030323008002040D1FC00E091DA30280006AA +S315E0609040E18982807168000A734123C100012BC403 +S315E0609050602A102EFFFC122EFFFD48804881E188D1 +S315E06090608081122EFFFF7140488123C000012BC42E +S315E0609070102EFFFE4880E1888081714023C00001A8 +S315E06090802BC04E5E4E7571B900012BC63F004EBADD +S315E0609090FF34548F71402200E589E988908106802B +S315E06090A000E091DC204020104E75424073B900012B +S315E06090B02BC72F032F0241FA018E75505C88B2826E +S315E06090C0670C528075407608B68266EE4240714023 +S315E06090D0206F000C241F2200D281E788261F908132 +S315E06090E0068000E09248224020914E7571B90001F9 +S315E06090F02BC62F02A5423F004EBAFECA548F71407E +S315E06091002200E589E9889081068000E091E22040CE +S315E060911032107141B4806734143C0001B480671A40 +S315E0609120143C0003B4806718143C0004B4806716EE +S315E06091304A416618307C00046014307C0001600EA1 +S315E0609140307C00026008307C0003600291C87148A0 +S315E0609150226F00082200D281E988204091C1D1FCCB +S315E060916000E0917C22A80002226F000C22A8000693 +S315E0609170226F0010241F22A8000A4E75000200E448 +S315E060918022A000E422FC00E42358000100E4218CE4 +S315E060919000E421E800E42244000300E58FB000E546 +S315E06091A0968C00E5A0E8000400E5B34400E5BA204B +S315E06091B000E5C47C000000E5270400E52DE000E55D +S315E06091C0383C7573006465006672006373006772AD +S315E06091D000657300666900727500000000E091C288 +S315E06091E000000000002F000100E091C500010000D2 +S315E06091F0112F000200E091C800020000112F000F5D +S315E060920000E091CB00030001112F001200E091CE47 +S315E060921000040003112F000400E091D10000000279 +S315E0609220112F000A00E091D400050000112F00081C +S315E060923000E091C500060000112F001300E091D711 +S315E060924000070004112F000300E42458000100E445 +S315E060925025F4000500E427A6000200E4295E000488 +S315E060926000E42B42000700E42E5E000600E4317A5B +S315E0609270000000E433300000456D75544F532044E0 +S315E060928069736B004FEFFFEC48D77C00286F001CDA +S315E0609290266F0020246F00244BF900E097084E9576 +S315E06092A04A80673E2C7900E00BE84E953F2F002818 +S315E06092B006800000000B42672F0A2F0B2F0C3F2F12 +S315E06092C0002A42673F2F002C42672F004E964FEFF1 +S315E06092D0001C72E07140B2806708123CFFF1B28018 +S315E06092E066204A8C670628BC000002004A8B67024B +S315E06092F042934A8A670A41FAFF80101814C066FAF8 +S315E060930042804CD77C004FEF00144E754FEFFFE87C +S315E060931048D77C04342F001C2C6F001E2A6F002275 +S315E0609320226F0026266F002A286F002E246F0032F7 +S315E06093303002C0FC002A2040D1FC000114C0202885 +S315E060934000044A8E67083228002855813C814A8DA0 +S315E0609350670242554A8B670242534A8067684A8988 +S315E060936067022280558F3F024EB900E0427A588FFD +S315E06093704A8B6712487800122F002F0B4EB900E037 +S315E06093800EC44FEF000C4A8C67103002C0FC002A16 +S315E06093900680000114C8204028904A8A672CC4FCE5 +S315E06093A0002A41F9000114C014B0280041F9000117 +S315E06093B014C1D1C21550000141F9000114C2D1C2F5 +S315E06093C015500002600470FE600242804CD77C0457 +S315E06093D04FEF00184E75487900E00BF82F3C58487F +S315E06093E044494EB900E08994508F4E75558F3F3CA5 +S315E06093F000212F2F00142F2F00142F2F00143F2F42 +S315E060940000163F2F00164EBAFE7C4FEF00144E75E5 +S315E06094102F0B2F0A45F900E097084E924A8067388D +S315E0609420267900E00BE84E922F2F00142F2F0014C0 +S315E06094303F2F001606800000000E42673F2F00189F +S315E060944042672F004E934FEF001472E0B280670AD6 +S315E0609450123CFFF1B280660270E0245F265F4E75D3 +S315E06094604FEFFFE048D70CFC342F00243E2F002658 +S315E0609470362F0028282F002A3A2F002E2C2F003076 +S315E060948045F900E097084E924A806736267900E013 +S315E06094900BE84E922F063F05734206800000000AF5 +S315E06094A042672F043F03426742A72F012F004E9386 +S315E06094B04FEF001C72E0B2806708123CFFF1B280A9 +S315E06094C066684A47666271C2AF41B28065223F42D2 +S315E06094D000302F46002C3F45002A2F4400263F43AC +S315E06094E000244CD70CFC4FEF002060FFFFFFC47CEC +S315E06094F07142720FB2806C30123C0017B2806D28F8 +S315E06095000682FFFFFFF03F4200302F46002C3F45CA +S315E0609510002A2F4400263F4300244CD70CFC4FEF33 +S315E0609520002060FF0000125870F14CD70CFC4FEF42 +S315E060953000204E75206F0004720E71D0B280650017 +S315E060954000E6303B0A0848C04EFB0802001E0024D5 +S315E060955000DA00DA00DA00DA003E004A00DA00DA21 +S315E060956000520074009800DA00C071FC01304E755C +S315E06095702F28000E2F28000A2F2800063F28000417 +S315E06095803F2800024EBAFE6660304EB900E0460EF5 +S315E060959072FCC0814E75558F42A742A760502F2856 +S315E06095A0000E3F28000C2F2800083F2800063F28C1 +S315E06095B000043F2800024EBAFEA84FEF00104E7539 +S315E06095C0558F3F2800122F28000E2F28000A2F28DB +S315E06095D000063F2800043F2800024EBAFCA84FEF81 +S315E06095E000144E75558F2F2800182F2800142F2849 +S315E06095F000102F28000C2F2800082F2800043F2891 +S315E060960000024EBAFD084FEF001C4E752F28000A87 +S315E06096102F2800063F2800043F2800024EBAFDF2DC +S315E06096204FEF000C4E7570E04E7500004E465F4E93 +S315E0609630414D45004E465F535444455252005848AA +S315E0609640444900004EB900E00BD033C00000A6A844 +S315E0609650673C207900E00BE4487AFFD24E90487A86 +S315E0609660FFD4207900E00BE423C00000A6B44E905E +S315E0609670487AFFCC207900E00BE423C00000A6B076 +S315E06096804E904FEF000C23C00000A6AC4E7542B979 +S315E06096900000A6B442B90000A6B042B90000A6AC8C +S315E06096A04E7530390000A6A84E75206F0004202F55 +S315E06096B0000822390000A6B467142F002F0820792D +S315E06096C000E00BE82F014E904FEF000C4E754A809C +S315E06096D06D06421042804E7542804E754AB9000072 +S315E06096E0A6B05EC0488044804E7520390000A6B0C2 +S315E06096F06712207900E00BE82F2F00042F004E90D0 +S315E0609700508F4E7542804E7520390000A6AC4E757E +S315E06097104E465F53485554444F574E004E465F534E +S315E0609720485554444F574E206E6F74206176616998 +S315E06097306C61626C650A00004A790000A6A8672C35 +S315E0609740207900E00BE4487AFFC84E90588F4A8053 +S315E0609750670E207900E00BE82F004E90588F4E752B +S315E0609760487AFFBA4EB900E03814588F4E75424FCA +S315E06097704F54535452415000424F4F545354524108 +S315E060978050206E617466656174206E6F74206176D8 +S315E060979061696C61626C650A00004A790000A6A89E +S315E06097A0673A207900E00BE4487AFFC44E90588F20 +S315E06097B04A8067182F2F0008207900E00BE82F2FEA +S315E06097C000082F004E904FEF000C4E75487AFFAAC6 +S315E06097D04EB900E03814588F42804E7542804E751F +S315E06097E04A790000A6A86734207900E00BE4487A5D +S315E06097F0FF7E4E90588F4A806712A341828020791F +S315E060980000E00BE82F014E90588F4E75487AFF6A5C +S315E06098104EB900E03814588F42004E7542004E75DE +S315E06098204A790000A6A8673E207900E00BE4487A12 +S315E0609830FF3E4E90588F4A80671CA54182802F2F4D +S315E06098400008207900E00BE82F2F00082F014E90EA +S315E06098504FEF000C4E75487AFF204EB900E03814A1 +S315E0609860588F42804E7542804E7500004E56FFF42A +S315E06098702F0A486EFFF4486EFFF8486EFFFC4EB95B +S315E060988000E090EC4878005A45F900E00EC42F2ECF +S315E0609890FFFC487900012C904E924878005A2F2EB2 +S315E06098A0FFF8487900012BC84E924FEF00244878C4 +S315E06098B0005A2F2EFFF4487900012C344E924FEF78 +S315E06098C0000C42B900012C8842B900012C30203CE2 +S315E06098D000012BC823C000012CE4203C00012C349D +S315E06098E023C000012C1C203C00012C9023C0000109 +S315E06098F02C24203C00012BC823C000012C28203CEE +S315E060990000012C3423C000012C2C7003246EFFF080 +S315E06099104E5E33C0000050BE4E7532390000527262 +S315E06099202F032F0241F900012C3471C10C80000035 +S315E0609930018F620641F900012BC8302800523439A4 +S315E06099400000527833C000005248C5C073C182C07F +S315E060995033C20000524E34390000526A538133C13B +S315E06099600000524C75C284E800342242538933C900 +S315E06099700000524A43E8005033D10000526843E8A1 +S315E0609980002433D10000526643E8002633D100005C +S315E06099905264241F43E8004C41E8004823D10000AC +S315E06099A0526023D00000526C261F4E752F032F02A3 +S315E06099B0322F000C30390000524A306F000E77C10A +S315E06099C075C0B4836202320030390000524C77C809 +S315E06099D075C0B4836202304070FEC08175F90000E4 +S315E06099E0527671404C02080008010000670252801E +S315E06099F075F90000524E73484C0218007579000004 +S315E0609A005258D282241FD081D0B90000044E261F5E +S315E0609A104E751039000052704FEFFFF448D7001CC6 +S315E0609A207640222F0010343900005248808313C0FC +S315E0609A3000005270303900005276601A1610468384 +S315E0609A40108377F900005278D1C353897749A144EE +S315E0609A50B88366E8548153807740A144B88367064B +S315E0609A602041324260E410390000527072BF4CD738 +S315E0609A70001C4FEF000CC08113C0000052704E75A1 +S315E0609A804FEFFFE8A54048D700FC326F001C3A2F45 +S315E0609A90002077F900005276322F001E306F0022E8 +S315E0609AA03E39000052782803A346D8849A897B45DC +S315E0609AB09C81DC88CDF9000052482A056A0252850D +S315E0609AC02043E2855285C9C534059E843839000055 +S315E0609AD05250B08367000092103C0001A943C084F5 +S315E0609AE0B688660000D6263CFFFF00004A80660224 +S315E0609AF0428379C4E28C3044080400006706008340 +S315E0609B000000FFFF79C8E28C304408040000670873 +S315E0609B10283CFFFF00006002428420080800000144 +S315E0609B20670600840000FFFF3F017F477BC53F0972 +S315E0609B304EBAFE7A588F72FCCE81204743F05E00C3 +S315E0609B406014208321440004508853817B41A147FF +S315E0609B50BE8566EED08953867346A145BA816700B5 +S315E0609B60009C2040320260E2263CFFFF00000804D1 +S315E0609B700000660242830804000167060083000075 +S315E0609B80FFFF3F017F477BC53F094EBAFE20588FF6 +S315E0609B9072FCCE81204743F05C00600E20C35381A7 +S315E0609BA07941A145BA8466F4D08953867346A14764 +S315E0609BB0BE8167482040320260E477FCFFFF4A805E +S315E0609BC0660242833F017F477BC53F094EBAFDDEB1 +S315E0609BD0588F72FECE81204743F05A00600E30C344 +S315E0609BE053817941A145BA8466F4D0895386734638 +S315E0609BF0A147BE8167062040320260E44CD700FC94 +S315E0609C004FEF00184E754FEFFFF048D7041C342F26 +S315E0609C10001430390000524A362F001679C273C0FC +S315E0609C20B2846402340030390000524C79C373C0A8 +S315E0609C30B2846402360010390000527033C200000C +S315E0609C40525A33C30000525C1200488144C0662217 +S315E0609C5008010000672E72FBC081A541C28013C077 +S315E0609C60000052704A41661CA941808113C0000021 +S315E0609C7052703F033F024EBAFD34588F23C0000056 +S315E0609C80525460302F390000525445FAFD864E92A8 +S315E0609C903F033F024EBAFD162E8023C000005254A9 +S315E0609CA04E92103900005270508FA941808113C0E6 +S315E0609CB0000052704CD7041C4FEF00104E753F39D0 +S315E0609CC00000525C3F390000525A4EBAFCE0588FB1 +S315E0609CD02F4000046000FD3C326F000471F9000023 +S315E0609CE0524E20790000044E73494C001800D1C1F1 +S315E0609CF032390000524C928973C14C0018002F0132 +S315E0609D00487008002F084EB900E00EC430390000F4 +S315E0609D10524C3F003F390000524A3F0042674EBA1C +S315E0609D20FD604FEF00144E754FEFFFDC302F0028DB +S315E0609D3048D71CFC75F90000526673C0B4816200B6 +S315E0609D4001EE75F900005264B481650001E271408C +S315E0609D5020790000526C7BF00A00E68DDAB90000EB +S315E0609D605260670001CA1C3900005270A94024792C +S315E0609D7000005254240A4886C08628404A40671844 +S315E0609D802F0A76FB4EBAFC8C103900005270588F61 +S315E0609D90C08313C0000052701839000052707C1006 +S315E0609DA03E3900005268323900005278303900009E +S315E0609DB052503639000052524884C8864A44670495 +S315E0609DC0380060043803360071F90000527673415A +S315E0609DD07F4745F20A0060000094A340C0842040BB +S315E0609DE00803000067443039000052484A88671823 +S315E0609DF02042600610BCFFFFD1C153807D40224601 +S315E0609E00A146BC8966EE605A22422045600E1C106F +S315E0609E10D1C736462C0B46861286D3C153807D4029 +S315E0609E202646A146BC8B66E660383039000052486B +S315E0609E304A88671A2242204560061290D3C1D1C78C +S315E0609E4053807D402646A146BC8B66EE6014204278 +S315E0609E5060044210D1C153807D402246A146BC8950 +S315E0609E6066F077C379C4E28BE28C5482B5C2660051 +S315E0609E70FF6A30390000525A73F90000524A75C0E1 +S315E0609E80B282661210390000527072084880C08152 +S315E0609E904A40674A606A528033C00000525A0800FE +S315E0609EA00000670852B90000525460323039000051 +S315E0609EB05276D080538071C0D1B900005254601E92 +S315E0609EC073C1528033C00000525CD481600A558F02 +S315E0609ED042674EBAFE04588F23C200005254360CD5 +S315E0609EE0674C2F39000052544EBAFB2810390000F7 +S315E0609EF05270AD46588F808613C000005270602E57 +S315E0609F0030390000525C424332390000524E340030 +S315E0609F1033C30000525A79C077F90000524CC5C18C +S315E0609F2075C2D4B90000044EB684629460A04CD782 +S315E0609F301CFC4FEF00244E752F02342F000871F998 +S315E0609F400000524E20790000044E73424C00180027 +S315E0609F50D1C132390000524C928273C14C00180074 +S315E0609F602F012F08487008004EB900E00EC43F028A +S315E0609F703F390000524A3F0242674EBAFB044FEF58 +S315E0609F800014241F4E7500004E752F02203C00E041 +S315E0609F90A33C322F000823C000012CF0200106808C +S315E0609FA0FFFFFFBF4A406D427140740C41F900E427 +S315E0609FB034CCB4806C207418B480672220010680AB +S315E0609FC0FFFFFF9E73C0143C0015B481651C7140B1 +S315E0609FD041F900E4350020700C00241F4ED0203C8F +S315E0609FE000E09FEE23C000012CF0241F4E75302F59 +S315E0609FF000040680FFFFFFE033C0000004AC203CB5 +S315E060A00000E0A14023C000012CF04E75302F000423 +S315E060A010720FC08133C000005252203C00E0A33C86 +S315E060A02023C000012CF04E75302F0004720FC08102 +S315E060A03033C000005250203C00E0A33C23C0000146 +S315E060A0402CF04E75203C00E0A00C23C000012CF003 +S315E060A0504E75203C00E0A02823C000012CF04E7530 +S315E060A0601039000052707210808113C00000527087 +S315E060A0704E7510390000527072EFC08113C0000057 +S315E060A08052704E75103900005270722041F900002E +S315E060A090525A33D00000512441F90000525C33D06B +S315E060A0A000005126808113C0000052704E75103951 +S315E060A0B0000052707208808113C0000052704E75C5 +S315E060A0C010390000527072F7C08113C00000527000 +S315E060A0D04E753F390000525C42674EB900E09C061F +S315E060A0E0588F4E7530390000525A72F83F39000089 +S315E060A0F0525CC08150803F004EB900E09C06588FAC +S315E060A1004E75103900005270722041F900E09C06ED +S315E060A1104880C0814A40670E3F39000051263F398A +S315E060A120000051246004426742674E901039000097 +S315E060A1305270588F72DFC08113C0000052704E7546 +S315E060A1403F39000004AC302F00060680FFFFFFE0D9 +S315E060A1503F004EB900E09C06588F203C00E0A33CEF +S315E060A16023C000012CF04E75426742674EB900E0AD +S315E060A1709C06588F4E7530390000525A67123F3947 +S315E060A1800000525C53803F004EB900E09C06588F59 +S315E060A1904E7530390000525A2F0273F90000524A68 +S315E060A1A075C0B28267123F390000525C52803F0050 +S315E060A1B04EB900E09C06588F241F4E75303900007A +S315E060A1C0525C2F0273F90000524C75C0B28267127E +S315E060A1D052803F003F390000525A4EB900E09C067B +S315E060A1E0588F241F4E7530390000525C67125380D9 +S315E060A1F03F003F390000525A4EB900E09C06588F46 +S315E060A2004E7510390000527041F900E09CBE0800BE +S315E060A210000067203F390000525C3F390000525A27 +S315E060A2204E90103900005270AD41808113C000003D +S315E060A230527060183F390000525CA94180813F3915 +S315E060A2400000525A13C0000052704E90588F4E75FF +S315E060A25030390000511C670C538033C00000511C3C +S315E060A2606602609E4E754A790000511C670A42405C +S315E060A27033C00000511C608A4E7530390000511CB5 +S315E060A280A9412F02528033C00000511C10390000F2 +S315E060A2905270C2804A41673A74FBC480120213C2AC +S315E060A2A0000052704881080100006712A542C28230 +S315E060A2B04A41671E72F9C08113C0000052703F398F +S315E060A2C00000525C3F390000525A4EB900E09CBE35 +S315E060A2D0588F241F4E7573F90000525C71F90000C7 +S315E060A2E0524CB08167046000FED44EBAFF8E558F43 +S315E060A2F042674EB900E09CD8588F6000FF544EBA72 +S315E060A300FF7A558F3F390000525C4EB900E09CD829 +S315E060A3103F390000525C42674EB900E09C06508FC0 +S315E060A3206000FF2E103900000484A9414880C08196 +S315E060A3304A40670660FFFFFFC10E4E752F02741F2D +S315E060A340302F00087340B4816C08241F60FFFFFF64 +S315E060A350F9DA741BB481660E203C00E09F8A23C064 +S315E060A36000012CF0601CAD42B4816C165F807140D8 +S315E060A370B4806D0E41F900E4355820700C00241F5E +S315E060A3804ED0241F4E752F0A4EBAFEF04EBAFCF63A +S315E060A39030390000525A6610558F3F3C00204EB966 +S315E060A3A000E09D28588F604845F900E09A800800F3 +S315E060A3B00000672A558F3F3C00204EB900E09D289B +S315E060A3C030390000525C32390000525A3F00558104 +S315E060A3D03F013F0042674E924FEF000C6012323908 +S315E060A3E00000525C3F013F003F0142674E92508F52 +S315E060A3F04EBAFD10245F6000FE584EBAFE7E3039DC +S315E060A4000000525C3F003F390000524A3F0042671D +S315E060A4104EB900E09A803F390000525C42674EB91F +S315E060A42000E09C064FEF000C6000FE264EBAFF5837 +S315E060A43030390000525C671653803F003F390000B8 +S315E060A440524A426742674EB900E09A80508F4E7535 +S315E060A4501039000052702F0372F72F027408C4801F +S315E060A460C08113C0000052704EBAFE104EBAFC16A0 +S315E060A47030390000525A73F90000524A77C0B2830D +S315E060A4806610558F3F3C00204EB900E09D28588FFE +S315E060A490603208000000670E558F3F3C00204EB9E1 +S315E060A4A000E09D28588F30390000525C3F003F390C +S315E060A4B00000524A3F003F390000525A4EB900E070 +S315E060A4C09A80508F4A4267101039000052707208C5 +S315E060A4D0808113C0000052704EBAFC28241F261FEC +S315E060A4E06000FD6E2F032F024EBAFF663039000022 +S315E060A4F0525C32390000524C77C075C1B48367163E +S315E060A5003F0152803F390000524A3F0042674EB9F0 +S315E060A51000E09A80508F241F261F4E75426742677F +S315E060A5204EB900E09C063F390000524C3F390000CE +S315E060A530524A426742674EB900E09A804FEF000C9C +S315E060A5404E754EBAFD36558F3F390000525C4EB9B6 +S315E060A55000E09F383F390000525C42674EB900E048 +S315E060A5609C06508F6000FCEA30390000525C2F0A8E +S315E060A5702F0245F900E09C064A40670C53803F0095 +S315E060A5803F390000525A600E34390000525A4EBAD2 +S315E060A590FFB242673F024E92588F241F245F4E758A +S315E060A5A071AF0005207900012CF03F4000044ED0E9 +S315E060A5B01039000052702F021200488144C0664E86 +S315E060A5C008010000674814390000525F538213C2E5 +S315E060A5D00000525F6638A542C28241F90000525ED1 +S315E060A5E013D00000525F4A41670672FDC081600485 +S315E060A5F0A54280823F390000525C13C00000527071 +S315E060A6003F390000525A4EB900E09CBE588F241F75 +S315E060A6104E7571EF0004AB41B2806558303B0A0875 +S315E060A62048C04EFB0802000C0012001A00260038F3 +S315E060A63000444EBAFC4660044EBAFC2C42404E756D +S315E060A64010390000527072FEC081600A1039000055 +S315E060A6505270A341808113C00000527060DE41EF0A +S315E060A660000713D00000525E60D210390000525EDF +S315E060A67048804E7542404E75424041F90000044EB6 +S315E060A68023D0000052543F3C001E33C00000525AB3 +S315E060A69033C00000525C33C00000525870013F3C4A +S315E060A6A0000413C0000052704EBAFF687001588F04 +S315E060A6B041F90000525EA34113D00000525F33C0FF +S315E060A6C00000511C71F900005276B280670A123CB4 +S315E060A6D00002B280661060047001600C720333C1E0 +S315E060A6E0000052526008700F33C00000525242417F +S315E060A6F0700141FAFC4823C800012CF033C1000028 +S315E060A700525033C000012CEC4E7500002F027440AD +S315E060A710222F000A2001E08813C1FFF0000D13C06C +S315E060A720FFF0001120014240484013C0FFF00015E1 +S315E060A730102F0009E9888082143C0018E4A9143CD3 +S315E060A740000FC282808113C0FFF00019241F4E758E +S315E060A7501039FFF0001D671C71800C80000000EA74 +S315E060A76067120800000066107208C0814A4067E020 +S315E060A77042404E7570F14E7570FF4E754FEFFFDCDF +S315E060A78048D71CFC3C2F0034282F002A3A2F002E95 +S315E060A7904A466E0000D4600000B24A6F00286762E5 +S315E060A7A02F043F067E304E94700113C0FFF000091F +S315E060A7B013C7FFF0001D4E935C8F4A406D00008822 +S315E060A7C0204273FC0101601271A800017F905488F9 +S315E060A7D0E188808733C0FFF00000538166EA103974 +S315E060A7E0FFF0001D73800C81000000EA670C080131 +S315E060A7F00000660A4A006DE6607A70F1604870FFB4 +S315E060A80060442F043F067E2024424E94700113C0BC +S315E060A810FFF0000913C7FFF0001D4E935C8F4A40BE +S315E060A8206C0A60223039FFF0000034C0B68A66F404 +S315E060A8302042600C101010A80001114000015488FD +S315E060A840B68866F0602E71406020242F00302602C4 +S315E060A85049FAFEBA06830000020047FAFEF44A456A +S315E060A8606E00FF384280600270F14CD71CFC4FEFFF +S315E060A87000244E75068200000200528453850683EA +S315E060A8800000020060D800002F02102F0009123984 +S315E060A890FF008604A942C2824A4167F213C0FF0004 +S315E060A8A0860C241F4E751039FF008604A341C081D3 +S315E060A8B04E751039FF0086040800000067F4103911 +S315E060A8C0FF00860C4E752F0B2F0A246F000C47FA9B +S315E060A8D0FFB8600848803F004E93548F101A66F4C4 +S315E060A8E0245F265F4E7500004FEFFFF448D7040CF7 +S315E060A8F0362F0012302F00103F033F004E4D588F29 +S315E060A9004CD7040C4FEF000C4E752F0A2F02302FF8 +S315E060A910000CA5427340B4816D2641F90001330411 +S315E060A92075701A0041F9000132FC73701A00B28248 +S315E060A9306D123F003F3C00014E4D588F71406006FE +S315E060A94042806002A140241F245F4E754FEFFFF006 +S315E060A950302F001448D7041C41F9000132FC43F95A +S315E060A96000013304734034301A0077711A0079427B +S315E060A970B8836C2C707F2801C082EF8C5282318262 +S315E060A9801A00754245F900012CF4D08420320C009F +S315E060A990B4836618424231821A0033821A00600C30 +S315E060A9A03F003F3C00024EBAFF40588F4CD7041C34 +S315E060A9B04FEF00104E754FEFFFD448D77CFC382F31 +S315E060A9C000303F043F3C00014E4D588F4A406700DF +S315E060A9D000CA7744700942454DFAFF0E2E032C03F8 +S315E060A9E047F9000132FC49F900013304EF8F4BF976 +S315E060A9F000012CF4E1AE60027A013F04A7423F3CDD +S315E060AA0000024E96588F7380B48166244240794442 +S315E060AA1041F9000132FC558F31804A0041F900016D +S315E060AA20330431804A003F3CFFE04EB900E0DBAAE8 +S315E060AA307413B48167C2143C0011B481675C143C42 +S315E060AA400018B48166144241143C00012B80680012 +S315E060AA5039823A0037813A00603A34333A00323428 +S315E060AA603A002242754143E9007F20427549B48845 +S315E060AA706D14747FC4812047528139813A00D1C216 +S315E060AA802B808C00600E3F3C00073F043F3C000398 +S315E060AA904E4D5C8F4A456600FF604CD77CFC4FEFBD +S315E060AAA0002C4E754FEFFFEE48EF041C0002362F88 +S315E060AAB00016382F00183F034EBAFEFC3F043F03F2 +S315E060AAC03F3C00034E4D5C8F7944588F701FB084D5 +S315E060AAD06C10774341F9000132F430303A0052802D +S315E060AAE06026700DB084660C774341F9000132F45C +S315E060AAF0420060147008B0846612774341F9000141 +S315E060AB0032F430303A00538031803A004CD7041C3E +S315E060AB104FEF00104E754FEFFFE848D70C3C342FEF +S315E060AB200022362F001C322F00244A4267025382ED +S315E060AB30206F001E3002601C79187A09BA846608B4 +S315E060AB40508178F8C284600C7A1FBA846D045481AF +S315E060AB506002528153807940A145BA8466DA601E0C +S315E060AB603F3C00083F034E923F3C00203F034E923D +S315E060AB703F3C00083F034E924FEF000C600E7B4374 +S315E060AB80794147F9000132F445FAFF1A71735A00C8 +S315E060AB90B8806DCC30024CD70C3C4FEF00184E7548 +S315E060ABA04FEFFFF448D7040C342F0010362F001215 +S315E060ABB03F3C000D45FAFEEE3F024E923F3C000AF6 +S315E060ABC03F024E92508F600C3F3C002053833F0221 +S315E060ABD04E92588F4A4366F04CD7040C4FEF000C08 +S315E060ABE04E7520790001344C10280030488056803C +S315E060ABF03F004EBAFD16548F4E7520790001344CF5 +S315E060AC0010280031488056803F003F3C00084EBA2D +S315E060AC10FCD8588F4E7520790001344C10280034EA +S315E060AC20488056803F003F3C00084EBAFCBC588FD7 +S315E060AC304E7520790001344C1028003348805680E8 +S315E060AC403F004EBAFCC6548F4E7520790001344CF5 +S315E060AC5010280033488056803F003F3C00084EBADB +S315E060AC60FC88588F4E754FEFFFF0302F001648D7AF +S315E060AC700C0C342F001476097340B6816624774253 +S315E060AC8047FAFE2245F9000132F43F3C00203F02DC +S315E060AC904E9330323A00588FAF41C0814A4066EAFF +S315E060ACA060143F4200143F4000164CD70C0C4FEF47 +S315E060ACB000106000FDF04CD70C0C4FEF00104E75A5 +S315E060ACC02F0372092F02342F000E362F000C7142CB +S315E060ACD0B280660C70093F40000E241F261F608616 +S315E060ACE0721FB2806D103F3C005E3F034EBAFDB608 +S315E060ACF0588F704084803F42000E3F43000C241F13 +S315E060AD00261F6000FDA03F2F000420790001344C2F +S315E060AD1010280031488056803F004EBAFF4A588F6F +S315E060AD20A3404E754FEFFFF448D7040C207900013D +S315E060AD30344C362F001010280033488056803F038D +S315E060AD403F003F3C00034E4D5C8F4CD7040C4FEF09 +S315E060AD50000C4E754FEFFFF448D7040C20790001E4 +S315E060AD60344C362F001010280034488056803F035C +S315E060AD703F003F3C00034E4D5C8F4CD7040C4FEFD9 +S315E060AD80000C4E7520790001344C10280030488064 +S315E060AD9056803F004EBAFBB6548F4E75598F2F02E0 +S315E060ADA0342F000C3F024EBAFBA473803E813F0213 +S315E060ADB02F4000084EBAFCEE588F202F0004241F67 +S315E060ADC0588F4E7520790001344C2F02558F142828 +S315E060ADD00030488256823F024EBAFBDC3E824EBA73 +S315E060ADE0FFBC588F241F4E7520790001344C2F022A +S315E060ADF0558F14280030488256823F024EBAFBB81F +S315E060AE003E824EBAFB48588FA7427380B481660C87 +S315E060AE10558F3F3CFFE04EB900E0DBAA241F4E753C +S315E060AE2020790001344C10280033488056803F007A +S315E060AE303F3C00024EBAFAB2588F4E754FEFFFF4C0 +S315E060AE40302F001048D7040C20790001344C734051 +S315E060AE500C81000000FF6624162800304883568384 +S315E060AE603F034EBAFAA6548F4A8067243F430010E8 +S315E060AE704CD7040C4FEF000C6000FAD21628003174 +S315E060AE80488356833F003F033F3C00034E4D5C8F53 +S315E060AE904CD7040C42804FEF000C4E754FEFFFF439 +S315E060AEA048D70C0420790001344C246F001047FA2F +S315E060AEB0FDB61428003148825682600A71803F00F0 +S315E060AEC03F024E93588F101A66F24CD70C044FEF40 +S315E060AED0000C4E754FEFFFCC48D77CFC362F003820 +S315E060AEE041F9000132F4246F003C42427F6F003A40 +S315E060AEF04DFAFDCE4BFAFC2049FAFBAA47FAFCA2D2 +S315E060AF00714338300A00600000FA3F037C0D4EBAA8 +S315E060AF10FA3C548F7300BC8167406D1A7A08BA8137 +S315E060AF2067481C3C000ABC8167301A3C0003BA8162 +S315E060AF30660000BE604A7C15BC8167666D0C1C3C91 +S315E060AF400012BC81660000AA606C7A18BA81673C20 +S315E060AF507C7FBC816600009A60103F3C000D3F0339 +S315E060AF604EBAFB42588F600000A2558F3F043F0205 +S315E060AF702F0A3F034E954FEF000C340060000084CB +S315E060AF80558F3F3CFFE04EB900E0DBAA558F3F04AA +S315E060AF903F022F0A3F034E954FEF000C340066ECFC +S315E060AFA060603F3C002342423F034E943F043F03D0 +S315E060AFB04E93508F604C3F3C00233F034E943F04DA +S315E060AFC03F034E93508F4240204A601C73983F0186 +S315E060AFD03F032F4000342F4800304E96202F003438 +S315E060AFE0588F206F002C52807340BA816EDE6012FB +S315E060AFF0734252821580180071803F003F034E967F +S315E060B000588F7B42BE856E00FF0230024CD77CFCD7 +S315E060B0104FEF00344E752F0A246F00082079000147 +S315E060B020344C486A000271923F0010280030488034 +S315E060B03056803F004EBAFE9E508F15400001245F59 +S315E060B0404E750000222F000442406004E28952807F +S315E060B0504A8166F853804E754FEFFFF248EF1C0069 +S315E060B06000023F3C000347F900E0BC344E9341F9EF +S315E060B07000013C502440716F0014588F218A0C0007 +S315E060B080675A558F3F3C00044E93588F2540002405 +S315E060B0902840673C558F3F3C00044E93588F2940CB +S315E060B0A000146720558F3F3C00044E93588F25402F +S315E060B0B0001C6628206A00242F2800144EB900E0A0 +S315E060B0C0BCD8588F2F2A00244EB900E0BCD8588FE0 +S315E060B0D02F0A4EB900E0BCD8588F95CA200A4CD7E3 +S315E060B0E01C004FEF000C4E754FEFFFCA48EF7CFC3B +S315E060B0F000023C2F003E266F003A3C53362B00029E +S315E060B1003E2B00063A2B00083F064EBAFF4C588F9E +S315E060B11024404A8067000112286A0024A34135452D +S315E060B120000871452A6C00143546000675432F40C9 +S315E060B130002C794E7F472B4A00104214294A00249E +S315E060B140302B00103C2B0004356B000E00103543AD +S315E060B150000A354E000E4DFAFEECC0813546000C15 +S315E060B160354000282F024E96A341354000127140CB +S315E060B1702C01E1AE20065380354000142F410034A7 +S315E060B1802E844E96588F222F00303540001671403F +S315E060B190E1A95381354100183F2B000442674E9682 +S315E060B1A0588F226F002C20423540001A41F078FF1C +S315E060B1B020074C04080043F128FF2B40000C2008D0 +S315E060B1C04C420000206A001C22094C421001468075 +S315E060B1D024003B40000A3940000EC1C39481322B03 +S315E060B1E0000A3142000AC5C3C7FCFFFE214A0010CF +S315E060B1F0DA819A80302B000C224193C2222F002CF8 +S315E060B2003489354500024C041800D6807003354316 +S315E060B210000431400028A76800202141000C4A6BF9 +S315E060B2200008660870D2600670D9600242804CD72A +S315E060B2307CFC4FEF00344E754FEFFFF048D7041CAF +S315E060B240362F0014A3447143E1AC3039000133D4A6 +S315E060B250C0844A4066343F033F3C00074E4D588FFA +S315E060B2604A80670000946D000096558F3F032F007B +S315E060B2704EBAFE76508F4A80660000823039000111 +S315E060B28033D4888033C4000133D47143207900011C +S315E060B290344C103008406710488043F9000133347D +S315E060B2A071404AB10C00664C700143F90001330D00 +S315E060B2B04A196632734043F90001330C18311800BD +S315E060B2C0528413841800794343F900013C50247199 +S315E060B2D04C0043F90001333445EA002423921C0014 +S315E060B2E011804840600E528073407428B48166C015 +S315E060B2F070BF600A71436006A140600270D94CD7A6 +S315E060B300041C4FEF00104E754FEFFFF4AB4148D78A +S315E060B310040C362F0010342F0012246F001471C312 +S315E060B320B280656071434A3208306F0C558F3F03D7 +S315E060B3304EB900E0B760588F4A426C087743158291 +S315E060B3403830603C7142AB41B2806C3820025D803F +S315E060B350714077432200E789224141F10A0043F9CF +S315E060B36000013D0C203098006C0615803830601086 +S315E060B37015823830D1FC00013D14301052803080A7 +S315E060B3804280600270DB4CD7040C4FEF000C4E75C8 +S315E060B3902F390001344C3F2F000A3F2F000A4EBA86 +S315E060B3A0FF68508F4E752F02302F0008AB42734016 +S315E060B3B0B4816D0E20790001344C1030183048802D +S315E060B3C06F025D80241F4E75302F0006736F000498 +S315E060B3D0206F000811801840714041F90001330C7C +S315E060B3E0123008005281118108004E754FEFFFF070 +S315E060B3F0AB4048D70C0C222F0014B081657C42002C +S315E060B40041F900013D104A90662A754024790001B1 +S315E060B410344C41F900013D0C2602E78B224343F1AF +S315E060B4202A002649D7FC00013D10268A733218307F +S315E060B4306E14602652807540762841E8000AB6822E +S315E060B44066C470DD60365D812401E78A264245F395 +S315E060B4501A00D5C82392880060042381880073406F +S315E060B4605C8071402401E78A204241F01A00D1FCF9 +S315E060B47000013D1430BC0001600270DB4CD70C0C5F +S315E060B4804FEF00104E7500004FEFFFE848D73C0CD9 +S315E060B4904242266F001C246F002041F900013D10F6 +S315E060B4A04A906640714243F90001344C558F262A32 +S315E060B4B000242200E789204149F00A007001204C0F +S315E060B4C0D1FC00013D0C21510004314000083F3CB5 +S315E060B4D000044EB900E0BC34588F2A404A806618B2 +S315E060B4E0600000D052827142722841E8000AB28060 +S315E060B4F066AE70DD600000BE3B6F0024003041F94F +S315E060B50000013D0C2B430010298088004240206AF0 +S315E060B51000142B4A0014222800200681FFFFFFE07A +S315E060B5202B4800182B41001C3B40002A3B4000247E +S315E060B5303B400028202A003428406008B2AC001C5A +S315E060B540670628544A8C66F42A80254D00344A8C76 +S315E060B550671C4878000C486C0006486D00064EB9DA +S315E060B56000E00EC4294D002C4FEF000C603E302BFE +S315E060B570001A3200E188E08910012B6B001C000C98 +S315E060B5803B40000A41ED000C101010A8000311408A +S315E060B590000310280001116800020001114000025A +S315E060B5A03B6B001800083B6B001600065C8271423C +S315E060B5B0600270D94CD73C0C4FEF00184E754E5672 +S315E060B5C0FFF82F032F02558F4267362E000C486E28 +S315E060B5D0FFFC2F2E00084EB900E0E68C4FEF000C22 +S315E060B5E024006D506748558F486EFFF83F3C002752 +S315E060B5F042AEFFF82F2EFFFC2F004EB900E0E4AA22 +S315E060B6004FEF00104A80672620401228000B4881E1 +S315E060B6100801000067044A436618558F3F032F020E +S315E060B6202F004EBAFE644FEF000C2400600674DF14 +S315E060B630600274DC2002242EFFF0262EFFF44E5EBC +S315E060B6404E754FEFFFEC48D71C0C246F0018342F73 +S315E060B650001C302A000408000000670000A8206A89 +S315E060B660001C41E800162F082F2A00184EB900E0AA +S315E060B670D21E302A000A3200E188E089100147EAEA +S315E060B680000C3540000A101316AB000317400003A8 +S315E060B690102B0001176B0002000117400002A54164 +S315E060B6A0C282200A508F5C8041F900E0D3E44A41CF +S315E060B6B0671A262A000C42AA000C2F004878000A76 +S315E060B6C02F2A00184E902543000C600C2F00487816 +S315E060B6D0000A2F2A00184E90302A000A4FEF000C1D +S315E060B6E03200E188E08910013540000A101316AB9C +S315E060B6F0000317400003102B0001176B00020001E6 +S315E060B700174000024A426708A940C4804A4267205F +S315E060B710206A001443E80034206800346008B5C845 +S315E060B720670C224820504A8866F470BF60282290F1 +S315E060B73047F9000004B249F900E0C828245B6008D4 +S315E060B7402F0A4E942452588F4A8A66F4B7FC00005A +S315E060B75004BA66E842804CD71C0C4FEF00144E7575 +S315E060B7604FEFFFEC48D70C0C342F00186D0000E863 +S315E060B7707142722DB2806D0000E2AB43B6806D1807 +S315E060B78020790001344C42011430083011810830D0 +S315E060B79048826F0000C2603A20025D80714045F9E0 +S315E060B7A000013D0C2200E789224141F10A004AB0DE +S315E060B7B0A8006C1E2248D3CA47E9000830135380BC +S315E060B7C036806600009242B0A80042A9000460009C +S315E060B7D00086558F3F024EB900E0EF90588F4A8061 +S315E060B7E06778558F42672F004EBAFE58508F220217 +S315E060B7F05D8173412601E78B204341F01A00D1FC5D +S315E060B80000013D143210538130816650C5FC000A58 +S315E060B8102042D1FC00013CD042422210429042A834 +S315E060B82000043142000841F900013D0C600CB1FCB6 +S315E060B83000013E92670C41E8000AB29066F04A88E1 +S315E060B840661A2F012F4000144EB900E0BCD8588F1D +S315E060B850202F001060064280600270DB4CD70C0C33 +S315E060B8604FEF00144E754FEFFFE048D77C0C286F22 +S315E060B8700024262F002C4BFAFDCA246C0034603677 +S315E060B880B6AA001C662E47F900013D0CB5D36618D2 +S315E060B89020390001344CB0AB00046600009A558F45 +S315E060B8A042672F0A4E95508F47EB000AB7FC0001BE +S315E060B8B03E9C66D824524A8A66C6206F0028246C6D +S315E060B8C000243428001A3002E18AE08814004BF93B +S315E060B8D000E0CBD847F900E0CB066018558F2F0A19 +S315E060B8E03F024E952F0A42673C403F02340E4E932C +S315E060B8F04FEF00102002528071C0A341B28065DC38 +S315E060B900242C00142F032F024EB900E0D21E4DEF17 +S315E060B91000281D3CFFE52F0EA3672F024EB900E01D +S315E060B920D3E44FEF00123F3C00022F024EBAFD1403 +S315E060B930508F4280600270DC4CD77C0C4FEF002069 +S315E060B9404E754E56FFF82F02558F4267486EFFFCE4 +S315E060B9502F2E00084EB900E0E68C4FEF000C240075 +S315E060B9606D586750558F486EFFF83F3C002742AEF2 +S315E060B970FFF82F2EFFFC2F004EB900E0E4AA4FEF50 +S315E060B98000104A80672E20401228000B488108018B +S315E060B99000006624222EFFF80681FFFFFFE02F01FC +S315E060B9A02F002F022D41FFF84EBAFEBC4FEF000C80 +S315E060B9B02400600674DF600274DC2002242EFFF44B +S315E060B9C04E5E4E75202A2B2C3A3B3C3D3E3F5B5DFE +S315E060B9D07C004E56FFC470E548D73C7C558F426785 +S315E060B9E04201142E000D1D40FFFE486EFFFA2F2E19 +S315E060B9F000081D41FFFF4EB900E0E68C4FEF000CFA +S315E060BA0024404A8A6D000204670001F6226EFFFA5E +S315E060BA101011670001EC7100762E41FAFFA8B6803E +S315E060BA20670001DE600C7301B081670001DC121B08 +S315E060BA3066F41018670001DE2649710060F02F0A8F +S315E060BA404EB900E0EF3C588F254000142640670071 +S315E060BA5001B4558F486EFFF63F3CFFFF42AEFFF6FE +S315E060BA602F2EFFFA2F0A4EB900E0E4AA4FEF00103E +S315E060BA704A80673C204076111228000B4881C283D9 +S315E060BA804A41660001847302163C0010B681670085 +S315E060BA900178222EFFF60681FFFFFFE02F012F00DF +S315E060BAA02F0A2D41FFF64EBAFDBE4FEF000C602E19 +S315E060BAB042AEFFF660284A6B00246D00014C558F5C +S315E060BAC03F3C000120462F0B4E90508F4A40660067 +S315E060BAD001382F0A4E9542AEFFF6588F601E2A0E49 +S315E060BAE0280E0685FFFFFFF65584263C00E0E4AAB3 +S315E060BAF02C3C00E0CC8A4BF900E0E1D8558F2F056D +S315E060BB003F3CFFFF20432F042F0A4E904FEF00107B +S315E060BB1028404A8067A0486EFFEB2F2EFFFA4EB9A9 +S315E060BB2000E0E0401942000B508F70E0D1AEFFF6C6 +S315E060BB30200C06800000001641EC000C4218B0882C +S315E060BB4066FA303900013D0A3200E188E089100189 +S315E060BB5039400016303900013CD03200E188E08996 +S315E060BB60100142413940001842AC001C4BF900E03C +S315E060BB70D21E3941001A2F2EFFF62F0B4E95486ED6 +S315E060BB80FFEB4878000B2F0B4EB900E0D3E44FEFA4 +S315E060BB9000123F3C00022F0B4EBAFAA82F2EFFF69A +S315E060BBA02F0B4E9542A7487800202F0B4EB900E048 +S315E060BBB0D3744FEF001C122C000B2D40FFFA488126 +S315E060BBC0080100006704424160027202558F3F013E +S315E060BBD02F0A2F004EBAF8B24FEF000C4A806D2A5A +S315E060BBE0558F3F003400A3434EB900E0EF90588F85 +S315E060BBF02040302800048083314000047142600AAE +S315E060BC0070DE600670D9600270DC4CEE3C7CFFC48E +S315E060BC104E5E4E75266A00144A8B6600FE366000FC +S315E060BC20FE1E102F000972EFC08148803F40000879 +S315E060BC306000FDA04FEFFFF47013322F001048D77D +S315E060BC40001C7541B0826C0A52B90000A6C442007D +S315E060BC50607C2601E78B41F9000133D820302C0067 +S315E060BC6038034A806708224021912C00604A307987 +S315E060BC700000A6B82003528077407548B4836C080C +S315E060BC8052B90000A6C0604432790000A6C891C0EF +S315E060BC9033C80000A6B841F90000A6D0754943F163 +S315E060BCA0080033C90000A6C82002D08031812A008E +S315E060BCB006800000A6D267142040424175446004C5 +S315E060BCC0425852817741B4836EF6600242804CD727 +S315E060BCD0001C4FEF000C4E752F027413206F0008A6 +S315E060BCE03028FFFE73C0B481640852B90000A6BC78 +S315E060BCF06010714043F9000133D820B10C0023880D +S315E060BD000C00241F4E75303C0FA042B90000A6BC63 +S315E060BD1042B90000A6C042B90000A6C433C0000024 +S315E060BD20A6B84E752F0A202F0008B0B90001342856 +S315E060BD306D0E43F900013434B0B9000134306F0E52 +S315E060BD404A790001342C673243F90001344045E911 +S315E060BD50000420690004600AB0A80004670A244869 +S315E060BD6020504A8866F2601224902F092F084EB957 +S315E060BD7000E0D504508F4280600270D8245F4E7533 +S315E060BD804FEFFFF448D70C04202F0012B0B9000142 +S315E060BD9034286D0E47F900013434B0B9000134300F +S315E060BDA06F0E4A790001342C676247F9000134402E +S315E060BDB0246B00046008B0AA0004670824524A8A2B +S315E060BDC066F46048242F001670FC5682C480B4AADC +S315E060BDD000086E3C558F3F3C00014EB900E0BC3434 +S315E060BDE02202D2AA0004204021410004222A00084F +S315E060BDF0928221410008254200082F0B2F004EB9A0 +S315E060BE0000E0D5044FEF000C4280600670D8600217 +S315E060BE1070BD4CD70C044FEF000C4E754FEFFFF43E +S315E060BE20A14048D7040C322F0014242F0010B082B2 +S315E060BE3066647141A342B480671C6D084A41670E2F +S315E060BE40600000DCA743B6806D0000D4601C4879D2 +S315E060BE50000134346006487900013440A1674EB988 +S315E060BE6000E0D43C508F600000B84879000134347B +S315E060BE70A16745F900E0D43C4E9248790001344030 +S315E060BE80A16724004E924FEF0010B0826C000092E2 +S315E060BE9020026000008C4A826F0000847141A343F7 +S315E060BEA0B680671E6D064A4167106072A541B28032 +S315E060BEB06720A743B6806666603648790001343409 +S315E060BEC060064879000134402F024EB900E0D43C68 +S315E060BED0603E4879000134342F0245F900E0D43CF5 +S315E060BEE04E92508F4A80662E487900013440601C3D +S315E060BEF04879000134402F0245F900E0D43C4E9287 +S315E060BF00508F4A8066104879000134342F024E9291 +S315E060BF10508F4A80670820402028000460024280F3 +S315E060BF204CD7040C4FEF000C4E7520790001344C71 +S315E060BF302F02A94232280028202F000841FAFEDEAF +S315E060BF40C2824A416708558F3F3C00036004558FC3 +S315E060BF5042672F004E90508F241F4E752F032F029D +S315E060BF60A340262F000C242F0010B0826C000094B2 +S315E060BF700802000067025382203900013428B0834A +S315E060BF806D082202D283B0816F78203900013430A7 +S315E060BF90B0836D082202D283B0816F66558F3F3CD5 +S315E060BFA000014EB900E0BC34588F20404A806756A5 +S315E060BFB0214300042142000842A8000C4A790001AE +S315E060BFC0342C671E20390001344023C80001344018 +S315E060BFD0B0B900013448660623C8000134482080C1 +S315E060BFE0601C429023C00001344023C00001344805 +S315E060BFF0700142B90001344433C00001342C428000 +S315E060C0006006A140600270D9241F261F4E752F0A74 +S315E060C0102F022F3C000134343F3C00004E4D5C8FD4 +S315E060C02020790001343420280004241F23C0000155 +S315E060C0303428D0A80008245F23C000013430424091 +S315E060C04033C00001342C4E7571FC20004E7570E0F3 +S315E060C0504E752F0A246F0008202A001C67082F00FF +S315E060C0604EBAFFF0588F202A002067082F004EBA9C +S315E060C070FFE2588F202A0014670A2F004EB900E0CD +S315E060C080BCD8588F41F90001333443F90001330CD1 +S315E060C090B5D86606421142A8FFFC5289B1FC0001A0 +S315E060C0A033D466EC2F4A0008245F60FFFFFFFC2C68 +S315E060C0B04FEFFFEC48D71C0C286F0018266F001C6A +S315E060C0C0740545F900E0EEC4601E101C558F48808B +S315E060C0D03F004E92121B160048813E814E927303DA +S315E060C0E0588F7100B081660E53827142A141B28071 +S315E060C0F066D87001600242404CD71C0C4FEF0014CA +S315E060C1004E752F0A2F022F3C00E00C363F3C002193 +S315E060C1103F3C00054E4D508F2F3C00E00C183F3CF5 +S315E060C12000223F3C00054E4D508F23C00000530473 +S315E060C1304EB900E0C7B84EB900E0BD064EB900E0C2 +S315E060C140C00E4EB900E0F552558F3F3C00104EB937 +S315E060C15000E0BC34588F204023C00001344C50C00E +S315E060C16011400030114000311140003270FE114044 +S315E060C170003370FD114000344240241F33C000019B +S315E060C180330033C00001330833C0000132FE33C0F0 +S315E060C1900001330633C0000132FC33C000013304D2 +S315E060C1A0245F4E75434F4E3A004155583A0050521F +S315E060C1B04E3A00004E56FFD848D73C3C206E000809 +S315E060C1C072573D50FFFA716EFFFAB2806D0005C49A +S315E060C1D0487900013CD44EB900E01288588F4A4055 +S315E060C1E06700015074F2263900013E9CB483660014 +S315E060C1F0010E717900013D0841F900013C5045F9B5 +S315E060C20000013D0C26700C00282B002420524A8841 +S315E060C2106F1CB7E8001066162F084EB900E0BCD870 +S315E060C2204240429242AA0004588F3540000845EAEF +S315E060C230000AB5FC00013E9C66D2717900013D08BA +S315E060C24041F900013C502F300C004EB900E0BCD8FB +S315E060C250717900013D08588F43F900013C5042B1C5 +S315E060C2600C004A8467082F044EBAFDE8588F71794E +S315E060C27000013D0843F9000004B22059601073687C +S315E060C2800004B081660672FF3141000420504A889E +S315E060C29066ECB3FC000004BA66E0303900013D08A4 +S315E060C2A03F003F3C00074E4D588F22006E2679795D +S315E060C2B000013D08A340E9A83839000133D446803F +S315E060C2C0C08433C0000133D44A81660004DE2203B1 +S315E060C2D0600004D8558F3F3900013D082F004EB904 +S315E060C2E000E0B0E8508F4A80660004AC424242B952 +S315E060C2F000013EA033C200013D086000FEC07179D6 +S315E060C30000013D082203263C000004BA43F9000020 +S315E060C31004B22059601079680004B084660674FF40 +S315E060C3203142000420504A8866ECB68966E46000D3 +S315E060C330047A776EFFFA41F900E435782203200348 +S315E060C340D281E788908173B00800300167000160B0 +S315E060C3504A6EFFFA67000158740BB4836C16382E88 +S315E060C360FFFA143C00030684FFFFFFF079C4B4844F +S315E060C3706500013C707FC28020790001344C183042 +S315E060C380183048846F000126302EFFFA721253800F +S315E060C39071C0B28065000116303B0A0848C04EFBAA +S315E060C3A008020036004E0036004E004E002600368B +S315E060C3B00036006A009203F8010A010A010A010ADE +S315E060C3C003F803F803F803F8206E000871680002CA +S315E060C3D00C80000000FF6618558F486EFFFFA3676C +S315E060C3E03F044EB900E0D3BA732EFFFF60000360EE +S315E060C3F0226E0008558F48690003A3673F044EB973 +S315E060C40000E0D4044FEF000C6000039A206E000851 +S315E060C41045F900E0D40426680002600E558F2F00CF +S315E060C420A3673F044E924FEF000C200B4A1B66EC6D +S315E060C43060000372226E0008424349F900E0D3BA15 +S315E060C440266900024BF900E00D821A1345EB000104 +S315E060C450548B488553856044558F2F0BA3673F0403 +S315E060C4604E944FEF000CA341B280663A2F0B740DE9 +S315E060C470A3673F3C000153853F3C00404E95711BEE +S315E060C4804FEF000CB4806612558F486EFFFFA367CE +S315E060C4903F044E944FEF000C600C528371C50C80E4 +S315E060C4A00000FFFF66B21483600002FA4240220099 +S315E060C4B00281000000804A416700013271400C80D1 +S315E060C4C000000081660A206E0008302800066008D9 +S315E060C4D0226E0008302900027940AB41B2846C10CC +S315E060C4E05D8071402200E789204143F00A006020C8 +S315E060C4F04A406D3420790001344C18304830488425 +S315E060C5006F1A5D8479442004E788204043F04A004E +S315E060C51041F900013D0C28318800600279444A8483 +S315E060C5206700027E6C0000C67B4470FDB0856E00DD +S315E060C5300270716EFFFA206E0008723F5088B2801A +S315E060C5406644226E00084A69000466000258302993 +S315E060C5500006A3427340B48166182650558F568410 +S315E060C5603F044EB900E0AD9C588FA3411680600051 +S315E060C570023A2F103F0056843F044EB900E0AED435 +S315E060C5807340600001947240B28066000218226EC9 +S315E060C59000084A6900046600020C26505684528BF5 +S315E060C5A0424349F900E0AC666030A140B085661070 +S315E060C5B071ABFFFF3F003F3C00024E94588F601620 +S315E060C5C071ABFFFF3F003F043F3C00034E4D5C8F85 +S315E060C5D022006D0001D65283528B206E00087143B3 +S315E060C5E073680006B2806EC2600001C0302EFFFA4A +S315E060C5F0A3410680FFFFFFC471C0B2806548206E2C +S315E060C600000847FAFAAC28280002487AFB982F041B +S315E060C6104E93508F73FCFFFF4A406600018E487A66 +S315E060C620FB892F044E93508F73FCFFFE4A406600F1 +S315E060C630017A487AFB7A2F044E93508F73FCFFFDA4 +S315E060C6404A406600016622032003D281E78841F909 +S315E060C65000E435789081AF4171B00801B280650041 +S315E060C6600148303B0A0848C04EFB08020010002A29 +S315E060C670003E0066008200B2013C00E82003D08004 +S315E060C680E78B41F900E435749680207038004E906F +S315E060C6902200600001162003558FD080E78B206E64 +S315E060C6A000083F28000296806014226E000820038E +S315E060C6B0D080E78B3F29000496803F29000241F94C +S315E060C6C000E43574207038004E90588F2200600088 +S315E060C6D000DA206E0008558F2003D0803F280006E0 +S315E060C6E0E78B3F28000496803F280002601C226E9C +S315E060C6F000082003D080E78B3F29000896803F2919 +S315E060C70000063F2900043F29000241F900E4357440 +S315E060C710207038004E902200508F6000008E206EB0 +S315E060C7200008558F2003D0803F28000AE78B3F281A +S315E060C730000896803F2800063F2800043F28000254 +S315E060C74041F900E43574207038004E9022004FEFD6 +S315E060C750000C6056226E0008558F2003D0803F297A +S315E060C760000EE78B41F900E435743F29000C9680B2 +S315E060C7703F29000A3F2900083F2900063F290004B7 +S315E060C7803F290002207038004E904FEF00102200E3 +S315E060C790601872E0601472D9601073FC00FF600A82 +S315E060C7A072DB60064281600272BF4CEE3C3CFFD8B1 +S315E060C7B020014E5E4E75000070FF43F90000C61022 +S315E060C7C041F90000C63822BC0000C62420BC000047 +S315E060C7D0C64C23C9000004B223C8000004B633C0C7 +S315E060C7E00000C61433C00000C62833C00000C63C53 +S315E060C7F033C00000C650203C0000C66023C0000085 +S315E060C800C620203C0000D66023C00000C634203C31 +S315E060C8100000E66023C00000C648203C0000F660E9 +S315E060C82023C00000C65C4E754FEFFFE4A14148D7D8 +S315E060C8301C3C266F0020362B00047143B2806706ED +S315E060C8404A6B000A660A70FF37400004600000AA7F +S315E060C85072FF382B0006286B000C2A2B001037413C +S315E060C8600004714432340A00302B0008D0812F3C3A +S315E060C870000000003F033F003F3C00012F053F3CC6 +S315E060C88000013F3C00044E4D4FEF001223C0000113 +S315E060C8903EA0663C4A4466563214302B0008282B8C +S315E060C8A00010D081322C000890812F3C00000000FF +S315E060C8B03F033F003F3C00012F043F3C00013F3C0B +S315E060C8C000044E4D4FEF001223C000013EA0671EEC +S315E060C8D0558F3F3C000133C300013D0823C0000192 +S315E060C8E03E9C487900013CD44EB900E01296424045 +S315E060C8F0374300043740000A4CD71C3C4FEF001C1E +S315E060C9004E754FEFFFD448D77CFC382F00302A6F46 +S315E060C910003271440C80FFFFFF386D08736D0012C2 +S315E060C920E2A0600873ED001271C4E2A8206D0024F5 +S315E060C93071407368000EB2806E28200406800000A5 +S315E060C94000C871C02679000004B64DF9000004B64F +S315E060C9500C80000000C752C3A34048839083260042 +S315E060C960600E42432679000004B24DF9000004B23D +S315E060C9702A0E42817D446024302B0004756D0006EA +S315E060C9807F40B4876608756B0008BC8267187140A3 +S315E060C990A142B4806602220B2A0B26534A8B66D8E4 +S315E060C9A04A81661460143F003F3C00094E4D588F43 +S315E060C9B04A40667C600000B0264128562A0E600830 +S315E060C9C0B9CB67082A0C2840201466F42F0C4EBABF +S315E060C9D0FE5871432C2C001036750A00302D000687 +S315E060C9E0D7C42F3C000000003F003F0B3F3C0001F6 +S315E060C9F02F063F3C00003F3C00044E4D4FEF0012D7 +S315E060CA0023C000013EA0588F670A5C8D33D50001D4 +S315E060CA103D08603A4240396D00060004394400083A +S315E060CA2039430006294D000C264C3940000A603631 +S315E060CA307140A341B2806782A542B4806628588B74 +S315E060CA4033D300013D0870F223C000013EA0558F4C +S315E060CA503F3C000123C000013E9C487900013CD484 +S315E060CA604EB900E012962045209326962C8B4A6FAD +S315E060CA700036670670013740000A202B00104CD75D +S315E060CA807CFC4FEF002C4E754FEFFFF048D70C0C57 +S315E060CA90246F0014206F00184A12674E264A224817 +S315E060CAA07008600A12C1538020494A40670E121B23 +S315E060CAB02049670875017620B68266E87112722EA3 +S315E060CAC0B2806726508A71127420B480671C204950 +S315E060CAD0588910FC002E600610C0B3C8670C101AA7 +S315E060CAE0670873007620B68166EE421020084CD760 +S315E060CAF00C0C4FEF00104E75302F0004206F0006CF +S315E060CB00C1E8000A4E754E56FFE8322E000848D757 +S315E060CB100C1C246E000C302E000A77414A6A00280D +S315E060CB2067303200E188E0891001D6833D40000A33 +S315E060CB302F032F2A001C4EB900E0D21E486E000A71 +S315E060CB40A5672F2A001C4EB900E0D3E44FEF00142E +S315E060CB50607C028000000FFFE283383CF000D68103 +S315E060CB6077433D40000A080100006708E988780FCE +S315E060CB703D40000A2F032F2A001C47F900E0D21E31 +S315E060CB804E93240E55822F02A5672F2A001C4EB9BC +S315E060CB9000E0D374302EFFFE3200E188E0891001B8 +S315E060CBA0322E000AC88088813004E18CE088180063 +S315E060CBB02F032F2A001C3D44FFFE4E932F02A567EC +S315E060CBC02F2A001C4EB900E0D3E44FEF00284CEE6C +S315E060CBD00C1CFFE84E5E4E754FEFFFEC48D70C0C31 +S315E060CBE0342F0018246F001A6C082002528060000F +S315E060CBF00090260F068300000012714241F900E0C2 +S315E060CC00D21E47F900E0D3744A6A00286726D080CE +S315E060CC102F002F2A001C4E902F03A5672F2A001C99 +S315E060CC204E93302F00263200E188E08910014FEF05 +S315E060CC300014604CE280D08271402F002F2A001CE5 +S315E060CC404E902F03A5672F2A001C4E93302F0026A7 +S315E060CC503200E188E08910013F4000264FEF001482 +S315E060CC6008020000670871EF0012E888600602803B +S315E060CC7000000FFF73400C8100000FFF660270FF3B +S315E060CC804CD70C0C4FEF00144E754FEFFFE848D7CA +S315E060CC901C1C246F001C362A0024266A00106C08CF +S315E060CCA020035280600000AE4A43670E558F2F0B1B +S315E060CCB03F034EBAFF24508F6008302A000A6602AE +S315E060CCC070FF4A6F0020670000847340A142B48120 +S315E060CCD0660000823403780249FAFEFE60287142FB +S315E060CCE0A341B2806D027402558F2F0B3F024E94C2 +S315E060CCF0508F4A40671A52823002528448C081EBB4 +S315E060CD000010240048427344716B0010B0816ECE0F +S315E060CD107944716B0010B0846F4E2F0B3F3CFFFF80 +S315E060CD2049FAFDE43F024E94508F4A43670C2F0B5D +S315E060CD303F023F034E94508F6010302A0004A341B7 +S315E060CD403542000A80813540000430027340A142DA +S315E060CD50B481671435400024C1EB000A35400026F3 +S315E060CD60424035400028600270FF4CD71C1C4FEFF4 +S315E060CD7000184E754FEFFFF0302F001848D70C0CB7 +S315E060CD804A4067045380600C20790001344C1028D7 +S315E060CD9000374880558F3F004EB900E0B238588F73 +S315E060CDA04A406D4E714041F900013C504243740285 +S315E060CDB024700C0047FAFE226012558F2F0A3F025C +S315E060CDC04E93508F4A406602528352827342716A32 +S315E060CDD00010B0816EE47743206F001420C320C05A +S315E060CDE0716A000E2080716A000A21400004428068 +S315E060CDF06002A1404CD70C0C4FEF00104E7500005E +S315E060CE002F02302F0008226F000E206F000A6002AA +S315E060CE1012D853807340A142B48166F4241F4E75E4 +S315E060CE202F02302F0008226F000A206F000E60028A +S315E060CE3012D853807340A142B48166F4241F4E75C4 +S315E060CE404FEFFFE048D71C7C362F0026242F0028C2 +S315E060CE503C2F0024282F002C266F00302479000018 +S315E060CE6004B649F900E0C8287B43DA826020736A39 +S315E060CE700004716B0006B0816612716A0008B480C6 +S315E060CE806E0ABA806F062F0A4E94588F24524A8AE9 +S315E060CE9066DC322B0004302B00067B41DA820C859F +S315E060CEA000007FFF6E202A02DA812F3C000000003E +S315E060CEB03F003F053F032F043F063F3C00044E4DD5 +S315E060CEC04FEF001260182F053F003F3CFFFF3F0326 +S315E060CED02F043F063F3C00044E4D4FEF001223C047 +S315E060CEE000013EA067205C8B33D300013D08558F7F +S315E060CEF03F3C000123C000013E9C487900013CD4E0 +S315E060CF004EB900E012964CD71C7C4FEF00204E7570 +S315E060CF104FEFFFC448D77CFC246F0042362F0040B9 +S315E060CF20282F0046266A0010202A00207D6A002805 +S315E060CF307B6B00162F400038A3402E06EBA8EAA6CE +S315E060CF40242F004A4C407801302A00263A41DC80A2 +S315E060CF5038464A4167783A2B000E9A817B45B88518 +S315E060CF606C022A043F032F0B3F0C4EB900E0C90266 +S315E060CF70326A00287345508F2041D2AA002043F1DF +S315E060CF8058003549002825410020B2AA000C6F12EE +S315E060CF90326A00042541000CA3412E098E81354793 +S315E060CFA000047F4D4A826606D08760000268558F2E +S315E060CFB098882F022040284648707800528C3F05BA +S315E060CFC07B45D485206F005A4E904FEF000C3E2B88 +S315E060CFD00018CE8471472F4000329880670001A622 +S315E060CFE0302B0014220CC0814A4067603A2B000A5D +S315E060CFF022049A80716B0016E0A120017345B0812E +S315E060D0006C023A00714C2F0B2F022F003F053F0355 +S315E060D0104EBAFE2E716B0016322A00284FEF0010D2 +S315E060D020E1AD7145DA8135450028D4809880D0AA93 +S315E060D030002025400020B0AA000C6F102540000CAF +S315E060D040302A0004A341808135400004716B0016EC +S315E060D05042869DCE9BCDE0A428442A0C382B001254 +S315E060D06071443F440036E0A54244600000A2558F1B +S315E060D0703F0353852F0A4EB900E0CC8A508F71404A +S315E060D0806622736A002643F5480020417349B288F8 +S315E060D0906612322B000AD88173EB000CDC814A45BC +S315E060D0A0670E606A4A4566083C7C000160029DCE78 +S315E060D0B04A44671C734D2F0B2F022F013F043F0339 +S315E060D0C02F40003E4EBAFD7A4FEF0010202F002E23 +S315E060D0D02206D2AA002025410020B2AA000C6F10D9 +S315E060D0E02541000C322A0004A344828435410004C1 +S315E060D0F04A8066000118D4863A6A0026382B000A10 +S315E060D1007DEB000C4A456606320E66A260064A452D +S315E060D1106600FF5C736F0036A340280CE3A84C40C2 +S315E060D12048053805675E558F3F032F0A4EB900E024 +S315E060D130CC8A508F4A40660000D4716B0016322A62 +S315E060D1400028E1ADD285714535410028D0AA00209E +S315E060D15025400020B0AA000C6F102540000C302A54 +S315E060D1600004A3418081354000042F0B2F02716AD1 +S315E060D17000267B452F003F04D4853F034EBAFCC2B0 +S315E060D1804FEF00104A4767000084716A0028736BAE +S315E060D1900016E2A04A40670A7940736B000AB284DF +S315E060D1A06612558F3F032F0A4EB900E0CC8A508F46 +S315E060D1B04A4066583F032F0B322A0026D0813F0053 +S315E060D1C04EB900E0C902306A0028222F003A508F3B +S315E060D1D0D2AA00202541002041F078003548002899 +S315E060D1E0B2AA000C6F102541000C322A0004A3435A +S315E060D1F08283354100044A82671A558F2F022F00D9 +S315E060D2003F07206F005A4E904FEF000C202A002017 +S315E060D21090AF00384CD77CFC4FEF003C4E754FEF3B +S315E060D220FFE048D71C7C246F0024242F0028B4AA92 +S315E060D230000C6E0000C64A826D0000C0266A0010CF +S315E060D240660A42403540002860000094302A002893 +S315E060D250670A71C073EB000CB280660C4AAA0020C4 +S315E060D26056C44884448460024244736B001AA34007 +S315E060D2702A02E3A84C405803302A00242A02E2A599 +S315E060D2803543002836054A4067122C2A0020BC82C6 +S315E060D2906E0AE2A69A862605D6846004302A000ADB +S315E060D2A078017B4349F900E0CBD86014558F2F0BAA +S315E060D2B03F00A1464E94508F7340BC8167405284D4 +S315E060D2C07344BA816EE64A6A002867124A43670E7B +S315E060D2D0558F2F0B3F004EB900E0CBD8508F3540CD +S315E060D2E00024558F2F0B3F004EB900E0CAF8254267 +S315E060D2F00020508F35400026600674C06002A1426F +S315E060D30020024CD71C7C4FEF00204E754FEFFFF2AA +S315E060D31048EF001C0002242F0012362F00183F2F22 +S315E060D32000164EB900E0EF90588F4A806736734337 +S315E060D330A544B88166082040D4A8000C6012A344D6 +S315E060D340B88166082040D4A8002060044A43661885 +S315E060D3502F4200142F4000104CD7001C4FEF000CFA +S315E060D3606000FEBC70DB600270E04CD7001C4FEFE3 +S315E060D370000C4E75206F0004A34171680030B280E6 +S315E060D38067302228000C202F000892A80020B28087 +S315E060D3906C0220014A806F1E558F487AFA642F2FFF +S315E060D3A000122F002F0842674EBAFB664FEF00145B +S315E060D3B04E7570DC4E7542804E75558F3F2F000678 +S315E060D3C04EB900E0EF90588F4A8067142F2F000A1D +S315E060D3D02F2F000A2F004EBAFF9C4FEF000C4E75C0 +S315E060D3E070DB4E75558F487AFA382F2F00122F2F43 +S315E060D3F000122F2F00123F3C00014EBAFB144FEF94 +S315E060D40000144E75558F3F2F00064EB900E0EF9041 +S315E060D410588F4A80671C20404A68003067182F2F73 +S315E060D420000A2F2F000A2F004EBAFFBA4FEF000C0A +S315E060D4304E7570DB4E7570DC4E7500004FEFFFF099 +S315E060D44048D71C04286F0018242F0014206C0008AD +S315E060D4504A88670000A2A140B08257C048804480F5 +S315E060D4604A406606568272FCC48124502648428150 +S315E060D4706004264A24494A8A66042454264C4A4073 +S315E060D480665C226A0008B4896E546604269260304F +S315E060D490558F3F3C00014EB900E0BC34588F2040C8 +S315E060D4A04A8067522202D2AA0004202A00089082AB +S315E060D4B02140000820922141000425420008268888 +S315E060D4C024AC0004294A000441F90001344C25509B +S315E060D4D0000CB9CB66022653294B0008601A226A13 +S315E060D4E00008B3C16F0222092252B1CA66844A407B +S315E060D4F067042441600295CA200A4CD71C044FEFAA +S315E060D50000104E754FEFFFF448D71C00286F0014EB +S315E060D51097CB246F00102054600E20280004B0AA38 +S315E060D52000046C08264820504A8866EE24884A8BB8 +S315E060D5306704268A6002288A4AAC00086604294A9B +S315E060D54000084A88672E202A00082200D2AA000432 +S315E060D550B2A80004661ED0A8000824902540000802 +S315E060D560B1EC00086604294A00082F084EB900E0CD +S315E060D570BCD8588F4A8B6736202B00082200D2AB86 +S315E060D5800004B2AA00046626D0AA000826922740C4 +S315E060D5900008B5EC00086604294B00082F4A001025 +S315E060D5A04CD71C004FEF000C60FFFFFFE72E4CD717 +S315E060D5B01C004FEF000C4E75222F0004B2B900013B +S315E060D5C034286D0E203C00013434B2B900013430A9 +S315E060D5D06F14203C000134344A790001342C67062C +S315E060D5E0203C000134404E754FEFFFF048D71C04F5 +S315E060D5F0246F0018242F001449F900E0D50447EAA7 +S315E060D6000004206A00046016B4A8000C660C26903C +S315E060D6102F0A2F084E94508F6002264820534A887E +S315E060D62066E64CD71C044FEF00104E754FEFFFF4E3 +S315E060D63048D7040C242F0010660A20790001344C88 +S315E060D6402428002C20424243600252834A1866FA3C +S315E060D6504A1066F670FE5683C68048790001343417 +S315E060D66077432F034EB900E0D43C508F24404A8084 +S315E060D67067122F032F022F2A00044EB900E00EC472 +S315E060D6804FEF000C200A4CD7040C4FEF000C4E75A0 +S315E060D6904FEFFFF048D71C044242246F001449F96B +S315E060D6A000E0B30847EA0030714220790001344C6B +S315E060D6B010300830120048816F0C2F0A3F013F029C +S315E060D6C04E94508F6002168052827142528BAD4109 +S315E060D6D0B28066D4424247F900E0B3C8714220792D +S315E060D6E00001344C2F0A1030084048803F003F026A +S315E060D6F052824E937142508F7210B28066DE20790C +S315E060D7000001344C1568003700374CD71C044FEFE6 +S315E060D71000104E754572726F7220616E64206C6F98 +S315E060D7206E676A6D7020696E207865786563282912 +S315E060D73021004E56FFCC716E000848D73C0CA941DB +S315E060D740242E000A266E000E262E0012B280670096 +S315E060D75001486D164A6E000867000198123C0003A6 +S315E060D760B2806600042A6000018AAD41B28067003B +S315E060D77000DE6E34123C0032B280660004122F0284 +S315E060D7802F0B4EB900E0F1F0508F24404A806600DE +S315E060D790040E2F2B000C486B01004EB900E006FE2C +S315E060D7A0244B508F600003F82F034EBAFE80588FEB +S315E060D7B028404A80670003E4487900013434A16771 +S315E060D7C045F900E0D43C4E92508F24000C80000076 +S315E060D7D000FF636E4879000134342F004E9222399F +S315E060D7E00001344C204024680004D48A2941000CAE +S315E060D7F02141000C487801002F0A4EB900E00DD8AF +S315E060D800260A248A2542000441EA00802548002051 +S315E060D8104FEF0010256C0004002C4240601010C1F0 +S315E060D8205280734022480C81000000806706121B1C +S315E060D830224866EA42112F034EBAFE56588F6000C0 +S315E060D840035E4879000134342F0C600001702F0BC1 +S315E060D8504EBAFD66240B588F224020690004600EA4 +S315E060D860B4A800046606214B000C600620504A8886 +S315E060D87066EE242B002C2F024EBAFD3E588F2240D6 +S315E060D88020690004600EB4A800046606214B000C13 +S315E060D890600620504A8866EE327C030041F900015A +S315E060D8A0344C27500024206B0004424041E8FFC618 +S315E060D8B0216B00080006214B003620BC00013C507D +S315E060D8C03149000443E8000A2748007C52807340EF +S315E060D8D04299740BB48166F427480078276B001090 +S315E060D8E00074276B0018007023CB0001344C600095 +S315E060D8F00290558F42A742672F024EB900E0EB08CF +S315E060D9004FEF000C4A806600028C486EFFFE486E60 +S315E060D910FFE42F024EB900E0F00E4FEF000C24401A +S315E060D9204A806600027A2F034EBAFD02588F244081 +S315E060D9304A8067000266262EFFE8D6AEFFE4D6AEE2 +S315E060D940FFEC0683000001004A790001342C67365B +S315E060D950A540C0AEFFF8672E487900013440A16764 +S315E060D96049F900E0D43C4E94508F2400B6806E16A0 +S315E060D9704879000134402F004E94508F2A40286D3C +S315E060D98000044A8C6642487900013434A16749F95B +S315E060D99000E0D43C4E94508F2400B6806E164879F1 +S315E060D9A0000134342F004E94508F2A40286D0004D5 +S315E060D9B04A8C66144879000134342F0A4EB900E087 +S315E060D9C0D504508F600001D44A6E0008660A254C83 +S315E060D9D0000C2B4C000C600E20390001344C2540C5 +S315E060D9E0000C2B40000C487801002F0C4EB900E08B +S315E060D9F00DD8D48C288C2942000441EC0080508FED +S315E060DA0029480020296A0004002C303C0080600A26 +S315E060DA1010C1538022484A406706121B224866F0CE +S315E060DA20421123CC00010660396EFFFA002823CD4F +S315E060DA300001066423CA0001066848780034487924 +S315E060DA4000013CD44879000106704EB900E00EC48E +S315E060DA50487900013CD44EB900E012884FEF0010DF +S315E060DA604A406746487AFCAE4EB900E038144879D9 +S315E060DA70000134342F390001066845F900E0D50429 +S315E060DA804E922679000106642F2B00044EBAFB2ADB +S315E060DA902E802F0B4E924FEF00123F3C00014879EB +S315E060DAA0000106704EB900E01296558F486EFFE4AD +S315E060DAB03F2EFFFE2F39000106604EB900E0F070A0 +S315E060DAC04FEF000C24404A806730487900013434D7 +S315E060DAD02F390001066847F900E0D5044E932879AE +S315E060DAE0000106642F2C00044EBAFACE2E802F0C6D +S315E060DAF04E934FEF0010600000A62F3900010660DC +S315E060DB004EBAFB8E2F2EFFE420790001066041E8D5 +S315E060DB1001002F084EB900E006FE716E00084FEF77 +S315E060DB20000CA741B280675E303C030020790001BB +S315E060DB30066043F90001344C215100242268000458 +S315E060DB4043E9FFC623680008000633400004700B13 +S315E060DB502348003622BC00013C5045E9000A2149D1 +S315E060DB60007C429A53804A4066F8214900782168F1 +S315E060DB700010007421680018007023C80001344C5E +S315E060DB804EB900E00CC82479000106606010347C70 +S315E060DB90FFE0600A347CFFDF6004347CFFD9200A52 +S315E060DBA04CEE3C0CFFCC4E5E4E754FEFFFF048D727 +S315E060DBB00C0C26390001344C2F3CFFFFFFFF3F3C45 +S315E060DBC001023F3C00054E4D508F20402443240324 +S315E060DBD006820000003645EA003047F900E0B760AB +S315E060DBE04E9020790001344C41E8002423D00001B6 +S315E060DBF0344C101A48806F08558F3F004E93588F0B +S315E060DC00B48A66EE740645F900013D1047F900E016 +S315E060DC10B760B6926608558F3F024E93588F528230 +S315E060DC2071C2722E45EA000AB28066E6204322039C +S315E060DC3041E8004006810000005043F90001330CE2 +S315E060DC4010184880670C71401431080053821382C3 +S315E060DC500800B28866EA4879000134342F0345FA51 +S315E060DC60F9884E92508F4A790001342C670C4879D6 +S315E060DC70000134402F034E92508F71EF00142079EB +S315E060DC800001344C214000684EB900E00D06558F26 +S315E060DC9042674EBAFF162F0B2F0A558F2F2F000EB5 +S315E060DCA047F900E0BCD82F390001344C42674EB9E1 +S315E060DCB000E0BD802F390001344C4EBAF8FC4FEFDE +S315E060DCC000102240244020690004588A601A2039F6 +S315E060DCD00001344CB0A8000C660A24902F084E93DD +S315E060DCE0588F6002244820524A8866E2558F3F2F5B +S315E060DCF000124EBAFEB60000700172012F032F02C9 +S315E060DD00206F000C1418671C75027620B6826714C3 +S315E060DD107541163C0009224052893009B682660494 +S315E060DD202009528052817541760CB68266D6241FF0 +S315E060DD30261F4E754FEFFFEC48D71C0C740B286F0F +S315E060DD400018266F001C45F900E0EEC4101C558FE4 +S315E060DD5048803F004E921600101B48803E804E92EF +S315E060DD607303588F7100B081660A53824A4266DC5B +S315E060DD707001600242404CD71C0C4FEF00144E75A8 +S315E060DD802F0B2F0A246F000C202A0014670A2F003D +S315E060DD904EB900E0BCD8588F206A001843E8001CF2 +S315E060DDA02068001C600843E8002020680020B5C8B1 +S315E060DDB066F422AA002047FAFFC860062F004E9359 +S315E060DDC0588F202A001C66F42F4A000C245F265FD9 +S315E060DDD060FFFFFFDF064FEFFFF048D73C00246FA0 +S315E060DDE00014266F0018286A00142A6A001C604C2A +S315E060DDF04AAD001C664243F90001330D41F900016A +S315E060DE0033384A196704BBD0672E5888B3FC0001E3 +S315E060DE10333466EE6000008E424042AD003042AD83 +S315E060DE2000343B40000C202D001467242F004EB9CF +S315E060DE3000E0BCD8588F60182A6D00204A8D66B025 +S315E060DE40606C2B6A001C0020254D001C2B4A0018D4 +S315E060DE50302B001A42AD00143200E188E0891001EF +S315E060DE602B4C0028286C00203B6B0016001049EC18 +S315E060DE70FFE03B40000E3B6B001800122B6A00246B +S315E060DE8000242B4C002C4878000B2F0B2F0D4EB93D +S315E060DE9000E00EC44FEF000C200D4CD73C004FEF76 +S315E060DEA000104E754AAD0034668E6000FF6C558F8B +S315E060DEB03F3C00044EB900E0BC34588F2A404A80AB +S315E060DEC0668060D44FEFFFE048D71C04286F0024DB +S315E060DED0246F0028266F002C202C001867102F0B6B +S315E060DEE02F0A2F004EBAFFDE4FEF000C2440240FBE +S315E060DEF00682000000122F022F0C4EB900E0CA889D +S315E060DF00508F20429082601C53813681220A528172 +S315E060DF104A806708149853802441600814BC005C0A +S315E060DF2024416004321366E0200A4CD71C044FEFAC +S315E060DF3000204E752F0A206F0008246F000C1568CC +S315E060DF40000B0015302800163200E188E0891001E8 +S315E060DF5035400016302800183200E188E08910016B +S315E060DF60354000182568001C001A43EA001A1011B3 +S315E060DF7012A900031340000310290001136900028F +S315E060DF8000011340000272081028000B4880C0812F +S315E060DF904A40671E4878000B2F08486A001E4EB953 +S315E060DFA000E00EC44FEF000C420015400029245FEC +S315E060DFB04E7545EA001E2F4A000C2F480008245F84 +S315E060DFC060FFFFFFEAC62F0A2F02342F0012246F8C +S315E060DFD0000C558F3F2F00124EB900E0EF90588F3E +S315E060DFE022404A42660A34A9000635690008000202 +S315E060DFF030123200E188E0891001204A30C03010EA +S315E060E0003200E188E089100130804A42672C30298D +S315E060E010000433520006A341808133500008334048 +S315E060E020000430123200E188E0891001348030105B +S315E060E0303200E188E08910013080241F245F4E754C +S315E060E0404FEFFFE848D73C0C286F001C202F0020DC +S315E060E05042424BF900E0EEC460184881558F528227 +S315E060E06076083F014E957342588F14C0200AB681F8 +S315E060E070672A264C2440121C67367101762AB680E0 +S315E060E080672E163C005CB6806726163C002EB6808E +S315E060E090671E163C0020B68066C06014264C101CD5 +S315E060E0A0670E7100722EB2806706765CB68066ECAB +S315E060E0B07113722AB2806606528B703F60027020DE +S315E060E0C07313762EB6816608528B600414C0528252 +S315E060E0D07342AF43B6816CF442424BF900E0EEC462 +S315E060E0E0601A4881558F5282284B3F014E95588F72 +S315E060E0F0A74114C07142204AB2806728284B204A63 +S315E060E100121B67207101762AB6806718163C005CA0 +S315E060E110B6806710163C002EB6806708163C002075 +S315E060E120B68066BE7114722AB2806604703F60087B +S315E060E1307020600410C052827342A543B6816CF4CD +S315E060E1404CD73C0C4FEF00184E754FEFFFE848D7C1 +S315E060E1504C0C362F0020266F001C660E20790001DD +S315E060E160344C162800374883600253833F3C000AEC +S315E060E1704E4D548F7543A341E5A97341C280671044 +S315E060E180558F3F034EB900E0B238588F4A806C062F +S315E060E190421370D2603820790001344C4DEF00189C +S315E060E1A0103028403D3C004041F90001333448805E +S315E060E1B0714020300C002F0E2F0B2F004EBAFD065B +S315E060E1C04FEF000C4201204042801141FFFF4CD7E7 +S315E060E1D04C0C4FEF00184E754FEFFFE048D77C0CC4 +S315E060E1E0266F002474014DF900E0C902246B001427 +S315E060E1F04BF900E00DD8286A0010776C000E601EBF +S315E060E2003F3C00012F2B0024302A0026D0823F00BD +S315E060E21052824E962F032F004E954FEF00107342B9 +S315E060E220716C000AB0816ED83F3C00012F2B002450 +S315E060E2303F2A00264EB900E0C9022F032F002F4087 +S315E060E240002C4EB900E00DD84CEF7C0C0010202F6E +S315E060E250002C4FEF00304E754FEFFFE248EF3C1C6D +S315E060E26000023F3C00102F2F00244EB900E0B9D2E7 +S315E060E270508F38006D00022A558F3F004BFAFA7ACC +S315E060E2804EB900E0EF902440242A00182F2A001CA3 +S315E060E2902F024EB900E0D21E42A7487800202F0236 +S315E060E2A04EB900E0D3742F0024004E95286A00141E +S315E060E2B0264C4FEF001C3600600C2F0B4E95266BFC +S315E060E2C00018588FD6804A8B66F07743703FB083EC +S315E060E2D06C162F2A001C2F022F0C4EB900E0B86690 +S315E060E2E04FEF000C6000009A2F022F0C4EBAFAE84E +S315E060E2F0508F26404A8066162F2A001C2F022F2A4E +S315E060E30000144EB900E0B8664FEF000C60362F009F +S315E060E3104EB900E0EF3C588F274000142840662A4B +S315E060E3202F2A001C2F022F2A00144EB900E0B8668F +S315E060E330206A001442A8001C2F0B4EB900E0BCD83E +S315E060E3404FEF001070D960000158558F3F3C0001D7 +S315E060E3502F004EB900E0CC8A508F4A4067282F2ABA +S315E060E360001C2F022F2A00144EB900E0B866206A1E +S315E060E370001442A8001C2F0B4EBAFA064FEF0010AD +S315E060E38070DC6000011C2F0B4EBAFE4E487800161A +S315E060E390487900E437884BF900E00EC426402F0048 +S315E060E3A04E9572101741000B303900013D0A32007C +S315E060E3B0E188E089100137400016303900013CD031 +S315E060E3C03200E188E089100137400018302C000AFD +S315E060E3D03200E188E08910013740001A42AB001C48 +S315E060E3E047EB002048780016487900E437882F0B21 +S315E060E3F04E95702E7210174000011741000B3039B0 +S315E060E40000013D0A3200E188E089100137400016DC +S315E060E410303900013CD03200E188E0891001206AA1 +S315E060E4200018374000184FEF001C3028000A220021 +S315E060E43046817341D2819381C0813200E188E0896F +S315E060E44010013740001A42AB001C5D84794448787D +S315E060E45000322F0C2F0A4E954FEF000A302A000447 +S315E060E460A3418081354000043F3C00062F0A4EB947 +S315E060E47000E0B6422F0A4EB900E0BCD84FEF000C80 +S315E060E4802004E7882240428041F14A002248D3FCDA +S315E060E49000013D10429143F900013D0C42B0980005 +S315E060E4A04CD73C1C4FEF001C4E754E56FFC448D708 +S315E060E4B03CFC486EFFF42A6E00082F2E000C242EDA +S315E060E4C000124EBAFB7C508F1D6E0011FFFF266D69 +S315E060E4D000144A8B66142F0D4EB900E0EF3C588F5E +S315E060E4E02B40001426406700017E2042A1412010A7 +S315E060E4F0B28056C12A0E99CC2E3C00E0DD345385BD +S315E060E5002C3C00E0DDD6283C00E0EEC47301C0811F +S315E060E5102F002F0B4EB900E0D21E508F600000DE58 +S315E060E520122A000B76104881C2834A41672E710039 +S315E060E530722EB280672676E5B6806720286D001C6D +S315E060E54060122F0C2F0A20474E90508F4A40660C7F +S315E060E550286C00204A8C66EA6000011E712A000B76 +S315E060E560720F224AB28067000094711276E5B68037 +S315E060E570670A260E0683FFFFFFF46014712EFFF430 +S315E060E580723FB280677676E5B68066E6600000E662 +S315E060E59020435283101873002041723FB28867347B +S315E060E5A04880558F2D49FFEC20443F004E90226E07 +S315E060E5B0FFEC2044120010112D41FFF048803E80B0 +S315E060E5C04E90588F222EFFF0226EFFEC73017100A1 +S315E060E5D0B08166285289BA8366B6204576081010FF +S315E060E5E07300B681670E163C0010B68167064A1165 +S315E060E5F0670000821211C0814A00667842A74878B7 +S315E060E60000202F0B4EB900E0D3744FEF000C24408E +S315E060E6104A80670610126600FF084240A141204228 +S315E060E620B290670420AB00204A40661A4A8A67388F +S315E060E630206E000C72E5260A7110B28057C0710038 +S315E060E640C68024436022A1402042B090661A206BC7 +S315E060E6500020244C41E8FFE02F082F0B4EB900E084 +S315E060E660D21E508F600295CA200A4CEE3CFCFFC475 +S315E060E6704E5E4E75700160A42F0A2F0D20464E90B7 +S315E060E680508F28404A806600FED460DA4FEFFFD0B4 +S315E060E690723A48D77C3C286F00343A2F003C712CA4 +S315E060E6A00001B28066201014558F45EC0002488068 +S315E060E6B03F004EB900E0EEC4588F488024000682E1 +S315E060E6C0FFFFFFBF600E20790001344C244C142814 +S315E060E6D000374882558F3F024EB900E0B238588F16 +S315E060E6E04A806C062640244C603471127542725C36 +S315E060E6F0B280661241F900013C50528A20702C00CB +S315E060E70026680024601820790001344C10302840D7 +S315E060E71041F9000133344880714026700C004A8B21 +S315E060E7206F0000E4260F283C00E0E040068300002E +S315E060E73000254DFAF6004BFAFD72204A424260022D +S315E060E74052821018670A7100725CB28066F26006E7 +S315E060E7504A45670000AC7112722EB2806616712A65 +S315E060E7600001B28057C272FE488253827142B28023 +S315E060E770661E60184A42670000882F032F0A20440D +S315E060E7804E90508F202B001C66246008266B001884 +S315E060E79044826054558F487900E437843F3C0010EA +S315E060E7A02F0A2F0B4E954FEF00104A806750284096 +S315E060E7B06024286C00204A8C661C558F487900E4FA +S315E060E7C037843F3C00102F0A2F0B4E954FEF001019 +S315E060E7D028404A8067102F0C2F034E96508F4A4090 +S315E060E7E067D0264C600297CB7142D5C04A1267105B +S315E060E7F0528A4A8B670A4A426600FF40600297CBBC +S315E060E800206F0038208A200B4CD77C3C4FEF0030DD +S315E060E8104E754E56FFE448D70C3C740147F900E06C +S315E060E820EEC44243246E0008712A0001723AB28057 +S315E060E83066161812558F48843F044E93588F488069 +S315E060E8400680FFFFFFBF600C20790001344C102882 +S315E060E850003748804A426714732A0002743DB481E7 +S315E060E8606608568A3600420260BE3600558F3F0023 +S315E060E8704EB900E0B238588F4A806D0000AE714301 +S315E060E88020790001344C143008404882671A71429E +S315E060E89041F90001330C1230080053811181080000 +S315E060E8A06C06420411840800424041F90001330CD1 +S315E060E8B073427828B88156C14881C48179424A302A +S315E060E8C048006626700141F90001330C558F1180CE +S315E060E8D048003F3C0001486EFFFC2F0A4EBAFDAE91 +S315E060E8E04FEF000C4A806D42600E52807340528258 +S315E060E8F07828B88166BA60304A80672C7743A3414E +S315E060E9003A39000133D441F900013334E7A9218073 +S315E060E9104C0020790001344C4280828533C100018D +S315E060E92033D411823840600270DE4CEE0C3CFFE47A +S315E060E9304E5E4E754E56FFEC48D71C04558F3F3CF5 +S315E060E9400001486EFFFC2F2E00084EBAFD404FEFE7 +S315E060E950000C24404A80670000F24AAA001867006B +S315E060E96000F643F90001330D41F9000133384A19E5 +S315E060E9706706B5D0670000E05888B3FC0001333520 +S315E060E98066EC266A00144A8B66122F0A4EB900E0DE +S315E060E990EF3C588F26404A80670000B448780040D4 +S315E060E9A02F0B4EB900E0D21E508F49F900E0D374C8 +S315E060E9B042A7487800202F0B4E944FEF000C4A8018 +S315E060E9C06710204074E510107300B48167E2600060 +S315E060E9D00092206A001843E8001C2068001C60086A +S315E060E9E043E8002020680020B5C866F44AAA0034EF +S315E060E9F066604AAA001C665A22AA0020202A0014F1 +S315E060EA00670A2F004EB900E0BCD8588F242A001858 +S315E060EA102F0A4EB900E0BCD8246B001C266B0018A8 +S315E060EA202F0A2F0B4EB900E0D21E42A7487800208D +S315E060EA302F0B4EB900E0D3742F0A2F002F024EB988 +S315E060EA4000E0B8664FEF0024600E70DE600A70D9B1 +S315E060EA50600670BF600270DC4CEE1C04FFEC4E5E3C +S315E060EA604E754A0066F06000FF6A20790001344C1A +S315E060EA702F0A2F0224680020202A001067000082F7 +S315E060EA80558F486A000C122A001448813F012F0A0C +S315E060EA902F004EBAFA164FEF00104A80664C103CD3 +S315E060EAA0000143F90001330D41F9000133384A1999 +S315E060EAB0671E242A0010B4906616714041F9000181 +S315E060EAC0330C123008005381118108006632600E03 +S315E060EAD05280734058887428B48166D2602241F9C6 +S315E060EAE00001333442B00C00601620790001344CEA +S315E060EAF02F2800202F004EBAF43C508F42806002EF +S315E060EB0070CF241F245F4E754E56FFE8720848D7D3 +S315E060EB10041C362E000C246E000E7143B28067042E +S315E060EB2070218680558F4267486EFFFC2F2E000865 +S315E060EB304EBAFB5A4FEF000C24006D56674E558F68 +S315E060EB40486EFFF83F0342AEFFF82F2EFFFC2F0022 +S315E060EB504EBAF9584FEF0010280067304A8A67309E +S315E060EB604878000C2F2EFFFC2F0A4EB900E00EC449 +S315E060EB702542001015430014256EFFF8000C2F0A9D +S315E060EB802F044EBAF3B04FEF0014600474DF6002F6 +S315E060EB90428220024CEE041CFFE84E5E4E754E56F5 +S315E060EBA0FFC448D73CFC558F42A74267282E000E2B +S315E060EBB0242E000A2F044EBAFF504FEF000C4A8015 +S315E060EBC067000170558F426745FAFAC2486EFFFCEE +S315E060EBD02F024E924FEF000C2E006D00015C670035 +S315E060EBE00156558F4267486EFFF82F044E924FEFFD +S315E060EBF0000C2C006D0001426700013C558F3F3CE4 +S315E060EC0000022F024EB900E0B5BE508F4A806D001B +S315E060EC100128558F3F003A004BF900E0EF9047F945 +S315E060EC2000E0D21E260E0683FFFFFFED49F900E005 +S315E060EC30D3E44E95244070E5242A00181D40FFED8C +S315E060EC402F2A001C2F024E934FEF000CBC87670003 +S315E060EC5000A842A72E3C00E0D374487800202F023B +S315E060EC6020474E9020401C28000B2F2A001C2F02C4 +S315E060EC704E932F03A3672F024E944FEF00204886F2 +S315E060EC80246A001C45EA00162F0A2F024E932F03D2 +S315E060EC904878000A2F0220474E904FEF00123F0659 +S315E060ECA02F044EB900E0BC225C8F3F0028004E95F1 +S315E060ECB02440206A001C41E800162F082F2A00181D +S315E060ECC04E932F034878000A2F2A00184E944FEF90 +S315E060ECD00016302A000472FEC081354000043F040D +S315E060ECE04EB900E0B7603EBC00022F2A00184EB96C +S315E060ECF000E0B642508F60182F032F2EFFF84EBA11 +S315E060ED00F3402F034878000B2F024E944FEF001428 +S315E060ED10558F3F054EB900E0B760588F4A806D1851 +S315E060ED20558F3F3C00022F024EB900E0B642508F4D +S315E060ED30600670DC600270DE4CEE3CFCFFC44E5E4A +S315E060ED404E754FEFFFEE48EF0C0C000220790001A4 +S315E060ED50344C2468002042AA00102F0A3F2F001E80 +S315E060ED602F2F001C4EBAFDA24FEF000C204A43EA5B +S315E060ED70000B7318742AB481670E763FB681670814 +S315E060ED80B3C866EE4241600272014A806D6C4A41E8 +S315E060ED906768720141F90001330D43F900013338C8 +S315E060EDA026484A1B6712242A0010B491660A754108 +S315E060EDB07628B68266206040528175415889762809 +S315E060EDC0B68266DE72014A18670C52817541762812 +S315E060EDD0B68266F26022734141F90001330C45EA7E +S315E060EDE000101430180052821182180041F90001B7 +S315E060EDF0333421921C00600270D94CD70C0C4FEF73 +S315E060EE0000104E754E56FFF41D6E000FFFF62F0A8A +S315E060EE102F02558F4267486EFFFC2F2E00084EBAD0 +S315E060EE20F86C4FEF000C24404A8067000084558FF1 +S315E060EE30486EFFF83F3C002742AEFFF82F2EFFFCFE +S315E060EE402F004EBAF6664FEF00104A806766242AB6 +S315E060EE500014202EFFF80680FFFFFFEB2F002F0245 +S315E060EE602D40FFF84EB900E0D21E508F200E06808E +S315E060EE70FFFFFFF64A6E000C66122F00A3672F02B3 +S315E060EE804EB900E0D3744FEF000C601E2F00A3670D +S315E060EE902F024EB900E0D3E44FEF000A3F3C000298 +S315E060EEA02F024EB900E0B642508F712EFFF6600633 +S315E060EEB070DE600270DF242EFFEC246EFFF04E5EA3 +S315E060EEC04E7500002F027419102F0009220006818A +S315E060EED0FFFFFF9F7381B4816504725FC081241F69 +S315E060EEE04E7520790001344C202800204E7520793B +S315E060EEF00001344C216F000400204E754FEFFFF4A3 +S315E060EF0048D7040C362F00103F3C000A4E4D548F14 +S315E060EF107543A341E5A97341C280670A2079000180 +S315E060EF20344C114300374CD7040C4FEF000C4E7550 +S315E060EF3020790001344C712800374E752F0A246F12 +S315E060EF400008558F3F3C00044EB900E0BC34588F52 +S315E060EF5020404A806734316A000E000A216A002840 +S315E060EF600018216A00180014216A002C001C316A1E +S315E060EF7000120008203C7FFFFFFF2140000C316A51 +S315E060EF8000100006216A002400102008245F4E75F8 +S315E060EF90558F3F2F00064EB900E0B3A6588F7140FB +S315E060EFA02200E789224141F10A0043F900013D0C64 +S315E060EFB0203188004E7500004FEFFFF4226F001895 +S315E060EFC048D7001C206F001022290014262900046F +S315E060EFD02241202F001460187582A344B882660629 +S315E060EFE041E800FE6008D1C2B2886316D7905380CC +S315E060EFF04A806704141966E04A8057C0710044800D +S315E060F000600270BE4CD7001C4FEF000C4E754E563A +S315E060F010FFFC2F0B2F0A558F4267266E00102F2EAE +S315E060F02000084EB900E0B5BE508F4A806D36368036 +S315E060F030558F45F900E0D3BA486EFFFEA5673F00FD +S315E060F0404E924FEF000C4A806D1A558F2F2E000CB2 +S315E060F0504878001A3F134E924FEF000C4A805FC12A +S315E060F0607301C081246EFFF4266EFFF84E5E4E7526 +S315E060F0704E56FFB848D73C7C246E000842AEFFFC93 +S315E060F080266E000E202A000441EA01002D48FFE0CA +S315E060F090286B0004909222132D4CFFEC226B000843 +S315E060F0A0D9C14BF0C8000680FFFFFF00D1C12D41FA +S315E060F0B0FFE4362E000C2D49FFF42D6B000CFFF8B3 +S315E060F0C02D40FFDC2D4DFFF02D48FFE8B08C6D0044 +S315E060F0D000FE908CB3C06E0000F648780018486E6B +S315E060F0E0FFE0486A00084EB900E00EC45C8F4BF959 +S315E060F0F000E0D3BA2EAEFFE02F0C3F034E954FEF04 +S315E060F100000C24006D0000D24A6B0018660000C84F +S315E060F1104267206EFFF841E8001C3F034870C80074 +S315E060F1204EB900E0D30C508F24006D0000AC558FD3 +S315E060F130486EFFFCA9673F034E954FEF000C240035 +S315E060F1406D000096286EFFFC4A8C6756202EFFE025 +S315E060F15049F40800B08C627A2A2EFFF0BA8C6372AA +S315E060F160D194202A00049085280E2A000684FFFFA9 +S315E060F170FFDC2C3C00E0EFB8558F2F2EFFF02F051B +S315E060F1803F034E954FEF000C24006F122F042F00C3 +S315E060F1902F0C20464E904FEF000C24006EDA4A8228 +S315E060F1A06636A340C0AB00144A406706202EFFF4E3 +S315E060F1B06008202A000490AEFFF04A806F182F00A6 +S315E060F1C02F2EFFF04EB900E00DD8508F600874D94D +S315E060F1D0600674BE60024282558F3F034EB900E01E +S315E060F1E0B760588F20024CEE3C7CFFB84E5E4E75A1 +S315E060F1F04E56FFD048D71C04246E000849F900E05B +S315E060F2000EC4202A000441EA0102266800049092B6 +S315E060F21022102D4BFFF0342800180680FFFFFF0018 +S315E060F2202D680008FFF8D7C12D68000CFFFC2D4063 +S315E060F230FFE02F0B2D41FFE8200A06800000010069 +S315E060F24041F30800D280486A011C2F002D40FFE49C +S315E060F2502D48FFF42D41FFEC4E944FEF000C202E2D +S315E060F260FFE0B08B6D00008E908BB0AEFFF86D0066 +S315E060F270008448780018486EFFE4486A00084EB992 +S315E060F28000E00EC44FEF000C4A426670206EFFFC51 +S315E060F290202EFFE441E8001CD1CB41F00800265067 +S315E060F2A04A8B673447F30800B08B624C222EFFF43A +S315E060F2B0B28B6344D19324005888D4AE000C948812 +S315E060F2C02F022F082F014E94486EFFE02F022F0B7E +S315E060F2D04EBAFCE64FEF0018202EFFF4222A000417 +S315E060F2E092804A816F162F012F004EB900E00DD84B +S315E060F2F0508F600870D9600670BE600242804CEE46 +S315E060F3001C04FFD04E5E4E754FEFFFF030390001C2 +S315E060F31006A8322F001448D7003CD08133C00001E4 +S315E060F32006A873400C81000007CF6F0001080680D5 +S315E060F330FFFFF83033C0000106A8303900013D0A0E +S315E060F340721F741E5280C28033C000013D0AB481D0 +S315E060F350660000E278E0C0840680000000202200BB +S315E060F3600281000007E033C000013D0A0C81000025 +S315E060F3700780660000C00280FFFFF81F068000007D +S315E060F380080033C000013D0A02800000F8000C80EE +S315E060F3900000C0006600009E303900013CD0323C7F +S315E060F3A0001F4245143C001FC28033C500013D0A80 +S315E060F3B0B48167485280721F781CC28033C00001F6 +S315E060F3C03CD034007741B8836C6AEA8A7A0FC485A8 +S315E060F3D01A3C00027942BA84661202800000060096 +S315E060F3E04A406608701DB08366126048754241FA0D +S315E060F3F00184734171702A00B0816C383039000144 +S315E060F4003CD072E0C08106800000002122000281CB +S315E060F410000001E033C000013CD00C8100000180B7 +S315E060F4206F120280FFFFFE0006800000022133C0FB +S315E060F43000013CD04CD7003C4FEF00104E752F0AD0 +S315E060F4402F023F3C00174E4E548F42404840241FE7 +S315E060F450245F33C000013CD071404E754FEFFFF042 +S315E060F460720F48D7041C362F0014780C7143EA807B +S315E060F470C0817540B8826D50123C001F183C000296 +S315E060F480C283B882661224030282000006004A4202 +S315E060F49066067341701D600C714041FA00D8734195 +S315E060F4A071700A00B0816D2033C300013CD04843DF +S315E060F4B04243717900013D0A86802F033F3C001686 +S315E060F4C04E4E5C8F42806002A1404CD7041C4FEFE9 +S315E060F4D000104E752F0A2F023F3C00174E4E548F98 +S315E060F4E0241F33C000013D0A7140245F4E754FEF23 +S315E060F4F0FFF4701F48D7040C362F0010721DC083CE +S315E060F500B2806D4220030280000007E00C800000BC +S315E060F510077F6E32200302800000F8000C80000056 +S315E060F520BFFF6222717900013CD033C300013D0A1E +S315E060F53077434840424086802F033F3C00164E4E5C +S315E060F5405C8F42806002A1404CD7040C4FEF000C08 +S315E060F5504E754EBAFEEA33C000013CD04EBAFF7635 +S315E060F56033C000013D0A203C00E0F30823C0000000 +S315E060F57004004E750000001F001C001F001E001FE7 +S315E060F580001E001F001F001E001F001E001F00005F +S315E060F5904FEFFFEC302F001C322F001E206F00185B +S315E060F5A048D70C1C45E80020224A3600780977C324 +S315E060F5B086C1240348427742B8836C08068200001D +S315E060F5C000576006068200000030130271C080C1F9 +S315E060F5D066D8200A90892200538173C1244847F097 +S315E060F5E0180114D9B7CA66FA538071C04CD70C1C9F +S315E060F5F04FEF001441F0080120084E754FEFFFEC25 +S315E060F600206F0018736F002048D70C1C202F001C59 +S315E060F61045E80020224A260078094C4130027742CC +S315E060F620B8836C0806820000005760060682000018 +S315E060F630003013024C41000066DC200A908922000B +S315E060F640538173C1244847F0180114D9B7CA66FAE2 +S315E060F650538071C04CD70C1C4FEF001441F0080189 +S315E060F66020084E75286E756C6C2900004FEFFF44DC +S315E060F67048D77CFC260F2A0F246F00C00683000063 +S315E060F680003C266F00C406850000003D2C6F00C874 +S315E060F69042424BFAFF6849FAFEF8600A558F3F002E +S315E060F6A052824E92588F101B4880671673407825B9 +S315E060F6B0204BB88166E671137C2DBC80660002D66D +S315E060F6C0600C30024CD77CFC4FEF00BC4E757E017F +S315E060F6D052883F47003471107230B28066065288B5 +S315E060F6E078306002782042463F46002E10187E0948 +S315E060F6F04880264822000681FFFFFFD07DC1BE8696 +S315E060F70065043001600C73407C2ABC816616301655 +S315E060F710548E3C2F002ECDFC000A2E06DE803F473D +S315E060F720002E60C87C2EBC81662A424110187E0994 +S315E060F73048802648224043E9FFD07DC9BE86640CF6 +S315E060F7407D407E2ABE86660E3256548EC3FC000A23 +S315E060F750D28960D842417D407E6CBE8667081E3C99 +S315E060F760004CBE86660C1E13670C1007528B4880F1 +S315E060F770600491C86004307C00017F407C67BC8790 +S315E060F7806D427265B2876F00010E1C3C0055BC8706 +S315E060F7906700020C6D18123C0044B287670000AE49 +S315E060F7A01C3C004FBC8766000134600001F8726360 +S315E060F7B0B287670000EC6D0000907C58BC876600FD +S315E060F7C0011C60547C70BC8767346D127269B287C5 +S315E060F7D067761C3C006FBC8766000102603E7C7504 +S315E060F7E0BC8767161C3C0078BC8767341C3C00739A +S315E060F7F0BC87660000E8600000BA700A6024558F36 +S315E060F8003F3C00307E08783054824E923EBC0078B1 +S315E060F8104E92588F3F47002E7010600A7008600263 +S315E060F82070103208670E558F3F002E0E58872F16E0 +S315E060F8302F0360383F002E0E54873F162F034E94F9 +S315E060F840508F2C43600000AC3C0867282E0E58872A +S315E060F85020166C0C722D44801F41003C220560022C +S315E060F8602203558F3F3C000A2F002F014E954FEF44 +S315E060F870000C60CE30162E0E54874A406C0C7C2D00 +S315E060F880448022051F46003C600222033F3C000A9A +S315E060F8903F002F0160A87E3F1F47003C2E0E600EA2 +S315E060F8A030162E0E54874A40673E1F40003C782053 +S315E060F8B060302E0E58872C564A8E66044DFAFDA6A9 +S315E060F8C04A416604323C7FFF204E18102008528879 +S315E060F8D04A04671C53814A416CF060141F40003C47 +S315E060F8E02E0E2C432005600A78202C43200360020C +S315E060F8F078203C2F002E908E3F40003A9C80220676 +S315E060F90046817341D2819381CC814A6F0034665ED1 +S315E060F910220644812F4100343C0167527316204130 +S315E060F920722DB2886626734420417230B288661CB6 +S315E060F930558F3F3C002D528E52822F4000344E92BE +S315E060F940202F003453803F40003E588F558F3F0450 +S315E060F95052864E92588F4A4666F294AF0034600EF5 +S315E060F960101E558F528248803F004E92588F322F3C +S315E060F970003A53813F41003A6CE63C46600A558F57 +S315E060F9803F044E92538E588F300E66F2D4862C47E3 +S315E060F9906000FD1442413F4100346000FD3A700A68 +S315E060F9A06000FE8470086000FE7E000070FF42B971 +S315E060F9B000013EA433C0000106AE4EB900E0115C22 +S315E060F9C0424041F900E437A06002528073404AB099 +S315E060F9D01C0066F633C0000106AC4E754FEFFFECD7 +S315E060F9E048D70C1C282F0018424247F900E437A09C +S315E060F9F045F900E1C4D4603820733C002F102F0431 +S315E060FA004E92508F4A40662641F900E437A0207056 +S315E060FA103C0033C2000106AE58884CD70C1C23D09C +S315E060FA2000013EA44FEF001460FFFFFF17325282E1 +S315E060FA3077427179000106ACB0836EBC42404CD728 +S315E060FA400C1C4FEF001433C0000106AE4E75716FAB +S315E060FA50000441F900E437A020700C0020104E75D8 +S315E060FA603039000106AC4E75667200646500666901 +S315E060FA700063730065730067720072750050726FA1 +S315E060FA806A6563742D49642D56657273696F6E3A63 +S315E060FA9020454D55544F5320626574610A504F546A +S315E060FAA02D4372656174696F6E2D446174653A20A9 +S315E060FAB0323030342D30312D32372031343A3337ED +S315E060FAC02B303130300A504F2D5265766973696F4D +S315E060FAD06E2D446174653A20323030342D30312DEC +S315E060FAE032372031343A34312B303130300A4C61A0 +S315E060FAF073742D5472616E736C61746F723A204CDC +S315E060FB00617572656E7420566F67656C203C6C76C5 +S315E060FB106C40636C75622D696E7465726E65742E89 +S315E060FB2066723E0A4C616E67756167652D54656104 +S315E060FB306D3A204672656E6368203C6672406C6919 +S315E060FB402E6F72673E0A4D494D452D566572736953 +S315E060FB506F6E3A20312E300A436F6E74656E742D87 +S315E060FB60547970653A20746578742F706C61696E4B +S315E060FB703B20636861727365743D49534F2D383835 +S315E060FB8035392D310A436F6E74656E742D5472612A +S315E060FB906E736665722D456E636F64696E673A2053 +S315E060FBA0386269740A005B315D5B43657474652035 +S315E060FBB06170706C69636174696F6E206E27612035 +S315E060FBC070617320617373657A2064657C706C61C3 +S315E060FBD0636520706F7572206F75767269722075D5 +S315E060FBE06E20617574726520646F63756D656E74A1 +S315E060FBF02E7C4665726D657A2064657320646F63FA +S315E060FC00756D656E747320696E7574696C697382FF +S315E060FC107320706F75727C6C696282726572206443 +S315E060FC2065206C6120706C6163652E5D5B20204FA2 +S315E060FC304B20205D0020204E6F75766561752064EF +S315E060FC406F73736965722E2E2E004E6F6D2064653C +S315E060FC5020646F73736965723A205F5F5F5F5F5FB1 +S315E060FC605F5F2E5F5F5F00256C64206B4200656EB0 +S315E060FC707472657A206C65732076616C65757273F3 +S315E060FC8020646520706172616D8A7472657320713B +S315E060FC90756900537973748A6D652073746F7070DB +S315E060FCA082210A005B335D5B4482736F6C822C2039 +S315E060FCB06D61697320766F7573206E6520706F7500 +S315E060FCC076657A20706C7573206C6F6765727C649C +S315E060FCD06520646F737369657220737570706C828A +S315E060FCE06D656E74616972652064616E73206C65C2 +S315E060FCF07C646F737369657220656E20636F75727D +S315E060FD00732E20436F6E73756C74657A206C617CBC +S315E060FD10646F63756D656E746174696F6E20706F24 +S315E060FD207572206C6573206C696D69746573207398 +S315E060FD3075727C6C27696D627269636174696F6EF6 +S315E060FD402064657320646F7373696572732E5D5B9F +S315E060FD50416E6E756C65725D0043728282206C6581 +S315E060FD603A20205F5F2D5F5F2D5F5F2020002020BF +S315E060FD70747269657220706172207461696C6C6519 +S315E060FD8000434F4E464C4954204445204E4F4D204B +S315E060FD904C4F5253204445204C4120434F504945F7 +S315E060FDA0004D6F6469666982206C653A20205F5F0A +S315E060FDB02F5F5F2F5F5F0028706C7573206465202E +S315E060FDC064827461696C732064616E7320646F63CE +S315E060FDD02F6C6963656E63652E74787429006C6553 +S315E060FDE0206E6F6D20647520646F73736965722031 +S315E060FDF0852063728265722E004C6972652F82631C +S315E060FE007269726500505245464552454E434553C8 +S315E060FE10005669746573736520646F75626C652DF1 +S315E060FE20636C69633A002020507282668272656E06 +S315E060FE306365732E2E2E00506172616D8A747265F1 +S315E060FE40733A20205F5F5F5F5F5F5F5F5F5F5F5F0B +S315E060FE505F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F6C +S315E060FE605F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5C +S315E060FE705F5F5F5F5F5F5F5F0048657572652064C7 +S315E060FE80652064826D61727261676500434F5049B7 +S315E060FE9045522044455320444F53534945525300FD +S315E060FEA02020536175766572206C65206275726597 +S315E060FEB06175002020566F697220636F6D6D6520F5 +S315E060FEC074657874650044826275742082637261D9 +S315E060FED06E00496E7382726572206C652064697328 +S315E060FEE07175652064652064826D617272616765B3 +S315E060FEF02047454D00494E464F524D4154494F4E7D +S315E060FF005320444953515545006C276963936E65A8 +S315E060FF10206E6F757665617520646F73736965725F +S315E060FF202065742072656D706C6972206C65730013 +S315E060FF304F6374657473207574696C697382733A20 +S315E060FF4020205F5F5F5F5F5F5F5F5F5F005B325D8B +S315E060FF505B4365747465206170706C696361746934 +S315E060FF606F6E206E652070657574206C69726520B1 +S315E060FF706C65737C646F6E6E8265732064752064F5 +S315E060FF8069737175652064616E73206C65206C655C +S315E060FF9063746575722025633A2E7C4C65206469CE +S315E060FFA07371756520646F69742088747265206604 +S315E060FFB06F726D6174822C206C65206C656374650C +S315E060FFC075727C646F6974208874726520616C698F +S315E060FFD06D656E748220656E20636F7572616E7496 +S315E060FFE02065747C636F6E6E656374822085206CB9 +S315E060FFF0276F7264696E61746575722E5D5B416EC2 +S315E06100006E756C65727C456E636F72655D0020200E +S315E0610010496E666F73206275726561752E2E2E006C +S315E0610020416E6E756C65720066656E887472652088 +S315E0610030656E20636F7572732C20646F75626C6593 +S315E061004020636C697175657220737572005B315DF1 +S315E06100505B496D706F737369626C65206465206777 +S315E06100606C697373657220646973717565732C204D +S315E0610070646F63752D7C6D656E74732C20646F633C +S315E0610080756D656E7473206F752070706C696361F0 +S315E061009074696F6E73207375727C6C6520627572BC +S315E06100A06561752E20456E20726576616E63686561 +S315E06100B020696C732070657576656E747C88747280 +S315E06100C06520676C69737382732076657273206CE1 +S315E06100D06120636F726265696C6C652E5D5B202081 +S315E06100E04F4B20205D005B315D5B496C206E27796B +S315E06100F0206120706C757320617373657A20642763 +S315E061010065737061636520646973706F6E69626C53 +S315E0610110657C706F757220636F6E6669677572650F +S315E061012072206365747465206170706C6963617473 +S315E0610130696F6E2E20506F75727C6C696282726532 +S315E061014072206465206C2765737061636520766FE4 +S315E0610150757320646576657A207265746972657215 +S315E06101607C756E65206170706C69636174696F6ED0 +S315E06101702064826A8520636F6E66696775728265DF +S315E06101802E5D5B20204F4B20205D002020496E7361 +S315E061019074616C6C657220756E206C6563746575EF +S315E06101A0722E2E2E00506F757220637282657220F8 +S315E06101B0756E206E6F757665617520646F737369B0 +S315E06101C065722064616E73206C61005B335D5B45D3 +S315E06101D0727265757220444F53202325642E5D5BF0 +S315E06101E0416E6E756C65725D004F4B004E6F6D3A98 +S315E06101F020205F5F5F5F5F5F5F5F2E5F5F5F0043F2 +S315E06102006F6E6669726D6572206C6120636F70698D +S315E0610210653F00456D75544F532056657273696F3E +S315E06102206E005479706520646520435055005B31FA +S315E06102305D5B4C6120636F726265696C6C65206EB3 +S315E061024065207065757420706173208874726520AD +S315E0610250676C69737382657C64616E7320756E65C4 +S315E06102602066656E887472652E5D5B20204F4B203B +S315E0610270205D005B315D5B4C65206C656374657523 +S315E061028072207370826369666982206E2765786918 +S315E0610290737465207061732E7C56827269666965D6 +S315E06102A07A206C61206C6574747265206465206C7B +S315E06102B0656374657572207175657C766F7573209B +S315E06102C06176657A207361697369652E5D5B416EFE +S315E06102D06E756C65725D004E6F6E004F6E00442EFA +S315E06102E0206475720045666665747320736F6E6F20 +S315E06102F07265733A004174747269627574733A0037 +S315E06103004C6574747265206465206C6563746575AB +S315E0610310723A20205F3A004F757665727475726540 +S315E061032020646573206D656E75733A004C61626534 +S315E06103306C206465206469737175653A20205F5F3E +S315E06103405F5F5F5F5F5F5F5F5F005B335D5B556E06 +S315E061035065206572726575722073276573742070A6 +S315E0610360726F647569746520617665637C6C276517 +S315E06103706E7669726F6E6E656D656E7420677261B9 +S315E06103807068697175652047454D2E7C4D65726370 +S315E06103906920646520706F7274657220636520629E +S315E06103A06F6775652085206C617C636F6E6E6169D0 +S315E06103B07373616E6365206465206C27827175690C +S315E06103C070652064657C648276656C6F7070656D5E +S315E06103D0656E74206427456D75544F532E5D5B41A0 +S315E06103E06E6E756C65725D00456C826D656E74737B +S315E06103F0208520656666616365723A20205F5F5F8E +S315E06104005F005461696C6C6520656E206F6374652D +S315E061041074733A20205F5F5F5F5F5F5F5F5F5F007E +S315E06104204C656374657572733A005B315D5B566FFB +S315E0610430747265206F7264696E6174657572206E3F +S315E061044027612070617320737566666973616D6D8E +S315E0610450656E747C6465206D826D6F69726520700E +S315E06104606F757220666169726520746F75726E650B +S315E0610470727C6C276170706C69636174696F6E2000 +S315E06104807370826369666982652E5D5B20204F4B7E +S315E061049020205D002020436F6E6669677572652076 +S315E06104A0756E65206170706C69636174696F6E2EDB +S315E06104B02E2E006170706C69636174696F6E005BAA +S315E06104C0335D5B4D617576616973206E756D8272C0 +S315E06104D06F20646520666F6E6374696F6E5D5B4104 +S315E06104E06E6E756C65725D005B335D5B566F7472E3 +S315E06104F065206F7264696E6174657572206E2761DD +S315E06105002070617320737566666973616D6D656E82 +S315E0610510747C6465206D826D6F69726520706F753C +S315E06105207220666169726520746F75726E6572209C +S315E06105306C657C6275726561752047454D2E5D5BC4 +S315E06105404482736F6C825D00454646414345522065 +S315E061055044455320444F53534945525300494E460F +S315E06105604F524D4154494F4E5320444F53534945A1 +S315E061057052004A4A2D4D4D2D4141004E6F6D20642A +S315E061058065206C6120636F7069653A205F5F5F5FCC +S315E06105905F5F5F5F2E5F5F5F00496E7374616C6C76 +S315E06105A0657200436F6E6669726D65722082637211 +S315E06105B06173656D656E743F004661737452414D5A +S315E06105C0206C6962726500466F726D617420646168 +S315E06105D074653A004F555652495220554E45204171 +S315E06105E050504C49434154494F4E005B325D5B4349 +S315E06105F065747465206170706C69636174696F6E4E +S315E0610600206E6520706575742074726F757665729B +S315E06106107C6C6520646F7373696572206F75206C9D +S315E06106206520646F63756D656E742071756520769E +S315E06106306F75737C74656E74657A2064276F757601 +S315E06106407269722E20568272696669657A206C6576 +S315E0610650206E6F6D7C71756520766F75732061763E +S315E0610660657A2073616973692E5D5B20204F4B204B +S315E0610670205D0053746F70004C656374757265201C +S315E06106807365756C65004E6F6D2061637475656C3D +S315E06106903A20205F5F5F5F5F5F5F5F2E5F5F5F0056 +S315E06106A05B335D5B566F7573206E6520706F757633 +S315E06106B0657A2070617320636F7069657220756E0B +S315E06106C020646F73736965727C85206C27696E74CB +S315E06106D0827269657572206427756E20646F7373C3 +S315E06106E069657220636F6E74656E75207061727C88 +S315E06106F063656C75692D63692E5D5B20204F4B20C8 +S315E0610700205D005B335D5B4C65206E6F6D206465DB +S315E061071020646F7373696572206482706173736557 +S315E0610720206C65206E6F6D6272657C6D6178696D56 +S315E0610730756D206465206361726163748A72657345 +S315E06107402E20436F6E73756C74657A206C617C6480 +S315E06107506F63756D656E746174696F6E20706F75C8 +S315E061076072206C6573206C696D697465732073754D +S315E061077072206C657C6E6F6D627265206465206364 +S315E061078061726163748A7265732E5D5B20204F4B83 +S315E061079020205D004963936E653A003132206865D9 +S315E06107A075726573005B315D5B4C65206275726580 +S315E06107B061752047454D206E276120706C75732009 +S315E06107C064652066656E887472657C646973706F52 +S315E06107D06E69626C652E204665726D657220756E16 +S315E06107E0652066656E887472657C696E7574696C20 +S315E06107F069738265206176616E742064276F7576B0 +S315E061080072697220756E206469737175652E5D5BC0 +S315E061081020204F4B20205D004469737175657474C7 +S315E061082065002042757265617520004C278271759D +S315E061083069706520646520648276656C6F70656D4C +S315E0610840656E74206427456D75544F5300456C821F +S315E06108506D656E7473208520636F706965723A2089 +S315E0610860205F5F5F5F0020466963686965722000AB +S315E0610870256C64206F6374657473207574696C6943 +S315E06108807382732070617220256420826C826D654B +S315E06108906E74732E004E6F6D2064276170706C69A3 +S315E06108A0636174696F6E3A20205F5F5F5F5F5F5F70 +S315E06108B05F2E5F5F5F004E6F757620446F7373697D +S315E06108C0657200546F75636865204354524C203DF0 +S315E06108D03E207061732064274155544F2F41434355 +S315E06108E0002020496E666F2F52656E6F6D6D657281 +S315E06108F02E2E2E00426173822073757220646573B9 +S315E061090020736F75726365732047504C2D697382EE +S315E06109106573005B315D5B496C206578697374650D +S315E06109202064826A8520756E20826C826D656E7444 +S315E0610930206465206D886D65206E6F6D7C64616E87 +S315E061094073206C6520646F73736965722C206F75B3 +S315E0610950206C27826C826D656E7420657374206588 +S315E06109606E7C6C656374757265207365756C652EF6 +S315E0610970205574696C6973657A206C6120636F6D6B +S315E06109806D616E64657C22496E666F2F52656E6F2E +S315E06109906D6D65722220706F7572206368616E6736 +S315E06109A06572206C27827461747C6465206C278231 +S315E06109B06C826D656E742E5D5B20204F4B20205DF1 +S315E06109C0006368616D7073206475206469616C6F42 +S315E06109D067756520717569206170706172618C748B +S315E06109E020617665630032342068657572657300EF +S315E06109F02020747269657220706172207479706505 +S315E0610A0000547970652064276170706C6963617404 +S315E0610A10696F6E3A00436C6963005479706573205F +S315E0610A20646520646F63756D656E743A00546170D8 +S315E0610A3065722027432720706F7572206C616E6343 +S315E0610A406572206C6120636F6E736F6C65004C65D7 +S315E0610A5074747265206465206C6563746575723A59 +S315E0610A6020205F004F6666004E4F555620444F5337 +S315E0610A7053494552002020436F6E736F6C652020A9 +S315E0610A80202020202020205E5A00434F4E464947D1 +S315E0610A905552455220554E45204150504C494341AF +S315E0610AA054494F4E0020204368616E676572206C41 +S315E0610AB061207282736F6C7574696F6E202020207D +S315E0610AC02007430053542D52414D206C6962726593 +S315E0610AD0002020466F726D617465722E2E2E0020A5 +S315E0610AE020456666616365722E2E2E00202046657E +S315E0610AF0726D657200746F757465206C61206D82CC +S315E0610B006D6F6972653F004F7569002020566F69A8 +S315E0610B107220636F6D6D65206963936E65730043E3 +S315E0610B206F7079726967687420286329004C656320 +S315E0610B3074657572732047454D444F5300494E467F +S315E0610B404F204E4F555645415520444F53534945E5 +S315E0610B505200446F737369657273208520636F70A9 +S315E0610B606965723A20205F5F5F5F00494E464F528A +S315E0610B704D4154494F4E53202F2052454E4F4D4DD6 +S315E0610B804552005B335D5B4C6520666F726D6174E7 +S315E0610B90616765207661204546464143455220744A +S315E0610BA06F75746573206C65737C646F6E6E826558 +S315E0610BB073207175692073652074726F7576656EE1 +S315E0610BC07420737572206C65206C656374657572EB +S315E0610BD07C25633A2E20436C697175657A2073755D +S315E0610BE07220416E6E756C657220736920766F75E1 +S315E0610BF073206E657C766F756C657A2070617320A3 +S315E0610C007065726472652063657320646F6E6E826F +S315E0610C1065732E5D5B20204F4B20207C416E6E75A7 +S315E0610C206C65725D00204F7074696F6E7320004E63 +S315E0610C306F6D62726520646520646F737369657256 +S315E0610C40733A2020205F5F5F5F5F0053454C454309 +S315E0610C5054455552005B325D5B4C65206C6563744F +S315E0610C606575722025633A206E65207282706F6EBB +S315E0610C7064207061732E20496E738272657A7C6C32 +S315E0610C806520626F6E2074797065206465206469A1 +S315E0610C90737175652064616E73206C65206C656344 +S315E0610CA0746575722E7C5369206C652070726F6213 +S315E0610CB06C8A6D65206573742073757220756E201C +S315E0610CC0646973717565206475722C7C768272696C +S315E0610CD06669657A206C657320636F6E6E657869A7 +S315E0610CE06F6E73206475206469737175652E5D5BE3 +S315E0610CF0416E6E756C65727C456E636F72655D00A3 +S315E0610D005B335D5B436C697175657A2073757220DF +S315E0610D104F4B20736920766F7573208874657320F5 +S315E0610D20739672207175657C766F757320766F75D3 +S315E0610D306C657A206566666163657220544F5554C9 +S315E0610D404553206C657320646F6E6E8265737C704B +S315E0610D50728273656E74657320737572206C65203B +S315E0610D606469737175652025633A2E7C53696E6F8C +S315E0610D706E20636C697175657A2073757220416E58 +S315E0610D806E756C65722E5D5B20204F4B20207C4139 +S315E0610D906E6E756C65725D005B315D5B4C27696398 +S315E0610DA0936E65206465206C6120636F726265692C +S315E0610DB06C6C65207065757420887472657C64827C +S315E0610DC0706C6163826520737572206C65206275F3 +S315E0610DD0726561752C206D61697320706173206144 +S315E0610DE0757C646573737573206427756E652061C0 +S315E0610DF075747265206963936E652E5D5B20204F25 +S315E0610E004B20205D0052657469726572005B315DED +S315E0610E105B4C6520646F63756D656E742073826C7F +S315E0610E20656374696F6E6E82206E27657374207078 +S315E0610E3061737C636F6E66696775728220706F75C8 +S315E0610E407220756E65206170706C69636174696F3B +S315E0610E506E7C706172746963756C698A72652E20E5 +S315E0610E605574696C69736572206C6120636F6D6D31 +S315E0610E70616E64657C22436F6E6669677572652033 +S315E0610E806170706C69636174696F6E2220706F75F1 +S315E0610E9072206173736F636965727C6365207479CF +S315E0610EA0706520646520646F63756D656E74208519 +S315E0610EB020756E65206170706C69636174696F6ECF +S315E0610EC02E5D5B20204F4B20205D0053826C656375 +S315E0610ED074696F6E3A20205F5F5F5F5F5F5F5F2E71 +S315E0610EE05F5F5F0054797065206465206C6563744B +S315E0610EF06575723A005B325D5B4C65207082726942 +S315E0610F00706882726971756520646520736F727449 +S315E0610F106965206E65207265876F6974207061739B +S315E0610F207C646520646F6E6E8265732E20417661A6 +S315E0610F306E74206465207282657373617965722C63 +S315E0610F4020768272696669657A7C717565206C6501 +S315E0610F5020708272697068827269717565206573E5 +S315E0610F607420616C696D656E74822C7C636F6E6EE4 +S315E0610F70656374822085206C276F7264696E617423 +S315E0610F806575722065742063686172678220656E3B +S315E0610F907C706170696572206F7520656E20666927 +S315E0610FA06C6D2E5D5B416E6E756C65727C456E63D4 +S315E0610FB06F72655D005B315D5B566F757A206E655C +S315E0610FC020706F7576657A207061732064827472C1 +S315E0610FD0756972657C6C6520646F7373696572208F +S315E0610FE0636F7572616E742E5D5B20204F4B2020BE +S315E0610FF05D005B335D5B506F75722073617576651D +S315E061100072206C65206275726561752C20696E73FC +S315E061101082726572206C657C646973717565204264 +S315E061102055524541552047454D2064616E73206CAC +S315E061103065206C65637465757220413A2065747CE0 +S315E0611040636C697175657220737572204F4B2E20E2 +S315E0611050436C697175657A2073757220416E6E7540 +S315E06110606C65722073697C766F7573206E65207628 +S315E06110706F756C657A2070617320736175766572E0 +S315E0611080206C65206275726561752E5D5B20204F0F +S315E06110904B20207C416E6E756C65725D005B315DE7 +S315E06110A05B496D706F737369626C6520646520740A +S315E06110B0726F75766572206C652070726F677261AA +S315E06110C06D6D657C464F524D41542E2053692076B5 +S315E06110D06F7573207574696C6973657A20756E20B6 +S315E06110E0737973748A6D6520857C64657578206C27 +S315E06110F0656374657572732064652064697371757F +S315E061110065747465732C20766F7573206465766596 +S315E06111107A7C666F726D61746572206465707569FB +S315E061112073206C61206469737175657474652044BC +S315E06111304F532E2053697C766F7573206176657A9D +S315E061114020756E20646973717565206475722C20F3 +S315E0611150636F7069657A20464F524D41547C737571 +S315E061116072206C6120726163696E652064752064CA +S315E06111706973717565206475722E5D5B20204F4BD6 +S315E061118020205D0050617320646520636C696300B3 +S315E06111905B315D5B4C6120636F726265696C6C6546 +S315E06111A020657374206C27656E64726F697420764E +S315E06111B06572737C6C657175656C20676C69737358 +S315E06111C0657220646973717565732C20646F7373DE +S315E06111D0696572732C7C646F63756D656E7473207B +S315E06111E06574206170706C69636174696F6E732098 +S315E06111F0857C648274727569726520444546494EA0 +S315E061120049544956454D454E54215D5B20204F4B2F +S315E061121020205D00203C53686966743E20706F75DE +S315E061122072206D61696E74656E69722063657420A2 +S315E0611230826372616E2000494E5354414C4C455273 +S315E061124020554E204C45435445555200446F7373C7 +S315E061125069657273208520656666616365723A20A9 +S315E0611260205F5F5F5F005B325D5B4C657320646F3F +S315E06112706E6E82657320647520646973717565202D +S315E061128025633A2070657576656E7420887472653B +S315E06112907C616C7482728265732E205574696C69A7 +S315E06112A073657A206C6520626F6E20747970652053 +S315E06112B064657C646973717565747465206F7520A6 +S315E06112C0768272696669657A206C657320636F6E92 +S315E06112D06E656374696F6E737C647520646973713E +S315E06112E07565206475722E5D5B416E6E756C6572B7 +S315E06112F07C456E636F72655D0020204665726D6543 +S315E061130072206C612066656E88747265005B335D20 +S315E06113105B4C65206275726561752047454D206E4F +S315E06113206520706575742074726F757665727C443C +S315E061133045534B4C4F2E49434E2C204445534B4825 +S315E0611340492E49434E2C206F75204445534B544FEB +S315E0611350502E494E467C64616E73206C65206368ED +S315E0611360656D696E20646520726563686572636840 +S315E06113706520444F532E204365737C6669636869D3 +S315E061138065727320736F6E74206E826365737361C9 +S315E06113906972657320706F7572206C616E636572D8 +S315E06113A07C6C65206275726561752047454D2E5D81 +S315E06113B05B416E6E756C65725D004E6F6D627265F6 +S315E06113C0206427826C826D656E74733A20205F5F5C +S315E06113D05F5F5F00456D75544F532065737420649C +S315E06113E0697374726962758220736F7573206C6953 +S315E06113F063656E63652047504C005B315D5B4365B9 +S315E061140020646973717565206E2761207061732050 +S315E0611410617373657A2064276573706163652070B3 +S315E06114206F75727C6C657320646F6E6E8265732016 +S315E061143071756520766F75732074656E74657A2053 +S315E0611440646520636F706965722E7C4E82616E6D34 +S315E06114506F696E73206365727461696E7320826C05 +S315E0611460826D656E74732070657576656E747C6188 +S315E0611470766F69722082748220636F7069827320ED +S315E0611480737572206C65206469737175652E5D5B39 +S315E061149020204F4B20205D002052616E67656D65AF +S315E06114A06E742000546F7563686520414C54203D2D +S315E06114B03E2070617320646520646973717565208F +S315E06114C064757200202074726965722070617220A1 +S315E06114D064617465004D4D2D4A4A2D4141002020DD +S315E06114E04F757672697200466F726D6174206865D8 +S315E06114F07572653A00202054726965722070617276 +S315E0611500206E6F6D002020417272887465722020B2 +S315E0611510202020202020205E51004D616368696EA5 +S315E0611520650056657273696F6E00456E7472657AB1 +S315E0611530206C65206E6F6D20647520646F63756DD8 +S315E0611540656E74208520636861726765722C206FB1 +S315E06115507500636F6E7669656E6E656E7420706F29 +S315E06115607572206365747465206170706C6963611E +S315E061157074696F6E2E005B335D5B506F7572206CC4 +S315E0611580616E636572206C65206275726561752056 +S315E061159047454D2C20696E738272657A206C617C59 +S315E06115A06469737175657474652042555245415538 +S315E06115B02047454D2064616E73206C65206C6563E0 +S315E06115C07465757220417C657420636C69717565BB +S315E06115D07A20737572204F4B206F7520617070753C +S315E06115E0796572207375727C456E747282652E20A0 +S315E06115F0506F757220726576656E697220617520CD +S315E0611600444F5320636C6971756572207375727CA2 +S315E0611610416E6E756C65722E5D5B20204F4B2020AE +S315E06116207C416E6E756C65725D00646F63756D6548 +S315E06116306E7473004F637465747320646973706F5D +S315E06116406E69626C65733A20205F5F5F5F5F5F5FC3 +S315E06116505F5F5F005B325D5B566F7573206E652021 +S315E0611660706F7576657A20826372697265207375CB +S315E061167072206C65206469737175652064757C6C34 +S315E06116806563746575722025633A206361722069CA +S315E06116906C206573742070726F748267827C706887 +S315E06116A07973697175656D656E7420656E208263A7 +S315E06116B07269747572652E205265746972657A20F5 +S315E06116C06C617C70726F74656374696F6E2061764C +S315E06116D0616E742064652072826573736179657287 +S315E06116E02E5D5B416E6E756C65727C456E636F7285 +S315E06116F0655D005B315D5B496D706F737369626CEB +S315E0611700652064276F7576726972206C27696393C9 +S315E06117106E65206465206C617C636F726265696C7D +S315E06117206C652E20506F75722065666661636572C1 +S315E061173020646973717565732C7C646F7373696515 +S315E061174072732C206669636869657273206F7520B0 +S315E06117506170706C69636174696F6E732C7C6C65C2 +S315E06117607320666169726520676C6973736572205F +S315E0611770737572206C6120636F726265696C6C650A +S315E06117802E5D5B20204F4B20205D005B325D5B551B +S315E06117906E20646F7373696572206465206D886D10 +S315E06117A065206E6F6D206578697374652064826A01 +S315E06117B0857C6F75206C65206469737175652065DC +S315E06117C0737420706C65696E2E205265636F6D6D02 +S315E06117D0656E63657A7C6176656320756E20617599 +S315E06117E0747265206E6F6D206F7520616E6E756CBB +S315E06117F0657A2065747C768272696669657A206C41 +S315E06118006120706C616365206469737175652064DC +S315E06118106973706F6E69626C652E5D5B416E6E7544 +S315E06118206C65727C456E636F72655D00436F6E6673 +S315E061183069726D6572206566666163656D656E7414 +S315E06118403F004C6162656C2064276963936E653A1B +S315E061185020205F5F5F5F5F5F5F5F5F5F5F5F005637 +S315E06118606575696C6C657A20826A656374657220F8 +S315E06118706C61206469737175657474652065742043 +S315E0611880746170657220454E545245450050726FE1 +S315E06118906A6563742D49642D56657273696F6E3A34 +S315E06118A020454D55544F5320626574610A504F543B +S315E06118B02D4372656174696F6E2D446174653A207A +S315E06118C0323030332D30382D32382032323A3431BD +S315E06118D02B303230300A504F2D5265766973696F1D +S315E06118E06E2D446174653A20323030352D30342DB9 +S315E06118F031312031353A30342B303230300A4C6177 +S315E061190073742D5472616E736C61746F723A2054A4 +S315E0611910686F6D61732048757468203C74686F7494 +S315E061192068794075736572732E736F7572636566F8 +S315E06119306F7267652E6E65743E0A4C616E6775619E +S315E061194067652D5465616D3A204765726D616E20FC +S315E06119503C6465406C692E6F72673E0A4D494D4540 +S315E06119602D56657273696F6E3A20312E300A436F78 +S315E06119706E74656E742D547970653A207465787409 +S315E06119802F706C61696E3B20636861727365743D4B +S315E061199049534F2D383835392D310A436F6E7465A9 +S315E06119A06E742D5472616E736665722D456E636FEA +S315E06119B064696E673A20386269740A005B315D5B1F +S315E06119C0446965736520416E77656E64756E6720FF +S315E06119D0686174206B65696E656E20506C61747ABE +S315E06119E020756D206E6F63687C65696E20776569C9 +S315E06119F0746572657320446F6B756D656E74207A7C +S315E0611A0075209466666E656E2E7C42697474652097 +S315E0611A106D6F6D656E74616E20756E62656E9474E0 +S315E0611A206967746520446F6B756D656E74657C730B +S315E0611A3063686C69659E656E20756D20506C617436 +S315E0611A407A207A7520736368616666656E2E5D5B82 +S315E0611A5020204F4B20205D0020204E657565722069 +S315E0611A604F72646E65722E2E2E004F72646E6572D1 +S315E0611A706E616D653A20205F5F5F5F5F5F5F5F2EDE +S315E0611A805F5F5F00616E206F6465722067696220E7 +S315E0611A9070617373656E646520506172616D6574C2 +S315E0611AA06572206681722064696500537973746535 +S315E0611AB06D20616E676568616C74656E210A005BB5 +S315E0611AC0335D5B4C65696465722070617373656EE5 +S315E0611AD0206B65696E65204F72646E6572206D6517 +S315E0611AE0687220696E206461737C616B7475656C84 +S315E0611AF06C65205665727A656963686E69732E20D6 +S315E0611B00496E666F726D6174696F6E656E20816232 +S315E0611B1065727C646965206D61782E20416E7A61BB +S315E0611B20686C20766F6E2076657273636861636850 +S315E0611B3074656C74656E204F72642D7C6E65726E31 +S315E0611B402062697474652064657220446F6B756D9B +S315E0611B50656E746174696F6E20656E746E65686DCD +S315E0611B60656E2E5D5B416262727563685D004572AA +S315E0611B707A657567743A20205F5F2D5F5F2D5F5FE1 +S315E0611B8020200020206E616368204772949E652064 +S315E0611B9020202020075A004E414D454E534B4F4E73 +S315E0611BA0464C494B54204245494D204B4F5049459F +S315E0611BB052454E005A756C65747A74206765846E19 +S315E0611BC0646572743A20205F5F2F5F5F2F5F5F000D +S315E0611BD0536965686520646F632F6C6963656E73CD +S315E0611BE0652E74787420668172206D656872006610 +S315E0611BF081722064656E206E6575656E204F7264D4 +S315E0611C006E657220616E676562656E2E004C657306 +S315E0611C102F5363687265696200564F5245494E5368 +S315E0611C2054454C4C554E47454E00446F7070656C5B +S315E0611C306B6C69636B726174653A002020566F72F2 +S315E0611C4065696E7374656C6C756E67656E2E2E2E46 +S315E0611C5000506172616D657465723A20205F5F5F05 +S315E0611C605F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F3D +S315E0611C705F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F2D +S315E0611C805F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F1D +S315E0611C905F00426F6F742D5A656974004B4F50490E +S315E0611CA0455245204F52444E4552202F20444154DF +S315E0611CB04549454E00202053696368657265204455 +S315E0611CC065736B746F7020202020202020202020F7 +S315E0611CD0200756002020416C7320546578742020DB +S315E0611CE02007530042696C6473636869726D2061B1 +S315E0611CF0620047454D2053746172742D4469736B7C +S315E0611D00657474652065696E6C6567656E004C41E6 +S315E0611D1055465745524B532D494E464F524D4154C8 +S315E0611D20494F4E006B6C69636B656E20756E64201E +S315E0611D3064616E6E2064656E206E616368666F6C69 +S315E0611D4067656E64656E0042797465732062656C81 +S315E0611D506567743A20205F5F5F5F5F5F5F5F5F5FCC +S315E0611D60005B325D5B446965736520416E77656EE4 +S315E0611D7064756E67206B616E6E206B65696E65205A +S315E0611D80446174656E20766F6E7C4C6175667765CD +S315E0611D90726B2025633A206C6573656E2E20204454 +S315E0611DA06173204D656469756D206D7573737C66CD +S315E0611DB06F726D617469657274207365696E2C20EA +S315E0611DC0646173204C6175667765726B206D7573BE +S315E0611DD073205374726F6D7C686162656E20756E97 +S315E0611DE064206573206D75737320616E2064656E22 +S315E0611DF020436F6D70757465727C616E6765736340 +S315E0611E00686C6F7373656E207365696E2E5D5B4199 +S315E0611E106262727563687C4E6F63686D616C5D006A +S315E0611E2020204465736B746F702D496E666F2E2E3C +S315E0611E302E202020004162627275636800626974D7 +S315E0611E40746520617566204E6575656E204F7264B6 +S315E0611E506E6572206F646572206461732049636F99 +S315E0611E606E005B315D5B4F72646E65722C20446F10 +S315E0611E706B756D656E746520756E642050726F6703 +S315E0611E8072616D6D65206B946E6E656E7C6E696375 +S315E0611E906874206175662064656D204465736B7452 +S315E0611EA06F7020616267656C6567742077657264DF +S315E0611EB0656E2E7C53746174742064657373656EAC +S315E0611EC0206B946E6E656E20736965206175662020 +S315E0611ED065696E204C6175662D7C7765726B206BEA +S315E0611EE06F7069657274206F64657220696E2064D3 +S315E0611EF0656E204D816C6C65696D65727C67657731 +S315E0611F006F7266656E2077657264656E2E5D5B20C5 +S315E0611F10204F4B20205D005B315D5B45732069732B +S315E0611F2074206E6963682067656E756720667265A1 +S315E0611F306965722053706569636865727C766572FE +S315E0611F406681676261722C20756D2064696573656F +S315E0611F5020416E77656E64756E67207A757C6B6F0E +S315E0611F606E6669677572696572656E2E20556D205C +S315E0611F70506C61747A207A75207363686166666510 +S315E0611F806E2C7C6D7573732065696E6520766F72F4 +S315E0611F9068616E64656E6520416E77656E64756EC7 +S315E0611FA067207769656465727C656E746665726E75 +S315E0611FB0742077657264656E2E5D5B20204F4B20E1 +S315E0611FC0205D002020496E7374616C6C6965726591 +S315E0611FD0204C6175667765726B2E2E2E00556D20ED +S315E0611FE065696E656E206E6575656E204F72646EAD +S315E0611FF0657220616E7A756C6567656E2C20005B33 +S315E0612000335D5B444F532D4665686C6572202325CD +S315E0612010642E5D5B416262727563685D004E616DFF +S315E0612020653A20205F5F5F5F5F5F5F5F2E5F5F5F47 +S315E0612030004B6F7069657262657374847469677504 +S315E06120406E673F004350552D547970005B315D5B9F +S315E0612050446572204D816C6C65696D6572206B615A +S315E06120606E6E206E6963687420696E7C65696E6503 +S315E06120706D2046656E7374657220616267656C6535 +S315E061208067742077657264656E2E5D5B20204F4BC9 +S315E061209020205D005B315D5B446173206175736730 +S315E06120A0657784686C7465204C6175667765726B7B +S315E06120B0206578697374696572747C6E6963687446 +S315E06120C02E204269747465204C6175667765726B22 +S315E06120D0736275636873746162656E7C6E6F636803 +S315E06120E06D616C208162657270728166656E2E5D6E +S315E06120F05B416262727563685D004E65696E00415F +S315E06121006E00506C6174746500536F756E642D4535 +S315E06121106666656B74653A0041747472696275747A +S315E0612120653A004C6175667765726B736B656E6E69 +S315E0612130756E673A20205F3A004D656E8173206166 +S315E06121406E7A656967656E206265693A005B335DE3 +S315E06121505B496D2047454D206973742065696E2042 +S315E06121604665686C657220617566676574726574EB +S315E0612170656E2E7C42697474652065696E656E2054 +S315E06121804665686C65722D426572696368747C61E7 +S315E06121906E2064617320456D75544F5320546561BB +S315E06121A06D2073636869636B656E2E5D5B41626228 +S315E06121B0727563685D004D656469656E2D4C61623B +S315E06121C0656C3A20205F5F5F5F5F5F5F5F5F5F5F68 +S315E06121D0005A75206C94736368656E64652044612A +S315E06121E0746569656E3A205F5F5F5F004772949ED2 +S315E06121F06520696E2042797465733A20205F5F5F7E +S315E06122005F5F5F5F5F5F5F004C6175667765726BAD +S315E061221065005B315D5B44657220526563686E653E +S315E06122207220686174206E696368742067656E7593 +S315E0612230672053706569636865727C756D20646952 +S315E0612240652067657784686C746520416E77656E35 +S315E061225064756E67207A75207374617274656E2E2B +S315E06122605D5B20204F4B20205D0020204B6F6E662A +S315E0612270696775726965726520416E77656E6475C9 +S315E06122806E672E2E2E20074100416E77656E64756E +S315E06122906E67005B335D5B46616C736368652046C0 +S315E06122A0756E6B74696F6E736E756D6D6572202395 +S315E06122B05D5B416262727563685D005B335D5B4481 +S315E06122C0696573657220526563686E6572206861DF +S315E06122D074206E696368742067656E7567205370F4 +S315E06122E06569636865727C756D2064656E204745D6 +S315E06122F04D2D4465736B746F70207A7520737461CC +S315E06123007274656E2E5D5B204162627275636820F0 +S315E06123105D004C9953434845204F52444E45522007 +S315E06123202F204441544549454E004F52444E455253 +S315E06123302D494E464F524D4154494F4E0044442D2E +S315E06123404D4D2D5959004E616D6520646572204B86 +S315E06123506F7069653A20205F5F5F5F5F5F5F5F2EE9 +S315E06123605F5F5F00496E7374616C6C696572656E1F +S315E0612370009A6265727363687265696262657374B5 +S315E061238084746967756E673F004672656965732037 +S315E06123904661737452414D00446174756D73666F45 +S315E06123A0726D61743A009946464E4520414E5745F5 +S315E06123B04E44554E47005B325D5B44696520416E34 +S315E06123C077656E64756E67206B616E6E20646173AE +S315E06123D020676577816E73636874657C446F6B753E +S315E06123E06D656E74206F6465722064656E204F72F0 +S315E06123F0646E6572206E696368747C66696E646535 +S315E06124006E2E2042697474652064656E204E616D3E +S315E0612410656E208162657270728166656E2E5D5B46 +S315E061242020204F4B20205D004E7572204C65736510 +S315E06124306E00416B7475656C6C6572204E616D659D +S315E06124403A20205F5F5F5F5F5F5F5F2E5F5F5F0088 +S315E06124505B335D5B4D616E206B616E6E206E6963B1 +S315E061246068742065696E656E208162657267656F05 +S315E061247072646E6574656E7C4F72646E65722069B6 +S315E06124806E2065696E656E207365696E657220752D +S315E06124906E74657267656F72646E6574656E7C4F46 +S315E06124A072646E6572206B6F70696572656E2E5DC2 +S315E06124B05B20204F4B20205D005B335D5B4C6569A3 +S315E06124C06465722069737420646572204E616D651E +S315E06124D02064657320616B7475656C6C656E7C56A2 +S315E06124E065727A656963686E6973736573207A7517 +S315E06124F0206C616E672E2020496E666F726D617425 +S315E0612500696F6E656E7C8162657220646965206D56 +S315E06125106178696D616C65204C846E676520766F64 +S315E06125206E2044617465696E616D656E7C62697425 +S315E061253074652064657220446F6B756D656E746158 +S315E061254074696F6E20656E746E65686D656E2E5D1D +S315E06125505B2020204F4B2020205D0049636F6E2D6C +S315E06125605479703A003132205374642E005B315DE8 +S315E06125705B4465722047454D2D4465736B746F709E +S315E061258020686174206B65696E652077656974653D +S315E061259072656E7C46656E73746572206D65687290 +S315E06125A0207A757220566572668167756E672E2030 +S315E06125B04265766F722065696E7C7765697465726E +S315E06125C06573204C6175667765726B2062656E75C1 +S315E06125D0747A742077657264656E206B616E6E2CB9 +S315E06125E07C6D7573732065696E206F6666656E6571 +S315E06125F0732046656E737465722067657363686C94 +S315E06126006F7373656E7C77657264656E2E5D5B2054 +S315E0612610204F4B20205D004469736B6574746500DF +S315E0612620204465736B2000456D75544F5320456EAC +S315E0612630747769636B6C65722D5465616D005A756B +S315E0612640206B6F70696572656E646520446174655F +S315E061265069656E3A20205F5F5F5F00204461746563 +S315E0612660692000256C6420427974657320696E2067 +S315E06126702564204461746569656E2E00416E7765F7 +S315E06126806E64756E67736E616D653A20205F5F5F3C +S315E06126905F5F5F5F5F2E5F5F5F004E6575657220AE +S315E06126A04F72646E65720048616C7465203C537468 +S315E06126B072673E203D206F686E65204155544F2F0D +S315E06126C0414343002020496E666F2F8E6E646572CA +S315E06126D06E2E2E2E20200749004261736965726570 +S315E06126E06E6420617566205175656C6C656E2076E9 +S315E06126F06F6E005B315D5B45696E65204461746553 +S315E061270069206D69742064696573656D204E616DDC +S315E0612710656E206578697374696572747C736368E4 +S315E06127206F6E20696E2064696573656D204F7264B2 +S315E06127306E6572206F6465722064696520446174B8 +S315E061274065697C697374206E696368742062657318 +S315E06127506368726569626261722E2042656E757444 +S315E06127607A65206461737C22496E666F2F556D626E +S315E0612770656E656E6E656E22204B6F6D6D616E6422 +S315E06127806F20756D2064656E7C44617465692D5357 +S315E06127907461747573207A7520846E6465726E2EC9 +S315E06127A05D5B20204F4B20205D004469616C6F6763 +S315E06127B02061757366816C6C656E20756E642065EB +S315E06127C0696E656E204E616D656E003234205374BC +S315E06127D0642E0020206E6163682054797020202089 +S315E06127E020202020075000416E77656E64756E6724 +S315E06127F0732D547970656E3A004B6C69636B004476 +S315E06128006F6B756D656E742D547970656E3A0044C3 +S315E06128107281636B65202743272066817220646934 +S315E061282065204B6F6E736F6C65004C61756677659D +S315E0612830726B736B656E6E756E673A20205F0041F1 +S315E06128407573004E45554552204F52444E455200F0 +S315E0612850202053746172746520456D75434F4E2037 +S315E061286020205E5A004B4F4E4649475552494552E4 +S315E06128704520414E57454E44554E4700202041750F +S315E0612880666C9473756E6720846E6465726E2020E3 +S315E061289020202020202020200743004672656965BC +S315E06128A0732053542D52414D002020466F726D6165 +S315E06128B074696572656E2E2E2E0020204C947363CA +S315E06128C068656E2E2E2E20202020202007440020D1 +S315E06128D0205363686C69659E65004D6178696D61D9 +S315E06128E06C65722053706569636865723F004A6121 +S315E06128F0002020416C732049636F6E732020202095 +S315E0612900202007530047454D444F532D4C61756672 +S315E06129107765726B65004E455545204F52444E458D +S315E0612920522D494E464F524D4154494F4E005A75CC +S315E0612930206B6F70696572656E6465204F72646E57 +S315E061294065723A20205F5F5F5F0044415445492DDF +S315E0612950494E464F524D4154494F4E202F20554DD9 +S315E061296042454E454E4E454E005B335D5B466F726A +S315E06129706D6174696572656E206C947363687420C9 +S315E0612980616C6C6520496E666F726D6174696F6EBC +S315E0612990656E7C6175662064656D204D65646975FB +S315E06129A06D20696E204C6175667765726B20256373 +S315E06129B03A2E7C447281636B65204F4B206E757253 +S315E06129C02064616E6E2C2077656E6E20616C6C653D +S315E06129D073206175667C64696573656D204D6564B8 +S315E06129E069756D2067656C94736368742077657249 +S315E06129F064656E20646172662E5D5B20204F4B20BC +S315E0612A00207C416262727563685D00204F70746913 +S315E0612A106F6E656E2000416E7A61686C20646572E6 +S315E0612A20204F72646E65723A20202020205F5F5FDE +S315E0612A305F5F004155535741484C005B325D5B4CEB +S315E0612A406175667765726B2025633A20616E74778E +S315E0612A506F72746574206E696368742E20204573A5 +S315E0612A60206D7573737C64657220726963687469DD +S315E0612A706765204D656469656E7479702076657207 +S315E0612A8077656E6465742077657264656E2E7C57D2 +S315E0612A90656E6E206573207369636820756D206568 +S315E0612AA0696E656E2046657374706C617474656E8B +S315E0612AB02D4665686C65727C68616E64656C742CC4 +S315E0612AC020626974746520646965204B6162656C36 +S315E0612AD02070728166656E2E5D5B416262727563BE +S315E0612AE0687C4E6F63686D616C5D005B335D5B4214 +S315E0612AF065696D20447281636B656E20766F6E20C9 +S315E0612B004F4B2077657264656E20616C6C6520441D +S315E0612B106174656E7C6175662064656D204D656482 +S315E0612B2069756D20696E204C6175667765726B209B +S315E0612B3025633A2067656C94736368742E7C536F82 +S315E0612B406E73742062697474652041626272756342 +S315E0612B506820647281636B656E2E5D5B20204F4BEE +S315E0612B6020207C416262727563685D005B315D5B0A +S315E0612B70446572204D816C6C65696D6572206B612F +S315E0612B806E6E207A776172206175662064656D7C10 +S315E0612B904465736B746F7020756D68657267657394 +S315E0612BA063686F62656E2077657264656E2C20611D +S315E0612BB06265727C6572206B616E6E206E696368B8 +S315E0612BC074206175662065696E656D20616E646508 +S315E0612BD072656E20496B6F6E7C616267656C656775 +S315E0612BE0742077657264656E2E5D5B20204F4B20A5 +S315E0612BF0205D00456E746665726E656E0041757343 +S315E0612C007761686C3A202020205F5F5F5F5F5F5F7E +S315E0612C105F2E5F5F5F005B315D5B44617320617571 +S315E0612C207367657784686C746520446F6B756D65F1 +S315E0612C306E7420697374206B65696E65727C416E32 +S315E0612C4077656E64756E6720766F6D205479702056 +S315E0612C50686572207A7567656F72646E65742E7CDD +S315E0612C6042656E75747A6520646173204B6F6D6D34 +S315E0612C70616E646F20224B6F6E6669677572696516 +S315E0612C8072657C416E77656E64756E672220756DDF +S315E0612C902064656E20446F6B756D656E74656E2D2F +S315E0612CA05479702065696E65727C416E77656E6494 +S315E0612CB0756E67207A757A756F72646E656E2E5D74 +S315E0612CC05B20204F4B20205D004D656469656E2D6C +S315E0612CD05479703A005B325D5B4461732041757390 +S315E0612CE0676162652D476572847420656D7066847F +S315E0612CF06E6774206B65696E6520446174656E2EDE +S315E0612D007C566F722065726E657574656D20566569 +S315E0612D107273756368206269747465207369636848 +S315E0612D2065722D7C7374656C6C656E2C2064617361 +S315E0612D3073206573205374726F6D206861742C2003 +S315E0612D40616E6765736368616C7465747C6973747D +S315E0612D5020756E6420506170696572206861742EB9 +S315E0612D605D5B416262727563687C4E6F63686D61DB +S315E0612D706C5D005B315D5B4475206B616E6E737497 +S315E0612D80206E696368742064656E204F72646E6557 +S315E0612D9072206C94736368656E2C7C696E206465E1 +S315E0612DA06D20447520676572616465206172626554 +S315E0612DB069746573742E5D5B20204F4B20205D0046 +S315E0612DC05B335D5B556D20646965204465736B7447 +S315E0612DD06F702D45696E7374656C6C756E67656E43 +S315E0612DE0207A75207369636865726E2C7C6C6567A1 +S315E0612DF06520646965204465736B746F702D446901 +S315E0612E00736B2065696E20696E204C6175667765C6 +S315E0612E10726B20413A7C65696E20756E64206B6CDD +S315E0612E2069636B6520617566204F4B2E7C4B6C69DF +S315E0612E30636B652061756620416262727563682CB9 +S315E0612E4020756D206469652045696E7374656C6C87 +S315E0612E50756E67656E7C6E69636874207A752073DA +S315E0612E606F636865726E2E5D5B20204F4B20207C20 +S315E0612E70416262727563685D005B315D5B4B616E99 +S315E0612E806E2064617320464F524D41542D50726FEE +S315E0612E906772616D6D206E696368742066696E64E0 +S315E0612EA0656E2E7C426569207A77656920466C6F2E +S315E0612EB07070792D4C6175667765726B656E2062AF +S315E0612EC06974746520766F6E206465727C444F53D5 +S315E0612ED02D4469736B657474652061757320666FE3 +S315E0612EE0726D6174696572656E2E204973742065D1 +S315E0612EF0696E657C46657374706C61747465207621 +S315E0612F006F7268616E64656E2C20626974746520A7 +S315E0612F10464F524D41542E5052477C696E20646152 +S315E0612F2073206F626572737465205665727A65693E +S315E0612F3063686E6973206B6F70696572656E2E5D2D +S315E0612F405B4F4B5D004B65696E204B6C69636B0053 +S315E0612F505B315D5B496E2064656E204D816C6C65AD +S315E0612F60696D6572206B946E6E656E204C617566F7 +S315E0612F707765726B652C7C4F72646E65722C20444A +S315E0612F806F6B756D656E7465206F646572205072E6 +S315E0612F906F6772616D6D657C7665727363686F622A +S315E0612FA0656E2077657264656E2C20756D20736938 +S315E0612FB06520454E44479A4C5449477C7A75206C66 +S315E0612FC094736368656E215D5B20204F4B20205DC5 +S315E0612FD000494E5354414C4C49455245204C41556C +S315E0612FE0465745524B005A75206C94736368656E1B +S315E0612FF06465204F72646E65723A20205F5F5F5F41 +S315E0613000005B325D5B44696520446174656E206195 +S315E06130107566204C6175667765726B2025633A202B +S315E061302073696E64206576746C2E7C646566656B27 +S315E0613030742E204573206D75737320646965207203 +S315E0613040696368746967652041727420766F6E7C26 +S315E06130504469736B657474652076657277656E64D1 +S315E061306065742077657264656E20627A772E206476 +S315E061307069657C46657374706C61747465206D75A1 +S315E06130807373207269636874696720616E676573DB +S315E061309063686C6F7373656E7C7365696E2E5D5B79 +S315E06130A0416262727563687C4E6F63686D616C5D87 +S315E06130B00020205363686C69659E652046656E7382 +S315E06130C0746572005B335D5B4465722047454D20F4 +S315E06130D04465736B746F70206B616E6E20646965B5 +S315E06130E0204461746569656E7C4445534B4C4F2E53 +S315E06130F049434E2C204445534B48492E49434E2C77 +S315E0613100206F646572204445534B544F502E494EAF +S315E0613110467C6E6963687420696D20537563682DBA +S315E0613120506661642066696E64656E2E7C4469658D +S315E06131307365204461746569656E2077657264655F +S315E06131406E20756E626564696E67742062656E9401 +S315E0613150746967747C756D2064656E2047454D20A2 +S315E06131604465736B746F70207A752062656E7574F1 +S315E06131707A656E2E5D5B416262727563685D004180 +S315E06131806E7A61686C206465722044617465696514 +S315E06131906E3A20205F5F5F5F5F00456D75544F5308 +S315E06131A020697374206C697A656E736965727420DF +S315E06131B0756E746572206465722047504C005B31B0 +S315E06131C05D5B446965736573204D656469756D2002 +S315E06131D0686174206E696368742067656E756720DF +S315E06131E0506C61747A7C66817220616C6C65207A60 +S315E06131F075206B6F70696572656E64656E2044619A +S315E061320074656E2E7C45696E6967652073696E6467 +S315E06132102061626572206576656E7475656C6C2099 +S315E0613220617566206461737C4D656469756D206B5B +S315E06132306F706965727420776F7264656E2E5D5B1F +S315E061324020204F4B20205D0020416E7A65696765DD +S315E0613250200048616C7465203C416C743E203D20E1 +S315E06132606B65696E6520486172646469736B0020A1 +S315E0613270206E61636820446174756D202020202092 +S315E06132800754004D4D2D44442D595900202099662F +S315E0613290666E656E005A6569742D466F726D61740E +S315E06132A03A0020206E616368204E616D656E202074 +S315E06132B0202020074E00202053746F7070652053E4 +S315E06132C0797374656D2020205E5100526563686E86 +S315E06132D06572004769622064656E204E616D656E58 +S315E06132E020646573207A75209466666E656E6465A2 +S315E06132F06E20446F6B756D656E74657300416E77B4 +S315E0613300656E64756E6720616E2E005B335D5B553D +S315E06133106D2064656E204465736B746F70207A7599 +S315E0613320207374617274656E206269747465206479 +S315E061333069657C47454D204445534B544F50204485 +S315E061334069736B657474652065696E6C6567656ED6 +S315E061335020756E642064616E6E7C4F4B206F646590 +S315E06133607220456E74657220647281636B656E2E40 +S315E0613370204162627275636820647281636B656E17 +S315E06133802C7C756D207A7520444F53207A75728155 +S315E0613390636B7A756B656872656E2E5D5B20204F37 +S315E06133A04B20207C416262727563685D00446F6B9D +S315E06133B0756D656E746500427974657320667265D4 +S315E06133C0693A20205F5F5F5F5F5F5F5F5F5F005BC2 +S315E06133D0325D5B4D656469756D20696E204C617522 +S315E06133E0667765726B2025633A206B616E6E206E3F +S315E06133F0696368747C626573636872696562656EE8 +S315E06134002077657264656E2120566F722064656D02 +S315E06134107C6E8463687374656E20566572737563DA +S315E06134206820626974746520536368726569627362 +S315E0613430636875747A7C656E746665726E656E20B6 +S315E06134406F646572204D656469756D207765636843 +S315E061345073656C6E2E5D5B416262727563687C4E0C +S315E06134606F63686D616C5D005B315D5B44657220C5 +S315E06134704D816C6C65696D6572206B616E6E206EF7 +S315E0613480696368742067659466666E65747C776562 +S315E06134907264656E2E20556D2065696E656E204F8E +S315E06134A072646E6572206F6465722065696E657CB3 +S315E06134B04461746569207A75206C94736368656E9E +S315E06134C02C2065696E666163682064617320656E50 +S315E06134D0742D7C737072656368656E64652053797B +S315E06134E06D626F6C206175662064656E204D816CDE +S315E06134F06C65696D65727C7A696568656E2E5D5B22 +S315E061350020204F4B20205D005B325D5B4573206779 +S315E061351069627420626572656974732065696E6556 +S315E06135206E204F72646E6572206D69747C64696544 +S315E061353073656D204E616D656E206F6465722064A2 +S315E06135406173204D656469756D2069737420766F6A +S315E06135506C6C2E7C56657273756368652065696E01 +S315E0613560656E20616E646572656E204E616D656E35 +S315E0613570206F64657220647281636B657C4162620F +S315E06135807275636820756E64207072816665206409 +S315E0613590656E2066726569656E20506C61747A2E1F +S315E06135A05D5B2041626272756368207C204E6F6369 +S315E06135B0686D616C205D004C9473636862657374D9 +S315E06135C084746967756E673F0049636F6E2D4C6100 +S315E06135D062656C3A20205F5F5F5F5F5F5F5F5F5F41 +S315E06135E05F5F00426974746520466C6F7070792024 +S315E06135F0656E746E65686D656E2C2064616E6E20B5 +S315E061360052455455524E20647281636B656E00502B +S315E0613610726F6A6563742D49642D56657273696F5D +S315E06136206E3A2066690A504F542D4372656174693A +S315E06136306F6E2D446174653A20323030332D303807 +S315E06136402D32382032323A34312B303230300A5032 +S315E06136504F2D5265766973696F6E2D446174653A73 +S315E061366020323030352D31302D30322032333A311F +S315E0613670342B303330300A4C6173742D5472616E81 +S315E0613680736C61746F723A204565726F2054616D37 +S315E06136906D696E656E203C6565726F744073663EFA +S315E06136A00A4C616E67756167652D5465616D3A2097 +S315E06136B053756F6D690A4D494D452D56657273694E +S315E06136C06F6E3A20312E300A436F6E74656E742DDB +S315E06136D0547970653A20746578742F706C61696E9F +S315E06136E03B20636861727365743D49534F2D383889 +S315E06136F035392D310A436F6E74656E742D5472617E +S315E06137006E736665722D456E636F64696E673A20A6 +S315E0613710386269740A582D47656E657261746F72B5 +S315E06137203A204B426162656C20312E332E310A506C +S315E06137306C7572616C2D466F726D733A20206E7096 +S315E06137406C7572616C733D323B20706C7572616C45 +S315E06137503D286E20213D2031293B0A005B315D5BCE +S315E0613760536F76656C6C756B73656C6C61206569BE +S315E0613770206F6C6520726969747484768473746988 +S315E06137807C74696C616120757564656C6C652064D7 +S315E06137906F6B756D656E74696C6C652E2020546512 +S315E06137A0657C74696C61612073756C6B656D616C68 +S315E06137B06C6120646F6B756D656E7469742C7C6A7F +S315E06137C06F6974612065742074617276697473657A +S315E06137D02E5D5B20204F4B20205D002020557573C8 +S315E06137E069206B616E73696F2E2E2E004B616E736D +S315E06137F0696F6E206E696D693A20205F5F5F5F5F1A +S315E06138005F5F5F2E5F5F5F0061766174612C20743C +S315E0613810616920616E6E6120706172616D6574725D +S315E0613820656A612C005379737465656D6920707999 +S315E06138307384797465747479210A005B335D5B56D0 +S315E0613840616C6974657474617661737469206574B9 +S315E061385020766F69206C69738474847C75736561A5 +S315E06138606D706961206B616E73696F697461206EF9 +S315E0613870796B796973656E2073697384846E2E7C66 +S315E0613880446F6B756D656E74616174696F207365A4 +S315E06138906C69747484842072616A6F6974756B7320 +S315E06138A065747C6B616E73696F696C6C65206B6165 +S315E06138B06E73696F6964656E20736973846C6C8419 +S315E06138C02E5D5B4B756D6F615D004C756F74753A1E +S315E06138D020205F5F2D5F5F2D5F5F200020204B6FB3 +S315E06138E06B6F2020202020202020202020075A00F6 +S315E06138F04E494D494B4F4E464C494B5449204B4FEF +S315E061390050494F494E4E494E2041494B414E410047 +S315E06139105669696D656B7369206D757574657474E7 +S315E0613920753A20205F5F2F5F5F2F5F5F004C6973A1 +S315E061393084746965646F742C206B6174736F206441 +S315E06139406F632F6C6963656E73652E747874006A54 +S315E06139506F6E6B612068616C756174206C756F6404 +S315E0613960612E004C75652F4B69726A2E004D8E8E05 +S315E06139705249548E2041534554554B534554005456 +S315E061398075706C616B6C696B6B6175736E6F70652D +S315E061399075733A0020204D84847269748420617362 +S315E06139A06574756B7365742E2E2E00506172616D50 +S315E06139B065747269743A20205F5F5F5F5F5F5F5F26 +S315E06139C05F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5FC0 +S315E06139D05F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5FB0 +S315E06139E05F5F5F5F5F5F5F5F5F5F5F5F004B8479D4 +S315E06139F06E6E697374797361696B61004B4F50499F +S315E0613A004F494E204B414E53494F54202F20544944 +S315E0613A1045444F53544F5400202054616C6C657497 +S315E0613A206120747994709479748420202020202018 +S315E0613A302020202007560020204E8479748420744B +S315E0613A40656B7374696E842020202007530052757C +S315E0613A507564756E20616C6B75005379947484201E +S315E0613A6047454D20616C6F697475732D6C65767928 +S315E0613A706B65004C4556594E20544945444F5400B8 +S315E0613A80696B6F6E69696E206A612074847974848A +S315E0613A9020696C6D657374797684206469616C6F95 +S315E0613AA067690054617675613A205F5F5F5F5F5F6A +S315E0613AB05F5F5F5F005B325D5B536F76656C6C7514 +S315E0613AC073206569207079737479206C756B656DA7 +S315E0613AD061616E206173656D617373617C25633AC3 +S315E0613AE0206F6C6576696120746965746F6A612EB1 +S315E0613AF020204C6576796B6B65656E7C7069748444 +S315E0613B0084206F6C6C6120666F726D61746F69742D +S315E0613B10752C206173656D616E2070697484847C37 +S315E0613B206F6C6C61207084846C6C84206A61206641 +S315E0613B30797973697365737469206C69697465749D +S315E0613B4074797C746965746F6B6F6E656573656551 +S315E0613B5073692E5D5B4B756D6F617C557564656CE4 +S315E0613B606C65656E5D0020204F686A656C6D61739A +S315E0613B7074612E2E2E202020004B756D6F610069D9 +S315E0613B806B6B756E61616E2C207475706C612D6BFB +S315E0613B906C696B6B61612055757369204B616E73FE +S315E0613BA0696F005B315D5B457420766F6920766590 +S315E0613BB0748484206B616E73696F6974612C20749F +S315E0613BC06965646F73746F6A617C74616920736F30 +S315E0613BD076656C6C756B73696120747994709479B0 +S315E0613BE064846C6C652E2020566F69747C6B756994 +S315E0613BF074656E6B696E206B6F70696F6964612065 +S315E0613C006E69697484206C657679696C6C657C74BF +S315E0613C106169207665748484206E6520726F736B4A +S315E0613C20616B6F7269696E2E5D5B20204F4B202060 +S315E0613C305D005B315D5B54846D846E20736F766588 +S315E0613C406C6C756B73656E206D8484726974796B67 +S315E0613C507365656E206569206F6C657C72696974F0 +S315E0613C60748476847374692074696C61612E202032 +S315E0613C705661706175747461616B736573697C7447 +S315E0613C80696C61612C2073696E756E2070697484EC +S315E0613C908420706F6973746161206A6F6B696E7C91 +S315E0613CA074846C6C84206865746B656C6C84206D5F +S315E0613CB08484726974657479697374847C736F766C +S315E0613CC0656C6C756B73697374612E5D5B20204FF7 +S315E0613CD04B20205D0020204D848472697484206CC1 +S315E0613CE06576796173656D612E2E2E004C756F6414 +S315E0613CF0616B7365736920757564656E206B616E62 +S315E0613D0073696F6E206E796B79697365656E005B59 +S315E0613D10335D5B444F532D76697268652023256474 +S315E0613D202E5D5B4B756D6F615D004E696D693A2025 +S315E0613D30205F5F5F5F5F5F5F5F2E5F5F5F00566122 +S315E0613D40687669737461206B6F70696F696E7469A7 +S315E0613D503A00456D75544F532076657273696F000D +S315E0613D604350552D747979707069005B315D5B45BF +S315E0613D707420766F6920766574848420726F736BC4 +S315E0613D80616B6F7269617C696B6B756E61616E2E79 +S315E0613D905D5B20204F4B20205D005B315D5B416EBA +S315E0613DA074616D61617369206173656D61612065DF +S315E0613DB069206F6C652E20205461726B6973746142 +S315E0613DC07C616E74616D617369206173656D616E4D +S315E0613DD02074756E6E75732E5D5B4B756D6F615D8F +S315E0613DE0004569005084846C6C84004B6F76616C2D +S315E0613DF0657679008E846E696566656B7469743A19 +S315E0613E00004F6D696E61697375756465743A0041F9 +S315E0613E1073656D616E2074756E6E75733A20205FA1 +S315E0613E203A004D656E756A656E2061756B616973A1 +S315E0613E30753A005B335D5B47454D2D766972686522 +S315E0613E402E20204F74612079687465797474847C5E +S315E0613E50456D75544F532D6B6568697474846A69F1 +S315E0613E60696E206A6120616E6E617C7669726865F1 +S315E0613E707261706F727474692E5D5B4B756D6F61A3 +S315E0613E805D004C6576796E206E696D693A20205FDA +S315E0613E905F5F5F5F5F5F5F5F5F5F00546965646F30 +S315E0613EA073746F6A6120706F697374657474617637 +S315E0613EB0616E613A205F5F5F5F004B6F6B6F20748D +S315E0613EC0617675697373613A20205F5F5F5F5F5FFB +S315E0613ED05F5F5F5F004C6576796173656D61743ACA +S315E0613EE0005B315D5B4B6F6E656573736173692012 +S315E0613EF06569206F6C652072696974748476847310 +S315E0613F0074697C6D7569737469612076616C6974D5 +S315E0613F1073656D61736920736F76656C6C756B73D0 +S315E0613F20656E7C6B84796E6E697374796B73656546 +S315E0613F306E2E5D5B20204F4B20205D0020204D845E +S315E0613F40847269748420736F76656C6C75732E2EDA +S315E0613F502E20202020202020074100736F76656C9B +S315E0613F606C7573005B335D5B54756E74656D61741E +S315E0613F706F6E2066756E6B74696F6E756D65726F67 +S315E0613F8020235D5B4B756D6F615D005B335D5B4B04 +S315E0613F906F6E65657373617369206569206F6C65C2 +S315E0613FA02072696974748476847374697C6D7569E9 +S315E0613FB0737469612047454D2D7479947094796481 +S315E0613FC0846E7C6B84796E6E697374846D69736576 +S315E0613FD0656E2E5D5B2056616C6974616E205D0075 +S315E0613FE0504F495354414E204B414E53494F542013 +S315E0613FF02F20544945444F53544F54004B414E533F +S315E0614000494F4E20544945444F540050502D4B4B37 +S315E06140102D5656004B6F70696F6E206E696D693A09 +S315E061402020205F5F5F5F5F5F5F5F2E5F5F5F004185 +S315E061403073656E6E61005661687669737461207945 +S315E06140406C696B69726A6F697475733A005661700F +S315E06140506161204661737452414D00508469768492 +S315E061406079733A004156414120534F56454C4C5580 +S315E061407053005B325D5B536F76656C6C757320657F +S315E061408069206C947964842068616B656D69737489 +S315E06140906F61207461697C746965646F73746F6163 +S315E06140A02C206A6F746120797269748474206175F9 +S315E06140B06B61697374612E7C5461726B697374614F +S315E06140C020616E74616D617369206E696D692E5DE3 +S315E06140D05B20204F4B20205D005079738479748496 +S315E06140E0005661696E206C756B75004E796B796906 +S315E06140F06E656E206E696D693A20205F5F5F5F5F16 +S315E06141005F5F5F2E5F5F5F005B335D5B457420766B +S315E06141106F69206B6F70696F696461206B616E7343 +S315E0614120696F74612073656E7C6F6D69696E20611C +S315E06141306C696B616E73696F6968696E2E5D5B2030 +S315E0614140204F4B20205D005B335D5B416E74616D9A +S315E0614150617369206B616E73696F6E206E696D69FB +S315E061416020796C69747484847C73616C6C69747530 +S315E06141706E206D65726B6B696D848472846E2E7C64 +S315E0614180446F6B756D656E74616174696F2073659B +S315E06141906C69747484842072616A6F6974756B7317 +S315E06141A065747C6B616E73696F6964656E206E6957 +S315E06141B06D696C6C652E5D5B4F4B5D00496B6F6E37 +S315E06141C0697479797070693A0031322074756E7408 +S315E06141D06961005B315D5B47454D2074799470940C +S315E06141E07964846C6C6520656920766F6920617598 +S315E06141F06B61697374617C757365616D706961200A +S315E0614200696B6B756E6F6974612E2020456E6E65A4 +S315E06142106E206C6576796E7C61696B6169737561D7 +S315E06142202C2073756C6A65206A6F6B696E20696BA9 +S315E06142306B756E612C7C6A6F7461206574206B842A +S315E06142407974842E5D5B20204F4B20205D004C65A8 +S315E061425076796B650020456D75544F5320002020BB +S315E061426020456D75544F532D6B6568697474846A26 +S315E0614270847400546965646F73746F6A61206B6FEF +S315E061428070696F69746176616E613A20205F5F5F24 +S315E06142905F002041726B6973746F2000256C642046 +S315E06142A07461767561206B8479746574747920259F +S315E06142B06420746965646F73746F6F6E2E00536FFB +S315E06142C076656C6C756B73656E206E696D693A20A7 +S315E06142D0205F5F5F5F5F5F5F5F2E5F5F5F0055756A +S315E06142E07369206B616E73696F003C436E74726CC7 +S315E06142F03E20706F686A61737361203D206F686903 +S315E06143007461204155544F2F4143430020204E8430 +S315E061431079748420746965646F742E2E2E2020076B +S315E06143204900506F686A61757475752047504C2D08 +S315E06143306C846864656B6F6F6469696E3A005B3162 +S315E06143405D5B4B616E73696F737361206F6E206A3B +S315E06143506F20746965646F73746F20616E6E6574E6 +S315E0614360756C6C617C6E696D656C6C842074616979 +S315E0614370207365206F6E206B69726A6F69747573FD +S315E06143802D7C73756F6A617474752E204B847974B4 +S315E0614390842022546965646F742F4E696D65842249 +S315E06143A02D7C6B6F6D656E746F6120766169687483 +S315E06143B061616B736573692073656E2074696C61A5 +S315E06143C0612E5D5B20204F4B20205D00616E746144 +S315E06143D06D616C6C61206E696D69206B616E73698C +S315E06143E06F6C6C652C0032342074756E7469610093 +S315E06143F020205479797070692020202020202020A7 +S315E061440020075000536F76656C6C757374797970BB +S315E061441070693A004B6C696B6B6161005469656404 +S315E06144206F73746F7479797069743A005061696E0B +S315E06144306120274327207084847374846B7365736A +S315E061444069206B6F6E736F6C69696E004173656D40 +S315E0614450616E2074756E6E75733A20205F00506FE1 +S315E061446069730055555349204B414E53494F0020DE +S315E0614470204B84796E6E6973748420456D75434F04 +S315E06144804E205E5A004D8E8E5249548E20534F56C1 +S315E0614490454C4C5553002020566169686461207231 +S315E06144A065736F6C757574696F7461202020202067 +S315E06144B0202007430056617061612053542D5241BB +S315E06144C04D002020416C757374612E2E2E002020E4 +S315E06144D0506F697374612E2E2E20202020202020BB +S315E06144E020074400202053756C6A6500566172614D +S315E06144F061206B6F6B6F206D75697374693F004BFB +S315E0614500796C6C840020204E8479748420696B6FA9 +S315E06145106E65696E612007530047454D444F532DE3 +S315E06145206173656D617400555544454E204B414E4E +S315E061453053494F4E20544945444F54004B616E7385 +S315E0614540696F697461206B6F70696F6974617661B7 +S315E06145506E613A20205F5F5F5F00544945444F5486 +S315E0614560202F20555544454C4C45454E4E494D45C9 +S315E06145708E4D494E454E005B335D5B416C757374A0 +S315E0614580757320706F6973746161204B41494B4B60 +S315E06145904920746965646F747C6173656D61737478 +S315E06145A0612025633A2E20204B6C696B6B6161203B +S315E06145B04F4B3A74617C7661696E206A6F732074E1 +S315E06145C06965746F736920766F696461616E7C6831 +S315E06145D0847669747484842074846C7484206C65D4 +S315E06145E076796C74842E5D5B20204F4B20207C4B6A +S315E06145F0756D6F615D002041736574756B7365748C +S315E0614600200048616B656D6973746F6A613A202059 +S315E06146102020205F5F5F5F5F00544945444F5354FC +S315E06146204F4E2056414C494E5441005B325D5B41F1 +S315E061463073656D612025633A2065692076617374DF +S315E061464061612E202053696E756E20706974848471 +S315E06146507C6B847974748484206F696B65616E7434 +S315E06146607979707069737484206C6576796B657439 +S315E061467074847C6A61206C616974746161207365BC +S315E0614680206173656D61616E206F696B65696E2E20 +S315E061469020204A6F737C6F6E67656C6D61206B6F0E +S315E06146A0736B6565206B6F76616C657679842C20BA +S315E06146B07461726B697374617C73656E206C696930 +S315E06146C074846E6E84742E5D5B4B756D6F617C5523 +S315E06146D0756465737461616E5D005B335D5B4A6FE2 +S315E06146E073206F6C6574207661726D612C206574E0 +S315E06146F074842068616C7561747C706F69737461D0 +S315E061470061204B41494B4B4920746965646F742064 +S315E06147106C6576796C74847C6173656D6173736164 +S315E06147202025633A2C206B6C696B6B6161204F4B82 +S315E06147302E7C4D7575746F696E206B6C696B6B6100 +S315E061474061204B756D6F612E5D5B20204F4B2020A4 +S315E06147507C4B756D6F615D005B315D5B566F697456 +S315E0614760207369697274848420726F736B616B6F95 +S315E061477072696E206D7575616C6C657C47454D201F +S315E061478074799470947964846C6C8473692C206D0B +S315E0614790757474657420746F6973656E7C696B6F2B +S315E06147A06E696E207084846C6C652E5D5B20204F33 +S315E06147B04B20205D00506F697374610056616C69CE +S315E06147C06E74613A202020205F5F5F5F5F5F5F5FAD +S315E06147D02E5F5F5F005B315D5B56616C697473652B +S315E06147E06D61736920746965646F73746F747979E7 +S315E06147F0707069206569206F6C657C61736574654D +S315E0614800747475206D696C6C656B84846E20736FEE +S315E061481076656C6C756B73656C6C652E7C4B8479B7 +S315E0614820748420224D84847269748420736F766502 +S315E06148306C6C757322206B6F6D656E746F617C6CE9 +S315E06148406969747484846B736573692074846D8437 +S315E06148506E20746965646F73746F74797970696E6B +S315E06148607C6A6F686F6E6B696E20736F76656C6C70 +S315E0614870756B7365656E2E5D5B20204F4B20205D09 +S315E0614880005479797070693A005B325D5B205475EA +S315E06148906C6F737475736C61697474656573692043 +S315E06148A06569207661737461616E6F74617C746948 +S315E06148B065746F6A612E205661726D697374612CDD +S315E06148C02065747484206C61697465206F6E7C7098 +S315E06148D084846C6C84206A612C2065747484207392 +S315E06148E069696E84206F6E20706170657269617C42 +S315E06148F0656E6E656E207575747461207972697422 +S315E0614900797374842E5D5B4B756D6F617C557564EF +S315E0614910656C6C65656E5D005B315D5B45742076EB +S315E06149206F6920706F6973746161206B616E736921 +S315E06149306F74612C7C6A6F7461206B8479748474A2 +S315E06149402E5D5B20204F4B20205D005B335D5B5429 +S315E0614950616C6C656E7461616B73657369207479A2 +S315E06149609470947964846E2C206C616974617C477F +S315E0614970454D204445534B544F50202D6C65767917 +S315E06149806B65206173656D61616E20412C206A61A2 +S315E06149907C6B6C696B6B6161204F4B2E20204B6C9D +S315E06149A0696B6B6161204B756D6F612C206A6F730A +S315E06149B07C65742068616C75612074616C6C656E90 +S315E06149C0746161207479947094797484842E5D5BEA +S315E06149D020204F4B20207C4B756D6F615D005B3114 +S315E06149E05D5B464F524D41542D736F76656C6C75C8 +S315E06149F0737461206569206C947964792E20204A0C +S315E0614A006F73206B84797484747C6B6168746120E4 +S315E0614A106C6576796B656173656D61612C2073692F +S315E0614A206E756E2070697484847C616C7573746173 +S315E0614A30617C206C6576796B6B65657420444F5358 +S315E0614A402D6C6576796B6B65656C748473692E7CA8 +S315E0614A504A6F73206B84797484747C206B6F7661A2 +S315E0614A606C657679842C206B6F70696F6920464F2F +S315E0614A70524D41547C73656E206A75757265656EDB +S315E0614A802E5D5B4F4B5D00536969727279005B31F4 +S315E0614A905D5B566F697420766574848420726F738A +S315E0614AA06B616B6F7269696E206C6576796B6B654C +S315E0614AB065742C7C6B616E73696F742C20746965A7 +S315E0614AC0646F73746F74206A6120736F76656C6C62 +S315E0614AD0756B7365742C7C6A6F746B612068616C4D +S315E0614AE075617420706F69737461612050595359AF +S315E0614AF0568E535449215D5B20204F4B20205D004B +S315E0614B004D8E8E5249548E204C4556594153454DF2 +S315E0614B1041004B616E73696F69746120706F69738F +S315E0614B20746574746176616E613A20205F5F5F5F80 +S315E0614B30005B325D5B546965646F74206173656DBA +S315E0614B40617373612025633A206F6C6576616C6C85 +S315E0614B5061206C6576796C6C847C73616174746177 +S315E0614B60766174206F6C6C61207669616C6C6973D7 +S315E0614B7069612E202053696E756E7C7069748484D8 +S315E0614B80206B847974748484206F696B65616E20AF +S315E0614B907479797070697374847C6C6576796B65A8 +S315E0614BA0747484206A61206B6F76616C6576796E68 +S315E0614BB02074617061756B73657373617C6B696930 +S315E0614BC06E6E69747484842073656E206C69697431 +S315E0614BD074696D6574206F696B65696E2E5D5B4B9B +S315E0614BE0756D6F617C557564656C6C65656E5D0050 +S315E0614BF0202053756C6A6520696B6B756E61005B2D +S315E0614C00335D5B47454D206569206C94796484200A +S315E0614C1068616B75706F6C75737461616E7C4445C8 +S315E0614C20534B4C4F2E49434E2C204445534B4849F8 +S315E0614C302E49434E2C207461697C4445534B544F55 +S315E0614C40502E494E4620746965646F73746F6A616C +S315E0614C502E20204E846974847C74617276697461F5 +S315E0614C60616E2047454D2D74799470947964846EB4 +S315E0614C707C6B84796E6E697374846D697365656ED8 +S315E0614C802E5D5B4B756D6F615D00546965646F7335 +S315E0614C90746F6A613A20205F5F5F5F5F00456D75A3 +S315E0614CA0544F536961206C65766974657484846E6A +S315E0614CB02047504C2D6C6973656E7373696C6C84B7 +S315E0614CC0005B315D5B54846C6C84206C6576796CD9 +S315E0614CD06C84206569206F6C65207269697474847F +S315E0614CE076847374697C74696C6161206B61696BEC +S315E0614CF0696C6C6520746965646F696C6C652C20A0 +S315E0614D006A6F6974617C797269748474206B6F709F +S315E0614D10696F6964612E20204A6F6974616B696E9F +S315E0614D207C746965646F73746F69737461207361B0 +S315E0614D30617465747469696E2073696C74697C6B9E +S315E0614D406F70696F6964612E5D5B20204F4B202037 +S315E0614D505D00204A84726A6573748420003C416C0C +S315E0614D60743E20706F686A61737361203D206F687D +S315E0614D70697461206B6F76616C657679002020508D +S315E0614D8084697684797320202020202020200754AE +S315E0614D90004B4B2D50502D565600202041766161D7 +S315E0614DA000416A616E6E84797474943A0020204E93 +S315E0614DB0696D692020202020202020202020074EB8 +S315E0614DC000202050797384797484207379737465D3 +S315E0614DD0656D69205E51004B6F6E65005665727355 +S315E0614DE0696F00416E6E6120646F6B756D656E749F +S315E0614DF0696E206E696D692C206A6F6E6B612068E1 +S315E0614E00616C756174006A6F746B612074846D8422 +S315E0614E1020736F76656C6C757320687976846B73D5 +S315E0614E2079792E005B335D5B4B84796E6E69737461 +S315E0614E3084846B736573692047454D2074799470FA +S315E0614E40947964846E2C7C6C616974612047454D0C +S315E0614E50204445534B544F50202D6C6576796B65F4 +S315E0614E60206173656D61616E7C41206A61206B6C66 +S315E0614E70696B6B6161204F4B207461692070616978 +S315E0614E806E6120456E7465722E7C50616C617461F1 +S315E0614E906B73657369206B6F6D656E746F7269763E +S315E0614EA0696C6C652C7C6B6C696B6B6161204B75B5 +S315E0614EB06D6F612E5D5B20204F4B20207C4B756DC5 +S315E0614EC06F615D00646F6B756D656E7469740054D6 +S315E0614ED06176756A612076617061616E613A202002 +S315E0614EE05F5F5F5F5F5F5F5F5F5F005B325D5B453B +S315E0614EF07420766F69206B69726A6F697474616137 +S315E0614F002025633A206173656D616C6C652C7C6B01 +S315E0614F106F736B61207365206F6E206B69726A6F68 +S315E0614F206974757373756F6A61747475217C506F9A +S315E0614F3069737461206B69726A6F6974757373758D +S315E0614F406F6A61757320656E6E656E7C6B75696E91 +S315E0614F502079726974847420757564656C6C6565B5 +S315E0614F606E2E5D5B4B756D6F617C557564657374B3 +S315E0614F7061616E5D005B315D5B457420766F6920D2 +S315E0614F8061756B616973746120726F736B616B6F6D +S315E0614F9072692D696B6F6E69612E7C506F6973748E +S315E0614FA061616B73657369206C6576796B6B656559 +S315E0614FB06E2C206B616E73696F6E2C7C74696564AF +S315E0614FC06F73746F6E2074616920736F76656C6C54 +S315E0614FD0756B73656E2C20766564847C736520726F +S315E0614FE06F736B616B6F7269696E2E5D5B20204FCB +S315E0614FF04B20205D005B325D5B416E6E6574756E64 +S315E0615000206E696D696E656E206B616E73696F2086 +S315E06150106F6E206A6F7C6F6C656D617373612C2056 +S315E0615020746169206C657679206F6E20748479731A +S315E0615030692E7C5972697484207575747461206E09 +S315E0615040696D65842C20746169204B756D6F617C37 +S315E06150506A61207461726B697374612076617061F3 +S315E061506061206C65767974696C612E5D5B204B7548 +S315E06150706D6F61207C20557564656C6C65656E202D +S315E06150805D00566168766973746120706F697374E7 +S315E06150906F3A00496B6F6E696E206E696D693A2091 +S315E06150A0205F5F5F5F5F5F5F5F5F5F5F5F00506F66 +S315E06150B069737461206C6576796B65206A612070CD +S315E06150C061696E612052455455524E0050726F6A65 +S315E06150D06563742D49642D56657273696F6E3A2006 +S315E06150E0456D75544F5320302E32610A504F542D21 +S315E06150F04372656174696F6E2D446174653A2032FD +S315E06151003030342D30382D30322031333A32302B55 +S315E0615110303230300A504F2D5265766973696F6E61 +S315E06151202D446174653A20323030342D30382D307B +S315E0615130322031333A33312B303230300A4C6173BD +S315E0615140742D5472616E736C61746F723A20426F42 +S315E06151506864616E204D696C6172203C6D696C6159 +S315E0615160726240766F6C6E792E637A3E0A4C616E3E +S315E061517067756167652D5465616D3A20437A65634C +S315E061518068203C6373406C692E6F72673E0A4D49D5 +S315E06151904D452D56657273696F6E3A20312E300A30 +S315E06151A0436F6E74656E742D547970653A207465DB +S315E06151B078742F706C61696E3B20636861727365A8 +S315E06151C0743D49534F2D383835392D320A436F6E68 +S315E06151D074656E742D5472616E736665722D456E7B +S315E06151E0636F64696E673A20386269740A582D475D +S315E06151F0656E657261746F723A204B426162656C8D +S315E061520020302E392E350A005B315D5B5461746F57 +S315E06152102061706C696B616365206E656DE1206428 +S315E06152206F73746174656B2070616DEC7469207085 +S315E0615230726F7C6F746576F8656EED2064616CB94A +S315E0615240ED686F20736F75626F72752E20204B204B +S315E061525075766F6C6EEC6EED2070616DEC74697CE9 +S315E06152607A6176F865746520736F75626F72792C11 +S315E0615270206B746572E9207072E176EC206E657080 +S315E06152806F74F86562756A6574652E5D5B20204FA3 +S315E06152904B20205D0020204E6F76FD2061647265B3 +S315E06152A073E1F82E2E2E004A6DE96E6F206164720D +S315E06152B06573E1F8653A20205F5F5F5F5F5F5F5F1F +S315E06152C02E5F5F5F006E61E874656E206B207A61C8 +S315E06152D064E16EED20706172616D657472F92070E2 +S315E06152E0F8696A6174656C6EFD636800537973741D +S315E06152F0E96D207A6173746176656E210A005B33CC +S315E06153005D5B4C6974756A692C20616C6520646FBC +S315E061531020746F686F746F206164726573E1F8651C +S315E0615320206E656EED7C6D6FBE6EE920756DED7319 +S315E06153307469742076ED636520706F64616472658B +S315E061534073E1F8F92E7C50F865E874EC74652073C6 +S315E06153506920646F6B756D656E74616369206F203A +S315E06153606C696D69746563682070726F7C756D696F +S315E061537073BB6F76E16EED20706F64616472657325 +S315E0615380E1F8F92076206164726573E1F8ED6368AE +S315E06153902E5D5B5A7275B969745D00567974766F84 +S315E06153A0F8656E6F3A20205F5F2D5F5F2D5F5F204E +S315E06153B020002020506F646C6520627974F92020AA +S315E06153C0202020075A004B4F4E464C494B54204A09 +S315E06153D04D454E2042CC48454D204B4F50CD524F26 +S315E06153E056C14ECD00506F736C65646EED207A6D7B +S315E06153F0EC6E613A20205F5F2F5F5F2F5F5F004455 +S315E0615400657461696C792076697A20646F632F6C63 +S315E06154106963656E73652E7478740073652063687D +S315E0615420797374E1746520767974766FF869742EB0 +S315E061543000C874656EED2F7AE1706973004E415371 +S315E0615440544156454ECD00527963686C6F73742052 +S315E061545064766F6A6B6C696B753A0020204E617396 +S315E0615460746176656EED2E2E2E00506172616D650A +S315E06154707472793A20205F5F5F5F5F5F5F5F5F5F56 +S315E06154805F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5FE5 +S315E06154905F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5FD5 +S315E06154A05F5F5F5F5F5F5F5F5F5F00C861732073D0 +S315E06154B07461727475004B4F50CD524F56C14ECDEB +S315E06154C0204144524553C1D8D9202F20504F4C4FEB +S315E06154D0AE454B002020556C6FBE6974206E6173DA +S315E06154E0746176656EED202020202020202020202A +S315E06154F007560020204A616B6F207465787420201E +S315E0615500202020200753005A61E8E174656B206F23 +S315E06155106272617A7500566C6FBE746520737461F0 +S315E061552072746F766163ED206469736B657475207F +S315E061553047454D00494E464F524D414345204F2028 +S315E06155404449534B55004E6F76FD20616472657335 +S315E0615550E1F8206120646F206469616C6F67752C86 +S315E0615560206B746572FD20736500506F75BE69745A +S315E06155706F20627974F93A20205F5F5F5F5F5F5FFA +S315E06155805F5F5F005B325D5B41706C696B61636558 +S315E0615590206E656DF9BE6520E8ED73742064617413 +S315E06155A061207A206469736B757C76206A65646EC6 +S315E06155B06F7463652025633A2E20205A6B6F6E7493 +S315E06155C0726F6C756A74652C207A6461206A657C99 +S315E06155D06469736B206E61666F726DE1746F76E11B +S315E06155E06E2C206A65646E6F746B612070F8697009 +S315E06155F06F6A656E617C6B65207A64726F6A692039 +S315E0615600656E657267696520612066797A69636B43 +S315E0615610792070F869706F6A656E617C6B20706F76 +S315E0615620E8ED7461E8692E5D5B5A7275B969747CFF +S315E06156305A6E6F76755D002020496E666F206F2029 +S315E06156406465736B746F70752E2E2E005A7275B920 +S315E0615650697400E16C6EED6D206F6B6EEC206476C3 +S315E0615660616B72E174206B6C696B6EEC7465206ED4 +S315E06156706120696B6F6E75005B315D5B4E656DF9DF +S315E0615680BE65B92070F86573756E6F757420616477 +S315E0615690726573E1F8652C20646F6B756D656E7488 +S315E06156A0797C6E65626F2061706C696B61636520A0 +S315E06156B06E61204465736B746F702E20416C65205A +S315E06156C06DF9BE65B97C6A65206B6F70ED726F7658 +S315E06156D06174206E61206469736B7920616E6562C5 +S315E06156E06F20686F64697420646F7C6F6470616455 +S315E06156F06B6F76E9686F206B6FB9652E5D5B202015 +S315E06157004F4B20205D005B315D5B4E656EED206445 +S315E06157106F73746174656B2070616DEC7469206B95 +S315E0615720206E6173746176656EED7C74E9746F20E9 +S315E061573061706C696B6163652E20204B2075766FB5 +S315E06157406C6EEC6EED7C6EEC6A616BE9686F206D98 +S315E0615750ED737461206A652074F8656261206F6437 +S315E0615760737472616E69747C6A65646E75207A20A1 +S315E061577064F8ED7665206E6173746176656EFD63DE +S315E0615780687C61706C696B6163ED2E5D5B20204FB7 +S315E06157904B20205D00202050F869686CE1736974E4 +S315E06157A0206469736B2E2E2E004B20767974766FAA +S315E06157B0F8656EED206E6F76E9686F2061647265FB +S315E06157C073E1F865207620616B74752D005B335D5E +S315E06157D05B444F53206368796261202325642E5DC3 +S315E06157E05B5A7275B969745D004A6DE96E6F3A200C +S315E06157F0205F5F5F5F5F5F5F5F2E5F5F5F00506F40 +S315E0615800747672646974206B6F70ED726F76E16EB7 +S315E0615810ED3F00456D75544F53207665727A6500AC +S315E061582054797020435055005B315D5B4E656DF98F +S315E0615830BE65B92070F86573756E6F7574206F64B7 +S315E06158407061646B6F76FD7C6B6FB920646F206FFE +S315E06158506B6E612E5D5B20204F4B20205D005B31DE +S315E06158605D5B506FBE61646F76616EFD20646973E6 +S315E06158706B206E656578697374756A652E7C5A6BA3 +S315E06158806F6E74726F6C756A7465207A6164616E4D +S315E0615890E92070ED736D656E6F7C6F7A6E61E875A8 +S315E06158A06AED63ED206A65646E6F746B752E5D5BA0 +S315E06158B05A7275B969745D004E6500416E6F004854 +S315E06158C06172646469736B005A76756B6F76E92011 +S315E06158D06566656B74793A0041747269627574796B +S315E06158E03A004F7A6E61E8656EED206469736B75B7 +S315E06158F03A20205F3A00446F207061646163ED682D +S315E06159006F206D656E753A005B335D5B4F626A650C +S315E061591076696C61207365206368796261207620BF +S315E06159204D616E61BE6572757C6772616669636B56 +S315E0615930E9686F2070726F7374F86564ED202847CB +S315E0615940454D292E20204B6F6E74616B74756A74B8 +S315E0615950657C70726F73ED6D2076FD766F6A6F763A +S315E0615960FD2074FD6D20456D75544F5375206120A2 +S315E0615970706F64656A74657C7A7072E17675206FC2 +S315E06159802063687962EC2E5D5B5A7275B969745D04 +S315E0615990004A6D656E6F766B613A20205F5F5F5F8F +S315E06159A05F5F5F5F5F5F5F00506F6C6FBE6B7920BB +S315E06159B06B6520736D617AE16EED3A20205F5F5F22 +S315E06159C05F0056656C696B6F737420627974F93A3E +S315E06159D020205F5F5F5F5F5F5F5F5F5F004A656477 +S315E06159E06E6F746B793A005B315D5B506FE8ED74B5 +S315E06159F061E8206E656DE120646F73746174656B57 +S315E0615A007C766F6C6EE92070616DEC7469206B6514 +S315E0615A1020737075B974EC6EED7C7A766F6C656E39 +S315E0615A20E92061706C696B6163652E5D5B20204F77 +S315E0615A304B20205D002020496E7374616C6F766146 +S315E0615A40742061706C696B6163692E2E2E20202053 +S315E0615A502007410061706C696B616365005B335D72 +S315E0615A605B436879626EE12066756E6B63652023E0 +S315E0615A705D5B5A7275B969745D005B335D5B506FEE +S315E0615A80E8ED7461E8206E656DE120646F737461C1 +S315E0615A9074656B2070616DEC7469206B657C737005 +S315E0615AA075B974EC6EED2047454D204465736B74B2 +S315E0615AB06F70752E5D5B204C6974756A69205D0057 +S315E0615AC04D415AC14ECD204144524553C1D8D920AA +S315E0615AD02F20504F4C4FAE454B00494E464F524DED +S315E0615AE0414345204F204F44524553C1D849004474 +S315E0615AF0442D4D4D2D5252004A6DE96E6F206B6F0C +S315E0615B007069653A20205F5F5F5F5F5F5F5F2E5F11 +S315E0615B105F5F00496E7374616C6F76617400506F9C +S315E0615B207476726469742070F8657069733F0056C3 +S315E0615B306F6C6EE1204661737452414D00466F723F +S315E0615B406DE17420646174613A0053505553544970 +S315E0615B50542041504C494B414349005B325D5B41C6 +S315E0615B60706C696B616365206E656DF9BE65206E0B +S315E0615B70616AED74206164726573E1F8206E656255 +S315E0615B806F7C646F6B756D656E742C206B7465727A +S315E0615B90FD20736520736E61BEED7465206F74657B +S315E0615BA076F8ED742E7C5A6B6F6E74726F6C756AF3 +S315E0615BB07465207A6164616EE9206A6DE96E6F2EC3 +S315E0615BC05D5B20204F4B20205D005A6173746176E6 +S315E0615BD06974004A656E20E874656EED00416B7428 +S315E0615BE075E16C6EED206A6DE96E6F3A20205F5F5C +S315E0615BF05F5F5F5F5F5F2E5F5F5F005B335D5B4E45 +S315E0615C00656EED206D6FBE6EE9207A6B6F70ED7239 +S315E0615C106F766174206E6164F8617A656EFD7C61B0 +S315E0615C2064726573E1F820646F206A65686F20705D +S315E0615C306F646164726573E1F8652E5D5B20204F88 +S315E0615C404B20205D005B335D5B4C6974756A692C42 +S315E0615C5020616C65207A6164616EE9206A6DE96E46 +S315E0615C606F206164726573E1F8657C70F8656B72EB +S315E0615C7061E8756A65206D6178696DE16C6EED204C +S315E0615C80706F766F6C656E6F752064E96C6B752EFF +S315E0615C907C50F865B974EC746520736920646F6B48 +S315E0615CA0756D656E74616369206F206C696D697489 +S315E0615CB06563687C706FE87475207A6E616BF92C48 +S315E0615CC0206B746572E9206A65206D6FBE6EE920AE +S315E0615CD0706F75BEED747C70726F206A6DE96E618E +S315E0615CE02E5D5B2020204F4B2020205D0054797093 +S315E0615CF020696B6F6E793A00313220686F64696E44 +S315E0615D00005B315D5B47454D204465736B746F7035 +S315E0615D10206A69BE206E656DF9BE65206F74657631 +S315E0615D20F8ED742076ED63657C6F6B656E2E2020F1 +S315E0615D3050F86564206F746576F8656EED6D206484 +S315E0615D4069736B75207A6176F86574657C6F6B6EE5 +S315E0615D506F2C206B746572E9206E65706F75BEEDB0 +S315E0615D6076E174652E5D5B20204F4B20205D00441B +S315E0615D7069736B6574610056FD766F6A6F76FD20B7 +S315E0615D8074FD6D20456D75544F5375004B6F70ED25 +S315E0615D90726F76616EE920706F6C6FBE6B793A20D7 +S315E0615DA0205F5F5F5F0020536F75626F7220002531 +S315E0615DB06C6420627974F9207620256420706F6CBA +S315E0615DC06FBE6BE163682E004A6DE96E6F206170AC +S315E0615DD06C696B6163653A20205F5F5F5F5F5F5F00 +S315E0615DE05F2E5F5F5F004E6F76FD20616472657363 +S315E0615DF0E1F800506F6472BE203C4374726C3E20E1 +S315E0615E00612070F865736B6FE8204155544F2F41FF +S315E0615E104343002020496E666F2F4A6DE96E6F2E0F +S315E0615E202E2E2020200749005A616C6FBE656E6F89 +S315E0615E30206E61202747504C27207A64726F6AEDA5 +S315E0615E406368005B315D5B506F6C6FBE6B61207444 +S315E0615E506F686F746F206A6DE96E612076206461A8 +S315E0615E606EE96D206164726573E1F8697C657869F4 +S315E0615E707374756A65206E65626F206A6520706FFE +S315E0615E80757A65206B6520E874656EED2E7C506FE2 +S315E0615E9075BE696A74652070F8ED6B617A20224996 +S315E0615EA06E666F2F4A6DE96E6F22206B65207A6DA3 +S315E0615EB0EC6EEC7C737461747573752074E9746F60 +S315E0615EC020706F6C6FBE6B792E5D5B20204F4B202F +S315E0615ED0205D006F626A6576ED2C207A6164656AA1 +S315E0615EE07465206A6DE96E6F206164726573E1F8CD +S315E0615EF0652C206B746572FD00323420686F6469CD +S315E0615F006E002020506F646C652074797075202076 +S315E0615F102020200750005479702061706C696B61B4 +S315E0615F2063653A004B6C696B6E7574ED005479701C +S315E0615F307920646F6B756D656E74F93A00537469B7 +S315E0615F40736B6E69202743272070726F20737075BB +S315E0615F50B974EC6EED206B6F6E7A6F6C79004F7A87 +S315E0615F606E61E8656EED206469736B753A20205F5A +S315E0615F70004E4F56DD204144524553C1D8002020A2 +S315E0615F805370757374697420456D75434F4E202067 +S315E0615F905E5A004E4153544156454ECD2041504CD8 +S315E0615FA0494B4143450020205A6DEC6E6120726F8A +S315E0615FB07A6C69B9656EED202020202020202020B2 +S315E0615FC02020074300566F6C6EE12053542D5241F9 +S315E0615FD04D002020466F726DE1746F7661742E2EEE +S315E0615FE02E002020536D617A61742E2E2E202020A2 +S315E0615FF02020202007440020205A6176F8ED7400C5 +S315E0616000506F74F86562756A652063656C6F7520BB +S315E061601070616DECBB3F0020204A616B6F20696B5C +S315E06160206F6E7920202020200753004469736B79D5 +S315E06160302047454D444F537500494E464F524D41B9 +S315E06160404345204F204E4F56C94D2041445245535A +S315E0616050C1D849004B6F70ED726F76616EE9206170 +S315E061606064726573E1F8653A20205F5F5F5F0049BE +S315E06160704E464F524D414345202F2050D8454A4D1B +S315E0616080454E4F56C14ECD005B335D5B466F726DDB +S315E0616090E1746F76E16EED20534D41AE452076B900 +S315E06160A06563686E617C64617461206E61206469B8 +S315E06160B0736B6574EC2076206A65646E6F746365F4 +S315E06160C07C25633A2E20204B6C696B6EEC746520FF +S315E06160D06E61204F4B20706F757A6520706F6B75BE +S315E06160E0647C76E16D206E65766164ED207A74722A +S315E06160F0E174612076B9656368206461747C6E6180 +S315E061610020746F6D746F206469736B752E5D5B20AF +S315E0616110204F4B20207C5A7275B969745D00205618 +S315E06161206F6C62792000506FE86574206164726516 +S315E061613073E1F8F93A20202020205F5F5F5F5F001E +S315E061614056DD42CC5220504F4C4FAE454B005B3250 +S315E06161505D5B4A65646E6F746B612025633A206EA0 +S315E06161606572656167756A652E20204A652074F8F7 +S315E06161706562617C706F75BEED7420737072E176F5 +S315E06161806EFD20747970206469736B752C20766C72 +S315E06161906FBE6974206A656A7C737072E1766EECD3 +S315E06161A020646F206D656368616E696B792C207020 +S315E06161B0F8ED702E207A6176F8ED742E7C4A652DC5 +S315E06161C06C692070726F626CE96D20732068617230 +S315E06161D0646469736B656D2C2070726F76ECF8742C +S315E06161E0657C70F869706F6A656EED206469736BE2 +S315E06161F0752E5D5B5A7275B969747C5A6E6F767588 +S315E06162005D005B335D5B506F6B7564206A737465CB +S315E0616210207369206A697374FD2C20BE652063680A +S315E0616220636574657C736D617A61742056A94543D3 +S315E0616230484E5920696E666F726D616365207A209A +S315E06162406469736B757C76206A65646E6F74636589 +S315E06162502025633A2C206B6C696B6EEC7465206E5D +S315E061626061204F4B2E7C4A696E616B206B6C696B6A +S315E06162706EEC7465206E61205A7275B969742E5D33 +S315E06162805B20204F4B20207C5A7275B969745D00A2 +S315E06162905B315D5B4F647061646B6F76FD206B6F44 +S315E06162A0B9206DF9BE65B92070F86573756E6F7565 +S315E06162B074206E61206A696EE97C6DED73746F209E +S315E06162C06E6120706C6FB9652047454D20446573FA +S315E06162D06B746F70752C20616C65206E656DF9BEAF +S315E06162E065B97C686F20756DED73746974206E6154 +S315E06162F0206A696E6F7520696B6F6E752E2E5D5BB8 +S315E061630020204F4B20205D004F64737472616E698B +S315E0616310740056FD62EC723A20205F5F5F5F5F5FFB +S315E06163205F5F2E5F5F5F005B315D5B5A766F6C65C9 +S315E06163306EFD2074797020646F6B756D656E747532 +S315E0616340206E656EED206E6173746176656E7C704C +S315E0616350726F20706F75BE6974ED20BEE1646E6F19 +S315E0616360752061706C696B6163ED2E2020506F75ED +S315E0616370BE696A74657C70F8ED6B617A20224E6164 +S315E061638073746176656EED2061706C696B616365EE +S315E0616390227C6B2061736F63696F76E16EED2074C9 +S315E06163A06F686F746F207479707520736F75626F43 +S315E06163B072757C73206EEC6A616B6F752061706CCF +S315E06163C0696B6163ED2E5D5B20204F4B20205D00A4 +S315E06163D0547970206469736B753A005B325D5B5624 +S315E06163E0FD737475706EED207A61F8ED7A656EED28 +S315E06163F0206E6570F8696AED6DE120646174612E05 +S315E06164007C646174612E2050F86564207A766F6CE5 +S315E0616410656EED6D205A6E6F767520736520756ACF +S315E0616420697374EC74652C7CBE65206A65207A615B +S315E0616430F8ED7A656EED206E6170E16A656E6F2CDE +S315E0616440206A652076207265BE696D757C6F6E2DFA +S315E06164506C696E652061207A6461206DE12070610E +S315E061646070ED72206E65626F2066696C6D2E5D5BA4 +S315E06164705A7275B969747C5A6E6F76755D005B3177 +S315E06164805D5B4E656EED206D6FBE6EE920736D618D +S315E06164907A6174206164726573E1F82C206B7465CE +S315E06164A072FD7C6A65207072E176EC206E617374D0 +S315E06164B06176656E206A616B6F20707261636F767B +S315E06164C06EED2E5D5B20204F4B20205D005B335DE2 +S315E06164D05B4B20756C6FBE656EED206E61737461AA +S315E06164E076656EED20766C6FBE7465206469736B5C +S315E06164F06574757C47454D204445534B544F502058 +S315E0616500646F206A65646E6F746B7920413A2C2002 +S315E06165107A6176F86574657C6476EDF86B61206125 +S315E0616520206B6C696B6EEC7465206E61204F4B2E4F +S315E0616530204E61205A7275B969747C6B6C696B6EB9 +S315E0616540EC746520762070F8ED706164EC2C20BE09 +S315E061655065206E6173746176656EED7C756C6FBE98 +S315E06165606974206E656368636574652E5D5B202082 +S315E06165704F4B20207C5A7275B969745D005B315D61 +S315E06165805B4E656EED206D6FBE6EE9206E616AED04 +S315E0616590742070726F6772616D20464F524D41543F +S315E06165A02E2020506F6B75647C706F75BEED76E161 +S315E06165B07465206476EC206469736B65746F76E963 +S315E06165C0206A65646E6F746B792C206A657C74F8F9 +S315E06165D065626120666F726DE1746F766174207ACF +S315E06165E0206469736B657479207320444F53656DDC +S315E06165F02E7C506F6B7564206DE174652068617205 +S315E0616600646469736B2C207A6B6F70ED72756A7472 +S315E06166106520464F524D41547C646F206B6FF8653F +S315E06166206E6F76E9686F206164657273E1F8652E75 +S315E06166305D5B4F4B5D0042657A206B6C696B6E7595 +S315E061664074ED005B315D5B4F647061646B6F76FD29 +S315E0616650206B6FB9206A65206DED73746F2C206BCA +S315E0616660616D2070F865736F7576E1B97C64697305 +S315E06166706B792C206164726573E1F8652C20646F37 +S315E06166806B756D656E7479206E65626F7C61706C39 +S315E0616690696B6163652C206B746572E9206368637D +S315E06166A065B92076796D617A6174206E6176BE64D2 +S315E06166B079215D5B20204F4B20205D0050D8494811 +S315E06166C04CC1534954204449534B0041647265734C +S315E06166D0E1F865206B6520736D617AE16EED3A20D4 +S315E06166E0205F5F5F5F005B325D5B44617461206E7A +S315E06166F061206469736B752025633A206A736F75EF +S315E0616700206D6FBE6EE17C706FB96B6F7A656E619D +S315E06167102E20204A652074F865626120706F75BE2F +S315E0616720ED7420737072E1766EFD7C74797020642D +S315E061673069736B6574793B20686172646469736BD4 +S315E0616740206D7573ED2062FD747C737072E1766E17 +S315E0616750EC2070F869706F6A656E2E5D5B5A7275D2 +S315E0616760B969747C5A6E6F76755D0020205A6176E0 +S315E0616770F8ED74206F6B6E6F005B335D5B47454D83 +S315E0616780204465736B746F70206E656DF9BE65202C +S315E06167906E616AED7420736F75626F72797C4445E0 +S315E06167A0534B4C4F2E49434E2C204445534B48495D +S315E06167B02E49434E206E65626F7C4445534B544F80 +S315E06167C0502E494E4620762063657374EC207A6ECE +S315E06167D0E16DE920444F53752E7C5479746F2073D3 +S315E06167E06F75626F7279206A736F75207679BE61B3 +S315E06167F0646F76E16E797C70726F20737075B974CF +S315E0616800EC6EED2047454D204465736B746F707592 +S315E06168102E5D5B5A7275B969745D00506FE8657497 +S315E061682020706F6C6FBE656B3A20202020205F5F21 +S315E06168305F5F5F00456D75544F53206A6520B9ED22 +S315E0616840F8656E20706F64206C6963656E63ED2038 +S315E061685047504C005B315D5B4E61206469736B75DB +S315E0616860206E656EED20646F73746174656B206D87 +S315E0616870ED7374612070726F7C696E666F726D61C3 +S315E061688063692C206B7465726F7520736520736E16 +S315E061689061BEED7465206B6F70ED726F7661742E1B +S315E06168A07C4E69636DE96EEC206EEC6B746572E942 +S315E06168B020706F6C6FBE6B79206D6F686C79206A42 +S315E06168C069BE2062FD747C6E61206469736B206EC3 +S315E06168D0616B6F70ED726F76E16E792E5D5B202094 +S315E06168E04F4B20205D00205573706FF8E164E16ED7 +S315E06168F0ED2000506F6472BE203C416C743E206BAB +S315E06169002070F865736B6FE8656EED20484444006E +S315E06169102020506F646C65206461746120202020C2 +S315E0616920200754004D4D2D44442D52520020204FF6 +S315E0616930746576F8ED7400466F726DE17420E86116 +S315E061694073753A002020506F646C65206A6DE96E5C +S315E06169506120202020074E0020205679706E6F75E9 +S315E0616960742020202020202020205E5100506FE8F6 +S315E0616970ED7461E8005665727A65005A6164656A2C +S315E06169807465206A6DE96E6F20646F6B756D656E17 +S315E061699074752C206B746572FD206DE12062FD7467 +S315E06169A00070726F207475746F2061706C696B61D1 +S315E06169B063692E005B335D5B50726F20737075B9EE +S315E06169C074EC6EED2047454D204465736B746F70D2 +S315E06169D07520766C6FBE7465206469736B657475DA +S315E06169E07C47454D204445534B544F5020646F20BE +S315E06169F06A65646E6F746B7920412061206B6C69A6 +S315E0616A006B6EEC74657C6E61204F4B206E65626FD8 +S315E0616A1020737469736B6EEC74652052657475727C +S315E0616A206E2E2050726F206EE17672617420646F13 +S315E0616A307C444F5375206B6C696B6EEC7465206EAC +S315E0616A4061205A7275B969742E5D5B20204F4B20C7 +S315E0616A50207C5A7275B969745D00646F6B756D659A +S315E0616A606E747900566F6C6EFD636820627974F9B5 +S315E0616A703A20205F5F5F5F5F5F5F5F5F5F005B3212 +S315E0616A805D5B4E656EED206D6FBE6EE9207A61707D +S315E0616A9069736F766174206E61206469736B657486 +S315E0616AA0757C76206A65646E6F7463652025633AEA +S315E0616AB02C2070726F746FBE65206A652066797A84 +S315E0616AC069636B797C636872E16EEC6E612070720A +S315E0616AD06F7469207AE1706973752E202050F865CC +S315E0616AE064207A766F6C656EED6D7C205A6E6F769A +S315E0616AF075206F6473747261F27465206EE16C6522 +S315E0616B00706B75206E65626F207A616B72796A74FB +S315E0616B10657C6F74766F72206E61206469736B65F4 +S315E0616B2074EC2E5D5B5A7275B969747C5A6E6F76D8 +S315E0616B30755D005B315D5B4E656DF9BE65B9206F74 +S315E0616B40746576F8ED74206F647061646B6F76FDE1 +S315E0616B50206B6FB97C646F206F6B6E612E204B6426 +S315E0616B6079BE2063686365B920736D617A6174206B +S315E0616B706469736B2C7C6164726573E1F82C2064E3 +S315E0616B806F6B756D656E74206E65626F2061706C9A +S315E0616B90696B6163692C7C70F8657375F220746F5B +S315E0616BA020646F206F647061646B6F76E9686F2053 +S315E0616BB06B6FB9652E5D5B20204F4B20205D005BDE +S315E0616BC0325D5B4164726573E1F820746F686F747E +S315E0616BD06F206A6DE96E61206A69BE2065786973C6 +S315E0616BE074756A657C6E65626F206A652064697337 +S315E0616BF06B20706C6EFD2E205A6B75737465206A1E +S315E0616C00696EE96A6DE96E6F206E65626F206B6C25 +S315E0616C10696B6EEC7465206E61205A7275B9697440 +S315E0616C207C612070726F76ECF8746520766F6C6EBD +S315E0616C30E9206DED73746F206E61206469736B7525 +S315E0616C402E5D5B205A7275B96974207C205A6E6F2D +S315E0616C507675205D00506F747672646974206D613B +S315E0616C607AE16EED3F004A6DE96E6F20696B6F6E9A +S315E0616C70793A20205F5F5F5F5F5F5F5F5F5F5F5F66 +S315E0616C800056797375F274652070726F73ED6D20DD +S315E0616C906469736B657475206120737469736B6E77 +S315E0616CA0EC74652052455455524E0050726F6A65D8 +S315E0616CB063742D49642D56657273696F6E3A20452A +S315E0616CC04D55544F5320626574610A504F542D43BC +S315E0616CD072656174696F6E2D446174653A20323014 +S315E0616CE030352D30342D31312031373A31382B3052 +S315E0616CF03230300A504F2D5265766973696F6E2D69 +S315E0616D00446174653A20323030352D30342D31347A +S315E0616D102031333A33302B303230300A4C61737480 +S315E0616D202D5472616E736C61746F723A2047616261 +S315E0616D307269656C2048756572746173203C676140 +S315E0616D40627269656C687565727461734074657267 +S315E0616D5072612E65733E0A4C616E67756167652D7A +S315E0616D605465616D3A2045737061F16F6C203C64E6 +S315E0616D70722E776F7273744074657272612E657389 +S315E0616D803E0A4D494D452D56657273696F6E3A20DF +S315E0616D90312E300A436F6E74656E742D5479706569 +S315E0616DA03A20746578742F706C61696E3B20636814 +S315E0616DB061727365743D49534F2D383835392D31DC +S315E0616DC0350A436F6E74656E742D5472616E7366C7 +S315E0616DD065722D456E636F64696E673A20386269E4 +S315E0616DE0740A005B315D5B457374612061706C6947 +S315E0616DF063616369F36E20636172656365206465EF +S315E0616E002065706163696F207C7061726120616287 +S315E0616E10726972206F74726F20646F63756D656EEF +S315E0616E20746F2E204369657272657C616C67756EFD +S315E0616E306F20717565206E6F206E65636573697429 +S315E0616E40652E5D5B20204F4B20205D0020204E7536 +S315E0616E5065766120436172706574612E2E2E004EF7 +S315E0616E606F6D627265206465206C6120636172702A +S315E0616E706574613A20205F5F5F5F5F5F5F5F2E5F92 +S315E0616E805F5F0061206C6565722C206F2076616CB6 +S315E0616E906F72657320646520706172E16D6574720D +S315E0616EA06F7300A153697374656D61206465746580 +S315E0616EB06E69646F210A005B335D5B4C6F207369B9 +S315E0616EC0656E746F2C207065726F206E6F207075C1 +S315E0616ED0656465206372656172206DE173207C6330 +S315E0616EE0617270657461732064656E74726F20643B +S315E0616EF065206C612061637475616C2E20526576E4 +S315E0616F00697365207C6C6120646F63756D656E7411 +S315E0616F10616369F36E20736F627265206CED6D6912 +S315E0616F2074657320656E7C6375616E746F20612034 +S315E0616F3063617270657461732064656E74726F20EB +S315E0616F406465206F747261732E5D5B43616E636528 +S315E0616F506C61725D0043726561646F3A20205F5FC8 +S315E0616F602D5F5F2D5F5F20200020204F7264656E8C +S315E0616F70617220706F722074616D61F16F2020071C +S315E0616F805A004E4F4D42524520434F4E464C49437F +S315E0616F905449564F2000DA6C74696D61206D6F64F7 +S315E0616FA069666963616369F36E3A20205F5F2F5FAB +S315E0616FB05F2F5F5F004C6561206C6963656E636935 +S315E0616FC0612E7478742070617261206DE173206462 +S315E0616FD06574616C6C650063617270657461207182 +S315E0616FE07565207175696572652063726561722E7A +S315E0616FF0004C6563747572612F457363726974756C +S315E061700072610045535441424C45434552205052CA +S315E061701045464552454E434941530056656C6F635B +S315E06170206964616420646520636C69636B3A00201E +S315E06170302045737461626C65636572207072656622 +S315E06170406572656E636961732E2E2E00506172E121 +S315E06170506D6574726F733A20205F5F5F5F5F5F5F3C +S315E06170605F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5FE9 +S315E06170705F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5FD9 +S315E06170805F5F5F5F5F5F5F5F5F5F5F5F5F00546929 +S315E0617090656D706F20646520617272616E71756590 +S315E06170A000434F5049415220434152504554415368 +S315E06170B0202F20454C454D454E544F5300202053DB +S315E06170C0616C766172204465736B746F7020202009 +S315E06170D020202020202020202007560020204D6FF0 +S315E06170E0737472617220636F6D6F20746578746F0B +S315E06170F02007530050616E74616C6C6120696E6942 +S315E06171006369616C00496E736572746520656C20B4 +S315E0617110646973636F20646520617272616E717513 +S315E0617120652064656C2047454D00494E464F524D9A +S315E0617130414349D34E2044454C20444953434F0093 +S315E06171404E7565766F20792073696761206C61732E +S315E061715020696E737472756363696F6E65730042FD +S315E06171607974657320757361646F733A20205F5F2C +S315E06171705F5F5F5F5F5F5F5F005B325D5B4573745F +S315E0617180612061706C6963616369F36E206E6F2083 +S315E06171907075656465206C656572206C6F732064DB +S315E06171A061746F737C64656C20646973636F206579 +S315E06171B06E206C6120756E696461642025633A2096 +S315E06171C02E20436F6D7072756562657C71756520A1 +S315E06171D0657374E120666F726D61746561646F2CCD +S315E06171E020717565206C6120756E696461642065E6 +S315E06171F07374E17C616C696D656E7461646120795B +S315E061720020636F6E65637461646120616C206F7287 +S315E061721064656E61646F722E5D5B43616E63656C1E +S315E061722061727C5265696E74656E7461725D00202F +S315E061723020496E666F726D616369F36E2064656C99 +S315E0617240204465736B746F702E2E2E2020200043D0 +S315E0617250414E43454C41520061637475616C2C202B +S315E061726070756C736520646F7320766563657320F2 +S315E0617270656E20656C2069636F6E6F206465005B87 +S315E0617280315D5B4E6F2073652070756564656E2058 +S315E06172906C6C657661722063617270657461732C82 +S315E06172A0206669636865726F737C6F2061706C6973 +S315E06172B0636163696F6E657320616C206573637288 +S315E06172C069746F72696F2C2061756E7175652C7C5E +S315E06172D07369206120646973636F732070617261A1 +S315E06172E020636F70696172206F20612070617065E3 +S315E06172F06C6572617C7061726120626F72726172DB +S315E06173002E5D5B20204F4B20205D005B315D5B4E47 +S315E06173106F20686179206573706163696F2020739E +S315E06173207566696369656E74657C706172612063B7 +S315E06173306F6E6669677572617220657374612061EB +S315E0617340706C6963616369F36E2E7C507565646523 +S315E0617350206F6274656E6572206573706163696FD3 +S315E061736020656C696D696E616E646F7C756E6120B6 +S315E06173706465206C61732020636F6E666967757200 +S315E0617380616461732E5D5B20204F4B20205D0020A0 +S315E061739020496E7374616C617220756E69646164B3 +S315E06173A020646520646973636F2E2E2E00506172CE +S315E06173B06120637265617220756E612063617270CE +S315E06173C065746120656E206C612076656E74616EB0 +S315E06173D06120005B335D5B444F532D6572726F7262 +S315E06173E0202325642E5D5B43616E63656C61725D2E +S315E06173F0004E6F6D6272653A20205F5F5F5F5F5F2F +S315E06174005F5F2E5F5F5F00BF436F6E6669726D613E +S315E061741020636F706961723F00456D75544F53200B +S315E06174205665727369F36E007469706F20646520E6 +S315E0617430435055005B315D5B4E6F20657320706F25 +S315E06174407369626C6520736974756172206C612021 +S315E0617450706170656C6572617C64656E74726F2073 +S315E0617460646520756E612076656E74616E612E5D10 +S315E06174705B20204F4B20205D005B315D5B4C6120E2 +S315E0617480756E6964616420696E64696361646120D3 +S315E06174906E6F206578697374652E7C436F6D70726B +S315E06174A075656265206C6120756E696461642073DF +S315E06174B0656C656363696F6E6164612E5D5B436193 +S315E06174C06E63656C61725D004E6F004475726F004C +S315E06174D045666563746F20736F6E6F726F3A0041D4 +S315E06174E07472696275746F733A004C657472612087 +S315E06174F0646520756E696461643A20205F3A005084 +S315E061750061726120646573706C65676172206D6537 +S315E06175106EFA73005B335D5B53652070726F647501 +S315E06175206A6F20756E206572726F7220656E206576 +S315E06175306C206D616E656A61646F727C64652065FD +S315E06175406E746F726E6F206772E16669636F202891 +S315E061755047454D292E7C506F72206661766F722C9D +S315E061756020636F6E746163746520616C206571750B +S315E061757069706F20456D75544F53207C7920726533 +S315E0617580706F72746520656C206572726F725D5B97 +S315E061759043616E63656C61725D00457469717565C1 +S315E06175A0746120646973636F3A20205F5F5F5F5F38 +S315E06175B05F5F5F5F5F5F00456C656D656E746F739E +S315E06175C0206120626F727261723A20205F5F5F5F55 +S315E06175D00054616D61F16F20656E20627974657347 +S315E06175E03A20205F5F5F5F5F5F5F5F5F5F00556E61 +S315E06175F069646164657320646520446973636F00DF +S315E06176005B315D5B4D656D6F72696120696E737546 +S315E061761066696369656E7465207061726120636F26 +S315E0617620727265727C657374612061706C696361A5 +S315E06176306369F36E2E5D5B20204F4B20205D002059 +S315E061764020436F6E666967757261722061706C69FD +S315E061765063616369F36E2E2E2E202007410061700F +S315E06176606C6963616369F36E005B335D5B46756E9E +S315E06176706369F36E20657272F36E656120235D5B0B +S315E061768043616E63656C61725D005B335D5B4E6F3A +S315E061769020686179206D656D6F72696120737566C9 +S315E06176A0696369656E746520706172617C696E6932 +S315E06176B06369617220656C2047454D2D4465736B46 +S315E06176C0746F702E205D5B4C6F207369656E746FAD +S315E06176D05D00424F5252415220434152504554411E +S315E06176E053202F20454C454D454E544F5300494E4E +S315E06176F0464F524D414349D34E204445204C4120AB +S315E0617700434152504554410044442D4D4D2D414134 +S315E0617710004E6F6D627265206465206C6120636FF7 +S315E06177207069613A20205F5F5F5F5F5F5F5F2E5FD9 +S315E06177305F5F00496E7374616C617200BF436F6E27 +S315E06177406669726D6120736F627265657363726992 +S315E06177506269723F0054542F4661737452414D2001 +S315E0617760646973706F6E69626C6500466F726D61B4 +S315E0617770746F2066656368613A00414252495220FE +S315E061778041504C4943414349D34E005B325D5B4CCA +S315E0617790612061706C6963616369F36E206E6F206D +S315E06177A0707565646520656E636F6E747261722073 +S315E06177B06C617C63617270657461206F20646F6374 +S315E06177C0756D656E746F2071756520696E74656E31 +S315E06177D074617C61627269722E2043686571756558 +S315E06177E06520656C206E6F6D6272655D5B20204F12 +S315E06177F04B20205D0053F36C6F206C65637475728A +S315E061780061004E6F6D6272652061637475616C3A99 +S315E061781020205F5F5F5F5F5F5F5F2E5F5F5F005B43 +S315E0617820335D5B4E6F20707565646520636F70696B +S315E0617830617220756E612063617270657461206446 +S315E061784065207C6E6976656C207375706572696FAB +S315E06178507220656E20756E6120646520696E66656D +S315E061786072696F722E5D5B20204F4B20205D005B5D +S315E0617870335D5B4C6F207369656E746F2C20706548 +S315E0617880726F20656C206E6F6D6272652064652033 +S315E061789063617270657461207C6578636564652097 +S315E06178A0656C206EFA6D65726F206DE178696D6F5A +S315E06178B020646520636172616374652D7C726573B2 +S315E06178C0207065726D697469646F732E20457861A5 +S315E06178D06D696E65206C6120646F63756D656E2D93 +S315E06178E07C74616369F36E20736F627265206573A0 +S315E06178F06F73206CED6D697465732E5D5B2020207E +S315E06179004F4B2020205D005469706F2064652069CB +S315E0617910636F6E6F3A00313220486F726173005B5C +S315E0617920315D5B456C2047454D204465736B746FF3 +S315E061793070206E6F20707565646520616272697230 +S315E0617940206DE1737C76656E74616E61732E2043A2 +S315E0617950696572726520616C67756E61206E6F2014 +S315E0617960757361646120616E2D7C746573206465F5 +S315E061797020616272697220756E20646973636F2E2D +S315E06179805D5B20204F4B20205D00466C6F70707907 +S315E061799000656C2065717569706F2064652064654A +S315E06179A0736172726F6C6C6F20456D75544F5300E5 +S315E06179B0456C656D656E746F73206120636F706988 +S315E06179C061723A20205F5F5F5F00204669636865A8 +S315E06179D0726F2000256C6420427974657320656E50 +S315E06179E020256420656C656D656E746F732E004E3F +S315E06179F06F6D627265206465206C612061706C698F +S315E0617A0063616369F36E3A20205F5F5F5F5F5F5F2B +S315E0617A105F2E5F5F5F004E756576612043617270D0 +S315E0617A20657461003C436F6E74726F6C3E20706189 +S315E0617A3072612073616C746172204155544F2F41BC +S315E0617A404343002020496E666F2F52656E6F6D620B +S315E0617A507261722E2E2E2007490042617361646F56 +S315E0617A6020656E206675656E7465732047504C00BF +S315E0617A705B315D5B59612065786973746520756E0C +S315E0617A8020656C656D656E746F20636F6E206573DE +S315E0617A907465206E6F6D6272657C6F20656C2065C2 +S315E0617AA06C656D656E746F2065732064652073F334 +S315E0617AB06C6F206C6563747572612E2050756564B8 +S315E0617AC0657C757361722022496E666F726D616362 +S315E0617AD069F36E2F52656E6F6D62726172227C70B0 +S315E0617AE06172612063616D62696172206C6F73209E +S315E0617AF0617472696275746F732E5D5B20204F4BA2 +S315E0617B0020205D00696E74726F64756369656E6489 +S315E0617B106F20656C206E6F6D627265206465206CA6 +S315E0617B20612000323420486F7261730020204F7209 +S315E0617B3064656E617220706F72207469706F202067 +S315E0617B4020200750005469706F2064652061706C75 +S315E0617B506963616369F36E3A00436C69636B005410 +S315E0617B6069706F7320646520646F63756D656E74AB +S315E0617B706F3A0050756C73652027432720706172F8 +S315E0617B806120636F7272657220656E20756E612029 +S315E0617B9063F36E736F6C61207072696D6974697697 +S315E0617BA061004964656E746966696361646F7220D8 +S315E0617BB0646520756E696461643A20205F004E55A4 +S315E0617BC04556412043415250455441002020456A83 +S315E0617BD065637574617220456D75434F4E20202053 +S315E0617BE05E5A00434F4E46494755524152204150F5 +S315E0617BF04C4943414349D34E00202043616D62695C +S315E0617C006172207265736F6C756369F36E20202013 +S315E0617C10202020202007430053542052414D206408 +S315E0617C206973706F6E69626C65002020466F726D74 +S315E0617C3061746561722E2E2E002020426F72726130 +S315E0617C40722E2E2E20202020202020202007440086 +S315E0617C50202043657272617200BF4E656365736928 +S315E0617C60746120746F6461206C61206D656D6F7203 +S315E0617C7069613F0053690020204D6F7374726172D0 +S315E0617C8020636F6D6F2069636F6E6F7320075300BA +S315E0617C90556E6964616465732047454D444F530091 +S315E0617CA0494E464F524D414349D34E20434152508E +S315E0617CB0455441204E5545564100436172706574A5 +S315E0617CC06173206120636F706961723A20205F5F42 +S315E0617CD05F5F00494E464F524D414349D34E204482 +S315E0617CE0454C20454C454D454E544F2F2052454E0F +S315E0617CF04F4D42524152005B335D5B466F726D613F +S315E0617D0074656172206465737472756972E1207479 +S315E0617D106F646120696E666F726D616369F36E7C33 +S315E0617D2064656C20646973636F20656E206C6120A5 +S315E0617D30756E696461642025633A2E7C50756C7357 +S315E0617D4065204F4B2073F36C6F207369206E6F2053 +S315E0617D506C6520696D706F727461207065722D7CDF +S315E0617D6064657220746F646F73206C6F73206461F5 +S315E0617D70746F732E5D5B20204F4B20207C43616ED8 +S315E0617D8063656C61725D00204F7063696F6E6573E8 +S315E0617D9020004EFA6D65726F2064652063617270D2 +S315E0617DA0657461733A20202020205F5F5F5F5F002A +S315E0617DB053454C4543544F5220444520454C454D2F +S315E0617DC0454E544F53005B325D5B4C6120756E6985 +S315E0617DD06461642025633A206E6F20726573706F0B +S315E0617DE06E64652E20496E736572746520756E20CA +S315E0617DF07C6D6564696F20616465637561646F2C30 +S315E0617E0020636965727265206C6120707565727454 +S315E0617E10612C207369207C736520747261746120C2 +S315E0617E20646520756E20646973636F206475726F33 +S315E0617E302C20636F6D707275656265206C61737C11 +S315E0617E40636F6E6578696F6E65732E5D5B43616EB8 +S315E0617E5063656C61727C5265696E74656E7461723C +S315E0617E605D005B335D5B5369207265616C6D656E68 +S315E0617E7074652071756965726520626F727261728F +S315E0617E8020746F64617C696E666F726D616369F3BC +S315E0617E906E206465206C6120756E6964616420257D +S315E0617EA0633A2070756C73657C4F4B2C2073692047 +S315E0617EB06E6F2C2043616E63656C61725D5B202041 +S315E0617EC04F4B20207C43616E63656C61725D005B44 +S315E0617ED0315D5B5075656465206D6F766572206CAA +S315E0617EE06120706170656C6572612064656E747243 +S315E0617EF06F2064656C207C6573637269746F726907 +S315E0617F006F2047454D2C207065726F206E6F206340 +S315E0617F106F6C6F6361726C617C656E63696D6120C4 +S315E0617F206465206F74726F2069636F6E6F2E5D5B3F +S315E0617F3020204F4B20205D00456C696D696E617252 +S315E0617F400053656C65636369F36E3A202020205FB8 +S315E0617F505F5F5F5F5F5F5F2E5F5F5F005B315D5BB2 +S315E0617F60456C20646F63756D656E746F2073656CC7 +S315E0617F70656363696F6E61646F206E6F20657374AC +S315E0617F80E12061736F2D7C636961646F2061206EAE +S315E0617F90696E67756E612061706C6963616369F3CF +S315E0617FA06E2E205574696C696365207C22436F6E21 +S315E0617FB0666967757261722061706C696361636934 +S315E0617FC0F36E2220706172612061736F6369617221 +S315E0617FD020657374657C7469706F20646520646F75 +S315E0617FE063756D656E746F206120756E6120617079 +S315E0617FF06C6963616369F36E7C6573706563ED6695 +S315E06180006963612E5D5B20204F4B20205D005469E2 +S315E0618010706F20646973636F3A005B325D5B456CD8 +S315E0618020207065726966E97269636F2064652073C1 +S315E0618030616C696461206E6F207265636962652057 +S315E06180406461746F737C616E7465732064652072BC +S315E061805065696E74656E7461722061736567FA72E3 +S315E06180606573652064652071756520657374E17C6F +S315E0618070636F6E65637461646F2C206F6E6C696E9D +S315E0618080652079207469656E6520706170656C2024 +S315E06180906F2066696C6D5D5B43616E63656C617291 +S315E06180A07C5265696E74656E7461725D005B315DAB +S315E06180B05B4E6F20707565646520656C696D696E90 +S315E06180C06172206C6120636172706574617C6D6957 +S315E06180D0736D6120656E2071756520657374E1204D +S315E06180E074726162616A616E646F2E5D5B20204FBE +S315E06180F04B20205D005B335D5B5061726120736193 +S315E06181006C76617220656C204465736B746F702068 +S315E0618110696E736572746520656C7C646973636F9F +S315E06181202047454D20656E206C6120756E696461FE +S315E06181306420413A2C20636965727265206C617CCA +S315E061814070756572746120792070756C7365204F06 +S315E06181504B2E7C53656C656363696F6E6520436125 +S315E06181606E63656C6172207369206E6F20717569EB +S315E06181706572652073616C2D7C76617220656C2019 +S315E06181804465736B746F702E5D5B20204F4B2020CE +S315E06181907C43616E63656C61725D005B315D5B4E14 +S315E06181A06F20736520656E6375656E7472612065B7 +S315E06181B06C2070726F6772616D6120464F524D41FE +S315E06181C0542E2053697C646973706F6E65206465B3 +S315E06181D020646F7320666C6F70707965732C2061B3 +S315E06181E0637469766520464F524D54207C646573AD +S315E06181F0646520656C20646973636F20444F532C1A +S315E06182002073692075736120756E20646973636F8D +S315E0618210206475726F7C636F70696520464F524D5D +S315E0618220415420616C206469726563746F72696F31 +S315E0618230207261ED7A2064656C207C6D69736D6F87 +S315E06182402E5D5B4F4B5D004E6F20436C69636B0047 +S315E06182505B315D5B546F646F206C6F207175652077 +S315E06182606576ED652061206C6120706170656C6595 +S315E061827072612C7C646973636F732C2063617270C5 +S315E0618280657461732C206669636865726F732065D6 +S315E061829074632C207C736572E120626F7272616433 +S315E06182A06F20646520666F726D61205045524D4165 +S315E06182B04E454E54457CA153454120435549444181 +S315E06182C0444F534F215D5B20204F4B20205D004999 +S315E06182D04E5354414C415220554E49444144204409 +S315E06182E04520444953434F0043617270657461733D +S315E06182F0206120626F727261723A20205F5F5F5F18 +S315E0618300005B325D5B4C6F73206461746F732064F4 +S315E061831065206C6120756E69646164202025633A2D +S315E06183202070756564656E7C6573746172206461E5 +S315E0618330F161646F732E20446562657320757361C4 +S315E06183407220656C206D6564696F7C6164656375D7 +S315E061835061646F206F20636F6E656374617220651F +S315E06183606C20646973636F206475726F7C636F728E +S315E061837072656374616D656E74652E5D5B43616E96 +S315E061838063656C61727C5265696E74656E74617207 +S315E06183905D0020204365727261722076656E74615C +S315E06183A06E61005B335D5B456C2047454D204465FE +S315E06183B0736B746F70206E6F20707565646520688D +S315E06183C0616C6C6172206C6F737C666963686572FF +S315E06183D06F73204445534B4C4F2E49434E2C2044FA +S315E06183E045534B48492E49434E2C7C6F20444553B7 +S315E06183F04B544F502E494E4620656E206C6F73206C +S315E0618400656E6F74726E6F732064657C706174689B +S315E06184102064656C20444F532E20204573746F733E +S315E0618420206669636865726F7320736F6E206E652F +S315E06184302D7C6365736172696F732070617261200F +S315E0618440636F7272657220656C2047454D2E5D5B88 +S315E061845043616E63656C61725D004EFA6D65726F64 +S315E061846020646520656C656D656E746F733A202076 +S315E06184702020205F5F5F5F5F00456D75544F53203D +S315E06184807365206469737472696275796520626186 +S315E06184906A6F2047504C005B315D5B4E6F206861CF +S315E06184A07920737566696369656E74652065737055 +S315E06184B06163696F20656E20656C20646973636FC3 +S315E06184C07C7061726120746F646F206C6F2071756E +S315E06184D0652073652071756965726520636F706982 +S315E06184E061722E7C4E6F206F627374616E652C20B3 +S315E06184F0616C67756E6F7320656C656D656E746FC3 +S315E0618500732070756564656E7C68616265727365BA +S315E061851020636F706961646F2E5D5B20204F4B2035 +S315E0618520205D00204F7264656E20003C416C743EB4 +S315E0618530206E6F20696E6963696172206469736335 +S315E06185406F206475726F0020204F7264656E617290 +S315E061855020706F7220666563686120202007540091 +S315E06185604D4D2D44442D4141002020416272697296 +S315E061857000466F726D61746F2074656D706F7261C4 +S315E06185806C3A0020204F7264656E617220706F7282 +S315E0618590206E6F6D6272652020074E002020436574 +S315E06185A0727261722073697374656D612020202037 +S315E06185B05E51004DE17175696E6100566572736970 +S315E06185C0F36E00496E74726F64757A636120656CEF +S315E06185D0206E6F6D627265206465736561646F209C +S315E06185E064656C20646F63756D656E746F0061635D +S315E06185F065707461626C657320706F722065737407 +S315E0618600652070726F6772616D612E005B335D5BD1 +S315E06186105061726120636F7272657220656C20478A +S315E0618620454D204465736B746F7020696E73657236 +S315E061863074657C737520646973636F20656E206C05 +S315E06186406120756E69646164204120792070756C82 +S315E06186507365204F4B206F20456E7465727C506167 +S315E0618660726120766F6C76657220616C20444F533F +S315E06186702F544F5320656C696A612043616E63656F +S315E06186806C61725D5B20204F4B20207C43616E63A1 +S315E0618690656C61725D00446F63756D656E746F7371 +S315E06186A0004279746573206C69627265733A202061 +S315E06186B05F5F5F5F5F5F5F5F5F5F005B325D5B4E2A +S315E06186C06F20736520707565646520657363726993 +S315E06186D062697220656E20656C20646973636F20E0 +S315E06186E06465206C6120756E696461647C25633ABA +S315E06186F0202C20657374E12070726F74656769641C +S315E06187006F20636F6E7472612065736372697475ED +S315E061871072612E7C416E7465732064652072656951 +S315E06187206E74656E7461722064657370726F74E9FC +S315E06187306A616C6F7C6F2063616D62696520656CEF +S315E061874020646973636F2E5D5B43616E63656C6123 +S315E0618750727C5265696E74656E7461725D005B31DF +S315E06187605D5B4E6F2073652070756564652061623F +S315E0618770726972206C6120706170656C6572617C92 +S315E06187807061726120626F7272617220756E2064CF +S315E06187906973636F2C63617270657461207C646F69 +S315E06187A063756D656E746F206F2061706C6963616E +S315E06187B06369F36E2C207C617272E1737472656C2D +S315E06187C06F206861636961206C6120706170656CBE +S315E06187D06572612E5D5B20204F4B20205D005B3230 +S315E06187E05D5B59612065786973746520756E61209A +S315E06187F06361727065746120636F6E206573657C19 +S315E06188006E6F6D627265206F20656C20646973635B +S315E06188106F20657374E1206C6C656E6F2E7C436FBF +S315E06188206D70727565626520656C206E6F6D6272E2 +S315E061883065207920656C206573706163696F7C6C16 +S315E061884069627265206F2063616E63656C652E5D3A +S315E06188505B2043616E63656C6172207C2052656961 +S315E06188606E74656E746172205D00BF436F6E66699A +S315E0618870726D6120626F727261723F0045746971F7 +S315E0618880756574612064656C2069636F6E6F3A200B +S315E0618890205F5F5F5F5F5F5F5F5F5F5F5F00506F3E +S315E06188A072206661766F722C20657870756C73657F +S315E06188B020656C20666C6F70707920792070756CBC +S315E06188C073652052455455524E0050726F6A656326 +S315E06188D0742D49642D56657273696F6E3A20504105 +S315E06188E0434B4147452056455253494F4E0A504FF7 +S315E06188F0542D4372656174696F6E2D446174653A96 +S315E061890020323030332D30372D32392032313A341E +S315E0618910322B303230300A504F2D526576697369A9 +S315E06189206F6E2D446174653A20323030352D3034C6 +S315E06189302D32392031353A34302B303230300A4CF1 +S315E06189406173742D5472616E736C61746F723A20E7 +S315E061895047656F726765204E616B6F73203C676731 +S315E06189606E4061746172692E6F72673E0A4C616E28 +S315E061897067756167652D5465616D3A204E6F6E6509 +S315E06189800A4D494D452D56657273696F6E3A2031D0 +S315E06189902E300A436F6E74656E742D547970653A44 +S315E06189A020746578742F706C61696E3B20636861D1 +S315E06189B0727365743D49534F2D383835392D310A17 +S315E06189C0436F6E74656E742D5472616E7366657213 +S315E06189D02D456E636F64696E673A20386269740A21 +S315E06189E0005B315D5B92A620A7A8E69AA898A3A34F +S315E06189F098209B9CA420E2AE9CA02098A8A19CAB69 +S315E0618A00E620AEE0A8A6209AA0987CA4982098A437 +S315E0618A10A6E5A59CA020E1A2A2A62098A8AE9CE529 +S315E0618A20A62E2082A09820A49820A1E1A49CAB9CCC +S315E0618A307CAEE9A8A62C20A1A29CE5A9AB9C20E688 +S315E0618A40A7A6A0982098A8AE9CE598209B9CA47CBC +S315E0618A50AEA89CA0E19D9CA9AB9C2E5D5B20204FBE +S315E0618A604B20205D0020204EE2A6AA2094E1A1AA37 +S315E0618A70A2A6AA2E2E2E00EEA4A6A39820AD98A1BA +S315E0618A80E2A2A6AC3A20205F5F5F5F5F5F5F5F2E29 +S315E0618A905F5F5F0092A620A9E7A9AB9EA39820A796 +S315E0618AA0E19AE0A99C2100A49820ADA6A8ABE9A92A +S315E0618AB09CAB9C2C20E3209AA8E1AFAB9C20A798C5 +S315E0618AC0A898A3E2ABA8A6ACAA20A7A6AC005B33A4 +S315E0618AD05D5B8AACA7A6E7A398A9AB9C2C2098A27C +S315E0618AE0A2E1209B9CA420A3A7A6A89CE5AB9C2021 +S315E0618AF0A4982099E1A29CAB9C7CA798A898A7E151 +S315E0618B00A4E020ADE1A19CA2A6ACAA20A3E2A9982B +S315E0618B1020A9ABA6A420ABA8E2AEA6A4AB982E7C16 +S315E0618B20839CE5AB9C20ABA620646F63756D656E37 +S315E0618B30746174696F6E209AA09820AB9820E6A85C +S315E0618B40A09820A9ABA6ACAA7CADE1A19CA2A6ACFB +S315E0618B50AA20A3E2A99820A99C20E1A2A2A6ACAA98 +S315E0618B6020ADE1A19CA2A6ACAA2E5D5BEAA1ACA870 +S315E0618B70A65D00839EA3A0A6ACA89AE5983A2020BC +S315E0618B805F5F2D5F5F2D5F5F20200020209298A5BB +S315E0618B90A0A4E6A39EA99E20A198ABE120A3E29AB8 +S315E0618BA09C9FA6AA20202020075A008E8B8E888E55 +S315E0618BB0208E8C8E8B8020898092802092868C207C +S315E0618BC0808C9288829080948600929CA29CACABC9 +S315E0618BD098E5982098A2A2989AE33A20205F5F2FC1 +S315E0618BE05F5F2F5F5F00839CE5AB9C20ABA6206453 +S315E0618BF06F632F6C6963656E63652E74787400AB21 +S315E0618C00A6AC20AD98A1E2A2A6AC20A7A6AC209F17 +S315E0618C10E2A29CAB9C20A498209B9EA3A0A6ACA8B4 +S315E0618C209AE3A99CAB9C2E0083A0E19998A9A398AD +S315E0618C302F82A8E1AFA0A3A6008F908E92888B8643 +S315E0618C4091848891009298AEE7AB9EAB98209BA009 +S315E0618C50A7A2A6E720A1A2E5A13A0020208FA8A6B7 +S315E0618C60ABA0A3E3A99CA0AA2E2E2E008F98A8E123 +S315E0618C70A39CABA8A6A03A20205F5F5F5F5F5F5FC2 +S315E0618C805F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5FAD +S315E0618C905F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F9D +S315E0618CA05F5F5F5F5F5F5F5F5F5F5F5F5F00F0A812 +S315E0618CB09820ABA6AC20626F6F7400808C9288823C +S315E0618CC09080948620948089848A978C202F208056 +S315E0618CD090958488978C00202091E9A9A0A3A6208D +S315E0618CE06465736B746F7020202020202020202023 +S315E0618CF0202020075600202084A3ADE1A4A0A99EF0 +S315E0618D0020E0AA20A19CE5A39CA4A6202020200720 +S315E0618D10530080A8AEE320A69FE6A49EAA0081E167 +S315E0618D20A2AB9C20AB9E2053544152545550209B9C +S315E0618D30A0A9A1E2AB9820ABA6AC2047454D008F38 +S315E0618D408A86908E948E9088849120838891898E8C +S315E0618D5093009CA0A1A6A4E59BA0A6208CE2A6AA6E +S315E0618D602094E1A19CA2A6AA20A198A020A9ACA3E7 +S315E0618D70A7A29EA8E9A9AB9C004279746573209C81 +S315E0618D80A420AEA8E3A99E3A20205F5F5F5F5F5FA4 +S315E0618D905F5F5F5F005B325D5B92A620A7A8E69AA4 +S315E0618DA0A898A3A398209B9CA420A3A7A6A89CE52A +S315E0618DB020A498209BA09899E1A99CA07C9B9C9B70 +S315E0618DC0A6A3E2A49820A9ABA62064726976652081 +S315E0618DD025633A2E2086209BA0A9A1E2AB9820A725 +S315E0618DE0A8E2A79CA020A4987C9CE5A498A020ADCD +S315E0618DF0A6A8A398A8A0A9A3E2A49E2C20A198A0C6 +S315E0618E0020ABA620647269766520A7A8E2A79CA03C +S315E0618E1020A4987C9CE5A498A020A9ACA49B9C9BEB +S315E0618E209CA3E2A4A620A9ABA6A420ACA7A6A2A671 +S315E0618E309AA0A9ABE320A998AA2E5D5BEAA1ACA8AA +S315E0618E40A67C8D98A4E15D0020208FA29EA8A6ADA8 +S315E0618E50A6A8E59CAA2044656B746F702E2E2E2021 +S315E0618E60202000EAA1ACA8A600ABA8E2AEA6A420A9 +S315E0618E70A798A8E19FACA8A62C20A1E1A4AB9C2071 +S315E0618E809BA0A7A2E620A1A2A0A120A9ABA6005B18 +S315E0618E90315D5B839CA420A3A7A6A89CE5AB9C203F +S315E0618EA0A4982099E1A29CAB9C20AD98A1E2A2A6F0 +S315E0618EB0ACAA2C2098A8AE9CE59820E37C9CAD9862 +S315E0618EC0A8A3A69AE2AA20A9AB9EA4209CA7A0ADDE +S315E0618ED0E1A49CA098209CA89A98A9E598AA2E203E +S315E0618EE020EEA3E0AA2C7CA3A7A6A89CE5AB9C20D8 +S315E0618EF0A49820AB982098A4ABA09AA8E1AF9CABCC +S315E0618F009C20A99C209BE5A9A1A6ACAA20E37CA410 +S315E0618F109820AB982099E1A29CAB9C20A9ABA6A432 +S315E0618F2020A1E19BA62098A7A6A8A8A0A3E1ABE013 +S315E0618F30A42E5D5B20204F4B20205D005B315D5BA5 +S315E0618F40839CA420ACA7E1A8AE9CA02098A8A19C94 +S315E0618F50ABE6AA209CA29CE79F9CA8A6AA20AEE9C4 +S315E0618F60A8A6AA7C9AA09820A49820A9ACA4ABA6AE +S315E0618F70A4E5A99CAB9C20AB9EA4209CAD98A8A33C +S315E0618F80A69AE32E2082A09820A4987C9CA29CAC11 +S315E0618F909F9CA8E9A99CAB9C20AEE9A8A62C209F42 +S315E0618FA09820A7A8E2A79CA020A4987C98AD98A059 +S315E0618FB0A8E2A99CAB9C20A3E5982098A7E620AB04 +S315E0618FC0A0AA20E39B9E20A9ACA4ABA6A4A0A9A3DA +S315E0618FD0E2A49CAA7C9CAD98A8A3A69AE2AA2E5D7F +S315E0618FE05B20204F4B20205D002020849AA198AB26 +S315E0618FF0E1A9AB98A99E206469736B206472697676 +S315E0619000652E2E2E0082A09820A498209B9EA3A078 +S315E0619010A6ACA89AE3A99CAB9C20E2A49820A4E222 +S315E0619020A620ADE1A19CA2A620A9ABA6005B335D1B +S315E06190305B444F53206572726F72202325642E5D07 +S315E06190405BEAA1ACA8A65D008E89002020EEA4A60D +S315E0619050A3983A205F5F5F5F5F5F5F5F2E5F5F5FF1 +S315E06190600084A7A0999C9998E5E0A99E2098A4AB75 +S315E0619070A09AA898ADE9A43B0092E7A7A6AA2043E7 +S315E06190805055005B315D5B839CA420A3A7A6A89C99 +S315E0619090E5AB9C20A4982099E1A29CAB9C20ABA671 +S315E06190A0A420A1E19BA67C98A7A6A8A8A0A3E1AB72 +S315E06190B0E0A420A99C20E2A49820A798A8E19FAC0F +S315E06190C0A8A62E5D5B20204F4B20205D005B315DC5 +S315E06190D05B92A620647269766520A7A6AC209B9E0A +S315E06190E0A2E9A998AB9C209B9CA420ACA7E1A8AE81 +S315E06190F09CA02E7C84A2E29AA5AB9C20ABA6209A8A +S315E0619100A8E1A3A39820A7A6AC209CA0A9E19A9880 +S315E0619110AB9C2E5D5BEAA1ACA8A65D00EEAEA000BD +S315E06191208C98A00091A1A29EA8E6AA0086AE9EAB0D +S315E0619130A0A1E1209CADE23A00889BA0E6AB9EABA4 +S315E06191409CAA3A0082A8E1A3A39820647269766535 +S315E06191503A20205F3A0082A09820ABA620A39CA487 +S315E0619160A6E73A005B335D5BEBA49820A9ADE1A28B +S315E0619170A39820A9ACA4E2999E20A39C20ABA67CEF +S315E0619180477261706869637320456E7669726F6E66 +S315E06191906D656E74204D616E616765722028474525 +S315E06191A04D292E7C8F98A898A198A2A6E7A39C202A +S315E06191B0A498209CA7A0A1A6A0A4E0A4E3A99CAB47 +S315E06191C09C20A39C20AB9EA47C8EA3E19B982080EF +S315E06191D0A4E1A7ABACA59EAA20ABA6AC20456D7574 +S315E06191E0544F5320A198A020A4987CACA7A699E1FE +S315E06191F0A2A29CAB9C20E2A498206275672072656E +S315E0619200706F72742E5D5BEAA1ACA8A65D00EEA4F8 +S315E0619210A6A398209BA0A9A1E2AB98AA3A20205FD9 +S315E06192205F5F5F5F5F5F5F5F5F5F0080A8AE9CE5EA +S315E061923098209AA09820A999E3A9A0A3A63A20200C +S315E06192405F5F5F5F008BE29A9C9FA6AA20A99C2044 +S315E061925062797465733A20205F5F5F5F5F5F5F5F2E +S315E06192605F5F004472697665733A005B315D5B8E80 +S315E061927020ACA7A6A2A69AA0A9ABE3AA20A998AA20 +S315E0619280209B9CA420E2AE9CA02098A8A19CABE385 +S315E06192907CA3A4E3A39E209AA09820A49820ABA8DF +S315E06192A0E2A59CA020AB9EA4209CAD98A8A3A69A1B +S315E06192B0E37CA7A6AC209CA7A0A2E2A598AB9C2ED6 +S315E06192C05D5B20204F4B20205D00202091ACA4AB5C +S315E06192D0A6A4A0A9A3E6AA209C9A98A8A3A69AE325 +S315E06192E0AA2E2E2E20200741009CAD98A8A3A69A0F +S315E06192F0E3005B335D5B8AE19FA6AA2091ACA4E1C2 +S315E0619300A8AB9EA99E20235D5BEAA1ACA8A65D0001 +S315E06193105B335D5B8E20ACA7A6A2A69AA0A9ABE360 +S315E0619320AA20A998AA209B9CA420E2AE9CA02098A2 +S315E0619330A8A19CABE37CA3A4E3A39E209AA098207A +S315E0619340A49820ABA8E2A59CA020ABA62047454DFA +S315E0619350204465736B746F702E5D5B20536F727220 +S315E061936079205D0091818691888B8E2094808984B5 +S315E06193708A978C202F208090958488978C008F8A9D +S315E061938086908E948E9088849120948089848A8E4A +S315E061939093008B8B2D86862D959500EEA4A6A398DA +S315E06193A02098A4ABE59AA898ADA6AC3A20205F5F79 +S315E06193B05F5F5F5F5F5F2E5F5F5F00849AA198ABDF +S315E06193C0E1A9AB98A99E0084A7A0999C9998E5E04C +S315E06193D0A99E206F76657277726974653B0084A297 +S315E06193E09CE79F9CA89E204661737452414D009212 +S315E06193F0E7A7A6AA209EA39CA8A6A39EA4E598AAF1 +S315E06194003A00808C8E88828B8020849480908B8ECB +S315E0619410828691005B325D5B92A620A7A8E69AA858 +S315E061942098A3A398209B9CA420A3A7A6A89CE5202B +S315E0619430A4982099A89CE520ABA67CADE1A19CA26D +S315E0619440A620E320ABA62098A8AE9CE5A620A7A619 +S315E0619450AC20A7A8A6A9A7989F9CE5AB9C20A49859 +S315E06194607C98A4A6E5A59CAB9C2E2084A2E29AA555 +S315E0619470AB9C20ABA620E6A4A6A39820A7A6AC2029 +S315E06194809CA0A9E19A98AB9C2E5D5B20204F4B2076 +S315E0619490205D0091ABA6A7008BE6A4A6209AA098D2 +S315E06194A02083A0E19998A9A3980092A8E2AEA6A428 +S315E06194B020E6A4A6A3983A20205F5F5F5F5F5F5FC7 +S315E06194C05F2E5F5F5F005B335D5B839CA420A3A738 +S315E06194D0A6A89CE5AB9C20A4982098A4ABA09AA8EA +S315E06194E0E1AF9CAB9C20E2A49820ADE1A19CA2A651 +S315E06194F07CA99C20E2A49820ACA7A6ADE1A19CA2A0 +S315E0619500E620ABA6AC2E5D5B20204F4B20205D00B4 +S315E06195105B335D5B8AACA7A6E7A398A9AB9C2C20DD +S315E061952098A2A2E120ABA620E6A4A6A398209498EF +S315E0619530A1E2A2A6AC20A7A6AC7C9BE9A998AB9CCC +S315E061954020ACA79CA89998E5A49CA020ABA620A3F3 +S315E0619550E29AA0A9ABA62098A8A09FA3E67CAE98C4 +S315E0619560A898A1ABE3A8E0A42E20839CE5AB9C2060 +S315E0619570ABA620646F63756D656E746174696F6EB9 +S315E0619580209AA0987CAB9820E6A8A09820A9ABA6E3 +S315E0619590A42098A8A09FA3E620AE98A898A1ABE3E3 +S315E06195A0A8E0A420A7A6AC7CA3A7A6A89CE5AB9C53 +S315E06195B020A498209CA0A9E19A9CAB9C2E5D5B209F +S315E06195C020204F4B2020205D0092E7A7A6AA209C91 +S315E06195D0A0A1A6A4A09BE5A6AC3A003132E0A8A67C +S315E06195E0005B315D5B92A62047454D204465736B18 +S315E06195F0746F70209B9CA420E2AE9CA020E1A2A2A5 +S315E061960098209BA0989FE2A9A0A3987CA798A8E13F +S315E06196109FACA8982E208FA8E5A42098A4A6E5A5DE +S315E06196209CAB9C20E2A498209BE5A9A1A62C7CA1F9 +S315E0619630A29CE5A9AB9C20E2A49820A798A8E19F0B +S315E0619640ACA8A620A7A6AC209B9CA47CAEA89EA9AC +S315E0619650A0A3A6A7A6A0E2AB9C2E5D5B20204F4B04 +S315E061966020205D00929EA420A6A3E19B982098A469 +S315E0619670E1A7ABACA59EAA20ABA6AC20456D75541F +S315E06196804F530080A8AE9CE598209AA0982098A4B4 +S315E0619690ABA09AA898ADE33A20205F5F5F5F0020B8 +S315E06196A080A8AE9CE5A62000256C6420627974658D +S315E06196B07320AEA89EA9A0A3A6A7A6A0A6E7A4AB81 +S315E06196C098A020A99C2025642098A8AE9CE5982EB8 +S315E06196D000EEA4A6A39820A7A8A69AA8E1A3A398BA +S315E06196E0ABA6AA3A20205F5F5F5F5F5F5F5F2E5F39 +S315E06196F05F008CE2A6AA20ADE1A19CA2A6AA008F9A +S315E061970098ABE3A9AB9C203C436F6E74726F6C3E81 +S315E0619710209AA09820A49820A798A898A1E1A3AF41 +S315E06197209CAB9C204155544F2F4143430020208FF1 +S315E0619730A29EA8A6ADA6A8E59CAA2F8B9CABA6A4E3 +S315E0619740A6A398A9E598200749008198A9A0A9A3AD +S315E0619750E2A4A6A020A99C2047504C20736F7572A5 +S315E06197606365005B315D5BEBA4982098A8AE9CE5F0 +S315E0619770A620A39C2098ACABE620ABA620E6A4A6E7 +S315E0619780A39820ACA7E1A8AE9CA020E39B9E7CA910 +S315E06197909C2098ACABE620ABA620ADE1A19CA2A64D +S315E06197A02C20E320ABA62098A8AE9CE5A620E2A0FB +S315E06197B0A498A07C526561642D4F6E6C792E2095DC +S315E06197C0A89EA9A0A3A6A7A6A0E3A9AB9C20AB9E51 +S315E06197D0A4209CA4ABA6A2E37C22496E666F2F52BD +S315E06197E0656E616D6522209AA09820A4982098A262 +S315E06197F0A2E1A59CAB9C20AB9EA47CA198ABE1A920 +S315E0619800AB98A99E20ABA6AC2098A8AE9CE5A6AC89 +S315E06198102E5D5B20204F4B20205D00A9AB9E20ADE5 +S315E0619820E6A8A39820A7A6AC209CA398AD98A4E54A +S315E06198309D9CAB98A020ABA620E6A4A6A398003297 +S315E061984034E0A8A60020209298A5A0A4E6A39EA94C +S315E06198509E20A198ABE120ABE7A7A620202020209F +S315E0619860202007500092E7A7A6AA209CAD98A8A35E +S315E0619870A69AE3AA3A0089A2E5A1008F98ABE3A98B +S315E0619880AB9C20274327209AA09820A49820ABA8D8 +S315E0619890E2A59CAB9C20A7A8E9A0A39820A3E598A4 +S315E06198A020A1A6A4A9E6A2980092E7A7A6A020987F +S315E06198B0A8AE9CE5E0A43A0082A8E1A3A39820645F +S315E06198C0726976653A20205F008C848E912094805F +S315E06198D089848A8E9100202084A1ABE2A29CA99E14 +S315E06198E020456D75434F4E202020202020202020EA +S315E06198F05E5A0091938C928E8C88918B8E912084A6 +S315E06199009480908B8E82869100202080A2A2989A84 +S315E0619910E32098A4E1A2ACA99EAA202020202020E1 +S315E0619920202020202007430084A29CE79F9CA89EDC +S315E06199302053542D52414D002020466F726D617463 +S315E06199402E2E2E0020209199E3A9A0A3A62E2E2EDD +S315E061995020202020202020202020202020200744B5 +S315E061996000202089A29CE5A9A0A3A60095A89CA0B9 +S315E0619970E19D9CAB98A020A7A2E3A89E20A3A4E3C7 +S315E0619980A39E3B00202084A3ADE1A4A0A99E20E094 +S315E0619990AA209CA0A1A6A4E59BA098202020202037 +S315E06199A020075300436F7079726967687420286392 +S315E06199B0292098A7E60044726976657320ABA6AC68 +S315E06199C02047454D444F53008F8A86908E948E9002 +S315E06199D0888491208C848E9320948089848A8E9366 +S315E06199E00094E1A19CA2A6A0209AA0982098A4AB9D +S315E06199F0A09AA898ADE33A20205F5F5F5F008F8A07 +S315E0619A0086908E948E908884912080909584888EBD +S315E0619A1093202F208B84928E8C8E8B809188800010 +S315E0619A205B335D5B92A620ADA6A8A3E1A8A0A9A33E +S315E0619A3098209F982091818691848820E6A298203B +S315E0619A40AB98209B9C9BA6A3E2A4987CA9ABA6209D +S315E0619A5064726976652025633A2E208F98ABE3A917 +S315E0619A60AB9C204F4B20A3E6A4A62098A4209B9C08 +S315E0619A70A47CA998AA209CA49BA098ADE2A8A6ACD8 +S315E0619A80A420AB98209B9C9BA6A3E2A49820A9ABBB +S315E0619A909E209BA0A9A1E2AB982E5D5B20208E89DA +S315E0619AA020207CEAA1ACA8A65D002084A7A0A2A69E +S315E0619AB09AE2AA200080A8A09FA3E6AA20AD98A179 +S315E0619AC0E2A2E0A43A202020202020205F5F5F5FB1 +S315E0619AD05F00848F888A8E828480912080909584CD +S315E0619AE088978C005B325D5B92A6206472697665CD +S315E0619AF0202563209B9CA42098A4AB98A7A6A1A847 +S315E0619B00E5A49CAB98A02E208FA8E2A79CA07CA49C +S315E0619B109820AEA89EA9A0A3A6A7A6A09CE5AB9C0B +S315E0619B2020ABA620A9E0A9ABE6209CE59BA6AA7C92 +S315E0619B309BA0A9A1E2AB98AA2C20A198A020A49809 +S315E0619B4020A1A29CE5A99CAB9C20ABA620A7A6A8D8 +S315E0619B50ABE1A1A02E7C80A420ABA620A7A8E699C4 +S315E0619B60A29EA398209CE5A498A020A39C20A9A1ED +S315E0619B70A29EA8E6209BE5A9A1A62C7C9CA2E29ADE +S315E0619B80A5AB9C20AB9E20A9ACA49B9CA9A3A6A255 +S315E0619B90A69AE59820ABA6AC2E5D5BEAA1ACA8A639 +S315E0619BA07C8D98A4E15D005B335D5B80A4209CE5E0 +S315E0619BB0A9AB9C20A9E59AA6ACA8A6AA20E6A8A08E +S315E0619BC0209FE2A29CAB9C20A49820A999E3A99C42 +S315E0619BD0AB9C7C8E8A8020AB98209B9C9BA6A3E263 +S315E0619BE0A49820A9ABA62064726976652025633ABC +S315E0619BF02C20A1E1A4AB9C7CA1A2E5A120A9ABA606 +S315E0619C00204F4B2E2080A2A2A0E9AA2C20A1E1A49C +S315E0619C10AB9C20A1A2A0A120A9ABA67CEAA1ACA89D +S315E0619C20A62E5D5B20204F4B20207CEAA1ACA8A646 +S315E0619C305D005B315D5B8BA7A6A89CE5AB9C20A430 +S315E0619C40982099E1A29CAB9C20ABA6A420A1E19BC4 +S315E0619C50A67C98A7A6A8A8A0A3E1ABE0A420A99CAE +S315E0619C6020E1A2A29E20ABA6A7A69F9CA9E598208B +S315E0619C70A9ABA67C47454D204465736B746F702C28 +S315E0619C802098A2A2E1209B9CA420A3A7A6A89CE57C +S315E0619C90AB9C20A4987CABA6A420ABA6A7A69F9C70 +S315E0619CA0ABE3A99CAB9C20A7E1A4E020A99C20E1C1 +S315E0619CB0A2A2A6209CA0A1A6A4E59BA0A62E5D5B80 +S315E0619CC020204F4B20205D0080AD98E5A89CA99EA1 +S315E0619CD00084A7A0A2A69AE33A20205F5F5F5F5F58 +S315E0619CE05F5F5F2E5F5F5F005B315D5B92A6209C8D +S315E0619CF0E59BA6AA2098A8AE9CE5A6AC20A7A6AC53 +S315E0619D00209CA7A0A2E2A598AB9C209B9CA4209C4A +S315E0619D10E5A498A07CA9ACA4ABA6A4A0A9A3E2A45F +S315E0619D20A620A498209BA6ACA29CE79CA020A39C1D +S315E0619D3020A3E5987CA9AC9AA19CA1A8A0A3E2A4E2 +S315E0619D409E209CAD98A8A3A69AE32E2095A89EA9ED +S315E0619D50A0A3A6A7A6A0E3A9AB9C20ABA67C91ACE9 +S315E0619D60A4ABA6A4A0A9A3E62084AD98A8A3A69ACD +S315E0619D70E3AA209AA09820A49820A9ACAEA99CABAE +S315E0619D80E5A99CAB9C7C98ACABE620ABA6209CE5B8 +S315E0619D909BA6AA2098A8AE9CE5A6AC20A39C20A38E +S315E0619DA0E598209CAD98A8A3A69AE32E5D5B20205A +S315E0619DB04F4B20205D0092E7A7A6AA209BE5A9A1CB +S315E0619DC0A6AC3A005B325D5B92A620A79CA8A0ADEB +S315E0619DD09CA8A098A1E620A998AA209B9CA420A271 +S315E0619DE098A399E1A49CA07C9B9C9BA6A3E2A498E2 +S315E0619DF02E208FA8A0A420A598A498A7A8A6A9A775 +S315E0619E00989FE3A99CAB9C2C7CA9A09AA6ACA89C44 +S315E0619E10ACAB9CE5AB9C20E6ABA0209E20A9ACA9AF +S315E0619E20A19CACE320E2AE9CA020A89CE7A3982C81 +S315E0619E307C9CE5A498A0206F6E2D6C696E652C20E4 +S315E0619E40A198A020E2AE9CA020AE98A8ABE520E365 +S315E0619E5020ADE5A2A32E5D5BEAA1ACA8A67C8D98B8 +S315E0619E60A4E15D005B315D5B839CA420A3A7A6A80A +S315E0619E709CE5AB9C20A49820A999E3A99CAB9C2086 +S315E0619E80ABA620ADE1A19CA2A620A9ABA6A47CA627 +S315E0619E90A7A6E5A6209BA6ACA29CE79CAB9C2098D6 +S315E0619EA0ACABE320AB9E20A9ABA09AA3E32E5D5BAE +S315E0619EB020204F4B20205D005B335D5B82A09820C4 +S315E0619EC0A49820A9E9A99CAB9C20ABA62064657304 +S315E0619ED06B746F702C2099E1A2AB9C20AB9E7C9B4E +S315E0619EE0A0A9A1E2AB9820ABA6AC2047454D2044A2 +S315E0619EF045534B544F5020A9ABA6206472697665F1 +S315E0619F0020413A2CA1A29CE5A9AB9C20ABA620A757 +S315E0619F10A6A8ABE1A1A02C20A198A020A1E1A4ABC9 +S315E0619F209C20A1A2E5A120A9ABA67C4F4B2E208F58 +S315E0619F3098ABE3A9AB9C20EAA1ACA8A62098A420A3 +S315E0619F409B9CA4209FE2A29CAB9C20A4987CA9E95F +S315E0619F50A99CAB9C20ABA6206465736B746F702E75 +S315E0619F605D5B20204F4B20207CEAA1ACA8A65D007A +S315E0619F705B315D5B839CA420A3A7A6A8E920A49896 +S315E0619F802099A8E920ABA620A7A8E69AA898A3A35A +S315E0619F909820464F524D41542E2080A47CAEA89E17 +S315E0619FA0A9A0A3A6A7A6A09CE5AB9C209BE7A620BB +S315E0619FB064726976652C20A7A8E2A79CA020A49884 +S315E0619FC07CADA6A8A3E1A89CAB9C209BA0A9A1E23D +S315E0619FD0AB9CAA2098A7E620ABA620444F532E203F +S315E0619FE080A420E2AE9CAB9C7CA9A1A29EA8E620BF +S315E0619FF09BE5A9A1A62C2098A4ABA09AA8E1AFAB5A +S315E061A0009C20ABA620464F524D415420A9AB9E7C85 +S315E061A010726F6F74206469726563746F72792E5DB5 +S315E061A0205B4F4B5D0095E0A8E5AA20A1A2E5A10002 +S315E061A0305B315D5B8E20A1E19BA6AA2098A7A6A8CD +S315E061A040A8A0A3E1ABE0A4209CE5A498A020ABA6E0 +S315E061A050209CA0A1A6A4E59BA0A67CA9ABA620A670 +S315E061A060A7A6E5A62099E19D9CAB9C209BA0A9A112 +S315E061A070E2AB9CAA2C20ADE1A19CA2A6ACAA2C7C69 +S315E061A08098A8AE9CE5982C20E3209CAD98A8A3A661 +S315E061A0909AE2AA20A7A6AC209FE2A29CAB9C20A450 +S315E061A0A0987CA999E3A99CAB9C208B8E8C888B804C +S315E061A0B0215D5B20204F4B20205D00848289809268 +S315E061A0C08091928091862044524956450094E1A15F +S315E061A0D09CA2A6A0209AA09820A999E3A9A0A3A6EC +S315E061A0E03A20205F5F5F5F005B325D5B839C9BA68E +S315E061A0F0A3E2A49820A9ABA62064726976652025BF +S315E061A100633A20A3A7A6A89CE520A4987C98A2A27E +S315E061A110A6A0E99F9EA198A42E208FA8E2A79CA065 +S315E061A12020A49820AEA89EA9A0A3A6A7A6A09CE578 +S315E061A130AB9C20ABA67CA9E0A9ABE6209CE59BA6FF +S315E061A140AA209BA0A9A1E2AB98AA2E208FA8E2A79C +S315E061A1509CA020A4987CA9ACA49BE2A99CAB9C2082 +S315E061A160ABA620A9A19EA8E620A998AA209BE5A96D +S315E061A170A1A620A9E0A9ABE12E5D5BEAA1ACA8A608 +S315E061A1807C8D98A4E15D00202089A29CE5A9A0A32D +S315E061A190A620A798A8989FE7A8A6AC005B335D5B6D +S315E061A1A092A62047454D204465736B746F70209B82 +S315E061A1B09CA420A3A7A6A89CE520A4982099A89C86 +S315E061A1C0E520AB987C98A8AE9CE598204445534B36 +S315E061A1D04C4F2E49434E2C204445534B48492E491A +S315E061A1E0434E2C20E37C4445534B544F502E494E0D +S315E061A1F04620A9ABA62073656172636820706174BD +S315E061A2006820ABA6AC20444F532E7C80ACABE120FA +S315E061A210AB982098A8AE9CE59820AEA89CA0E19D5D +S315E061A220A6A4AB98A0209AA09820A4987CA29CA012 +S315E061A230ABA6ACA89AE3A99CA020ABA62047454D66 +S315E061A240204465736B746F702E5D5BEAA1ACA8A662 +S315E061A2505D0080A8A09FA3E6AA2098A8AE9CE5E051 +S315E061A260A43A20202020205F5F5F5F5F0092A620F6 +S315E061A270456D75544F53209BA098A4E2A39CAB987F +S315E061A280A020ACA7E620ABA62047504C005B315D31 +S315E061A2905B8E209BE5A9A1A6AA209B9CA420E2AEA9 +S315E061A2A09CA02098A8A19CABE620AEE9A8A6209A3E +S315E061A2B0A09820AB987C9B9C9BA6A3E2A49820A740 +S315E061A2C0A6AC20A7A8A6A9A7989F9CE5AB9C20A4CD +S315E061A2D0982098A4ABA09AA8E1AF9CAB9C2E7CEEAB +S315E061A2E0A3E0AA2C20A39CA8A0A1E12098A8AE9CFB +S315E061A2F0E59820A3A7A6A89CE520A49820E2AEA6AF +S315E061A300ACA47C98A4ABA09AA898AD9CE520E39B0D +S315E061A3109E2E5D5B20204F4B20205D002083A09C1C +S315E061A320AC9FE2AB9EA99E20008F98ABE3A9AB9C64 +S315E061A330203C416C7465726E6174653E209AA098AA +S315E061A34020A49820A798A898A1E1A3AF9CAB9C20F4 +S315E061A3504844440020209298A5A0A4E6A39EA99E25 +S315E061A36020A198ABE1209EA39CA8A6A39EA4E59814 +S315E061A3702007540086862D8B8B2D9595002020EA4B +S315E061A380A4A6A09AA3980092E7A7A6AA20AEA8E6FB +S315E061A390A4A6AC3A0020209298A5A0A4E6A39EA923 +S315E061A3A09E20A198ABE120E6A4A6A39820202020D8 +S315E061A3B02020074E00202053687574646F776E2005 +S315E061A3C02020202020202020202020202020205E08 +S315E061A3D0510093A7A6A2A69AA0A9ABE3AA00EBA116 +S315E061A3E09BA6A99E0082A8E1AFAB9C20ABA620E626 +S315E061A3F0A4A6A39820ABA6AC2098A8AE9CE5A6AC93 +S315E061A40020A7A6AC209FE2A29CAB9C009BE2AE9CFF +S315E061A410AB98A02098ACABE3209E209CAD98A8A316 +S315E061A420A69AE32E005B335D5B82A09820A4982018 +S315E061A430ABA8E2A59CAB9C20ABA62047454D20444A +S315E061A44065736B746F702C2099E1A2AB9C20AB9E17 +S315E061A4507C9BA0A9A1E2AB9820ABA6AC2047454D79 +S315E061A460204445534B544F5020A9ABA620647269F2 +S315E061A4707665208020A198A07CA1E1A4AB9C20A177 +S315E061A480A2A0A120A9ABA6208E8920E320A798AB44 +S315E061A490E3A9AB9C2052657475726E2E2082A098FA +S315E061A4A07C9CA7A0A9ABA6A8ADE320A9ABA6204456 +S315E061A4B04F532C20A1E1A4AB9C20A1A2A0A120A98D +S315E061A4C0ABA620EAA1ACA8A62E5D5B20208E8920F2 +S315E061A4D0207CEAA1ACA8A65D0098A8AE9CE59800B0 +S315E061A4E084A29CE79F9CA8982062797465733A2060 +S315E061A4F020205F5F5F5F5F5F5F5F5F5F005B325D35 +S315E061A5005B839CA420A3A7A6A89CE5AB9C20A4980A +S315E061A510209AA8E1AF9CAB9C20A9ABA620647269A6 +S315E061A52076657C25633A209AA098ABE5209CE5A404 +S315E061A53098A020A39EAE98A4A0A1E1207772697449 +S315E061A540652D7C70726F7465637465642E208FA867 +S315E061A550A0A420A598A498A7A8A6A9A7989FE3A9CF +S315E061A5609CAB9C2C7C999AE1A2AB9C20ABA6207714 +S315E061A570726974652D70726F74656374207461625B +S315E061A58020E37CABA8ACA7E3A9AB9C20AB9E209B68 +S315E061A590A0A9A1E2AB982E5D5BEAA1ACA8A67C8DF1 +S315E061A5A098A4E15D005B315D5B839CA420A3A7A6D3 +S315E061A5B0A89CE5AB9C20A4982098A4A6E5A59CABB5 +S315E061A5C09C20ABA6209CA0A1A6A4E59BA0A67CAB03 +S315E061A5D0E0A420A9A1A6ACA7A09BA0E9A420A99C80 +S315E061A5E020A798A8E19FACA8A62E2082A09820A4D7 +S315E061A5F0987CA999E3A99CAB9C20E2A49820ADE163 +S315E061A600A19CA2A62C2098A8AE9CE5A620E3209C5E +S315E061A610AD98A8A3A69AE32C7CA9E7A8AB9C20AB4E +S315E061A620A620A9ABA6A420A1E19BA62098A7A6A8EF +S315E061A630A8A0A3E1ABE0A42E5D5B20204F4B2020D8 +S315E061A6405D005B325D5BEBA498AA20ADE1A19CA2C3 +S315E061A650A6AA20A39C2098ACABE620ABA620E6A4F4 +S315E061A660A6A39820E39B9E7CACA7E1A8AE9CA02024 +S315E061A670E320A6209BE5A9A1A6AA20A998AA209CE9 +S315E061A680E5A498A0209A9CA3E1ABA6AA2E7C8FA80C +S315E061A690A6A9A7989FE3A9AB9C20A39C20E2A498D6 +S315E061A6A020A4E2A620E6A4A6A3982C20E32098A104 +S315E061A6B0ACA8E9A9AB9C7CA198A0209CA2E29AA552 +S315E061A6C0AB9C20ABA6A4209CA29CE79F9CA8A6205D +S315E061A6D0AEE9A8A62E5D5B20EAA1ACA8A6207C2007 +S315E061A6E08D98A4E1205D0084A7A0999C9998E5E006 +S315E061A6F0A99E209BA0989AA898ADE9A43B00EEA4F8 +S315E061A700A6A398209CA0A1A6A4A09BE5A6AC3A200E +S315E061A710205F5F5F5F5F5F5F5F5F5F5F5F008F9837 +S315E061A720A898A198A2E920999AE1A2AB9C20AB9E58 +S315E061A730209BA0A9A1E2AB9820A198A020A798AB05 +S315E061A740E3A9AB9C2052455455524E0050726F6A54 +S315E061A7506563742D49642D56657273696F6E3A202F +S315E061A760454D55544F5320626574610A504F542DDF +S315E061A7704372656174696F6E2D446174653A203226 +S315E061A7803031302D30392D31322030383A33332B78 +S315E061A790303430300A504F2D5265766973696F6E89 +S315E061A7A02D446174653A20323031302D30392D31A6 +S315E061A7B0322031313A35302B303430300A4C6173E6 +S315E061A7C0742D5472616E736C61746F723A20446970 +S315E061A7D06D6120536F626F6C6576203C6176746162 +S315E061A7E06E64696C333340676D61696C2E636F6D5E +S315E061A7F03E0A4C616E67756167652D5465616D3AB8 +S315E061A800205275737369616E0A4D494D452D5665E2 +S315E061A8107273696F6E3A20312E300A436F6E7465DA +S315E061A8206E742D547970653A20746578742F706C06 +S315E061A83061696E3B20636861727365743D727573BD +S315E061A8407369616E2D617461726973740A436F6EC7 +S315E061A85074656E742D5472616E736665722D456EA4 +S315E061A860636F64696E673A20386269740A005B31C6 +S315E061A8705D5BCFF0EEE3F0E0ECECE020EDE520E8C7 +S315E061A880ECE5E5F220E2EEE7ECEEE6EDEEF1F2E89C +S315E061A8907CEEF2EAF0FBF2FC20E5F9E520EEE4E895 +S315E061A8A0ED20E4EEEAF3ECE5EDF22E7CC7E0EAF0CA +S315E061A8B0EEE9F2E520E2F1E520EDE5EDF3E6EDFB2B +S315E061A8C0E520E4EEEAF3ECE5EDF2FB2C7CF7F2EE63 +S315E061A8D0E1FB20EEF1E2EEE1EEE4E8F2FC20F0E508 +S315E061A8E0F1F3F0F1FB2E5D5B2020CECA20205D0006 +S315E061A8F02020CDEEE2E0FF20EFE0EFEAE02E2E2E23 +S315E061A90000C8ECFF20EFE0EFEAE83A20205F5F5F06 +S315E061A9105F5F5F5F5F2E5F5F5F00256C6420CAC12A +S315E061A92000F5EEF2E8F2E520E7E0E3F0F3E7E8F2DE +S315E061A930FC20E8EBE820E2E2E5E4E8F2E520EFE09E +S315E061A940F0E0ECE5F2F0FB2C00D1E8F1F2E5ECE0C9 +S315E061A95020EEF1F2E0EDEEE2EBE5EDE0210A005BFF +S315E061A960335D5BCA20F1EEE6E0EBE5EDE8FE20E281 +S315E061A970FB20EDE520ECEEE6E5F2E520EFEEECE539 +S315E061A980F1F2E8F2FC20E5F9E57CEEE4EDF320EFA7 +S315E061A990E0EFEAF320E2EDF3F2F0E820F2E5EAF344 +S315E061A9A0F9E5E92E7CD7E8F2E0E9F2E520E4EEEAC2 +S315E061A9B0F3ECE5EDF2E0F6E8FE20EEE120EEE3F021 +S315E061A9C0E0EDE8F7E5EDE8FFF57CE220F1EEE7E4BE +S315E061A9D0E0EDE8E820EFE0EFEEEA20E2EDF3F2F019 +S315E061A9E0E820E4F0F3E3EEE920EFE0EFEAE82E5D5C +S315E061A9F05BCEF2ECE5EDE05D00D1EEE7E4E0EDEEB5 +S315E061AA003A205F5F2D5F5F2D5F5F20202020002071 +S315E061AA1020D1EEF0F2E8F0EEE2E0F2FC20EFEE209B +S315E061AA20F0E0E7ECE5F0F320075A00CACECDD4CBEF +S315E061AA30C8CAD220C8CCC5CD20CFD0C820CACECF17 +S315E061AA40C8D0CEC2C0CDC8C800C8E7ECE5EDE5ED3B +S315E061AA50EE3A20202020205F5F2F5F5F2F5F5F004F +S315E061AA60D1ECEEF2F0E820646F632F6C6963656E9A +S315E061AA7073652E74787420E4EBFF20E4E5F2E0EB95 +S315E061AA80E5E900F1EEE7E4E0E2E0E5ECEEE920EFAE +S315E061AA90E0EFEAE82E00D7F22E2FC7E0EF2E00CDE9 +S315E061AAA0C0D1D2D0CEC9CAC800D1EAEEF0EEF1F299 +S315E061AAB0FC20E4E22E20EDE0E6E0F2E8FF3A002059 +S315E061AAC020CDE0F1F2F0EEE9EAE82E2E2E00CFE0BD +S315E061AAD0F0E0ECE5F2F0FB3A20205F5F5F5F5F5FFD +S315E061AAE05F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F2F +S315E061AAF05F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F1F +S315E061AB005F5F5F5F5F5F5F5F5F5F5F5F5F5F00C20A +S315E061AB10F0E5ECFF20E7E0E3F0F3E7EAE800CACE30 +S315E061AB20CFC8D0CEC2C0D2DC20CFC0CFCAC8202F1A +S315E061AB3020D4C0C9CBDB002020D1EEF5F0E0EDE812 +S315E061AB40F2FC20EDE0F1F2F0EEE9EAE820202020E7 +S315E061AB5020200756002020CFEEEAE0E7E0F2FC2075 +S315E061AB60EAE0EA20F2E5EAF1F2202020202007532C +S315E061AB7000C7E0EFF3F1EA20F1E8F1F2E5ECFB0082 +S315E061AB80C2F1F2E0E2FCF2E520E2E0F820E7E0E3A0 +S315E061AB90F0F3E7EEF7EDFBE920E4E8F1EA2047457B +S315E061ABA04D00C8CDD4CED0CCC0D6C8DF20CE20C42F +S315E061ABB0C8D1CAC500CDEEE2E0FF20EFE0EFEAE002 +S315E061ABC020E820F1EBE5E4F3E9F2E520F3EAE0E7FA +S315E061ABD0E0EDE8FFEC20EEEAEDE02C00C1E0E9F221 +S315E061ABE020E8F1EFEEEBFCE7F3E5F2F1FF3A5F5FC8 +S315E061ABF05F5F5F5F5F5F5F5F005B325D5BCFF0EE24 +S315E061AC00E3F0E0ECECE020EDE520ECEEE6E5F220C9 +S315E061AC10EFF0EEF7E8F2E0F2FC20E4E0EDEDFBE5E3 +S315E061AC207CF120E4E8F1EAE02025633A202E202059 +S315E061AC30C4E8F1EA20E4EEEBE6E5ED7CE1FBF2FC6B +S315E061AC4020EEF2F4EEF0ECE0F2E8F0EEE2E0ED2C8C +S315E061AC5020E8ECE5F2FC20EFE8F2E0EDE8E57CE8FF +S315E061AC6020E1FBF2FC20EFF0E0E2E8EBFCEDEE2028 +S315E061AC70EFEEE4EAEBFEF7E5ED20EA7CE2E0F8E50B +S315E061AC80ECF320EAEEECEFFCFEF2E5F0F32E5D5B31 +S315E061AC90CEF2ECE5EDE07CCFEEE2F2EEF05D0020A7 +S315E061ACA020C8EDF4EEF0ECE0F6E8FF20EE20E4E516 +S315E061ACB0F1EAF2EEEFE52E2E2E20202000CEF2EC28 +S315E061ACC0E5EDE000EFEEE6E0EBF3E9F1F2E020E45A +S315E061ACD0E2E0E6E4FB20EAEBE8EAEDE8F2E520ED26 +S315E061ACE0E020E8EAEEEDEAE5005B315D5BC2FB2080 +S315E061ACF0EDE520ECEEE6E5F2E520EFE5F0E5F2E004 +S315E061AD00F9E8F2FC20E8EAEEEDEAE820EFE0EFEEC2 +S315E061AD10EA2C7CE4EEEAF3ECE5EDF2EEE220E8EB38 +S315E061AD20E820EFF0EEE3F0E0ECEC20EDE020E4E5A6 +S315E061AD30F1EAF2EEEF2E7CCEE4EDE0EAEE20E2FB24 +S315E061AD4020ECEEE6E5F2E520F1EAEEEFE8F0EEE2A0 +S315E061AD50E0F2FC20E8F520EDE020E4E8F1EAE87CC9 +S315E061AD60E8EBE820EFE5F0E5F2E0F9E8F2FC20E275 +S315E061AD7020CAEEF0E7E8EDF32E5D5B2020CECA2037 +S315E061AD80205D005B315D5BCDE5E4EEF1F2E0F2EE94 +S315E061AD90F7EDEE20EFE0ECFFF2E820E4EBFF207C5C +S315E061ADA0EAEEEDF4E8E3F3F0E0F6E8E820E4E0ED7E +S315E061ADB0EDEEE920EFF0EEE3F0E0ECECFB2E7CD794 +S315E061ADC0F2EEE1FB20EEF1E2EEE1EEE4E8F2FC2008 +S315E061ADD0EFE0ECFFF2FC2C7CE2FB20E4EEEBE6ED4F +S315E061ADE0FB20F3E4E0EBE8F2FC20EEE4EDF320E8AF +S315E061ADF0E77CEAEEEDF4E8E3F3F0E8F0F3E5ECFBAB +S315E061AE00F520E220E4E0EDEDEEE57CE2F0E5ECFF55 +S315E061AE1020EFF0EEE3F0E0ECEC2E5D5B2020CECAB5 +S315E061AE2020205D002020D3F1F2E0EDEEE2E8F2FCD5 +S315E061AE3020E4E8F1EA2E2E2E00D7F2EEE1FB20F1D6 +S315E061AE40EEE7E4E0F2FC20EDEEE2F3FE20EFE0EF88 +S315E061AE50EAF320E2EDF3F2F0E820F2E5EAF3F9E570 +S315E061AE60E92C20005B335D5BCEF8E8E1EAE0204463 +S315E061AE704F53202325642E5D5BCEF2ECE5EDE05D7C +S315E061AE8000CECA00C8ECFF3A20205F5F5F5F5F5F7C +S315E061AE905F5F2E5F5F5F00CFEEE4F2E2E5F0E6E44E +S315E061AEA0E0F2FC20EAEEEFE8F0EEE2E0EDE8E53F25 +S315E061AEB000C2E5F0F1E8FF20456D75544F5300D2CD +S315E061AEC0E8EF20435055005B315D5BC2FB20EDE569 +S315E061AED020ECEEE6E5F2E520EFE5F0E5F2E0F9E813 +S315E061AEE0F2FC20E8EAEEEDEAF37CCAEEF0E7E8EDA3 +S315E061AEF0FB20E220EEEAEDEE2E5D5B20204F4B205B +S315E061AF00205D005B315D5BC2FBE1F0E0EDEDFBE90D +S315E061AF1020E2E0ECE820E4E8F1EA20EDE520F1F377 +S315E061AF20F9E5F1F2E2F3E5F22E7CCFEEE6E0EBF362 +S315E061AF30E9F1F2E020EFF0EEE2E5F0FCF2E520E89F +S315E061AF40E4E5EDF2E8F4E8EAE0F2EEF07CE4E8F17B +S315E061AF50EAE020E5F9E520F0E0E72E5D5BCEF2EC94 +S315E061AF60E5EDE05D00CDE5F200C2EAEB00D5E0F0AB +S315E061AF70E400C7E2F3EAEEE2FBE520FDF4F4E5EA9C +S315E061AF80F2FB3A002020C0F2F0E8E1F3F2FB3A008E +S315E061AF90C1F3EAE2E020E4E8F1EAE03A20205F3A50 +S315E061AFA000CA20E2FBEFE0E4E0FEF9E8EC20ECE544 +S315E061AFB0EDFE3A005B335D5BCEF8E8E1EAE020471F +S315E061AFC07261706869637320456E7669726F6E6DE2 +S315E061AFD0656E74204D616E61676572202847454DE7 +S315E061AFE0292E7CCFEEE6E0EBF3E9F1F2E020F1E247 +S315E061AFF0FFE6E8F2E5F1FC20F120EAEEECE0EDE4D3 +S315E061B000EEE97CF0E0E7F0E0E1EEF2F7E8EAEEE2C5 +S315E061B01020456D75544F5320E820EFEEF8EBE8F2EA +S315E061B020E520E8EC7CF1EEEEE1F9E5EDE8E520EE30 +S315E061B030E120EEF8E8E1EAE52E5D5BCEF2ECE5EDE6 +S315E061B040E05D00202020CCE5F2EAE020E4E8F1EAE8 +S315E061B050E03A202020205F5F5F5F5F5F5F5F5F5F59 +S315E061B0605F00D3E4E0EBE8F2FC20F4E0E9EBEEE24A +S315E061B0703A205F5F5F5F0020D0E0E7ECE5F020E239 +S315E061B08020C1E0E9F2E0F53A20205F5F5F5F5F5F54 +S315E061B0905F5F5F5F00C4E8F1EAE83A005B315D5B00 +S315E061B0A0CDE020E2E0F8E5EC20EAEEECEFFCFEF242 +S315E061B0B0E5F0E520EDE5E4EEF1F2E0F2EEF7EDEE56 +S315E061B0C020EFE0ECFFF2E87CE4EBFF20E7E0EFF372 +S315E061B0D0F1EAE020E2FBE1F0E0EDEDEEE920EFF010 +S315E061B0E0EEE3F0E0ECECFB2E5D5B2020CECA2020A7 +S315E061B0F05D002020CDE0F1F2F0EEE8F2FC20EFF029 +S315E061B100EEE3F0E0ECECF32E2E2E2020200741005A +S315E061B110EFF0EEE3F0E0ECECE0005B335D5BCEF8A4 +S315E061B120E8E1EAE020F4F3EDEAF6E8E820235D5BA6 +S315E061B130CEF2ECE5EDE05D005B335D5BCDE020E218 +S315E061B140E0F8E5EC20EAEEECEFFCFEF2E5F0E52076 +S315E061B150EDE5E4EEF1F2E0F2EEF7EDEE20EFE0ECB4 +S315E061B160FFF2E87CE4EBFF20E7E0EFF3F1EAE020D1 +S315E061B17047454D2DC4E5F1EAF2EEEFE02E5D5B2049 +S315E061B180C8E7E2E8EDE8F2E5205D00D3C4C0CBC8EC +S315E061B190D2DC20CFC0CFCAC8202F20D4C0C9CBDB38 +S315E061B1A000C8CDD4CED0CCC0D6C8DF20CE20CFC0AB +S315E061B1B0CFCAC500C4C42DCCCC2DC3C300C8ECFF37 +S315E061B1C020EAEEEFE8E83A20205F5F5F5F5F5F5F6E +S315E061B1D05F2E5F5F5F00D3F1F2E0EDEEE2E8F2FC55 +S315E061B1E000CFEEE4F2E2E5F0E6E4E0F2FC20EFE542 +S315E061B1F0F0E5E7E0EFE8F1FC3F0046617374524148 +S315E061B2004D20F1E2EEE1EEE4EDEE00D4EEF0ECE0BD +S315E061B210F220E4E0F2FB3A00CED2CAD0DBD2DC2007 +S315E061B220CFD0CEC3D0C0CCCCD3005B325D5BCFF0A8 +S315E061B230EEE3F0E0ECECE020EDE520ECEEE6E5F2C5 +S315E061B24020EDE0E9F2E820EFE0EFEAF37CE8EBE815 +S315E061B25020E4EEEAF3ECE5EDF22C20EAEEF2EEF034 +S315E061B260FBE920E2FB20F5EEF2E8F2E57CEEF2EABC +S315E061B270F0FBF2FC2E20CFF0EEE2E5F0FCF2E52009 +S315E061B280EFF0E0E2E8EBFCEDEEF1F2FC20E8ECE574 +S315E061B290EDE82E5D5B2020CECA20205D00D1F2EE86 +S315E061B2A0EF00D2EBEAD7F2E5EDE8E500D2E5EAF3C5 +S315E061B2B0F9E5E520E8ECFF3A20205F5F5F5F5F5FDD +S315E061B2C05F5F2E5F5F5F005B335D5BC2FB20EDE539 +S315E061B2D020ECEEE6E5F2E520F1EAEEEFE8F0EEE20B +S315E061B2E0E0F2FC20EFE0EFEAF37CE220E5E520EF37 +S315E061B2F0EEE4EFE0EFEAF32E5D5B2020CECA20209C +S315E061B3005D005B335D5BCA20F1EEE6E0EBE5EDE81F +S315E061B310FE20E8ECFF20E4EBFF20EFE0EFEAE82C2B +S315E061B32020EAEEF2EEF0EEE520E2FB20E2E2E5EB8A +S315E061B330E82C7CF1EEE4E5F0E6E8F220F1EBE8F802 +S315E061B340EAEEEC20ECEDEEE3EE20E7EDE0EAEEE2AC +S315E061B3502E7CD7E8F2E0E9F2E520E4EEEAF3ECE50B +S315E061B360EDF2E0F6E8FE20EE20EBE8ECE8F2E5202F +S315E061B370EAEEEBE8F7E5F1F2E2E020E7EDE0EAEEAE +S315E061B380E22C7CEAEEF2EEF0EEE520E2FB20ECEE7A +S315E061B390E6E5F2E520E2E2E5F1F2E82E5D5B20200A +S315E061B3A0204F4B2020205D00D2E8EF20E8EAEEED69 +S315E061B3B0EAE83A0031322DF7E0F12E005B315D5B70 +S315E061B3C047454D2DE4E5F1EAF2EEEF20EDE520ECBF +S315E061B3D0EEE6E5F220EEF2EAF0FBF2FC7CE5F9E579 +S315E061B3E020EEE4EDEE20EEEAEDEE2E20CFE5F0E59F +S315E061B3F0E420EFEEE2F2EEF0EDEEE920EFEEEFFBC8 +S315E061B400F2EAEEE97CEEF2EAF0FBF2E8FF20E4E84C +S315E061B410F1EAE020E7E0EAF0EEE9F2E520E2F1E5E3 +S315E061B4207CEDE5E8F1EFEEEBFCE7F3E5ECFBE5203F +S315E061B430EEF2EAF0FBF2FBE520EEEAEDE02E5D5B93 +S315E061B4402020CECA20205D00C4E8F1EAE5F2E00002 +S315E061B45020CFE0EDE5EBFC2000CAEEECE0EDE4E0C8 +S315E061B46020F0E0E7F0E0E1EEF2F7E8EAEEE220452F +S315E061B4706D75544F5300D1EAEEEFE8F0EEE2E0F29B +S315E061B480FC20F4E0E9EBEEE23A20205F5F5F5F00EB +S315E061B49020D4E0E9EB2000256C6420E1E0E9F220CC +S315E061B4A0E8F1EFEEEBFCE7F3E5F2F1FF20E22025D0 +S315E061B4B06420EEE1FAE5EAF2E0F52E00C8ECFF2061 +S315E061B4C0EFF0EEE3F0E0ECECFB3A20205F5F5F5FEC +S315E061B4D05F5F5F5F2E5F5F5F00CDEEE2E0FF20EFD3 +S315E061B4E0E0EFEAE000D3E4E5F0E62EEDE0E6E0F257 +S315E061B4F0EEE9203C4374726C3E2DE1E5E72041556F +S315E061B500544F2F414343002020C8EDF4EE2FCFE5A1 +S315E061B510F0E5E8ECE5EDEEE2E0F2FC2E2E2E20071A +S315E061B5204900CEF1EDEEE2E0ED20EDE020E8F1F567 +S315E061B530EEE4EDE8EAE0F5202747504C27005B3181 +S315E061B5405D5BCEE1FAE5EAF220F120F3EAE0E7E0DD +S315E061B550EDEDFBEC20E8ECE5EDE5EC20F3E6E5204E +S315E061B560F1F3F9E5F1F2E2F3E5F27CE220E4E0ED14 +S315E061B570EDEEE920EFE0EFEAE520E8EBE820E8EC44 +S315E061B580E5E5F220F1F2E0F2F3F17CD2EEEBFCEAF2 +S315E061B590EE20D7F2E5EDE8E52E20C4EBFF20E8E703 +S315E061B5A0ECE5EDE5EDE8FF7CF1F2E0F2F3F1E020C8 +S315E061B5B0E8F1EFEEEBFCE7F3E9F2E520EAEEECE049 +S315E061B5C0EDE4F37C22C8EDF4EE2FCFE5F0E5E8ECAF +S315E061B5D0E5EDEEE2E0F2FC202E5D5B2020CECA20B6 +S315E061B5E0205D00EAEEF2EEF0EEE520EFEEFFE2E856 +S315E061B5F0F2F1FF20EFF0E820E2E2E5E4E5EDE8E8EC +S315E061B60020E8ECE5EDE80032342DF7E0F12E00209C +S315E061B61020D1EEF0F2E8F0EEE2E0F2FC20EFEE208F +S315E061B620F2E8EFF320202020075000D2E8EFFB207C +S315E061B630EFF0EEE3F0E0ECEC3A00CDE0E6E0F2E8E4 +S315E061B640E500D2E8EFFB20E4EEEAF3ECE5EDF2EEBD +S315E061B650E23A00CDE0E6ECE8F2E52027432720E494 +S315E061B660EBFF20E7E0EFF3F1EAE020EAEEEDF1EE61 +S315E061B670EBE800C1F3EAE2E020E4E8F1EAE03A204F +S315E061B6802020202020205F00C2FBEAEB00CDCEC265 +S315E061B690C0DF20CFC0CFCAC0002020C7E0EFF3F102 +S315E061B6A0F2E8F2FC20456D75434F4E2020202020C4 +S315E061B6B0205E5A00CDC0D1D2D0CEC8D2DC20CFD068 +S315E061B6C0CEC3D0C0CCCCD3002020C8E7ECE5EDE812 +S315E061B6D0F2FC20F0E0E7F0E5F8E5EDE8E520202092 +S315E061B6E0202020074300535452414D20F1E2EEE120 +S315E061B6F0EEE4EDEE002020D4EEF0ECE0F2E8F0EEE0 +S315E061B700E2E0F2FC2E2E2E002020D3E4E0EBE8F21C +S315E061B710FC2E2E2E202020202020202020202020DC +S315E061B7200744002020CDE020F8E0E320E2E2E5F006 +S315E061B730F500C2F1FF20E4EEF1F2F3EFEDE0FF2078 +S315E061B740EFE0ECFFF2FC3F00C4E0002020CFEEEA40 +S315E061B750E0E7E0F2FC20EAE0EA20E8EAEEEDEAE89A +S315E061B760202020200753002020436F70797269679B +S315E061B77068742028632900C4E8F1EAE82047454D6A +S315E061B780444F5300C8CDD4CED0CCC0D6C8DF20CE8E +S315E061B79020CDCEC2CEC920CFC0CFCAC500D1EAEE98 +S315E061B7A0EFE8F0EEE2E0F2FC20EFE0EFEEEA3A20DD +S315E061B7B020205F5F5F5F00C8CDD4CED0CCC0D6C855 +S315E061B7C0DF20CE20D4C0C9CBC5202F20CFC5D0C5C0 +S315E061B7D0C8CCC5CDCEC2C0D2DC005B335D5BD4EEF6 +S315E061B7E0F0ECE0F2E8F0EEE2E0EDE8E520D3C4C0AB +S315E061B7F0CBC8D220C2D1DE20E8EDF4EEF0ECE0F683 +S315E061B800E8FE7CF120E4E8F1EAE02025633A2E7C6B +S315E061B810CDE0E6ECE8F2E520CECA20F2EEEBFCEA1A +S315E061B820EE20E5F1EBE820E2FB20EDE520E1EEE854 +S315E061B830F2E5F1FC7CEFEEF2E5F0E820E8EDF4EE1E +S315E061B840F0ECE0F6E8E820EDE020FDF2EEEC20E455 +S315E061B850E8F1EAE52E5D5B2020CECA20207CCEF2BF +S315E061B860ECE5EDE05D0020CEEFF6E8E82000CAEE1B +S315E061B870EBE8F7E5F1F2E2EE20EFE0EFEEEA3A200F +S315E061B88020202020205F5F5F5F5F00C2FBE1EEF07A +S315E061B89020F3F1F2F0EEE9F1F2E2005B325D5BC4D6 +S315E061B8A0E8F1EA2025633A20EDE520EEF2E2E5F7FC +S315E061B8B0E0E5F22E2020C2FB20E4EEEBE6EDFB7C38 +S315E061B8C0E8F1EFEEEBFCE7EEE2E0F2FC20EFF0E030 +S315E061B8D0E2E8EBFCEDFBE920F2E8EF20E4E8F1EAEF +S315E061B8E0E02C7CEFF0E0E2E8EBFCEDEE20E2F1F259 +S315E061B8F0E0E2FCF2E520E5E3EE20E820E7E0EAF0CD +S315E061B900EEE9F2E520E4E2E5F0F6F32E7CC5F1EB53 +S315E061B910E820F320E2E0F120EFF0EEE1EBE5ECFB8D +S315E061B92020F120F5E0F0E42DE4E8F1EAEEEC2C7CA0 +S315E061B930EFF0EEE2E5F0FCF2E520F1EEE5E4E8EDCC +S315E061B940E8F2E5EBFCEDFBE920EAE0E1E5EBFC2E74 +S315E061B9505D5BCEF2ECE5EDE07CCFEEE2F2EEF05D42 +S315E061B960005B335D5BC5F1EBE820E2FB20F3E2E5EA +S315E061B970F0E5EDFB2C20F7F2EE20F5EEF2E8F2E5EC +S315E061B98020F3E4E0EBE8F2FC20C2D1DE7CE8EDF402 +S315E061B990EEF0ECE0F6E8FE20F120E4E8F1EAE02002 +S315E061B9A025633A202C20EDE0E6ECE8F2E520CECA0C +S315E061B9B02E7CC5F1EBE820EDE5F22C20EDE0E6EC3E +S315E061B9C0E8F2E520EDE020CEF2ECE5EDE02E5D5B20 +S315E061B9D02020CECA20207CCEF2ECE5EDE05D005B76 +S315E061B9E0315D5BC2FB20ECEEE6E5F2E520EFE5F0EA +S315E061B9F0E5F2E0F9E8F2FC20E8EAEEEDEAF320CAE6 +S315E061BA00EEF0E7E8EDFB7CEDE020E4F0F3E3EEE574 +S315E061BA1020ECE5F1F2EE20E4E5F1EAF2EEEFE02C7E +S315E061BA2020EEE4EDE0EAEE7CE2FB20CDC520CCCE73 +S315E061BA30C6C5D2C520EFEEECE5F1F2E8F2FC20E511 +S315E061BA40E520EDE020E4F0F3E3EEE520EEEAEDEE6D +S315E061BA502E5D5B2020CECA20205D00C8E7E2EBE5E3 +S315E061BA60F7FC00C2FBE1EEF03A202020205F5F5F49 +S315E061BA705F5F5F5F5F2E5F5F5F005B315D5BC2FB58 +S315E061BA80E1F0E0EDEDFBE920E2E0ECE820E4EEEA6E +S315E061BA90F3ECE5EDF220EDE520EDE0F1F2F0EEE537 +S315E061BAA0ED7CE4EBFF20F0E0E1EEF2FB20F120E457 +S315E061BAB0E0EDEDEEE920EFF0EEE3F0E0ECECEEE95F +S315E061BAC02E7CC8F1EFEEEBFCE7F3E9F2E520EFF36C +S315E061BAD0EDEAF220ECE5EDFE2022CDE0F1F2F0EECA +S315E061BAE0E8F2FC7CEFF0EEE3F0E0ECECF32220E44C +S315E061BAF0EBFF20EFF0E8E2FFE7EAE87CE4EEEAF369 +S315E061BB00ECE5EDF2E020EA20EFF0EEE3F0E0ECECDC +S315E061BB10E52E5D5B20204F4B20205D00D2E8EF20D3 +S315E061BB20E4E8F1EAE03A005B325D5BC2E0F8E52029 +S315E061BB30E2FBF5EEE4EDEEE520F3F1F2F0EEE9F1AC +S315E061BB40F2E2EE20EDE520EFEEEBF3F7E0E5F22051 +S315E061BB50E4E0EDEDFBF52E7CCFE5F0E5E420EFEEFC +S315E061BB60E2F2EEF0EEEC20F3E1E5E4E8F2E5F1FC99 +S315E061BB702C20F7F2EE20EDE020F3F1F2F0EEE9F1C0 +S315E061BB80F2E2EE7CEFEEE4E0E5F2F1FF20EFE8F2DF +S315E061BB90E0EDE8E52C20EEEDEE20E2EAEBFEF7E5FE +S315E061BBA0EDEE2C7CE820E220EDE5E3EE20E7E0E354 +S315E061BBB0F0F3E6E5EDE020E1F3ECE0E3E02E5D5B5A +S315E061BBC0CEF2ECE5EDE07CCFEEE2F2EEF05D005B2D +S315E061BBD0315D5BC2FB20EDE520ECEEE6E5F2E520CA +S315E061BBE0F3E4E0EBE8F2FC20EFE0EFEAF32C7CE251 +S315E061BBF020EAEEF2EEF0EEE920F1E5E9F7E0F12098 +S315E061BC00F0E0E1EEF2E0E5F2E52E5D5B2020CECA02 +S315E061BC1020205D005B335D5BC4EBFF20F1EEF5F068 +S315E061BC20E0EDE5EDE8FF20EDE0F1F2F0EEE5EA20AA +S315E061BC30E4E5F1EAF2EEEFE02C7CE2F1F2E0E2FC3F +S315E061BC40F2E520E2E0F820F1E8F1F2E5ECEDFBE97E +S315E061BC5020E4E8F1EA20E220E4E8F1EAEEE2EEE46B +S315E061BC6020413A7CE7E0EAF0EEE9F2E520E4E2E55C +S315E061BC70F0F6F320E4E8F1EAEEE2EEE4E020E82033 +S315E061BC80EDE0E6ECE8F2E520CECA2E7CCDE0E6EC2E +S315E061BC90E8F2E520EDE020CEF2ECE5EDE02C20E502 +S315E061BCA0F1EBE820E2FB20EDE520F5EEF2E8F2E5E6 +S315E061BCB020F1EEF5F0E0EDFFF2FC7CEDE0F1F2F083 +S315E061BCC0EEE9EAE820E4E5F1EAF2EEEFE02E5D5B2B +S315E061BCD02020CECA20207CCEF2ECE5EDE05D005B73 +S315E061BCE0315D5BCFF0EEE3F0E0ECECE020464F5205 +S315E061BCF04D415420EDE520EDE0E9E4E5EDE02E7C13 +S315E061BD00C5F1EBE820F320E2E0F8E5E3EE20EAEEC8 +S315E061BD10ECEFFCFEF2E5F0E020E4E2E020E4E8F1BD +S315E061BD20EAEEE2EEE4E02C7CF4EEF0ECE0F2E8F050 +S315E061BD30F3E9F2E520F120444F532DE4E8F1EAE539 +S315E061BD40F2FB2E20C5F1EBE87CF320E2E0F120E5A1 +S315E061BD50F1F2FC20F5E0F0E42DE4E8F1EA2C20F1E3 +S315E061BD60EAEEEFE8F0F3E9F2E520464F524D415451 +S315E061BD702E5052477CE220E5E3EE20EAEEF0EDE577 +S315E061BD80E2F3FE20E4E8F0E5EAF2EEF0E8FE2E5DAD +S315E061BD905B4F4B5D00CDE5EDE0E6E0F2E8E5005BAB +S315E061BDA0315D5BCAEEF0E7E8EDE0202D20FDF2EED5 +S315E061BDB020ECE5F1F2EE2C20EAF3E4E020E2FB2070 +S315E061BDC0ECEEE6E5F2E57CEFE5F0E5F2E0F9E8F2E6 +S315E061BDD0FC20EFE0EFEAE82C20E4EEEAF3ECE5EDB7 +S315E061BDE0F2FB20E8EBE820EFF0EEE3F0E0ECECFBD1 +S315E061BDF02C7CEAEEF2EEF0FBE520E2FB20F5EEF2DA +S315E061BE00E8F2E520F3E4E0EBE8F2FC20CDC0D1CE48 +S315E061BE10C2D1C5CC215D5B2020CECA20205D00D396 +S315E061BE20E4E5F0E62EEDE0E6E0F2EEE9203C53688B +S315E061BE306966743E20E4EBFF20EFE0F3E7FB00D3B5 +S315E061BE40D1D2C0CDCEC2C8D2DC20C4C8D1CA00D35B +S315E061BE50E4E0EBE8F2FC20EFE0EFEEEA3A20205F87 +S315E061BE605F5F5F005B325D5BC2EEE7ECEEE6EDEEF7 +S315E061BE7020E4E0EDEDFBE520EDE020E4E8F1EAE544 +S315E061BE802025633A20E8F1EFEEF0F7E5EDFB2E7C55 +S315E061BE90C2FB20E4EEEBE6EDFB20E8F1EFEEEBFC36 +S315E061BEA0E7EEE2E0F2FC20EFF0E0E2E8EBFCEDFB4E +S315E061BEB0E920F2E8EF20E4E8F1EAE5F2FB3B7CE237 +S315E061BEC0FB20E4EEEBE6EDFB20EFF0E0E2E8EBFCF5 +S315E061BED0EDEE20EFEEE4F1EEE5E4E8EDE8F2FC7C90 +S315E061BEE0E2E0F820F5E0F0E42DE4E8F1EA2E5D5BCE +S315E061BEF0CEF2ECE5EDE07CCFEEE2F2EEF05D002035 +S315E061BF0020C7E0EAF0FBF2FC20EEEAEDEE005B33FF +S315E061BF105D5B47454D2DE4E5EAF1F2EEEF20EDE5B7 +S315E061BF2020ECEEE6E5F220EDE0E9F2E820F4E0E986 +S315E061BF30EBFB7C4445534B4C4F2E49434E2C2044FE +S315E061BF4045534B48492E49434E2C20E8EBE82044C3 +S315E061BF5045534B544F502E494E467CE220EDF3E675 +S315E061BF60EDEEEC20ECE5F1F2E52E7CDDF2E820F495 +S315E061BF70E0E9EBFB20EDE5EEE1F5EEE4E8ECFB2054 +S315E061BF80E4EBFF20E7E0EFF3F1EAE07C47454D2D96 +S315E061BF90E4E5EAF1F2EEEFE02E5D5BCEF2ECE5EDA3 +S315E061BFA0E05D00CAEEEBE8F7E5F1F2E2EE20F4E0FF +S315E061BFB0E9EBEEE23A20202020205F5F5F5F5F00E1 +S315E061BFC02020D0E0F1EFF0EEF1F2F0E0EDFFE5F206 +S315E061BFD0F1FF20EFEE20EFF0E0E2E8EBE0EC204766 +S315E061BFE0504C005B315D5BCDE020E4E8F1EAE520B1 +S315E061BFF0EDE5E4EEF1F2E0F2EEF7EDEE20ECE5F1FF +S315E061C000F2E020E4EBFF7CEAEEEFE8F0EEE2E0ED71 +S315E061C010E8FF20E2F1E5E920E2E0F8E5E920E8ED94 +S315E061C020F4EEF0ECE0F6E8E82E7CCEE4EDE0EAEE64 +S315E061C0302C20E2EEE7ECEEE6EDEE20EDE5EAEEF25F +S315E061C040EEF0FBE520F4E0E9EBFB7CE1FBEBE820DD +S315E061C050F1EAEEEFE8F0EEE2E0EDFB20EDE020E480 +S315E061C060E8F1EA2E5D5B2020CECA20205D0020CF7C +S315E061C070EEEAE0E7E0F2FC2000D3E4E5F0E62EED5F +S315E061C080E0E6E0F2EEE9203C416C743E2DE1E5E765 +S315E061C0902048444420E7E0E3F0F3E7EAE8002020C3 +S315E061C0A0D1EEF0F2E8F0EEE2E0F2FC20EFEE20E431 +S315E061C0B0E0F2E520202020075400CCCC2DC4C42D2D +S315E061C0C0C3C3002020CEF2EAF0FBF2FC00D4EEF02E +S315E061C0D0ECE0F220E2F0E5ECE5EDE83A002020D193 +S315E061C0E0EEF0F2E8F0EEE2E0F2FC20EFEE20E8ECD2 +S315E061C0F0E5EDE8202020074E002020C2FBEAEBFEBA +S315E061C100F7E8F2FC2020202020202020202020209B +S315E061C110205E5100CAEEECEFFCFEF2E5F000C2E50E +S315E061C120F0F1E8FF00C2E2E5E4E8F2E520E8ECFFE1 +S315E061C13020E4EEEAF3ECE5EDF2E02C20EAEEF2EE55 +S315E061C140F0FBE920E2FB00E2EEF1EFF0E8EDE8EC8E +S315E061C150E0E5ECFBE520E4E0EDEDEEE920EFF0EE85 +S315E061C160E3F0E0ECECEEE92E005B335D5BC4EBFF04 +S315E061C17020E7E0EFF3F1EAE02047454D2DC4E5F134 +S315E061C180EAF2EEEFE020EFEEE6E0EBF3E9F1F2E082 +S315E061C1907CE2F1F2E0E2FCF2E520E4E8F1EAE5F2E4 +S315E061C1A0F32047454D204445534B544F5020E22000 +S315E061C1B0E4E8F1EAEEE2EEE420C07CE820F9E5EBC2 +S315E061C1C0EAEDE8F2E5204F4B20E8EBE820456E74B6 +S315E061C1D065722E20D7F2EEE1FB20E2E5F0EDF3F2B7 +S315E061C1E0FCF1FF20E220444F532C7CEDE0E6ECE8E5 +S315E061C1F0F2E520CEF2ECE5EDE02E5D5B2020CECAE5 +S315E061C20020207CCEF2ECE5EDE05D00E4EEEAF3ECD5 +S315E061C210E5EDF2FB00C1E0E9F220F1E2EEE1EEE408 +S315E061C220EDEE3A202020205F5F5F5F5F5F5F5F5FDB +S315E061C2305F005B325D5BC2FB20EDE520ECEEE6E59F +S315E061C240F2E520E7E0EFE8F1E0F2FC20E4E0EDED95 +S315E061C250FBE520EDE020E4E8F1EA7C25633A20EFB6 +S315E061C260EEF2EEECF320F7F2EE20EEED20F4E8E705 +S315E061C270E8F7E5F1EAE820E7E0F9E8F9E5ED7CEEF3 +S315E061C280F220E7E0EFE8F1E82E2020CFE5F0E5E403 +S315E061C29020F2E5EC20EAE0EA20EFEEE2F2EEF0E809 +S315E061C2A0F2FC2C7CF1EDE8ECE8F2E520E7E0F9E878 +S315E061C2B0F2F320E7E0EFE8F1E820E8EBE820EFEEE3 +S315E061C2C0ECE5EDFFE9F2E57CE4E8F1EA2E5D5BCED3 +S315E061C2D0F2ECE5EDE07CCFEEE2F2EEF05D005B31B3 +S315E061C2E05D5BC2FB20EDE520ECEEE6E5F2E520F0F4 +S315E061C2F0E0E7E2E5F0EDF3F2FC20CAEEF0E7E8ED27 +S315E061C300F320EAE0EA20EEEAEDEE2E7CD7F2EEE10A +S315E061C310FB20F3E4E0EBE8F2FC20E4E8F1EA2C2030 +S315E061C320EFE0EFEAF32C20E4EEEAF3ECE5EDF22060 +S315E061C330E8EBE87CEFF0EEE3F0E0ECECF320EFF035 +S315E061C340EEF1F2EE20EFE5F0E5F2E0F9E8F2E52074 +S315E061C350E5E57CEDE020E8EAEEEDEAF320CAEEF011 +S315E061C360E7E8EDFB2E5D5B20204F4B20205D005B17 +S315E061C370325D5BCFE0EFEAE020F120F2E0EAE8EC63 +S315E061C38020E8ECE5EDE5EC20F3E6E520F1F3F9E50F +S315E061C390F1F2E2F3E5F27CEDE020E4E8F1EAE520B2 +S315E061C3A0E8EBE820E4E8F1EA20EFEEEBEEED2E7C57 +S315E061C3B0CFEEEFF0EEE1F3E9F2E520E4F0F3E3EE60 +S315E061C3C0E520E8ECFF20E8EBE820EDE0E6ECE8F2DA +S315E061C3D0E57CCEF2ECE5EDE020E820EFF0EEE2E59B +S315E061C3E0F0FCF2E520EAEEEBE8F7E5F1F2E2EE7C6D +S315E061C3F0E4EEF1F2F3EFEDEEE3EE20ECE5F1F2E0FF +S315E061C40020EDE020E4E8F1EAE52E5D5B20CEF2EC9A +S315E061C410E5EDE0207C20CFEEE2F2EEF0205D00CFAC +S315E061C420EEE4F2E2E5F0E6E4E0F2FC20F3E4E0EBF0 +S315E061C430E5EDE8E53F00CCE5F2EAE020E8EAEEED9D +S315E061C440EAE83A20205F5F5F5F5F5F5F5F5F5F5F44 +S315E061C4505F00CFEEE6E0EBF3E9F1F2E020E8E7E258 +S315E061C460EBE5EAE8F2E520E4E8F1EAE5F2F320E873 +S315E061C470E720E4E8F1EAEEE2EEE4E020E820EDE050 +S315E061C480E6ECE8F2E52052455455524E00000000D4 +S315E061C4902079000106B410AF0005528823C8000177 +S315E061C4A006B44E75206F00044240600252804A181D +S315E061C4B066FA71404E75202F0004204060022041EB +S315E061C4C0220852814A1066F6226F0008121910C1DD +S315E061C4D066FA4E752F0A2F02226F000C206F00104C +S315E061C4E010192448670875007318B28267F2710003 +S315E061C4F07312B280670A5EC0A341488080816002A0 +S315E061C5004240241F245F4E752F02202F0010226FB8 +S315E061C5100008206F000C600253804A80670A7599B3 +S315E061C5207398B28267F260064240241F4E75B2820A +S315E061C53052C0A3414880808160F02F027419302F88 +S315E061C540000822000681FFFFFF9F73C1B481650683 +S315E061C5500680FFFFFFE0241F4E754FEFFFE448D7EB +S315E061C5603C1C262F0028246F0024286F002047FA00 +S315E061C570FFCA600253832A4A4A83672E141C6736D0 +S315E061C580100248803F004E93121A380048813E817E +S315E061C5904E937344548F7140B08167D86018B0810F +S315E061C5A05EC0A34148808081600242404CD73C1C1A +S315E061C5B04FEF001C4E75488245FAFF803F024E926E +S315E061C5C03400101548803E804E927342548F71401C +S315E061C5D0B08167D660C84E5600003039000106B0BA +S315E061C5E02F0A2F02486E0010246E000823CA00014C +S315E061C5F006B42F2E000C487AFE985280420233C070 +S315E061C600000106B04EB900E0F66C4FEF000C7340E6 +S315E061C610158218003239000106B0242EFFF8246E27 +S315E061C620FFFC4E5E538133C1000106B04E750000DA +S315E061C6302F02302F000A736F000CC1EF00084C41E6 +S315E061C6400800241F4E750000424020790000527AAE +S315E061C6504FEFFFF448D7001C3228000CA34331406A +S315E061C66000043140000833C0000140B83410714223 +S315E061C670B680672C7864B8806726558F3F014EB9DE +S315E061C68000E1CCA6588F4A80675420407368002445 +S315E061C690163C0004B681670A42043144000A60022E +S315E061C6A042802202538177C17826B883651073414F +S315E061C6B02F0041F900E4F7B020701C00601C06828F +S315E061C6C0FFFFFF9C73C27622B681651275422F0029 +S315E061C6D041F900E4F84C20702C004E90588F4CD70D +S315E061C6E0001C4FEF000C4E752F027414302F0008BA +S315E061C6F0C1FC000332007140C3FC147BE4A1143C2D +S315E061C700000FE4A0241F9280A340C081E281E78804 +S315E061C71080814E754FEFFFF048D7041C4A790001DE +S315E061C7202BB8664C4A7900012BA066443F2F001670 +S315E061C73045FAFFB64E92548F3F2F001836004E925F +S315E061C740548F3F2F001AE18B34004E92548F736FF2 +S315E061C750001441F9000140DC38301A002202E9890F +S315E061C760868186803F033F043F3C00074E4E5C8FE7 +S315E061C7704CD7041C4FEF00104E752F02302F000886 +S315E061C780AF41A342C280E688C082241FD281808104 +S315E061C790C1FC00C8C1FC5556424048404E754FEF5A +S315E061C7A0FFE848D71C1C26790000527E30136D00E5 +S315E061C7B0008C7340757900004FDCB4816F7E240193 +S315E061C7C02601D482E78B49EB0002244C204391C2D7 +S315E061C7D024000682FFFFFFF07542D1FC0000502481 +S315E061C7E02602E78AD6832242340093C3D3FC000152 +S315E061C7F040FCC5FC000606820000502A36127943E9 +S315E061C8000C84000003E86F0634BC03E860064A4323 +S315E061C8106C024252760FB6816D04309260023292BA +S315E061C820548A54885489B48866D23F2B00063F2BDC +S315E061C83000043F143F004EBAFEDC508F4CD71C1CFF +S315E061C8404FEF00184E754FEFFFF448D70C04487868 +S315E061C8500060487A021248790000502445F900E008 +S315E061C8600EC44E9271F9000052764FEF000CA94169 +S315E061C870B280663448780020487900E4F8D848798F +S315E061C880000140DC4E9248780020487900E4F900E6 +S315E061C8904879000140BC4E924FEF001845FA01CC51 +S315E061C8A0424247FAFE706042A541B280661E487810 +S315E061C8B00008487900E4F8F84879000140DC4E92D6 +S315E061C8C048780008487900E4F92060C4700133C013 +S315E061C8D0000140DE60C63F123F2AFFFE3F2AFFFCB1 +S315E061C8E05C8A3F0252824E93508F734271790000A7 +S315E061C8F04FDCB0816EE04CD70C044FEF000C4E7507 +S315E061C9004FEFFFEC48D71C0C28790000527E207966 +S315E061C91000005286321443E80006425145E80004BD +S315E061C92047E80002425242534A416D0C71417579C2 +S315E061C93000004FDCB4806E0830BCFFFF6000011E72 +S315E061C9404A6C00026652740FB4806D1C2200D2817B +S315E061C950E78841F900005024908136B00800204014 +S315E061C960D1FC00005024602420010680FFFFFFF027 +S315E061C970714041F9000140FC2200D281E788908153 +S315E061C98036B008002040D1FC000140FC34A800022A +S315E061C99032A80004600000BE4A7900012BB8660047 +S315E061C9A000B44A7900012BA0660000AA41F90001B2 +S315E061C9B040DC4A7900012B98674230300A003F3CFF +S315E061C9C0FFFF3F003F3C00074E4E5C8F77402400FF +S315E061C9D047FAFDA82479000052862003E080E883C7 +S315E061C9E03F004E93354000023E834E93354000044E +S315E061C9F03E824E93548F35400006605830300A00CF +S315E061CA003F3CFFFF3F003F3C00074E4E5C8F73406B +S315E061CA10AF432079000052862401E082E881C48335 +S315E061CA20163C0011C5FC03E8C5FC4925E6AA31427E +S315E061CA300002AF42C282C082C3FC03E8C1FC03E8E4 +S315E061CA40C3FC4925C1FC4925E6A9E6A831410004B4 +S315E061CA503140000620790000528642504CD71C0CCA +S315E061CA604FEF00144E7503E803E803E800000000A9 +S315E061CA70000003E800000000000003E80000000099 +S315E061CA80000003E8000003E803E803E803E80000C8 +S315E061CA9003E8000003E802DD02DD02DD02150215AE +S315E061CAA00215029B000000000000029B00000000EE +S315E061CAB00000029B0000029B029B029B029B00001E +S315E061CAC0029B0000029B000020790000527E5488A0 +S315E061CAD030184FEFFFF448D7040CAF42246F0010D3 +S315E061CAE073C0B481650453806002424035400030D2 +S315E061CAF03018323900004FDC77407541B4836F04FA +S315E061CB004A406C027001714043F9000140DCAB437D +S315E061CB1043F10A003551002C3018538075C0B68256 +S315E061CB20640270023540003C754130187740B48349 +S315E061CB306F044A406C027001714043F9000140DCC8 +S315E061CB405488754143F10A00355100383018774011 +S315E061CB50B4836F044A406C027001714043F900018D +S315E061CB6040DCAB4343F10A007001355100A243F961 +S315E061CB70000050963551003A3540003E301875C098 +S315E061CB80B68252C2163C00024882C4803542002415 +S315E061CB907542301822405389B682660875C9163CDB +S315E061CBA00017600475C9760BB68264027001354080 +S315E061CBB00020734130187540B2826F044A406C02BE +S315E061CBC07001714043F9000140DC424243F10A00E1 +S315E061CBD03551001E3550012A2F0A4EB900E1D8249D +S315E061CBE0424041F90000508C43F900004FC43540A2 +S315E061CBF00128355000323540002A3540002E103C80 +S315E061CC0000013542012C3542013041F900004FC245 +S315E061CC10354000223550012E355101323542000250 +S315E061CC202F0A4EB900E21A66508F43EA00A641F92F +S315E061CC3000E4F97A32D8B1FC00E4F99A66F642404A +S315E061CC40742D41F900E4FC042279000052863540F6 +S315E061CC50000A103C0006355000A420790000527AA3 +S315E061CC60314000043142000841F900004FC232D838 +S315E061CC70B1FC0000501C66F622790000528A41F947 +S315E061CC800000508432D8B1FC0000509C66F676070D +S315E061CC907001354301344CD7040C33C0000140B810 +S315E061CCA04FEF000C4E752F02203C0001469C736FDE +S315E061CCB00008204075680028B48167062028004096 +S315E061CCC066F0241F4E7520790000527E4FEFFFF02B +S315E061CCD048D70C0C3010246F0014354000026768A9 +S315E061CCE02679000052822F0B4EB900E204803013A0 +S315E061CCF0588F220046817341D2819381C08135404C +S315E061CD00012C302B0002220046817341D28193814E +S315E061CD10C081322B00043540013075413039000065 +S315E061CD204FC27740B4836C0230013540012E322B1D +S315E061CD300006303900004FC475417740B4836C0218 +S315E061CD40300135400132601E424041F900004FC278 +S315E061CD503540012C354001303550012E41F9000056 +S315E061CD604FC4355001324CD70C0C4FEF00104E7565 +S315E061CD70700120790000527A2F02A9423140000801 +S315E061CD8020790000527E3210206F0008538171C114 +S315E061CD90B48052C0241F4880C08131400128207987 +S315E061CDA000005286528030804E752F032F02558FD8 +S315E061CDB0487801363F3C00484EB900E012B0508FEA +S315E061CDC04A80661E20790000527A241F3140000CA9 +S315E061CDD0261F4E755281226800404A8967162049AE +S315E061CDE06008720141F90001469C77417568002847 +S315E061CDF0B48367E022680040214000402040214939 +S315E061CE00004020790000527A3141000C20403141E6 +S315E061CE1000282F40000C241F261F6000FCAC2F0A5F +S315E061CE20206F0008A34143F90001469C7168002820 +S315E061CE30B28066046024224A24690040736A00284D +S315E061CE40B28066F2558F2368004000402F083F3C70 +S315E061CE5000494EB900E012B0508F245F4E754FEF36 +S315E061CE60FFF448D70C0441FA01EE43F9000050841F +S315E061CE7032D8B1FC00E1D06E66F641FA01F247F9CB +S315E061CE8000004FC245FA024243F900004F6836D8C6 +S315E061CE9032DAB1FC00E1D0C866F430390000526A9A +S315E061CEA0AF42538033C000004FC230390000527246 +S315E061CEB0538033C000004FC430390000527633C02E +S315E061CEC000004F707340B4816D0A53807340A54092 +S315E061CED0E3A86004303C0100740120790000527AD5 +S315E061CEE033C000004FDC70FF41E8000C33C2000143 +S315E061CEF046C43082243C0001469C33C0000050C0E9 +S315E061CF0042B9000146DC4EB900E1C8464879000104 +S315E061CF10469C4EB900E21ABC48790001469C4EBA7D +S315E061CF20FBA848790001469C4EB900E20574487950 +S315E061CF300001469C4EB900E207822F4200204CEF89 +S315E061CF400C0400104FEF001C60FF0000041E2F0A66 +S315E061CF502F02242F000C2079000146DC45F900E020 +S315E061CF6012B04A88660460162042558F2428004034 +S315E061CF702F083F3C00494E92508F4A8266EA2F0263 +S315E061CF804EB900E205BC2F024EB900E20872508F3D +S315E061CF902F42000C241F245F60FF000003D032396A +S315E061CFA000004FC471F900005278558F5281734188 +S315E061CFB04C0018002F0142672F390000044E4EB92C +S315E061CFC000E00DE84FEF000C4E7570062279000027 +S315E061CFD0527A2F0A206F000824790000528A334082 +S315E061CFE00004103C002D33400008103C000122791A +S315E061CFF00000527E33C0000140B84A51661841F9DB +S315E061D0000000508434D8B1FC0000509C66F641F9CA +S315E061D01000004FC2602A224A32E8012C45EA001834 +S315E061D02032E8013032E8012E32E801324259B5C9BF +S315E061D03066FA548833D000004F8E41F900004F689C +S315E061D040702D22790000528632D853804A4066F8C4 +S315E061D050245F4E754E750000000700000007000171 +S315E061D060000000280000000F000B00780058027FE6 +S315E061D070018F0000017401740001000700000006E1 +S315E061D080000800010018000C0002000A000100021D +S315E061D0900003000400050006000700080009000A15 +S315E061D0A0000300000003000300030000000300002A +S315E061D0B0000300020000000100010000000200021E +S315E061D0C0000100010001000200010001001F0000F3 +S315E061D0D000010000003200010001000400020001CD +S315E061D0E0000000000100FFFF0001000000000000F9 +S315E061D0F000000000000000000000000000000000E9 +S315E061D10000000000000000000000000000000000D8 +S315E061D11000000000000000000000000000000000C8 +S315E061D120000000004E75700220790000527A3140AD +S315E061D1300008103C005020790000528630BC00198E +S315E061D140314000024E75700220790000527A31401A +S315E061D15000084200207900005286425031400002C8 +S315E061D1604E75700120790000527A314000082079CD +S315E061D1700000528630804E754E7560FF00003ADAE7 +S315E061D18020790000527E425060FF000039821B71B7 +S315E061D1900000558F487AFFF83F3C00094EB900E040 +S315E061D1A012B0508F4E751B700000558F487AFFF8AC +S315E061D1B03F3C00094EB900E012B0508F4E752079C0 +S315E061D1C00000527A4FEFFFF448D7040C2039000093 +S315E061D1D0527E3428000645F900E012B06014558F9E +S315E061D1E02F003F3C00062600528353824E92508FB9 +S315E061D1F020034A4266E84CD7040C4FEF000C4E75AB +S315E061D200701B4E56FFF820790000527E558F1D4007 +S315E061D210FFFB70591D40FFFC1028000106800000ED +S315E061D22000201D40FFFD10280003486EFFFB3F3CD8 +S315E061D23000090680000000201D40FFFE42001D40FF +S315E061D240FFFF4EB900E012B0508F4E5E4E751B4B3C +S315E061D2500000558F487AFFF83F3C00094EB900E07F +S315E061D26012B0508F4E751B4A0000558F487AFFF811 +S315E061D2703F3C00094EB900E012B0508F4E751B4835 +S315E061D2800000558F487AFFF83F3C00094EB900E04F +S315E061D29012B0508F4E751B440000558F487AFFF8E7 +S315E061D2A03F3C00094EB900E012B0508F4E751B430A +S315E061D2B00000558F487AFFF83F3C00094EB900E01F +S315E061D2C012B0508F4E751B420000558F487AFFF8B9 +S315E061D2D03F3C00094EB900E012B0508F4E751B41DC +S315E061D2E00000558F487AFFF83F3C00094EB900E0EF +S315E061D2F012B0508F4E751B451B6500002F2F000441 +S315E061D3004EB900E1CF9E548F487AFFEC3F3C00096D +S315E061D3104EB900E012B0508F4E751B661B4500009A +S315E061D3202F02242F0008558F487AFFF03F3C000911 +S315E061D3304EB900E012B0508F2F420008241F60FF03 +S315E061D340FFFFFC5E20790000527A2F02741371E8C8 +S315E061D350000AB480650E41F900E4F92820700C00FA +S315E061D360241F4ED0241F4E7560B6609030390000A0 +S315E061D37052762F032F02206F000E2248342F000CC5 +S315E061D380538071C0D08093C04240220955813620D6 +S315E061D390C6824A436704A3438083B2886704D08028 +S315E061D3A060EC241F261F4E754FEFFFCC302F003EF9 +S315E061D3B048D77CFC246F0038382F003C342F004876 +S315E061D3C0776A01307340B6816E0000E6776A0132B2 +S315E061D3D0B6816D0000DC3F007BFC80003E043F04CB +S315E061D3E04EB900E205EC73F900005276548F4DFABE +S315E061D3F0FF7C2600700FC084D281E0ADD6812F0319 +S315E061D40026412A433F053C054E96508F3840716A66 +S315E061D410012E2F40003073CC2C41602471C5720F10 +S315E061D420E288E3AD8A804A456C02DBCB558F2F0DEE +S315E061D4303F0552874EBAFF36508F71C0B08E660C8B +S315E061D4403F47002E7147B0AF00306DD0206F00448A +S315E061D4507FCC30AF002E716A012C45FAFF10264071 +S315E061D460602E71C6DC86720FE2A880863C000800F9 +S315E061D4700000670A71F900005276D0809680558F78 +S315E061D4802F033F0653844E92508F71C0B087660872 +S315E061D49071443A04B7C06DCA206F004073CC3085E1 +S315E061D4A071F90001496EB0816708A340B1826002FB +S315E061D4B0424230024CD77CFC4FEF00344E754FEF61 +S315E061D4C0FDCC48D77CFC382F0242246F0238206FAE +S315E061D4D0023C342F0240424043EF002C5384605AB1 +S315E061D4E0322800023C1058883A2800023650260558 +S315E061D4F096814A436742284299C57B4C2E029E81BA +S315E061D50073472845B3856C302A4B9BC63A0D7F4DF0 +S315E061D51077434DE900024A456C0E220C4C07180030 +S315E061D5204C431801D28B600A4C0718004C43180132 +S315E061D530D2863281224E528053844A446CA24A405A +S315E061D540670001207340A347BE81673822002A0F36 +S315E061D550538106850000002C6022361838107F431F +S315E061D56026477F44BE8B6C063144FFFE3083528989 +S315E061D5707749BC836EE453814A41670893C9204584 +S315E061D5807D4160D647EF002C77404A6A0002677CAE +S315E061D590E283280F06840000022C4BF900E2048046 +S315E061D5A049F900E1EB0A5383605C3053322B0002A8 +S315E061D5B0588B528853817F487D41BC876D46302ABE +S315E061D5C0012C7B40BA876F06BA866E383040302AC6 +S315E061D5D0012E7D417B40BA866C087348BA816D2421 +S315E061D5E032003F48022C3F4102303F42022E3F4229 +S315E061D5F002322F044E953EAA001E2F042F0A4E9446 +S315E061D6004FEF000C53834A436CA06056E283280FC8 +S315E061D61006840000022C4BF900E2048049F900E13E +S315E061D620EB0A538360383213302B0002588B5281F8 +S315E061D63053807D417B40BA866D223F41022C3F405B +S315E061D64002303F42022E3F4202322F044E953EAAFD +S315E061D650001E2F042F0A4E944FEF000C53834A436A +S315E061D6606CC44CD77CFC4FEF02344E7522790000D6 +S315E061D670527A2F027410206F000832290006714138 +S315E061D680B480660842403140000A601434390000D3 +S315E061D6904F70E98A7542B480662074013142000AAE +S315E061D6A041E800A622790000527E4240734160045F +S315E061D6B030D952807540B2826EF6241F4E75700184 +S315E061D6C020790000527A2F0231400008207900006B +S315E061D6D0527E3010737900004FDC7540B2826F0480 +S315E061D6E04A406C02700120790000528643F90001DC +S315E061D6F040DC30807140206F0008241F43F10A004E +S315E061D7003151001E4E752F0A24790000527E206F3A +S315E061D71000082279000052864A526606425142402A +S315E061D720600632BC0001700131400022700120794F +S315E061D7300000527A245F314000084E754FEFFFECEE +S315E061D74048D70C1C266F00182479000052824A6B78 +S315E061D750000267643252302B012C306A0002342AAF +S315E061D7600004322A000679497740B6846F08794227 +S315E061D770B6846E5E3480302B012E77427540B48379 +S315E061D7806C0A7749B4836D4A35400004302B013029 +S315E061D79077487540B4836F0A7741B4836E34354018 +S315E061D7A00002302B013275417340B2826C0A7548D2 +S315E061D7B0B2826D1E354000062F0A4EB900E2048042 +S315E061D7C03EAB001E2F0A2F0B4EB900E1EB0A4FEF7D +S315E061D7D0000C4CD70C1C4FEF00144E754E754E7510 +S315E061D7E02F0A206F000822790000528645F9000170 +S315E061D7F040BC32E800247168001E32F20A00245F00 +S315E061D80030280020528032C0302801285280328090 +S315E061D810700533680022000220790000527A3140B7 +S315E061D82000084E752F02206F0008A94171E80024B7 +S315E061D83034280020B2806514303B0A0848C04EFBAC +S315E061D8400802009A0010001A0054008E42806000BF +S315E061D8500092203C00E4FC02600000887142AF4126 +S315E061D860B2806D18323900E4FA9C20015280C5C05D +S315E061D8707142D080068000E4FA9E6068323900E445 +S315E061D880F99A518220015280C1C27140D0800680EE +S315E061D89000E4F99C604E7142AB41B2806D18323959 +S315E061D8A000E4FADE20015280C5C07142D080068074 +S315E061D8B000E4FAE0602E323900E4FB405D8220014B +S315E061D8C05280C1C27140D080068000E4FB426014A0 +S315E061D8D020080680000000A6720F6008203C000167 +S315E061D8E006B842412140000E3141000C241F4E75BD +S315E061D8F070012F0322790000527AA5432F02206F2F +S315E061D900000C3340000822790000527E30117568C0 +S315E061D910002422005381B682660A73C17417B4810A +S315E061D920650A600A73C1760BB68164027001227979 +S315E061D9300000528632805380314000202F48000C2F +S315E061D940241F261F6000FEDE700122790000527AF4 +S315E061D9502F02206F0008AB423340000822790000B5 +S315E061D960527E321122790000528671C1B48052C072 +S315E061D970241F4880C0813140002432806000FEA6C9 +S315E061D9804FEFFFE048D71C7C266F00284240342FDA +S315E061D990002C306B0002246F002443EB000633C099 +S315E061D9A0000052962602538330083208601C381113 +S315E061D9B07D407B44BC856E087D41BC856D06600615 +S315E061D9C0300460023204538358894A436EE04A6AFE +S315E061D9D000026730326A013079407749B6846F1068 +S315E061D9E07141B6806E78200953804A406E027001BB +S315E061D9F0326A013279417749B6846C087340B681FF +S315E061DA006D5C32097742794049FAFAB443F33C00F6 +S315E061DA10360132933348000260103F023F0353837D +S315E061DA202F0B2F0A4E944FEF000C7143B8806DEACD +S315E061DA30716A0022A341B280662470FF52823F423E +S315E061DA40002C2F4B00282F4A00244CD71C7C4FEF2B +S315E061DA50002033C00000529860FF000026424CD798 +S315E061DA601C7C4FEF00204E7520790000527A558F6D +S315E061DA703F2800022F39000052822F2F000C4EBA48 +S315E061DA80FF004FEF000C4E754FEFFFF448D7001CD7 +S315E061DA9030390001496841F9000147D875790001DB +S315E061DAA047D460023001220057817741A144777003 +S315E061DAB03A00B88366067740B4836DE833C0000107 +S315E061DAC049687379000147D67140B0816E0C41F9BE +S315E061DAD0000147D433D0000147D64CD7001C4FEF45 +S315E061DAE0000C4E754FEFFFD248EF1CFC0002342F5D +S315E061DAF00038286F0032266F003A246F003E3F2FD0 +S315E061DB0000422002028000007FFF2F0A2F0B3F00B8 +S315E061DB1036003F2F00422F0C4EBAF88E4FEF0014BD +S315E061DB204A406700015070FF32390001496841F9A6 +S315E061DB30000147D433D00001496C43F9000147D86D +S315E061DB407BC233C00001496A7D41600000AC7971F6 +S315E061DB504A002E0420440A87FFFF80007FC7BE8506 +S315E061DB606676A144B8886776305328005284794452 +S315E061DB707F714A007948B88766763F4800243F431B +S315E061DB800026240F0682000000247EFF3F52002813 +S315E061DB903F43002A2F024EB900E204803EAC001EEC +S315E061DBA02F022F0C4EB900E1EB0A30390001496CC6 +S315E061DBB04FEF000C41F9000147D873405680714040 +S315E061DBC031871A00737900014968B081660000A661 +S315E061DBD04EBAFEB66000009EA144B88866127979B5 +S315E061DBE00001496AA147BE84660633C00001496AFD +S315E061DBF0568033C00001496C30390001496C794087 +S315E061DC00BC846E00FF4A30390001496AA14477401D +S315E061DC10B88366282001568033C0000149687140A7 +S315E061DC200C80000000C76F1A41F9000147D433D078 +S315E061DC300001496C33C100014968600633C00001E7 +S315E061DC40496C30390001496C41F9000147D87340AC +S315E061DC50528033C00001496C31821A0073405280B0 +S315E061DC6031931A0033C00001496C714031920A0068 +S315E061DC707001600242404CD71CFC4FEF002C4E75A0 +S315E061DC804E56FFB420790000528248D73CFC246EA0 +S315E061DC9000083010776A012C3D40FFF67340342866 +S315E061DCA00002B6816E000296776A012EB6816D003A +S315E061DCB0028C7342776A0130B6816E000280776AC0 +S315E061DCC00132B6816D00027620790000527E77F9E5 +S315E061DCD000004FDC73D033C10001496EB681630049 +S315E061DCE0025C76017E03383900004F7041F900012C +S315E061DCF040DC558F3D43FFEC3D47FFEE163C0007A8 +S315E061DD001E3C000F538479443D43FFF03D47FFF2EB +S315E061DD1036301A001E3C000332364AECC283424377 +S315E061DD2033C10001496E42413F0133C10000529661 +S315E061DD30486EFFF8486EFFFA3F023F002F0A4EBA7F +S315E061DD40F66833C3000147D433C3000147D64FEFCA +S315E061DD50001422020081FFFF800041EEFFFA43EEEC +S315E061DD60FFF833C70001496833D0000147DA33D1A0 +S315E061DD70000147DC33C1000147D84A40670001BE74 +S315E061DD802C0E260E2A0E0686FFFFFFF447FAFD5695 +S315E061DD900683FFFFFFF64BF9000147D80685FFFFD3 +S315E061DDA0FFE449FAFCE4200246807140558F426700 +S315E061DDB0A341D0809180486EFFFC486EFFFE808172 +S315E061DDC0D0823F003D40FFDE3F2EFFFA2F0A4E93A1 +S315E061DDD07F6EFFFE4FEF00143800302EFFFA2240CF +S315E061DDE053897349B2876F5C4A4467587F7C800088 +S315E061DDF03D40FFF6B587601A558F426753803D40D7 +S315E061DE00FFF62F062F033F073F002F0A4E934FEF92 +S315E061DE100014302EFFF673402041736EFFFEB28828 +S315E061DE206DD66020558F426752883D48FFFC486E4B +S315E061DE30FFFC2F033F2EFFDE3F082F0A4E934FEF85 +S315E061DE4000143800306EFFFC302EFFF873487F40D7 +S315E061DE50BE816ED0204052887F48BE816C384A448C +S315E061DE6067343D40FFF40A82FFFF8000601A558FF8 +S315E061DE70426752803D40FFF42F062F033F023F0089 +S315E061DE802F0A4E934FEF0014302EFFF4736EFFFCB2 +S315E061DE907940B2846ED83279000147D47379000152 +S315E061DEA049687149B081670000943039000147D60D +S315E061DEB0600A56807540B28266023009794041F95E +S315E061DEC0000147D834354A007F422D47FFE0A1473C +S315E061DED0BEAEFFE067DC31874A005280794052800E +S315E061DEE043F04A007940528033C0000147D6714021 +S315E061DEF041F04A003D51FFFA3D50FFF8B2806602BB +S315E061DF004E942002028000007FFF2F053D6EFFFAEE +S315E061DF10FFE43D6EFFF8FFE83D40FFE63D40FFEA86 +S315E061DF204EB900E204803EAA001E2F052F0A4EB9C3 +S315E061DF3000E1EB0A4FEF000C6000FE6C4CEE3CFC3E +S315E061DF40FFB44E5E4E752079000052822F02341086 +S315E061DF503F2800023F024EB900E205EC73F900008A +S315E061DF605276548F2040700FC480303C8000D2815D +S315E061DF70E4A848701800A3423F004EBAF3F0508F10 +S315E061DF8020790000528630C0737900004F70B48109 +S315E061DF9066064A4066126012A542B481660C734019 +S315E061DFA0143C0003B4816602700F714043F90001CD +S315E061DFB040BC241F30B10A00700220790000527A19 +S315E061DFC0314000084E7500004FEFFFF448D7001C62 +S315E061DFD0302F001060060680FFFFF1F075400C827D +S315E061DFE000000E106EF032007609780FE8A2C3FCED +S315E061DFF091A342414841D2807341E6A126019682CE +S315E061E0007343A542B48167246D0A183C0001B88167 +S315E061E0106632600EA742B481671AA944B881662464 +S315E061E020601C73FC07089280200160180680FFFF80 +S315E061E030F8F8601075FC0E10948020026006068088 +S315E061E040FFFFF1F032007812754041FA086EC3FCC9 +S315E061E0506667E8A1183C000FE8A2280092823401C5 +S315E061E06030301A00C5FC000A98824A44671E343093 +S315E061E0701A029480C5C4781232027542C3FC66679F +S315E061E080E8A1183C000FE8A29282D0817743A341D0 +S315E061E090B2836C0244804CD7001C4FEF000C4E7586 +S315E061E0A02F02322F000820010680000003847540AC +S315E061E0B00C8200000E106F060680FFFFF1F03F4014 +S315E061E0C00008241F6000FF024FEFFFF048D70C0CF9 +S315E061E0D03F39000140B024790000528247F900E1FE +S315E061E0E0C6304EBAFFBC3F3C7FFF3F39000140AED0 +S315E061E0F03F004E933239000140B6756F001C5C8F6C +S315E061E100D08135802A003F39000140B036390001BF +S315E061E1103EA84EBAFEB43EBC7FFF3F3900013EAA3F +S315E061E1203F004E93968035832A024CEF0C0C000833 +S315E061E1304FEF00184E754FEFFFDC48D71CFC246F9C +S315E061E1400028342F002C4A6A0002675432390001F4 +S315E061E15040B63039000140AE796A012C2600D6819D +S315E061E1607743B6846D0001289280716A012E73410E +S315E061E170B2806E00011A323900013EA830390001E1 +S315E061E1803EAA796A01302600D6817743B6846D006E +S315E061E19000FE9280716A01327341B2806E0000F0D6 +S315E061E1A03C39000140AC558F426749FAFF1C424554 +S315E061E1B076017F4247F900E1C63033C6000140B0DF +S315E061E1C04E94588F6022558F3F023A043F03528343 +S315E061E1D03F39000140B24E935C8F3F04D08633C035 +S315E061E1E0000140B04E94588F714328055484BE8037 +S315E061E1F06ED441F9000140B4558F33D0000140B08F +S315E061E2003F044EBAFEC4588F22790000527A2079D3 +S315E061E21000005282A74143E9000A7151B280670664 +S315E061E220AF43B68066185282714249F900013EA851 +S315E061E23047F00C0036B9000140B63754000273511D +S315E061E24052823002A543B6816708163C0006B68164 +S315E061E250662A736A0032A342B4816610558F3F0025 +S315E061E2602F082F0A4EB900E2009C601E558F3F00D1 +S315E061E2702F082F0A4EB900E1F67C600E558F3F02FA +S315E061E2802F082F0A4EB900E1D9804FEF000C4CD729 +S315E061E2901CFC4FEF00244E754FEFFFD848D77C7CCE +S315E061E2A0267900005282246F002C2F0B4EB900E2D2 +S315E061E2B004BA3813342B0004588F3A2B0002362BFC +S315E061E2C00006737900004FC2EC81200290847140B0 +S315E061E2D02C059C837D4620006A02528033C1000191 +S315E061E2E040AE2C066A025286E280E28EB0816C060E +S315E061E2F033C0000140AE558F3F3900004FCA3F3908 +S315E061E30000004FC83F39000140AE4EB900E1C6306A +S315E061E3107346508F33C000013EAA7140B2806C06ED +S315E061E32033C600013EAA287900005282558F4DFA24 +S315E061E330FD7047F900E1C630425C4BFAFC8C38F976 +S315E061E34000013EAA3F3C02A34E963EBC7FFF3F39A9 +S315E061E350000140AE3F004E935C8F38C03F3C02A364 +S315E061E3604E953EBC7FFF3F3900013EAA3F004E938A +S315E061E3705C8F38C03F3C01C24E963EBC7FFF3F3961 +S315E061E380000140AE3F004E935C8F38C03F3C01C216 +S315E061E3904E953EBC7FFF3F3900013EAA3F004E935A +S315E061E3A05C8F38C03F3C00E14E963EBC7FFF3F3913 +S315E061E3B0000140AE3F004E935C8F38C03F3C00E1C8 +S315E061E3C04E953EBC7FFF3F3900013EAA3F004E932A +S315E061E3D0508F204C220230C0424030B9000140AE3D +S315E061E3E03140000220790000528249E8001247E894 +S315E061E3F00016224C3039000140AE9280303900017E +S315E061E4003EAA33C1000140B69A8033C500013EA8F9 +S315E061E410700A3A11323900013EA85480D2853681BC +S315E061E4203A29FFFE3239000140B65989D285374132 +S315E061E430FFFE7340588B7A14BA8166D63039000193 +S315E061E44040AE220822480681000000142648D880A2 +S315E061E45033C4000140B638133039000140B69084C8 +S315E061E46037400028382B0002303900013EA8D084BD +S315E061E4703740002A588BB28B66DC303900013EAA00 +S315E061E48047E8003ED68033C300013EA8701E3814CB +S315E061E490363900013EA8548096843683382CFFFED7 +S315E061E4A03639000140B6598C96843743FFFE774092 +S315E061E4B0588B7828B88366D63039000140AE9480AF +S315E061E4C033C2000140B634113039000140B6D08222 +S315E061E4D0328034290002303900013EA8908233400F +S315E061E4E000025889B28966DE315000503168000217 +S315E061E4F0005222790000527A7A087169000ABA807C +S315E061E500664E716A0030AB41B2806D0C43F900E44E +S315E061E510FC0430310A006004302A00A433C00000F4 +S315E061E5205298716A0032A344B8806612558F3F3CB7 +S315E061E53000152F082F0A4EB900E2009C6022558F24 +S315E061E5403F3C00152F082F0A4EB900E1F67C6010BA +S315E061E550558F3F3C00152F082F0A4EB900E1D9804F +S315E061E5604CEF7C7C000C4FEF00344E753239000184 +S315E061E57040AE303900013EAA2F032F027541774044 +S315E061E580B4836F0230017140E480740FB4806C0C27 +S315E061E590143C0046B4806C06704660027010241F1D +S315E061E5A0261F4E7520790000527E2F0B2F0A3210FE +S315E061E5B033C1000140AC3028000233C0000140B4F1 +S315E061E5C0908133C0000140B26C0C068000000E10F1 +S315E061E5D033C0000140B2247900005282558F47F979 +S315E061E5E000E1C630302A000C3F3900004FCA33C023 +S315E061E5F0000140AE3F3900004FC83F004E9333C043 +S315E061E60000013EAA4EBAFF665C8F3F3C0E103F00AA +S315E061E6103F39000140B24E93508F4A40671C33D276 +S315E061E620000140B6548A558F33D200013EA83F00BF +S315E061E6302F2F00104EBAFB00508F245F265F4E7578 +S315E061E64020790000527E2F0A2F023210246F000CCF +S315E061E65033C1000140AC3028000233C0000140B450 +S315E061E660908133C0000140B26C0C068000000E1050 +S315E061E67033C0000140B2207900005282A342736A3E +S315E061E680012A33D8000140B633D800013EA833D021 +S315E061E690000140AE3028000233C000013EAAB481D9 +S315E061E6A06D10323900004FC42401948033C20001F9 +S315E061E6B03EAA4EBAFEB8558F3F3C0E103F003F3939 +S315E061E6C0000140B24EB900E1C630508F4A40670C56 +S315E061E6D0558F3F002F0A4EBAFA5E508F241F245F92 +S315E061E6E04E7522790000527A72094FEFFFF448D7EE +S315E061E6F0040C3029000A246F001020790000528250 +S315E061E700538071C0B280650001A8303B0A0848C0F9 +S315E061E7104EFB0802001400780078008800DE0146AE +S315E061E72001460156017A018A2F0A4EB900E1D73CCA +S315E061E730716A0022588FA342B4806600017470FF4B +S315E061E740207900005282558F43E8000633C000000D +S315E061E750529830113140000E3140000A30280002F3 +S315E061E76031400012328030103168000400083140D7 +S315E061E77000103140000C3F3C00052F082F0A4EB9CE +S315E061E78000E2009C4FEF000C600001262F4A00106A +S315E061E7904CD7040C4FEF000C6000FE0A33D0000149 +S315E061E7A040B643E80002558F33D100013EA83028D8 +S315E061E7B000083F3900004FCA33C0000140AE3F391F +S315E061E7C000004FC83F004EB900E1C630424133C058 +S315E061E7D000013EAA303C0E1033C1000140AC33C0AB +S315E061E7E0000140B233C0000140B44EBAFD805C8F97 +S315E061E7F0605C33D0000140B643E80002A342736A2D +S315E061E800012A33D100013EA843E8000433D1000177 +S315E061E81040AE3028000633C000013EAAB4816D10D7 +S315E061E820323900004FC42401948033C200013EAA0C +S315E061E8304240327C0E1033C0000140AC33C9000166 +S315E061E84040B233C0000140B44EBAFD22558F3F005D +S315E061E8502F0A4EBAF8E2508F60562F4A00104CD715 +S315E061E860040C4FEF000C6000FDD84241362A002AC5 +S315E061E870342A002E3541002A3541002E2F0A4EBA40 +S315E061E880FA183543002A3542002E588F60222F4A06 +S315E061E89000104CD7040C4FEF000C6000F9FC2F4AD6 +S315E061E8A000104CD7040C4FEF000C60FF0000412EC6 +S315E061E8B04CD7040C4FEF000C4E750000023C047817 +S315E061E8C006B408EE0B280D610F9911D01406163ABD +S315E061E8D0186C1A9D1CCB1EF721212348256C278EC7 +S315E061E8E029AC2BC72DDF2FF3320334103618381CD1 +S315E061E8F03A1C3C173E0E3FFF41EC43D445B6479385 +S315E061E900496A4B3C4D084ECD508D524653F955A55B +S315E061E910574B58EA5A825C135D9C5F1F609A620DA1 +S315E061E920637964DD6639678D68D96A1D6B596C8C6C +S315E061E9306DB76ED96FF37104720C730B740174EE7B +S315E061E94075D276AD777F7847790679BB7A677B0A48 +S315E061E9507BA27C327CB77D337DA57E0D7E6C7EC0ED +S315E061E9607F0B7F4B7F827FAF7FD27FEB7FFA7FFF2B +S315E061E9707FFF000022790000527E206F0004315152 +S315E061E98000A44E75700120790000527A2F02AF42E1 +S315E061E9903140000820790000527E3210206F000875 +S315E061E9A0538171C1B48052C0241F4880C081314017 +S315E061E9B00030207900005286528030804E75207991 +S315E061E9C0000052822F032F0230106F12323900009D +S315E061E9D0509077407541B4836C06300160027001F6 +S315E061E9E05380714072FE20790000527A226F000CEA +S315E061E9F020006A025280241F261FC0817201528064 +S315E061EA003141000420790000528A3340003230807F +S315E061EA104240314000024E7570022F0320790000BA +S315E061EA20527AA7432F02226F000CA74231400008B9 +S315E061EA3020790000527E301873C0B48152C134101F +S315E061EA402079000052864881C28071C2B68052C088 +S315E061EA503341002A30814880C082241F261F33401B +S315E061EA60002E314000024E75700120790000527A25 +S315E061EA702F023140000820790000527E3010737910 +S315E061EA8000004FDC7540B2826F044A406C0270014F +S315E061EA9020790000528643F9000140DC3080714004 +S315E061EAA0206F0008241F43F10A003151002C4E7596 +S315E061EAB02F0A206F000822790000528645F900018D +S315E061EAC040BC30280030528032807168002C45F2BB +S315E061EAD00A0033520002245F302801285280334015 +S315E061EAE00004424022790000528A32A80032334063 +S315E061EAF00002103C000120790000527A31400004A6 +S315E061EB00103C0003314000084E754FEFFFB048D727 +S315E061EB107CFC246F0058266F00543639000052762B +S315E061EB203012382A00043F2A00020684FFFFFFF014 +S315E061EB303F00988034044EB900E205EC3F6B000C6F +S315E061EB40003E588F20404A6B000A67063A7C001007 +S315E061EB5060029BCD3A123C2A0004700F720F7FF976 +S315E061EB6000005278E28FCA80303CFFFFCC81323CB4 +S315E061EB707FFF9E83D885EAA8ECA13C2B01283F4024 +S315E061EB80003E46804A446C0001C07D46A542B4869B +S315E061EB9067000086A744B8866714143C00013A2AE8 +S315E061EBA000027F47B4866600013A600000C47D4D8D +S315E061EBB080817F4722435389DC863A2A0002DE87D9 +S315E061EBC028462C006044322F003A3809362F005C23 +S315E061EBD0C2857341D281602A2A6B000E34103035CA +S315E061EBE01800080300006706468080826002C082E2 +S315E061EBF0B18277C3E28B5384D28CC486B182308290 +S315E061EC0054884A446CD2D1C752857345716A00060D +S315E061EC10B0816CB2600004FE7B4D224353897F472D +S315E061EC20382A000226054485D683DE87DA85808127 +S315E061EC302843602E322F003A3409C2847341D2816F +S315E061EC4060162A6B000EDBC1363558003C105382E4 +S315E061EC50B786C680BD8330C3D28C4A426CE4D1C7E5 +S315E061EC6052847544736A0006B2826CC8600004A679 +S315E061EC70808122435389774DDE87D6832800468497 +S315E061EC802A442F40002C604C322F003A38493C2F01 +S315E061EC90005CC2857341D28160322C6B000E341008 +S315E061ECA03836180008060000670A8882200DB982A6 +S315E061ECB0C480600A4684C882B982C4AF002CB98236 +S315E061ECC07DC6E28E538CD28330825488340C6CCA12 +S315E061ECD0D1C752857545736A0006B2826CAA600037 +S315E061ECE004347D4D224326018680DE87DC865389A6 +S315E061ECF028432F46002C6042302F003A3609342FE4 +S315E061ED00005CC0857140D080602808020000670A17 +S315E061ED102A6B000E383508006002424432102C0C32 +S315E061ED20538375C2E28AD0AF002CB981C286B981BC +S315E061ED3030C14A436CD4D1C752857345716A0006C6 +S315E061ED40B0816CB4600003CE327C00107D46A54490 +S315E061ED5093C5B88667000140183C0003B88667161C +S315E061ED6079433A2A00027F472844A344B88666007D +S315E061ED7002FC600001CC79432C0353867F47774DD3 +S315E061ED802F4600442C029C89DE87D6832F46003CC1 +S315E061ED903A2A0002D8843F4200302A4728433E019E +S315E061EDA0600000E4362F003A322F0046342F005CD3 +S315E061EDB0C6853F41002E3F4200367743D6836000E9 +S315E061EDC000BA322F0036226B000E3C313800080162 +S315E061EDD00000674A46863F4600424A40671A3C5011 +S315E061EDE043F04800240E220E84863C6F003EB581D6 +S315E061EDF0C280B581308160063C6F00302248734E37 +S315E061EE00E8892C41600C342F0042538E8282328134 +S315E061EE10D3C4340E32114A426CEC8C81603C4A4078 +S315E061EE2067183210240643F048003C6F003EC48107 +S315E061EE30B581C280B581308160063C6F0030224881 +S315E061EE40734EE8892C416008C286538E3281D3C401 +S315E061EE50340E32114A426CF0CC81BD815488D68C35 +S315E061EE60C287BD813C2F002E328173EF0036538617 +S315E061EE703F46002EE2893F4100364A6F002E6C0024 +S315E061EE80FF42D1CD52857745736A0006B2836C0045 +S315E061EE90FF14600002807F477B433C2A00023C41CD +S315E061EEA02807D8847F4D3A42DA85DE8728442803ED +S315E061EEB02602538496892F44002C2F430034340074 +S315E061EEC06070362F003A382F002EC6863F440032F6 +S315E061EED07743D6836052226B000E383138004A425E +S315E061EEE0671632102004C08243F05800B981B380BE +S315E061EEF03080302F00366004300D22487140E8885A +S315E061EF006008B98153803281D3C532114A406CF2CF +S315E061EF10B981200E5488C880D687B384322F0032F7 +S315E061EF20328453813F4100324A6F00326CA8D1CCC2 +S315E061EF3052867346716A0006B0816C86600001D6BE +S315E061EF40DE872C035386280C26022F4600482C01C7 +S315E061EF509689468638412F430034D8842F46004C43 +S315E061EF602F4700447F4D3200DE87600000F0362F88 +S315E061EF70003A302F004A3C42C6853F40002E302F92 +S315E061EF80005C7743D6832A433601600000BE226B7C +S315E061EF90000E3231D80008000000674A4A43672014 +S315E061EFA034102C018C822246BD823C2F003EC48601 +S315E061EFB02C0943F04800BD823C2F00363082600464 +S315E061EFC03C0E22487D46E88E600884815386328213 +S315E061EFD0D3C434114A466CF28282B382C4AF004C28 +S315E061EFE0B3823282605246813F4100424A436718AA +S315E061EFF034102C0143F04800CC82BD82C483BD82CB +S315E061F0003082342F00366004340E22487542E88A35 +S315E061F0103F400030600C302F00425382CC80328614 +S315E061F020D3C43C114A426CEEC286240C302F0030C8 +S315E061F030B386CC82B38632863C2F002E71C0E288DD +S315E061F0405488DBC753863F46002E4A6F002E6C001C +S315E061F050FF3E340E3203D1EF004452857745716A43 +S315E061F0600006B0836C00FF08600000AA2C0353869B +S315E061F070774DDE872F460034280C2C02D6839C8997 +S315E061F0802F46003C3C41D8843F4200302F47002C5C +S315E061F09032002A4360743C2F003A386F0036302FD5 +S315E061F0A0005CCC857D46DC86605608000000670A18 +S315E061F0B0226B000E36316800600242434A416714B2 +S315E061F0C03E1043F04800B787CE81B78730873E2F41 +S315E061F0D0003E60063E2F003022487F47E88F60069B +S315E061F0E03283D3C453874A476CF63E11240E548863 +S315E061F0F071C0E288538CDC8DB787CE82B787328761 +S315E061F100360C6CA6D1EF002C52857745716A000604 +S315E061F110B0836C824CD77CFC4FEF00504E752F0A62 +S315E061F1202F02242F0010246F000C2F024EB900E24B +S315E061F13004BA3EAA002C2F022F0A4EBAF9CE4FEF3F +S315E061F140000C241F245F4E754FEFFFCC48D77CFC43 +S315E061F150266F003C2A0B246F003858854DF900E193 +S315E061F160C63041EB00062F48002C41EB00022F48E8 +S315E061F1700030600000A22801C8804A446600011E92 +S315E061F1804A4067082A4B286F003060083001286FD3 +S315E061F190002C2A459E839C82080000006716558FE5 +S315E061F1A03F0791C33F083F064E96D08238803AAA20 +S315E061F1B0012C6060A541C2804A41671A558F3F07BD +S315E061F1C0302A012E90833F003F064E96D0823880EA +S315E061F1D03AAA012E603EA941C2804A416716558F1F +S315E061F1E03F0693C23F093F074E96D0833A8038AADD +S315E061F1F0013060207208C0814A40671A558F3F0628 +S315E061F200302A013290823F003F074E96D0833A80A2 +S315E061F21038AA0132508F3613306A012C342B000242 +S315E061F22071437348B2806E0C736A012EB2806D08C9 +S315E061F23042406006700160027002326A01307342D8 +S315E061F2407D49BC816F045880600A7D6A0132BC8168 +S315E061F2506C0250803E2B000479483C2B00067347D4 +S315E061F260B8816E0C796A012EB8816D0842416006FB +S315E061F270720160027202794628447949B88C6F045A +S315E061F2805881600A796A0132B88C6C025081280132 +S315E061F29088804A446600FEE07001600242404CD7D5 +S315E061F2A07CFC4FEF00344E754FEFFFE048D73C3CB6 +S315E061F2B0242F0024362F00283A2F002A4A790000AD +S315E061F2C051146F0000B63039000106C4247900009C +S315E061F2D05282220335450002354500069280D0838D +S315E061F2E03481354000042F0A2F024EBAFE5C508FFE +S315E061F2F04A40670A2F0A2F024EBAFE24508F47F919 +S315E061F300000106C678014BFAFE4049FAFE12605EDC +S315E061F310301322039280D083354000042005908427 +S315E061F320348135400002354000062F0A2F024E95A2 +S315E061F330508F4A4067082F0A2F024E94508F301B38 +S315E061F34022039280D083354000042004D085348145 +S315E061F35035400002354000062F0A2F024E95508F48 +S315E061F3604A4067082F0A2F024E94508F52847344A5 +S315E061F370717900005114B0816E964CD73C3C4FEFE9 +S315E061F38000204E75206F0004424043F900E4FC041E +S315E061F39033D10000529843E8001E33D100010714CF +S315E061F3A043E8002233D10001071643E8002A33D14E +S315E061F3B0000106BC43E8002E33D1000106BE3140B0 +S315E061F3C0002A3140002E103C000143F900E4FC02C2 +S315E061F3D03168002C001E2149000E314000224200B6 +S315E061F3E03140000C4E75206F000443F900010714AB +S315E061F3F03151001E43F9000107163151002243F9EC +S315E061F400000106BC3151002A43F9000106BE3151C3 +S315E061F410002E4E75322F0006302F0004C3C1C1C0E5 +S315E061F420D08171402F40000460FF000010CA4E5643 +S315E061F430FFB4206E0008A34148D73CFC246E000C63 +S315E061F4403A2800327145B2806708CBFC00035385E8 +S315E061F45060027A08756E001020790000527A2E0AF1 +S315E061F4607345387C0001E58A716800024244424690 +S315E061F47042432D40FFDC2A4147F2280060523013B7 +S315E061F4803612558F3F3900004FC8DE8296803C03C5 +S315E061F4903F3900004FCA302A0002322B00029081C8 +S315E061F4A03F004EB900E1C63038006C042004448068 +S315E061F4B03F0030066C04200344803F00D7C24EBA59 +S315E061F4C0FF544FEF000C36007140BBC06F14528C95 +S315E061F4D0714CB0AEFFDC6DA673437145B0816E00D1 +S315E061F4E00126558F3F03714547F900E1C63020009B +S315E061F4F06A0252803F3C03E8E28028403F064E9331 +S315E061F5005C8F3F3C03E83F003F054E935C8F3F03D2 +S315E061F5103A403F3C03E83F044E935C8F3F3C03E84F +S315E061F5203F003F054E935C8F3F033D40FFDC3F3C30 +S315E061F530FC183F044E935C8F3F3C03E83F003F0C71 +S315E061F5404E935C8F3F0338003F3C03E83F064E93A2 +S315E061F5505C8F3F3C03E83F003F0C4E935C8F3F3945 +S315E061F56000004FCA3A003F3900004FC83F2EFFDC2A +S315E061F5704E935C8F3F3900004FCA36003F39000039 +S315E061F5804FC83F054E9330525C8F22042240D288A9 +S315E061F590928D3D41FFE0322A00023F3C00033D4847 +S315E061F5A0FFE8D3C193C33D49FFE2224893C42801F2 +S315E061F5B09880486EFFE093CD200490833D40FFE65E +S315E061F5C02F2E00083D49FFE43D41FFEA4EB900E1D7 +S315E061F5D0D9804FEF000C30122047908D3480302A6D +S315E061F5E0000290833540000220024480D1C0600C65 +S315E061F5F043EA00023192280031912802D1C02248C3 +S315E061F60093C0B3CA66EA4CEE3CFCFFB44E5E4E75FF +S315E061F6104FEFFFF448D7040C242F0010246F001439 +S315E061F620362F00182F024EBAFD5C3039000106BC58 +S315E061F630588F080000006712558F3F3C00012F0A82 +S315E061F6402F024EBAFDEA4FEF000C3039000106BEDB +S315E061F650080000006716558F3F3CFFFF7143487213 +S315E061F6600CFC2F024EBAFDC84FEF000C2F42001082 +S315E061F6704CD7040C4FEF000C6000FD6C4FEFFFA41C +S315E061F680A34148D77CFC382F0068246F0060266F61 +S315E061F69000647144B2806C000394362A0032717959 +S315E061F6A0000050C07343B081670001083A39000039 +S315E061F6B04FC8343900004FCA33C3000050C049F91E +S315E061F6C0000106C430053A42C1C35283774326033B +S315E061F6D06A02528348C081C2E28B71407343200063 +S315E061F6E06A025280D281E2800681000106C45280BC +S315E061F6F03E0033C0000051143003C1FCFFFE2040E0 +S315E061F70056884240602634082241328038C34A42F4 +S315E061F7106C0A2C00E58E41F06806600E2C009C8335 +S315E061F720E58E5581538341F0680A528075437D4089 +S315E061F7302242B4866ED0340DB3C6660A41F9000141 +S315E061F74006C431806A002602D68391C849F9000170 +S315E061F75006C493C97F473F4500342A43604E32026F +S315E061F7603C08424348C183EF003471487341D0801D +S315E061F77022016A0252810680000106C4E2812F41BC +S315E061F7800030600A2C4052863A1E5480D6857B460C +S315E061F790BAAF00306FEEA34E9DC8200ED08148C34C +S315E061F7A087C0204152895288D48D38C37149BE8061 +S315E061F7B06EAC322A002E302A002A808108000000D1 +S315E061F7C06710558F3F042F0B2F0A4EBAFE444FEF59 +S315E061F7D0000C2F0A4EBAFBAE3413362B0002588F5B +S315E061F7E04A79000106BC670C3F033F022F0A4EBA15 +S315E061F7F0FAB8508F70013F40003220045380714067 +S315E061F80079442F4000402F440044588B38133A2BFB +S315E061F81000022E049E82200590834A4766124A4082 +S315E061F820670001EE3C39000106C4424160000172A5 +S315E061F8304A40660E323900005114424653816000F7 +S315E061F8400160558F3F3900004FC844803F39000061 +S315E061F8504FCA3F004EB900E1C6305C8F3F390000C8 +S315E061F8604FCA3C003F3900004FC83F074EB900E13F +S315E061F870C630508F32404A466D0A4A406D1E307C32 +S315E061F8800001601C4A405DC0A54C488030402006BE +S315E061F89044803F40003A99C8204C6008307C0004BF +S315E061F8A03F46003A2008578071C0A341B2806506A1 +S315E061F8B02C09448622463E39000106C438790000A7 +S315E061F8C051143C7C7FFF424142463A423F47002E1B +S315E061F8D0538C714C3F4E003442473C432F40003CD1 +S315E061F8E03841302F002E600E360738473C003F41E5 +S315E061F8F000343E0330023409322F003AC5C0C3C733 +S315E061F900948132026C04220244817741756F00343E +S315E061F910B4836E2A666A2406948C36026C042602E7 +S315E061F9204483240094872F420034342F00366C06DA +S315E061F930242F0034448277437542B4836C4277471F +S315E061F940B6AF003C660E7540A343B68267282400D5 +S315E061F9505382609449F9000106C47D743A02240039 +S315E061F96053827742B6866E80260752837543343476 +S315E061F9702A006000FF76340D360E32073C006006E1 +S315E061F980340D360E320C2008558071C0A347BE8017 +S315E061F99065024486578871C8A347BE806502448183 +S315E061F9A02006D0823F4000482001D0833F40004A94 +S315E061F9B0200490863F400050948696812005908190 +S315E061F9C0D285DC843F4000523F42004C3F43004ECB +S315E061F9D03F4600543F410056558F3F3C0004486F17 +S315E061F9E0004C2F0A4EB900E1D9804FEF000C716FE0 +S315E061F9F00032B0AF00406D084A79000106BE670C7F +S315E061FA003F053F042F0A4EBAF8A0508F36053404FD +S315E061FA10326F003252893F4900327149B0AF0044DA +S315E061FA206D00FDE82F0A4EBAF9BE588F4CD77CFCC3 +S315E061FA304FEF005C4E754FEFFFB4206F005448D72F +S315E061FA407CFC322800043E10326800063068000211 +S315E061FA5075417147B0826F08380130093208600834 +S315E061FA6038073E01300832099E8492803F47002E76 +S315E061FA703F4100323C39000052784A416C0844818A +S315E061FA803F41003244863F003A3900005276DE87D4 +S315E061FA907D463F04DA854EB900E205EC342F003647 +S315E061FAA0206F00547B45720F3468002C307900007A +S315E061FAB05276C881323C8000D48253883F48003E0A +S315E061FAC0588F776F002EE8A92042342F0032796F84 +S315E061FAD0003222413239000052982F43003C362FE2 +S315E061FAE0002E2F44004044822F42004444832F433A +S315E061FAF0004860000590286F0050242F004032399D +S315E061FB0000005298366C0128B4AF003C6E0002C02A +S315E061FB10774B382F004AA3422843B483670001300C +S315E061FB206D0A360B670001E460000548A542B483BF +S315E061FB30670000C6A743B68C66000538240A08024A +S315E061FB400000675A38493A6F002E26402601740F45 +S315E061FB50D68373C1E4A98681320308030000670A8C +S315E061FB603413260C4683C4833682260C740FE5ABC8 +S315E061FB702C43240E77CCE28B848328424A426C0282 +S315E061FB80D7C54DF04800380E6D06280ED7C6988762 +S315E061FB90538D754DA143B68266B2600004D638498D +S315E061FBA03C6F002E26402401760FD48273C1E6A90C +S315E061FBB08481320208020000670A3A53260C240D5A +S315E061FBC084833682240C760FE7AA2A42260D75CC09 +S315E061FBD0E28A868228434A436C02D7C54BF04800E5 +S315E061FBE0380D6D06280DD7C69887538E774EA1429C +S315E061FBF0B48366B26000047C38493C6F002E2640CF +S315E061FC002601740FD68373C1E4A9868132030803A2 +S315E061FC100000670A3A53240C260DB5833683260C19 +S315E061FC20740FE5AB2A43240D77CCE28B84832842BB +S315E061FC304A426C02D7C54BF04800380D6D06280D77 +S315E061FC40D7C69887538E340E6CB660000426260AB2 +S315E061FC5008030000675A38493C6F002E26402401AC +S315E061FC60760FD48273C1E6A984813202080200006C +S315E061FC70670A3A53260C240D84833682240C760F68 +S315E061FC80E7AA2A42260D75CCE28A868228434A4350 +S315E061FC906C02D7C54BF04800380D6D06280DD7C606 +S315E061FCA09887538E774EA142B48366B2600003C4EF +S315E061FCB038493A6F002E26402601740FD68373C108 +S315E061FCC0E4A98681320308030000670A3413260C2F +S315E061FCD04683C4833682260C740FE5AB2C43240E2F +S315E061FCE077CCE28B848328424A426C02D7C54DF0D9 +S315E061FCF04800380E6D06280ED7C69887538D754D28 +S315E061FD00A143B68266B26000036A240A0802000073 +S315E061FD10676A38493C6F002E26402601740FD68308 +S315E061FD2073C1E4A93F5300368681320308030000BC +S315E061FD30670A362F0036240C8682600A342F003635 +S315E061FD40260C4683C6823683260C740FE5AB2A43BE +S315E061FD50240D77CCE28B848328424A426C02D7C574 +S315E061FD604BF04800380D6D06280DD7C69887538E3F +S315E061FD70754EA143B68266A2600002F838493A6FD1 +S315E061FD80002E26402401760FD48273C1E6A936138C +S315E061FD908282240C4682C682240C3683760FE7AAD9 +S315E061FDA02C42260E75CCE28A868228434A436C024F +S315E061FDB0D7C54DF04800380E6D06280ED7C6988730 +S315E061FDC0538D774DA142B48366BA600002A6774B44 +S315E061FDD0382F0046A3422843B483670001286D0AA1 +S315E061FDE0360B670001D46000028AA542B4836700DE +S315E061FDF000BEA743B68C6600027A240A08020000B8 +S315E061FE00675638493A6F003226402601740FD68329 +S315E061FE1073C1E4A98681320308030000670A3413DB +S315E061FE20260C4683C48336822C44DDC7380ED7C69A +S315E061FE306D1C260C740FE5AB280E98882C43240EB6 +S315E061FE4077CCE28B848328424A426C02D7C5538DD4 +S315E061FE50340D6CB66000021C38493C6F00322640B6 +S315E061FE602601740FD68373C1E4A986813203080340 +S315E061FE700000670A3A53240C260D868236832A44AB +S315E061FE80DBC7380DD7C66D1C260C740FE5AB280DA4 +S315E061FE9098882A43240D77CCE28B848328424A42B0 +S315E061FEA06C02D7C5538E340E6CB6600001C6384914 +S315E061FEB03C6F003226402601740FD68373C1E4A9F4 +S315E061FEC08681320308030000670A3A53240C260D43 +S315E061FED0B58336832A44DBC7380DD7C66D1C260C3D +S315E061FEE0740FE5AB280D98882A43240D77CCE28B15 +S315E061FEF0848328424A426C02D7C5538E340E6CB66F +S315E061FF0060000170260A08030000675638493C6FB5 +S315E061FF10003226402401760FD48273C1E6A984813A +S315E061FF20320208020000670A3A53260C240D8483E4 +S315E061FF3036822A44DBC7380DD7C66D1C240C760F92 +S315E061FF40E7AA280D98882A42260D75CCE28A868230 +S315E061FF5028434A436C02D7C5538E360E6CB66000B1 +S315E061FF60011238493A6F003226402401760FD48275 +S315E061FF7073C1E6A98481320208020000670A36137A +S315E061FF80240C4682C68236832C44DDC7380ED7C63A +S315E061FF906D1C240C760FE7AA280E98882C42260E53 +S315E061FFA075CCE28A868228434A436C02D7C5538D73 +S315E061FFB0360D6CB6600000BC240A08020000676674 +S315E061FFC038493C6F003226402601740FD68373C1EF +S315E061FFD0E4A93F5300368681320308030000670ACD +S315E061FFE0362F0036240C8682600A342F0036260CC2 +S315E061FFF04683C6822A44DBC7380D3683D7C64A4470 +S315E06200006D1C260C740FE5AB280D98882A43240DE7 +S315E062001077CCE28B848328424A426C02D7C5538E00 +S315E0620020340E6CA4604C38493A6F003226402601A1 +S315E0620030740FD68373C1E4A934132C44DDC7380E3A +S315E06200408283260C4683C4833682D7C64A446D1CB5 +S315E0620050260C740FE5AB280E98882C43240E77CCD9 +S315E0620060E28B848328424A426C02D7C5538D340DB3 +S315E06200706CBC362F003A79CAE28C548024445383AE +S315E06200803F43003A4A6F003A6C00FA6C4CD77CFC0C +S315E062009033C1000052984FEF004C4E754FEFFFE0D0 +S315E06200A048D73C0C342F002C260F0683000000183C +S315E06200B0266F0024246F00284BFAF97C49FAF08A0D +S315E06200C0538260323F5200183F6A0002001A588A31 +S315E06200D03F52001C3F6A0002001E4A6B0002670C38 +S315E06200E02F032F0B4E94508F4A4067082F032F0B36 +S315E06200F04E95508F53824A426ECA4CD73C0C4FEFB4 +S315E062010000204E754FEFFFF4AB4148D7040C246FE5 +S315E0620110001020790000527A243900005282716A16 +S315E0620120003036280002B2806D0C41F900E4FC042E +S315E062013030300A006004302A00A433C000005298CE +S315E0620140716A0032A341B280662E558F3F032F0259 +S315E06201502F0A4EBAFF48322A002E4FEF000C302AA1 +S315E0620160002A808108000000671E558F3F032F0238 +S315E06201702F0A4EBAF49C600C558F3F032F022F0A6A +S315E06201804EBAF4FA4FEF000C4CD7040C4FEF000C6A +S315E06201904E75000022790000528230390000509696 +S315E06201A02F03322900022F02206F000C774075413F +S315E06201B0B6826E1032790000509A7749B6826C0642 +S315E06201C032096002320075403141003A24026A0225 +S315E06201D05282E282D28248C183C07001241F261F06 +S315E06201E03141003E20790000527A3140000430010C +S315E06201F020790000528AC1F9000050943080700183 +S315E0620200C3F9000050963141000233C0000140B8A4 +S315E06202104E7520790000527E2F02AB423010538039 +S315E062022073C0B48164027002206F0008241F3140FB +S315E0620230003C20790000528652803080700120793D +S315E06202400000527A314000084E7520790000527EF5 +S315E06202502F02737900004FDC30107540B2826F0472 +S315E06202604A406C02700120790000528643F900012F +S315E062027040DC30807140206F0008241F43F10A00A1 +S315E062028070013151003820790000527A314000081D +S315E06202904E754FEFFFA448D77CFC246F00602C0FAD +S315E06202A02839000052820686000000484242302A1F +S315E06202B00030322A002C306A0032356A0038002C6F +S315E06202C03A2A003E4BFA016649F900E201043F40F0 +S315E06202D000323F410034302A002A322A002E3F485B +S315E06202E0003620790000527A3F4000383F41003ABA +S315E06202F04240720135400030354100323540002AD5 +S315E06203003540002E354100027168000241EF005C23 +S315E062031041E8FFEC23C80000528220442F400044AB +S315E06203206072302800023C5058882F4800404243B1 +S315E06203303F40003E716A003C26750C007F5B604878 +S315E0620340735B20790000527A4240314100022046D6 +S315E06203502F41002E602232055280C3D332413205EC +S315E0620360D3CE3089C3EB0002588B3241322F003E46 +S315E0620370D3C13149000258887340B2AF002E6DD6C0 +S315E06203802F0A4E945283588F7143BE806EB2206FAD +S315E0620390004052827142B0AF00446D86306F0032E7 +S315E06203A0302F0034322F003623C4000052823548A3 +S315E06203B000303540002C306F0038302F003A35413E +S315E06203C000323548002A3540002E4CD77CFC4FEF90 +S315E06203D0005C4E752F0A206F000822790000528673 +S315E06203E045F9000140BC32A8003C7168003845F22C +S315E06203F00A0033520002245F3028012852803340DB +S315E0620400000422790000528A700342513368003A4E +S315E0620410000220790000527A31400008103C000167 +S315E06204203140000433C0000140B84E7500E4FC1070 +S315E062043000E4FC1C00E4FC3200E4FC5200E4FC6AEA +S315E062044000E4FC802F02342F00084A790001071C81 +S315E062045066167001558F3F0220790000523433C030 +S315E06204600001071C4E90588F42403F4200082079B7 +S315E062047000005238241F33C00001071C4ED04E756F +S315E06204802F032F02206F000C3010322800047740D1 +S315E06204907541B4836C063081314000043028000235 +S315E06204A03228000677407541B4836C083141000218 +S315E06204B031400006241F261F4E752F032F02206F40 +S315E06204C0000C30103228000477407541B4836C0624 +S315E06204D0308131400004302800023228000677403D +S315E06204E07541B4836F083141000231400006241F32 +S315E06204F0261F4E752F032F02A340222F000CB081D8 +S315E06205006504300160242401A540D080E28AB0828D +S315E062051065F8E288D082E2886002200224014C40DB +S315E06205202002D480E28AB48065F0241F261F4E75CD +S315E06205304FEFFFF448D70C0420790000527A41E885 +S315E0620540001240C046FC270020B9000052345988A8 +S315E062055023D00000523440C146C02679000052865C +S315E06205603F3C00064E4D548F36804CD70C044FEF1D +S315E0620570000C4E7542404FEFFFF448D7040C33C08F +S315E06205800001071C203C00E2047E23C000005234D6 +S315E062059040C346FC27002F3C00E204443F3C010096 +S315E06205A03F3C00054E4D508F23C00000523840C09C +S315E06205B046C34CD7040C4FEF000C4E754FEFFFF479 +S315E06205C048D7040C40C346FC270020390000523865 +S315E06205D02F003F3C01003F3C00054E4D508F40C02E +S315E06205E046C34CD7040C4FEF000C4E752F02302FEA +S315E06205F00008123900012B8075F9000052780280FA +S315E06206000000FFF0488173C1E2A822390000044E7F +S315E062061071C0D280716F000A4C020800241FD0813B +S315E06206204E7500004E751039000051234FEFFFF40E +S315E0620630206F001048D7040C740F2200528113C158 +S315E062064000005123321077680006C28233C100008F +S315E06206504F1E32280002C28233C100004F20323977 +S315E062066000004FDC7541B4836E06740131420006C8 +S315E06206707568000643F9000140DC734143F12A00E4 +S315E06206807568000833D100004F24B2826E067201AB +S315E0620690314100087368000843F9000140DC45E82F +S315E06206A0000A41E8002A43F11A0033D100004F26DE +S315E06206B043F900004F28329A335800025889B3FC56 +S315E06206C000004F6866F04CD7040C13C0000051235B +S315E06206D04FEF000C4E75700120790000528643F9A7 +S315E06206E00000501E30B90000502220790000527A94 +S315E06206F0314000083140000420790000528A30B966 +S315E06207000000501C315100024E754E752079000092 +S315E0620710527A41E8001220B90000523C598823D04F +S315E06207200000523C4E7520790000527A41E8001290 +S315E062073020B900005244598823D0000052444E75D5 +S315E062074020790000527A41E8001220B90000524056 +S315E0620750598823D0000052404E7520790000527AC3 +S315E062076041E8001220B900014970598823D000019E +S315E062077049704E7541F90000527E2F5000046000C8 +S315E0620780FEA6424072012F0A41FAFE9A2F0223C860 +S315E06207900000523C23C80000524423C8000149705D +S315E06207A0487900E4FC9833C0000050C233C00000D0 +S315E06207B0511833C0000050A433C00000511671795D +S315E06207C000004FC233C10000502020006A0252800E +S315E06207D0E28033C00000501C717900004FC42000F3 +S315E06207E06A025280E28033C00000501E203C00E084 +S315E06207F0153A23C0000052404EBAFE2C42414200F6 +S315E062080020790000045633C10000502213C0000074 +S315E0620810511A13C00000512313C00000512233C1A4 +S315E06208200000511E33C10000512020BC00E20BD60D +S315E06208302F3C00E013DC2F3C00E20DD83F3C000188 +S315E06208403F3C00004E4E4FEF000C3F3C00224E4EC6 +S315E0620850548F588F2040223C00E014C241E8000CDD +S315E0620860241F23D00001497420402141000C245FFB +S315E06208704E75207900000456203C00E206242F0AD9 +S315E06208802F0223C00000523C23C00000524423C022 +S315E06208900000524023C00001497020BC00E20BD642 +S315E06208A02F3C000000002F3C000000003F3C0000AF +S315E06208B03F3C00004E4E4FEF000C3F3C00224E4E56 +S315E06208C0548F43F9000149742040241F2151000CE2 +S315E06208D0245F4E754FEFFFBC303900004F1E322F5A +S315E06208E0004848D77CFC4204342F004A9280303973 +S315E06208F000004F2013C4000051323601948030026A +S315E06209004A416C0C260106830000001078016022E1 +S315E0620910323900004FC279430681FFFFFFF173412E +S315E0620920B2846F0C7E02424413C700005132600209 +S315E062093078024A406C1A2442203C00004F28D48256 +S315E062094045EA00107542D482908224004240602CCF +S315E0620950347900004FC47B40220A0681FFFFFFF232 +S315E06209607341B2856E0C528A95C2243C00004F28D0 +S315E0620970600A347C0010243C00004F283F00A34705 +S315E062098047F90000513479443F034EB900E205EC81 +S315E06209901239000051327B79000052767DF900000F +S315E06209A0527833CA0000512C538A23C00000512E7C +S315E06209B03A7900004F24387900004F26028600001B +S315E06209C0FFFE224B82871E3C000FCE8313C10000DE +S315E06209D05132220553813F410032588FDA852F4AE0 +S315E06209E000402F470030600000BC220054812F4156 +S315E06209F0003420402E0DA340220C2442CE80C280D9 +S315E0620A003C6F00423F47003A3F41003E6078A34771 +S315E0620A10BE846716A540B084671673D071F058003D +S315E0620A2048414241828026C1600E32D073D060086E +S315E0620A3032D073D04841424177D271EA00022E2F1A +S315E0620A400030588A4843424348404240EEABEEA803 +S315E0620A504A6F003A6704868160044683C6814A6FBC +S315E0620A60003E6704868060044680C680A340B08408 +S315E0620A70670EA541B2846704318358004243484316 +S315E0620A803083D1C6538E3E0E6C8471CDE2882A40A5 +S315E0620A9071CCE2882840302F002E53803F40002EF2 +S315E0620AA0202F00344A6F002E6C00FF404CD77CFC4E +S315E0620AB04FEF00444E751039000051233239000081 +S315E0620AC050205280538113C00000512333C100008D +S315E0620AD05020661C3F390000501E3F390000501C12 +S315E0620AE04EBAFDF24200588F13C000005122600CEC +S315E0620AF04A416C08424033C0000050201039000081 +S315E0620B005123538013C0000051234E7520790000B3 +S315E0620B10527E4A5066104A7900005020670870019A +S315E0620B2033C000005020608E4FEFFFF048D7003CA4 +S315E0620B301439000051324882080200006700008ED4 +S315E0620B40363900005276A544C88273F900005278BD +S315E0620B5020390000512EE289240353824A44673CDD +S315E0620B60774343F900005134D281D683602838391D +S315E0620B700000512C2A0020405485538460102019CD +S315E0620B80538431803800424048403080D1C14A4483 +S315E0620B906CEC538220054A426CD46030D28143F9D0 +S315E0620BA000005134602236390000512C2800204979 +S315E0620BB0548453836008224053833298D08122481A +S315E0620BC04A436CF2538220044A426CDA4CD7003CC8 +S315E0620BD04FEF00104E7540C046FC27004A390000D0 +S315E0620BE05122672C420113C10000512240C146C026 +S315E0620BF04A3900005123661C4EBAFF2E3F39000087 +S315E0620C0051203F390000511E4EBAFCCA588F4E75CC +S315E0620C1040C146C04E75103900005123A34152804F +S315E0620C2013C000005123303900005020528033C097 +S315E0620C30000050207140B280660C4EBAFEEC420073 +S315E0620C4013C000005122103900005123538013C0B3 +S315E0620C50000051234E7560BE20790000527E4FEF50 +S315E0620C60FFF048D73C0024790000528230BC000194 +S315E0620C7041EA000233D20000501C33D00000501E1D +S315E0620C804A79000050C2666E47FAFE2C4E934BF9E3 +S315E0620C9000E2199249FAFF80601AA941B2806614AD +S315E0620CA04E9433D20000501C41EA000233D0000079 +S315E0620CB0501E4E934E95A3417140B28066DC71B987 +S315E0620CC0000050A3207900005286308070012079BE +S315E0620CD00000527A31400008314000042079000079 +S315E0620CE0528A3092316A000200024CD73C004FEFE2 +S315E0620CF000106000FF227201424020790000527AC1 +S315E0620D0031410008314000044EB900E21992A9412E +S315E0620D1071C0B280650000B8303B0A0848C04EFB3D +S315E0620D200802000A001A0048003C00584240207956 +S315E0620D300000527A31400004600000947001424142 +S315E0620D4020790000527A314000083141000420796E +S315E0620D500000528671B9000050A330806070720163 +S315E0620D6020790000527A3141000820790000528AE7 +S315E0620D703092316A0002000260544A7900005020E3 +S315E0620D80662E4EBAFE92301220790000528A33C045 +S315E0620D900000501C3080302A00024CD73C004FEFF6 +S315E0620DA0001033C00000501E314000026000FD08B2 +S315E0620DB0301220790000528A33C00000501C308025 +S315E0620DC0302A000233C00000501E314000024CD788 +S315E0620DD03C004FEF00104E75000001014FEFFFF04F +S315E0620DE020790000527A48D7041C226F00142468E6 +S315E0620DF0000E206800122012672023C00001498A93 +S315E0620E00302A000C322A0008D080C3C033C0000109 +S315E0620E10498E33C10001499060263039000052762E +S315E0620E2045F90000044E23D20001498A45F90000E3 +S315E0620E30527833D200014990D08033C00001498EA6 +S315E0620E402010672623C0000149983028000C32281A +S315E0620E50000833C00001497CD080C3C033C00001C2 +S315E0620E60499C33C10001499E6034303900005276B4 +S315E0620E7045F90000527833D20001499E41F90000FB +S315E0620E80044E23D00001499833C00001497CD080EA +S315E0620E9033C00001499C4A69000266000136207946 +S315E0620EA000005282325045E8000A33C900014986A1 +S315E0620EB03228000233C1000149883428000433C273 +S315E0620EC0000149B29489528243E80008302800065C +S315E0620ED033C20001497833C0000149B4528090813F +S315E0620EE033C00001497A33D10001499443E8000CEA +S315E0620EF041E8000E33D20001499633D1000149BA86 +S315E0620F0033D0000149BC600000A4D28292803002F4 +S315E0620F1033C10001498633C0000149943469012E28 +S315E0620F2034280004774AD48094817942B6846C028C +S315E0620F30340A33C2000149BA94804A426D0000889D +S315E0620F402002D481528033C2000149B233C000012B +S315E0620F504978342901303028000A77423228000283 +S315E0620F607940B6846F06D2829280300233C1000144 +S315E0620F70498833C000014996342800063069013257 +S315E0620F80D480948179427748B6846C02340833C25D +S315E0620F90000149BC94804A426D2C2002D481528081 +S315E0620FA033C00001497A33C2000149B4700272F873 +S315E0620FB033C00001499233C0000149A030390001D3 +S315E0620FC0497CC081600270014CD7041C4FEF00106F +S315E0620FD04E752079000052823429012C30280008AF +S315E0620FE0321077427940B6846E00FF206000FF22BD +S315E0620FF04FEFFFD848D73CFC20790000527A22684E +S315E0621000000E2068001238290006362900083429C5 +S315E0621010000C3229000A20112050B1C0676A4A41A9 +S315E0621020673422045382C9C353815383D884601ED2 +S315E06210303A0360143C022240600630D1D3C4538640 +S315E06210404A466CF6548053854A456CE853814A4178 +S315E06210506CDE6000009022025384754253815383B2 +S315E0621060D482601E3A04224060103C03600630D1AE +S315E0621070D3C253864A466CF653854A456CEC548035 +S315E062108053814A416CDE605C4A41665853827342E0 +S315E0621090284322405384538C5281D28160422A0291 +S315E06210A0528541F118003004602E3C0C602426051E +S315E06210B0538377C33A502E0855872448D68347E848 +S315E06210C000029E833722BE8A66FA32CDD1C1DA82C7 +S315E06210D053864A466CD853804A406CCE53825581D9 +S315E06210E04A426CBA4CD73CFC4FEF00284E757040D2 +S315E06210F03079000149863279000149784FEFFF98ED +S315E062110048D77CFC76C0420272801F40006030396C +S315E06211100001499445F098FF1F4300631F42006255 +S315E06211201F4200641F4200661F4200671F41006162 +S315E06211303F40003043F108FF71C87DCAE888E88E17 +S315E06211401F4100652F4A00363600284699C071EF86 +S315E0621150003075C9E88A3F46003AE8883F42004077 +S315E06211603F40003C9480714C3A42B0826704424010 +S315E062117060027002322F003052823F42004A740FA0 +S315E06211807BFCFFFF2C0979FC7FFFC481E4AD740F21 +S315E0621190CC823F45005EECA43C0D46843E044A4662 +S315E06211A0660AC885A94180813F44005E38390001FC +S315E06211B0498E3C39000149903A39000149882C79D7 +S315E06211C00001498A73447546CBC62F410044320317 +S315E06211D02F42004C243900014998DA8E24453A3987 +S315E06211E00001499E2F420032343900014996C3C458 +S315E06211F07745D5C132390001499CC5C52F430054B4 +S315E06212002642242F0032D48B77412F430050362F6B +S315E0621210003CC7C12643D7C2340C360DC5C4C7C12C +S315E062122038423A43B7CA636A7579000149B4262FF0 +S315E0621230004C99C6206F00322C0D9C854C03280029 +S315E0621240262F0044448444812A063A6F005E45F6BE +S315E06212502800756F003A4C032800262F0054D5C249 +S315E06212607579000149BC4C032800262F0050D1C293 +S315E0621270756F00404C032800260947F02800740F7A +S315E0621280C682C4AF003696824A436D2CA3468086F8 +S315E06212906026362F00302246740F2C0893CCCC821F +S315E06212A028499A8DC68296864A436C06143C0001AA +S315E06212B080823A473E2F005E71407C0F7440C6865C +S315E06212C07341103708607B457D442F410058220DFB +S315E06212D046812F4500542F41005C3C44868030397C +S315E06212E00001497C1F43003F204053881003760F7C +S315E06212F03F4800344880C480C680714C2F4000501D +S315E06213003F4200462F43004C600001D275EF003445 +S315E062131071F90001497EA34373F90001498041F9FD +S315E0621320000149827A0FE4A838390001497AE4A9D2 +S315E0621330C083C283D080808110300800C0854A6F46 +S315E0621340004A660672FF3F41004A4A44660278FFF7 +S315E06213504880224B204A538071C02F400040600093 +S315E0621360015C7601342F004A3F44002E3F43003A47 +S315E06213703F42003842836000012E382F0038300E3B +S315E062138053844A4457C53F440038488544854A40B9 +S315E06213906D224A6F003A670A4A2F003F6C0477D0A3 +S315E06213A0D1C6484342434A4567064A6F00466624C9 +S315E06213B071D0602A4A6F003A670C4A2F003F6C068A +S315E06213C077D0D1C66004424348434A45670A4A6FCA +S315E06213D00046670491C6600E71D0484042408680FE +S315E06213E04A456602D1C6222F004C2403E2AA321194 +S315E06213F0780E3002B8AF0040652A282F0040387B6D +S315E06214004A064EFBC802002200260072002E003613 +S315E0621410003A003E0042004800500054005C006022 +S315E062142000680070424060502002600C20014680F5 +S315E0621430C082604420024680C081603C30016038F0 +S315E06214402002600E20026022200280816024200257 +S315E06214504680B38060222001601820014680808247 +S315E062146060162002600C200246808081600A2002BB +S315E0621470C0814680600270FF4A6F003A670A2407BD +S315E06214804682C087C282600C4A45670A240DC082E2 +S315E0621490C2AF005C808132804A456604D3EF005871 +S315E06214A042443F44003A4A6F00386E00FECE382F1F +S315E06214B0002ED1EF0050D3EF005453844A446E00BD +S315E06214C0FEA23A2F0034717900014992D5C0717952 +S315E06214D0000149A053853F450034D7C04A6F0034C6 +S315E06214E06C00FE2A4CD77CFC4FEF00684E754FEFDE +S315E06214F0FFF448D70C04246F00102F3900005282A3 +S315E062150047F900E204804E9320790000528241E876 +S315E062151000202F084E93508F20790000527E70E0B3 +S315E06215203410C0824A40660000847010C08242B9BC +S315E0621530000149A24A40673870EFC480424033C036 +S315E0621540000149A84A6A000A670A103C002033C0D3 +S315E0621550000149A8700241EA000E23D0000149A2C7 +S315E062156033C0000149A6103C000F33C0000149AA0E +S315E06215702F0A4EBAF868588F4A406630737900018E +S315E0621580498E71790001499CB0816620424013C25E +S315E0621590000149824CD70C044FEF000C33C00001C6 +S315E06215A0498033C00001497E6000FB444CD70C049D +S315E06215B04FEF000C4E754FEFFFEC48D70C1C246FD3 +S315E06215C000182F390000528247F900E204804E93F8 +S315E06215D020790000528241E800202F084E93508F16 +S315E06215E020790000527E70E03410C0824A40660084 +S315E06215F001607010C08242B9000149A24A40673474 +S315E0621600424170EFC48033C1000149A84A6A000AC8 +S315E06216106708762033C3000149A87002720F41EA77 +S315E0621620000E23D0000149A233C0000149A633C1AE +S315E0621630000149AA2F0A4EBAF7A4588F4A406600BB +S315E0621640011071790001498EA543B68066000102F8 +S315E0621650424022790000527E307900004FDC33C08E +S315E0621660000149927348302900027740B2836F04E1 +S315E06216704A406C027001714045F9000140DC7748EE +S315E062168032320A00302900047940B6846F044A4057 +S315E06216906C0270017140754241F9000140DCA5437C +S315E06216A030300A00B682671E6D0C163C0001B682C7 +S315E06216B06600009E6030A741B2826752A943B68255 +S315E06216C06600008E606070047407424333C10001B5 +S315E06216D0497E13C00001498213C20001498433C3C3 +S315E06216E000014980605E4202760C33C000014980A7 +S315E06216F013C20001498213C3000149837403760F62 +S315E062170013C20001498413C3000149856010700663 +S315E0621710424113C00001498233C10001498033C1AD +S315E06217200001497E601E7401760D424133C00001BC +S315E0621730498013C20001498213C30001498333C160 +S315E06217400001497E4CD70C1C4FEF00146000F9A0F3 +S315E06217504CD70C1C4FEF00144E7500002279000046 +S315E0621760527A2079000052864A79000050A4660EC9 +S315E062177070013340000833C0000050A2601270016D +S315E062178033C0000050A23340000871B9000050A394 +S315E062179030804E75700120790000527A2F022279EC +S315E06217A000005286A5423140000820790000527E50 +S315E06217B032280002328153817150B48067246D0A07 +S315E06217C0143C0001B48066306010A742B480671AA8 +S315E06217D0143C0004B4806620601833C1000050C235 +S315E06217E0601633C100005118600E33C1000050A488 +S315E06217F0600633C100005116241F4E7570012079D0 +S315E06218000000527AA54122790000527E31400008FA +S315E06218102079000052867151B28067246D0A123CCB +S315E06218200001B28066306010A741B280671A123C4E +S315E06218300004B2806620601830B9000050C24E756E +S315E062184030B9000051184E7530B9000050A44E759B +S315E062185030B9000051164E752F0A2F023F3CFFFF4A +S315E06218603F3C000B4E4D588F241F720FC081245FA0 +S315E06218704E75700120790000527A2F0A24790000B1 +S315E06218805286314000084EBAFFD03480245F4E75EE +S315E0621890700133C0000050A24E752F0A2F023F3C02 +S315E06218A000023F3C00014E4D588F4A40671E3F3C66 +S315E06218B000023F3C00024E4D588F2200E088738161 +S315E06218C08280700133C1000050A260024240241F50 +S315E06218D0245F4E7520790000527E4FEFFFEC48D7C9 +S315E06218E0043C3A10383C00FF4A456C0478FF448574 +S315E06218F04A7900005116670C4283424245FAFF9CE0 +S315E06219007B45606E4240428342427B4545FAFF8CAC +S315E062191033C0000050A260224E924A4067FA3039E4 +S315E0621920000050A2207900005286D1C352825483CD +S315E0621930C08433C0000050A230807142BA806F0C1E +S315E062194071B9000050A3720DB28066CC71B9000025 +S315E062195050A3720DB280662653826022303900004F +S315E062196050A22079000052865282C08431803800CB +S315E062197054834E924A4067067142BA806EDE20799F +S315E06219800000527A314200084CD7043C4FEF001413 +S315E06219904E7510390000511A2F0A2F021200488143 +S315E06219A024010282000000C04A4267227440C28279 +S315E06219B04A4157C1488106810000002133C10000D7 +S315E06219C050A27223C08113C00000511A602A3F3CC4 +S315E06219D000023F3C00014E4D588F4A40671E3F3C35 +S315E06219E000023F3C00024E4D588F2200E088738130 +S315E06219F0828033C1000050A2700160341039000069 +S315E0621A00511A7220C2804A41672474DF808220794B +S315E0621A100000528243F90000501E3151000213C0A9 +S315E0621A200000511A30B90000501C70026002424058 +S315E0621A30241F245F4E7500003039000052C82F0221 +S315E0621A402079000052CAC1F9000052CED080600C03 +S315E0621A5075D02202E08AE1898282308153804A40EF +S315E0621A606CEE241F4E75206F0004203C00007F3828 +S315E0621A70424143F9000050AA214000143039000087 +S315E0621A8050BE2151000443F900E423EC42A800343D +S315E0621A90315100183141001A31410046314000446B +S315E0621AA0314100263141012630813141001233C095 +S315E0621AB000004FD642B9000050B64E75303C7FFF0B +S315E0621AC042414FEFFFDC48D71CFC41F900012C9004 +S315E0621AD023C8000050AE42B9000050B642B90000D9 +S315E0621AE050BA383900012C9047F9000050AE49FAF5 +S315E0621AF0FF4833C00000508433C000005086203C6B +S315E0621B0000012BC833C10000508833C10000508AFF +S315E0621B1023C0000050B242424243600000AC3A2A1F +S315E0621B20004208050000670623CA000050AA301288 +S315E0621B3079447340B8816702528238007140A341AA +S315E0621B40B2806652322A00327DF90000508471C159 +S315E0621B50B086640633C100005084302A00287FF9DB +S315E0621B60000050867DC0BC87640633C000005086A4 +S315E0621B707FF9000050887DC1BC87630633C10000EF +S315E0621B8050887DF90000508A73C0B286630633C01E +S315E0621B900000508A5283A940CA804A45662041EADB +S315E0621BA0004C23D0000052CA41EA005033D0000014 +S315E0621BB052CE41EA005233D0000052C84E94246AB3 +S315E0621BC000544A8A6600FF58245B4A8A6600FF50E0 +S315E0621BD0528233C300004FCC33C200004FD633C2C9 +S315E0621BE0000050BE4CD71CFC4FEF00244E754FEF01 +S315E0621BF0FFF4206F001048D7001C342F00143228FF +S315E0621C000008A1437141B68066062002D08060502A +S315E0621C10224143E97FFF4A68001C660A91C8424056 +S315E0621C2075C277C1602C91C8424075C277C1600EB9 +S315E0621C3079C9B6846302528052805288D3C179C828 +S315E0621C40B48462EC601A79C9B684630252805288BF +S315E0621C50D3C179C8B48462EE4A406604103C00019E +S315E0621C604CD7001C4FEF000C4E754FEFFFF048D794 +S315E0621C701C04246F0014240A068200000048266AC7 +S315E0621C80000443EA004C302B00023553004841EB36 +S315E0621C900004D0803540004A702012D853804A4012 +S315E0621CA066F8356B0024006C356B0026006E716A4F +S315E0621CB00008A141B2806674302B0028D080528041 +S315E0621CC035400070302B002AD08052803540007259 +S315E0621CD0302B002CD080528035400074302B002EA1 +S315E0621CE0D08035400076302B0030D08035400078A9 +S315E0621CF0302B0032D0803540007A302B0034D080F1 +S315E0621D003540007C302B0036D0803540007E302B6B +S315E0621D100038D08035400080302B003AD0803540A4 +S315E0621D200082302B003CD0806000009C3F2B002874 +S315E0621D3049FAFEBC2F0A4E945C8F354000703F2B09 +S315E0621D40002A2F0A4E945C8F354000723F2B002C9E +S315E0621D502F0A4E945C8F354000743F2B002E2F0A7B +S315E0621D604E945C8F354000763F2B00302F0A4E94BE +S315E0621D705C8F354000783F2B00322F0A4E945C8FA1 +S315E0621D803540007A3F2B00342F0A4E945C8F354003 +S315E0621D90007C3F2B00362F0A4E945C8F3540007EE6 +S315E0621DA03F2B00382F0A4E945C8F354000803F2BE4 +S315E0621DB0003A2F0A4E945C8F354000823F2B003CFE +S315E0621DC02F0A4E945C8F354000847001356B003E7D +S315E0621DD00086356B00400088356B0042008A256BD1 +S315E0621DE00044008C256B00480090256B004C009403 +S315E0621DF0356B00500098356B0052009A35400046CC +S315E0621E00254200044CD71C044FEF00104E754FEF8D +S315E0621E10FFE848D71C1C246F001C720143F90000DE +S315E0621E2050AE206A00043010354100127340600EF5 +S315E0621E307550B2826710206800544A8866F220596B +S315E0621E4028494A8866EA22790000527E2648794025 +S315E0621E503211224875416014D6837743B6826E02A8 +S315E0621E602648202800546716224820403628000279 +S315E0621E707143B4806D0A7150B880660460DA2248B4 +S315E0621E8020146704588C60E2424075690002254975 +S315E0621E900004354000467141B082672C322B000265 +S315E0621EA0D2817341B4816C20B0816D1C72FF700186 +S315E0621EB0254B0004354100083540001C2F0A4EBA16 +S315E0621EC0FDAA588F226A000472017002207900002E +S315E0621ED0527A31410008314000042079000052868E +S315E0621EE030A9000220790000528A30E90032346972 +S315E0621EF0002830CA30A900343269003043F29801D2 +S315E0621F004CD71C1C4FEF00183149000233C1000167 +S315E0621F1040B84E7520790000527E303900004F6C31 +S315E0621F203210206F0004C0813140001A207900002F +S315E0621F3052863080700120790000527A3140000882 +S315E0621F404E7522790000527E2F0A2F023219A7427D +S315E0621F50207900005286246F000C71C1B48052C0B1 +S315E0621F60143C00064880C08130C0354000263211FC +S315E0621F7071C1B48052C0241F4880C0813080354030 +S315E0621F800126700220790000527A245F314000080F +S315E0621F904E7520790000527E2F027409305041E876 +S315E0621FA001C230087348C1FC91A342404840D088E0 +S315E0621FB07140E4A0143C000FE4A1206F0008241FE6 +S315E0621FC09081C1FC038430802079000052863080A3 +S315E0621FD0700120790000527A314000084E7520790E +S315E0621FE00000527E2F02737900004FDC301075409C +S315E0621FF0B2826F044A406C0270017201207900007D +S315E0622000527A43F9000140DC314100082079000050 +S315E0622010528630807140206F0008241F43F10A0027 +S315E0622020315100A24E752F0B2F0A206F000C2479D6 +S315E06220300000528647F9000140BC2268000434D1B0 +S315E0622040716800A234F30A00700234D034E80026E4 +S315E062205034A8012635680128000220790000528AF8 +S315E062206030E900323469002830CA30A90034326976 +S315E0622070003043F29801245F265F314900022079FD +S315E06220800000527A31400004103C000631400008FC +S315E0622090103C000133C0000140B84E7542402279DF +S315E06220A00000527A4FEFFFE448D70C7C266F00209F +S315E06220B020790000527E4241246B000433C0000165 +S315E06220C007203A2A0024342900067942601A361833 +S315E06220D0226A00485281968577433C313A0236312C +S315E06220E03A00224693C3D0897741B8836EE033C023 +S315E06220F0000107204A6B0046671E736B0008A14326 +S315E0622100B6816604D080600A3F002F0B4EBAFAE0D1 +S315E06221105C8F33C000010720302B001A08000000F4 +S315E0622120671E322A00427608C2834A416612323913 +S315E062213000010720C5EA003AD48133C200010720D4 +S315E0622140A941C0814A406718322A0038302A0036EF +S315E0622150D081323900010720D08133C000010720E7 +S315E0622160326A0028306A0030760441F188012279C9 +S315E06221700000527A33C800010736334300042279FD +S315E06221800000528A321371410C800000038467308A +S315E06221906E064A41671460760C8000000708673C69 +S315E06221A00C8000000A8C6666604E425942593039AC +S315E06221B00001072032C0425932C032C84251604AF9 +S315E06221C032C8425932C830390001072032C042591A +S315E06221D032C042404251334000026032303900013F +S315E06221E00720424132C032C8425932C84259425946 +S315E06221F03280334100026016425932C8425942592E +S315E062220032C8425932B900010720334800027601EA +S315E062221033C3000140B84CD70C7C4FEF001C4E75BF +S315E06222204FEFFFC0720848D77CFC246F0044266AF1 +S315E0622230000441EA000833D0000052B8302B004275 +S315E062224041EA001C33D0000052BA41EA004633D07C +S315E0622250000052DC41EA012833D00000529A41EA9A +S315E0622260000233D0000052AC41EA012CC08133D087 +S315E0622270000052AE41EA013033D0000052B041EA8A +S315E0622280012E33D0000052B241EA013233D000006F +S315E062229052B441EA001833C0000052BC302A001A38 +S315E06222A033C0000052D033D2000052DE33D0000099 +S315E06222B052E641EA001423D0000052E2207900009F +S315E06222C0527A3C680006320E6F0005383210740BA3 +S315E06222D0B5814A4157C64886448608000000670AC7 +S315E06222E041EB003A33D0000052D6A541C2804A4162 +S315E06222F0670A41EB003E33D0000052D2A941C08169 +S315E06223004A40672041EB003633D0000052DA41EBB7 +S315E0622310003833D0000052D841EB004033D00000A1 +S315E062232052D4600E424033C0000052DA33C000003D +S315E062233052D841EB004CA34123D0000052CA41EB94 +S315E0622340005033D0000052CE716A0026B280670830 +S315E0622350A542B480667E60424A46662E41EF004000 +S315E062236024390000528A41E8FFF023C80000528A0D +S315E06223702F0A4EBAFD28424023C20000528A588F85 +S315E062238020790000527A3140000471790001072019 +S315E062239020006A025280E288603C4A46662E41EF3D +S315E06223A0004024390000528A41E8FFF023C8000069 +S315E06223B0528A2F0A4EBAFCE6424023C20000528A93 +S315E06223C0588F20790000527A31400004303900019A +S315E06223D0072060024240322A001AA942C2824A417A +S315E06223E0670A362B0036342B003860044242424399 +S315E06223F073EA0126AB44B8816562323B1A0848C18A +S315E06224004EFB1802000C0012001C0032003E005423 +S315E0622410322B0028603E362B0028382B002C6008D1 +S315E0622420362B0028382B002AC5C42203928475C253 +S315E062243084C3D0826028382B0030322B0028D284C5 +S315E0622440601C342B002E322B0028C7C2D28277C39F +S315E062245086EB0030D0836006D483D0824241361266 +S315E062246020790000528275430C8200000384674C37 +S315E06224706E084A43671A600000DA0C8200000708B9 +S315E062248067660C8200000A8C660000C86000008EF7 +S315E062249032503A280002306B003C76012E099E806B +S315E06224A0326B00289A8133C5000052C4380733C7BD +S315E06224B0000052C241F18801DA88605C3810326B02 +S315E06224C0002842437401988132280002306B003C56 +S315E06224D033C4000052C2D08141F188013A0033C070 +S315E06224E0000052C4D888607232503A280002306BDB +S315E06224F0002876FFD089380033C0000052C2302B04 +S315E062250000309A889A80D2853A2B003C33C100002B +S315E062251052C44685DA80DA814242603E3810326BD6 +S315E06225200030342B00283068000242439889988252 +S315E0622530D284382B003C240894803A0233C20000ED +S315E062254052C433C1000052C274FF4684D889D8812E +S315E062255060084243424242454244303C7FFF41EAA0 +S315E062256000A2428733D0000052E041EB005233D002 +S315E0622570000052C899CC734E33C0000052B62C416B +S315E062258020790000527E326B00243A70780071C97D +S315E062259073CDB081620871EB0026B08164043A7C47 +S315E06225A0003F9BC9734D206B0048424047EB0052A7 +S315E06225B032701A002A4133C9000052BE32301A0222 +S315E06225C033D3000052C82F0A33C0000052C092894A +S315E06225D033C1000052C64EB900E01570266A0004A7 +S315E06225E0588F4A46670000BE3039000052C23079E1 +S315E06225F00001072E323900010730D1C030390000C0 +S315E062260052C433C8000052C2D28030390001072C6E +S315E062261033C1000052C44A4067243279000107326E +S315E0622620538033C00001072CD1C933C8000052C2BF +S315E0622630307900010734D28833C1000052C4207970 +S315E06226400000527E722071707800B2806656303930 +S315E0622650000052C2307900010724323900010726B0 +S315E0622660D1C03039000052C433C8000052C2D280B1 +S315E062267030390001072233C1000052C44A40672460 +S315E0622680327900010728538033C000010722D1C99D +S315E062269033C8000052C230790001072AD28833C1BA +S315E06226A0000052C4302B0042A541C0814A40671601 +S315E06226B03039000052C2206B004473B0D800D0813A +S315E06226C033C0000052C2528C714C5487BDC06E005A +S315E06226D0FEB0302A001A7C08C0864A4067000124B0 +S315E06226E032127E0A2679000052823684374500022B +S315E06226F030017D41C1FC91A342404840D0817140A6 +S315E0622700EEA01E3C000FEEA69086C1FC0708928002 +S315E06227104A41661041F9000052C23750000437451B +S315E06227200006600E41F9000052C437440004375097 +S315E06227300006302A001AA541C0814A406710206A25 +S315E0622740000441E8003E33D000005298600878FF0A +S315E062275033C400005298206A0004424449F900E119 +S315E0622760FA367B68003C4BF900E1F1486000008C88 +S315E06227704A6A000267363F53002E3C6B00043E2BEA +S315E062278000023C2B00062F0B2F0A4E95508F4A40D3 +S315E062279067082F0B2F0A4E94508F36AF002E374EB6 +S315E06227A00004374700023746000660082F0B2F0AFF +S315E06227B04E94508F3013323900005298D082368070 +S315E06227C0302B0004D08237400004302B0002D083E5 +S315E06227D037400002302B0006D08337400006714155 +S315E06227E008010000670AE2800080FFFF8000600265 +S315E06227F0E28033C00000529852847144BA806E001F +S315E0622800FF704CD77CFC4FEF00404E754FEFFFE810 +S315E062281048D73C0C26790000528A206F001C227948 +S315E06228200000527E4BEB000424680004425549EBFB +S315E062283000084254341173EA002471C2B28062081D +S315E062284073EA0026B280640C20790000528630BCBE +S315E0622850FFFF60602279000052863282226A004877 +S315E0622860302A00249480734230311A0232311A00DF +S315E0622870908136804A680046671A73680008A14309 +S315E0622880B6816604D080600A3F002F084EBAF360D4 +S315E06228905C8F3680302A0042A541C0814A40671487 +S315E06228A0D482206A0044754271B028003A8071B0E1 +S315E06228B0280138807603700120790000527A31432C +S315E06228C00004314000084CD73C0C33C0000140B8EC +S315E06228D04FEF00184E7520790000527E2F0A2F02C4 +S315E06228E043F9000050AE424073506010528075402A +S315E06228F0B2826714206800544A8866F020594A8892 +S315E062290066EA41F900012C90227900005286700154 +S315E062291032D05888600252801218488132C1244906 +S315E062292066F46004425A528073407420B4816CF457 +S315E0622930702120790000527A241F245F314000081A +S315E06229404E752F0B2F0A266F000C227900005286F5 +S315E0622950206B000432A80024336800260002227944 +S315E06229600000528A32E8003432E80030302B001A36 +S315E062297045E9000208000000670632A8003A6002F4 +S315E0622980425134E8002EA941302B001A43EA000294 +S315E0622990C0814A40670E34A8003632E8002C32E83D +S315E06229A000386008425232E8002C425932E8002A86 +S315E06229B070057202245F265F425133680028000286 +S315E06229C020790000527A31400004103C0001314126 +S315E06229D0000833C0000140B84E754FEFFFC048D7DC +S315E06229E07CFC20790000527A5C883C10246F0044BB +S315E06229F02A390000527E20390000528A43EF0040B5 +S315E0622A0043E9FFF042422646558B308B2045384BF0 +S315E0622A10734B3E183A582F40002C23C90000528A65 +S315E0622A20424023C80000527E600C79587620B68414 +S315E0622A306602528252807940B2846EEE2F0A4EBAB4 +S315E0622A40F65C424020790000527A588F31400004A9 +S315E0622A50207900005282382800044A476700011A4A +S315E0622A604A42670001143079000107202204928805 +S315E0622A70360148C387C22203484133C100010722B7 +S315E0622A80324330034A416C0C448133C10001072270 +S315E0622A9072FF600272013E0D67422C6A00047F4952 +S315E0622AA077EE0034E28BB6876C0A424033C00001AF +S315E0622AB0072230037F404483B6876F0A424033C0C1 +S315E0622AC00001072230033601C5C0C7F900010722BB +S315E0622AD041F03800D48833C20001072036127543CC +S315E0622AE00C8200000384673A6E084A436718600006 +S315E0622AF0009C0C820000070867420C8200000A8C88 +S315E0622B006600008A6056424233C00001072433C140 +S315E0622B100001072833C20001072633C20001072AF3 +S315E0622B20606A4243448033C000010726448133C36E +S315E0622B300001072433C3000107286034424744801A +S315E0622B40448133C00001072433C10001072833C73B +S315E0622B500001072633C70001072A6030424233C0CC +S315E0622B600001072633C20001072433C200010728A9 +S315E0622B7033C10001072A6014424333C300010724CC +S315E0622B8033C30001072633C3000107223E0D670007 +S315E0622B9000D4714CA341B2806C0000CA30390001A6 +S315E0622BA0072022049280200B538048C183C0200113 +S315E0622BB0484033C00001072C6C0C448033C00001EE +S315E0622BC0072C70FF60027001361275430C820000BA +S315E0622BD00384673A6E084A4367186000009C0C8279 +S315E0622BE00000070867420C8200000A8C6600008AD1 +S315E0622BF06056424233C10001072E33C000010732FC +S315E0622C0033C20001073033C200010734606A4243CF +S315E0622C10448133C100010730448033C30001072E8B +S315E0622C2033C300010732603442474481448033C192 +S315E0622C300001072E33C00001073233C700010730B7 +S315E0622C4033C7000107346030424233C100010730C6 +S315E0622C5033C20001072E33C20001073233C00001DE +S315E0622C6007346014424333C30001072E33C30001C5 +S315E0622C70073033C30001072C2F0A33C40001072053 +S315E0622C804EBAF59E20790000527A3146000441EF51 +S315E0622C90003023C50000527E4CEF7CFC000423D05A +S315E0622CA00000528A4FEF00444E7570014FEFFFEC21 +S315E0622CB020790000527A48D71C0C266F0018314002 +S315E0622CC000084AAB0034670C207900005286425015 +S315E0622CD060000090246800143768001200182768C4 +S315E0622CE0000E0014274A0034424270FF49FAED4A68 +S315E0622CF060023003361271407343B08167025282DA +S315E0622D00302A0042A941C0814A40662C41EA004C21 +S315E0622D1023D0000052CA41EA005033D0000052CEBE +S315E0622D2041EA005233D0000052C84E94302A004243 +S315E0622D30A941B38035400042246A00544A8A66B2A9 +S315E0622D40302B004441EB003423D0000050B62079AA +S315E0622D5000005286D0823740004433C000004FD62E +S315E0622D6030824CD71C0C4FEF00144E75206F000476 +S315E0622D70203C00007F3843F900E423EC42A80034AB +S315E0622D8042B9000050B6214000143039000050BE0E +S315E0622D90315100183140004433C000004FD64E75C1 +S315E0622DA02F032F02322F0010302F0012206F000CFB +S315E0622DB075417740B6826D0C42423142001C4A4010 +S315E0622DC06E146010760190813143001C7740B483C3 +S315E0622DD06E04600E70014840424073414C4100000F +S315E0622DE0600270FF241F261F4E754FEFFFF048D733 +S315E0622DF00C0C246F0014424043F9000050AE206A86 +S315E0622E0000043210354000127141600E7550B08296 +S315E0622E106710206800544A8866F2205926494A8833 +S315E0622E2066EA227900005282302900024A6A012A61 +S315E0622E30660C327900004FC4528993C02009224859 +S315E0622E4077C07541600A22280054671422482041FF +S315E0622E5073E80028B681650A7350B481660460E659 +S315E0622E60224822136704588B60E4424175C02549C3 +S315E0622E700004354100463229002877C1B483671CD5 +S315E0622E803F003F012F0A4EBAFF18354000082F0A6D +S315E0622E904EBAEDD84FEF000C226A00047002207938 +S315E0622EA00000527A72013140000420790000528AB1 +S315E0622EB030E900323469002830CA30A90034326918 +S315E0622EC0003043F298014CD70C0C4FEF00103149B9 +S315E0622ED0000233C1000140B84E754FEFFFE448D7B8 +S315E0622EE00C0C246F002026790000527E43F9000024 +S315E0622EF050AE206A00043F680002001A3F6800286C +S315E0622F0000147153600E7350B081671420680054E8 +S315E0622F104A8866F220594A8866EC41F900012C90AB +S315E0622F2025480004701C41EF001CD08F41E8FFF693 +S315E0622F30558024390000528A23C80000528A41EF44 +S315E0622F40001C26390000528241E8FFF623C00000E9 +S315E0622F50527E23C8000052824A6A001267082F0A2C +S315E0622F604EBAEEAC60062F0A4EBAFE804240207937 +S315E0622F700000527A23CB0000527E23C300005282C5 +S315E0622F8023C20000528A226A00044CEF0C0C000451 +S315E0622F9031400004103C00014FEF00203140000850 +S315E0622FA020790000528630914E750000207900014A +S315E0622FB04DA84FEFFFE02F02227900E4FE18342895 +S315E0622FC0001C41EF0004101910C066FA41EF0004DC +S315E0622FD010B9000186502F084EB900E2BC70588FD6 +S315E0622FE03002241F4FEF00204E754E56FFE8302E1A +S315E0622FF0000848D7040C306E000E7610246E000A84 +S315E0623000222E00107540B682662C756A00367748C5 +S315E0623010B68266227610B682661C487800102F2A3F +S315E062302000322F014EB900E00EC44FEF000C424071 +S315E062303035400036601C558F486EFFF63F002D4ADC +S315E0623040FFF63D48FFFA2D41FFFC4EB900E240181B +S315E0623050508F4CEE040CFFE84E5E4E754E56FFF412 +S315E0623060226E000841EEFFF7101910C066FA558F1E +S315E06230704267486EFFF74EB900E2B31C508F4A8052 +S315E0623080670820403028001C600270FF4E5E4E7575 +S315E062309070014FEFFFD048D73CFC2A0F068500004F +S315E06230A00028262F003442427D6F00384BF900E05B +S315E06230B00EC4796F003A49F900E240A233C00001DA +S315E06230C049C447F900E23CF045F900E033EA6000C2 +S315E06230D0008A487800082F032F054E954FEF000CC3 +S315E06230E05083A341202F0028B280673A6D064A805A +S315E06230F067126048A541B2806724123C0003B28041 +S315E0623100663A602E202F002C72644C0108004C4413 +S315E062311008002F004E9442AF002C588F601E203C70 +S315E062312000E28C966012223C00E28D6E2F4100280E +S315E0623130600A203C00E28B5C2F400028202F0028AA +S315E06231406714222F002C2E01484748C73F073F01EC +S315E06231502F004E93508F4E9252827142BC806E0027 +S315E0623160FF7242414CD73CFC4FEF003033C1000165 +S315E062317049C44E754FEFFFF048D70C0C246F00142C +S315E06231804EB900E03130700123CA000149C847F9FF +S315E062319000E240A241EF001833D0000149CC33C0CF +S315E06231A0000149CE4EB900E03146600848780064D5 +S315E06231B04E93588F4A79000149CE66F04EB900E0E7 +S315E06231C0313042402439000149C8948A7542E68A20 +S315E06231D042B9000149C833C0000149CE33C000019B +S315E06231E049CC4EB900E0314672FF93C97142604202 +S315E06231F02052B1FC00E243A866147379000149F0FB +S315E0623200262A00044C013800424125430004B1FC01 +S315E062321000E28C9666027202B1FC00E28B5C6602A8 +S315E06232207203B1FC00E28D6E660272013481508AED +S315E062323052897749B0836EB830024CD70C0C4FEFA7 +S315E062324000104E75558F3F3C00014EB900E2EA60D0 +S315E06232504EB900E298DA588F207900014DA83028FD +S315E0623260003667162F3900014DA43F002F083F3C18 +S315E062327000104EBAFD764FEF000C2F3900018568DB +S315E06232804EB900E2777E42574EB900E2EA60588F65 +S315E062329060FF00004D3A000071F9000186F42F0AE2 +S315E06232A073EF000C206F000848404240227900012B +S315E06232B0856421490004828071F9000186DC484018 +S315E06232C042402141001873F9000186F08081214075 +S315E06232D000104A896704234800087202203C000114 +S315E06232E0856490B900014EC42268000C23C80001CF +S315E06232F0856445F90001857821400008302900247B +S315E062330031410014322800162079000185788081E7 +S315E062331033400024600424482050B3C867044A88D6 +S315E062332066F4B3F900014DA8672832290022C0810C +S315E06233304A40671E4A88671A3028001E72FE249049 +S315E062334020B900014F5423C800014F54C081314077 +S315E0623350001E245F4E752F0A226F000C244995F9F0 +S315E062336000014EC4206F0008225125480004214A1C +S315E0623370000821490004670423480008245F4E756B +S315E0623380207900014DA8302F000432280024314014 +S315E06233900022C0814A4066123028001EA341808125 +S315E06233A03140001E4EB900E033EA207900014DA8B3 +S315E06233B0302800244E754FEFFFF448D7040C362FC1 +S315E06233C00010242F0012247900014EBC4A8A671A43 +S315E06233D0558F23D200014EBC4878001C42672F0A03 +S315E06233E04EB900E00DE84FEF000C42402079000153 +S315E06233F04DA824A80026214A002635430016254812 +S315E0623400000C42AA00083540001430280020808370 +S315E06234107743314000207008B08367586D1C103CDA +S315E06234200002B0836742103C0004B0836746103CFA +S315E06234300001B0836600008260227020B083674A32 +S315E06234406D0A103C0010B083666E60347040B083E3 +S315E062345067440C8300000080665E60502F0A4EB9B6 +S315E062346000E28F32588F60502F022F0A4EB900E287 +S315E0623470900460422F022F0A4EB900E2908A6036CB +S315E0623480558F2F022F0A426760162F022F0A4EB916 +S315E062349000E28F6E6020558F2F022F0A3F3C0001BB +S315E06234A04EB900E2B5824FEF000C600C2F022F0A94 +S315E06234B04EB900E2445C508F302A00164CD7040CB9 +S315E06234C04FEF000C4E754FEFFFF0302F001422796C +S315E06234D000014DA848D71C0445E90026205273C076 +S315E06234E0600C75E80016B2826708244820504A8864 +S315E06234F066F028680008296800040004266800046B +S315E06235004A8B6704274C00083229002046802490C3 +S315E06235104CD71C044FEF0010C280334100203229A1 +S315E06235200022C2803341002232290024C081334026 +S315E062353000242028001820B900014EBC23C80001EF +S315E06235404EBC4E75227900014DA84FEFFFE448D795 +S315E06235501C3C45E90026382F002020522239000122 +S315E06235604EBC42406064342800162604C6824A4352 +S315E0623570675436280014A745CA834A4567048082A1 +S315E062358060442868000824902968000400042668DC +S315E062359000044A8B6714A945C685274C00084A434E +S315E06235A0670826280010D7AB001020813229002058 +S315E06235B04682C2823341002032290022C481220837 +S315E06235C0204A33420022244820504A8866984CD7E3 +S315E06235D01C3C23C100014EBC4FEF001C4E7500003F +S315E06235E04FEFFFF448D7040C342F0010362F001645 +S315E06235F04A42676C3F2F001E3F2F001E3F2F001E80 +S315E06236003F2F001E3F032F2F001C3F027542487971 +S315E0623610000149DC4EB900E2E1424FEF0014701856 +S315E0623620B082673C103C0016B0826734714345F95C +S315E062363000E033EA2200E789ED88908106800001A6 +S315E06236406894204030100280000010004A4067040F +S315E0623650600E4E923039000186F40800000066F290 +S315E06236604CD7040C4FEF000C4E752F02242F000846 +S315E06236702F2F000C4EB900E28A54588F4A79000126 +S315E062368049DA660C2F420008241F60FF00005844A6 +S315E0623690241F4E754A6F00046742558F3F3C000116 +S315E06236A04EB900E2EA60700141F900014DA823D00B +S315E06236B0000186E02F390001856833C0000149DAEE +S315E06236C04EB900E2777E303900014CF0508F33C05C +S315E06236D000010738674060FF00003F544A79000105 +S315E06236E0073867064EB900E2773441F900010738D8 +S315E06236F033D000014CF02F39000185744EB900E2F7 +S315E0623700777E4240588F33C0000149DA3F40000479 +S315E062371060FF0000B34E4E7542404FEFFFA448D7BC +S315E06237207CFC4879000149D2487900014B9833C064 +S315E0623730000149D04EB900E2FE52508F49EF004C8B +S315E06237404DEF00564BEF005447EF003C4EB900E2B6 +S315E0623750DB824A79000186F4672C740A45F900E057 +S315E062376033EA4E9253824A4266F8700241F90001A8 +S315E062377086DC3F50003041F9000186F03F5000326E +S315E06237803F40002E603A4AB90001885866047003E9 +S315E062379060027007558F486F003242A72F3C0001E6 +S315E06237A0FF0142A74879000149D04879000149D032 +S315E06237B03F004EB900E240C43F40004A4FEF001C72 +S315E06237C0558F3F3C00014EBAFECC588F302F002E0B +S315E06237D0A541C0814A40670004003F2F00323F2F77 +S315E06237E000324EB900E2EA40588F3A006F0003EACF +S315E06237F0323900018B7C7140342F00323C2F00302D +S315E06238007741B68067362800E78CED88908406803B +S315E06238100001688E204078083010C0844A40670014 +S315E062382003482003E788ED8B968006830001688E65 +S315E062383020433010C0844A406700032E558F3F050F +S315E06238407E104EB900E2DBCA3F02283900018C6481 +S315E06238503F063F3C000A42672F044EB900E2AE4C97 +S315E06238602F0C3F0536003F3C00014EB900E2D6928E +S315E06238702F0E2F0D486F0078486F007E2F0C4EB9E1 +S315E062388000E0350871454FEF002C2200E789ED88AC +S315E062389090812203558173C10680000168942040BD +S315E06238A03010BE81650002BE323B1A0848C14EFB4B +S315E06238B018020022007C002E02B202B202B200CCF2 +S315E06238C002B204200420014E01AE02B204200420BA +S315E06238D0014E01AE0280000010004A40660002829C +S315E06238E0558F42673F3C00013F032F3900018C64EC +S315E06238F04EB900E273C24FEF000C4A4067000266BF +S315E0623900558F3F3C00017143A5417816B28056C29D +S315E0623910426748823F03988224042F3900018C640F +S315E06239204EB900E2B1684FEF000C6000027C7E089F +S315E0623930C0874A406700022E3F3C2710741C3F3C1A +S315E062394027103F3900014A3E4267486F004C4EB944 +S315E062395000E03524486F0064486F006A486F00589B +S315E06239603F2F00703F2F00743F2F00723F2F00728F +S315E06239704EB900E270A84FEF00206000022C722080 +S315E0623980C0814A40670001DE2F0C3F053F3C0003E1 +S315E06239904EB900E2D692322F0054302F0062306F79 +S315E06239A00056326F0058343900014A3E363900011A +S315E06239B04B5C92803F410054322F0060C5FC0007A9 +S315E06239C0C7FC000791C13F480056306F005C93C860 +S315E06239D03F490058326F005A306F005E93C83F49E4 +S315E06239E0005A2F0E2F0D2F0C3F02741B3F033F012F +S315E06239F03F004EB900E26FCE4FEF001C600001AAB5 +S315E0623A00558F2F0B2E0352873F072F044EB900E2E4 +S315E0623A10A49C71434FEF000C721141F900E2FDE4A0 +S315E0623A20B280661E2F0B3F023F064E90508F4A4091 +S315E0623A3066367D46716F003CB0866F000294600028 +S315E0623A4002922F0B3F023F064E90508F4A40661E0F +S315E0623A507542716F003EB0826F000276600002745A +S315E0623A6071437412B4806608761274196004760D36 +S315E0623A70741A558F2F0B2C0353863F063E0645F983 +S315E0623A8000E2A1D02F044EB900E2A47471424FEF76 +S315E0623A90000C721AB28066223F3C00103F062F0489 +S315E0623AA04E92204030AF00443F3C00143F062F0464 +S315E0623AB04E92204030AF005060203F3C00123F06FD +S315E0623AC02F044E92204030AF00463F3C00163F0640 +S315E0623AD02F044E92204030AF0052700DB7804FEF08 +S315E0623AE0000E45F900E2A1D04A4057C048804480C2 +S315E0623AF03F003F033F072F3900018C644EB900E275 +S315E0623B007454721A3F40006671424FEF000CB28005 +S315E0623B1066263F3C00103F072F044E92204030AFAE +S315E0623B2000443F3C00143F072F044E92204030AFE2 +S315E0623B3000504FEF001060703F3C001274193F076F +S315E0623B402F044E92204030AF00463F3C00163F07BE +S315E0623B502F044E92204030AF00524FEF0010604883 +S315E0623B6074166044424260403F2F0056741545F930 +S315E0623B7000E033EA3F2F00563F2F005C3F2F0060A4 +S315E0623B803F0173412001E788ED8992800681000159 +S315E0623B90689020412F103F3C001E4EBAFA444E9286 +S315E0623BA04E924E924FEF00103F2F00563F2F005637 +S315E0623BB03F2F005C3F2F00603F057B452005E7888D +S315E0623BC0ED8D9A8006850001689020452F103F02B0 +S315E0623BD04EBAFA0E4FEF0010302F002EA941C08187 +S315E0623BE04A40670000DE4AB900018858670000D49F +S315E0623BF02F0D2F0E4EB900E294C2508F4A406700F5 +S315E0623C0000C2716F0056A743243900018828B68046 +S315E0623C1066000090302F0054A5447340B8816C76FC +S315E0623C2057803F400054714041F900018834558F16 +S315E0623C3024300C003F3C00013F3C000142673F3CC0 +S315E0623C4000013F3C00032F39000188584EB900E27B +S315E0623C5092E6303900018B7C4FEF00106D48426787 +S315E0623C6045F900E033EA4267426742673F007140E6 +S315E0623C702200E789ED889081068000016890204005 +S315E0623C802F103F3C001E4EBAF9584E924E924E921B +S315E0623C904FEF0010601032390001882CD0813F402E +S315E0623CA00054700A600270284267426742673F2F9B +S315E0623CB0005A3F2F005E2F023F004EBAF9244FEFC3 +S315E0623CC00010558F42674EBAF9CC588F6000FA7E83 +S315E0623CD036070683FFFFFFF6774341F900E4FCE42B +S315E0623CE0741841F03A003F50005A6000FEBC000092 +S315E0623CF030390001856C4FEFFFF448D7040C4A4037 +S315E0623D006610424133C100014F5033C100014D1C80 +S315E0623D1060087340741FB4816D4A307900014D1CAE +S315E0623D2076207348528833C800014D1C7548B682C6 +S315E0623D306608424233C200014D1C22415280E78945 +S315E0623D4033C00001856C41F900014F5C43E9023002 +S315E0623D5045EF001021929E0043EF0014D288204185 +S315E0623D60215111844CD7040C4FEF000C4E754FEF86 +S315E0623D70FFE048D71C1C263900014DA8280FA1791F +S315E0623D8000014DA849F900E03130068400000018D0 +S315E0623D9045F900E00EC447F900E03146600000DC18 +S315E0623DA04E9430390001856C48780008538033C000 +S315E0623DB00001856C303900014F507540528033C046 +S315E0623DC000014F50E78A0682000160DC2F022F0471 +S315E0623DD04E92717900014F504FEF000C7220B28023 +S315E0623DE06608424033C000014F504E934A79000163 +S315E0623DF049CE677A202F00180C8000E28B5C66164B +S315E0623E00222F001C73C10C8100002B1C6608424104 +S315E0623E1033C1000149CE4A79000149CE67500C8030 +S315E0623E2000E243A8661C2079000149C8203C00E212 +S315E0623E3043A8B0A8FFF8660A222F001CD3A8FFFCAD +S315E0623E40602C487800082F022F39000149C84E924B +S315E0623E504FEF000C3039000149CC50B9000149C836 +S315E0623E60538033C0000149CC33C0000149CE2F2FC5 +S315E0623E70001C206F001C4E90588F4A790001856CB9 +S315E0623E806600FF1E23C300014DA84CD71C1C4FEFF2 +S315E0623E9000204E752F032F024A79000149C46670ED +S315E0623EA04EB900E2771C34004EB900E277D03600B4 +S315E0623EB0672A2079000186E0AF41206800147168C4 +S315E0623EC00022B2806C24558F3F3C00023F3C037077 +S315E0623ED03F3C00014EB900E2F7EC508F73427179D4 +S315E0623EE000018704B08167284243484342437542F2 +S315E0623EF04EB900E0313086822F03487900E28B5C6E +S315E0623F004EBAFDEE508F241F261F60FFFFFDF23A88 +S315E0623F10241F261F4E75207900014DA84FEFFFF052 +S315E0623F2048D71C043028001E23D000014DA80800A3 +S315E0623F300000671C3428002432280022C2824A41EB +S315E0623F40660E20B90001857823C80001857860187D +S315E0623F5072FEC0813140001E487900014DA82F08EB +S315E0623F604EB900E2B43C508F49FAFE0447FAFF26A6 +S315E0623F7045F900E2B43C4A790001856C67024E94E9 +S315E0623F804E93601E3028001E72FE23D000014F540D +S315E0623F90C0813140001E487900014DA82F084E923B +S315E0623FA0508F207900014F544A8866D82079000103 +S315E0623FB04DA84A8866084A790001856C67C24A79E3 +S315E0623FC00001856C66B02F2800084EB900E03448DF +S315E0623FD0206F00044A79000186E4670E30B9000179 +S315E0623FE086E843F9000186F2600C30B9000186DCAE +S315E0623FF043F9000186F03151000243F9000186FA85 +S315E062400042403151000443F9000187043151000610 +S315E062401033C0000186E44E752F02342F0008558FB7 +S315E06240202F2F000C3F024EB900E233B65C8F3F00A1 +S315E06240304EB900E23380588F3F420008241F60FF8A +S315E0624040FFFFF4865D8F322F000C302F000EE18980 +S315E0624050828071EF000A4840424073C182802F013C +S315E06240603F3C00024EBAFFB22F2F00162F40000CE3 +S315E06240704EBAFF5E202F000C4FEF00104E755D8F3B +S315E06240802F2F000A3F3C00044EBAFF8E2F2F0014FA +S315E06240902F40000C4EBAFF3A202F000C4FEF001073 +S315E06240A04E752F02558F7179000149F0242F000A6F +S315E06240B04C4028022F023F3C00204EBAFF5C508FF4 +S315E06240C0241F4E754E56FFC848D73CFC362E000874 +S315E06240D02A6E000A286E000E282E00122A2E00167C +S315E06240E02E2E001A246E001E4EB900E23E944EB9A0 +S315E06240F000E23D6EA340C0833D40FFF26724207933 +S315E062410000014DA8206800144A68002267144868D6 +S315E0624110000E4EB900E28A88588F74013540000875 +S315E0624120600242422239000186E0B2B900014DA83E +S315E062413066000090A540C0834A40675271790001EB +S315E062414086E4A341B2806C22558F2F053F39000188 +S315E062415086FA4EB900E28B84508F4A40670CA540DE +S315E0624160848041F9000187066020558F2F053F392B +S315E0624170000186F44EB900E28B84508F4A40670EA6 +S315E0624180A540848041F9000186D43550000AA940F1 +S315E0624190C0834A4067122F0D4EB900E28948588FB4 +S315E06241A04A406704A94084807008C0834A40671227 +S315E06241B02F0C4EB900E28948588F4A40670472086C +S315E06241C084817C20CC834A4667084A8466047020F0 +S315E06241D084807210C28326414A41672A20790001AF +S315E06241E04DA84A6800366F1E2F073F3C00102F0825 +S315E06241F03F3C00104EB900E22FEA4FEF000C72101E +S315E06242008481600000C84A42660000C24A6EFFF2DC +S315E06242106710558F42A73F3C00014EB900E233B6C4 +S315E0624220508FA540C0834A406710558F2F053F3CAB +S315E062423000024EB900E233B6508FA940C0834A40CD +S315E06242406710558F2F0D3F3C00044EB900E233B63E +S315E0624250508F7008C0834A406710558F2F0C3F3CE1 +S315E062426000084EB900E233B6508F300B6724701007 +S315E062427041F900014DA8558F2D50FFF6486EFFF6C5 +S315E06242802D47FFFC3F003D40FFFA4EB900E233B6F0 +S315E0624290508F4A46671A7179000149F0558F4C4052 +S315E06242A048042F043F3C00204EB900E233B6508FFB +S315E06242B0558F3F034EB900E233803E8338004EB9F4 +S315E06242C000E23544588F26008684600242432F0A14 +S315E06242D04EBAFCFE588F4A426600008E34030803EB +S315E06242E000006712558F3F3C00014EB900E234C6CA +S315E06242F0588F35400008A540C0834A406712558F03 +S315E06243003F3C00024EB900E234C6588F3540000A9F +S315E0624310A940C0834A40670E558F3F3C00044EB9C0 +S315E062432000E234C6588F7008C0834A40670E558FE4 +S315E06243303F3C00084EB900E234C6588F7010C08325 +S315E06243404A40670E558F3F3C00104EB900E234C6D4 +S315E0624350588F7220C6814A43670E558F3F3C0020D4 +S315E06243604EB900E234C6588F30024CEE3CFCFFC8D0 +S315E06243704E5E4E75302F00044A6F0006672033C0EA +S315E0624380000149EC714041F900E4FCF832300A0080 +S315E062439048C183F9000149F033C1000149EE303981 +S315E06243A0000149EC4E7500004FEFFFF448D70C046C +S315E06243B0202F0010247900014D1847F900E28AE0C7 +S315E06243C0604E222A0010204191C0254800106E1CE2 +S315E06243D042AA0010558F4267240094812F0A4E93B9 +S315E06243E0247900014D18508F200260244EB900E016 +S315E06243F0313045EA001023D2000081764CD70C04B6 +S315E062440042B9000081724FEF000C60FFFFFDED3AAA +S315E06244104A8A66AE4CD70C044FEF000C4E752F03FA +S315E06244202F02206F000C321020015280308034005F +S315E0624430203900014DA8B0A80002670C7542A3437B +S315E0624440B68267043081600421400002B0A80002AF +S315E062445057C0241F261F488044804E752F032F02C3 +S315E0624460262F0010242F000C2F034EBAFFB2588F6E +S315E06244704A40671442402F42000C3F400010241F1E +S315E0624480261F60FFFFFFEE145C832F4300102F426E +S315E0624490000C241F261F60FFFFFFEEBE206F0004A4 +S315E06244A03010538030806630226800064A8967247D +S315E06244B02169000400062169000C0002558F30BCB8 +S315E06244C0000142672F094EB900E23298508F60FFD1 +S315E06244D0FFFDEF1A42A800024E7500004FEFFFD4CF +S315E06244E048D77CFC246F003A4244424534122E2F70 +S315E06244F00030266F00344BF900E2A1D049F900E2C0 +S315E0624500FE8C3F3C000C302F003AD0853F002F07EF +S315E06245104E954241508F2240205171422242528949 +S315E06245207749340910330800163338007D002C468B +S315E06245307C5DBC8E67081C3C007CBC8E66147D008C +S315E06245407703B6866608240952821600600416006E +S315E0624550420010C06704528160C03F0477033F01A6 +S315E06245604E94588F725D3800200552803A00B283CD +S315E06245706690206F003E34823080206F0042308445 +S315E06245804CD77CFC4FEF002C4E754E56FF9848D7C1 +S315E06245903CFC246E000A260E0683FFFFFFF62439F2 +S315E06245A000E4FDD42F3900018568366E00084EB905 +S315E06245B000E2777E7004548F7DAA0001486EFFFCAC +S315E06245C0486EFFFE2F033F3C000249FAFF10068663 +S315E06245D0FFFFFFD04A4656C43D40FFF62F0A2F0240 +S315E06245E048844E94302EFFF64FEF0016486EFFF881 +S315E06245F0486EFFFA2F033F3C0007448452803D40F9 +S315E0624600FFF62F0A2F024E944FEF00183F3C00014F +S315E0624610302EFFF83A2EFFFC49F900E03524362EBB +S315E0624620FFFA346EFFFE3F3C000152803D40FFF8E8 +S315E06246303E0042674267486EFFDE4E943F3C0001B1 +S315E06246403F053F3C00013F3C0001486EFFC64E9489 +S315E06246504FEF00184A4467463F3C00043F3C000483 +S315E06246603F3C00013F3C0001486EFFD64E94306EFF +S315E0624670FFDA326EFFE24FEF000C386EFFE443F191 +S315E062468088013D49FFE2326EFFDC43F498013D4921 +S315E0624690FFE4326EFFD641F098013D48FFC63F3CEB +S315E06246A000023F0A4EB900E2FE8C3F3C00015480B4 +S315E06246B03F073F003F3C0001486EFFCE4EB900E047 +S315E06246C035243207302EFFE24FEF00102243C3C398 +S315E06246D0DA80714541F118FF224049E80001714CE8 +S315E06246E0B0896C1EA34052859083D08590817140DB +S315E06246F03D45FFE220006A025280E2803D40FFCE05 +S315E0624700600654883D48FFE2200A58803F004245F1 +S315E06247104BF900E2A1D049F900E00EC43F2EFFE476 +S315E06247204EB900E2FE8C548F486EFFDE42673D4032 +S315E0624730FFE42F024EB900E2A4E64FEF000C223C02 +S315E062474000E4FD0423C1000149F4426720790001D7 +S315E062475049F42D48FFC03F0552852F024E95AD675D +S315E06247602F2EFFC02F004E9471454FEF0014720A50 +S315E0624770B28066D64A446724558F486EFFD63F3C80 +S315E062478000012F024EB900E2A4E63F3C0001426717 +S315E06247902F024EB900E2AF7E4FEF0014714A4244F7 +S315E06247A04BF900E2A4E649F900E2AF7E24406028D4 +S315E06247B0558F486EFFC62A0454853F0552842F0200 +S315E06247C04E953F05302EFFC8426752803D40FFC896 +S315E06247D02F024E944FEF00147144B5C06ED273430C +S315E06247E0424449F900E2A1D04BF900E2AF7E2D41A5 +S315E06247F0FFC0604E3F3C00082A045E8552843F0556 +S315E06248002F024E94204030BC00053F3C000A3F0533 +S315E06248102F024E944FEF000E22404251486EFFCE79 +S315E06248203F052F024EB900E2A4E6306EFFCE3F05A9 +S315E062483041F0780142673D48FFCE2F024E954FEF39 +S315E06248400014714445F900E2A1D0B0AEFFC06DA498 +S315E06248503F3C00085C833F032F024E92508F20401C +S315E0624860300B30BC00254A4067183F3C00085C8B41 +S315E06248703F0B2F024E92508FA5412040301080812F +S315E062488030804A4667283F3C000C7D4653863F3C73 +S315E062489000012F024EB900E2A1D0508F2206D281EA +S315E06248A0E98E20409C81068600E4FE7020864243C3 +S315E06248B045F900E2B80A558F3F0352832F024E92C2 +S315E06248C07143508F720AB28066EC3F3C000645F94E +S315E06248D000E2A1D0260E0683FFFFFFEE47F900E273 +S315E06248E0EA60280E0684FFFFFFE649F900E23694A5 +S315E06248F03F3C00012F024E92204030BC00173F3C05 +S315E062490000143F3C00012F024E9245F900E25E320E +S315E0624910224022BC002000202F032F024EB900E283 +S315E06249209B022F03487900014B904EB900E2F9B23F +S315E06249304FEF001E3F3C00014E932F044EB900E25A +S315E06249405EB62F034EB900E27C062F034E923F3CE1 +S315E0624950000842672F024EB900E2AD6E4FEF0016D5 +S315E06249603F3C00014E9442572F024EB900E24D5A47 +S315E06249705C8F426734004E942F034E922F034EB9FA +S315E062498000E27BCC2F044E924FEF000E42674E93CD +S315E0624990588F20025D804CEE3CFCFF984E5E4E7571 +S315E06249A04FEFFFDC302F002E48D70CFC3A2F002C5D +S315E06249B0A342266F00287340B4816714A547BE817F +S315E06249C067184A4066047601600876017808600EE8 +S315E06249D076FF2403D4857808604276017802424203 +S315E06249E0603A558F2F063F022F0B4E92322F002EE2 +S315E06249F04FEF000C2E010287000000804A476610E6 +S315E0624A007E08C0874A4066082004C0814A40662024 +S315E0624A107020C2804A416616D483600E2C0F0686E9 +S315E0624A200000002245F900E2B2AE4A426CB43405B7 +S315E0624A3030024CD70CFC4FEF00244E754A6F0004EF +S315E0624A406766558F3F3C00014EB900E2EA60588FD7 +S315E0624A504A79000149F8664041F90001885823D055 +S315E0624A600001073C48790001074442B900018858D1 +S315E0624A704EB900E28A6848790001074C4EB900E215 +S315E0624A808A7C487900014B902F3900014DA84EB9D6 +S315E0624A9000E2366A4FEF00103039000149F8528081 +S315E0624AA033C0000149F84E753039000149F8538048 +S315E0624AB033C0000149F866204879000107442F397E +S315E0624AC00001074C4EB900E2366A508F41F90001A7 +S315E0624AD0073C23D00001885842403F40000460FF13 +S315E0624AE000009F804FEFFFF448D7040C206F00165A +S315E0624AF0322F0014262F00107150246F001A0C809A +S315E0624B0000001C0D67726E120C8000000F00676E6B +S315E0624B100C8000000F096654601A0C800000500099 +S315E0624B2067120C800000720D674E0C800000480030 +S315E0624B30663A604A424260484A4067303F3C000A11 +S315E0624B403F002F034EB900E2A1D05C8F3F3C0001EB +S315E0624B50A3412040301080813F003F122F034EB9BF +S315E0624B6000E2B1684FEF000C4240600270014CD740 +S315E0624B70040C4FEF000C4E75740242416002740100 +S315E0624B8042503F0275423F012F034EBAFE14508FE8 +S315E0624B90A5413480B28266D4609E4E56FFBC48D749 +S315E0624BA03CFC362E000C558F486EFFFE2A2E00081E +S315E0624BB03F032F054EB900E2B2AE4FEF000C7240F2 +S315E0624BC03800302EFFFEC2804A416712736E000ED5 +S315E0624BD0A542B481671242023D42FFE66014424753 +S315E0624BE074013D47FFE6600A323C800042423D4145 +S315E0624BF0FFE6080000006700010A7208C2844A41C3 +S315E0624C00660001007E10C0874A40670000AE558F9D +S315E0624C10486EFFFC3F0345F900E2A1D04BF900E2A2 +S315E0624C20B2AE49F900E2B1682F054EB900E2A3AA35 +S315E0624C303F3C000236403F002F054E9273434FEFF2 +S315E0624C4000142040714B3C1026412D40FFE8605E27 +S315E0624C50558F486EFFFA3F062F054E95306EFFFA86 +S315E0624C604FEF000C72102E08CE814A47672E08007D +S315E0624C7000006606B7CA66246004B7CA6608A3443B +S315E0624C8088803004600472FEC081558F3F3C00012B +S315E0624C903F003F062F054E944FEF000C42673F06FA +S315E0624CA02F054EB900E2A1D0508F20403C107146EC +S315E0624CB02440B0AEFFE86698601E558FA3463F0477 +S315E0624CC0B9863F063F032F054EB900E273C24FEF46 +S315E0624CD0000C4A40670238064A426726302EFFFEDB +S315E0624CE07209C0814A40671A558F486EFFEE426785 +S315E0624CF03F3C00013F3C00014EB900E240444FEFC9 +S315E0624D00000C08040000670C302EFFFEA947C0873E +S315E0624D104A4066264A42672A302EFFFE2200028118 +S315E0624D20000000804A4166167208C8814A44660EEF +S315E0624D30C0814A40670874016008424260047401B7 +S315E0624D4042433E2EFFE6206E0010300286873083B5 +S315E0624D504CEE3CFCFFBC4E5E4E754FEFFFC248EF39 +S315E0624D607CFC0002242F0042362F00463F3C0001C5 +S315E0624D704EBAFCCA4EB900E28ABC487900014BA839 +S315E0624D804EB900E25E32508F4A43660E4267426730 +S315E0624D902F024EBAFC0C508F36003F43003A780140 +S315E0624DA042432C0F2E0F06860000003845F900E2DA +S315E0624DB09E8A06870000003A4DFAFD2A4BF900E228 +S315E0624DC0AE4C49FAFDD647F900E2F7EC3A2F003AE3 +S315E0624DD0672473437145B081671C424036053F40A4 +S315E0624DE0003A558F3F3C00012F063F003F052F02F8 +S315E0624DF04E924FEF0010558F486F002E42A72F3C20 +S315E0624E000002FF0142A742A742A73F3C00034EB918 +S315E0624E1000E240C44FEF001C3A0008050000672E2E +S315E0624E20558F2F07486F003A3F032F024E963800A0 +S315E0624E30302F00444FEF00106714558F3F3C00025D +S315E0624E402F063F003F032F024E924FEF0010A54020 +S315E0624E50CA804A45674E3F2F002EA1453F2F002E5E +S315E0624E603F3C000842672F024E953F400046734042 +S315E0624E704FEF000CBA81661A558F3F3C00023F3C09 +S315E0624E8001B83F3C00014E9342403F400042508FA2 +S315E0624E9060122F073F2F003A3F002F024E944FEFEA +S315E0624EA0000C38004A446712302F003A6700FF1E52 +S315E0624EB071407343B2806700FF14558F3F3C000335 +S315E0624EC02F0642673F032F024E924FEF00104A448D +S315E0624ED06600FEFA558F42674EBAFB62302F003E9D +S315E0624EE04CEF7CFC00044FEF00404E752F02242FFE +S315E0624EF0000A487900014B904EB900E25E32588F63 +S315E0624F00716F0008A741B280661C2F024EB900E2BB +S315E0624F10D8744267426742672F0242674EB900E23F +S315E0624F20E4464FEF00107001241F4E752F0A2F02E0 +S315E0624F30342F0012246F000E558F3F2F000E4EB9AC +S315E0624F4000E2BBF4588F4A8A671C558F3F122F00E6 +S315E0624F502F39000160C84EB900E1C5D64FEF000CAB +S315E0624F602039000160C82F40000E3F42000C241F2A +S315E0624F70245F60FFFFFFF616598F2F02322F000E75 +S315E0624F80302F000C41FA00AA0681000000413F4141 +S315E0624F900006734032301A002401758202810000F5 +S315E0624FA0FF0020424A416706220F5C81600242812D +S315E0624FB03F08714041FA00862F013F300A004EBA3F +S315E0624FC0FF6C508F241F588FA341B3804A4056C06E +S315E0624FD0488044804E752F02743F302F000873403C +S315E0624FE0B4816D46558073C0143C0010B48165147B +S315E0624FF0714041FA0054143C002230300A0073409A +S315E0625000B4816608220F50817022600242813F3C81 +S315E062501000012F013F004EBAFF14508FA341B380C7 +S315E06250204A4056C04880448060024240241F4E7522 +S315E062503001020102010201010002000100150016EF +S315E0625040001700180019001A001B001B001D001E45 +S315E062505000220022002100220021002100220022FB +S315E06250600022001F00200022001B0000226F0008C1 +S315E0625070202F00042040121910C166FA4E752F0ADD +S315E06250802F02346F000E203900014A1453802F003C +S315E0625090754A2002D0B900014A102F004EB900E0ED +S315E06250A012FC736F0014508F41F900014F5C45F2B8 +S315E06250B008020681000005E121821C00241F200A05 +S315E06250C0245F4E75302F00046722558F3F3C000106 +S315E06250D006800000000E3F2F000A3F002F390001D4 +S315E06250E04A344EB900E2B1684FEF000C4E754FEFAD +S315E06250F0FFC048D77CFC382F00483A2F004A242F5D +S315E0625100004442434BFAFF6649F900E2FA7A47F90C +S315E062511000E2FB1845F900E2A1D033C400014A1867 +S315E0625120200590843F003F3C00094EB900E2FE70E4 +S315E0625130588F2E0F2C0F4DF900014F5C0687000049 +S315E0625140003E06860000003A71402F40003471430B +S315E0625150B0AF00346C402003D0847140068000001A +S315E062516005E120360C00D0B900014A102F004879DB +S315E062517000014A004E95487900014A1D48790001CE +S315E06251804A014E944FEF001041F900014A0013D0F4 +S315E062519000014A1C60107020420113C000014A1CE3 +S315E06251A013C100014A1D200306800000000F3F4044 +S315E06251B00032558F2F072F06487900014A1C3F00BF +S315E06251C02F022F4000424E933F3C0006202F0044C0 +S315E06251D03F002F024E924FEF001C4A79000149FCD4 +S315E06251E0670472166002721E2040528330813F3C31 +S315E06251F0000A3F2F00342F024E92508F72092040F0 +S315E062520042507143B2806600FF463F3C00163F3C27 +S315E0625210000C2F024EB900E2A1D0508F72092040F5 +S315E062522071453610B2806C48558F3F0547F900E10B +S315E0625230C6300685FFFFFFF73F033F3C00094E930A +S315E06252403F00717900014A3E20006A025280E280A4 +S315E06252503F004EB900E2FE8C4FEF000A3F05344054 +S315E0625260968A3F03360A3F044E93508F38006002B7 +S315E062527042443F3C001245F900E2A1D03F3C000DBA +S315E06252802F024E92204030843F3C00163F3C000D98 +S315E06252902F024E92204030834CEF7CFC00104FEFA1 +S315E06252A000504E752F0A2F02222F000C246F001039 +S315E06252B06002538A7112743AB480661C558F3F3C21 +S315E06252C00040528A3F3C005C42672F0A4EB900E2D8 +S315E06252D0FD784FEF000C600A745CB4806704B28AB2 +S315E06252E066D0241F200A245F4E75413A5C2A2E2A34 +S315E06252F000002F0A2F02745C246F000C2F2F00101F +S315E06253002F0A4EBAFFA0508F20407310B481660414 +S315E06253105280601C487AFFD42F0A4EBAFD501412AE +S315E06253204EB900E2FF24508FD0821480200A568064 +S315E0625330241F245F4E7500202A2E2A20002A2E2A58 +S315E0625340000720413A004E56FF5448D73CFC4AAE2D +S315E0625350000867000A2A206E00084A1067000A20E1 +S315E0625360487806404EB900E301F2588F23C0000147 +S315E06253704A1067000A0A3F3C000C243900014A34AD +S315E062538045F900E2A1D03F3C00082F024E9222404E +S315E062539020512D50FF82487AFF9F2F2EFF824EBA10 +S315E06253A0FCCC3F3C000C3F3C00022F024E92224076 +S315E06253B020512F102F2E00084EB900E1C4D44FEFD2 +S315E06253C000204A4066083C3900014A1860024246BB +S315E06253D0558F4BEEFFF82F0D49EEFFF42F0C2F2E73 +S315E06253E0000845F900E2FB183F3C00027E014245B7 +S315E06253F04243367C000142442F024E922F2E000C2D +S315E0625400487900014A1C4EBAFC64487900014A00B8 +S315E0625410487900014A1C4EB900E2FA7A4FEF00225F +S315E0625420486EFFFA486EFFF0487900014A003F3C59 +S315E062543000032F024E92487900014A2C4EB900E2EF +S315E06254405E324FEF00122EBC00014A2C45EEFF9809 +S315E062545042674EB900E24EEC2079000160CC421020 +S315E06254603F3C000242672F024EB900E2AD6E424017 +S315E062547042414FEF0010206EFF8252882D48FF8630 +S315E062548033C0000149FC3D41FF8C601A300B661463 +S315E0625490558F3F3C00032F024EB900E24D5A508FC2 +S315E06254A0380060024244486EFFFC486EFFFE4EB929 +S315E06254B000E277062F2EFFF42F0A4EB900E012FCC7 +S315E06254C02F0A2F39000160CC3A404EB900E1C4D4CC +S315E06254D04FEF00184A406700039842673F054EBAAD +S315E06254E0FBE4588F2004598071C0A341B2806516EF +S315E06254F0558F3F3C000142673F042F024EB900E2FE +S315E0625500B1684FEF000C2F0A2F39000160CC47FAE1 +S315E0625510FB5C4E93774D49FAFDDA2079000160CC67 +S315E0625520487038002F084E944FEF000E486EFFF831 +S315E0625530486EFFF42F39000160CC3F3C00022D40FB +S315E0625540FF922F024EB900E2FB18487238002F0A2A +S315E06255504E94487AFDE92F004E934FEF00243F3C8C +S315E062556000083F3C00022F024EB900E2AD6E2F39D1 +S315E062557000014D204EB900E2777E4FEF000C4A798A +S315E0625580000149FC675A487AFDB94879000186719B +S315E06255904E937A50508F47FAFAE64240424342448B +S315E06255A0226EFF922842757900018B4A73440302A8 +S315E06255B067183F0013C5000186732D49FF7E3F03DE +S315E06255C052834E93588F226EFF7E52847344538584 +S315E06255D07410B48166D0240C2D49FF92600000A657 +S315E06255E02F390001890C4EB900E2FF343EBC00104F +S315E06255F0486EFF984EB900E2FF48508F424449F93F +S315E062560000E2FCA4424347F900E2FF666072713948 +S315E0625610000186727A2EBA80674410390001866983 +S315E062562072104880C0814A40670470076002702049 +S315E062563013C0000186717100AF45BA80671248797E +S315E0625640000186722F2EFF924E94508F4A40670E6B +S315E06256503F043F0352834EBAFA26588F38004E9380 +S315E062566073437A63BA816C18558F3F3C00043F3CC2 +S315E062567002943F3C00014EB900E2F7EC508F6004C1 +S315E06256804A40668A7143320D47F900014F5C2A420D +S315E06256902800E28C2D40FF8E3D43FF966000010CB0 +S315E06256A0340C3D41FF7C600000E471422A02DA84F8 +S315E06256B00680000005E120330C00D0B900014A10F3 +S315E06256C02F00487900014A1C4EBAF9A2714506805C +S315E06256D0000005E120330C00D0B900014A102F002A +S315E06256E0487900014A004EBAF984713900014A1CD0 +S315E06256F04FEF00107220B2806656713900014A009F +S315E0625700B280664C558F3F3C002E487900014A1CB8 +S315E06257104EB900E01310508F26006606263C00E282 +S315E06257205336558F3F3C002E487900014A004EB908 +S315E062573000E01310508F4A806606203C00E2533642 +S315E06257402F002F034EB900E1C4D4508F4A4066144D +S315E0625750487900014A00487900014A1C4EB900E1E5 +S315E0625760C4D4508F4A406F2A7B457142D4AEFF8AD9 +S315E06257700685000005E141F35C000680000005E174 +S315E062578022330C0027900C0027815C004A426C00B1 +S315E0625790FF1A322EFF7C528C200CD0847140B0AE60 +S315E06257A0FF8E6D00FEFC7944E28C4A446F0C200465 +S315E06257B0448099CC2D40FF8A60DE362EFF96240D1A +S315E06257C03A412F39000185684EB900E2777E588FFB +S315E06257D02006508071407343B0816D1620030680C7 +S315E06257E0FFFFFFF73F0042674EB900E2FE8C588F3B +S315E06257F0600230063F0378123F002F024EBAF8F09D +S315E06258002F2EFF924EB900E1C4A44FEF000C734015 +S315E0625810B8816C027012206EFF82794047F900E42B +S315E0625820FD0C10BC002049F900E2AD6E2F042F2E6C +S315E0625830FF922F2EFF864EB900E00EC44FEF000CAA +S315E06258404200206EFF86D1C410BC002011400001E8 +S315E0625850600E3F3C000848803F002F024E94508F16 +S315E0625860101B66EE3D46FF8C4245424697CB42446C +S315E06258702004028000007FFF2200598173C1384014 +S315E062588020417213B2886500029E323B8A0848C1A3 +S315E06258904EFB1802002800280292021604F60292D3 +S315E06258A0027A027A003000720292013001300130EF +S315E06258B0013001300130013001300130424042476F +S315E06258C060000266558F486EFFE83F3C000D2F028E +S315E06258D04EB900E2A49C486EFFE83F2EFFFC3F2EE5 +S315E06258E0FFFE4EB900E2FDE44FEF00144A40661651 +S315E06258F0736EFFFC716EFFEAB0816D000218424082 +S315E062590078096000021C558F3F3C00014BF900E2CA +S315E06259104A3C49F900E2A1D04E95548F486EFFE8C1 +S315E06259203F3C000C2F024EB900E2A4743F3C0010EB +S315E06259303F3C000C2F024E94204030AEFFE83F3CE5 +S315E062594000143F3C000C2F024E944FEF001A2240A7 +S315E062595032AEFFEC3F3C00013F3C000D3F3C000CA9 +S315E06259602F024EB900E274543F3C001038003F3CCF +S315E0625970000C2F024E94204030AEFFE83F3C00140C +S315E06259803F3C000C2F024E944FEF001A224032AE9B +S315E0625990FFEC42674E953EBC03E820030680FFFFBC +S315E06259A0FFF73F003F044EB900E1C630322EFF8C6E +S315E06259B0508F928038016C0001662801448442402F +S315E06259C0600001560680FFFFFFF273402241734397 +S315E06259D0B2896D0001524A45671A7345B3C1672EB3 +S315E06259E042672D40FF7E3F054EBAF6DA588F202E8B +S315E06259F0FF7E60044A4067163F3C00012D40FF7E11 +S315E0625A003F004EBAF6C0588F202EFF7E3A00558F81 +S315E0625A10487900014A1C3F0C2F024EB900E2FBA610 +S315E0625A20713900014A1C4FEF000C7220B2806608A1 +S315E0625A304A446D60700160684A79000149FC671604 +S315E0625A40712EFF99783AB880665041F900014A1E94 +S315E0625A501D50FF986044714D487208002F0A4EBA95 +S315E0625A60F8922640486BFFFF487900014A004EBA39 +S315E0625A70F5FC2F0B487900014A1D4EB900E2FAD2D5 +S315E0625A80487900014A002F0B4EB900E1C4B64FEFE8 +S315E0625A90002060067001424760064240367C0001A3 +S315E0625AA0424133C1000149FC607E714D283C00E20F +S315E0625AB052A42044487208002F0A4E90508F725CBE +S315E0625AC02A407115B280665E204D7120123C003A22 +S315E0625AD0B28067242F082F0A2044785C4E90508F5C +S315E0625AE022407311B881660002A22F0D2F004EBAD2 +S315E0625AF0F57C508F600002944A7900018B4A670018 +S315E0625B00028A700133C0000149FC6000027E4240B5 +S315E0625B107801601642407809387C000B600C42409E +S315E0625B20387C000A600442404244320B6730558F4B +S315E0625B30486EFFF8486EFFF4486EFF983F3C0002FD +S315E0625B402F024EB900E2FB1842002079000160CCD8 +S315E0625B504FEF0014421013C000014A1D60044A4030 +S315E0625B606740487900014A1D2F2EFFF04EBAF4FED7 +S315E0625B703F3C00083F3C00032F024EB900E2AD6EA7 +S315E0625B804FEF00104A47661A558F3F3C00013F3C93 +S315E0625B9000013F3C00042F024EB900E2B1684FEFCC +S315E0625BA0000C4A446700015C3A6EFF8C714C4241DC +S315E0625BB07944284071432D44FF8E3D4DFF8A204053 +S315E0625BC0780AB88C6606200D53806004200D5280F8 +S315E0625BD04A406C025280224393C079492244780853 +S315E0625BE0B8896D0253807809B8886C023A4052816E +S315E0625BF07141B0AEFF8E6DC8302EFF8A284D99C0D6 +S315E0625C00380C3D40FF8C4A44670000F842673F0526 +S315E0625C107BCC4EBAF4B03F033F0D2F024EBAF4D0BE +S315E0625C20486EFFE04EB900E25EB64FEF000E486E98 +S315E0625C30FFD83F3C000F2F024EB900E2A49C4FEF23 +S315E0625C40000C720FE2AD3D45FF8C6704280C44847C +S315E0625C5071447A08BA806D62326EFFDE302EFFDA08 +S315E0625C603209C3C4D28030414A6EFF8C6704304049 +S315E0625C703001387C00093A09558F99C4320CC3C5A4 +S315E0625C803F013F2EFFDC3F003F2EFFD83F083F2E0D +S315E0625C90FFD83F3C00034EB900E263C64FEF001007 +S315E0625CA04A6EFF8C6616300CC1EEFFDE3840302E4F +S315E0625CB0FFDAD9C03D4CFFDA60027809C9EEFFDE51 +S315E0625CC0486EFFD849F900E2AD6E42453D44FFDEDB +S315E0625CD0283C00E25E3220444E903F3C00083F3C66 +S315E0625CE0000E2F024E94486EFFE022444E913F3CF6 +S315E0625CF000083F3C000C2F024E943D4DFF8C4FEF67 +S315E0625D0000184A476600F7862F2EFFF42F2E00080A +S315E0625D1045FAF35A4E922F2EFFF0487900014A1C5B +S315E0625D204E92487900014A00487900014A1C4EB910 +S315E0625D3000E2FAD2487900014A002F2E000C4E9218 +S315E0625D404FEF001A2EBC00014A2C3F3C00034EB9CD +S315E0625D5000E24EEC3F3C00053F3C00042F024EB9A8 +S315E0625D6000E2FC52206E001030802F3900014A10AA +S315E0625D704EB900E302244FEF001470016002424024 +S315E0625D804CEE3CFCFF544E5E4E75367C000142445E +S315E0625D906000FD9C4FEFFFDC48D77C3C740145F91F +S315E0625DA000014BD07B6F0028283C00E26D3A4DFA49 +S315E0625DB00F824BF900E275FC49F900E279A2605282 +S315E0625DC0361247EA000471537343B0816614302B8E +S315E0625DD0FFFEA341C681C081D080808330360A004F +S315E0625DE06018B0816F04204A6002204B30280002BE +S315E0625DF0A3412044C08130300A003F0052823F3CDA +S315E0625E0000714E95548F2F0A3F3C0002244B4E940C +S315E0625E10508F7142BA806EA83F3CFFFF3F3C0071F3 +S315E0625E204EB900E275FC4CEF7C3C00044FEF002873 +S315E0625E304E75487900014BC2487900014BFE4879BC +S315E0625E4000014BCA487900014BB42F2F00144EB9BA +S315E0625E5000E03508323900014BFE4FEF001467422D +S315E0625E60303900014BC2673A327900014BB430797E +S315E0625E7000014BCA558F487900014BD03F3C000187 +S315E0625E8033C900014BD033C800014BD243F118FF4E +S315E0625E9041F008FF33C900014BD433C800014BD649 +S315E0625EA0600A558F487900014BD042674EB900E2ED +S315E0625EB079D2508F4E753F3900014BC23F390001AE +S315E0625EC04BFE3F3900014BCA3F3900014BB42F2FDD +S315E0625ED0000C4EB900E035244FEF000C4E753239B6 +S315E0625EE000014BFE4FEFFFEC48D7007C206F0018B5 +S315E0625EF04A416752363900014BC2674A342800028A +S315E0625F0030280006383900014BCAD0827B447140A2 +S315E0625F10B0856D3630103A280004327900014BB410 +S315E0625F20DA807D497B45BA866D20D68475427743B1 +S315E0625F30B6826F16D28973417140B2805EC0A34168 +S315E0625F404880C08160067001600242404CD7007CA6 +S315E0625F504FEF00144E754FEFFFF0322F001848D71F +S315E0625F60003C382F0014362F0016226F001A41F9D2 +S315E0625F7000014BD04240754160163A115280DA8494 +S315E0625F8030853A2900025889DA8331450002588819 +S315E0625F907B40B4856EE43F4100144CD7003C4FEF42 +S315E0625FA000106000FDF04E5600004EB900E2773414 +S315E0625FB0558F486E00083F3C00024EB900E279A276 +S315E0625FC04EB900E2775E508F4E5E4E7542414FEFBC +S315E0625FD0FFF4302F001241F900014BF848D7001C5C +S315E0625FE033D000014B6C342F0014363900014A5825 +S315E0625FF033C100014B62123C000179C033C100013A +S315E06260004B6673F900014BCCB284671A722033C0D7 +S315E062601000014BCC33C000014A5833C100014B60EA +S315E06260204EB900E03480424033C000014B6071C239 +S315E06260304A6F0010671A73F900014B5AB2806728FB +S315E0626040721633C200014B5A33C100014B606018CD +S315E062605073F900014BB2B280670E701133C2000170 +S315E06260604BB233C000014B604A7900014B60670C6A +S315E062607033C200014A584EB900E0348033C30001AE +S315E06260804A584CD7001C4FEF000C4E752F0B2F0A67 +S315E0626090246F000C70053252306A0002366A0004E0 +S315E06260A0346A00063F40000C33C900014BD033C866 +S315E06260B000014BD247F1B8FF45F0A8FF33C80001B3 +S315E06260C04BD633C900014BDC33C900014BE033C820 +S315E06260D000014BE233CB00014BD433CA00014BDA09 +S315E06260E033CA00014BDE245F33CB00014BD8265F17 +S315E06260F06000FCA24FEFFFD248EF7CFC000234392D +S315E062610000014A3E3A3900014B5C246F0032283C7A +S315E062611000014BD02044263C00014BD24DF90001F0 +S315E06261204BD43212302A000222432C3C00E25D94C8 +S315E06261304BF900014BD649F900014BD8D482DA8596 +S315E062614047F900014BDA30813C813A803680204261 +S315E0626150D1C03288D2853F3C0003388120464E90DA +S315E06261603012322A000422442043D28020019085F4 +S315E06261703280302A000253813C8138812246308067 +S315E06261803A80D08236803EBC00034E913012322A8B +S315E062619000042244D280204153883288326A000663 +S315E06261A0302A00023C88928538812046D089224393 +S315E06261B02E009E82328753803A8036803EBC000350 +S315E06261C04E903012306A0006322A00022244DA80A9 +S315E06261D03C80D2883880328520419282538870032F +S315E06261E022433A88368132884CEF7CFC00043F4099 +S315E06261F000344FEF00306000FB9C2F02342F00101A +S315E0626200206F0008222F000C6634303900014C0CF6 +S315E062621052803140000471406C0606800000000F37 +S315E0626220E88043F900014BA23151000C314000088D +S315E0626230303900014C0E52803140000660207142D6 +S315E0626240E78A316F0012000620006A02528031420C +S315E06262500004E2803140000870013140000C4240A7 +S315E06262602081241F3140000A4E754FEFFFD048D798 +S315E06262707CFC302F0046346F004A3C6F003A382F80 +S315E062628000383A6F0042366F0044386F0048362F66 +S315E0626290004E2E2F003E2A3C00E261FA342F004C7B +S315E06262A03F40002E3C2F00503F0A20453F2F003EE4 +S315E06262B02F2F0038487900014B784E903F0A2045EF +S315E06262C03F2F003C2F07487900014A444E904EB971 +S315E06262D000E2773471434FEF001841F448FF33C46C +S315E06262E000014BD033CE00014BD233CD00014BD807 +S315E06262F033CB00014BDAA14133C800014BD441F6FE +S315E0626300A8FF33C800014BD641F5C8FF33C8000188 +S315E06263104BDC41F3A8FF33C800014BDEB280662254 +S315E0626320558F487900014A44487900014B784879AB +S315E062633000014BD03F024EB900E27AA64FEF001061 +S315E06263406024558F3F063F03487900014A44487905 +S315E062635000014B78487900014BD03F024EB900E22A +S315E06263607C404FEF00144CD77CFC4FEF003060FF6F +S315E0626370000013EE206F0008558F737900014BC061 +S315E0626380302800043F2F00103F2F00103F3C0002F0 +S315E06263903F2800063F004A816C025E81E6817140D9 +S315E06263A03F013F2800023F1042A74A806C025E80AE +S315E06263B0E6803F00426742672F2F00204EBAFEAC6E +S315E06263C04FEF00204E75558F3F3CFFFF3F3CFFFF8E +S315E06263D03F2F000A3F2F00183F2F001842673F2FDA +S315E06263E0001A3F2F001A42A742673F2F00203F2F35 +S315E06263F0002042A74EBAFE744FEF00204E754FEF73 +S315E0626400FFF048D7041C342F0020262F001A382FBD +S315E0626410001E45FAFDE63F023F2F001A2F2F0018B5 +S315E0626420487900014B784E923F0270013F0433C0D7 +S315E062643000014B8233C000014B842F03487900018F +S315E06264404A444E924CEF041C0018203C00014A4438 +S315E06264502F400030203C00014B782F40002C4FEF5C +S315E0626460002860FF0000184A42404FEFFFF448D729 +S315E0626470040C323900014C2633C000014BB433C000 +S315E062648000014BCA303900014C0C528033C0000126 +S315E06264904BFE33C000014BC0303900014C0E5280D6 +S315E06264A033C000014BC233C000014B8C42406002F4 +S315E06264B0E289734130405280A342B48166F2558FDD +S315E06264C0487900014BFC487900014BC648790001E6 +S315E06264D04B58487900014BC43F3900014C6833C8D8 +S315E06264E000014BA24EB900E27A1A717900014C0EB4 +S315E06264F04FEF00140C800000017B6F083039000119 +S315E06265004C6C60027006558F487900014BA448795D +S315E062651000014BA0487900014A40487900014BC826 +S315E06265203F004EB900E27A1A323900014BA03639A1 +S315E062653000014BC04FEF001448C387C130390001F8 +S315E06265404BA433C300014C08363900014B8C48C377 +S315E062655087C0568033C000014A3EC1F900014C143F +S315E062656048C081F900014C1233C300014C7E24011C +S315E0626570568233C000014B5C71407542B4806D084F +S315E0626580588133C100014B5C3F3C000745F900E2AC +S315E062659075FC3F3C000F4E923EBC00014EB900E2F4 +S315E06265A07CE03F3CFFFF3F3C00714E923F39000189 +S315E06265B04B8C45F900E035243F3900014BC0426718 +S315E06265C04267487900014B904E92303900014A3E6B +S315E06265D0323900014B8C92803F013F3900014BC05A +S315E06265E03F004267487900014BA84E924FEF002088 +S315E06265F04267426742674267487900014BB84E920A +S315E0626600303900014A3E307900014B8C3239000163 +S315E06266104B5C3F00C1FCFFFED08871403F01200029 +S315E06266206A025280E2803F00303900014BC09081BD +S315E0626630714020006A025280E2803F0048790001A0 +S315E06266404C004E923F3900014A3E3F3900014BC051 +S315E062665042674267487900014B984E924CEF040CD0 +S315E062666000244FEF0030203C00014A5823C000016D +S315E06266704A384E754FEFFFE448D73C1C366F00262A +S315E0626680346F0028382F0020362F00223A6F002A16 +S315E0626690386F002C342F00244267426742A748795C +S315E06266A000014A444EBAFB544FEF000A3F390001FB +S315E06266B04B5A41F3D8FF33CB00014BD033CA0001CA +S315E06266C04BD23F0433C800014BD441F2C8FF3F3C92 +S315E06266D0000133C800014BD64EBAF8F273437179C2 +S315E06266E000014BFA508FB08167143F033F3C0017BD +S315E06266F04EB900E275FC33C300014BFA588F734220 +S315E0626700717900014A3CB08167143F023F3C001850 +S315E06267104EB900E275FC33C200014A3C588F203C18 +S315E062672000014A442F400024203C00014BD02F4018 +S315E062673000204CD73C1C4FEF001C60FF0000132C7E +S315E06267404FEFFFF4A74148D7001C716F0010382F56 +S315E06267500012342F0014362F0016B2806658717913 +S315E062676000014BB0B2806746717900014C0E0C8035 +S315E06267700000017B6F08303900014C6C60027006E4 +S315E0626780558F487900014BA4487900014BA04879BE +S315E062679000014A40487900014BC83F004EB900E229 +S315E06267A07A1A70034FEF001433C000014BB03039F0 +S315E06267B000014A406048AB41B280664471790001AB +S315E06267C04BB0B2806732558F487900014BFC48790D +S315E06267D000014BC6487900014B58487900014BC429 +S315E06267E03F3900014C684EB900E27A1A70054FEF04 +S315E06267F0001433C000014BB0303900014B58D480ED +S315E06268007208700133C400014BD033C200014BD22F +S315E062681033C300014B6641F900014BF84CD7001CCB +S315E062682033D000014B6C4FEF000C33C100014B607B +S315E062683033C000014B6260FFFFFDCC48206F00046D +S315E0626840302F00083210D280308132280002D280A6 +S315E06268503141000232280004C1FCFFFED2803141A0 +S315E0626860000432280006D081314000064E754FEFB3 +S315E0626870FFF448D7040C362F0012246F0014670E1B +S315E062688071C3AF41B28057C24882548260024242CB +S315E06268903F2F00103F3C00194EB900E275FC3EAA5C +S315E06268A000063F2A00043F2A00023F123F033F02EE +S315E06268B03F3C00014EBAFDBE4CEF040C00104FEFB8 +S315E06268C0001C4E754FEFFFE4A74148D70C7C3A2F88 +S315E06268D00022382F0020246F002C7145B2806608B2 +S315E06268E0343900014BA06010AB43B6806608343998 +S315E06268F000014BC6600242427145A746BC8066080B +S315E0626900363900014BA46010AB41B2806608363975 +S315E062691000014BFC600242432F2F00242F39000115 +S315E06269204A384EB900E034EC47F900E2FE703C00CA +S315E0626930C1C23F003F2A00044E93354000043F0344 +S315E06269403F2A00064E934FEF00103540000648C0DE +S315E062695081C36712302A000448C081C23F003F0605 +S315E06269604E93588F60024240306A0006322F002A08 +S315E062697092884A416F10306A000252817341E28125 +S315E0626980D28835410002306A0004322F00289288AC +S315E062699034016F627744A546BC83660852817341CF +S315E06269A0E2816006A346BC8366063052D2883481B1 +S315E06269B07B45A741B285663E75427610B6826C36F5 +S315E06269C03412123C0007C2823601672A4A446604E0 +S315E06269D05082601E7944A545BA8466107941A7461D +S315E06269E0BC846C042601518394836008A343B68415 +S315E06269F06604948134824CD70C7C4FEF001C4E7552 +S315E0626A00518F2F032F02342F0016260F50832F0348 +S315E0626A102F2F00204EB900E2FE522F033F2F001ABD +S315E0626A203F2F001A2F2F00283F023F2F002A4EBA2F +S315E0626A30FE944FEF00184A406F123F003F2F000C62 +S315E0626A403F2F000C3F024EBAFCF8508F241F261FE0 +S315E0626A50508F4E754FEFFFF4322F001048D7040C7B +S315E0626A60760C246F0012226F001A206F002271C129 +S315E0626A702400E6A8E08A3480700FC082246F001694 +S315E0626A80740F34807101E888C48032827408C480ED +S315E0626A904A42670CAF42C082328030BC0001600479 +S315E0626AA030BC0002760FC283206F001E4CD7040C06 +S315E0626AB04FEF000C30814E754FEFFFC848D77CFC34 +S315E0626AC0302F004C3A2F004A322F004E760C382F88 +S315E0626AD0003C2E2F003E286F00422C6F0046246F4A +S315E0626AE00050266F00543F40003271C5E6A83F4130 +S315E0626AF000362205E089163C000F7B853400C283AE +S315E0626B003A4536010804000067122A04028500004D +S315E0626B1000804A45670C3A003C01600E3A013C004F +S315E0626B2060083A003C01340136007040C0844A4055 +S315E0626B3067044A43671C3F023F032F0A2F072F4031 +S315E0626B4000384EBAF8304FEF000C202F002C4A4046 +S315E0626B5067044A4567144A6B0004670E2F0B3F3C95 +S315E0626B6000073F054EBAFD08508F3F0302840000DE +S315E0626B7000813F022F0A2F0C49FAF7FA4E944FEF43 +S315E0626B80000C0C8400000081664830125380348029 +S315E0626B90302A00025380354000023F033F022F0A4B +S315E0626BA02F074E94301254803480302A000254808B +S315E0626BB0354000023F033F022F0A2F074E94301200 +S315E0626BC04FEF001853803480302A000253803540FC +S315E0626BD00002558F3F023F3C00023F3C00014EBA45 +S315E0626BE0F3EC300D508F672A3F3C000133CD000154 +S315E0626BF04A58322F0038302A0002D0813F00362FC1 +S315E0626C0000363012D0833F003F3C00054EBAFB327D +S315E0626C10508F558F3F063F3C00023F3C00014EBA23 +S315E0626C20F3AC700572022F4B004C2F4E00484CEFCE +S315E0626C307CFC00083F4000463F4100444FEF004085 +S315E0626C406000FDBE4E56FFD448D73C1C3F2E000E78 +S315E0626C50342E00103F2E000C3F2E000A3F2E000815 +S315E0626C60486EFFF84EB900E035244FEF000C4A4219 +S315E0626C70670000B66C0253824EB900E27734260EA4 +S315E0626C80280E0683FFFFFFF051844BF900E2FE52C5 +S315E0626C9049FAFBAA47F900E279A24A425EC0A341F9 +S315E0626CA02F032F04488080812440D5C24E955C8FA5 +S315E0626CB03F0A340A2F034E94326EFFF0346EFFF4CD +S315E0626CC0548F306EFFF22EBC00014BD03F3C000584 +S315E0626CD033C900014BD045F1A8FF33C900014BDC53 +S315E0626CE033C800014BD233C800014BD633C9000129 +S315E0626CF04BE033C800014BE233CA00014BD433CADE +S315E0626D0000014BD8346EFFF645F0A8FF33CA0001A6 +S315E0626D104BDA33CA00014BDE4E93508F4A4266002D +S315E0626D20FF7A4EB900E2775E4CEE3C1CFFD44E5ED3 +S315E0626D304E755555AAAAAAAA55555555AAAA00004E +S315E0626D404E56FFE84EB900E033EA558F486EFFEAE9 +S315E0626D5042A72F3C0001FF0042A742A7486EFFF61A +S315E0626D603F3C00073D6E0008FFF63D6E000AFFF805 +S315E0626D703D6E000CFFFA3D6E000EFFFC3D6E0010AC +S315E0626D80FFFE4EB900E240C44FEF001C4E5EA541E5 +S315E0626D90C0814A4057C0488044804E754FEFFFE459 +S315E0626DA048D71C0C266F0024246F002049F900E2C4 +S315E0626DB0608C2F0B487900014BB84EB900E2FE3089 +S315E0626DC0508F4A4057C24EB900E277342F0A4E944A +S315E0626DD0588F488244824A426744322B0006302A00 +S315E0626DE00006D0813F00322B0004302A0004D081B5 +S315E0626DF03F00322B0002302A0002D0813F0032137C +S315E0626E003012D0813F00260F06830000001C2F035C +S315E0626E104EB900E035242F034E944FEF00104EB981 +S315E0626E2000E2775E558F3F3C000149F900E2608CF3 +S315E0626E303F3C00013F39000186F03F39000186DCC4 +S315E0626E403F3C00014EBAFEFA36004EB900E27734B4 +S315E0626E502F0A4E944FEF00104A426744322B0006E7 +S315E0626E60302A0006D0813F00322B0004302A00042B +S315E0626E70D0813F00322B0002302A0002D0813F00EF +S315E0626E8032133012D0813F00240F06820000001CCC +S315E0626E902F024EB900E035242F024E944FEF0010D8 +S315E0626EA04EB900E2775E30034CD71C0C4FEF001C04 +S315E0626EB04E75487900014B904EB900E25E323EBCB7 +S315E0626EC000013F3C000342674EB900E25FCC508F5F +S315E0626ED04E754FEFFFE848D71C1C382F001C362F43 +S315E0626EE0001E246F0024266F00284EBAFFC6424277 +S315E0626EF02003D084714020006A025280E288600CEE +S315E0626F007140528220006A025280E2884A4066F00C +S315E0626F10206F00203082672648C489C249F900E2C0 +S315E0626F20FE8C3F043F3C00014E9448C387C23480E6 +S315E0626F303F033F3C00014E94508F3680600836BC7A +S315E0626F40000134BC00014CD71C1C4FEF00184E7593 +S315E0626F504FEFFFF448D71C00246F0014736F0010E4 +S315E0626F60266F0018716A0004286F001C22016A020B +S315E0626F70528120006A025280E281E280908136800C +S315E0626F80736F0012716A000622016A025281200062 +S315E0626F906A025280E281E280908138802F2F002857 +S315E0626FA02F2F00282F2F00283F003F134EBAFF24D1 +S315E0626FB032133012D08136803214302A0002D08108 +S315E0626FC038804CEF1C0000104FEF001C4E754FEFFF +S315E0626FD0FFDA48EF0C7C00023A2F002E382F0030A1 +S315E0626FE0262F00323F3C000145F900E2FE8C47FA6B +S315E0626FF0FDAC4EB900E2EA604EBAFEB8426742675D +S315E06270003F2F00323F2F0032240F06820000002815 +S315E06270102F024EB900E035244FEF00103C2F001EE0 +S315E06270203F053039000186DC322F001E52809081A6 +S315E06270303F004E923F4000243039000186F03F0423 +S315E0627040528090863F004E923F40002A2F032F02E5 +S315E06270504E934FEF00104A4066C2206F003430AF65 +S315E06270600020206F003830AF0022558F42674EB95C +S315E062707000E2EA604CEF0C7C00044FEF00284E75AC +S315E06270802F2F00102F2F0010487900014BB83F2FA9 +S315E062709000163F2F00163F2F00163F2F00164EBAFE +S315E06270A0FF2E4FEF00144E754FEFFFDA48EF0C7C80 +S315E06270B00002342F002E362F00302C2F00323F3C58 +S315E06270C0000145F900E2FE8C47F900E2F8C44EB9E8 +S315E06270D000E2EA604EBAFDDC3039000186DC4267E6 +S315E06270E090823F004E9242673A003039000186F064 +S315E06270F090833F004E923F2F003645FAFCA038005F +S315E06271003F2F00363F033F02240F06820000003025 +S315E06271102F024EB900E035244FEF001830390001F6 +S315E062712086DC90853F40001C3039000186F0908411 +S315E06271303F40001E2F022F064E93487900014BB85E +S315E06271402F024E924FEF00104A4066D0206F003415 +S315E062715030AF001C206F003830AF001E558F42679B +S315E06271604EB900E2EA604CEF0C7C00044FEF002877 +S315E06271704E754FEFFFC448D77CFC382F0048362F58 +S315E0627180004A246F00444EB900E27734424247EF48 +S315E062719000344DF900E260F420042203D080D2810B +S315E06271A03F40002E3F410032200422034480448166 +S315E06271B02A4028413E2A00063C2A00043A2A000276 +S315E06271C03812362F00423F4400343F4500363F4690 +S315E06271D000383F47003A4A6F004067062F0B4E96EB +S315E06271E060082F0B4EB900E2608C588F4A6F004CF4 +S315E06271F0670C302F002E322F0032DC80DE814A436C +S315E06272006708D88DDA8C538360BC52827142A5419D +S315E0627210B28066A04EB900E2775E4CD77CFC4FEF57 +S315E0627220003C4E754E56FFD448D704FC3F2E000A0A +S315E06272302C0E0686FFFFFFF23A2E000E382E000C69 +S315E06272403E2E0010346E00123F2E00083F053F04CA +S315E06272502F064EB900E03524734471474FEF000CB8 +S315E06272609887486EFFFA486EFFFCB0815EC2A34023 +S315E062727073459A8A486EFFFE48828480714AB0817D +S315E06272805EC3A340488386803003C1C53F003002B7 +S315E0627290C1C43F004EBAFC3C4FEF000E4267C7EEF8 +S315E06272A0FFFAC5EEFFFC3F033F022F063F2EFFFECD +S315E06272B042674EBAFEBE4FEF00104CEE04FCFFD4BE +S315E06272C04E5E4E754E56FFF42F0A486EFFF6486ED6 +S315E06272D0FFF8486EFFFA486EFFFC486EFFFE246ECA +S315E06272E000082F2E000C3F2A00063F2A00044EBA01 +S315E06272F0FC603F2EFFFC3F2EFFFE3F2A00023F125C +S315E06273003F2A00063F2A00044EBAFF1A34AEFFFE59 +S315E0627310356EFFFC00024FEF00263F3C00013F2E38 +S315E0627320FFF63F2EFFF82F0A3F2EFFFA3F3C0001A1 +S315E06273304EBAFE404FEF0010246EFFF04E5E4E7581 +S315E06273404E56FFF42F0A2F02486EFFF6486EFFF89C +S315E0627350486EFFFA486EFFFC486EFFFE242E000C74 +S315E0627360246E00082F023F2A00063F2A00044EBA26 +S315E0627370FBE04FEF001A302EFFF63F3C00014480FF +S315E06273803F00302EFFF844803F002F023F2EFFFA87 +S315E06273903F3C00014EBAFDDC3F2A00023F123F2E1F +S315E06273A0FFFC3F2EFFFE3F2A00063F2A00044EBA4C +S315E06273B0FE744FEF001C242EFFEC246EFFF04E5E4F +S315E06273C04E754E56FFD848D70CFC3C2E000C4879D9 +S315E06273D000014B902A2E0008382E000E3E2E001039 +S315E06273E04EB900E25E32548F486EFFF8424347F987 +S315E06273F000E2B1683F0645FAF9482F054EB900E268 +S315E0627400A49C4FEF000C3004600A4A4366043004E1 +S315E062741060023007558F3F3C0001A342B7823F00CE +S315E062742036023F062F054E934FEF000A3F2EFFFED0 +S315E06274303F2EFFFC3F2EFFFA3F2EFFF83F024E92B1 +S315E06274404FEF000C4A4066C230024CEE0CFCFFD8AD +S315E06274504E5E4E754E56FFE448D7001C558F240E9D +S315E06274600682FFFFFFF02F023F2E000C282E000857 +S315E0627470260E51832F044EB900E2A49C4FEF000A18 +S315E06274802F033F2E000E2F044EB900E2A474322E73 +S315E0627490FFF2302EFFFA486EFFFA2F032F02D081F9 +S315E06274A03F00302EFFF8322EFFF0D0813F003F2EB4 +S315E06274B0FFFE3F2EFFFC4EBAFBF04FEF00204A6E16 +S315E06274C000106714302EFFF2322EFFFA306EFFFEA6 +S315E06274D09280302EFFF66012302EFFF0322EFFF8E9 +S315E06274E0306EFFFC9280302EFFF490884A4067143B +S315E06274F0558F3F003F3C03E83F014EB900E1C6309D +S315E0627500508F600242404CEE001CFFE44E5E4E75C8 +S315E0627510206F000430B9000186DC206F000830B9C4 +S315E0627520000186F0206F000C30B9000186F4206F0E +S315E0627530001030B9000187044E7500002F39000152 +S315E06275404CDC4EB900E30224588F4E75A141226F9E +S315E06275500004206F0008203900014CDCB280660628 +S315E0627560429142904E75228020B900014CF44E75EC +S315E062757041EF000433D000014B6041EF000633D0A7 +S315E062758000014B6241EF000833D000014B6641F9DE +S315E062759000014BF833D000014B6C60FFFFFDBEE4A7 +S315E06275A04FEFFFF448D71C00487900E032BA49F958 +S315E06275B000E034C84E94425747FAFFB6426745F94F +S315E06275C000E034E03F3C007D4E93487900014CF8A0 +S315E06275D04E92487900E032E84E944FEF000E4267F1 +S315E06275E042673F3C007E4E93487900014D144E92CD +S315E06275F04CEF1C00000C4FEF00184E7541EF000691 +S315E0627600558F33D000014A583F3C000142673F2F15 +S315E0627610000A4EBAFF5C508F4E75558F42674267DD +S315E06276203F3C00024EBAFF4A508F4E7542673F3C7E +S315E0627630007A4EBAFFC84240588F33C000014CF020 +S315E06276404E754FEFFFF4302F001048D70C04757972 +S315E062765000014CF27340B282677633C000014CF2AD +S315E062766045FAFF0E6722558F42677002426733C062 +S315E062767000014B6A3F3C00054E924CEF0C04000859 +S315E06276804FEF00146000FF1A558F4267700347F9A7 +S315E062769000E034C8426733C000014B6A3F3C0005F4 +S315E06276A04E922F3900014CF84E934FEF000A426733 +S315E06276B042673F3C007D4E922F3900014D144E9356 +S315E06276C04FEF000A426742673F3C007E4E92508F20 +S315E06276D04CD70C044FEF000C4E752F2F00044EB9B9 +S315E06276E000E034C8425742673F3C00764EBAFE82BB +S315E06276F02F2F00104EB900E034E04FEF000C303926 +S315E062770000014C804E75206F000430B9000186DCC2 +S315E0627710206F000830B9000186F04E75558F4267DA +S315E062772042673F3C00804EBAFE48508F30390001D6 +S315E06277304C804E754A7900014CF06610558F42676F +S315E062774042673F3C007B4EBAFE28508F30390001DB +S315E06277504CF0528033C000014CF04E7560D6303941 +S315E062776000014CF0538033C000014CF0660E3F3CA2 +S315E062777000013F3C007A4EBAFE84588F4E752F0266 +S315E0627780242F00084EBAFFAE4A79000149DA66163E +S315E06277904878004A2F022F39000185744EB900E01D +S315E06277A00EC44FEF000C4878004A2F022F390001D1 +S315E06277B04A384EB900E00EC44FEF000A3F3C00255E +S315E06277C042673F3C006F4EBAFDA8508F241F608E21 +S315E06277D070042F0A558F45FAFD9833C000014A5866 +S315E06277E0103C00023F0033C000014A5A42673F3C08 +S315E06277F000214E9270FF5C8F3F3C000233C0000175 +S315E06278004A5842403F0033C000014A5A3F3C001F9B +S315E06278104E92508F4A7900014B6867083039000111 +S315E06278204C8060024240245F4E753F3C00013F3C23 +S315E062783000664EBAFDC8588F203900014CB44E75C9 +S315E06278404267426742A7487900014CDC4EB900E2E2 +S315E062785061FA4EBAFFD64FEF000C23C000014CF43A +S315E06278606708A17900014CDC6022323900014BA045 +S315E0627870C3F900014BA42001ED8890817379000180 +S315E06278804BA24C01080023C000014CF420390001F0 +S315E06278904CF44E754EBAFFAAA141B2B900014CDC76 +S315E06278A067102F004EB900E301F2588F23C0000142 +S315E06278B04CDC4E754FEFFFF448D71C00246F00187E +S315E06278C0286F0014266F0010486A005A4EB900E02D +S315E06278D034BC2F0B47F900E034984E932F0A45F9F2 +S315E06278E000E034B04E924FEF000A3F3C000B426735 +S315E06278F03F3C00014EBAFC7A38B900014B6C4879DC +S315E062790000014A584E93487900014C804E9248797C +S315E062791000014BD04EB900E034A44CEF1C000014D9 +S315E0627920203C00014CFC2F4000244FEF002060FF1A +S315E0627930FFFDBB8C41F900014A5830FC0001B1FC05 +S315E062794000014A6C66F47002487900014C0C487991 +S315E062795000014BF8487900014A5833C000014A6C8D +S315E06279604EBAFF52700133C000014CF24EB900E2EA +S315E062797064684EBAFC2C4FEF000A426742673F3CAE +S315E0627980007C4EBAFBEC508F41F900014CFC33D0DF +S315E0627990000186DC41F900014CFE33D0000186F03D +S315E06279A04E752F02342F00082F2F000A4EB900E0E1 +S315E06279B034A442573F023F3C00064EBAFBB4508FB6 +S315E06279C0203C00014BD02F400008241F60FFFFFDE2 +S315E06279D0BAD62F032F02362F000C202F000E4A4311 +S315E06279E067047402600242422F004EB900E034A49A +S315E06279F03EBC00013F0233C300014A583F3C00816E +S315E0627A004EBAFB6E508F203C00014BD02F40000CEB +S315E0627A10241F261F60FFFFFDBA8E424041EF00043D +S315E0627A20558F33D000014BD23F0033C000014BD0BB +S315E0627A303F3C00013F3C000C4EBAFB36206F000E25 +S315E0627A4030B900014CFC206F001230B900014CFEE7 +S315E0627A50206F001630B900014D00206F001A508F7A +S315E0627A6030B900014D024E752F02242F00082F2FE8 +S315E0627A70000C4EB900E034C82F024EB900E034A4DF +S315E0627A805C8F3F3C00013F3C00023F3C00724EBAD5 +S315E0627A90FAE0508F203C00014BD02F400008241FB3 +S315E0627AA060FFFFFDBA022F032F0241EF000C242F85 +S315E0627AB0000E262F001633D000014A582F2F0012EF +S315E0627AC04EB900E034C82F034EB900E034D42F0239 +S315E0627AD04EB900E034A44FEF000A3F3C00013F3C60 +S315E0627AE000043F3C006D4EBAFA88508F203C00019C +S315E0627AF04BD02F40000C241F261F60FFFFFDB9A864 +S315E0627B004FEFFFD8306F002C48D73CFC3A6F002E1F +S315E0627B10326F0030386F0032266F0034246F0038DF +S315E0627B202C2F003C282F00402A2F004471486C0617 +S315E0627B3006800000000F76F0C68041F0980F3E03A3 +S315E0627B4091C371486C0606800000000FE8807201FE +S315E0627B5033CC00014CE22400E98A33C000014CE4F4 +S315E0627B6033C100014CE633C200014CE04EBAFBC6BB +S315E0627B7042403687374D0002224341F128FF538265 +S315E0627B803748000441F5C8FF538C37480006354054 +S315E0627B900002425235420004354C00063F003F0087 +S315E0627BA042A72F064EB900E261FA5C8F2E852F045A +S315E0627BB0487900014BD03F3C00034EBAFEEA4CEFF7 +S315E0627BC03CFC00104FEF00386000FB94206F00042D +S315E0627BD0487900014A44487900014CDC4879000161 +S315E0627BE04A44487900014BD0487900014BD83F2896 +S315E0627BF000063F2800043F2800023F104EBAFF020B +S315E0627C004FEF001C4E75206F0004487900014CDC92 +S315E0627C10487900014B78487900014B784879000150 +S315E0627C204BD8487900014BD03F2800063F28000434 +S315E0627C303F2800023F104EBAFEC84FEF001C4E7559 +S315E0627C402F032F0241EF000C33D000014A5841EF77 +S315E0627C50001A33D000014A5A41EF001C242F000E6D +S315E0627C60262F001633D000014A5C2F2F00124EB940 +S315E0627C7000E034C82F034EB900E034D42F024EB987 +S315E0627C8000E034A44FEF000A3F3C00033F3C0004AF +S315E0627C903F3C00794EBAF8DA508F203C00014BD077 +S315E0627CA02F40000C241F261F60FFFFFDB7FA2F024C +S315E0627CB0242F000C2F2F00084EB900E034C82F02A3 +S315E0627CC04EB900E034D4508F42403F40000C3F4012 +S315E0627CD0000A103C006E3F400008241F6000F892E4 +S315E0627CE0424041EF0004558F33D000014BD03F0054 +S315E0627CF033C000014BD23F3C00013F3C00104EBA1C +S315E0627D00F870508F4E750000226F0008202F000435 +S315E0627D102040121910C166FA4E752F032F022039E0 +S315E0627D2000014EBC206F000C4241756F0010600A84 +S315E0627D3020802008528141E8001C7741B4836EF0CE +S315E0627D40241F23C000014EBC261F4E752F02740904 +S315E0627D50102F0009488022000681FFFFFFD0738161 +S315E0627D60B48165080680FFFFFFD06028558F3F002B +S315E0627D70AB424EB900E1C53A588F22000681FFFF59 +S315E0627D80FFBF7381B481650A48800680FFFFFFC941 +S315E0627D9060024240241F4E754FEFFFF0722048D7D3 +S315E0627DA00C0C206F00147110B280660252881010BB +S315E0627DB0558F47E8000145FAFF94240B52824880CA +S315E0627DC03F004E921213360048813E814E92588FA2 +S315E0627DD02203E989808173C00C81000000FF66029C +S315E0627DE070FF206F0018308020024CD70C0C4FEFEA +S315E0627DF000104E7571FC1A844E753F3C000C3F2FA5 +S315E0627E0000062F39000185704EB900E2A1D0206FDD +S315E0627E10000E508F224020914E754FEFFF7C48D77F +S315E0627E207CFC2F3900E4FE28240F06820000003332 +S315E0627E302F024EBAFED42079000160D41F5000377B +S315E0627E405C8F42672F024EB900E2FF7E508F3400AC +S315E0627E50670001704A7900018E64660001662F3917 +S315E0627E6000018AE43F3C012C3F004EB900E2FFB0DC +S315E0627E705C8F3F0236004EB900E2FF9E588F4A7928 +S315E0627E8000018E646600013C42007743247900017A +S315E0627E908AE4280F2C0F2E3C00E2C520424206847B +S315E0627EA00000008049FAFEF20686000000824DF983 +S315E0627EB000E243744BF900E2F7EC7BFC800015804C +S315E0627EC038004243600000D67100722347EA00013F +S315E0627ED0B280660000C67113123C004DB280662C19 +S315E0627EE02F06486A00094E9447EA000F508F719355 +S315E0627EF022050680FFFFFFBF71C0E0A986814A6F57 +S315E0627F000082660000968481600000907245B280CD +S315E0627F10664E2F04486A00034E943F3C000147EAEE +S315E0627F200006AF41302F008AC0813F004E962F0493 +S315E0627F302F0B4E94302F00944FEF00127208426777 +S315E0627F40C2804A4156C14881448133C100018B46B1 +S315E0627F50A341C081B3803F0042674E95508F603A3D +S315E0627F60725AB28066345C8A204A264822481018E1 +S315E0627F70670871007240B28066F04211528B2F0A36 +S315E0627F804EB900E2C156420120401141FFFF20474F +S315E0627F902F0A2F004E904FEF000C244B1012660012 +S315E0627FA0FF2833C300018B4A33C200018B48207934 +S315E0627FB000018AE4200806800000012C4258B0885D +S315E0627FC066FA4CD77CFC4FEF00844E752F0A45F972 +S315E0627FD000E033EA4E924E924E92558F3F3C00015C +S315E0627FE045F900E2EA604E9242574E92588F245F1C +S315E0627FF04E75534352454E4D47520000424170051D +S315E06280004E56FF7C41F90001857C48D73CFC243C16 +S315E06280100001075443F90001663E23C200018AE487 +S315E0628020263C00016870283C00014DAC33C100017A +S315E062803049F833C000014F4823C800018574203CEB +S315E06280400001668F33C10001890423C900014DA492 +S315E0628050223C0001659C243C000165ED43F9000188 +S315E06280604EC823C30001864C263C000188CC23C45B +S315E062807000018C40283C000188EC23C0000188E8BE +S315E0628080203C00014D2423C1000188C8223C000146 +S315E06280904D7623C2000188FC243C00014DBC41F9C7 +S315E06280A00001889823C1000160D423C100014DB864 +S315E06280B023C0000160C023C00001890023C3000120 +S315E06280C088C4263C0001846423C4000188C0283C3D +S315E06280D0000185C823C8000188BC23C9000160D8B5 +S315E06280E023C900018ADC23C2000160C423C3000104 +S315E06280F060C841F90001865443F90001867223C8DB +S315E0628100000160D023C80001890C23C900014A142A +S315E062811023C4000160CC23C400018AEC4EB900E0BE +S315E062812031544EB900E032A8558F42B9000149C8D0 +S315E062813042403F3C000AA97900014EC442B90001BF +S315E06281404EBC45FAFBD633C0000149CE33C00001CE +S315E062815049CC487900015FA84E92717900014F4897 +S315E0628160508FA541B2806C10558F3F3C000F487925 +S315E062817000016A4E4E92508F424279FC074A42B9FA +S315E062818000014DAE42B900014DB242B900014F5411 +S315E062819042B90001857842B90001856442B90001BD +S315E06281A04D1849F900E2B2F047F900E00DE833C252 +S315E06281B000014DAC33C20001856C33C200014D1C37 +S315E06281C033C200014F50343900014F48538277423F +S315E06281D02003EB884C034800068400015D5E204084 +S315E06281E045F03CB8D5FC000183F8600000A6558FE7 +S315E06281F03F024E94588FA341204023C000014DA810 +S315E06282007142B2806D2A71FC074A4C03080006800F +S315E062821000014F5C214000082003EB88224043F1D5 +S315E06282203C002009068000015F602140001460087E +S315E062823021440008214A0014424043E80038558F41 +S315E06282402149003231400036487800083F3C002040 +S315E06282504868000C4E934FEF000C4A42671620794D +S315E062826000014DA820280008224043E90746204045 +S315E06282702149003E4240207900014DA8538306849D +S315E0628280FFFFF8B645EAFFDC3142001C538231401B +S315E0628290001E4A426C00FF58424174012079000197 +S315E06282A04DA8424345F900E2B3D43141001C33C2E2 +S315E06282B000014EC042904EB900E0316433C3000122 +S315E06282C0885C487900E23718487AFD28487900E206 +S315E06282D037184E9223C0000186EC23C0000186E087 +S315E06282E04EB900E3023841F900E4FE9A23D0000178 +S315E06282F0856843F900E4FEB623D100014D2033C31D +S315E0628300000186DE33C3000186EA33C3000186F8E4 +S315E062831033C3000186F64EB900E2FF240680000010 +S315E0628320004113C0000186504EB900E2793471799A +S315E062833000014F484FEF000CA541B2806D14760301 +S315E0628340424247F900E00EC445F900E263FE60008E +S315E062835001284EB900E3021247FAF9AE26004EB999 +S315E062836000E27840558F3F3C000324004EB900E2BC +S315E0628370BBF42F002F39000160CC4E932F390001F8 +S315E0628380890C4EB900E2FF344FEF000E3F3CFFFF2F +S315E06283904EB900E05D68588F44C0660000BE609EDC +S315E06283A042422A0B2E3C00E2FF662C3C00E2FF488A +S315E06283B047F900E2FF7E4BF900E2FEBC49F900E2D2 +S315E06283C0FF9E4A426616558F3F3C000120462F3992 +S315E06283D000018AEC4E90508F3600600622474E913D +S315E06283E036004A4367664879000186722F39000192 +S315E06283F060D820454E905C8F42672F3900018ADC57 +S315E06284004E93508F38004A7900018E64663E558FEE +S315E0628410486EFFFC2F39000160D83F004E954FEF62 +S315E0628420000A3F043D40FFA64E94716EFFA6588F48 +S315E0628430A141B28067162F2EFFFC48790001867251 +S315E0628440487900E033B44E924FEF000C52827142AB +S315E0628450A744B88066186000FEE696820683FFFC53 +S315E0628460C80FE88B4A436600FF386000FED24A4393 +S315E06284706600FF506000FEC871424878000E528284 +S315E062848053832200D281E9889081068000E4FE70FF +S315E06284902F002F39000188C04E934FEF000A3F3913 +S315E06284A0000188F23239000188F02039000188EC57 +S315E06284B03F012F003F012F004E924FEF00104A43DB +S315E06284C066B647F900E031304E934EB900E0319E30 +S315E06284D045F900E031464E924EB900E2C0524E9303 +S315E06284E048790000816E2F39000081624EB900E260 +S315E06284F076DA33C0000149F04E923F3C00013F3CE0 +S315E062850000034EB900E243744EB900E302A841F9B2 +S315E062851000E4FDD823D0000185704EB900E2E64062 +S315E0628520487900014A2C203900E4FDD02F0023C0AF +S315E062853000014A344EB900E29B022F3900014DB880 +S315E06285404EB900E2BD9A4EBAF8D24EB900E033EACD +S315E06285504EBAFA7A4FEF00122EBC00018AE83F3C2F +S315E062856000024EBAF896263900014F4C508F2D43E1 +S315E0628570FFFC600652892D49FFFC226EFFFC4A1120 +S315E062858066F241E900014A1066EAA5402F3900E445 +S315E0628590FE149083240E0682FFFFFFAB2F022D4866 +S315E06285A0FFFC2600D6884EBAF7602F024EB900E18C +S315E06285B0C4A42D42FFFC4FEF000C38006016730135 +S315E06285C0743AB481660A43F9000186501151FFFF9D +S315E06285D052AEFFFC206EFFFC121066E2558F4267D8 +S315E06285E0D08371C0247900018AE4D08A23C0000175 +S315E06285F08AE44EB900E2BBF42F00486EFFFC4EB946 +S315E062860000E2C18A4FEF000C202EFFFC673C2F0090 +S315E06286104EB900E1C4A42C2EFFFC223900014F4C76 +S315E06286209C81DC803A007F4634062F072F012F0AB1 +S315E06286304EB900E00EC44FEF00104A456710703B3A +S315E062864024065282158078006004424542427944AB +S315E0628650714247F900E00EC42F04486EFFAB49F25F +S315E062866008002F0C4E934FEF000C206EFFFC4A88F9 +S315E06286706716968277437B452F03487058004874A5 +S315E062868048004E934FEF000C720142422879000196 +S315E062869060CC487800802F39000189082F0C23CA04 +S315E06286A000014F4C33C10001891833C100018AE0F1 +S315E06286B033C10001891233C10001891033C200015E +S315E06286C089164EB900E00EC410144FEF000C4880D4 +S315E06286D0670001E2420371402A0C52852045220579 +S315E06286E01183080026417620101352817500B68206 +S315E06286F067F24A00670001BE2A4B200B2440528093 +S315E06287001212670C73017820B88166F074206002F9 +S315E0628710420242122F0B4EB900E2C1561482588FC2 +S315E06287202479000160D8B7C067000088732B000126 +S315E0628730743AB481671A14F900018650765C14FCC7 +S315E0628740003A7313B681670814FC005C600214DDBC +S315E0628750264DB08D62F82A4A785C7125B880670248 +S315E06287602A4A4215243C00E1C53A2479000160D8E0 +S315E0628770600E4880558F20423F004E90588F14C05D +S315E0628780101266EE2079000160D8558F244D1010E4 +S315E062879048800680FFFFFFBF3F004EB900E3005608 +S315E06287A02F3900018ADC4EB900E3000A14FC005C52 +S315E06287B0508F7001600C762EB68256C214C1488222 +S315E06287C0C0822A4B121B670875017820B88266E67A +S315E06287D04A40671A558F3F3C00024EB900E2BBF44D +S315E06287E02F002F0A4EBAF5224FEF000C60024212BA +S315E06287F02479000160D847F900E1C53A600C488007 +S315E0628800558F3F004E93588F14C0101266F0424067 +S315E0628810722033C0000189127115B2806602528DF0 +S315E0628820244D2645243C00E1C53A6026101D76209B +S315E06288307300B681660E1212780D7701B8836712FD +S315E06288404A01670E4880558F20423F004E90588F0E +S315E062885016C0260A101A672C7100720DB280672460 +S315E06288607809B880671E123C002FB28066BE181285 +S315E0628870558F204248843F044E90588F724471402F +S315E0628880B28066A842132F054EB900E1C4A4204324 +S315E062889018801628000148833E834EB900E1C53A46 +S315E06288A0588F7244B3804A4057C04880448033C090 +S315E06288B000018910487800802F0C2F390001890861 +S315E06288C04EB900E00EC44EB900E2C9824EB900E08C +S315E06288D0313048790000816E2F390000816E4EB9E1 +S315E06288E000E276DA33C0000149F04EB900E0314683 +S315E06288F04EB900E2761A3039000189044FEF00146E +S315E062890067287140A342B4806620363900018AF056 +S315E062891055833F032F3CFFFFFFFF2F3CFFFFFFFF27 +S315E06289203F3C00054E4E4FEF000C4EB900E0313051 +S315E06289304EB900E0329C4EB900E031464CEE3CFC6A +S315E0628940FF7C4E5E4E7500002F02206F00083418E1 +S315E06289502F083F39000186F03F39000186DC4EB9C7 +S315E062896000E2FDE4508FB580241F4A4056C048803D +S315E062897044804E752F032F02342F000C717900016B +S315E062898086DE7342B081676A3039000186F8672213 +S315E06289907779000186EAB68166523239000186F657 +S315E06289A0568033C0000186F8528133C1000186F6F3 +S315E06289B0603A4A79000186E667204A42671C70019E +S315E06289C041F9000149EE33C2000186EA33D0000183 +S315E06289D086F833C0000186F660123F3C00013F0232 +S315E06289E0487A038C4EB900E23CF0508F33C2000104 +S315E06289F086DE241F261F4E753039000186F82F0A5F +S315E0628A002F024A406748322F000C908133C0000142 +S315E0628A1086F8663A3F39000186F645F900E23CF0AF +S315E0628A203F39000186EA487A03464E9230390001C0 +S315E0628A3086DE7579000186EA508F7340B282670EF0 +S315E0628A403F3C00013F00487A03264E92508F241F36 +S315E0628A50245F4E754879000186FC2F2F00084EB9D7 +S315E0628A6000E2FE52508F4E752F2F000448790001C6 +S315E0628A7086FC4EB900E2FE52508F4E75206F0004BE +S315E0628A8020B9000186E04E752F027408206F000857 +S315E0628A903028001453803140001430280010220040 +S315E0628AA05281314100107341B481660642413141DF +S315E0628AB000107140241F30300A004E752F0A45FAC5 +S315E0628AC0FFC860084868000E4E92588F2079000110 +S315E0628AD04DA8206800144A68002266E8245F4E7555 +S315E0628AE02F0A206F0008302F000C246800082568E2 +S315E0628AF000040004226800044A896704234A0008E5 +S315E0628B003F40000C2F480008245F60FFFFFFA78C00 +S315E0628B102F02206F0008326F000C202800026708DF +S315E0628B202F400008241F60B830280022AF4273400D +S315E0628B30B4816D2432280020754152813141002092 +S315E0628B40734131892A0E7408B48166064241314125 +S315E0628B500020528031400022241F4E75302F0004DF +S315E0628B6041EF000633D0000187044A406714558F0F +S315E0628B703F002079000186E02F2800144EBAFF926A +S315E0628B80508F4E752F032F02222F000E2401362FAF +S315E0628B90000C2001E0807582B782C0827418E4A975 +S315E0628BA0241F261F4A0057C048804480B3804A404B +S315E0628BB056C0488044804E754FEFFFC848D77CFC6C +S315E0628BC0362F00442C0F0686000000303A2F004212 +S315E0628BD0246F003E4BFAFFAE47FAFF0649F900E220 +S315E0628BE0FDE47FC3600000A02C6A0004242A001022 +S315E0628BF04A6F003C6750302A001472083F420032E6 +S315E0628C00C0814A4056C44884200444803F40002ED6 +S315E0628C1038002002484048C079C43F400030202AEC +S315E0628C2000182200484148C13F4000363F410034C7 +S315E0628C302F063F033F054E94508F71C0B084674460 +S315E0628C40558F42676038558F2F023F054E95508F9C +S315E0628C504A40673042424842A341758271C2B2805D +S315E0628C60640E3039000186E6538033C0000186E641 +S315E0628C7073C2558F3003B287640230023F002F0A17 +S315E0628C804E93508F244E4A8A6600FF5E4CD77CFC38 +S315E0628C904FEF00384E753039000186F84FEFFFF43A +S315E0628CA048D7001C342F0010362F00124A40673432 +S315E0628CB03239000186DCA9449282548173C1B8815B +S315E0628CC065183239000186F0183C000292837341DE +S315E0628CD0B8816D0678FEB8816F0A558F3F004EBA4D +S315E0628CE0FD18588F33C2000186DC33C3000186F07B +S315E0628CF04A79000149C4670C3F033F024EB900E07E +S315E0628D00331E588F2079000186ECB1F9000186E0C6 +S315E0628D10672C4A79000186F466244AB900018858CC +S315E0628D20671C4879000149D04EBAFC1E588F4A400A +S315E0628D30670C41F9000186EC23D0000186E0558F8D +S315E0628D403F39000186F02079000186E03F39000173 +S315E0628D5086DC206800142F2800063F3C00014EBAEC +S315E0628D60FE584CEF001C000C4FEF00184E754FEFAB +S315E0628D70FFE848D7047C382F001C3A2F001E4A7958 +S315E0628D80000149DA660000C87144A341B280660018 +S315E0628D9000BE4A79000186F4660000B43639000105 +S315E0628DA086F04879000186FC3439000186DC45F9B3 +S315E0628DB000E2FDE43F033F024E92508F4A40667AFC +S315E0628DC0487900014B983F033F024E92508F4A40EA +S315E0628DD0660000EC3F033F024EB900E2EA40588F7C +S315E0628DE04A40670000E2737900018B7C2C01E78ED2 +S315E0628DF0ED89928606810001688E20417C083210F8 +S315E0628E00C2864A41670000B871402200E789ED8870 +S315E0628E1090812040D1FC0001688E3210C2864A41C0 +S315E0628E206700009C0680000168A62F003F033F02B0 +S315E0628E304E92508F4A406700008641F9000186D81B +S315E0628E4023D0000186E0600623C0000186E041F996 +S315E0628E50000186F4558F33D0000186FA41F90001AC +S315E0628E6086D433D00001870641F9000186DC33D02F +S315E0628E70000186E841F9000186F033D0000186F20E +S315E0628E803F052079000186E03039000186E433C48B +S315E0628E90000186F433C5000186D43F04528033C0B4 +S315E0628EA0000186E4206800142F28000A42674EBA61 +S315E0628EB0FD084CEF047C000C4FEF00244E75203920 +S315E0628EC0000186EC60822039000168906000FF7ADA +S315E0628ED02F0A206F00084A79000186F46650558FA2 +S315E0628EE03F39000186F023C8000186E023C800010D +S315E0628EF086D845FAFCC43F39000186DC2068001456 +S315E0628F002F2800063F3C00014E924FEF000A3F3C9D +S315E0628F1000012079000186E03F39000186F420688D +S315E0628F2000142F28000A42674E924FEF000C245F2E +S315E0628F304E75207900014DA82F02242F0008206883 +S315E0628F4000144A68002267144868000E4EBAFB3A7B +S315E0628F503E802F024EB900E23298600C4868000209 +S315E0628F602F024EB900E23356508F241F4E752F0AF8 +S315E0628F702F02246F000C242F00106604143C0001BB +S315E0628F804EB900E03130203900008176670CB0825C +S315E0628F906D1423C200008176600C23C200008176E4 +S315E0628FA042B900008172302A0014A94143F90001F6 +S315E0628FB04D1893F900014EC4207900014D18808165 +S315E0628FC035400014601020280010B0826C0C2248F4 +S315E0628FD09480206800044A8866EC234A00042549A6 +S315E0628FE000082542001025480004670E202800107C +S315E0628FF09082214A000821400010241F245F60FF0E +S315E0629000FFFDA1464FEFFFF448D70C042679000135 +S315E06290104DA8246F0010242F0014B7F9000186E0F2 +S315E0629020662A2F023F39000186F44EBAFB585C8FFE +S315E06290304A40671870012F4A00104CD70C043F4033 +S315E062904000144FEF000C60FFFFFFA2502002A34125 +S315E0629050484048C07180B2806C0E3039000186E6C5 +S315E0629060528033C0000186E6266B0014254200106A +S315E06290702F4A001047EB000A2F4B00144CD70C0422 +S315E06290804FEF000C60FFFFFFA2D04FEFFFF42F0A15 +S315E06290902F02246F00184878000A2F2F0020240F31 +S315E06290A00682000000122F024EB900E00EC44FEFB6 +S315E06290B0000C2039000186E0B0B900014DA8661ABD +S315E06290C02F024EBAF884588F4A40670E558F426730 +S315E06290D02F0A4EB900E232986052302A00144A6F83 +S315E06290E0000A670672088081600472F7C0813540C3 +S315E06290F0001471EF000C736F000E207900014DA829 +S315E062910048404240206800145C88D08125400010C7 +S315E062911071EF0010736F001248404240D0812540E3 +S315E062912000182F082F0A4EB900E23356508F241FDB +S315E0629130245F4FEF000C4E754FEFFFCC48D77CFCB7 +S315E062914026390001885867000194558F48790001F5 +S315E062915087083F3C000C45F900E2A1D04EB900E237 +S315E0629160D5683F3C000442672F034E923F3C0002C3 +S315E062917020403F102F034E924FEF0012223C000137 +S315E062918087082040301023C100018830207C00FF30 +S315E0629190110072142EBC0001871823C800018714DF +S315E06291A03F0033C00001882C33C10001870E4201C3 +S315E06291B033C10001871033C1000187122F034EB914 +S315E06291C000E2A49C3A390001885C4FEF000C670428 +S315E06291D0548560027A017001558F280F068400007B +S315E06291E0002E2F0433C50001870C45F9000187087C +S315E06291F07B454BF900E2A1D049F90001886047F965 +S315E062920000E2FE5233C00001870A30390001882C41 +S315E062921052803F002F034EB900E2A4744FEF000C78 +S315E062922070012C4A6000009A2C022202E78EEB89DA +S315E06292302040528892862441D5FC000187083D8809 +S315E06292401800721C3C0835410006420135410008AF +S315E06292503541000AA541B2826C2457806002528091 +S315E0629260734022341C0067F62E022002E78FEB88F9 +S315E0629270908706800001871420402081601A323987 +S315E06292800001882C3F3C000CD0813F002F034E95B5 +S315E0629290508F20402550000C2002E788EB8A9480AC +S315E06292A00682000187182F022F044E93302F003674 +S315E06292B0323900014BA4D0813F4000363006508FF0 +S315E06292C07540BA826C00FF62700841EF002E42522E +S315E06292D033D00001871E33C0000187424CD77CFC45 +S315E06292E04FEF00344E754FEFFFF048D7003C242F26 +S315E06292F00014362F00183A2F001A382F001E3F3C12 +S315E0629300000A3F032F024EB900E2A1D0508F2040FF +S315E062931030104A6F002067087208C2804A41663898 +S315E06293204A6F001C67048A8060044685CA804A44A4 +S315E0629330670E487900014BB84EB900E25E32588F4B +S315E0629340558F3F043F053F032F024EB900E2B168F5 +S315E06293504FEF000C7001600242404CD7003C4FEF89 +S315E062936000104E752F02302F000CA1427340B4817B +S315E0629370672A756F000EB4816722558F3F3C000104 +S315E06293803F3C00013F2F00163F3C00013F002F2F7C +S315E062939000144EBAFF524FEF001060024240241FA3 +S315E06293A04E75518F2F02487900014BB84EB900E2F3 +S315E06293B05E32548F240F5C822F023F2F001C2F2FC8 +S315E06293C0001A4EB900E2A49C302F001053803F4051 +S315E06293D00010302F001454803F400014302F0016E6 +S315E06293E054803F4000164FEF000C4A6F0010670A48 +S315E06293F02F024EB900E27C0660082F024EB900E207 +S315E06294007BCC588F241F508F4E754FEFFFEC48D7B9 +S315E0629410043C3A2F00183F3C000426390001885884 +S315E062942045F900E2A1D02805558442672F034E92A2 +S315E06294303F3C000220403F102F034E924FEF001058 +S315E0629440204034106010426753843F022F034E92ED +S315E0629450508F204034107144A341B2806DE873426C +S315E062946071790001882CB081660842422639000192 +S315E06294708830558F3F3C00013F3C00013F3C000194 +S315E06294803F3C00013F052F39000188584EBAFE582D +S315E06294904FEF00104A40671E3F022F033F3C000138 +S315E06294A04EBAFF003F3C00083F022F034EB900E28E +S315E06294B0AD6E4FEF001030024CD7043C4FEF001414 +S315E06294C04E754FEFFFB048D77CFC2A3900018858C9 +S315E06294D02A7C000101012C05347C000174FF76FFD1 +S315E06294E0367CFFFF4DFAFE7E600434043607714A2D +S315E06294F0A741B280671EA944B880670AA347BE80C7 +S315E06295006632600002BC300B663822390001883070 +S315E0629510600002B23039000186F408000000672E6E +S315E0629520300322062A7C00010100327C0001387C8D +S315E06295300007602C30022205327C0001387C00078D +S315E0629540601E300B220593C9387C000F601230032F +S315E0629550327C0001387C000722062A7C0001010188 +S315E06295607940A147BE846602700178082E0CC887EE +S315E06295704A446726558F486F00403F002F012F49C6 +S315E062958000384EB900E2A49C7002226F00382205D0 +S315E06295903F49004893C94FEF000C558F486F004A28 +S315E06295A03F0042472F012F4900384EB900E2A49CA2 +S315E06295B03F470046226F00383F4900524FEF000AAC +S315E06295C0486F003242A72F0D42A7486F004E486FA0 +S315E06295D0005C3F0C4EB900E240C44FEF001CA5416F +S315E06295E0C0814A406722714AB2806714280D080436 +S315E06295F000006600015A4A7900018B466600015016 +S315E06296002E0DA340B1872A473F2F00323F2F00320B +S315E06296103F3C00013F3C00022F054EB900E2AE4CF2 +S315E06296204FEF000CA14138007140B280671AA5473E +S315E0629630BE8067144A7900018B46675A716F003AB9 +S315E0629640A341B2806658604E714BA144B8806758B8 +S315E06296507142B88067603F2F00323F2F00323F3C55 +S315E062966000013F0B2F064EB900E2AE4C4FEF000C05 +S315E06296703E007140B88066483F3C000A3F022F05D3 +S315E06296804EB900E2A1D0508F720820403010C081FE +S315E06296904A4067346024347C00027EFF60303802E0 +S315E06296A03E03347C000260263E03347C000178FF90 +S315E06296B0387C0001601A38023E03347C000160F0B7 +S315E06296C03802347C000360063802347C000499CCAC +S315E06296D0558F42673F073F032F064E964FEF000ACC +S315E06296E042673F043F022F054E964FEF000C4A4019 +S315E06296F0670C3F0B2F0642674EBAFCA8508F558F18 +S315E06297003F3C00013F023F042F054E964FEF000CAF +S315E06297104A40671E558F3F044EBAFCF0588F36407A +S315E06297204A4066082C390001883060062C3900010F +S315E06297308858558F3F3C00013F033F072F064E9600 +S315E0629740300C4FEF000C6700FDA23404360771421D +S315E0629750A141B280675E3F0BA1442F0642674EBAD3 +S315E0629760FC427143508FB880672E558F3F3C0001B3 +S315E0629770426742673F3C00013F032F064EBAFB68F1 +S315E06297804FEF00104A406710206F0054700130823C +S315E0629790206F00583083601E558F3F3C00013F3C8E +S315E06297A0000142673F3C00013F022F054EBAFB389B +S315E06297B04FEF001042404CD77CFC4FEF00504E75A5 +S315E06297C0700122053240387C000F6000FD9E4FEF4B +S315E06297D0FFEA48EF0C1C0002776F0020242F001A84 +S315E06297E0382F001E3F0342A74EB900E2B31C508FEA +S315E06297F041F9000188844A44670000A221823C0064 +S315E062980023C00001882823C2000188584EBAF92A8B +S315E062981045F900E2A1D03F3C00143F3C00012F0233 +S315E06298204E923F3C0010363900014BC026403F3C29 +S315E062983000012F024E924FEF000A204030109680D0 +S315E062984036832EBC000149D23F3C00022F3900012B +S315E062985088584EB900E2A49C487900014BB84EB9EB +S315E062986000E25E323F3C00083F3C00012F390001D6 +S315E062987088584EB900E2AD6E303900014A3E32395F +S315E062988000014BC053803F0053813F013F00426776 +S315E06298904EB900E25FA64FEF0020601E42B03C0088 +S315E06298A04879000149D2487900014B9842B90001F2 +S315E06298B088584EB900E2FE52508F4240207900014C +S315E06298C086EC4CD70C1C3F40001C2F680014001835 +S315E06298D04FEF001460FFFFFFF23A4FEFFFF448D715 +S315E06298E00C04424245F90001883447F900E2E1425C +S315E06298F0201A671C42674267426742673F022F004F +S315E06299003F3C00294879000149DC4E934FEF001451 +S315E0629910528271427209B28066D64CD70C044FEF1E +S315E0629920000C4E7520004FEFFFF448D7040C4A6FE7 +S315E062993000106D00009230390001885C7408734053 +S315E0629940B4816D000082528033C00001885C41F9C7 +S315E0629950000188604202600252824A9866FA774261 +S315E062996045F900E4FD1041F90001883443F900014C +S315E06299704DA820323C0021913C0041F9000188600B +S315E062998021803C002F2F00122F004EB900E012FC1E +S315E0629990508F20723C007140D1C054886002421000 +S315E06299A071207220B28067F67142487AFF7841F997 +S315E06299B000E4FD102F300C004EB900E1C4B64EBA99 +S315E06299C0F778508F600274FF30024CD7040C4FEF89 +S315E06299D0000C4E754FEFFFE448D71C3C322F002057 +S315E06299E045F900E4FD1043F900018834602C7616EF +S315E06299F0424052817B412042794026728C00287235 +S315E0629A005C00D9C417944800528053834A4366E89F +S315E0629A10714141F10C0023902C0030790001885CA1 +S315E0629A20754153887148B0826EC433C80001885C60 +S315E0629A3041F90001883442B00C0041F900018860C6 +S315E0629A404CD71C3C42B00C004FEF001C6000F6EABB +S315E0629A50226F0008202F00042040121910C166FA16 +S315E0629A604E752F032F02322F000C41F9000165ED8E +S315E0629A704240600C7518765FB68266025381528008 +S315E0629A804A416EF073402041D1FC000165ED60020F +S315E0629A905280121867087301745FB48166F2241FFC +S315E0629AA0261F4E754FEFFFF048D7041C242F001493 +S315E0629AB0362F00183F3C000845F900E2A1D03F038B +S315E0629AC02F024E92204038103F3C000C0284000088 +S315E0629AD001003F032F024E924FEF001022402051C9 +S315E0629AE04A44670220504878001C2F082F2F002234 +S315E0629AF04EB900E00EC44CEF041C000C4FEF001CA4 +S315E0629B004E754FEFFFE048D70CFC2E2F00243F3C0A +S315E0629B10001047F900E2A1D042672F074E9334392D +S315E0629B2000014BC02440362A0004303900014BA0C4 +S315E0629B30382A00069483754224026A025282E282DD +S315E0629B4048C285C0C5C0303900014BA4C1FC0019CA +S315E0629B503F003F3900014B8C4EB900E2FE7032396C +S315E0629B6000014A3E3482908190847B402A056A02F3 +S315E0629B705285E285DA81354500023F3C000A3C05C2 +S315E0629B8042672F074E934FEF001472302040301039 +S315E0629B90C0814A40670A2C05578257865C835C849B +S315E0629BA03F043F033F063F022F2F00304EB900E0ED +S315E0629BB035244CEF0CFC000C4FEF002C4E75518FA8 +S315E0629BC02F0A2F02246F001C558F240F0682000095 +S315E0629BD0000A2F023F2F001E2F2F001C4EB900E213 +S315E0629BE0A49C2F023F2F001E3F2F001E2F3900013B +S315E0629BF088D03F39000188D83F39000188DC4EB908 +S315E0629C0000E268C4303900014BA0342F0036322FAF +S315E0629C100024356F002600024FEF001C41F9000177 +S315E0629C204BA43550000635400004C5C0D282241FDD +S315E0629C303481245F508F4E754E56FFE448D7001C40 +S315E0629C40486EFFF03F2E000E382E000C342E0010C8 +S315E0629C50262E00083F042F034EBAFF644FEF000C36 +S315E0629C604A426716322EFFF420025380C1F90001A0 +S315E0629C704BA0D0813D40FFF46028558F3F3C000108 +S315E0629C803F3C000342674EB900E25FCC302EFFF202 +S315E0629C90508F57803D40FFF2302EFFF65C803D40AC +S315E0629CA0FFF6486EFFF84EB900E25EB6486EFFF028 +S315E0629CB04EB900E25E32508F4A42670E42673F0417 +S315E0629CC02F034EB900E2AD6E601E306EFFF2326E69 +S315E0629CD0FFF6302EFFF043F098FF3F093F003F0862 +S315E0629CE03F004EB900E25FA6508F486EFFF84EB96C +S315E0629CF000E25E32588F4CEE001CFFE44E5E4E751B +S315E0629D002F032F02206F000E752F000D60285288F8 +S315E0629D107310762EB681661073280001B6816608E6 +S315E0629D20122800025688600212007100B0826E0646 +S315E0629D307301B2826C08101066D442406002700110 +S315E0629D40241F261F4E754FEFFFF4725848D7040C56 +S315E0629D50712F0015246F0010B2806700009E6D308F +S315E0629D60123C0046B280675E6D16123C0039B280E4 +S315E0629D7067000094123C0041B280667A6000008C13 +S315E0629D80724EB2806734123C0050B2806668602ED2 +S315E0629D90726EB280673C6D12123C0061B280672ED1 +S315E0629DA0123C0066B280664E60207270B2806712C4 +S315E0629DB0123C0078B280663E601E7006604E7007A6 +S315E0629DC0604A7008604670096042700A603E700BD5 +S315E0629DD06002700C424260361012558F48803F0036 +S315E0629DE060084A426714558F3F034EB900E1C53AAF +S315E0629DF0588F148060044240600270014CD7040CB4 +S315E0629E004FEF000C4E75700460CA70057401558F91 +S315E0629E103F004EB900E2BBF41612548F2F0048831E +S315E0629E203F034EBAFEDC508F4A4066B660CE2F0ADA +S315E0629E303F2F000845FAFC2C4E92548F206F000AA1 +S315E0629E40308048790001659C4EB900E1C4A43E8049 +S315E0629E504E92588F206F000E245F30804E75716F80 +S315E0629E60000441F90001659C4A3008006718220047 +S315E0629E7006810001659D2F01D0882F004EBAFBD284 +S315E0629E80508F42404E7570014E754E56FFD448D79C +S315E0629E900CFC342E00142A2E0008362E000C382EC6 +S315E0629EA0000E246E00104A426700031A4A436F00AE +S315E0629EB00314558F4879000188CC3F0347FAFB9239 +S315E0629EC02F054EBAFBE02F39000188D02F39000109 +S315E0629ED088FC4E932F39000188CC2F39000188C85F +S315E0629EE04E932F39000188D42F3900014DA44EB923 +S315E0629EF000E012FC4FEF00244A406F242C005386A8 +S315E0629F007F79000188E641F90001663E7D46600A96 +S315E0629F1043F068005280119118007340BE816EF082 +S315E0629F204201714041F90001663E558F7542A34692 +S315E0629F301181080048790001668F4879000165ED74 +S315E0629F4048790001659C3F39000188DC4EB900E240 +S315E0629F50A50E4FEF0010BC82670AA540B08266008C +S315E0629F60024C601448790001659C4EB900E1C4A4D4 +S315E0629F70588F348060000236558F486EFFFA486E1D +S315E0629F80FFFC3F124EBAFEA84FEF000A4267342E3C +S315E0629F90FFFC3F023F032F054EBAFC9E71444FEF32 +S315E0629FA0000C0C8000004B0067646E120C800000AF +S315E0629FB0011B67280C8000000E08667C60120C802C +S315E0629FC000004D0067520C8000005300666A601A1A +S315E0629FD030126F00014E5380348060224201425259 +S315E0629FE013C10001659C600001363239000188E4E4 +S315E0629FF03012538175407341B2826F000126558FEC +S315E062A0003F004EBAFE5A588F340060000118301293 +S315E062A0106F0001105380601A755248790001659CA1 +S315E062A0204EB900E1C4A4588FB082630000F63012E4 +S315E062A03052803480600000EC3239000188E43012EC +S315E062A04053817D407341B2866E12220253813D4155 +S315E062A050FFFC5380340134807C01600242461D4439 +S315E062A060FFFF670000BE715241F90001663E558FFF +S315E062A0701030080048803F00486EFFFF4EBAFCC8C9 +S315E062A080508F4A4067261C2EFFFF558F3F390001ED +S315E062A09088E448863F063F1248790001659C4EB9DE +S315E062A0A000E2FD78301252803480606E4A4667087C +S315E062A0B03012528252803480301275422042D1FC94 +S315E062A0C0000165ED752EFFFF380060087C5FBC819C +S315E062A0D066025284121867067301B48166EE3239FB +S315E062A0E0000188E4754455817341B2826F3422047B +S315E062A0F092807341558F71402F013F3C002006806C +S315E062A1000001659C2F004EB900E00DE8420041F97E +S315E062A1100001659C1180280034844FEF000C4242B6 +S315E062A120600274012F39000188C82F39000188CC9A +S315E062A1304EBAF91E508F4A426672558F48790001CF +S315E062A140668F4879000165ED48790001659C3F3983 +S315E062A150000188DC4EB900E2A50E4FEF000E486EB4 +S315E062A160FFF6486EFFF83F124EBAFCC43F2EFFF888 +S315E062A1703F2EFFFC4EB900E2FE703F2EFFF63D40F9 +S315E062A180FFFC3F2EFFFA4EB900E2FE8C322EFFFC58 +S315E062A1904FEF001490814A406712558F3F003F01AE +S315E062A1A03F032F054EBAFA924FEF000C558F3F12DE +S315E062A1B04EBAF8B042573F003F032F054EBAFA7ADD +S315E062A1C04FEF000C4CEE0CFCFFD470014E5E4E7508 +S315E062A1D0322F0008716F000AC3FC0018D081D0AF3D +S315E062A1E000044E754E56FFD8302E000C48D71C043C +S315E062A1F048780018286E001E246E000E266E001A3D +S315E062A200C1FC0018D0AE00082F00486EFFE84EB9D8 +S315E062A21000E00EC4302EFFF04FEF000C396EFFFC0B +S315E062A2200004396EFFFE0006206EFFF4368002807F +S315E062A2300000010024884A4067022490206E0012E2 +S315E062A240720C30AEFFF2206E001671AEFFEF308018 +S315E062A2500680FFFFFFEC71C0B2806574303B0A088E +S315E062A26048C04EFB0802002C001A001A006A006A17 +S315E062A270002C0034002C006A001A001A006A006E94 +S315E062A28020523028001673400C81000000806E2850 +S315E062A290602C102A0001488060243213A94074FEC3 +S315E062A2A0C0814A4057C0488094802002A542C2825B +S315E062A2B04A41670A538060060680FFFFFF00206E10 +S315E062A2C00022308010124CEE1C04FFD84E5E4E75B2 +S315E062A2D0424060EA700160E64FEFFFBC48D71CFC83 +S315E062A2E0246F0048342F004C286F00503F6F0054B3 +S315E062A2F000343F6F0056002476017B6F004E7D6F1F +S315E062A3000058600234007142BA80670000943002FD +S315E062A3102E0353877F477943C1FC00183232081017 +S315E062A320264030377A34D0813F804A3432377A24D5 +S315E062A330A1473072B812D2883F814A24558F3F01D5 +S315E062A3403F003F022F0A4E943032B8024FEF000CC4 +S315E062A3507340BE8167163232B8080281000000801F +S315E062A3604A416608BC846D04528360987342280150 +S315E062A3702001E78CEB889084303208007940BA8419 +S315E062A380671E4A42671A2E042404E78FEB8A948793 +S315E062A39075722804B2826600FF6C5383340060CC27 +S315E062A3A04CD71CFC4FEF00444E754FEFFFF448D795 +S315E062A3B0001C342F0014206F0010673472FF6002B5 +S315E062A3C0340030027741A144C1FC00183030080005 +S315E062A3D0B883660232004A406D1A774075422803B6 +S315E062A3E0E78CEB8B968477703804B48366D260042C +S315E062A3F072FF70FF206F00164CD7001C4FEF000C07 +S315E062A40030814E754FEFFFDC48D73C3C266F003219 +S315E062A410280F246F002E068400000022262F0028D3 +S315E062A420342F002C425342524BF900E2A1D049F953 +S315E062A43000E2A3AA3A123F3C00103F022F034E9578 +S315E062A440548F20403010DA8034853228000230138F +S315E062A450D08136802E843F022F034E944FEF000C5C +S315E062A460A14134007140B28066CA4CD73C3C4FEFA2 +S315E062A47000244E753F3C00103F2F000A2F2F000844 +S315E062A4804EB900E2A1D0487800082F002F2F001ABB +S315E062A4904EB900E00EC44FEF00144E754FEFFFF277 +S315E062A4A048EF040C0002362F0016246F0018242FA2 +S315E062A4B00012486A00022F0A3F032F024EBAFF4695 +S315E062A4C03F3C00143F032F024EB900E2A1D0204088 +S315E062A4D0355000045488355000064CEF040C0018E1 +S315E062A4E04FEF00244E753F3C00103F2F000A2F2F9E +S315E062A4F000084EB900E2A1D0487800082F2F001676 +S315E062A5002F004EB900E00EC44FEF00144E754FEFC8 +S315E062A510FFE0724048D71C7C246F0026242F002A75 +S315E062A520266F002E7112B280660242122F0249F93C +S315E062A53000E1C4A4A3454E9442042F0A36004E9429 +S315E062A540508F734317841800796F0024BA846610BB +S315E062A5505381D7C1D481734045F218FF72FF60021E +S315E062A5607201C7C1C1C1734177437140D682D08A55 +S315E062A570602220427C5F18107B04BC8567041684E7 +S315E062A580600EB08A67061692D5C1600416BC005F9B +S315E062A590D7C1D481B68266DA4CD71C7C4FEF0020F5 +S315E062A5A04E754E56FFE02D6E0008FFE22F0A486EAA +S315E062A5B0FFEC2F2E000E246E00123D6E000CFFE6BD +S315E062A5C03D6E0016FFE83D6E0018FFEA4EB900E206 +S315E062A5D0FE52486EFFF44EB900E25EB62D6A0004A2 +S315E062A5E0FFFC486EFFE220524E904FEF0010246E61 +S315E062A5F0FFDC4E5E4E754E56FFBC48D70C7C362E5F +S315E062A600000C558F486EFFF4280E0684FFFFFFE2CA +S315E062A6102F04486EFFEE486EFFF0486EFFF2486E1A +S315E062A620FFEA3F03242E00082F024EB900E2A1E4BE +S315E062A6304FEF00201A00302EFFEE0280000000800D +S315E062A6404A4066000720A140B0AEFFEA67000716FF +S315E062A6503D6E000EFFE23D6E0010FFE44A790001B6 +S315E062A6604BFE67644A7900014BC2675C2C0E068634 +S315E062A670FFFFFFDA2F062F044EB900E2FE52302EBC +S315E062A680FFF2508F7210C0814A40670A558F3F3C95 +S315E062A690FFFD2F066018302EFFF46C06C1FC000346 +S315E062A6A06004C1FCFFFD558F3F00486EFFDA4EB98C +S315E062A6B000E2683C508F486EFFDA4EB900E25EDE39 +S315E062A6C0588F4A406700069E302EFFF0781C734032 +S315E062A6D0B8816700038E382EFFF471C02C0446867B +S315E062A6E07D46DC869D86C8867C013D46FFF63D4614 +S315E062A6F0FFFC7C1EBC806548A340E3A802806060E4 +S315E062A7000000673C4878001C2F2EFFEA2F390001D3 +S315E062A71088C44EB900E00EC44FEF000A486EFFF6F9 +S315E062A720486EFFF8486EFFFA486EFFFC486EFFFE21 +S315E062A7303F39000188DE4EB900E26A544FEF0018F5 +S315E062A74071EEFFF0721EB280650000DE736EFFF09E +S315E062A750A340E3A8220002810A10000066142200E8 +S315E062A76002814040000066480800001A66286000E0 +S315E062A77000B8558F486EFFF6486EFFF8486EFFFAEE +S315E062A780486EFFFC486EFFFE3F2EFFEC4EB900E2DC +S315E062A7906A544FEF0018716EFFF07C1ABC80661047 +S315E062A7A0424170013D41FFFA3D40FFFE3D41FFF807 +S315E062A7B04A6EFFF46732558F3F2EFFFE3F3C000143 +S315E062A7C042674EB900E25FCC5C8F3F2EFFF43F2ECC +S315E062A7D0FFE83F2EFFE63F2EFFE43F2EFFE24EB953 +S315E062A7E000E26C444FEF000C716EFFF07C19BC80A6 +S315E062A7F06736558F3F042C0E0686FFFFFFE245F96A +S315E062A80000E2683C2F064E922F063F2EFFFA3F2E5D +S315E062A810FFF84EB900E2686E4FEF000E2004448006 +S315E062A8203F002F064E92508F558F3F2EFFFC3F2EF4 +S315E062A830FFF63F3C00014EB900E25FCC302EFFF0FE +S315E062A840508F720A0680FFFFFFEB71C0B28065002F +S315E062A8500212303B0A0848C04EFB080200900090A4 +S315E062A86000D201E402060206005C02060016001649 +S315E062A87001422279000188CC41F90001659C1019F8 +S315E062A88010C066FA2279000188D041F9000165EDCF +S315E062A890101910C066FA558F48790001668F4879BB +S315E062A8A0000165ED48790001659C3F39000188DC6D +S315E062A8B04EBAFC5C4FEF0010716EFFF041F9000199 +S315E062A8C088E8721B23D0000188CCB280661E420300 +S315E062A8D07C02700313C50001668F13C300016690A4 +S315E062A8E033C6000188DC33C0000188D8558F3F0447 +S315E062A8F0240E0682FFFFFFE245F900E2683C4484EB +S315E062A9002F024E922F022F39000188CC3F39000187 +S315E062A91088D83F39000188DC4EB900E26A004FEF21 +S315E062A92000123F042F024E92508F60000136487843 +S315E062A930000E2F2EFFEA2F39000188C04EB900E0E3 +S315E062A9400EC44FEF000A42673239000188F03F39A0 +S315E062A950000188F82001E7883F3C00023F390001A8 +S315E062A96088F23F00717900014BC06C025E80E6803E +S315E062A9703F003F2EFFE43F2EFFE242A73F013F3911 +S315E062A980000188F63F39000188F42F39000188EC2E +S315E062A9904EB900E2626A4FEF0020600000C6487876 +S315E062A9A000222F2EFFEA2F39000188BC4EB900E063 +S315E062A9B00EC44879000188B24879000188AA322E2D +S315E062A9C0FFE23039000188AA3F39000188A8307970 +S315E062A9D0000188ACD08133C0000188AA302EFFE442 +S315E062A9E03F39000188A641F0080033C8000188AC0F +S315E062A9F03079000188B23F39000188A4D2882F39C4 +S315E062AA00000188A033C1000188B23239000188B4FE +S315E062AA102F390001889C2F39000188983F2EFFF27A +S315E062AA20D08133C0000188B44EB900E26AB8302EF4 +S315E062AA30FFF24FEF002872FEC0813D40FFF26022D6 +S315E062AA40302EFFF2558F3F003F002F2EFFEA486E11 +S315E062AA50FFE23F032F024EBAFB4A4FEF00143D403E +S315E062AA60FFF2716EFFF0761CB680670E7820B880D2 +S315E062AA7067087C1ABC806600008A2F2EFFEA2F39AF +S315E062AA8000014A384EB900E034EC508F3400677208 +S315E062AA90558F3F3C0001761A3F3C00023F3C000185 +S315E062AAA04EB900E25FCC323900014BA4302EFFE8AA +S315E062AAB0306EFFE4508F90817140322EFFE22000CB +S315E062AAC06A025280E28041F00800716EFFF0B68061 +S315E062AAD0661C3602302EFFE6C7F900014BA0908372 +S315E062AAE0714020006A025280E280D08160023001C9 +S315E062AAF03F023F083F003F3C00034EB900E2674039 +S315E062AB00508F302EFFF26700025C7810C0844A40B4 +S315E062AB10677C558F3F3C000147F900E25FCC45F91F +S315E062AB2000E26C443F3C000142674E935C8F302EFC +S315E062AB30FFE83F3C00015C803F00302EFFE65C8030 +S315E062AB403F00302EFFE457803F00302EFFE2578011 +S315E062AB503F004E924FEF000A42673F3C0001426778 +S315E062AB604E935C8F302EFFE83F3C000258803F00F8 +S315E062AB70302EFFE658803F00302EFFE455803F00DE +S315E062AB80302EFFE255803F004E924FEF000C302EA2 +S315E062AB90FFF46F12558F3F00486EFFE24EB900E256 +S315E062ABA0683C508F600644803D40FFF4302EFFF2F1 +S315E062ABB07C20C0864A406700008C4A6EFFF46700DC +S315E062ABC000843F2EFFFE45F900E266743F3C0019C1 +S315E062ABD04EB900E275FC302EFFF42200D2813E814E +S315E062ABE0322EFFE6D2803F01322EFFE4D081322E52 +S315E062ABF0FFE8D0813F003F2EFFE242673F3C000123 +S315E062AC003F3C00014E92302EFFF4322EFFE84FEFCA +S315E062AC10000E3400C5FC0003D2823F012200D281DD +S315E062AC203F01322EFFE23F2EFFE4D081322EFFE675 +S315E062AC30D0813F0042673F3C00013F3C00014E92BB +S315E062AC404FEF0010302EFFF2A941C0814A40673AC9 +S315E062AC50558F3F3C000176083F3C00023F3C0001D5 +S315E062AC604EB900E25FCC3F3C0001302EFFE233C3D7 +S315E062AC7000014A583F2EFFE454803F003F3C000308 +S315E062AC804EB900E267404FEF0010302EFFF2A54466 +S315E062AC90C0844A40675E558F42673F3C0002426726 +S315E062ACA04EB900E25FCC326EFFE4346EFFE8306E9E +S315E062ACB0FFE245F1A8FF3F0A346EFFE645F0A8FFE2 +S315E062ACC03F0A45F900E25FA63F093F084E92326EBF +S315E062ACD0FFE4306EFFE2366EFFE63F0947F0B8FF0B +S315E062ACE03F0B366EFFE843F1B8FF3F093F084E92ED +S315E062ACF04FEF0018302EFFF27C08C0864A4067327A +S315E062AD0042673F3C00194EB900E275FC3EAEFFE891 +S315E062AD103F2EFFE63F2EFFE43F2EFFE23F3C00047C +S315E062AD203F3C00023F3C00024EB900E266744FEFE0 +S315E062AD300010302EFFF2080000006728558F3F2E84 +S315E062AD40FFE83F2EFFE63F2EFFE43F2EFFE23F3C69 +S315E062AD5000073F3C00013F3C00034EB900E26674E7 +S315E062AD604FEF00104CEE0C7CFFBC4E5E4E754E56BD +S315E062AD70FFEC48D7001C362E000C558F486EFFFE5E +S315E062AD80242E0008A1443F032F024EB900E2A3AA93 +S315E062AD904FEF000C7340B8816718558F486EFFFA23 +S315E062ADA0486EFFFC3F002F024EBAF65A4FEF001094 +S315E062ADB0600A42403D40FFFA3D40FFFC4EB900E288 +S315E062ADC07734558F3F2E000E3F2EFFFA3F2EFFFC63 +S315E062ADD0487AF8243F2EFFFE3F032F024EB900E287 +S315E062ADE0A2D84EB900E2775E4FEF00144CEE001C3B +S315E062ADF0FFEC4E5E4E754FEFFFF048D7041C262FF0 +S315E062AE0000143F3C000245F900E2A1D03F2F001A50 +S315E062AE102F034E92508F796F001A204034107142A0 +S315E062AE20B88066046018340042673F022F034E9290 +S315E062AE30508F204030107340B88166EA600274FF3A +S315E062AE4030024CD7041C4FEF00104E754E56FFC0D1 +S315E062AE5048D73CFC342E000C260E0683FFFFFFEE3D +S315E062AE60282E00083A2E000E366E0010386E00125A +S315E062AE704A42662C42674267426742672F034EB98F +S315E062AE8000E035242C0E0686FFFFFFF64FEF000C3E +S315E062AE90424776FF45F900E2A1D04BFAFF5A601EBF +S315E062AEA0558F486EFFFE3F022F044EB900E2A3AA19 +S315E062AEB05C8F2E833F002F044EBAF5E260C6558F53 +S315E062AEC02F063F022F044EBAF5AC302EFFF6322E35 +S315E062AED0FFEE3F3C0008D0813D40FFF6302EFFF8A2 +S315E062AEE0322EFFF03F02D0812F043D40FFF84E92B2 +S315E062AEF020403D50FFEA2F063F0C3F0B4EB900E281 +S315E062AF00FDE44FEF001C4A40673E302EFFEA0280C6 +S315E062AF10000000804A4066303F3C0004A1433F02A5 +S315E062AF202F044E92508F204030107340B681673ABC +S315E062AF304A456736360253853D6EFFF6FFEE3D6E55 +S315E062AF40FFF8FFF0340060304A4767207143A14161 +S315E062AF50B28067183F023F032F044E95508FA1419E +S315E062AF6034007140B28066106002360230034CEE05 +S315E062AF703CFCFFC04E5E4E757E016000FF424FEFC5 +S315E062AF80FFE8A14148D70C3C382F0020342F00223D +S315E062AF90262F001C7144B280674A7142B2806744D0 +S315E062AFA0426745F900E2A1D0A1453F022F034E92E6 +S315E062AFB0204030843F3C00043F042F034E924FEF23 +S315E062AFC00010264030137340BA8166083F3C0002A7 +S315E062AFD03F04600442673F002F034E92508F204049 +S315E062AFE0308236824CD70C3C4FEF00184E754E5687 +S315E062AFF0FFE048D70C7C382E000C242E00084A4429 +S315E062B00067000086558F486EFFFE3F0445F900E211 +S315E062B010A1D07B442F024EB900E2A3AA3F3C0002D4 +S315E062B02036003F002F024E924FEF001426407D53CA +S315E062B030BA8666223F3C00043F032F024E92508F4F +S315E062B04020407350BC81660872FF3D41FFFE30814D +S315E062B05036AEFFFE60323F043F032F024EBAFD98E2 +S315E062B060426738003F002F024E92204030AEFFFE2C +S315E062B0703F3C00043F032F024E924FEF0018204000 +S315E062B0807350BA81660230844CEE0C7CFFE04E5E11 +S315E062B0904E754E56FFDC48D71C7C362E000C242EAD +S315E062B0A000083C2E000E4A43670000B4558F486E96 +S315E062B0B0FFFE3F0345F900E2A1D02F024EB900E25E +S315E062B0C0A3AA4FEF000A3F033A002F024EBAFF20CF +S315E062B0D03F3C00023F052F024E92284038144267F9 +S315E062B0E03F032F024E924FEF001826404A4666060D +S315E062B0F036843883604A7146A141B28067067C0134 +S315E062B100284060223F3C00043F052F024E92508F5A +S315E062B110204038106016426752863F042F024E92F4 +S315E062B120508F204038107146B9C06EEA42673F04DC +S315E062B1302F024EB900E2A1D0508F20403690308384 +S315E062B14030137B457340BA8166143F3C00043F008E +S315E062B1502F024EB900E2A1D0508F204030834CEEF0 +S315E062B1601C7CFFDC4E5E4E754E56FFD848D7007C9F +S315E062B170362E000C558F486EFFFA2A0E0685FFFFC3 +S315E062B180FFEC2F05486EFFFE486EFFFC486EFFF847 +S315E062B190486EFFF43F03382E000E242E00082F027D +S315E062B1A04EB900E2A1E473EEFFF871C44FEF0020FE +S315E062B1B0B081670000F0A140B0AEFFF4670000E640 +S315E062B1C03F3C000A3F032F024EB900E2A1D0508F06 +S315E062B1D0204030844A6E0010670000CA558F486E80 +S315E062B1E0FFEE7C182F053F032F024EBAF2184EB9D6 +S315E062B1F000E27734302EFFFA4FEF001022004681EC +S315E062B2007341D2819381C2803D41FFFA3001736E10 +S315E062B210FFFCBC81661C558F3F043F2EFFF82F2E44 +S315E062B220FFF42F053F032F024EBAF3784FEF001477 +S315E062B23060527A1FBA816754322EFFF8B3840804EB +S315E062B240000067483200306EFFF2558FC3FCFFFEA6 +S315E062B25041F018003F08306EFFF0D2883F01322E8F +S315E062B260FFEED2803F01322EFFECD0813F003F3CC1 +S315E062B27000073F3C00013F3C00034EB900E26674C2 +S315E062B2804FEF00104EB900E2775E6018558F3F2EA1 +S315E062B290FFEE3F2EFFEC3F032F024EBAF35A4FEF1B +S315E062B2A0000C60E04CEE007CFFD84E5E4E754FEFD0 +S315E062B2B0FFF448D7040C242F0010362F00143F3CCD +S315E062B2C0000845F900E2A1D03F032F024E92206FBB +S315E062B2D0001E224030913F3C000A3F032F024E920D +S315E062B2E04CEF040C00104FEF001C204030104E75FE +S315E062B2F02F02302F0008A3427340B4816D1071FCB7 +S315E062B30000B84C010800068000015DF0600AC1FCED +S315E062B31000B8068000018060241F4E7542004FEF40 +S315E062B320FFD448D73C3C260F068300000023282F33 +S315E062B330003042424BFAFFBA7BEF003449F900E053 +S315E062B3400EC447F900E1C4D41F40002B60323F02CD +S315E062B3504E95548F24404A84671C48780008486AB0 +S315E062B360000C2F034E942F032F044E934FEF0014DD +S315E062B3704A40660A601871EA001CBA806710528217 +S315E062B3807342717900014F48B0816EC295CA200A54 +S315E062B3904CD73C3C4FEF002C4E752F02558F4878C8 +S315E062B3A000083F3C0020242F001006820000000CBB +S315E062B3B02F024EB900E00DE84FEF000A3F3C002E47 +S315E062B3C02F022F2F00144EB900E2FA524FEF000C13 +S315E062B3D0241F4E752F0A2F02343900014EC03F02F8 +S315E062B3E04EBAFF0E548F24403542001C206A000894 +S315E062B3F0528233C200014EC030BC0001256F001498 +S315E062B40000182F2F00102F004EBAFF902F2F001436 +S315E062B4102F0A4EB900E03384302A001E4FEF001047 +S315E062B42072FE241F24B900014F5423CA00014F540F +S315E062B430C0813540001E200A245F4E752F0A226FB6 +S315E062B440000C246F000820516004224820504A888C +S315E062B45066F84292228A245F4E7500004FEFFFDC67 +S315E062B460206F002E48D73C7C246F002A34280004E3 +S315E062B47047F900E00EC477424A6F0028670000CAC7 +S315E062B4802F032F280006716A0036280A0684000018 +S315E062B4900038D0AA00322F004E93716A00362644F5 +S315E062B4A04FEF000C7214D7C07153B280676E7C188E +S315E062B4B0BC806768123C0019B28067601C3C001A67 +S315E062B4C0BC80667860562044D1C071507214B280F6 +S315E062B4D06618736B000671680006B0816624486878 +S315E062B4E000082F054E94508F60147C18BC8066125B +S315E062B4F0487800102F0B2F084E954FEF000C424212 +S315E062B500602C30280004A1467340BC81670806803F +S315E062B5100000001060027010D680601242432A0B6F +S315E062B52050854BF900E00EC449F900E2F932714305 +S315E062B530736A0036B2806F044A42668A302A0036FF +S315E062B540D4803542003660302F032F2A00322F280E +S315E062B55000064E934FEF000C322A00369282354156 +S315E062B560003667147141206A00322F004870380055 +S315E062B5702F084E934FEF000C4CD73C7C4FEF0024E4 +S315E062B5804E754FEFFFEC48D71C0C342F0018206F36 +S315E062B590001E246F001A2650671E302B003673FC9D +S315E062B5A0008092802001736800047140B0815CC0C3 +S315E062B5B0A3414880C081600A4A6B00365EC048801B +S315E062B5C0448077427340B283670649EB002E60049B +S315E062B5D049EB002A4A406770558F2F082F0B3F02CE +S315E062B5E04EBAFE7A4FEF000A42672F0A4EB900E280 +S315E062B5F03298508F24544A8A6768302A0014A341ED +S315E062B60080813540001428AA0004206A00044A8832 +S315E062B6106706216A000800084A4257C0558F2F2AFA +S315E062B62000102F0B488044803F004EBAFE30424005 +S315E062B6302F4A00244CEF1C0C000C3F4000284FEFD1 +S315E062B640002060FFFFFF7C54254800102F4C001C51 +S315E062B6502F4A00184CD71C0C4FEF001460FFFFFF17 +S315E062B6607CF84CD71C0C4FEF00144E75302F000659 +S315E062B670322F00082079000110C8D080C3EF0004A1 +S315E062B68073C171C0D28871F00800D0814E752F0304 +S315E062B69072102F02342F000C362F000E71C2B28068 +S315E062B6A0650000D0303B0A0848C04EFB080200281D +S315E062B6B0002200AE003C0044007A008600D000AE74 +S315E062B6C0004C004C003C005E005E004400A000A618 +S315E062B6D04282600000ACE58B20790001109C206814 +S315E062B6E0000A77C3203038006060428272037022BB +S315E062B6F0607042827204700E60683F0375C23F3CBE +S315E062B70000024EBAFF8A588F720960103F0375C213 +S315E062B7103F3C00034EBAFF78588F720CB2826604E1 +S315E062B7205880602650806022558F3F3C00043F3C43 +S315E062B7300005600A558F3F3C00043F3C00083F032A +S315E062B7404EBAFF2A508F2040201042826028428201 +S315E062B7507205600472084282700460067202701CAE +S315E062B7604282558F3F003F013F034EBAFF00508F42 +S315E062B77060044282A140D082241F261F4E75740C5B +S315E062B7807201701860DC206F0004A1412010B28063 +S315E062B790670AD0B9000110C820804E7542804E75A6 +S315E062B7A04FEFFFF048D70C0C362F0016342F0014FB +S315E062B7B047FAFEDC45FAFFD0600E3F0253823F0352 +S315E062B7C04E932E804E92588F4A426CEE4CD70C0CBA +S315E062B7D04FEF00104E753F2F00063F2F00064EBA20 +S315E062B7E0FEAE2E804EBAFFA0588F4A8056C0488081 +S315E062B7F044804E75206F000423C80001109C41E826 +S315E062B800000E23D0000110C84E754FEFFFF448D703 +S315E062B810001C3F3C00103F2F00162F2F00144EB93C +S315E062B82000E2A1D091C8508F2240321177917548DB +S315E062B830A54430037381B8826712183C0003B8826C +S315E062B8406722183C0001B88266126028754178501A +S315E062B850B8826608323900014BC0601EC3F9000146 +S315E062B8604BA0601675417819B882660832390001D4 +S315E062B8704B8C6006C3F900014BA475400C82000054 +S315E062B88000806F0820030680FFFFFF00D28032C18E +S315E062B89052887148A941B28066904CD7001C4FEF3E +S315E062B8A0000C4E75206F000423C80001109C2F28FF +S315E062B8B0000E4EB900E302244A7900018E6457C055 +S315E062B8C0588F488044804E752F2F00044EBAFF266B +S315E062B8D03F2F000E3F2F000E4EBAFDB4206F0014CC +S315E062B8E0508FA1412080B28056C0488044804E7518 +S315E062B8F02F2F00044EBAFEFE3F2F000E3F2F000EA2 +S315E062B9004EBAFD8C508FA141B280670A204020AFCB +S315E062B910000C70014E7542404E754FEFFFEC48D712 +S315E062B9203C042F2F00184EBAFECC588F20790001C6 +S315E062B93010C849FAFD5A47FAFED23428001445FA8D +S315E062B940FE46538260363F023F3C00014E944257C8 +S315E062B9502F002A404E9371AD0007508F7214B28069 +S315E062B9606718123C0019B2806710123C001BB28065 +S315E062B9706708486D000C4E92588F53824A426CC6F5 +S315E062B9804CD73C044FEF00144E754FEFFFD448D7C7 +S315E062B9907CFC2A2F0030226F003441F90001101C32 +S315E062B9A0101910C066FA48790001101C4EB900E21F +S315E062B9B0C2CE588F4A4067000230558F426723C530 +S315E062B9C00001109C48790001101C4EB900E2FF7E2E +S315E062B9D0508F36004A7900018E6466144879000118 +S315E062B9E010A43F3C00243F004EB900E2FFB0508F06 +S315E062B9F04A7900018E64660001CE3439000110C6D0 +S315E062BA003F0242674EB900E301F2588F23C000015C +S315E062BA1010C84A7900018E64660001AC42A74267AB +S315E062BA203F034EB900E2FFEC2F39000110C83F0236 +S315E062BA303F034EB900E2FFB04FEF00104A790001D2 +S315E062BA408E646600018224790001109C558F267906 +S315E062BA50000110C82C3C00E2B78635420012254B45 +S315E062BA60000E3F3C00043F3C000942674EBAFBFED3 +S315E062BA70342B0016508F2540000A2C4045F900E22F +S315E062BA80A1D053823802E58A605071C22046487678 +S315E062BA9008004E903F3C000A264042672F004E92D5 +S315E062BAA04FEF000C721020407150B28066283F3C26 +S315E062BAB0000642672F0B4E92508F721420407150EF +S315E062BAC0B28066123F3C000A42672F0B4E92508F5D +S315E062BAD0204030BC0020538459824A446CAC2079C1 +S315E062BAE0000110C82E3C00E2B68E45FAFCEA2C3C18 +S315E062BAF000E1C4A434280018538260703F022047F4 +S315E062BB003F3C00024E90588F3F0228003F3C0008BF +S315E062BB104E92588F4A40670A2C442A444DEE0018EA +S315E062BB2060029DCE3F023F3C00094E92588F4A40EA +S315E062BB30670C2644284447EB001A588C600297CB80 +S315E062BB404A8E670C2F1520464E90588F52803C8065 +S315E062BB504A8B670C2F1420464E90588F528036805F +S315E062BB603F0253823F3C000A4E92588F4A426C8CA7 +S315E062BB702679000110C845FAFC28342B001A3F3CAE +S315E062BB80000B53823F024E923F3C000C3F024E92C4 +S315E062BB903F3C000D3F024E923F3C000E302B001CB4 +S315E062BBA053803F004E923F3C000F302B001E538085 +S315E062BBB03F004E923F3C0010302B002053803F0006 +S315E062BBC04E924FEF0018558F3F03343900018E6471 +S315E062BBD04EB900E2FF9E588F4A42660C2F054EBA76 +S315E062BBE0FD3A588F7001600242404CD77CFC4FEFC1 +S315E062BBF0002C4E7571EF000441F900E4FDDC2F3054 +S315E062BC000C004EB900E01176588F2079000160C4CD +S315E062BC1022405280121910C166F62039000160C4D2 +S315E062BC204E750000226F0008202F00042040121992 +S315E062BC3010C166FA4E755C002F0A2F02246F000C63 +S315E062BC402F39000189002F0A4EB900E012FC487ACA +S315E062BC50FFE634007140487208004EBAFFC84FEF03 +S315E062BC6000104A4256C0241F245F488044804E75C5 +S315E062BC702F2F00042F39000189004EB900E012FC33 +S315E062BC80508F725C538071402040D1F90001890087 +S315E062BC907110B280660242102F390001890C4EB9EA +S315E062BCA000E2FF343EBC00102F39000189004EB934 +S315E062BCB000E2FF48508F4E754FEFFFEC48D73C04E9 +S315E062BCC02079000189004A88670000824A10677C11 +S315E062BCD0240824425282101266F8487900E4FD3460 +S315E062BCE02F0A47FAFF404E934BF900E3016A49F99E +S315E062BCF000E2FF662F390001890C4EB900E2FF349B +S315E062BD004FEF000A3F3C00102F39000189004EB91F +S315E062BD1000E2FF48508F602820790001890C41E8F3 +S315E062BD20001E2F082F024E932F39000189004E958F +S315E062BD30487900E4FD342F0A4E934E944FEF001497 +S315E062BD404A4066D44212103C0001600242404CD73F +S315E062BD503C044FEF00144E75226F0008202F00045A +S315E062BD602040121910C166FA4E752F0A4878008093 +S315E062BD702F3900018ADC2F2F001045F900E00EC44E +S315E062BD804E92487800802F39000189082F2F0020D3 +S315E062BD904E924FEF0018245F4E754EB900E2FF24D3 +S315E062BDA0206F0004558F220006810000004110C119 +S315E062BDB0528010FC003A10FC005C2F083F004EB93E +S315E062BDC000E3001E508F4E754FEFFFE848D73C0CFC +S315E062BDD0266F0020222F001C20417620101052810F +S315E062BDE07500B68267F24A006700010E224824496E +S315E062BDF01019672C71007220B2806724743AB4809D +S315E062BE0066EC162AFFFF558F48833F034EB900E181 +S315E062BE10C53A588F41EA00010680FFFFFFC0600223 +S315E062BE20420016804A10670000D0240B284845EB92 +S315E062BE3000010682000000094BF900E1C53A600C98 +S315E062BE404880558F3F004E95588F14C0204C101C89 +S315E062BE50672E73007620B6816726163C002AB68185 +S315E062BE60671E163C002EB6816716B48A66D26010EB +S315E062BE70742AB4806604703F6002702014C0600465 +S315E062BE80220B50817110B28A64E6762AB680660227 +S315E062BE9052887110722EB280664C240B06820000C4 +S315E062BEA0000B49E800014BF900E1C53A600C4880B5 +S315E062BEB0558F3F004E95588F14C0204C101C672654 +S315E062BEC073007620B681671E163C002AB681671635 +S315E062BED0B48A64DA6010722AB2806604703F6002E5 +S315E062BEE0702014C0600447EB000B7110B7CA64E6B9 +S315E062BEF0742AB480660252884CD73C0C20084FEF15 +S315E062BF0000184E754E56FFCC48D70C1C382E0008EA +S315E062BF102479000160CC6720204A421874012279B4 +S315E062BF20000160D8600410C052821019670C730079 +S315E062BF30762EB68166F06002424271FC00807742FC +S315E062BF409082714047F238002F002F39000189084C +S315E062BF502F0B4EB900E00EC44FEF000C4A44671C4B +S315E062BF6010134880D48042007542158028014872D9 +S315E062BF7038012F0B4EBAFDE2508F607E558F4878BE +S315E062BF8000204267240E0682FFFFFFE047F900E0E9 +S315E062BF900DE82F024E934FEF000A4878000B3F3CC4 +S315E062BFA00020486EFFE14E934FEF000A4878000B9F +S315E062BFB03F3C0020486EFFF14E9310124FEF000CAB +S315E062BFC067384201488047FAFE0052807140158127 +S315E062BFD008002F02486A00014E93508F20404A10B3 +S315E062BFE0670A486EFFF02F004E93508F1012720D63 +S315E062BFF048805280714015810800487800802F0A97 +S315E062C0002F39000189084EB900E00EC44FEF000CEB +S315E062C0104CEE0C1CFFCC4E5E4E75716F00082F0025 +S315E062C0202F3900018AE42F2F000C4EB900E00EC4CE +S315E062C0304FEF000C4E75716F00082F002F2F00082E +S315E062C0402F3900018AE44EB900E00EC44FEF000CCE +S315E062C0504E754EB900E031304EB900E031744EB9FA +S315E062C06000E03146558F3F3C00014EB900E2764230 +S315E062C070487900014B904EB900E25E324EB900E279 +S315E062C08078944EB900E2762C2F3900014D204EB9F4 +S315E062C09000E2777E4FEF000C4E752F39000185681E +S315E062C0A04EB900E2777E4EB900E031304EB900E03B +S315E062C0B031944EB900E031464EB900E2775C4EB952 +S315E062C0C000E2753C42574EB900E27642588F4E75B1 +S315E062C0D04FEFFFF048D7003C2A2F0014362F0018A6 +S315E062C0E0382F001A4A7900018AE0673648790001FA +S315E062C0F04B902439000185704EB900E25E322079B8 +S315E062C10000018AE820853F44001E3F43001C2F421F +S315E062C11000184CEF003C00044FEF001460FFFFFF95 +S315E062C120EC504CD7003C4FEF00104E752F0A2F02B1 +S315E062C130242F000C426745FAFF983F3C00012F022C +S315E062C1404E9242673F3C00022F024E924FEF001042 +S315E062C150241F245F4E752F02242F00082F024EB94A +S315E062C16000E1C4A4588F2042D1C060025388B488EB +S315E062C17062107110725CB2806708123C003AB2805B +S315E062C18066EA20085280241F4E754E56FFCC48D789 +S315E062C1901C7C2F2E000C486EFFEC4EB900E012FCC0 +S315E062C1A02A0E2C0E508F0685FFFFFFF624790001DA +S315E062C1B04F4C0686FFFFFFED280053844200794428 +S315E062C1C0424349F900E00EC447F900E1C4D41D8058 +S315E062C1D048F6600650C242431002141A4A436704A4 +S315E062C1E04A0267F052807180A341B2806528730289 +S315E062C1F0712EFFECB081661E2F042F0A2F054E9436 +S315E062C2002F062F054E934FEF00144A40660A4A0204 +S315E062C210670AD5C4600876014A0266BC95CA206E92 +S315E062C2200008208A4CEE1C7CFFCC4E5E4E754E5664 +S315E062C230FFEC48D7041C558F4267342E0008246E03 +S315E062C240000A4EB900E2BBF42F00486EFFFC4EBA1C +S315E062C250FF3A4FEF000C4AAEFFFC67643202703B76 +S315E062C2606018770052882D48FFFC783BB8836708F0 +S315E062C270206EFFFC101066EA53814A4166F24A007C +S315E062C2806612603C7700783BB883671014C0120090 +S315E062C29052AEFFFC206EFFFC101066E87101725C24 +S315E062C2A0B280670A783AB880670414FC005C2F2E85 +S315E062C2B0000E2F0A4EBAFAA2508F20025280600216 +S315E062C2C042404CEE041CFFEC4E5E4E755C004E56F0 +S315E062C2D0FFA448D70C3C262E000845FAFA7C2F3993 +S315E062C2E00001890C4EB900E2FF342F032F390001B9 +S315E062C2F08AEC4E922F39000160CC4EBAFE5A4FEF6D +S315E062C3000010B0B9000160CC56C444844A04664267 +S315E062C3102F00486EFFBE4E922F3900018AEC4EBA6C +S315E062C320FA7A4FEF000C2079000160CC4A280003CC +S315E062C330670E487AFF982F084EB900E1C4B6508F6F +S315E062C340486EFFBE2F39000160CC4EB900E1C4B63B +S315E062C350508F42422A0E0685FFFFFFBE47F900E292 +S315E062C360FF4845FAFECA558F3F3C00052F3900016A +S315E062C3708AEC4E9371F900018E66508FA741B280C6 +S315E062C38067184A7900018E64672E123C0012B28009 +S315E062C3906708123C0002B280661E558F2F052F3960 +S315E062C3A000018AEC3F024E924FEF000C34007001BE +S315E062C3B033C000018E64600242424A04660C4A79E6 +S315E062C3C000018E6467044A42669C4A7900018E6483 +S315E062C3D0660E2F3900018AEC2F034EBAF97C508F34 +S315E062C3E04A7900018E6457C04CEE0C3CFFA44E5E67 +S315E062C3F0488044804E7500004FEFFFF0AB4148D76E +S315E062C4000C0C346F0014362F0016342F0018714A64 +S315E062C410B2806630528233C20001890433C30001BE +S315E062C4208AF0487AFFD22F3900018ADC45FAF92A86 +S315E062C4304E92487AFFC22F39000189084E924FEF39 +S315E062C44000106072487800802F2F001E2F3900019D +S315E062C4508ADC47F900E00EC44E93487800802F2FBD +S315E062C460002E2F39000189084E934FEF00184A4299 +S315E062C4706F48207900014DA853824A4356C130285D +S315E062C480001C43F9000189104881C1FC005C4481CB +S315E062C4902040D1FC00018910338A080042403141D4 +S315E062C4A000083142000631400002487900018AF410 +S315E062C4B04EBAF8E8588F7001601C558F42674EBAE3 +S315E062C4C0FA442F3900018ADC4EBAFE04508F4A40A4 +S315E062C4D056C0488044804CD70C0C4FEF00104E7526 +S315E062C4E0207900014DA82F032F023428001C262F45 +S315E062C4F00010C5FC005C200206800001891A2F004C +S315E062C5002F2F00104EBAF852508F0682000189280A +S315E062C5102F4200102F43000C241F261F6000F83ABA +S315E062C5202F032F02207900014DA8262F00102F2F0E +S315E062C530000C3428001CC5FC005C20020680000169 +S315E062C540891A2F004EBAF812508F068200018928A6 +S315E062C5502F4300102F42000C241F261F6000F7FABB +S315E062C5602F02206F0008737900018AE03028000804 +S315E062C5707540B282671433C000018AE06706241F01 +S315E062C5806000FAD0241F6000FB12241F4E75424001 +S315E062C5902F0A246F0008354000044A6A0002675099 +S315E062C5A0720135400006712A0019354100083541AD +S315E062C5B00004723AB2806618102A0018558F4880D5 +S315E062C5C00680FFFFFFBF3F004EB900E30056588F7B +S315E062C5D0486A00184EB900E3000A486A000A2F3931 +S315E062C5E0000160D84EBAF7724FEF000C245F4E75C9 +S315E062C5F0713900018AF5723AB280661A1039000121 +S315E062C6008AF4558F48800680FFFFFFBF3F004EB930 +S315E062C61000E30056588F203C00018AF42F40000860 +S315E062C620245F60FF000039E6454D55434F4E0000FA +S315E062C6304FEFFFD448D77CFC207900014DA8745CAB +S315E062C64045FAF7167768001C2F3900014DB848792C +S315E062C65000018AF44C0328004E92508F41F90001A2 +S315E062C660891A28020684000189104A302800662E5B +S315E062C670558F3F3C00014EB900E2BBF42F00200229 +S315E062C68006800001891A2F004E92068200018928EF +S315E062C6902F39000160D42F024E924FEF0014725C84 +S315E062C6A042424C0138002E3C00E2C58E4DFAFEB2A3 +S315E062C6B02443D5FC0001891049EA000247EA0006F4 +S315E062C6C0588A2C032A0306860001891A0685000128 +S315E062C6D089282F0420474E9038BC00012F044E96DD +S315E062C6E0508F4A7900018AE0670C4EB900E2E64073 +S315E062C6F04EB900E2762C3013A541558FB3804A409D +S315E062C70057C0488044803F004EBAF7FA42674267B4 +S315E062C7102F3900018ADC4EBAF9B84FEF000C207966 +S315E062C72000014DA87168001C41F900018E4042B0DB +S315E062C7300C004A42671A3F3C000142A73F0275423B +S315E062C7404EB900E24F2C508F701CB0826700022A0D +S315E062C7504BF900E1C4D4243C00E24F2C4A526764B0 +S315E062C760558F3F3C00014EB900E2BBF42F002F39F2 +S315E062C77000018ADC4E954FEF000C4A4066462F393F +S315E062C78000018ADC4EBAF9A62F39000160D84EBAAA +S315E062C790F9C62F002F3900014DA84EB900E2B39ACF +S315E062C7A04FEF000A4297487AFC4E42A73F3C0005AB +S315E062C7B04EB900E012D8223C00E0354C20402141DF +S315E062C7C000086032487AFE622F3900018ADC4E95B3 +S315E062C7D0508F4A406648558F42A7487AFC1A42A76C +S315E062C7E03F3C00054EB900E012D82040203C00E014 +S315E062C7F035BC214000084FEF000A42A8001C42A85F +S315E062C800001442A8000C42972F0842A73F3C00065C +S315E062C8104EB900E030BE4FEF00106000012C2F39B8 +S315E062C82000018ADC4EBAFAA8588F4A40670000E8EF +S315E062C8302F3900018ADC4EBAF8F42F39000160D84C +S315E062C8404EBAF9142F002F3900014DA84EB900E215 +S315E062C850B39A30134FEF0010664E558F2F390001B1 +S315E062C8604F4C2F39000189082F3900018ADC426773 +S315E062C8704EB900E030BE4FEF00104A5267644A5448 +S315E062C8806760558F3F3C00014BFAF4CE4EB900E249 +S315E062C890BBF42F002F064E952F39000160D42F0589 +S315E062C8A04E954FEF0014603A7140A341B280663212 +S315E062C8B0558F2F3900014F4C2F39000189082F39E6 +S315E062C8C000018ADC42674EB900E030BE42404FEF7B +S315E062C8D0001041F9000189103180380033C000014F +S315E062C8E08E644A7900018E6467084A526708741C4E +S315E062C8F06006424260027421223900014DA8B2B953 +S315E062C90000014DAE6648487900014DAC4EB900E291 +S315E062C910449C588F60384A7900018AE0672E4A5211 +S315E062C920672A3F3C0001204242A73F3C00244E90EA +S315E062C930508FA3417140B2806700FE22424041F9C6 +S315E062C940000189103180380042426002741B20790E +S315E062C95000014DA87168001C41F900018E4042B0A9 +S315E062C9600C0041F9000189104A703800670A4A7979 +S315E062C970000189046700FD5C4CD77CFC4FEF002C1C +S315E062C9804E754EBAFCAC4A7900018AE067046000F3 +S315E062C990F70A4E754145533A2025733A2025730AC4 +S315E062C9A000004E56FFF4227900014DA8220E2F03B5 +S315E062C9B02F0243E9000C538141EEFFF7600610C097 +S315E062C9C0B288670A101976207500B68266F0421060 +S315E062C9D02F2E0008486EFFF7487AFFBA4EB900E09C +S315E062C9E038144FEF000C242EFFEC262EFFF04E5E3D +S315E062C9F04E756170706C5F696E697428290061704A +S315E062CA00706C5F6578697428290065766E745F6D0F +S315E062CA106573616728290065766E745F6D756C74FF +S315E062CA2069282900426164204145532066756E6338 +S315E062CA3074696F6E2025640A00004E56FFA448D7DB +S315E062CA400C3C362E0008246E000A71430C8000000E +S315E062CA5000C866000AE0487800082F12486EFFF8C0 +S315E062CA6047F900E00EC44E934FEF000C302EFFFA0A +S315E062CA706718D08002800000FFFE2F002F2A000890 +S315E062CA80486EFFBE4E934FEF000C302EFFFE671CE2 +S315E062CA90E58802800000FFFC2F002F2A0010486E16 +S315E062CAA0FFEC4EB900E00EC44FEF000C342EFFF8F7 +S315E062CAB07279266A000420020680FFFFFFF671C0E3 +S315E062CAC0B28065000A08303B0A0848C04EFB08029D +S315E062CAD000F401580158019201A001B601CC01E4CB +S315E062CAE009FC01EE02000210022C023C0260027CAA +S315E062CAF002E409FC09FC09FC02F6034203520388DC +S315E062CB0003C60418042C045E09FC09FC0478048E4E +S315E062CB1004A204C204E004FC0512054209FC09FC15 +S315E062CB200566057A058E05A205B205C405F809FC17 +S315E062CB3009FC09FC09FC09FC09FC09FC09FC09FC85 +S315E062CB4009FC09FC09FC09FC061E0640066A069019 +S315E062CB5006A206B406D006EC071E078207A007AE59 +S315E062CB6007BC09FC09FC09FC09FC09FC09FC09FC97 +S315E062CB7007C607C609FC09FC09FC09FC09FC09FCB5 +S315E062CB8009FC09FC07DC07F00804081208200836ED +S315E062CB90084C085E087008A208AC08BC08C808E041 +S315E062CBA008FC09FC09FC09FC09FC09FC09100922DC +S315E062CBB009460958096A097A098A099A09FC09FC47 +S315E062CBC009AC09D87401487AFE2A4EBAFDD636BC5B +S315E062CBD00120207900014DA8548F37420002376860 +S315E062CBE0001C0004486B000642674EB900E27DFA1B +S315E062CBF041F900014BA23750001441F900018B4A1A +S315E062CC00203C00014F5C2740001642403750001A34 +S315E062CC1041F900018B483750001C33C0000110CC4B +S315E062CC204EB900E22FAC606E558F3F2EFFBE2A2EC4 +S315E062CC30FFEC382EFFC0754242A74EB900E2B31C44 +S315E062CC40508F720BB2826606123C0010600272402E +S315E062CC502F053F042F003F014EB900E22FEA600044 +S315E062CC6004F82F2EFFEC4EB900E2305C600007D686 +S315E062CC703F2EFFC03F2EFFBE2F2EFFEC4EB900E2E5 +S315E062CC803090600007F4558F3F2EFFBE2F2EFFECEB +S315E062CC904EB900E23174508F6000086041EEFFBE2B +S315E062CCA033D000018B4A41EEFFC033D000018B489E +S315E062CCB0600008424EB900E033EA60000838487A1C +S315E062CCC0FD3E4EBAFCDE4EB900E232446000066CCE +S315E062CCD0558F42A73F3C00014EB900E2401860B66C +S315E062CCE0558F486EFFE03F2EFFC23F2EFFC03F2EBC +S315E062CCF0FFBE4EB900E24044600006CA486EFFE0FD +S315E062CD00486EFFBE4EB900E2407E608A487AFCFC1D +S315E062CD104EBAFC902F2EFFEC3F3C00102F390001FB +S315E062CD204DA83F3C00104EB900E22FEA6000053A9A +S315E062CD3071EEFFC073EEFFBE48404240204048704D +S315E062CD4018004EB900E240A2600005F0487AFCC9DC +S315E062CD504EBAFC50322EFFBE588F7020C0814A40D8 +S315E062CD60671271EEFFDC75EEFFDA48404240204022 +S315E062CD70D1C2600291C8302EFFC2342EFFC4558FF5 +S315E062CD80486EFFE02F2EFFECE188808275C071EE7F +S315E062CD90FFC04840424084802F022F08486EFFD091 +S315E062CDA0486EFFC63F014EB900E240C44FEF001C39 +S315E062CDB0600007483F2EFFC03F2EFFBE4EB900E23D +S315E062CDC043746000068020390001882820790001DA +S315E062CDD04DA8B1C067044A8066163F28001C3F2E04 +S315E062CDE0FFBE2F2EFFEC4EB900E297CE6000068AB8 +S315E062CDF03228001C4A6EFFBE6706202EFFEC6002F8 +S315E062CE004280734141F90001888421801C00600000 +S315E062CE1006E4558F426742673F2EFFC03F3C0004FF +S315E062CE20606E322EFFBE558F4267740F71C1E4A801 +S315E062CE30028100007FFF3F004A6EFFC057C0488014 +S315E062CE4044803F003F3C00083F012F2EFFEC4EB985 +S315E062CE5000E292E660000412207900014DA8716852 +S315E062CE60001C41F90001888420700C00B1F90001D0 +S315E062CE70885866000680558F3F3C00014A6EFFC0C7 +S315E062CE8057C03F3C0001488044803F003F3C000180 +S315E062CE903F2EFFBE60B4202EFFEC242EFFF04A6EDA +S315E062CEA0FFEC67223F3C000C3F2EFFBE2F004EB9DF +S315E062CEB000E2A1D0508F204022502042101812C0CA +S315E062CEC066FA6000063071C041F900018B3C717010 +S315E062CED00A0041F90001886022700C0020421018B5 +S315E062CEE012C066FA6000060E558F2F2EFFEC3F2EBB +S315E062CEF0FFBE4EB900E299266000FD9C716EFFBEF0 +S315E062CF00A141B2806618207900014DA87168001CC3 +S315E062CF1041F900018B3C41F00A003D50FFBE558F5E +S315E062CF203F2EFFBE4EB900E299D46000040E4A6E0F +S315E062CF30FFC0670A41EEFFBE33D000018B4630394F +S315E062CF4000018B46600005B43F2EFFC03F2EFFBE58 +S315E062CF502F2EFFEC4EB900E2AF7E6000051C558FC6 +S315E062CF603F2EFFBE2F2EFFEC4EB900E2AFEE600021 +S315E062CF700508486EFFC24EB900E25E323F2EFFC040 +S315E062CF803F2EFFBE2F2EFFEC4EB900E2AD6E600083 +S315E062CF9001C83F2EFFC43F2EFFC23F2EFFC03F2E89 +S315E062CFA0FFBE2F2EFFEC4EB900E2AE4C60000416D7 +S315E062CFB0558F486EFFE2486EFFE03F2EFFBE2F2E92 +S315E062CFC0FFEC4EB900E2A4046000029E3F2EFFC071 +S315E062CFD03F2EFFBE2F2EFFEC4EB900E2B09260000C +S315E062CFE00498487900014BA84EB900E25E323EAE43 +S315E062CFF0FFC4486EFFE03F2EFFC03D6EFFC2FFE01A +S315E062D0003F2EFFBE2F2EFFEC4EB900E29E8A6000F5 +S315E062D01003FE486EFFC24EB900E25E323EAEFFCC20 +S315E062D0203F2EFFCA3F2EFFBE2F2EFFEC4EB900E227 +S315E062D030B16860000124558F3F2EFFBE2F2EFFECB4 +S315E062D0404EB900E24D5A6000FC4E558F486EFFC8FD +S315E062D0503F2EFFBE4EB900E24EEC6000FC3A558FC1 +S315E062D0602F2EFFEC3F2EFFBE4EB900E2458A6000EE +S315E062D070FC26558F3F2EFFBE4EB900E24FD66000CA +S315E062D08003C4486EFFE02F2EFFEC4EB900E29B022E +S315E062D090600003E6487900014BA84EB900E25E32D1 +S315E062D0A0548F486EFFE0486EFFE23F2EFFBE3D6E54 +S315E062D0B0FFC0FFE23D6EFFC2FFE02F2EFFEC4EB9EE +S315E062D0C000E24AE460000348487900014BA84EB9A1 +S315E062D0D000E25E32486EFFE03F2EFFC03F2EFFBEAB +S315E062D0E02F2EFFEC4EB900E24B9A60000322486EA7 +S315E062D0F0FFE2486EFFE03F2EFFC43F2EFFC23F2EA7 +S315E062D100FFC03F2EFFBE4EB900E270806000015A5A +S315E062D110486EFFE2486EFFE0486EFFC63F2EFFC4F0 +S315E062D1203F2EFFC23F2EFFC03F2EFFBE4EB900E24A +S315E062D13070A84FEF0014600003BC3F2EFFC83F2E7D +S315E062D140FFC63F2EFFC43F2EFFC23F2EFFC03F2EDB +S315E062D150FFBE4EB900E272244FEF000C6000039608 +S315E062D160486EFFC6486EFFBE4EB900E272C460000A +S315E062D1700308486EFFC6486EFFBE4EB900E27340D2 +S315E062D180600002F6558F3F2EFFC43F2EFFC23F2E50 +S315E062D190FFC02F2EFFEC4EB900E273C2600002269A +S315E062D1A0558F3F2EFFC23F2EFFC03F2EFFBE2F2E72 +S315E062D1B0FFEC4EB900E274546000020A41F90001E4 +S315E062D1C04BA03D50FFE041F900014BA43D50FFE228 +S315E062D1D041F900014B5C3D50FFE441F900014A3EF2 +S315E062D1E03D50FFE6303900014BF86000030E302E09 +S315E062D1F0FFBE73400C81000000FF6F260C810000C9 +S315E062D200010066064EB900E27734716EFFBE0C80AD +S315E062D21000000101660002DE4EB900E2775E600060 +S315E062D22002D40C81000000FF67185680714022002C +S315E062D230D281E9889081068000E4FE702040201069 +S315E062D2406004202EFFEC2F004EB900E2777E60008C +S315E062D25000EA486EFFE6486EFFE4486EFFE2486E1B +S315E062D260FFE04EB900E275104FEF001060000286F3 +S315E062D2702F2EFFEC4EB900E2BC38600001C82F2EBB +S315E062D280FFEC4EB900E2BC70600001BA4EB900E252 +S315E062D290BCB860000266486EFFE02F2EFFF02F2ECC +S315E062D2A0FFEC4EB900E253466000011A558F486EB4 +S315E062D2B0FFC03F2EFFBE4EB900E2E8106000F9D82B +S315E062D2C0558F486EFFC03F2EFFBE4EB900E2F410A6 +S315E062D2D0600001A6558F3F2EFFBE4EB900E2F3FC19 +S315E062D2E06058558F3F2EFFBE4EB900E2E886604A2F +S315E062D2F0486EFFE03F2EFFC03F2EFFBE4EB900E212 +S315E062D300E90060000174486EFFC23F2EFFC03F2E07 +S315E062D310FFBE4EB900E2EFB46000015E3F2EFFC091 +S315E062D3203F2EFFBE4EB900E2EA4060000118558F1B +S315E062D3303F2EFFBE4EB900E2EA60588F600001B64A +S315E062D340486EFFE6486EFFE4486EFFE2486EFFE035 +S315E062D3503F2EFFC83F2EFFC63F2EFFC43F2EFFC2C1 +S315E062D3603F2EFFC03F2EFFBE4EB900E2EABC600030 +S315E062D37001324EB900E2F4246000017A2F2EFFEC0E +S315E062D3802F0B4EB900E2B98A6000F90C2F0B4EB949 +S315E062D39000E2B8A4600000AE4879000110D03F2EEA +S315E062D3A0FFC03F2EFFBE2F0B4EB900E2B8C8601435 +S315E062D3B02F2EFFEC3F2EFFC03F2EFFBE2F0B4EB946 +S315E062D3C000E2B8F04FEF000C60000130558F3F2E5F +S315E062D3D0FFBE2F2EFFEC4EB900E2B80A6000009A5B +S315E062D3E02F2EFFF02F2EFFEC4EB900E2BD6A6000F1 +S315E062D3F00088558F2F2EFFF02F2EFFEC3F2EFFC2B7 +S315E062D4003F2EFFC03F2EFFBE4EB900E2C3F84FEF9C +S315E062D4100010600000E6558F3F2EFFBE2F2EFFEC18 +S315E062D4204EB900E2C01A6050558F3F2EFFBE2F2ED6 +S315E062D430FFEC4EB900E2C036603E2F2EFFEC4EB9ED +S315E062D44000E2C2CE588F600000B22F2EFFF02F2E80 +S315E062D450FFEC4EB900E2C18A601E2F2EFFF02F2E3E +S315E062D460FFEC4EB900E2C4E0600E2F2EFFF02F2EE5 +S315E062D470FFEC4EB900E2C520508F6078486EFFE857 +S315E062D480486EFFE6486EFFE4486EFFE2486EFFE0F4 +S315E062D490486EFFC23F2EFFC03F2EFFBE4EB900E28E +S315E062D4A06F504FEF001C604C558F3F2EFFC63F2EEC +S315E062D4B0FFC23F2EFFC0486EFFC83F2EFFBE3F2E23 +S315E062D4C0FFC44EB900E271726000FD9E558F3F0265 +S315E062D4D0487AF5524EB900E03814508F4A426718DE +S315E062D4E03F3C000142A73F3C00234EB900E24F2C8D +S315E062D4F0508F60047001600270FF3D40FFDE302EA7 +S315E062D500FFFC671CD08002800000FFFE2F00486EA1 +S315E062D510FFDE2F2A000C4EB900E00EC44FEF000C7E +S315E062D52071EEFFF87270B280660A206A001420B962 +S315E062D530000110D03039000110CCAF422200528196 +S315E062D540C08233C1000110CC4A40670A77430C833C +S315E062D550000000C966064EB900E033EA4CEE0C3CC8 +S315E062D560FFA442404E5E4E75302F0004206F0006E7 +S315E062D5703200C3FC0018D1C141E8FFEC601472FFCF +S315E062D58030BCFFFF53803141FFFE3141FFFC41E891 +S315E062D590FFE84A4066E84E752F032F02322F0010ED +S315E062D5A0302F0012A143226F000C7541B682673AB2 +S315E062D5B07540B68267342602E78BEB8A94833381C1 +S315E062D5C02800C3FC0018A14241F118007368000408 +S315E062D5D0B481660631400002600C2401E78AEB8979 +S315E062D5E092823380180031400004241F261F4E7554 +S315E062D5F0716F00082200ED88E7892040700191C1D1 +S315E062D600D1FC00014F5C216F00041934316F000ACE +S315E062D61019383140193242003140195C3140195AA9 +S315E062D62070FF314019603140195E4E7571EF00044A +S315E062D630A941B2806558323B0A0C716F000648C157 +S315E062D6404EFB1802003A000A001A002A000A22007B +S315E062D650E789EB889081068000018B904E75220007 +S315E062D660E789ED8890810680000168AE4E752200FA +S315E062D670E789ED8890810680000168A64E752200F2 +S315E062D680E789ED88908106800001689E4E7542804A +S315E062D6904E752F0A2F02342F000C246F00103F2F95 +S315E062D6A0000E3F0275424EBAFF842E8A2F004EB9B3 +S315E062D6B000E2FE52508FA940B0826618322A000418 +S315E062D6C06712302A0006670C5481548035410004A3 +S315E062D6D035400006241F245F4E752F02242F000C6E +S315E062D6E03F2F000A3F2F000A4EBAFF42588F2F4261 +S315E062D6F000082F40000C241F60FF000027582F020D +S315E062D700223C00018C78326F000A20417149240084 +S315E062D710E78AEB889082D1C070FF316F000C00100F +S315E062D720316F000E0012316F00100014316F00127B +S315E062D730001631400004314000023F6F0008000CE1 +S315E062D7403F49000E2F410008241F6000FE4C4FEF58 +S315E062D750FFEC48D7043C302F001A322F001C362FDC +S315E062D760001E382F0020306F0022326F0024342FE3 +S315E062D77000263A2F00284A6F001867183F450022B4 +S315E062D78041F900014B5C3F5000203F44001E3F439D +S315E062D790001C601645F900014A3E3F5200223F42B4 +S315E062D7A000203F49001E3F48001C3F41001A3F40AF +S315E062D7B000184CD7043C4FEF00146000FF424FEF75 +S315E062D7C0FFD4A14148D73C7C362F00303A2F003651 +S315E062D7D03C2F0038282F0032242F003A7143B28062 +S315E062D7E0670000884A8267122F02487900014BA8D7 +S315E062D7F04EB900E2F9B2508F6006243C00014BA8B4 +S315E062D80077434BF900E2F9B249F900E25E3247F951 +S315E062D81000E2AD6E2003E788ED8B96800683000119 +S315E062D82068BE2043260F245006830000002460363B +S315E062D8303F6A000400243F6A000600263F6A000849 +S315E062D84000283F6A000A002A2F032F024E95508F66 +S315E062D8504A4067102F034E943F063F052F044E93CE +S315E062D8604FEF000C24524A8A66C64CD73C7C4FEF97 +S315E062D870002C4E754E56FFF82F02242E0008486E95 +S315E062D880FFF82F024EB900E2FE52508F20390001B6 +S315E062D8908C60670C323900018B68307C0008600A64 +S315E062D8A0424191C8203900018C74558F2F023F089E +S315E062D8B0326EFFFC3F0154893D49FFFC326EFFFE4A +S315E062D8C02F00426754893D49FFFE4EBAFEF24FEFA2 +S315E062D8D00010242EFFF44E5E4E754FEFFFE4302FBC +S315E062D8E0002648D704FC3C2F0020362F00223E2F2C +S315E062D8F00024342F0028A1442A2F002A246F002E08 +S315E062D9007340B8816720558F3F3C03E83F033F0091 +S315E062D9104EB900E1C6303F003F024EB900E2FE8CEE +S315E062D9204FEF000C3400558F3F3C03E896823F0789 +S315E062D9303F034EB900E1C630508F4A46671E3F420A +S315E062D940002A41F900014B5C3F5000283F40002627 +S315E062D95042402F4500203F400024601C424141F98D +S315E062D96000014A3E3F50002A3F4200283F400024E1 +S315E062D9702F4A00203F4100264CD704FC4FEF001CA3 +S315E062D98060FFFFFD5BA24FEFFFC848D77CFC3A2FF2 +S315E062D9900040302F003E7409322F00423E2F003C99 +S315E062D9A0306F0046362F004A382F004CBB823F402C +S315E062D9B00032302F00443F410034322F00484A4261 +S315E062D9C057C23F400036488244824A426722303C30 +S315E062D9D00080387900014A3E7C0C3C7C000B347C4A +S315E062D9E0000A3A7C0100367C00403F40003060200D +S315E062D9F0303C0400387900014B5C7C113C7C0010C1 +S315E062DA00347C000F3A7C0800367C02003F400030EE +S315E062DA103F043F033F013F083F013F083F053F3C6C +S315E062DA2000063F024EBAFD284FEF00124A6F0032FF +S315E062DA306700012E200BC0874A4067463F390001E6 +S315E062DA404A3E3F3900014B5C426742673F0A3F0507 +S315E062DA504EBAFCAC4FEF000C4A4267123039000115 +S315E062DA604A3EA34192802640D881538B6016303974 +S315E062DA7000014B5CA34197CB92802440D681538AC6 +S315E062DA80600497CB95CA302F0030C0874A40673E24 +S315E062DA90323900014A3E303900014B5CA349A34862 +S315E062DAA03F0193C0D3C3360943F1A8FF91C1D1C404 +S315E062DAB0380841F0B8FF3F003F0B3F093F083F0A95 +S315E062DAC03F0E3F053F024EBAFC864FEF0012200D35 +S315E062DAD0CE804A476700008A3F043F033F0B3F0A16 +S315E062DAE03F0B3F0A3F063F053F024EBAFC624FEFED +S315E062DAF000124A4267023604558F487900018E3831 +S315E062DB00487900018DC03F0C3F2F00423F2F004213 +S315E062DB103F033F024EBAFDC44FEF00144A42670428 +S315E062DB20700D6002701273402401EB89E78A20412E +S315E062DB3072FF91C2D1FC00018C783141000431411F +S315E062DB4000023F4600404CD77CFC3F400042203C0E +S315E062DB5000018C782F40003C4FEF00386000FA3AC3 +S315E062DB604CD77CFC4FEF00384E75323900018B7C26 +S315E062DB702F02A1427141B48056C0241F4880C08101 +S315E062DB804E75518F2F032F024EBAFFE0240F50825B +S315E062DB902F023F0036003F3C00034EBAFAF671436D +S315E062DBA0508F2200E789ED889081068000016890B7 +S315E062DBB020402010670C2F022F004EB900E2366A31 +S315E062DBC0508F241F261F508F4E754FEFFFD4A14012 +S315E062DBD048D71CFC3C2F00307B46B085670003B615 +S315E062DBE0303900018B7C2205ED89BD8024414A40B3 +S315E062DBF057C32005E788488395C0D5FC00014F5C92 +S315E062DC00342A1938487900018C783F3C0013448302 +S315E062DC104EBAF95670025C8F720841EA193A23D01D +S315E062DC2000018C4441EA193E23D000018B4C33C09B +S315E062DC3000018C54302A1932C0814A4067267179D4 +S315E062DC4000018B7C2200E789ED88908106800001E5 +S315E062DC50688E204072083010C0814A4056C44884BB +S315E062DC604484600242442E0F0687000000242F0798 +S315E062DC703F063F3C00014EBAFA1A487900018C88A9 +S315E062DC802F074EB900E2FE5242403F4000363F4027 +S315E062DC900034AF40C0824FEF00104A406700011E79 +S315E062DCA03F3900014A3E3F2F002A426742673F3CC6 +S315E062DCB0000142674EBAFA48346F00344FEF000C07 +S315E062DCC0A540C0824A40673E4A4366044A44673694 +S315E062DCD03F3900014A3E3F3900014B5C3F2F002A43 +S315E062DCE03F2F002A3F3C00023F3C00014EBAFA1049 +S315E062DCF0322F0030303900014B5CD2803F41003038 +S315E062DD0095C04FEF000CA940C0824A4067384A434B +S315E062DD1066044A4467303F3900014A3E32390001BF +S315E062DD204B5C200A3F01908134403F2F002A322F1C +S315E062DD30002AD0813F003F3C00043F3C00014EBADE +S315E062DD40F9BE4FEF000C08020000674C3F39000154 +S315E062DD504A3E3F0A3F2F002A3F2F002A3F3C0003FC +S315E062DD603F3C00014EBAF9984FEF000C4A43660415 +S315E062DD704A44670442406002700833C000018CCABC +S315E062DD80303C11004A43670A103CFFA14A446702ED +S315E062DD90420033C000018C56307900014A3E326F50 +S315E062DDA00026302F002A424143F188FF5280908854 +S315E062DDB03F4100243F40002A3F4900267010C0825E +S315E062DDC04A40673C3F3900014A3E3F2F002A3F2FD7 +S315E062DDD0002A42673F3C000542674EBAF922326F3B +S315E062DDE00032307900014A3E302F003643F188FF37 +S315E062DDF0528090883F4000363F4900324FEF000C38 +S315E062DE003F2F002A2E022C020287000001E00286E2 +S315E062DE1000000E203F2F002A3F2F002A3F2F002AC4 +S315E062DE203F3C000642674EBAF8D6322F0034302FB6 +S315E062DE300036558155803F4100343F4000364FEF12 +S315E062DE40000C4A47670E307900014B5C928852813A +S315E062DE503F4100284A46670E323900014A3E9081C8 +S315E062DE6052803F40002A70013F4000263F40002436 +S315E062DE703F2F002A3F2F002A3F003F003F3C00072A +S315E062DE803F3C00064EBAF8784FEF000C4A47675CB3 +S315E062DE90302F0028322F0024386F002A2640548B18 +S315E062DEA0D28034413F41002420052205ED89E7888E +S315E062DEB0548C204191C0D1FC00014F5C32681960FC +S315E062DEC03228195C4A436604300460027001558F59 +S315E062DED03F0C3F0B42673F0A3F093F013F3C000967 +S315E062DEE03F003F024EBAFAA04FEF00144A4667542B +S315E062DEF0302F002A322F0026366F0028D280344136 +S315E062DF003F41002622055480E789ED8D548B2045FA +S315E062DF1091C1D1FC00014F5C3268195E3228195A10 +S315E062DF204A4367027801558F3F003F0B3F0A4267DB +S315E062DF303F093F013F3C000E3F043F024EBAFA48BA +S315E062DF404FEF00144A47674C4A4667483F3900013B +S315E062DF504A3E3F3900014B5C3F2F002A3F2F002AA1 +S315E062DF603F3C00083F3C00064EBAF7944FEF000C88 +S315E062DF70203C000111004A4367147020C480203CB3 +S315E062DF80060111004A426606203C0001110023C0E8 +S315E062DF9000018D444CD71CFC4FEF002C4E754E565B +S315E062DFA0FFF8200E51802F02342E00084A6E000ED2 +S315E062DFB067102F003F023F3C00044EBAF6D6508F00 +S315E062DFC0601E2F004EB900E25EB6302EFFFC588F1F +S315E062DFD054803D40FFFC302EFFFE54803D40FFFE04 +S315E062DFE0558F3F024EBAFBE4548F486EFFF83F2EE0 +S315E062DFF0000C3F2E000A2F3900018C643F024EBAB4 +S315E062E000F7BE4FEF0010242EFFF44E5E4E754FEFD3 +S315E062E010FFD8A54148D73CFC362F00323A2F002C78 +S315E062E0203C2F002E3E2F00307143B28067064A4392 +S315E062E030660000847945343900018B8247FAFF60D5 +S315E062E04045F900018B8022042004E789ED889081FE +S315E062E050068000014F5C2A4028404BED193449ECBA +S315E062E0601932604E7342B881673A2001E788ED89DA +S315E062E070204191C02015D1FC00014F5CB0A8193453 +S315E062E0806622302819327208C0814A406716301417 +S315E062E090C0814A40670E3F3C00013F073F063F02B0 +S315E062E0A04E93508F75422002E788EB8A9480343231 +S315E062E0B028004A426EAE3F4300323F4700303F4659 +S315E062E0C0002E3F45002C4CD73CFC4FEF0028600009 +S315E062E0D0FECE4FEFFFF4326F0012306F001048D77A +S315E062E0E0040CA743222F001475497148B682661A5A +S315E062E0F02400E78AED8823C100018C449082068081 +S315E062E100000168962440248160182400E78AED883D +S315E062E11023C100018B4C908206800001689A2440FC +S315E062E1202481760870013F4900123F4800103F4360 +S315E062E13000143F4000164CD7040C4FEF000C600011 +S315E062E140FECE206F0004202F000A424130AF000865 +S315E062E150227900014DA83169001C000231410004B8 +S315E062E160123C0010316F000E0006316F001000089D +S315E062E170316F0012000A316F0014000C316F001625 +S315E062E180000E3F41000A2F40000670402F48000C07 +S315E062E1903F40000460FFFFFF4E544FEFFFF448D765 +S315E062E1A01C00206F0010246F00144A88673434A87C +S315E062E1B00004356800060002356800080004356828 +S315E062E1C0000A0006265049F900E2F932600C2F0A8D +S315E062E1D0486B00044E942653508F4A8B66F070016A +S315E062E1E0600242404CD71C004FEF000C4E754FEF79 +S315E062E1F0FFD848D70C3C362F002C280F0684000047 +S315E062E200002047F900E2F9B271432200E789ED881E +S315E062E210244095C1D5FC00014F5C2A2A19342F04AB +S315E062E2202F2F00324EB900E2FE52240F0682000022 +S315E062E23000202F023F033F3C00034EBAF4562F0202 +S315E062E2402F044E934FEF00184A4067422F022F2A5F +S315E062E25019624EBAFF46508F4A4067322F042F0248 +S315E062E2604E93508F4A4067263F2F00263F2F002667 +S315E062E2703F2F00263F2F00263F032F053F3C001429 +S315E062E280487900018B6C4EBAFEBA4FEF00144CD758 +S315E062E2900C3C4FEF00284E752F0A2F02206F000CC0 +S315E062E2A0246F001075502F08487900014BA84EB9CB +S315E062E2B000E2F9B2508FA140B08266143012528009 +S315E062E2C03480302A000453803540000470016002D5 +S315E062E2D04240241F245F4E754E56FFD448D70C7CCD +S315E062E2E0342E0008486EFFF847FAF3A8246E000A57 +S315E062E2F03F023F3C00024E93302EFFFC486EFFF039 +S315E062E3003F0254803D40FFFC302EFFFE3F3C00045E +S315E062E31054803D40FFFE4E93302EFFF8322EFFFCD6 +S315E062E320777900014BC04FEF0010D2807341B28320 +S315E062E3306F0A736EFFF07140B0816E20302EFFFA85 +S315E062E340322EFFFE777900014B8CD2807341B28325 +S315E062E3506F1E736EFFF27140B0816F14486EFFF00C +S315E062E360486EFFF84EB900E2F9324252508F6002CF +S315E062E3703482280E0684FFFFFFF02F04260E5183B7 +S315E062E3802F0347FAFF144E932F032F043A004E935E +S315E062E39073524FEF00103C007142B081660000821A +S315E062E3A0487900014BA84EB900E25E323EAEFFFE0E +S315E062E3B03F2EFFFC3F2EFFF23F2EFFF03F2EFFFA8D +S315E062E3C03F2EFFF83F3C00034EB900E263C6734559 +S315E062E3D071464FEF0010B08167484A46670A302EB1 +S315E062E3E0FFF853803D40FFF8260E51834A45673277 +S315E062E3F0302EFFF0486EFFF053803D40FFF0700133 +S315E062E4003D40FFF44EB900E25E32426742674267E0 +S315E062E4103F3900018B7C4EBAFBF64FEF000C60028F +S315E062E42026042F2E000E2F034EB900E2FE52301262 +S315E062E430508FB1824A4257C04CEE0C7CFFD44E5E9E +S315E062E440488044804E754FEFFFD448D77CFC3C6FE2 +S315E062E4500038362F0030282F0032342F00363C2F1A +S315E062E460003A2F04487900014BA84EB900E2F9B2AE +S315E062E4704EB900E27734508F4A4366063639000178 +S315E062E4808B827143A141B280677C4A42660C343921 +S315E062E49000018B846004340060167F434BF900E22E +S315E062E4A05E3249FAFAFA47FAFD4645F900018B808F +S315E062E4B03A0E670C7342717900018B7CB081671A00 +S315E062E4C02F044E953F063F3C000842673F024E945A +S315E062E4D05C8F2E843F024E93508F7342B287671EE3 +S315E062E4E0300322416002300873402A01E78DEB89EE +S315E062E4F09285307218007348B3C166EA60023002F0 +S315E062E5007542B48766904CD77CFC4FEF002C60FF77 +S315E062E510FFFF924E2F02342F000841F900018884F2 +S315E062E52071424AB00C0066044240600230027340B7 +S315E062E53041F90001888422301C00B2B90001885892 +S315E062E54067103F003F3C00012F014EB900E297CED3 +S315E062E550508F714241F900018E404AB00C0066026A +S315E062E5604242754241F900018E4020302C00B0B93A +S315E062E57000018C60672241F900018C6841F02A0053 +S315E062E58023C000018C6033D000018B6848790001BA +S315E062E5904B904EBAF2E0588F241F4E754EBAF5CCC8 +S315E062E5A0558F71402200E789ED88908106800001EF +S315E062E5B06890224020513F28001C4EBAFF58588F7F +S315E062E5C04E754FEFFFEC716F001848D73C04266F2B +S315E062E5D0001A242F001E2200E789ED88246F0022AC +S315E062E5E04BF900E2F9B2284099C1D9FC000168C250 +S315E062E5F0603634AB0004356B00060002356B00080A +S315E062E6000004356B000A00062653288B2F0A2F0278 +S315E062E6104E95508F4A4067102F0A487900014BA801 +S315E062E6204E95508F4A40660E4A8B66C642403540EA +S315E062E6300006354000044CD73C044FEF00144E759B +S315E062E6404FEFFFF448D7040C243900014DA84EB9C8 +S315E062E65000E2F4A8558F487800C042674879000125 +S315E062E6608B804EB900E00DE85C8F2EBC00018B809A +S315E062E6703F3C00084EBAEEF2508F41F90001688ED7 +S315E062E68043F900018B86425032BC001942A8003041 +S315E062E69041E8003843E90018B1FC00016A4E66E6DB +S315E062E6A03F3C000C701445F900E4FD66426733C0F6 +S315E062E6B000018B862F39000185704EB900E2A1D048 +S315E062E6C05C8F204023D000018B8C487801C842677A +S315E062E6D0487900018C784EB900E00DE85C8F2EBC7B +S315E062E6E000018C783F3C00134EBAEE7E508F43F9C0 +S315E062E6F000E4FD4041F900018C7E3099215A000622 +S315E062E70041E80018B3FC00E4FD6666EE7020424321 +S315E062E71045FAEFC833C000018C824EB900E2F4DC00 +S315E062E720323900014B8C43F900014BC0204023C0D3 +S315E062E730000168BE303900014A3E3143000431517E +S315E062E7400008429026019680314000063143000A75 +S315E062E7504267263C00018B8042672F024EBAEE92F8 +S315E062E760487900014B9042673F3C00014E924879FE +S315E062E77000014B9042673F3C00024E9248790001AD +S315E062E7804BA8426742674E924FEF001C2EBC0001D7 +S315E062E7904BA842673F3C00034E9270FF4878001CEC +S315E062E7A0487900E4FDB241F900018C7848790001CC +S315E062E7B08C4423C800018C6445F900E00EC423C38F +S315E062E7C000018C74263C00018C4442B900018C60E5 +S315E062E7D033C000018B7C4E924878001C487900E495 +S315E062E7E0FDB2487900018B4C4E9223C300018CCC7A +S315E062E7F0700241F900018B4C4CEF040C002023C8F7 +S315E062E80000018CFC4FEF002C33C000018C544E7536 +S315E062E8102F0A2F0241F90001688E4242600252825B +S315E062E8203210714208010000670C720841E8003854 +S315E062E830B28066EA6046AF41B2806D403F2F000C1F +S315E062E84045FAEE983F022F3900014DA84EBAEDA285 +S315E062E850487900014BB83F023F3C00014E9248794D +S315E062E86000014BB83F023F3C00024E922F2F00263A +S315E062E8703F0242674E924FEF0020600274FF300221 +S315E062E880241F245F4E752F0A2F02342F000C558FFA +S315E062E89045FAEE483F022F3900018C744EB900E228 +S315E062E8A0F71E487900014B903F023F3C00014E92D1 +S315E062E8B0487900014B903F023F3C00024E92487914 +S315E062E8C000014BA83F0242674E924FEF001C2EBCFE +S315E062E8D000014BA83F0275423F3C00034E92508FC7 +S315E062E8E02002E788ED8A204291C04240241FD1FC93 +S315E062E8F000014F5C42A81934245F314019324E75EB +S315E062E9004E56FFEC720E48D7040C362E000A342EB1 +S315E062E9100008246E000C2003598071C0B280650045 +S315E062E9200116303B0A0848C04EFB080200F800FCBC +S315E062E930001E0024002A003C0078007E007E010A68 +S315E062E940010A0054006600D000DE7002600000DC5E +S315E062E9504240600000D675422002E788ED8A9480E4 +S315E062E9600682000168B6601075422002E788ED8A89 +S315E062E97094800682000168B820423490600000B854 +S315E062E98075422002E788ED8A94800682000168BAC1 +S315E062E99060E675422002E788ED8A9480068200018D +S315E062E9A068BC60D44EBAF1C46076486EFFF83F0246 +S315E062E9B077433F3C00034EBAECDA508F7142720BFA +S315E062E9C0B28366102200E789ED88908106800001B5 +S315E062E9D068BE600E2200E789ED88908106800001BC +S315E062E9E068C22040558F20102F0A486EFFF82F002C +S315E062E9F03F024EBAFBCE4FEF0010603A486A00041F +S315E062EA002F0A4EB900E2754C602A75422002E78809 +S315E062EA10ED8A948006820001688E20427150E6801B +S315E062EA20348060127003600270012F0A3F023F0079 +S315E062EA304EBAEC60508F4CEE040CFFEC4E5E4E75B7 +S315E062EA403F2F00063F2F00063F3C000242672F3908 +S315E062EA5000018C744EB900E2AE4C4FEF000C4E757D +S315E062EA602F02302F0008A3427340B4816D3C4A40C6 +S315E062EA706728487900014DAC4EB900E2441E588FD2 +S315E062EA804A406634558F2F3900018C403F3C008006 +S315E062EA904EB900E24018508F601E487900014DACD5 +S315E062EAA04EB900E2449C588F600E55803F400008A4 +S315E062EAB0241F60FFFFFF5F88241F4E752F032F021E +S315E062EAC0322F000EAF40C0814A40670830390001FC +S315E062EAD04A3E600270017410C4814A42670C307922 +S315E062EAE000014A3E41F008FF20082401028200004C +S315E062EAF001E04A426708343900014B5C6002740106 +S315E062EB00028100000E204A416708323900014A3E1E +S315E062EB10600272014A6F000C660C44804482448152 +S315E062EB20327CFFFF6004327C0001362F0010206FDA +S315E062EB300018D6893083206F001C362F0012D680EB +S315E062EB403083306F001491C9226F002091C23288FF +S315E062EB50306F001624089480206F00242002241F60 +S315E062EB6090813080261F4E754E56FFC848D71CFCF2 +S315E062EB70362E0008280E0684FFFFFFF6246E000A92 +S315E062EB8049FAEB5871432200E789ED88264097C13E +S315E062EB90D7FC00014F5C342B19322F043F033F3C14 +S315E062EBA000014EBAEAEE2F043F033F3C00024E9468 +S315E062EBB02F0A3F033F3C00014E943F033F3C000374 +S315E062EBC04EBAEA6A588F20404868000648680004F0 +S315E062EBD0486800022F003F2A00063F2A00043F2AC7 +S315E062EBE000023F123F2B19383F3C00014EBAFECE7F +S315E062EBF04FEF00323F3C000842674267487900E2E5 +S315E062EC00F71E3F3CFFFF42672F3900018C744EB915 +S315E062EC1000E2A2D83A3900018B7C717900018B84DB +S315E062EC204FEF001433C000018B7C7345B2806704FA +S315E062EC304EBAF96A4EBAEF4C42402F0A4879000161 +S315E062EC404BB83D40FFFE4EB900E2FE30508F4A407F +S315E062EC5066000152222EFFF6B29266000148282E25 +S315E062EC60FFFAB8AA0004660000BA7343717900013C +S315E062EC708B84B081660002BC7145B081670002B4E4 +S315E062EC802200E789ED88908106800001688E204047 +S315E062EC9072083010C0814A406726717900018B7C28 +S315E062ECA02200E789ED88908106800001688E204027 +S315E062ECB072083010C0814A4057C048804480600282 +S315E062ECC070017345A144B88167344A4067123F3C9C +S315E062ECD000023F3C000842673F054EBAF332508F6E +S315E062ECE071452200E789ED88908106800001688E91 +S315E062ECF02040A5413010C0814A4066000174A544B7 +S315E062ED00C4844A426600016A3F3C00013F3C000817 +S315E062ED1042673F3900018B7C4EBAF2F4508F600055 +S315E062ED200212736A0004716EFFFAB0816D2A736A29 +S315E062ED300006716EFFFCB0816D1E3F3C00023D43F2 +S315E062ED40FFFE78013F3C000842673F3900018B7C59 +S315E062ED504EBAF2BC508F60024244302A0004322E30 +S315E062ED60FFFA7D407541B4866E107D6A0006756E67 +S315E062ED70FFFCB4866E043403600242423F0147F907 +S315E062ED8000E2FE8C3F004E933F2EFFFC54803D40F6 +S315E062ED90FFFA3F2A00064E93508F54803D40FFFCB7 +S315E062EDA0600000D6342EFFFA6746302EFFFC6740DD +S315E062EDB03812326EFFF67D447349B2866D42306A2E +S315E062EDC00002322EFFF87F487D41BC876D323C2AD5 +S315E062EDD00004D4897542D8867944B4846E22342A92 +S315E062EDE00006D081714041F028007548B0826E100D +S315E062EDF0486EFFF62F0A4EB900E2FE52508F6070FF +S315E062EE002E2EFFFABEAA00046628303900018B7CFA +S315E062EE1073437540B282661A558F486EFFF6486E46 +S315E062EE20FFFE3F0042424EBAF4B04FEF000C3800AC +S315E062EE306004340342444A6A0004673A4A6A000656 +S315E062EE4067344A4267322C0E0686FFFFFFF62F06CC +S315E062EE502F0A4EB900E2F9322F062F0A4EB900E2C6 +S315E062EE60FE304FEF00104A4056C04880C4806008CA +S315E062EE7034034244600242427D45717900018B84EB +S315E062EE80B0866774303900018B7CA1477340BE81DE +S315E062EE9067662F0A3F0047FAE7FA3F3C00014E9366 +S315E062EEA0486EFFF62F0A4EB900E2F9324FEF0010D4 +S315E062EEB0BE8667447743B686673E260E0683FFFFC5 +S315E062EEC0FFEE2F033F3900018B7C3F3C00024E93FD +S315E062EED0487900014BB82F034EB900E2FE304FEF9E +S315E062EEE000104A4067123F3C00023F3C000842671E +S315E062EEF03F054EBAF11A508F302EFFFA54803D40EC +S315E062EF00FFFA302EFFFC54803D40FFFC4A42660A1F +S315E062EF10486EFFF64EBAE95E588F3F3C00013F0409 +S315E062EF203F2EFFFE486EFFF63F024EBAF51A4FEFEE +S315E062EF30000C4CEE1CFCFFC84E5E4E754FEFFFE0D8 +S315E062EF4048D7041C342F0024717900018B7C73420C +S315E062EF50B08167563F3CFFFF45FAE7383F022F39FB +S315E062EF6000018C744EB900E2B092260F068300006F +S315E062EF7000182F033F023F3C00024E92280F0684A0 +S315E062EF80000000282F043F023F3C00014E924FEF03 +S315E062EF9000122E843F024EBAFBD02F033F023F3C63 +S315E062EFA000024EBAE7364FEF00104CD7041C4FEF23 +S315E062EFB000204E754FEFFFC648EF7CFC0002362F0D +S315E062EFC0003E246F00423F3C000175434EBAFA921E +S315E062EFD0588F716F003E720FB28067067E08BE8000 +S315E062EFE066103C3900018E383A3900018E3C780E63 +S315E062EFF0601A7210B28067067E09BE80662E3C3960 +S315E062F00000018DC23A3900018DC678093F123F3C54 +S315E062F010FFFF4EB900E2FE8C34803F003F3C03E8DE +S315E062F0204EB900E2FE70508F348060064246424539 +S315E062F0304244323900018B7C714320407141B08891 +S315E062F04067282E022002E78FED889087068000010E +S315E062F050688E204070083E10CE804A4756C048808F +S315E062F06038402E0C448728476004387C0001302FF4 +S315E062F070003E7E11558071C0BE80650001F2303B74 +S315E062F0800A0848C04EFB08020024002C01E600484C +S315E062F09001E601E6015A0170005801E601E601E681 +S315E062F0A000EE0136014801E601860034367C000353 +S315E062F0B0600001C0367C0005600001B83F3CFFFF9E +S315E062F0C03F032F3900018C744EB900E2B092508F43 +S315E062F0D0558F2F0A3F034EBAFA90508F6000019027 +S315E062F0E071437341B280670001862F40002C2E3C4B +S315E062F0F000E2EF3C20022202E788ED894DF9000149 +S315E062F1008B803A7900018B82264197C0D7FC000159 +S315E062F110688E6050734DB2AF002C673A2001E78883 +S315E062F120ED89227900014DA8204191C0D1FC000110 +S315E062F1304F5CB3E81934661E302819327208C08112 +S315E062F1404A4067123013C0814A40670A558F3F0DC5 +S315E062F15020474E90588F714D2200E789EB88908167 +S315E062F1603A760800300D6EAC558F3F034EBAFDCE4F +S315E062F170588F600000FA22022002E789ED88207942 +S315E062F18000014DA890810680000168902240716876 +S315E062F190001C2212228841F900018E4021810C0076 +S315E062F1A023C100018C60322A000441F900018C68B7 +S315E062F1B033C100018B6831810A00600000B222022D +S315E062F1C02002E789ED8890810680000168BA6022B4 +S315E062F1D022022002E789ED8890810680000168BC00 +S315E062F1E0602622022002E789ED889081068000018E +S315E062F1F068B620403092607622022002E789ED8886 +S315E062F20090810680000168B82240329260603212D4 +S315E062F21070384C0208000801000067102040D1FCFB +S315E062F2200001688E301072088081600E2040D1FC49 +S315E062F2300001688E30107EF7C0873080A5403212BA +S315E062F240C280103C00384C0208004A4167102040F8 +S315E062F250D1FC0001688E301072108081600E204011 +S315E062F260D1FC0001688E30107EEFC0873080367C3C +S315E062F270FFFF4A44670000A8300C670000A2558F82 +S315E062F2803F034EBAE946588F7F6F003E720FB287F0 +S315E062F29067067008B087660E323900018E383039FB +S315E062F2A000018E3C601E7210B28767067009B087F5 +S315E062F2B0660E323900018DC2303900018DC66004B6 +S315E062F2C0424042417D467341B28666227B45714049 +S315E062F2D0B085661A20027208E788ED8A9480068213 +S315E062F2E00001688E20423010C0814A406730240FA8 +S315E062F2F00682000000302F023F0356843F3C000442 +S315E062F3004EBAE390548F2E823F3C00083F042F3979 +S315E062F31000018C643F034EBAE4A64FEF0010714BD6 +S315E062F320A147BE80670C2F123F0B3F034EBAEDA496 +S315E062F330508F558F42674EBAF7284CEF7CFC00043B +S315E062F3404FEF003C4E754E56FFE848D7003C282EFC +S315E062F350000A486EFFF8342E00082F043A2E000E9B +S315E062F3604EB900E2FE525C8F3F3C000177424EBAF4 +S315E062F370F6F0588F4A4567282003A941E788ED8B66 +S315E062F380204391C0D1FC0001688E301080813080CC +S315E062F3903F024267487900018B804EBAE1FC602801 +S315E062F3A0558F3F022F3900018C744EB900E2AFEE01 +S315E062F3B0200372FBE788ED8B204391C0D1FC00010C +S315E062F3C0688E3010C08130805C8F486EFFF83F02F5 +S315E062F3D04EBAF796508F4A45670E2F043F023F3C7E +S315E062F3E000024EBAE2F6508F558F42674EBAF67217 +S315E062F3F0588F4CEE003CFFE84E5E4E7542674879A8 +S315E062F40000014BB83F2F000A4EBAFF3C508F4E7553 +S315E062F4103F3C00012F2F00083F2F000A4EBAFF281B +S315E062F420508F4E754FEFFFF048D71C0445FAF6321F +S315E062F430600A558F3F3C00024E92588F4A7900012E +S315E062F44049F86EEE600A558F42674E92588F6004B5 +S315E062F45045FAF60E4A7900014DAC6EEA740145F959 +S315E062F460000168C649FAFF9647FAF41C3012A941D0 +S315E062F470C0814A406708558F3F024E94588F3012DA +S315E062F480080000006708558F3F024E93588F5282FC +S315E062F4907142720845EA0038B28066D04CD71C04E5 +S315E062F4A04FEF00104E7500002F032F02745091C883 +S315E062F4B042817148528853822600E58BE9889083BF +S315E062F4C02240D3FC000161DC228122094A4266E2E3 +S315E062F4D0241F23C900018E60261F4E752039000164 +S315E062F4E08E606708204023D000018E604E754FEF34 +S315E062F4F0FFF048D71C04266F001A286F0016342FD7 +S315E062F50000144EBAFFD82440248B356B0004000405 +S315E062F510356B000800083F2C00063F2B00064EB90B +S315E062F52000E2FE8C322C000A35400006302C0006E2 +S315E062F530D0813F00322B000A302B0006D0813F009B +S315E062F5404EB900E2FE70322A0006508F9081354055 +S315E062F550000A7142A341B28067286D064A42671289 +S315E062F5606074A541B2806724123C0003B28066668D +S315E062F5706040356B00060006302C0006322B000632 +S315E062F580604E302C0004322B0004601E302C0004E6 +S315E062F590322C0008306B0008D08135400004302BF5 +S315E062F5A00004D088306C0004908890813540000871 +S315E062F5B06024302C0006322C000A306B000AD081BF +S315E062F5C035400006302B0006D088306C0006908805 +S315E062F5D090813540000A200A4CD71C044FEF001098 +S315E062F5E04E754FEFFFCC48D77CFC266F003C286F08 +S315E062F5F00038246F0040382B0004342B0008302C8E +S315E062F6000004D4847B407542B4856F0000A2362C38 +S315E062F61000087944D6807743B8836C0000923C2B2D +S315E062F6200006302B000A322C0006D0867F417140FC +S315E062F630B0876F7A306C000A7D46D2887341BC81AE +S315E062F6406C6CB4835EC2B8855DC4B0815EC0BC8753 +S315E062F6505DC6A3454BEF002C4DFAFE944882488482 +S315E062F6604880C485C8854886C08544863F46002C66 +S315E062F6703F4200303F44002E42423F4000324A5D04 +S315E062F6806712558F2F0B2F0C3F024E964FEF000CF1 +S315E062F6902480244052827142A941B28066E024937A +S315E062F6A026B900018E6023CB00018E60600295CAA6 +S315E062F6B0200A4CD77CFC4FEF00344E754FEFFFF0DB +S315E062F6C0736F001848D71C0449FAFF182001E788CF +S315E062F6D0ED89928020010680000168BE20402641C5 +S315E062F6E02450D7FC0001688E60262F002F0A4879E5 +S315E062F6F000018E544E944FEF000C4A80670E32132F +S315E062F700A54220402450828236816004200A245237 +S315E062F7104A8A66D64CD71C044FEF00104E754FEFFF +S315E062F720FFF048D70C0C342F0018714226002200F5 +S315E062F730E78BED8992830681000168BE2041221043 +S315E062F740671820416002204922504A8966F820B94A +S315E062F75000018E6023C100018E602200E789ED8898 +S315E062F76047F900E2D6929081068000014F5C204024 +S315E062F770244041E8193272FD301045EA196242923C +S315E062F780C0813080487900018E583F023F3C0004D8 +S315E062F7904E93508F4A7900018E5C67444A79000144 +S315E062F7A08E5E673C558F3F3C000842B900018E543D +S315E062F7B042674267487AFF063F0242672F2F00247C +S315E062F7C04EB900E2A2D84EBAFD1420402600429815 +S315E062F7D02F083F023F3C00044E9324834FEF001C08 +S315E062F7E04CD70C0C4FEF00104E7500002F0A2F021B +S315E062F7F0302F000E4A6F000C670000AC4A790001B8 +S315E062F80010D4660000B842017140243C0001E84829 +S315E062F81013C1000110DC4C40280272012002E08034 +S315E062F82013C2000110DD740713C0000110DF70FE21 +S315E062F83013C1000110DE720813C2000110E07410F9 +S315E062F84013C0000110E1700B13C1000110E2420126 +S315E062F85013C2000110E3740C13C0000110E4302FF0 +S315E062F860001013C1000110E5720913C2000110E62F +S315E062F87050C2E78813C1000110E913C2000110EA21 +S315E062F88013C0000110E7700D13C0000110E84200DA +S315E062F89013C0000110EB2F3C000110DC3F3C00205E +S315E062F8A04E4E5C8F600E7340A142B481670633C0F0 +S315E062F8B0000110D43039000110D460027001241FB7 +S315E062F8C0245F4E752F032F02226F000C206F00100B +S315E062F8D0301175507340B2826F0230803029000277 +S315E062F8E0756800027340B2826F04314000023429C7 +S315E062F8F00004321130280004D28234107741D48079 +S315E062F9007542B4836F0492803081342900063229CD +S315E062F910000230280006D282342800027741D48081 +S315E062F9207542B4836F06928031410002241F261F1E +S315E062F9304E754FEFFFE848D71C1C246F0020266FF8 +S315E062F940001C49F900E2FE8C322A00043012D081B2 +S315E062F9503F00322B00043013D0813F004E94322AAE +S315E062F96000063800302A0002D0813F00322B0006C2 +S315E062F970302B0002D0813F004E943F1249F900E2FB +S315E062F980FE7036003F134E943F2A000234003F2B4E +S315E062F990000298824E943482354400049680354063 +S315E062F9A00002354300064CEF1C1C00104FEF0028A6 +S315E062F9B04E754FEFFFE848D71C1C266F001C246F7C +S315E062F9C0002049F900E2FE70322B00043013D08148 +S315E062F9D03F00322A00043012D0813F004E94322B2F +S315E062F9E000063800302B0002D0813F00322A000642 +S315E062F9F0302A0002D0813F004E943F1349F900E27B +S315E062FA00FE8C36003F124E943F2B000234003F2AB2 +S315E062FA1000024E9434824FEF001022049282354106 +S315E062FA2000042203928035400002354100067944A3 +S315E062FA307542B4846C1077437140A341B0835DC074 +S315E062FA404880C081600242404CD71C1C4FEF0018D0 +S315E062FA504E752F032F02202F0010206F000C752F9A +S315E062FA60001560062240528012C1121867067701BD +S315E062FA70B48366F0241F261F4E754FEFFFF448D716 +S315E062FA80040C202F00102440206F0014600210C185 +S315E062FA901212224A528A672E7501762EB68266EE77 +S315E062FAA05080908932002448600414FC0020538020 +S315E062FAB07540A143B68266F271C15289D1C06002D5 +S315E062FAC010C0101966FA42104CD7040C4FEF000CC6 +S315E062FAD04E754FEFFFF4222F0010224148D7040CF7 +S315E062FAE0206F0014600C750052897620B682670238 +S315E062FAF010C0101167162449AF4295C1B48A6CE60C +S315E062FB0010FC002E600210C0101966FA42104CD743 +S315E062FB10040C4FEF000C4E754FEFFFF048D70C0C1C +S315E062FB20246F001E266F0022242F001A3F3C000C31 +S315E062FB303F2F001A2F2F00184EB900E2A1D02240C3 +S315E062FB402051249036A800182F024EB900E1C4A4D1 +S315E062FB50321353813F013F004EB900E2FE707740B7 +S315E062FB602F032F022F124EB900E00EC4420020523C +S315E062FB70118038004CEF0C0C001C4FEF002C4E75D8 +S315E062FB804E56FFF8558F486EFFFE486EFFFA2F2EEF +S315E062FB90000E3F2E000C2F2E00084EBAFF7C4FEF70 +S315E062FBA000144E5E4E753F3C000C3F2F000A2F2F2D +S315E062FBB000084EB900E2A1D022402051226F001225 +S315E062FBC0508F2050101812C066FA4E7560D82F0218 +S315E062FBD03F3C000A3F2F000E2F2F000C4EB900E289 +S315E062FBE0A1D0508F342F0010322F000EC2824A41CC +S315E062FBF06706322F00126004322F001420403081F3 +S315E062FC00241F4E754FEFFFEC48D7043C2A2F0018AD +S315E062FC10382F001C4242776F001E45F900E2A1D000 +S315E062FC20601C3F3C000A2002D0843F002F054E92C2 +S315E062FC30508F2040301008000000660A52827142FE +S315E062FC40B6806EDE74FF30024CD7043C4FEF001490 +S315E062FC504E754FEFFFF448D7001C262F0010382F61 +S315E062FC6000143F3C00023F042F034EBAFF98508FC8 +S315E062FC70A14134007140B280671E3F3C000AD882DF +S315E062FC804A4257C23F04488244822F034EB900E299 +S315E062FC90A1D0508F2040425030024CD7001C4FEF2B +S315E062FCA0000C4E754FEFFFE448D71C3C246F0020F2 +S315E062FCB0242F002449F900E03530600000A6558F14 +S315E062FCC03F3C002C2F0A4E94508F26404A1367021F +S315E062FCD0528B7112722AB280661E548A7112B28097 +S315E062FCE06700008A558F3F3C002E2F024E94508F5C +S315E062FCF020404A106732602E2002602C783FB8833B +S315E062FD00660C7301528A7A2EBA81661A601A790192 +S315E062FD107A2ABA83660A722EB284660A528A6008C0 +S315E062FD20B6846616528A528020401210670C16120A +S315E062FD3067087703782CB88366C2161A7A2A710343 +S315E062FD40BA8067F6783FB88067F01A3C002EBA80D0 +S315E062FD5067E84A036706762CB68066044A01670C52 +S315E062FD60244B4A126600FF584240600270014CD74B +S315E062FD701C3C4FEF001C4E754FEFFFE848D7047C02 +S315E062FD80246F001C142F00232F0A4EB900E1C4A48D +S315E062FD90588F7B6F002077402200538141F2380012 +S315E062FDA060065388115000012801224153893209C5 +S315E062FDB054897D495284BC856EE8734452807140B1 +S315E062FDC015821800736F0024B0816C0842001580BA +S315E062FDD0380160064200158018FF4CD7047C4FEF6D +S315E062FDE000184E752F032F02206F0010756F000CFE +S315E062FDF032507149B0826E3032280002716F000E65 +S315E062FE007741B6806E223628000443F1380077499E +S315E062FE10B6826F1430680006D2887341B2805EC0E3 +S315E062FE20A3414880C08160024240241F261F4E756E +S315E062FE30206F0008226F00042010B09166102068DF +S315E062FE400004B1E9000457C0488044804E754240E0 +S315E062FE504E75226F0004206F00083091316900020E +S315E062FE6000023169000400043169000600064E753D +S315E062FE702F032F02322F000C302F000E7541774090 +S315E062FE80B4836C023001241F261F4E752F032F02A6 +S315E062FE90322F000C302F000E75417740B4836F022B +S315E062FEA03001241F261F4E75226F0008202F0004A2 +S315E062FEB02040121910C166FA4E7500002F0A42A759 +S315E062FEC0487AFFF82F2F001245F900E0305C3F3C9C +S315E062FED000033F3C004B4E92226F001E4FEF001034 +S315E062FEE0204022804A7900018E6466322028000C26 +S315E062FEF0D0A80014068000000100D0A8001C2F00E4 +S315E062FF002F0842673F3C004A4E924A7900018E646E +S315E062FF1056C04FEF000CA34148808081600270FFBB +S315E062FF20245F4E75558F3F3C00194EB900E0305C58 +S315E062FF30588F4E75558F2F2F00063F3C001A4EB9EB +S315E062FF4000E0305C508F4E753F2F00082F2F000681 +S315E062FF503F3C004E4EB900E0305C508F4A8057C05D +S315E062FF60488044804E75558F3F3C004F4EB900E065 +S315E062FF70305C588F4A8057C0488044804E753F2F28 +S315E062FF8000082F2F00063F3C003D4EB900E0305C92 +S315E062FF90508F4A7900018E64670242404E753F2F68 +S315E062FFA000043F3C003E4EB900E0305C588F4E752F +S315E062FFB02F2F000871EF000A2F003F2F000C3F3C05 +S315E062FFC0003F4EB900E0305C4FEF000C4E752F2FCC +S315E062FFD0000871EF000A2F003F2F000C3F3C004003 +S315E062FFE04EB900E0305C4FEF000C4E75558F3F2FF7 +S315E062FFF000083F2F00082F2F000E3F3C00424EB90B +S315E063000000E0305C4FEF000C4E75558F2F2F0006E6 +S315E06300103F3C003B4EB900E0305C508F4E752F0A93 +S315E06300202F02246F000E3F2F000C2F0A3F3C004740 +S315E06300304EB900E0305C508F725C34007112B2806E +S315E0630040660C486A00012F0A4EBAFE5E508F300294 +S315E0630050241F245F4E753F2F00043F3C000E4EB9CC +S315E063006000E0305C588F4E753F2F00082F2F000657 +S315E06300703F3C003C4EB900E0305C508F4E75558F87 +S315E06300802F2F00063F3C00394EB900E0305C4A79D9 +S315E063009000018E6457C0508F488044804E75558FFB +S315E06300A03F2F000C3F2F000C2F2F000A3F3C0043ED +S315E06300B04EB900E0305C4FEF000C4E754E56FFFCD8 +S315E06300C0558F3F3C00013D6E000AFFFC3D6E000C20 +S315E06300D0FFFE3F2E0008486EFFFC3F3C00574EB9DB +S315E06300E000E0305C4FEF000C4E5E4E75203A5C2AC2 +S315E06300F02E2A00004E56FFB4200E518048D70C0CD2 +S315E0630100162E000941EEFFC64218B08866FA558F8F +S315E0630110486EFFC63F3C001A47F900E0305C068351 +S315E063012000000040240E518245FAFD7E4E93487AE4 +S315E0630130FFBC2F024E923F3C00081D43FFF82F029F +S315E06301403F3C004E4E934FEF00184A806610486E70 +S315E0630150FFE42F2E000A4E92508F700160024240F8 +S315E06301604CEE0C0CFFB44E5E4E75558F2F2F00068A +S315E06301703F3C00414EB900E0305C508F4E754E56C1 +S315E0630180FFF03F2E0008486EFFF03F3C00364EB965 +S315E063019000E0305C508F202EFFF8222EFFF441EE14 +S315E06301A0FFFC4C100800206E000A4C00180020810A +S315E06301B0222EFFF0206E000E4E5E4C00180070019A +S315E06301C020814E752F2F00082F2F000842673F3C92 +S315E06301D000564EB900E0305C4FEF000C4E75558F1C +S315E06301E02F2F00063F3C003A4EB900E0305C508F5B +S315E06301F04E75558F2F2F00063F3C00484EB900E001 +S315E0630200305C508F4A806608720133C100018E64A8 +S315E06302104E75558FA1673F3C00484EB900E0305CB0 +S315E0630220508F4E75558F2F2F00063F3C00494EB9D0 +S315E063023000E0305C508F4E752F0A48780378487A31 +S315E063024009C448790001908845F900E00EC44E92EE +S315E06302504878016C487A0D82487900018ED84E92CF +S315E06302604FEF00163F3C00254879000190884EB970 +S315E063027000E3B0145C8F3F3C000D487900018ED8F3 +S315E06302804EB900E3B086508F207900018ED810BC5A +S315E0630290005F207900018EF410BC005F20790001D5 +S315E06302A08F104210245F4E752F0A2F02424245F9A2 +S315E06302B000E2B80A558F3F0252824879000190887E +S315E06302C04E927142508F7225B28066E8241F245F96 +S315E06302D04E75504154483D00454D554445534B009A +S315E06302E02E415050002A2E41434300302E2E3900D2 +S315E06302F0612E2E7A412E2E5A2000612E2E7A412EC1 +S315E06303002E5A302E2E392000612E2E7A412E2E5A09 +S315E0630310302E2E392024232640212528292D7B7D46 +S315E063032027605F5E7E5C3F2A3A2E2C00612E2E7A32 +S315E0630330412E2E5A302E2E3920242326402125287D +S315E0630340292D7B7D27605F5E7E5C3A00612E2E7A87 +S315E0630350412E2E5A302E2E3920242326402125285D +S315E0630360292D7B7D27605F5E7E3A3F2A00612E2ED4 +S315E06303707A412E2E5A302E2E3920242326402125EB +S315E063038028292D7B7D27605F5E7E00496E736572EB +S315E06303907420796F75722047454D2053544152540A +S315E06303A05550206469736B00433A5C47454D415051 +S315E06303B050535C47454D5359533B433A5C47454D30 +S315E06303C0415050533B433A5C00433A5C434C49509B +S315E06303D04252440047454D2E5253432052656C6565 +S315E06303E061736520332E3000415641494C4E554C7E +S315E06303F000534352454E4D475200433A5C454D5593 +S315E06304004445534B2E494E46005B325D5B596F75EF +S315E06304102063616E6E6F7420777269746520746FA2 +S315E063042020746865206469736B20696E2064726901 +S315E063043076657C25633A20626563617573652069D9 +S315E06304407420697320706879736963616C6C792071 +S315E063045077726974652D7C70726F746563746564B5 +S315E06304602E20204265666F726520796F752052652E +S315E06304707472792C2072656D6F76657C746865201D +S315E063048077726974652D70726F74656374207461D5 +S315E063049062206F72206E6F746368207468657C6433 +S315E06304A069736B2E5D5B43616E63656C7C526574E9 +S315E06304B072795D005B325D5B4472697665202563C4 +S315E06304C03A206973206E6F7420726573706F6E6421 +S315E06304D0696E672E2020596F75206D7573747C7510 +S315E06304E0736520746865207269676874206B696EEA +S315E06304F064206F66206469736B2C20696E73657222 +S315E0630500742069747C636F72726563746C792C2092 +S315E0630510616E6420636C6F73652074686520646FD5 +S315E06305206F722E20204966207468657C70726F62F4 +S315E06305306C656D20697320776974682061206861F2 +S315E06305407264206469736B2C20636865636B2074E3 +S315E063055068657C6469736B277320636F6E6E65632E +S315E063056074696F6E732E5D5B43616E63656C7C521B +S315E0630570657472795D005B325D5B44617461206FC3 +S315E06305806E20746865206469736B20696E2064729B +S315E06305906976652025633A206D61792062657C64BE +S315E06305A0616D616765642E2020596F75206D757383 +S315E06305B07420757365207468652072696768742052 +S315E06305C06B696E647C6F6620666C6F7070792064AD +S315E06305D069736B3B20796F75206D75737420636FF8 +S315E06305E06E6E65637420796F75727C686172642080 +S315E06305F06469736B2070726F7065726C792E5D5B84 +S315E063060043616E63656C7C52657472795D005B32DF +S315E06306105D5B54686973206170706C69636174696A +S315E06306206F6E2063616E6E6F7420726561642064C1 +S315E0630630617461206F6E207468657C6469736B2096 +S315E0630640696E2064726976652025633A2E202054AC +S315E06306506865206469736B206D7573742062657C6D +S315E0630660666F726D61747465642C20746865726517 +S315E0630670206D75737420626520706F776572207480 +S315E06306806F207468657C6469736B206472697665F0 +S315E06306902C20616E6420746865206469736B2064E2 +S315E06306A072697665206D7573742062657C706879AE +S315E06306B0736963616C6C7920636F6E6E6563746591 +S315E06306C06420746F20796F757220636F6D707574D3 +S315E06306D065722E5D5B43616E63656C7C52657472B5 +S315E06306E0795D005B325D5B596F7572206F7574700F +S315E06306F0757420646576696365206973206E6F74CB +S315E063070020726563656976696E677C646174612E80 +S315E0630710204265666F726520796F752052657472E3 +S315E0630720792C206D616B65207375726520746865DD +S315E06307307C6465766963652068617320706F77654D +S315E0630740722C206973206F6E2D6C696E652C206147 +S315E06307506E642069737C6C6F616465642077697429 +S315E063076068207061706572206F722066696C6D2EA9 +S315E06307705D5B43616E63656C7C52657472795D0043 +S315E06307805B335D5B416E206572726F722068617385 +S315E0630790206F636375727265642077697468207429 +S315E06307A068657C477261706869637320456E7669D4 +S315E06307B0726F6E6D656E74204D616E6167657220F2 +S315E06307C02847454D292E7C506C6561736520636FC0 +S315E06307D06E746163742074686520456D75544F5318 +S315E06307E020446576656C6F706D656E747C54656187 +S315E06307F06D20616E64207375626D69742061206239 +S315E06308007567207265706F72742E5D5B43616E63AC +S315E0630810656C5D005B325D5B546869732061707023 +S315E06308206C69636174696F6E2063616E6E6F742069 +S315E063083066696E64207468657C666F6C6465722055 +S315E06308406F7220646F63756D656E7420796F752062 +S315E063085061726520747279696E6720746F7C6F70FC +S315E0630860656E2E20436865636B20746865206E61F0 +S315E06308706D6520796F75206861766520656E746550 +S315E06308807265642E5D5B20204F4B20205D005B33F9 +S315E06308905D5B596F757220636F6D707574657220F9 +S315E06308A0646F65736E2774206861766520656E6F25 +S315E06308B07567687C6D656D6F727920746F2072758C +S315E06308C06E207468652047454D204465736B746F8D +S315E06308D0702E5D5B20536F727279205D005B315DD4 +S315E06308E05B54686973206170706C69636174696F86 +S315E06308F06E20646F65736E27742068617665207217 +S315E06309006F6F6D20746F7C6F70656E20616E6F7450 +S315E063091068657220646F63756D656E742E2020540E +S315E06309206F206D616B6520726F6F6D2C7C636C6F8E +S315E0630930736520616E7920646F63756D656E74733C +S315E063094020796F7520646F6E2774206E6565642EFB +S315E06309505D5B20204F4B20205D005B315D5B416E2C +S315E0630960206974656D20776974682074686973209B +S315E06309706E616D6520616C72656164792065786925 +S315E06309807374737C696E2074686520666F6C6465E6 +S315E0630990722C206F7220746865206974656D2069B6 +S315E06309A0732073657420746F7C526561642D4F6E3A +S315E06309B06C79207374617475732E20557365207436 +S315E06309C068652022496E666F2F52656E616D65229A +S315E06309D07C636F6D6D616E6420746F206368616EB6 +S315E06309E0676520746865206974656D277320737421 +S315E06309F0617475732E5D5B20204F4B20205D005B39 +S315E0630A00315D5B546865206469736B2064726976F3 +S315E0630A106520796F75206861766520696E646963C0 +S315E0630A206174656420646F65737C6E6F742065784A +S315E0630A306973742E20436865636B2074686520640C +S315E0630A4072697665206964656E7469666965727CE8 +S315E0630A506C657474657220796F7520656E74657202 +S315E0630A6065642E5D5B43616E63656C5D005B315D02 +S315E0630A705B596F752063616E6E6F742064656C6538 +S315E0630A8074652074686520666F6C64657220696E50 +S315E0630A907C776869636820796F7520617265206326 +S315E0630AA0757272656E746C7920776F726B696E6757 +S315E0630AB02E5D5B20204F4B20205D005B315D5B59F3 +S315E0630AC06F757220636F6D707574657220646F65A0 +S315E0630AD073206E6F74206861766520656E6F7567E7 +S315E0630AE0687C6D656D6F727920746F2072756E20A8 +S315E0630AF0746865206170706C69636174696F6E2098 +S315E0630B00796F757C686176652073656C656374651A +S315E0630B10642E5D5B20204F4B20205D005B335D5B85 +S315E0630B20444F53206572726F72202325642E5D5B9A +S315E0630B3043616E63656C5D005B335D5B426164205C +S315E0630B4046756E6374696F6E20235D5B43616E63A6 +S315E0630B50656C5D005B335D5B546F2072756E20740C +S315E0630B6068652047454D204465736B746F702C2030 +S315E0630B70696E7365727420796F75727C47454D2033 +S315E0630B804445534B544F50206469736B20696E2020 +S315E0630B906472697665204120616E6420636C696383 +S315E0630BA06B7C6F6E204F4B206F7220707265737330 +S315E0630BB020456E7465722E20546F2072657475726B +S315E0630BC06E20746F20444F532C7C636C69636B2097 +S315E0630BD06F6E2043616E63656C2E5D5B20204F4BC9 +S315E0630BE020207C43616E63656C5D004954454D200E +S315E0630BF053454C4543544F52004F4B0043616E633C +S315E0630C00656C0000FFFF0001000600140000002091 +S315E0630C100001110000000000042806140002FFFF33 +S315E0630C20FFFF001C0000000000E30BEB0003000184 +S315E0630C30000D00010003FFFFFFFF001E0008000038 +S315E0630C4000018ED800010003002600010004FFFFC7 +S315E0630C50FFFF001E0008000000018EF4000100059E +S315E0630C60001800010005FFFFFFFF001A0007000000 +S315E0630C7000E30BF9001C000F000800010006FFFF0C +S315E0630C80FFFF001A0005000000E30BFC001C0011E7 +S315E0630C900008000100000007000E001900000000D4 +S315E0630CA000001100000200070116010C0008FFFFB7 +S315E0630CB0FFFF001B0040000005FF1101000000007C +S315E0630CC0000200010009FFFFFFFF001E00100000A5 +S315E0630CD000018F100102000006130001000E000AF6 +S315E0630CE0000C001400400000000111000013000135 +S315E0630CF00003000B000BFFFFFFFF001B004000003B +S315E0630D00010111000000000000030002000CFFFF78 +S315E0630D10FFFF001B00400000020111000000000914 +S315E0630D20000300020009000D000D001400400000FE +S315E0630D30000111110000000200030007000CFFFF31 +S315E0630D40FFFF0014004000000001110104000000F1 +S315E0630D50000200010006000F0017001400400000C7 +S315E0630D6000011100000000010013000B0010FFFFFB +S315E0630D70FFFF001E0040000000018F2C000200010F +S315E0630D80000F00010011FFFFFFFF001E004000009F +S315E0630D9000018F4800020002000F00010012FFFF0E +S315E0630DA0FFFF001E0040000000018F6400020003A5 +S315E0630DB0000F00010013FFFFFFFF001E004000006D +S315E0630DC000018F8000020004000F00010014FFFFA2 +S315E0630DD0FFFF001E0040000000018F9C000200053B +S315E0630DE0000F00010015FFFFFFFF001E004000003B +S315E0630DF000018FB800020006000F00010016FFFF36 +S315E0630E00FFFF001E0040000000018FD400020007D0 +S315E0630E10000F00010017FFFFFFFF001E0040000008 +S315E0630E2000018FF000020008000F0001000EFFFFD3 +S315E0630E30FFFF001E006000000001900C0002000945 +S315E0630E40000F0001FFFF000100090014000000200D +S315E0630E500002110000000000005000090002FFFFDD +S315E0630E60FFFF00140000000000FF11000003000113 +S315E0630E70000400040003FFFFFFFF001C0000000006 +S315E0630E800001944400090001002800010004FFFF0B +S315E0630E90FFFF001C0000000000018EAC00090002A9 +S315E0630EA0003200010005FFFFFFFF001C00000000A9 +S315E0630EB00001941800090003003200010006FFFFF9 +S315E0630EC0FFFF001C0000000000018E8000090004A3 +S315E0630ED0003200010007FFFFFFFF001C0000000077 +S315E0630EE00001904400090005003200010008FFFF9D +S315E0630EF0FFFF001A00070000000190700009000779 +S315E0630F00001000010009FFFFFFFF001A0007000061 +S315E0630F1000019400001A0007001000010000FFFFC3 +S315E0630F20FFFF001A0027000000018E68002B000710 +S315E0630F3000100001FFFF0001000200140000000042 +S315E0630F400000114300000000005000190002FFFF9B +S315E0630F50FFFF00140000000000FF11000000000026 +S315E0630F60005002010000FFFFFFFF001500200000B4 +S315E0630F700001902800000000005003015F5F5F5F9F +S315E0630F805F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F28 +S315E0630F905F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F18 +S315E0630FA05F5F00500053656C656374696F6E3A20EA +S315E0630FB0205F5F5F5F5F5F5F5F2E5F5F5F0066001F +S315E0630FC05F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5FE8 +S315E0630FD05F5F0046008000000000000000E30F7CD6 +S315E0630FE000E30FA30003000100001100000000000E +S315E0630FF0002700270000000000E30FA500E30FBE13 +S315E0631000000300010000110000000000000C00195D +S315E06310100000000000E30FC000E30FD30003000607 +S315E0631020000211000000FFFF001300130000000040 +S315E063103000E3114400E311540003000100001100D2 +S315E063104000000000000D00100000000000E3114402 +S315E063105000E31154000300010000110000000000EA +S315E0631060000D00100000000000E3114400E311549A +S315E0631070000300010000110000000000000D0010F5 +S315E06310800000000000E3114400E311540003000193 +S315E06310900000110000000000000D001000000000D9 +S315E06310A000E3114400E31154000300010000110062 +S315E06310B000000000000D00100000000000E3114492 +S315E06310C000E311540003000100001100000000007A +S315E06310D0000D00100000000000E3114400E311542A +S315E06310E0000300010000110000000000000D001085 +S315E06310F00000000000E3114400E311540003000123 +S315E06311000000110000000000000D00100000000068 +S315E063111000E3114400E311540003000100001100F1 +S315E063112000000000000D001000E30FD500E30FD5CB +S315E063113000E30FD500030001000211000000000187 +S315E0631140000200025F205F5F5F5F5F5F5F5F2E5F4E +S315E06311505F5F200078460000303C27104FEFFFE4E6 +S315E063116048D704FC206F00224244424342457D6FE8 +S315E063117000203200603834107F4122477F42BE89C7 +S315E06311806C023202326800027F4024477F49BE8A9E +S315E06311906C0230097F4324477F42BE8A6F02360280 +S315E06311A07F447549B4876F02380952855888754517 +S315E06311B0BC826EC22044528891C03F082043528865 +S315E06311C091C13F083F003F012F2F002E4EB900E04B +S315E06311D035244CEF04FC000C4FEF00284E754FEFBF +S315E06311E0FFE048D70CFC262F003024433E2F002433 +S315E06311F03C2F00263A2F0028282F002A756F002EF1 +S315E06312004267424347F900E25F563F3C01004EB90D +S315E063121000E3AC16588F601E558F2F043F0552834B +S315E0631220302A0002D0863F003012588AD0873F00CA +S315E06312304E934FEF000C7143B4806EDC42404CD763 +S315E06312400CFC3F400026303C01013F4000244FEF59 +S315E0631250002060FF000099C24FEFFFCC48D71CFC2B +S315E0631260342F003C362F003E202F003820402240AA +S315E0631270A344386F0040366F00423C2F00443A2F58 +S315E0631280004632027F42C3FC0018D1C132033028E4 +S315E06312900010C3FC0018D3C1322900103269001272 +S315E06312A0D08132280012D289B88767643E3900015B +S315E06312B0F59C675C7F47B8876600016C3839000147 +S315E06312C04BA03F3900014BA445F900E03524C9FC46 +S315E06312D0002D3F043F013F002E0F068700000034D8 +S315E06312E02F074E923F053F063F0B3F0C280F0684C0 +S315E06312F0000000382F044E922F042F074EB900E208 +S315E0631300F9B24FEF00204A406600011C6000011A03 +S315E06313103F0597C1280C988045F900E035243F06E0 +S315E06313203F0B3F042E0F0687000000342F074E92D3 +S315E06313303F053F063F0B3F0447EF00382F0B4E92C6 +S315E0631340714345F900E2F9B241F90001B2B80680AA +S315E063135000001EEF79700A002F072004EB88204017 +S315E063136041F04A002248D3FC000204502F092E08BC +S315E06313704E924FEF00204A40660000AC2F0B2007E9 +S315E06313800680000204482F004E92508F4A40670061 +S315E063139000982047D1FC0001B2B830285190322F33 +S315E06313A000247B45326851922A056A02528592800F +S315E06313B071462C006A025286E28571685194E28630 +S315E06313C0DC81322F00269289D2854A806C025E8068 +S315E06313D0E680C1C17340714622016A025281E281AD +S315E06313E04A806C0606800000000FE8807D46D08167 +S315E06313F02204EB89D08002868000000F224141F10E +S315E06314004A007140D1FC0002043620504A866C08DB +S315E0631410538672F08C815286780F988671F0080055 +S315E06314207DC40D006702340330024CD71CFC4FEFDA +S315E063143000344E754FEFFFEC48D7007C3A2F00201F +S315E0631440342F001C262F0018382F001E3F057D42DF +S315E06314503F043F3C00023F022F034EB900E3A7B6C9 +S315E06314604FEF000C7340BC816720A146BC81671ACD +S315E06314703F3C00013F3C00013F053F043F003F0224 +S315E06314802F034EBAFDD44FEF00104CD7007C4FEFDD +S315E063149000144E754E56FFE448D7043C382E0010D0 +S315E06314A0262E000A2043246E00123A2E00163004DC +S315E06314B0C1FC0018D1C03428000A4A6E001C670AD2 +S315E06314C07008C0824A40660000B0486EFFF848681C +S315E06314D000104EB900E2FE52302E000E508F2043CC +S315E06314E0C1FC0018D1C032280010302EFFF8D0813D +S315E06314F03D40FFF8302EFFFA32280012D0813D409E +S315E0631500FFFA4A6E001867062005808260062005AA +S315E06315104680C08275C273C0B282676042673F002D +S315E06315203F2A00063F2A00043F2A00023F12426731 +S315E06315303F042F034EB900E3A8564FEF00144A6EFB +S315E0631540001A6738486EFFF82F0A4EB900E2F9B21F +S315E0631550508F4A406726558F3F2EFFFE3F2EFFFC96 +S315E06315603F2EFFFA3F2EFFF83F2E00084EB900E309 +S315E06315708AC04FEF000C60044240600270014CEE9B +S315E0631580043CFFE44E5E4E754E56FF9C48D73CFCEA +S315E0631590426747FAFBC4386E00162A6E0018262E99 +S315E06315A000282803246E000C3F3C0004754C4EB9BA +S315E06315B000E3AC16548F486EFFDE2F2E00123F2EEB +S315E06315C000103D6E0008FFFE3D6E000AFFFC4E9381 +S315E06315D04FEF000A486EFFE62F0D3F0C4E93302E19 +S315E06315E0FFEA322EFFE2326EFFE6204D4FEF000C4C +S315E06315F0D0813D40FFEA302EFFEC322EFFE4D0810E +S315E06316003D40FFEC322EFFE84240601436105280D4 +S315E063161096893083362800029681314300025888E2 +S315E06316207740B4836EE6302EFFFE2604428542465B +S315E063163042442D43FFC424009489302EFFFC3D428F +S315E0631640FFCA240094813D42FFCE4242306EFFCA18 +S315E0631650302EFFFE322EFFCE486EFFE62F0A47FAA4 +S315E0631660FB7E90883D40FFE6302EFFFC90813D4057 +S315E0631670FFE84EB900E2F8C4362EFFFE3E2EFFFCCD +S315E0631680487900014B904EB900E25E324FEF000AB3 +S315E06316903F3C00013F3C000342674EB900E25FCC4A +S315E06316A02F0D3F0C2F2E00123F2E00103F2EFFE82A +S315E06316B03F2EFFE64E93486EFFF2486EFFF4486EA8 +S315E06316C0FFDC486EFFDA486EFFD8486EFFD64267A6 +S315E06316D0426742A7426742674267426742673F3C67 +S315E06316E000023F3C00023F073F033F3C0001426785 +S315E06316F03F3C00FF3F3C00013F3C00064EB900E340 +S315E0631700A54A4FEF00502E8D3F0CA541C2802F2E88 +S315E063171000123F2E00103D41FFD23F2EFFE83F2EE1 +S315E0631720FFE64E93486EFFF8486EFFFA486EFFFC9D +S315E0631730486EFFFE4EB900E3AC344FEF00203F2E18 +S315E0631740FFFC3F2EFFFE4EB900E3ADA02679000213 +S315E063175019D8588F36006720558F3F004EB900E39E +S315E063176098C0588F4A80670E20402679000219D8C0 +S315E06317703E28000A600442437E01558F3F2EFFFCFC +S315E06317803F2EFFFE3F072F0B4EBAFCAA4FEF000C2E +S315E0631790206EFFC47340308022417347B289670687 +S315E06317A0A141B28966324A42672E558F3F3C0001BA +S315E06317B03F3C000142673F3C00012F0A3F02424241 +S315E06317C03F0642462F053F04424442854EBAFCC675 +S315E06317D04FEF0018600000B471407342B280672E29 +S315E06317E04A42672A558F3F3C00013F3C000142670E +S315E06317F03F3C00012F0A3F0242423F0642462F0525 +S315E06318003F04424442854EBAFC8C4FEF00183F3C9E +S315E0631810000A206EFFC43F102F0B4EB900E2A1D041 +S315E0631820508F2040301008000000665E206EFFC4D3 +S315E0631830486EFFF6486EFFEE3F103F034EB900E396 +S315E06318406F0E4FEF000C4A8067402040A541302879 +S315E06318500006538071C0B2806530206EFFC4558F39 +S315E06318603C07380334103F3C00012A0B3F3C000140 +S315E06318703F3C00013F3C00012F0A3F023F072F0B2D +S315E06318803F034EBAFC104FEF00184A6EFFD2670073 +S315E0631890FDBC4A426722558F3F3C00013F3C000155 +S315E06318A042673F3C00012F0A3F023F062F053F0494 +S315E06318B04EBAFBE24FEF0018206E001C30AEFFFE1F +S315E06318C0206E002030AEFFFC206E0024308342673A +S315E06318D042674EB900E3AC16588F4CEE3CFCFF9C76 +S315E06318E04E5E4E754E56FFB4302E000E48D73CFC26 +S315E06318F0246E000A240A2A0E0685FFFFFFE847F9ED +S315E063190000E2FE5249F900E2F9B2C1FC0018D48064 +S315E0631910424020423E2800103A6800122F052F2EDF +S315E063192000123D40FFF63D40FFF44E932F052F2E08 +S315E063193000164E94382E001A4FEF00105085716EE4 +S315E063194000102042240E362800027D6E000E2D40E4 +S315E0631950FFE0518246842D44FFE4600000E2B0AECE +S315E0631960FFE0670000D230032F02C1FC001849F2A2 +S315E0631970080041EC00102F082D48FFDC4E93302E13 +S315E0631980FFF82F02486EFFE8306EFFFAD0873D40DE +S315E0631990FFF8302EFFFE41F5880153803D48FFFA9C +S315E06319A03D40FFFE4EB900E2F9B24FEF00104A4008 +S315E06319B0670000843F2EFFFE3F2EFFFC3F2EFFFABB +S315E06319C03F2EFFF83F033F2E000E2F0A4EBAF88AEA +S315E06319D04FEF00107140B086675C322C000A4A6EA6 +S315E06319E0001C6708302E001A80816006202EFFE413 +S315E06319F0C08179C073C1B284673C3940000A2F0263 +S315E0631A002F2EFFDC4E93302EFFF8508FD0873D406C +S315E0631A10FFF8302EFFFAD08D3D40FFFA4A6EFFF4B1 +S315E0631A20670C2F052F024EB900E2F93260062F05E7 +S315E0631A302F024E93508FC7FC00183632380071433D +S315E0631A40BC806D00FF1A4A6E001E6734486EFFF075 +S315E0631A502F2E00164EB900E2F9B2508F4A40672046 +S315E0631A60558F3F2EFFF63F2EFFF43F2EFFF23F2EBC +S315E0631A70FFF03F2E00084EB900E38AC04FEF000C3B +S315E0631A804CEE3CFCFFB44E5E4E754FEFFFE648EF1F +S315E0631A90047C0002342F0024362F001E246F0020BE +S315E0631AA0282F002C3F2F00283F2F00283F022F0AC4 +S315E0631AB04EBAF98273424FEF000C3C007140B2803C +S315E0631AC06706A141B28066203F3C000142673F3C26 +S315E0631AD000012F04487900014BA83F063F022F0A15 +S315E0631AE03F034EBAFE00607E2200E789EB88908171 +S315E0631AF03A32080A302F0028A741C0814A4066344B +S315E0631B004A6F002E66060805000066383F3C000112 +S315E0631B1042673F3C00012F04487900014BA83F062A +S315E0631B203F022F0A3F034EBAFDBC4FEF0018A340B6 +S315E0631B308A80601008050000670672FECA81600449 +S315E0631B40A3408A80558F3F3C0001A341CA813F3C55 +S315E0631B5000013F053F3C00012F043F063F022F0A89 +S315E0631B603F034EBAF9304CEF047C00184FEF003078 +S315E0631B704E754E56FFB470FF48D73CFC342E000ECC +S315E0631B80558F2A6E001E246E000A286E0010266E9C +S315E0631B900014362E00083D40FFFC3A827B42301447 +S315E0631BA03D40FFFA32133F013D41FFF83F003F02FC +S315E0631BB02F0A4EBAF8804FEF000C38007140BA80B6 +S315E0631BC06706A141B28066643F3C00062A0E06853D +S315E0631BD0FFFFFFEC3F3C00063F2EFFF83F2EFFFA88 +S315E0631BE02F054EB900E03524486EFFF2486EFFF0EC +S315E0631BF03F3C00063F3C00063F2EFFEE3F2EFFECE8 +S315E0631C004EB900E3A9B43F3C00013F3C00013F3CD1 +S315E0631C1000012F2E001A2F053F043F022F0A3F03D0 +S315E0631C204EBAFCC24FEF0034600002202200E7891F +S315E0631C30EB8890813032080A080000006700020CE6 +S315E0631C4030022D45FFE0C1FC001841F208002D4843 +S315E0631C50FFE83228000242406062C3FC001841F2AA +S315E0631C6018003228000A08010000674E22005280FD +S315E0631C70D281226EFFE87A3B3E280010326900107B +S315E0631C807341DE892C010686000022AF43F9000129 +S315E0631C90B2B80681000022B033876A00226EFFE89D +S315E0631CA03E2800123C29001243F90001B2B8DC87F2 +S315E0631CB033861A007340BA816D1032107D41BCAE33 +S315E0631CC0FFE06E964A40670001827342A347BE8196 +S315E0631CD067084A790001F59C660E32390001FCD843 +S315E0631CE041F90001FCDC600C32390001FCDA41F9B0 +S315E0631CF00001FD002F0D486EFFFC486EFFF4486E51 +S315E0631D00FFF648790001F8163F002F083F0148794E +S315E0631D1000014BA83F2EFFF83F2EFFFA4EBAF86A52 +S315E0631D20302EFFFC4FEF0024671877437140B08392 +S315E0631D306600011871557944B8806600010E60004B +S315E0631D4001044A436600010473557542B481660033 +S315E0631D5000FA206EFFE8263C0001B2B83E2EFFF49F +S315E0631D603C2EFFF63028000242422D41FFE82A3C32 +S315E0631D7000E3E34C600000C4C1FC00184BF20800CA +S315E0631D80302D000A08000000670000AE302D001217 +S315E0631D90326D0010486D0012486D001020433D40DF +S315E0631DA0FFE62002D0803D49FFE4224571402200F0 +S315E0631DB00681000022B032301A000680000022AFAE +S315E0631DC0D2873F0130300A00D0863F004E914FEF15 +S315E0631DD0000C207900020432601671680008B8804E +S315E0631DE0660C316D00100018316D0012001A205038 +S315E0631DF04A8866E6558F3F390001FD2652823F39B0 +S315E0631E000001FD243F2EFFE63F2EFFE442674EB915 +S315E0631E1000E38AC04FEF000A3F390001FD263F39F0 +S315E0631E200001FD243F2D00123F2D001042674EB99D +S315E0631E3000E38AC04FEF000C30157940B8AEFFE897 +S315E0631E406E00FF3670FF3D40FFFC558F486E00180D +S315E0631E50486EFFFE486EFFF8486EFFFA42673F3C06 +S315E0631E6000013F3C00014EB900E3A4D238AEFFF671 +S315E0631E704FEF001836AEFFF44CEE3CFCFFB4302E69 +S315E0631E80FFFC4E5E4E750000226F0008202F0004B3 +S315E0631E902040121910C166FA4E7520790002042EAD +S315E0631EA04A88672E23D00002042E4A6F0004660A2E +S315E0631EB02279000204324A89661020B900020432AC +S315E0631EC023C800020432600A2240201166FA22889F +S315E0631ED0429020084E75206F000422790002043296 +S315E0631EE0B1C9660A23D000020432600E22404A89F1 +S315E0631EF067082011B1C066F4600E20B90002042EB3 +S315E0631F0023C80002042E4E75229060EE2F027409F8 +S315E0631F10302F000873C0B481650806800000003086 +S315E0631F20601A22000681FFFFFFF673C1AB42B481FC +S315E0631F30650806800000003760027020241F4E7536 +S315E0631F404FEFFFF4720F48D70C04342F0014246F5D +S315E0631F50001047FAFFB814FC00202002E888C0812D +S315E0631F603F004E9314C0700FC4803E824E93204A66 +S315E0631F7010C04CEF0C04000220084FEF000E4E75C4 +S315E0631F802F032F02206F000C224872207118B28053 +S315E0631F9067F6206F001020B90001FD2A600A108100 +S315E0631FA0528823C80001FD2A200976401219207958 +S315E0631FB00001FD2A7501B68266E4421052885280BA +S315E0631FC023C80001FD2A241F261F4E75206F0004D7 +S315E0631FD0226F0008600410812040121920085280A5 +S315E0631FE04A0166F210BC00402040528010FC00209B +S315E0631FF04E754FEFFFF4704D48D70C04206F001019 +S315E0632000246F00147310B08167426D187446B4810F +S315E06320106752103C0047B081673C143C0044B4818E +S315E0632020667860707054B08167146D0474506008AC +S315E06320307066B081672E7470B481665E603C7003CF +S315E063204072073540000635410004604E740270073E +S315E06320503542000660384241740335410006354235 +S315E06320600004603642407246354000067110B28025 +S315E06320706604424060187010601442427250354202 +S315E063208000067110B280660470086002701835400D +S315E063209000046006740135420006322A0004A94250 +S315E06320A020085280C2824A41671A486A00182F00A4 +S315E06320B047F900E27D984E93486A001A2F004E93E3 +S315E06320C04FEF0010486A00122F0047F900E27D984F +S315E06320D04E93486A00142F004E934FEF0010A941C8 +S315E06320E020405288302A0004C0814A4067161010A7 +S315E06320F074207300B48167044880600242403540CF +S315E063210000165488486A000A2F084EBAFE7445EAF8 +S315E0632110000E2F4A001C4CEF0C0400082F400018F9 +S315E06321204FEF00146000FE5A4E56FFEC486EFFFC1C +S315E06321303F2E00083F3C00044EB900E3B35A4878AB +S315E0632140000E2F2EFFFC486EFFEE4EB900E00EC484 +S315E06321504FEF00123F2EFFF4322EFFF2202EFFEEFA +S315E06321603F012F003F012F004EB900E263FE4FEFC0 +S315E063217000104E5E4E7523452039412030310D0AFD +S315E06321802357203030203030203032203036203232 +S315E06321903620304320303020400D0A23572030303C +S315E06321A02030302030322030382032362030432021 +S315E06321B0303020400D0A2357203030203030203035 +S315E06321C03220304120323620304320303020400DFB +S315E06321D00A235720303020303020303220304420FC +S315E06321E0323620304320303020400D0A00234D2024 +S315E06321F0303020303020303120464620412044497B +S315E0632200534B2041402040200D0A0023462046469A +S315E06322102032382040202A2E2A40200D0A234420EB +S315E063222046462030322040202A2E2A40200D0A23BB +S315E063223047203038204646202A2E415050402040E1 +S315E0632240200D0A2347203038204646202A2E505256 +S315E063225047402040200D0A23502030382046462050 +S315E06322602A2E545450402040200D0A23462030380D +S315E0632270204646202A2E544F53402040200D0A2301 +S315E0632280542030302030342030332046462020201E +S315E06322905452415348402040200D0A004FEFFFC09F +S315E06322A048D77CFC4EB900E2FF2441F9000203F60D +S315E06322B033C000019472203C0001947823C000018E +S315E06322C0FD2A703F24002200E58AEB8953809282DF +S315E06322D006810001FD2E208141E8FFE44A8066E441 +S315E06322E0558F3F3C0800223C0001FD2E742345F9DF +S315E06322F00001A47842B90002043223C10002042E2D +S315E063230042B9000204122F0A4EB900E3AEC2713934 +S315E06323100001A478508FB4806772558F3F3C000705 +S315E06323204EB900E3897C2F00240F06820000003655 +S315E06323302F024EBAFB54102F003A12390001947300 +S315E0632340D0811F40003A4FEF000A42672F024EB931 +S315E063235000E2FF7E508F34004A7900018E64662C7A +S315E06323602F0A3F3C080042033F004EB900E2FFB04C +S315E06323705C8F3F0233C00001FD284EB900E2FF9E49 +S315E063238071790001FD28588F1583080071390001C2 +S315E0632390A4787A23BA80670000F04EB900E2FF249E +S315E06323A0558F764142421A3C00013F004BF900E10A +S315E06323B0C4A449F900E1C4B645F90001A4784EB96D +S315E06323C000E30056487AFDB048790001A4782C0012 +S315E06323D04EBAFAB64FEF000C79422005E9A8714090 +S315E06323E0C086677048790001A4784E95487AFDFF08 +S315E06323F048790001A47826404E944FEF000C200BF9 +S315E063240058807140A741C2821E320800D287158187 +S315E06324100800200B5E8071402204E4811E320800CE +S315E0632420D28715810800A340B0846C107230200B0C +S315E063243006800000000A714015810800200B0680C3 +S315E063244000000016714047EB000F15830800714BDF +S315E0632450158308005282714252837220B28066000D +S315E0632460FF78487AFDA748790001A4784EB900E180 +S315E0632470C4B648790001A4784EB900E1C4A44FEF2D +S315E0632480000C33C00001FD28280F2A3C00E3897C59 +S315E0632490424345F90001A47806840000003E4BFA06 +S315E06324A0F9FA49FAFB4E47F900E27D984DF900E205 +S315E06324B0F7EC600002627100240A7C235282BC80DE +S315E06324C067062442600002502442724D7112B28064 +S315E06324D0670000886D1A7C45BC80670001766D06EF +S315E06324E0123C0044602C7C47BC806D00022A606A23 +S315E06324F07257B280677C6D127C50BC80675C123C1D +S315E06325000054B2806600021060107C66BC80674A45 +S315E06325107270B280660002006040558F3F3C0001F6 +S315E06325204E952F002F02740B4E944FEF000C244010 +S315E0632530558F3F3C00014E953E82528220452C00EA +S315E06325404E902F0652802F004E9471C24FEF000CCF +S315E06325507211B28066DA600001BE558F3F3C0001BE +S315E06325604E952F002F024E944FEF000C24406000EF +S315E063257001A67543528AA746BC826D00019A7052E2 +S315E06325804C00280022020681000218902F012F0AD0 +S315E06325904E932C020686000218922F062442D5FC3F +S315E06325A00001B2B82C0206860002188A2F004E9309 +S315E06325B02042D1FC000218882F082F004E9332394F +S315E06325C000014BA0C3EA65D0354165D02F062F00E5 +S315E06325D04E93323900014BA44FEF00202C0206865E +S315E06325E00002188CC3EA65D2354165D22F062F0007 +S315E06325F04E93323900014BA02C0206860002188EF8 +S315E0632600C3EA65D4354165D42F062F004E9332393C +S315E063261000014BA42C02068600021894C3EA65D631 +S315E0632620354165D62F062F004E934FEF00182042B3 +S315E0632630D1FC000218965280600210C124407C40AF +S315E0632640121252807501BC8266F0421052836000BA +S315E063265000C62F04486A00014E93322F0046508F1E +S315E06326602F04A3462F0024010282000000804A4221 +S315E063267056C24882448233C2000218787460C481C9 +S315E0632680EA8233C2000218767410C4814A4256C2A3 +S315E06326904882448233C20002187C7408C4814A4289 +S315E06326A056C24882448233C20002187AAF42C2827B +S315E06326B033C1000218804E9372102440302F0046D7 +S315E06326C05C8F4267C2804A4157C14881448133C1C6 +S315E06326D00002187E7208C2804A4156C1488144812D +S315E06326E033C100021882A941C2804A4157C1488179 +S315E06326F0448133C100021886A541C280C0864A413F +S315E063270057C1BD8048813F00448133C100021884CC +S315E063271042674E96508F10126600FD9C487809908A +S315E0632720487900E504A44879000204364EB900E02E +S315E06327300EC445F9000204364FEF000C284A4242C4 +S315E063274097CB4BF900E2FE8C60203F2C0006528B60 +S315E063275049EC00223F004E953F003F024E95508F75 +S315E063276072483400714BB2806708A1432014B68087 +S315E063277066D84878099048790002043648790002B9 +S315E06327800DC64EB900E00EC4260252834FEF000C2D +S315E063279034390002044EC5F90002044C75426C06F6 +S315E06327A006820000000F283900E525B8E8827A1230 +S315E06327B098B900E525B4D48279442F044EB900E391 +S315E06327C001F22F042F3900E525B42F0023C0000260 +S315E06327D019D04EB900E00EC433C5000194744FEFCF +S315E06327E00010734B41F900020436424043F900019D +S315E06327F0B2B860267C01281052804245794406844B +S315E06328000000324F33864A007968000641E80022C9 +S315E063281006840000324F33854A007940B2846ED431 +S315E063282041F90002175642404241794360124A50E9 +S315E0632830670630805280600430BCFFFF5281548863 +S315E06328407B41B8856EE8C1C27F4B4BF90001B2B8F4 +S315E06328502C0002860000FFFE2F064EB900E301F26C +S315E06328603A3900014BC6327900014BFC588F28791F +S315E0632870000219D023C0000219D491C87342CBFC7D +S315E0632880000C5489605C2C12280606840000324FE3 +S315E063289052884C01680079754A00354509AE35457D +S315E06328A0001E354909B04C0148007DC63549002014 +S315E06328B0DC8C248679C4D88025440990282A0004D0 +S315E06328C04C01480079C4D88C254400042544099416 +S315E06328D038390002044E354409AC3544001C45EAF8 +S315E06328E000227948BE846E9E71790002044C6C02C4 +S315E06328F05E802C00E68E3A790002044E42457743C9 +S315E063290049F90001B2B87F4247F900E00EC445F9E0 +S315E063291000E263FE605406800000324F38340A00FA +S315E0632920A141714420403005C1C2B2886720C9C263 +S315E06329307140D0B9000219D02F072F007944D8B976 +S315E0632940000219D42F044E934FEF000C60087940D0 +S315E0632950D8B9000219D0558F3F0D52853F062F0433 +S315E06329603F062F044E924FEF00107145B6806EA678 +S315E0632970323900014BC63039000204503079000128 +S315E06329804BFC32790002044E343900014B8CC3FCB4 +S315E0632990000641F18802D081D080734233C80001DA +S315E06329A0FD2633C00001FD240C810000012C6E047A +S315E06329B0424160027208363900014BC0D280247905 +S315E06329C00002043247F900E3E34C48C387C12003BE +S315E06329D0484048C081C32602D28033C10001FCD49B +S315E06329E0323900014A3E200854809681220348C169 +S315E06329F083C02401484248C285C1D08233C0000106 +S315E0632A00FCD6603032390001FCD630390001F91C5E +S315E0632A10486A001A486A00183A390001FCD4C3EAE6 +S315E0632A20001AD0813F00CBEA00183F054E9324524B +S315E0632A304FEF000C4A8A66CC30790001FD243039C9 +S315E0632A400002044C4242720932790001FD26424398 +S315E0632A507A052C089C80714633C80001FCEC33C8C8 +S315E0632A600001FCF033C20001FCDE20006A02528002 +S315E0632A70343900014BFC33C10001FCD8220955818E +S315E0632A8033C30001FCE433C30001FCE833C3000154 +S315E0632A90FCFA33C30001FCFE33C50001FCDA33C341 +S315E0632AA00001FD00E280928233C30001FD0233C37D +S315E0632AB00001FD0691C033C00001FCDC33C00001B8 +S315E0632AC0FCE033C00001FCFC303900014BA033C3AA +S315E0632AD00001FD0C33C10001FCE233C10001FCE6F9 +S315E0632AE033C90001FCEA33C90001FCEE33C10001DE +S315E0632AF0FCF233C80001FCF433C10001FCF633C8D1 +S315E0632B000001FCF8C1FC000C33C00001FD0433C0D6 +S315E0632B100001FD08303900014BA433C00001FD0A12 +S315E0632B2033C00001FD0E33C30001FD1033C3000162 +S315E0632B30FD124CD77CFC70014FEF00404E75207957 +S315E0632B4000020432428042B9000204326008221075 +S315E0632B502080200820414A8866F423C000020432BC +S315E0632B604E754FEFFFCE48EF3C3C000248780800D5 +S315E0632B704267363C008048790001A4784EB900E0AC +S315E0632B800DE8702372454FEF000C13C00001A47883 +S315E0632B9013C10001A4794A790002187866024243B8 +S315E0632BA03039000218767460EB88C0824A79000295 +S315E0632BB0187C6706143C0010600242424A790002C0 +S315E0632BC0187A670472086002424138390002188055 +S315E0632BD0558F80848083808280813F0048790001BD +S315E0632BE0A47A4EBAF35C508F24004A790002187EC9 +S315E0632BF067044240600270104A79000218826704F3 +S315E0632C0076086002424386804A7900021886670442 +S315E0632C1042406002700486804A7900021884670441 +S315E0632C20424060027002558F4267868047FAF3122C +S315E0632C3049F9000218963F3CFFFF42674EB900E24E +S315E0632C40F7EC5C8F4A4057C04880448086803F03F8 +S315E0632C5076042F024E934242508F2A401AFC000DAF +S315E0632C601AFC000A1AFC00233802558F1AFC005737 +S315E0632C70C9FC00522444D5FC0001B2B83F2A65D8AA +S315E0632C802F0D4E935C8F3F2A65DA2F004E93322ADF +S315E0632C9065D05C8F48C183F900014BA03F012F00EB +S315E0632CA04E93322A65D25C8F48C183F900014BA407 +S315E0632CB03F012F004E93322A65D45C8F48C183F976 +S315E0632CC000014BA03F012F004E93322A65D65C8FFD +S315E0632CD048C183F900014BA43F012F004E935C8FFB +S315E0632CE03F2A65DC2F004E93508F72402A401AFCD0 +S315E0632CF0002071344800B28067102044D1FC0002A2 +S315E0632D00189660021AC0101866FA1AFC00405282DE +S315E0632D1053831AFC000D1AFC000A4A436600FF4619 +S315E0632D204EBAFE1C24790002043247FAF21449FAD9 +S315E0632D30F29C6000012C1ABC0023A3422049322A8C +S315E0632D4000067141B480675A6D064A416716605E54 +S315E0632D50A541B2806708A742B4806652604C10FC16 +S315E0632D60004D604A302A0004A741A742C280B4817D +S315E0632D70660610FC004760367208C0814A40670405 +S315E0632D8070506002704612807410322A0004C28268 +S315E0632D904A416708068000000020128041E900018D +S315E0632DA0600C12BC00445288600410FC0054302A64 +S315E0632DB00004A941C0814A406734302A0018558F20 +S315E0632DC048C081F90001FCD43F002F084E93322AB4 +S315E0632DD0001A30790001F91C5C8F928848C183F947 +S315E0632DE00001FCD63F012F004E93508F2040558F54 +S315E0632DF03F2A0012A9422F084E935C8F3F2A0014A4 +S315E0632E002F004E93508F204010FC0020302A0004A0 +S315E0632E10C0824A40670E302A00166602702010C0F0 +S315E0632E2010FC00202F2A000A2F084E942F2A000E4A +S315E0632E302F004E94720D4FEF001020402A4011414F +S315E0632E40FFFF1AFC000AA741716A0006B280660EAC +S315E0632E507006245253804A4067044A8A66F42452D1 +S315E0632E6043ED00014A8A6600FECE24491ABC001A85 +S315E0632E70421A4EBAFCCA558F95FC0001A4783F0A04 +S315E0632E8033CA0001FD2848790001A4784EB900E30E +S315E0632E90AEE0508F4A6F0034670000A4303900011A +S315E0632EA0FD28260F0683000000204BF900E3897CAA +S315E0632EB049FAEFD647F900E3006845F900E3494686 +S315E0632EC0538033C00001FD28558F3F3C00074E9584 +S315E0632ED02F002F034E94102F002C123900019473A8 +S315E0632EE0D0811F40002C4FEF000A42672F034E93B9 +S315E0632EF0508F24004A7900018E64671842A73F3CED +S315E0632F000022A5423F3C00014E92508F7140B4804F +S315E0632F1066B6602A4A4067B048790001A4783F39CB +S315E0632F200001FD283F004EB900E2FFCE5C8F3F0211 +S315E0632F3033C00001FD284EB900E2FF9E588F4CD79F +S315E0632F403C3C4FEF00304E754FEFFFDA48EF7C3C89 +S315E0632F5000023F3900014B8C424242434BF900E3A6 +S315E0632F60871249F90001B2B847F900E00EC479FC6B +S315E0632F7080003F3900014BC0426742673F3C000136 +S315E0632F804EB900E386922479000204324FEF000CD7 +S315E0632F9041F9000238C623D000021A00600000E25D +S315E0632FA0302A0004A941C0814A40670000D2558FA8 +S315E0632FB03F390001FD26A5453F390001FD243F2A3F +S315E0632FC0001A3F2A00183F3C00014E95736A0006DB +S315E0632FD04FEF000CBA81661A322A00162A0406817C +S315E0632FE0FFFFFFBF73C1E2AD86854A6A00126602E0 +S315E0632FF0848535400008714022002A00EB8DE7891D +S315E06330002C404DEE1EEF2045224591C14241D1FC55 +S315E06330100001B2B87A1F3141672E3141672C322AFB +S315E063302000123145672A3981EA004DF10A00C3FC93 +S315E06330300022068100020DC6DDFC00022654214E05 +S315E06330406730487800222F012F0E4E934FEF000C26 +S315E0633050322E001630390001FD242D6A000A00087D +S315E06330609081714020006A025280E2803D40001206 +S315E06330704DEE000C321671AA001780813C80245213 +S315E06330804A8A6600FF1CC4834A4267264240323C52 +S315E063309080002601C6824A43670806800000004135 +S315E06330A06012528077407810B883670673C1E2890D +S315E06330B060E070414CD77C3C4FEF00244E754FEF98 +S315E06330C0FFE448D71C3C3A2F0020242F0026266FC6 +S315E06330D0002A247900020432796F002249F900E27A +S315E06330E0FCA4776F0024604A4A45670A716A000860 +S315E06330F0B680663C6040716A0006B8806632302A04 +S315E06331000004A941C0814A4066262F022F2A000E99 +S315E06331104E94508F4A4067044253601A2F022F2A17 +S315E0633120000A4E94508F4A40670636BC000160063B +S315E063313024524A8A66B2200A4CD71C3C4FEF001CE5 +S315E06331404E750000226F0008202F000420401219FC +S315E063315010C166FA4E754E56FFC848D70C0C4267E7 +S315E0633160260E0683FFFFFFEC342E00083F3C01008A +S315E06331704EB900E3AC16486EFFF2486EFFF0486E58 +S315E0633180FFEE2F033F3C00043F390001FAC24EB91C +S315E063319000E3AD0A2F034EB900E25E324FEF001A49 +S315E06331A0486EFFFC486EFFFE3F024879000219DC79 +S315E06331B04EB900E3A81A4FEF00104A790001F59C77 +S315E06331C06640558F3F024879000219DC4EB900E349 +S315E06331D08BEE508F20403228001A302EFFFE366881 +S315E06331E000203628001ED0813D40FFFE302EFFFCD6 +S315E06331F032280014D0813D40FFFC30280018D7C048 +S315E06332006012363900014BA0367900014BA4C7FC46 +S315E0633210002D528B3F3C000145F900E275FC240E1C +S315E06332200682FFFFFFD83F3C00204E923F3C000101 +S315E06332303F3C00174E923F3C00073F3C00184E92DE +S315E063324042673F3C00194E924267426742A72F02AC +S315E06332504EB900E261FA326EFFFE2F02486EFFF46A +S315E0633260306EFFFC3D49FFF443F138FF3D48FFF61E +S315E063327041F0B8FF3D49FFF83D48FFFA4EB900E239 +S315E06332807A684FEF00243F3C00013F3C00194E92C1 +S315E06332903F3C00033F3C00204E925C8F3F3C000185 +S315E06332A03F3C000342674EB900E25FCC42673F3C76 +S315E06332B001014EB900E3AC164FEF000C4CEE0C0C7B +S315E06332C0FFC84E5E4E754E56FFF82F02486EFFF806 +S315E06332D0486EFFFA242E0008486EFFFC486EFFFE38 +S315E06332E02F024EB900E3A96E3F2EFFF83F2EFFFA99 +S315E06332F03F2EFFFC3F2EFFFE3F3C000842672F0256 +S315E06333004EB900E3A7664FEF0024242EFFF44E5E2A +S315E06333104E754E56FFF82F032F02486EFFF8486E40 +S315E0633320FFFA486EFFFC486EFFFE242E000A362E37 +S315E063333000082F024EB900E3A96E4FEF00123F2E4D +S315E0633340FFF83F2EFFFA3F2EFFFC3F2EFFFE42675C +S315E06333504267426742673F034EB900E3A8D84FEF3F +S315E063336000144A4366223F2EFFF83F2EFFFA3F2EB4 +S315E0633370FFFC3F2EFFFE3F3C000842672F024EB93B +S315E063338000E3A7664FEF0010242EFFF0262EFFF42E +S315E06333904E5E4E75426742674EB900E3AC16588F90 +S315E06333A04A79000110EC670E2F390001FAB24EBA82 +S315E06333B0FF16588F6018558F2F390001FAB24267AE +S315E06333C04EBAFF507001508F33C0000110EC558F39 +S315E06333D042672F390001FAB24EB900E3A8BA508FBB +S315E06333E04A79000110EE670C2F390001FAAA4EBA4A +S315E06333F0FED6588F42673F3C00024EB900E3AC16F7 +S315E0633400588F4E754E56FFEC48D7001C3F3C001074 +S315E0633410280E5184362E000C242E00083F032F021B +S315E06334204EB900E2A1D0487800082F002F044EB9C8 +S315E063343000E00EC44FEF0012486EFFFA2F043F031D +S315E06334402F024EB900E3A81A3F2EFFFE3F2EFFFC84 +S315E06334503F2EFFFA3F2EFFF83F3C00083F032F0263 +S315E06334604EB900E3A7664FEF00204CEE001CFFEC7D +S315E06334704E5E4E752F02206F00082008742A73187B +S315E0633480B48166F6600253802040745C7310B48145 +S315E063349066F4241F4E755C2A2E2A00002F032F0242 +S315E06334A0202F0010206F000C2408762A7318B6814B +S315E06334B066F62F002F024EBAFC8C508F2F42000C1B +S315E06334C0203C00E334962F400010241F261F60FF44 +S315E06334D0FFFE8FE62F2F00044EBAFF9A588F2040E7 +S315E06334E053887110725CB28066F6487AFFAA2F0839 +S315E06334F04EBAFC52508F4E752F032F02222F0010C7 +S315E0633500206F000C2008762A7518B68266F62F417E +S315E063351000102F40000C241F261F6000FC284FEF8D +S315E0633520FFF048D70C0C7404262F001447F900E328 +S315E0633530998245F900E1C4D4558F3F024E93588F83 +S315E063354020404A68000667122F032028001850803F +S315E06335502F004E92508F4A40670A53824A4266D89A +S315E06335604240600270014CD70C0C4FEF00104E7571 +S315E06335704FEFFFF448D7040C242F0010262F0014D6 +S315E06335802F024EBAFEF0588F244041EAFFFF6002F5 +S315E063359053887110725CB280660852884A886608FE +S315E06335A0601CB48865EA601642122F032F084EB991 +S315E06335B000E1C4D4508F4A40671814BC005C2F43C3 +S315E06335C000142F4200104CD7040C4FEF000C600040 +S315E06335D0FF284CD7040C4FEF000C4E752F0A2F02D1 +S315E06335E0242F000C2F024EBAFE8C588F24404212D1 +S315E06335F02F2F00102F024EB900E1C4D414BC005C37 +S315E0633600508F4A4057C0241F245F488044804E75DC +S315E0633610226F000420494A1966FA600253887110E2 +S315E0633620725CB28066F6487AFE6E2F084EBAFB1677 +S315E0633630508F4E752F02242F000C226F000820490D +S315E06336404A1966FA600253887110725CB28066F654 +S315E0633650486800014879000111344EBAFAE8508FA0 +S315E06336602F42000C203C000111342F400008241F38 +S315E063367060FFFFFFC4084A7900018E646714558FC3 +S315E06336803F3900018E664EB900E3A95A588F42402E +S315E06336904E7570014E752F2F00044EB900E3016A33 +S315E06336A0588F60D24FEFFFCE48EF7CFC00022C2FA1 +S315E06336B00036262F003A426747F900E2FF7E45FA75 +S315E06336C0FFB62F064E933A004E92508F3400670052 +S315E06336D0021E558F42672F034E93508F38004A7907 +S315E06336E000018E64671671F900018E66A541B280AA +S315E06336F06700010C4E9234006000023C558F3F0038 +S315E063370045FAFF324EB900E2FF9E487900011104A3 +S315E06337102F064E922F032F064EB900E1C4D44FEF26 +S315E063372000144A4057C2488244824A42670A4200CA +S315E063373013C000011114600C4879000111142F03C2 +S315E06337404E92508F558F4879000111043F3C000239 +S315E063375045F900E2FB802F390001FAB24E925C8FA5 +S315E06337602EBC000111143F3C00032F390001FAB26D +S315E06337704E924FEF000C4A42670001804EBAFC1648 +S315E06337803F3C000324390001FAB23F3C00042F02B8 +S315E06337904EB900E2FC043F3C000A58803C003F001F +S315E06337A07D462F024EB900E2A1D04FEF00102040D4 +S315E06337B0AD404250B086670CAB41B2866600013CD1 +S315E06337C0740160024242558F3F054EB900E2FF9EA7 +S315E06337D0588F60000162558F3F0574014EB900E270 +S315E06337E0FF9E588F600001502F034EBAFE2448793E +S315E06337F0000111242F034EBAFD004FEF000C558FE5 +S315E06338003F2F004274017E012F034EB900E3006847 +S315E0633810508F38003C0745FAFE5E49F900E3AC1683 +S315E06338204DF900E3494647F900E2FF9E4BF900E3B1 +S315E0633830016A607E4E923400670000822F39000190 +S315E0633840F6523F390001F6563F054EB900E2FFB046 +S315E06338503C004E92508F340067584A4667542F397E +S315E06338600001F6523F063F044EB900E2FFCE3F4009 +S315E063387000364E92508F3400673871C673EF002E70 +S315E0633880B280672E4267424242674E9442A73F3C0C +S315E063389000203F3C00014E9642673F3C00024E9457 +S315E06338A04FEF000E3F054E933E844E932F034E95A6 +S315E06338B0508F4A4667064A426600FF7A4A47672E52 +S315E06338C04A42672A558F3F2F004045F900E2FF9E43 +S315E06338D03F2F00403F044EB900E300BC4EBAFD986B +S315E06338E05C8F3F0534004E923E844E92588F300291 +S315E06338F04CD77CFC4FEF00304E75558F487900010D +S315E063390011143F3C00032F390001FAB24EB900E2CD +S315E0633910FBCC4879000111244879000111144EB9B2 +S315E063392000E2FAD24FEF00144A390001112467002E +S315E0633930FEA66000FEB442476000FEDA256400003E +S315E06339404FEFFFC848D77CFC242F00442A2F00485A +S315E063395048790001F658424476014EB900E2FF34F5 +S315E06339604BF900E1C5D63EBC00162F024EB900E224 +S315E0633970FF48508F7F6F003C4DF90001F66C49F9C3 +S315E063398000E2FB8047FAFA7E45FAFB6E4A7900016C +S315E06339908E646700010C71F900018E667212B28063 +S315E06339A06708A546BC80660000EE4A6F003C670880 +S315E06339B0A340B087665A600852B90001F7BC60500D +S315E06339C02F024EBAFB5A588F4A4066042042601271 +S315E06339D072017C1033C100018E6433C600018E66CA +S315E06339E0601A2248722A7118B28066F64206134656 +S315E06339F0FFFF2F024EB900E301DE588F4EBAFC7823 +S315E0633A00487AFA942F0236004EB900E1C4B6508F75 +S315E0633A104AAF003E6740206F0050558F30105380A9 +S315E0633A2030803F00487AFF164879000110FC4E95D6 +S315E0633A305C8F2EBC000110FC3F39000110F22F2F82 +S315E0633A4000464E944FEF000A3F39000110F22F2FE4 +S315E0633A5000424E93508F53844A446D0001F42F0223 +S315E0633A6041FAFA722F4800384E90588F206F00342F +S315E0633A70A540B08766062F054E90588F3004C1FC8B +S315E0633A80002C06800001F6582F004EB900E2FF34A1 +S315E0633A90588F600001B04EBAFBDE3600670001A6C0 +S315E0633AA073447C2C200120414C0608001236080141 +S315E0633AB04881324172102C09CC814A46670000A4E2 +S315E0633AC043F90001F6767D310800123C002EB2869A +S315E0633AD067000172AD46BC886D00016AD0892F002C +S315E0633AE02F022F4000384EBAF9B4508FA541202FEC +S315E0633AF00030B287663C2F002F054E922F054EB9F4 +S315E0633B0000E3007E4FEF000C4A7900018E64671490 +S315E0633B1071F900018E661C3C0005BC8067064EBAEF +S315E0633B20FB563600487AF9702F054EB900E1C4B604 +S315E0633B30508F52843004C1FC002C06800001F65895 +S315E0633B402F004EB900E2FF34588F4A43670000F610 +S315E0633B50558F3F3C00162F024EB900E2FF486000E6 +S315E0633B6000E24A6F003C672E2040D1FC0001F67606 +S315E0633B702F082F022F4000382F48003C4E92508F7B +S315E0633B80A341202F0030206F0034B2876720A5461B +S315E0633B90BC87666260242040D1FC0001F672201087 +S315E0633BA052B90001F7B8D1B90001F7C060502F02EE +S315E0633BB04EBAFAE4588F3600603C2F082F052F4043 +S315E0633BC000384E925C8F202F00322040D1FC0001FA +S315E0633BD0B2B81236080148813F013F2843B83F280F +S315E0633BE043B62F052F024EBAFABC2F0536004EBAFE +S315E0633BF0FA204FEF00142F024EBAFA16588F4AAFE7 +S315E0633C00003E6740206F004C558F30105380308004 +S315E0633C103F00487AFD284879000110F84E955C8F9D +S315E0633C202EBC000110F83F39000110F02F2F00463B +S315E0633C304E944FEF000A3F39000110F02F2F0042F8 +S315E0633C404E93508F4EB900E2FF664A436600FD3EEF +S315E0633C50716F003CA341B28066124A6F0054660CF2 +S315E0633C60558F3F2F00444EBAF4EE588F30034CD74E +S315E0633C707CFC4FEF00384E752F02206F000820085A +S315E0633C80121867087301745CB48166F2528020404F +S315E0633C902248121867087301745CB48166F24211B4 +S315E0633CA0241F4E752A2E2A004FEFFFE048D77C1C6F +S315E0633CB0262F00242043282F002C731020447110F4 +S315E0633CC0B081660000E6243C0001F60045F9000198 +S315E0633CD0F5AE4DFAF4704BFAFFA047F900E1C4D4B0 +S315E0633CE02F0348790001F5AE4E962F04487900011B +S315E0633CF0F6004E962F0A4E952F0249F900E1C4D499 +S315E0633D0024404E95487AFF9E2F0A24004E934FEF48 +S315E0633D1000204A406722487AFF8C2F024E93508FE9 +S315E0633D204A40670000862F0A2F024E93508F4A401F +S315E0633D3066AE103C00016074487AFF6A2F024E94C7 +S315E0633D40508F4A406764246F0028605A716A001C8A +S315E0633D50A141B280674E2200E789EB8890810680B5 +S315E0633D60000219E620403010080000006736102A8A +S315E0633D70000572504880C081123C0010B280662410 +S315E0633D802F02486A000E4E94508F4A40661642A749 +S315E0633D903F3C001C3F3C00014EB900E34946508F6F +S315E0633DA04240600824524A8A66A270014CD77C1C62 +S315E0633DB04FEF00204E754FEFFFCC48D77CFC382F92 +S315E0633DC00038266F0046286F004A42673F3C000290 +S315E0633DD04EB900E3AC164240588FA34133C00001AD +S315E0633DE010EC7144B2806724123C0002B2806734FF +S315E0633DF04A446600052E42B90001F7B842B90001AC +S315E0633E00F7BC42B90001F7C060000518303900011C +S315E0633E10FAC833C0000110EE6700050826390001D1 +S315E0633E20FAAE60444EB900E302120C800000FFF084 +S315E0633E306F0270F00680FFFFFE003F0033C00001B3 +S315E0633E40F65642674EB900E301F2588F23C000018C +S315E0633E50F65230390001FAC633C0000110EE67004E +S315E0633E6004C226390001FAAA7003720233C0000164 +S315E0633E7010F033C1000110F2103C0004123C00055F +S315E0633E8033C0000110F433C1000110F64A836700C2 +S315E0633E9000A4558F3F134BF900E1C5D645F900E21F +S315E0633EA0FB80487AFA984879000110F84E955C8F62 +S315E0633EB02EBC000110F83F39000110F02F034E923B +S315E0633EC04FEF000A3F14487AFA744879000110FC10 +S315E0633ED04E955C8F2EBC000110FC3F39000110F259 +S315E0633EE02F034E925C8F2E8345F900E3AC16700187 +S315E0633EF0426733C0000110EC4EBAF418426742677A +S315E0633F004E924FEF000A42672F034EB900E3A8BA19 +S315E0633F1042673F3C00024E923F39000110F63F395B +S315E0633F20000110F42F034EB900E2FC524FEF001488 +S315E0633F30340060027401246F003E2C3C00E2FB8097 +S315E0633F407B444DFAF5B44BFAF6C82F4C002C60006F +S315E0633F50035C716A001CA141B2806700034E2200D4 +S315E0633F60E789EB8890810680000219E620403010ED +S315E0633F700800000067000334102A00057240488099 +S315E0633F80C0814A40660003242F2F003A4879000136 +S315E0633F90F5AE4EBAF1B0508FA540B0856600008AA3 +S315E0633FA02F2F004248790001F6004EBAF198508F00 +S315E0633FB04A79000110EE66704A6F00566606302A4B +S315E0633FC0001C6004302F0058558F486F0032486FED +S315E0633FD000383F004879000219DC4EB900E3A81ABD +S315E0633FE04FEF00104A790001F59C660E3039000107 +S315E0633FF0FD2432390001FD266010303900014BA003 +S315E0634000323900014BA4C1FC002D3F2F00543F2FF2 +S315E063401000543F2F00343F2F00383F013F004EB935 +S315E063402000E3AA7C4FEF000C102A0005721048806B +S315E0634030C0814A40670001922E0A06870000000E9F +S315E06340402F0748790001F5AE4EBAF452508FA5407A +S315E0634050B085660001442F0748790001F6004EBA41 +S315E0634060F51048790001F6004EB900E3007E4FEFA4 +S315E0634070000C49F900E2FA7A600000EC71C0AB41EA +S315E0634080B280660000F248790001F60048790001E3 +S315E0634090F5AE4EBAF548508F4A40670000BE4879A0 +S315E06340A0000111042F074E944200548F2EBC000189 +S315E06340B011043F3C0002204613C0000111142F395E +S315E06340C00001FAB24E905C8F2EBC000111143F3CA6 +S315E06340D0000320462F390001FAB24E904EBAF2B68B +S315E06340E03F3C00053F3C00042F390001FAB24EB96C +S315E06340F000E2FC524FEF00143400676A558F48794B +S315E0634100000111143F3C00032F390001FAB24EB9A6 +S315E063411000E2FBCC487900011124487900011114CF +S315E06341204EB900E2FAD248790001F6004E954FEFB8 +S315E063413000184A3900011124672A487900011124DD +S315E063414048790001F6004E9648790001F6004EB9CB +S315E063415000E3007E4FEF000C600C424033C0000189 +S315E06341608E6460024242303900018E664A7900010C +S315E06341708E646606600A424260064A426600FEFE56 +S315E0634180487AF31448790001F6004EB900E1C4B603 +S315E0634190508F4A4267000114558F3F39000110EE94 +S315E06341A02F2F00302F0B48790001F6004879000184 +S315E06341B0F5AE3F2A001C2F033F044EBAF7844FEF58 +S315E06341C0001C3400600000E44A4467222E0A068736 +S315E06341D00000000E2F0748790001F5AE4E96508F2A +S315E06341E0A341B285671AA540B08566726036222A16 +S315E06341F0000A52B90001F7B8D3B90001F7C06066A7 +S315E063420048790001F5AE4EBAF48E588F34004A7998 +S315E0634210000110EE6648558F3F2A001C4EBAEF3810 +S315E0634220588F603A2F0748790001F6004E96102AB8 +S315E063423000055C8F48803F003F2A00083F2A00065E +S315E063424048790001F60048790001F5AE4EBAF456B6 +S315E063425048790001F60034004E954FEF00142F2F96 +S315E0634260003A4E95588F4A8367403013558F538093 +S315E063427036803F00487AF6C64879000110F84EB9B1 +S315E063428000E1C5D65C8F2EBC000110F83F39000112 +S315E063429010F020462F034E904FEF000A3F3900019E +S315E06342A010F02F034EBAF15E508F24524A8A6706A6 +S315E06342B04A426600FC9E286F002C4A44670A7944AA +S315E06342C0A540B0846628601836B90001F7BA38B9F4 +S315E06342D00001F7BE206F004E20B90001F7C0600E03 +S315E06342E02F390001F6524EB900E30224588F4A791A +S315E06342F0000110EC6712558F2F390001FAB23F3C8B +S315E063430000034EBAF00E508F42673F3C00024EB94F +S315E063431000E3AC164CEF7CFC000470014FEF003811 +S315E06343204E7542836000FC0E203C0001ED5023C0D5 +S315E06343300001EDD071FC018F43F90001ED0823C95B +S315E06343400001ED4C41F90001EAB02200EB8922411C +S315E063435043F10C005380220906810001B2B8208143 +S315E063436041E8FFDC4A8066E243F90001ECAA203CBF +S315E06343700001B2B823C90001EC5443F90001EBFE36 +S315E063438023C00001EAF8203C0001EC5423C000019D +S315E0634390EBFE203C0001EBA823C90001EBA823C098 +S315E06343A00001EB52203C0001EAFC43F90001EB52C9 +S315E06343B042B90001EAD423C90001EAFC23C0000143 +S315E06343C0ED0042B90001ED0442B90001ECAA4E7575 +S315E06343D04FEFFFF448D71C00266F0012246F0016D8 +S315E06343E0286F001A2F0B4EB900E1C4A4588F723FB1 +S315E06343F006800000000DB2806546206F001E10EF58 +S315E0634400001110FC003A10FC005C4A13671060026E +S315E063441010C0101B66FA4A12670410FC005C4A126D +S315E06344206718600210C0101A66FA4A14670C10FC2B +S315E0634430002E600210C0101C66FA42107001600222 +S315E063444042404CD71C004FEF000C4E754FEFFFE038 +S315E063445048D77C1C2C6F0028262F002C282F003091 +S315E0634460266F0034246F0024204A22481018661011 +S315E06344704EB900E2FF240680000000413C806020E4 +S315E06344807100723AB28066E21429FFFF45E90001E2 +S315E0634490123C005C48823C827112B2806602528AA8 +S315E06344A0200A204A9DCE60187301745CB481670A62 +S315E06344B0143C002EB48166086004204960022C49EE +S315E06344C022405280121166E04A8E66022C49200A27 +S315E06344D02203600A28412A4018DD52815280B0885F +S315E06344E066F24200284899CA725C198038007110F6 +S315E06344F0B2806602528824482A4460021ADAB5CE4C +S315E063450066FA4200244E95C8158048004A1667123B +S315E0634510528E204E244B600214D8B1C966FA93CE0C +S315E0634520D7C942134CD77C1C4FEF00204E752F0240 +S315E0634530202F0008736F000C600C20407568001C28 +S315E0634540B282670620104A8066F0241F4E75202FDC +S315E06345500004206F00086002200122402211B1C1ED +S315E063456066F64E75226F000441F90001EAF822907F +S315E063457020894E75202F0004671620406002204193 +S315E0634580221066FA20B90001EAF823C00001EAF8CE +S315E06345904E7520390001EAF86708204023D0000110 +S315E06345A0EAF84E7520790001ED004A88671C4240BF +S315E06345B023D00001ED0020B90001ED0423C800011A +S315E06345C0ED0442A8004C3140000420084E752F0AE2 +S315E06345D0246F00082F2A004C4EBAFF9A588F41F990 +S315E06345E00001ED04600220402010B5C066F8209219 +S315E06345F024B90001ED0023CA0001ED00245F4E7586 +S315E063460060CC2F0A4EBAFF9E24404A806734558FAA +S315E0634610486A00082F2F00182F2F00182F2F001835 +S315E06346203F2F001A4EBAFDAA4FEF00144A406708BF +S315E0634630356F00160006600A2F0A4EBAFF92588F4E +S315E063464095CA200A245F4E754FEFFFCC48D77CFCB2 +S315E0634650342F0038A143202F003A7342B6816616A1 +S315E063466043F90001AC7820404242600622C82050FC +S315E063467052824A8866F67342A346BC816C0001AEF9 +S315E06346802801E28C2F41003045F90001AC7847F907 +S315E063469000E1C4D449F900E035306000015E3605D7 +S315E06346A06000013A2A43DBC4714D20720C0071430A +S315E06346B022720C00102900051C00488608000006DB +S315E06346C066000120122800057E40CE814A476600D7 +S315E06346D000F6B38008000004670E7E10CC874A4676 +S315E06346E066000100600000E071F90001F5AC2C0999 +S315E06346F02E0806860000000E06870000000EA9411C +S315E0634700B280650000DE303B0A0848C04EFB080213 +S315E063471000460050000A001E00A42228000A202951 +S315E0634720000AB0816D0000A06E0000B86028558F66 +S315E06347303F3C002E2F074E942F4000345C8F3F3C66 +S315E0634740002E2F064E942F2F00342F004E934FEFFB +S315E063475000104A40666C2F072F064E93508F6062B7 +S315E0634760302800083229000890814A4066543C2884 +S315E063477000063E290006720B71C63F47002E7FC7CF +S315E06347802040E2A822402007E2A893C020094A40DD +S315E06347906630123C003F2008EA8FEA88CE81C0810A +S315E06347A090874A40661C322F002E701FC0867C1F9E +S315E06347B0C286600C102900041228000448804881F0 +S315E06347C090814A406F1C714D7343D68E43F20C0061 +S315E06347D020721C0025911C0025880C004A436C005E +S315E06347E0FEC452852005D0847140B0AF00306D00C1 +S315E06347F0FEAE7944E2844A44670A20044480424533 +S315E06348002C4060E0558275C220390001AC782440C3 +S315E063481043F90001AC7CE58A06820001AC80600264 +S315E0634820244820592488B48966F642904CD77CFCA8 +S315E06348304FEF00344E7542404FEFFFE048D77C1CA4 +S315E0634840266F002495CA283C00E2FF66263C00E01A +S315E06348500EC449EB004C4BFAFD3A3740005042AB8D +S315E063486000522F2B004C4EBAFD0C2F390001EDD0D0 +S315E06348704EB900E2FF345C8F3F2B0006486B0008BD +S315E06348804EB900E2FF48508F4DF90001AC78340031 +S315E063489060684A8A66124E9524404A80665C726412 +S315E06348A033C100018E66605671390001ED6E722E7A +S315E06348B0B28067404878001748790001ED64486A3A +S315E06348C0000420434E904FEF000C102A0005723F20 +S315E06348D0C08115400005202A000AD1AB0052302B77 +S315E06348E00050734052802D8A1C00288A374000505E +S315E06348F0284A95CA20444E9034004A4266944294CC +S315E06349004A8A670C24B90001EAF823CA0001EAF887 +S315E0634910558F2F2B004C3F2B00504EBAFD2C274072 +S315E0634920004C4CEF7C1C0008303900018E664FEF7B +S315E063493000284E75226F0008202F000420401219CC +S315E063494010C166FA4E752F0A2F02342F000C246FBE +S315E0634950001048790001FA823F2F00123F3C0005C0 +S315E06349604EB900E3B35A508F4A8A67362F3900014E +S315E0634970FA8248790001FBD44EBAFFBA5C8F3F12E4 +S315E063498048790001FBD448790001FAD44EB900E1D5 +S315E0634990C5D64FEF000C203C0001FAD423C00001DA +S315E06349A0FA8241F90001FA822F50000E3F42000C71 +S315E06349B0241F245F60FF00005F8641EF000433D06D +S315E06349C00001F90641F9000237B833D00001F9086E +S315E06349D0424041EF000633D00001F90C41EF000895 +S315E06349E033D00001F90E41EF000A33D00001F9102C +S315E06349F041EF000C33D00001F91241EF000E33C0F2 +S315E0634A000001F90A33D00001F91460FF000031EACE +S315E0634A104FEFFFC848D77CFC426774042E3C00E145 +S315E0634A20C4D44BF900E38A3649F900E3A39047F926 +S315E0634A3000E3AD5A3F3C00024EB900E3AC164DF9D4 +S315E0634A4000E34836206F00402068001850882F48FE +S315E0634A500030588F2C0F2A0F280F260F068600008A +S315E0634A6000300685000000320684000000340683C9 +S315E0634A7000000036558F3F024EB900E39982588FA6 +S315E0634A8024404A6A000667762F2F002C202A0018F6 +S315E0634A9050802F0020474E90508F4A4066602F2A01 +S315E0634AA000184E963F3C00013F2A00064E952F0ABA +S315E0634AB04E9442674267486A005F3F3C00033F2A81 +S315E0634AC000064E932F062F052F042F033F3C000469 +S315E0634AD03F2A00064EB900E3AD0A4FEF002C3F2FA5 +S315E0634AE000303F2F00343F2F00383F2F003C3F2AF2 +S315E0634AF000063F3C00144EBAFEC24FEF000C5382F1 +S315E0634B004A426600FF70426742674EB900E3AC16FD +S315E0634B104CEF7CFC00044FEF003C4E754FEFFFB467 +S315E0634B2048D77CFC246F005024390001FAB6202A6A +S315E0634B30001850802F0048790001F5AE4EBAFDF6B5 +S315E0634B40508F41F90001F5AE4240600A7310765C1E +S315E0634B50B681660252804A1866F271407208B28084 +S315E0634B606D40260F280F70010683000000402E3C3F +S315E0634B7000E333120684000000332C3C00E3A8BA5A +S315E0634B802A3C00E2FC524DF900E2FBCC4BF900E231 +S315E0634B90FAD249F900E334F847F900E3007E6000AE +S315E0634BA000D042A73F3C00233F3C00014EBAFD984C +S315E0634BB0508F4240600000D242001F400040558F54 +S315E0634BC02F033F3C00022F024EB900E2FB805C8F6D +S315E0634BD02E82426720474E905C8F426720462F02C3 +S315E0634BE04E903F3C000420453F3C00032F024E902D +S315E0634BF04FEF00104A40677E558F2F033F3C00021C +S315E0634C002F024E962F042F034E954FEF00144A2F33 +S315E0634C10003367622F0448790001F5AE4E94487914 +S315E0634C200001F5AE4E934FEF000C4A7900018E64B6 +S315E0634C30672A42A73F3C001F3F3C00024EBAFD088D +S315E0634C4048790001F5AE53802F4000384EB900E352 +S315E0634C5036104FEF000C202F002C60144EB900E3A2 +S315E0634C6036764A4067102F0A4EBAFDA6588F60061D +S315E0634C704A406600FF44558F2F023F3C00034EB91E +S315E0634C8000E333127001508F4CD77CFC4FEF004C3E +S315E0634C904E754E56FFD8A14148D70CFC342E00081A +S315E0634CA03A2E00123C2E00143E2E0016366E001885 +S315E0634CB0246E000A282E000E7142B2806700008CD3 +S315E0634CC0A541B280661C48790001F7C42F2A004CDF +S315E0634CD0486A00084EB900E33CA84FEF000C4A402F +S315E0634CE06774558F3F0B260A50833F073F063F05A0 +S315E0634CF0486EFFF8486EFFFC486EFFFE2F042F2ACE +S315E0634D00004C2F0342674EB900E33DB64FEF0024F4 +S315E0634D104A6EFFFE66064A6EFFFC672E558F3F0BB3 +S315E0634D203F073F063F05486EFFF8486EFFFC486E57 +S315E0634D30FFFE2F042F2A004C2F033F024EB900E3F8 +S315E0634D403DB64FEF00247001600E426742674EB98D +S315E0634D5000E3AC16588F42404CEE0CFCFFD84E5E37 +S315E0634D604E754FEFFFF048D70C0C242F0014262F17 +S315E0634D7000182F024EB900E33474588F204326405F +S315E0634D80421324484A1866FA42222F032F024EB989 +S315E0634D9000E1C4D416BC005C14BC005C4A4057C056 +S315E0634DA04CEF0C0C00084FEF0018488044804E75BA +S315E0634DB02A2E2A005C2A2E2A003A5C2A2E2A000032 +S315E0634DC04FEFFFD4A34048D77CFC286F0046282FDB +S315E0634DD00030226F0034362F0038266F003A3A2FC0 +S315E0634DE0003E3C2F00403E2F00423C6F004442545D +S315E0634DF073790001F59CB081661241F90001F7C44D +S315E0634E001418703F7302B0816CF6600274412F0927 +S315E0634E1048790001F7C44EBAFB1C508F41F9000193 +S315E0634E20F7C42448722A7118B28066F64212714357 +S315E0634E30123C0001B280671E6D084A43670000C4F6 +S315E0634E40600EA541B2806776A742B480670000C46E +S315E0634E5070FF600000C4102B000572404BF900E15F +S315E0634E60C4B64880C0814A40670C487AFF442F0A3B +S315E0634E704E95508F6016486B000E2F0A4EBAFAB6FF +S315E0634E80487AFF322F0A4E954FEF001048790001BA +S315E0634E90EDF048790001F7C445FAFEC84E92508FAB +S315E0634EA04A40661448790001EEA048790001F7C4E8 +S315E0634EB04E92508F4A40675E38BC00016058717904 +S315E0634EC00001F59CA341B280660813C20001F7C4F2 +S315E0634ED06020558F3F2B001C4879000219DC4EB9E0 +S315E0634EE000E38BEE508F204041E8000D13D00001C4 +S315E0634EF0F7C4487AFEC548790001F7C54EBAFA3673 +S315E0634F00600C487AFEAC2F0A4EB900E1C4B6508F06 +S315E0634F1060047001600270023F4E00403F47003E0E +S315E0634F203F46003C3F45003A2F440032223C0001B5 +S315E0634F30F7C44CD77CFC2F4100363F4000304FEF3F +S315E0634F40002C6000FD4E2A0000004E56FFE47179A6 +S315E0634F500001F59C48D70C1C342E0008A341362E7D +S315E0634F600014382E0016266E000AB280661471426B +S315E0634F70E78806800001B2B8224020693EE210105D +S315E0634F806018558F3F024879000219DC4EB900E399 +S315E0634F908BEE508F20401028000D3F3C0010488078 +S315E0634FA0487AFFA4487AFFA0487AFF9E3F004EB94D +S315E0634FB000E346024FEF001024404A806700009EFC +S315E0634FC02F004EB900E34836588F206A004C4A8872 +S315E0634FD0676C42403140001C20504A8866F4720197 +S315E0634FE033C1000219E64A8B672A558F486EFFFE86 +S315E0634FF03F023F013F043F032F2E00103F2E000E7A +S315E0635000266B0018508B2F0B2F0A4EBAFDB44FEF69 +S315E0635010001C6020558F3F023F3C00013F043F0385 +S315E063502048790001F7C42F0A3F3C00014EBAFC649D +S315E06350304FEF0014424133C1000219E66002424079 +S315E06350402F0A2D40FFF84EB900E3460042574EB9AA +S315E063505000E389C2588F202EFFF8600242404CEE8F +S315E06350600C1CFFE44E5E4E754E56FFD448D73C7C2F +S315E0635070342E0008558F362E000A45F900E398C0B2 +S315E0635080382E000C3A2E000E3C2E00103F024E9254 +S315E06350903E8326404E92588F72402440206A001821 +S315E06350A071280008B280660C7144123C0003B2803A +S315E06350B06C0000E0486EFFFE486EFFF83F043F0376 +S315E06350C04EB900E36F0E4FEF000C4A80670820404D +S315E06350D03828000660024244206B0018724071284B +S315E06350E00008B280661442424BF900E3A28649FAAD +S315E06350F0FE5A47FAF91C60000084558F486EFFFC40 +S315E0635100426742673F063F052F2EFFF83F04202A9A +S315E0635110001850802F002F084EBAFCA64FEF001CF4 +S315E06351204A40676E71427743B680670C558F3F029C +S315E06351304EB900E389C2588F47FAF8D64A6EFFFC48 +S315E0635140671448790001EDD44E9348790001EE8403 +S315E06351504E93508F603C2F0A4E93588F60343F06D0 +S315E06351603F052F2EFFF83F042F0A3F024E944FEF81 +S315E063517000104A4067062F0A4E93588F3F023F3925 +S315E06351800001FABE4879000219DC4E95508F34006F +S315E063519066CC4CEE3C7CFFD44E5E4E754FEFFFD84B +S315E06351A0724048D77C3C206F002C20680018712839 +S315E06351B00008B280662E260F283C00E3A2864242B0 +S315E06351C04DF900E38BEE06830000002645F900E324 +S315E06351D0AC164BFAF77249FAFD7247F900E3958C20 +S315E06351E0600000B6558F4267426742674267487917 +S315E06351F00001F7C42F083F3C00014EBAFA964FEF21 +S315E063520000144A40670000B8558F3F3C00014EB931 +S315E063521000E3958C600000A671790001F59CA345D7 +S315E0635220BA80661841F90001F7C410187A3F730033 +S315E0635230BA816CF648803F4000266018558F3F027E +S315E06352404879000219DC4E96204071A8000D3F4074 +S315E0635250002E508F426742674E922F033F3C001DFC +S315E06352603F3C00024E9542673A003F3C00027B4575 +S315E06352704E924FEF0010A340B085661C42674267CB +S315E063528042A73F3C000342A73F024E944FEF000E16 +S315E06352903F3C00014E93588F3F0220443F39000163 +S315E06352A0FABE4879000219DC4E90508F34006600EE +S315E06352B0FF68426742674EB900E3AC16588F4CD736 +S315E06352C07C3C4FEF00284E75226F0008202F0004C8 +S315E06352D02040121910C166FA4E75256400002F0A44 +S315E06352E02F027409322F000C226F000E204945F914 +S315E06352F000E1C5D610FC0030420010BC003013401C +S315E0635300000271C1B480640C558F3F01487AFFCCCB +S315E06353102F09600A558F3F01487AFFC02F084E92E6 +S315E06353204FEF000C241F245F4E75202000004FEFE3 +S315E0635330FFEC700B48D70C1C362F0018246F001A4D +S315E063534073C3E0A930014A790001FAD06726754153 +S315E0635350780BB8826C12183C000CB8826710200197 +S315E06353600680FFFFFFF460064A4167066006740144 +S315E06353706004700C4242558F2F0A3F0047FAFF6084 +S315E06353804E935C8F486A000220030280000007E0C8 +S315E0635390EA883F004E93508F4A790001FAD067144A +S315E06353A0203C0002379C4A426706203C000237A84D +S315E06353B02F006004487AFF74486A00044EBAFF0A15 +S315E06353C04CEF0C1C00084FEF001C4E754FEFFFE8E7 +S315E06353D048D7047C362F001C7C1F242F001E2A022C +S315E06353E045FAFEFC548528030284000001E0CC8381 +S315E06353F04A790001FAD26712EA8C558F2F023F048D +S315E06354004E92548F2E853F066010558F2F023F06CE +S315E0635410EA8C4E92548F2E853F044E9271C3588226 +S315E06354202F42002674137209E2A822000681000067 +S315E063543007BC71FC147B4C010800E4A84CEF047CC8 +S315E06354400008C1FC006492803F4100244FEF0020D6 +S315E06354506000FE8C256C75004FEFFFD248EF0C0CB5 +S315E06354600002266F0036260F242F003206830000E3 +S315E063547000202F033F2B000845F900E2FB804EBA7C +S315E0635480FF4C548F2E833F2F003E2F024E924FEFF9 +S315E0635490000A260F0683000000272F033F2B000632 +S315E06354A04EBAFE8C548F2E833F2F00402F024E92CE +S315E06354B02F2F004A487AFF9E260F068300000027B7 +S315E06354C02F034EB900E1C5D64FEF00122E833F2F6F +S315E06354D000422F024E924CEF0C0C000C4FEF00385B +S315E06354E04E754E56FFB0302E000848D70CFC362E6C +S315E06354F0000A382E000C3A2E000EB7800800000032 +S315E06355006728558F3F2E00123F2E00103F053F045C +S315E06355103F3C00073F3C00013F3C00034EB900E2DD +S315E063552066744FEF001060000218487800182F2E5B +S315E06355300014486EFFD04EB900E00EC44FEF000C86 +S315E06355407020721013C00001F7C4102EFFD1C28021 +S315E06355504A41670472076002722013C10001F7C50E +S315E0635560722013C10001F7C64A006D0C43EEFFDA01 +S315E063557045F90001F7C76024703A722041EEFFD027 +S315E063558013D00001F7C745F90001F7CA13C000015C +S315E0635590F7C813C10001F7C9603814C02049101970 +S315E06355A0670E7300742EB48166F0600414FC002009 +S315E06355B0224A7E0B93FC0001F7C4BE896CEE4A1067 +S315E06355C067065288600214C0101866FA600414FC19 +S315E06355D00020204A700F91FC0001F7C4B0886CEE9E +S315E06355E0102EFFD172102C0A4880C0814A406708AA +S315E06355F042021D42FFE9604C202EFFD64242600C18 +S315E06356000680000003FF7E0A5282EEA80C800098B3 +S315E0635610967F63087342A947BE8166E42F00487AA2 +S315E0635620FE3447EEFFE92F0B4EB900E1C5D675426E +S315E063563041FA0B0A2F302C002F0B4EB900E1C4B6AA +S315E06356404FEF0014486EFFE94EB900E1C4A4588FEA +S315E06356507208928020013041600414FC002053807C +S315E06356607340A142B48166F271C8204643EEFFE916 +S315E0635670D1C060041080204A101945E8000166F441 +S315E063568010BC002014FC0020558F240E5F822F028D +S315E06356903F2EFFD44EBAFD367003508F204214D0AE +S315E06356A0538014E8000154884A40670414FC002DD3 +S315E06356B04A4066EA14FC0020558F47F900E25FCC66 +S315E06356C014FC0020486EFFF23F2EFFD24EBAFC6018 +S315E06356D014EEFFF214EEFFF314FC003A204A95FC55 +S315E06356E00001F7BE10EEFFF410EEFFF510FC0020AC +S315E06356F0486EFFF62F084EBAFBD04FEF000E3F3CE5 +S315E063570000013F3C00013F3C00014E9348790001B4 +S315E0635710F7C42F3900014A384EB900E034EC3F0A4A +S315E06357203F053F043F3C00034EB900E267404FEF5D +S315E063573000163F3C00013F3C000342674E93508FA7 +S315E063574030034CEE0CFCFFB04E5E4E754E56FFCC0E +S315E063575048D7040C4878001E240E51822F2E000889 +S315E0635760486EFFDA4EB900E00EC42F024EB900E28E +S315E06357705EB6486EFFEC45F900E25E324E922F2E3E +S315E0635780FFF43F2EFFEA3F2EFFE83F2EFFE63F2E74 +S315E0635790FFE43F2EFFE23F2EFFE04EBAFD464FEFBA +S315E06357A000202E8236004E92588F30034CEE040C66 +S315E06357B0FFCC4E5E4E754E56FFF82F0A2F02486EAB +S315E06357C0FFF8242E0008486EFFFA486EFFFC486E29 +S315E06357D0FFFE2F024EB900E3A96E4FEF001245F9C3 +S315E06357E000E3A8D83F2EFFF83F2EFFFA3F2EFFFCDB +S315E06357F03F2EFFFE426742674267426742674E92C9 +S315E06358003F2EFFF83F2EFFFA3F2EFFFC3F2EFFFEB3 +S315E06358103F3C000842672F024EB900E3A7664FEFAD +S315E063582000223F2E000C2F024EB900E3A8BA5C8F2C +S315E06358303F2EFFF83F2EFFFA3F2EFFFC3F2EFFFE83 +S315E063584042674267426742673F3C00034E924FEFCF +S315E06358500014242EFFF0246EFFF470014E5E4E7545 +S315E06358602F02242F0008558F42672F024EBAFF4856 +S315E06358703F3C000A3F2F00162F024EB900E2A1D04B +S315E06358804FEF0010241F204042504E75256C640094 +S315E06358904FEFFFDE48EF0C0C0002242F0026202F8B +S315E06358A0002E426742B90001F7B842B90001F7BC7E +S315E06358B042B90001F7C0220F0681000000222F01E2 +S315E06358C02F012F002F00426742A742674EB900E3DC +S315E06358D039404FEF001C4A4067602F390001F7B843 +S315E06358E0487AFFAA260F0683000000202F0347F9B4 +S315E06358F000E1C5D645F900E2FB8053B90001F7BC88 +S315E06359004E935C8F2E833F2F002E2F024E922F39BC +S315E06359100001F7BC487AFF76260F0683000000266F +S315E06359202F034E934FEF00122E833F2F00302F024B +S315E06359304E924FEF000C7001600242404CD70C0C64 +S315E06359404FEF00204E754FEFFFC448D71C7C262FE0 +S315E06359500040246F004447FAF9702F034879000149 +S315E0635960F5AE24390001FA8A42444E932F0348790F +S315E06359700001F6004E934FEF001041F90001F5AEDA +S315E0635980600252847118722AB28066F6260F068325 +S315E06359900000002F2F032A0A06850000000E2F055C +S315E06359A04EB900E2FA7A548F2E8347F900E2FBCED2 +S315E06359B03F3C00022F024EB900E2FB805C8F2EAAC9 +S315E06359C0000A3F3C00033F3C00053F3C00042F0ACE +S315E06359D02F024EBAFA844FEF001242673F3C000152 +S315E06359E03F3C0001102A000548803F003F3C000928 +S315E06359F02F024E934FEF000E3F3C000142673F3C60 +S315E0635A000001122A000548813F013F3C00082F024E +S315E0635A104E934FEF000E42672F024EBAFD9A3F3C1C +S315E0635A20000B3F3C000A2F024EB900E2FC524FEFF7 +S315E0635A3000104A40670000EC4267794449F900E2A6 +S315E0635A40FAD22644D7FC0001F5AE06840001F600DF +S315E0635A503F3C00024EB900E3AC16548F2C0F06862A +S315E0635A60000000242F063F3C00022F024EB900E2FD +S315E0635A70FBCC2F0B2F034E942F042F064E942F044B +S315E0635A802F0B4EB900E1C4D44FEF00244A40672A96 +S315E0635A9048790001F60048790001F5AE4EB900E3B6 +S315E0635AA001C44EB900E33676508F3600670E2F0495 +S315E0635AB02F054EBAF814508F60027601182A000556 +S315E0635AC03F3C000A48843F3C00092F024EB900E29E +S315E0635AD0A1D0508F20403010080000006706A34233 +S315E0635AE08484600474FEC484732A00057102B08101 +S315E0635AF067223F023F3C000148790001F6004EB958 +S315E0635B0000E3009E4EB900E33676508F36006704B5 +S315E0635B1015420005426742674EB900E3AC16588FFB +S315E0635B206002424330034CD71C7C4FEF003C4E751A +S315E0635B305C2A2E2A00004FEFFFE048D7003C262F71 +S315E0635B40002842673F3C00024EB900E3AC162F2FB4 +S315E0635B50002848790001F5AE24390001FA924EBA7D +S315E0635B60F7684FEF000C41F90001F5AE2A08722A97 +S315E0635B707118B28066F6280306840000000E2F04CF +S315E0635B802F054EBAF744487AFFA82F054EB900E1D0 +S315E0635B90C4B648790001F5AE3F3C00053F3C0006DC +S315E0635BA02F024EBAFCEC42673A0042674EB900E315 +S315E0635BB0AC164FEF00204A45674E2A0F0685000074 +S315E0635BC000132F052F044EB900E2FA7A548F2E851F +S315E0635BD03F3C00022F024EB900E2FB805C8F2EB998 +S315E0635BE00001F7C03F3C00073F3C00043F3C000335 +S315E0635BF02F032F024EBAF8624FEF00123F3C0008C4 +S315E0635C002F024EBAFC5C508F4CD7003C70014FEFCD +S315E0635C1000204E753A5C2A2E2A004E56FFC048D7BE +S315E0635C200C1C426745F900E3AC16362E00083F3C90 +S315E0635C30000218034E924200487AFFDA487900017F +S315E0635C40F5AF24390001FA8E1D43FFFE13C300014D +S315E0635C50F5AE1D40FFFF4EBAF67048790001F5AE2A +S315E0635C603F3C00043F3C00052F024EBAFC244267EA +S315E0635C70360042674E924FEF001C4A43670000B41A +S315E0635C801004558F486EFFF6486EFFFA0684FFFFF1 +S315E0635C90FFC04884260E0683FFFFFFD445F900E282 +S315E0635CA0FB8047F900E1C5D648800680FFFFFFC069 +S315E0635CB03F004EB900E3017E4FEF000A2F033F0436 +S315E0635CC04EB900E300F45C8F486EFFFE3F3C000292 +S315E0635CD02F024E925C8F2E830683000000173F3CB3 +S315E0635CE000032F024E922F390001F7C0487AF76618 +S315E0635CF02F034E934FEF00122E830683FFFFFFF5CC +S315E0635D003F3C00062F024E922F2EFFF6487AF74667 +S315E0635D102F034E934FEF00122E833F3C00072F0273 +S315E0635D204E924FEF000A3F3C00082F024EBAFB3219 +S315E0635D30508F4CEE0C1CFFC070014E5E4E754FEFFC +S315E0635D40FFE848D71C1C3F3C000A36390001FAC815 +S315E0635D5024390001FABA45F900E2A1D03F3C0004D8 +S315E0635D602F024E924A4356C1508F20404881448168 +S315E0635D7030813F3C000A3F3C00052F024E924A4386 +S315E0635D8057C1508F20404881448130813F3C000AAF +S315E0635D9036390001FAC63F3C00082F024E924A4369 +S315E0635DA056C1508F20404881448130813F3C000A90 +S315E0635DB03F3C00092F024E924A4357C1508F204021 +S315E0635DC04881448130813F3C000A36390001FACA92 +S315E0635DD03F3C000C2F024E924A4356C1508F2040FF +S315E0635DE04881448130813F3C000A3F3C000D2F02ED +S315E0635DF04E924A4357C1508F204048814481308157 +S315E0635E003F3C000A36390001FACE3F3C00162F02CA +S315E0635E104E924A4356C1508F204048814481308137 +S315E0635E203F3C000A3F3C00172F024E924A4357C15C +S315E0635E30508F20404881448130813F3C000A3639A7 +S315E0635E400001FAD03F3C001F2F024E924A4356C1EF +S315E0635E50508F20404881448130813F3C000A3F3C7B +S315E0635E6000202F024E924A4357C1508F204048810B +S315E0635E70448130813F3C000A36390001FAD23F3C27 +S315E0635E8000232F024E924A4356C1508F20404881E9 +S315E0635E90448130813F3C000A3F3C00242F024E920E +S315E0635EA04A4357C1508F7610204048814481308100 +S315E0635EB03F3C000A47F900E2A1D03F0352832F0239 +S315E0635EC04E92508F72152040425071C3B28066E0A5 +S315E0635ED0426749F900E3A64445F900E2FC524267AA +S315E0635EE04E943F3C000A33C00001FACC06800000C2 +S315E0635EF000103F002F024E934FEF000A204030BC64 +S315E0635F00000142673F3CFFFF42674EB900E2F7ECB0 +S315E0635F10508F3F3C000A4A4057C33F3C001B4883CF +S315E0635F2044832F024E93204030833F3C000A3F3C3C +S315E0635F30001C2F024E934FEF000EA341B383204024 +S315E0635F40308342672F024EBAF86E3F3C00263F3CF1 +S315E0635F5000252F024E924FEF00104A406700011C66 +S315E0635F603F3C00053F3C00042F024E923F3C000954 +S315E0635F7033C00001FAC83F3C00082F024E923F3C13 +S315E0635F80000D33C00001FAC63F3C000C2F024E926F +S315E0635F903F3C001733C00001FACA3F3C00162F02AC +S315E0635FA04E924FEF00203F3C000133C00001FACE32 +S315E0635FB03F004EB900E3A7203F3C000533C0000134 +S315E0635FC0FACE3F3C00102F024EB900E2FC043F3CA0 +S315E0635FD0000133C00001FACC3F004E943F3C001C05 +S315E0635FE033C00001FACC3F3C001B2F024E923F3C8C +S315E0635FF0002038003F3C001F2F024E927779000164 +S315E0636000FAD04FEF00207340B283671A323900014A +S315E0636010F59CA34333C00001FAD0B7814A4157C325 +S315E063602048834483600242433F3C00243F3C002371 +S315E06360302F024EB900E2FC5275790001FAD2508F15 +S315E06360407340B282671A32390001F59CA34233C0CA +S315E06360500001FAD2B5814A4157C1488144818681BC +S315E06360604A4457C0558F4267488044803F00426741 +S315E06360704EB900E2F7EC508F6002424330034CD7EF +S315E06360801C1C4FEF00184E754FEFFFE448D7040C26 +S315E0636090260F06830000000F2F0324390001FA9EC2 +S315E06360A02F2F00244EB900E2FA7A548F2E8345F9F6 +S315E06360B000E2FB803F3C00022F024E924FEF000A64 +S315E06360C02F2F00263F3C00032F024E924FEF000A2C +S315E06360D03F3C00032F024EBAF6DE3F3C00053F3CF1 +S315E06360E000042F024EB900E2FC524FEF00104A4023 +S315E06360F06736558F2F033F3C000245F900E2FBCC40 +S315E06361002F024E922F2F00342F034EB900E2FAD2BC +S315E06361104FEF00122F2F002E3F3C00032F024E92CB +S315E06361204FEF000C7001600242404CD7040C4FEF16 +S315E0636130001C4E75004B004D0047000000E36134E0 +S315E063614000E3613500E3613700E36139226F0008FC +S315E0636150202F00042040121910C166FA4E752F02F3 +S315E0636160742A206F00082068000A10107300B48157 +S315E06361706712143C003FB481670A4A0056C0488000 +S315E0636180448060024240241F4E752F02207900024C +S315E063619004324240600E73680006A542B48166022B +S315E06361A0528020504A8866EE7140A541A342B28090 +S315E06361B05EC04880C082241F4E754FEFFFE848D724 +S315E06361C0047C322F001C302F001E246F0020226FC8 +S315E06361D00024207900020432601675680006A7433E +S315E06361E0B682660A382800183A28001A600A2050F0 +S315E06361F04A8866E64245424498819A807544774583 +S315E0636200A346D4829582D683978384868686C9C2DB +S315E0636210CBC379447B45B8856C0C3481C7F90001FF +S315E0636220FCD6D083600AC5F90001FCD4D2823481FE +S315E06362304CD7047C32804FEF00184E752F022079DD +S315E063624000020432716F0008601473680006A542A9 +S315E0636250B481660873680016B081670620504A8881 +S315E063626066E82008241F4E75400042004E56FFCC78 +S315E063627048D71C0C266E0008240E0682FFFFFFEF4C +S315E063628024790001FAA21D6B0017FFFE49F900E2CB +S315E0636290FB801D40FFFF2F2B000A2F024EBAFEAE96 +S315E06362A05C8F486EFFFE3F3C00022F0A4E945C8F84 +S315E06362B02E823F3C00032F0A4E94342B00123F3C60 +S315E06362C0000A49F900E2A1D03F3C00062F0A4E944A +S315E06362D04FEF0014A341B58120404A4157C148813D +S315E06362E0448130813F3C000A3F3C00072F0A4E94CD +S315E06362F04A4257C1508F20404881448130813F3CB8 +S315E0636300000A3F3C00092F0A4E9428404EBAFE7CB1 +S315E0636310508F4A4067047008600242403880558F68 +S315E0636320426749F900E2FBCC2F0A4EB900E357B660 +S315E06363305C8F486EFFFC3F3C00022F0A4E944FEFA2 +S315E0636340000A486EFFE23F3C00032F0A4E943F3C4F +S315E0636350000349F900E2A1D03F3C00082F0A4EB999 +S315E063636000E2FC043F3C000A3600200350803F0015 +S315E06363702F0A4E94204042503F3C000A3F3C0006C1 +S315E06363802F0A4E944FEF00242040A3403410C4807C +S315E06363904A4366000122102EFFFC772EFFFE730050 +S315E06363A0B283670000BA4A00670000B44880558F3D +S315E06363B03F004EBAFE88588F24404A8066000098B4 +S315E06363C0558F42674EB900E31E9A588F24404A8040 +S315E06363D06770356B00040004356B00060006356BA9 +S315E06363E000080008256B000A000A49EA001A260A33 +S315E06363F0068300000018486A000E487AFE6C4EB9C0 +S315E063640000E31F80102EFFFC72FF356B0012001253 +S315E0636410488035410014354000162F0C2F033F2B7F +S315E0636420001A3F2B00184EBAFD922F0C2F033F2A1A +S315E0636430001A3F2A00184EB900E3E34C4FEF002001 +S315E0636440601442A73F3C001E3F3C00014EB900E3A7 +S315E06364504946508F6002264A347C0001600295CA41 +S315E0636460736B00127142B081670837420012347C65 +S315E06364700001240E0682FFFFFFE22F02486EFFEF64 +S315E06364804EB900E1C4D4508F4A4067704A2EFFE2AA +S315E0636490676A2F024EB900E1C4A47240486B000AF2 +S315E06364A02F02347C00011D8108E24EB900E31F80B0 +S315E06364B04FEF000C60467743A340B083663C267992 +S315E06364C00002043295CA754249F900E31ED6602498 +S315E06364D0716B0012B480661A102EFFFC736B0016A4 +S315E06364E048807140B081660A347C00012F0B4E947C +S315E06364F0588F26534A8B66D8600295CA300A4CEEAB +S315E06365001C0CFFCC4E5E4E754FEFFFF048D70C0C7C +S315E0636510246F001C242F0014362F001848780022BD +S315E0636520302F001E47F900E2A1D0C1FC00220680AD +S315E063653000020DC62F002F0A4EB900E00EC4256F88 +S315E0636540002C00083F3C00063F032F024E93204099 +S315E063655030BC001F3F3C000C3F032F024E932040AC +S315E0636560208A4CEF0C0C001C4FEF002C4E754FEF5E +S315E0636570FFE848D71C1C346F0022242F001C362FFB +S315E063658000203F3C00163F3C001D2F024EB900E25F +S315E0636590A1D0508FA3412040714A3810B2806C4637 +S315E06365A0558F3F0A47F900E1C630538A3F043F3CC3 +S315E06365B000014E933F00717900014A3E20006A0272 +S315E06365C05280E28054803F004EB900E2FE8C4FEF8A +S315E06365D0000A3F0A3840988C3F04380C3F034E93D9 +S315E06365E0508F3640600297CB3F3C001245F900E29C +S315E06365F0A1D049F900E3897C3F3C001E2F024E920D +S315E06366002040308B3F3C001647FAFEFE3F3C001EBF +S315E06366102F024E924FEF000E45FAFB322040308454 +S315E06366203F3C00024E942F0048790001FAD44E9223 +S315E063663048790001FAD4487900023778200350801C +S315E06366403F003F3C00182F024E934FEF001A3F3C4A +S315E063665000034E942F0048790001FBD44E924879AB +S315E06366600001FBD44879000237542003068000001A +S315E0636670002877433F003F3C00192F024E9341F9D0 +S315E063668000E525342F303C004879000237BC4E9252 +S315E06366904FEF001E2EBC000237BC3F3C00162F02B4 +S315E06366A04EB900E2FB804CEF1C1C000C4FEF00245C +S315E06366B04E754FEFFFB648EF7CFC0002242F004E89 +S315E06366C03C2F0054362F00522F0242674BF900E30A +S315E06366D0A8BA2E0653874EB900E333127146508F3C +S315E06366E02A0F0685000000344DF900E2FBCC49EF42 +S315E06366F000402640600002A6558F486F003E2004A6 +S315E063670058803F002F024E964FEF000C4A2F003C15 +S315E06367106602344452847344714AB0816EDA558FAB +S315E0636720588A3F0A2F024E952F0C486F004E486FEA +S315E06367300054486F005A38004EB900E3AC344FEF6B +S315E0636740001872132004028000007FFF0680FFFFBB +S315E0636750FFF271C0B28065000244303B0A0848C06C +S315E06367604EFB0802025E0034003402380238023817 +S315E06367700238023802380238023802380238002812 +S315E0636780002E007000C202420242024270FF6000C5 +S315E063679001BA7001600001B43F3C000A283C00E2A4 +S315E06367A0A1D020443F3C00142F024E902044224067 +S315E06367B034513F3C000A3F3C00132F024E904FEFAB +S315E06367C000107208224038117144B28066000132CB +S315E06367D0600001F4558F2F053F3C001E2F024EB932 +S315E06367E000E2A49C302F004057803F400040302FAA +S315E06367F000445C803F4000442F053F2F00543F2F09 +S315E063680000584EB900E2FDE44FEF00144A406616C5 +S315E0636810736F0044716F0036B0815CC0A3414880FA +S315E0636820808160000126558F3F3C0003283C00E3EE +S315E0636830ADBE204445F900E2A1D04E90548F2F05BA +S315E06368403F3C001D2F024EB900E2A474302F004096 +S315E063685056803F400040302F00445D803F40004417 +S315E06368603F3C00103F3C001D2F024E92224032AF68 +S315E063687000483F3C00143F3C001D2F024E922040EF +S315E063688030AF00544FEF001A3F3C00013F3C001E1F +S315E06368903F3C001D2F024EB900E3ABA83F40003EEC +S315E06368A0302F004057803F400040302F00445C80EB +S315E06368B03F4000443F3C00103F3C001D2F024E9298 +S315E06368C0224032AF00483F3C00143F3C001D2F029C +S315E06368D04E922244204030AF00544FEF001A3F3CC3 +S315E06368E000024E913EBC03E83F073F2F00384EB9A6 +S315E06368F000E1C630508F90834A40664E6000009E4A +S315E0636900734AB081670000963F3C000A41F900E2B2 +S315E0636910A1D03F3C00142F022F4800364E90224010 +S315E0636920328A3F3C000A3F3C00132F02206F003E51 +S315E06369304E904FEF000E204030843F3C00122F0212 +S315E06369404EB900E33404508F60522800D8832004A4 +S315E063695046807140D0809180C8807144B7C06E0232 +S315E0636960380773437144B08167323F0645F900E304 +S315E0636970340436043F042F024EBAFBF45C8F3F3C8B +S315E063698000162F024E925C8F3F3C001D2F024E9203 +S315E06369905C8F3F3C00172F024E92508F4244347C0B +S315E06369A000066000FD54558F2F023F3C00034EB94D +S315E06369B000E3331230034CEF7CFC00084FEF0050EA +S315E06369C04E75780860024244347C00016000FF3A09 +S315E06369D02A2E2A004FEFFFD848D77C3C266F00303B +S315E06369E0260F2A2F002C068300000024740442132A +S315E06369F095CA4DF900E2FBCC49FAF7524BF900E14F +S315E0636A00C4A4558F2F033F022F054E964FEF000C1C +S315E0636A104A2F0024672E300A670A722C714A528A1B +S315E0636A2017810800794A487AFFA8487348004E946C +S315E0636A302F03487348024E942F034E954FEF00148D +S315E0636A4045F20802528271C2720CB28066B44CD7C8 +S315E0636A507C3C4FEF00284E754FEFFFE048D70C7C48 +S315E0636A607404282F0024260F2A2F002806830000AB +S315E0636A70001C47F900E0353045F900E2FB80558FAD +S315E0636A803F3C002E2F057A2E4E93508F2040731095 +S315E0636A90BA816602528022402043600210C02A090E +S315E0636AA01019670873007C2CBC8166F04210558F21 +S315E0636AB02F033F0252822F044E9271C24FEF000CB6 +S315E0636AC0720CB28066B84CD70C7C4FEF00204E75E3 +S315E0636AD04E56FF9C48D73CFC3F3C001647F900E224 +S315E0636AE0A1D078FE24390001FAA6246E000C286E44 +S315E0636AF000083F3C001A2F024E93204036103F3C7D +S315E0636B0000163F3C001B2F024E93323900014A3E8A +S315E0636B102040548130813F3C00123F3C001D2F02F0 +S315E0636B204E93323900014A3E2040548130813F3CE6 +S315E0636B3000163F3C001D2F024E93323900014A3E58 +S315E0636B404FEF002020409881220478FED281D283E1 +S315E0636B5030813F3C00123F3C001C2F024E9332399A +S315E0636B6000014A3E20409881D68430833F3C00163C +S315E0636B703F3C001C2F024E93323900014A3E2040CF +S315E0636B80548130812F0A4EBAF5D64FEF00143F3C5D +S315E0636B90000A4A4057C33F3C0020488344832F02A0 +S315E0636BA04E93508F4A436704720860024241204025 +S315E0636BB0280E30810684FFFFFFF447F900E2A1D097 +S315E0636BC02F042F0C4EB900E2FA7A548F2E843F3CA1 +S315E0636BD000022F024EB900E2FB802F2A000E2F023D +S315E0636BE04EBAFE763F3C000A3F3C00132F024E93BB +S315E0636BF04FEF001C204042503E2A00040807000085 +S315E0636C0067183F3C000A3F3C00132F024E93508FB8 +S315E0636C10204030BC0008700E60107008C0874A40A0 +S315E0636C2057C048800680000000103F3C000A47F9E1 +S315E0636C3000E2A1D078133F002F024E93508F72107B +S315E0636C40204030BC0001302A00043F3C000AC0818A +S315E0636C504A4057C0488098803F042F024E932040B5 +S315E0636C6030BC0001382A00123F3900019474518424 +S315E0636C703F043A442F024EBAF8F63F390001947462 +S315E0636C803F042F024EBAFA2C3F3C00023C003F3CE5 +S315E0636C9000132F024EB900E2FC044FEF00204A4096 +S315E0636CA066047810600242443F3C000A06800000B6 +S315E0636CB000133F002F024EB900E2A1D020404250BC +S315E0636CC03F3C00033F3C000E2F024EB900E2FC045A +S315E0636CD04FEF00104A40670E7340A545BA816608D8 +S315E0636CE072088881600278033F3C000A06800000F0 +S315E0636CF0000E47F900E2A1D03F002F024E932040F9 +S315E0636D0042503F3C00033F3C001F2F024EB900E276 +S315E0636D10FC043F3C000A3A00200506800000001FA1 +S315E0636D203F002F024E934FEF0018204042504A45F2 +S315E0636D306600011E2A0E0685FFFFFFC42F052F029C +S315E0636D404EBAFC92508F4A4366162F2A000E2F05E1 +S315E0636D504EB900E1C4D4508F4A406616600000CA5B +S315E0636D60558F3F3C00014EB900E31E9A588F26408B +S315E0636D706002264A4A8B670000984A4366142F2AC4 +S315E0636D80000E486EFFC44EB900E1C4D4508F4A404A +S315E0636D90672A240E0682FFFFFFC42F024EB900E185 +S315E0636DA0C4A47240486B000E2F021D8108C44EB91D +S315E0636DB000E31F804FEF000C700160024240B5CBE9 +S315E0636DC067627A402F0C240E0682FFFFFFC42F0210 +S315E0636DD04EBAF37A2F024EB900E1C4A4486B000AB7 +S315E0636DE02F02244B1D8508C44EB900E31F80424041 +S315E0636DF072FF374400044FEF001437400006374113 +S315E0636E00000837400016374000183740001A6028FC +S315E0636E1042A73F3C001E3F3C00014EB900E34946B2 +S315E0636E204240508F4A436610754D7346B282660898 +S315E0636E307F477344B28767342006068600000028DE +S315E0636E405080354000123546001435440004601620 +S315E0636E507B45A344B88566124A43660E2F0A4EB94C +S315E0636E6000E31ED6588F7001600242404CEE3CFC54 +S315E0636E70FF9C4E5E4E750000226F0008202F0004D3 +S315E0636E802040121910C166FA4E752F0B2F0A3F3C4C +S315E0636E90000C45F900E2A1D03F2F00162F2F00101A +S315E0636EA04E923F3C000C26403F2F00202F2F001CC4 +S315E0636EB04E924FEF0010245F20402690265F4E757A +S315E0636EC04A6F0004670470026002424042673F0013 +S315E0636ED04EB900E3AC16588F4E752F02342F000877 +S315E0636EE0558F3F3C00014EBAFFD8588F4A4267063A +S315E0636EF04EB900E3A0E24EB900E3A14A4EB900E31E +S315E0636F00A1CE42403F400008241F60B400004FEF2B +S315E0636F10FFF4302F001048D7040C346F0012242F8F +S315E0636F2000184A40664A714A761F2200E789EB8871 +S315E0636F3090810680000219E22040203C00E36F0C5A +S315E0636F4073D0B681660C558F3F0A4EB900E3A30A48 +S315E0636F50588F558F2F022F003F0A95CA3F3CFFFF9C +S315E0636F603F3C00014EB900E330BE4FEF0010606670 +S315E0636F70558F3F004EB900E398C03E8A22402069B0 +S315E0636F8000182F28004C4EB900E3452E508F24405D +S315E0636F904A806740122A0005761006800000000EDC +S315E0636FA041F900E330BE4881C2834A416710558F99 +S315E0636FB02F022F003F3CFFFF3F3C0001600C558FE3 +S315E0636FC02F022F003F3CFFFF426742674E904FEF31 +S315E0636FD0001060024280206F0014208A4CD7040CB4 +S315E0636FE04FEF000C4E754FEFFFF048D70C0C262F92 +S315E0636FF00014342F001C246F001847F900E3A6A899 +S315E0637000600C3F0248803F002F034E93508F101A67 +S315E063701066F04CD70C0C4FEF00104E754FEFFFD078 +S315E063702048D73CFC7412262F003445F900E3A6A842 +S315E06370303F3C00013F0252822F034E927142508FD2 +S315E06370407223B28066EA558F42677C01428242448C +S315E0637050424549F900E3A28647FAFEB445F900E3FF +S315E0637060615E487900E502DC2F0333C6000237B27E +S315E063707033C6000237A233C6000237B04EBAFF68A2 +S315E06370804FEF000C2E0F06870000002E4BEF002A11 +S315E0637090600000A82F072F0D3F05A3463F39000187 +S315E06370A0FAC04E934FEF000C2240306900067348F6 +S315E06370B0BC81673C6D0632086710606CA546BC818F +S315E06370C0673EA740B08166606058243C00E502E213 +S315E06370D04A6F002E66522F004E92588F4A4066489A +S315E06370E04241243C00E502E533C1000237B2603831 +S315E06370F04246243C00E502E933C6000237B2602823 +S315E06371002040A34171680012243C00E502EFB2809F +S315E06371106606243C00E502ED424633C6000237B21A +S315E06371206006243C00E502FE558F426752842F02D7 +S315E06371302F034EBAFEB24FEF000C3F053F39000115 +S315E0637140FABE4879000219DC4E94508F3A00660025 +S315E0637150FF444EB900E3991441FAFE8C4A80675CBA +S315E0637160558F3F3C0001487900E503072F034E90B6 +S315E063717071444FEF000CA341B280674C4A446710F9 +S315E06371804246203C00E502F933C6000237A2601AA4 +S315E0637190424033C0000237A233C0000237B033C087 +S315E06371A0000237B2203C00E502F2558F42672F00BA +S315E06371B02F034EBAFE324FEF000C600C558F4267D9 +S315E06371C0487900E5030360A44CD73CFC4FEF0030FD +S315E06371D04E754FEFFFE4720948D77C0C716F002060 +S315E06371E0B2806600009024390001FA96558F4BF918 +S315E06371F000E2F7EC49F900E3A52C2F0242674EB9AA +S315E063720000E33312508F4DF900E3A8BA6022361AD1 +S315E0637210558F3F03ED8B3F1B3F3C00014E95426725 +S315E06372203F034E944FEF000CB5FC00E3855666DEF4 +S315E0637230558F42672F024E96508FAF410280000012 +S315E06372407FFFB280660A45FA12E047FA130A60BE28 +S315E06372503F3C000A3F3C000B2F024EB900E2A1D04F +S315E0637260548F204042502E823F3C00034EB900E3E8 +S315E06372703312508F4CD77C0C42404FEF001C4E7557 +S315E0637280454D55434F4E00002F032F02362F000C1A +S315E06372904EB900E39914426724000683FFFFFFEECD +S315E06372A077C33F390001FABE4879000219DC4EB96B +S315E06372B000E3A286508F720BB283650000EE323B29 +S315E06372C03A0848C14EFB18020018002C00E2003E63 +S315E06372D0004E005A00E20072008200E2009400CAA7 +S315E06372E04A40670000C63F40000C241F261F60FF2C +S315E06372F000001E364A40670000B2558F3F004EB924 +S315E063730000E3937460404A82670000A02F024EB99F +S315E063731000E34B1C60304A8267000090558F4267FA +S315E0637320600C4A8267000084558F3F3C00012F0260 +S315E06373304EB900E3E27A508F60704A40676C2F0281 +S315E06373404EB900E3519C588F60604A40675C3F40AA +S315E0637350000C241F261F60FF000021004200487ACC +S315E0637360FF2048790001F92A13C00001F9AF13C081 +S315E06373700001F9AE4EBAFB023F3CFFFF3F3CFFFF25 +S315E06373803F3C000142674EB900E388784FEF001057 +S315E0637390601A2F390001FA2E2F390001F9AA4EB986 +S315E06373A000E3895E508F700160024240241F261F0E +S315E06373B04E754FEFFFE8AB4148D7047C3A2F001C8C +S315E06373C036390001F59C3C390001F5AC20050680B1 +S315E06373D0FFFFFFDA71C0B280650000C2303B0A0886 +S315E06373E048C04EFB0802001200B6000C0030002ACB +S315E06373F000C24242600000B44A4357C477434884BC +S315E06374002204448171413801B68066106000008EC3 +S315E063741074026000009674036000009033C100015B +S315E0637420F59CA341B28066082039000237AC60065A +S315E06374302039000237B4558F2F003F3C00263406CF +S315E063744036042F390001FA864EB900E3A6F84FEF0A +S315E0637450000C734271790001F5ACB081672E426727 +S315E063746045F900E3A6803F390001FAC42F390001EC +S315E0637470FA864E923F3C000133C50001FAC43F05EC +S315E06374802F390001FA864E924FEF00103F023F0319 +S315E06374904EB900E3962C588F7001600242404CD798 +S315E06374A0047C4FEF00184E75740171427D46BC80D3 +S315E06374B066A060E84E56FFE448D7001C3F2E000CFA +S315E06374C0382E00103F2E000A4EB900E3ADA0588F68 +S315E06374D0340030390001FAC077427340B283670CF7 +S315E06374E0558F3F004EB900E389C2588F4267260E37 +S315E06374F00683FFFFFFF43F024EB900E38A36486E28 +S315E0637500FFFA486EFFF8486EFFF62F033F3C000430 +S315E06375103F024EB900E3AD0A716E00084FEF001803 +S315E0637520A34141F900E31A8AB280660000C242676A +S315E06375302F033F043F2E000C3F2E000A3F39000124 +S315E0637540FABE2F39000219D83F390001FAC04E90CE +S315E0637550200E55802F00486E000E2F002F004EB987 +S315E063756000E3AC344FEF0024302E000E0800000039 +S315E0637570670000B0558F486EFFFC2F033F04486EEB +S315E0637580000C486E000A3F390001FABE2F3900024B +S315E063759019D83F390001FAC04EB900E31B724FEFC9 +S315E06375A0001CA14136007140B28067764A43671496 +S315E06375B0558F3F034EB900E398C0588F204030287B +S315E06375C0000A600270013F2E000C3F2E000A3F2E38 +S315E06375D0FFFC3F003F033F024EB900E3E8544FEF41 +S315E06375E0000A3F024EB900E389C2588F60343F3CDC +S315E06375F000012F033F043F2E000C3F2E000A3F3964 +S315E06376000001FABE2F39000219D83F390001FAC0EA +S315E06376104E904FEF00123F3C00124EBAFC6C588F0F +S315E0637620600242402D40FFF02F390001FA864EBAE0 +S315E0637630F9EC588F202EFFF04CEE001CFFE44E5E13 +S315E06376404E754A790001F59C56C041F90001FAC6C8 +S315E063765033D00002187A41F90001FAC833D0000248 +S315E0637660187C41F90001FACC33D00002188041F965 +S315E06376700001FACA33D00002187E41F90001FACE5E +S315E0637680488033D00002188241F90001FAD04FEF07 +S315E0637690FFD8448033C00002187830390001FAC459 +S315E06376A033D00002188448D77C7C41F90001FAD2D2 +S315E06376B033D000021886424342444DF900E399828F +S315E06376C04BF900E3AD0A49F900E38C040680FFFF5A +S315E06376D0FFD833C00002187647FAF79E558F200429 +S315E06376E052803F0038004E96588F2440302A000679 +S315E06376F067707543725252834C0128002042D1FC75 +S315E06377000002188E2F08220206810002188C2F01D0 +S315E06377102C0206860002188A2F062A0206850002D4 +S315E063772018882F053F3C00053F004E952F062F0531 +S315E06377304E942042D1FC0001B2B8316A000C65D8A0 +S315E0637740316A000E65DA316A000865DC246A00187E +S315E0637750508A0682000218962F0A2F024E934FEF45 +S315E063776000247144A941B2806600FF723003C1FC14 +S315E063777000522040D1FC00021894600E4201425050 +S315E063778052831141000241E800527143A741B2803E +S315E06377906CEA4CD77C7C4FEF00284E755B325D5BC1 +S315E06377A0537769746368207265736F6C7574696F18 +S315E06377B06E3F5D5B5965737C4E6F5D004E56FFF0C1 +S315E06377C02F0A2F0242673F390001FABE4879000269 +S315E06377D019DC4EB900E3A286508F4A40671C486EB7 +S315E06377E0FFFE486EFFFA3F003F390001FAC04EBA2A +S315E06377F0F71E4FEF000C2440600295CA302E000856 +S315E0637800AB410680FFFFFFE171C0B28065000134E2 +S315E0637810303B0A0848C04EFB0802000C00680128AA +S315E063782000A400B800DA4A8A670001182F0A4EB945 +S315E063783000E3626A588F4A40670001084EB900E385 +S315E06378402F48486EFFF8486EFFF6486EFFF4486EC1 +S315E0637850FFF23F3C000442674EB900E3AD0A4FEFE7 +S315E063786000123F2EFFF83F2EFFF63F2EFFF43F2E2A +S315E0637870FFF242674EB900E38AC04FEF000C600047 +S315E063788000C24A8A670000BC4A6EFFFE670C202E80 +S315E0637890FFFA06800000000E60162F0A4EB900E379 +S315E06378A0615E588F4A406706202A000A600242807A +S315E06378B02F0A2F004EB900E36AD05C8F600C4EB995 +S315E06378C000E35D3E4A40677A558F42674EBAF60CEF +S315E06378D0601E558F3F3C000145FAF5E64E924EBA7F +S315E06378E0FD623EBC00014EB900E32B6242574E9205 +S315E06378F0588F604E558F487AFEA43F3C00014EB9DF +S315E063790000E3A93C508FA3417140B28066343F3CAB +S315E063791000044E4E548F7140A341558F42A7B28007 +S315E063792056C042A7123C00024267488092803F01FC +S315E06379303F3C00054EB900E3AE864FEF00107001A1 +S315E063794060024240242EFFE8246EFFEC4E5E4E75E5 +S315E06379502F032F02362F000C322F000EA9427143FC +S315E0637960B48067266D0A143C0003B48066506010E9 +S315E0637970AB42B480673A143C0006B4806640601458 +S315E0637980558F3F014EBAF84C602E558F3F014EBA84 +S315E0637990F8F86024558F3F014EBAFA18588F4A407B +S315E06379A0671C558F3F3C00014EBAF530588F600E29 +S315E06379B0558F3F014EBAFE063400588F600242424D +S315E06379C03F3C00013F032F390001FA864EB900E3DD +S315E06379D0A6D0508F3002241F261F4E75598F716FC4 +S315E06379E000080C8000001F00670001506E420C80A7 +S315E06379F0000014006700015C6E160C800000011B3A +S315E0637A0067700C8000001011660001D4600001AC61 +S315E0637A100C80000019006700010A0C8000001E005C +S315E0637A2067620C8000001700660001B4600000B86E +S315E0637A300C8000002C1A6700016A6E160C80000049 +S315E0637A402000677E0C8000002C00660001926000D7 +S315E0637A5001360C8000002F00670001100C800000E7 +S315E0637A603100670000A60C8000002E0066000170FE +S315E0637A706036558F3F3C00014EB900E3958C588FD5 +S315E0637A806000015C4A79000237B2670001524267DF +S315E0637A903F3C00052F390001FA864EB900E3A6D0D4 +S315E0637AA03F3C0020600000DA42673F3C00052F3927 +S315E0637AB00001FA864EB900E3A6D03F3C002460009D +S315E0637AC000C04A79000237B06700011442673F3C61 +S315E0637AD000042F390001FA864EB900E3A6D03F3C95 +S315E0637AE00019600000EC4A79000237A2670000F0F3 +S315E0637AF042673F3C00042F390001FA864EB900E342 +S315E0637B00A6D03F3C0013600000C842673F3C0006D6 +S315E0637B102F390001FA864EB900E3A6D03F3C002830 +S315E0637B20607A42673F3C00062F390001FA864EB918 +S315E0637B3000E3A6D03F3C0029606242673F3C000613 +S315E0637B402F390001FA864EB900E3A6D03F3C002602 +S315E0637B50604A42673F3C00062F390001FA864EB918 +S315E0637B6000E3A6D03F3C002B603242673F3C000512 +S315E0637B702F390001FA864EB900E3A6D03F3C0023D5 +S315E0637B803F3C0005604E42673F3C00062F390001EB +S315E0637B90FA864EB900E3A6D03F3C002A3F3C000696 +S315E0637BA0603242673F3C00042F390001FA864EB9E2 +S315E0637BB000E3A6D03F3C001C601642673F3C0004EE +S315E0637BC02F390001FA864EB900E3A6D03F3C001D8B +S315E0637BD03F3C00044EBAFD7A4FEF000C6002424030 +S315E0637BE02F390001FA862F4000044EBAF430202F75 +S315E0637BF00004508F4E754E56FFE830390001F906A2 +S315E0637C0048D7040C74167340B48166144A7900024B +S315E0637C1037BA671A424033C0000237BA600002AC33 +S315E0637C200680FFFFFFEB71C0AF41B2806510558FF1 +S315E0637C303F390001FAC04EB900E389C2588F303943 +S315E0637C400001F90674120680FFFFFFF671C0B48087 +S315E0637C5065000286303B0A0848C04EFB08020026F0 +S315E0637C60027A027A027A027A027A027A027A027AEB +S315E0637C70027A004C008000F200FE013E015E01568E +S315E0637C80017A017A42673F390001FAC24EB900E3ED +S315E0637C908A363F390001F90E3F390001F90C4EBAD5 +S315E0637CA0FCB0508F42416000020230390001F90CAA +S315E0637CB0670001F4558F3F390001F9143F3900013C +S315E0637CC0F9123F390001F9103F390001F90E3F001F +S315E0637CD04EB900E38AC04FEF000C600001CA426709 +S315E0637CE04267426742673F3C000A3F390001F90C4D +S315E0637CF04EB900E3AD5A486EFFF8486EFFFA486E38 +S315E0637D00FFFC486EFFFE3F3C00043F390001F90C7F +S315E0637D104EB900E3AD0A4FEF001E3F390001F90C9F +S315E0637D204EB900E398C0588F24404A8067162F0007 +S315E0637D304EB900E398F842673F2A00064EB900E37E +S315E0637D408A36508F5C8A33D20001FAC260000186BC +S315E0637D50558F3F3C00164EBAF5306052558F3F392A +S315E0637D600001F90C4EB900E398C0588F4A8067006A +S315E0637D7001642F004EB900E398F83EB90001F90CAF +S315E0637D804EB900E38D703F3C00013F390001F90CC9 +S315E0637D904EB900E38A36508F6000013A3F390001FD +S315E0637DA0F90E3F390001F90C4EB900E3A04C588F48 +S315E0637DB060000126558F3F3C00016004558F4267A2 +S315E0637DC03F390001F90E3F390001F90C4EB900E382 +S315E0637DD09FD2508F6000010241F90001F90E3D50D8 +S315E0637DE0FFFE41F90001F9103D50FFFC260E598371 +S315E0637DF02F03240E55822F024EB900E38C043F39DC +S315E0637E000001F9143F390001F9123F2EFFFC3F2EC2 +S315E0637E10FFFE3F3C00053F390001F90C4EB900E334 +S315E0637E20AD5A71790001F9064FEF0014721BB28007 +S315E0637E3066163F3C00013F390001F90C4EB900E399 +S315E0637E408A36588F6000008E486EFFF8486EFFFAF8 +S315E0637E502F032F023F3C00043F390001F90C4EB972 +S315E0637E6000E3AD0A4FEF00123F390001F90C4EB95A +S315E0637E7000E398C03F2EFFF820403F2EFFFA3F2EE7 +S315E0637E80FFFC3F2EFFFE7168000A2200E789EB885C +S315E0637E9090810680000219EC2F004EB900E035248C +S315E0637EA04FEF0010602E72014240424233C200013E +S315E0637EB0F9064A4166142F390001FA862D40FFF42C +S315E0637EC04EBAF15A588F202EFFF44CEE040CFFE8BD +S315E0637ED04E5E4E754EBAF76C424160CC4A7900020B +S315E0637EE0187857C04FEFFFC248EF7CFC00023F3C77 +S315E0637EF0002645FAF4BE780442432E3C00E3444C44 +S315E0637F004BF900E387944880448033C00001F59CD5 +S315E0637F104E923039000218760680000000283E80D3 +S315E0637F204E9230390002188041F90002187A33D054 +S315E0637F300001FAC641F90002187C33D00001FAC8A1 +S315E0637F4041F90002187E33D00001FACA41F9000212 +S315E0637F50188233D00001FACE41F90002188433D097 +S315E0637F600001FAD041F90002188633D00001FAD253 +S315E0637F703F3C000133C00001FACC3F004EB900E359 +S315E0637F80A6443F3C000133C00001FACC3F3900010F +S315E0637F90FACE4EB900E3A7204FEF000C2C0F2A0F61 +S315E0637FA006860000003606850000002D33C000011A +S315E0637FB0FACE4DF900E38C04754370524C02080027 +S315E0637FC006800002188C204030106F0C7140737984 +S315E0637FD00001F926B2806C1E73790001F9267052AE +S315E0637FE04C02080022016A02528106800002188C64 +S315E0637FF02040E281308170524C0208000680000224 +S315E0638000188E204030106F0C714073790001F928A7 +S315E0638010B2806C1E73790001F92870524C02080035 +S315E063802022016A02528106800002188E2040E281B4 +S315E0638030308170524C00280041F9000218964A30AC +S315E06380402800670000AA2642D7FC0001B2B8558F24 +S315E063805049EB65DC3F144EB900E397C6588F24407D +S315E06380604A806700008A356B65D8000C356B65DA44 +S315E0638070000E200206800002189620472F062F0581 +S315E063808048790001F7C4486F00462F004E902002FE +S315E063809006800002188A2F000682000218882F02E3 +S315E06380A04E964FEF00162EBC0001F7C43F2F0040FB +S315E06380B04E95508F4A7900018E64670C2F0A4EB94C +S315E06380C000E39760588F60263F3C00012F022F063E +S315E06380D02F0548790001F7C43F2F004C3F143F3C1E +S315E06380E000012F0A4EB900E38E824FEF001C5283E4 +S315E06380F053844A446600FEC24EBAF5484CD77CFCCC +S315E06381004FEF003C4E754FEFFFC848D77CFC4EB946 +S315E063811000E3A44C487900014A3E487900014B5C90 +S315E0638120487900014BA4487900014BA045F900E387 +S315E0638130ADBE47F900E3B35A33C0000237B84EB970 +S315E063814000E3ABDA48790001F92048790001F91ECA +S315E063815048790001F91C48790001F91A3F3C0004AB +S315E063816033C000014BF870FF760E4242426733C07C +S315E0638170000237A433C0000237A64EB900E3AD0A66 +S315E06381804FEF00202EBC0001F92848790001F9265B +S315E063819048790001F92448790001F9223F39000161 +S315E06381A0F9203F390001F91E3F390001F91C3F39D7 +S315E06381B00001F91A3F3CFFFF3F3C00014EB900E383 +S315E06381C0ADD24FEF001A3F3C0001203C0001F92A93 +S315E06381D023C00001F9AA203C0001F9AE23C00001E7 +S315E06381E0FA2E203C0001FA3223C00001FA56203C05 +S315E06381F00001FA5A23C00001FA7E203C0001F90629 +S315E063820023C00001F9164E923EBC00014EBAECB2B1 +S315E063821042574E924EB900E3B282588F714245F9A6 +S315E063822000E3B35A5383E58806800001FA862F009C +S315E06382303F02528242674E93508F4A4366DE558FC2 +S315E0638240426747F900E3897C4EB900E32128487920 +S315E0638250000237B43F3C00053F3C00054E92487947 +S315E0638260000237AC3F3C00013F3C00054E924FEFC6 +S315E063827000123F3C001445FAEC004E932F00487918 +S315E06382800002379C4E924FEF000A3F3C00154E9337 +S315E06382902F004879000237A84E924EB900E3229C3C +S315E06382A04FEF000C4A40662C42A73F3C00213F3C1F +S315E06382B000014EB900E349462F390001FA2E2F3902 +S315E06382C00001F9AA4EB900E3895E4FEF0010424020 +S315E06382D06000024C4EB900E3972E4EB900E34328A3 +S315E06382E0426747F900E38A3645F900E3ADBE426784 +S315E06382F04E933EBC00014E923EBC00012F39000115 +S315E0638300FA864EB900E3A6625C8F42674E92548F5B +S315E06383102F39000237B43F3C002642402F39000133 +S315E0638320FA8633C00001F59C4EB900E3A6F83F3CFC +S315E0638330000170283F0033C00001FAC42F39000101 +S315E0638340FA864EB900E3A680700133C00001FAC62F +S315E063835033C00001FAC833C00001FAD033C000016C +S315E0638360FAD2103C000333C00001FACC4EB900E305 +S315E06383702F484FEF00123F390001F92013C0000286 +S315E063838037A03F390001F91E3F390001F91C3F3937 +S315E06383900001F91A42674EB900E38AC042673F3C7F +S315E06383A000012F39000219D83F3C000E42674EB9EF +S315E06383B000E3AD5A426742674E934FEF001A3F3C84 +S315E06383C0000147F900E3A54A4E924EBAFB104257C5 +S315E06383D04E922F390001FA864EBAEC425C8F4267C1 +S315E06383E04EBAEADE588F2E0F2C0F2A0F280F4BEF6B +S315E06383F0002C06870000003049EF002E0686000059 +S315E063840000320685000000340684000000364DFA2B +S315E0638410F0A42F0D2F0C2F072F062F052F0442678D +S315E063842042672F390001F91642674267426742673E +S315E06384304267426742674267426742673F3C000181 +S315E06384403F3C00013F3C00023F3C00134E934FEF3D +S315E0638450003A3F3C000136004E92588F0803000015 +S315E06384606710558F3F2F00304EBAF572588F340040 +S315E063847060024242A540C0834A40676A558F3F2FF8 +S315E063848000323F2F00363F2F003A3F2F003E3F2F0B +S315E063849000364E964FEF000C3400604A4EBAF758FA +S315E06384A03400664A2F0D2F0C2F072F062F052F0456 +S315E06384B0426742672F390001F916426742674267AE +S315E06384C042674267426742674267426742673F3C49 +S315E06384D000013F3C00013F3C00023F3C00304E93CD +S315E06384E04FEF003C36007010C6804A4366AE558F48 +S315E06384F042674E92588F4A426700FF184EBAF1447C +S315E0638500558F42674EB900E32B62425742A74EB995 +S315E063851000E3A6624EB900E3A4AE7001508F4CD778 +S315E06385207CFC4FEF00384E750004000C0004000C31 +S315E063853000040006000200040004000C00040004CA +S315E06385400004000400040004000400040004000CBA +S315E06385500004000800040106015D01490125015D8F +S315E0638560018801B80188015D014901060125015DC4 +S315E0638570010601060125014A015D01D101B80188C1 +S315E0638580015D02BA4FEFFFEC48D70C1C203C0002BA +S315E063859019DC23C0000219D841F9000219DE72FF23 +S315E06385A030BCFFFF3141FFFE3141000241E8001874 +S315E06385B0B1FC0002265666E648780018263C0002BF +S315E06385C019F4487900E503104879000219DC47F9A4 +S315E06385D000E00EC44E9345F900E3A73E3F39000140 +S315E06385E04B8C42423F3900014BC042674267487950 +S315E06385F0000219EC4EB900E035244FEF00184878D5 +S315E06386000018487900E503282F034E932802528425 +S315E06386100683000000183F04340442674879000289 +S315E063862019DC4E9271444FEF0014AB41B28066CED3 +S315E06386304CD70C1C4FEF00144E752F02740141F9B1 +S315E063864000021A2052824A5067164A68000267108F +S315E06386507142AB4141E80018B28066E84242602C61 +S315E06386603F2F000E71422200E789EB883F2F000E11 +S315E063867090810680000219EC3F2F000E3F2F000E1B +S315E06386802F004EB900E035244FEF000C3002241F73 +S315E06386904E752F032F023F2F00143F2F00143F2FF9 +S315E06386A000143F2F0014776F001420032403E78838 +S315E06386B0EB8A948020020680000219EC2F004EB903 +S315E06386C000E035244FEF000C2042D1FC000219DEB6 +S315E06386D03210200360162401EB89E78A224193C2B4 +S315E06386E0D3FC000219DC321132BCFFFF7341B08167 +S315E06386F06DE42200EB88E789241F261F204070FF84 +S315E063870091C1D1FC0001B2B8314067283140672698 +S315E06387104E752F032F02740641F900021A6C7150ED +S315E0638720A141B28067145282714241E800180C801D +S315E06387300000008566E84242605077422003E7889E +S315E0638740EB8B968070FF2043D1FC0001B2B80683C1 +S315E0638750000219EC31406728314067263F023F2F1C +S315E0638760000E2F39000219D84EB900E3A73E3F2F1A +S315E0638770001C3F2F001C3F2F001C3F2F001C2F03C4 +S315E06387804EB900E035244FEF00143002241F261F54 +S315E06387904E7500004FEFFFF448D7040C342F0010FA +S315E06387A0660A700133C000018E64607C7142724078 +S315E06387B045F900E30056B28067604EB900E2FF24F4 +S315E06387C0558F360020020680FFFFFFBF3F004E92C3 +S315E06387D0588F4A7900018E64670C558F3F034E923A +S315E06387E0588F42406042703A725C13C20001F5AE44 +S315E06387F0226F001241F90001F5B113C00001F5AF34 +S315E063880013C10001F5B0101910C066FA487900018A +S315E0638810F5AE4EB900E3000A600A558F3F390001B1 +S315E063882094724E927001588F4CD7040C4FEF000C44 +S315E06388304E752F0A2F02426745F900E3AC163F3CBB +S315E063884000024E92548F2F2F00162F2F00163F2FC4 +S315E063885000183F2F00183F3C00014EB900E3AE8697 +S315E06388604FEF001034006608426742674E92588FB6 +S315E06388703002241F245F4E754FEFFFE848D7007C34 +S315E0638880382F001C362F001E342F00204879000154 +S315E0638890F9AF4EB900E1C4A4588F13C00001F9AE35 +S315E06388A03200673A4A4466362200538141F9000151 +S315E06388B0F9AE2C0152862A0154857D467B45538168 +S315E06388C043F06800119158007BC10C850000FFFFFF +S315E06388D066E0722013C10001F9AF220052812F399D +S315E06388E00001FA2E2F390001F9AA3F03700D41F911 +S315E06388F00001F9AE774313C10001F9AE52817341CA +S315E06389003F04118018004EBAFF2A4FEF000CA141D5 +S315E0638910B283673E7342A143B6816738558F3F3969 +S315E06389200001F9203F390001F91E3F390001F91CC6 +S315E06389303F390001F91A3F2F002C3F0242672F406F +S315E063894000244EB900E38C6C4FEF0010202F001427 +S315E0638950600242404CD7007C4FEF00184E75558F4E +S315E06389602F2F000A2F2F000A3F3C00014267426720 +S315E06389704EB900E3AE864FEF00104E754E56FFFCE0 +S315E0638980486EFFFC3F2E00083F3C00054EB900E30E +S315E0638990B35A508F226EFFFC41F9000237BC1019BF +S315E06389A010C066FA203C000237BC4E5E4E7500008E +S315E06389B0226F0008202F00042040121910C166FAC6 +S315E06389C04E754E56FFF82F032F02486EFFFE486E34 +S315E06389D0FFFC486EFFFA260E51832F03342E000800 +S315E06389E03F3C00043F024EB900E3AD0A4FEF00128D +S315E06389F03F024EB900E398C0588F4A80672C3F3CEC +S315E0638A000001204042673F3C00012F0348790001A3 +S315E0638A104BA842673F28000A2F39000219D83F0264 +S315E0638A204EB900E318E44FEF0018242EFFF0262E2C +S315E0638A30FFF44E5E4E754E56FFF82F0A2F02342E24 +S315E0638A400008675C558F3F024EB900E398C0588FC4 +S315E0638A5024404A8067524A6E000A6738486EFFF8D8 +S315E0638A60486EFFFA486EFFFC486EFFFE3F3C00042B +S315E0638A703F024EB900E3AD0A3F2EFFF83F2EFFFA01 +S315E0638A803F2EFFFC3F2EFFFE2F0A4EB900E39B000D +S315E0638A904FEF002045EA000A33D20001FABE6008D0 +S315E0638AA0700133C00001FABE33C20001FAC033C2BB +S315E0638AB00001FAC2242EFFF0246EFFF44E5E4E757B +S315E0638AC04FEFFFC448D77CFC342F00403F6F004232 +S315E0638AD000343F6F004400363F6F004600383F6F17 +S315E0638AE00048003A2A79000219D84A426714558F3A +S315E0638AF03F024EB900E398C0588F20403E28000AF3 +S315E0638B0060027E01426745F900E3AD0A49F900E296 +S315E0638B10F9B247F900E3A7663F3C01004EB900E3CB +S315E0638B20AC162C0F2A0F0685000000362F05280F9A +S315E0638B300684000000382F04260F06830000003AFF +S315E0638B402F030686000000302F063F3C000B3F02F2 +S315E0638B504E924FEF00184DEF0034603E2F062F0E16 +S315E0638B604E94508F4A40671E3F2F00323F2F0032AC +S315E0638B703F2F00323F2F00323F3C00083F072F0D67 +S315E0638B804E934FEF00102F052F042F032F063F3C24 +S315E0638B90000C3F024E924FEF00144A6F00306706B7 +S315E0638BA04A6F003266B642673F3C01014EB900E365 +S315E0638BB0AC164CEF7CFC00044FEF00404E75302F53 +S315E0638BC00008226F000A206F0004C1FC0018D1C0C0 +S315E0638BD032A80010226F000E32A80012226F001234 +S315E0638BE032A80014226F001632A800164E75716F14 +S315E0638BF00008206F00042200E789EB88908120302B +S315E0638C00080C4E754E56FFEC48D70C04486EFFF8D9 +S315E0638C1074F0486EFFFA486EFFFC486EFFFE3F3C19 +S315E0638C200004246E0008266E000C42674EB900E32A +S315E0638C30AD0A30124FEF0014720FC2803D40FFFE63 +S315E0638C40C082AF423481B4816C06068000000010B6 +S315E0638C5034803F2EFFFC3F134EB900E2FE8C588F03 +S315E0638C6036804CEE0C04FFEC4E5E4E754E56FFD8E6 +S315E0638C7048D7047C486E0010486E000E3A2E000C0E +S315E0638C80362E00122C0E518645FAFF34382E001428 +S315E0638C90342E000A4EBAFF6E5C8F486EFFFE486E56 +S315E0638CA0FFFC486EFFFA2F063F390001FABE4879AA +S315E0638CB0000219DC4E924FEF0016486EFFF6486EDF +S315E0638CC0FFF4486EFFF2486EFFF03F054879000215 +S315E0638CD019DC4E923F04302EFFF0322EFFF8306EF1 +S315E0638CE0FFFA3F03D081322EFFF23D40FFF03F2E85 +S315E0638CF00010D2883D41FFF23F2E000E3F2EFFF675 +S315E0638D003F2EFFF43F013F004EB900E3AAC24FEFA7 +S315E0638D1000263F3C00013F3C000142673F3C0001C7 +S315E0638D202F063F053F390001FABE2F39000219D8F5 +S315E0638D303F390001FAC04EB900E314944FEF0018CF +S315E0638D404A6E0008671A558F3F043F033F2E0010B3 +S315E0638D503F2E000E3F024EB900E3ACA64FEF000C88 +S315E0638D6033C20001FAC24CEE047CFFD84E5E4E7508 +S315E0638D704E56FFD870FF48D7041C486EFFFE486E18 +S315E0638D80FFFC486EFFFA260E51832F0345F900E395 +S315E0638D90AD0A280E0684FFFFFFE83F3C0005342E4C +S315E0638DA0000833C0000237A43F024E92486EFFF6D6 +S315E0638DB0486EFFF4486EFFF2486EFFF03F3C0006F4 +S315E0638DC03F024E924FEF0028486EFFEE486EFFEC8F +S315E0638DD0486EFFEA2F043F3C00073F024E922F04A2 +S315E0638DE02F034EB900E2FE304FEF001C45F900E376 +S315E0638DF0AD5A4A4067403F2EFFF63F2EFFF43F2EC3 +S315E0638E00FFF23F2EFFF03F3C00053F024E923F2EBE +S315E0638E10FFEE3F2EFFEC3F2EFFEA3F2EFFE83F2EAD +S315E0638E20FFF63F2EFFF43F2EFFF23F2EFFF04EB9E3 +S315E0638E3000E3AB1C603E3F2EFFEE3F2EFFEC3F2E82 +S315E0638E40FFEA3F2EFFE83F2EFFFE3F2EFFFC3F2E5D +S315E0638E50FFFA3F2EFFF84EB900E3AAC23F2EFFEEBC +S315E0638E603F2EFFEC3F2EFFEA3F2EFFE83F3C000537 +S315E0638E703F024E924FEF001C4CEE041CFFD84E5E51 +S315E0638E804E754FEFFFEC48D71C0C246F0018342F58 +S315E0638E90001C362F001E266F002E426749F900E359 +S315E0638EA0AC163F3C00024E943F3C00102F2F00303F +S315E0638EB02F2F00302F2F00303F2F00324EB900E3C3 +S315E0638EC046024FEF00144A80660E426742674E944D +S315E0638ED0588F4240600000C4254000182F004EB909 +S315E0638EE000E348362F0A4EB900E3A3602F0A4EB972 +S315E0638EF000E3A39049F900E3AD5A42674267486AE3 +S315E0638F00001C3F3C00023F2A00064E9442674267DC +S315E0638F10486A005F3F3C00033F2A00064E944FEFEA +S315E0638F2000244A43672E558F3F2B00063F2B0004F0 +S315E0638F303F2B00023F133F033F2A00063F024EBA30 +S315E0638F40FD2C4FEF00104A42670A2F0A4EB900E341 +S315E0638F5098F8588F3F3C00013F2A00064EBAFAD88C +S315E0638F60588F4A6F003267244A4266203F2B0006D9 +S315E0638F703F2B00043F2B00023F133F2A00063F3C92 +S315E0638F8000144EB900E349BA4FEF000C42674267FB +S315E0638F904EB900E3AC167001588F4CD71C0C4FEFFB +S315E0638FA000144E75002A00004FEFFFEE48EF0C0CFD +S315E0638FB00002342F001671422200E789EB88908124 +S315E0638FC00680000219E8204026503F024EB900E3CE +S315E0638FD097C6588F24404A80676077AB000D558FFC +S315E0638FE0487AFFC23F034EB900E38794508F4A79CC +S315E0638FF000018E6466383F3C0001716A000A220014 +S315E0639000E789EB8890810680000219EC2F00487AA5 +S315E0639010FF95487AFF91487AFF8C3F033F023F3CD6 +S315E063902000012F0A4EBAFE5C4FEF001C60342F0A34 +S315E06390304EB900E39760588F602848790001FA8259 +S315E06390403F3C00193F3C00054EB900E3B35A548FE9 +S315E06390502EB90001FA823F3C00014EB900E3A93C18 +S315E0639060508F4CD70C0C42404FEF00104E754E5666 +S315E0639070FFE048D70C3C486EFFFE486EFFFC486E47 +S315E0639080FFFA486EFFF847F900E387943F3C000434 +S315E0639090246E0008342E000E282E00102A2E0014AB +S315E06390A0262E00183F2A00064EB900E3AD0A4FEFBD +S315E06390B0000E2EBC00E38FA43F024E93508F4A7995 +S315E06390C000018E64670C2F0A4EB900E3E1D0588F36 +S315E06390D06046558F2F043F024E932F2A00184EB9F0 +S315E06390E000E346004FEF000C4A7900018E646608A0 +S315E06390F0263C00E38FA52A033F2E001E486EFFF849 +S315E06391002F032F052F043F023F2E000C42672F0AE1 +S315E06391104EBAFD704FEF001C4CEE0C3CFFE04E5E2A +S315E06391204E7500005C004E56FF8848D70CFC382E1F +S315E06391300008486EFFFC486EFFF83F043F390001C4 +S315E0639140FAC04EB900E36F0E4FEF000A3F390001F4 +S315E0639150FAC024404EB900E398C0588F26404AAE21 +S315E0639160FFF86722486EFFF4486EFFEB486EFFA98F +S315E0639170486EFFFE202B001850802F004EB900E3A7 +S315E0639180444C4FEF00144A8A670001CE322A000648 +S315E0639190A3427141B480670001186D084A416718BC +S315E06391A0600001B6A543B68067000186A741B28039 +S315E06391B0660001A6600001863A2A00047010762AEA +S315E06391C0226A000A242EFFF806820000000E306E43 +S315E06391D0FFFE3E2EFFFCC0854A4057C61011488607 +S315E06391E073005486B6816712163C003FB681670A00 +S315E06391F04A0057C34883448360027601558F486EBD +S315E0639200FFA93F084EB900E387944200508F13C02D +S315E06392100001F9AF13C00001F92A4A43660E4A47D3 +S315E0639220660E2602242A000A6000013C4A47672E3E +S315E06392307008C0854A406700012C48790001F9AFA0 +S315E063924048790001F92A487AFEDA2F024EB900E33B +S315E063925060884FEF00104A4067000100603642A71E +S315E06392603F3C0018600000844A82670E2F0248790B +S315E06392700001F92A4EBAF73A508F0C830001F9AF31 +S315E063928067124A83670E2F0348790001F9AF4EBA36 +S315E0639290F720508F3F04A541CA813F390001FAC0E8 +S315E06392A03F063F054EB900E38878508F600000AC17 +S315E06392B04A2EFFA96710487AFE6C486EFFA94EB93D +S315E06392C000E1C4B6508F240E0682FFFFFFA92F028A +S315E06392D0763F4EB900E1C4A4588F06800000000DC6 +S315E06392E0B680641242A73F3C00243F3C00014EB97E +S315E06392F000E349466060206EFFF841E8000E2F0800 +S315E06393002F024EB900E1C4B642403740000E3F3CFF +S315E063931000013F00486EFFF4486EFFEB2F023F2EDD +S315E0639320FFFE3F042F0B4EBAFD464FEF0020602849 +S315E0639330558F3F044EBAFC72588F601C558F3F3C85 +S315E063934000254EB900E3897C548F2F003F3C000132 +S315E06393504EB900E3A93C508F42404CEE0CFCFF88CB +S315E06393604E5E4E7542830C820001F92A6600FEFA70 +S315E06393706000FF084E56FFE848D70C0C342E000811 +S315E0639380486EFFFE486EFFFA3F023F390001FAC0BE +S315E06393904EB900E36F0E4FEF000A3F390001FAC0A2 +S315E06393A026404EB900E398C0588F24404A8B670045 +S315E06393B0009C322B0006A3437141B680673A6D0881 +S315E06393C04A41671260000086A541B280673EA743C3 +S315E06393D0B680667860642F2EFFFA226A0018508999 +S315E06393E02F094EB900E35946508F4A40675E2F0A0C +S315E06393F04EB900E34A10603E2F2EFFFA246A001846 +S315E0639400508A2F0A4EB900E35B36603E7542558F4C +S315E06394102002E788EB8A94800682000219E82242FA +S315E0639420205171A8000D32003D40FFFE48813F01A7 +S315E06394304EB900E35C1A588F601242A73F3C0026A0 +S315E06394403F3C00014EB900E34946508F4CEE0C0CAD +S315E0639450FFE842404E5E4E754E56FFDC48D73C040D +S315E0639460342E0008486EFFFE486EFFF83F023F3930 +S315E06394700001FAC04EB900E36F0E4FEF000C4A806D +S315E0639480670000FC2040A54171680006B280660073 +S315E063949000EE714245F900E349462200E789EB882D +S315E06394A090810680000219E82240205171A8000DE0 +S315E06394B0486EFFFC3F3C001B3D40FFFC3F3C000227 +S315E06394C04E92723A1D6EFFFDFFF2508F71401D4161 +S315E06394D0FFF342011D41FFF4A341B280660000A0A1 +S315E06394E0558F3F3C00044BF900E3897C49FAF4C2AB +S315E06394F047F900E3AEFE4E952F0048790001F92A5D +S315E06395004E942F390001F9AA4E934FEF00104A406B +S315E06395106622558F3F3C00114E952F004879000136 +S315E0639520F92A4E942F390001F9AA4E934FEF0010B2 +S315E06395304A40672C486EFFF248790001F9AF4EBAAC +S315E0639540F4703F0274013F390001FAC03F3C000109 +S315E06395503F3C00014EB900E388784FEF001060109E +S315E063956042A73F3C001A42423F3C00014E92508F75 +S315E0639570426742674EB900E3AC16588F60024242D7 +S315E063958030024CEE3C04FFDC4E5E4E754FEFFF80DF +S315E063959048D77CFC3C6F0084760442422C0F2A0F4A +S315E06395A0280F06860000007A4BFAF48C06850000E5 +S315E06395B0007106840000002F49EF007E47F900E35F +S315E06395C0444C45FAFAAA3E02CFFC00B02047D1FCF0 +S315E06395D00001B2B84A683B2267342F062F052F0491 +S315E06395E02F0C06870001EDD420683B3450882F08A2 +S315E06395F04E933F0E3F3C00012F062F052F043F2F6E +S315E063960000A242672F074E924FEF002C600A3F3C61 +S315E0639610000142674E95588F528253834A4366A64A +S315E06396204CD77CFC4FEF00804E750000302F000472 +S315E063963041EF000633D00001F5AC33C00001F59C81 +S315E0639640674E7140A341B2806600009830390001ED +S315E06396504BA041F900014BA433D00001F5A041F9D9 +S315E06396600001FCDA33D00001F5963200D080C3FC0A +S315E0639670002D538033C00001F5A2700233C10001AF +S315E0639680F59E33C00001F5A4203C0001FD00604C6B +S315E063969041F90001FD2433D00001F59E41F9000153 +S315E06396A0FD2633D00001F5A0717900014B8C0C8067 +S315E06396B00000012C6E0442406002700833C0000172 +S315E06396C0F5A2700241F90001FCD833D00001F596AA +S315E06396D033C00001F5A4203C0001FCDC23C000019B +S315E06396E0F59832390001F5A230390001F59E3079FB +S315E06396F00001F5A4D08132390001F5A033C0000141 +S315E0639700F5A6D28833C10001F5A8307900014BA0F4 +S315E063971032390001F926928848C183C033C100011A +S315E0639720F5AA6E08720133C10001F5AA4E754EB90A +S315E063973000E38584426742674EBAFEF24240588F41 +S315E063974033C00001EDDA33C00001EE8A33C00001B5 +S315E0639750EF3A33C00001EFEA33C00001F0944E758F +S315E06397602F0A2F02246F000CA142302A00067340B1 +S315E0639770B481670C558F3F004EB900E3ACF6588F62 +S315E063978030390001F094538033C00001F0944240D5 +S315E0639790354000063F3C00013F2A000A2F390002AC +S315E06397A019D84EB900E3A7F25C8F42674267426716 +S315E06397B042673F2A000A4EB900E386924FEF000CF8 +S315E06397C0241F245F4E7530390001F0944FEFFFF4A8 +S315E06397D048D70C04A9427340B481670000D6143CB1 +S315E06397E00052528033C00001F0944C0128002642B7 +S315E06397F0D7FC000218883F2B00063F2B00043F2B63 +S315E063980000023F134EB900E3863A508F4A40670041 +S315E063981000A232004242C3FC00B02441D5FC000101 +S315E0639820EC743540000A302B0004323900014BA05A +S315E0639830354200043542000C3542000E356F0010A8 +S315E06398400008558F9081320048C183F90001F5A67F +S315E0639850302B000635410010323900014BA490816C +S315E0639860340048C285F90001F5A84240354200124A +S315E063987035400014354000163F390001F9203F3981 +S315E06398800001F91E3F390001F91C3F390001F91A5D +S315E06398903F3C0FFF4EB900E3AC6A4FEF000CA141CA +S315E06398A0354000067140B280660A2F0A4EBAFEB2B0 +S315E06398B0588F95CA200A4CD70C044FEF000C4E75AF +S315E06398C042402F032F02736F000C41F90001EDDA7A +S315E06398D07550B282660CC1FC00B006800001EDD41F +S315E06398E0601052807540A94341E800B0B68266E0F5 +S315E06398F04280241F261F4E753F3CFFFF206F000604 +S315E06399003F28000A2F39000219D84EB900E3A7F2BF +S315E0639910508F4E753039000219E02F0273402401EF +S315E0639920E78AEB89204191C2D1FC0001B2B84A686B +S315E0639930673867124A68673A670CC1FC00B006800D +S315E06399400001EC7460024280241F4E752F032F02E0 +S315E0639950322F000C3039000219DE601471402400A6 +S315E0639960E78AEB8890820680000219DC204030109B +S315E063997053817541A143B68266E2241F5580261F53 +S315E06399804E753F2F00044EBAFFC4548FC1FC00B03E +S315E063999006800001EDD44E754FEFFFE848D7047CAF +S315E06399A0246F001C362F0020342F0022206A001813 +S315E06399B042402068004C600A72FF52803141001CCD +S315E06399C020504A8866F232390001F5AA7D403800B4 +S315E06399D07B41BA866C02380148C081C122004841A6 +S315E06399E035440014354000164A41670652803540D7 +S315E06399F000164A6A001666067001354000164A4448 +S315E0639A0066067201354100144A436604163C00015A +S315E0639A103F2A00143F034EB900E2FE70306A001439 +S315E0639A20588F354000107140600653813541000C14 +S315E0639A30322A000C260896817743B6806DEC4A425B +S315E0639A406604143C00013F2A00163F024EB900E269 +S315E0639A50FE70306A0016588F354000127340600618 +S315E0639A6053803540000E302A000E240894807542F8 +S315E0639A70B4816DEC322A000CC1F90001F5AA206AC3 +S315E0639A8000182068004CD081600220504A40670687 +S315E0639A9053804A8866F4226F00244CD7047C4FEFE8 +S315E0639AA0001822884E752F0A70102F02246F000C5F +S315E0639AB0220A41F900E330BE068100000022142A3F +S315E0639AC000054882C480200A06800000000E4A42F0 +S315E0639AD06710558F2F012F003F3CFFFF3F3C00018E +S315E0639AE0600C558F2F012F003F3CFFFF42674267B3 +S315E0639AF04E904FEF0010241F2540001E245F4E75E5 +S315E0639B004E56FFD048D73CFC362E0012558F342E86 +S315E0639B100010246E000847F900E2FE704BF900E39B +S315E0639B2087123F033F023F2E000E3F2E000C3F2A73 +S315E0639B30000A4EB900E3869248C387F90001F5A8A7 +S315E0639B40486EFFFC48C285F90001F5A63F03424330 +S315E0639B503F022F0A4EBAFE42322A000C302A001424 +S315E0639B6090813F00302A001052803F004E93322AA4 +S315E0639B70000E3A00302A0016794590813F00302A7C +S315E0639B80001252803F004E934FEF002047FAFF18D2 +S315E0639B9071402D40FFF86000017C3203558F3F39F9 +S315E0639BA00001F5A030390001F5A4C3F90001F5A879 +S315E0639BB03F390001F59ED08132023F003039000122 +S315E0639BC0F5A2C3F90001F5A6D0813F003F2A000A5A +S315E0639BD04E954FEF000C226EFFFC73403340001C42 +S315E0639BE03C002001EB89E7882041724091C0D1FCBB +S315E0639BF00001B2B83141672E42013141672C3239F7 +S315E0639C000001F59C67407D41A341B286660000D4BE +S315E0639C107C182840D9FC0001F196214C673049F95C +S315E0639C20000238BC3146672A20402009D1FC000196 +S315E0639C30B2B8588021543EDE21403EE22F094E936E +S315E0639C40588F6000009E721F3141672A2F094E9339 +S315E0639C50588F226EFFFC2069001E4A690022670660 +S315E0639C6032280012600432280014714643F9000179 +S315E0639C70B2B82C002040E78E41E81EEF33818A00BC +S315E0639C80C3FC002220462C00EB8E068100020DC643 +S315E0639C902246284643F10A0099C8204CD1FC0002CB +S315E0639CA019E82009068000022654208048780022BD +S315E0639CB02F0128402F004EB900E00EC44FEF000C91 +S315E0639CC0202EFFFC2040224041E8000E2948000890 +S315E0639CD049EC000C32142069001E71A800178081DC +S315E0639CE03880206EFFFC5282714220502D48FFFC83 +S315E0639CF0B8806624302A001452839085600220502F +S315E0639D004A4066062D48FFFC600A53804A8866EE41 +S315E0639D1042AEFFFC42427F437142B8806F0EBEAEF5 +S315E0639D20FFF86C084AAEFFFC6600FE70558F342A76 +S315E0639D3000063F2A001447F900E1C6303F3C03E8DA +S315E0639D403F2A00104E934267426742673F003F3CBB +S315E0639D50000F3F024EB900E3AD5A322A0014302AAF +S315E0639D6000104FEF001479417740B6846C14558F39 +S315E0639D7092803F013F3C03E83F2A000C4E93508FAD +S315E0639D8060024240426749F900E3AD5A47F900E1B0 +S315E0639D90C630426742673F003F3C00083F024E944D +S315E0639DA04FEF000A3F2A00163F3C03E83F2A0012C2 +S315E0639DB04E934267426742673F003F3C00103F0273 +S315E0639DC04E94322A0016302A00124FEF001479417E +S315E0639DD07740B6846C14558F92803F013F3C03E82D +S315E0639DE03F2A000E4E93508F6002424042674267BD +S315E0639DF042673F003F3C00093F024EB900E3AD5A7C +S315E0639E004FEF000C4CEE3CFCFFD04E5E4E754E566B +S315E0639E10FFCC48D71CFC3F2E000E3E2E000C246E72 +S315E0639E20000842674EB900E2FE8C588F41F900E2C2 +S315E0639E30FE704A4767243F00322A0012302A001632 +S315E0639E4090813F004E90322A000E3C2A00129081A8 +S315E0639E50D28034003541000E60223F00322A001082 +S315E0639E60302A001490813F004E90322A000C3C2A3F +S315E0639E7000109081D28034003541000C588F4A42FD +S315E0639E8067000146486EFFFE486EFFFC486EFFFAC8 +S315E0639E90260E51832F03280E0684FFFFFFF03F3C17 +S315E0639EA000043F2A00064EB900E3AD0A3F2EFFFEEB +S315E0639EB03F2EFFFC3F2EFFFA3F2EFFF82F0A4EBAE6 +S315E0639EC0FC404FEF00202F042F034EB900E2FE5211 +S315E0639ED02F04487900014BA84EB900E2F9B22F048A +S315E0639EE02F034EB900E2FE304FEF00184A40670099 +S315E0639EF000B87BC2700FE0AD4A45670244827D4697 +S315E0639F007142B0866C0000A2382EFFFC3C2EFFFE49 +S315E0639F104A47670CC5F90001F5A842439C82600C89 +S315E0639F2036024242C7F90001F5A698834A456606BA +S315E0639F3099CC97CB60083842364342424243486EF7 +S315E0639F40FFF84EB900E25E323E86322EFFFA3F04F8 +S315E0639F50302EFFF8D9C1D4813F0CD7C0D6803F0BF2 +S315E0639F603F023F033F3C00034EB900E263C64FEF57 +S315E0639F7000104A47671A4A45660A302EFFFAD086CA +S315E0639F803D40FFFA302EFFFE90863D40FFFE6018AF +S315E0639F904A45660A302EFFF8D0843D40FFF8302EFE +S315E0639FA0FFFC90843D40FFFC558F3F2EFFFE3F2E26 +S315E0639FB0FFFC3F2EFFFA3F2EFFF83F2A00064EB91D +S315E0639FC000E38AC04FEF000C4CEE1CFCFFCC4E5E08 +S315E0639FD04E754E56FFE848D7043C3A2E0008342EB9 +S315E0639FE0000C3F054EBAF8DA548F24404A42670CB8 +S315E0639FF0382A0016362A00127210600A382A0014CC +S315E063A000362A0010720F200E55802F002F002F0086 +S315E063A010486EFFFC98833F013F054EB900E3AD0A06 +S315E063A0204FEF00123F3C03E83F043F2E000A4EB970 +S315E063A03000E1C6303F003F022F0A4EBAFDD24FEF32 +S315E063A04000104CEE043CFFE84E5E4E753F2F000475 +S315E063A0504EBAF86E548FAF41204071EF0006B2807E +S315E063A060656E303B0A0848C04EFB08020010001CD0 +S315E063A070002A0032003A00460052005A3228000EA7 +S315E063A080302800129280600A322800123028000ECF +S315E063A090D2807001603E3228000E538160F432282C +S315E063A0A0000E528160EC3228000C3028001092805A +S315E063A0B0601A322800103028000CD280600E3228F5 +S315E063A0C0000C538160063228000C528142406004E2 +S315E063A0D0700142413F013F002F084EBAFD32508F77 +S315E063A0E04E754FEFFFF048D71C0445F90001EDDAF2 +S315E063A0F049F900E346484A52673A4240266A001203 +S315E063A100724034390001F5AC35400008712B000824 +S315E063A110B2806608700433C00001F5AC558F2F2B0F +S315E063A120004C3F3CFFFF4E94508F2740004C33C2B8 +S315E063A1300001F5AC45EA00B0B5FC0001F09A66B6FD +S315E063A1404CD71C044FEF00104E754FEFFFD448D742 +S315E063A1501CFC760442422E0F2C0F2A0F0687000062 +S315E063A160002649EF002406860000002806850000E5 +S315E063A170002A47F900E3AD0A45FAF9863802C9FCD5 +S315E063A18000B02044D1FC0001EDDA3010672E2F0CCD +S315E063A1902F072F062F0506840001EDD43F3C00040C +S315E063A1A03F004E933F2F00383F2F003C3F2F004048 +S315E063A1B03F2F00442F044E924FEF00205282538389 +S315E063A1C04A4366B84CD71CFC4FEF002C4E754FEFF5 +S315E063A1D0FFD448D71CFC2E0F2C0F2A0F280F45F906 +S315E063A1E00001EDDA068700000024068600000026FB +S315E063A1F006850000002806840000002A49F900E38A +S315E063A200AD0A47F900E349BA34126764717900022B +S315E063A21037A4A141B280670A7342B280665276017F +S315E063A220600242432F072F062F052F043F3C0004AD +S315E063A2303F024E943F2F00383F2F003C3F2F0040B4 +S315E063A2403F2F00443F023F3C00154E934FEF002003 +S315E063A2503F2F00243F2F00283F2F002C3F2F003055 +S315E063A2603F023F3C00144E934FEF000C4A43660CAB +S315E063A27045EA00B0B5FC0001F09A668C4CD71CFC4D +S315E063A2804FEF002C4E752F02302F000E206F000823 +S315E063A290322F000C4A40661071412400E78AEB884E +S315E063A2A09082303008026022C1FC0018303008002A +S315E063A2B060183400C5FC001843F028003429000A0E +S315E063A2C008020000660E3011600273417540B28287 +S315E063A2D06DE04240241F4E75472E675F7363726578 +S315E063A2E0656E5B637572725D2E6F625F74797065BE +S315E063A2F0203D3D20475F49434F4E006465736B2FB6 +S315E063A3006465736B77696E2E63002F02342F0008E2 +S315E063A31073422001E788EB8992800681000219E2A5 +S315E063A3202041721F71D0B280671A487AFFAC487ACF +S315E063A33000B6487802FE487AFFC34EB900E0387447 +S315E063A3404FEF00107142241F2200E789EB8890816A +S315E063A3500680000219E822402051202800084E7545 +S315E063A3602F027240206F00082268001871290008E6 +S315E063A370B280671841E8001C5089600210C010196A +S315E063A38067087300742AB48166F24210241F4E751F +S315E063A3902F0B2F0A246F000C266A001848790001F8 +S315E063A3A0FA8242673F3C00054EB900E3B35A2F3960 +S315E063A3B00001FA8248790001FAD44EB900E012FC52 +S315E063A3C04FEF000E3F2B00502F2B005248790001D0 +S315E063A3D0FAD4486A005F4EB900E1C5D64FEF001084 +S315E063A3E0245F265F4E7577696E5F696E616D6500A2 +S315E063A3F0302F000441F900E5034033C00001117CCE +S315E063A400C1FC00030680FFFFFFE2714012300800E3 +S315E063A4102040D1FC00E50341488133C10001117E50 +S315E063A4201010488033C000011180122800012F39D3 +S315E063A430000111A0488133C1000111824EB900E0E9 +S315E063A44035B0588F30390001116C4E75558F3F3CEE +S315E063A450000A203C000238C023C000011188203C7A +S315E063A4600001114C23C00001118C203C0001116CEA +S315E063A47023C000011190203C0001114441F9000121 +S315E063A480118423C000011194203C0001119C20BC7F +S315E063A4900001117C23C8000111A023C000011198BB +S315E063A4A04EBAFF4E588F30390001116C4E75558F99 +S315E063A4B03F3C00134EBAFF3A588F70014E75700DEC +S315E063A4C041EF000423D0000111443F4000046000E3 +S315E063A4D0FF2041EF000433D00001114C41EF000649 +S315E063A4E033D00001114E41EF0008558F33D00001A0 +S315E063A4F011503F3C00154EBAFEF8206F000E30B99E +S315E063A5000001116E206F001230B900011170206FE7 +S315E063A510001630B900011172206F001A588F30B9F6 +S315E063A5200001117430390001116C4E75701841EFFA +S315E063A530000433D00001114C41EF000633D0000133 +S315E063A540114E3F4000046000FEA841EF000433D0A3 +S315E063A5500001114C41EF000633D00001114E41EF8B +S315E063A560000833D00001115041EF000A33D00001F7 +S315E063A570115241EF000C33D00001115441EF000E4C +S315E063A58033D00001115641EF001033D0000111586A +S315E063A59041EF001233D00001115A41EF001433D07A +S315E063A5A00001115C41EF001633D00001115E41EF0B +S315E063A5B0001833D00001116041EF001A33D0000177 +S315E063A5C0116241EF001C33D00001116441EF001EBC +S315E063A5D033D00001116641EF002023D0000111441E +S315E063A5E041EF002433D00001116841EF0026558F17 +S315E063A5F033D00001116A3F3C00194EBAFDF4206F77 +S315E063A600002C30B90001116E206F003030B90001C3 +S315E063A6101170206F003430B900011172206F003879 +S315E063A62030B900011174206F003C30B90001117636 +S315E063A630206F0040588F30B900011178303900013E +S315E063A640116C4E75701A41EF000433D00001114C62 +S315E063A65041EF000633D00001114E3F400004600035 +S315E063A660FD90701E41EF000423D00001114441EFD9 +S315E063A670000833D00001114C3F4000046000FD72D6 +S315E063A680701F41EF000423D00001114441EF00083D +S315E063A69033D00001114C41EF000A33D00001114E73 +S315E063A6A03F4000046000FD4A702041EF000423D080 +S315E063A6B00001114441EF000833D00001114C41EF32 +S315E063A6C0000A33D00001114E3F4000046000FD22D2 +S315E063A6D0702141EF000423D00001114441EF0008EB +S315E063A6E033D00001114C41EF000A33D00001114E23 +S315E063A6F03F4000046000FCFA702241EF000423D07F +S315E063A7000001114441EF000833D00001114C41EFE1 +S315E063A710000A23D0000111483F4000046000FCD2E8 +S315E063A720702541EF000433D00001114C41EF000680 +S315E063A73033D00001114E3F4000046000FCB4702842 +S315E063A74041EF000423D00001114441EF000833D008 +S315E063A7500001114C41EF000A33D00001114E3F4036 +S315E063A76000046000FC8C41EF000423D00001114437 +S315E063A77041EF000833D00001114C41EF000A702A23 +S315E063A78033D00001114E41EF000C33D0000111507C +S315E063A79041EF000E33D00001115241EF001033D088 +S315E063A7A00001115441EF001233D0000111563F40CE +S315E063A7B000046000FC3C41EF0004702B23D00001F1 +S315E063A7C0114441EF000833D00001114C41EF000A18 +S315E063A7D033D00001114E41EF000C33D0000111502C +S315E063A7E041EF000E33D0000111523F400004600098 +S315E063A7F0FC00702D41EF000423D00001114441EFCA +S315E063A800000833D00001114C41EF000A33D0000158 +S315E063A810114E3F4000046000FBD841EF000423D0B3 +S315E063A8200001114441EF0008558F33D00001114C0C +S315E063A8303F3C002C4EBAFBBA206F000E30B90001E4 +S315E063A840116E206F0012588F30B9000111703039E4 +S315E063A8500001116C4E7541EF000423D000011144F1 +S315E063A86041EF000833D00001114C41EF000A33D0C9 +S315E063A8700001114E41EF000C33D00001115041EF5E +S315E063A880000E702F33D00001115241EF001033D028 +S315E063A8900001115441EF001233D00001115641EF2C +S315E063A8A0001433D00001115841EF001633D0000194 +S315E063A8B0115A3F4000046000FB38703241EF0004F8 +S315E063A8C023D00001114441EF000833D00001114C5D +S315E063A8D03F4000046000FB1A41EF000433D00001FF +S315E063A8E0114C41EF000633D00001114E41EF0008F1 +S315E063A8F033D00001115041EF000A33D00001115209 +S315E063A90041EF000C703333D00001115441EF000E78 +S315E063A91033D00001115641EF001033D000011158D6 +S315E063A92041EF001233D00001115A41EF001433D0E6 +S315E063A9300001115C3F4000046000FAB6703441EFF9 +S315E063A940000433D00001114C41EF000623D000012F +S315E063A95011443F4000046000FA98703541EF00040B +S315E063A96033D00001114C3F4000046000FA8441EFAC +S315E063A9700004558F23D0000111443F3C00364EBAA4 +S315E063A980FA70206F000C30B90001116E206F001071 +S315E063A99030B900011170206F001430B900011172F3 +S315E063A9A0206F0018588F30B90001117430390001F7 +S315E063A9B0116C4E7541EF000433D00001114C41EF49 +S315E063A9C0000633D00001114E41EF000833D0000199 +S315E063A9D0115041EF000A558F33D0000111523F3CCD +S315E063A9E000464EBAFA0C206F001030B90001116EC2 +S315E063A9F0206F0014588F30B90001117030390001AF +S315E063AA00116C4E7541EF000433D00001114C41EFF8 +S315E063AA10000633D00001114E41EF000833D0000148 +S315E063AA20115041EF000A33D00001115241EF000C9F +S315E063AA3033D00001115441EF000E33D000011156BB +S315E063AA4041EF001033D00001115841EF0012558FEA +S315E063AA5033D00001115A3F3C00474EBAF994206F58 +S315E063AA60001830B90001116E206F001C588F30B9A1 +S315E063AA700001117030390001116C4E7541EF00042D +S315E063AA8033D00001114C41EF0006704833D000012A +S315E063AA90114E41EF000833D00001115041EF000A37 +S315E063AAA033D00001115241EF000C33D00001115451 +S315E063AAB041EF000E33D0000111563F4000046000C1 +S315E063AAC0F93041EF000433D00001114C41EF000649 +S315E063AAD033D00001114E41EF000833D0000111502D +S315E063AAE041EF000A704933D00001115241EF000C87 +S315E063AAF033D00001115441EF000E33D000011156FB +S315E063AB0041EF001033D00001115841EF001233D00A +S315E063AB100001115A3F4000046000F8D641EF00049B +S315E063AB2033D00001114C41EF000633D00001114EE2 +S315E063AB3041EF000833D00001115041EF000A704A3B +S315E063AB4033D00001115241EF000C33D000011154B0 +S315E063AB5041EF000E33D00001115641EF001033D0C0 +S315E063AB600001115841EF001233D00001115A3F4002 +S315E063AB7000046000F87C704B41EF000423D00001D1 +S315E063AB80114441EF000833D00001114E41EF000A52 +S315E063AB9033D00001115041EF000C33D00001115264 +S315E063ABA03F4000046000F84A704C41EF000423D054 +S315E063ABB00001114441EF000833D00001114C41EF2D +S315E063ABC0000A33D00001114E41EF000C33D000018F +S315E063ABD011503F4000046000F818558F3F3C004D2C +S315E063ABE04EBAF80E206F000830B90001116E206F7F +S315E063ABF0000C30B900011170206F001030B900010C +S315E063AC001172206F0014588F30B900011174303916 +S315E063AC100001116C4E75716F000641EF000433D08D +S315E063AC200001114C23C000011144704E3F40000403 +S315E063AC306000F7BE558F3F3C004F4EBAF7B4206FC6 +S315E063AC40000830B90001116E206F000C30B90001C5 +S315E063AC501170206F001030B900011172206F00147B +S315E063AC60588F30B9000111744E7541EF000470647A +S315E063AC7033D00001114C41EF000633D00001114E91 +S315E063AC8041EF000833D00001115041EF000A33D0A1 +S315E063AC900001115241EF000C33D0000111543F40E3 +S315E063ACA000046000F74C41EF0004706533D00001A7 +S315E063ACB0114C41EF000633D00001114E41EF00081D +S315E063ACC033D00001115041EF000A33D00001115235 +S315E063ACD041EF000C33D0000111543F4000046000A3 +S315E063ACE0F710706641EF000433D00001114C3F402A +S315E063ACF000046000F6FC706741EF000433D00001A6 +S315E063AD00114C3F4000046000F6E841EF000433D0A5 +S315E063AD100001114C41EF0006558F33D00001114E0F +S315E063AD203F3C00684EBAF6CA206F000C30B90001AA +S315E063AD30116E206F001030B900011170206F00149E +S315E063AD4030B900011172206F0018588F30B90001D5 +S315E063AD50117430390001116C4E7541EF000433D044 +S315E063AD600001114C41EF0006706933D00001114ECA +S315E063AD7041EF000833D00001115041EF000A33D0B0 +S315E063AD800001115241EF000C33D00001115441EF41 +S315E063AD90000E33D0000111563F4000046000F652C6 +S315E063ADA0706A41EF000433D00001114C41EF0006B5 +S315E063ADB033D00001114E3F4000046000F634706BFF +S315E063ADC041EF000433D00001114C3F4000046000C2 +S315E063ADD0F62041EF000433D00001114C41EF000649 +S315E063ADE033D00001114E41EF000833D0000111501A +S315E063ADF041EF000A33D00001115241EF000C33D02A +S315E063AE000001115441EF000E558F33D00001115606 +S315E063AE103F3C006C4EBAF5DA206F001430B900019E +S315E063AE20116E206F001830B900011170206F001C9D +S315E063AE3030B900011172206F0020588F30B90001DC +S315E063AE40117430390001116C4E75707241EF000474 +S315E063AE5023D00001114441EF000833D00001114CC7 +S315E063AE603F4000046000F58A707841EF000423D028 +S315E063AE700001114441EF000823D0000111483F402F +S315E063AE8000046000F56C41EF0004707933D0000193 +S315E063AE90114C41EF000633D00001114E41EF00083B +S315E063AEA033D00001115041EF000A23D00001114471 +S315E063AEB041EF000E23D0000111483F4000046000DB +S315E063AEC0F530707A41EF000423D00001114441EF7D +S315E063AED0000833D00001114C3F4000046000F512D6 +S315E063AEE0707B41EF000423D00001114441EF000879 +S315E063AEF033D00001114C3F4000046000F4F4707CF1 +S315E063AF0041EF000423D0000111443F400004600098 +S315E063AF10F4E0707D41EF000423D00001114441EF7A +S315E063AF20000823D0000111483F4000046000F4C2EA +S315E063AF302047656E657269632000205370726561B0 +S315E063AF40647368656574200020576F72642050727D +S315E063AF506F636573736F722000204461746162612D +S315E063AF607365200020447261772000205061696E2A +S315E063AF707420002050726F6A656374200020477204 +S315E063AF806170682000204F75746C696E65200020DF +S315E063AF904163636F756E74696E672000204D756CEF +S315E063AFA074692D46756E6374696F6E20002045641F +S315E063AFB075636174696F6E200020436F6D6D756EA6 +S315E063AFC069636174696F6E7320002050726F677294 +S315E063AFD0616D6D6572277320546F6F6C2000204737 +S315E063AFE0616D652000204F75747075742000204490 +S315E063AFF065736B746F70205075626C6973686572A4 +S315E063B0002000205363616E2000204D61696C20004F +S315E063B010000000004FEFFFE848D71C1C246F001CBC +S315E063B020A343342F002047F900E0117645EA000C8C +S315E063B0306044302AFFFA780B0680FFFFFFEB73C0AC +S315E063B040B881652E71402203E1A9200102810000E7 +S315E063B05008A06616028000000303671628522F2CA9 +S315E063B06000044E932940000460062F124E93248019 +S315E063B070588F45EA001853824A426CB64CD71C1C7B +S315E063B0804FEF00184E754FEFFFE448D71C3C342F63 +S315E063B0900024246F0020424349F900E0117647EA31 +S315E063B0A000047942600E2F134E945283588F2680A4 +S315E063B0B047EB001C7143B8806EEC204A4280424104 +S315E063B0C0794260264A90661C2668000493C9600A42 +S315E063B0D077037A5FBA8366025289161B66F25289F0 +S315E063B0E07749D083528141E8001C7741B8836ED4B7 +S315E063B0F02F004EB900E301F2588F42417542604238 +S315E063B1004A9266382480204010FC00404240226A1E +S315E063B1100004600A7703785FB88366025280161983 +S315E063B12066F293C97740600810BC005F204052899D +S315E063B130794920085280B6846EEE4210528145EA20 +S315E063B140001C7741B4836EB84CD71C3C4FEF001CB0 +S315E063B1504E754FEFFFC8302F004048D77CFC246F15 +S315E063B160003C2E3C00E1C4A47DF90000526A4243F0 +S315E063B170E68EC1FC001841F2080071680002220005 +S315E063B180E789EB88908130320802C1FC00184BF204 +S315E063B190080071680004382D00022200E789EB8815 +S315E063B1A09081343208023004C1FC001849F2080C7D +S315E063B1B071462F400034600000AEC5FC00182F14C2 +S315E063B1C020474E9047F228003A2B00022F4000308A +S315E063B1D0396F0032000839430004588F4242300524 +S315E063B1E0C1FC00184DF2080C601A2F1620474E90EA +S315E063B1F07342588F22417340B2896F02340052859D +S315E063B2004DEE0018302B0004734522417340B2893A +S315E063B2106CD8204354883748001041F028007B48B7 +S315E063B220BAAF00346D10204691C25382374800109E +S315E063B2300082000007003A2B000271403205C3FC2E +S315E063B240001841F2181460083082528541E800180C +S315E063B2507345B0816CF2374200143413D6AF002CD9 +S315E063B260528449EC00187344716D0004B0816C003C +S315E063B270FF4A3B4300144CD77CFC4FEF00384E75D6 +S315E063B28000002F0A2F0248781428487A1356487923 +S315E063B29000023CEC45F900E00EC44E924878040C9B +S315E063B2A0487A29D64879000238E04E924FEF001685 +S315E063B2B03F3C00D7487900023CEC4EBAFD58713901 +S315E063B2C000E5D6D8508F7228B2806616123C000C21 +S315E063B2D0203C00E3B28023C00002441833C100027D +S315E063B2E04434558F4267424245F900E3AE4A4879B2 +S315E063B2F000023CEC4EBAFE5C508F558F3F025282A1 +S315E063B300487900023CEC4E927142508F0C8000000B +S315E063B31000D766E6558F3F3C00254879000238E062 +S315E063B3204EBAFD64508F241F245F4E754649584DCF +S315E063B330453A20756E737570706F72746564202814 +S315E063B34066616B65642920727372635F67616464C7 +S315E063B350722074797065210A00004FEFFFF4322F93 +S315E063B360001048D7040C302F0012A943246F001451 +S315E063B3707541B6826718163C0005B68267264A4170 +S315E063B380663A714041FA0BB624B00C006012714024 +S315E063B3902200D281E9889081068000E526642480D4 +S315E063B3A070016026714041F900E525BC2F300C0041 +S315E063B3B04EB900E01176588F248060E4487AFF6ED8 +S315E063B3C04EB900E038324240588F4CD7040C4FEF09 +S315E063B3D0000C4E75256C6420627974657320757311 +S315E063B3E0656420696E202564206974656D732E003B +S315E063B3F0202053686F772061732069636F6E7320D3 +S315E063B400200753006170706C69636174696F6E00E5 +S315E063B410646F63756D656E747300464F524D415448 +S315E063B4202E50524700202053686F77206173207453 +S315E063B430657874202020075300413A5C454D5544B6 +S315E063B44045534B2E494E4600234620464620323826 +S315E063B4502040202A2E2A40002344204646203032CC +S315E063B4602040202A2E2A40002347203038204646B3 +S315E063B470202A2E4150504020400023472030382078 +S315E063B4804646202A2E505247402040002350203023 +S315E063B49038204646202A2E54545040204000234606 +S315E063B4A0203038204646202A2E544F534020400011 +S315E063B4B0464F524D41542E545450004E65772046C4 +S315E063B4C06F6C646572004469736B20447269766578 +S315E063B4D0733A00616D00706D005B315D5B54686566 +S315E063B4E020646F63756D656E742074797065207919 +S315E063B4F06F752073656C6563746564206973206E2C +S315E063B5006F747C636F6E6669677572656420746F6A +S315E063B51020776F726B20776974682061207370653A +S315E063B52063696669637C6170706C69636174696F32 +S315E063B5306E2E2020557365207468652022436F6EF6 +S315E063B5406669677572657C6170706C6963617469FD +S315E063B5506F6E2220636F6D6D616E6420746F206120 +S315E063B56073736F636961746520746869737C646F10 +S315E063B57063756D656E742074797065207769746838 +S315E063B58020616E206170706C69636174696F6E2EA1 +S315E063B5905D5B20204F4B20205D005B315D5B546833 +S315E063B5A0652047454D204465736B746F7020686111 +S315E063B5B073206E6F206D6F726520617661696C6171 +S315E063B5C0626C657C77696E646F77732E2020426563 +S315E063B5D0666F726520796F75206F70656E20612086 +S315E063B5E06469736B2C20636C6F73657C6120776928 +S315E063B5F06E646F7720796F75277265206E6F74203E +S315E063B6007573696E672E5D5B20204F4B20205D006E +S315E063B6105B315D5B43616E6E6F742066696E642059 +S315E063B62074686520464F524D41542070726F67725D +S315E063B630616D2E2020496620796F757C6172652085 +S315E063B6407573696E672061206475616C2D666C6FD6 +S315E063B6507070792073797374656D2C20796F7520BA +S315E063B6606D7573747C666F726D6174206469736BF8 +S315E063B670732066726F6D20796F757220444F532025 +S315E063B6806469736B2E2020496620796F757C6172DD +S315E063B69065207573696E67206120686172642064F2 +S315E063B6A069736B2C20636F707920464F524D41541A +S315E063B6B020746F207C74686520726F6F7420646990 +S315E063B6C0726563746F72792E5D5B4F4B5D005B33BE +S315E063B6D05D5B466F726D617474696E672077696CE2 +S315E063B6E06C20455241534520616C6C7C696E666F94 +S315E063B6F0726D6174696F6E206F6E20746865206425 +S315E063B70069736B20696E2064726976657C25633A3A +S315E063B7102E2020436C69636B206F6E204F4B206F46 +S315E063B7206E6C7920696620796F7520646F6E277415 +S315E063B7307C6D696E64206C6F73696E67207468658F +S315E063B74020696E666F726D6174696F6E206F6E7C71 +S315E063B75074686973206469736B2E5D5B20204F4B5D +S315E063B76020207C43616E63656C5D005B335D5B5992 +S315E063B7706F752063616E6E6F7420636F707920619D +S315E063B78020706172656E7420666F6C6465727C6945 +S315E063B7906E746F206F6E65206F66206974732063C5 +S315E063B7A068696C6420666F6C646572732E5D5B209A +S315E063B7B0204F4B20205D005B335D5B496620796FEC +S315E063B7C07520617265207375726520796F75207770 +S315E063B7D0616E7420746F7C64656C65746520414C3E +S315E063B7E04C2074686520696E666F726D6174696F0B +S315E063B7F06E206F6E207468657C6469736B20696E16 +S315E063B8002064726976652025633A2C20636C6963EC +S315E063B8106B206F6E204F4B2E7C4F74686572776931 +S315E063B82073652C20636C69636B206F6E2043616E76 +S315E063B83063656C2E5D5B20204F4B20207C43616EFD +S315E063B84063656C5D005B315D5B5468657265206959 +S315E063B85073206E6F7420656E6F75676820737061B1 +S315E063B860636520617661696C61626C657C746F2087 +S315E063B870636F6E6669677572652074686973206164 +S315E063B88070706C69636174696F6E2E2020546F20EB +S315E063B890667265657C757020736F6D652073706124 +S315E063B8A063652C20796F75276C6C206861766520FB +S315E063B8B0746F2072656D6F76657C6F6E65206F66FB +S315E063B8C020796F75722063757272656E746C792018 +S315E063B8D0636F6E666967757265647C6170706C6967 +S315E063B8E0636174696F6E732E5D5B20204F4B20201E +S315E063B8F05D005B325D5B4120666F6C6465722077E9 +S315E063B9006974682074686174206E616D6520616C2A +S315E063B91072656164797C657869737473206F72208C +S315E063B920796F7572206469736B2069732066756CD1 +S315E063B9306C2E7C5265747279207769746820612015 +S315E063B9406E6577206E616D652C206F722043616E44 +S315E063B95063656C7C616E6420636865636B207468A1 +S315E063B9606520617661696C61626C65206469736B9D +S315E063B9702073706163652E5D5B2043616E63656C06 +S315E063B980207C205265747279205D005B315D5B5487 +S315E063B990686973206469736B20646F6573206E6F87 +S315E063B9A074206861766520656E6F75676820726F6F +S315E063B9B06F6D20666F727C74686520696E666F7200 +S315E063B9C06D6174696F6E20796F752061726520743D +S315E063B9D07279696E6720746F20636F70792E7C531A +S315E063B9E06F6D65206974656D732C20686F77657616 +S315E063B9F065722C206D617920686176652062656584 +S315E063BA006E7C636F7069656420746F20746865200B +S315E063BA106469736B2E5D5B20204F4B20205D005B7A +S315E063BA20335D5B5468652047454D204465736B74AD +S315E063BA306F702063616E6E6F742066696E642074E6 +S315E063BA4068657C646F63756D656E74732044455396 +S315E063BA504B4C4F2E49434E2C204445534B48492E7D +S315E063BA6049434E2C7C6F72204445534B544F502EC2 +S315E063BA70494E4620696E2074686520444F532073AF +S315E063BA8065617263687C706174682E2020546865B2 +S315E063BA90736520646F63756D656E7473206172653B +S315E063BAA02072657175697265647C746F2072756EF8 +S315E063BAB0207468652047454D204465736B746F70E9 +S315E063BAC02E5D5B43616E63656C5D005B335D5B540A +S315E063BAD06F207361766520796F7572206465736B29 +S315E063BAE0746F702C20696E7365727420796F7572EA +S315E063BAF07C47454D204445534B544F50206469730E +S315E063BB006B20696E746F20647269766520413A2CA6 +S315E063BB1020636C6F73657C746865206472697665AF +S315E063BB2020646F6F722C20616E6420636C69636B53 +S315E063BB30206F6E204F4B2E7C436C69636B206F6E78 +S315E063BB402043616E63656C20696620796F75206456 +S315E063BB506F6E27742077616E7420746F7C73617681 +S315E063BB606520746865206465736B746F702E5D5BC6 +S315E063BB7020204F4B20207C43616E63656C5D005BE8 +S315E063BB80335D5B536F7272792C2062757420796FC3 +S315E063BB90752063616E6E6F7420706C61636520619E +S315E063BBA06E79206D6F72657C666F6C646572732007 +S315E063BBB0696E73696465206F6620796F7572206359 +S315E063BBC0757272656E74206F6E652E7C5365652043 +S315E063BBD0796F757220646F63756D656E7461746990 +S315E063BBE06F6E20666F72206C696D697473206F6E19 +S315E063BBF07C666F6C6465727320696E7369646520D5 +S315E063BC006F7468657220666F6C646572732E5D5BD4 +S315E063BC1043616E63656C5D005B335D5B536F72724C +S315E063BC20792C206275742074686520446972656353 +S315E063BC30746F7279206E616D6520796F75206861C6 +S315E063BC4076657C656E746572656420657863656543 +S315E063BC50647320746865206D6178696D756D206EB7 +S315E063BC60756D626572206F667C6368617261637429 +S315E063BC706572732E202053656520796F7572206433 +S315E063BC806F63756D656E746174696F6E20666F72EE +S315E063BC907C6C696D697473206F6E20746865206E61 +S315E063BCA0756D626572206F66206368617261637445 +S315E063BCB065727320796F757C63616E20656E7465FA +S315E063BCC0722E5D5B2020204F4B2020205D005B3190 +S315E063BCD05D5B596F752063616E6E6F74206F70651F +S315E063BCE06E207468652074726173682063616E2088 +S315E063BCF069636F6E7C696E746F20612077696E64C9 +S315E063BD006F772E20546F2064656C657465206120BF +S315E063BD106469736B2C7C666F6C6465722C20646FEC +S315E063BD2063756D656E742C206F72206170706C69DB +S315E063BD30636174696F6E2C7C6472616720697420D9 +S315E063BD40746F207468652074726173682063616ED2 +S315E063BD502E5D5B20204F4B20205D005B315D5B54A5 +S315E063BD6068652074726173682063616E206973200D +S315E063BD707468652064657374696E6174696F6E2057 +S315E063BD80746F7C776869636820796F752064726124 +S315E063BD906720746865206469736B732C20666F6CC7 +S315E063BDA0646572732C7C646F63756D656E74732CF6 +S315E063BDB0206F72206170706C69636174696F6E7312 +S315E063BDC0207468617420796F757C77616E74207412 +S315E063BDD06F2064656C657465205045524D414E45F0 +S315E063BDE04E544C59215D5B20204F4B20205D005B18 +S315E063BDF0315D5B596F752063616E6E6F742064723B +S315E063BE00616720666F6C646572732C20646F63751B +S315E063BE106D656E74732C206F727C6170706C696390 +S315E063BE206174696F6E73206F6E746F2074686520DA +S315E063BE304465736B746F702E2020486F7765766503 +S315E063BE40722C7C796F752063616E20636F707920E5 +S315E063BE507468656D20746F206469736B73206F72A9 +S315E063BE602064726167207468656D7C746F207468A2 +S315E063BE70652074726173682E5D5B20204F4B2020D2 +S315E063BE805D005B315D5B596F752063616E6E6F74E8 +S315E063BE9020647261672074686520747261736820D8 +S315E063BEA063616E7C696E746F20612077696E646F1F +S315E063BEB0772E5D5B20204F4B20205D005B315D5B21 +S315E063BEC0596F752063616E2064726167207468657B +S315E063BED02074726173682063616E20746F20616E93 +S315E063BEE06F746865727C6C6F636174696F6E206F83 +S315E063BEF06E207468652047454D204465736B746FA7 +S315E063BF00702C2062757420796F757C63616E6E6FD9 +S315E063BF107420706C616365206974206F6E20746F42 +S315E063BF2070206F6620616E6F746865722069636FF7 +S315E063BF306E2E5D5B20204F4B20205D0000023CECC3 +S315E063BF400002410C0002422C00024304000243DC7F +S315E063BF500002455C0002461C000246F4000247FC10 +S315E063BF6000024B2C00024BBC00024C4C00024CF42A +S315E063BF7000024D6C204465736B20002046696C6556 +S315E063BF802000204F7074696F6E73200020417272D7 +S315E063BF90616E6765200020204465736B746F702063 +S315E063BFA0696E666F2E2E2E202020002D2D2D2D2DD1 +S315E063BFB02D2D2D2D2D2D2D2D2D2D2D2D2D2D2D0095 +S315E063BFC031003200330034003500360020204F70F4 +S315E063BFD0656E002020496E666F2F52656E616D65F2 +S315E063BFE02E2E2E20200749002D2D2D2D2D2D2D2D86 +S315E063BFF02D2D2D2D2D2D2D2D2D2D2D2D2D0020206F +S315E063C0004E657720466F6C6465722E2E2E00202077 +S315E063C010436C6F7365002020436C6F7365207769AB +S315E063C0206E646F7700202044656C6574652E2E2EF2 +S315E063C030202020202020200744002020466F726DB8 +S315E063C04061742E2E2E002020457865637574652015 +S315E063C050456D75434F4E20205E5A00202053687528 +S315E063C06074646F776E20202020202020205E5100AC +S315E063C0702020496E7374616C6C206469736B206411 +S315E063C080726976652E2E2E002020436F6E66696791 +S315E063C090757265206170706C69636174696F6E2E29 +S315E063C0A02E2E20200741002D2D2D2D2D2D2D2D2DCE +S315E063C0B02D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D67 +S315E063C0C02D2D2D2D2D2D0020205365742070726546 +S315E063C0D0666572656E6365732E2E2E00202053614E +S315E063C0E07665206465736B746F7020202020202052 +S315E063C0F0202020202020202007560020204368614E +S315E063C1006E6765207265736F6C7574696F6E2020F8 +S315E063C110202020202020200743002020536F7274C4 +S315E063C120206279206E616D65202020074E00202015 +S315E063C130536F7274206279207479706520202007CA +S315E063C14050002020536F72742062792073697A6598 +S315E063C150202020075A002020536F727420627920D2 +S315E063C160646174652020200754004954454D204995 +S315E063C1704E464F524D4154494F4E202F2052454E25 +S315E063C180414D4500417474726962757465733A0032 +S315E063C190526561642F577269746500526561642DF7 +S315E063C1A04F6E6C79004449534B20494E464F524D8E +S315E063C1B04154494F4E00464F4C44455220494E4602 +S315E063C1C04F524D4154494F4E002D20456D75544FA6 +S315E063C1D053202D0056657273696F6E0068747470D0 +S315E063C1E03A2F2F656D75746F732E736F7572636512 +S315E063C1F0666F7267652E6E657400436F70797269F8 +S315E063C200676874202863292062790054686520454D +S315E063C2106D75544F5320646576656C6F706D656EAE +S315E063C22074207465616D004261736564206F6E208E +S315E063C2302747504C65642720736F75726365730097 +S315E063C2402863292031393837206279204469676960 +S315E063C25074616C20526573656172636820496E63CD +S315E063C2602E0028632920313939392043616C6465AE +S315E063C2707261205468696E20436C69656E74732CD1 +S315E063C28020496E632E002863292032303031204CFA +S315E063C290696E656F2C20496E632E00456D75544F4C +S315E063C2A05320697320646973747269627574656433 +S315E063C2B020756E646572207468652047504C005340 +S315E063C2C0656520646F632F6C6963656E73652E7451 +S315E063C2D0787420666F722064657461696C73004E6E +S315E063C2E0455720464F4C44455220494E464F524DA2 +S315E063C2F04154494F4E00546F206372656174652003 +S315E063C30061206E657720666F6C6465722077697409 +S315E063C31068696E20746865206375722D0072656E58 +S315E063C320742077696E646F772C20646F75626C65D1 +S315E063C3302D636C69636B206F6E20746865204E6550 +S315E063C3407700466F6C6465722069636F6E20616E19 +S315E063C3506420636F6D706C657465207468652064D2 +S315E063C36069616C6F6775650074686174206170708C +S315E063C3706561727320627920656E746572696E6752 +S315E063C38020746865206E616D65206F66007468650C +S315E063C39020666F6C64657220796F752077616E7461 +S315E063C3A020746F206372656174652E004F50454E4D +S315E063C3B0204150504C49434154494F4E00456E74B9 +S315E063C3C0657220746865206E616D65206F662074A2 +S315E063C3D0686520646F63756D656E7420796F75202B +S315E063C3E077616E7400746F206C6F61642C206F727A +S315E063C3F020656E74657220706172616D65746572D5 +S315E063C4002076616C7565732074686174006172652A +S315E063C4102061636365707461626C6520746F207418 +S315E063C420686973206170706C69636174696F6E2E9D +S315E063C43000494E5354414C4C204449534B2044529B +S315E063C440495645004469736B20747970653A0046D2 +S315E063C4506C6F707079004861726400434F4E464971 +S315E063C46047555245204150504C49434154494F4EFC +S315E063C47000446F63756D656E742074797065733AA5 +S315E063C480004170706C69636174696F6E2074797072 +S315E063C490653A0047454D00544F5300545450004E9F +S315E063C4A0656564732066756C6C206D656D6F727916 +S315E063C4B03F0049636F6E20747970653A00434F506D +S315E063C4C05920464F4C44455253202F204954454DFD +S315E063C4D0530044454C45544520464F4C44455253DE +S315E063C4E0202F204954454D53004E414D4520434F3F +S315E063C4F04E464C49435420445552494E4720434F98 +S315E063C50050590053746F70004E455720464F4C4464 +S315E063C51045520053455420505245464552454E4395 +S315E063C520455300436F6E6669726D2064656C65742E +S315E063C53065733F00436F6E6669726D20636F706902 +S315E063C54065733F00436F6E6669726D206F766572E1 +S315E063C5507772697465733F00446F75626C652D63CA +S315E063C5606C69636B2073706565643A00436C6963F9 +S315E063C5706B004E6F20636C69636B00546F2064726B +S315E063C5806F7020646F776E206D656E75733A0053D6 +S315E063C5906F756E6420656666656374733A004F6EA5 +S315E063C5A0004F66660054696D6520666F726D6174EF +S315E063C5B03A00313220486F757200323420486F7525 +S315E063C5C072004461746520666F726D61743A004D02 +S315E063C5D04D2D44442D59590044442D4D4D2D595903 +S315E063C5E00000FFFF000100070019000000000000E3 +S315E063C5F0000000000000005000190007000200027E +S315E063C600001400000000000011000000000000506C +S315E063C61002010001000300060019000000000000AB +S315E063C620000000020000001E03010004FFFFFFFF9D +S315E063C63000200000000000E3BF7400000000000675 +S315E063C64003010005FFFFFFFF00200000000000E399 +S315E063C650BF7B00060000000603010006FFFFFFFF45 +S315E063C66000200000000000E3BF82000C0000000928 +S315E063C67003010002FFFFFFFF00200000000000E36C +S315E063C680BF8C0015000000090301000000080025C7 +S315E063C69000190000000000000000000003010050E4 +S315E063C6A0001800110009001000140000000000FFEC +S315E063C6B011000002000000140008000AFFFFFFFFFC +S315E063C6C0001C0000000000E3BF96000000000014B9 +S315E063C6D00001000BFFFFFFFF001C0000000800E302 +S315E063C6E0BFAB0000000100140001000CFFFFFFFF79 +S315E063C6F0001C0000000000E3BFC00000000200145D +S315E063C7000001000DFFFFFFFF001C0000000000E3D7 +S315E063C710BFC20000000300140001000EFFFFFFFF2D +S315E063C720001C0000000000E3BFC400000004001426 +S315E063C7300001000FFFFFFFFF001C0000000000E3A5 +S315E063C740BFC600000005001400010010FFFFFFFFF5 +S315E063C750001C0000000000E3BFC8000000060014F0 +S315E063C76000010008FFFFFFFF001C0000000000E37C +S315E063C770BFCA0000000700140001001E0012001D7E +S315E063C78000140000000000FF11000008000000151F +S315E063C790000C0013FFFFFFFF001C0000000000E336 +S315E063C7A0BFCC00000000001500010014FFFFFFFF8F +S315E063C7B0001C0000000000E3BFD300000001001589 +S315E063C7C000010015FFFFFFFF001C0000000800E307 +S315E063C7D0BFE800000002001500010016FFFFFFFF3F +S315E063C7E0001C0000000000E3BFFE0000000300152C +S315E063C7F000010017FFFFFFFF001C0000000000E3DD +S315E063C800C00E00000004001500010018FFFFFFFFE3 +S315E063C810001C0000000000E3C016000000050015E0 +S315E063C82000010019FFFFFFFF001C0000000800E3A2 +S315E063C830BFE80000000600150001001AFFFFFFFFD6 +S315E063C840001C0000000000E3C0250000000700159F +S315E063C8500001001BFFFFFFFF001C0000000000E378 +S315E063C860C03A0000000800150001001CFFFFFFFF4F +S315E063C870001C0000000800E3BFE8000000090015A3 +S315E063C8800001001DFFFFFFFF001C0000000000E346 +S315E063C890C0460000000A001500010011FFFFFFFF1C +S315E063C8A0001C0000000000E3C05B0000000B001505 +S315E063C8B000010025001F002400140000000000FFB3 +S315E063C8C01100000E0000001F00060020FFFFFFFFBF +S315E063C8D0001C0000000000E3C07000000000001FC1 +S315E063C8E000010021FFFFFFFF001C0000000000E3E2 +S315E063C8F0C08800000001001F00010022FFFFFFFF68 +S315E063C900001C0000000800E3C0A700000002001F4F +S315E063C91000010023FFFFFFFF001C0000000000E3AF +S315E063C920C0C700000003001F00010024FFFFFFFFF4 +S315E063C930001C0000000000E3C0DC00000004001FF0 +S315E063C9400001001EFFFFFFFF001C0000000800E37C +S315E063C950C0FB00000005001F000100070026002B56 +S315E063C96000140000000000FF11000017000000142F +S315E063C97000060027FFFFFFFF001C00000000000128 +S315E063C98011A400000000001400010028FFFFFFFF70 +S315E063C990001C0000000800E3BFAB000000010014C8 +S315E063C9A000010029FFFFFFFF001C0000000000E319 +S315E063C9B0C11A0000000200140001002AFFFFFFFF16 +S315E063C9C0001C0000000000E3C12E00000003001419 +S315E063C9D00001002BFFFFFFFF001C0000000000E3E7 +S315E063C9E0C14200000004001400010025FFFFFFFFC1 +S315E063C9F0001C0020000000E3C1560000000500149F +S315E063CA000001FFFF0001000B0014000000100002AC +S315E063CA101100000000000028000B0002FFFFFFFF8B +S315E063CA20001C0000000000E3C16A00020001001080 +S315E063CA3000010003FFFFFFFF001E00080000000285 +S315E063CA4038E0000B0003001400010004FFFFFFFF62 +S315E063CA50001E00000000000238FC00020004001E15 +S315E063CA6000010005FFFFFFFF001E0000000000025B +S315E063CA70391800020005001800010006FFFFFFFFFA +S315E063CA80001E0000000000023934001C00050008A7 +S315E063CA9000010007FFFFFFFF001C0000000000E34A +S315E063CAA0C18400020007000B0001000A00080009C8 +S315E063CAB000190000000000000000000F00070017E7 +S315E063CAC000010009FFFFFFFF001A0011000000E309 +S315E063CAD0C19000000000000B00010007FFFFFFFFAD +S315E063CAE0001A0011000000E3C19B000D0000000A7C +S315E063CAF00001000BFFFFFFFF001A0007000000E3E1 +S315E063CB00E084000A0009000800010000FFFFFFFF60 +S315E063CB10001A0025000000E3E0870016000900081C +S315E063CB200001FFFF0001000800140000001000028E +S315E063CB301100000000000025000C0002FFFFFFFF6C +S315E063CB40001C0000000000E3C1A500030001001023 +S315E063CB5000010003FFFFFFFF001E0000000000026C +S315E063CB60395000020003002000010004FFFFFFFFCD +S315E063CB70001E000000000002396C00020004002081 +S315E063CB8000010005FFFFFFFF001E0000000000023A +S315E063CB90398800020005002000010006FFFFFFFF61 +S315E063CBA0001E00000000000239A400020006002017 +S315E063CBB000010007FFFFFFFF001E00000000000208 +S315E063CBC039C000020007002000010008FFFFFFFFF5 +S315E063CBD0001E00000000000239DC000200080020AD +S315E063CBE000010000FFFFFFFF001A0027000000E3DB +S315E063CBF0E084001A000A00080001FFFF0001000854 +S315E063CC00001400000010000211000000000000287C +S315E063CC10000B0002FFFFFFFF001C0000000000E3C3 +S315E063CC20C1B600020001001200010003FFFFFFFF2F +S315E063CC30001E00000000000239F800080003001C33 +S315E063CC4000010004FFFFFFFF001E0000000000027A +S315E063CC503A1400070004001400010005FFFFFFFF1C +S315E063CC60001E0000000000023A30001A00040008CB +S315E063CC7000010006FFFFFFFF001E00000000000248 +S315E063CC803A4C00040005001E00010007FFFFFFFFAA +S315E063CC90001E0000000000023A6800040006001E61 +S315E063CCA000010008FFFFFFFF001E00000000000216 +S315E063CCB03A8400040007001E00010000FFFFFFFF47 +S315E063CCC0001A0027000000E3E08400100009000872 +S315E063CCD00001FFFF0001000F0014000000100002D6 +S315E063CCE0110000000000002800130002FFFFFFFFB1 +S315E063CCF0001C0000000000E3C1C9000F0001000A48 +S315E063CD0000010003FFFFFFFF001C0000000000E3DB +S315E063CD10C1D4000E0002000700010004FFFFFFFF1D +S315E063CD20001C0000000000E5D6D8001600020004EF +S315E063CD3000010005FFFFFFFF00170000000000E5AC +S315E063CD40266400210001000400040006FFFFFFFFE4 +S315E063CD50001C0000000000E3C1DC000500070014CE +S315E063CD6000010007FFFFFFFF001C0000000000E377 +S315E063CD70C1FA000C0004001200010008FFFFFFFF88 +S315E063CD8000170040000000E526640003000100048C +S315E063CD9000040009FFFFFFFF001C0000000000E342 +S315E063CDA0C20B00060005001B0001000AFFFFFFFF40 +S315E063CDB0001C0000000000E3C22700080009001819 +S315E063CDC00001000BFFFFFFFF001C0000000000E313 +S315E063CDD0C2400003000A00210001000CFFFFFFFFD1 +S315E063CDE0001A0007000000E3E08400100011000869 +S315E063CDF00001000DFFFFFFFF001C0000000000E3E1 +S315E063CE00C2620003000B00230001000EFFFFFFFF79 +S315E063CE10001C0000000000E3C2860003000C00145F +S315E063CE200001000FFFFFFFFF001C0000000000E3AE +S315E063CE30C29B0003000E002300010000FFFFFFFF1B +S315E063CE40001C0020000000E3C2BF0004000F0015D1 +S315E063CE500001FFFF0001000700140000001000025C +S315E063CE601100000000000028000B0002FFFFFFFF37 +S315E063CE70001C0000000000E3C2DF000300010017AE +S315E063CE8000010003FFFFFFFF001C0000000000E35A +S315E063CE90C2F600010003002600010004FFFFFFFF66 +S315E063CEA0001C0000000000E3C31D00010004002431 +S315E063CEB000010005FFFFFFFF001C0000000000E328 +S315E063CEC0C34200010005002500010006FFFFFFFFE6 +S315E063CED0001C0000000000E3C368000100060024B4 +S315E063CEE000010007FFFFFFFF001C0000000000E3F6 +S315E063CEF0C38D00010007001E00010000FFFFFFFF76 +S315E063CF00001A0027000000E3E0840010000900082F +S315E063CF100001FFFF0001000800140000001000029A +S315E063CF201100000000000047000A0002FFFFFFFF58 +S315E063CF30001C0000000000E3C3AC00030001001026 +S315E063CF4000010003FFFFFFFF001E00080000000270 +S315E063CF503AA000090003001300010004FFFFFFFF8E +S315E063CF60001E0008000000023ABC00030004004112 +S315E063CF7000010005FFFFFFFF001A0007000000E362 +S315E063CF80E08400330008000800010006FFFFFFFFAE +S315E063CF90001A0005000000E3E087003D0008000892 +S315E063CFA000010007FFFFFFFF001C0000000000E335 +S315E063CFB0C3BD00030006002700010008FFFFFFFF73 +S315E063CFC0001C0000000000E3C3E500030007002740 +S315E063CFD000010000FFFFFFFF001C0020000000E3EC +S315E063CFE0C40D0003000800230001FFFF0001000AEF +S315E063CFF00014000000100002110000000000002889 +S315E063D000000B0002FFFFFFFF001C0000000000E3CF +S315E063D010C431000B0001001200010003FFFFFFFFB4 +S315E063D020001E0008000000023AD800020003001464 +S315E063D03000010004FFFFFFFF001E0008000000027E +S315E063D0403AF400080004001900010005FFFFFFFF42 +S315E063D050001C0000000000E3C44400060006000A6A +S315E063D0600001000800060007001900000000000048 +S315E063D070000000100006001800010007FFFFFFFF35 +S315E063D080001A0011000000E3C44F0002000000082C +S315E063D09000010005FFFFFFFF001A0011000000E337 +S315E063D0A0C456000C0000000800010009FFFFFFFF03 +S315E063D0B0001A0005000000E3E08E00020009000CA0 +S315E063D0C00001000AFFFFFFFF001A0005000000E30E +S315E063D0D0E09600100009000A00010000FFFFFFFF71 +S315E063D0E0001A0027000000E3E087001C0009000A3D +S315E063D0F00001FFFF000100210014000000100002A0 +S315E063D100110000000000002800170002FFFFFFFF88 +S315E063D110001C0000000000E3C45B00090001001589 +S315E063D12000010003FFFFFFFF001E00000000000296 +S315E063D1303B1000020003002000010004FFFFFFFF35 +S315E063D140001C0000000000E3C47100030004000F4C +S315E063D15000010005FFFFFFFF001E0008000000025C +S315E063D1603B2C00140004000300010006FFFFFFFFF1 +S315E063D170001E0008000000023B480019000400039B +S315E063D18000010007FFFFFFFF001E0008000000022A +S315E063D1903B64001E0004000300010008FFFFFFFF7D +S315E063D1A0001E0008000000023B8000230004000329 +S315E063D1B000010009FFFFFFFF001E000800000002F8 +S315E063D1C03B9C0014000500030001000AFFFFFFFF1C +S315E063D1D0001E0008000000023BB8001900050003CA +S315E063D1E00001000BFFFFFFFF001E000800000002C6 +S315E063D1F03BD4001E000500030001000CFFFFFFFFA8 +S315E063D200001E0008000000023BF000230005000357 +S315E063D2100001000DFFFFFFFF001C0000000000E3BC +S315E063D220C48100020007001100010011000E001026 +S315E063D2300019000000000000110000150007001649 +S315E063D2400003000FFFFFFFFF001A0051000000E339 +S315E063D250C49300000000000500010010FFFFFFFF1C +S315E063D260001A0051000000E3C497000600000005C1 +S315E063D2700001000DFFFFFFFF001A0051000000E30D +S315E063D280C49B000C0000000500010012FFFFFFFFD6 +S315E063D290001C0000000000E3C49F000200090012C6 +S315E063D2A000010015001300140019000000000000DF +S315E063D2B0110000180009000F00010014FFFFFFFFD3 +S315E063D2C0001A0011000000E3E09D00000000000684 +S315E063D2D000010012FFFFFFFF001A0011000000E3E8 +S315E063D2E0E0A100080000000600010016FFFFFFFF53 +S315E063D2F0001C0000000000E3C4B20002000B000A59 +S315E063D30000010017FFFFFFFF0016000000000002A8 +S315E063D3103C0C0007000D001B0001001A0018001901 +S315E063D320001400000000000111000007000E001861 +S315E063D33000060019FFFFFFFF001400000000000174 +S315E063D340110100030001000600040017FFFFFFFF61 +S315E063D35000140000000000011101000C000100064A +S315E063D3600004001F001B001D0014004000000001C4 +S315E063D3701100001F000E00030006001CFFFFFFFF05 +S315E063D380001B0040000001011100000000000003E3 +S315E063D3900002001DFFFFFFFF001B004000000201CB +S315E063D3A011000000000400030002001A001E001EC4 +S315E063D3B000140040000000011111000000020003A8 +S315E063D3C00002001DFFFFFFFF0014004000000001A4 +S315E063D3D0110104000000010200010020FFFFFFFFCE +S315E063D3E0001A0005000000E3E08E00020015000C61 +S315E063D3F000010021FFFFFFFF001A0005000000E3C4 +S315E063D400E09600100015000A00010000FFFFFFFF31 +S315E063D410001A0025000000E3E087001C0015000AFF +S315E063D4200001FFFF00010005001400000010000288 +S315E063D430110000000000002200080002FFFFFFFF6A +S315E063D440001C0000000000E3C4BD000300010014FB +S315E063D45000010003FFFFFFFF001E00000000000263 +S315E063D4603C2800020003001E00010004FFFFFFFFEB +S315E063D470001E0000000000023C4400020004001E9F +S315E063D48000010005FFFFFFFF001A0007000000E34D +S315E063D490E084000D0006000800010000FFFFFFFFC7 +S315E063D4A0001A0025000000E3E08700170006000885 +S315E063D4B00001FFFF000100050014000000100002F8 +S315E063D4C0110000000000002200080002FFFFFFFFDA +S315E063D4D0001C0000000000E3C4D200020001001A51 +S315E063D4E000010003FFFFFFFF001E000000000002D3 +S315E063D4F03C6000020003001E00010004FFFFFFFF23 +S315E063D500001E0000000000023C7C00020004001ED6 +S315E063D51000010005FFFFFFFF001A0005000000E3BE +S315E063D520E08400090006000800010000FFFFFFFF3A +S315E063D530001A0027000000E3E087001300060008F6 +S315E063D5400001FFFF00010006001400000010000266 +S315E063D550110000000000002200080002FFFFFFFF49 +S315E063D560001C0000000000E3C4E9000200010019AA +S315E063D57000010003FFFFFFFF001E00000000000242 +S315E063D5803C9800030003001C00010004FFFFFFFF5B +S315E063D590001E0008000000023CB400030004001E05 +S315E063D5A000010005FFFFFFFF001A0007000000E32C +S315E063D5B0E08400030006000800010006FFFFFFFFAA +S315E063D5C0001A0005000000E3E087000D000600088E +S315E063D5D000010000FFFFFFFF001A0025000000E3E3 +S315E063D5E0C5030017000600080001FFFF0001000401 +S315E063D5F00014000000100002110000000000001B90 +S315E063D60000070002FFFFFFFF001C0000000000E3CD +S315E063D610C50800030001000A00010003FFFFFFFFE6 +S315E063D620001E0008000000023CD000030003001364 +S315E063D63000010004FFFFFFFF001A0007000000E39C +S315E063D640E08400060005000800010000FFFFFFFF1D +S315E063D650001A0025000000E3E087001000050008DB +S315E063D6600001FFFF00010026001400000010000225 +S315E063D670110000000000002800150002FFFFFFFF15 +S315E063D680001C0000000000E3C513000C0001000F5E +S315E063D69000010003FFFFFFFF001C0000000000E342 +S315E063D6A0C523000100030013000100060004000522 +S315E063D6B000190000000000000000001A0003000CDF +S315E063D6C000010005FFFFFFFF001A0011000000E301 +S315E063D6D0E09D00000000000500010003FFFFFFFF7F +S315E063D6E0001A0011000000E3E0A100060000000557 +S315E063D6F000010007FFFFFFFF001C0000000000E3DE +S315E063D700C5340001000500130001000A00080009A2 +S315E063D71000190000000000000000001A0005000C7C +S315E063D72000010009FFFFFFFF001A0011000000E39C +S315E063D730E09D00000000000500010007FFFFFFFF1A +S315E063D740001A0011000000E3E0A1000600000005F6 +S315E063D7500001000BFFFFFFFF001C0000000000E379 +S315E063D760C5440001000700170001000E000C000D20 +S315E063D77000190000000000000000001A0007000C1A +S315E063D7800001000DFFFFFFFF001A0011000000E338 +S315E063D790E09D0000000000050001000BFFFFFFFFB6 +S315E063D7A0001A0011000000E3E0A100060000000596 +S315E063D7B00001000FFFFFFFFF001C0000000000E315 +S315E063D7C0C55800010009001300010015001000149C +S315E063D7D000190000000000000000001700090010B7 +S315E063D7E000010011FFFFFFFF001A0011000000E3D4 +S315E063D7F0BFC000000000000200010012FFFFFFFF50 +S315E063D800001A0011000000E3BFC20003000000023B +S315E063D81000010013FFFFFFFF001A0011000000E3A1 +S315E063D820BFC400060000000200010014FFFFFFFF13 +S315E063D830001A0011000000E3BFC600090000000201 +S315E063D8400001000FFFFFFFFF001A0011000000E375 +S315E063D850BFC8000C000000020001001800160017A4 +S315E063D860001900000000000000000015000B001323 +S315E063D87000010017FFFFFFFF001A0011000000E33D +S315E063D880C56C00000000000700010015FFFFFFFF05 +S315E063D890001A0011000000E3C57200080000000AE8 +S315E063D8A000010019FFFFFFFF001C0000000000E31A +S315E063D8B0C57B0001000B00130001001AFFFFFFFFA9 +S315E063D8C0001C0000000000E3C58F0001000D000EA0 +S315E063D8D00001001D001B001C001900000000000091 +S315E063D8E000000015000D000D0001001CFFFFFFFFA7 +S315E063D8F0001A0011000000E3C59E00000000000668 +S315E063D9000001001AFFFFFFFF001A0011000000E3A9 +S315E063D910C5A10007000000050001001EFFFFFFFF31 +S315E063D920001C0000000000E3C5A50001000F000C29 +S315E063D93000010021001F0020001900000000000024 +S315E063D94000000012000F001400010020FFFFFFFF3C +S315E063D950001A0011000000E3C5B2000000000009F0 +S315E063D9600001001EFFFFFFFF001A0011000000E345 +S315E063D970C5BA000A0000000900010022FFFFFFFFAD +S315E063D980001C0000000000E3C5C200010011000CAA +S315E063D99000010025002300240019000000000000B8 +S315E063D9A0000000100011001700010024FFFFFFFFD5 +S315E063D9B0001A0011000000E3C5CF00000000000B71 +S315E063D9C000010022FFFFFFFF001A0011000000E3E1 +S315E063D9D0C5D8000C0000000B00010026FFFFFFFF27 +S315E063D9E0001A0007000000E3E08400060013000865 +S315E063D9F000010000FFFFFFFF001A0025000000E3BF +S315E063DA00E087001A0013000800014E616D653A2055 +S315E063DA10205F5F5F5F5F5F5F5F2E5F5F5F006600F4 +S315E063DA2053697A6520696E2062797465733A20205A +S315E063DA305F5F5F5F5F5F5F5F5F5F0039004C61738E +S315E063DA4074206D6F6469666965643A20205F5F2F51 +S315E063DA505F5F2F5F5F005F5F3A5F5F205F5F003905 +S315E063DA603939396161004472697665206964656E46 +S315E063DA707469666965723A20205F3A0041004469D9 +S315E063DA80736B206C6162656C3A20205F5F5F5F5FFA +S315E063DA905F5F5F5F5F5F004E756D626572206F66A5 +S315E063DAA020666F6C646572733A20202020205F5F86 +S315E063DAB05F5F5F004E756D626572206F66206974A5 +S315E063DAC0656D733A20202020205F5F5F5F5F0042D1 +S315E063DAD07974657320757365643A20205F5F5F5F71 +S315E063DAE05F5F5F5F5F5F0042797465732061766154 +S315E063DAF0696C61626C653A20205F5F5F5F5F5F5F61 +S315E063DB005F5F5F00466F6C646572206E616D653A58 +S315E063DB1020205F5F5F5F5F5F5F5F2E5F5F5F0043F6 +S315E063DB207265617465643A20205F5F2D5F5F2D5F88 +S315E063DB305F202000506172616D65746572733A208F +S315E063DB40205F5F5F5F5F5F5F5F5F5F5F5F5F5F5FDB +S315E063DB505F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F8C +S315E063DB605F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F7C +S315E063DB705F5F5F5F5F005800447269766520696442 +S315E063DB80656E7469666965723A20205F0049636F02 +S315E063DB906E206C6162656C3A20205F5F5F5F5F5FFA +S315E063DBA05F5F5F5F5F5F0046004170706C696361F2 +S315E063DBB074696F6E206E616D653A20205F5F5F5FAB +S315E063DBC05F5F5F5F2E5F5F5F005F5F5F005F5F5F0B +S315E063DBD05F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F0C +S315E063DBE05F5F5F5F00466F6C6465727320746F207E +S315E063DBF0636F70793A20205F5F5F5F004974656D9C +S315E063DC007320746F20636F70793A20205F5F5F5F84 +S315E063DC1000466F6C6465727320746F2064656C652F +S315E063DC2074653A20205F5F5F5F004974656D7320BA +S315E063DC30746F2064656C6574653A20205F5F5F5F2F +S315E063DC400043757272656E74206E616D653A20206D +S315E063DC505F5F5F5F5F5F5F5F2E5F5F5F00436F7016 +S315E063DC60792773206E616D653A20205F5F5F5F5F42 +S315E063DC705F5F5F2E5F5F5F000000000000E3DA0A2C +S315E063DC8000E3DA1E0003000000001100000000005C +S315E063DC90000C00140000000000E3DA2000E3DA3B46 +S315E063DCA0000300000001110000000000000B001BF0 +S315E063DCB00000000000E3DA3D00E3DA3B0003000026 +S315E063DCC000011100000000000007001900000000D9 +S315E063DCD000E3DA5600E3DA5F0003000000011100B7 +S315E063DCE000000000000700090000000000E3DA66B8 +S315E063DCF000E3DA7C0003000000021100000000008C +S315E063DD00000200160000000000E3DA7E00E3DA1E9C +S315E063DD10000300000002110000000000000C00197F +S315E063DD200000000000E3DA9700E3DA3B000300005B +S315E063DD3000011100000000000006001D0000000065 +S315E063DD4000E3DAB400E3DA3B00030000000111000C +S315E063DD50000000000006001B0000000000E3DACFCD +S315E063DD6000E3DA3B0003000000011100000000005D +S315E063DD70000B00180000000000E3DAE700E3DA3B9B +S315E063DD80000300000001110000000000000B001D0D +S315E063DD900000000000E3DB0400E3DA1E000300009A +S315E063DDA00000110000000000000C001B00000000F2 +S315E063DDB000E3DB1F00E3DA3B000300000000110031 +S315E063DDC000000000000700150000000000E3DA56DB +S315E063DDD000E3DA5F000300000000110000000000CA +S315E063DDE0000700090000000000E3DA9700E3DA3B8E +S315E063DDF00003000000011100000000000006001DA2 +S315E063DE000000000000E3DAB400E3DA3B000300005D +S315E063DE1000011100000000000006001B0000000086 +S315E063DE2000E3DACF00E3DA3B000300000001110010 +S315E063DE3000000000000B00180000000000E3DA0AAF +S315E063DE4000E3DA1E0003000000001100000000009A +S315E063DE50000C00140000000000E3DB3400E3DB7633 +S315E063DE6000030000000011000000000000350042DE +S315E063DE700000000000E3DB7800E3DA7C00030000E7 +S315E063DE800000110000000000000200150000000021 +S315E063DE9000E3DB8D00E3DBA7000300000000110075 +S315E063DEA000000000000D001A0000000000E3DBA99B +S315E063DEB000E3DBA7000300000000110000000000A0 +S315E063DEC0000C00200000000000E3DBC900E3DBA7F1 +S315E063DED000030000000011000000000000040004DD +S315E063DEE00000000000E3DBC900E3DBA700030000FA +S315E063DEF000001100000000000004000400000000C0 +S315E063DF0000E3DBC900E3DBA70003000000001100C8 +S315E063DF1000000000000400040000000000E3DBC929 +S315E063DF2000E3DBA70003000000001100000000002F +S315E063DF30000400040000000000E3DBC900E3DBA7A4 +S315E063DF40000300000000110000000000000400046C +S315E063DF500000000000E3DBC900E3DBA70003000089 +S315E063DF60000011000000000000040004000000004F +S315E063DF7000E3DBC900E3DBA7000300000000110058 +S315E063DF8000000000000400040000000000E3DBC9B9 +S315E063DF9000E3DBA7000300000000110000000000BF +S315E063DFA0000400040000000000E3DBCD00E3DBA730 +S315E063DFB000030001000211800000FFFF0018001853 +S315E063DFC00000000000E3DBE500E3DA3B000300006A +S315E063DFD000011100000000000005001700000000CA +S315E063DFE000E3DBFC00E3DA3B000300000001110021 +S315E063DFF000000000000500150000000000E3DC11EE +S315E063E00000E3DA3B000300000001110000000000BA +S315E063E010000500190000000000E3DC2A00E3DA3BB8 +S315E063E0200003000000011100000000000005001776 +S315E063E0300000000000E3DC4100E3DA1E00030000B9 +S315E063E0400000110000000000000C001C000000004E +S315E063E05000E3DC5D00E3DA1E00030000000011006C +S315E063E06000000000000C001B0000000000E3DA0A79 +S315E063E07000E3DA1E00030000000011000000000068 +S315E063E080000C00144F4B0043616E63656C00496E90 +S315E063E0907374616C6C0052656D6F76650059657378 +S315E063E0A0004E6F00226F0008202F000420401219F3 +S315E063E0B010C166FA4E754E56FFF82F02486EFFFEA4 +S315E063E0C0486EFFFC486EFFFA486EFFF83F3C00047B +S315E063E0D0342E000A3F024EB900E3AD0A4FEF001457 +S315E063E0E04A6E0008670C558F3F024EB900E3ACE217 +S315E063E0F0588F3F2EFFFE3F2EFFFC3F2EFFFA3F2E4B +S315E063E100FFF83F390001FD263F390001FD243F2E2C +S315E063E110000E3F2E000C4EB900E3AB1C4FEF001030 +S315E063E120242EFFF44E5E4E754E56FFF82F0A486E68 +S315E063E130FFFE486EFFFC486EFFFA486EFFF83F3C11 +S315E063E1400004246E00083F2A00064EB900E3AD0AD8 +S315E063E150716EFFFE73790001FD2620006A0252802C +S315E063E16022016A025281E280E2819081322EFFFAD5 +S315E063E170D0813F00716EFFFC73790001FD242000BE +S315E063E1806A02528022016A025281E280E2819081D0 +S315E063E190322EFFF8D0813F003F2A000642674EBA2F +S315E063E1A0FF163F3C000142672F2E00162F2E00120A +S315E063E1B02F2E000E3F2E000C42672F0A4EB900E366 +S315E063E1C0906E4FEF0034246EFFF442404E5E4E7520 +S315E063E1D04E56FFF82F0A486EFFFE486EFFFC486E08 +S315E063E1E0FFFA486EFFF83F3C0004246E00083F2ABE +S315E063E1F000064EB900E3AD0A716A00082200EB88B7 +S315E063E200E789204091C1D1FC0001B2B83F28673667 +S315E063E2103F2867343F2A00063F3C00014EBAFE982A +S315E063E2202F2A00184EB900E346004FEF001C2E8AF2 +S315E063E2304EB900E397603EBC00014EB900E3958CAE +S315E063E240588F246EFFF442404E5E4E755B315D5BE4 +S315E063E250496E76616C696420574E4F444520706120 +S315E063E260737365647C746F2066756E5F636C6F73DE +S315E063E2706528295D5B4F4B5D00004E56FFAC2F0B67 +S315E063E2802F0A246E00084AAA00186618558F487A42 +S315E063E290FFBC3F3C000195CA4EB900E3A93C508FF1 +S315E063E2A06000009C42673F3C00024EB900E3AC1657 +S315E063E2B0486EFFFA486EFFF1486EFFAF486EFFFEA9 +S315E063E2C0202A001850802F004EB900E3444C4FEFEC +S315E063E2D000184A6E000C670642011D41FFAF4A2EE5 +S315E063E2E0FFAF660C2F0A4EBAFEE8588F34406042A1 +S315E063E2F047EEFFAF2F0B4EB900E1C4A4588F41F34D +S315E063E30008FF60025388B7C867087110725CB28011 +S315E063E31066F24210558F486EFFFA486EFFF1486E1B +S315E063E320FFAF3F2EFFFE2F0A4EBAFDFE4FEF0014FE +S315E063E3303440426742674EB900E3AC16588F300A01 +S315E063E340246EFFA4266EFFA84E5E4E754FEFFFEC7C +S315E063E35048D70C1C34390001FCD4322F0018266FE1 +S315E063E360001C246F0020714248C183C226014843E2 +S315E063E37020006A0252807743E280B0836D06C3C2AF +S315E063E3803681600830025281C1C13680303900017E +S315E063E3904BC03F1390823F004EB900E2FE70588F48 +S315E063E3A036807940323900014BC0774126036A02F1 +S315E063E3B05283E283B6846F0C48C183C22401484228 +S315E063E3C0D082368030390001F91C322F001A343995 +S315E063E3D00001FCD69280714248C183C2260148435C +S315E063E3E020006A0252807743E280B0836D06C3C23F +S315E063E3F03481600830025281C1C134803039000112 +S315E063E400F9203F1290823F004EB900E2FE70588FCA +S315E063E4103480794032390001F920774126036A0274 +S315E063E4205283E283B6846F0C48C183C224014842B7 +S315E063E430D0823480321230390001F91CD0813480C5 +S315E063E4404CD70C1C4FEF00144E753A5C2A2E2A000B +S315E063E450206F00084A88675071680006A541B2805C +S315E063E4606712123C0003B28056C0123C000148803A +S315E063E47080816036716F000C2200E789EB889081BA +S315E063E4800680000219E82240205141E8000D13D0CE +S315E063E4900001F7C4487AFFB448790001F7C54EBA7C +S315E063E4A0FC04508F7002600270FF558F42674267CB +S315E063E4B04267426748790001F7C42F2F00123F0095 +S315E063E4C04EB900E34C924FEF00144E755C2A2E2A48 +S315E063E4D0002A2E2A00002F0B2F0A266F00142F2FF7 +S315E063E4E0001048790001F7C44EBAFBBA5C8F3F3C33 +S315E063E4F0002A48790001F7C44EB900E01310508F43 +S315E063E50024404A80670242124A8B672C716B00068D +S315E063E510A341B2806622206F001841E8000E2F08FF +S315E063E5202F0A4EBAFB80487AFFA42F0A4EB900E160 +S315E063E530C4B64FEF0010600E487AFF972F0A4EB9C4 +S315E063E54000E1C4B6508F558F4267426742674267C0 +S315E063E55048790001F7C42F2F001A3F3C00024EB9F9 +S315E063E56000E34C924FEF0014245F265F4E754FEF46 +S315E063E570FFF248EF040C0002342F0014346F0012EC +S315E063E58042A742A73F0242673F3C00014EB900E320 +S315E063E59030BE4FEF000E3F0A26004EB900E398C047 +S315E063E5A03E822F0324402F2A00184EBAFEA44FEF73 +S315E063E5B0000C4A4067122F4A00104CD7040C4FEF09 +S315E063E5C0000C60FFFFFF644C4CD7040C4FEF000C6C +S315E063E5D04E752A0000004FEFFFF048D70C04266F14 +S315E063E5E00016242F001A3F3C0010487AFFE6487A6B +S315E063E5F0FFE2487AFFE0716F00222200E789EB8849 +S315E063E60090810680000219E8224020513F28000CE1 +S315E063E6104EB900E346024FEF001024404A80677A22 +S315E063E6202F004EB900E34836588F206A004C4A887B +S315E063E630674C42403140001C20504A8866F47201C0 +S315E063E64033C1000219E64A8B671A2F2F001E2F0289 +S315E063E650266B0018508B2F0B2F0A4EBAFE7A4FEFBC +S315E063E66000106012558F3F2F00242F022F0A4EBAF7 +S315E063E670FDE04FEF000C424133C1000219E62F0A79 +S315E063E6802F4000104EB900E3460042574EB900E30F +S315E063E69089C2588F202F000C600242404CD70C048D +S315E063E6A04FEF00104E754E56FFCC48D73CFC342EE8 +S315E063E6B00008558F382E000A260E558345F900E388 +S315E063E6C06F0E2C0E0686FFFFFFF64BFAFF0A49F93B +S315E063E6D000E34A1047F900E349463F024EB900E3D7 +S315E063E6E098C02F03486EFFFA3F042A003F02424276 +S315E063E6F04E924FEF00102E0060462F032F063F0227 +S315E063E70042674E924FEF000CA741204071680006C6 +S315E063E710B280661042A73F3C00283F3C00014E931F +S315E063E720508F601C3F042F2EFFFA2F072F053F0201 +S315E063E7304E954FEF00104A4067062F054E94588F6B +S315E063E7403F023F3C00014879000219DC4EB900E321 +S315E063E750A286508F340066A24CEE3CFCFFCC4E5E44 +S315E063E7604E754FEFFFCE48EF7C7C0002362F0036C6 +S315E063E77042A742A742424BF900E36F0E49FAFE58BD +S315E063E78047F900E349463F0342673F3C00014EB920 +S315E063E79000E330BE4FEF00102C0F2A0F280F0686DA +S315E063E7A00000002E4DF900E3A286068500000028EE +S315E063E7B0244006840000002C607A2F062F053F0272 +S315E063E7C042674E954FEF000CB5C067682040A7419E +S315E063E7D071680006B280661042A73F3C00293F3C61 +S315E063E7E000014E93508F604C716A0006A741B28078 +S315E063E7F0663271422200E789EB88908106800002E7 +S315E063E80019E82240205171A8000D3F40002C2F04E7 +S315E063E8103F3C001D3F3C00024E93508FA341714045 +S315E063E820B28066103F0342A72F0A42A73F024E9487 +S315E063E8304FEF00103F023F3C00014879000219DCCC +S315E063E8404E96508F34006600FF724CD77C7C4FEF58 +S315E063E85000304E752F032F02342F000C322F000E3B +S315E063E860306F0010302F00124A4267464A41671CF8 +S315E063E870558F3F2F00183F2F00183F003F013F029F +S315E063E8804EB900E350684FEF000C6046774873403B +S315E063E890B283661442A73F3C00273F3C00014EB972 +S315E063E8A000E34946508F602A3F003F024EBAFCC000 +S315E063E8B0601E4A41670A3F003F014EBAFDEA6010B7 +S315E063E8C075487340B282670A558F3F004EBAFE942D +S315E063E8D0588F241F4240261F4E7500002F02302FAB +S315E063E8E00008226F000A206F000E600A751973181C +S315E063E8F05380B282660A4A4066F2103C00016002C7 +S315E063E9004240241F4E752F02206F000860182200D4 +S315E063E9100681FFFFFF9F73817419B481650872DF17 +S315E063E920C0811140FFFF101866E4241F4E754FEF58 +S315E063E930FFEC48D71C0C41F9000113C443F900010D +S315E063E940129449F90001136426492448101C731A8A +S315E063E9507500B282661A4A00670000C816C060ECAA +S315E063E960101B731A7500B28266064A0066F2600887 +S315E063E9704240605C528160024241101812C066F404 +S315E063E98041F9000111EA424043F900011294600241 +S315E063E990528014182600D6817743138238006708BD +S315E063E9A07502762EB68266E8762622005281754136 +S315E063E9B0528173415680714041F90001129411838B +S315E063E9C0280011831800118308007001604A5280A1 +S315E063E9D0121812C166F873390001140C742AB481F3 +S315E063E9E0670E41F90001140C43F900011294601AB1 +S315E063E9F041F9000111EA43F90001129412187540D6 +S315E063EA0052801381280066F4600C121875405280B8 +S315E063EA101381280066F442404CD71C0C4FEF001478 +S315E063EA204E7571390001140C762AB6806700FF4A89 +S315E063EA3047F9000111EA45F90001140C6000FF2271 +S315E063EA402F0243F90001136441F90001124C42407D +S315E063EA5060025280121910C166F841F9000111EAA9 +S315E063EA6043F90001124C1218754052801381280055 +S315E063EA7066F4241F4E752F03760A2F02242F000CAB +S315E063EA8020024C43080067082F004EBAFFEA588F0E +S315E063EA90720A4C412800068000E421722F00A367C6 +S315E063EAA03F3C00013F3C00404EB900E0373A4FEF50 +S315E063EAB0000C241F261F4E753000202F00046702CA +S315E063EAC060B4487AFFF4A3673F3C00013F3C0040F3 +S315E063EAD04EB900E0373A4FEF000C4E754FEFFFE863 +S315E063EAE048D7047C322F0020282F001C2A2F0022CF +S315E063EAF04A846604A34260022404A343700173411B +S315E063EB00600E2C035280E78E204641F03A002608D9 +S315E063EB107D40B2866EEC60202F05A3673F3C000123 +S315E063EB203F3C00404E924FEF000C2002E7882040C6 +S315E063EB3041F02A002408600645F900E0373AB682D8 +S315E063EB406ED62F44001C4CD7047C4FEF0018600050 +S315E063EB50FF6A2039000113BC41F900E0373A6720C8 +S315E063EB603F39000113C02F003F3C004E4E90508F5B +S315E063EB704A80662042B9000113BC103C00014E7521 +S315E063EB80558F3F3C004F4E90588F4A8057C0488020 +S315E063EB9044804E7542404E752F02342F000871C291 +S315E063EBA0E888670C558F3F004EBAFFEE588F6018C2 +S315E063EBB0487AFF06A3673F3C00013F3C00404EB9FD +S315E063EBC000E0373A4FEF000C700FC480068200E432 +S315E063EBD021722F02A3673F3C00013F3C00404EB9E0 +S315E063EBE000E0373A4FEF000C241F4E754E56FFE0B8 +S315E063EBF0558F3F3C00084EB900E0373A486EFFE276 +S315E063EC001D40FFE242001D40FFE34EBAFCFA712E5F +S315E063EC10FFE2508F4E5E7259B28057C048804E75A0 +S315E063EC202F0B2F0A246F000CA141716A0002B28098 +S315E063EC30661C426747F900E0373A3F3C003E4E9335 +S315E063EC403EAA000642673F3C00464E93508F7152A0 +S315E063EC50A141B28066203F3C000147F900E0373AC4 +S315E063EC603F3C003E4E933EAA00043F3C00013F3CDE +S315E063EC7000464E93508F245F265F4E752F02242FF6 +S315E063EC8000082F024EB900E1C4A42F022F003F3CD7 +S315E063EC9000013F3C00404EB900E0373A4FEF0010C9 +S315E063ECA0241F4E754FEFFFDC700948D70CFC382FF5 +S315E063ECB00028720F7E1F75C42A04E0AAEA8DC8870E +S315E063ECC01E3C00632002068000000050CA812239A0 +S315E063ECD000012BC077401C01BE836C060680FFFFF4 +S315E063ECE0FF9CE081A742A547C282BE816714B481D7 +S315E063ECF06716143C0001B4816714340036043005AA +S315E063ED00601234043605600C34053604600634005C +S315E063ED1036053004558F487AFDA03F3C0002420732 +S315E063ED20714045FAFDB847FAFF54774375422F00C1 +S315E063ED304E921F46002E1F47002F280F06840000C1 +S315E063ED40002E2F044E934FEF000A2EBC00E3EAB881 +S315E063ED503F3C00022F034E921F46002E1F47002FB3 +S315E063ED602F044E934FEF000A2EBC00E3EAB83F3C14 +S315E063ED7000022F024E924CEF0CFC000C4FEF00307A +S315E063ED804E75435220746F20636F6E74696E75655A +S315E063ED902E2E2E00487AFFEC4EB900E011762F0056 +S315E063EDA04EBAFEDA548F41F9000112DC2E883F3CFD +S315E063EDB0000A10BC007E4EB900E0373A508F4E75BC +S315E063EDC03B002F0A246F00084A126610203C0001BC +S315E063EDD011FC2F400008245F6000FEA2558F487A3D +S315E063EDE0FFE02F0A3F3C00024EBAFAF24FEF000C07 +S315E063EDF041F9000111FC4A40670A420013C0000171 +S315E063EE0011FC6006101A10C066FA245F4E750D0A8F +S315E063EE1000002F02242F0008487AFFF44EBAFE5E04 +S315E063EE20588F2F420008241F6000FE5257696C64B6 +S315E063EE30206361726473206E6F7420616C6C6F77AC +S315E063EE40656420696E2070617468206E616D652EFD +S315E063EE500046696C65204E6F7420466F756E642E4E +S315E063EE600044657374696E6174696F6E20697320BB +S315E063EE706E6F7420612076616C69642077696C6477 +S315E063EE8020636172642065787072657373696F6E0F +S315E063EE902E002A2A2A2A2A2A2A2054455354202035 +S315E063EEA0434C49202A2A2A2A2A2A2A00456D754391 +S315E063EEB04F4E202D20436F6D70696C6564206F6ED5 +S315E063EEC02000547970652048454C5020666F722067 +S315E063EED061206C697374206F6620636F6D6D616E1C +S315E063EEE064732E0000446F6E652E00436F6D6D6133 +S315E063EEF06E6420697320696E636F6D706C657465AB +S315E063EF006C79207370656369666965642E002E00AB +S315E063EF1020746F20003A00200057696C64206361B7 +S315E063EF20726473206E6F7420616C6C6F77656420B6 +S315E063EF30696E2064657374696E6174696F6E2E00C1 +S315E063EF402320696E20746865206669727374206E27 +S315E063EF506F6E20626C616E6B20636F6C756D6E2095 +S315E063EF606973206120636F6D6D656E742E00434136 +S315E063EF7054206F7220545950452066696C656E6102 +S315E063EF806D650D0A094F75747075742067697665EA +S315E063EF906E2066696C6520746F207374616E64615C +S315E063EFA07264206F75747075742E004344205B70D1 +S315E063EFB06174685D0D0A094966207061746820674B +S315E063EFC06976656E2C20736574206974206173209D +S315E063EFD07468652064656661756C7420776F726BBF +S315E063EFE0206469726563746F72792E0D0A094F74D2 +S315E063EFF0686572776973652073686F77207468658F +S315E063F0002063757272656E7420776F726B206469C4 +S315E063F010726563746F727920706174682E00434819 +S315E063F0204D4F44205B706174682F5D66696C656EF5 +S315E063F030616D65206D6F64650D0A095365742074AF +S315E063F0406865206D6F6465206F6620746865206708 +S315E063F0506976656E2066696C652E204163636570CB +S315E063F0607461626C652076616C7565732061726547 +S315E063F070203C20373A0D0A090930202D204E6F7265 +S315E063F0806D616C2066696C650D0A090931202D2076 +S315E063F09052656164206F6E6C790D0A090932202D21 +S315E063F0A02048696464656E2066726F6D2064697278 +S315E063F0B06563746F7279207365617263680D0A09BB +S315E063F0C00934202D2053797374656D2066696C6508 +S315E063F0D000434C530009436C656172207468652094 +S315E063F0E073637265656E2E00434F505920736F7577 +S315E063F0F07263655F66696C65205B64657374696E8C +S315E063F1006174696F6E5F66696C655D0D0A09436F6D +S315E063F110707920736F7572636520746F20646573AD +S315E063F12074696E6174696F6E2E00444952206F7222 +S315E063F130204C53205B706174685D205B2D665D20B7 +S315E063F1405B2D645D205B2D745D205B2D775D0D0A21 +S315E063F150092D66202D20416E797468696E67206299 +S315E063F1607574206469726563746F726965732E0D75 +S315E063F1700A092D64202D204469726563746F726990 +S315E063F1806573206F6E6C792E0D0A092D74202D2020 +S315E063F19054657273653A206E616D6573206F6E6C4C +S315E063F1A0792E0D0A092D77202D20576964653A205B +S315E063F1B06E616D6573206F6E6C792C20686F726912 +S315E063F1C07A6F6E74616C2E00455252200009536863 +S315E063F1D06F77207468652072657475726E207661E8 +S315E063F1E06C756520666F7220746865206C617374F4 +S315E063F1F020636F6D6D616E642E0045584954000956 +S315E063F200457869742074686520434C492E004D4403 +S315E063F210205B7375626469726563746F7279206E7D +S315E063F220616D655D0D0A09437265617465206120F0 +S315E063F2306E6577207375626469726563746F7279FC +S315E063F24020746F207468652063757272656E7420CE +S315E063F2506469726563746F72792E004D4F5645200B +S315E063F260736F757263655F66696C65205B6465730E +S315E063F27074696E6174696F6E5F66696C655D0D0A6C +S315E063F28009436F707920736F7572636520746F20BD +S315E063F29064657374696E6174696F6E20616E642010 +S315E063F2A064656C65746520736F757263652E005073 +S315E063F2B041555345000957726974652027435220C7 +S315E063F2C0746F20636F6E74696E75652E2E2E2720BC +S315E063F2D0746F207374616E64617264206F757470A9 +S315E063F2E075740D0A09616E64207761697420666FCF +S315E063F2F07220612043617272696167652052657449 +S315E063F30075726E2066726F6D207374616E6461727E +S315E063F3106420696E7075742E0050524745525220D0 +S315E063F3205B4F4E207C204F46465D0009546F67670E +S315E063F3306C6520636F6D6D616E642070726F63657B +S315E063F3407373696E672061626F7274206665617458 +S315E063F350757265204F4E2F4F46462E0D0A09496654 +S315E063F36020505247455252206973204F4E20616EBA +S315E063F3706420636F6D6D616E642072657475726E21 +S315E063F380732061206E6F6E2D7A65726F2076616C85 +S315E063F39075652C0D0A09616C6C2066757274686517 +S315E063F3A0722070726F63657373696E672077696CD9 +S315E063F3B06C2073746F702E202055736566756C20B0 +S315E063F3C0696E202E4241542066696C65732E0D0A80 +S315E063F3D00944656661756C74206973204F4E2E002F +S315E063F3E04E4F57524150000944697361626C652020 +S315E063F3F06C696E6520777261702E005041544820C7 +S315E063F4005B3B5B706174685D2E2E2E5D0D0A094968 +S315E063F41066207061746820676976656E2C20736513 +S315E063F42074207468652064656661756C74207061C8 +S315E063F430746820666F722072756E6E696E67202ED1 +S315E063F4404241542066696C65730D0A09616E6420F6 +S315E063F450636F6D6D616E64732E204F74686572774A +S315E063F4606973652073686F77207468652063757266 +S315E063F47072656E746C792073657420706174682E3E +S315E063F4800052454D206F72204543484F205B2273FF +S315E063F4907472696E67225D0D0A095374726970202E +S315E063F4A071756F74657320616E64207772697465D4 +S315E063F4B020737472696E6720746F207374616E640F +S315E063F4C0617264206F75747075742E0D0A092F72FC +S315E063F4D0206973207265706C61636564206279206C +S315E063F4E031332C202F6E2062792031302C202F305F +S315E063F4F0206279203078302E0D0A092F63206279F5 +S315E063F5002031332031302C202F616E797468696E37 +S315E063F51067206973207265706C61636564206279E4 +S315E063F52020616E797468696E672E0052454E20736A +S315E063F5306F757263655F66696C65205B646573743A +S315E063F540696E6174696F6E5F66696C655D0D0A0904 +S315E063F55052656E616D6520736F7572636520746F56 +S315E063F5602064657374696E6174696F6E2E005244CC +S315E063F570205B706174685D0D0A0952656D6F76652F +S315E063F580206E616D6564206469726563746F727918 +S315E063F5902E00524D206F722044454C2066696C659F +S315E063F5A06E616D65205B5B66696C656E616D655DFD +S315E063F5B02E2E2E5D205B2D715D0D0A0952656D6FF2 +S315E063F5C07665206E616D65642066696C652066723A +S315E063F5D06F6D206469726563746F72792E0D0A09C3 +S315E063F5E0496620746865202D71206F7074696F6E4B +S315E063F5F020697320757365642C2073686F77207454 +S315E063F6006865207175657374696F6E0D0A09592FA4 +S315E063F61043522E2E2E20616E6420776169742066D4 +S315E063F6206F72206120726573706F6E73652E00531F +S315E063F630484F57205B64726976653A5D0D0A0953F4 +S315E063F640686F77206469736B207374617475732074 +S315E063F650666F72207468652064656661756C742094 +S315E063F6606F72207370656369666965642064726945 +S315E063F67076652E0056455253494F4E000953686FDF +S315E063F680772047454D444F532076657273696F6EB5 +S315E063F6902E00575241500009456E61626C65206CDD +S315E063F6A0696E6520777261702E004FEFFFF4721119 +S315E063F6B048D71C0071EF0010B280650002DA303B78 +S315E063F6C00A0848C04EFB08020024002C0034003CC4 +S315E063F6D00042007A008000880090009C00A202CE7F +S315E063F6E000B400C200CC0116012C016E487AF73EE5 +S315E063F6F0600000F0487AF75B600000E8487AF763F9 +S315E063F700600000E0487AF78C6076487AF7A047F9BC +S315E063F71000E011764E9345FAF6FA2F004E925C8F2F +S315E063F7203F3900E0001E4EBAF57C487AF7964E9371 +S315E063F7302F004E92487AF7AE4E924FEF001060007C +S315E063F7400256487AF7A16026487AF7A160000094EA +S315E063F75048790001124C60064879000112944EBA6A +S315E063F760F51C6020487AF7A86016487AF7A44EB984 +S315E063F77000E011762F004EBAF5046072487AF766B8 +S315E063F7804EBAF690588F6000020E487AF7584EBA32 +S315E063F790F682588F558F3F3C001945F900E0373ABA +S315E063F7A04E924879000112DAA3673F3C000133C009 +S315E063F7B0000112D806800000006113C0000112DA6E +S315E063F7C03F3C00404E92487AF74D45FAF4B04E928C +S315E063F7D0487AF7454E924FEF0018600001BA487ACF +S315E063F7E0F7394EB900E011762F004EBAF626508F00 +S315E063F7F0600001A4558F3F3C001945F900E0373AB4 +S315E063F8004E924879000112DAA3673F3C000133C0A8 +S315E063F810000112D806800000006113C0000112DA0D +S315E063F8203F3C00404E92487AF6ED4EBAF4504FEFC5 +S315E063F83000146000016247F900E01176487AF70246 +S315E063F8404E9345FAF5CE49FAF54C2F004E92487A37 +S315E063F850F71E4E932F004E92487AF7514E932F0040 +S315E063F8604E92487AF7BA4E932F004E924FEF001CB2 +S315E063F8702EBC00E3F0D14E92487AF85B4E932F00AC +S315E063F8804E92487AF8644E932F004E92487AF89CEB +S315E063F8904E932F004E92487AF64C4E924FEF0020ED +S315E063F8A04E94487AF9244E92487AF9234E932F0080 +S315E063F8B04E92487AF9464E92487AF9454E932F002E +S315E063F8C04E92487AF94A4E932F004E924FEF001CC0 +S315E063F8D02EBC00E3F25B4E932F004E92487AF9D149 +S315E063F8E04E92487AF9D14E932F004E92487AFA2B8C +S315E063F8F04E92487AFA374E932F004E924FEF001CA2 +S315E063F9002EBC00E3F3E04E92487AFADD4E932F0085 +S315E063F9104E92487AFAE74E932F004E92487AF5C6AE +S315E063F9204E924E94487AFB5B4E932F004E924FEF86 +S315E063F930001C2EBC00E3F52B4E932F004E92487AC3 +S315E063F940FC2E4E932F004E92487AFC484E932F003E +S315E063F9504E92487AFCDB4E932F004E924FEF001C9B +S315E063F9602EBC00E3F6744E92487AFD124E932F0056 +S315E063F9704E92487AFD1E4E92487AFD1D4E932F00B5 +S315E063F9804E92487AF5604E924CEF1C00001C4FEFA6 +S315E063F99000286000F4004CD71C004FEF000C4E7556 +S315E063F9A02F0B2F0A266F000C558F3F3C000E45FA4E +S315E063F9B0F2CC4EBAFCF6588F600C2F084E92487A1A +S315E063F9C0F5574E92508F205B4A1066EE700C3F40BF +S315E063F9D0000C245F265F6000FCD24FEFFFE048D760 +S315E063F9E01C7C246F0024266F002849F900E1C4A437 +S315E063F9F02F0A42444E94487A278F26007B4334008D +S315E063FA004E94508F41F2580138402003538073205F +S315E063FA1026007C2A5283BC8167121C3C003ABC8177 +S315E063FA20671A1C3C005CBC81660460107801360092 +S315E063FA30538073C00C810000FFFE66D252834A4254 +S315E063FA406710713258FF725CB28067067C3ABC809D +S315E063FA506616714243FA273141F208006002528228 +S315E063FA60101910C066F878013F39000113C02F0AF8 +S315E063FA703F3C004E4EB900E0373A508F4A80670408 +S315E063FA8070FE600242404A44670000824A4067046F +S315E063FA9070FE603C700160381239000111E178183C +S315E063FAA04881C2844A4167287C5C7142260252835C +S315E063FAB043FA26D5734C15860800714341F2080074 +S315E063FAC04240600410D952807540B2826CF670FF92 +S315E063FAD0224A204B42417743600C7519782A10C25B +S315E063FAE0B882671C52817541B6826EEE4206D5C214 +S315E063FAF017863800206F002C121A10C166FA60026E +S315E063FB0070FD4CD71C7C4FEF00204E754A406788EA +S315E063FB1060BE2F0A2F0241F9000113AC6046710003 +S315E063FB20722AB2806708123C003FB2806636487933 +S315E063FB300001140C45F900E1C4A44E92487A2649C3 +S315E063FB4024004E92508FB082653E43F90001140C57 +S315E063FB5041FA2635600871007318B280662A101977 +S315E063FB6066F46020101866B641F90001140C601063 +S315E063FB707100722AB28067B6123C003FB28067AE0C +S315E063FB80101866EC4240600270FF241F245F4E75D6 +S315E063FB902F39000113604EBAF0883EBC0001487904 +S315E063FBA0000251184EB900E012962E5052470050AB +S315E063FBB04154483D00206E6F7420666F756E642E07 +S315E063FBC00043616E206E6F74206F70656E206669A8 +S315E063FBD06C652E0D0A0043616E206E6F7420666F4E +S315E063FBE0726365207374646F757420746F206E65D9 +S315E063FBF077206368616E6E656C2E0D0A004C530068 +S315E063FC00444952004469726563746F7279206F6622 +S315E063FC1020002E2E00090020200050574400434860 +S315E063FC204D4F4400556E61626C6520746F20636866 +S315E063FC30616E6765206D6F6465206F6E20737562B4 +S315E063FC406469726563746F727973206F7220766F1D +S315E063FC506C756D65732E00496E76616C6964206DB3 +S315E063FC606F64652073706563696669636174696F00 +S315E063FC706E2E0045525200436F6D706C6574696F0A +S315E063FC806E20636F646520666F7220707265766955 +S315E063FC906F757320636F6D6D616E64203D200050F8 +S315E063FCA041544800454E560043415400545950452B +S315E063FCB00052454D004543484F0043440044697252 +S315E063FCC06563746F7279206E6F7420666F756E64A8 +S315E063FCD02E00434D44455252004F4E004F46460078 +S315E063FCE0417267206D757374206265204F4E206F95 +S315E063FCF072204F46462E00505247455252004D44BD +S315E063FD00004D4B44495200556E61626C6520746FD9 +S315E063FD10206D616B65206469726563746F727900E7 +S315E063FD20524400524D44495200556E61626C6520FF +S315E063FD30746F2072656D6F7665206469726563744E +S315E063FD406F727900524D0044454C0044656C6574AE +S315E063FD506520414C4C2066696C6573206D61746304 +S315E063FD6068696E6720002028592F4352293F200097 +S315E063FD703F200008082000203C3C2044454C455485 +S315E063FD8045440052454E0052656E616D6520414CB7 +S315E063FD904C2066696C6573206D61746368696E6730 +S315E063FDA02000202052656E616D6520556E73756324 +S315E063FDB065737366756C6C210053484F5700416CED +S315E063FDC06C6F636174696F6E20496E666F726D61A5 +S315E063FDD074696F6E3A20447269766520004472698D +S315E063FDE076652073697A6520696E20425954455376 +S315E063FDF020202020004259544553207573656420C2 +S315E063FE006F6E206472697665202020200042595423 +S315E063FE104553206C656674206F6E206472697665FF +S315E063FE202020202000546F74616C20556E697473D2 +S315E063FE30206F6E20447269766520202000467265E5 +S315E063FE406520556E697473206F6E204472697665BA +S315E063FE502020202000536563746F7273207065728F +S315E063FE6020556E6974202020004279746573207092 +S315E063FE70657220536563746F72202020004E6F2095 +S315E063FE80696E666F726D6174696F6E2061766169C2 +S315E063FE906C61626C6520666F722074686973206456 +S315E063FEA0726976652E00434F5059004D4F564500B3 +S315E063FEB04350004D56002044454C4554494E472037 +S315E063FEC0004572726F72206372656174696E672052 +S315E063FED066696C652E0043616E6E6F7420636F7046 +S315E063FEE079200020746F20697473656C662E004513 +S315E063FEF072726F722072656164696E6720736F7583 +S315E063FF007263652066696C652E004469736B20666F +S315E063FF10756C6C202D2D20636F7079206661696C3A +S315E063FF2065642E0048454C50001B76001B77004302 +S315E063FF304C454152001B481B4A00436F6D6D616E31 +S315E063FF4064206E6F7420666F756E642E00004240A7 +S315E063FF504E56FB7041EEFFF048D73CFC260E240E6E +S315E063FF6023C800011360246E00100683FFFFFDAA19 +S315E063FF7047EEFF900682FFFFFF2C3D40FFF03D40DA +S315E063FF80FFF23D40FBA260001D2A716EFBA2A14118 +S315E063FF90B28066064A9266001CDE4244487AEF46C1 +S315E063FFA033C4000251144EBAEE6A3D44FFFC226E3E +S315E063FFB0000C588F42AEFFF841EEFEAA2D48FF9043 +S315E063FFC04A516712286E0008183C00012D54FF90D1 +S315E063FFD02D48FF946002424441F9000112DC4AAEC7 +S315E063FFE000146716226E00144201206E00145288D4 +S315E063FFF01011488071C011810800711028487A2079 +S315E06400005288BA8067F4224C20432C0A6056730007 +S315E064001052897E25BE8167227A2FBA81664473113E +S315E064002020085280BE81660A10BC002F204010D999 +S315E0640030603210BC002F2040602A7119246E0008DB +S315E06400400680FFFFFFD020320C002A404A15671471 +S315E064005022002A482441204D101A52811AC066F4BF +S315E0640060600210C0101166A6421024462243204C5A +S315E0640070101910C066FA71147223B28067001BF817 +S315E0640080200E0680FFFFFEAA42474BF900E0373AAE +S315E06400902C3C00E3EC7C2D40FBA460000246730834 +S315E06400A02A0C703C5285B081673A6D14103C00208E +S315E06400B0B081673A103C0022B08166000212605853 +S315E06400C0703EB0816712103C0040B0816600020069 +S315E06400D02045226EFBA4606E20452205226EFBA4B9 +S315E06400E0600001122045226EFBA46000008A206E47 +S315E06400F0FBA452AEFBA44218206EFBA428457220F2 +S315E064010071145285B28067F4528471442D48FBA41D +S315E06401102D880C90600001CC206EFBA4224510FC77 +S315E0640120002228492A081019670001B410C071003A +S315E0640130722228492A08B28066E8600001A271004A +S315E06401407220B28067062848101866F22D49FBA42F +S315E0640150421C42672F053F3C003D4E95508F2D4033 +S315E0640160FFF86D647AFF3D45FFFC6000017671003F +S315E06401707220B28067062848101866F22D49FBA4FF +S315E0640180421C42672F053F3C003D4E95508F2D4003 +S315E0640190FB9E6D3442673F3C00454E953A2EFBA08C +S315E06401A03D40FFF63E8542673F3C00464E95306EE5 +S315E06401B0FBA03F083F3C003E4E9570FF3D40FFF29A +S315E06401C04FEF000C6000011C2F054EBAEC46487AEE +S315E06401D0F9E54EB900E0117620462F004E9060E0D6 +S315E06401E071007A3EBA80660652817EFF60067A20A6 +S315E06401F0BA8067062848101866E62D49FBA4421CB7 +S315E06402004A47672A3F3C00012D41FB9A2F013F3C58 +S315E0640210003D4E95508F222EFB9A2A006C4442672D +S315E06402202F013F3C003C4E95508F2A006022558F4B +S315E06402302F013F3C00412D41FB9A4E954267222EA9 +S315E0640240FB9A2F013F3C003C4E954FEF00102A008D +S315E06402504A856C0E487AF96B20464E90588F60005A +S315E064026000823F3C00013F3C00454E95588F3D403F +S315E0640270FFF46C0670FF3D40FFF4558F3F053F3C4D +S315E064028000013F3C00464E95508F4A806C14487A94 +S315E0640290F94620464E903F053F3C003E4E95508FD2 +S315E06402A060403F053F3C003E4E95588F4A4767168F +S315E06402B0558F3F3C00023F3C000142A73F3C004271 +S315E06402C04E954FEF000C70FF3D40FFF0601432082E +S315E06402D0226EFBA4284552AEFBA412C160042D45F0 +S315E06402E0FBA4101430406600FDB6206E000C202E90 +S315E06402F0FBA44A50671A206E0008220058886008FA +S315E0640300528471442D890C9022584A1166F2200178 +S315E0640310224020044219528071404BEEFF942C3CFB +S315E0640320000112DC42112D890C90286EFF902E2E6E +S315E0640330FF942F0C4EBAE5D0588F7001204D60269D +S315E064034022071A1920462E01528052871185180019 +S315E064035066EE7A2043F9000112DC206EFB9E2E2EB7 +S315E0640360FBA413851800225873404A11670C528126 +S315E06403702D48FB9E2D47FBA460C87C0D41F9000126 +S315E064038012DC53804205118618007C201185180121 +S315E064039013C0000112DC13C6000112DD4A6EFFFCD5 +S315E06403A0672642A7486EFFF8486EFFFC2F0B4EBAED +S315E06403B0FB9E3F2EFFFA3F3C003E4EB900E0373AE3 +S315E06403C04FEF0014600018A62F0C4EB900E1C4A4E8 +S315E06403D0588FA541B280662A712C00017A3ABA80B8 +S315E06403E06620101448800680FFFFFFBF3F0033C0DD +S315E06403F0000112D83F3C000E4EB900E0373A600087 +S315E0640400047A558F487AF7F72A3C00E3E8DC2F0C48 +S315E06404103F3C000320454E904FEF000C4A40661A7D +S315E0640420558F487AF7DC2F0C3F3C000422454E9109 +S315E06404304FEF000C4A40670003BA4A9267082F0BF5 +S315E06404404EBAF55E588F42404244424642477A018C +S315E06404504BFAE4B43D40FB9E60622F084E952076ED +S315E0640460CC90588F722D7110B280664E712800015F +S315E0640470123C0046B280671C6D0A123C0044B280AE +S315E0640480662860167254B280671E123C0057B280CA +S315E06404906618600C42467EFF60107CFF4247600A45 +S315E06404A078FF3D44FB9E600278FF41F3CC0422581A +S315E06404B02149FFF84A1166F6600252857145207655 +S315E06404C00C9028404A106692226EFF9420421019DE +S315E06404D010C066FA4879000113AC487900011364E8 +S315E06404E02F024EBAF4F64FEF000C4A44660000CA97 +S315E06404F0487AF7124EB900E011762F004EBAE77EDD +S315E06405001A2EFF2C508F671C712EFF2D723AB28023 +S315E064051066121D45FFFF48853A7C00020685FFFFAB +S315E0640520FFBF601E558F3F3C00199BCD4EB900E07E +S315E0640530373A588F3A0020050680000000411D4096 +S315E0640540FFFF486EFFFFA3673F3C000149F900E007 +S315E0640550373A3F3C00404E94487AE9BB43FAE71E9B +S315E06405602D49FB9A4E91714D4FEF001041F9000110 +S315E06405701364226EFB9A4A300800662852853F056A +S315E06405802F033F3C00474E94508F4A2EFDAA660CDB +S315E06405907A5C42001D45FDAA1D40FDAB2F034EBAB1 +S315E06405A0E6DC600A0680000113642F004E913EBCCF +S315E06405B0000C4EBAF0F6588F72FF41FAE59623C204 +S315E06405C0000113BC2D48FB9A33C1000113C04E9061 +S315E06405D04A40660A4A44660005C6600005B62D4A86 +S315E06405E0FBA434473E06424549FAE6923C044BFA9C +S315E06405F0E4EC4879000111EA4EB900E1C4A4588FED +S315E064060028001039000111E1730020417208B288B4 +S315E0640610670001B84A47670A123C0010B288660070 +S315E064062001AA320A670A71007210B2806700019CFF +S315E06406304A46673C558F487AE8D64879000111EA1C +S315E06406403F3C00024EBAE2964FEF000C4A40660029 +S315E0640650017A558F487AF5BC4879000111EA3F3C46 +S315E064066000034EBAE2784FEF000C4A406600015C44 +S315E06406704A6EFB9E674C4879000111EA4E947145D7 +S315E0640680588FAB41B280670620045280601E487A78 +S315E0640690E8544EBAE77E588F42456032487AE87944 +S315E06406A02D40FB9A4E94588F202EFB9A220052815D +S315E06406B03001558173412041720CB2886CDE5285FB +S315E06406C0600C4879000111EA4EBAE748588F4A4609 +S315E06406D0660000F852846018487AE83DA3673F3CB8 +S315E06406E000013F3C00404EB900E0373A4FEF000C62 +S315E06406F020045280380055807140720EB2806CD806 +S315E0640700558F3F39000111E44EBAE59A487AF50708 +S315E06407104E943839000111E2548F2EBC00E3EAB8F6 +S315E0640720720B3F3C00022004E2A8123C001FC28028 +S315E06407302F014E95487AE7DF4E944FEF000A2EBCC0 +S315E064074000E3EAB82004EA88723F3F3C0002C280D4 +S315E0640750D8842F014E95487AE7BD4E944FEF000A50 +S315E06407602EBC00E3EAB8703E3F3C0002C0842F0032 +S315E06407704E95487AF4A14E944FEF00101839000173 +S315E064078011E1720F48847144B2806D08487AE32AB5 +S315E06407904E94588F558F3F044EBAE3FE487AF47907 +S315E06407A0A5673F3C00013F3C00404EB900E0373A64 +S315E06407B04FEF000A2EBC00E3EF173F3C00062F39EB +S315E06407C0000111E64E954FEF000C4EBAE3864A40BF +S315E06407D06600FE20487AE70E246EFBA44EBAE63441 +S315E06407E0588F4A466600041E558F3F3C00056000FC +S315E06407F00366558F487AF4242F0C3F3C0004204569 +S315E06408004E904FEF000C4A4067764A9267082F0B8A +S315E06408104EBAF18E588F558F3F3C001949F900E086 +S315E0640820373A4E94486EFFFFA3673F3C00012800C9 +S315E064083006800000004152841D40FFFF3F3C0040BB +S315E06408404E94487AE6D14EBAE4343F042F023F3CF4 +S315E064085000474E944FEF001C4A2EFF2C660C705CEA +S315E064086042011D40FF2C1D41FF2D2F024EBAE40EBE +S315E0640870548F3F3C000C4EBAEE32588F600013EE54 +S315E0640880558F487AF39A2F0C3F3C000620454E90EC +S315E06408904FEF000C4A40670001504A9267082F0BFD +S315E06408A04EBAF0FE588F226EFF942042101910C0A3 +S315E06408B066FA4879000113AC2C3C00E3EB524879C4 +S315E06408C0000113642F024EBAF11223C2000113BC75 +S315E06408D070FF204633C0000113C04E904FEF000C0A +S315E06408E04A40660E558F3F3C00014EBAEDBE588FC6 +S315E06408F060264EBAE14C1039000111E17218488065 +S315E0640900C0814A406718487AF31C4EB900E0117614 +S315E06409102F004EBAE368508FA146600000C24BF9DF +S315E064092000E0117649FAE3562A3C00E3E906283CFE +S315E064093000E0373A206EFF984A10675C2F082D482E +S315E0640940FB9A22454E91588F206EFB9A725871102D +S315E0640950B28066085288123C00016002424193C943 +S315E064096060284A4167162C097E09E98E22467D0095 +S315E06409704880BE866C1043F108C9600E3C09488025 +S315E0640980CDFC000A324643F108D0101866D420093B +S315E06409907EF8C0874A406710487AF2BD4E95A14614 +S315E06409A02F004E94508F601C558F3F0920443F3C86 +S315E06409B0000148790001124C3F3C00434E904FEFF2 +S315E06409C0000C2C004EBAE18C4A406600FF684A8609 +S315E06409D0660C558F3F3C00054EBAECD0588F23C663 +S315E06409E00001124060001286558F487AF2872F0C18 +S315E06409F03F3C000422454E914FEF000C4A4067208D +S315E0640A00487AF2754EB900E011762F004EBAE26E7E +S315E0640A105C8F3F39000112424EBAE17E6000FE5CB3 +S315E0640A20558F487AF27B2F0C3F3C000520454E906B +S315E0640A304FEF000C4A40671C4A9267082F0B4EBA88 +S315E0640A40EF60588F2F074EBADEBE2F074EBAE374B7 +S315E0640A50600000AE558F487AF24C2F0C3F3C0004A0 +S315E0640A6022454E914FEF000C4A406700009A42449B +S315E0640A702E3C00E3EE124BF900E1C4A4604A558FC4 +S315E0640A80487AF12D2F0C3F3C000520454E904FEF00 +S315E0640A90000C4A4066082F0C22474E91588FDCB909 +S315E0640AA0000111C82F064E95588F2079000111C8B0 +S315E0640AB0D8807144123008011030080048814880BB +S315E0640AC0D0814A40671E52847D442079000111C872 +S315E0640AD049F0680012306801101448814880D0817A +S315E0640AE04A40669A4A39000111FC67001180487AE7 +S315E0640AF0F0BF4EBAE31E4879000111FC4EBAE17EBE +S315E0640B00508F60001168558F487AF19E2F0C3F3CF8 +S315E0640B10000420454E904FEF000C4A40661A558F0C +S315E0640B20487AF18A2F0C3F3C000522454E914FEFFF +S315E0640B30000C4A40670000D44A9267082F0B4EBA0D +S315E0640B40EE60588F226EFF944A1167042042600E6D +S315E0640B50558F3F3C00064EBAEB52600000A6101972 +S315E0640B6010C066FA4879000113AC48790001136451 +S315E0640B702F024EBAEE6623C2000113BC4BFADFD4F1 +S315E0640B8070FF33C0000113C04E954FEF000C4A402E +S315E0640B906612558F3F3C00014EBAEB10588FA14068 +S315E0640BA060000C962A3C00E3EA4049F900E0373AF3 +S315E0640BB020454E90426748790001124C3F3C003D27 +S315E0640BC04E94508F38002F03487800803F043F3CB2 +S315E0640BD0003F4E944FEF000C4A806F142F032F00B2 +S315E0640BE03F3C00013F3C00404E944FEF000C60D622 +S315E0640BF04E954A4066BA3F043F3C003E4EB900E03B +S315E0640C00373A588F428060000C30558F487AF0A3AB +S315E0640C102F0C3F3C000422454E914FEF000C4A40B6 +S315E0640C20660000C2558F487AF08D2A3C00E3E8DC22 +S315E0640C302F0C3F3C000520454E904FEF000C4A4098 +S315E0640C40660000A2600000F271007222B280660063 +S315E0640C5000902005528024802F004E94588F2045C2 +S315E0640C60722271300800B280661042072A122F059C +S315E0640C704E94588F2045118708FF20522248605CC5 +S315E0640C807100722FB280665212117A637101BA8072 +S315E0640C9067186D087E30BE80662A60247A6EBA80F4 +S315E0640CA067187E72BE80661C600A10BC000D12BCBA +S315E0640CB0000A602610BC000D600C10BC000A6006D9 +S315E0640CC042106002108120092A0952802440528031 +S315E0640CD0121A2445528514C166F25288101966A028 +S315E0640CE05884600A428449F900E1C4A42C0A45EEBA +S315E0640CF0FF94D5C42A12204510106600FF4C2446A2 +S315E0640D00780149FADF78601C7144A341B2806708D0 +S315E0640D10487AE2054E94588F2045588D2F104E94AC +S315E0640D205284588F20552A0D4A1066DC4A92660032 +S315E0640D300F3C558F6000FB3C558F487AEF7E2F0C55 +S315E0640D403F3C000322454E914FEF000C4A40677CDE +S315E0640D504A9267082F0B4EBAEC48588F41F900E087 +S315E0640D60373A4A4466483039000112D852803F0027 +S315E0640D702F033F3C00474E90508F4A2EFDAA660CE7 +S315E0640D80705C42011D40FDAA1D41FDAB2F034EB9C7 +S315E0640D9000E1C4A42F032F003F3C00013F3C004028 +S315E0640DA04EB900E0373A4FEF001060000EC0558F41 +S315E0640DB02F073F3C003B4E90508F23C0000112400A +S315E0640DC067000EAA487AEEF7600001DC558F487A30 +S315E0640DD0EF022F0C3F3C000720454E904FEF000C8E +S315E0640DE04A4067784A9267082F0B4EBAEBB4588F3D +S315E0640DF04A44661841FADE864A790001124666007C +S315E0640E000092487AEED84E906000FA702F074EBA98 +S315E0640E10DAF6548F487AEEC32F073F3C000349FA6B +S315E0640E20DABC4E944FEF000C4A40670C70FF33C057 +S315E0640E300001124660000E36558F487AEEA02F0701 +S315E0640E403F3C00044E944FEF000C4A406700009A22 +S315E0640E50424133C10001124660000E12558F487A52 +S315E0640E60EE972F0C3F3C000720454E904FEF000C69 +S315E0640E704A40677C4A9267082F0B4EBAEB24588F38 +S315E0640E804A44661641FADDF64A790001124467007F +S315E0640E90FF72487AEE456000FF6E2F074EBADA6855 +S315E0640EA0548F487AEE352F073F3C000349FADA2E31 +S315E0640EB04E944FEF000C4A40670C70FF33C000015C +S315E0640EC0124460000DA8558F487AEE122F073F3C16 +S315E0640ED000044E944FEF000C4A40670C424133C124 +S315E0640EE00001124460000D86487AEDF6600000B8B1 +S315E0640EF0558F487AEE0A2F0C3F3C000320454E900E +S315E0640F004FEF000C4A406618558F487AEDF52F0C82 +S315E0640F103F3C000622454E914FEF000C4A40672C59 +S315E0640F204A9267082F0B4EBAEA78588F558F2F0787 +S315E0640F303F3C00394EB900E0373A508F23C0000198 +S315E0640F40124067000D28487AEDBF605A558F487A9B +S315E0640F50EDD02F0C3F3C000320454E904FEF000C44 +S315E0640F604A406618558F487AEDBB2F0C3F3C000625 +S315E0640F7022454E914FEF000C4A4067364A92670825 +S315E0640F802F0B4EBAEA1C588F558F2F073F3C003A19 +S315E0640F904EB900E0373A508F23C000011240670033 +S315E0640FA00CCC487AED854EB900E011762F006000EE +S315E0640FB0FB4C558F487AED8E2F0C3F3C0003204561 +S315E0640FC04E904FEF000C4A40661A558F487AED7999 +S315E0640FD02F0C3F3C000422454E914FEF000C4A40F3 +S315E0640FE0670001CA4A9267082F0B4EBAE9B4588F74 +S315E0640FF04240780149FAD9103D40FB9E60342F089F +S315E06410004E9420765C90588F722D7110B280662073 +S315E0641010712800017C51BC8066067EFF3D47FB9EDD +S315E064102041F35C0422582149FFF84A1166F66002EE +S315E064103052847B4420765C904A1066C2206EFF94AC +S315E06410404A106600011E6000014C101910C066FA71 +S315E064105070FF4879000113AC4879000113642F02EC +S315E064106023C2000113BC33C0000113C04EBAE96C5D +S315E06410704FEF000C72FD7140B2806706A341B28007 +S315E06410806640487AECC720454E902F004E944879E6 +S315E0641090000113644E944879000113AC4E94487A87 +S315E06410A0ECC622454E912F004E944EBADB404FEF8C +S315E06410B000184A40670000EC487ADE2A20474E90E2 +S315E06410C0588F22464E914A40661A558F3F3C00013E +S315E06410D0A1444EBAE5D6487ADE0C20474E90508F4E +S315E06410E0600000981039000111E172184880C081EF +S315E06410F04A4066644EBAD94A558F3F3C00074EBAB9 +S315E0641100E5AA588F4A6EFB9E672C487AEC644E9447 +S315E06411104EBADADA487AEC5D2D40FB9A4E94508FFB +S315E0641120202EFB9A4A406724487AEC4D20454E903F +S315E06411302F004E94508F558F48790001124C3F3CF6 +S315E064114000414EB900E0373A508F2800558F3F3C56 +S315E0641150000C4EBAE556588F22464E914A40668454 +S315E0641160601842842A3C00E0117649FADB102E3C92 +S315E064117000E3EE122C3C00E3EB52225D4A11670673 +S315E064118020426000FEC6558F3F3C00054EBAE51C22 +S315E0641190588F600E558F3F3C000642844EBAE50C8C +S315E06411A0588F23C40001124060000AC2558F487A02 +S315E06411B0EBD32F0C3F3C00044BFAD7224E954FEF0E +S315E06411C0000C4A40670001B64A9267082F0B4EBA94 +S315E06411D0E7D0588F286EFF982242206EFF942A4803 +S315E06411E0101D12C066FA2243101C12C066FA70FF24 +S315E06411F023C2000113BCA1790001124033C000018F +S315E064120013C04A10670006424879000113AC487976 +S315E0641210000113642F0249FAE7C24E944FEF000CC3 +S315E064122072FD7140B280670878FEB8806614600823 +S315E0641230558F42676000F640558F3F3C0001600081 +S315E0641240F63648790001140C7AFD4879000113C436 +S315E06412502F034E944FEF000C7140BA80666648796E +S315E0641260000113AC4879000113642F024E944FEFEA +S315E0641270000C7140BA806708A346BC80660009EE3C +S315E0641280487AEB054BF900E011764E9549FAD9EECA +S315E06412902F004E944879000113644E944879000116 +S315E06412A013AC4E94487AEAC04E952F004E944EBAEB +S315E06412B0D93C4FEF00184A40670009B2487ADC2609 +S315E06412C0600002704EBAE84C4A406770558F3F3C06 +S315E06412D000026000F5A21039000111E1721848803D +S315E06412E0C0814A40667620464E9022454E91558F9F +S315E06412F03F3C000C4E943EBC00074E943EBC000A54 +S315E06413004E943EBC00084E944879000112944879A4 +S315E06413100001124C426720443F3C00564E904FEF2A +S315E0641320001023C0000112406C32487AEA764EB966 +S315E064133000E011762F004E95508F60202E3C00E33E +S315E0641340EB522C3C00E3E92E2A3C00E3EA4049FAFE +S315E0641350E35A283C00E0373A4BFAD92222474E91C9 +S315E06413604A406600FF72558F3F3C000C49FAE33C05 +S315E06413704E943EBC00054E946000F500558F487A65 +S315E0641380EA392F0C3F3C00054E954FEF000C4A407E +S315E0641390670001A84A9267082F0B4EBAE604588F95 +S315E06413A02F074EBAD5622847588F1014670A4880CB +S315E06413B00680FFFFFFC0600242403F00486EFFE0E8 +S315E06413C03F3C00364EB900E0373A508F4A806600BB +S315E06413D0015E487AE9EA4EB900E0117649FAD89EA8 +S315E06413E02A472F004E94508F4A15660C558F3F3C22 +S315E06413F000104EBAE2B660042F074E943EBC000C71 +S315E06414004EBAE2A8283C00E01176487AE9D14BFA74 +S315E0641410DA0220444E9049FAD6C42F004E955C8F8A +S315E06414202EBC00E3EF173F3C0008202EFFEC43EEB2 +S315E0641430FFE4222EFFE84C1108004C0018002F014F +S315E06414404E94487AE9B120444E902F004E954FEF82 +S315E0641450000E2EBC00E3EF173F3C0008222EFFE8A7 +S315E064146043EEFFEC202EFFE490AEFFE04C11180053 +S315E06414704C0018002F014E94487AE99320444E902C +S315E06414802F004E954FEF000E2EBC00E3EF173F3C66 +S315E06414900008202EFFEC43EEFFE0222EFFE84C111D +S315E06414A008004C0018002F014E94487AE9792044EC +S315E06414B04E902F004E954FEF000E2EBC00E3EF17D3 +S315E06414C03F3C00082F2EFFE44E94487AE9712244AB +S315E06414D04E912F004E954FEF000E2EBC00E3EF17B2 +S315E06414E03F3C00082F2EFFE04E94487AE969204499 +S315E06414F04E902F004E954FEF000E2EBC00E3EF1793 +S315E06415003F3C00082F2EFFEC4E94487AE95D224476 +S315E06415104E912F004E954FEF000E2EBC00E3EF1771 +S315E06415203F3C00082F2EFFE84E94600004BA487AE8 +S315E0641530E94D4EBAD8DE6000F342558F487AE968E1 +S315E06415402F0C3F3C00054E954FEF000C4A40664435 +S315E0641550558F487AE9572F0C3F3C00054E954FEF7F +S315E0641560000C4A40662E558F487AE9462F0C3F3C7C +S315E064157000034E954FEF000C4A406618558F487A43 +S315E0641580E9332F0C3F3C00034E954FEF000C4A4085 +S315E0641590670002C04A9267082F0B4EBAE404588F7C +S315E06415A04A446F00029E558F487AE9012F0C3F3C0E +S315E06415B0000528474EBAD3264FEF000C226EFF98FB +S315E06415C020433D40FB9E101C10C066FA2042101971 +S315E06415D010C066FA70FF4879000113AC48790001DF +S315E06415E013642F0323C3000113BCA17900011240E5 +S315E06415F049FAE3E833C0000113C04E944FEF000CA0 +S315E064160072FD7140B2806700021A78FEB8806700A6 +S315E0641610021848790001140C7AFD4879000113C474 +S315E06416202F024E944FEF000C7140BA80670001F4CC +S315E06416304EBAE4E04A406700011A558F3F3C000227 +S315E06416404EBAE068600001381039000111E17C1897 +S315E06416504880C0864A406600010A4EBAD3E4283C14 +S315E064166000E3F6AA20474E904A406600013E558F55 +S315E06416704879000112943F3C00414E945C8F3F3CB4 +S315E0641680000C4E953EBC00074E953EBC000A4E9556 +S315E06416903EBC00084E95426748790001124C3F3CD7 +S315E06416A0003D4E944FEF000C3C006F0000DA3F3C87 +S315E06416B000204879000112943F3C003C4E94508FE0 +S315E06416C03A006F0000D042B900011240486EFBAAAE +S315E06416D0487802003F063F3C003F4E944FEF000CD3 +S315E06416E028006F1A486EFBAA2F003F053F3C004076 +S315E06416F04E944FEF000CB8806FD2600000E24A80EF +S315E0641700660000D63F063F3C003E4EB900E0373AFD +S315E0641710588F4A6EFB9E672E558F48790001124CAE +S315E06417203F3C00414EB900E0373A487AE78A4EB921 +S315E064173000E011762F004EBAD5444FEF000E3F3CE1 +S315E064174000074E95588F3F053F3C003E4E94588FB8 +S315E064175060102E3C00E3E92E4BFADF5049F900E0D5 +S315E0641760373A4EBAD3EE4A406600FEDE558F3F3CCA +S315E0641770000C49FADF364E943EBC00054E94588F11 +S315E06417804240600000B2558F3F3C000122444E91D6 +S315E0641790600000A0487AE72B4EB900E011762F008E +S315E06417A04EBAD670508F6000008C487AE72A49F9C1 +S315E06417B000E011764E942A442F004EBAD6565C8FDA +S315E06417C03F3C00074E95487AE71B4E942F004EBA8D +S315E06417D0D4AC4FEF000C605C487AE7156004487A55 +S315E06417E0E72A4EB900E0117649FAD4922F004EBA50 +S315E06417F0D622508F558F4879000112943F3C0041C0 +S315E06418004EB900E0373A487AE6AE4EB900E0117672 +S315E06418102F004E944879000112944E944FEF0014D1 +S315E06418206012558F42676006558F3F3C00014EBAA1 +S315E0641830DE7A588F70FF714023C000011240600069 +S315E0641840042CA17900011240558F3F3C00066000EC +S315E0641850F026558F487ADA592F0C3F3C00064E95B0 +S315E06418604FEF000C4A4067084EBAD52A600003FE83 +S315E0641870558F487AE6B02F0C3F3C00054E954FEF06 +S315E0641880000C4A40670A558F3F3C00116000EFE860 +S315E0641890558F487AD9662F0C3F3C00054E954FEF3D +S315E06418A0000C4A4067344A92670A486EFF904EBA23 +S315E06418B0E0F0588F3F2EFFF645F900E0373A3F3CBB +S315E06418C0003E4E923F2EFFF43F3C003E4E92700146 +S315E06418D033C000011248600003D4558F487ADD9620 +S315E06418E02F0C3F3C00084E954FEF000C4A4067488A +S315E06418F04A9267082F0B4EBAE0A8588F558F3F3C43 +S315E064190000304BF900E0373A49FAD1B04E95794068 +S315E06419102004E08C718079842F004E94487AD5F067 +S315E0641920A3673F3C00013F3C00404E952F044E9434 +S315E06419304FEF001860000336558F487ADD562F0C5A +S315E06419403F3C00054BFACF964E954FEF000C4A406C +S315E064195067124A9267082F0B4EBAE046588F487A68 +S315E0641960E5C96026558F487ADA782F0C3F3C000744 +S315E06419704E954FEF000C4A40672C4A9267082F0B4E +S315E06419804EBAE01E588F487AE5A4A5673F3C00014D +S315E06419903F3C00404EB900E0373A4FEF000A3F3C27 +S315E06419A000056000EED2558F487AD7272F0C3F3C6E +S315E06419B000044E954FEF000C4A406616558F487A00 +S315E06419C0E56F2F0C3F3C00064E954FEF000C4A4006 +S315E06419D0671C487AE561A9673F3C00013F3C0040EB +S315E06419E04EB900E0373A4FEF000C600002804A924D +S315E06419F067082F0B4EBADFAA588F2F0B2F0C4EBAFF +S315E0641A0003FA508F4A40660002644879000111FC8B +S315E0641A104EB900E1C4A4588F4A406706307C00059D +S315E0641A20600291C84BF0080242442C3C00E3E8DCD7 +S315E0641A302A3C00E1C4A4602A558F487AE1732F07F3 +S315E0641A403F3C000520464E904FEF000C4A40670E3F +S315E0641A502F072245538D4E91588FD8806004528D5E +S315E0641A60528471442079000111C82E0812300801AD +S315E0641A70DE802047101080814A0066BC714D558F28 +S315E0641A802F003F3C00484EB900E0373A508F2A4079 +S315E0641A904A39000111FC672E204043FAE1134240C3 +S315E0641AA0600410C15280121966F8734043F900016C +S315E0641AB011FC41F5180012192808528010C166F627 +S315E0641AC02044421060024240420152807140204309 +S315E0641AD01B81080072FF4240601079117A2E528CA5 +S315E0641AE05280BA8456C44884C2841814224C10C402 +S315E0641AF066E841FAE0B64A4166046010528012181C +S315E0641B00794043F648001341FDAA66F020437AFF24 +S315E0641B10601671007C3ABC80670C7E5CBE8056C001 +S315E0641B204880CA8060024245101866E67001424405 +S315E0641B302C0349F9000111FC33C0000251144EB97B +S315E0641B4000E0364A558F426742673F3C00154EB91E +S315E0641B5000E03700508F6000008A71444A34080020 +S315E0641B60677E32046002528171411C340800670862 +S315E0641B7071067E3BBE8066EE7F412042424022474C +S315E0641B80600810F47800528452807F44B3C76EF2E2 +S315E0641B902800538479447E5C41F648007928FF2C1A +S315E0641BA0BE84670E7940528041F64800785C114401 +S315E0641BB0FF2C2043600A43F6480052801347FF2C0B +S315E0641BC01E1879404A0766EE41F648001147FF2C35 +S315E0641BD04A0667045281600242452C02380160027B +S315E0641BE042452F0D4879000112DC2F0642673F3CDF +S315E0641BF0004B4EB900E0373A4FEF001072DFB28027 +S315E0641C0066064A456600FF542E007AE04EB900E067 +S315E0641C103630558F2F0D42443F3C004933C40002B1 +S315E0641C2051144EB900E0373A5C8F3F043F3C000103 +S315E0641C303F3C00154EB900E0370023C7000112406F +S315E0641C40508FBA8767224A876E164A876C1E487A2F +S315E0641C50E2EA4EB900E011762F004EBAD020508FFA +S315E0641C604A790001124467044EBADF26486EFFF0F3 +S315E0641C704EBACFAE588F4AAE001467364A92670AB8 +S315E0641C80486EFF904EBADD1A588F3F2EFFF645F93F +S315E0641C9000E0373A7C013F3C003E4E923F2EFFF433 +S315E0641CA03F3C003E4E9233C600011248508F6000BE +S315E0641CB0013C4AAE00146600E2D24A92670000A490 +S315E0641CC041F9000112DD4218B1FC0001135A66F6CF +S315E0641CD049F9000112DC2A4C2A3C00E0373A6002FA +S315E0641CE01AC0486EFFFFA3673F2A000220453F3CC7 +S315E0641CF0003F4E904FEF000C4A806E0E42414240E8 +S315E0641D0041F9000112DC32406028102EFFFF780DA5 +S315E0641D107300B88166CA720160E479807A1FBA8416 +S315E0641D20641079007C7FBC846708794952891180A4 +S315E0641D304800101C66E4420771493D49FBA241F93B +S315E0641D40000112DC118708004A6EFBA2660A4A416A +S315E0641D50670670FF3D40FBA24A6EFBA256C0600078 +S315E0641D600084558F3F3C000D4EBAD940588F41F9F7 +S315E0641D70000112DD4218B1FC0001135A66F6558F74 +S315E0641D8049F9000112DC2F0C727E3F3C000A4204E2 +S315E0641D9013C1000112DC4EB900E0373A7139000133 +S315E0641DA012DD508F41F9000112DE198408024240C7 +S315E0641DB0601879817A1FBA84641079017C7FBC8467 +S315E0641DC067087940528019814800121866E4420730 +S315E0641DD0734041F9000112DC4A4056C0118718008D +S315E0641DE01187180144804A006600E1A04CEE3CFC91 +S315E0641DF0FB704E5E4E75424154004E56FF084240BB +S315E0641E0048D73CFC206E000872FF600E7502762EA1 +S315E0641E105280B68256C24882C282141877401D82C6 +S315E0641E20389666E83D40FFFE4A41671641FA035438 +S315E0641E3012187540324052801D81289666F23D49FB +S315E0641E40FFFE716EFFFE487AFFAE487608933F3C2C +S315E0641E5000034EBACA884FEF000A4A40661C600027 +S315E0641E60014A77037C3ABC83670C7E5CBE8356C1C9 +S315E0641E704881C481600842426004424074FF734012 +S315E0641E80163618962200528130014A0366D4280E2B +S315E0641E900684FFFFFF962A0E2A443D41FFFE424335 +S315E0641EA047F900E0373A0685FFFFFF3245F900015E +S315E0641EB011FC600000A671434A3208006700009A8C +S315E0641EC03003600252807340183218006708730466 +S315E0641ED07C3BBC8166EE7F404241204760127D4197 +S315E0641EE049F278005283528143F668001354FF3214 +S315E0641EF07F43B1C76EE82601538377433D41FFFED6 +S315E0641F007C5C41F638007728FF32BC8367127E5CDE +S315E0641F10774152813D41FFFE41F638001147FF3279 +S315E0641F20322EFFFE204D600A43F638005281134795 +S315E0641F30FF321E1877414A0766EE3D41FFFE4201D5 +S315E0641F4041F638001141FF324A0467045280600268 +S315E0641F504242280536006002424242672F043F3C13 +S315E0641F60003D4E93508F2D40FFFA6E0A4A4266005A +S315E0641F70FF464A806D34424342A7486EFFFA486E94 +S315E0641F80FFFE2F2E000C3D43FFFE4EBADFC23F2E0E +S315E0641F90FFFC3F3C003E4EB900E0373A42B90001EF +S315E0641FA012404FEF001470FF60084240A1790001CF +S315E0641FB012404CEE3CFCFF084E5E4E754C65617615 +S315E0641FC0696E6720456D75434F4E2E2E2E0D0A00C1 +S315E0641FD04E56FF90206E000848D70C0C558F23C8E8 +S315E0641FE0000111C443E8002C23D1000111C841E883 +S315E0641FF000802D48FFA24A1056C04879000111CCF2 +S315E06420003F3C001A48803D40FFA64EB900E0373AAF +S315E0642010420072FF42B900011240508F13C00001C2 +S315E064202011FC424033C10001124433C00001124640 +S315E06420304A6EFFA6660C558F3F3C00044EBAD66CDA +S315E0642040588F424347FAC8966024558F487ADB61D5 +S315E06420502F083F3C00054E934FEF000C4A40670C57 +S315E0642060487228054EBACD5C588F601E528375431C +S315E06420702479000111C841F22800123228011010B7 +S315E064208048814880D0814A4066C04A6EFFA66610A1 +S315E0642090486EFFAA487900E526F44EBAFD5E508F95 +S315E06420A04879000251184EB900E01288588F4A40C8 +S315E06420B0674E740645F900E0373A3F0252823F3C88 +S315E06420C0003E4E927142588F7215B28066EC4A6E4B +S315E06420D0FFA6672C70657278206EFFA210BC0004C0 +S315E06420E011400001114100027069727411400003ED +S315E06420F011410004700D42011140000511410006D2 +S315E06421004240558F260E240E47EEFFFA558306822B +S315E0642110FFFFFFAA45FADE383F0033C000011248EC +S315E06421203F3C00013F3C00154EB900E03700508F5C +S315E0642130424142AEFFFA3D41FFFE4A6EFFA66604A7 +S315E064214042806004202EFFA22F002F0B2F032F0264 +S315E06421504E924FEF00104A790001124867D2487AEE +S315E0642160FE5C4EBACCAE588F4CEE0C0CFF904E5ED5 +S315E06421704E7530313233343536373839414243443B +S315E064218045462E424154002A2E2A000000010008EA +S315E06421904D694E542049534F20383835392D322015 +S315E06421A03678360000000000000000000000000001 +S315E06421B0000000FF000400040003000100010006C3 +S315E06421C0000600000003000100015555AAAA000DAF +S315E06421D00000000000E54A9800E54C9A00C000065D +S315E06421E00000000000000000000100094D694E5443 +S315E06421F02049534F2D383835392D32203878380018 +S315E0642200000000000000000000000000000000FF85 +S315E06422100006000600040001000100080008000151 +S315E064222000030001000155555555000D00000000FE +S315E064223000E5511C00E5531E0100000800000000A3 +S315E0642240000000000001000A4D694E542049534FD6 +S315E06422502D383835392D3220387831360000000093 +S315E06422600000000000000000000000FF000D000B0D +S315E064227000080002000200080008000100070001EF +S315E0642280000155555555000D0000000000E55B2042 +S315E064229000E55D220100001000000000000000007F +S315E06422A0000100083678362073797374656D2066AC +S315E06422B06F6E740000000000000000000000000083 +S315E06422C000000000000000FF0004000400030001B9 +S315E06422D000010005000600000003000100015555F9 +S315E06422E0AAAA000D0000000000E56D2400E56F2653 +S315E06422F000C00006000000000000000000010009C4 +S315E06423003878382073797374656D20666F6E7400FF +S315E06423100000000000000000000000000000000073 +S315E0642320000000FF0006000600040001000100074B +S315E06423300008000100030001000155555555000DE4 +S315E06423400000000000E573A800E575AA0100000836 +S315E064235000000000000000000001000A3878313611 +S315E06423602073797374656D20666F6E740000000087 +S315E0642370000000000000000000000000000000FF14 +S315E0642380000D000B000800020002000700080001CF +S315E064239000070001000155555555000D0000000089 +S315E06423A000E57DAC00E57FAE0100001000000000B2 +S315E06423B00000000000004A680100000000000040E0 +S315E06423C000C000004B68010000000000004000C04F +S315E06423D000004C68010000000000004000C00000FE +S315E06423E04D680080000000000020006000400000AE +S315E06423F0FFFF7FFF3FFF1FFF0FFF07FF03FF01FFA5 +S315E064240000FF007F003F001F000F0007000300018C +S315E064241000000000876543210000815400E02F98A6 +S315E06424200401010201010202040202020003040241 +S315E0642430060000000D0A284129626F72742C202878 +S315E06424405229657472792C206F7220284929676E47 +S315E06424506F7265203F00000000E4247400E424F415 +S315E064246000E425740000A6A00000A6A10000A6A2D0 +S315E064247000000000001BF3ECB9E8F8BEFDE1EDE90D +S315E06424803D27080971776572747A75696F70FA2900 +S315E06424900D006173646667686A6B6CF94023002AB1 +S315E06424A079786376626E6D2C2E2D00000020000034 +S315E06424B000000000000000000000000000002D00A5 +S315E06424C000002B000000007F000000000000000018 +S315E06424D0000000003C000028292F2A3738393435BB +S315E06424E036313233302E0D0000000000000000006B +S315E06424F000000000001B313233343536373839306A +S315E06425002560080951574552545A55494F502F286A +S315E06425100D004153444647484A4B4C22215E00260F +S315E064252059584356424E4D3F3A5F00000020000042 +S315E064253000000000000000000000003738002D3481 +S315E064254000362B003200307F0000000000000000FF +S315E0642550000000003E000028292F2A373839343538 +S315E064256036313233302E0D000000000000000000EA +S315E064257000000000001BD3CCA9C8D8AEDDC1CDC92C +S315E06425803D27080951574552545A55494F50DA295F +S315E06425900D004153444647484A4B4CD94023002AF0 +S315E06425A059584356424E4D2C2E2D00000020000013 +S315E06425B000000000000000000000000000002D00A4 +S315E06425C000002B000000007F000000000000000017 +S315E06425D0000000003C000028292F2A3738393435BA +S315E06425E036313233302E0D0000000000000000006A +S315E06425F00000000000E4261000E4269000E42710C2 +S315E064260000E4279000E4279700E4279E000000009A +S315E0642610001B313233343536373839309E27080972 +S315E064262071776572747A75696F70812B0D00617369 +S315E0642630646667686A6B6C948423007E79786376F3 +S315E0642640626E6D2C2E2D000000200000000000005C +S315E0642650000000000000000000002D0000002B00D8 +S315E06426600000007F000000000000000000000000A1 +S315E06426703C000028292F2A3738393435363132334D +S315E0642680302E0D0000000000000000000000000095 +S315E0642690001B2122DD2425262F28293D3F600809D9 +S315E06426A051574552545A55494F509A2A0D00415351 +S315E06426B0444647484A4B4C998E5E003E59584356C9 +S315E06426C0424E4D3B3A5F00000020000000000000EF +S315E06426D0000000000000003738002D3400362B007F +S315E06426E03200307F000000000000000000000000BF +S315E06426F03E000028292F2A373839343536313233CB +S315E0642700302E0D0000000000000000000000000014 +S315E0642710001B313233343536373839309E27080971 +S315E064272051574552545A55494F509A2B0D004153CF +S315E0642730444647484A4B4C998E23003C5958435685 +S315E0642740424E4D2C2E2D00000020000000000000BB +S315E0642750000000000000000000002D0000002B00D7 +S315E06427600000007F000000000000000000000000A0 +S315E06427703C000028292F2A3738393435363132334C +S315E0642780302E0D0000000000000000000000000094 +S315E06427901A40275B285D001A5C277B287D001A4077 +S315E06427A0275B285D000000E427C200E4284200E4D9 +S315E06427B028C200E4294200E4294B00E429540000DD +S315E06427C00000001B313233343536373839302B82EA +S315E06427D0080971776572747975696F7086810D0021 +S315E06427E06173646667686A6B6C948427005C7A7864 +S315E06427F06376626E6D2C2E2D0000002000000000D2 +S315E06428000000000000000000000000002D00000051 +S315E06428102B000000007F00000000000000000000C4 +S315E064282000003C000028292F2A3738393435363100 +S315E06428303233302E0D00000000000000000000007E +S315E06428400000001B2122232425262F28293D3F90C2 +S315E0642850080951574552545955494F508F9A0D00BE +S315E06428604153444647484A4B4C998E2A007C5A5811 +S315E06428704356424E4D3B3A5F0000002000000000A4 +S315E06428800000000000000000000000002D000000D1 +S315E06428902B000000007F0000000000000000000044 +S315E06428A000003E000028292F2A373839343536317E +S315E06428B03233302E0D0000000000000000000000FE +S315E06428C00000001B313233343536373839302B90DB +S315E06428D0080951574552545955494F508F9A0D003E +S315E06428E04153444647484A4B4C998E27007C5A5894 +S315E06428F04356424E4D2C2E2D000000200000000071 +S315E06429000000000000000000000000002D00000050 +S315E06429102B000000007F00000000000000000000C3 +S315E064292000003C000028292F2A37383934353631FF +S315E06429303233302E0D00000000000000000000007D +S315E064294000001A5B1B5D28602B5E001A7B1B7D28EA +S315E06429507E2B40001A5B1B5D28602B5E000000E462 +S315E0642960297A00E429FA00E42A7A00E42AFA00E4FF +S315E06429702B0300E42B0A00E42B3A001B2682222771 +S315E064298028DD8A218785292D0809617A657274793B +S315E064299075696F7001240D007173646667686A6BAC +S315E06429A06C6D9760002377786376626E2C3B3A3D74 +S315E06429B000000020000000000000000000000000AD +S315E06429C0000000002D0000002B000000007F0000E6 +S315E06429D0000000000000000000003C000028292FF1 +S315E06429E02A373839343536313233302E0D0000002B +S315E06429F000000000000000000000001B31323334A8 +S315E0642A00353637383930F85F0809415A45525459F2 +S315E0642A1055494F50022A0D005153444647484A4BA4 +S315E0642A204C4D259C007C57584356424E3F2E2F2BE7 +S315E0642A30000000200000000000000000000000002C +S315E0642A40003738002D3400362B003200307F00002A +S315E0642A50000000000000000000003E000028292F6E +S315E0642A602A373839343536313233302E0D000000AA +S315E0642A7000000000000000000000001B26902227F2 +S315E0642A8028DD8A2180B6292D0809415A45525459D0 +S315E0642A9055494F5001240D005153444647484A4B2B +S315E0642AA04C4D9760002357584356424E2C3B3A3D73 +S315E0642AB000000020000000000000000000000000AC +S315E0642AC0000000002D0000002B000000007F0000E5 +S315E0642AD0000000000000000000003C000028292FF0 +S315E0642AE02A373839343536313233302E0D0000002A +S315E0642AF0000000000000000000001A5B1B5D285C1B +S315E0642B002B40001A7B1B7D2B7E001A5B1B5D285CC9 +S315E0642B102B400061836588698C6F937596205E01AE +S315E0642B205E00418E4F99559A61846589698B6F948D +S315E0642B307581799820B902B9000000E42B1300E4AA +S315E0642B402B2200E42CDE00E42D5E00E42DDE00E4BE +S315E0642B502B5E00E42BDE00E42C5E00000000001B2C +S315E0642B60313233343536373839302D3D0809F1AAF8 +S315E0642B709CA8ABAC9FA0A6A75B5D0D0098A99BAD96 +S315E0642B809A9EA5A1A23B276000239DAEAFE099A4DF +S315E0642B90A32C2E2F0000002000000000000000009F +S315E0642BA000000000000000002D0000002B00000083 +S315E0642BB0007F0000000000000000000000005C00F0 +S315E0642BC00028292F2A373839343536313233302ED6 +S315E0642BD00D00000000000000000000000000001B83 +S315E0642BE02122F924255E262A28295F2B0809F2AAE0 +S315E0642BF08490929387888E8F7B7D0D0080918394F9 +S315E0642C0082868D898A3A40FF007E85959697818C87 +S315E0642C108B3C3E3F00000020000000000000000006 +S315E0642C2000000000000000002D0000002B00000002 +S315E0642C30007F0000000000000000000000007C004F +S315E0642C400028292F2A373839343536313233302E55 +S315E0642C500D00000000000000000000000000001B02 +S315E0642C60313233343536373839302D3D0809F1FBA6 +S315E0642C708490929387888E8F5B5D0D0080918394B8 +S315E0642C8082868D898A3B2760002385959697818C19 +S315E0642C908B2C2E2F000000200000000000000000B6 +S315E0642CA000000000000000002D0000002B00000082 +S315E0642CB0007F0000000000000000000000005C00EF +S315E0642CC00028292F2A373839343536313233302ED5 +S315E0642CD00D00000000000000000000000000001B82 +S315E0642CE0313233343536373839302D3D0809E8E446 +S315E0642CF0E2A8ABE79FE5E6A75B5D0D00E1A99BADC6 +S315E0642D009AE3A5A1A23B276000239DAEAFE999A40F +S315E0642D10A32C2E2F0000002000000000000000001D +S315E0642D2000000000000000002D0000002B00000001 +S315E0642D30007F0000000000000000000000005C006E +S315E0642D400028292F2A373839343536313233302E54 +S315E0642D500D00000000000000000000000000001B01 +S315E0642D602122F924255E262A28295F2B0809F2AA5E +S315E0642D70EB9092EF87EDEE8F7B7D0D00EA91839485 +S315E0642D8082EC8D898A3A40FF007E859596F0818C47 +S315E0642D908B3C3E3F00000020000000000000000085 +S315E0642DA000000000000000002D0000002B00000081 +S315E0642DB0007F0000000000000000000000007C00CE +S315E0642DC00028292F2A373839343536313233302ED4 +S315E0642DD00D00000000000000000000000000001B81 +S315E0642DE0313233343536373839302D3D0809F1FB25 +S315E0642DF0EB9092EF87EDEE8F5B5D0D00EA91839445 +S315E0642E0082EC8D898A3B27600023859596F0818CD8 +S315E0642E108B2C2E2F00000020000000000000000034 +S315E0642E2000000000000000002D0000002B00000000 +S315E0642E30007F0000000000000000000000005C006D +S315E0642E400028292F2A373839343536313233302E53 +S315E0642E500D0000000000000000000000000000E437 +S315E0642E602E7A00E42EFA00E42F7A00E42FFA00E4E6 +S315E0642E70307A00E430FA00000000001B313233346B +S315E0642E803536373839302D3D08097177657274798E +S315E0642E9075696F705B5D0D006173646667686A6B24 +S315E0642EA06C3B2760005C7A786376626E6D2C2E2FBD +S315E0642EB000000020000000000000000000000000A8 +S315E0642EC0000000002D0000002B000000007F0000E1 +S315E0642ED00000000000000000000000000028292F28 +S315E0642EE02A373839343536313233302E0D00000026 +S315E0642EF000000000000000000000001B21402324C5 +S315E0642F00255E262A28295F2B0809515745525459CC +S315E0642F1055494F507B7D0D004153444647484A4BE3 +S315E0642F204C3A227E007C5A584356424E4D3C3E3FD4 +S315E0642F300000002000000000000000000000000027 +S315E0642F40003738002D3400362B003200307F000025 +S315E0642F500000000000000000000000000028292FA7 +S315E0642F602A373839343536313233302E0D000000A5 +S315E0642F7000000000000000000000001B3132333422 +S315E0642F803536373839302D3D08095157455254594D +S315E0642F9055494F505B5D0D004153444647484A4BA3 +S315E0642FA04C3B2760005C5A584356424E4D2C2E2FBC +S315E0642FB000000020000000000000000000000000A7 +S315E0642FC0000000002D0000002B000000007F0000E0 +S315E0642FD00000000000000000000000000028292F27 +S315E0642FE02A373839343536313233302E0D00000025 +S315E0642FF000000000000000000000001B232D2F22CB +S315E06430003A2C2E5F3F25213B0809E9F6F3EAE5ED24 +S315E0643010E3F8F9E7F5FA0D00F4FBE2E0EFF0EEEB46 +S315E0643020E4E6FD29003CFFF7F1ECE8F2FCE1FEB0F2 +S315E06430300000002000000000000000000000000026 +S315E0643040000000002D0000002B000000007F00005F +S315E0643050000000000000000000003C000028292F6A +S315E06430602A373839343536313233302E0D000000A4 +S315E064307000000000000000000000001B3132333421 +S315E06430803536373839302F5CBC09C9D6D3CAC5CD95 +S315E0643090C3D8D9C7D5DA0D00D4DBC2C0CFD0CECB86 +S315E06430A0C4C6DD28007CDFD7D1CCC8D2DCC1DEB0B3 +S315E06430B000000020000000000000000000000000A6 +S315E06430C0000000002D0000002B000000007F0000DF +S315E06430D0000000000000000000003E000028292FE8 +S315E06430E02A373839343536313233302E0D00000024 +S315E06430F000000000000000000000001B31323334A1 +S315E06431003536373839303F660809C9D6D3CAC5CDAE +S315E0643110C3D8D9C7D5DA0D00D4DBC2C0CFD0CECB05 +S315E0643120C4C6DD29003CDFD7D1CCC8D2DCC1DEB071 +S315E06431300000002000000000000000000000000025 +S315E0643140000000002D0000002B000000007F00005E +S315E0643150000000000000000000003C000028292F69 +S315E06431602A373839343536313233302E0D000000A3 +S315E06431700000000000000000000000E4319600E476 +S315E0643180321600E4329600E4331600E4332B000092 +S315E0643190A6A300000000001B3132333435363738DD +S315E06431A03930275E080971776572747A75696F706C +S315E06431B081B90D006173646667686A6B6C94842494 +S315E06431C0002479786376626E6D2C2E2D00000020E3 +S315E06431D000000000000000000000000000000000A5 +S315E06431E02D0000002B000000007F000000000000BE +S315E06431F00000000000003C000028292F2A373839F7 +S315E0643200343536313233302E0D00000000000000D4 +S315E0643210000000000000001B2B222A8725262F28A9 +S315E0643220293D3F60080951574552545A55494F5014 +S315E06432308A210D004153444647484A4B4C82859C5B +S315E0643240009C59584356424E4D3B3A5F000000207D +S315E064325000000000000000000000000000373800B5 +S315E06432602D3400362B003200307F00000000000071 +S315E06432700000000000003E000028292F2A37383974 +S315E0643280343536313233302E0D0000000000000054 +S315E0643290000000000000001B313233343536373825 +S315E06432A03930275E080951574552545A55494F50AB +S315E06432B081B90D004153444647484A4B4C948424B3 +S315E06432C0002359584356424E4D2C2E2D00000020C3 +S315E06432D000000000000000000000000000000000A4 +S315E06432E02D0000002B000000007F000000000000BD +S315E06432F000000000000023000028292F2A3738390F +S315E0643300343536313233302E0D00000000000000D3 +S315E0643310000000000000027C034004230D7E1A5B7B +S315E06433201B5D287B297D2B5C605C001A7B1B7D0022 +S315E064333000E4334C00E433CC00E4344C0000A6A44F +S315E06433400000A6A50000A6A600000000001B31321E +S315E064335033343536373839302D3D0809717765723F +S315E0643360747975696F705B5D0D0061736466676837 +S315E06433706A6B6C3B2760005C7A786376626E6D2C70 +S315E06433802E2F000000200000000000000000000076 +S315E06433900000000000002D0000002B000000007F0C +S315E06433A000000000000000000000000000000028AB +S315E06433B0292F2A373839343536313233302E0D00F9 +S315E06433C0000000000000000000000000001B214037 +S315E06433D02324255E262A28295F2B0809515745525E +S315E06433E0545955494F507B7D0D00415344464748F7 +S315E06433F04A4B4C3A227E007C5A584356424E4D3CE8 +S315E06434003E3F0000002000000000000000000000D5 +S315E06434100000003738002D3400362B003200307F50 +S315E0643420000000000000000000000000000000282A +S315E0643430292F2A373839343536313233302E0D0078 +S315E0643440000000000000000000000000001B3132B4 +S315E064345033343536373839302D3D080951574552BE +S315E0643460545955494F505B5D0D00415344464748B6 +S315E06434704A4B4C3B2760005C5A584356424E4D2CAF +S315E06434802E2F000000200000000000000000000075 +S315E06434900000000000002D0000002B000000007F0B +S315E06434A000000000000000000000000000000028AA +S315E06434B0292F2A373839343536313233302E0D00F8 +S315E06434C000000000000000000000000000E0A1E64B +S315E06434D000E0A1BC00E0A19200E0A17600E0A51CBA +S315E06434E000E09F8800E09F8800E0A16800E0A568AE +S315E06434F000E0A4E400E0A45000E0A54200E0A2FEFF +S315E064350000E0A04400E0A05200E0A42C00E0A26643 +S315E064351000E0A27A00E09F8800E09F8800E09F8850 +S315E064352000E0A08400E0A10200E0A3FA00E09F8846 +S315E064353000E09F8800E0A38600E0A06000E0A0725F +S315E064354000E09F8800E09F8800E09F8800E09F8815 +S315E064355000E0A0AE00E0A0C000E0A32400E0A17615 +S315E064356000E0A0E400E0A2D600E0A2D600E0A2D6A5 +S315E064357000E0A0D200E0DC8E000000E0ADC4800094 +S315E064358000E0AD06810100E0AE20820000E0AD24FB +S315E0643590820100E0AD54830100E0AE3C000100E04E +S315E06435A0AD84800000E0ADE8800000E0AE9C81027E +S315E06435B000E0B016800200E0ABE2800000E0C04EBE +S315E06435C0000000E0C04E000000E0EEFC000100E018 +S315E06435D0C04E000000E0ABFA810000E0AC16830068 +S315E06435E000E0AC32820000E0AC4A820000E0BF5CFE +S315E06435F0000400E0C04E000000E0C04E000000E0C1 +S315E0643600C04E000000E0C04E000000E0EF30000075 +S315E064361000E0EEEE000200E00D10000200E0C04EB5 +S315E0643620000000E0C04E000000E0C04E000000E094 +S315E0643630C04E000000E0C04E000000E0C04E000056 +S315E064364000E0C04E000000E0C04E000000E0C04E66 +S315E0643650000000E0C04E000000E0C04E000000E064 +S315E0643660C04E000000E0C04E000000E0C04E000026 +S315E064367000E0F43E000000E0F45C000100E0F4D415 +S315E0643680000000E0F4EE000100E0C04E000000E05F +S315E0643690EEE2000000E0C048000000E0DC960003D3 +S315E06436A000E0C04E000000E0C04E000000E0C04E06 +S315E06436B0000000E0C04E000000E0CD74000300E0CE +S315E06436C0C04E000000E0C04E000000E0E258000298 +S315E06436D000E0E934000200E0E812000200E0BC2207 +S315E06436E0000300E0B5BE000300E0B760000100E05F +S315E06436F0D3BA820500E0D404820500E0B942000250 +S315E064370000E0D30C810400E0EE04000400E0BE1C9B +S315E0643710000300E0B3EC000200E0B390000200E0D6 +S315E0643720E14A000300E0BF2A000200E0BD24000293 +S315E064373000E0BD80000500E0D732000700E0DBAAC8 +S315E0643740000100E0C04E000000E0ED42000300E04E +S315E0643750EA6A000000E0C04E000000E0C04E0000EF +S315E064376000E0C04E000000E0C04E000000E0C04E45 +S315E0643770000000E0C04E000000E0EB9E000500E0C3 +S315E0643780DFC60004FFFFFFFF2E202020202020203C +S315E0643790202020000000000000000000000000007F +S315E06437A000E437C000E437C800E437D000E437D833 +S315E06437B000E437E000E437E800E437F000000000B6 +S315E06437C000E0FA6800E437F800E0FA6B00E447FCEE +S315E06437D000E0FA6E00E4580000E0FA7100E4680480 +S315E06437E000E0FA7400E4780800E0FA7700E4880C14 +S315E06437F000E0FA7A00E4981000E4A81400000000FF +S315E0643800000000000000000000000000000000006E +S315E0643810000000000000000000E4A82000000000B2 +S315E064382000000000000000000000000000E4A82C96 +S315E0643830000000000000000000000000000000003E +S315E0643840000000000000000000000000000000002E +S315E0643850000000000000000000000000000000001E +S315E064386000E4A8380000000000E4A844000000007A +S315E064387000000000000000000000000000E4A86012 +S315E0643880000000000000000000E4A86C00000000F6 +S315E064389000E4A878000000000000000000000000DA +S315E06438A000000000000000000000000000000000CE +S315E06438B000000000000000000000000000000000BE +S315E06438C000000000000000000000000000000000AE +S315E06438D0000000000000000000000000000000009E +S315E06438E000000000000000000000000000E4A8847E +S315E06438F00000000000E4A890000000000000000062 +S315E064390000E4A89C00000000000000000000000045 +S315E064391000E4A8A800000000000000000000000029 +S315E06439200000000000E4A8B400000000000000000D +S315E0643930000000000000000000E4A8C800000000E9 +S315E06439400000000000E4A8D40000000000000000CD +S315E064395000000000000000000000000000E4A8E0B1 +S315E0643960000000000000000000000000000000000D +S315E064397000000000000000000000000000000000FD +S315E064398000000000000000000000000000000000ED +S315E0643990000000000000000000E4A8EC0000000065 +S315E06439A0000000000000000000E4A8F80000000049 +S315E06439B000000000000000000000000000000000BD +S315E06439C000000000000000000000000000000000AD +S315E06439D000000000000000000000000000E4A9040C +S315E06439E0000000000000000000000000000000008D +S315E06439F0000000000000000000000000000000007D +S315E0643A0000E4A918000000000000000000000000C7 +S315E0643A10000000000000000000E4A92400000000AB +S315E0643A20000000000000000000000000000000004C +S315E0643A300000000000E4A93000E4A93C00000000B6 +S315E0643A4000E4A94800000000000000000000000057 +S315E0643A50000000000000000000000000000000001C +S315E0643A60000000000000000000000000000000000C +S315E0643A7000E4A95400E4A96000000000000000002E +S315E0643A8000000000000000000000000000000000EC +S315E0643A900000000000E4A96C0000000000000000E3 +S315E0643AA000000000000000000000000000000000CC +S315E0643AB000000000000000000000000000000000BC +S315E0643AC000000000000000000000000000000000AC +S315E0643AD0000000000000000000000000000000009C +S315E0643AE0000000000000000000000000000000008C +S315E0643AF000000000000000000000000000E4A97877 +S315E0643B00000000000000000000000000000000006B +S315E0643B1000E4A9840000000000000000000000004A +S315E0643B20000000000000000000000000000000004B +S315E0643B300000000000E4A99000000000000000001E +S315E0643B4000E4A99C00000000000000000000000002 +S315E0643B5000E4A9A8000000000000000000000000E6 +S315E0643B60000000000000000000000000000000000B +S315E0643B7000000000000000000000000000000000FB +S315E0643B8000000000000000000000000000E4A9B4AA +S315E0643B9000000000000000000000000000E4A9C08E +S315E0643BA000000000000000000000000000000000CB +S315E0643BB0000000000000000000E4A9CC0000000062 +S315E0643BC000000000000000000000000000000000AB +S315E0643BD000E4A9D800000000000000000000000036 +S315E0643BE00000000000E4A9E400000000000000001A +S315E0643BF000E4A9F8000000000000000000000000F6 +S315E0643C00000000000000000000E4AA0400000000D8 +S315E0643C10000000000000000000000000000000005A +S315E0643C200000000000E4AA1000E4AA1C00E4AA284C +S315E0643C30000000000000000000E4AA340000000078 +S315E0643C4000000000000000000000000000E4AA405C +S315E0643C50000000000000000000000000000000001A +S315E0643C6000000000000000000000000000E4AA4C30 +S315E0643C7000000000000000000000000000E4AA5814 +S315E0643C800000000000E4AA640000000000000000F8 +S315E0643C900000000000E4AA780000000000000000D4 +S315E0643CA00000000000E4AA840000000000E4AA909A +S315E0643CB000E4AA9C00000000000000000000000090 +S315E0643CC000000000000000000000000000000000AA +S315E0643CD0000000000000000000000000000000009A +S315E0643CE0000000000000000000000000000000008A +S315E0643CF0000000000000000000000000000000007A +S315E0643D000000000000000000000000000000000069 +S315E0643D100000000000000000000000000000000059 +S315E0643D20000000000000000000E4AAA80000000013 +S315E0643D300000000000000000000000000000000039 +S315E0643D400000000000000000000000000000000029 +S315E0643D500000000000000000000000000000000019 +S315E0643D600000000000000000000000000000000009 +S315E0643D7000000000000000000000000000000000F9 +S315E0643D8000000000000000000000000000E4AABC9F +S315E0643D9000000000000000000000000000E4AAC883 +S315E0643DA000000000000000000000000000000000C9 +S315E0643DB000000000000000000000000000000000B9 +S315E0643DC000000000000000000000000000000000A9 +S315E0643DD00000000000E4AAD4000000000000000037 +S315E0643DE00000000000000000000000000000000089 +S315E0643DF00000000000000000000000000000000079 +S315E0643E000000000000000000000000000000000068 +S315E0643E1000E4AAE000E4AAEC000000000000000070 +S315E0643E20000000000000000000E4AAF800000000C2 +S315E0643E300000000000000000000000000000000038 +S315E0643E400000000000E4AB0400E4AB1800000000EE +S315E0643E500000000000000000000000000000000018 +S315E0643E600000000000000000000000000000000008 +S315E0643E7000E4AB2400000000000000000000000045 +S315E0643E800000000000E4AB30000000000000000029 +S315E0643E9000000000000000000000000000000000D8 +S315E0643EA000000000000000000000000000000000C8 +S315E0643EB000000000000000000000000000000000B8 +S315E0643EC00000000000E4AB3C0000000000000000DD +S315E0643ED00000000000E4AB480000000000000000C1 +S315E0643EE000000000000000000000000000E4AB54A5 +S315E0643EF00000000000E4AB6000E4AB6C000000008E +S315E0643F0000E4AB7800000000000000000000000060 +S315E0643F100000000000000000000000000000000057 +S315E0643F200000000000000000000000000000000047 +S315E0643F300000000000000000000000000000000037 +S315E0643F400000000000000000000000000000000027 +S315E0643F500000000000000000000000000000000017 +S315E0643F600000000000E4AB840000000000000000F4 +S315E0643F7000E4AB90000000000000000000000000D8 +S315E0643F8000000000000000000000000000000000E7 +S315E0643F9000000000000000000000000000000000D7 +S315E0643FA000000000000000000000000000000000C7 +S315E0643FB000000000000000000000000000000000B7 +S315E0643FC000000000000000000000000000000000A7 +S315E0643FD00000000000000000000000000000000097 +S315E0643FE00000000000000000000000000000000087 +S315E0643FF00000000000000000000000000000000077 +S315E06440000000000000000000000000000000000066 +S315E06440100000000000000000000000000000000056 +S315E064402000E4AB9C0000000000000000000000001B +S315E06440300000000000000000000000000000000036 +S315E0644040000000000000000000E4ABA800000000EF +S315E06440500000000000000000000000000000000016 +S315E06440600000000000000000000000000000000006 +S315E064407000000000000000000000000000000000F6 +S315E064408000000000000000000000000000000000E6 +S315E064409000000000000000000000000000E4ABB493 +S315E06440A000000000000000000000000000000000C6 +S315E06440B000000000000000000000000000000000B6 +S315E06440C000E4ABC80000000000000000000000004F +S315E06440D00000000000000000000000000000000096 +S315E06440E00000000000000000000000000000000086 +S315E06440F000000000000000000000000000E4ABD413 +S315E06441000000000000000000000000000000000065 +S315E064411000000000000000000000000000E4ABE8DE +S315E06441200000000000E4ABF400E4AC000000000032 +S315E064413000000000000000000000000000E4AC0C99 +S315E064414000000000000000000000000000E4AC187D +S315E06441500000000000000000000000000000000015 +S315E06441600000000000E4AC24000000000000000051 +S315E064417000E4AC3000E4AC44000000000000000061 +S315E06441800000000000E4AC50000000000000000005 +S315E06441900000000000E4AC5C0000000000000000E9 +S315E06441A0000000000000000000E4AC6800E4AC7CC1 +S315E06441B000E4AC880000000000000000000000009D +S315E06441C0000000000000000000E4AC940000000081 +S315E06441D000000000000000000000000000E4ACA065 +S315E06441E000E4ACAC00E4ACB8000000000000000001 +S315E06441F00000000000000000000000000000000075 +S315E06442000000000000000000000000000000000064 +S315E06442100000000000000000000000000000000054 +S315E064422000E4ACC4000000000000000000000000F0 +S315E06442300000000000E4ACD000E4ACDC0000000068 +S315E064424000E4ACE8000000000000000000000000AC +S315E06442500000000000000000000000000000000014 +S315E06442600000000000000000000000000000000004 +S315E06442700000000000E4ACF40000000000E4AD00DF +S315E064428000000000000000000000000000000000E4 +S315E064429000000000000000000000000000000000D4 +S315E06442A000E4AD0C0000000000E4AD18000000007E +S315E06442B000000000000000000000000000000000B4 +S315E06442C000000000000000000000000000000000A4 +S315E06442D00000000000000000000000000000000094 +S315E06442E00000000000000000000000000000000084 +S315E06442F000E4AD24000000000000000000000000BF +S315E064430000E4AD30000000000000000000E4AD3CD5 +S315E06443100000000000000000000000000000000053 +S315E06443200000000000000000000000000000000043 +S315E064433000E4AD5000000000000000000000000052 +S315E06443400000000000000000000000000000000023 +S315E064435000000000000000000000000000E4AD5C26 +S315E06443600000000000000000000000000000000003 +S315E0644370000000000000000000E4AD6800000000FA +S315E06443800000000000E4AD740000000000000000DE +S315E064439000000000000000000000000000000000D3 +S315E06443A0000000000000000000E4AD8000000000B2 +S315E06443B000000000000000000000000000000000B3 +S315E06443C000E4AD8C00000000000000000000000086 +S315E06443D0000000000000000000E4AD98000000006A +S315E06443E00000000000000000000000000000000083 +S315E06443F0000000000000000000E4ADA4000000003E +S315E06444000000000000000000000000000000000062 +S315E06444100000000000000000000000000000000052 +S315E06444200000000000000000000000000000000042 +S315E064443000000000000000000000000000E4ADB0F1 +S315E06444400000000000000000000000000000000022 +S315E0644450000000000000000000E4ADC400000000BD +S315E06444600000000000000000000000000000000002 +S315E064447000000000000000000000000000E4ADD091 +S315E06444800000000000E4ADDC00E4ADE800000000FC +S315E064449000000000000000000000000000000000D2 +S315E06444A0000000000000000000E4ADF4000000003D +S315E06444B000000000000000000000000000E4AE0020 +S315E06444C0000000000000000000E4AE1400000000FC +S315E06444D00000000000000000000000000000000092 +S315E06444E00000000000000000000000000000000082 +S315E06444F00000000000000000000000000000000072 +S315E064450000E4AE2000E4AE2C0000000000E4AE3827 +S315E06445100000000000000000000000000000000051 +S315E06445200000000000E4AE4400E4AE500000000089 +S315E06445300000000000E4AE5C000000000000000043 +S315E06445400000000000E4AE68000000000000000027 +S315E06445500000000000000000000000000000000011 +S315E064456000E4AE7400E4AE800000000000000000E9 +S315E0644570000000000000000000E4AE8C00000000D3 +S315E064458000E4AE98000000000000000000000000B7 +S315E064459000000000000000000000000000000000D1 +S315E06445A000000000000000000000000000000000C1 +S315E06445B000E4AEA40000000000000000000000007B +S315E06445C000E4AEB00000000000000000000000005F +S315E06445D00000000000000000000000000000000091 +S315E06445E00000000000000000000000000000000081 +S315E06445F00000000000000000000000000000000071 +S315E06446000000000000000000000000000000000060 +S315E06446100000000000000000000000000000000050 +S315E06446200000000000000000000000000000000040 +S315E06446300000000000000000000000000000000030 +S315E06446400000000000000000000000000000000020 +S315E06446500000000000000000000000000000000010 +S315E06446600000000000000000000000000000000000 +S315E064467000000000000000000000000000000000F0 +S315E064468000E4AEBC00000000000000000000000092 +S315E064469000E4AEC800000000000000000000000076 +S315E06446A000000000000000000000000000000000C0 +S315E06446B000000000000000000000000000000000B0 +S315E06446C00000000000E4AED400000000000000003A +S315E06446D00000000000000000000000000000000090 +S315E06446E00000000000000000000000000000000080 +S315E06446F00000000000E4AEE00000000000000000FE +S315E06447000000000000E4AEEC00E4AEF80000000057 +S315E0644710000000000000000000000000000000004F +S315E0644720000000000000000000000000000000003F +S315E064473000E4AF040000000000E4AF1000000000F5 +S315E0644740000000000000000000000000000000001F +S315E0644750000000000000000000E4AF1C0000000060 +S315E064476000000000000000000000000000000000FF +S315E06447700000000000E4AF28000000000000000034 +S315E064478000000000000000000000000000000000DF +S315E064479000E4AF34000000000000000000E4AF4035 +S315E06447A00000000000E4AF4C0000000000000000E0 +S315E06447B000000000000000000000000000000000AF +S315E06447C00000000000E4AF580000000000000000B4 +S315E06447D000000000000000000000000000E4AF6498 +S315E06447E00000000000E4AF7000000000000000007C +S315E06447F000000000000000000000000000E4AF7C60 +S315E0644800000000000000000000000000000000005E +S315E064481000000000000000000000000000E4AF8833 +S315E0644820000000000000000000000000000000003E +S315E064483000E4AF9400000000000000000000000007 +S315E0644840000000000000000000000000000000001E +S315E0644850000000000000000000000000000000000E +S315E06448600000000000E4AFA00000000000E4AFAC8C +S315E064487000000000000000000000000000000000EE +S315E064488000E4AFC8000000000000000000E4AFD41C +S315E06448900000000000E4AFE000000000000000005B +S315E06448A000000000000000000000000000000000BE +S315E06448B000000000000000000000000000000000AE +S315E06448C0000000000000000000000000000000009E +S315E06448D0000000000000000000000000000000008E +S315E06448E0000000000000000000000000000000007E +S315E06448F000E4AFEC0000000000E4AFF80000000064 +S315E06449000000000000E4B0040000000000000000C5 +S315E06449100000000000E4B0100000000000000000A9 +S315E0644920000000000000000000E4B01C000000008D +S315E064493000000000000000000000000000E4B03069 +S315E0644940000000000000000000E4B03C000000004D +S315E0644950000000000000000000000000000000000D +S315E064496000E4B04800000000000000000000000021 +S315E064497000000000000000000000000000000000ED +S315E064498000000000000000000000000000000000DD +S315E064499000000000000000000000000000E4B054E5 +S315E06449A000000000000000000000000000E4B060C9 +S315E06449B000000000000000000000000000000000AD +S315E06449C0000000000000000000000000000000009D +S315E06449D0000000000000000000000000000000008D +S315E06449E000E4B06C0000000000000000000000007D +S315E06449F0000000000000000000000000000000006D +S315E0644A000000000000E4B080000000000000000048 +S315E0644A1000000000000000000000000000E4B08C2C +S315E0644A20000000000000000000000000000000003C +S315E0644A30000000000000000000E4B09800E4B0A4C8 +S315E0644A400000000000E4B0B00000000000000000D8 +S315E0644A50000000000000000000000000000000000C +S315E0644A6000000000000000000000000000000000FC +S315E0644A700000000000E4B0BC00E4B0C80000000040 +S315E0644A8000000000000000000000000000000000DC +S315E0644A90000000000000000000E4B0D40000000064 +S315E0644AA000000000000000000000000000000000BC +S315E0644AB000000000000000000000000000000000AC +S315E0644AC0000000000000000000000000000000009C +S315E0644AD0000000000000000000000000000000008C +S315E0644AE0000000000000000000000000000000007C +S315E0644AF0000000000000000000000000000000006C +S315E0644B0000E4B0E0000000000000000000000000E7 +S315E0644B100000000000E4B0EC0000000000000000CB +S315E0644B20000000000000000000000000000000003B +S315E0644B30000000000000000000E4B0F8000000009F +S315E0644B400000000000E4B104000000000000000082 +S315E0644B500000000000E4B110000000000000000066 +S315E0644B6000000000000000000000000000000000FB +S315E0644B7000000000000000000000000000000000EB +S315E0644B8000000000000000000000000000000000DB +S315E0644B9000E4B11C0000000000000000000000001A +S315E0644BA000E4B128000000000000000000000000FE +S315E0644BB000000000000000000000000000E4B134E2 +S315E0644BC0000000000000000000000000000000009B +S315E0644BD00000000000E4B1400000000000000000B6 +S315E0644BE0000000000000000000E4B14C000000009A +S315E0644BF00000000000E4B160000000000000000076 +S315E0644C0000000000000000000000000000E4B16C59 +S315E0644C10000000000000000000000000000000004A +S315E0644C20000000000000000000E4B17800E4B18414 +S315E0644C3000E4B190000000000000000000E4B19CD4 +S315E0644C40000000000000000000000000000000001A +S315E0644C5000E4B1A8000000000000000000000000CD +S315E0644C6000000000000000000000000000000000FA +S315E0644C7000E4B1B4000000000000000000000000A1 +S315E0644C8000E4B1C00000000000E4B1CC0000000024 +S315E0644C90000000000000000000E4B1E00000000055 +S315E0644CA0000000000000000000E4B1EC0000000039 +S315E0644CB000E4B1F800E4B204000000000000000083 +S315E0644CC0000000000000000000000000000000009A +S315E0644CD0000000000000000000000000000000008A +S315E0644CE0000000000000000000000000000000007A +S315E0644CF0000000000000000000000000000000006A +S315E0644D000000000000000000000000000000000059 +S315E0644D100000000000000000000000000000000049 +S315E0644D2000000000000000000000000000E4B21093 +S315E0644D300000000000000000000000000000000029 +S315E0644D400000000000000000000000000000000019 +S315E0644D500000000000000000000000000000000009 +S315E0644D6000000000000000000000000000000000F9 +S315E0644D7000000000000000000000000000000000E9 +S315E0644D8000000000000000000000000000000000D9 +S315E0644D9000E4B2240000000000000000000000000F +S315E0644DA000E4B230000000000000000000000000F3 +S315E0644DB000000000000000000000000000000000A9 +S315E0644DC00000000000000000000000000000000099 +S315E0644DD0000000000000000000E4B23C00000000B7 +S315E0644DE00000000000000000000000000000000079 +S315E0644DF00000000000000000000000000000000069 +S315E0644E000000000000000000000000000000000058 +S315E0644E100000000000E4B24800E4B2540000000080 +S315E0644E2000000000000000000000000000E4B26042 +S315E0644E300000000000000000000000000000000028 +S315E0644E40000000000000000000E4B26C00E4B28000 +S315E0644E500000000000000000000000000000000008 +S315E0644E6000000000000000000000000000000000F8 +S315E0644E700000000000E4B28C0000000000000000C6 +S315E0644E80000000000000000000E4B29800000000AA +S315E0644E9000000000000000000000000000000000C8 +S315E0644EA000000000000000000000000000000000B8 +S315E0644EB000000000000000000000000000000000A8 +S315E0644EC0000000000000000000E4B2A4000000005E +S315E0644ED0000000000000000000E4B2B00000000042 +S315E0644EE00000000000000000000000000000000078 +S315E0644EF000E4B2BC0000000000E4B2C800E4B2D44E +S315E0644F000000000000E4B2E00000000000000000E1 +S315E0644F100000000000000000000000000000000047 +S315E0644F200000000000000000000000000000000037 +S315E0644F300000000000000000000000000000000027 +S315E0644F400000000000000000000000000000000017 +S315E0644F500000000000000000000000000000000007 +S315E0644F60000000000000000000E4B2EC0000000075 +S315E0644F700000000000E4B2F8000000000000000059 +S315E0644F8000000000000000000000000000000000D7 +S315E0644F9000000000000000000000000000000000C7 +S315E0644FA000000000000000000000000000000000B7 +S315E0644FB000000000000000000000000000000000A7 +S315E0644FC00000000000000000000000000000000097 +S315E0644FD00000000000000000000000000000000087 +S315E0644FE00000000000000000000000000000000077 +S315E0644FF00000000000000000000000000000000067 +S315E06450000000000000000000000000000000000056 +S315E06450100000000000000000000000000000000046 +S315E06450200000000000E4B30400000000000000009B +S315E06450300000000000000000000000000000000026 +S315E064504000000000000000000000000000E4B3106F +S315E06450500000000000000000000000000000000006 +S315E064506000000000000000000000000000000000F6 +S315E064507000000000000000000000000000000000E6 +S315E064508000000000000000000000000000000000D6 +S315E064509000000000000000000000000000000000C6 +S315E06450A000E4B31C00000000000000000000000003 +S315E06450B000000000000000000000000000000000A6 +S315E06450C00000000000E4B3300000000000000000CF +S315E06450D00000000000000000000000000000000086 +S315E06450E00000000000000000000000000000000076 +S315E06450F00000000000000000000000000000000066 +S315E064510000E4B33C00000000000000000000000082 +S315E06451100000000000000000000000000000000045 +S315E064512000E4B3500000000000E4B35C00E4B3685C +S315E06451300000000000000000000000000000000025 +S315E064514000E4B3740000000000000000000000000A +S315E064515000E4B380000000000000000000000000EE +S315E0645160000000000000000000E4B38C00000000D2 +S315E06451700000000000E4B39800E4B3AC0000000073 +S315E0645180000000000000000000E4B3B80000000086 +S315E0645190000000000000000000E4B3C4000000006A +S315E06451A000000000000000000000000000E4B3D04E +S315E06451B000E4B3E400E4B3F00000000000000000A3 +S315E06451C000000000000000000000000000E4B3FC02 +S315E06451D00000000000000000000000000000000085 +S315E06451E000E4B40800E4B41400E4B4200000000071 +S315E06451F00000000000000000000000000000000065 +S315E06452000000000000000000000000000000000054 +S315E06452100000000000000000000000000000000044 +S315E06452200000000000E4B42C000000000000000070 +S315E0645230000000000000000000E4B43800E4B44478 +S315E06452400000000000E4B45000000000000000002C +S315E06452500000000000000000000000000000000004 +S315E064526000000000000000000000000000000000F4 +S315E0645270000000000000000000E4B45C00000000F0 +S315E064528000E4B468000000000000000000000000D4 +S315E064529000000000000000000000000000000000C4 +S315E06452A00000000000E4B4740000000000E4B48090 +S315E06452B000000000000000000000000000000000A4 +S315E06452C00000000000000000000000000000000094 +S315E06452D00000000000000000000000000000000084 +S315E06452E00000000000000000000000000000000074 +S315E06452F00000000000E4B48C000000000000000040 +S315E06453000000000000E4B498000000000000000023 +S315E064531000E4B4A400000000000000000000000007 +S315E06453200000000000000000000000000000000033 +S315E06453300000000000E4B4B80000000000000000D3 +S315E06453400000000000000000000000000000000013 +S315E06453500000000000000000000000000000000003 +S315E064536000E4B4C400000000000000000000000097 +S315E064537000000000000000000000000000E4B4D07B +S315E0645380000000000000000000E4B4DC000000005F +S315E064539000000000000000000000000000000000C3 +S315E06453A000000000000000000000000000E4B4E833 +S315E06453B000000000000000000000000000000000A3 +S315E06453C00000000000E4B4F4000000000000000007 +S315E06453D000000000000000000000000000E4B500EA +S315E06453E00000000000000000000000000000000073 +S315E06453F000000000000000000000000000E4B50CBE +S315E06454000000000000000000000000000000000052 +S315E06454100000000000000000000000000000000042 +S315E06454200000000000000000000000000000000032 +S315E06454300000000000000000000000000000000022 +S315E064544000E4B51800000000000000000000000061 +S315E064545000000000000000000000000000E4B52C3D +S315E064546000000000000000000000000000000000F2 +S315E064547000000000000000000000000000000000E2 +S315E064548000E4B5380000000000E4B54400E4B5503B +S315E064549000000000000000000000000000000000C2 +S315E06454A000000000000000000000000000E4B55CBD +S315E06454B000000000000000000000000000000000A2 +S315E06454C000E4B56800000000000000000000000091 +S315E06454D00000000000000000000000000000000082 +S315E06454E00000000000000000000000000000000072 +S315E06454F00000000000000000000000000000000062 +S315E06455000000000000E4B57C00E4B588000000001B +S315E064551000E4B59400000000000000000000000014 +S315E0645520000000000000000000E4B5A000E4B5ACB3 +S315E0645530000000000000000000E4B5B800000000D0 +S315E0645540000000000000000000E4B5C400000000B4 +S315E06455500000000000000000000000000000000001 +S315E06455600000000000E4B5D000E4B5DC0000000013 +S315E064557000000000000000000000000000E4B5E860 +S315E06455800000000000E4B5F4000000000000000044 +S315E064559000000000000000000000000000000000C1 +S315E06455A000000000000000000000000000000000B1 +S315E06455B00000000000E4B600000000000000000007 +S315E06455C00000000000E4B60C0000000000000000EB +S315E06455D00000000000000000000000000000000081 +S315E06455E00000000000000000000000000000000071 +S315E06455F00000000000000000000000000000000061 +S315E06456000000000000000000000000000000000050 +S315E06456100000000000000000000000000000000040 +S315E06456200000000000000000000000000000000030 +S315E06456300000000000000000000000000000000020 +S315E06456400000000000000000000000000000000010 +S315E06456500000000000000000000000000000000000 +S315E064566000000000000000000000000000000000F0 +S315E064567000000000000000000000000000000000E0 +S315E06456800000000000E4B61800000000000000001E +S315E06456900000000000E4B624000000000000000002 +S315E06456A000000000000000000000000000000000B0 +S315E06456B000000000000000000000000000000000A0 +S315E06456C0000000000000000000E4B63000000000C6 +S315E06456D00000000000000000000000000000000080 +S315E06456E00000000000000000000000000000000070 +S315E06456F0000000000000000000E4B63C000000008A +S315E0645700000000000000000000E4B64800E4B6547F +S315E0645710000000000000000000000000000000003F +S315E0645720000000000000000000000000000000002F +S315E06457300000000000E4B6600000000000E4B66C1F +S315E0645740000000000000000000000000000000000F +S315E064575000000000000000000000000000E4B678ED +S315E064576000000000000000000000000000000000EF +S315E0645770000000000000000000E4B68400000000C1 +S315E064578000000000000000000000000000000000CF +S315E06457900000000000E4B690000000000000000095 +S315E06457A000E4B69C0000000000E4B6A80000000037 +S315E06457B0000000000000000000000000000000009F +S315E06457C0000000000000000000E4B6B40000000041 +S315E06457D0000000000000000000000000000000007F +S315E06457E000E4B6C00000000000E4B6CC00000000AF +S315E06457F0000000000000000000000000000000005F +S315E064580000E4B6D8000000000000000000000000DC +S315E0645810000000000000000000000000000000003E +S315E064582000E4B6E4000000000000000000000000B0 +S315E06458300000000000E4B6F0000000000000000094 +S315E0645840000000000000000000000000000000000E +S315E064585000000000000000000000000000000000FE +S315E0645860000000000000000000E4B6FC0000000058 +S315E064587000E4B7080000000000000000000000003B +S315E06458800000000000E4B72400000000000000000F +S315E064589000E4B7300000000000E4B73C000000001C +S315E06458A000000000000000000000000000000000AE +S315E06458B0000000000000000000000000000000009E +S315E06458C0000000000000000000000000000000008E +S315E06458D0000000000000000000000000000000007E +S315E06458E0000000000000000000000000000000006E +S315E06458F00000000000E4B7480000000000E4B7548C +S315E0645900000000000000000000E4B7600000000052 +S315E0645910000000000000000000E4B76C0000000036 +S315E064592000000000000000000000000000E4B7781A +S315E0645930000000000000000000000000000000001D +S315E064594000E4B78C000000000000000000E4B798B3 +S315E064595000000000000000000000000000000000FD +S315E06459600000000000E4B7A40000000000000000AE +S315E064597000000000000000000000000000000000DD +S315E064598000000000000000000000000000000000CD +S315E064599000000000000000000000000000000000BD +S315E06459A000E4B7B000000000000000000000000062 +S315E06459B000E4B7BC00000000000000000000000046 +S315E06459C0000000000000000000000000000000008D +S315E06459D0000000000000000000000000000000007D +S315E06459E00000000000E4B7C800000000000000000A +S315E06459F0000000000000000000000000000000005D +S315E0645A00000000000000000000E4B7DC00000000D5 +S315E0645A10000000000000000000000000000000003C +S315E0645A2000E4B7E8000000000000000000000000A9 +S315E0645A3000000000000000000000000000E4B7F48D +S315E0645A4000E4B8000000000000E4B80C00000000C8 +S315E0645A5000000000000000000000000000000000FC +S315E0645A6000000000000000000000000000000000EC +S315E0645A70000000000000000000E4B81800E4B82468 +S315E0645A8000000000000000000000000000000000CC +S315E0645A9000000000000000000000000000E4B830F0 +S315E0645AA000000000000000000000000000000000AC +S315E0645AB0000000000000000000000000000000009C +S315E0645AC0000000000000000000000000000000008C +S315E0645AD0000000000000000000000000000000007C +S315E0645AE0000000000000000000000000000000006C +S315E0645AF0000000000000000000000000000000005C +S315E0645B000000000000E4B83C000000000000000073 +S315E0645B10000000000000000000E4B8480000000057 +S315E0645B20000000000000000000000000000000002B +S315E0645B3000000000000000000000000000E4B8542B +S315E0645B40000000000000000000E4B860000000000F +S315E0645B50000000000000000000E4B86C00000000F3 +S315E0645B6000000000000000000000000000000000EB +S315E0645B7000000000000000000000000000000000DB +S315E0645B8000000000000000000000000000000000CB +S315E0645B900000000000E4B8780000000000000000A7 +S315E0645BA00000000000E4B88400000000000000008B +S315E0645BB0000000000000000000000000000000009B +S315E0645BC000E4B8900000000000000000000000005F +S315E0645BD0000000000000000000E4B89C0000000043 +S315E0645BE000000000000000000000000000E4B8A827 +S315E0645BF0000000000000000000E4B8BC0000000003 +S315E0645C00000000000000000000000000000000004A +S315E0645C1000E4B8C8000000000000000000000000D6 +S315E0645C2000000000000000000000000000E4B8D4BA +S315E0645C3000E4B8E000E4B8EC000000000000000016 +S315E0645C4000E4B8F800000000000000000000000076 +S315E0645C500000000000E4B904000000000000000059 +S315E0645C6000000000000000000000000000000000EA +S315E0645C700000000000E4B91000000000000000002D +S315E0645C800000000000E4B91C0000000000E4B9284C +S315E0645C9000000000000000000000000000E4B93CE1 +S315E0645CA000000000000000000000000000E4B948C5 +S315E0645CB00000000000E4B95400E4B96000000000AC +S315E0645CC0000000000000000000000000000000008A +S315E0645CD0000000000000000000000000000000007A +S315E0645CE0000000000000000000000000000000006A +S315E0645CF0000000000000000000000000000000005A +S315E0645D000000000000000000000000000000000049 +S315E0645D100000000000000000000000000000000039 +S315E0645D200000000000000000000000000000000029 +S315E0645D3000E4B96C00000000000000000000000010 +S315E0645D400000000000000000000000000000000009 +S315E0645D5000000000000000000000000000000000F9 +S315E0645D6000000000000000000000000000000000E9 +S315E0645D7000000000000000000000000000000000D9 +S315E0645D8000000000000000000000000000000000C9 +S315E0645D900000000000E4B98000000000000000009C +S315E0645DA00000000000E4B98C000000000000000080 +S315E0645DB00000000000000000000000000000000099 +S315E0645DC00000000000000000000000000000000089 +S315E0645DD000000000000000000000000000E4B99844 +S315E0645DE00000000000000000000000000000000069 +S315E0645DF00000000000000000000000000000000059 +S315E0645E000000000000000000000000000000000048 +S315E0645E10000000000000000000E4B9A400E4B9B0AA +S315E0645E200000000000000000000000000000000028 +S315E0645E3000E4B9BC000000000000000000000000BF +S315E0645E4000000000000000000000000000E4B9C8A3 +S315E0645E5000E4B9DC0000000000000000000000007F +S315E0645E6000000000000000000000000000000000E8 +S315E0645E70000000000000000000E4B9E80000000053 +S315E0645E8000000000000000000000000000E4B9F437 +S315E0645E9000000000000000000000000000000000B8 +S315E0645EA000000000000000000000000000000000A8 +S315E0645EB00000000000000000000000000000000098 +S315E0645EC000000000000000000000000000E4BA00EA +S315E0645ED000000000000000000000000000E4BA0CCE +S315E0645EE00000000000000000000000000000000068 +S315E0645EF00000000000E4BA180000000000E4BA24E0 +S315E0645F0000E4BA300000000000E4BA3C000000009F +S315E0645F100000000000000000000000000000000037 +S315E0645F200000000000000000000000000000000027 +S315E0645F300000000000000000000000000000000017 +S315E0645F400000000000000000000000000000000007 +S315E0645F5000000000000000000000000000000000F7 +S315E0645F6000000000000000000000000000E4BA4801 +S315E0645F70000000000000000000E4BA5400000000E5 +S315E0645F8000000000000000000000000000000000C7 +S315E0645F9000000000000000000000000000000000B7 +S315E0645FA000000000000000000000000000000000A7 +S315E0645FB00000000000000000000000000000000097 +S315E0645FC00000000000000000000000000000000087 +S315E0645FD00000000000000000000000000000000077 +S315E0645FE00000000000000000000000000000000067 +S315E0645FF00000000000000000000000000000000057 +S315E06460000000000000000000000000000000000046 +S315E06460100000000000000000000000000000000036 +S315E0646020000000000000000000E4BA600000000028 +S315E06460300000000000000000000000000000000016 +S315E06460400000000000000000000000000000000006 +S315E064605000E4BA6C000000000000000000000000EC +S315E064606000000000000000000000000000000000E6 +S315E064607000000000000000000000000000000000D6 +S315E064608000000000000000000000000000000000C6 +S315E064609000000000000000000000000000000000B6 +S315E06460A00000000000E4BA78000000000000000090 +S315E06460B00000000000000000000000000000000096 +S315E06460C0000000000000000000E4BA8C000000005C +S315E06460D00000000000000000000000000000000076 +S315E06460E00000000000000000000000000000000066 +S315E06460F00000000000000000000000000000000056 +S315E06461000000000000E4BA9800000000000000000F +S315E06461100000000000000000000000000000000035 +S315E06461200000000000E4BAAC0000000000E4BAB885 +S315E064613000E4BAC4000000000000000000000000B3 +S315E06461400000000000E4BAD0000000000000000097 +S315E06461500000000000E4BADC00000000000000007B +S315E064616000000000000000000000000000E4BAE85F +S315E0646170000000000000000000E4BAF400E4BB089C +S315E064618000000000000000000000000000E4BB1412 +S315E064619000000000000000000000000000E4BB20F6 +S315E06461A000000000000000000000000000000000A5 +S315E06461B000E4BB2C00E4BB4000E4BB4C0000000000 +S315E06461C00000000000000000000000000000000085 +S315E06461D000E4BB580000000000000000000000007E +S315E06461E00000000000E4BB6400E4BB7000E4BB7C38 +S315E06461F00000000000000000000000000000000055 +S315E06462000000000000000000000000000000000044 +S315E06462100000000000000000000000000000000034 +S315E0646220000000000000000000E4BB8800000000FD +S315E064623000000000000000000000000000E4BB94E1 +S315E064624000E4BBA00000000000E4BBAC000000007A +S315E064625000000000000000000000000000000000F4 +S315E064626000000000000000000000000000000000E4 +S315E064627000000000000000000000000000E4BBB87D +S315E06462800000000000E4BBC4000000000000000061 +S315E064629000000000000000000000000000000000B4 +S315E06462A0000000000000000000E4BBD00000000035 +S315E06462B000E4BBDC00000000000000000000000019 +S315E06462C00000000000000000000000000000000084 +S315E06462D00000000000000000000000000000000074 +S315E06462E00000000000000000000000000000000064 +S315E06462F0000000000000000000E4BBE800000000CD +S315E0646300000000000000000000E4BBF400000000B0 +S315E06463100000000000E4BC00000000000000000093 +S315E06463200000000000000000000000000000000023 +S315E0646330000000000000000000E4BC14000000005F +S315E06463400000000000000000000000000000000003 +S315E064635000000000000000000000000000000000F3 +S315E06463600000000000E4BC20000000000000000023 +S315E064637000000000000000000000000000000000D3 +S315E064638000E4BC2C000000000000000000E4BC381F +S315E064639000000000000000000000000000000000B3 +S315E06463A000000000000000000000000000000000A3 +S315E06463B000E4BC44000000000000000000000000AF +S315E06463C0000000000000000000E4BC500000000093 +S315E06463D00000000000000000000000000000000073 +S315E06463E000E4BC5C00000000000000000000000067 +S315E06463F00000000000000000000000000000000053 +S315E064640000E4BC680000000000000000000000003A +S315E06464100000000000000000000000000000000032 +S315E06464200000000000000000000000000000000022 +S315E06464300000000000000000000000000000000012 +S315E06464400000000000E4BC740000000000000000EE +S315E064645000000000000000000000000000000000F2 +S315E064646000E4BC88000000000000000000000000BA +S315E064647000000000000000000000000000000000D2 +S315E06464800000000000E4BC940000000000E4BCA04E +S315E064649000E4BCAC00000000000000000000000066 +S315E06464A000000000000000000000000000000000A2 +S315E06464B000E4BCB80000000000000000000000003A +S315E06464C00000000000E4BCC400000000000000001E +S315E06464D00000000000000000000000000000000072 +S315E06464E00000000000000000000000000000000062 +S315E06464F00000000000000000000000000000000052 +S315E0646500000000000000000000E4BCD800E4BCE445 +S315E06465100000000000E4BCF00000000000000000A1 +S315E064652000000000000000000000000000E4BCFC85 +S315E064653000E4BD08000000000000000000E4BD14B3 +S315E064654000000000000000000000000000E4BD2040 +S315E064655000000000000000000000000000000000F1 +S315E0646560000000000000000000E4BD2C00E4BD383B +S315E064657000000000000000000000000000000000D1 +S315E064658000E4BD440000000000E4BD5000000000EB +S315E064659000000000000000000000000000000000B1 +S315E06465A000000000000000000000000000000000A1 +S315E06465B0000000000000000000E4BD5C0000000094 +S315E06465C0000000000000000000E4BD680000000078 +S315E06465D00000000000000000000000000000000071 +S315E06465E00000000000000000000000000000000061 +S315E06465F00000000000000000000000000000000051 +S315E06466000000000000000000000000000000000040 +S315E06466100000000000000000000000000000000030 +S315E06466200000000000000000000000000000000020 +S315E06466300000000000000000000000000000000010 +S315E06466400000000000000000000000000000000000 +S315E064665000000000000000000000000000000000F0 +S315E064666000000000000000000000000000000000E0 +S315E064667000000000000000000000000000000000D0 +S315E0646680000000000000000000E4BD7400000000AB +S315E0646690000000000000000000E4BD80000000008F +S315E06466A000000000000000000000000000000000A0 +S315E06466B00000000000000000000000000000000090 +S315E06466C000000000000000000000000000E4BD8C53 +S315E06466D00000000000000000000000000000000070 +S315E06466E00000000000000000000000000000000060 +S315E06466F000000000000000000000000000E4BD9817 +S315E064670000000000000000000000000000E4BDA4FA +S315E064671000E4BDB0000000000000000000000000DE +S315E0646720000000000000000000000000000000001F +S315E0646730000000000000000000E4BDBC00000000B2 +S315E064674000E4BDC800000000000000000000000096 +S315E064675000000000000000000000000000000000EF +S315E064676000E4BDD40000000000000000000000006A +S315E064677000000000000000000000000000E4BDE04E +S315E064678000000000000000000000000000000000BF +S315E0646790000000000000000000E4BDEC0000000022 +S315E06467A00000000000E4BDF80000000000E4BE0460 +S315E06467B0000000000000000000000000000000008F +S315E06467C000000000000000000000000000E4BE10CD +S315E06467D0000000000000000000000000000000006F +S315E06467E00000000000E4BE1C0000000000E4BE28D7 +S315E06467F0000000000000000000000000000000004F +S315E06468000000000000E4BE34000000000000000068 +S315E0646810000000000000000000000000000000002E +S315E06468200000000000E4BE4000000000000000003C +S315E0646830000000000000000000E4BE4C0000000020 +S315E064684000000000000000000000000000000000FE +S315E064685000000000000000000000000000000000EE +S315E064686000000000000000000000000000E4BE58E4 +S315E06468700000000000E4BE640000000000000000C8 +S315E0646880000000000000000000E4BE80000000009C +S315E06468900000000000E4BE8C0000000000E4BE9846 +S315E06468A0000000000000000000000000000000009E +S315E06468B0000000000000000000000000000000008E +S315E06468C0000000000000000000000000000000007E +S315E06468D0000000000000000000000000000000006E +S315E06468E0000000000000000000000000000000005E +S315E06468F0000000000000000000E4BEA40000000008 +S315E064690000E4BEB0000000000000000000E4BEBC8D +S315E064691000000000000000000000000000E4BEC8C3 +S315E0646920000000000000000000000000000000001D +S315E064693000E4BED400000000000000000000000097 +S315E06469400000000000E4BEE8000000000000000073 +S315E064695000E4BEF400000000000000000000000057 +S315E0646960000000000000000000E4BF00000000003A +S315E064697000000000000000000000000000000000CD +S315E064698000000000000000000000000000000000BD +S315E064699000000000000000000000000000000000AD +S315E06469A00000000000E4BF0C0000000000000000EE +S315E06469B00000000000E4BF180000000000000000D2 +S315E06469C0000000000000000000000000000000007D +S315E06469D0000000000000000000000000000000006D +S315E06469E0000000000000000000E4BF240000000096 +S315E06469F0000000000000000000000000000000004D +S315E0646A0000000000000000000000000000E4BF3861 +S315E0646A10000000000000000000000000000000002C +S315E0646A200000000000E4BF44000000000000000035 +S315E0646A30000000000000000000000000000000000C +S315E0646A4000E4BF5000E4BF5C0000000000E4BF68FF +S315E0646A5000000000000000000000000000000000EC +S315E0646A6000000000000000000000000000000000DC +S315E0646A7000000000000000000000000000E4BF74B5 +S315E0646A8000E4BF8000000000000000000000000099 +S315E0646A9000000000000000000000000000000000AC +S315E0646AA000E4BF8C0000000000000000000000006D +S315E0646AB0000000000000000000000000000000008C +S315E0646AC0000000000000000000000000000000007C +S315E0646AD0000000000000000000000000000000006C +S315E0646AE0000000000000000000000000000000005C +S315E0646AF0000000000000000000000000000000004C +S315E0646B00000000000000000000E4BF980000000000 +S315E0646B1000000000000000000000000000E4BFA4E4 +S315E0646B20000000000000000000000000000000001B +S315E0646B30000000000000000000000000000000000B +S315E0646B4000E4BFB0000000000000000000E4BFBC49 +S315E0646B5000000000000000000000000000E4BFC880 +S315E0646B6000000000000000000000000000000000DB +S315E0646B7000000000000000000000000000000000CB +S315E0646B8000000000000000000000000000000000BB +S315E0646B90000000000000000000E4BFD40000000034 +S315E0646BA0000000000000000000E4BFE00000000018 +S315E0646BB0000000000000000000000000000000008B +S315E0646BC00000000000E4BFEC0000000000000000EC +S315E0646BD000000000000000000000000000E4BFF8D0 +S315E0646BE0000000000000000000000000000000005B +S315E0646BF000E4C004000000000000000000E4C018E7 +S315E0646C00000000000000000000000000000000003A +S315E0646C100000000000E4C024000000000000000062 +S315E0646C20000000000000000000000000000000001A +S315E0646C3000E4C03000E4C03C00E4C048000000006A +S315E0646C400000000000E4C054000000000000000002 +S315E0646C50000000000000000000E4C06000000000E6 +S315E0646C6000000000000000000000000000000000DA +S315E0646C70000000000000000000E4C06C00000000BA +S315E0646C80000000000000000000E4C078000000009E +S315E0646C9000E4C08400000000000000000000000082 +S315E0646CA000E4C0980000000000000000000000005E +S315E0646CB000E4C0A40000000000E4C0B000E4C0BC8E +S315E0646CC0000000000000000000000000000000007A +S315E0646CD0000000000000000000000000000000006A +S315E0646CE0000000000000000000000000000000005A +S315E0646CF0000000000000000000000000000000004A +S315E0646D000000000000000000000000000000000039 +S315E0646D100000000000000000000000000000000029 +S315E0646D200000000000000000000000000000000019 +S315E0646D300000000000E4C0C800000000000000009D +S315E0646D4000000000000000000000000000000000F9 +S315E0646D5000000000000000000000000000000000E9 +S315E0646D6000000000000000000000000000000000D9 +S315E0646D7000000000000000000000000000000000C9 +S315E0646D8000000000000000000000000000000000B9 +S315E0646D90000000000000000000E4C0DC0000000029 +S315E0646DA0000000000000000000E4C0E8000000000D +S315E0646DB00000000000000000000000000000000089 +S315E0646DC00000000000000000000000000000000079 +S315E0646DD00000000000000000000000000000000069 +S315E0646DE000E4C0F4000000000000000000000000C1 +S315E0646DF00000000000000000000000000000000049 +S315E0646E000000000000000000000000000000000038 +S315E0646E1000000000000000000000000000E4C10083 +S315E0646E2000E4C10C00000000000000000000000067 +S315E0646E300000000000E4C11800000000000000004B +S315E0646E4000000000000000000000000000000000F8 +S315E0646E5000E4C12400E4C138000000000000000042 +S315E0646E6000000000000000000000000000000000D8 +S315E0646E7000000000000000000000000000E4C144DF +S315E0646E8000000000000000000000000000000000B8 +S315E0646E9000E4C150000000000000000000000000B3 +S315E0646EA00000000000000000000000000000000098 +S315E0646EB00000000000000000000000000000000088 +S315E0646EC00000000000000000000000000000000078 +S315E0646ED000E4C15C00000000000000000000000067 +S315E0646EE000E4C1680000000000000000000000004B +S315E0646EF0000000000000000000E4C174000000002F +S315E0646F0000E4C18000E4C18C0000000000E4C198A4 +S315E0646F100000000000000000000000000000000027 +S315E0646F200000000000000000000000000000000017 +S315E0646F300000000000000000000000000000000007 +S315E0646F4000000000000000000000000000000000F7 +S315E0646F5000000000000000000000000000000000E7 +S315E0646F6000000000000000000000000000000000D7 +S315E0646F7000E4C1A4000000000000000000E4C1B029 +S315E0646F8000000000000000000000000000000000B7 +S315E0646F9000000000000000000000000000000000A7 +S315E0646FA00000000000000000000000000000000097 +S315E0646FB00000000000000000000000000000000087 +S315E0646FC00000000000000000000000000000000077 +S315E0646FD00000000000000000000000000000000067 +S315E0646FE00000000000000000000000000000000057 +S315E0646FF00000000000000000000000000000000047 +S315E06470000000000000000000000000000000000036 +S315E06470100000000000000000000000000000000026 +S315E064702000000000000000000000000000E4C1BCB5 +S315E06470300000000000000000000000000000000006 +S315E064704000000000000000000000000000000000F6 +S315E06470500000000000E4C1C8000000000000000079 +S315E064706000000000000000000000000000000000D6 +S315E064707000000000000000000000000000000000C6 +S315E064708000000000000000000000000000000000B6 +S315E064709000000000000000000000000000000000A6 +S315E06470A0000000000000000000E4C1D4000000001D +S315E06470B00000000000000000000000000000000086 +S315E06470C000000000000000000000000000E4C1E8E9 +S315E06470D00000000000000000000000000000000066 +S315E06470E00000000000000000000000000000000056 +S315E06470F00000000000000000000000000000000046 +S315E0647100000000000000000000E4C1F4000000009C +S315E06471100000000000000000000000000000000025 +S315E0647120000000000000000000E4C2080000000067 +S315E064713000E4C21400E4C220000000000000000085 +S315E0647140000000000000000000E4C22C0000000023 +S315E0647150000000000000000000E4C2380000000007 +S315E064716000000000000000000000000000000000D5 +S315E064717000E4C244000000000000000000E4C250E5 +S315E064718000E4C264000000000000000000000000AB +S315E064719000E4C2700000000000000000000000008F +S315E06471A000E4C27C00000000000000000000000073 +S315E06471B00000000000E4C28800E4C29C00E4C2A8C7 +S315E06471C00000000000000000000000000000000075 +S315E06471D00000000000E4C2B400000000000000000B +S315E06471E0000000000000000000E4C2C000E4C2CC7D +S315E06471F000E4C2D8000000000000000000000000C7 +S315E06472000000000000000000000000000000000034 +S315E06472100000000000000000000000000000000024 +S315E064722000000000000000000000000000E4C2E48A +S315E06472300000000000000000000000000000000004 +S315E064724000E4C2F000E4C2FC0000000000E4C3080D +S315E064725000000000000000000000000000000000E4 +S315E064726000000000000000000000000000000000D4 +S315E064727000000000000000000000000000000000C4 +S315E064728000E4C3140000000000E4C3200000000032 +S315E064729000000000000000000000000000000000A4 +S315E06472A000000000000000000000000000E4C32CC1 +S315E06472B00000000000E4C3380000000000000000A5 +S315E06472C00000000000000000000000000000000074 +S315E06472D00000000000000000000000000000000064 +S315E06472E00000000000000000000000000000000054 +S315E06472F000000000000000000000000000E4C34459 +S315E064730000000000000000000000000000E4C3503C +S315E0647310000000000000000000E4C35C0000000020 +S315E06473200000000000000000000000000000000013 +S315E064733000000000000000000000000000E4C370EC +S315E064734000000000000000000000000000000000F3 +S315E064735000000000000000000000000000000000E3 +S315E0647360000000000000000000E4C37C00000000B0 +S315E064737000000000000000000000000000000000C3 +S315E06473800000000000E4C388000000000000000084 +S315E064739000E4C39400000000000000000000000068 +S315E06473A00000000000000000000000000000000093 +S315E06473B00000000000E4C3A000000000000000003C +S315E06473C000000000000000000000000000E4C3AC20 +S315E06473D00000000000000000000000000000000063 +S315E06473E00000000000E4C3B80000000000000000F4 +S315E06473F00000000000000000000000000000000043 +S315E06474000000000000E4C3C40000000000000000C7 +S315E06474100000000000000000000000000000000022 +S315E06474200000000000000000000000000000000012 +S315E06474300000000000000000000000000000000002 +S315E0647440000000000000000000E4C3D0000000007B +S315E064745000000000000000000000000000000000E2 +S315E06474600000000000E4C3E4000000000000000047 +S315E064747000000000000000000000000000000000C2 +S315E0647480000000000000000000E4C3F0000000001B +S315E064749000E4C3FC00E4C40800000000000000004F +S315E06474A00000000000000000000000000000000092 +S315E06474B00000000000E4C4140000000000000000C6 +S315E06474C0000000000000000000E4C42000000000AA +S315E06474D00000000000000000000000000000000062 +S315E06474E00000000000000000000000000000000052 +S315E06474F00000000000000000000000000000000042 +S315E064750000000000000000000000000000E4C43455 +S315E064751000E4C4400000000000E4C44C0000000045 +S315E06475200000000000000000000000000000000011 +S315E064753000E4C45800E4C4640000000000000000F5 +S315E064754000E4C470000000000000000000000000D9 +S315E064755000E4C47C000000000000000000000000BD +S315E064756000000000000000000000000000E4C488A1 +S315E064757000E4C49400000000000000000000000085 +S315E06475800000000000E4C4A00000000000E4C4AC15 +S315E064759000000000000000000000000000000000A1 +S315E06475A00000000000000000000000000000000091 +S315E06475B000000000000000000000000000E4C4B821 +S315E06475C000000000000000000000000000E4C4C405 +S315E06475D00000000000000000000000000000000061 +S315E06475E00000000000000000000000000000000051 +S315E06475F00000000000000000000000000000000041 +S315E06476000000000000000000000000000000000030 +S315E06476100000000000000000000000000000000020 +S315E06476200000000000000000000000000000000010 +S315E06476300000000000000000000000000000000000 +S315E064764000000000000000000000000000000000F0 +S315E064765000000000000000000000000000000000E0 +S315E064766000000000000000000000000000000000D0 +S315E064767000000000000000000000000000000000C0 +S315E064768000000000000000000000000000E4C4D038 +S315E064769000000000000000000000000000E4C4DC1C +S315E06476A00000000000000000000000000000000090 +S315E06476B00000000000000000000000000000000080 +S315E06476C00000000000000000000000000000000070 +S315E06476D000E4C4E8000000000000000000000000D0 +S315E06476E00000000000000000000000000000000050 +S315E06476F00000000000000000000000000000000040 +S315E064770000E4C4F400000000000000000000000093 +S315E064771000E4C50000E4C50C0000000000000000C1 +S315E0647720000000000000000000000000000000000F +S315E064773000000000000000000000000000E4C5183E +S315E06477400000000000E4C524000000000000000022 +S315E064775000000000000000000000000000000000DF +S315E06477600000000000E4C5300000000000000000F6 +S315E064777000000000000000000000000000000000BF +S315E064778000E4C53C000000000000000000000000CA +S315E064779000000000000000000000000000E4C548AE +S315E06477A0000000000000000000E4C5540000000092 +S315E06477B000E4C56000000000000000000000000076 +S315E06477C0000000000000000000000000000000006F +S315E06477D000E4C56C0000000000000000000000004A +S315E06477E0000000000000000000E4C578000000002E +S315E06477F000E4C58400000000000000000000000012 +S315E0647800000000000000000000E4C59000000000F5 +S315E0647810000000000000000000000000000000001E +S315E0647820000000000000000000E4C59C00000000C9 +S315E064783000000000000000000000000000E4C5A8AD +S315E064784000000000000000000000000000000000EE +S315E064785000000000000000000000000000000000DE +S315E064786000000000000000000000000000000000CE +S315E064787000E4C5B40000000000E4C5C000000000F8 +S315E064788000000000000000000000000000E4C5DC29 +S315E0647890000000000000000000E4C5E8000000000D +S315E06478A000E4C5F4000000000000000000000000F1 +S315E06478B0000000000000000000000000000000007E +S315E06478C0000000000000000000000000000000006E +S315E06478D0000000000000000000000000000000005E +S315E06478E0000000000000000000000000000000004E +S315E06478F000000000000000000000000000E4C60094 +S315E06479000000000000E4C60C000000000000000077 +S315E064791000E4C6180000000000000000000000005B +S315E064792000E4C6240000000000000000000000003F +S315E06479300000000000E4C630000000000000000023 +S315E0647940000000000000000000E4C64400000000FF +S315E06479500000000000E4C6500000000000000000E3 +S315E064796000000000000000000000000000E4C65CC7 +S315E064797000000000000000000000000000000000BD +S315E064798000000000000000000000000000000000AD +S315E0647990000000000000000000000000000000009D +S315E06479A0000000000000000000E4C668000000007B +S315E06479B0000000000000000000E4C674000000005F +S315E06479C0000000000000000000000000000000006D +S315E06479D0000000000000000000000000000000005D +S315E06479E000000000000000000000000000E4C68023 +S315E06479F0000000000000000000000000000000003D +S315E0647A00000000000000000000000000000000002C +S315E0647A1000E4C694000000000000000000000000DE +S315E0647A20000000000000000000E4C6A000000000C2 +S315E0647A3000000000000000000000000000000000FC +S315E0647A400000000000E4C6AC00E4C6B80000000034 +S315E0647A5000E4C6C40000000000000000000000006E +S315E0647A6000000000000000000000000000000000CC +S315E0647A7000000000000000000000000000000000BC +S315E0647A8000E4C6D000E4C6DC0000000000000000AC +S315E0647A90000000000000000000000000000000009C +S315E0647AA00000000000E4C6E80000000000000000FA +S315E0647AB0000000000000000000000000000000007C +S315E0647AC0000000000000000000000000000000006C +S315E0647AD0000000000000000000000000000000005C +S315E0647AE0000000000000000000000000000000004C +S315E0647AF0000000000000000000000000000000003C +S315E0647B0000000000000000000000000000E4C6F48D +S315E0647B10000000000000000000000000000000001B +S315E0647B2000E4C70000000000000000000000000060 +S315E0647B3000000000000000000000000000000000FB +S315E0647B400000000000E4C70C000000000000000034 +S315E0647B5000E4C71800000000000000000000000018 +S315E0647B6000E4C724000000000000000000000000FC +S315E0647B7000000000000000000000000000000000BB +S315E0647B8000000000000000000000000000000000AB +S315E0647B9000000000000000000000000000E4C730C0 +S315E0647BA000000000000000000000000000E4C73CA4 +S315E0647BB0000000000000000000000000000000007B +S315E0647BC0000000000000000000E4C7480000000078 +S315E0647BD0000000000000000000000000000000005B +S315E0647BE000E4C7540000000000000000000000004C +S315E0647BF00000000000E4C760000000000000000030 +S315E0647C0000E4C7740000000000000000000000000B +S315E0647C10000000000000000000E4C78000000000EF +S315E0647C20000000000000000000000000000000000A +S315E0647C300000000000E4C78C00E4C79800E4C7A431 +S315E0647C40000000000000000000E4C7B0000000008F +S315E0647C5000000000000000000000000000E4C7BC73 +S315E0647C6000000000000000000000000000000000CA +S315E0647C7000000000000000000000000000E4C7C847 +S315E0647C8000000000000000000000000000E4C7D42B +S315E0647C900000000000E4C7E000000000000000000F +S315E0647CA00000000000E4C7F40000000000000000EB +S315E0647CB00000000000E4C8000000000000E4C80C16 +S315E0647CC000E4C818000000000000000000000000A6 +S315E0647CD0000000000000000000000000000000005A +S315E0647CE0000000000000000000000000000000004A +S315E0647CF0000000000000000000000000000000003A +S315E0647D000000000000000000000000000000000029 +S315E0647D100000000000000000000000000000000019 +S315E0647D200000000000000000000000000000000009 +S315E0647D30000000000000000000E4C8240000000029 +S315E0647D4000000000000000000000000000000000E9 +S315E0647D5000000000000000000000000000000000D9 +S315E0647D6000000000000000000000000000000000C9 +S315E0647D7000000000000000000000000000000000B9 +S315E0647D8000000000000000000000000000000000A9 +S315E0647D9000000000000000000000000000E4C838B5 +S315E0647DA000000000000000000000000000E4C84499 +S315E0647DB00000000000000000000000000000000079 +S315E0647DC00000000000000000000000000000000069 +S315E0647DD00000000000000000000000000000000059 +S315E0647DE00000000000E4C85000000000000000004D +S315E0647DF00000000000000000000000000000000039 +S315E0647E000000000000000000000000000000000028 +S315E0647E100000000000000000000000000000000018 +S315E0647E2000E4C85C00E4C8680000000000000000EC +S315E0647E30000000000000000000E4C87400000000D8 +S315E0647E4000000000000000000000000000000000E8 +S315E0647E500000000000E4C88000E4C894000000006C +S315E0647E6000000000000000000000000000000000C8 +S315E0647E7000000000000000000000000000000000B8 +S315E0647E8000E4C8A00000000000000000000000005C +S315E0647E900000000000E4C8AC000000000000000040 +S315E0647EA00000000000000000000000000000000088 +S315E0647EB00000000000000000000000000000000078 +S315E0647EC00000000000000000000000000000000068 +S315E0647ED00000000000E4C8B80000000000000000F4 +S315E0647EE00000000000E4C8C40000000000000000D8 +S315E0647EF000000000000000000000000000E4C8D0BC +S315E0647F000000000000E4C8DC00E4C8E8000000000B +S315E0647F1000E4C8F400000000000000000000000077 +S315E0647F200000000000000000000000000000000007 +S315E0647F3000000000000000000000000000000000F7 +S315E0647F4000000000000000000000000000000000E7 +S315E0647F5000000000000000000000000000000000D7 +S315E0647F6000000000000000000000000000000000C7 +S315E0647F700000000000E4C90000000000000000000A +S315E0647F8000E4C90C000000000000000000000000EE +S315E0647F900000000000000000000000000000000097 +S315E0647FA00000000000000000000000000000000087 +S315E0647FB00000000000000000000000000000000077 +S315E0647FC00000000000000000000000000000000067 +S315E0647FD00000000000000000000000000000000057 +S315E0647FE00000000000000000000000000000000047 +S315E0647FF00000000000000000000000000000000037 +S315E06480000000000000000000000000000000000026 +S315E06480100000000000000000000000000000000016 +S315E06480200000000000000000000000000000000006 +S315E064803000E4C91800000000000000000000000031 +S315E064804000000000000000000000000000000000E6 +S315E0648050000000000000000000E4C9240000000005 +S315E064806000000000000000000000000000000000C6 +S315E064807000000000000000000000000000000000B6 +S315E064808000000000000000000000000000000000A6 +S315E06480900000000000000000000000000000000096 +S315E06480A000000000000000000000000000E4C930A9 +S315E06480B00000000000000000000000000000000076 +S315E06480C00000000000000000000000000000000066 +S315E06480D000E4C94400000000000000000000000065 +S315E06480E00000000000000000000000000000000046 +S315E06480F00000000000000000000000000000000036 +S315E064810000000000000000000000000000E4C95028 +S315E06481100000000000000000000000000000000015 +S315E064812000000000000000000000000000E4C964F4 +S315E06481300000000000E4C97000E4C97C00000000AF +S315E064814000000000000000000000000000E4C988B0 +S315E064815000000000000000000000000000E4C99494 +S315E064816000000000000000000000000000000000C5 +S315E06481700000000000E4C9A0000000000000000068 +S315E064818000E4C9AC00E4C9C00000000000000000DF +S315E06481900000000000E4C9CC00000000000000001C +S315E06481A00000000000E4C9D8000000000000000000 +S315E06481B0000000000000000000E4C9E400E4C9F83F +S315E06481C000E4CA04000000000000000000000000B3 +S315E06481D0000000000000000000E4CA100000000097 +S315E06481E000000000000000000000000000E4CA1C7B +S315E06481F000E4CA2800E4CA3400000000000000007D +S315E06482000000000000000000000000000000000024 +S315E06482100000000000000000000000000000000014 +S315E06482200000000000000000000000000000000004 +S315E064823000E4CA4000000000000000000000000006 +S315E06482400000000000E4CA4C00E4CA5800000000E4 +S315E064825000E4CA64000000000000000000000000C2 +S315E064826000000000000000000000000000000000C4 +S315E064827000000000000000000000000000000000B4 +S315E06482800000000000E4CA700000000000E4CA7C5C +S315E06482900000000000000000000000000000000094 +S315E06482A00000000000000000000000000000000084 +S315E06482B000E4CA880000000000E4CA9400000000FC +S315E06482C00000000000000000000000000000000064 +S315E06482D00000000000000000000000000000000054 +S315E06482E00000000000000000000000000000000044 +S315E06482F00000000000000000000000000000000034 +S315E064830000E4CAA0000000000000000000000000D5 +S315E064831000E4CAAC000000000000000000E4CAB853 +S315E06483200000000000000000000000000000000003 +S315E064833000000000000000000000000000000000F3 +S315E064834000E4CACC00000000000000000000000069 +S315E064835000000000000000000000000000000000D3 +S315E064836000000000000000000000000000E4CAD83D +S315E064837000000000000000000000000000000000B3 +S315E0648380000000000000000000E4CAE40000000011 +S315E06483900000000000E4CAF00000000000000000F5 +S315E06483A00000000000000000000000000000000083 +S315E06483B0000000000000000000E4CAFC00000000C9 +S315E06483C00000000000000000000000000000000063 +S315E06483D000E4CB080000000000000000000000009C +S315E06483E0000000000000000000E4CB140000000080 +S315E06483F00000000000000000000000000000000033 +S315E0648400000000000000000000E4CB200000000053 +S315E06484100000000000000000000000000000000012 +S315E06484200000000000000000000000000000000002 +S315E064843000000000000000000000000000000000F2 +S315E064844000000000000000000000000000E4CB2C07 +S315E064845000000000000000000000000000000000D2 +S315E0648460000000000000000000E4CB4000000000D3 +S315E064847000000000000000000000000000000000B2 +S315E064848000000000000000000000000000E4CB4CA7 +S315E06484900000000000E4CB5800E4CB640000000078 +S315E06484A00000000000000000000000000000000082 +S315E06484B0000000000000000000E4CB700000000053 +S315E06484C000000000000000000000000000E4CB7C37 +S315E06484D00000000000000000000000000000000052 +S315E06484E00000000000000000000000000000000042 +S315E06484F00000000000000000000000000000000032 +S315E06485000000000000000000000000000000000021 +S315E064851000E4CB9000E4CB9C0000000000E4CBA830 +S315E06485200000000000000000000000000000000001 +S315E06485300000000000E4CBB400E4CBC0000000001F +S315E06485400000000000E4CBCC000000000000000066 +S315E06485500000000000E4CBD800000000000000004A +S315E064856000000000000000000000000000000000C1 +S315E064857000E4CBE400E4CBF000000000000000007F +S315E0648580000000000000000000E4CBFC00000000F6 +S315E064859000E4CC08000000000000000000000000D9 +S315E06485A00000000000000000000000000000000081 +S315E06485B00000000000000000000000000000000071 +S315E06485C000E4CC140000000000000000000000009D +S315E06485D000E4CC2000000000000000000000000081 +S315E06485E00000000000000000000000000000000041 +S315E06485F00000000000000000000000000000000031 +S315E06486000000000000000000000000000000000020 +S315E06486100000000000000000000000000000000010 +S315E06486200000000000000000000000000000000000 +S315E064863000000000000000000000000000000000F0 +S315E064864000000000000000000000000000000000E0 +S315E064865000000000000000000000000000000000D0 +S315E064866000000000000000000000000000000000C0 +S315E064867000000000000000000000000000000000B0 +S315E064868000000000000000000000000000000000A0 +S315E064869000E4CC2C000000000000000000000000B4 +S315E06486A000E4CC3800000000000000000000000098 +S315E06486B00000000000000000000000000000000070 +S315E06486C00000000000000000000000000000000060 +S315E06486D00000000000E4CC4400000000000000005C +S315E06486E00000000000000000000000000000000040 +S315E06486F00000000000000000000000000000000030 +S315E06487000000000000E4CC5000000000000000001F +S315E06487100000000000E4CC5C00E4CC6800000000EB +S315E064872000000000000000000000000000000000FF +S315E064873000000000000000000000000000000000EF +S315E064874000E4CC740000000000E4CC80000000008B +S315E064875000000000000000000000000000000000CF +S315E0648760000000000000000000E4CC8C0000000083 +S315E064877000000000000000000000000000000000AF +S315E06487800000000000E4CC98000000000000000057 +S315E0648790000000000000000000000000000000008F +S315E06487A000E4CCA4000000000000000000E4CCB0CB +S315E06487B00000000000E4CCBC000000000000000003 +S315E06487C0000000000000000000000000000000005F +S315E06487D00000000000E4CCC80000000000000000D7 +S315E06487E000000000000000000000000000E4CCD4BB +S315E06487F00000000000E4CCE000000000000000009F +S315E064880000000000000000000000000000E4CCEC82 +S315E0648810000000000000000000000000000000000E +S315E064882000000000000000000000000000E4CCF856 +S315E064883000000000000000000000000000000000EE +S315E064884000E4CD0400000000000000000000000029 +S315E064885000000000000000000000000000000000CE +S315E064886000000000000000000000000000000000BE +S315E06488700000000000E4CD100000000000E4CD1C20 +S315E0648880000000000000000000000000000000009E +S315E064889000E4CD38000000000000000000E4CD44B0 +S315E06488A00000000000E4CD5000000000000000007D +S315E06488B0000000000000000000000000000000006E +S315E06488C0000000000000000000000000000000005E +S315E06488D0000000000000000000000000000000004E +S315E06488E0000000000000000000000000000000003E +S315E06488F0000000000000000000000000000000002E +S315E064890000E4CD5C0000000000E4CD6800000000F7 +S315E06489100000000000E4CD740000000000000000E8 +S315E06489200000000000E4CD800000000000000000CC +S315E0648930000000000000000000E4CD8C00000000B0 +S315E064894000000000000000000000000000E4CDA08C +S315E0648950000000000000000000E4CDAC0000000070 +S315E064896000000000000000000000000000000000BD +S315E064897000E4CDB800000000000000000000000044 +S315E0648980000000000000000000000000000000009D +S315E0648990000000000000000000000000000000008D +S315E06489A000000000000000000000000000E4CDC408 +S315E06489B000000000000000000000000000E4CDD0EC +S315E06489C0000000000000000000000000000000005D +S315E06489D0000000000000000000000000000000004D +S315E06489E0000000000000000000000000000000003D +S315E06489F000E4CDDC000000000000000000000000A0 +S315E0648A00000000000000000000000000000000001C +S315E0648A100000000000E4CDF000000000000000006B +S315E0648A2000000000000000000000000000E4CDFC4F +S315E0648A3000000000000000000000000000000000EC +S315E0648A40000000000000000000E4CE0800E4CE145C +S315E0648A500000000000E4CE200000000000000000FA +S315E0648A6000000000000000000000000000000000BC +S315E0648A7000000000000000000000000000000000AC +S315E0648A800000000000E4CE2C00E4CE3800000000D4 +S315E0648A90000000000000000000000000000000008C +S315E0648AA0000000000000000000E4CE440000000086 +S315E0648AB0000000000000000000000000000000006C +S315E0648AC0000000000000000000000000000000005C +S315E0648AD0000000000000000000000000000000004C +S315E0648AE0000000000000000000000000000000003C +S315E0648AF0000000000000000000000000000000002C +S315E0648B00000000000000000000000000000000001B +S315E0648B1000E4CE5000000000000000000000000009 +S315E0648B200000000000E4CE5C0000000000000000ED +S315E0648B3000000000000000000000000000000000EB +S315E0648B40000000000000000000E4CE6800000000C1 +S315E0648B500000000000E4CE740000000000000000A5 +S315E0648B600000000000E4CE80000000000000000089 +S315E0648B7000000000000000000000000000000000AB +S315E0648B80000000000000000000000000000000009B +S315E0648B90000000000000000000000000000000008B +S315E0648BA000E4CE8C0000000000000000000000003D +S315E0648BB000E4CE9800000000000000000000000021 +S315E0648BC000000000000000000000000000E4CEA405 +S315E0648BD0000000000000000000000000000000004B +S315E0648BE00000000000E4CEB00000000000000000D9 +S315E0648BF0000000000000000000E4CEBC00000000BD +S315E0648C000000000000E4CED0000000000000000098 +S315E0648C1000000000000000000000000000E4CEDC7C +S315E0648C2000000000000000000000000000000000FA +S315E0648C30000000000000000000E4CEE800E4CEF4AA +S315E0648C4000E4CF00000000000000000000E4CF0C68 +S315E0648C5000000000000000000000000000000000CA +S315E0648C6000E4CF18000000000000000000000000EF +S315E0648C7000000000000000000000000000000000AA +S315E0648C8000E4CF24000000000000000000000000C3 +S315E0648C9000E4CF300000000000E4CF3C00000000B8 +S315E0648CA0000000000000000000E4CF500000000077 +S315E0648CB0000000000000000000E4CF5C000000005B +S315E0648CC000E4CF6800E4CF74000000000000000018 +S315E0648CD0000000000000000000000000000000004A +S315E0648CE0000000000000000000000000000000003A +S315E0648CF0000000000000000000000000000000002A +S315E0648D000000000000000000000000000000000019 +S315E0648D100000000000000000000000000000000009 +S315E0648D2000000000000000000000000000000000F9 +S315E0648D3000000000000000000000000000E4CF80B6 +S315E0648D4000000000000000000000000000000000D9 +S315E0648D5000000000000000000000000000000000C9 +S315E0648D6000000000000000000000000000000000B9 +S315E0648D7000000000000000000000000000000000A9 +S315E0648D800000000000000000000000000000000099 +S315E0648D900000000000000000000000000000000089 +S315E0648DA000E4CF9400000000000000000000000032 +S315E0648DB000E4CFA000000000000000000000000016 +S315E0648DC00000000000000000000000000000000059 +S315E0648DD00000000000000000000000000000000049 +S315E0648DE0000000000000000000E4CFAC00000000DA +S315E0648DF00000000000000000000000000000000029 +S315E0648E000000000000000000000000000000000018 +S315E0648E100000000000000000000000000000000008 +S315E0648E200000000000E4CFB800E4CFC40000000016 +S315E0648E3000000000000000000000000000E4CFD065 +S315E0648E4000000000000000000000000000000000D8 +S315E0648E50000000000000000000E4CFDC00E4CFF096 +S315E0648E6000000000000000000000000000000000B8 +S315E0648E7000000000000000000000000000000000A8 +S315E0648E800000000000E4CFFC0000000000000000E9 +S315E0648E90000000000000000000E4D00800000000CC +S315E0648EA00000000000000000000000000000000078 +S315E0648EB00000000000000000000000000000000068 +S315E0648EC00000000000000000000000000000000058 +S315E0648ED0000000000000000000E4D0140000000080 +S315E0648EE0000000000000000000E4D0200000000064 +S315E0648EF00000000000000000000000000000000028 +S315E0648F0000E4D02C0000000000E4D03800E4D04453 +S315E0648F100000000000E4D050000000000000000003 +S315E0648F2000000000000000000000000000000000F7 +S315E0648F3000000000000000000000000000000000E7 +S315E0648F4000000000000000000000000000000000D7 +S315E0648F5000000000000000000000000000000000C7 +S315E0648F6000000000000000000000000000000000B7 +S315E0648F70000000000000000000E4D05C0000000097 +S315E0648F800000000000E4D06800000000000000007B +S315E0648F900000000000000000000000000000000087 +S315E0648FA00000000000000000000000000000000077 +S315E0648FB00000000000000000000000000000000067 +S315E0648FC00000000000000000000000000000000057 +S315E0648FD00000000000000000000000000000000047 +S315E0648FE00000000000000000000000000000000037 +S315E0648FF00000000000000000000000000000000027 +S315E06490000000000000000000000000000000000016 +S315E06490100000000000000000000000000000000006 +S315E064902000000000000000000000000000000000F6 +S315E06490300000000000E4D0740000000000000000BE +S315E064904000000000000000000000000000000000D6 +S315E064905000000000000000000000000000E4D08092 +S315E064906000000000000000000000000000000000B6 +S315E064907000000000000000000000000000000000A6 +S315E06490800000000000000000000000000000000096 +S315E06490900000000000000000000000000000000086 +S315E06490A00000000000000000000000000000000076 +S315E06490B000E4D08C00000000000000000000000026 +S315E06490C00000000000000000000000000000000056 +S315E06490D00000000000E4D0A00000000000000000F2 +S315E06490E00000000000000000000000000000000036 +S315E06490F00000000000000000000000000000000026 +S315E06491000000000000000000000000000000000015 +S315E064911000E4D0AC000000000000000000000000A5 +S315E064912000000000000000000000000000000000F5 +S315E064913000E4D0C00000000000E4D0CC00E4D0D865 +S315E064914000000000000000000000000000000000D5 +S315E064915000E4D0E40000000000000000000000002D +S315E064916000E4D0F000000000000000000000000011 +S315E0649170000000000000000000E4D0FC00000000F5 +S315E06491800000000000E4D10800E4D11C0000000007 +S315E0649190000000000000000000E4D12800000000A8 +S315E06491A0000000000000000000E4D134000000008C +S315E06491B000000000000000000000000000E4D14070 +S315E06491C000E4D15400E4D160000000000000000037 +S315E06491D000000000000000000000000000E4D16C24 +S315E06491E00000000000000000000000000000000035 +S315E06491F000E4D17800E4D18400E4D190000000007A +S315E06492000000000000000000000000000000000014 +S315E06492100000000000000000000000000000000004 +S315E064922000000000000000000000000000000000F4 +S315E06492300000000000E4D19C000000000000000093 +S315E0649240000000000000000000E4D1A800E4D1B40E +S315E06492500000000000E4D1C000000000000000004F +S315E064926000000000000000000000000000000000B4 +S315E064927000000000000000000000000000000000A4 +S315E0649280000000000000000000E4D1CC0000000013 +S315E064929000E4D1D8000000000000000000000000F7 +S315E06492A00000000000000000000000000000000074 +S315E06492B00000000000E4D1E40000000000E4D1F026 +S315E06492C00000000000000000000000000000000054 +S315E06492D00000000000000000000000000000000044 +S315E06492E00000000000000000000000000000000034 +S315E06492F00000000000000000000000000000000024 +S315E06493000000000000E4D1FC000000000000000062 +S315E06493100000000000E4D208000000000000000045 +S315E064932000E4D21400000000000000000000000029 +S315E064933000000000000000000000000000000000E3 +S315E06493400000000000E4D2280000000000000000F5 +S315E064935000000000000000000000000000000000C3 +S315E064936000000000000000000000000000000000B3 +S315E064937000E4D234000000000000000000000000B9 +S315E064938000000000000000000000000000E4D2409D +S315E0649390000000000000000000E4D24C0000000081 +S315E06493A00000000000000000000000000000000073 +S315E06493B000000000000000000000000000E4D25855 +S315E06493C00000000000000000000000000000000053 +S315E06493D00000000000E4D264000000000000000029 +S315E06493E000000000000000000000000000E4D2700D +S315E06493F00000000000000000000000000000000023 +S315E064940000000000000000000000000000E4D27CE0 +S315E06494100000000000000000000000000000000002 +S315E064942000000000000000000000000000000000F2 +S315E064943000000000000000000000000000000000E2 +S315E064944000000000000000000000000000000000D2 +S315E064945000E4D28800000000000000000000000084 +S315E064946000000000000000000000000000E4D29C60 +S315E064947000000000000000000000000000000000A2 +S315E06494800000000000000000000000000000000092 +S315E064949000E4D2A80000000000E4D2B400E4D2C044 +S315E06494A00000000000000000000000000000000072 +S315E06494B000000000000000000000000000E4D2CCE0 +S315E06494C00000000000000000000000000000000052 +S315E06494D000E4D2D8000000000000000000000000B4 +S315E06494E00000000000000000000000000000000032 +S315E06494F00000000000000000000000000000000022 +S315E06495000000000000000000000000000000000011 +S315E06495100000000000E4D2EC00E4D2F800000000B1 +S315E064952000E4D30400000000000000000000000036 +S315E0649530000000000000000000E4D31000E4D31C47 +S315E0649540000000000000000000E4D32800000000F2 +S315E0649550000000000000000000E4D33400000000D6 +S315E064956000000000000000000000000000000000B1 +S315E06495700000000000E4D34000E4D34C00000000A7 +S315E064958000000000000000000000000000E4D35882 +S315E06495900000000000E4D364000000000000000066 +S315E06495A00000000000000000000000000000000071 +S315E06495B00000000000000000000000000000000061 +S315E06495C00000000000E4D37000000000000000002A +S315E06495D00000000000E4D37C00000000000000000E +S315E06495E00000000000000000000000000000000031 +S315E06495F00000000000000000000000000000000021 +S315E06496000000000000000000000000000000000010 +S315E06496100000000000000000000000000000000000 +S315E064962000000000000000000000000000000000F0 +S315E064963000000000000000000000000000000000E0 +S315E064964000000000000000000000000000000000D0 +S315E064965000000000000000000000000000000000C0 +S315E064966000000000000000000000000000000000B0 +S315E064967000000000000000000000000000000000A0 +S315E06496800000000000000000000000000000000090 +S315E06496900000000000E4D388000000000000000041 +S315E06496A00000000000E4D394000000000000000025 +S315E06496B00000000000000000000000000000000060 +S315E06496C00000000000000000000000000000000050 +S315E06496D0000000000000000000E4D3A000000000E9 +S315E06496E00000000000000000000000000000000030 +S315E06496F00000000000000000000000000000000020 +S315E0649700000000000000000000E4D3AC00000000AC +S315E0649710000000000000000000E4D3B800E4D3C415 +S315E064972000000000000000000000000000000000EF +S315E064973000000000000000000000000000000000DF +S315E06497400000000000E4D3D00000000000E4D3DCB5 +S315E064975000000000000000000000000000000000BF +S315E064976000000000000000000000000000E4D3E810 +S315E0649770000000000000000000000000000000009F +S315E0649780000000000000000000E4D3F400000000E4 +S315E0649790000000000000000000000000000000007F +S315E06497A00000000000E4D4000000000000000000B7 +S315E06497B000E4D40C0000000000E4D41800000000CB +S315E06497C0000000000000000000000000000000004F +S315E06497D0000000000000000000E4D4240000000063 +S315E06497E0000000000000000000000000000000002F +S315E06497F000E4D4300000000000E4D43C0000000043 +S315E0649800000000000000000000000000000000000E +S315E064981000E4D448000000000000000000000000FE +S315E064982000000000000000000000000000000000EE +S315E064983000E4D454000000000000000000000000D2 +S315E06498400000000000E4D4600000000000000000B6 +S315E064985000000000000000000000000000000000BE +S315E064986000000000000000000000000000000000AE +S315E0649870000000000000000000E4D46C000000007A +S315E064988000E4D4780000000000000000000000005E +S315E06498900000000000E4D494000000000000000032 +S315E06498A000E4D4A00000000000E4D4AC00000000B2 +S315E06498B0000000000000000000000000000000005E +S315E06498C0000000000000000000000000000000004E +S315E06498D0000000000000000000000000000000003E +S315E06498E0000000000000000000000000000000002E +S315E06498F0000000000000000000000000000000001E +S315E06499000000000000E4D4B80000000000E4D4C421 +S315E0649910000000000000000000E4D4D00000000075 +S315E0649920000000000000000000E4D4DC0000000059 +S315E064993000000000000000000000000000E4D4E83D +S315E064994000000000000000000000000000000000CD +S315E064995000E4D4FC000000000000000000E4D50848 +S315E064996000000000000000000000000000000000AD +S315E06499700000000000E4D5140000000000000000D0 +S315E0649980000000000000000000000000000000008D +S315E0649990000000000000000000000000000000007D +S315E06499A0000000000000000000000000000000006D +S315E06499B000E4D52000000000000000000000000084 +S315E06499C000E4D52C00000000000000000000000068 +S315E06499D0000000000000000000000000000000003D +S315E06499E0000000000000000000000000000000002D +S315E06499F00000000000E4D53800000000000000002C +S315E0649A00000000000000000000000000000000000C +S315E0649A10000000000000000000E4D54C00000000F7 +S315E0649A2000000000000000000000000000000000EC +S315E0649A3000E4D558000000000000000000000000CB +S315E0649A4000000000000000000000000000E4D564AF +S315E0649A5000E4D5700000000000E4D57C000000005E +S315E0649A6000000000000000000000000000000000AC +S315E0649A70000000000000000000000000000000009C +S315E0649A80000000000000000000E4D58800E4D594FE +S315E0649A90000000000000000000000000000000007C +S315E0649AA000000000000000000000000000E4D5A013 +S315E0649AB0000000000000000000000000000000005C +S315E0649AC0000000000000000000000000000000004C +S315E0649AD0000000000000000000000000000000003C +S315E0649AE0000000000000000000000000000000002C +S315E0649AF0000000000000000000000000000000001C +S315E0649B00000000000000000000000000000000000B +S315E0649B100000000000E4D5AC000000000000000096 +S315E0649B20000000000000000000E4D5B8000000007A +S315E0649B3000000000000000000000000000000000DB +S315E0649B4000000000000000000000000000E4D5C44E +S315E0649B50000000000000000000E4D5D00000000032 +S315E0649B60000000000000000000E4D5DC0000000016 +S315E0649B70000000000000000000000000000000009B +S315E0649B80000000000000000000000000000000008B +S315E0649B90000000000000000000000000000000007B +S315E0649BA00000000000E4D5E80000000000000000CA +S315E0649BB00000000000E4D5F40000000000000000AE +S315E0649BC0000000000000000000000000000000004B +S315E0649BD000E4D60000000000000000000000000081 +S315E0649BE0000000000000000000E4D60C0000000065 +S315E0649BF000000000000000000000000000E4D61849 +S315E0649C00000000000000000000E4D62C0000000024 +S315E0649C1000000000000000000000000000000000FA +S315E0649C2000E4D638000000000000000000000000F8 +S315E0649C3000000000000000000000000000E4D644DC +S315E0649C4000E4D65000E4D65C0000000000000000AA +S315E0649C5000E4D66800000000000000000000000098 +S315E0649C600000000000E4D67400000000000000007C +S315E0649C70000000000000000000000000000000009A +S315E0649C800000000000E4D680000000000000000050 +S315E0649C900000000000E4D68C0000000000E4D698E2 +S315E0649CA000000000000000000000000000E4D6AC04 +S315E0649CB000000000000000000000000000E4D6B8E8 +S315E0649CC00000000000E4D6C400E4D6D00000000042 +S315E0649CD0000000000000000000000000000000003A +S315E0649CE0000000000000000000000000000000002A +S315E0649CF0000000000000000000000000000000001A +S315E0649D000000000000000000000000000000000009 +S315E0649D1000000000000000000000000000000000F9 +S315E0649D2000000000000000000000000000000000E9 +S315E0649D3000000000000000000000000000000000D9 +S315E0649D4000E4D6DC00000000000000000000000033 +S315E0649D5000000000000000000000000000000000B9 +S315E0649D6000000000000000000000000000000000A9 +S315E0649D700000000000000000000000000000000099 +S315E0649D800000000000000000000000000000000089 +S315E0649D900000000000000000000000000000000079 +S315E0649DA00000000000E4D6F00000000000000000BF +S315E0649DB00000000000E4D6FC0000000000000000A3 +S315E0649DC00000000000000000000000000000000049 +S315E0649DD00000000000000000000000000000000039 +S315E0649DE000000000000000000000000000E4D70866 +S315E0649DF00000000000000000000000000000000019 +S315E0649E000000000000000000000000000000000008 +S315E0649E1000000000000000000000000000000000F8 +S315E0649E20000000000000000000E4D71400E4D7203E +S315E0649E3000000000000000000000000000000000D8 +S315E0649E4000E4D72C000000000000000000000000E1 +S315E0649E5000000000000000000000000000E4D738C5 +S315E0649E6000E4D74C000000000000000000000000A1 +S315E0649E700000000000000000000000000000000098 +S315E0649E80000000000000000000E4D7580000000075 +S315E0649E9000000000000000000000000000E4D76459 +S315E0649EA00000000000000000000000000000000068 +S315E0649EB00000000000000000000000000000000058 +S315E0649EC00000000000000000000000000000000048 +S315E0649ED000000000000000000000000000E4D7700D +S315E0649EE000000000000000000000000000E4D77CF1 +S315E0649EF00000000000000000000000000000000018 +S315E0649F000000000000E4D7880000000000E4D79475 +S315E0649F1000E4D7A00000000000E4D7AC0000000035 +S315E0649F2000000000000000000000000000000000E7 +S315E0649F3000000000000000000000000000000000D7 +S315E0649F4000000000000000000000000000000000C7 +S315E0649F5000000000000000000000000000000000B7 +S315E0649F6000000000000000000000000000000000A7 +S315E0649F7000000000000000000000000000E4D7B824 +S315E0649F80000000000000000000E4D7C40000000008 +S315E0649F900000000000000000000000000000000077 +S315E0649FA00000000000000000000000000000000067 +S315E0649FB00000000000000000000000000000000057 +S315E0649FC00000000000000000000000000000000047 +S315E0649FD00000000000000000000000000000000037 +S315E0649FE00000000000000000000000000000000027 +S315E0649FF00000000000000000000000000000000017 +S315E064A0000000000000000000000000000000000006 +S315E064A01000000000000000000000000000000000F6 +S315E064A02000000000000000000000000000000000E6 +S315E064A030000000000000000000E4D7D0000000004B +S315E064A04000000000000000000000000000000000C6 +S315E064A05000000000000000000000000000000000B6 +S315E064A06000E4D7DC0000000000000000000000000F +S315E064A0700000000000000000000000000000000096 +S315E064A0800000000000000000000000000000000086 +S315E064A0900000000000000000000000000000000076 +S315E064A0A00000000000000000000000000000000066 +S315E064A0B00000000000E4D7E80000000000000000B3 +S315E064A0C00000000000000000000000000000000046 +S315E064A0D0000000000000000000E4D7FC000000007F +S315E064A0E00000000000000000000000000000000026 +S315E064A0F00000000000000000000000000000000016 +S315E064A1000000000000000000000000000000000005 +S315E064A1100000000000E4D808000000000000000031 +S315E064A12000000000000000000000000000000000E5 +S315E064A1300000000000E4D81C0000000000E4D82819 +S315E064A14000E4D834000000000000000000000000D5 +S315E064A1500000000000E4D8400000000000000000B9 +S315E064A1600000000000E4D84C00000000000000009D +S315E064A17000000000000000000000000000E4D85881 +S315E064A180000000000000000000E4D86400E4D87831 +S315E064A19000000000000000000000000000E4D88435 +S315E064A1A000000000000000000000000000E4D89019 +S315E064A1B00000000000000000000000000000000055 +S315E064A1C000E4D89C00E4D8B000E4D8BC0000000009 +S315E064A1D00000000000000000000000000000000035 +S315E064A1E000E4D8C8000000000000000000000000A1 +S315E064A1F00000000000E4D8D400E4D8E000E4D8EC41 +S315E064A2000000000000000000000000000000000004 +S315E064A21000000000000000000000000000000000F4 +S315E064A22000000000000000000000000000000000E4 +S315E064A230000000000000000000E4D8F80000000020 +S315E064A24000000000000000000000000000E4D90403 +S315E064A25000E4D9100000000000E4D91C000000000E +S315E064A26000000000000000000000000000000000A4 +S315E064A2700000000000000000000000000000000094 +S315E064A28000000000000000000000000000E4D9289F +S315E064A2900000000000E4D934000000000000000083 +S315E064A2A00000000000000000000000000000000064 +S315E064A2B0000000000000000000E4D9400000000057 +S315E064A2C000E4D94C0000000000000000000000003B +S315E064A2D00000000000000000000000000000000034 +S315E064A2E00000000000000000000000000000000024 +S315E064A2F00000000000000000000000000000000014 +S315E064A300000000000000000000E4D95800000000EE +S315E064A310000000000000000000E4D96400000000D2 +S315E064A3200000000000E4D9700000000000000000B6 +S315E064A33000000000000000000000000000000000D3 +S315E064A340000000000000000000E4D9840000000082 +S315E064A35000000000000000000000000000000000B3 +S315E064A36000000000000000000000000000000000A3 +S315E064A3700000000000E4D990000000000000000046 +S315E064A3800000000000000000000000000000000083 +S315E064A39000E4D99C000000000000000000E4D9A8B5 +S315E064A3A00000000000000000000000000000000063 +S315E064A3B00000000000000000000000000000000053 +S315E064A3C000E4D9B4000000000000000000000000D2 +S315E064A3D0000000000000000000E4D9C000000000B6 +S315E064A3E00000000000000000000000000000000023 +S315E064A3F000E4D9CC0000000000000000000000008A +S315E064A4000000000000000000000000000000000002 +S315E064A41000E4D9D80000000000000000000000005D +S315E064A42000000000000000000000000000000000E2 +S315E064A43000000000000000000000000000000000D2 +S315E064A44000000000000000000000000000000000C2 +S315E064A4500000000000E4D9E4000000000000000011 +S315E064A46000000000000000000000000000000000A2 +S315E064A47000E4D9F8000000000000000000000000DD +S315E064A4800000000000000000000000000000000082 +S315E064A4900000000000E4DA040000000000E4DA10E2 +S315E064A4A000E4DA1C00000000000000000000000088 +S315E064A4B00000000000000000000000000000000052 +S315E064A4C000E4DA280000000000000000000000005C +S315E064A4D00000000000E4DA34000000000000000040 +S315E064A4E000E4DA480000000000000000000000001C +S315E064A4F00000000000000000000000000000000012 +S315E064A5000000000000000000000000000000000001 +S315E064A510000000000000000000E4DA5400E4DA60C1 +S315E064A5200000000000E4DA6C0000000000000000B7 +S315E064A53000000000000000000000000000E4DA789B +S315E064A54000E4DA84000000000000000000E4DA9031 +S315E064A55000000000000000000000000000E4DA9C57 +S315E064A56000000000000000000000000000000000A1 +S315E064A570000000000000000000E4DAA800E4DAB4B9 +S315E064A5800000000000000000000000000000000081 +S315E064A59000E4DAC00000000000E4DACC0000000069 +S315E064A5A00000000000000000000000000000000061 +S315E064A5B00000000000000000000000000000000051 +S315E064A5C0000000000000000000E4DAD800000000AB +S315E064A5D0000000000000000000E4DAE4000000008F +S315E064A5E00000000000000000000000000000000021 +S315E064A5F00000000000000000000000000000000011 +S315E064A6000000000000000000000000000000000000 +S315E064A61000000000000000000000000000000000F0 +S315E064A62000000000000000000000000000000000E0 +S315E064A63000000000000000000000000000000000D0 +S315E064A64000000000000000000000000000000000C0 +S315E064A65000000000000000000000000000000000B0 +S315E064A66000000000000000000000000000000000A0 +S315E064A6700000000000000000000000000000000090 +S315E064A6800000000000000000000000000000000080 +S315E064A690000000000000000000E4DAF000000000C2 +S315E064A6A0000000000000000000E4DAFC00000000A6 +S315E064A6B00000000000000000000000000000000050 +S315E064A6C00000000000000000000000000000000040 +S315E064A6D000000000000000000000000000E4DB0869 +S315E064A6E00000000000000000000000000000000020 +S315E064A6F00000000000000000000000000000000010 +S315E064A70000000000000000000000000000E4DB142C +S315E064A71000000000000000000000000000E4DB2010 +S315E064A72000E4DB2C000000000000000000000000F4 +S315E064A73000000000000000000000000000000000CF +S315E064A740000000000000000000E4DB3800000000C8 +S315E064A75000E4DB44000000000000000000000000AC +S315E064A760000000000000000000000000000000009F +S315E064A77000E4DB5000000000000000000000000080 +S315E064A78000000000000000000000000000E4DB5C64 +S315E064A790000000000000000000000000000000006F +S315E064A7A0000000000000000000E4DB680000000038 +S315E064A7B00000000000E4DB740000000000E4DB80DD +S315E064A7C0000000000000000000000000000000003F +S315E064A7D000000000000000000000000000E4DB8CE4 +S315E064A7E0000000000000000000000000000000001F +S315E064A7F00000000000E4DB980000000000E4DBA455 +S315E064A80000000000000000000000000000000000FE +S315E064A8100000000000E4DBB000E0FA7D0000000028 +S315E064A82000E4DBB100E0FBA60000000000E4DC2EFF +S315E064A83000E0FC350000000000E4DC3E00E0FC4A99 +S315E064A8400000000000E4DC5900E0FC6700E4DC6042 +S315E064A85000E0FC6E00E4DC8800E0FC9300000000AD +S315E064A86000E4DC9800E0FCA40000000000E4DD31D4 +S315E064A87000E0FD590000000000E4DD4600E0FD6E06 +S315E064A8800000000000E4DD5A00E0FD810000000005 +S315E064A89000E4DD7400E0FDA10000000000E4DD8D6D +S315E064A8A000E0FDB70000000000E4DDAD00E0FDDEA1 +S315E064A8B00000000000E4DDCC00E0FDF900E4DDD753 +S315E064A8C000E0FE050000000000E4DDE700E0FE11C4 +S315E064A8D00000000000E4DDFB00E0FE26000000006E +S315E064A8E000E4DE1000E0FE370000000000E4DE5223 +S315E064A8F000E0FE790000000000E4DE5C00E0FE8C2F +S315E064A9000000000000E4DE7100E0FEA000E4DE90FA +S315E064A91000E0FEB30000000000E4DEA400E0FEC652 +S315E064A9200000000000E4DEB100E0FED200000000BA +S315E064A93000E4DECE00E0FEF50000000000E4DEDFC9 +S315E064A94000E0FF090000000000E4DF0500E0FF30FE +S315E064A9500000000000E4DF1D00E0FF4D00000000A1 +S315E064A96000E4DFF200E1000E0000000000E4E0072E +S315E064A97000E100200000000000E4E00E00E10028B1 +S315E064A9800000000000E4E03300E1004D0000000058 +S315E064A99000E4E0C600E100E60000000000E4E173E4 +S315E064A9A000E1018B0000000000E4E18B00E101A519 +S315E064A9B00000000000E4E1B200E101CB0000000029 +S315E064A9C000E4E1CE00E101E90000000000E4E1D149 +S315E064A9D000E101EC0000000000E4E1E500E101FFD4 +S315E064A9E00000000000E4E1F500E1021300E4E204A3 +S315E064A9F000E102220000000000E4E20D00E1022E24 +S315E064AA000000000000E4E24700E102730000000099 +S315E064AA1000E4E2B500E102D70000000000E4E2B839 +S315E064AA2000E102DB0000000000E4E2BB00E102DEDC +S315E064AA300000000000E4E2C000E102E5000000007E +S315E064AA4000E4E2CF00E102F50000000000E4E2DBAE +S315E064AA5000E103000000000000E4E2F100E1031716 +S315E064AA600000000000E4E30500E1032C00E4E31EDB +S315E064AA7000E1034A0000000000E4E3B200E103E819 +S315E064AA800000000000E4E3C900E104020000000005 +S315E064AA9000E4E3E400E104200000000000E4E3F104 +S315E064AAA000E1042A0000000000E4E45200E10494BA +S315E064AAB000E4E47100E104B30000000000E4E47D36 +S315E064AAC000E104BF0000000000E4E49900E104E86A +S315E064AAD00000000000E4E4E800E10548000000004E +S315E064AAE000E4E4FF00E1055D0000000000E4E51237 +S315E064AAF000E105720000000000E4E51B00E1057B6F +S315E064AB000000000000E4E53600E1059900E4E53E76 +S315E064AB1000E105A30000000000E4E55200E105B9A8 +S315E064AB200000000000E4E55F00E105C70000000006 +S315E064AB3000E4E56C00E105D40000000000E4E57D96 +S315E064AB4000E105EB0000000000E4E5F700E10673D0 +S315E064AB500000000000E4E5FC00E106780000000087 +S315E064AB6000E4E60600E106860000000000E4E62272 +S315E064AB7000E106A00000000000E4E66E00E10703E1 +S315E064AB800000000000E4E72400E107940000000010 +S315E064AB9000E4E72F00E1079B0000000000E4E737EC +S315E064ABA000E107A50000000000E4E7AD00E1081855 +S315E064ABB00000000000E4E7B400E1082200E4E7BB3B +S315E064ABC000E1082B0000000000E4E7D700E1084D4F +S315E064ABD00000000000E4E7EC00E1086600E4E7F367 +S315E064ABE000E108700000000000E4E80F00E1089569 +S315E064ABF00000000000E4E82F00E108B60000000071 +S315E064AC0000E4E83A00E108C30000000000E4E85A22 +S315E064AC1000E108E10000000000E4E86F00E108F408 +S315E064AC200000000000E4E88800E109130000000089 +S315E064AC3000E4E92D00E109C100E4E95200E109E636 +S315E064AC400000000000E4E95A00E109F000000000B9 +S315E064AC5000E4E96E00E10A010000000000E4E98036 +S315E064AC6000E10A150000000000E4E98600E10A1A42 +S315E064AC7000E4E99600E10A2D0000000000E4E9B88A +S315E064AC8000E10A4E0000000000E4E9CD00E10A6458 +S315E064AC900000000000E4E9D100E10A680000000079 +S315E064ACA000E4E9DC00E10A750000000000E4E9F193 +S315E064ACB000E10A8A0000000000E4EA0700E10AA570 +S315E064ACC00000000000E4EA2600E10AC40000000097 +S315E064ACD000E4EA3200E10AD10000000000E4EA3E62 +S315E064ACE000E10ADF0000000000E4EA5300E10AEC58 +S315E064ACF00000000000E4EA5B00E10AF50000000001 +S315E064AD0000E4EA6E00E10B070000000000E4EA728A +S315E064AD1000E10B0B0000000000E4EA8600E10B1F93 +S315E064AD200000000000E4EA9700E10B2D000000005B +S315E064AD3000E4EAA500E10B3D0000000000E4EABCA3 +S315E064AD4000E10B5200E4EAD300E10B6B0000000083 +S315E064AD5000E4EAED00E10B830000000000E4EB8A26 +S315E064AD6000E10C250000000000E4EB9400E10C2F08 +S315E064AD700000000000E4EBB100E10C4B00000000D1 +S315E064AD8000E4EBBF00E10C550000000000E4EC8158 +S315E064AD9000E10D000000000000E4ED0F00E10D9815 +S315E064ADA00000000000E4ED8F00E10E050000000005 +S315E064ADB000E4ED9600E10E0D00E4EE5700E10ECB03 +S315E064ADC00000000000E4EE7000E10EE40000000024 +S315E064ADD000E4EE7B00E10EF50000000000E4EF180D +S315E064ADE000E10FB50000000000E4EF6600E10FF259 +S315E064ADF00000000000E4F01A00E1109D000000008D +S315E064AE0000E4F0D800E1118400E4F0E100E111909F +S315E064AE100000000000E4F17500E112140000000097 +S315E064AE2000E4F19900E112370000000000E4F1ACBF +S315E064AE3000E1124C0000000000E4F1C500E1126696 +S315E064AE400000000000E4F25D00E112F90000000099 +S315E064AE5000E4F26C00E1130D0000000000E4F31876 +S315E064AE6000E113BA0000000000E4F33300E113D418 +S315E064AE700000000000E4F35700E113FA000000006C +S315E064AE8000E4F3EB00E114980000000000E4F3F55D +S315E064AE9000E114A40000000000E4F41700E114C427 +S315E064AEA00000000000E4F42B00E114D5000000008B +S315E064AEB000E4F43400E114DE0000000000E4F43B56 +S315E064AEC000E114E70000000000E4F44800E114F552 +S315E064AED00000000000E4F45C00E1150500000000F9 +S315E064AEE000E4F47100E1151A0000000000E4F4796E +S315E064AEF000E115220000000000E4F48100E1152A77 +S315E064AF000000000000E4F4A900E11552000000002E +S315E064AF1000E4F4CD00E115760000000000E4F56499 +S315E064AF2000E1162A0000000000E4F56E00E1163444 +S315E064AF300000000000E4F58B00E116540000000018 +S315E064AF4000E4F63600E116F30000000000E4F6C320 +S315E064AF5000E1178B0000000000E4F75C00E1182CC8 +S315E064AF600000000000E4F76D00E118420000000014 +S315E064AF7000E4F78700E1185F0000000000E4DBB05E +S315E064AF8000E1188D0000000000E4DBB100E119BCCB +S315E064AF900000000000E4DC2E00E11A580000000026 +S315E064AFA000E4DC3E00E11A6A0000000000E4DC59DB +S315E064AFB000E0FC6700E4DC6000E11A8400E4DC881D +S315E064AFC000E11AAB0000000000E4DC9800E11ABF7F +S315E064AFD00000000000E4DD3100E11B6E00000000CB +S315E064AFE000E4DD4600E11B830000000000E4DD5A76 +S315E064AFF000E11B970000000000E4DD7400E11BB48F +S315E064B0000000000000E4DD8D00E11BD000000000DC +S315E064B01000E4DDAD00E11BEF0000000000E4DDCC00 +S315E064B02000E11C0D00E4DDD700E11C19000000001E +S315E064B03000E4DDE700E11C2A0000000000E4DDFB3B +S315E064B04000E11C3B0000000000E4DE1000E11C515E +S315E064B0500000000000E4DE5200E11C920000000003 +S315E064B06000E4DE5C00E11C9C0000000000E4DE71AC +S315E064B07000E11CB500E4DE9000E11CD400000000B1 +S315E064B08000E4DEA400E11CE40000000000E4DEB1BC +S315E064B09000E11CF20000000000E4DECE00E11D0EDB +S315E064B0A00000000000E4DEDF00E11D240000000093 +S315E064B0B000E4DF0500E11D470000000000E4DF1D59 +S315E064B0C000E11D610000000000E4DFF200E11E2003 +S315E064B0D00000000000E4E00700E11E350000000027 +S315E064B0E000E4E00E00E11E3D0000000000E4E03311 +S315E064B0F000E11E620000000000E4E0C600E11F1704 +S315E064B1000000000000E4E17300E11FC300000000FA +S315E064B11000E4E18B00E11FDD0000000000E4E1B241 +S315E064B12000E11FFF0000000000E4E1CE00E101E978 +S315E064B1300000000000E4E1D100E1201D0000000011 +S315E064B14000E4E1E500E120310000000000E4E1F51F +S315E064B15000E1021300E4E20400E1204400000000A0 +S315E064B16000E4E20D00E1204C0000000000E4E24768 +S315E064B17000E120940000000000E4E2B500E120FA7A +S315E064B1800000000000E4E2B800E120FF00000000F7 +S315E064B19000E4E2BB00E121020000000000E4E2C05A +S315E064B1A000E121090000000000E4E2CF00E121189B +S315E064B1B00000000000E4E2DB00E12123000000007F +S315E064B1C000E4E2F100E121390000000000E4E31E5E +S315E064B1D000E1214D00E4E30500E121B60000000052 +S315E064B1E000E4E3B200E121D10000000000E4E3C939 +S315E064B1F000E121EC0000000000E4E3E400E1220861 +S315E064B2000000000000E4E3F100E122120000000027 +S315E064B21000E4E45200E1226A00E4E47100E1228998 +S315E064B2200000000000E4E47D00E1229300000000F9 +S315E064B23000E4E49900E122BB0000000000E4E4E8F5 +S315E064B24000E123120000000000E4E4FF00E1232AA9 +S315E064B2500000000000E4E51200E1233D0000000088 +S315E064B26000E4E51B00E123460000000000E4E53667 +S315E064B27000E1236400E4E53E00E1237100000000A0 +S315E064B28000E4E55200E123890000000000E4E55FA4 +S315E064B29000E123980000000000E4E56C00E123A6E9 +S315E064B2A00000000000E4E57D00E123B60000000054 +S315E064B2B000E4E5F700E106730000000000E4E5FC65 +S315E064B2C000E124280000000000E4E60600E1243200 +S315E064B2D00000000000E4E62200E1245000000000E3 +S315E064B2E000E4E66E00E124B90000000000E4E7242F +S315E064B2F000E1255B0000000000E4E72F00E125653E +S315E064B3000000000000E4E73700E1256D000000007E +S315E064B31000E4E7AD00E126170000000000E4E7B4CE +S315E064B32000E1262000E4E7BB00E1262700000000F8 +S315E064B33000E4E7D700E1263E0000000000E4E7EC25 +S315E064B34000E1265B00E4E7F300E126630000000029 +S315E064B35000E4E80F00E1267C0000000000E4E82F4A +S315E064B36000E1269A0000000000E4E83A00E126A73E +S315E064B3700000000000E4E85A00E126C40000000092 +S315E064B38000E4E86F00E126D90000000000E4E88804 +S315E064B39000E126F30000000000E4E92D00E127AABD +S315E064B3A000E4E95200E127CB0000000000E4E95A3A +S315E064B3B000E127D30000000000E4E96E00E127E73E +S315E064B3C00000000000E4E98000E127F900000000E5 +S315E064B3D000E4E98600E127FF00E4E99600E1280F4E +S315E064B3E00000000000E4E9B800E1282A000000005B +S315E064B3F000E4E9CD00E1283F0000000000E4E9D183 +S315E064B40000E128430000000000E4E9DC00E12850A4 +S315E064B4100000000000E4E9F100E1286500000000B6 +S315E064B42000E4EA0700E1287C0000000000E4EA2684 +S315E064B43000E1289B0000000000E4EA3200E128A96C +S315E064B4400000000000E4EA3E00E128BA00000000E3 +S315E064B45000E4EA5300E128CF0000000000E4EA5B80 +S315E064B46000E128DA0000000000E4EA6E00E128EE7C +S315E064B4700000000000E4EA7200E128F10000000048 +S315E064B48000E4EA8600E10B1F0000000000E4EA97AE +S315E064B49000E129050000000000E4EAA500E12916C0 +S315E064B4A00000000000E4EABC00E1292E00E4EAD3EF +S315E064B4B000E1294A0000000000E4EAED00E12969C0 +S315E064B4C00000000000E4EB8A00E12A0B00000000C3 +S315E064B4D000E4EB9400E12A160000000000E4EBB11E +S315E064B4E000E12A330000000000E4EBBF00E12A3B00 +S315E064B4F00000000000E4EC8100E12AEB00000000BB +S315E064B50000E4ED0F00E12B6C0000000000E4ED8F39 +S315E064B51000E12BF30000000000E4EE5700E12BFDB0 +S315E064B52000E4ED9600E12C160000000000E4EE7005 +S315E064B53000E12CC90000000000E4EE7B00E12CD5BC +S315E064B5400000000000E4EF1800E12D730000000045 +S315E064B55000E4EF6600E12DC00000000000E4F01AAC +S315E064B56000E12E790000000000E4F0D800E12F4508 +S315E064B57000E4F0E100E12F500000000000E4F199FE +S315E064B58000E12FD10000000000E4F1AC00E12FE619 +S315E064B5900000000000E4F1C500E1300100000000B5 +S315E064B5A000E4F25D00E130B10000000000E4F26C1A +S315E064B5B000E130C40000000000E4F31800E1317FEC +S315E064B5C00000000000E4F33300E1319A000000007B +S315E064B5D000E4F35700E131BE0000000000E4F3EB61 +S315E064B5E000E132480000000000E4F3F500E1325285 +S315E064B5F00000000000E4F41700E1326F0000000090 +S315E064B60000E4F42B00E132830000000000E4F4344B +S315E064B61000E1328C0000000000E4F43B00E1329586 +S315E064B6200000000000E4F44800E132A200000000FB +S315E064B63000E4F45C00E132B60000000000E4F4717A +S315E064B64000E132CB0000000000E4F47900E1152269 +S315E064B6500000000000E4F48100E132D30000000061 +S315E064B66000E4F4A900E132FD0000000000E4F4CD5A +S315E064B67000E1330B0000000000E4F56400E133AD63 +S315E064B6800000000000E4F56E00E133B7000000005E +S315E064B69000E4F58B00E133CF0000000000E4F63609 +S315E064B6A000E134680000000000E4F6C300E1350818 +S315E064B6B00000000000E4F75C00E135B7000000003C +S315E064B6C000E4F76D00E135C90000000000E4F787A7 +S315E064B6D000E135E30000000000E4DBB000E1360F92 +S315E064B6E00000000000E4DBB100E1375C000000002C +S315E064B6F000E4DC2E00E137DB0000000000E4DC3E21 +S315E064B70000E137EC0000000000E4DC5900E0FC678F +S315E064B71000E4DC6000E1380800E4DC8800E1382518 +S315E064B7200000000000E4DC9800E1383B0000000023 +S315E064B73000E4DD3100E138CA0000000000E4DD46E3 +S315E064B74000E138DC0000000000E4DD5A00E138F096 +S315E064B7500000000000E4DD7400E139100000000040 +S315E064B76000E4DD8D00E1392D0000000000E4DDAD8C +S315E064B77000E1394F0000000000E4DDCC00E139630C +S315E064B78000E4DDD700E1396D0000000000E4DDE7A8 +S315E064B79000E1397F0000000000E4DDFB00E139945C +S315E064B7A00000000000E4DE1000E139AB00000000B8 +S315E064B7B000E4DE5200E139ED0000000000E4DE5C06 +S315E064B7C000E139FC0000000000E4DE7100E13A18B3 +S315E064B7D000E4DE9000E13A370000000000E4DEA415 +S315E064B7E000E13A4E0000000000E4DEB100E13A5ABE +S315E064B7F00000000000E4DECE00E13A7300000000E1 +S315E064B80000E4DEDF00E13A800000000000E4DF05EA +S315E064B81000E13AA30000000000E4DF1D00E13AB570 +S315E064B8200000000000E4DFF200E13B660000000097 +S315E064B83000E4E00700E13B790000000000E4E00E8C +S315E064B84000E13B7F0000000000E4E03300E13BA35D +S315E064B8500000000000E4E0C600E13C3200000000C5 +S315E064B86000E4E17300E13CD50000000000E4E18B14 +S315E064B87000E13CEC0000000000E4E1B200E13D0FD1 +S315E064B8800000000000E4E1CE00E101E90000000010 +S315E064B89000E4E1D100E13D2A0000000000E4E1E5D6 +S315E064B8A000E13D3E0000000000E4E1F500E13D52C8 +S315E064B8B000E4E20400E13D600000000000E4E20D23 +S315E064B8C000E13D6B0000000000E4E24700E13D9AE0 +S315E064B8D00000000000E4E2B500E13DE100000000A4 +S315E064B8E000E4E2B800E13DE40000000000E4E2BB0D +S315E064B8F000E13DEB0000000000E4E2C000E13DF45D +S315E064B9000000000000E4E2CF00E13E010000000038 +S315E064B91000E4E2DB00E13E0F0000000000E4E2F157 +S315E064B92000E13E220000000000E4E31E00E13E3355 +S315E064B93000E4E30500E13E820000000000E4E3B2D7 +S315E064B94000E13E9B0000000000E4E3C900E13EBA8A +S315E064B9500000000000E4E3E400E13ED500000000FE +S315E064B96000E4E3F100E13EE10000000000E4E452BB +S315E064B97000E13F3C00E4E47100E13F5B000000006D +S315E064B98000E4E47D00E13F640000000000E4E49943 +S315E064B99000E13F8B0000000000E4E4E800E13FE002 +S315E064B9A00000000000E4E4FF00E13FFC000000006A +S315E064B9B000E4E51200E1400B0000000000E4E51B52 +S315E064B9C000E140140000000000E4E53600E1402FA9 +S315E064B9D000E4E53E00E140360000000000E4E552A4 +S315E064B9E000E1404D0000000000E4E55F00E1405BFB +S315E064B9F00000000000E4E56C00E140640000000043 +S315E064BA0000E4E57D00E140720000000000E4E5F753 +S315E064BA1000E140D90000000000E4E5FC00E140E11B +S315E064BA200000000000E4E60600E140EB00000000F0 +S315E064BA3000E4E62200E141080000000000E4E66E6E +S315E064BA4000E141470000000000E4E72400E141BC76 +S315E064BA500000000000E4E72F00E141C900000000B7 +S315E064BA6000E4E73700E141D30000000000E4E7AD1D +S315E064BA7000E1424E0000000000E4E7B400E1425514 +S315E064BA8000E4E7BB00E1425E0000000000E4E7D7C3 +S315E064BA9000E142730000000000E4E7EC00E142925A +S315E064BAA000E4E7F300E1429C0000000000E4E80FF4 +S315E064BAB000E142BE0000000000E4E82F00E142DE5F +S315E064BAC00000000000E4E83A00E142EA0000000019 +S315E064BAD000E4E85A00E1430C0000000000E4E86F8B +S315E064BAE000E143220000000000E4E88800E1433E10 +S315E064BAF00000000000E4E92D00E143CC00E4E952F3 +S315E064BB0000E143E60000000000E4E95A00E143F0A6 +S315E064BB100000000000E4E96E00E144040000000077 +S315E064BB2000E4E98000E144140000000000E4E986F2 +S315E064BB3000E1441C00E4E99600E1442C00000000C6 +S315E064BB4000E4E9B800E1444C0000000000E4E9CD1B +S315E064BB5000E1445E0000000000E4E9D100E14463F2 +S315E064BB600000000000E4E9DC00E1446F000000004E +S315E064BB7000E4E9F100E144850000000000E4EA073E +S315E064BB8000E144960000000000E4EA2600E144B5E2 +S315E064BB900000000000E4EA3200E144C20000000074 +S315E064BBA000E4EA3E00E144CE0000000000E4EA532B +S315E064BBB000E144E40000000000E4EA5B00E144ECF8 +S315E064BBC00000000000E4EA6E00E144FF00000000CB +S315E064BBD000E4EA7200E145050000000000E4EA865C +S315E064BBE000E10B1F0000000000E4EA9700E145195C +S315E064BBF00000000000E4EAA500E14527000000003B +S315E064BC0000E4EABC00E1453C00E4EAD300E1455ADD +S315E064BC100000000000E4EAED00E145770000000082 +S315E064BC2000E4EB8A00E145F60000000000E4EB94F2 +S315E064BC3000E146020000000000E4EBB100E14619D1 +S315E064BC400000000000E4EBBF00E1462B00000000CA +S315E064BC5000E4EC8100E146DA0000000000E4ED0F68 +S315E064BC6000E147580000000000E4ED8F00E147B5CD +S315E064BC700000000000E4EE5700E147BC00E4ED9606 +S315E064BC8000E147D50000000000E4EE7000E1488181 +S315E064BC900000000000E4EE7B00E14889000000005B +S315E064BCA000E4EF1800E149180000000000E4EF66E4 +S315E064BCB000E1494B0000000000E4F01A00E149DECF +S315E064BCC00000000000E4F0D800E14A8700E4F0E117 +S315E064BCD000E14A8E0000000000E4F19900E14B00C7 +S315E064BCE00000000000E4F1AC00E14B12000000004B +S315E064BCF000E4F1C500E14B310000000000E4F25DD0 +S315E064BD0000E14BF00000000000E4F26C00E14BFF60 +S315E064BD100000000000E4F31800E14C8A0000000033 +S315E064BD2000E4F33300E14C9D0000000000E4F357C7 +S315E064BD3000E14CC10000000000E4F3EB00E14D5289 +S315E064BD400000000000E4F3F500E14D5D0000000052 +S315E064BD5000E4F41700E14D7D0000000000E4F42BFC +S315E064BD6000E14D910000000000E4F43400E14D9AF6 +S315E064BD700000000000E4F43B00E14DA10000000097 +S315E064BD8000E4F44800E14DAD0000000000E4F45C3A +S315E064BD9000E14DC10000000000E4F47100E14DD71C +S315E064BDA00000000000E4F47900E14DDC00000000EE +S315E064BDB000E4F48100E14DE30000000000E4F4A94E +S315E064BDC000E14E060000000000E4F4CD00E14E24FC +S315E064BDD00000000000E4F56400E14EC400000000E9 +S315E064BDE000E4F56E00E14ECF0000000000E4F58B60 +S315E064BDF000E14EEB0000000000E4F63600E14F752A +S315E064BE000000000000E4F6C300E14FF50000000026 +S315E064BE1000E4F75C00E150820000000000E4F76DA6 +S315E064BE2000E150930000000000E4F78700E150AEC3 +S315E064BE300000000000E4DBB000E150CC000000004C +S315E064BE4000E4DBB100E152080000000000E4DC2E0F +S315E064BE5000E152950000000000E4DC3E00E152A7F8 +S315E064BE600000000000E4DC5900E0FC6700E4DC600C +S315E064BE7000E152C500E4DC8800E152EC0000000019 +S315E064BE8000E4DC9800E152FE0000000000E4DD31ED +S315E064BE9000E1539B0000000000E4DD4600E153B29C +S315E064BEA00000000000E4DD5A00E153C60000000033 +S315E064BEB000E4DD7400E153E50000000000E4DD8D9C +S315E064BEC000E153FF0000000000E4DDAD00E1541B37 +S315E064BED00000000000E4DDCC00E1543100E4DDD78D +S315E064BEE000E1543D0000000000E4DDE700E1544772 +S315E064BEF00000000000E4DDFB00E1545B00000000AC +S315E064BF0000E4DE1000E1546A0000000000E4DE5262 +S315E064BF1000E154AB0000000000E4DE5C00E154B6EE +S315E064BF200000000000E4DE7100E154D400E4DE9039 +S315E064BF3000E154F30000000000E4DEA400E15507EC +S315E064BF400000000000E4DEB100E1551600000000E8 +S315E064BF5000E4DECE00E155340000000000E4DEDFFC +S315E064BF6000E155460000000000E4DF0500E1556AA3 +S315E064BF700000000000E4DF1D00E1558400000000DD +S315E064BF8000E4DFF200E156370000000000E4E00779 +S315E064BF9000E1564C0000000000E4E00E00E1565378 +S315E064BFA00000000000E4E03300E1567800000000A1 +S315E064BFB000E4E0C600E157060000000000E4E17337 +S315E064BFC000E157950000000000E4E18B00E157A929 +S315E064BFD00000000000E4E1B200E157CD000000009B +S315E064BFE000E4E1CE00E101E90000000000E4E1D113 +S315E064BFF000E157E90000000000E4E1E500E157FEF6 +S315E064C0000000000000E4E1F500E1581300E4E20416 +S315E064C01000E158200000000000E4E20D00E1582849 +S315E064C0200000000000E4E24700E1585E0000000022 +S315E064C03000E4E2B500E158B80000000000E4E2B8CC +S315E064C04000E158BB0000000000E4E2BB00E158BF39 +S315E064C0500000000000E4E2C000E158C8000000000F +S315E064C06000E4E2CF00E158D80000000000E4E2DB3F +S315E064C07000E158E20000000000E4E2F100E158F675 +S315E064C0800000000000E4E31E00E1590800E4E30573 +S315E064C09000E159910000000000E4E3B200E159A830 +S315E064C0A00000000000E4E3C900E159C200000000BA +S315E064C0B000E4E3E400E159DD0000000000E4E3F1BC +S315E064C0C000E159E70000000000E4E45200E15A357B +S315E064C0D000E4E47100E15A540000000000E4E47D09 +S315E064C0E000E15A5D0000000000E4E49900E15A7A58 +S315E064C0F00000000000E4E4E800E15AC0000000004B +S315E064C10000E4E4FF00E15ADA0000000000E4E5122E +S315E064C11000E15AEF0000000000E4E51B00E15AF894 +S315E064C1200000000000E4E53600E15B1300E4E53E70 +S315E064C13000E15B1E0000000000E4E55200E15B2FD5 +S315E064C1400000000000E4E55F00E15B3D0000000004 +S315E064C15000E4E56C00E15B4A0000000000E4E57D94 +S315E064C16000E15B5B0000000000E4E5F700E15BCA28 +S315E064C1700000000000E4E5FC00E15BD300000000A1 +S315E064C18000E4E60600E15BDD0000000000E4E62290 +S315E064C19000E15BFB0000000000E4E66E00E15C4564 +S315E064C1A00000000000E4E72400E15CED000000002C +S315E064C1B000E4E72F00E15CF80000000000E4E73704 +S315E064C1C000E15D010000000000E4E7AD00E15D6FC1 +S315E064C1D00000000000E4E7B400E1262000E4E7BBE9 +S315E064C1E000E15D770000000000E4E7D700E15D8CE4 +S315E064C1F00000000000E4E7EC00E15DA600E4E7F39C +S315E064C20000E15DAF0000000000E4E80F00E15DC816 +S315E064C2100000000000E4E82F00E15DE600000000B5 +S315E064C22000E4E83A00E15DF30000000000E4E85A67 +S315E064C23000E15E130000000000E4E86F00E15E28C0 +S315E064C2400000000000E4E88800E15E4300000000CE +S315E064C25000E4E92D00E15ED300E4E95200E15EF931 +S315E064C2600000000000E4E95A00E15F02000000001B +S315E064C27000E4E96E00E15F160000000000E4E98096 +S315E064C28000E15F240000000000E4E98600E15F2D40 +S315E064C29000E4E99600E15F3D0000000000E4E9B8EF +S315E064C2A000E15F5E0000000000E4E9CD00E158B81B +S315E064C2B00000000000E4E9D100E15F7100000000E5 +S315E064C2C000E4E9DC00E15F7E0000000000E4E9F1FF +S315E064C2D000E15F930000000000E4EA0700E15FA686 +S315E064C2E00000000000E4EA2600E15FC5000000000B +S315E064C2F000E4EA3200E15FD20000000000E4EA3ED6 +S315E064C30000E15FE20000000000E4EA5300E15FF769 +S315E064C3100000000000E4EA5B00E160000000000069 +S315E064C32000E4EA6E00E158BB0000000000E4EA7253 +S315E064C33000E160170000000000E4EA8600E10B1FFC +S315E064C3400000000000E4EA9700E1602B00000000D2 +S315E064C35000E4EAA500E160390000000000E4EABC1C +S315E064C36000E1605400E4EAD300E1606F000000009D +S315E064C37000E4EAED00E160880000000000E4EB8A96 +S315E064C38000E1611E0000000000E4EB9400E1612638 +S315E064C3900000000000E4EBB100E161400000000051 +S315E064C3A000E4EBBF00E1614E0000000000E4EC81D4 +S315E064C3B000E162020000000000E4ED0F00E162903B +S315E064C3C00000000000E4ED8F00E163080000000077 +S315E064C3D000E4EE5700E1631200E4ED9600E16327C2 +S315E064C3E00000000000E4EE7000E163D000000000AD +S315E064C3F000E4EE7B00E163DB0000000000E4EF189C +S315E064C40000E1647E0000000000E4EF6600E164CDD4 +S315E064C4100000000000E4F01A00E1657D0000000021 +S315E064C42000E4F0D800E1663600E4F0E100E166435A +S315E064C4300000000000E4F19900E166BC0000000041 +S315E064C44000E4F1AC00E166CB0000000000E4F1C575 +S315E064C45000E166E60000000000E4F25D00E1676B7F +S315E064C4600000000000E4F26C00E16779000000007F +S315E064C47000E4F31800E1681B0000000000E4F33315 +S315E064C48000E168340000000000E4F35700E168541A +S315E064C4900000000000E4F3EB00E168E60000000061 +S315E064C4A000E4F3F500E168F30000000000E4F4174B +S315E064C4B000E169100000000000E4F42B00E1692467 +S315E064C4C00000000000E4F43400E1692D000000009F +S315E064C4D000E4F43B00E169370000000000E4F4485E +S315E064C4E000E169440000000000E4F45C00E169589E +S315E064C4F00000000000E4F47100E1696D00000000F2 +S315E064C50000E4F47900E169750000000000E4F48178 +S315E064C51000E1697B0000000000E4F4A900E169A1A0 +S315E064C5200000000000E4F4CD00E169B4000000001E +S315E064C53000E4F56400E16A5A0000000000E4F56E88 +S315E064C54000E16A640000000000E4F58B00E16A7EC5 +S315E064C5500000000000E4F63600E16B330000000002 +S315E064C56000E4F6C300E16BBF0000000000E4F75CA2 +S315E064C57000E16C550000000000E4F76D00E16C66D4 +S315E064C5800000000000E4F78700E16C810000000031 +S315E064C59000E4DBB000E16CAB0000000000E4DBB17A +S315E064C5A000E16DE30000000000E4DC2E00E16E4C87 +S315E064C5B00000000000E4DC3E00E16E5F0000000085 +S315E064C5C000E4DC5900E0FC6700E4DC6000E16E83D3 +S315E064C5D000E4DC8800E16EA30000000000E4DC987F +S315E064C5E000E16EB70000000000E4DD3100E16F5564 +S315E064C5F00000000000E4DD4600E16F690000000031 +S315E064C60000E4DD5A00E16F820000000000E4DD74BE +S315E064C61000E16F960000000000E4DD8D00E16FB597 +S315E064C6200000000000E4DDAD00E16FD7000000002B +S315E064C63000E4DDCC00E16FF100E4DDD700E17003F6 +S315E064C6400000000000E4DDE700E1701B000000008C +S315E064C65000E4DDFB00E1702F0000000000E4DE1082 +S315E064C66000E1704C0000000000E4DE5200E1708EF0 +S315E064C6700000000000E4DE5C00E170A10000000060 +S315E064C68000E4DE7100E170BD00E4DE9000E170DCA0 +S315E064C6900000000000E4DEA400E170F400000000A5 +S315E064C6A000E4DEB100E171050000000000E4DECEE6 +S315E064C6B000E1712A0000000000E4DEDF00E1714081 +S315E064C6C00000000000E4DF0500E1715F00000000A7 +S315E064C6D000E4DF1D00E171790000000000E4DFF2B0 +S315E064C6E000E1722F0000000000E4E00700E1724F11 +S315E064C6F00000000000E4E00E00E172580000000073 +S315E064C70000E4E03300E1727F0000000000E4E0C68C +S315E064C71000E1730B0000000000E4E17300E1738F55 +S315E064C7200000000000E4E18B00E173AD000000006E +S315E064C73000E4E1B200E173D30000000000E4E1CE7E +S315E064C74000E101E90000000000E4E1D100E173F1F9 +S315E064C7500000000000E4E1E500E174070000000089 +S315E064C76000E4E1F500E1741900E4E20400E1742810 +S315E064C7700000000000E4E20D00E174340000000013 +S315E064C78000E4E24700E174790000000000E4E2B509 +S315E064C79000E174C80000000000E4E2B800E102DBF6 +S315E064C7A00000000000E4E2BB00E174CB000000009E +S315E064C7B000E4E2C000E174D00000000000E4E2CFEF +S315E064C7C000E174DF0000000000E4E2DB00E174EA0B +S315E064C7D00000000000E4E2F100E174FF0000000004 +S315E064C7E000E4E31E00E1751400E4E30500E1759AF4 +S315E064C7F00000000000E4E3B200E175B70000000069 +S315E064C80000E4E3C900E175D10000000000E4E3E47C +S315E064C81000E175EE0000000000E4E3F100E176007B +S315E064C8200000000000E4E45200E1763F00E4E471D5 +S315E064C83000E1765E0000000000E4E47D00E17669F4 +S315E064C8400000000000E4E49900E1768A000000005C +S315E064C85000E4E4E800E176D20000000000E4E4FFEE +S315E064C86000E176EE0000000000E4E51200E17708FE +S315E064C8700000000000E4E51B00E177110000000021 +S315E064C88000E4E53600E1773300E4E53E00E1773C39 +S315E064C8900000000000E4E55200E177550000000086 +S315E064C8A000E4E55F00E1776B0000000000E4E56C1E +S315E064C8B000E1777A0000000000E4E57D00E1778B33 +S315E064C8C00000000000E4E5F700E106730000000004 +S315E064C8D000E4E5FC00E177F50000000000E4E6062C +S315E064C8E000E178020000000000E4E62200E1781F3F +S315E064C8F00000000000E4E66E00E1786F00000000EE +S315E064C90000E4E72400E179070000000000E4E72F93 +S315E064C91000E179160000000000E4E73700E1791FE2 +S315E064C9200000000000E4E7AD00E1798A0000000061 +S315E064C93000E4E7B400E1262000E4E7BB00E1799196 +S315E064C9400000000000E4E7D700E179B000000000F1 +S315E064C95000E4E7EC00E179CA00E4E7F300E179D4C6 +S315E064C9600000000000E4E80F00E179EF0000000059 +S315E064C97000E4E82F00E17A160000000000E4E83AFB +S315E064C98000E17A240000000000E4E85A00E17A431A +S315E064C9900000000000E4E86F00E17A5A000000005D +S315E064C9A000E4E88800E17A700000000000E4E92D24 +S315E064C9B000E17B0400E4E95200E17B23000000002F +S315E064C9C000E4E95A00E17B2C0000000000E4E96E33 +S315E064C9D000E17B450000000000E4E98000E17B596A +S315E064C9E00000000000E4E98600E17B5F00E4E9968C +S315E064C9F000E17B730000000000E4E9B800E17BA29B +S315E064CA000000000000E4E9CD00E10A6400000000F3 +S315E064CA1000E4E9D100E17BBE0000000000E4E9DC6B +S315E064CA2000E17BCC0000000000E4E9F100E17BE397 +S315E064CA300000000000E4EA0700E17BF90000000082 +S315E064CA4000E4EA2600E17C180000000000E4EA3233 +S315E064CA5000E17C2A0000000000E4EA3E00E17C3963 +S315E064CA600000000000E4EA5300E17C5000000000AE +S315E064CA7000E4EA5B00E17C590000000000E4EA6E51 +S315E064CA8000E17C740000000000E4EA7200E17C7777 +S315E064CA900000000000E4EA8600E10B1F00000000ED +S315E064CAA000E4EA9700E17C900000000000E4EAA577 +S315E064CAB000E17CA00000000000E4EABC00E17CBA8E +S315E064CAC000E4EAD300E17CD30000000000E4EAED90 +S315E064CAD000E17CF70000000000E4EB8A00E17D877A +S315E064CAE00000000000E4EB9400E17D9200000000A9 +S315E064CAF000E4EBB100E17DB00000000000E4EBBFD0 +S315E064CB0000E17DC60000000000E4EC8100E17E62A5 +S315E064CB100000000000E4ED0F00E17ECF00000000BD +S315E064CB2000E4ED8F00E17F380000000000E4EE579A +S315E064CB3000E17F4100E4ED9600E17F5C00000000E7 +S315E064CB4000E4EE7000E1800E0000000000E4EE7B9D +S315E064CB5000E1801A0000000000E4EF1800E180AD17 +S315E064CB600000000000E4EF6600E180F500000000EC +S315E064CB7000E4F01A00E1819B0000000000E4F0D8D4 +S315E064CB8000E1824700E4F0E100E182500000000049 +S315E064CB9000E4F19900E182CF0000000000E4F1AC2A +S315E064CBA000E182E80000000000E4F1C500E18301F1 +S315E064CBB00000000000E4F25D00E183920000000002 +S315E064CBC000E4F26C00E183A30000000000E4F318E3 +S315E064CBD000E1845A0000000000E4F33300E1847964 +S315E064CBE00000000000E4F35700E1849700000000D1 +S315E064CBF000E4F3EB00E185230000000000E4F3F5D4 +S315E064CC0000E1852B0000000000E4F41700E18547AD +S315E064CC100000000000E4F42B00E185600000000001 +S315E064CC2000E4F43400E185690000000000E4F43BCC +S315E064CC3000E185710000000000E4F44800E18583CA +S315E064CC400000000000E4F45C00E1859C0000000064 +S315E064CC5000E4F47100E185B30000000000E4F479D7 +S315E064CC6000E185BB0000000000E4F48100E185C3D7 +S315E064CC700000000000E4F4A900E185EE0000000095 +S315E064CC8000E4F4CD00E1860C0000000000E4F56405 +S315E064CC9000E186960000000000E4F56E00E186A1FE +S315E064CCA00000000000E4F58B00E186BB00000000B4 +S315E064CCB000E4F63600E1875E0000000000E4F6C3B7 +S315E064CCC000E187DE0000000000E4F75C00E1886ACA +S315E064CCD00000000000E4F76D00E1887C00000000DD +S315E064CCE000E4F78700E1889E0000000000E4DBB022 +S315E064CCF000E188CA0000000000E4DBB100E189E1FC +S315E064CD000000000000E4DC2E00E18A65000000001B +S315E064CD1000E4DC3E00E18A770000000000E4DC88A1 +S315E064CD2000E18A9400E4DC5900E0FC6700E4DC603E +S315E064CD3000E18AA70000000000E4DC9800E18ACE06 +S315E064CD400000000000E4DD3100E18B7300000000C8 +S315E064CD5000E4DD4600E18B8B0000000000E4DD5A70 +S315E064CD6000E18BAB0000000000E4DD7400E18BCAF7 +S315E064CD700000000000E4DD8D00E18BE600000000C9 +S315E064CD8000E4DDAD00E18BFF0000000000E4DDCCF3 +S315E064CD9000E18C2800E4DDD700E18C390000000076 +S315E064CDA000E4DDE700E18C450000000000E4DDFB23 +S315E064CDB000E18C5B0000000000E4DE1000E18C6CB6 +S315E064CDC00000000000E4DE5200E18CAE00000000EA +S315E064CDD000E4DE5C00E18CBB0000000000E4DE7190 +S315E064CDE000E18CD700E4DE9000E18CF60000000000 +S315E064CDF000E4DEA400E18D120000000000E4DEB190 +S315E064CE0000E18D1E0000000000E4DECE00E18D3F0F +S315E064CE100000000000E4DEDF00E18D520000000067 +S315E064CE2000E4DF0500E18D790000000000E4DF1D29 +S315E064CE3000E18D950000000000E4DFF200E18E4839 +S315E064CE400000000000E4E00700E18E6300000000FB +S315E064CE5000E4E00E00E18E690000000000E4E033E7 +S315E064CE6000E18E8F0000000000E4E0C600E18F3C44 +S315E064CE700000000000E4E17300E18FE900000000D7 +S315E064CE8000E4E18B00E190050000000000E4E1B21B +S315E064CE9000E1902D0000000000E4E1CE00E190485E +S315E064CEA00000000000E4E1D100E1904B00000000E6 +S315E064CEB000E4E1E500E190610000000000E4E1F5F2 +S315E064CEC000E1021300E4E20400E19079000000006E +S315E064CED000E4E20D00E190830000000000E4E24734 +S315E064CEE000E190CD0000000000E4E2B500E1911CB1 +S315E064CEF00000000000E4E2B800E1912000000000D8 +S315E064CF0000E4E2BB00E191240000000000E4E2C03A +S315E064CF1000E1912C0000000000E4E2CF00E19139E9 +S315E064CF200000000000E4E2DB00E191440000000060 +S315E064CF3000E4E2F100E191560000000000E4E31E43 +S315E064CF4000E1916400E4E30500E1920E0000000074 +S315E064CF5000E4E3B200E1922B0000000000E4E3C9E0 +S315E064CF6000E192450000000000E4E3E400E192633E +S315E064CF700000000000E4E3F100E1926B00000000D1 +S315E064CF8000E4E45200E192CA00E4E47100E192E96B +S315E064CF900000000000E4E47D00E192F2000000009D +S315E064CFA000E4E49900E193100000000000E4E4E8A2 +S315E064CFB000E193640000000000E4E4FF00E1937E96 +S315E064CFC00000000000E4E51200E193920000000036 +S315E064CFD000E4E51B00E1939B0000000000E4E53615 +S315E064CFE000E193BB00E4E53E00E193C70000000086 +S315E064CFF000E4E55200E193DE0000000000E4E55F52 +S315E064D00000E193EF0000000000E4E56C00E19402C7 +S315E064D0100000000000E4E57D00E1941400000000F7 +S315E064D02000E4E5F700E194930000000000E4E5FC29 +S315E064D03000E194980000000000E4E60600E194AAAA +S315E064D0400000000000E4E62200E194C6000000006F +S315E064D05000E4E66E00E195100000000000E4E724D9 +S315E064D06000E195C90000000000E4E72F00E195DBEC +S315E064D0700000000000E4E73700E195E1000000000D +S315E064D08000E4E7AD00E1798A0000000000E4E7B47B +S315E064D09000E1262000E4E7BB00E1966400000000BE +S315E064D0A000E4E7D700E196830000000000E4E7ECE3 +S315E064D0B000E1969F00E4E7F300E196A80000000033 +S315E064D0C000E4E80F00E196D10000000000E4E82FF8 +S315E064D0D000E196F20000000000E4E83A00E196FF21 +S315E064D0E00000000000E4E85A00E1972D000000002B +S315E064D0F000E4E86F00E1974A0000000000E4E88895 +S315E064D10000E197630000000000E4E92D00E1981B6C +S315E064D11000E4E95200E1983F0000000000E4E95AC7 +S315E064D12000E198450000000000E4E96E00E19865DE +S315E064D1300000000000E4E98000E198760000000069 +S315E064D14000E4E99600E1987B00E4E98600E198A9C9 +S315E064D1500000000000E4E9B800E198B800000000CF +S315E064D16000E4E9CD00E1911C0000000000E4E9D1AF +S315E064D17000E198C90000000000E4E9DC00E198D62B +S315E064D1800000000000E4E9F100E198F3000000002B +S315E064D19000E4EA0700E199090000000000E4EA26F9 +S315E064D1A000E199280000000000E4EA3200E19938E1 +S315E064D1B00000000000E4EA3E00E19944000000005B +S315E064D1C000E4EA5300E199610000000000E4EA5BF0 +S315E064D1D000E1996C0000000000E4EA6E00E1912051 +S315E064D1E00000000000E4EA7200E1998400000000B7 +S315E064D1F000E4EA8600E199A40000000000E4EA970E +S315E064D20000E199B60000000000E4EAA500E199C8EF +S315E064D2100000000000E4EABC00E199E100E4EAD33E +S315E064D22000E199FE0000000000E4EAED00E19A20E6 +S315E064D2300000000000E4EB8A00E19AAA0000000026 +S315E064D24000E4EB9400E19AB50000000000E4EBB181 +S315E064D25000E19AD20000000000E4EBBF00E19AE44A +S315E064D2600000000000E4EC8100E19BA70000000000 +S315E064D27000E4ED0F00E19C320000000000E4ED8F75 +S315E064D28000E19CC80000000000E4EE5700E19CD198 +S315E064D29000E4ED9600E19CE80000000000E4EE7036 +S315E064D2A000E19DB60000000000E4EE7B00E19DC471 +S315E064D2B00000000000E4EF1800E19E640000000056 +S315E064D2C000E4EF6600E19EB80000000000E4F01AB6 +S315E064D2D000E19F700000000000E4F0D800E1A025C2 +S315E064D2E000E4F0E100E1A0300000000000E4F19920 +S315E064D2F000E1A0BB0000000000E4F1AC00E1A0CDD9 +S315E064D3000000000000E4F1C500E1A0E800000000D0 +S315E064D31000E4F25D00E1A1870000000000E4F26C45 +S315E064D32000E1A19C0000000000E4F31800E1A252D1 +S315E064D3300000000000E4F33300E1A26D00000000A9 +S315E064D34000E4F35700E1A28D0000000000E4F3EB93 +S315E064D35000E1A31C0000000000E4F3F500E1A3296A +S315E064D3600000000000E4F41700E1A35400000000AC +S315E064D37000E4F42B00E1A3740000000000E4F4345C +S315E064D38000E1A37D0000000000E4F43B00E1A38734 +S315E064D3900000000000E4F44800E1A395000000000A +S315E064D3A000E4F45C00E1A3B50000000000E4F4717D +S315E064D3B000E1A3D20000000000E4F47900E1A3DE1A +S315E064D3C00000000000E4F48100E1A3E50000000051 +S315E064D3D000E4F4A900E1A40C0000000000E4F4CD4C +S315E064D3E000E1A4250000000000E4F56400E1A4D9AE +S315E064D3F00000000000E4F56E00E1A4E00000000037 +S315E064D40000E4F58B00E1A4FD0000000000E4F636DC +S315E064D41000E1A5A50000000000E4F6C300E1A64231 +S315E064D4200000000000E4F75C00E1A6E7000000000D +S315E064D43000E4F76D00E1A6FE0000000000E4F78773 +S315E064D44000E1A71E0000000000E4DBB000E1A74CA9 +S315E064D4500000000000E4DBB100E1A86E000000001B +S315E064D46000E4DC2E00E1A8F00000000000E4DC3E0D +S315E064D47000E1A9010000000000E4DC5900E1A91A1A +S315E064D48000E4DC6000E1A92100E4DC8800E1A9496C +S315E064D4900000000000E4DC9800E1A95F0000000001 +S315E064D4A000E4DD3100E1A9F90000000000E4DD46B6 +S315E064D4B000E1AA0F0000000000E4DD5A00E1AA2BB7 +S315E064D4C00000000000E4DD7400E1AA490000000009 +S315E064D4D000E4DD8D00E1AA600000000000E4DDAD5B +S315E064D4E000E1AA830000000000E4DDCC00E1AA9636 +S315E064D4F000E4DDD700E1AA9F0000000000E4DDE778 +S315E064D50000E1AAA90000000000E4DDFB00E1AABF97 +S315E064D5100000000000E4DE1000E1AACE0000000096 +S315E064D52000E4DE5200E1AB0F0000000000E4DE5CE4 +S315E064D53000E1AB1E0000000000E4DE7100E1AB3701 +S315E064D54000E4DE9000E1AB550000000000E4DEA4F8 +S315E064D55000E1AB710000000000E4DEB100E1AB8005 +S315E064D5600000000000E4DECE00E1ABA200000000B3 +S315E064D57000E4DEDF00E1ABB50000000000E4DF05B7 +S315E064D58000E1ABDC0000000000E4DF1D00E1ABF984 +S315E064D5900000000000E4DFF200E1AC9F0000000060 +S315E064D5A000E4E00700E1ACBD0000000000E4E00E4A +S315E064D5B000E1ACC40000000000E4E03300E1ACE963 +S315E064D5C00000000000E4E0C600E1AD830000000076 +S315E064D5D000E4E17300E1AE240000000000E4E18BC6 +S315E064D5E000E1AE390000000000E4E1B200E1AE64BF +S315E064D5F00000000000E4E1CE00E1AE81000000003E +S315E064D60000E4E1D100E1AE840000000000E4E1E57D +S315E064D61000E1AE970000000000E4E1F500E1AEB1A0 +S315E064D62000E4E20400E1AEBF0000000000E4E20DC5 +S315E064D63000E1AEC70000000000E4E24700E1AF03AA +S315E064D6400000000000E4E2B500E1AF650000000020 +S315E064D65000E4E2B800E1AF690000000000E4E2BB88 +S315E064D66000E1AF6D0000000000E4E2C000E1AF72EB +S315E064D6700000000000E4E2CF00E1AF8400000000B7 +S315E064D68000E4E2DB00E1AF900000000000E4E2F1D8 +S315E064D69000E1AFA10000000000E4E31E00E1AFB4E6 +S315E064D6A000E4E30500E1B0430000000000E4E3B217 +S315E064D6B000E1B0620000000000E4E3C900E1B07795 +S315E064D6C00000000000E4E3E400E1B095000000003F +S315E064D6D000E4E3F100E1B09C0000000000E4E45201 +S315E064D6E000E1B0F200E4E47100E1B1100000000092 +S315E064D6F000E4E47D00E1B11A0000000000E4E4998E +S315E064D70000E1B1380000000000E4E4E800E1B18B38 +S315E064D7100000000000E4E4FF00E1B1A100000000C5 +S315E064D72000E4E51200E1B1B40000000000E4E51BAA +S315E064D73000E1B1BD0000000000E4E53600E1B1D6E9 +S315E064D74000E4E53E00E1B1E10000000000E4E552FA +S315E064D75000E1B1FA0000000000E4E55F00E1B20B2D +S315E064D7600000000000E4E56C00E1B218000000008F +S315E064D77000E4E57D00E1B22A0000000000E4E5F79C +S315E064D78000E1B29D0000000000E4E5FC00E1B2A225 +S315E064D7900000000000E4E60600E1B2AC0000000030 +S315E064D7A000E4E62200E1B2C70000000000E4E66EB1 +S315E064D7B000E1B3020000000000E4E72400E1B3A85E +S315E064D7C00000000000E4E72F00E1B3B400000000CD +S315E064D7D000E4E73700E1B3BC0000000000E4E7AD35 +S315E064D7E000E1B4480000000000E4E7B400E1B450AE +S315E064D7F000E4E7BB00E1B4590000000000E4E7D7C9 +S315E064D80000E1B4760000000000E4E7EC00E1B490E7 +S315E064D81000E4E7F300E1B4970000000000E4E80FF9 +S315E064D82000E1B4BC0000000000E4E82F00E1B4D9F4 +S315E064D8300000000000E4E83A00E1B4E5000000001E +S315E064D84000E4E85A00E1B5070000000000E4E86F90 +S315E064D85000E1B5220000000000E4E88800E1B53E9E +S315E064D8600000000000E4E92D00E1B5E300E4E952DC +S315E064D87000E1B6070000000000E4E95A00E1B60FF3 +S315E064D8800000000000E4E96E00E1B62B0000000051 +S315E064D89000E4E98000E1B63A0000000000E4E986CD +S315E064D8A000E1B64200E4E99600E1B6530000000008 +S315E064D8B000E4E9B800E1B6730000000000E4E9CDF5 +S315E064D8C000E1B6880000000000E4E9D100E1B68D2D +S315E064D8D00000000000E4E9DC00E1B6990000000025 +S315E064D8E000E4E9F100E1B6B40000000000E4EA0710 +S315E064D8F000E1B6C80000000000E4EA2600E1B6E60E +S315E064D9000000000000E4EA3200E1B6F50000000041 +S315E064D91000E4EA3E00E1B7080000000000E4EA53F0 +S315E064D92000E1B7230000000000E4EA5B00E1B732FF +S315E064D9300000000000E4EA6E00E1B7480000000081 +S315E064D94000E4EA7200E1B74B0000000000E4EA8616 +S315E064D95000E1B7670000000000E4EA9700E1B7770A +S315E064D9600000000000E4EAA500E1B78400000000DE +S315E064D97000E4EABC00E1B79D00E4EAD300E1B7B7AE +S315E064D9800000000000E4EAED00E1B7DA0000000020 +S315E064D99000E4EB8A00E1B8660000000000E4EB9482 +S315E064D9A000E1B86E0000000000E4EBB100E1B88B82 +S315E064D9B00000000000E4EBBF00E1B89B000000005B +S315E064D9C000E4EC8100E1B9610000000000E4ED0FE1 +S315E064D9D000E1B9DF0000000000E4ED8F00E1BA5B2E +S315E064D9E00000000000E4EE5700E1BA6300E4ED965F +S315E064D9F000E1BA7A0000000000E4EE7000E1BB1CCE +S315E064DA000000000000E4EE7B00E1BB2700000000BC +S315E064DA1000E4EF1800E1BBCF0000000000E4EF662D +S315E064DA2000E1BC140000000000E4F01A00E1BCDF91 +S315E064DA300000000000E4F0D800E1BD9500E4F0E108 +S315E064DA4000E1BD9F0000000000E4F17500E1BE1F47 +S315E064DA500000000000E4F19900E1BE3F0000000030 +S315E064DA6000E4F1AC00E1BE4F0000000000E4F1C563 +S315E064DA7000E1BE640000000000E4F25D00E1BEFF88 +S315E064DA800000000000E4F26C00E1BF0E000000005C +S315E064DA9000E4F31800E1BFA30000000000E4F33300 +S315E064DAA000E1BFC00000000000E4F35700E1BFE31B +S315E064DAB00000000000E4F3EB00E1C06E000000004B +S315E064DAC000E4F3F500E1C0790000000000E4F41737 +S315E064DAD000E1C09E0000000000E4F42B00E1C0BA5F +S315E064DAE00000000000E4F43400E1C0C3000000007C +S315E064DAF000E4F43B00E1C0CD0000000000E4F4483B +S315E064DB0000E1C0DD0000000000E4F45C00E1C0F97F +S315E064DB100000000000E4F47100E1C11400000000BC +S315E064DB2000E4F47900E1C11E0000000000E4F48141 +S315E064DB3000E1C1250000000000E4F4A900E1C1476A +S315E064DB400000000000E4F4CD00E1C16900000000DB +S315E064DB5000E4F56400E1C20B0000000000E4F56E49 +S315E064DB6000E1C2150000000000E4F58B00E1C2327A +S315E064DB700000000000E4F63600E1C2DE00000000CA +S315E064DB8000E4F6C300E1C36F0000000000E4F75C64 +S315E064DB9000E1C41F0000000000E4F76D00E1C43654 +S315E064DBA00000000000E4F78700E1C45200000000D2 +S315E064DBB0005B315D5B54686973206170706C6963A6 +S315E064DBC06174696F6E20646F65736E277420686133 +S315E064DBD0766520726F6F6D20746F7C6F70656E20F2 +S315E064DBE0616E6F7468657220646F63756D656E747B +S315E064DBF02E2020546F206D616B6520726F6F6D2CE3 +S315E064DC007C636C6F736520616E7920646F63756D98 +S315E064DC10656E747320796F7520646F6E2774206EF9 +S315E064DC206565642E5D5B20204F4B20205D002020DF +S315E064DC304E657720466F6C6465722E2E2E00466FB5 +S315E064DC406C646572206E616D653A20205F5F5F5F2C +S315E064DC505F5F5F5F2E5F5F5F00256C64206B4200F1 +S315E064DC60746F206C6F61642C206F7220656E7465CE +S315E064DC707220706172616D657465722076616C752F +S315E064DC80657320746861740053797374656D206894 +S315E064DC90616C746564210A005B335D5B536F727219 +S315E064DCA0792C2062757420796F752063616E6E6F6E +S315E064DCB07420706C61636520616E79206D6F726546 +S315E064DCC07C666F6C6465727320696E7369646520E3 +S315E064DCD06F6620796F75722063757272656E7420F3 +S315E064DCE06F6E652E7C53656520796F757220646FFF +S315E064DCF063756D656E746174696F6E20666F7220AC +S315E064DD006C696D697473206F6E7C666F6C64657242 +S315E064DD107320696E73696465206F746865722066E2 +S315E064DD206F6C646572732E5D5B43616E63656C5D97 +S315E064DD3000437265617465643A20205F5F2D5F5FBE +S315E064DD402D5F5F2020002020536F7274206279205B +S315E064DD5073697A65202020075A004E414D45204379 +S315E064DD604F4E464C49435420445552494E4720430E +S315E064DD704F5059004C617374206D6F6469666965D0 +S315E064DD80643A20205F5F2F5F5F2F5F5F00536565B6 +S315E064DD9020646F632F6C6963656E73652E74787443 +S315E064DDA020666F722064657461696C73007468657B +S315E064DDB020666F6C64657220796F752077616E7426 +S315E064DDC020746F206372656174652E0052656164C8 +S315E064DDD02F57726974650053455420505245464541 +S315E064DDE052454E43455300446F75626C652D636CD2 +S315E064DDF069636B2073706565643A002020536574CB +S315E064DE0020707265666572656E6365732E2E2E008C +S315E064DE10506172616D65746572733A20205F5F5F0D +S315E064DE205F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5FB8 +S315E064DE305F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5FA8 +S315E064DE405F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F98 +S315E064DE505F00426F6F742074696D6500434F50597B +S315E064DE6020464F4C44455253202F204954454D5348 +S315E064DE7000202053617665206465736B746F70204F +S315E064DE80202020202020202020202020200756004B +S315E064DE90202053686F77206173207465787420203E +S315E064DEA02007530053637265656E20737461727400 +S315E064DEB000496E7365727420796F75722047454DBB +S315E064DEC02053544152545550206469736B0044495D +S315E064DED0534B20494E464F524D4154494F4E0046AE +S315E064DEE06F6C6465722069636F6E20616E64206333 +S315E064DEF06F6D706C65746520746865206469616CC7 +S315E064DF006F67756500427974657320757365643A05 +S315E064DF1020205F5F5F5F5F5F5F5F5F5F005B325DD7 +S315E064DF205B54686973206170706C69636174696F6E +S315E064DF306E2063616E6E6F742072656164206461E5 +S315E064DF407461206F6E207468657C6469736B2069A4 +S315E064DF506E2064726976652025633A2E20205468C3 +S315E064DF6065206469736B206D7573742062657C6685 +S315E064DF706F726D61747465642C2074686572652073 +S315E064DF806D75737420626520706F77657220746F47 +S315E064DF90207468657C6469736B2064726976652C49 +S315E064DFA020616E6420746865206469736B206472B2 +S315E064DFB0697665206D7573742062657C70687973C3 +S315E064DFC06963616C6C7920636F6E6E6563746564B6 +S315E064DFD020746F20796F757220636F6D70757465E8 +S315E064DFE0722E5D5B43616E63656C7C5265747279B7 +S315E064DFF05D0020204465736B746F7020696E666F94 +S315E064E0002E2E2E2020200043616E63656C007265BF +S315E064E0106E742077696E646F772C20646F75626CBA +S315E064E020652D636C69636B206F6E20746865204E42 +S315E064E0306577005B315D5B596F752063616E6E6F0A +S315E064E04074206472616720666F6C646572732C20F9 +S315E064E050646F63756D656E74732C206F727C61702A +S315E064E060706C69636174696F6E73206F6E746F2030 +S315E064E070746865204465736B746F702E2020486FF6 +S315E064E08077657665722C7C796F752063616E206343 +S315E064E0906F7079207468656D20746F206469736B42 +S315E064E0A073206F722064726167207468656D7C7436 +S315E064E0B06F207468652074726173682E5D5B2020DE +S315E064E0C04F4B20205D005B315D5B54686572652073 +S315E064E0D06973206E6F7420656E6F75676820737000 +S315E064E0E061636520617661696C61626C657C746F9D +S315E064E0F020636F6E666967757265207468697320FC +S315E064E1006170706C69636174696F6E2E2020546F00 +S315E064E11020667265657C757020736F6D65207370BB +S315E064E1206163652C20796F75276C6C206861766510 +S315E064E13020746F2072656D6F76657C6F6E65206F97 +S315E064E1406620796F75722063757272656E746C7928 +S315E064E15020636F6E666967757265647C6170706C06 +S315E064E16069636174696F6E732E5D5B20204F4B202B +S315E064E170205D002020496E7374616C6C2064697361 +S315E064E1806B2064726976652E2E2E00546F2063725E +S315E064E190656174652061206E657720666F6C646581 +S315E064E1A0722077697468696E207468652063757235 +S315E064E1B02D005B335D5B444F53206572726F722052 +S315E064E1C02325642E5D5B43616E63656C5D004F4B36 +S315E064E1D0004E616D653A20205F5F5F5F5F5F5F5F02 +S315E064E1E02E5F5F5F00436F6E6669726D20636F706A +S315E064E1F06965733F00456D75544F53205665727378 +S315E064E200696F6E004350552074797065005B315DCB +S315E064E2105B596F752063616E6E6F742064726167BB +S315E064E220207468652074726173682063616E7C69CA +S315E064E2306E746F20612077696E646F772E5D5B2004 +S315E064E240204F4B20205D005B315D5B546865206444 +S315E064E25069736B20647269766520796F752068618D +S315E064E260766520696E6469636174656420646F656C +S315E064E270737C6E6F742065786973742E2043686569 +S315E064E280636B207468652064726976652069646589 +S315E064E2906E7469666965727C6C657474657220799E +S315E064E2A06F7520656E74657265642E5D5B43616E41 +S315E064E2B063656C5D004E6F004F6E0048617264008A +S315E064E2C0536F756E6420656666656374733A004180 +S315E064E2D07474726962757465733A004472697665DA +S315E064E2E0206964656E7469666965723A20205F3A8E +S315E064E2F000546F2064726F7020646F776E206D6572 +S315E064E3006E75733A004469736B206C6162656C3A4E +S315E064E31020205F5F5F5F5F5F5F5F5F5F5F005B33D0 +S315E064E3205D5B416E206572726F7220686173206F07 +S315E064E330636375727265642077697468207468656E +S315E064E3407C477261706869637320456E7669726F43 +S315E064E3506E6D656E74204D616E61676572202847E7 +S315E064E360454D292E7C506C6561736520636F6E74D0 +S315E064E3706163742074686520456D75544F53204419 +S315E064E3806576656C6F706D656E747C5465616D20E1 +S315E064E390616E64207375626D69742061206275676D +S315E064E3A0207265706F72742E5D5B43616E63656C3B +S315E064E3B05D004974656D7320746F2064656C657483 +S315E064E3C0653A20205F5F5F5F0053697A6520696E16 +S315E064E3D02062797465733A20205F5F5F5F5F5F5F99 +S315E064E3E05F5F5F004469736B204472697665733A74 +S315E064E3F0005B315D5B596F757220636F6D70757428 +S315E064E400657220646F6573206E6F742068617665EB +S315E064E41020656E6F7567687C6D656D6F7279207463 +S315E064E4206F2072756E20746865206170706C6963C4 +S315E064E4306174696F6E20796F757C68617665207347 +S315E064E440656C65637465642E5D5B20204F4B2020AC +S315E064E4505D002020436F6E66696775726520617042 +S315E064E460706C69636174696F6E2E2E2E202007418D +S315E064E470006170706C69636174696F6E005B335DD3 +S315E064E4805B4261642046756E6374696F6E20235DDA +S315E064E4905B43616E63656C5D005B335D5B596F75B1 +S315E064E4A07220636F6D707574657220646F65736EE8 +S315E064E4B02774206861766520656E6F7567687C6D24 +S315E064E4C0656D6F727920746F2072756E20746865FD +S315E064E4D02047454D204465736B746F702E5D5B20F9 +S315E064E4E0536F727279205D0044454C45544520462D +S315E064E4F04F4C44455253202F204954454D530046D2 +S315E064E5004F4C44455220494E464F524D4154494F33 +S315E064E5104E0044442D4D4D2D595900436F70792773 +S315E064E52073206E616D653A20205F5F5F5F5F5F5F5A +S315E064E5305F2E5F5F5F00496E7374616C6C00436F5E +S315E064E5406E6669726D206F766572777269746573EB +S315E064E5503F0046726565204661737452414D0044DE +S315E064E56061746520666F726D61743A004F50454E12 +S315E064E570204150504C49434154494F4E005B325D13 +S315E064E5805B54686973206170706C69636174696F08 +S315E064E5906E2063616E6E6F742066696E6420746863 +S315E064E5A0657C666F6C646572206F7220646F6375F8 +S315E064E5B06D656E7420796F75206172652074727909 +S315E064E5C0696E6720746F7C6F70656E2E2043686534 +S315E064E5D0636B20746865206E616D6520796F752064 +S315E064E5E06861766520656E74657265642E5D5B2030 +S315E064E5F0204F4B20205D0053746F70005265616458 +S315E064E6002D4F6E6C790043757272656E74206E611F +S315E064E6106D653A20205F5F5F5F5F5F5F5F2E5F5F80 +S315E064E6205F005B335D5B596F752063616E6E6F741B +S315E064E63020636F7079206120706172656E74206604 +S315E064E6406F6C6465727C696E746F206F6E65206F43 +S315E064E6506620697473206368696C6420666F6C64B1 +S315E064E6606572732E5D5B20204F4B20205D005B332B +S315E064E6705D5B536F7272792C206275742074686581 +S315E064E680204469726563746F7279206E616D65208A +S315E064E690796F7520686176657C656E7465726564AC +S315E064E6A0206578636565647320746865206D617858 +S315E064E6B0696D756D206E756D626572206F667C63DB +S315E064E6C06861726163746572732E20205365652098 +S315E064E6D0796F757220646F63756D656E7461746964 +S315E064E6E06F6E20666F727C6C696D697473206F6E91 +S315E064E6F020746865206E756D626572206F6620634E +S315E064E70068617261637465727320796F757C636145 +S315E064E7106E20656E7465722E5D5B2020204F4B2003 +S315E064E72020205D0049636F6E20747970653A00312C +S315E064E7303220486F7572005B315D5B5468652047D3 +S315E064E740454D204465736B746F7020686173206E09 +S315E064E7506F206D6F726520617661696C61626C656C +S315E064E7607C77696E646F77732E20204265666F727C +S315E064E7706520796F75206F70656E206120646973BA +S315E064E7806B2C20636C6F73657C612077696E646F54 +S315E064E7907720796F75277265206E6F74207573695B +S315E064E7A06E672E5D5B20204F4B20205D00466C6FCC +S315E064E7B070707900204465736B2000546865204569 +S315E064E7C06D75544F5320646576656C6F706D656ED8 +S315E064E7D074207465616D004974656D7320746F208F +S315E064E7E0636F70793A20205F5F5F5F002046696CF3 +S315E064E7F0652000256C6420627974657320757365A1 +S315E064E8006420696E202564206974656D732E004109 +S315E064E81070706C69636174696F6E206E616D653A80 +S315E064E82020205F5F5F5F5F5F5F5F2E5F5F5F004ECD +S315E064E830657720466F6C64657200486F6C64203C53 +S315E064E840436F6E74726F6C3E20746F20736B697085 +S315E064E850204155544F2F414343002020496E666F53 +S315E064E8602F52656E616D652E2E2E2020074900427B +S315E064E87061736564206F6E202747504C656427207A +S315E064E880736F7572636573005B315D5B416E2069BE +S315E064E89074656D20776974682074686973206E6145 +S315E064E8A06D6520616C7265616479206578697374FD +S315E064E8B0737C696E2074686520666F6C6465722C1F +S315E064E8C0206F7220746865206974656D20697320B1 +S315E064E8D073657420746F7C526561642D4F6E6C79D8 +S315E064E8E0207374617475732E20557365207468653E +S315E064E8F02022496E666F2F52656E616D65227C6378 +S315E064E9006F6D6D616E6420746F206368616E6765B8 +S315E064E91020746865206974656D2773207374617407 +S315E064E92075732E5D5B20204F4B20205D007468611B +S315E064E93074206170706561727320627920656E74AB +S315E064E9406572696E6720746865206E616D65206FB7 +S315E064E9506600323420486F7572002020536F7274FB +S315E064E9602062792074797065202020075000417018 +S315E064E970706C69636174696F6E20747970653A006E +S315E064E980436C69636B00446F63756D656E74207484 +S315E064E990797065733A005072657373202743272054 +S315E064E9A0746F2072756E20616E206561726C792079 +S315E064E9B0636F6E736F6C6500447269766520696433 +S315E064E9C0656E7469666965723A20205F004F6666B3 +S315E064E9D0004E455720464F4C44455200202045782A +S315E064E9E0656375746520456D75434F4E20205E5AA8 +S315E064E9F000434F4E464947555245204150504C4995 +S315E064EA00434154494F4E0020204368616E67652058 +S315E064EA107265736F6C7574696F6E20202020202098 +S315E064EA20202020074300467265652053542D5241E9 +S315E064EA304D002020466F726D61742E2E2E002020CC +S315E064EA4044656C6574652E2E2E20202020202020BF +S315E064EA500744002020436C6F7365004E65656473FC +S315E064EA602066756C6C206D656D6F72793F005965D3 +S315E064EA707300202053686F772061732069636F6E3B +S315E064EA80732020075300436F707972696768742056 +S315E064EA902863292062790047454D444F53206472C8 +S315E064EAA069766573004E455720464F4C444552207F +S315E064EAB0494E464F524D4154494F4E00466F6C6441 +S315E064EAC065727320746F20636F70793A20205F5F9C +S315E064EAD05F5F004954454D20494E464F524D41547F +S315E064EAE0494F4E202F2052454E414D45005B335DE4 +S315E064EAF05B466F726D617474696E672077696C6C7E +S315E064EB0020455241534520616C6C7C696E666F7238 +S315E064EB106D6174696F6E206F6E20746865206469D8 +S315E064EB20736B20696E2064726976657C25633A2E20 +S315E064EB302020436C69636B206F6E204F4B206F6EB1 +S315E064EB406C7920696620796F7520646F6E27747CB2 +S315E064EB506D696E64206C6F73696E67207468652096 +S315E064EB60696E666F726D6174696F6E206F6E7C74C8 +S315E064EB70686973206469736B2E5D5B20204F4B205C +S315E064EB80207C43616E63656C5D00204F7074696FD1 +S315E064EB906E7320004E756D626572206F6620666FD7 +S315E064EBA06C646572733A20202020205F5F5F5F5F4C +S315E064EBB0004954454D2053454C4543544F52005B00 +S315E064EBC0325D5B44726976652025633A2069732019 +S315E064EBD06E6F7420726573706F6E64696E672E20F3 +S315E064EBE020596F75206D7573747C757365207468D0 +S315E064EBF065207269676874206B696E64206F66204D +S315E064EC006469736B2C20696E736572742069747CB5 +S315E064EC10636F72726563746C792C20616E642063D1 +S315E064EC206C6F73652074686520646F6F722E202044 +S315E064EC304966207468657C70726F626C656D206984 +S315E064EC4073207769746820612068617264206469FE +S315E064EC50736B2C20636865636B207468657C646998 +S315E064EC60736B277320636F6E6E656374696F6E731F +S315E064EC702E5D5B43616E63656C7C52657472795D2F +S315E064EC80005B335D5B496620796F75206172652050 +S315E064EC907375726520796F752077616E7420746F11 +S315E064ECA07C64656C65746520414C4C2074686520B1 +S315E064ECB0696E666F726D6174696F6E206F6E2074D3 +S315E064ECC068657C6469736B20696E206472697665D5 +S315E064ECD02025633A2C20636C69636B206F6E204F4A +S315E064ECE04B2E7C4F74686572776973652C20636C10 +S315E064ECF069636B206F6E2043616E63656C2E5D5B4A +S315E064ED0020204F4B20207C43616E63656C5D005B25 +S315E064ED10315D5B596F752063616E20647261672053 +S315E064ED207468652074726173682063616E20746FC1 +S315E064ED3020616E6F746865727C6C6F636174696F11 +S315E064ED406E206F6E207468652047454D2044657378 +S315E064ED506B746F702C2062757420796F757C636157 +S315E064ED606E6E6F7420706C616365206974206F6E7B +S315E064ED7020746F70206F6620616E6F7468657220B0 +S315E064ED8069636F6E2E5D5B20204F4B20205D0052E1 +S315E064ED90656D6F7665005B315D5B54686520646FB5 +S315E064EDA063756D656E74207479706520796F75200E +S315E064EDB073656C6563746564206973206E6F747CD7 +S315E064EDC0636F6E6669677572656420746F20776FCA +S315E064EDD0726B207769746820612073706563696615 +S315E064EDE069637C6170706C69636174696F6E2E20AF +S315E064EDF020557365207468652022436F6E66696783 +S315E064EE007572657C6170706C69636174696F6E223A +S315E064EE1020636F6D6D616E6420746F206173736FD0 +S315E064EE20636961746520746869737C646F63756D26 +S315E064EE30656E742074797065207769746820616E94 +S315E064EE40206170706C69636174696F6E2E5D5B20BE +S315E064EE50204F4B20205D0053656C656374696F6E6B +S315E064EE603A20205F5F5F5F5F5F5F5F2E5F5F5F009B +S315E064EE704469736B20747970653A005B325D5B5903 +S315E064EE806F7572206F7574707574206465766963E6 +S315E064EE9065206973206E6F7420726563656976694F +S315E064EEA06E677C646174612E204265666F7265206C +S315E064EEB0796F752052657472792C206D616B65206B +S315E064EEC073757265207468657C64657669636520CC +S315E064EED068617320706F7765722C206973206F6E3A +S315E064EEE02D6C696E652C20616E642069737C6C6F31 +S315E064EEF06164656420776974682070617065722006 +S315E064EF006F722066696C6D2E5D5B43616E63656CE2 +S315E064EF107C52657472795D005B315D5B596F752017 +S315E064EF2063616E6E6F742064656C65746520746885 +S315E064EF306520666F6C64657220696E7C7768696368 +S315E064EF406820796F75206172652063757272656E8B +S315E064EF50746C7920776F726B696E672E5D5B2020C7 +S315E064EF604F4B20205D005B335D5B546F20736176AD +S315E064EF706520796F7572206465736B746F702C208D +S315E064EF80696E7365727420796F75727C47454D203E +S315E064EF904445534B544F50206469736B20696E74D7 +S315E064EFA06F20647269766520413A2C20636C6F73D6 +S315E064EFB0657C74686520647269766520646F6F72D7 +S315E064EFC02C20616E6420636C69636B206F6E204FE6 +S315E064EFD04B2E7C436C69636B206F6E2043616E637A +S315E064EFE0656C20696620796F7520646F6E2774207E +S315E064EFF077616E7420746F7C73617665207468657E +S315E064F000206465736B746F702E5D5B20204F4B20BC +S315E064F010207C43616E63656C5D005B315D5B43617F +S315E064F0206E6E6F742066696E642074686520464F00 +S315E064F030524D41542070726F6772616D2E20204983 +S315E064F0406620796F757C617265207573696E672079 +S315E064F05061206475616C2D666C6F7070792073796C +S315E064F0607374656D2C20796F75206D7573747C6629 +S315E064F0706F726D6174206469736B732066726F6D11 +S315E064F08020796F757220444F53206469736B2E2028 +S315E064F09020496620796F757C617265207573696E47 +S315E064F0A06720612068617264206469736B2C2063F5 +S315E064F0B06F707920464F524D415420746F207C74B2 +S315E064F0C0686520726F6F74206469726563746F72C9 +S315E064F0D0792E5D5B4F4B5D004E6F20636C69636BAD +S315E064F0E0005B315D5B5468652074726173682063AC +S315E064F0F0616E206973207468652064657374696EF3 +S315E064F1006174696F6E20746F7C776869636820796F +S315E064F1106F75206472616720746865206469736BD7 +S315E064F120732C20666F6C646572732C7C646F637594 +S315E064F1306D656E74732C206F72206170706C696398 +S315E064F1406174696F6E73207468617420796F757C1D +S315E064F15077616E7420746F2064656C6574652050A5 +S315E064F16045524D414E454E544C59215D5B20204FEE +S315E064F1704B20205D0020486F6C64203C53686966D0 +S315E064F180743E20746F20706175736520746869736A +S315E064F1902073637265656E2000494E5354414C4C4E +S315E064F1A0204449534B20445249564500466F6C64AB +S315E064F1B065727320746F2064656C6574653A2020AB +S315E064F1C05F5F5F5F005B325D5B44617461206F6EBD +S315E064F1D020746865206469736B20696E2064726963 +S315E064F1E076652025633A206D61792062657C646189 +S315E064F1F06D616765642E2020596F75206D75737433 +S315E064F2002075736520746865207269676874206B1D +S315E064F210696E647C6F6620666C6F70707920646971 +S315E064F220736B3B20796F75206D75737420636F6EB5 +S315E064F2306E65637420796F75727C6861726420644C +S315E064F24069736B2070726F7065726C792E5D5B4367 +S315E064F250616E63656C7C52657472795D00202043EF +S315E064F2606C6F73652077696E646F77005B335D5BA3 +S315E064F2705468652047454D204465736B746F702010 +S315E064F28063616E6E6F742066696E64207468657C13 +S315E064F290646F63756D656E7473204445534B4C4F70 +S315E064F2A02E49434E2C204445534B48492E49434E00 +S315E064F2B02C7C6F72204445534B544F502E494E4636 +S315E064F2C020696E2074686520444F532073656172CB +S315E064F2D063687C706174682E202054686573652069 +S315E064F2E0646F63756D656E747320617265207265B3 +S315E064F2F07175697265647C746F2072756E2074686A +S315E064F300652047454D204465736B746F702E5D5B75 +S315E064F31043616E63656C5D004E756D626572206F08 +S315E064F32066206974656D733A20202020205F5F5FF4 +S315E064F3305F5F00456D75544F53206973206469734C +S315E064F340747269627574656420756E64657220743E +S315E064F35068652047504C005B315D5B546869732097 +S315E064F3606469736B20646F6573206E6F7420686183 +S315E064F370766520656E6F75676820726F6F6D20665F +S315E064F3806F727C74686520696E666F726D617469AC +S315E064F3906F6E20796F752061726520747279696E1B +S315E064F3A06720746F20636F70792E7C536F6D652070 +S315E064F3B06974656D732C20686F77657665722C2049 +S315E064F3C06D61792068617665206265656E7C636FE0 +S315E064F3D07069656420746F20746865206469736B12 +S315E064F3E02E5D5B20204F4B20205D002041727261D0 +S315E064F3F06E67652000486F6C64203C416C7465728E +S315E064F4006E6174653E20746F20736B697020484446 +S315E064F4104420626F6F74002020536F7274206279A7 +S315E064F42020646174652020200754004D4D2D4444CA +S315E064F4302D59590020204F70656E0054696D652022 +S315E064F440666F726D61743A002020536F7274206245 +S315E064F45079206E616D65202020074E002020536878 +S315E064F4607574646F776E20202020202020205E5102 +S315E064F470004D616368696E650056657273696F6EA7 +S315E064F48000456E74657220746865206E616D6520F2 +S315E064F4906F662074686520646F63756D656E74204D +S315E064F4A0796F752077616E7400617265206163635C +S315E064F4B065707461626C6520746F2074686973202A +S315E064F4C06170706C69636174696F6E2E005B335D45 +S315E064F4D05B546F2072756E207468652047454D20D5 +S315E064F4E04465736B746F702C20696E7365727420F7 +S315E064F4F0796F75727C47454D204445534B544F5064 +S315E064F500206469736B20696E206472697665204154 +S315E064F51020616E6420636C69636B7C6F6E204F4B15 +S315E064F520206F7220707265737320456E7465722EF7 +S315E064F53020546F2072657475726E20746F20444F28 +S315E064F540532C7C636C69636B206F6E2043616E63DE +S315E064F550656C2E5D5B20204F4B20207C43616E639F +S315E064F560656C5D00646F63756D656E747300427996 +S315E064F57074657320617661696C61626C653A2020BA +S315E064F5805F5F5F5F5F5F5F5F5F5F005B325D5B59DD +S315E064F5906F752063616E6E6F74207772697465202F +S315E064F5A0746F20746865206469736B20696E206487 +S315E064F5B0726976657C25633A206265636175736515 +S315E064F5C020697420697320706879736963616C6C0F +S315E064F5D0792077726974652D7C70726F7465637473 +S315E064F5E065642E20204265666F726520796F7520AA +S315E064F5F052657472792C2072656D6F76657C746879 +S315E064F600652077726974652D70726F7465637420B2 +S315E064F610746162206F72206E6F74636820746865CB +S315E064F6207C6469736B2E5D5B43616E63656C7C526F +S315E064F630657472795D005B315D5B596F75206361FA +S315E064F6406E6E6F74206F70656E2074686520747278 +S315E064F6506173682063616E2069636F6E7C696E7442 +S315E064F6606F20612077696E646F772E20546F206413 +S315E064F670656C6574652061206469736B2C7C666F68 +S315E064F6806C6465722C20646F63756D656E742C2092 +S315E064F6906F72206170706C69636174696F6E2C7CE3 +S315E064F6A06472616720697420746F2074686520747D +S315E064F6B0726173682063616E2E5D5B20204F4B2020 +S315E064F6C0205D005B325D5B4120666F6C6465722031 +S315E064F6D0776974682074686174206E616D65206111 +S315E064F6E06C72656164797C657869737473206F7232 +S315E064F6F020796F7572206469736B2069732066750F +S315E064F7006C6C2E7C526574727920776974682061BA +S315E064F710206E6577206E616D652C206F7220436183 +S315E064F7206E63656C7C616E6420636865636B20748C +S315E064F730686520617661696C61626C652064697391 +S315E064F7406B2073706163652E5D5B2043616E6365F8 +S315E064F7506C207C205265747279205D00436F6E661E +S315E064F76069726D2064656C657465733F0049636FA7 +S315E064F7706E206C6162656C3A20205F5F5F5F5F5FFD +S315E064F7805F5F5F5F5F5F00506C6561736520656AAC +S315E064F7906563742074686520666C6F707079206147 +S315E064F7A06E64206869742052455455524E000000D8 +S315E064F7B000E1CE5E00E1CF4E00E1CF9E00E1D054A1 +S315E064F7C000E1D34400E2010400E2029200E2222076 +S315E064F7D000E1DA6800E1D7DC00E1E6E200E22DEA86 +S315E064F7E000E21F9200E1C79E00E1E98400E1E9BE20 +S315E064F7F000E1EA6800E2021200E2019400E2024AF1 +S315E064F80000E22EDA00E21FDE00E1D94800E1D8F03A +S315E064F81000E1D6BE00E1C90000E1D7DE00E20C58A3 +S315E064F82000E2070A00E2175C00E218D400E1CD705A +S315E064F83000E2179400E1D05400E1EAB000E203D4B8 +S315E064F84000E1D7E000E2202600E21F4200E1CDAA13 +S315E064F85000E1CE1E00E1CFCA00E1DC8000E1D7061C +S315E064F86000E1DF4600E21F1400E21E0E00E1EA1842 +S315E064F87000E214EE00E20FF000E2077400E1D66CF9 +S315E064F88000E1E97400E1D73C00E217FC00E2209C69 +S315E064F89000E2280C00E2053000E22CAA00E22D6CBE +S315E064F8A000E215B600E20B0C00E20C5600E206D666 +S315E064F8B000E2070C00E2072600E2074000E2187265 +S315E064F8C000E1CCC600E228D600E2294200E1D05449 +S315E064F8D000E1D05400E2075A0000000F0001000284 +S315E064F8E00004000600030005000700080009000A9A +S315E064F8F0000C000E000B000D000000030001000286 +S315E064F900000000020003000600040007000500088A +S315E064F9100009000A000B000E000C000F000D000148 +S315E064F920000000020003000100E1D12400E1D126D9 +S315E064F93000E1D32000E1D2FC00E1D2E200E1D2CAE8 +S315E064F94000E1D2B200E1D29A00E1D28200E1D26A69 +S315E064F95000E1D25200E1D20000E1D1BE00E1D1AAD9 +S315E064F96000E1D19200E1D14600E1D16200E1D178D3 +S315E064F97000E1D18000E1D17A000F07E00FF01FD8F3 +S315E064F9801808180810081E781348110808100B7038 +S315E064F990065007A01E201BC018000007FFFF8080EA +S315E064F9A080808080FFFF080808080808202040401F +S315E064F9B080804141222214140808101000000000DF +S315E064F9C0101028280000000001018282020202026F +S315E064F9D0AAAA505020202020AAAA0505404080808B +S315E064F9E00000080804040202000020206606C6C679 +S315E064F9F0D8D8181881818DB10C33600000000000FE +S315E064FA00040000000010000080000000F8F86C6C50 +S315E064FA10C6C68F8F1F1F36366363F1F1AAAA00004C +S315E064FA20888814142222414188880000080800006E +S315E064FA30AAAA0000080800008888000077779898EA +S315E064FA40F8F8F8F8777789898F8F8F8F8080808050 +S315E064FA5041413E3E080808081414E3E381814242CA +S315E064FA60242418180606010180808080F0F0F0F006 +S315E064FA70F0F0F0F00F0F0F0F0F0F0F0F08081C1CBC +S315E064FA803E3E7F7FFFFF7F7F3E3E1C1C111122229C +S315E064FA904444FFFF888844442222FFFF00030000B9 +S315E064FAA044440000111100005555000055558888FE +S315E064FAB0555522225555AAAA5555AAAA5555AAAA14 +S315E064FAC0DDDDAAAA7777AAAAFFFFAAAAFFFFEEEE70 +S315E064FAD0FFFFBBBBFFFFFFFFFFFFFFFFFFFF00076B +S315E064FAE001010202040408081010202040408080CE +S315E064FAF06060C0C08181030306060C0C18183030C0 +S315E064FB0042428181818142422424181818182424AF +S315E064FB10808080808080808080808080808080809B +S315E064FB20FFFF00000000000000000000000000008D +S315E064FB30FFFF80808080808080808080808080807D +S315E064FB40000F0001000200040008001000200040DD +S315E064FB50008001000200040008001000200040005C +S315E064FB60800080030007000E001C0038007000E08F +S315E064FB7001C0038007000E001C0038007000E0003E +S315E064FB80C0018001400220041008081004200240ED +S315E064FB90018001800240042008101008200440021D +S315E064FBA0800180008000800080008000800080000A +S315E064FBB080008000800080008000800080008000FB +S315E064FBC08000FFFF0000000000000000000000006D +S315E064FBD000000000000000000000000000000000DB +S315E064FBE00000FFFF808080808080808080808080CD +S315E064FBF08080FFFF808080808080808080808080BD +S315E064FC008080FFFFFFFFFFF0C0C0FF18FF00F191A7 +S315E064FC100001000200000000000000000002000293 +S315E064FC200000FFFD000000030002FFFC000000048A +S315E064FC300000000300020000FFFD00000003000274 +S315E064FC4000030002FFFDFFFE00020003FFFEFFFD6E +S315E064FC50000200010005FFFCFFFD0004FFFD000457 +S315E064FC600003FFFC0003FFFCFFFD00020002FFFC53 +S315E064FC70FFFD000400030002FFFC00030004FFFD37 +S315E064FC8000010005FFFC00000000FFFD0004000029 +S315E064FC9000000003FFFC000000010000000100001A +S315E064FCA00001E000F000F800FC00FE00FF00FF80C9 +S315E064FCB0FFC0FE00FE00EF000F000780078003C070 +S315E064FCC0000040006000700078007C007E007F00E9 +S315E064FCD07F807C006C004600060003000300018020 +S315E064FCE000000000000200030000000100000006BE +S315E064FCF0000700040005000001C2014A011300DCAC +S315E064FD0000A50000FFFFFFFFFFFF0000080E0900EB +S315E064FD1000010F5400010F6A00010F8000010F9685 +S315E064FD2000010FAC00010FC200010FD800010FEE15 +S315E064FD30000000005C53435241502E2A000000004C +S315E064FD4000190014001B0016001B001600190019A8 +S315E064FD50001B0014001B001B001400140014001B9D +S315E064FD60001B0014001400011101000111010501DA +S315E064FD70110100000000070111010000000000000D +S315E064FD8011010000110106011101000111010101D7 +S315E064FD9011010201110100011111000111010001BB +S315E064FDA011010401110103011101000111110001A6 +S315E064FDB011010000000000000000000000000003E4 +S315E064FDC00001000011000000000100500050000036 +S315E064FDD000019088000192C8000193B800E302D262 +S315E064FDE000E302D800E302E000E302E500E302EBAD +S315E064FDF000E302F000E302FA00E3030800E3032C05 +S315E064FE0000E3034C00E3036D00E302F000E302FA6F +S315E064FE1000E3038B00E303A800E303C900E303D430 +S315E064FE2000E303E800E303F100E303FA0000000003 +S315E064FE3000E3040900E304B400E3057600E3060E98 +S315E064FE4000E306E300E3078000E3081400E3088EBA +S315E064FE5000E308DD00E3095A00E309FF00E30A6D05 +S315E064FE6000E30ABB00E30B1C00E30B3800E30B542E +S315E064FE7000E4FF0A0004002000000000000100E442 +S315E064FE80FF8A0004002000000000000100E5000A8B +S315E064FE900004002000000000000100E5008A000282 +S315E064FEA0002500000000000300E500D40002002500 +S315E064FEB000000000000300E5011E000200250000CA +S315E064FEC00000000300E50168000200250000000070 +S315E064FED0000300E501B20002002500000000000313 +S315E064FEE000E501FC0002002500000000000300E5D7 +S315E064FEF002460002002500000000000300E50290CF +S315E064FF00000200250000000000030000000000007D +S315E064FF1000000000070000000F8000000F80000072 +S315E064FF200F8000000F8000000F8000000F8000004B +S315E064FF300F8000000F8000000F800079EF9C0EFBBD +S315E064FF40EFBC1EFBEFBC1EFBEF7C16AAAF7C1EFB70 +S315E064FF50EF7C0D75DCBC038E37F81FFFDFF81FFFFF +S315E064FF607FF01FFFFFF01FFDFFE01FFFFFC00FFDE7 +S315E064FF70FF8007FFFE0001FFF400015FFC0001FF64 +S315E064FF80FC0001FFFC000000000000000000001F10 +S315E064FF90FE00007FFF8000FFFFC001FFFFE001F885 +S315E064FFA007E001F003E001F003E000E003E00000B5 +S315E064FFB007C000000FC000001F8000003F00000083 +S315E064FFC07E000000FC000001F8000003F00000037E +S315E064FFD0E0000007C0000007C0000007C00000079B +S315E064FFE0C0000007C00000038000000000000000BD +S315E064FFF00000000000000007C000000FE000000FF2 +S315E0650000E0000007C00000000000000000000001FD +S315E0650010C0000073E00000FBE70000FBEF801CFB1F +S315E0650020EF803EFBEF803EFBEF803EFBEF803EFBE5 +S315E0650030EF803EFBEF803EFBEF803EFBEF9C3EFBB9 +S315E0650040EFBC3EFBEFBC3FFFFF7C3FFFFF7C3FFF26 +S315E0650050FF7C3FFFFEFC3FFFF7F83FFFDFF83FFF22 +S315E06500607FF03FFFFFF03FFDFFE01FFDFFC00FFFA5 +S315E0650070FF8007FFFF0003FFFE0003FFFE0003FFAF +S315E0650080FE0003FFFE000000000000000000000126 +S315E065009000000001E000F000F800FC00FE00FF0053 +S315E06500A0FF80FFC0FE00FE00EF000F0007800780BF +S315E06500B003C003C040006000700078007C007E00ED +S315E06500C07F007F807C006C0046000600030003002D +S315E06500D00180018000070007000100000001FFFFC5 +S315E06500E0FFFF07E003C003C003C003C003C003C04E +S315E06500F003C003C003C003C007E0FFFFFFFF7C3E0C +S315E0650100066003C001800180018001800180018075 +S315E0650110018001800180018003C006607C3E0008A5 +S315E06501200008000100000001FFFFFFFFFFFF7FFE03 +S315E06501307FFE3FFC1FF80EF00FF01FF83FFC7FFED9 +S315E06501407FFEFFFFFFFFFFFF00007FFE2004100834 +S315E065015014480AB0056002C0034004A0091010887F +S315E065016012A835547FFE0000000000000001000083 +S315E06501700001F000F8007C003E071F0F0F9E07DECA +S315E065018007FE1FFF3FFF7FFF7FFE3FFE1FFE0FFF60 +S315E065019001FFF00088004400220711090892045225 +S315E06501A006321913248152414982260218060E0346 +S315E06501B001800008000800010000000100000380DE +S315E06501C003F033FE7BFF7BFF3FFFFFFFFFFF7FFF14 +S315E06501D03FFF3FFF1FFE07FC07FC0FFE00000380A5 +S315E06501E00270324E4A494A492649F24998014C011C +S315E06501F0200120011802040404040FFE000700072D +S315E06502000001000000010000038003800380038095 +S315E065021003807FFC7FFC7FFC038003800380038093 +S315E065022003800000000000000000000001000100FE +S315E0650230010001001FF0010001000100010000005E +S315E06502400000000000000008000800010000000151 +S315E0650250000007C007C007C007C007C0FFFFFFFF74 +S315E0650260FFFFFFFFFFFF07C007C007C007C007C066 +S315E06502700000000003800380038003800380FFFFA6 +S315E0650280FFFFFFFF03800380038003800380000098 +S315E06502900008000800010000000107E007E007E04C +S315E06502A007E007E0FFFFFFFFFFFFFFFFFFFFFFFF41 +S315E06502B007E007E007E007E007E0000003C002406B +S315E06502C00240024002407E7E400240027E7E02405F +S315E06502D002400240024003C00000000014181B27DC +S315E06502E021001A1F001A1F20001A1F200020001A7D +S315E06502F0200012131A191F2000121F1A1300121A72 +S315E06503001F20001516170015161726282B2A290013 +S315E0650310FFFFFFFFFFFF001900000000000000007F +S315E06503200000000000000000FFFFFFFFFFFF001474 +S315E06503300000000000001100000000000000000061 +S315E06503400001000201010201010001010201010152 +S315E0650350010102010000000000000000010000014B +S315E06503600003050005050000010102010010070113 +S315E0650370020100000000000000000000010101022A +S315E0650380010102010102010101010201010101010F +S315E06503900002010000000000000002010101010108 +S315E06503A006010104010101030102010104020108DC +S315E06503B001010000000000000101010901010101E0 +S315E06503C001010100000501030301020201000000CD +S315E06503D000000000000002020203010201010001C3 +S315E06503E003000000010000000101000101000000BA +S315E06503F00000000004030008030006010008010090 +S315E06504000801000401010301010005000101010085 +S315E06504100500000101000101000000000000000088 +S315E06504200000000000000000000000000000000081 +S315E0650430000202000000000000000000000000006D +S315E0650440000000000000000000000000000005015B +S315E06504500005010001010001010002050006010039 +S315E0650460020100010100060500000000000101002F +S315E06504700100020100020101010101000000000026 +S315E06504800000000000000000000000010203010218 +S315E06504900101010101010001010001020001020003 +S315E06504A0010200000000000000000001FFFFFFFF01 +S315E06504B010000005000B001700000020002000007A +S315E06504C000200048000A0000000200000003FFFF6C +S315E06504D0FFFF10000004000B00170000002000205D +S315E06504E0000000200048000A000000040000000546 +S315E06504F0FFFFFFFF1000000000000017000000206E +S315E06505000020000000200048000A00000006000008 +S315E06505100007FFFFFFFF1000000000000017000066 +S315E065052000200020000000200048000A00000008C6 +S315E065053000000009FFFFFFFF100000000000001744 +S315E0650540000000200020000000200048000A0000AE +S315E0650550000800000009FFFFFFFF10000000000033 +S315E06505600017000000200020000000200048000A77 +S315E06505700000000800000009FFFFFFFF1000000013 +S315E06505800000001700000020002000000020004861 +S315E0650590000A0000000800000009FFFFFFFF1000E9 +S315E06505A00000000000170000002000200000002089 +S315E06505B00048000A0000000800000009FFFFFFFF91 +S315E06505C01000000000000017000000200020000079 +S315E06505D000200048000A000000080000000AFFFF4E +S315E06505E0FFFF10000000000000170000002000205B +S315E06505F0000000200048000A000000080000000B2B +S315E0650600FFFFFFFF1000000000000017000000205C +S315E06506100020000000200048000A000000080000F5 +S315E0650620000CFFFFFFFF1000000000000017000050 +S315E065063000200020000000200048000A00000008B5 +S315E06506400000000DFFFFFFFF10000000000000172F +S315E0650650000000200020000000200048000A00009D +S315E065066000080000000EFFFFFFFF1000000000001D +S315E06506700017000000200020000000200048000A66 +S315E0650680000000080000000FFFFFFFFF10000000FC +S315E06506900000001700000020002000000020004850 +S315E06506A0000A0000000800000010FFFFFFFF1000D1 +S315E06506B00000000000170000002000200000002078 +S315E06506C00048000A0000000800000011FFFFFFFF78 +S315E06506D01000000000000017000000200020000068 +S315E06506E000200048000A0000000800000012FFFF35 +S315E06506F0FFFF10000000000000170000002000204A +S315E0650700000000200048000A000000080000001311 +S315E0650710FFFFFFFF1000000000000017000000204B +S315E06507200020000000200048000A000000080000E4 +S315E06507300014FFFFFFFF1000000000000017000037 +S315E065074000200020000000200048000A00000008A4 +S315E065075000000015FFFFFFFF100000000000001716 +S315E0650760000000200020000000200048000A00008C +S315E0650770000800000016FFFFFFFF10000000000004 +S315E06507800017000000200020000000200048000A55 +S315E06507900000000800000017FFFFFFFF10000000E3 +S315E06507A0000000170000002000200000002000483F +S315E06507B0000A0000000800000018FFFFFFFF1000B8 +S315E06507C00000000000170000002000200000002067 +S315E06507D00048000A0000000800000019FFFFFFFF5F +S315E06507E01000000000000017000000200020000057 +S315E06507F000200048000A000000080000001AFFFF1C +S315E0650800FFFF100000000000001700000020002038 +S315E0650810000000200048000A000000080000001BF8 +S315E0650820FFFFFFFF1000000000000017000000203A +S315E06508300020000000200048000A000000080000D3 +S315E06508400009FFFFFFFF1000000000000017000031 +S315E065085000200020000000200048000A0000000893 +S315E065086000000009FFFFFFFF100000000000001711 +S315E0650870000000200020000000200048000A00007B +S315E0650880000800000009FFFFFFFF10000000000000 +S315E06508900017000000200020000000200048000A44 +S315E06508A00000000800000009FFFFFFFF10000000E0 +S315E06508B0000000170000002000200000002000482E +S315E06508C0000A0000000800000009FFFFFFFF1000B6 +S315E06508D00000000000170000002000200000002056 +S315E06508E00048000A0000000800000009FFFFFFFF5E +S315E06508F01000000000000017000000200020000046 +S315E065090000200048000A0000000800000009FFFF1B +S315E0650910FFFF100000000000001700000020002027 +S315E0650920000000200048000A0000000800000009F9 +S315E0650930FFFFFFFF10000000000000170000002029 +S315E06509400020000000200048000A000000080000C2 +S315E06509500009FFFFFFFF1000000000000017000020 +S315E065096000200020000000200048000A0000000882 +S315E065097000000009FFFFFFFF100000000000001700 +S315E0650980000000200020000000200048000A00006A +S315E0650990000800000009FFFFFFFF100000000000EF +S315E06509A00017000000200020000000200048000A33 +S315E06509B00000000800000009FFFFFFFF10000000CF +S315E06509C0000000170000002000200000002000481D +S315E06509D0000A0000000800000009FFFFFFFF1000A5 +S315E06509E00000000000170000002000200000002045 +S315E06509F00048000A0000001C0000001DFFFFFFFF25 +S315E0650A001000000000000017000000200020000034 +S315E0650A1000200048000A0000001C0000001EFFFFE1 +S315E0650A20FFFF100000000000001700000020002016 +S315E0650A30000000200048000A0000001C0000001FBE +S315E0650A40FFFFFFFF10000000000000170000002018 +S315E0650A500020000000200048000A0000001C00009D +S315E0650A600020FFFFFFFF10000000000000170000F8 +S315E0650A7000200020000000200048000A0000001C5D +S315E0650A8000000021FFFFFFFF1000000000000017D7 +S315E0650A90000000200020000000200048000A000059 +S315E0650AA0001C00000022FFFFFFFF100000000000B1 +S315E0650AB00017000000200020000000200048000A22 +S315E0650AC00000001C00000023FFFFFFFF1000000090 +S315E0650AD0000000170000002000200000002000480C +S315E0650AE0000A0000001C00000024FFFFFFFF100065 +S315E0650AF00000000000170000002000200000002034 +S315E0650B000048000A0000001C00000025FFFFFFFF0B +S315E0650B101000000000000017000000200020000023 +S315E0650B2000200048000A0000001C00000026FFFFC8 +S315E0650B30FFFF100000000000001700000020002005 +S315E0650B40000000200048000A0000001C00000027A5 +S315E0650B50FFFFFFFF10000000000000170000002007 +S315E0650B600020000000200048000A0000001C00008C +S315E0650B700028FFFFFFFF10000000000000170000DF +S315E0650B8000200020000000200048000A0000001C4C +S315E0650B9000000029FFFFFFFF1000000000000017BE +S315E0650BA0000000200020000000200048000A000048 +S315E0650BB0001C0000002AFFFFFFFF10000000000098 +S315E0650BC00017000000200020000000200048000A11 +S315E0650BD00000001C0000002BFFFFFFFF1000000077 +S315E0650BE000000017000000200020000000200048FB +S315E0650BF0000A0000001C0000002CFFFFFFFF10004C +S315E0650C000000000000170000002000200000002022 +S315E0650C100048000A0000001C0000002DFFFFFFFFF2 +S315E0650C201000000000000017000000200020000012 +S315E0650C3000200048000A0000001C0000001DFFFFC0 +S315E0650C40FFFF1000000000000017000000200020F4 +S315E0650C50000000200048000A0000001C0000001D9E +S315E0650C60FFFFFFFF100000000000001700000020F6 +S315E0650C700020000000200048000A0000001C00007B +S315E0650C80001DFFFFFFFF10000000000000170000D9 +S315E0650C9000200020000000200048000A0000001C3B +S315E0650CA00000001DFFFFFFFF1000000000000017B9 +S315E0650CB0000000200020000000200048000A000037 +S315E0650CC0001C0000001DFFFFFFFF10000000000094 +S315E0650CD00017000000200020000000200048000A00 +S315E0650CE00000001C0000001DFFFFFFFF1000000074 +S315E0650CF000000017000000200020000000200048EA +S315E0650D00000A0000001C0000001DFFFFFFFF100049 +S315E0650D100000000000170000002000200000002011 +S315E0650D200048000A0000001C0000001DFFFFFFFFF1 +S315E0650D301000000000000017000000200020000001 +S315E0650D4000200048000A0000001C0000001DFFFFAF +S315E0650D50FFFF1000000000000017000000200020E3 +S315E0650D60000000200048000A0000001C0000001D8D +S315E0650D70FFFFFFFF100000000000001700000020E5 +S315E0650D800020000000200048000A0000001C00006A +S315E0650D90001DFFFFFFFF10000000000000170000C8 +S315E0650DA000200020000000200048000A0000001C2A +S315E0650DB00000001DFFFFFFFF1000000000000017A8 +S315E0650DC0000000200020000000200048000A000026 +S315E0650DD0001C0000001DFFFFFFFF10000000000083 +S315E0650DE00017000000200020000000200048000AEF +S315E0650DF00000001C0000001DFFFFFFFF1000000063 +S315E0650E0000000017000000200020000000200048D8 +S315E0650E10000A0000001C0000001DFFFFFFFF100038 +S315E0650E200000000000170000002000200000002000 +S315E0650E300048000A00000000000000000000000015 +S315E0650E40000000000000000000000000FFFFFFFF5B +S315E0650E50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57 +S315E0650E60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47 +S315E0650E70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37 +S315E0650E80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27 +S315E0650E90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17 +S315E0650EA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07 +S315E0650EB0FFFFFFFF000000000000000000000000EB +S315E0650EC000000000000000000000000000000000D7 +S315E0650ED07FFFFFFE40000002400000024000000286 +S315E0650EE040000002400000024000000240000002AF +S315E0650EF0400000024000000240000002400000029F +S315E0650F00400000024000000240000002400000028E +S315E0650F1040155552470AAAA24715555240000002A8 +S315E0650F20400000027FFFFFFE0000000000000000B9 +S315E0650F300000000000000000000000000000000066 +S315E0650F40000000000000000000000000FFFFFFFF5A +S315E0650F50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56 +S315E0650F60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46 +S315E0650F70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36 +S315E0650F80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26 +S315E0650F90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16 +S315E0650FA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06 +S315E0650FB0FFFFFFFF000000000000000000000000EA +S315E0650FC000000000000000000000000000000000D6 +S315E0650FD07FFFFFFE40000002400000024000000285 +S315E0650FE0400000024000000E400000084000000E90 +S315E0650FF0400000024003C0024007E0024007E0020D +S315E06510004003C00240000002400000024001800249 +S315E06510104001800240018002400180024001800279 +S315E0651020400000027FFFFFFE0000000000000000B8 +S315E06510300000000000000000000000000000000065 +S315E06510400000000000000000000000000000000055 +S315E065105000000000000000001FFE00001FFE00000B +S315E06510603FFFFFF87FFFFFFCFFFFFFFEFFFFFFFF90 +S315E0651070FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35 +S315E0651080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25 +S315E0651090FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15 +S315E06510A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05 +S315E06510B0FFFFFFFF000000000000000000000000E9 +S315E06510C000000000000000000000000000000000D5 +S315E06510D00000000000000000000000000FFC0000BA +S315E06510E0080400003807FFF0400000084FFFFFFCEA +S315E06510F0500000025000000250000002500000025D +S315E0651100500000025000000250000002500000024C +S315E0651110500000025000000250000002500000023C +S315E0651120300000021FFFFFFE000000000000000027 +S315E0651130000000000003F800000FFE00001FFF80BE +S315E0651140001FFFC0001FFFE0001FFFF0001FFFF05C +S315E0651150000FFFF00007FFF0000FFFF000FFFFF064 +S315E065116007FFFFF007FFFFE007FFFFE007FFFFE090 +S315E065117003FFFFC003FFFFC003FFFFC003FFFFC020 +S315E065118003FFFFC003FFFFC003FFFFC003FFFFC010 +S315E065119003FFFFC003FFFFC003FFFFC003FFFFC000 +S315E06511A003FFFFC003FFFFC01FFFFFF81FFFFFF848 +S315E06511B01FFFFFF8000000000001F00000020C00D0 +S315E06511C000040300000400800004004000040020E1 +S315E06511D0000200200001002000008020000FF040A2 +S315E06511E0007D5F0003EAABC001755E80011FF0809C +S315E06511F001000080010000800100008001000080A0 +S315E0651200010000800100008001000080010000808F +S315E06512100100008001000080010000800138008047 +S315E065122001F0018000781F0007EFF00007C00000BD +S315E065123000000000FFFFFFFFFFFFFFFFFFFFFFFF6F +S315E0651240FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63 +S315E0651250FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53 +S315E0651260FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43 +S315E0651270FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33 +S315E0651280FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23 +S315E0651290FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13 +S315E06512A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03 +S315E06512B0FFFFFFFF000000007FFFFFFE7FFFFFFEF1 +S315E06512C07FFFFFFE40000002400000024000000292 +S315E06512D040000002400000024000000240000002BB +S315E06512E040000002400000024000000240000002AB +S315E06512F0400000024000000240000002400000029B +S315E0651300400000024000000240000002400000028A +S315E0651310400000024000000240000002400000027A +S315E065132040000002400000027FFFFFFE0000000073 +S315E065133000000000000000007FFFFFFE7FFFFFFE6C +S315E06513407FFFFFFE400000024000FFFE4000820A8C +S315E06513504000BAEA4000820A5FFFFFFE5000820A5B +S315E06513605000AAAA57FEAAAA5000AAAA5000820A65 +S315E06513705FFFFFFE5000820A5000AAAA57FEAAAA9E +S315E06513805000AAAA5000820A5FFFFFFE5000820A5B +S315E06513905000AAAA57FEAAAA5000AAAA5000820A35 +S315E06513A05FFFFFFE5000820A7FFFFFFE0000000040 +S315E06513B000000000000000007FFFFFFE7FFFFFFEEC +S315E06513C07FFFFFFE40000002400000024000000291 +S315E06513D040000002407FF8024040140240401E0291 +S315E06513E040400202404002024040020240400202A2 +S315E06513F05040020257C003EA5C40023A47FFFFEA03 +S315E06514004400002248AAAA925066660A5199998ACA +S315E0651410507FFE0A5000000A5FFFFFFA40000002B7 +S315E065142040000002400000027FFFFFFE0000000072 +S315E065143000000000000000007FFFFFFE7FFFFFFE6B +S315E06514407FFFFFFE40000002403FFF824040018291 +S315E06514504080028241FFFC8241000482417FF48242 +S315E06514604140148241489482414F948241401482BE +S315E065147041401482417FF48241000482417FF482D7 +S315E06514804140148241489482414F9482414014829E +S315E065149041401482417FF482410005024100060223 +S315E06514A041FFFC02400000027FFFFFFE00000000F6 +S315E06514B000000000000000007FFFFFFE7FFFFFFEEB +S315E06514C07FFFFFFE400000024000000240FF800211 +S315E06514D0430060024C0018025FFFFC0A4022001AD6 +S315E06514E0502EFFF258224012542E3FD2522202521B +S315E06514F0512E035250A201D2506E00525022005234 +S315E065150052160072530A0072528600225242000257 +S315E06515105221000253F08002500040025000200242 +S315E06515205FFFF002402200027FFFFFFE0000000041 +S315E065153000000000000000007FFFFFFE7FFFFFFE6A +S315E06515407FFFFFFE45C0000245C0000245C00002C0 +S315E065155045C0000245C0000245C0000245C0000224 +S315E065156045C0000247C00002428000024280000298 +S315E0651570428000027BBF07E247C19C3247C0F01A52 +S315E065158047C0000A4380000A4120600A4550900A38 +S315E06515904AA1080A4541080A4A81080A4040900A74 +S315E06515A04000600A4000000A7FFFFFFE0000000081 +S315E06515B000000000000000007FFFFFFE7FFFFFFEEA +S315E06515C07FFFFFFE40000002400000024FC7E002D9 +S315E06515D05028100250381F82502810824FC7E0828B +S315E06515E04000008240000082400000824FC003F266 +S315E06515F05020040A503F040E5021040A4FC7E3F217 +S315E06516004008108240081F82400810024FC7E0027A +S315E065161050210002503F0002502000024FC00002F8 +S315E065162040000002400000027FFFFFFE0000000070 +S315E065163000000000000000007FFFFFFE7FFFFFFE69 +S315E06516407FFFFFFE4000000241F0000247CC00024A +S315E06516504FC200025FC107FA5FC1040A5001040A7E +S315E06516605001040A4802040A460C040A41F0040AD9 +S315E0651670400FF44A400814EA400815BA4008171ABC +S315E06516804008160E40089C0E4009DC0A5FEB740ABA +S315E0651690502E340A522C140A5738140A5DB8140AC7 +S315E06516A058E8140A7068140A7FFFFFFE0000000020 +S315E06516B000000000000000007FFFFFFE7FFFFFFEE9 +S315E06516C07FFFFFFE4000000240000002401FF80277 +S315E06516D0406006024180018241000082420000428C +S315E06516E042000042420000424205A042410A508261 +S315E06516F04085A1024042420240224402401248022D +S315E0651700400A5002400A5002400A5002400FF00279 +S315E065171040081002400FF00240081002400FF00248 +S315E065172040018002400000027FFFFFFE00000000EE +S315E065173000000000000000007FFFFFFE7FFFFFFE68 +S315E06517407FFFFFFE40000002400660024006600241 +S315E065175040066002407FFE0241FFFF8241C663822A +S315E065176041C6638241C6600241C6600241C6600207 +S315E065177041FFFE02407FFF82400663824006638248 +S315E06517804006638241C6638241C6638241C663821F +S315E065179041FFFF82407FFE0240066002400660022E +S315E06517A040066002400000027FFFFFFE0000000089 +S315E06517B000000000000000007FFFFFFE7FFFFFFEE8 +S315E06517C07FFFFFFE400000024000000243F9FCFE99 +S315E06517D0441A0D06482C160A5FDFEFF65068341A90 +S315E06517E052592C965269349A52592C965269341A42 +S315E06517F052592C965268349A52592C965269341A33 +S315E065180052592C965269349A52592C965068341A24 +S315E065181050582C1650783C1E5068341A5FCFE7F264 +S315E065182040000002400000027FFFFFFE000000006E +S315E065183000000000000000007FFFFFFE7FFFFFFE67 +S315E06518407FFFFFFE4000000240000002400000020C +S315E065185040000002403FFFFA4060003240C000624F +S315E0651860418180E24303FFF2460183924C00069292 +S315E065187058000D125FFFFB124180063A40C01C3AE4 +S315E0651880407FF03A4000003A4000003A4000003AB6 +S315E06518904000003A4000003A4000003A400000024D +S315E06518A040000002400000027FFFFFFE00000000EE +S315E06518B000000000000000007FFFFFFE7FFFFFFEE7 +S315E06518C07FFFFFFE4000000240000002400000028C +S315E06518D040000002400000024000000240FFFF02B7 +S315E06518E0430000C24C1E78325012480A5073CE0A45 +S315E06518F05F8001FA5E0DB07A44000022480DB012B1 +S315E065190048000012480DB01248000012480DB012AA +S315E0651910480000124FFFFFF243F81FC24000000285 +S315E065192040000002400000027FFFFFFE000000006D +S315E065193000000000000000007FFFFFFE7FFFFFFE66 +S315E06519407FFFFFFE4000000241C00002417FF002DA +S315E065195041000C0241000602417FFB0241C42502BB +S315E06519604004230240042102400420024004200290 +S315E06519704004200240042002400420024004200284 +S315E065198040081002400810024008100240081002A4 +S315E06519904008100240081002400810024008100294 +S315E06519A0400FF002400000027FFFFFFE00000000EE +S315E06519B000000000000000007FFFFFFE7FFFFFFEE6 +S315E06519C07FFFFFFE4000000240100802489008E2F3 +S315E06519D0451009124210091245100912489008E2AD +S315E06519E0401008025FFFFFFA4010080240144912F2 +S315E06519F0401288A240110842401288A2401449125A +S315E0651A00401008025FFFFFFA40100802401008E246 +S315E0651A10401009124010091240100912401008E200 +S315E0651A2040100802400000027FFFFFFE0000000054 +S315E0651A3000000000000000007FFFFFFE7FFFFFFE65 +S315E0651A407FFFFFFE4000000240000002400000020A +S315E0651A504000000241FFF0024100280241403C029D +S315E0651A60410004024140140241000402414014026F +S315E0651A70410004024140140241000402474017C296 +S315E0651A8045FFFC4248000022555555525000001A64 +S315E0651A9050000CDA500000125FFFFFF240000002D2 +S315E0651AA040000002400000027FFFFFFE00000000EC +S315E0651AB000000000000000007FFFFFFE7FFFFFFEE5 +S315E0651AC07FFFFFFE40000002476C3FFA4000200AB8 +S315E0651AD05BBC288A40002AAA5EDC2AAA40003FFA57 +S315E0651AE05DF0000240003BDA5FDC0002400035BA9B +S315E0651AF05F74000240003F5A5BEC000240003BBA6F +S315E0651B005FFC00025AAC0BDA55F400025BEC2EDAA8 +S315E0651B1055F400025AAC3BFA555400025FFC3DBAF7 +S315E0651B2040018002400000027FFFFFFE00000000EA +S315E0651B3000000000000000007FFFFFFE7FFFFFFE64 +S315E0651B407FFFFFFE40000002400FF002403FF402D7 +S315E0651B50407FFE0240F7EF0240E0070240C0030225 +S315E0651B6041DE7B82414C32824140028241024082C3 +S315E0651B7040C18302404812024044220240E3C70264 +S315E0651B8043B00DC24D6816B25AB7ED5A556996AA75 +S315E0651B904AB18D52556BD6AA4AA5A552556186AA14 +S315E0651BA04AA18552400000027FFFFFFE000000006B +S315E0651BB000000000000000007FFFFFFE7FFFFFFEE4 +S315E0651BC07FFFFFFE400000025FFFC0025800C002D3 +S315E0651BD0540178025202480251047F82508840825D +S315E0651BE05053FFFA5022000A5002000A5002FC0ADE +S315E0651BF05002000A5FFEFC0A4412000A47F6000A34 +S315E0651C004012FFEA4016000A4012FFEA4016000A53 +S315E0651C104012FF8A4016000A401200EA401E000A9A +S315E0651C204007FFFA400000027FFFFFFE000000006C +S315E0651C300000000000000000FFFFFFC0FFFFFFE0BF +S315E0651C40FFFFFFF0FFFFFFF8FFFFFFFCFFFFFFFE73 +S315E0651C50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49 +S315E0651C60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39 +S315E0651C70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29 +S315E0651C80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19 +S315E0651C90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09 +S315E0651CA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 +S315E0651CB0FFFFFFFF000000000000000000000000DD +S315E0651CC01FFFFF0010000380100002C010000260D5 +S315E0651CD010000230100003F810000008100000083C +S315E0651CE01000000810000008100000081000000849 +S315E0651CF01000000810000008100000081000000839 +S315E0651D001000000810000008100000081000000828 +S315E0651D101000000810000008100000081000000818 +S315E0651D20100000081FFFFFF800000000000000003B +S315E0651D300000000000000000000000000000000058 +S315E0651D401FFFFF0010410780104106C0155556601C +S315E0651D5015555630155557F81041041810410418B5 +S315E0651D601FFFFFF810410418104104181555555822 +S315E0651D701555555815555558104104181041041810 +S315E0651D801FFFFFF810410418104104181555555802 +S315E0651D9015555558155555581041041810410418F0 +S315E0651DA01FFFFFF81FFFFFF80000000000000000BE +S315E0651DB000000000000000000000000000000000D8 +S315E0651DC01FFFFF0010000380100002C012AA026028 +S315E0651DD011540230100003F81000000810AAAA8812 +S315E0651DE0105555481000000812AAAA88115555489D +S315E0651DF01000000812AAAA88115555481000000877 +S315E0651E0012AAAA88115555481000000810AAAA8892 +S315E0651E10105555481000000812AAAA88115555486C +S315E0651E20100000081FFFFFF800000000000000003A +S315E0651E300000000000000000000000000000000057 +S315E0651E401FFFFF0010000380100002C01000026053 +S315E0651E5010000230100003F81000000810000008BA +S315E0651E60101E000810F3FE0810DE060810F3FE08E3 +S315E0651E7010DE060810F3FE0810C0060810FFFE081F +S315E0651E801080020810882208108FE2081080020888 +S315E0651E901080020810FFFE08100000081000000818 +S315E0651EA0100000081FFFFFF80000000000000000BA +S315E0651EB000000000000000000000000000000000D7 +S315E0651EC01FFFFF0010000380100002C010000260D3 +S315E0651ED010000230100003F8100000081000040836 +S315E0651EE01000080810FFF00810D5600810AAA008D1 +S315E0651EF010D5600810AAA00810D57C0810AAA60817 +S315E0651F0010D5690810FFF308102125081041490826 +S315E0651F101080920811007C08120000081000000885 +S315E0651F20100000081FFFFFF8000000000000000039 +S315E0651F300000000000000000000000000000000056 +S315E0651F401FFFFF0010000380100002C01000026052 +S315E0651F5010000230100183F81002400810042008D2 +S315E0651F601008100810FFFF0810C0030810BFFD0831 +S315E0651F7010A0050810A0050810A0050810A0050822 +S315E0651F8010A0050810A0050810A0050810BFFD08FB +S315E0651F9010C0030810FFFF081000000810000008D5 +S315E0651FA0100000081FFFFFF80000000000000000B9 +S315E0651FB000000000000000000000000000000000D6 +S315E0651FC01FFFFF0011111380111112C01FFFFE6084 +S315E0651FD011111230111113F8111111181FFD111895 +S315E0651FE01FFD111811111118111111181111111880 +S315E0651FF01FFFFD181FFFFD1811111118111111189A +S315E065200011111118117FFFF8117FFFF811111118E1 +S315E0652010111111181111111811117FF811117FF8AD +S315E0652020111111181FFFFFF8000000000000000005 +S315E06520300000000000000000000000000000000055 +S315E06520401FFFFF0012492780124926C01FFFFE6069 +S315E065205012492630124927F81FFFFFF812492498DE +S315E0652060124924981FFFFFF81249249812492498CB +S315E06520701FFFFFF812492498124924981FFFFFF8BD +S315E065208012492498124924981FFFFFF812492498AB +S315E0652090124924981FFFFFF812492498124924989B +S315E06520A01FFFFFF81FFFFFF80000000000000000BB +S315E06520B000000000000000000000000000000000D5 +S315E06520C01FFFFF0010000380100002C010000260D1 +S315E06520D013800230110003F81100000811000008B2 +S315E06520E013A2A008100000081000000810180008E8 +S315E06520F010240008103C0008102400081025150877 +S315E065210010000008100000081038000810240008C8 +S315E0652110103800081024000810391508100000086A +S315E0652120100000081FFFFFF8000000000000000037 +S315E06521300000000000000000000000000000000054 +S315E06521401FFFFF0010000380100002C01000026050 +S315E065215010000230100003F81000000811000008B6 +S315E065216017C000081500000817C000081140C00830 +S315E065217017CAD4A81100000810000008100000086E +S315E06521801100000817C000081500000817C0000810 +S315E06521901140C00817CAD4A811000008100000084D +S315E06521A0100000081FFFFFF80000000000000000B7 +S315E06521B000000000000000000000000000000000D4 +S315E06521C01FFFFF0010000380155552C012AAAA60D2 +S315E06521D010000230155553F812AAA8081000000839 +S315E06521E0114A5288114A5288114A528810000008ED +S315E06521F0114A5288114A5288114A528810000008DD +S315E06522001044144810AA228811114108120080086A +S315E0652210100000081555554812AAAAA8100000082E +S315E0652220100000081FFFFFF8000000000000000036 +S315E06522300000000000000000000000000000000053 +S315E06522401FFFFF0010000380100002C0100002604F +S315E065225010000230100003F81000000810000008B6 +S315E0652260111E38081291440814514008145E40085E +S315E065227017D1400814514408145E38081000000868 +S315E065228010000008120201C81606022812227848D4 +S315E06522901272008812227908170703E81000000811 +S315E06522A0100000081FFFFFF80000000000000000B6 +S315E06522B000000000000000000000000000000000D3 +S315E06522C01FFFFF0010000380100002C010000260CF +S315E06522D010000230100003F8100000081000000836 +S315E06522E01000000811E00788132004C8162004686A +S315E06522F015E007A8150000A8150000A8150000A8B8 +S315E0652300150000A8150000A8150000A815E007A8A7 +S315E065231016355468132AACC811E007881000000822 +S315E0652320100000081FFFFFF8000000000000000035 +S315E06523300000000000000000000000000000000052 +S315E06523401FFFFF0010000380100002C0100002604E +S315E065235010000230100003F81000000810000008B5 +S315E065236010000008100F0008100280081FFE4008E4 +S315E0652370100240081FFE4008100240081007E008FA +S315E0652380100000081003C0081001800810018008DD +S315E0652390100180081001800810018008100180088E +S315E06523A0100000081FFFFFF80000000000000000B5 +S315E06523B000000000000000000000000000000000D2 +S315E06523C01FFFFF0010000380100002C010000260CE +S315E06523D010000230100003F8100000081000000835 +S315E06523E010084408100848081008500810086008E6 +S315E06523F010FFFE081008C00810094008100A4008DA +S315E0652400100C400810FFFE08101840081028400818 +S315E065241010484008108840081000000810000008C1 +S315E0652420100000081FFFFFF8000000000000000034 +S315E06524300000000000000000000000000000000051 +S315E06524401FFFFF0014000380100002C01400026045 +S315E065245010000230140003F810000008140000288C +S315E06524601000000814000028100000081400002879 +S315E06524701000000814000028100000081400002869 +S315E06524801000000814000028100000081400002859 +S315E06524901000000814000028100000081400002849 +S315E06524A0100000081FFFFFF80000000000000000B4 +S315E06524B000000000000000000000000000000000D1 +S315E06524C01FFFFF0010000380100002C013FC3A6096 +S315E06524D01354223012AC23F81354200812AC20486A +S315E06524E013FC2048100020481000204813FC2048C3 +S315E06524F01204204812043FC81204000812040008BA +S315E065250013FFE7C812002548120027C812002548C0 +S315E0652510120027C81200254813FFE7C81000000817 +S315E0652520100000081FFFFFF8000000000000000033 +S315E06525300000000000E3AF3000E3AF3A00E3AF48E8 +S315E065254000E3AF5900E3AF6400E3AF6B00E3AF735D +S315E065255000E3AF7D00E3AF8500E3AF8F00E3AF9CBB +S315E065256000E3AFAD00E3AFB900E3AFCA00E3AFDECA +S315E065257000E3AFE500E3AFEE00E3B00200E3B009E8 +S315E065258000E3B01000E3B01000E3B01000E3B01074 +S315E065259000E3B01000E3B01000E3B01000E3B01064 +S315E06525A000E3B01000E3B01000E3B01000E3B01054 +S315E06525B000E3B01000E50E3400E5253400E3B3D45E +S315E06525C000E3B3F000E3B40400E3B41000E3B41A47 +S315E06525D000E3B4250000000000E3B4390000000024 +S315E06525E0000000000000000000E3B44800E3B458D2 +S315E06525F000E3B46800E3B47A00E3B48C00E3B49E28 +S315E065260000E3B4B000E3B4BB00E3B4C600E3B4D31F +S315E065261000E3B4D6000000000000000000E3B4D992 +S315E065262000E3B59A00E3B61000E3B6CE00E3B76B18 +S315E065263000E3B7B700E3B84500E3B8F200E3B98B6A +S315E065264000E3BA1F00E3BACB00E3BB7F00E3BC1847 +S315E065265000E3BCCE00E3BD5B00E3BDEF00E3BE8215 +S315E065266000E3BEBC00E52672000400200000000021 +S315E0652670000100000000000000000000000000000E +S315E0652680000000000000000BD000000BD000001B2E +S315E0652690D800001BD800002BD400003BDC00006BA3 +S315E06526A0D600005BDA0000ABD50000DBDB0001ABF2 +S315E06526B0D580015BDA8002ABD5400353CAC006A379 +S315E06526C0C5600543C2A00A83C1500D03C0B01A03B5 +S315E06526D0C0581403C0282803C0143003C00C00009A +S315E06526E0000000000000000000000000000000009F +S315E06526F0000000004155544F455845432E4241542C +S315E0652700000000000001000836783620737973749E +S315E0652710656D20666F6E74000000000000000000C5 +S315E06527200000000000000000000000FF0004000457 +S315E0652730000300010001000500060000000200013B +S315E0652740000155555555000C0000000000E5275E73 +S315E065275000E5296000C000060000000000000000FA +S315E06527600006000C00120018001E0024002A003046 +S315E06527700036003C00420048004E0054005A0060B6 +S315E06527800066006C00720078007E0084008A009026 +S315E06527900096009C00A200A800AE00B400BA00C096 +S315E06527A000C600CC00D200D800DE00E400EA00F006 +S315E06527B000F600FC01020108010E0114011A012070 +S315E06527C00126012C01320138013E0144014A0150DE +S315E06527D00156015C01620168016E0174017A01804E +S315E06527E00186018C01920198019E01A401AA01B0BE +S315E06527F001B601BC01C201C801CE01D401DA01E02E +S315E065280001E601EC01F201F801FE0204020A02109A +S315E06528100216021C02220228022E0234023A024005 +S315E06528200246024C02520258025E0264026A027075 +S315E06528300276027C02820288028E0294029A02A0E5 +S315E065284002A602AC02B202B802BE02C402CA02D055 +S315E065285002D602DC02E202E802EE02F402FA0300C4 +S315E06528600306030C03120318031E0324032A03302D +S315E06528700336033C03420348034E0354035A03609D +S315E06528800366036C03720378037E0384038A03900D +S315E06528900396039C03A203A803AE03B403BA03C07D +S315E06528A003C603CC03D203D803DE03E403EA03F0ED +S315E06528B003F603FC04020408040E0414041A042057 +S315E06528C00426042C04320438043E0444044A0450C5 +S315E06528D00456045C04620468046E0474047A048035 +S315E06528E00486048C04920498049E04A404AA04B0A5 +S315E06528F004B604BC04C204C804CE04D404DA04E015 +S315E065290004E604EC04F204F804FE0504050A051081 +S315E06529100516051C05220528052E0534053A0540EC +S315E06529200546054C05520558055E0564056A05705C +S315E06529300576057C05820588058E0594059A05A0CC +S315E065294005A605AC05B205B805BE05C405CA05D03C +S315E065295005D605DC05E205E805EE05F405FA0600AB +S315E0652960000000000000000000000000000000001C +S315E0652970000000000000000000448A11920C1084FB +S315E06529808000000138471C09E19E30C00010021C3A +S315E065299038C70E71E78E48E09241144C70C70E7DDC +S315E06529A0249145178E41C1003004000801C04041BD +S315E06529B0103000000000002000000000061182448F +S315E06529C039208449038011241231048C1803C449E3 +S315E06529D0011049248419170308208279E38C0000E5 +S315E06529E02080000079E34200F61E7920847DE7BD0C +S315E06529F04920000000000000000000000000000023 +S315E0652A00000000000000000000C78078000010C3E9 +S315E0652A10870C438C7846060C410D30C00371C000C7 +S315E0652A20000000000000000000000000000000005B +S315E0652A30000000000000000000449F39A504204323 +S315E0652A400400000248C08219020249230C21E10212 +S315E0652A5045249049041048409441B6524924901162 +S315E0652A60249129110820428020E70E38C20E71C7ED +S315E0652A701211A70C70E58E79249149278410854A51 +S315E0652A8040010A00828E28020048830C79B50A0067 +S315E0652A90828800C00E20A4841041040004921000D0 +S315E0652AA02080800000048C39430C30010EFADE5735 +S315E0652AB001200000000000000000000000000000AA +S315E0652AC0000000000000000035249F20F49E3924B4 +S315E0652AD04410E41201F19810401649E0024863801B +S315E0652AE0000000000000000000000000000000009B +S315E0652AF0000000000000000000448A60434820476B +S315E0652B009F01E00448430C29C70430E00040008C8F +S315E0652B104D271049C71278449841555271270C11D3 +S315E0652B20249510A2081044401124904967924841C3 +S315E0652B30141154924926182124953121181064916F +S315E0652B4041278E38E39079E78C30C4924077CC3074 +S315E0652B50C49249249071F78E38C31271A38C01E74C +S315E0652B60AE8C025238C7965D7492480004FA9D555C +S315E0652B7049200000000000000000000000000000A1 +S315E0652B80000000000000000049440A11248855E46D +S315E0652B904E3957927846061047C030C10248838061 +S315E0652BA000000000000000000000000000000000DA +S315E0652BB0000000000000000000001F18B4802043FC +S315E0652BC0043000084844027C248848400C21E10032 +S315E0652BD04DE4904904124844944114D2412482114B +S315E0652BE0251B28440808400001249049020E484107 +S315E0652BF01C115492492406212515314204008011A1 +S315E0652C0041241249249041040410479E71C5124936 +S315E0652C10249251248E2045C448449249600031008F +S315E0652C20A394848949249A51479E4800047A9E4034 +S315E0652C3048200000000000000000000000000000E1 +S315E0652C40000000000000000049240A21248839229A +S315E0652C509255541200000010400D00001249E380C1 +S315E0652C600000000000000000000000000000000019 +S315E0652C70000000000000000000400A713340108447 +S315E0652C808010031070479C09C3083183041002085D +S315E0652C9041270E71E40E48E31279144C40C45C1189 +S315E0652CA0E21144478E05C00000E70E38E20249E1CD +S315E0652CB01279148C70E41C18E20A48878611801F25 +S315E0652CC038E38E38E38E38E39E79E49278F5CC3056 +S315E0652CD0C38E20C78478449839E30E49279E400021 +S315E0652CE0043C825238CB0C3CF4923000040ADD4059 +S315E0652CF049C0000000000000000000000000000080 +S315E0652D00000000000000000035C40978C70610C65B +S315E0652D10CC38E39279F79E10411600002A000380CD +S315E0652D200000000000000000000000000000000058 +S315E0652D300000000000000000000000200000000028 +S315E0652D400020000000000000000000000800000010 +S315E0652D503800000000000000000000000060000090 +S315E0652D60000000000000003F00000000001C0006B7 +S315E0652D700000000040200000000001000010000097 +S315E0652D806000000000180000000000000000000080 +S315E0652D9000004000000004C00000000000003800AC +S315E0652DA00F04800000001000000000000009E780C5 +S315E0652DB010000000000000000000000000000000B8 +S315E0652DC000000000000000000100000008000000AF +S315E0652DD00060400000000011800000000600000071 +S315E0652DE0000100093878382073797374656D20665B +S315E0652DF06F6E740000000000000000000000000037 +S315E0652E0000000000000000FF000600060004000167 +S315E0652E1000010007000800010003000100015555A7 +S315E0652E205555000D0000000000E52E3A00E5303C02 +S315E0652E300100000800000000000000000008001026 +S315E0652E400018002000280030003800400048005097 +S315E0652E500058006000680070007800800088009087 +S315E0652E60009800A000A800B000B800C000C800D077 +S315E0652E7000D800E000E800F000F801000108011064 +S315E0652E80011801200128013001380140014801504F +S315E0652E90015801600168017001780180018801903F +S315E0652EA0019801A001A801B001B801C001C801D02F +S315E0652EB001D801E001E801F001F80200020802101C +S315E0652EC00218022002280230023802400248025007 +S315E0652ED002580260026802700278028002880290F7 +S315E0652EE0029802A002A802B002B802C002C802D0E7 +S315E0652EF002D802E002E802F002F8030003080310D4 +S315E0652F0003180320032803300338034003480350BE +S315E0652F1003580360036803700378038003880390AE +S315E0652F20039803A003A803B003B803C003C803D09E +S315E0652F3003D803E003E803F003F80400040804108B +S315E0652F400418042004280430043804400448045076 +S315E0652F500458046004680470047804800488049066 +S315E0652F60049804A004A804B004B804C004C804D056 +S315E0652F7004D804E004E804F004F805000508051043 +S315E0652F80051805200528053005380540054805502E +S315E0652F90055805600568057005780580058805901E +S315E0652FA0059805A005A805B005B805C005C805D00E +S315E0652FB005D805E005E805F005F8060006080610FB +S315E0652FC006180620062806300638064006480650E6 +S315E0652FD006580660066806700678068006880690D6 +S315E0652FE0069806A006A806B006B806C006C806D0C6 +S315E0652FF006D806E006E806F006F8070007080710B3 +S315E0653000071807200728073007380740074807509D +S315E0653010075807600768077007780780078807908D +S315E0653020079807A007A807B007B807C007C807D07D +S315E065303007D807E007E807F007F8080000183C1826 +S315E0653040183CFFE7017E1818F0F005A07C067C7C4D +S315E0653050C67C7C7C7C7C007807F0110400186600F1 +S315E0653060180038180E700000000000023C183C7E1F +S315E06530700C7E3C7E3C3C00000600603C3C187C3C9B +S315E0653080787E7E3E663C066660C6663C7C3C7C3CFD +S315E06530907E6666C666667E1E407810000000600045 +S315E06530A006001C006018186038000000000000008B +S315E06530B0000000000000000E1870000000660C18A5 +S315E06530C06630180018663066186066180C003F189A +S315E06530D066301830666666181C661C1E0C0C0C0C91 +S315E06530E034340000000000C6C6001BD83434020044 +S315E06530F0007F303434660C007A7E7EF166F6000039 +S315E065310000000000000060000060000000000000B4 +S315E06531100000000000000000000E0066001C0000D4 +S315E0653120FE0000003C00001C0C003E3C0018300C24 +S315E0653130001818003838000038387800003C241C40 +S315E06531403899FFC303C33C1CC0C005A0C606060686 +S315E0653150C6C0C006C6C600600FF80B280018666CC8 +S315E06531603E666C181C386618000000066638660C04 +S315E06531701C606006666618180C003066663C666616 +S315E06531806C6060606618066C60EE766666666666B6 +S315E0653190186666C66666061860183800C000600080 +S315E06531A006003000600000601800000000000000C6 +S315E06531B01800000000000018181860183C00186632 +S315E06531C0001818006600180066300000180078667A +S315E06531D000186618000000183A6636301818181890 +S315E06531E058583C3C180000CCCC18366C58583C0214 +S315E06531F000D8185858001810CAC3C35B0066667CC9 +S315E06532001E7E7C1C1E7E6E3C3E7E6C1C3E367E665D +S315E06532103E78D67C1C3EFE7E361B10F70036FE00F9 +S315E0653220661E0000183C3C36181070667E18181845 +S315E06532300E1818326C7C00006C6C0CFE006624F689 +S315E06532406FC3FE9906D33C16FEDF05A0C6060606E5 +S315E0653250C6C0C006C6C63C781FEC0DD8001866FE2B +S315E0653260606C381818183C180000000C6E180618C3 +S315E06532703C7C600C66661818187E18066E66666095 +S315E0653280666060606618067860FE7E66666666609D +S315E0653290186666C63C660C1830186C00603C7C3C6B +S315E06532A03E3C7C3E7C38186618EC7C3C7C3E7C3E3D +S315E06532B07E6666C666667E181818F21866000000B1 +S315E06532C03C00003C003C0000000018187E7ED800FB +S315E06532D000000000663C663C303C667C0000000011 +S315E06532E000000666000000D8D8006C360000663C33 +S315E06532F07ED800003C003038CABDBD5FE666760C18 +S315E0653300060C060C0C36660C06063E0C363666660C +S315E0653310060CD66C0C066666363C3899766666FEAD +S315E065332030386C7E3C666678387C6066007E0C304C +S315E06533301B18004C3838000F6C18380000C3E7835B +S315E0653340C1E7FC3C8CD33C10D8DB0DB000007C7C3F +S315E06533507C7C7C007C7C0660180406280018006C82 +S315E06533603C1870001818FF7E007E001876180C0C65 +S315E06533706C067C183C3E000030000C0C6A667C608E +S315E0653380667C7C6E7E18067060D67E667C667C3C66 +S315E0653390186666D6183C18181818C60030066660B2 +S315E06533A0666630666618186C18FE666666666660FA +S315E06533B0186666C63C660C30180C9E3460663C3C06 +S315E06533C0063C3C603C663C3838383C3C601BDE3C41 +S315E06533D03C3C6666666666607C187C303C383C6676 +S315E06533E07C663E66183E7C363618D81B3C3C6E6E6F +S315E06533F0DBDE181866000010CAB1A55566663C0C9A +S315E06534000E0C660C0636660C0606660C3636763C9B +S315E0653410360CD66C0C0666761C666C99DC7C626C42 +S315E0653420186C6C18667E66DC54D67E667E1818184F +S315E06534301B187E00000000186C300C0000E7C383A3 +S315E0653440C1C3F999D8DB7E10DEFF0DB0C606C006AE +S315E06534500606C606C6067E7E180407D00018006C0A +S315E06534600630DE0018183C180000003066181806AD +S315E06534707E06663066061818180018186E7E666051 +S315E0653480666060666618067860C66E6660766C0627 +S315E0653490186666FE3C1830180C180000003E66603B +S315E06534A0667E30666618187818D666666666603C27 +S315E06534B0186666D61866181818180C3466667E0699 +S315E06534C03E0606607E7E7E18181866667C7FF86620 +S315E06534D06666666666666660303C6630061866668B +S315E06534E06676666630300C6B6E186C360666767692 +S315E06534F0DFD83C3C660000107AB1B95166666E0C61 +S315E06535001E0C660C063666000606660C3636060E34 +S315E0653510360CD66C0C0666060C66C6EFC866606C3D +S315E0653520306C6C18666666CC54D660660018300CEE +S315E065353018D80032000018D86C7C7800002466F64E +S315E06535406F99F3C370C31070181E1998C606C00646 +S315E06535500606C606C606661810042E10000000FEAE +S315E06535607C66CC001C3866183000186066183066D4 +S315E06535700C666630660C18180C7E3000606666660A +S315E06535806C6060666618666C60C66666606C666684 +S315E065359018663CEE661860180618000000666660F8 +S315E06535A06660303E6618186C18C6666666666006BE +S315E06535B018663C7C3C3E3018181800623C66607EB6 +S315E06535C0667E7E3C6060601818187E7E60D8D86638 +S315E06535D0666666663E66663C301866307E18666682 +S315E06535E0666E3E3C60300CC3D618366C7E666666A3 +S315E06535F0D8D86666660000100ABDAD00F6F6667E4A +S315E0653600360C660C06367E003E0E6E3C1C7E7E7E75 +S315E0653610340CFEEC0C067E060C3C8266DC66606C61 +S315E0653620666C6C183C6624EC38D670667E000000E5 +S315E065363018D8184C000018700000000000243C1CE7 +S315E0653640383CE7E720C338F0181B799E7C067C7C1E +S315E0653650067C7C067C7C3C1E1E3C39E00018006CD2 +S315E0653660184676000E700000300018403C7E7E3CC1 +S315E06536700C3C3C303C380030060060183E667C3CCD +S315E0653680787E603E663C3C667EC6663C6036663CF9 +S315E0653690183E18C666187E1E027800FE003E7C3C23 +S315E06536A03E3C3006663C18663CC6663C7C3E607CC5 +S315E06536B00E3E186C66067E0E1870007E083E3C3E31 +S315E06536C03E3E3E083C3C3C3C3C3C66667E7EDF3CA2 +S315E06536D03C3C3E3E063C3E187E187C603E3C3C3EAD +S315E06536E06666000066300C869F181BD83E3C3C3CFF +S315E06536F07E7F7E7E660000000AC3C3000606000084 +S315E0653700000000000000000000000000000000006E +S315E0653710300000000C0600060CD80000767C606C74 +S315E0653720FE387F18183C6678307C3E66007E7E7E85 +S315E0653730187018000000003000000000003C181802 +S315E065374018000000007E10600000718E0000000029 +S315E0653750000000000000000017543800000000007B +S315E065376000000000000000006000000000000000AE +S315E065377000000000000000000000000000000000FE +S315E065378000000000000000000000000000000000EE +S315E065379000000000000000000000000000000000DE +S315E06537A00000007C0000700000000000600600007C +S315E06537B000000000007C00001800000038000000F2 +S315E06537C00000001800000000000000000000000096 +S315E06537D0000000007C0000180000600000000000AA +S315E06537E000003C3C3C00000F06180000000040402D +S315E06537F0000066663C0000000A7E7E001C1C000038 +S315E0653800000000000000000000000000000000006D +S315E06538100000000000000000007000000060F8484D +S315E06538200000C0103C0000006010000000000000D1 +S315E06538301800000000000000000000000001000A1A +S315E0653840387831362073797374656D20666F6E747A +S315E0653850000000000000000000000000000000001D +S315E0653860000000FF000D000B0008000200020007E3 +S315E06538700008000100070001000155555555000D8A +S315E06538800000000000E5389600E53A980100001072 +S315E0653890000000000000000000080010001800208D +S315E06538A000280030003800400048005000580060AD +S315E06538B0006800700078008000880090009800A09D +S315E06538C000A800B000B800C000C800D000D800E08D +S315E06538D000E800F000F80100010801100118012078 +S315E06538E00128013001380140014801500158016065 +S315E06538F0016801700178018001880190019801A055 +S315E065390001A801B001B801C001C801D001D801E044 +S315E065391001E801F001F8020002080210021802202F +S315E0653920022802300238024002480250025802601C +S315E0653930026802700278028002880290029802A00C +S315E065394002A802B002B802C002C802D002D802E0FC +S315E065395002E802F002F803000308031003180320E7 +S315E065396003280330033803400348035003580360D4 +S315E0653970036803700378038003880390039803A0C4 +S315E065398003A803B003B803C003C803D003D803E0B4 +S315E065399003E803F003F8040004080410041804209F +S315E06539A0042804300438044004480450045804608C +S315E06539B0046804700478048004880490049804A07C +S315E06539C004A804B004B804C004C804D004D804E06C +S315E06539D004E804F004F80500050805100518052057 +S315E06539E00528053005380540054805500558056044 +S315E06539F0056805700578058005880590059805A034 +S315E0653A0005A805B005B805C005C805D005D805E023 +S315E0653A1005E805F005F8060006080610061806200E +S315E0653A2006280630063806400648065006580660FB +S315E0653A30066806700678068006880690069806A0EB +S315E0653A4006A806B006B806C006C806D006D806E0DB +S315E0653A5006E806F006F807000708071007180720C6 +S315E0653A6007280730073807400748075007580760B3 +S315E0653A70076807700778078007880790079807A0A3 +S315E0653A8007A807B007B807C007C807D007D807E093 +S315E0653A9007E807F007F808000000000000000000EE +S315E0653AA000000000000000000000000000000000CB +S315E0653AB00000000000001104000000001800380056 +S315E0653AC000000000000000000000000000000000AB +S315E0653AD0000000000000000000000000000000009B +S315E0653AE0000000000000000000000000000000008B +S315E0653AF0000000000000000040000000000000003B +S315E0653B00000000000000000000000000000000006A +S315E0653B10000000000000000000000000000000005A +S315E0653B20000000000000003C060000000000000008 +S315E0653B30000000000000000000000000000000003A +S315E0653B400000000000000000000000000000603298 +S315E0653B5032000000000000F100F600000000000001 +S315E0653B6000000000006000000000000000000000AA +S315E0653B7000000000000000000000000000000000FA +S315E0653B8000000000000000000000000000180000D2 +S315E0653B9000000000000000000000000000000000DA +S315E0653BA000000000000005A07C007C7C007C7C7C3D +S315E0653BB07C7C000000000B280000000018007C00FB +S315E0653BC000000000000000000000000000000000AA +S315E0653BD0000000000000000000000000000000009A +S315E0653BE0000000000000000000000000000000008A +S315E0653BF0000000000000100060000000000000000A +S315E0653C000000000000000000000000000000000069 +S315E0653C100000000E18E000000000061800601C00B9 +S315E0653C2018006000186066660C003E180060186053 +S315E0653C30006666000E0000000606060632320000E3 +S315E0653C400000006060000000323201000000307A5A +S315E0653C507A6606100000005B66F60000000000006C +S315E0653C6000000000006000000000000000000000A9 +S315E0653C7000000000000000000000000000000000F9 +S315E0653C807C00001E0E000000000000000018000029 +S315E0653C9038380000000000FE000000300C7CFEEEC7 +S315E0653CA001000008783805A0BA023A3A82B8B8BA8F +S315E0653CB0BABA007800000DD8001866663E666C18DC +S315E0653CC006606600000000063C183C7E0C7E1C7EA5 +S315E0653CD03C3C00000000003C38187C3C787E7E3E2B +S315E0653CE0667E06CC60C6663C7C3CF83E7E6666C60D +S315E0653CF066667E1E607810007000600006000E0045 +S315E0653D0060180CC0380000000000000000000000EC +S315E0653D1000000018183000003C660C3C6630360042 +S315E0653D203C6630663C30663C18007E3C66303C302E +S315E0653D30666666181E66180E0C0C0C0C7A7A000020 +S315E0653D4018000020200000007A7A3D00007E184CBD +S315E0653D504C660C7C7A7C7C5F6666667C1E7E7E380D +S315E0653D601E7E6E3C3C7E6C1CFE367E6E3E7CD67E52 +S315E0653D70387E7E7E6E1C00000018FE00FE000000A8 +S315E0653D80103C383E1E103E7C000060060E180000B2 +S315E0653D906C7C0000303078FE00183C381C38FEC676 +S315E0653DA0013C000E404005A0C6060606C6C0C0C674 +S315E0653DB0C6C6004000000628001866667E666C1872 +S315E0653DC00C306618000000067E187E7E0C7E3C7E12 +S315E0653DD07E7E00000E00E07E7C3C7E7E7C7E7E7E86 +S315E0653DE0667E06CC60C6667E7E7EFC7E7E6666C642 +S315E0653DF066667E1E607838003800600006001E0044 +S315E0653E0060180CC0380000000000000018000000D3 +S315E0653E1000000018183000007E66186666181C00FB +S315E0653E2066661866661818187E00F8666618661877 +S315E0653E306600001838663C1E181818184C4C0000C9 +S315E0653E4018000020201800004C4C7E0000FE0000A3 +S315E0653E5000001810CAC6C6550066767C1E7E7E389A +S315E0653E601E7E6E3C3E7E6E1CFE367E6E3E7ED67E4B +S315E0653E70387E3E7E6E360000003C7E00FE00000227 +S315E0653E80107E6C2010107EFE0018700E1918180250 +S315E0653E90447C000078481800003C242C34BAFED6F1 +S315E0653EA00366180F704005A0C6060606C6C0C0C6FE +S315E0653EB0C6C60070000007D0001866FF606C38184B +S315E0653EC01C383C18000000066638660C1C607006F7 +S315E0653ED0666618181C7E7066E67E66666E6060606D +S315E0653EE0661806D860EE66666666CC60186666C66F +S315E0653EF066660C18601838001C006000060018003D +S315E0653F00600000C018000000000000001800000016 +S315E0653F100000001818300000660000000000000090 +S315E0653F200000000000003C3C7E00D8000000000078 +S315E0653F30003C663C306666180000000000003C3CCC +S315E0653F4000000023231800000000660100D83C3C11 +S315E0653F503C000010CA828251E666760C060C0618AD +S315E0653F600466660C06063E0CFE3666663E06D66654 +S315E0653F70180636666632006662666202601E007E16 +S315E0653F807C66C6307C7CE0C67E18381C1B18183EFD +S315E0653F906C7C000048183000006624E66792FC9267 +S315E0653FA003C33C0940400DB0C6060606C6C0C0C69A +S315E0653FB0C6C67C4000002E10001866FF600C3818F7 +S315E0653FC018183C180000000C6638660C1C60600624 +S315E0653FD066661818387E3866C266666666606060CC +S315E0653FE0661806D860EE76666666CC60186666C65E +S315E0653FF03C660C1830186C000C3C7C3C3E3C183E2C +S315E06540007C380CCC186C3C3C7C3E7C3E7E6666C659 +S315E065401066667E181830621866663C3C3C3C3C3CFD +S315E06540203C3C3C3838387E7E6076D83C3C3C6666BF +S315E0654030667E667E306666183C383C663C663E7EE5 +S315E065404018000026260000003C3C663D7ED87E7E54 +S315E06540507E000010CABABA0066663E0C060C6618A3 +S315E06540600C66660C0606360CC63666360606D666F3 +S315E065407018063666761810F7F666607E303866FCA2 +S315E0654080C642C618D6D6C0C67E181C381B18007C34 +S315E06540903838001F4830180000C32483C1D6FCBAFF +S315E06540A006913C0840380DB082023A3ABAB8B88211 +S315E06540B0BABA7E78000039E0001866667C18701832 +S315E06540C01818FF7E007E000C66180C183C7C600CA8 +S315E06540D03C7E181870001C0CDA667E60667C7C6E29 +S315E06540E07E1806F060FE76666666CC70186666C60D +S315E06540F03C3C181830186C00043E7E7C7E7E7E7EE5 +S315E06541007E380CDC18FE7E7E7E7E7E7E7E6666C6AC +S315E065411066667E381838F21860667E3E3E3E3E7CC0 +S315E06541207E7E7E3838386666607FDE7E7E7E666653 +S315E065413066666666307E66183E387E667E660666C6 +S315E06541401800002C2C181AB03E7E6E7EFFDE666681 +S315E065415066000010CAA2AA0066663C0C0E0C6618DC +S315E06541600C6666000606660CC636763E0606F66696 +S315E0654170180636763E3C1099DC6660FC186C6690EF +S315E06541808242C63C9292C0C6007E0E7018187E408A +S315E065419000000010486048000081E783C1C6F83832 +S315E06541A006913C0800001DB800007C7C7C7C7C00A8 +S315E06541B07C7C060000003800001866663E187018BC +S315E06541C01818FF7E007E00186E180C183C7E7C0C75 +S315E06541D03C3E1818E0000E0CD6667C60667C7C6E0C +S315E06541E07E1806F060D67E666666FC38186666D624 +S315E06541F0183C18181818C6000006666066667E667E +S315E065420066180CF818FE666666666660186666D6B3 +S315E06542103C660CF0181EBE3C6066660606060660E1 +S315E065422066666618181866667C1BDE66666666668A +S315E065423066666660303C7C7E0618666666763E66D1 +S315E065424018000018181836D806666E66DBDE6666F0 +S315E065425066000010CAA2B20066663C0C1E0C6618C3 +S315E06542600C666600060E660CC63676183606F66683 +S315E0654270180636760E663899887C60A80CC6663070 +S315E0654280827EC6669292FCC67E7E1C3818187E02D1 +S315E0654290000000D04878300000E781E667D6FABAD4 +S315E06542A08C9D3C781E1C399C8202B83A3A3ABA0231 +S315E06542B0BA3A060E07F00000001800FF0630DE0089 +S315E06542C018183C18000000187618180C6C067E184D +S315E06542D066060000707E1C18D67E6660666060665F +S315E06542E0661806D860D67E667E66F81C186666D65B +S315E06542F0181830181818C600003E666066661866B7 +S315E065430066180CF018D6666666666070186666D6D8 +S315E06543103C6618F0181E9C246066663E3E3E3E602E +S315E06543206666661818187E7E7C7BF86666666666DF +S315E065433066666660FE1866183E186666667E7E6622 +S315E06543403000003032186C6C3E66766EDBD87E7E69 +S315E0654350660000007AA2BA0066666E0C360C6618D0 +S315E06543600C666600061C660CC636061C3606C66610 +S315E065437018063606066638EF886660280CC6663027 +S315E065438082426C429292FCC67E18381C1818003E32 +S315E0654390000000D0000000000024C32C3492F292A5 +S315E06543A08C813CF81012799EC606C0060606C606DE +S315E06543B0C6067E100FF80000001800FF0636DE0020 +S315E06543C018183C18000000306618180C6C0666185C +S315E06543D066060000387E3818DC7E66606660606674 +S315E06543E0661806D860C66E667C66D80E186666FE82 +S315E06543F03C1830180C180000007E6660667E18660C +S315E065440066180CF818D666666666603C186666FEDB +S315E0654410186618381838006660667E7E7E7E7E6031 +S315E06544207E7E7E1818187E7E60FFF866666666662E +S315E065443066666666307E66187E186666667E66665B +S315E0654440307E7E6E6618D8367E66767EDFD87E7E70 +S315E0654450660000000ABAAA0066666E0C360C661837 +S315E06544600C66660006306E0CC6367E0E3606C66689 +S315E065447018063606063C6C66DC66602818C6663045 +S315E0654480824228429292C0C60018700E1818187CAF +S315E06544900000185000000000002466381CBAF6D605 +S315E06544A0D8C37E701C1C718EC606C0060606C60697 +S315E06544B0C606660C1FEC0000000000667E66CC0052 +S315E06544C01818661818001830661830667E06663065 +S315E06544D0660618181C007018C066666666606066D3 +S315E06544E0661866CC60C66E666066CC0618663CFE87 +S315E06544F03C1860180C180000006666606660186611 +S315E065450066180CD818D666666666600E18663CFE52 +S315E06545103C663018183000426666606666666660B8 +S315E0654520606060181818666660D8D86666666666FE +S315E06545306666667E3018661866186666666E6666D0 +S315E0654540667E7ED3CE186C6C66666676D8D8666609 +S315E0654550660000000A8282006666667E360C66182C +S315E06545600C667E003E306E7CFE7E7E7E3606FEE620 +S315E065457018063E0606186C00F666602830C6663094 +S315E0654580C666AA66D6D6C0C67E18600618D818402E +S315E065459000003C700000000000243C300C38E6C6A4 +S315E06545A05866FF001014718EC606C0060606C60676 +S315E06545B0C606660218040000000000667C66CC004C +S315E06545C01C38660018001860661830667E666630C8 +S315E06545D0660E18180E00E000E26666666E60606656 +S315E06545E0661866CC60C66666606ACC0618663CEE9A +S315E06545F06618601806180000006666606660187ED4 +S315E065460066180CCC18C666666666600618663CEE85 +S315E06546103C7E3018183000C366666066666666601E +S315E0654620606060181818666660D8D86666666666FD +S315E06546307E66663C30187C186618666666667E7EBB +S315E0654640666006061A1836D866666666D8D86666F9 +S315E0654650660000000AC6C60066F6627E360C661817 +S315E065466004667E003C306E7C7C7E7E7E3606FEE6AB +S315E065467018063E06064CC600627C6028606C7F20A4 +S315E06546807C7EEE7E7C7CE0C67E00000018D800006D +S315E065469000003C2000000000003C1800007CEEEEC7 +S315E06546A0703C100010126186BA02B83A023ABA0254 +S315E06546B0BA3A7E1C18040000001800001800FE00D7 +S315E06546C00C300000180018607E7E7E7E0C7E7E30A3 +S315E06546D07E3C1818000000187E667E7E7C7E607ED5 +S315E06546E0667E7EC67EC6667E607CC67E187E18C69B +S315E06546F066187E1E067800FE007E7E7E7E7E183E0D +S315E0654700663C0CCE3CC6667E7E7E607E1E7E18C6A8 +S315E0654710663E7E18183000FF7E7E7E7E7E7E7E7EDD +S315E06547207E7E7E3C3C3C66667EFFDE7E7E7E7E7E73 +S315E06547303E7E7E187F186C187E3C7E7E66663E3CC5 +S315E06547407E60060C32181AB07E7E7E7EFFFE666659 +S315E06547507E0000000A7C7C00F6F6000000000000A2 +S315E065476000000000000000000000000030000000CE +S315E065477018060006066CC600006C6000FE385D0033 +S315E0654780103C6C3C10107EC6007E7E7E189800005C +S315E065479000001800000000000000000000000000B6 +S315E06547A030003800000041827C007C7C007C7C0027 +S315E06547B07C7C3C00100400000018000018007600C0 +S315E06547C006600000180018603C7E7E3C0C3C3C3080 +S315E06547D03C381818000000183C667C3C787E603CE6 +S315E06547E0667E3CC67EC6663C6036C67C183C1882EC +S315E06547F066187E1E067800FE003E7C3E3E3E180646 +S315E0654800663C0CC63CC6663C7C3E607C0E3E1882C9 +S315E065481066067E18183000003C3E3E3E3E3E3E3E15 +S315E06548203E3E3E3C3C3C66667E7FDE3C3C3C3E3EF8 +S315E0654830063C3C18FF1860703E3C3C3E66660000F0 +S315E06548403C6006183F1800003E3CBCBC7F7E666651 +S315E06548503C0000000A0000000E0E000000000000AB +S315E065486000000000000000000000000030000000CD +S315E065487018060006063800000060F000FE00C0007D +S315E065488010000000F0103EC6007E7E7E18700000C7 +S315E065489000000000000000000000000000000000CD +S315E06548A0200010000000000000000000000000008D +S315E06548B0000000001E3C0000000000000000000053 +S315E06548C0000000003000000000000000000000006D +S315E06548D0000000300000000000000000000000005D +S315E06548E0000000000000000000000000000000007D +S315E06548F00000000000000000000000000000007EEF +S315E065490000007C000000000060060000000000007A +S315E0654910007E000E18E000000C0000000000000CB0 +S315E0654920000000000000000000000000000000003C +S315E06549307E000000000040600000000000007E7E12 +S315E06549400000001F021800000000808000000000E3 +S315E065495000000000000000003C7C00000000000054 +S315E065496000000000000000000000000030000000CC +S315E0654970000000000000000000400000000080002C +S315E06549807C000000E0000000000000001800000068 +S315E065499000000000000000000000000000000000CC +S315E06549A000000000000000000000000000000000BC +S315E06549B00000000017540000000000000000000041 +S315E06549C0000000002000000000000000000000007C +S315E06549D0000000200000000000000000000000006C +S315E06549E0000000000000000000000000000000007C +S315E06549F00000000000000000000000000000007CF0 +S315E0654A00000078000000000060060000000000007D +S315E0654A10007C00000000000038000000000000385F +S315E0654A20000000000000000000000000000000003B +S315E0654A307C000000000000000000000000000000AF +S315E0654A40000000000000000000000000000000001B +S315E0654A50000000000000000038780000000000005B +S315E0654A6000000000000000000000000000000000FB +S315E0654A7000000000000000000000000000000000EB +S315E0654A8000000000000000000000000018000000C3 +S315E0654A90000000000000000000000006000C0012A7 +S315E0654AA00018001E0024002A00300036003C004253 +S315E0654AB00048004E0054005A00600066006C0072C3 +S315E0654AC00078007E0084008A00900096009C00A233 +S315E0654AD000A800AE00B400BA00C000C600CC00D2A3 +S315E0654AE000D800DE00E400EA00F000F600FC010212 +S315E0654AF00108010E0114011A01200126012C01327B +S315E0654B000138013E0144014A01500156015C0162EA +S315E0654B100168016E0174017A01800186018C01925A +S315E0654B200198019E01A401AA01B001B601BC01C2CA +S315E0654B3001C801CE01D401DA01E001E601EC01F23A +S315E0654B4001F801FE0204020A02100216021C0222A4 +S315E0654B500228022E0234023A02400246024C025212 +S315E0654B600258025E0264026A02700276027C028282 +S315E0654B700288028E0294029A02A002A602AC02B2F2 +S315E0654B8002B802BE02C402CA02D002D602DC02E262 +S315E0654B9002E802EE02F402FA03000306030C0312CE +S315E0654BA00318031E0324032A03300336033C03423A +S315E0654BB00348034E0354035A03600366036C0372AA +S315E0654BC00378037E0384038A03900396039C03A21A +S315E0654BD003A803AE03B403BA03C003C603CC03D28A +S315E0654BE003D803DE03E403EA03F003F603FC0402F9 +S315E0654BF00408040E0414041A04200426042C043262 +S315E0654C000438043E0444044A04500456045C0462D1 +S315E0654C100468046E0474047A04800486048C049241 +S315E0654C200498049E04A404AA04B004B604BC04C2B1 +S315E0654C3004C804CE04D404DA04E004E604EC04F221 +S315E0654C4004F804FE0504050A05100516051C05228B +S315E0654C500528052E0534053A05400546054C0552F9 +S315E0654C600558055E0564056A05700576057C058269 +S315E0654C700588058E0594059A05A005A605AC05B2D9 +S315E0654C8005B805BE05C405CA05D005D605DC05E249 +S315E0654C9005E805EE05F405FA060000820421CFB6BF +S315E0654CA00DE304E38150F987BCC3CC3E73E0381F5E +S315E0654CB0844200CD947B260C318488000006704FD3 +S315E0654CC03C33C73E71C30C18061C71CF1EF3EF9ECD +S315E0654CD089C09242289CF1CF1EFA28A28A2F9EC1EE +S315E0654CE0E2006008000801808001206000000000A5 +S315E0654CF00020000000000E31C40000000000000046 +S315E0654D000000000000000000000000000000000058 +S315E0654D10000001C4908541065147941005083000AE +S315E0654D201811A09400A00208A28C10421251211E0F +S315E0654D30504F92504214F0450420A50050810A5028 +S315E0654D404F9C10421251A100504014504214084540 +S315E0654D500420A50850810A50420801C20662AF2ABE +S315E0654D601A1786820150C88084C20C025367203FB9 +S315E0654D7042F400CDBEA34D0C60C30800000C98C09C +S315E0654D80825208028A230C31E3268A28A08A082003 +S315E0654D90888094436CA28A28A02228A252211860B2 +S315E0654DA0670061CF1C79C21EB18124214F1CF1E7F2 +S315E0654DB00E7228A24A278C30CE88000000000000DB +S315E0654DC00000000000000000000000000000000098 +S315E0654DD0000002231879478801E83EF80FBE49C00E +S315E0654DE00820A10800438A114100F0850C0147A01F +S315E0654DF07BE83EF9C73C8AAA9C514712F22A94029F +S315E0654E00A23620850C00C21C20870020850A7C829C +S315E0654E100851400021421400870003623BDF6E1CA7 +S315E0654E20B29784DEE150C88FBEC3EF8E7320B7605C +S315E0654E30629400C91470861860C7BE01E018A84779 +S315E0654E401C93CF0471E00060018CBBEF208BCF260D +S315E0654E50F8809842AAA2F22F1C2228AA214218308D +S315E0654E606D803028A08BE7A2C8813823E8A28A2422 +S315E0654E70982228AA322118306B9C30C30C30C30CBB +S315E0654E8030C30C30C30C30C30C30C30C30C30C30AC +S315E0654E90C30C03E03049081C02070811E104302021 +S315E0654EA01C00838000E61C78079E89C71C71082074 +S315E0654EB0820F20808222EB2CA271C88C8A28A28A76 +S315E0654EC0223C71C71C70872071CF9C71821E8BCF87 +S315E0654ED01C71C73E72A8A28A2200008D8662ACAAC2 +S315E0654EE0E2DFDC93A358D9CC06D8698CDBEFA44026 +S315E0654EF0216800C03E296E8060C308300330C8482B +S315E0654F0002F8288888230C31E30CB228A08A0822A7 +S315E0654F108888944229A2822A022225365084181866 +S315E0654F20600003E8A08A021E88812422A8A28A245A +S315E0654F300622252A31E20C30C13230C30C30C30C6F +S315E0654F4030C30C30C30C30C30C30C30C30C30C30EB +S315E0654F50C30C02201049071C01C08820020803E043 +S315E0654F6008008600018188100104F228A2890820DC +S315E0654F7083C83CF082228AAAA28A288CF228A28972 +S315E0654F80423648208208882083E83EF882228A28CD +S315E0654F90A28A28804A28A289E20000870421C9B648 +S315E0654FA042103C18E75CD9CC06F86D8CD8673C7145 +S315E0654FB0EEF0000014F26D00318488300320704F06 +S315E0654FC0BC13C70871C304180600822F1EF3E81EDA +S315E0654FD089C7127A289C81C9BC21E222888F9E09FD +S315E0654FE0E00001EF1C79C20289C12272289CF1E4D6 +S315E0654FF01C11E23648278E31C03E000000000000F5 +S315E06550000000000000000000000000000000000055 +S315E0655010000002201E79E088002F0840041001E2B6 +S315E06550201C01C180106708200208A3EFBEF9E81EDF +S315E0655030820FA0808222F269A28A2892A228A2889B +S315E0655040823C43EFBEF9C81C8207208082227A281B +S315E0655050A28A28884228A2882100008200000000F2 +S315E065506001E31810B64CF9CFBE1BEF8CF860075814 +S315E0655070AC0000C000200680000000600000000073 +S315E06550800000000000000800000C78000000000049 +S315E06550900000000000000060000000000000000065 +S315E06550A0003E00000000003C000E0000000080208D +S315E06550B00000000003C000300000000000000000B2 +S315E06550C00000000000000000000000000000000095 +S315E06550D00000006000840F3003C208F80FBE00418F +S315E06550E00000070021C20478079E9A28A2880788EF +S315E06550F07BE13EF9C73C02289C71C70099E79E783B +S315E0655100843041E79E78070871C21C71C71E022884 +S315E06551109C71C70041E79E7BC20000000000000865 +S315E065512000100018002000280030003800400048D4 +S315E065513000500058006000680070007800800088C4 +S315E06551400090009800A000A800B000B800C000C8B4 +S315E065515000D000D800E000E800F000F801000108A2 +S315E0655160011001180120012801300138014001488C +S315E0655170015001580160016801700178018001887C +S315E06551800190019801A001A801B001B801C001C86C +S315E065519001D001D801E001E801F001F8020002085A +S315E06551A00210021802200228023002380240024844 +S315E06551B00250025802600268027002780280028834 +S315E06551C00290029802A002A802B002B802C002C824 +S315E06551D002D002D802E002E802F002F80300030812 +S315E06551E003100318032003280330033803400348FC +S315E06551F003500358036003680370037803800388EC +S315E06552000390039803A003A803B003B803C003C8DB +S315E065521003D003D803E003E803F003F804000408C9 +S315E065522004100418042004280430043804400448B3 +S315E065523004500458046004680470047804800488A3 +S315E06552400490049804A004A804B004B804C004C893 +S315E065525004D004D804E004E804F004F80500050881 +S315E0655260051005180520052805300538054005486B +S315E0655270055005580560056805700578058005885B +S315E06552800590059805A005A805B005B805C005C84B +S315E065529005D005D805E005E805F005F80600060839 +S315E06552A00610061806200628063006380640064823 +S315E06552B00650065806600668067006780680068813 +S315E06552C00690069806A006A806B006B806C006C803 +S315E06552D006D006D806E006E806F006F807000708F1 +S315E06552E007100718072007280730073807400748DB +S315E06552F007500758076007680770077807800788CB +S315E06553000790079807A007A807B007B807C007C8BA +S315E065531007D007D807E007E807F007F808000018A0 +S315E06553203C18183CFFE7017E1818F0F005A07C06EE +S315E06553307C7CC67C7C7C7C7C007807F0110400185C +S315E06553406600180038180E700000000000023C1870 +S315E06553503C7E0C7E3C7E3C3C00000600603C3C1896 +S315E06553607C3C787E7E3E663C066660C6663C7C3CFA +S315E06553707C3C7E6666C666667E1E407810000000EA +S315E0655380600006001C006018186038000000000028 +S315E06553900000000000000000000E1870000000002C +S315E06553A000000000000000000000000000000000B2 +S315E06553B0000000000000000000000000000000188A +S315E06553C06660816C0C0E66363E240C00240800008F +S315E06553D000380C760C24002400030C362408180CDF +S315E06553E0186666660C00240C0066240C1824780C96 +S315E06553F0240C1836660036180C36660C7E1C0C0CCA +S315E0655400182466760C00240C0066240C180D060C30 +S315E0655410240C1836661824180C36660C0008003C11 +S315E0655420241C3899FFC303C33C1CC0C005A0C6064F +S315E06554300606C6C0C006C6C600600FF80B2800188B +S315E0655440666C3E666C181C386618000000066638A1 +S315E0655450660C1C606006666618180C003066663C6D +S315E065546066666C6060606618066C60EE76666666B3 +S315E06554706666186666C66666061860183800C00011 +S315E06554806000060030006000006018000000000063 +S315E065549000001800000000000018181860180000E9 +S315E06554A000000000000000000000000000000000B1 +S315E06554B00000000000000000000000000000003C65 +S315E06554C03C605A643E1B003E60187E007E7E380076 +S315E06554D000181832181800180019186C18007C188E +S315E06554E0243C006C183C18187E00181824186C18B3 +S315E06554F01818246C00007C24186C001818361818E7 +S315E0655500661800341800181800001818240D1F18BE +S315E06555101818666C00181824186C001818000066D0 +S315E065552024F66FC3FE9906D33C16FEDF05A0C606D4 +S315E06555300606C6C0C006C6C63C781FEC0DD8001880 +S315E065554066FE606C381818183C180000000C6E187A +S315E065555006183C7C600C66661818187E18066E663A +S315E06555606660666060606618067860FE7E6666669A +S315E06555706660186666C63C660C1830186C00603C5A +S315E06555807C3C3E3C7C3E7C38186618EC7C3C7C3E3C +S315E06555907C3E7E6666C666667E181818F21800005A +S315E06555A000000000000000000000000000000000B0 +S315E06555B0000000000000000000000000000000663A +S315E06555C000702468603C00603C7E0C000C0C6C3C12 +S315E06555D0001800343E00003E3E7E7E007E7E661804 +S315E06555E05A1818603C663C7E607E7E3C3C7C66660E +S315E06555F0663C3C3C3C44667E6666666618660000CC +S315E065560000003C30003C003C3C3C3C00007C060035 +S315E06556100000000000000018000000667E0000C380 +S315E0655620E783C1E7FC3C8CD33C10D8DB0DB00000CA +S315E06556307C7C7C7C7C007C7C0660180406280018F3 +S315E0655640006C3C1870001818FF7E007E001876180E +S315E06556500C0C6C067C183C3E000030000C0C6A664F +S315E06556607C60667C7C6E7E18067060D67E667C663F +S315E06556707C3C186666D6183C18181818C6003006BD +S315E06556806660666630666618186C18FE66666666F7 +S315E06556906660186666C63C660C30180C9E3478788B +S315E06556A0787878787878787878787878787878782F +S315E06556B078787878787878787878787878780066A9 +S315E06556C000E05A603C66003C0618187C18186C06C3 +S315E06556D0003C00306000006060180C000C0C663C15 +S315E06556E03C3C3C60666066607C6060181866F67691 +S315E06556F0766666666628666666666666187C7C3C79 +S315E06557003C3C06303C603C667E66663838CC3E7C22 +S315E06557107C3C3C3C3C7E7C6666666666180000E7DB +S315E0655720C383C1C3F999D8DB7E10DEFF0DB0C6062B +S315E0655730C0060606C606C6067E7E180407D00018AD +S315E0655740006C0630DE0018183C180000003066185C +S315E065575018067E06663066061818180018186E7EF6 +S315E06557606660666060666618067860C66E666076D0 +S315E06557706C06186666FE3C1830180C180000003E8C +S315E06557806660667E30666618187818D666666666FA +S315E0655790603C186666D61866181818180C3478785A +S315E06557A0787878787878787878787878787878782E +S315E06557B07878787878787878787878787878007E90 +S315E06557C000605A6006660006661830003030383E7E +S315E06557D0001800303C00003C3C18180018187C6640 +S315E06557E0666666606066607C607C7C181866667E68 +S315E06557F07E66666666107C666666663C18666606FE +S315E065580006063E306060607E607E7E1818CC666611 +S315E0655810666666666600666666666666180000249F +S315E065582066F66F99F3C370C31070181E1998C606AD +S315E0655830C0060606C606C606661810042E100000E3 +S315E065584000FE7C66CC001C38661830001860661869 +S315E065585030660C666630660C18180C7E300060663D +S315E065586066666C6060666618666C60C66666606C81 +S315E0655870666618663CEE66186018061800000066EF +S315E065588066606660303E6618186C18C6666666665B +S315E0655890600618663C7C3C3E3018181800627878DD +S315E06558A0787878787878787878787878787878782D +S315E06558B078787878787878787878787878780066A7 +S315E06558C000602460663C00663C18600060600066C7 +S315E06558D000180030060000060618300030306C7E91 +S315E06558E07E7E7E60663C66607E60601818666C6E7D +S315E06558F06E66666666286C66666666181866607EB7 +S315E06559007E7E6630603C60603C60601818CC66669A +S315E065591066666666661860666666663E18000024B4 +S315E06559203C1C383CE7E720C338F0181B799E7C06BB +S315E06559307C7C067C7C067C7C3C1E1E3C39E0001843 +S315E0655940006C184676000E700000300018403C7E0C +S315E06559507E3C0C3C3C303C380030060060183E66C8 +S315E06559607C3C787E603E663C3C667EC6663C6036E0 +S315E0655970663C183E18C666187E1E027800FE003E36 +S315E06559807C3C3E3C3006663C18663CC6663C7C3EE6 +S315E0655990607C0E3E186C66067E0E1870007E787822 +S315E06559A0787878787878787878787878787878782C +S315E06559B078787878787878787878787878780066A6 +S315E06559C0007E5A7E3CD8003C08187E007E7E003E0E +S315E06559D0183C00787C00087C7C0E7E007E7E6666E0 +S315E06559E06666667E3C083C7E307E7E3C3C7C7866C0 +S315E06559F0663C3C663C44663E3E3E3E18187C603EF0 +S315E0655A003E3E3E783C083C3C183C3C3C3C7C3E6635 +S315E0655A10663C3C3C3C18603E3E3E3E060E00003C25 +S315E0655A20181818000000007E10600000718E0000F6 +S315E0655A300000000000000000000017543800000078 +S315E0655A4000000000000000000000600000000000AB +S315E0655A5000000000000000000000000000000000FB +S315E0655A6000000000000000000000000000000000EB +S315E0655A7000000000000000000000000000000000DB +S315E0655A8000000000007C0000700000000000600679 +S315E0655A90000000000000007C000018000000000027 +S315E0655AA000000000000000000000000000000000AB +S315E0655AB00000000000000000000000000000000C8F +S315E0655AC00000810000700000380000000000000C56 +S315E0655AD00C000000000038000C000000000000002B +S315E0655AE0000000000038000018000000000000001B +S315E0655AF00000003C0000000000000000306000008F +S315E0655B0000000000001800000C0000000000000026 +S315E0655B1000000000000000000000007C18000000A6 +S315E0655B20000000080010001800200028003000384A +S315E0655B30004000480050005800600068007000783A +S315E0655B40008000880090009800A000A800B000B82A +S315E0655B5000C000C800D000D800E000E800F000F81A +S315E0655B600100010801100118012001280130013802 +S315E0655B7001400148015001580160016801700178F2 +S315E0655B80018001880190019801A001A801B001B8E2 +S315E0655B9001C001C801D001D801E001E801F001F8D2 +S315E0655BA002000208021002180220022802300238BA +S315E0655BB002400248025002580260026802700278AA +S315E0655BC0028002880290029802A002A802B002B89A +S315E0655BD002C002C802D002D802E002E802F002F88A +S315E0655BE00300030803100318032003280330033872 +S315E0655BF00340034803500358036003680370037862 +S315E0655C00038003880390039803A003A803B003B851 +S315E0655C1003C003C803D003D803E003E803F003F841 +S315E0655C200400040804100418042004280430043829 +S315E0655C300440044804500458046004680470047819 +S315E0655C40048004880490049804A004A804B004B809 +S315E0655C5004C004C804D004D804E004E804F004F8F9 +S315E0655C6005000508051005180520052805300538E1 +S315E0655C7005400548055005580560056805700578D1 +S315E0655C80058005880590059805A005A805B005B8C1 +S315E0655C9005C005C805D005D805E005E805F005F8B1 +S315E0655CA00600060806100618062006280630063899 +S315E0655CB00640064806500658066006680670067889 +S315E0655CC0068006880690069806A006A806B006B879 +S315E0655CD006C006C806D006D806E006E806F006F869 +S315E0655CE00700070807100718072007280730073851 +S315E0655CF00740074807500758076007680770077841 +S315E0655D00078007880790079807A007A807B007B830 +S315E0655D1007C007C807D007D807E007E807F007F820 +S315E0655D200800000000000000000000000000000020 +S315E0655D300000000000000000000000000000000018 +S315E0655D4011040000000018003800000000000000A3 +S315E0655D5000000000000000000000000000000000F8 +S315E0655D6000000000000000000000000000000000E8 +S315E0655D7000000000000000000000000000000000D8 +S315E0655D800000400000000000000000000000000088 +S315E0655D9000000000000000000000000000000000B8 +S315E0655DA000000000000000000000000000000000A8 +S315E0655DB00000000000000000000000000000000098 +S315E0655DC000000000660000000C00663600360C0038 +S315E0655DD03618000000000600003600000000001BD3 +S315E0655DE00000180C186600000C006C0600663606A6 +S315E0655DF0186C000C3606181B66006C1C0C336606C0 +S315E0655E000000000000000000000000000000000047 +S315E0655E100000000000000000000000000000000037 +S315E0655E20001800000000000000000000000000000F +S315E0655E3005A07C007C7C007C7C7C7C7C0000000092 +S315E0655E400B280000000018007C0000000000000040 +S315E0655E5000000000000000000000000000000000F7 +S315E0655E6000000000000000000000000000000000E7 +S315E0655E7000000000000000000000000000000000D7 +S315E0655E801000600000000000000000000000000057 +S315E0655E90000000000000000000000000000E18E0B1 +S315E0655EA000000000000000000000000000000000A7 +S315E0655EB00000000000000000000000000000000097 +S315E0655EC0000000003C0000001800661C001C18007D +S315E0655ED01C18380000000C00061C000000000636A1 +S315E0655EE0000030183C3C66021800380C00661C0C55 +S315E0655EF03C3800181C0C3C36660038361866660C6D +S315E0655F00000006061800000606000006000000060A +S315E0655F10180000060006181B0000001C061B00069C +S315E0655F200018000000300C7CFEEE010000087838B1 +S315E0655F3005A0BA023A3A82B8B8BABABA00780000A9 +S315E0655F400DD8001866663E666C1806606600000049 +S315E0655F5000063C183C7E0C7E1C7E3C3C0000000046 +S315E0655F60003C38187C3C787E7E3E667E06CC60C614 +S315E0655F70663C7C3CF83E7E6666C666667E1E6078F6 +S315E0655F8010007000600006000E0060180CC0380056 +S315E0655F900000000000000000000000000018183056 +S315E0655FA000000000000000000000000000000000A6 +S315E0655FB00000000000000000000000000000000096 +S315E0655FC0000000180060006C3E1C003E3E7E7E00D0 +S315E0655FD07E006C00003818760C00003600300C6CDC +S315E0655FE03618F800660066663C3C3C187E007E180E +S315E0655FF066787800661866000000F81C00000018F0 +S315E06560007E180C0C3C6666EC0C00360C0066360CAD +S315E06560103CDE060C360C3C3666006C360C36660C99 +S315E0656020000000183C381C38FEC6013C000E4040B6 +S315E065603005A0C6060606C6C0C0C6C6C600400000C0 +S315E06560400628001866667E666C180C3066180000D1 +S315E065605000067E187E7E0C7E3C7E7E7E00000E000F +S315E0656060E07E7C3C7E7E7C7E7E7E667E06CC60C601 +S315E0656070667E7E7EFC7E7E6666C666667E1E60782B +S315E065608038003800600006001E0060180CC0380055 +S315E0656090000000000000180000000000001818303D +S315E06560A000000000000000000000000000000000A5 +S315E06560B00000000000000000000000000000000095 +S315E06560C00000003C006000647E36007E7E7E7E00D9 +S315E06560D07E7E4400003800721800001C003318000C +S315E06560E01C18FC18003C186C7E7E7E7E7E7E7E3CAF +S315E06560F03C7C7C66663C3C3C3C00FC66666666666B +S315E06561007E3C1818663C66E818001C1800661C1884 +S315E0656110667606181C18666C6600381C186C661878 +S315E06561201800003C242C34BAFED60366180F70407E +S315E065613005A0C6060606C6C0C0C6C6C6007000008F +S315E065614007D0001866FF606C38181C383C180000EC +S315E065615000066638660C1C607006666618181C7E56 +S315E06561607066E67E66666E606060661806D860EEA6 +S315E065617066666666CC60186666C666660C186018FE +S315E065618038001C00600006001800600000C01800BA +S315E0656190000000000000180000000000001818303C +S315E06561A000000000000000000000000000000000A4 +S315E06561B00000000000000000000000000000000094 +S315E06561C00000007E006081686032006060180C0047 +S315E06561D00C7E6C0000180034000000000031000001 +S315E06561E00000CC3C3C7E3C606666667E607E603CDC +S315E06561F03C6E6E66667E7E7E7E00CC6666666666AE +S315E06562001866000000000060000000000000000065 +S315E065621000061F000000000000000000000000000E +S315E06562201800006624E66792FC9203C33C09404089 +S315E06562300DB0C6060606C6C0C0C6C6C67C4000002A +S315E06562402E10001866FF600C381818183C18000008 +S315E0656250000C6638660C1C60600666661818387E43 +S315E06562603866C266666666606060661806D860EE21 +S315E065627076666666CC60186666C63C660C18301847 +S315E06562806C000C3C7C3C3E3C183E7C380CCC186C77 +S315E06562903C3C7C3E7C3E7E6666C666667E1818300D +S315E06562A06218000000000000000000000000000029 +S315E06562B00000000000000000000000000000000093 +S315E06562C000000066006842606018006060180C00B7 +S315E06562D00C0C383C001800303E00003E3EFA7E006D +S315E06562E07E7ECC7E7E667E60666666606060601891 +S315E06562F018666676766666666642CC6666666666DF +S315E065630018667C3C3C3C3C603C3C3C3C3C3C3C381C +S315E0656310383E063C3C3C3C3C3C187C6666666666BC +S315E06563207E0000C32483C1D6FCBA06913C0840389A +S315E06563300DB082023A3ABAB8B882BABA7E78000047 +S315E065634039E0001866667C1870181818FF7E007EBE +S315E0656350000C66180C183C7C600C3C7E18187000C6 +S315E06563601C0CDA667E60667C7C6E7E1806F060FEE6 +S315E065637076666666CC70186666C63C3C1818301854 +S315E06563806C00043E7E7C7E7E7E7E7E380CDC18FE6E +S315E06563907E7E7E7E7E7E7E6666C666667E381838DC +S315E06563A0F2183E3E3E3E3E3E3E3E3E3E3E3E3E3E34 +S315E06563B03E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3EB2 +S315E06563C03E3E006600783C60703C007070181800D0 +S315E06563D0180C003E001C00307E00007E7EF87E00D4 +S315E06563E07E7ECC6666666660606060607C606018CE +S315E06563F018666676766666666666CC666666667EA2 +S315E065640018667E3E3E3E3E607C7C7C7E7E7E7E3849 +S315E0656410387E3E7E7E7E7E7E7E187E6666666666B5 +S315E06564207E000081E783C1C6F83806913C08000026 +S315E06564301DB800007C7C7C7C7C007C7C06000000D2 +S315E06564403800001866663E1870181818FF7E007EDC +S315E065645000186E180C183C7E7C0C3C3E1818E00063 +S315E06564600E0CD6667C60667C7C6E7E1806F060D621 +S315E06564707E666666FC38186666D6183C181818187F +S315E0656480C6000006666066667E6666180CF818FEE7 +S315E0656490666666666660186666D63C660CF0181EC5 +S315E06564A0BE3C3E3E3E3E3E3E3E3E3E3E3E3E3E3E43 +S315E06564B03E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3EB1 +S315E06564C03E3E006600706660386600383818187EAD +S315E06564D018180006003800306000006060300C0077 +S315E06564E00C0CFC66666666606060607C7C7C7C182D +S315E06564F01866F67E7E666666663CFC666666663C3D +S315E0656500187C6606060606606060606666666618FE +S315E065651018667E666666666666006666666666666C +S315E0656520180000E781E667D6FABA8C9D3C781E1CB2 +S315E0656530399C8202B83A3A3ABA02BA3A060E07F096 +S315E06565400000001800FF0630DE0018183C18000051 +S315E065655000187618180C6C067E1866060000707EC4 +S315E06565601C18D67E666066606066661806D860D674 +S315E06565707E667E66F81C186666D618183018181892 +S315E0656580C600003E66606666186666180CF018D644 +S315E0656590666666666070186666D63C6618F0181EAE +S315E06565A09C243E3E3E3E3E3E3E3E3E3E3E3E3E3E7C +S315E06565B03E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3EB0 +S315E06565C03E3E007E00E05A601C66001C1C18307E6C +S315E06565D03018003E0018003070000070703018000A +S315E06565E01818F87E7E7E7E606060607C607C7C18D4 +S315E06565F01866F67E7E6666666618F8666666661888 +S315E06566001866603E3E3E3E60606060666666661839 +S315E06566101866666666666666667E6066666666660B +S315E065662018000024C32C3492F2928C813CF8101247 +S315E0656630799EC606C0060606C606C6067E100FF82D +S315E06566400000001800FF0636DE0018183C1800004A +S315E065665000306618180C6C06661866060000387E0B +S315E06566603818DC7E666066606066661806D860C661 +S315E06566706E667C66D80E186666FE3C1830180C1891 +S315E06566800000007E6660667E186666180CF818D6A9 +S315E065669066666666603C186666FE1866183818387B +S315E06566A000663E3E3E3E3E3E3E3E3E3E3E3E3E3ED5 +S315E06566B03E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3EAF +S315E06566C03E3E007E00E05A600E3C000E0E1830003D +S315E06566D03030007E001800303C00003C3C3018004D +S315E06566E01818D87E7E7E7E60606060606060601847 +S315E06566F01866666E6E666666663CD8666666661833 +S315E06567001866607E7E7E7E606060607E7E7E7E18D8 +S315E06567101866666666666666667E6066666666660A +S315E06567201800002466381CBAF6D6D8C37E701C1CE1 +S315E0656730718EC606C0060606C606C606660C1FEC5C +S315E06567400000000000667E66CC0018186618180022 +S315E06567501830661830667E066630660618181C00C0 +S315E06567607018C066666666606066661866CC60C602 +S315E06567706E666066CC0618663CFE3C1860180C18BA +S315E06567800000006666606660186666180CD818D6FE +S315E065679066666666600E18663CFE3C6630181830BE +S315E06567A000423E3E3E3E3E3E3E3E3E3E3E3E3E3EF8 +S315E06567B03E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3EAE +S315E06567C03E3E0066006066600618000606186000D4 +S315E06567D060300066001800300E00000E0E303000A6 +S315E06567E03030CC6666666660666666606060601870 +S315E06567F01866666E6E6666666666CC666666661814 +S315E065680018666066666666606060606060606018AF +S315E06568101866666666666666660060666666666687 +S315E0656820180000243C300C38E6C65866FF001014A4 +S315E0656830718EC606C0060606C606C6066602180454 +S315E06568400000000000667C66CC001C386600180017 +S315E06568501860661830667E666630660E18180E0035 +S315E0656860E000E26666666E606066661866CC60C67F +S315E06568706666606ACC0618663CEE661860180618A9 +S315E06568800000006666606660187E66180CCC18C601 +S315E065689066666666600618663CEE3C7E30181830BD +S315E06568A000C33E3E3E3E3E3E3E3E3E3E3E3E3E3E76 +S315E06568B03E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3EAD +S315E06568C03E3E006600603C60064C000606186000C9 +S315E06568D0606000660018003006000006063030008D +S315E06568E03030CC666666666066666660606060186F +S315E06568F0186E6E66666666666642CC666666661837 +S315E065690018666066666666606060606060606018AE +S315E06569101866666666666666661860666666667E56 +S315E06569201800003C1800007CEEEE703C100010127A +S315E06569306186BA02B83A023ABA02BA3A7E1C1804D5 +S315E06569400000001800001800FE000C30000018007A +S315E065695018607E7E7E7E0C7E7E307E3C181800005A +S315E065696000187E667E7E7C7E607E667E7EC67EC6A0 +S315E0656970667E607CC67E187E18C666187E1E0678BC +S315E065698000FE007E7E7E7E7E183E663C0CCE3CC674 +S315E0656990667E7E7E607E1E7E18C6663E7E181830F2 +S315E06569A000FF3E3E3E3E3E3E3E3E3E3E3E3E3E3E39 +S315E06569B03E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3EAC +S315E06569C03E3E0066007E427E7E6C007E7E187E00E0 +S315E06569D07E7E007E003C00787E00007E7E3C7E000A +S315E06569E07E7EC6666666667E7E7E7E7E7E7E7E3CD6 +S315E06569F03C7C7C66667E7E7E7E00C67E7E7E7E187E +S315E0656A001866607E7E7E7EF07E7E7E7E7E7E7E3CC7 +S315E0656A103C7E7E66667E7E7E7E18607E7E7E7E3E81 +S315E0656A201E00000000000000000030003800000095 +S315E0656A3041827C007C7C007C7C007C7C3C00100494 +S315E0656A4000000018000018007600066000001800D7 +S315E0656A5018603C7E7E3C0C3C3C303C3818180000A7 +S315E0656A6000183C667C3C787E603C667E3CC67EC6AD +S315E0656A70663C6036C67C183C188266187E1E0678CB +S315E0656A8000FE003E7C3E3E3E1806663C0CC63CC6B5 +S315E0656A90663C7C3E607C0E3E188266067E18183043 +S315E0656AA000003E3E3E3E3E3E3E3E3E3E3E3E3E3E37 +S315E0656AB03E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3EAB +S315E0656AC03E3E0066007E817E7C38007C7C187E00DA +S315E0656AD07E7E003E003C00787C00007C7C1C7E006F +S315E0656AE07E7EC6666666667E3C3C3C7E7E7E7E3C9B +S315E0656AF03C787866663C3C3C3C00C63C3C3C3C1895 +S315E0656B0018EC603E3E3E3EF03E3E3E3E3E3E3E3C00 +S315E0656B103C3E3E66663C3C3C3C00603E3E3E3E0658 +S315E0656B200E000000000000000000200010000000DC +S315E0656B3000000000000000000000000000001E3CB0 +S315E0656B4000000000000000000000000000003000CA +S315E0656B5000000000000000000000000000300000BA +S315E0656B6000000000000000000000000000000000DA +S315E0656B7000000000000000000000000000000000CA +S315E0656B800000000000000000007E00007C000000C0 +S315E0656B9000006006000000000000007E000E18E0C0 +S315E0656BA0000000000000000000000000000000009A +S315E0656BB0000000000000000000000000000000008A +S315E0656BC00000000C00000000000000000C00000062 +S315E0656BD00000000C0C00000000000C000C0000003A +S315E0656BE00000000000000000000C00001800000036 +S315E0656BF0000000000000000000000000000000004A +S315E0656C001800000000000000000C000018000000FD +S315E0656C100000000000000000000000000000007EAB +S315E0656C200C0000000000000000000000000000000D +S315E0656C30000000000000000000000000000017549E +S315E0656C4000000000000000000000000000002000D9 +S315E0656C5000000000000000000000000000200000C9 +S315E0656C6000000000000000000000000000000000D9 +S315E0656C7000000000000000000000000000000000C9 +S315E0656C800000000000000000007C000078000000C5 +S315E0656C9000006006000000000000007C00000000C7 +S315E0656CA00000000000000000000000000000000099 +S315E0656CB00000000000000000000000000000000089 +S315E0656CC0000000060000000000000000380000003B +S315E0656CD000000006060000000000380038000000ED +S315E0656CE00000000000000000003800000C00000015 +S315E0656CF00000000000000000000000000000000049 +S315E0656D003000000000000000003800000C000000C4 +S315E0656D100000000000000000000000000000007CAC +S315E0656D203800000000000006000C00120018001E86 +S315E0656D300024002A00300036003C00420048004E40 +S315E0656D400054005A00600066006C00720078007EB0 +S315E0656D500084008A00900096009C00A200A800AE20 +S315E0656D6000B400BA00C000C600CC00D200D800DE90 +S315E0656D7000E400EA00F000F600FC01020108010EFD +S315E0656D800114011A01200126012C01320138013E68 +S315E0656D900144014A01500156015C01620168016ED8 +S315E0656DA00174017A01800186018C01920198019E48 +S315E0656DB001A401AA01B001B601BC01C201C801CEB8 +S315E0656DC001D401DA01E001E601EC01F201F801FE28 +S315E0656DD00204020A02100216021C02220228022E90 +S315E0656DE00234023A02400246024C02520258025E00 +S315E0656DF00264026A02700276027C02820288028E70 +S315E0656E000294029A02A002A602AC02B202B802BEDF +S315E0656E1002C402CA02D002D602DC02E202E802EE4F +S315E0656E2002F402FA03000306030C03120318031EB9 +S315E0656E300324032A03300336033C03420348034E27 +S315E0656E400354035A03600366036C03720378037E97 +S315E0656E500384038A03900396039C03A203A803AE07 +S315E0656E6003B403BA03C003C603CC03D203D803DE77 +S315E0656E7003E403EA03F003F603FC04020408040EE4 +S315E0656E800414041A04200426042C04320438043E4F +S315E0656E900444044A04500456045C04620468046EBF +S315E0656EA00474047A04800486048C04920498049E2F +S315E0656EB004A404AA04B004B604BC04C204C804CE9F +S315E0656EC004D404DA04E004E604EC04F204F804FE0F +S315E0656ED00504050A05100516051C05220528052E77 +S315E0656EE00534053A05400546054C05520558055EE7 +S315E0656EF00564056A05700576057C05820588058E57 +S315E0656F000594059A05A005A605AC05B205B805BEC6 +S315E0656F1005C405CA05D005D605DC05E205E805EE36 +S315E0656F2005F405FA060000820421CFB60DE304E315 +S315E0656F308150F987BCC3CC3E73E0381F844200CDEF +S315E0656F40947B260C318488000006704F3C33C73E3F +S315E0656F5071C30C18061C71CF1EF3EF9E89C0924271 +S315E0656F60289CF1CF1EFA28A28A2F9EC1E20060080E +S315E0656F70000801808001206000000000002000001C +S315E0656F8000000E31C4007941085102002144142104 +S315E0656F9005082007885102105145041A2F0610C2CC +S315E0656FA0063A228C29E70D0007BE30871C5006801D +S315E0656FB050C72C78051821011A20879E4042144057 +S315E0656FC0421471E40421A52235010850441C40426F +S315E0656FD01A5080004042144042145BC40421A5085F +S315E0656FE009010850401401C20662AF2A1A17868263 +S315E0656FF00150C88084C20C025367203F42F400CD3D +S315E0657000BEA34D0C60C30800000C98C0825208020E +S315E06570108A230C31E3268A28A08A0820888094434F +S315E06570206CA28A28A02228A252211860670061CF47 +S315E06570301C79C21EB18124214F1CF1E70E7228A28C +S315E06570404A278C30CE8880021400801E500200509C +S315E06570508000FBCA1400850800000E236D882007B2 +S315E06570600843610A13309B0008C04BE18C21AE8072 +S315E065707021C8B6B1C00000822C500A2020850020C8 +S315E0657080850048020852C014488214008736208578 +S315E06570902C000F1E20850020850020020852C000C6 +S315E06570A030821400840003623BDF6E1CB29784DE97 +S315E06570B0E150C88FBEC3EF8E7320B760629400C996 +S315E06570C01470861860C7BE01E018A8471C93CF0404 +S315E06570D071E00060018CBBEF208BCF26F88098428B +S315E06570E0AAA2F22F1C2228AA214218306D803028E8 +S315E06570F0A08BE7A2C8813823E8A28A24982228AA29 +S315E0657100322118306B9C82271C71C72071C7182104 +S315E0657110871C80EF9C71C8A289C89871CF1E70C81C +S315E06571201CF9C39C3ADFB679CB4030830479AE8CE3 +S315E065713078C89BBAE89871C71C71CFA0FBEFBE71A2 +S315E0657140C71CE9271C71C7085A28A28A24BC71C7DF +S315E06571501C71C3A071C71C618618D3C71C71C73E75 +S315E06571605A28A28A2722008D8662ACAAE2DFDC93E2 +S315E0657170A358D9CC06D8698CDBEFA440216800C05A +S315E06571803E296E8060C308300330C84802F8288817 +S315E065719088230C31E30CB228A08A082288889442B9 +S315E06571A029A2822A0222253650841818600003E84F +S315E06571B0A08A021E88812422A8A28A240622252A7C +S315E06571C031E20C30C132822F820820A0FBEF8820A5 +S315E06571D088A2F38A228A28A27A288E208D8808C812 +S315E06571E008F0861C62F79B0808C000079C11A68C10 +S315E06571F011E736B287188A28A28A2A20E38E3820D4 +S315E0657200820849A8A28A28946A28A289C7360820EE +S315E065721082082E20FBEFBE2082083A28A28A2880C3 +S315E06572206A28A289E49E00870421C9B642103C1803 +S315E0657230E75CD9CC06F86D8CD8673C71EEF000005A +S315E065724014F26D00318488300320704FBC13C70893 +S315E065725071C304180600822F1EF3E81E89C7127AE9 +S315E0657260289C81C9BC21E222888F9E09E00001EF56 +S315E06572701C79C20289C12272289CF1E41C11E236AE +S315E065728048278E31C03E7A283EFBEF9E820808206D +S315E06572908FBE81EBA28A28A20A288479CF08F8C72F +S315E06572A01E41C1A81B100D080A4003E00021F280CB +S315E06572B020002C79E232FBEFBEFBEB9E82082020B4 +S315E06572C082087168A28A28A24A28A288843CFBEFD4 +S315E06572D0BEFBE79E8208202082084A28A28A288883 +S315E06572E03228A288270200820000000001E3181018 +S315E06572F0B64CF9CFBE1BEF8CF8600758AC0000C002 +S315E0657300002006800000006000000000000000002C +S315E065731000000800000C7800000000000000000096 +S315E0657320000000600000000000000000003E000074 +S315E06573300000003C000E0000000080200000000018 +S315E065734003C000300000C1E71E79E7B871C71C715C +S315E0657350C8A2F8001C71C79EF1C780008C3078C260 +S315E06573600038871871EF800007800000007B028097 +S315E0657370780F8000021C8A28A28A2030FBEFBE7156 +S315E0657380C71C01271C71C700B1C71C70843079E73B +S315E06573909E79E03871C71C71C71C32271C71C7001E +S315E06573A041E79E79C41C0000000000080010001843 +S315E06573B000200028003000380040004800500058A2 +S315E06573C00060006800700078008000880090009892 +S315E06573D000A000A800B000B800C000C800D000D882 +S315E06573E000E000E800F000F801000108011001186E +S315E06573F0012001280130013801400148015001585A +S315E06574000160016801700178018001880190019849 +S315E065741001A001A801B001B801C001C801D001D839 +S315E065742001E001E801F001F8020002080210021825 +S315E06574300220022802300238024002480250025811 +S315E06574400260026802700278028002880290029801 +S315E065745002A002A802B002B802C002C802D002D8F1 +S315E065746002E002E802F002F80300030803100318DD +S315E065747003200328033003380340034803500358C9 +S315E065748003600368037003780380038803900398B9 +S315E065749003A003A803B003B803C003C803D003D8A9 +S315E06574A003E003E803F003F8040004080410041895 +S315E06574B00420042804300438044004480450045881 +S315E06574C00460046804700478048004880490049871 +S315E06574D004A004A804B004B804C004C804D004D861 +S315E06574E004E004E804F004F805000508051005184D +S315E06574F00520052805300538054005480550055839 +S315E06575000560056805700578058005880590059828 +S315E065751005A005A805B005B805C005C805D005D818 +S315E065752005E005E805F005F8060006080610061804 +S315E065753006200628063006380640064806500658F0 +S315E065754006600668067006780680068806900698E0 +S315E065755006A006A806B006B806C006C806D006D8D0 +S315E065756006E006E806F006F80700070807100718BC +S315E065757007200728073007380740074807500758A8 +S315E06575800760076807700778078007880790079898 +S315E065759007A007A807B007B807C007C807D007D888 +S315E06575A007E007E807F007F8080000183C18183CFC +S315E06575B0FFE7017E1818F0F005A07C067C7CC67CAA +S315E06575C07C7C7C7C007807F0110400186600180066 +S315E06575D038180E700000000000023C183C7E0C7EF8 +S315E06575E03C7E3C3C00000600603C3C187C3C787E7A +S315E06575F07E3E663C066660C6663C7C3C7C3C7E665A +S315E065760066C666667E1E407810000000600006006D +S315E06576101C006018186038000000000000000000DB +S315E065762000000000000E1870000000660C18663059 +S315E0657630180018663066186066180C003F186630E4 +S315E06576401830666666181C661C1E0C00181C3E66BD +S315E0657650660E667E3C1B00007E7C381838786600D0 +S315E06576607E0066183CD87F006600300C18346618D4 +S315E06576703F3C300C1866300C18667834300C18349C +S315E0657680660002300C18660C601C300C18346618FF +S315E06576900000300C1866600C18662634300C183419 +S315E06576A0660000300C18660C0066003C241C3899B0 +S315E06576B0FFC303C33C1CC0C005A0C6060606C6C01C +S315E06576C0C006C6C600600FF80B280018666C3E66F5 +S315E06576D06C181C386618000000066638660C1C6077 +S315E06576E06006666618180C003066663C66666C6011 +S315E06576F060606618066C60EE76666666666618664F +S315E065770066C66666061860183800C0006000060042 +S315E065771030006000006018000000000000001800FE +S315E0657720000000000018181860183C00186600187C +S315E065773018006600180066300000180078660018C4 +S315E06577406618000000183A6636301818183A60660A +S315E0657750181B18C306360000C3006C186C0C1800BD +S315E0657760CA001878666CD8000018181866580024A0 +S315E06577707866181866001818660066581818665808 +S315E065778000003C181866001860361818665800241C +S315E065779000001818660030186600185818186658FC +S315E06577A000180218186600186000006624F66FC3B4 +S315E06577B0FE9906D33C16FEDF05A0C6060606C6C0DC +S315E06577C0C006C6C63C781FEC0DD8001866FE606C30 +S315E06577D0381818183C180000000C6E1806183C7C22 +S315E06577E0600C66661818187E18066E6666606660D2 +S315E06577F060606618067860FE7E6666666660186630 +S315E065780066C63C660C1830186C00603C7C3C3E3CB9 +S315E06578107C3E7C38186618EC7C3C7C3E7C3E7E661D +S315E065782066C666667E181818F218660000003C00A3 +S315E0657830003C003C0000000018187E7ED800000081 +S315E06578400000663C663C303C667C00003C30FC3CB7 +S315E06578503E3C00BD3E6C0000BD00387E18387E6C4F +S315E0657860CA0000186636D87E66003C3C00001818EB +S315E0657870D8607E7E007E0000003C66000000000069 +S315E06578803C426666660066667C66000000003C3CD7 +S315E06578907E3C0000003C000000386C000000000003 +S315E06578A000003C00000000667C6600C3E783C1E734 +S315E06578B0FC3C8CD33C10D8DB0DB000007C7C7C7C3A +S315E06578C07C007C7C0660180406280018006C3C1871 +S315E06578D070001818FF7E007E001876180C0C6C0692 +S315E06578E07C183C3E000030000C0C6A667C60667C69 +S315E06578F07C6E7E18067060D67E667C667C3C186615 +S315E065790066D6183C18181818C600300666606666AE +S315E065791030666618186C18FE666666666660186692 +S315E065792066C63C660C30180C9E3460663C3C063C8C +S315E06579303C603C663C3838383C3C601BDE3C3C3C55 +S315E06579406666666666607C187C303C18607C6018A6 +S315E065795060663CB166D8FE38A5000018300C0C6C44 +S315E0657960CA387E18661BDEDB6618666618183C3C08 +S315E0657970DE6060607E603C3C3C18F6663C3C3C3CC8 +S315E065798066666E6666666666667C3C3C3C3C060696 +S315E06579901B603C3C3C66383838181E7C3C3C3C3CBD +S315E06579A03C7E6E6666666666666600E7C383C1C3E9 +S315E06579B0F999D8DB7E10DEFF0DB0C606C006060671 +S315E06579C0C606C6067E7E180407D00018006C06302B +S315E06579D0DE0018183C1800000030661818067E06AA +S315E06579E0663066061818180018186E7E666066605A +S315E06579F060666618067860C66E6660766C061866BA +S315E0657A0066FE3C1830180C180000003E6660667E1F +S315E0657A1030666618187818D666666666603C1866D7 +S315E0657A2066D61866181818180C3466667E063E061D +S315E0657A3006607E7E7E18181866667C7FF8666666E2 +S315E0657A40666666666660303C663006186030F83CA9 +S315E0657A503C6670B13E6C0600B90000187C78186C1F +S315E0657A607A380C7C3C36D8DF3C3066663C3C6666EC +S315E0657A70F8607C7C607C18181818667666666666BB +S315E0657A80661876666666663C7C66060606063E3E6D +S315E0657A907F607E7E7E7E1818181866666666666600 +S315E0657AA066007666666666666666002466F66F995D +S315E0657AB0F3C370C31070181E1998C606C00606068D +S315E0657AC0C606C606661810042E10000000FE7C6623 +S315E0657AD0CC001C38661830001860661830660C668F +S315E0657AE06630660C18180C7E3000606666666C60FB +S315E0657AF060666618666C60C66666606C666618661D +S315E0657B003CEE6618601806180000006666606660FA +S315E0657B10303E6618186C18C6666666666006186650 +S315E0657B203C7C3C3E3018181800623C66607E667E9A +S315E0657B307E3C6060601818187E7E60D8D86666669A +S315E0657B4066663E66663C301866307E183C30601880 +S315E0657B50063C1CBD00360600AD0000000000306C3A +S315E0657B600A003000006CD8D818607E7E66667E7E38 +S315E0657B70D86660607C6018181818666E6666666614 +S315E0657B80666666666666661860667E7E7E7E66663E +S315E0657B90D83C606060601818181866666666666642 +S315E0657BA0661866666666663E7C3E00243C1C383C26 +S315E0657BB0E7E720C338F0181B799E7C067C7C067C5B +S315E0657BC07C067C7C3C1E1E3C39E00018006C184641 +S315E0657BD076000E700000300018403C7E7E3C0C3C22 +S315E0657BE03C303C380030060060183E667C3C787E6A +S315E0657BF0603E663C3C667EC6663C6036663C183EE4 +S315E0657C0018C666187E1E027800FE003E7C3C3E3C49 +S315E0657C103006663C18663CC6663C7C3E607C0E3E3D +S315E0657C20186C66067E0E1870007E083E3C3E3E3E4B +S315E0657C303E083C3C3C3C3C3C66667E7EDF3C3C3CF0 +S315E0657C403E3E063C3E187E187C603E18187E3E1821 +S315E0657C507CD878C33C1B0000C300007E00007E7FB5 +S315E0657C600A007E003CD87F7E186666667E7E66661E +S315E0657C70DF1C7E7E607E1818183C786666666666EA +S315E0657C803C423C3C3C663C18606C3E3E3E3E3E3E7D +S315E0657C907E183C3C3C3C3C3C3C3C3C663C3C3C3C91 +S315E0657CA03C003C3E3E3E3E066006003C1818180029 +S315E0657CB00000007E10600000718E0000000000008C +S315E0657CC000000000000017543800000000000000C6 +S315E0657CD000000000000060000000000000000000F9 +S315E0657CE00000000000000000000000000000000049 +S315E0657CF00000000000000000000000000000000039 +S315E0657D000000000000000000000000000000000028 +S315E0657D10007C0000700000000000600600000000C6 +S315E0657D200000007C0000180000003800000000003C +S315E0657D3000180000000000000000000000000000E0 +S315E0657D4000007C00001800006000001818000000C4 +S315E0657D500070007E000000007E000000000000C0AC +S315E0657D600A00000000000000003C000066660000B6 +S315E0657D70003000007E003C3C3C0000003C3C3C3C66 +S315E0657D8000004000003C000000000000000000002C +S315E0657D900030000000000000000000000000000068 +S315E0657DA0000040000000007C007C00000000000848 +S315E0657DB00010001800200028003000380040004818 +S315E0657DC00050005800600068007000780080008808 +S315E0657DD00090009800A000A800B000B800C000C8F8 +S315E0657DE000D000D800E000E800F000F801000108E6 +S315E0657DF001100118012001280130013801400148D0 +S315E0657E0001500158016001680170017801800188BF +S315E0657E100190019801A001A801B001B801C001C8AF +S315E0657E2001D001D801E001E801F001F8020002089D +S315E0657E300210021802200228023002380240024887 +S315E0657E400250025802600268027002780280028877 +S315E0657E500290029802A002A802B002B802C002C867 +S315E0657E6002D002D802E002E802F002F80300030855 +S315E0657E70031003180320032803300338034003483F +S315E0657E80035003580360036803700378038003882F +S315E0657E900390039803A003A803B003B803C003C81F +S315E0657EA003D003D803E003E803F003F8040004080D +S315E0657EB004100418042004280430043804400448F7 +S315E0657EC004500458046004680470047804800488E7 +S315E0657ED00490049804A004A804B004B804C004C8D7 +S315E0657EE004D004D804E004E804F004F805000508C5 +S315E0657EF005100518052005280530053805400548AF +S315E0657F00055005580560056805700578058005889E +S315E0657F100590059805A005A805B005B805C005C88E +S315E0657F2005D005D805E005E805F005F8060006087C +S315E0657F300610061806200628063006380640064866 +S315E0657F400650065806600668067006780680068856 +S315E0657F500690069806A006A806B006B806C006C846 +S315E0657F6006D006D806E006E806F006F80700070834 +S315E0657F70071007180720072807300738074007481E +S315E0657F80075007580760076807700778078007880E +S315E0657F900790079807A007A807B007B807C007C8FE +S315E0657FA007D007D807E007E807F007F808000000FC +S315E0657FB00000000000000000000000000000000076 +S315E0657FC00000000000000000000000001104000051 +S315E0657FD00000180038000000000000000000000006 +S315E0657FE00000000000000000000000000000000046 +S315E0657FF00000000000000000000000000000000036 +S315E065800000000000000000000000000000004000E5 +S315E06580100000000000000000000000000000000015 +S315E06580200000000000000000000000000000000005 +S315E0658030000000000000000000000000003C0600B3 +S315E065804000000000000000000000000000000000E5 +S315E0658050000000006600000000000000000000006F +S315E065806000006600000000000000000000006006F9 +S315E06580701832003C00006006180060061800003201 +S315E06580806006183200000060061800060000000071 +S315E06580900000000000000000000000000000000095 +S315E06580A00000000000000000000000000000000085 +S315E06580B000000000000000000000000005A07C0054 +S315E06580C07C7C007C7C7C7C7C000000000B280000CE +S315E06580D0000018007C0000000000000000000000C1 +S315E06580E00000000000000000000000000000000045 +S315E06580F00000000000000000000000000000000035 +S315E065810000000000000000000000000010006000B4 +S315E06581100000000000000000000000000000000014 +S315E06581200000000000000000000E18E000000000FE +S315E0658130061800601C0018006000186066660C0092 +S315E06581403E1800601860006666000E0000000600D6 +S315E0658150000E00003C0000000000000000FE380054 +S315E065816000003C0000000000000000006600300CE6 +S315E06581703C7A66663E00300C3C66300C3C66007ABE +S315E0658180300C3C7A660001300C3C660C00006006FB +S315E06581901832001C00006006180060061800003200 +S315E06581A06006183200000060061800060000000050 +S315E06581B000300C7CFEEE01000008783805A0BA02B6 +S315E06581C03A3A82B8B8BABABA007800000DD800185B +S315E06581D066663E666C1806606600000000063C183A +S315E06581E03C7E0C7E1C7E3C3C00000000003C381862 +S315E06581F07C3C787E7E3E667E06CC60C6663C7C3C94 +S315E0658200F83E7E6666C666667E1E6078100070001D +S315E0658210600006000E0060180CC038000000000023 +S315E065822000000000000000000018183000003C6601 +S315E06582300C3C663036003C6630663C30663C180081 +S315E06582407E3C66303C30666666181E66180E0C0027 +S315E0658250181E1C66181C667C000000007CFE6C001F +S315E0658260307818007A0066183C007E0066181818A3 +S315E0658270664C663C7E3C1818666618186666784CE9 +S315E06582801818664C66003D18186666186018300C56 +S315E06582903C7A66360000300C3C66300C3C66667AA5 +S315E06582A0300C3C7A660000300C3C660C00660018C3 +S315E06582B03C381C38FEC6013C000E404005A0C606AB +S315E06582C00606C6C0C0C6C6C6004000000628001839 +S315E06582D066667E666C180C306618000000067E18C9 +S315E06582E07E7E0C7E3C7E7E7E00000E00E07E7C3CE3 +S315E06582F07E7E7C7E7E7E667E06CC60C6667E7E7E85 +S315E0658300FC7E7E6666C666667E1E607838003800E8 +S315E0658310600006001E0060180CC038000000000012 +S315E065832000001800000000000018183000007E66A6 +S315E0658330186666181C0066661866661818187E0064 +S315E0658340F866661866186600001838663C1E1818E2 +S315E065835018383E663E363CC600000000C600441846 +S315E065836048187E00CA003C786600FE0000180000EA +S315E065837000001818F87E7E7E00007E7E00007C0098 +S315E06583800000000000007E0000000000603C181858 +S315E0658390664C661C00001818666618186666184C02 +S315E06583A01818664C66180018186666186066003C0C +S315E06583B0242C34BAFED60366180F704005A0C606AF +S315E06583C00606C6C0C0C6C6C60070000007D000185F +S315E06583D066FF606C38181C383C1800000006663885 +S315E06583E0660C1C607006666618181C7E7066E67E0E +S315E06583F066666E606060661806D860EE6666666696 +S315E0658400CC60186666C666660C18601838001C008F +S315E0658410600006001800600000C01800000000005B +S315E06584200000180000000000001818300000660023 +S315E06584300000000000000000000000003C3C7E00FB +S315E0658440D80000000000003C663C306666180018FF +S315E06584503C3066667E3218823C00000082006C180D +S315E065846018307E00CA0018186600D80066003C3CE5 +S315E06584703C3C3C3CD8667E7E7E7E7E7E7E7E6E66BF +S315E06584803C3C3C3C3CC36666666666666066000088 +S315E065849000000000000000000000000000006C0025 +S315E06584A000000000001801000000000060000066A2 +S315E06584B024E66792FC9203C33C0940400DB0C606CC +S315E06584C00606C6C0C0C6C6C67C4000002E100018AB +S315E06584D066FF600C381818183C180000000C663802 +S315E06584E0660C1C60600666661818387E3866C26675 +S315E06584F0666666606060661806D860EE766666668D +S315E0658500CC60186666C63C660C1830186C000C3C88 +S315E06585107C3C3E3C183E7C380CCC186C3C3C7C3E46 +S315E06585207C3E7E6666C666667E1818306218666646 +S315E06585303C3C3C3C3C3C3C3C3C3838387E7E60765A +S315E0658540D83C3C3C6666667E667E306666183C0070 +S315E06585507E30606660183EBA3E000000BA003818A4 +S315E065856030180C66CA007E186600D87E66187E7E70 +S315E06585707E7E7E7ED86660607E7E18187E7E6666C6 +S315E06585807E7E7E7E7E666666666666667C663C3C06 +S315E06585903C3C3C3C763C3C3C3C3C38383838063CDC +S315E06585A03C3C3C3C3C003D66666666667C6600C374 +S315E06585B02483C1D6FCBA06913C0840380DB08202E8 +S315E06585C03A3ABAB8B882BABA7E78000039E00018A5 +S315E06585D066667C1870181818FF7E007E000C6618B3 +S315E06585E00C183C7C600C3C7E181870001C0CDA6636 +S315E06585F07E60667C7C6E7E1806F060FE76666666F4 +S315E0658600CC70186666C63C3C181830186C00043E9B +S315E06586107E7C7E7E7E7E7E380CDC18FE7E7E7E7E71 +S315E06586207E7E7E6666C666667E381838F218606651 +S315E06586307E3E3E3E3E7C7E7E7E3838386666607F30 +S315E0658640DE7E7E7E666666666666307E66183E18A1 +S315E06586506630FC7E703C7EA2061A003CAA00007E6F +S315E065866060480C66CA007E1866B0DEFF6618666608 +S315E065867066666666DE60606060601818181876760D +S315E065868066666666663C6E66666666667E663E3E99 +S315E06586903E3E3E3E7F7C7E7E7E7E383838381E7E28 +S315E06586A07E7E7E7E7E7E7E66666666667E660081AA +S315E06586B0E783C1C6F83806913C0800001DB800009E +S315E06586C07C7C7C7C7C007C7C0600000038000018A5 +S315E06586D066663E1870181818FF7E007E00186E18DC +S315E06586E00C183C7E7C0C3C3E1818E0000E0CD666F9 +S315E06586F07C60667C7C6E7E1806F060D67E66666615 +S315E0658700FC38186666D6183C18181818C6000006B0 +S315E0658710666066667E6666180CF818FE6666666668 +S315E06587206660186666D63C660CF0181EBE3C6066EA +S315E065873066060606066066666618181866667C1B33 +S315E0658740DE666666666666666660303C7C7E0618EC +S315E06587506030603C386660A23E36003CB200007E22 +S315E065876078301866CA180C7C3CD8DEDB6618666617 +S315E065877066666666DE607C7C606018181818F67654 +S315E06587806666666666186E6666666666667C06062E +S315E0658790060606061B6066666666181818183E665F +S315E06587A066666666667E666666666666666600E7EB +S315E06587B081E667D6FABA8C9D3C781E1C399C8202A6 +S315E06587C0B83A3A3ABA02BA3A060E07F00000001825 +S315E06587D000FF0630DE0018183C1800000018761811 +S315E06587E0180C6C067E1866060000707E1C18D67E30 +S315E06587F0666066606066661806D860D67E667E6682 +S315E0658800F81C186666D6181830181818C600003EA3 +S315E065881066606666186666180CF018D666666666FD +S315E06588206070186666D63C6618F0181E9C2460660D +S315E0658830663E3E3E3E606666661818187E7E7C7BC2 +S315E0658840F8666666666666666660FE1866183E186B +S315E065885060FEF8181C6670A27E6C0000BA0000180F +S315E0658860000018667A181800006CD8DB3C307E7E0E +S315E06588707E7E7E7EF8607C7C7C7C18181818E67EA9 +S315E065888066666666663C76666666663C667C3E3EBB +S315E06588903E3E3E3E7B6066666666181818186666F6 +S315E06588A06666666666006E66666666666666002423 +S315E06588B0C32C3492F2928C813CF81012799EC606EE +S315E06588C0C0060606C606C6067E100FF80000001846 +S315E06588D000FF0636DE0018183C1800000030661802 +S315E06588E0180C6C06661866060000387E3818DC7E5D +S315E06588F0666066606066661806D860C66E667C66A3 +S315E0658900D80E186666FE3C1830180C180000007E16 +S315E06589106660667E186666180CF818D666666666DC +S315E0658920603C186666FE1866183818380066606634 +S315E06589307E7E7E7E7E607E7E7E1818187E7E60FFF9 +S315E0658940F8666666666666666666307E66187E188C +S315E06589506630607E0E3C3CBA66D87E00AA0000189A +S315E0658960000030660A0018000036D8DF3C307E7EAF +S315E06589707E7E7E7EF86060607C7C18181818666E70 +S315E065898066666666666676666666663C7E667E7E0E +S315E06589907E7E7E7EFF607E7E7E7E18181818666611 +S315E06589A06666666666187E666666666666660024FA +S315E06589B066381CBAF6D6D8C37E701C1C718EC606A0 +S315E06589C0C0060606C606C606660C1FEC0000000075 +S315E06589D000667E66CC0018186618180018306618AA +S315E06589E030667E066630660618181C007018C06626 +S315E06589F0666666606066661866CC60C66E66606664 +S315E0658A00CC0618663CFE3C1860180C18000000663B +S315E0658A1066606660186666180CD818D66666666619 +S315E0658A20600E18663CFE3C66301818300042666695 +S315E0658A30606666666660606060181818666660D827 +S315E0658A40D866666666666666667E30186618661811 +S315E0658A507E30601806180E82666C7E00820000180D +S315E0658A60000030660A003000006CD8D81866666685 +S315E0658A7066666666D8666060606018181818666E21 +S315E0658A806666666666C36666666666187C66666616 +S315E0658A9066666666D860606060601818181866660F +S315E0658AA06666666666187666666666666666002401 +S315E0658AB03C300C38E6C65866FF001014718EC60663 +S315E0658AC0C0060606C606C60666021804000000006D +S315E0658AD000667C66CC001C3866001800186066186F +S315E0658AE030667E666630660E18180E00E000E26651 +S315E0658AF066666E606066661866CC60C66666606A5F +S315E0658B00CC0618663CEE6618601806180000006626 +S315E0658B1066606660187E66180CCC18C6666666661C +S315E0658B20600618663CEE3C7E3018183000C3666613 +S315E0658B30606666666660606060181818666660D826 +S315E0658B40D866666666667E66663C30187C18661824 +S315E0658B503C306618064C06C67E360600C600000042 +S315E0658B600000607F0A00300000D8D8D818666666CF +S315E0658B7066666666D86660606060181818186E6620 +S315E0658B8066666666660066666666661860666666F4 +S315E0658B9066666666D860606060601818181866660E +S315E0658BA066666666660066666666667E667E003CE0 +S315E0658BB01800007CEEEE703C100010126186BA0279 +S315E0658BC0B83A023ABA02BA3A7E1C180400000018AE +S315E0658BD000001800FE000C300000180018607E7E6C +S315E0658BE07E7E0C7E7E307E3C1818000000187E6620 +S315E0658BF07E7E7C7E607E667E7EC67EC6667E607C2A +S315E0658C00C67E187E18C666187E1E067800FE007E4D +S315E0658C107E7E7E7E183E663C0CCE3CC6667E7E7E5D +S315E0658C20607E1E7E18C6663E7E18183000FF7E7E24 +S315E0658C307E7E7E7E7E7E7E7E7E3C3C3C66667EFF7E +S315E0658C40DE7E7E7E7E7E3E7E7E187F186C187E1882 +S315E0658C50187F3E187E6C7E7C3E1A06007C00007EA0 +S315E0658C6000007E5D0A007E0000B0FEFF187E666647 +S315E0658C7066666666DE7E7E7E7E7E7E7E7E7E7C66E3 +S315E0658C807E7E7E7E7E007E7E7E7E7E1860667E7ED3 +S315E0658C907E7E7E7EFF7E7E7E7E7E3C3C3C3C7E6648 +S315E0658CA07E7E7E7E7E007E7E7E7E7E3E7E3E000093 +S315E0658CB000000000000030003800000041827C00C2 +S315E0658CC07C7C007C7C007C7C3C0010040000001809 +S315E0658CD000001800760006600000180018603C7E0B +S315E0658CE07E3C0C3C3C303C381818000000183C666D +S315E0658CF07C3C787E603C667E3CC67EC6663C60367D +S315E0658D00C67C183C188266187E1E067800FE003E14 +S315E0658D107C3E3E3E1806663C0CC63CC6663C7C3EE2 +S315E0658D20607C0E3E188266067E18183000003C3E72 +S315E0658D303E3E3E3E3E3E3E3E3E3C3C3C66667E7F3D +S315E0658D40DE3C3C3C3E3E063C3C18FF1860703E18F7 +S315E0658D5018FF1C187C387C00000006000000007EC9 +S315E0658D6000007EC00A007E0000007E7F183C6666D5 +S315E0658D7066666666DE3C7E7E7E7E7E7E7E7E786628 +S315E0658D803C3C3C3C3C00BC3C3C3C3C18606C3E3E60 +S315E0658D903E3E3E3E7F3E3E3E3E3E3C3C3C3C3C6649 +S315E0658DA03C3C3C3C3C00BC3E3E3E3E067C06000010 +S315E0658DB00000000000002000100000000000000038 +S315E0658DC0000000000000000000001E3C00000000FE +S315E0658DD00000000000000000000030000000000018 +S315E0658DE00000000000000000003000000000000008 +S315E0658DF00000000000000000000000000000000028 +S315E0658E000000000000000000000000000000000017 +S315E0658E1000000000007E00007C00000000006006A7 +S315E0658E20000000000000007E000E18E000000C0067 +S315E0658E3000000000000C00000000000000000000DB +S315E0658E400000000000007E000000000040600018A1 +S315E0658E5000000000000000007E0000000000000049 +S315E0658E600000008000000000000000000000000037 +S315E0658E7000000000000C000000000000000000009B +S315E0658E800000000000008000000000000000000017 +S315E0658E9000000000000C000000000000000000007B +S315E0658EA000000000000080000000007E607E00009B +S315E0658EB00000000000000000000000000000000067 +S315E0658EC000000000000000000000175400000000EC +S315E0658ED00000000000000000000020000000000027 +S315E0658EE00000000000000000002000000000000017 +S315E0658EF00000000000000000000000000000000027 +S315E0658F000000000000000000000000000000000016 +S315E0658F1000000000007C00007800000000006006AC +S315E0658F20000000000000007C000000000000380042 +S315E0658F3000000000003800000000000000000000AE +S315E0658F400000000000007C0000000000000000005A +S315E0658F5000000000000000000000000000000000C6 +S315E0658F6000000000000000000000000000000000B6 +S315E0658F70000000000038000000000000000000006E +S315E0658F800000000000000000000000000000000096 +S315E0658F90000000000038000000000000000000004E +S315E0658FA000000000000000000000007C607C00001E +S315E0658FB0000100083658362073797374656D20664E +S315E0658FC06F6E740000000000000000000000000005 +S315E0658FD000000000000000FF00040004000300013B +S315E0658FE0000100050006000000020001000155557C +S315E0658FF05555000D0000000000E5900A00E5920C6D +S315E065900000C0000600000000000000000006000C3D +S315E065901000120018001E0024002A00300036003CCD +S315E065902000420048004E0054005A00600066006C3D +S315E065903000720078007E0084008A00900096009CAD +S315E065904000A200A800AE00B400BA00C000C600CC1D +S315E065905000D200D800DE00E400EA00F000F600FC8D +S315E065906001020108010E0114011A01200126012CF5 +S315E065907001320138013E0144014A01500156015C65 +S315E065908001620168016E0174017A01800186018CD5 +S315E065909001920198019E01A401AA01B001B601BC45 +S315E06590A001C201C801CE01D401DA01E001E601ECB5 +S315E06590B001F201F801FE0204020A02100216021C20 +S315E06590C002220228022E0234023A02400246024C8D +S315E06590D002520258025E0264026A02700276027CFD +S315E06590E002820288028E0294029A02A002A602AC6D +S315E06590F002B202B802BE02C402CA02D002D602DCDD +S315E065910002E202E802EE02F402FA03000306030C49 +S315E065911003120318031E0324032A03300336033CB4 +S315E065912003420348034E0354035A03600366036C24 +S315E065913003720378037E0384038A03900396039C94 +S315E065914003A203A803AE03B403BA03C003C603CC04 +S315E065915003D203D803DE03E403EA03F003F603FC74 +S315E065916004020408040E0414041A04200426042CDC +S315E065917004320438043E0444044A04500456045C4C +S315E065918004620468046E0474047A04800486048CBC +S315E065919004920498049E04A404AA04B004B604BC2C +S315E06591A004C204C804CE04D404DA04E004E604EC9C +S315E06591B004F204F804FE0504050A05100516051C07 +S315E06591C005220528052E0534053A05400546054C74 +S315E06591D005520558055E0564056A05700576057CE4 +S315E06591E005820588058E0594059A05A005A605AC54 +S315E06591F005B205B805BE05C405CA05D005D605DCC4 +S315E065920005E205E805EE05F405FA060000820421A7 +S315E0659210CFB60DE304E38150F987BCC3CC3E73E07A +S315E0659220381F844200CD947B260C31848800000685 +S315E0659230704F3C33C73E71C30C18061C71CF1EF3E5 +S315E0659240EF9E89C09242289CF1CF1EFA28A28A2F0A +S315E06592509EC1E20060080008018080012060000090 +S315E065926000000020000000000E31C40073CF08FB4B +S315E0659270E89C7122228BE73EF3EFA2222A9C0380CB +S315E06592801C03E01C00070003E0000000000000008E +S315E065929069A34201E41A69410869E7BD4BA9BC7B4C +S315E06592A0FF1C7BFC1EF30D8EF9BFB6F9CD5E3BE088 +S315E06592B03ED8C000008108504208508BBFC6EBB16E +S315E06592C0B886060CC21A30600001C03E01C206626D +S315E06592D0AF2A1A1786820150C88084C20C0253678A +S315E06592E0203F42F400CDBEA34D0C60C30800000CE0 +S315E06592F098C0825208028A230C31E3268A28A08A1E +S315E06593000820888094436CA28A28A02228A252214C +S315E06593101860670061CF1C79C21EB18124214F1C9C +S315E0659320F1E70E7228A24A278C30CE888A28148007 +S315E065933048A2214536C808A2890222714AA2EA44B2 +S315E06593409078CF1222419289873E71F3BE8AE9A26F +S315E0659350B2C48C72C22CB0021CEB38D7012D8C08D6 +S315E0659360618C31BD861BE7C6D9B9B6186D56186FDF +S315E0659370E6D8A2168BA7BE2087228A24504444519C +S315E065938047E19810C02C48800700600003623BDF28 +S315E06593906E1CB29784DEE150C88FBEC3EF8E732034 +S315E06593A0B760629400C91470861860C7BE01E0189C +S315E06593B0A8471C93CF0471E00060018CBBEF208B5E +S315E06593C0CF26F8809842AAA2F22F1C2228AA21422B +S315E06593D018306D803028A08BE7A2C8813823E8A2D3 +S315E06593E08A24982228AA322118306B9CFBC822F081 +S315E06593F08FBE2188AAA9C8A2F08214A8871C93C348 +S315E06594001CF1049E2387928B08A28A46088AA62ABF +S315E065941071C596BAE71C700008EADB5549270C1852 +S315E06594206D8C19BD86186646D9BD9CD86F5618668B +S315E0659430F671C72DAA4F122088A28AA7DC7C444E16 +S315E065944038860630CF8031C30450C300008D86620E +S315E0659450ACAAE2DFDC93A358D9CC06D8698CDBEFFE +S315E0659460A440216800C03E296E8060C308300330A1 +S315E0659470C84802F8288888230C31E30CB228A08A0C +S315E065948008228888944229A2822A022225365084B7 +S315E06594901818600003E8A08A021E88812422A8A223 +S315E06594A08A240622252A31E20C30C1328A282281B5 +S315E06594B008A22148A29808A2810208714200922377 +S315E06594C0228204A222489251C8A28A218A8AA22AC5 +S315E06594D00A269AA2C8A28800086AF8C04BAD8C38FD +S315E06594E06D8C19BD80186646D9B18ED06C561866F6 +S315E06594F0C631CDADAA48122088A28AA45044444418 +S315E065950000000030C01A00833401E30000870421BF +S315E0659510C9B642103C18E75CD9CC06F86D8CD867BD +S315E06595203C71EEF0000014F26D0031848830032062 +S315E0659530704FBC13C70871C304180600822F1EF36B +S315E0659540E81E89C7127A289C81C9BC21E222888FE8 +S315E06595509E09E00001EF1C79C20289C12272289C4E +S315E0659560F1E41C11E23648278E31C03E8BC83EFBDE +S315E0659570E89C7128A28BE72283E20822223EFBC49F +S315E06595809C7B049C32289E230722F1C70C73E73E39 +S315E0659590FA248C79EFBE8800082B1A40482CBE6801 +S315E06595A06D8C19BF80F1E6DE73FFBEC06FF6186796 +S315E06595B0C632889A73E79230C71C71C45F44E38408 +S315E06595C07FE79E30822C01E01C00000000820000EF +S315E06595D0000001E31810B64CF9CFBE1BEF8CF860BE +S315E06595E00758AC0000C0002006800000006000005F +S315E06595F000000000000000000800000C7800000094 +S315E065960000000000000000000060000000000000AF +S315E06596100000003E00000000003C000E0000000077 +S315E065962080200000000003C000300000000000005C +S315E065963000000000000000000000000000000203DA +S315E06596400001C00000002001C000800000008C8899 +S315E065965079CB100008A270000029E78010C00000F1 +S315E06596600000000000000000000000C000000000EF +S315E0659670000180000000000000000000000000001E +S315E0659680000000330000000008000000000100094A +S315E06596903878382073797374656D20666F6E7400FB +S315E06596A0000000000000000000000000000000006F +S315E06596B0000000FF00060006000400010001000747 +S315E06596C00008000100030001000155555555000DE0 +S315E06596D00000000000E596E600E598E80100000870 +S315E06596E000000000000000000008001000180020DF +S315E06596F000280030003800400048005000580060FF +S315E0659700006800700078008000880090009800A0EE +S315E065971000A800B000B800C000C800D000D800E0DE +S315E065972000E800F000F801000108011001180120C9 +S315E065973001280130013801400148015001580160B6 +S315E0659740016801700178018001880190019801A0A6 +S315E065975001A801B001B801C001C801D001D801E096 +S315E065976001E801F001F80200020802100218022081 +S315E0659770022802300238024002480250025802606E +S315E0659780026802700278028002880290029802A05E +S315E065979002A802B002B802C002C802D002D802E04E +S315E06597A002E802F002F80300030803100318032039 +S315E06597B00328033003380340034803500358036026 +S315E06597C0036803700378038003880390039803A016 +S315E06597D003A803B003B803C003C803D003D803E006 +S315E06597E003E803F003F804000408041004180420F1 +S315E06597F004280430043804400448045004580460DE +S315E0659800046804700478048004880490049804A0CD +S315E065981004A804B004B804C004C804D004D804E0BD +S315E065982004E804F004F805000508051005180520A8 +S315E06598300528053005380540054805500558056095 +S315E0659840056805700578058005880590059805A085 +S315E065985005A805B005B805C005C805D005D805E075 +S315E065986005E805F005F80600060806100618062060 +S315E0659870062806300638064006480650065806604D +S315E0659880066806700678068006880690069806A03D +S315E065989006A806B006B806C006C806D006D806E02D +S315E06598A006E806F006F80700070807100718072018 +S315E06598B00728073007380740074807500758076005 +S315E06598C0076807700778078007880790079807A0F5 +S315E06598D007A807B007B807C007C807D007D807E0E5 +S315E06598E007E807F007F8080000183C18183CFFE79A +S315E06598F0017E1818F0F005A07C067C7CC67C7C7C35 +S315E06599007C7C007807F011040018660018003818AA +S315E06599100E700000000000023C183C7E0C7E3C7E2A +S315E06599203C3C00000600603C3C187C3C787E7E3E14 +S315E0659930663C066660C6663C7C3C7C3C7E6666C686 +S315E065994066667E1E407810000000600006001C001A +S315E06599506018186038000000000000000000000094 +S315E06599600000000E18700000187C7E187E7E663C4E +S315E06599703C6618C6667E3C7E7C7E7E661066C63C28 +S315E0659980003C003C007E003C00003C00007E0000A0 +S315E0659990000000000000000034340200007F30342F +S315E06599A034660C007A7E7EF166F600000000000003 +S315E06599B0000060000060000000000000000000009C +S315E06599C000000000000E00660018181866181818E2 +S315E06599D0661898BFB3BC9EB39E18300C0018180085 +S315E06599E03800000000380000003C241C3899FFC3AD +S315E06599F003C33C1CC0C005A0C6060606C6C0C006B5 +S315E0659A00C6C600600FF80B280018666C3E666C18D3 +S315E0659A101C386618000000066638660C1C60600631 +S315E0659A20666618180C003066663C66666C60606053 +S315E0659A306618066C60EE766666666666186666C67F +S315E0659A406666061860183800C000600006003000DB +S315E0659A5060000060180000000000000018000000CB +S315E0659A6000000018181860183C66603C600666667B +S315E0659A70186C3CEE76006666663018667C66D66679 +S315E0659A8000660060001800660000660000180000C9 +S315E0659A90000000000000000058583C0200D8185845 +S315E0659AA058001810CAC3C35B0066667C1E7E7C1CC4 +S315E0659AB01E7E6E3C3E7E6C1C3E367E663E78D67C71 +S315E0659AC01C3EFE7E361B10F700000000000000001D +S315E0659AD00000BCB0B398B3B3B31818180E181832B3 +S315E0659AE06C1C00006C6C00FE006624F66FC3FE9984 +S315E0659AF006D33C16FEDF05A0C6060606C6C0C0064A +S315E0659B00C6C63C781FEC0DD8001866FE606C381842 +S315E0659B1018183C180000000C6E1806183C7C600CA2 +S315E0659B2066661818187E18066E666660666060601A +S315E0659B306618067860FE7E6666666660186666C660 +S315E0659B403C660C1830186C00603C7C3C3E3C7C3EC8 +S315E0659B507C38186618EC7C3C7C3E7C3E7E6666C648 +S315E0659B6066667E181818F21866666066600C666644 +S315E0659B70187866FE7600666666181866D63CD6661A +S315E0659B803E6666303E30FC663066066666303C7E2E +S315E0659B903C3F3E7E664C66C60000663C7ED800006D +S315E0659BA03C003038CABDBD5FE666760C060C060C31 +S315E0659BB00C36660C06063E0C36366666060CD66CC4 +S315E0659BC00C066666363C3899C63E3EFC18303C6601 +S315E0659BD066C6663033183333337E0C301B18004C5B +S315E0659BE0383A000F6C18000000C3E783C1E7FC3C18 +S315E0659BF08CD33C10D8DB0DB000007C7C7C7C7C0093 +S315E0659C007C7C0660180406280018006C3C18700019 +S315E0659C101818FF7E007E001876180C0C6C067C180A +S315E0659C203C3E000030000C0C6A667C60667C7C6EAF +S315E0659C307E18067060D67E667C667C3C186666D65F +S315E0659C40183C18181818C6003006666066663066F1 +S315E0659C506618186C18FE666666666660186666C699 +S315E0659C603C660C30180C9E34667C60667C187E7E9D +S315E0659C70187066D67E3C66667C0C183CD618D66649 +S315E0659C80667C3C3C6060661E306C3E666618666661 +S315E0659C906666601866D666D63C3C6E6EDBDE181880 +S315E0659CA066000010CAB1A55566663C0C0E0C660CDE +S315E0659CB00636660C0606660C3636763C360CD66C8B +S315E0659CC00C0666761C666C99D666606618306666BE +S315E0659CD066D6663E3F18331E331818181B187E0085 +S315E0659CE0003000180030380000E7C383C1C3F99936 +S315E0659CF0D8DB7E10DEFF0DB0C606C0060606C606D4 +S315E0659D00C6067E7E180407D00018006C0630DE00B5 +S315E0659D1018183C1800000030661818067E0666308E +S315E0659D2066061818180018186E7E666066606066C6 +S315E0659D306618067860C66E6660766C06186666FEB8 +S315E0659D403C1830180C180000003E6660667E30668A +S315E0659D506618187818D666666666603C186666D6CE +S315E0659D601866181818180C347E6660666030666684 +S315E0659D70187866C66E00666660181818D63C7C3C30 +S315E0659D80666618667C3066663078666666306666F0 +S315E0659D9066663C1866D63CD606667676DFD83C3C83 +S315E0659DA0660000107AB1B95166666E0C1E0C660CDB +S315E0659DB0063666000606660C3636060E360CD66C34 +S315E0659DC00C0666060C66C6EFD6667C661830666671 +S315E0659DD066D67E303318330C1E18300C18D8003230 +S315E0659DE0007818D8007C3800002466F66F99F3C3CE +S315E0659DF070C31070181E1998C606C0060606C60614 +S315E0659E00C606661810042E10000000FE7C66CC00BF +S315E0659E101C38661830001860661830660C66663061 +S315E0659E20660C18180C7E3000606666666C60606667 +S315E0659E306618666C60C66666606C666618663CEE55 +S315E0659E406618601806180000006666606660303E53 +S315E0659E506618186C18C666666666600618663C7CA3 +S315E0659E603C3E301818180062666660666060666635 +S315E0659E70186C66C66E006666603018187C661000FB +S315E0659E8066663C6660186666346666663C1866664F +S315E0659E906666061A66D618D67E666666D8D8666635 +S315E0659EA0660000100ABDAD00F6F6667E360C660CF9 +S315E0659EB006367E003E0E6E3C1C7E7E7E340CFEECE7 +S315E0659EC00C067E060C3C8266D66660661A34666665 +S315E0659ED066D666303318330C0000000018D8184C87 +S315E0659EE0003018700000380000243C1C383CE7E779 +S315E0659EF020C338F0181B799E7C067C7C067C7C0644 +S315E0659F007C7C3C1E1E3C39E00018006C18467600E9 +S315E0659F100E700000300018403C7E7E3C0C3C3C30C8 +S315E0659F203C380030060060183E667C3C787E603ED4 +S315E0659F30663C3C667EC6663C6036663C183E18C640 +S315E0659F4066187E1E027800FE003E7C3C3E3C30068E +S315E0659F50663C18663CC6663C7C3E607C0E3E186C8C +S315E0659F6066067E0E1870007E667C607E7E7E663C4A +S315E0659F703C6666C6667E3C66607E18181066107E30 +S315E0659F803F7C243C3E0C663C1866667F180C3C6656 +S315E0659F907C3C7C0C3C7C3C7C3E3C3C3C7E7F7E7EDB +S315E0659FA0660000000AC3C300060600000000000064 +S315E0659FB00000000000000000000000003000000026 +S315E0659FC00C0600060CD800007C3F3E660C183C3C4F +S315E0659FD03C7C663F333C1E0C3F7E7E7E18701800E7 +S315E0659FE0007E003000000000003C181818000000F4 +S315E0659FF0007E10600000718E000000000000000029 +S315E065A0000000000017543800000000000000000062 +S315E065A0100000000060000000000000000000000095 +S315E065A02000000000000000000000000000000000E5 +S315E065A03000000000000000000000000000000000D5 +S315E065A0400000000000000000000000000000007C49 +S315E065A05000007000000000006006000000000000DF +S315E065A060007C000018000000000000000000000011 +S315E065A0700000000000000000000000000000000095 +S315E065A08000603C00007C0000000000600004000009 +S315E065A0906000000000106610000040400000666643 +S315E065A0A03C0000000A7E7E001C1C000000000000EB +S315E065A0B00000000000000000000000000000000055 +S315E065A0C000000000007000000000000000000000D5 +S315E065A0D0000000000000000000000000180000001D +S315E065A0E000000000000000000001000A3878313603 +S315E065A0F02073797374656D20666F6E740000000079 +S315E065A100000000000000000000000000000000FF05 +S315E065A110000D000B000800020002000700080001C0 +S315E065A12000070001000155555555000D000000007A +S315E065A13000E5A14200E5A34401000010000000002F +S315E065A140000000000008001000180020002800301C +S315E065A1500038004000480050005800600068007014 +S315E065A1600078008000880090009800A000A800B004 +S315E065A17000B800C000C800D000D800E000E800F0F4 +S315E065A18000F80100010801100118012001280130DD +S315E065A19001380140014801500158016001680170CC +S315E065A1A00178018001880190019801A001A801B0BC +S315E065A1B001B801C001C801D001D801E001E801F0AC +S315E065A1C001F8020002080210021802200228023095 +S315E065A1D00238024002480250025802600268027084 +S315E065A1E00278028002880290029802A002A802B074 +S315E065A1F002B802C002C802D002D802E002E802F064 +S315E065A20002F803000308031003180320032803304C +S315E065A210033803400348035003580360036803703B +S315E065A2200378038003880390039803A003A803B02B +S315E065A23003B803C003C803D003D803E003E803F01B +S315E065A24003F8040004080410041804200428043004 +S315E065A25004380440044804500458046004680470F3 +S315E065A2600478048004880490049804A004A804B0E3 +S315E065A27004B804C004C804D004D804E004E804F0D3 +S315E065A28004F80500050805100518052005280530BC +S315E065A29005380540054805500558056005680570AB +S315E065A2A00578058005880590059805A005A805B09B +S315E065A2B005B805C005C805D005D805E005E805F08B +S315E065A2C005F8060006080610061806200628063074 +S315E065A2D00638064006480650065806600668067063 +S315E065A2E00678068006880690069806A006A806B053 +S315E065A2F006B806C006C806D006D806E006E806F043 +S315E065A30006F807000708071007180720072807302B +S315E065A310073807400748075007580760076807701A +S315E065A3200778078007880790079807A007A807B00A +S315E065A33007B807C007C807D007D807E007E807F0FA +S315E065A34007F80800000000000000000000000000BB +S315E065A35000000000000000000000000000000000B2 +S315E065A360000011040000000018003800000000003D +S315E065A3700000000000000000000000000000000092 +S315E065A3800000000000000000000000000000000082 +S315E065A3900000000000000000000000000000000072 +S315E065A3A00000000040000000000000000000000022 +S315E065A3B00000000000000000000000000000000052 +S315E065A3C00000000000000000000000000000000042 +S315E065A3D00000000000000000000000000000000032 +S315E065A3E00000000000000000000000000000000022 +S315E065A3F0000000000000000000006032320000004E +S315E065A400000000F100F6000000000000000000001A +S315E065A4100060000000000000000000000000000091 +S315E065A42000000000000000000000000000000000E1 +S315E065A430000000000000000000180000000E0000AB +S315E065A44000000000000000000000000000000000C1 +S315E065A450000005A07C007C7C007C7C7C7C7C00002C +S315E065A46000000B280000000018007C0000000000DA +S315E065A4700000000000000000000000000000000091 +S315E065A4800000000000000000000000000000000081 +S315E065A4900000000000000000000000000000000071 +S315E065A4A000001000600000000000000000000000F1 +S315E065A4B00000000000000000000000000000000E43 +S315E065A4C018E0000000000000000000000000000049 +S315E065A4D00000000000000000080000000000000029 +S315E065A4E00000000000000000000000000000000021 +S315E065A4F000000000323201000000307A7A6606100C +S315E065A5000000005B66F60000000000000000000049 +S315E065A5100060000000000000000000000000000090 +S315E065A5200000000000060606000C060600030000B3 +S315E065A530000000000000000000180000381E000062 +S315E065A540003800FE000000300C7CFEEE01000008DD +S315E065A550783805A0BA023A3A82B8B8BABABA007893 +S315E065A56000000DD8001866663E666C1806606600E3 +S315E065A570000000063C183C7E0C7E1C7E3C3C0000E0 +S315E065A5800000003C38187C3C787E7E3E667E06CCD4 +S315E065A59060C6663C7C3CF83E7E6666C666667E1E42 +S315E065A5A0607810007000600006000E0060180CC050 +S315E065A5B03800000000000000000000000000001800 +S315E065A5C018300000187C7E187E7E663C7E661863D1 +S315E065A5D0667E3C7E7C7E7E660866633C003C003E2D +S315E065A5E0007E003C00003C00007E000000000000AC +S315E065A5F0000000007A7A3D00007E184C4C660C7CC3 +S315E065A6007A7C7C5F6666667C1E7E7E381E7E6E3CE8 +S315E065A6103C7E6C1CFE367E6E3E7CD67E387E7E7ECD +S315E065A6206E1C0000000C0C0CCC180C0C66068CBF7E +S315E065A630B3BF9EB39E0060060E1800006C3800003E +S315E065A640004400FE00183C381C38FEC6013C000E8E +S315E065A650404005A0C6060606C6C0C0C6C6C60040DA +S315E065A66000000628001866667E666C180C3066186B +S315E065A670000000067E187E7E0C7E3C7E7E7E0000B7 +S315E065A6800E00E07E7C3C7E7E7C7E7E7E667E06CCB3 +S315E065A69060C6667E7E7EFC7E7E6666C666667E1E77 +S315E065A6A0607838003800600006001E0060180CC04F +S315E065A6B038000000000000001800000000000018E7 +S315E065A6C0183000003C7E7E187E7E667E7E66186368 +S315E065A6D0667E7E7E7E7E7E663E66637E007E007CF0 +S315E065A6E0007E007E00007E00007E00000000000027 +S315E065A6F0000000004C4C7E0000FE000000001810D3 +S315E065A700CAC6C6550066767C1E7E7E381E7E6E3C63 +S315E065A7103E7E6E1CFE367E6E3E7ED67E387E3E7E06 +S315E065A7206E36000000181818CC301818660C9EBFF7 +S315E065A730B3BFBFB3BF18700E1918000044300000F0 +S315E065A74000080000003C242C34BAFED60366180FD8 +S315E065A750704005A0C6060606C6C0C0C6C6C6007079 +S315E065A760000007D0001866FF606C38181C383C1886 +S315E065A770000000066638660C1C607006666618188A +S315E065A7801C7E7066E67E66666E606060661806D8F4 +S315E065A79060EE66666666CC60186666C666660C18C2 +S315E065A7A0601838001C00600006001800600000C0F4 +S315E065A7B01800000000000000180000000000001806 +S315E065A7C0183000007E66603C600C6666186C3C7707 +S315E065A7D066006666666018667F666B66006600603C +S315E065A7E00018006600006600001800000000000022 +S315E065A7F0000000000000660100D83C3C3C0000100B +S315E065A800CA828251E666760C060C06180466660C04 +S315E065A81006063E0CFE3666663E06D666180636665D +S315E065A8206632006600000000000000000000BFB070 +S315E065A830B38CB3B3B318381C1B1818026C30001E02 +S315E065A84000100000006624E66792FC9203C33C09AB +S315E065A85040400DB0C6060606C6C0C0C6C6C67C4044 +S315E065A86000002E10001866FF600C381818183C18A2 +S315E065A8700000000C6638660C1C6060066666181893 +S315E065A880387E3866C266666666606060661806D853 +S315E065A89060EE76666666CC60186666C63C660C18DB +S315E065A8A030186C000C3C7C3C3E3C183E7C380CCC4D +S315E065A8B0186C3C3C7C3E7C3E7E6666C666667E186B +S315E065A8C0183062186666603C600C6666186C3C7F9C +S315E065A8D076006666663018666B3C6B663E66663025 +S315E065A8E03E30FC663066066666183C7E3C3F3E7EDC +S315E065A8F0662E66633C3C663D7ED87E7E7E000010B5 +S315E065A900CABABA0066663E0C060C66180C66660C34 +S315E065A9100606360CC63666360606D6661806366604 +S315E065A920761810F7633E3EFC30303C66666333303E +S315E065A930330C333333181C381B18183E3830001087 +S315E065A94000203C0000C32483C1D6FCBA06913C08CE +S315E065A95040380DB082023A3ABAB8B882BABA7E7869 +S315E065A960000039E0001866667C1870181818FF7ED6 +S315E065A970007E000C66180C183C7C600C3C7E181852 +S315E065A98070001C0CDA667E60667C7C6E7E1806F06E +S315E065A99060FE76666666CC70186666C63C3C1818D8 +S315E065A9A030186C00043E7E7C7E7E7E7E7E380CDCD6 +S315E065A9B018FE7E7E7E7E7E7E7E6666C666667E38B0 +S315E065A9C01838F218667C60667C187E661878667F4D +S315E065A9D0760066666618183C6B3C6B667E6666183E +S315E065A9E07E60FE763066066666307E7E7E7F7E7E3D +S315E065A9F0666F66633E7E6E7EFFDE666666000010A7 +S315E065AA00CAA2AA0066663C0C0E0C66180C66660061 +S315E065AA100606660CC636763E0606F666180636768B +S315E065AA203E3C1099637E7EFE30307E666663333EDD +S315E065AA303F0C3333337E0E701818007C00301810E7 +S315E065AA40367C3C000081E783C1C6F83806913C0850 +S315E065AA5000001DB800007C7C7C7C7C007C7C06006C +S315E065AA6000003800001866663E1870181818FF7EF4 +S315E065AA70007E00186E180C183C7E7C0C3C3E18185F +S315E065AA80E0000E0CD6667C60667C7C6E7E1806F011 +S315E065AA9060D67E666666FC38186666D6183C181813 +S315E065AAA01818C6000006666066667E6666180CF867 +S315E065AAB018FE666666666660186666D63C660CF07F +S315E065AAC0181EBE3C667E60667C187E7E1878666B70 +S315E065AAD07E3C6666660C183C6B187F66667C3C3C1D +S315E065AAE06060663E306C3E666630666666666018D1 +S315E065AAF0666B666306666E66DBDE66666600001036 +S315E065AB00CAA2B20066663C0C1E0C66180C66660048 +S315E065AB10060E660CC63676183606F6661806367678 +S315E065AB200E6638996B666066303066666663333E98 +S315E065AB303F0C331E337E1C3818187E40003018D023 +S315E065AB4036003C0000E781E667D6FABA8C9D3C782C +S315E065AB501E1C399C8202B83A3A3ABA02BA3A060EED +S315E065AB6007F00000001800FF0630DE0018183C18F4 +S315E065AB70000000187618180C6C067E18660600004C +S315E065AB80707E1C18D67E666066606066661806D856 +S315E065AB9060D67E667E66F81C186666D61818301826 +S315E065ABA01818C600003E66606666186666180CF09C +S315E065ABB018D6666666666070186666D63C6618F090 +S315E065ABC0181E9C247E6660666030667E186C666BD1 +S315E065ABD07E3C66667E0C18186B183E66667C3C663F +S315E065ABE07C60665E30787E66661C6666666660185C +S315E065ABF0666B3C6B3E66766EDBD87E7E66000000F5 +S315E065AC007AA2BA0066666E0C360C66180C66660045 +S315E065AC10061C660CC636061C3606C6661806360675 +S315E065AC20066638EF6B667C6630306666666B3F3027 +S315E065AC30330C331E3F18381C18187E0000FE00D012 +S315E065AC4000003C000024C32C3492F2928C813CF8DF +S315E065AC501012799EC606C0060606C606C6067E10AC +S315E065AC600FF80000001800FF0636DE0018183C18DD +S315E065AC70000000306618180C6C066618660600005B +S315E065AC80387E3818DC7E666066606066661806D86B +S315E065AC9060C66E667C66D80E186666FE3C18301829 +S315E065ACA00C180000007E6660667E186666180CF80D +S315E065ACB018D666666666603C186666FE1866183877 +S315E065ACC0183800667E66606660306666186C666330 +S315E065ACD06E0066667C1818186B3C1C7E66661866A0 +S315E065ACE07C30666630786666661C6666666660189B +S315E065ACF0666B3C6B7E66767EDFD87E7E66000000A0 +S315E065AD000ABAAA0066666E0C360C66180C666600AC +S315E065AD1006306E0CC6367E0E3606C66618063606EE +S315E065AD20063C6C666B667C6630306666666B3F30A5 +S315E065AD30330C330C1E18700E1818000200300050E4 +S315E065AD4000003C00002466381CBAF6D6D8C37E708F +S315E065AD501C1C718EC606C0060606C606C606660CC9 +S315E065AD601FEC0000000000667E66CC0018186618C9 +S315E065AD7018001830661830667E066630660618185E +S315E065AD801C007018C066666666606066661866CCA6 +S315E065AD9060C66E666066CC0618663CFE3C18601852 +S315E065ADA00C180000006666606660186666180CD862 +S315E065ADB018D666666666600E18663CFE3C663018B2 +S315E065ADC01830004266666066606066661866666349 +S315E065ADD06E006666603018187F3C083C66663C66C1 +S315E065ADE060186666306C66663C30666666666018F0 +S315E065ADF0666B186B66666676D8D86666660000002A +S315E065AE000A8282006666667E360C66180C667E0089 +S315E065AE103E306E7CFE7E7E7E3606FEE618063E0695 +S315E065AE2006186C006B66606630306666666B333056 +S315E065AE30330C330C0018600618D8183E00300070E5 +S315E065AE400000000000243C300C38E6C65866FF007A +S315E065AE501014718EC606C0060606C606C6066602E6 +S315E065AE6018040000000000667C66CC001C386600AD +S315E065AE7018001860661830667E666630660E1818C5 +S315E065AE800E00E000E26666666E606066661866CC31 +S315E065AE9060C66666606ACC0618663CEE661860183B +S315E065AEA006180000006666606660187E66180CCC5B +S315E065AEB018C666666666600618663CEE3C7E3018C1 +S315E065AEC0183000C3666660666060666618666663C7 +S315E065AED066006666606018183E66080066666666C1 +S315E065AEE0600C6666326C66663C30666666667C1ADB +S315E065AEF0666B3C6B66666666D8D866666600000015 +S315E065AF000AC6C60066F6627E360C661804667E007C +S315E065AF103C306E7C7C7E7E7E3606FEE618063E0618 +S315E065AF20064CC6006B66606632326666666B3330C3 +S315E065AF30330C330C0000000018D8187C0030002074 +S315E065AF4000000000003C1800007CEEEE703C10004E +S315E065AF5010126186BA02B83A023ABA02BA3A7E1C69 +S315E065AF6018040000001800001800FE000C30000010 +S315E065AF70180018607E7E7E7E0C7E7E307E3C1818DC +S315E065AF80000000187E667E7E7C7E607E667E7EC67E +S315E065AF907EC6667E607CC67E187E18C666187E1E90 +S315E065AFA0067800FE007E7E7E7E7E183E663C0CCE92 +S315E065AFB03CC6667E7E7E607E1E7E18C6663E7E18D2 +S315E065AFC0183000FF667E607E7E7E667E7E636663A3 +S315E065AFD0667E7E66607E18180866087E7F7E667E7B +S315E065AFE07E06667E3E66667E181C7E667E7E3E1EB6 +S315E065AFF07E7F3C3E7E7E7E7EFFFE66667E00000050 +S315E065B0000A7C7C00F6F60000000000000000000007 +S315E065B0100000000000000000300000001806000691 +S315E065B020066CC6007F7F7E663E3E7E7E7E7F333FD4 +S315E065B030333F3F0C3F3E7E7E18980040007F000020 +S315E065B040000000000000000000000000300038004D +S315E065B050000041827C007C7C007C7C007C7C3C0042 +S315E065B0601004000000180000180076000660000075 +S315E065B070180018603C7E7E3C0C3C3C303C38181829 +S315E065B080000000183C667C3C787E603C667E3CC68B +S315E065B0907EC6663C6036C67C183C188266187E1E9F +S315E065B0A0067800FE003E7C3E3E3E1806663C0CC6D3 +S315E065B0B03CC6663C7C3E607C0E3E188266067E1823 +S315E065B0C018300000667C607E7E7E663C7E636663E5 +S315E065B0D0667E3C66607E18180866087E3F7C663C40 +S315E065B0E03E06663C1C66667F181E3C667C3C060C26 +S315E065B0F03C3E661C3E3CBCBC7F7E66663C00000012 +S315E065B1000A0000000E0E00000000000000000000CE +S315E065B1100000000000000000300000001806000690 +S315E065B120063800003E3F3E661C1C3C3C3C3E333FD9 +S315E065B130333F1E0C3F3E7E7E1870000000FF000028 +S315E065B1400000000000000000000000002000100084 +S315E065B15000000000000000000000000000000000A4 +S315E065B1601E3C00000000000000000000000000003A +S315E065B1703000000000000000000000000000003024 +S315E065B1800000000000000000000000000000000074 +S315E065B1900000000000000000000000000000000064 +S315E065B1A000000000000000000000007E00007C005A +S315E065B1B0000000006006000000000000007E000E52 +S315E065B1C018E000000000000000000000000000003C +S315E065B1D000000000000000000000000000607E0046 +S315E065B1E0003E0000000000600006000060001E00F2 +S315E065B1F0000866080000808000000000000000008E +S315E065B200000000003C7C000000000000000000003B +S315E065B21000000000000000003000000000000000B3 +S315E065B22000000000000000000000000000000000D3 +S315E065B23000000000000000001800000000000000AB +S315E065B24000000000000000000000000000000000B3 +S315E065B25000000000000000000000000000000000A3 +S315E065B2601754000000000000000000000000000028 +S315E065B2702000000000000000000000000000002043 +S315E065B2800000000000000000000000000000000073 +S315E065B2900000000000000000000000000000000063 +S315E065B2A000000000000000000000007C000078005F +S315E065B2B0000000006006000000000000007C000061 +S315E065B2C00000000000000000000000000000000033 +S315E065B2D000000000000000000000000000603C0087 +S315E065B2E0003C0000000000C00006000060001C0095 +S315E065B2F0000866080000000000000000000000008D +S315E065B3000000000038780000000000000000000042 +S315E065B31000000000000000000000000000000000E2 +S315E065B32000000000000000000000000000000000D2 +S315E065B33000000000000000001800000000000000AA +S315E065B34000000000000100083678362052757373F8 +S315E065B35069616E20666F6E74000000000000000093 +S315E065B3600000000000000000000000FF000400048B +S315E065B370000300010001000600060000000300016D +S315E065B38000015555AAAA000D0000000000E5B39E30 +S315E065B39000E5B5A000C00006000000000000000062 +S315E065B3A00006000C00120018001E0024002A00307A +S315E065B3B00036003C00420048004E0054005A0060EA +S315E065B3C00066006C00720078007E0084008A00905A +S315E065B3D00096009C00A200A800AE00B400BA00C0CA +S315E065B3E000C600CC00D200D800DE00E400EA00F03A +S315E065B3F000F600FC01020108010E0114011A0120A4 +S315E065B4000126012C01320138013E0144014A015011 +S315E065B4100156015C01620168016E0174017A018081 +S315E065B4200186018C01920198019E01A401AA01B0F1 +S315E065B43001B601BC01C201C801CE01D401DA01E061 +S315E065B44001E601EC01F201F801FE0204020A0210CE +S315E065B4500216021C02220228022E0234023A024039 +S315E065B4600246024C02520258025E0264026A0270A9 +S315E065B4700276027C02820288028E0294029A02A019 +S315E065B48002A602AC02B202B802BE02C402CA02D089 +S315E065B49002D602DC02E202E802EE02F402FA0300F8 +S315E065B4A00306030C03120318031E0324032A033061 +S315E065B4B00336033C03420348034E0354035A0360D1 +S315E065B4C00366036C03720378037E0384038A039041 +S315E065B4D00396039C03A203A803AE03B403BA03C0B1 +S315E065B4E003C603CC03D203D803DE03E403EA03F021 +S315E065B4F003F603FC04020408040E0414041A04208B +S315E065B5000426042C04320438043E0444044A0450F8 +S315E065B5100456045C04620468046E0474047A048068 +S315E065B5200486048C04920498049E04A404AA04B0D8 +S315E065B53004B604BC04C204C804CE04D404DA04E048 +S315E065B54004E604EC04F204F804FE0504050A0510B5 +S315E065B5500516051C05220528052E0534053A054020 +S315E065B5600546054C05520558055E0564056A057090 +S315E065B5700576057C05820588058E0594059A05A000 +S315E065B58005A605AC05B205B805BE05C405CA05D070 +S315E065B59005D605DC05E205E805EE05F405FA0600DF +S315E065B5A000820421CFB60DE304E38150F987BCC37D +S315E065B5B0CC3E73E0381F844200CD947B260C318403 +S315E065B5C088000006704F3C33C73E71C30C18061CF5 +S315E065B5D071CF1EF3EF9E89C09242289CF1CF1EFA89 +S315E065B5E028A28A2F9EC1E2006008000801808001DA +S315E065B5F02060000000000020000000000E31C4005D +S315E065B6007941085102002144142105082007885133 +S315E065B61002105145041A2F06104104F1E71C60003B +S315E065B62030C0C36C68034201E41A69410869E7BD45 +S315E065B63073EF3E3BEB7C8AA48E8A273EF1EFA2FA56 +S315E065B64028A28A2421C1C99E00CE0070001C01C0D3 +S315E065B650000000000000002000000000000000007F +S315E065B66001C20662AF2A1A1786820150C88084C273 +S315E065B6700C025367203F42F400CDBEA34D0C60C378 +S315E065B6800800000C98C0825208028A230C31E32632 +S315E065B6908A28A08A0820888094436CA28A28A022FA +S315E065B6A028A252211860670061CF1C79C21EB1815C +S315E065B6B024214F1CF1E70E7228A24A278C30CE88EA +S315E065B6C080021400801E500200508000FBCA140000 +S315E065B6D0850800000E236D882082080000A2000020 +S315E065B6E030C006F6B1E48C72C22CB0021CEB38D7DA +S315E065B6F08A08A04A0FC29A6512DA28A28A0222A9A6 +S315E065B70048A28A2421402A72730A3E09CB428809F7 +S315E065B7100E52273CF1CFA47249128A2421E1C99ED3 +S315E065B72003623BDF6E1CB29784DEE150C88FBEC311 +S315E065B730EF8E7320B760629400C91470861860C78F +S315E065B740BE01E018A8471C93CF0471E00060018C48 +S315E065B750BBEF208BCF26F8809842AAA2F22F1C2257 +S315E065B76028AA214218306D803028A08BE7A2C881CF +S315E065B7703823E8A28A24982228AA322118306B9CBD +S315E065B78082271C71C72071C71821871C80EF9C71C1 +S315E065B790C8A289C89871CF1E718722F12FA261E789 +S315E065B7A0B6CCCD9B732596BAE71C700008EADB55E7 +S315E065B7B0FBCF204BC79CAAA612ABE8A2F2021EA855 +S315E065B7C0889EAAA7B979EE5E8BCF207BE78C8A2E19 +S315E065B7D012FA28A28A0224A98912AAA73938AE7272 +S315E065B7E0008D8662ACAAE2DFDC93A358D9CC06D895 +S315E065B7F0698CDBEFA440216800C03E296E8060C39A +S315E065B80008300330C84802F8288888230C31E30CF1 +S315E065B810B228A08A08228888944229A2822A02222E +S315E065B820253650841818600003E8A08A021E8881D0 +S315E065B8302422A8A28A240622252A31E20C30C132C6 +S315E065B840822F820820A0FBEF882088A2F38A228ACD +S315E065B85028A27A288E208D880888A289A79C61000F +S315E065B8608B14C6F609E69AA2C8A28800086AF8C0EB +S315E065B8708A28A04A0B42CB25128A28A2820202F9BF +S315E065B8804882AAA465442A4AFA29208A0FC28A29E7 +S315E065B89012ABE8A28A021CA9890EAAA4A5246E5E4B +S315E065B8A000870421C9B642103C18E75CD9CC06F896 +S315E065B8B06D8CD8673C71EEF0000014F26D00318452 +S315E065B8C088300320704FBC13C70871C3041806009F +S315E065B8D0822F1EF3E81E89C7127A289C81C9BC218E +S315E065B8E0E222888F9E09E00001EF1C79C20289C1D8 +S315E065B8F02272289CF1E41C11E23648278E31C03E5F +S315E065B9007A283EFBEF9E820808208FBE81EBA28AED +S315E065B91028A20A288479CF08F888A2896000C90038 +S315E065B920863CC36CFB248C79EFBE8800082B1A40F5 +S315E065B9308BCF20FFEB7C8A24B28A272281E21C2208 +S315E065B9402FC2FBF7B979C9B289CF2071CB5C75D8BF +S315E065B950B28A2722F1C204724782FBF73939C9B246 +S315E065B96000820000000001E31810B64CF9CFBE1B5B +S315E065B970EF8CF8600758AC0000C000200680000038 +S315E065B9800060000000000000000000000800000CF8 +S315E065B9907800000000000000000000000060000084 +S315E065B9A0000000000000003E00000000003C000EC4 +S315E065B9B00000000080200000000003C000300000A9 +S315E065B9C0C1E71E79E7B871C71C71C8A2F8001C719A +S315E065B9D0C79EF1C780008C3079C71E892FBE70007F +S315E065B9E00F04C000780B100008A270000029E780FC +S315E065B9F00000008400000000000000000000000078 +S315E065BA00004000100000000000000000000000009B +S315E065BA100000000080003820008000100000000073 +S315E065BA2000010009387838205275737369616E20B4 +S315E065BA30666F6E7400000000000000000000000004 +S315E065BA4000000000000000FF00060006000400019B +S315E065BA5000010008000800010003000100015555DA +S315E065BA605555000D0000000000E5BA7A00E5BC7C9E +S315E065BA70010000080000000000000000000800105A +S315E065BA8000180020002800300038004000480050CB +S315E065BA9000580060006800700078008000880090BB +S315E065BAA0009800A000A800B000B800C000C800D0AB +S315E065BAB000D800E000E800F000F801000108011098 +S315E065BAC00118012001280130013801400148015083 +S315E065BAD00158016001680170017801800188019073 +S315E065BAE0019801A001A801B001B801C001C801D063 +S315E065BAF001D801E001E801F001F802000208021050 +S315E065BB00021802200228023002380240024802503A +S315E065BB10025802600268027002780280028802902A +S315E065BB20029802A002A802B002B802C002C802D01A +S315E065BB3002D802E002E802F002F803000308031007 +S315E065BB4003180320032803300338034003480350F2 +S315E065BB5003580360036803700378038003880390E2 +S315E065BB60039803A003A803B003B803C003C803D0D2 +S315E065BB7003D803E003E803F003F8040004080410BF +S315E065BB8004180420042804300438044004480450AA +S315E065BB90045804600468047004780480048804909A +S315E065BBA0049804A004A804B004B804C004C804D08A +S315E065BBB004D804E004E804F004F805000508051077 +S315E065BBC00518052005280530053805400548055062 +S315E065BBD00558056005680570057805800588059052 +S315E065BBE0059805A005A805B005B805C005C805D042 +S315E065BBF005D805E005E805F005F80600060806102F +S315E065BC000618062006280630063806400648065019 +S315E065BC100658066006680670067806800688069009 +S315E065BC20069806A006A806B006B806C006C806D0F9 +S315E065BC3006D806E006E806F006F8070007080710E6 +S315E065BC4007180720072807300738074007480750D1 +S315E065BC5007580760076807700778078007880790C1 +S315E065BC60079807A007A807B007B807C007C807D0B1 +S315E065BC7007D807E007E807F007F8080000183C185A +S315E065BC80183CFFE7017E1818F0F005A07C067C7C81 +S315E065BC90C67C7C7C7C7C007807F011040018660025 +S315E065BCA0180038180C300000000000067C183C3C93 +S315E065BCB01C7E1C7E3C3C00000600603C7C18FC3C1F +S315E065BCC0F8FEFE3C663C1EE6F0C6663CFC3CFC3C8B +S315E065BCD07E6666C6C666FE1EC07810006000E00039 +S315E065BCE01C001C00E01806E03800000000000000BB +S315E065BCF0100000000000000E0070760078001C7EE3 +S315E065BD00CCE030007ECCE0CC7CE0C6301C003E78F2 +S315E065BD100000780000C3CC1838CCF80E1C3800005B +S315E065BD2000FC3C38300000C3C31800002200DB1875 +S315E065BD30181836000036360036361800187EFC7E52 +S315E065BD403CFEDB3C665CE61FC6663C7EFC3C7E668E +S315E065BD5018C66666D6D6E0C3603CCE3F00020000F4 +S315E065BD6000000000001C000000000000000000006C +S315E065BD70000000000000000000000000003C241CFC +S315E065BD803899FFC303C33C1CC0C005A0C6060606BA +S315E065BD90C6C0C006C6C600600FF80B28003C666CD8 +S315E065BDA03EC66C18181866180000000CC63866663C +S315E065BDB03C603066666618180C003066CE3C666692 +S315E065BDC06C62626666180C6660EE766666666666E0 +S315E065BDD05A6666C6C666C6186018380060006000B2 +S315E065BDE00C003600600000601800000000000000EE +S315E065BDF030000000000000181818DC18CCCC00C331 +S315E065BE0000003000C3000000C600383000006CCC8E +S315E065BE10CCE0CCE0CC1800186CCCCC1B00001C1C2C +S315E065BE20F8006C6C000000C6C61833CC880077183D +S315E065BE301818360000363600363618003C606662FD +S315E065BE406C62DB666666663EEE66666666665A667C +S315E065BE507EC66666D6D660C36066DB66003E000073 +S315E065BE600000000000000000000000000000000087 +S315E065BE70180000000000000000000000006624F6DF +S315E065BE806FC3FE9906D33C16FEDF05A0C606060619 +S315E065BE90C6C0C006C6C63C781FEC0DD8003C66FE3B +S315E065BEA060CC3830300C3C1800000018CE18060619 +S315E065BEB06C7C600666661818187E1806DE6666602F +S315E065BEC06668686066180C6C60FE7E6666666660C7 +S315E065BED0186666C66C668C1830186C003078603CFF +S315E065BEE00C3C30766C38066618CC7C3CDC76DC3E01 +S315E065BEF07CCC66C6C6667E1818180018C000783C05 +S315E065BF00787878783C78787038706C00FC7FCC000F +S315E065BF1000000000003CCC7E6478CC1878700000A8 +S315E065BF2000CC6C6C300000CCCC006666223EDB183B +S315E065BF3018F83600F8F636FEF636F800666066609E +S315E065BF406C687E066E6E6C66FE666666666018662C +S315E065BF50DB6C6666D6D660C36006DB6678607C3E7B +S315E065BF601E3CDB7CCCCC661ECC663C7E7C3C7E6631 +S315E065BF707EC66666D6D6E0C6607CCE3E00C3E783FF +S315E065BF80C1E7FC3C8CD33C10D8DB0DB000007C7C73 +S315E065BF907C7C7C007C7C0660180406280018006CB6 +S315E065BFA03C187600300CFF7E007E0030DE181C1CE7 +S315E065BFB0CC067C0C3C3E000030000C0CDE667C60FA +S315E065BFC0667878607E180C7860D67E667C667C3CA2 +S315E065BFD0186666D6383C18181818C600000C7C66D4 +S315E065BFE07C6678CC7618066C18FE666666CC7660F6 +S315E065BFF030CC66D66C664C70180E0034CCCCCC066C +S315E065C0000C0C0CC066CCCC301830C678660CFE7865 +S315E065C0107878CCCCCC66CCC0F0FCFA3C0C3078CCED +S315E065C020F8EC3E3860FCFCDEDB18CC338866EE184F +S315E065C030181836001806360606361800667C7C60E3 +S315E065C0406C787E1C7E7E7866D67E66667C60183EFB +S315E065C050DB38667EDADA7CFB7C1EFB3E0C7C663082 +S315E065C0603666DB06CCCC6C36FE6666666666186654 +S315E065C070DB6C6666D6D660C66006DB6600E7C383BC +S315E065C080C1C3F999D8DB7E10DEFF0DB0C606C006E2 +S315E065C0900606C606C6067E7E180407D00018006C3E +S315E065C0A00630DC00300C3C1800000060F6183006FF +S315E065C0B0FE0666186606000018001818DE7E6660DD +S315E065C0C06668686E6618CC6C62C66E66606E6C068F +S315E065C0D0186666FE381832180C180000007C666033 +S315E065C0E0CC7E30CC6618067818FE666666CC663C0D +S315E065C0F030CC66FE386618180018003478CCFC3EFD +S315E065C1007C7C7C707EFCFC301830FECC787FCCCCB9 +S315E065C110CCCCCCCCCC66CCC06030C6187C30CCCC34 +S315E065C120CCFC0000C0C00C3337186666223EDB18CF +S315E065C130F8F8F6FEF8F636F6FEFEF8F87E66666020 +S315E065C1406C68DB0676766C66C6666666606018065B +S315E065C1507E386606DADA66DF6606DB367C667C306E +S315E065C160367E7E1CCCCC7836FE7E66666660186664 +S315E065C170DB38667EDADA7CFA7C3EF33E002466F6E8 +S315E065C1806F99F3C370C31070181E1998C606C0067A +S315E065C1900606C606C606661810042E10000000FEE2 +S315E065C1A07C66CC0018186618300018C0E618666616 +S315E065C1B00C666618660C18180C7E3000C0666666F6 +S315E065C1C06C6260666618CC6666C66666603C666680 +S315E065C1D018663CEE6C1866180618000000CC6666B4 +S315E065C1E0CC60307C6618666C18D666667C7C6006C4 +S315E065C1F034CC3CFE6C3E32181818006218CCC0662A +S315E065C200CCCCCC7860C0C0301830C6FC60CCCCCC29 +S315E065C210CCCCCCCC7C3CCC78E6FCCF18CC30CCCC4A +S315E065C220CCDC7E7CCCC00C666F1833CC8836771850 +S315E065C23018183636183636360000001866666660B3 +S315E065C2406C62DB6666666666C66666666066180620 +S315E065C250186C6606DADA66CF6666DB66CC666630E5 +S315E065C2603660DB06CCCC6C36D66666666666183EA8 +S315E065C270DB6C6606DADA66CE6606DB3600243C1CDF +S315E065C280383CE7E720C338F0181B799E7C067C7C52 +S315E065C290067C7C067C7C3C1E1E3C39E00018006C06 +S315E065C2A018C676000C300000300018807C7E7E3C37 +S315E065C2B01E3C3C183C381818060060187866FC3C4D +S315E065C2C0F8FEF03E663C78E6FEC6663CF00EE63C79 +S315E065C2D03C7E18C6C63CFE1E027800FE0076DC3C57 +S315E065C2E0763C780CE63C66E63CC6663C600CF07CE3 +S315E065C2F01876186CC6067E0E1870007E0C7E783F42 +S315E065C3007E7E7E0C3C7878783C78C6CCFC7FCE78B1 +S315E065C31078787E7E0C187818FC30C6D87E78787E7C +S315E065C320CCCC0000780000CCCF1800002266DB1884 +S315E065C330181836361836363600000018667CFC6006 +S315E065C340FFFEDB3C6666E6E6C6663C66F03C3C7C44 +S315E065C3503CC67F06FEFF7CFB7C3CCE67763C7C304C +S315E065C3607F3CDB7C76766676C6663C667C3C180604 +S315E065C3707EC67F06FEFF7CFA7C7CCE66003C18189E +S315E065C38018000000007E10600000718E000000005D +S315E065C39000000000000000001754380000000000AF +S315E065C3A000000000000000006000000000000000E2 +S315E065C3B00000000000000030000000000000000002 +S315E065C3C00000000000000000000000000000000022 +S315E065C3D00000000000000000000000000000000012 +S315E065C3E0000000F800003C0000000000F01E0000C0 +S315E065C3F000000000007C00001800000078000000E6 +S315E065C40000000038000000000000000000000000A9 +S315E065C41000000000F80000180030C770000000005A +S315E065C420000000000000000F030000008800EE1821 +S315E065C4301818363618363636000000180000000043 +S315E065C440C3000000000000000000000000000000DE +S315E065C450000003000003000000000000000000008B +S315E065C4606300000000000000000000006000007C42 +S315E065C4701800030000030000000000000001000A48 +S315E065C48038783136205275737369616E20666F6EE2 +S315E065C49074000000000000000000000000000000DD +S315E065C4A0000000FF000D000B000800020002000816 +S315E065C4B00008000100070001000155555555000DBE +S315E065C4C00000000000E5C4D600E5C6D8010000100E +S315E065C4D000000000000000000008001000180020C1 +S315E065C4E000280030003800400048005000580060E1 +S315E065C4F0006800700078008000880090009800A0D1 +S315E065C50000A800B000B800C000C800D000D800E0C0 +S315E065C51000E800F000F801000108011001180120AB +S315E065C5200128013001380140014801500158016098 +S315E065C530016801700178018001880190019801A088 +S315E065C54001A801B001B801C001C801D001D801E078 +S315E065C55001E801F001F80200020802100218022063 +S315E065C5600228023002380240024802500258026050 +S315E065C570026802700278028002880290029802A040 +S315E065C58002A802B002B802C002C802D002D802E030 +S315E065C59002E802F002F8030003080310031803201B +S315E065C5A00328033003380340034803500358036008 +S315E065C5B0036803700378038003880390039803A0F8 +S315E065C5C003A803B003B803C003C803D003D803E0E8 +S315E065C5D003E803F003F804000408041004180420D3 +S315E065C5E004280430043804400448045004580460C0 +S315E065C5F0046804700478048004880490049804A0B0 +S315E065C60004A804B004B804C004C804D004D804E09F +S315E065C61004E804F004F8050005080510051805208A +S315E065C6200528053005380540054805500558056077 +S315E065C630056805700578058005880590059805A067 +S315E065C64005A805B005B805C005C805D005D805E057 +S315E065C65005E805F005F80600060806100618062042 +S315E065C660062806300638064006480650065806602F +S315E065C670066806700678068006880690069806A01F +S315E065C68006A806B006B806C006C806D006D806E00F +S315E065C69006E806F006F807000708071007180720FA +S315E065C6A007280730073807400748075007580760E7 +S315E065C6B0076807700778078007880790079807A0D7 +S315E065C6C007A807B007B807C007C807D007D807E0C7 +S315E065C6D007E807F007F80800000000000000000022 +S315E065C6E000000000000000000000000000000000FF +S315E065C6F0000000000000110400000000180038008A +S315E065C70000000000000000000000000000000000DE +S315E065C71000000000000000000000000000000000CE +S315E065C72000000000000000000000000000000000BE +S315E065C730000000000000000040000000000000006E +S315E065C740000000000000000000000000000000009E +S315E065C750000000000000000000000000000000008E +S315E065C760000000000000000000000000000000007E +S315E065C7700000000000000000C0FF0303FFFFC000EB +S315E065C7800000000000000000660000000000603266 +S315E065C79032000000000000F100000000000000002B +S315E065C7A000660000000000000000000000000000D8 +S315E065C7B0000000000000000000000000000000002E +S315E065C7C0000000000000000000000000000000001E +S315E065C7D0000000000000000000000000000000000E +S315E065C7E000000000000005A07C007C7C007C7C7C71 +S315E065C7F07C7C000000000B280000000018007C002F +S315E065C80000000000000000000000000000000000DD +S315E065C81000000000000000000000000000000000CD +S315E065C82000000000000000000000000000000000BD +S315E065C830000000000000100060000000000000003D +S315E065C840000000000000000000000000000000009D +S315E065C8500000000E18E00000000000000000006027 +S315E065C860180060001860661800003E1800601860E1 +S315E065C870006666000E000000C0FF0303FFFFC00010 +S315E065C8800000006060000000660000603C00307AF1 +S315E065C8907A6606100000005B0000000000000000FC +S315E065C8A0003C000000000000000000000000000001 +S315E065C8B0000000000000000000000000000000002D +S315E065C8C0000000000000000000000000000000001D +S315E065C8D00000000000000000000000300C7CFEEE69 +S315E065C8E001000008783805A0BA023A3A82B8B8BAC3 +S315E065C8F0BABA007800000DD8001866663E666C1810 +S315E065C90006606600000000063C183C7E0C7E1C7ED8 +S315E065C9103C3C00000000003C38187C3C787E7E3E5E +S315E065C920667E06CC60C6663C7C3CF83E7E6666C640 +S315E065C93066667E1E607810007000600006000E0078 +S315E065C94060180CC038000000000000000000000020 +S315E065C95000000018183000000000000C00180030D8 +S315E065C9603C6630663C30663C66007E3C66303C3014 +S315E065C970666666181E66180EC000030303C0C0002F +S315E065C980C30000202000000000000020669F184CD0 +S315E065C9904C660C7C7A7C7C5F187E7C7E3E7E993C20 +S315E065C9A06600663E63663C7E7C3C7EC3186666666C +S315E065C9B0D6D6F0C660784E3E000000000000000066 +S315E065C9C000660000000000000000000000000000B6 +S315E065C9D0000000000000000000183C381C38FEC668 +S315E065C9E0013C000E404005A0C6060606C6C0C0C6A8 +S315E065C9F0C6C6004000000628001866667E666C18A6 +S315E065CA000C306618000000067E187E7E0C7E3C7E45 +S315E065CA107E7E00000E00E07E7C3C7E7E7C7E7E7EB9 +S315E065CA20667E06CC60C6667E7E7EFC7E7E6666C675 +S315E065CA3066667E1E607838003800600006001E0077 +S315E065CA4060180CC038000000000000001800000007 +S315E065CA5000000018183000000000101C003C0018AB +S315E065CA6066661866661818666600F8666618661875 +S315E065CA706600001838663C1EC000030303C0C000AC +S315E065CA80C3000020201800007E000020629F0000A1 +S315E065CA9000001810CAC6C6553C7E7E7E3E7E5A7E2E +S315E065CAA06666663E63667E7E7E7E7EC3186666667F +S315E065CAB0D6D6F0C6607C5F7E00020000000000000E +S315E065CAC0003C0000000000000000000000000000DF +S315E065CAD00000000000000000003C242C34BAFED6BD +S315E065CAE00366180F704005A0C6060606C6C0C0C632 +S315E065CAF0C6C60070000007D0001866FF606C38187F +S315E065CB001C383C18000000066638660C1C6070062A +S315E065CB10666618181C7E7066E67E66666E606060A0 +S315E065CB20661806D860EE66666666CC60186666C6A2 +S315E065CB3066660C18601838001C0060000600180070 +S315E065CB40600000C01800000000000000180000004A +S315E065CB500000001818300000005A3C301818000034 +S315E065CB600000000000003C000000D8000000000066 +S315E065CB70003C663C30666618C000030303C0C0002F +S315E065CB80C3000023231800007E00002330983C3C58 +S315E065CB903C000010CA8282517E60666066605A66B5 +S315E065CBA06666666677666666666618663C66666641 +S315E065CBB0D6D6B0C6600E5B660006000000000000D3 +S315E065CBC0000000000000000000000000000000001A +S315E065CBD00000000000000000006624E66792FC9213 +S315E065CBE003C33C0940400DB0C6060606C6C0C0C6CE +S315E065CBF0C6C67C4000002E10001866FF600C38182B +S315E065CC0018183C180000000C6638660C1C60600657 +S315E065CC1066661818387E3866C266666666606060FF +S315E065CC20661806D860EE76666666CC60186666C691 +S315E065CC303C660C1830186C000C3C7C3C3E3C183E5F +S315E065CC407C380CCC186C3C3C7C3E7C3E7E6666C68D +S315E065CC5066667E1818306218005A7F66DB5A003CB5 +S315E065CC603C3C3C3838387E3C3C76D83C3C3C666659 +S315E065CC70667E667E30666618C000030303C0C00044 +S315E065CC80E700002626000000603E3C2618B87E7E5A +S315E065CC907E000010CABABA006660666066605A468B +S315E065CCA06E66666677666666666218667E666666FA +S315E065CCB0D6D630C660065B663C3C7C7E3C3C993CA1 +S315E065CCC06666663E63663C7E7C3C7E631866666643 +S315E065CCD0D6D6F0C660784E3E00C32483C1D6FCBA8C +S315E065CCE006913C0840380DB082023A3ABAB8B88245 +S315E065CCF0BABA7E78000039E0001866667C18701866 +S315E065CD001818FF7E007E000C66180C183C7C600CDB +S315E065CD103C7E181870001C0CDA667E60667C7C6E5C +S315E065CD207E1806F060FE76666666CC70186666C640 +S315E065CD303C3C181830186C00043E7E7C7E7E7E7E18 +S315E065CD407E380CDC18FE7E7E7E7E7E7E7E6666C6E0 +S315E065CD5066667E381838F218187E7F6EDBFF183EF9 +S315E065CD607E7E7E383838667E7E7FDE7E7E7E666651 +S315E065CD7066666666307E6618C000030303C0C0005B +S315E065CD806600002C2C181AB060667E2C3CBB666685 +S315E065CD9066000010CAA2AA00667C666066605A06EE +S315E065CDA06E6E6C667F6666666660183C5A3C66665D +S315E065CDB0D6D630C67C065B663E78667E7C7E5A7ED7 +S315E065CDC06666663E77667E7E7E7E7E6318666666A8 +S315E065CDD0D6D6F0C6607C5F660081E783C1C6F83863 +S315E065CDE006913C0800001DB800007C7C7C7C7C00DC +S315E065CDF07C7C060000003800001866663E187018F0 +S315E065CE001818FF7E007E00186E180C183C7E7C0CA8 +S315E065CE103C3E1818E0000E0CD6667C60667C7C6E3F +S315E065CE207E1806F060D67E666666FC38186666D657 +S315E065CE30183C18181818C6000006666066667E66B1 +S315E065CE4066180CF818FE666666666660186666D6E7 +S315E065CE503C660CF0181EBE3C183C783C7EFF180616 +S315E065CE606666661818186666661BDE6666666666D4 +S315E065CE7066666660303C7C7EC000030303C0C00026 +S315E065CE8066000018181836D87C66661866AB66665E +S315E065CE9066000010CAA2B200667E7C60667C7E0C87 +S315E065CEA07E6E78666B7E66667E60183C5A18667E30 +S315E065CEB0D6D63EE67E3E7B3E066066606C665A4644 +S315E065CEC0666666267F666666666218663C6666665A +S315E065CED0D6D6B0C6601E5B6600E781E667D6FABA67 +S315E065CEE08C9D3C781E1C399C8202B83A3A3ABA0265 +S315E065CEF0BA3A060E07F00000001800FF0630DE00BD +S315E065CF0018183C18000000187618180C6C067E1880 +S315E065CF1066060000707E1C18D67E66606660606692 +S315E065CF20661806D860D67E667E66F81C186666D68E +S315E065CF30181830181818C600003E666066661866EA +S315E065CF4066180CF018D6666666666070186666D60C +S315E065CF503C6618F0181E9C243C3C7C183CFF3C3E25 +S315E065CF606666661818187E66667BF8666666666641 +S315E065CF7066666660FE186618C000030303C0C000F7 +S315E065CF807E00003032186C6C7C3E663066AB7E7E29 +S315E065CF90660000007AA2BA007E667E60667C7E0CDC +S315E065CFA07E7E78666B7E66667C6018185A18663E85 +S315E065CFB0D6D63FF6663E7B3E3E7C7C604C665A0640 +S315E065CFC06E6E6C267F7E6666666018667E3C666615 +S315E065CFD0D6D63EE67C065B3E0024C32C3492F292BE +S315E065CFE08C813CF81012799EC606C0060606C60612 +S315E065CFF0C6067E100FF80000001800FF0636DE0054 +S315E065D00018183C18000000306618180C6C0666188F +S315E065D01066060000387E3818DC7E666066606066A7 +S315E065D020661806D860C66E667C66D80E186666FEB5 +S315E065D0303C1830180C180000007E6660667E18663F +S315E065D04066180CF818D666666666603C186666FE0F +S315E065D0501866183818380066183C7C18FFFF187E85 +S315E065D0607E7E7E1818187E7E7EFFF8666666666644 +S315E065D07066666666307E6618C000030303C0C00058 +S315E065D0803C7E7E6E6618D83660367E6E3CE87E7E81 +S315E065D090660000000ABAAA007E66666066605A06A1 +S315E065D0A076766C6663666666606018185A3C6606F0 +S315E065D0B0D6D633D666065B667E7E7C604C7E7E1C07 +S315E065D0C07E7E78666B7E66666660181C5A18667E36 +S315E065D0D0D6D63FF67E7E7B36002466381CBAF6D613 +S315E065D0E0D8C37E701C1C718EC606C0060606C606CB +S315E065D0F0C606660C1FEC0000000000667E66CC0086 +S315E065D1001818661818001830661830667E06663098 +S315E065D110660618181C007018C06666666660606606 +S315E065D120661866CC60C66E666066CC0618663CFEBA +S315E065D1303C1860180C180000006666606660186644 +S315E065D14066180CD818D666666666600E18663CFE86 +S315E065D1503C66301818300042183C3C3C7E7E1866CA +S315E065D160606060181818666060D8D8666666666638 +S315E065D1706666667E30186618C000030303C0C000A5 +S315E065D1803C7E7ED3CE186C6C606660D318E86666C6 +S315E065D190660000000A8282006666666066605A46D8 +S315E065D1A07676666663666666606218307E6666068D +S315E065D1B0D6D633D666065B66666666604C605A06A4 +S315E065D1C076766C66636666667E60181C5A3C663E75 +S315E065D1D0D6D633D666065B6600243C300C38E6C6A2 +S315E065D1E05866FF001014718EC606C0060606C606AA +S315E065D1F0C606660218040000000000667C66CC0080 +S315E065D2001C38660018001860661830667E666630FB +S315E065D210660E18180E00E000E26666666E60606689 +S315E065D220661866CC60C66666606ACC0618663CEECD +S315E065D2306618601806180000006666606660187E07 +S315E065D24066180CCC18C666666666600618663CEEB9 +S315E065D2503C7E3018183000C3183C383C1818186600 +S315E065D260606060181818666060D8D8666666666637 +S315E065D2707E66663C30187C18C000030303C0C000B8 +S315E065D2803C6006061A1836D8606662060CCB66669A +S315E065D290660000000AC6C6006666666066605A662F +S315E065D2A06666664663666666606618303C6666060A +S315E065D2B0D6D633D6660E5B66666666604C625A4659 +S315E065D2C066666666636666667C6218187E66660688 +S315E065D2D0D6D633D6661E5B66003C1800007CEEEE5D +S315E065D2E0703C100010126186BA02B83A023ABA0288 +S315E065D2F0BA3A7E1C18040000001800001800FE000B +S315E065D3000C300000180018607E7E7E7E0C7E7E30D6 +S315E065D3107E3C1818000000187E667E7E7C7E607E08 +S315E065D320667E7EC67EC6667E607CC67E187E18C6CE +S315E065D33066187E1E067800FE007E7E7E7E7E183E40 +S315E065D340663C0CCE3CC6667E7E7E607E1E7E18C6DC +S315E065D350663E7E18183000FF3C7E7E7E7E3C3C7ED7 +S315E065D3607E7E7E3C3C3C667E7EFFDE7E7E7E7E7E8F +S315E065D3703E7E7E187F186C18C000030303C0C000AC +S315E065D3801860060C32181AB07E667E0646C8666672 +S315E065D3907E0000000A7C7C00667E7E60FF7E5A7EAB +S315E065D3A0666666C663667E66607E186018667F0634 +S315E065D3B0FEFF3FF67E7C5F667E7E6660FE7E5A7E1B +S315E065D3C06666666663667E66607E18183C667F0698 +S315E065D3D0FEFF3FF67E7C5F66000000000000000011 +S315E065D3E030003800000041827C007C7C007C7C005B +S315E065D3F07C7C3C00100400000018000018007600F4 +S315E065D40006600000180018603C7E7E3C0C3C3C30B3 +S315E065D4103C381818000000183C667C3C787E603C19 +S315E065D420667E3CC67EC6663C6036C67C183C18821F +S315E065D43066187E1E067800FE003E7C3E3E3E180679 +S315E065D440663C0CC63CC6663C7C3E607C0E3E1882FD +S315E065D45066067E18183000007EFF7E7E7E7E7E3E06 +S315E065D4603E3E3E3C3C3C663E3E7FDE3C3C3C3E3E94 +S315E065D470063C3C18FF186070C000030303C0C0009B +S315E065D480186006183F1800007E663C1366C8666637 +S315E065D4903C0000000A000000667C7C60FF7E993CEB +S315E065D4A0666666C663663C66603C18C018667F0657 +S315E065D4B0FEFF3EE67C784E663E3C7C60FE3C993CF3 +S315E065D4C0666666C663663C66603C183018667F06C7 +S315E065D4D0FEFF3EE67C784E66000000000000000038 +S315E065D4E020001000000000000000000000000000C1 +S315E065D4F0000000001E3C0000000000000000000087 +S315E065D50000000000300000000000000000000000A0 +S315E065D5100000003000000000000000000000000090 +S315E065D52000000000000000000000000000000000B0 +S315E065D5300000000000000000000000000000007E22 +S315E065D54000007C00000000006006000000000000AE +S315E065D550007E000E18E000000000000000000000FC +S315E065D5600000000000000000000000000000000070 +S315E065D5707E00000000004060FF00FF0303C0C0FFBF +S315E065D5800000001F021800000000000E3C000000CD +S315E065D590000000000000000000000000C30000007D +S315E065D5A0000000000000000000000000000003002D +S315E065D5B0000300000000000000000000C600000057 +S315E065D5C00000000000000000600000301800030065 +S315E065D5D000030000000000000000000000000000FD +S315E065D5E000000000000000000000000000000000F0 +S315E065D5F00000000017540000000000000000000075 +S315E065D60000000000200000000000000000000000AF +S315E065D610000000200000000000000000000000009F +S315E065D62000000000000000000000000000000000AF +S315E065D6300000000000000000000000000000007C23 +S315E065D64000007800000000006006000000000000B1 +S315E065D650007C000000000000000000000000000003 +S315E065D660000000000000000000000000000000006F +S315E065D6707C00000000000000FF00FF0303C0C0FF60 +S315E065D680000000000000000000000000000000004F +S315E065D690000000000000000000000000000000003F +S315E065D6A0000000000000000000000000000000002F +S315E065D6B0000000000000000000000000000000001F +S315E065D6C0000000000000000000000000000000000F +S315E065D6D00000000000000000284356532032303138 +S311E065D6E0302D31312D323229000000007A +S705E0600000BA diff --git a/Flash/firebee_fpga_15_12_10.rbf b/Flash/firebee_fpga_15_12_10.rbf new file mode 100644 index 0000000000000000000000000000000000000000..63c16f1d687e91f02187b06b1c5e3ecfe12b2e04 GIT binary patch literal 428953 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 ifXZVq- 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�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
H{i-C6`@~Su}Ozcr?Jzh&I@Rpd6aJjC01c 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 z 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 U=hL4+!mCCDWBSlvWHTmq_Cz8fhX2!-DX}e)r zqzzf3iil==5S_^m3U(fwCZIXTR?Z>f_uzrW2^8dJhbEXw*YkGk;T8|p72n6?2!4}G ztHP^!oN^Skl5ndf`jP=D?+<24GV52aMtZsoIuwRu4D?f z6*XDG5Z@2-)Ehu5uubY1LVPCqMWXYZ<0|i3CFQA77ma*Muu^?n)f;lc6jb|| zF##rGBh^eeaSOX_ti^;reVMYVNt}8p|XyK1hNLgdbMvsAO`< zfq^Q9KFO+)x>VDW(oc%Xn{#wAUiRh^Bo#BMWg1Idrez1H0cHoVf4fwxk!@sxBTqR8 zeM@3!7DL1`sB}k3xf${o=f|~c@|2cZk|XJgRFTZQ3Ha+@IqHFhl%5AXzXXqjPH>t= zf*_Lpw@l8BPOYQ`jR?L>KAVuN66sedLe(6+c%er1L!ZR0Vfj%797xSp3PvG~SH#pT zHX$PBwhOPI^72-?pkZGKev#@IzdP??tv|7;_^xqzUBXztVMG2ZZBUl))6F|&60?rF}BfF;b?>Mw%`@BJYWpQ|gyzZW2aYW>&_?gL#l>N#w zX|iyC8F@^ctjW*0yIdju%WI>>?OEKX$*!mo`@};_uhXnN)Y`bRctf&^thpL;&d!0G zR9g?Nmr=&CS`itm8(#Q*0lo`E6lxaKcFO>#jJOlH*Q-<)uB-G&pmTc{n^gku$-~w2 z_vX(?Shyc`W{wtTv@^jovj#PpDO62VrBqy&wer>EC-E!gsfL&3hvC%aS}{ih8&vYf z9Yu|+c}HIxcB3-o;!BbCAB4rjCjr-JQyxPwvyb28%> zy*3M{PK_%^t&R#*OL>}LGb}3969Gh^ym{oi%ouS90vs$38sUx?`LQAounPw91p5l! zu}DC^g)?;^PqYGMMnIo16F90gP{hT`Kw?H$$ZU%$#G)?20Xj6c;d|2HigQRoUtn2e z2_9MjHIt%^G>aIW<){dNhXxQ1Syrh^jKs1&e>O>@UI~pdNdtmVz@Y9|&?J+}lDpsl z1?ti}YobRJ>)3oLG@~8fV$9z7%mz-^0jse}VrV8@{Dkn5p)C}scJ#Z>r7IkW9 zs+mJ&7c>j~p4yv*8l-nUGbyxhq*Ei8&JYa_lb{Oflv+rVTRv(!q{ZpPhub*u;Z|Uz KH!VKav+)0Lo+J7I literal 0 HcmV?d00001 diff --git a/Flash/firebee_fpga_15_12_10.zip b/Flash/firebee_fpga_15_12_10.zip new file mode 100644 index 0000000000000000000000000000000000000000..e5c959f26ec383c27a25e6d93e81f9e789abc895 GIT binary patch literal 192203 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

FGHj0lLGVZjodKK>7fnl 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 + + ; define config bits + __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC + + ;4 MHz Clock + +;************************ Input output usage ******************** + +; RA0 Atari / Amiga select i/p +; RA1 PS2 mouse data +; RA2 PS2 mouse clock +; RA3 Not used +; RA4 Not used + +; RB0 Atari XA / Amiga XA o/p +; RB1 Atari XB / Amiga YB o/p +; RB2 Atari YA / Amiga YA o/p +; RB3 Atari YB / Amiga XB o/p +; RB4 Left button o/p +; RB5 Right button o/p +; RB6 Not used +; RB7 Not used + +;******************************************************************* + + +;********** I/O port equates ************** + + +ps2data equ 1 ;ps2 mouse data signal +ps2clk equ 2 ;ps2 mouse clock signal + + +;********** User register equates ********* + +temp equ 0ch ;Temporary storage +byte1 equ 0dh ;Byte 1 store +byte2 equ 0eh ;Byte 2 store +byte3 equ 0fh ;Byte 3 store +xinc equ 010h ;last x increment read +yinc equ 011h ;last y increment read +xlow equ 012h ;low byte of 16 bit x counter +xhigh equ 013h ;high byte of 16 bit x counter +ylow equ 014h ;low byte of 16 bit y counter +yhigh equ 015h ;high byte of 16 bit y counter +xpat equ 016h ;x pattern position +ypat equ 017h ;y pattern position +bcnt equ 018h ;bit counter +brec equ 019h ;byte received +timer equ 01ah ;timer counter +parity equ 01bh ;parity store +flag equ 01ch ;flag bits (bit 0 = ack error flag) + ; (bit 1 = parity error flag) + ; (bit 2 = middle button pressed flag) + ; (bit 3 = middle state flag) + ; (bit 4 = left button flag) + +;***************************************************************************************** + +;***** initialise program ******* + +reset clrwdt + bcf status,rp0 ;set page0 + clrf intcon ;disable interupts + bsf status,rp0 + movlw 084h ;set tmr0 to int clk,prescale/32 + movwf option_reg + bcf status,rp0 + clrf porta ;all porta outputs will be low when enabled + movlw 0h ;set mouse buttons and x y start levels + movwf portb + bsf status,rp0 + movlw 017h ;set porta bit 3 as an unused output + movwf trisa + movlw 030h ;set portb bit 4 and 5 as inputs (left/right button o/ps open collector) + movwf trisb + bcf status,rp0 + + clrf byte1 ;set start up values + clrf byte2 + clrf byte3 + clrf xinc + clrf yinc + clrf xlow + clrf xhigh + clrf ylow + clrf yhigh + clrf xpat + clrf ypat + clrf flag + + +;***************** set up ps2 mouse ********************* + + +start call ps2read ;read power up self test report + btfsc flag,1 ;parity error? + goto restart ;yes so jump + movlw 0aah ;correct ? + subwf brec,w + btfss status,z + goto restart ;no so jump + + call ps2read ;read power up pc mouse id + btfsc flag,1 ;parity error? + goto restart ;yes so jump + movlw 0h ;correct ? + subwf brec,w + btfss status,z + goto restart ;no so jump + +restart movlw 0ffh ;send reset pc mouse command + call ps2wri + btfsc flag,0 ;ack bit? + goto restart ;no so jump + + call ps2read ;ack returned + btfsc flag,1 ;parity error? + goto restart ;yes so jump + movlw 0fah ;correct ? + subwf brec,w + btfss status,z + goto restart ;no so jump + + call ps2read ;read self test report + btfsc flag,1 ;parity error? + goto restart ;yes so jump + movlw 0aah ;correct ? + subwf brec,w + btfss status,z + goto restart ;no so jump + + call ps2read ;read pc mouse id + btfsc flag,1 ;parity error? + goto restart ;yes so jump + movlw 0h ;correct ? + subwf brec,w + btfss status,z + goto restart ;no so jump + + movlw 0f4h ;send enable reporting command + call ps2wri + btfsc flag,0 ;ack bit? + goto restart ;no so jump + + call ps2read ;ack returned + btfsc flag,1 ;parity error? + goto restart ;yes so jump + movlw 0fah ;correct ? + subwf brec,w + btfss status,z + goto restart + + movlw 0f3h ;send set sample rate command + call ps2wri + btfsc flag,0 ;ack bit? + goto restart ;no so jump + + call ps2read ;ack returned + btfsc flag,1 ;parity error? + goto restart ;yes so jump + movlw 0fah ;correct ? + subwf brec,w + btfss status,z + goto restart + + movlw 028h ;send sample rate (40) + call ps2wri + btfsc flag,0 ;ack bit? + goto restart ;no so jump + + call ps2read ;ack returned + btfsc flag,1 ;parity error? + goto restart ;yes so jump + movlw 0fah ;correct ? + subwf brec,w + btfss status,z + goto restart + +;******************* Main program loop **************************** + +main call ps2read ;read 3 byte pc mouse packet + btfsc flag,1 ;parity error? + goto restart ;yes so jump + movf brec,w + movwf byte1 + call ps2read + btfsc flag,1 ;parity error? + goto restart ;yes so jump + movf brec,w + movwf byte2 + call ps2read + btfsc flag,1 ;parity error? + goto restart ;yes so jump + movf brec,w + movwf byte3 + +;adjust the 16 bit x counter + + clrf temp ;use temp as high byte + btfsc byte1,4 ;extend sign bit into high byte + decf temp,f + + movf byte2,w ;add low bytes + addwf xlow,f + btfsc status,c ;add carry to high + incf xhigh,f + movf temp,w ;add high bytes + addwf xhigh,f + +;adjust the 16 bit y counter + + clrf temp ;use temp as high byte + btfsc byte1,5 ;extend sign bit into high byte + decf temp,f + + movf byte3,w ;add low bytes + addwf ylow,f + btfsc status,c ;add carry to high + incf yhigh,f + movf temp,w ;add high bytes + addwf yhigh,f + +;left button + + btfss byte1,0 ;is the left pc mouse button pressed + goto lbutt ;no so jump + bsf flag,4 ;set left button flag + goto nbutt +lbutt bcf flag,4 ;reset left button flag + +;right button + +nbutt btfss byte1,1 ;is the right pc mouse button pressed + goto rbutt ;no so jump + bcf portb,5 ;set right button as pressed + bsf status,rp0 ;by setting pin as a low output + bcf trisb,5 + bcf status,rp0 + goto mbut +rbutt bsf status,rp0 ;set right button as not pressed + bsf trisb,5 ;by setting pin as an input + bcf status,rp0 + +;middle button + +mbut btfss byte1,2 ;check if middle button pressed + goto mbutt ;jump if not + btfsc flag,2 ;check middle button pressed flag + goto mbex ;set so jump + movlw 08h ;toggle middle state flag + xorwf flag,f + bsf flag,2 ;set middle button pressed flag + goto mbex + +mbutt btfss flag,2 + goto mbex + bcf flag,2 ;reset middle button pressed flag +mbex + + btfsc flag,3 ;check middle state flag + goto setlb ;jump if set + btfsc flag,4 ;check left button flag + goto setlb ;jump if set + bsf status,rp0 ;no flags set so set left buuton not pressed + bsf trisb,4 ;by setting pin as an input + bcf status,rp0 + goto main +setlb bcf portb,4 ;set left button pressed + bsf status,rp0 ;by setting pin as a low output + bcf trisb,4 + bcf status,rp0 + goto main + + +;***************************** Subs ***************************************** + +;***** Read a byte from the ps2 mouse ****** + +ps2read btfss porta,ps2data ;data low ? + goto ps2r1 ;yes so start reading data + call trans ;no so do emulated mouse move + clrf tmr0 ;clear rtcc before delay + +oned btfss porta,ps2data ;data low ? + goto ps2r1 ;yes so start reading data + movlw 0dh ;delay between emulated mouse moves + subwf tmr0,w + btfss status,z + goto oned ;not done so jump + goto ps2read ;check again + +ps2r1 call wlow ;wait until clock goes low for start bit + + call whigh ;wait until clock is high + + movlw 08h ;read 8 data bits + movwf bcnt + clrf parity ;clear parity counter + +ps2r2 call wlow ;wait until clock is low + bcf status,c ;clear carry flag + btfss porta,ps2data ;data bit set ? + goto ps2r3 ;no so jump + incf parity,f ;yes so inc the parity counter + bsf status,c ;set carry bit +ps2r3 rrf brec,f ;shift carry into destination + + call whigh ;wait until clock is high + + decfsz bcnt,f ;finished the 8 bits? + goto ps2r2 ;no so do again + + call wlow ;for the parity bit + btfsc porta,ps2data ;parity bit set? + incf parity,f ;yes so inc the parity counter + bcf flag,1 ;clear flag (no error) + btfss parity,0 ;check calculated parity + bsf flag,1 ;set flag (parity error!) + call whigh + + call wlow ;for the stop bit + call whigh + + return ;and exit + +;***** Write a byte to the ps2 mouse ****** + +ps2wri movwf brec ;speed not important at this point so + movwf temp ;calculate parity seperate for sake of + movlw 08h ;clarity + movwf bcnt + clrf parity +ps2w1 rrf temp,f ;shift bit into carry + movlw 01h ;preset for bit set + btfss status,c ;test carry + clrw ;bit zero so no addition + addwf parity,f ;update parity + decfsz bcnt,f ;any more bits to do? + goto ps2w1 ;yes so jump + comf parity,f ;only intrested in bit 0. + ;parity bit is complement of bit 0 + + movlw 08h ;bit count to 8 + movwf bcnt + + call clkl ;set clock low + + movlw 021h ;wait 100 uS + movwf temp +ps2ww decfsz temp,f + goto ps2ww + + call datl ;set data low + nop ;wait 5 uS + nop + nop + nop + nop + call clkh ;set clock high + +ps2w2 call wlow ;wait for clock to go low + rrf brec,f ;rotate bit into carry for testing + btfss status,c + goto ps2w3 ;jump if bit is low + call dath ;set data high + goto ps2w4 +ps2w3 call datl ;set data low +ps2w4 call whigh ;wait for clock to go high + + decfsz bcnt,f ;any more bits to send? + goto ps2w2 ;yes so jump + + call wlow ;wait for clock to go low + btfss parity,0 ;send parity bit + goto ps2w5 + call dath + goto ps2w6 +ps2w5 call datl +ps2w6 call whigh + + call wlow ;send stop bit + call dath + call whigh + + call wlow ;read ack from mouse + bcf flag,0 + btfsc porta,ps2data + bsf flag,0 + call whigh + + return + + +;******* wait for ps2 clock to go low ********** + +wlow btfsc porta,ps2clk + goto wlow + return + + +;******* wait for ps2 clock to go high ********** + +whigh btfss porta,ps2clk + goto whigh + return + + +;******* set ps2 clock low ********************* + +clkl bsf status,rp0 + bcf trisa,ps2clk + bcf status,rp0 + return + + +;******* set ps2 clock high ******************** + +clkh bsf status,rp0 + bsf trisa,ps2clk + bcf status,rp0 + return + + +;******* set ps2 data low ********************* + +datl bsf status,rp0 + bcf trisa,ps2data + bcf status,rp0 + return + + +;******* set ps2 data high ********************* + +dath bsf status,rp0 + bsf trisa,ps2data + bcf status,rp0 + return + + + +;********* emulate mouse move *************************** + +;move the emulated mouse by one step in the x direction if needed + +trans movf xlow,w ;is the x counter zero? + iorwf xhigh,w + btfsc status,z + goto ymove ;no so jump to y direction + + btfsc xhigh,7 ;is the x counter positive or negative? + goto xneg ;jump if negative + + incf xpat,f ;increment the pattern list position + movlw 04h ;test if end of pattern list + subwf xpat,w + btfsc status,z + clrf xpat ;end of pattern list so reset + movlw 0ffh ;subtract 1 from the 16 bit counter by adding ffffh + addwf xlow,f + btfsc status,c ;add carry to high byte + incf xhigh,f + addwf xhigh,f + goto ymove ;exit to y direction + +xneg decf xpat,f ;decrement the pattern list position + movlw 0ffh ;test if end of pattern list + subwf xpat,w + btfss status,z + goto xno + movlw 03h ;end of pattern list so reset + movwf xpat +xno movlw 01h ;add 1 to the 16 bit counter + addwf xlow,f + btfsc status,c ;add carry to high byte + incf xhigh,f + +;move the emulated mouse by one step in the y direction if needed + +ymove movf ylow,w ;is the y counter zero? + iorwf yhigh,w + btfsc status,z + goto out ;no so jump to output pattern + + btfsc yhigh,7 ;is the y counter positive or negative? + goto yneg ;jump if negative + + incf ypat,f ;increment the pattern list position + movlw 04h ;test if end of pattern list + subwf ypat,w + btfsc status,z + clrf ypat ;end of pattern list so reset + movlw 0ffh ;subtract 1 from the 16 bit counter by adding ffffh + addwf ylow,f + btfsc status,c ;add carry to high byte + incf yhigh,f + addwf yhigh,f + goto out ;exit to output pattern + +yneg decf ypat,f ;decrement the pattern list position + movlw 0ffh ;test if end of pattern list + subwf ypat,w + btfss status,z + goto yno + movlw 03h ;end of pattern list so reset + movwf ypat +yno movlw 01h ;add 1 to the 16 bit counter + addwf ylow,f + btfsc status,c ;add carry to high byte + incf yhigh,f + +;output new x and y patterns + +out btfsc porta,0 ;test if set for atari + goto amiga + + movf xpat,w ;get the x pattern bits + bsf pclath,1 ;set page 2 + call pattx + movwf temp ;store the pattern in temp + movf ypat,w ;get the y pattern bits + call patty + clrf pclath ;set page 0 + iorwf temp,f ;store the pattern in temp + + goto outpat + +amiga movf xpat,w ;get the x pattern bits + bsf pclath,1 ;set page 2 + call apatx + movwf temp ;store the pattern in temp + movf ypat,w ;get the y pattern bits + call apaty + clrf pclath ;set page 0 + iorwf temp,f ;store the pattern in temp + +outpat movf temp,w ;get patterns + andlw 0fh ;ensure high nibble stays zero + movwf portb ;ouput patterns + + + return + + +;*************** pattern lists ************** + + org 0200h + +;atari patterns +pattx addwf pcl,f + retlw 0 + retlw 1 + retlw 3 + retlw 2 + +patty addwf pcl,f + retlw 0 + retlw 4 + retlw 0ch + retlw 8 + +;amiga patterns +apatx addwf pcl,f + retlw 0 + retlw 1 + retlw 9 + retlw 8 + +apaty addwf pcl,f + retlw 0 + retlw 4 + retlw 6 + retlw 2 + +;******************************************************************************* + + END + + diff --git a/MLAB/firebee1/Thumbs.db b/MLAB/firebee1/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..5c84dfb6d19a66e008ecbeb8e2f2638efa71ba6d GIT binary patch literal 22528 zcmeFYcUV+UmoB;ykeqXBvY_OglSq;u5|k_;B9dvz4Kz9DB%mNk1SE@OXmS?GNpe&& zbQ4=>n$ynAH#6t^=FBtqKIi^%&YkM#-Jy2vu38n=s#^8#@iB_Ef*Qtk;O~MWfDNE; z34pu*E*=YW{RjUP$N}IE=Hkyi`u6trpCbVPbNS!l|DYPU!Ibq+`~AV6fQxC!KW&bO z0X_x<7!YDWgaI)IBp8rlK!yRP3jh=tP+~xZ0W}6R7|>!shXFkXfBu&db7sPT83Ps! zKp3!Mz=i=k1{@f0V!(v~HwO1G;K6_wgZmgfz~FD?`=>(w_u+qA4Hy7m%+C|k7HWVi z=IjpmVru)p9%upFe;xCGbiscX)=a7lEmViG{d{#){YI6naHVExfUf2)vxNbny-;9%ms{&X%(__zEeFu95TQ|{83 z{Dc89%(V>$w*PeZ&#C|Mh{^w7^ZrwYe@yX@F$|cf$UmL_e^dCI?ElsL|9!Uq{@wq+ z{{LSM{L#_a7`XmRe}praXd^kz&HjBK`S0uhdu!lt?Qiif`mmbZ^~dzG9rf*x+ckjv zvAUKzfQ9uhiv4yGPz7+Yad2?3aWMy6T->{O#Q1oaKt@DFKukeKNl8IQK|w{!Oh-k{ zNJBwE&rZ+C!oteRN=3)P#R1}C2C;(v{0SE3RlK`+r1>V6EJiWYqAijQK;SrHh(J`^9X>ZdrGT*(= z`dIj>sJP^FY1!A>y84F3rskIJp5DIxfx)3~lT*_(vvWV@7uGj6w|@TG-r3zloSdGW zUtA)8U;UBmkDPxC|J)V-PA-Z+RuI!HICy{L!n))0M{o)pTy~MWlq&jo)^1cBq9ORy z4^s+ix(GPM4B#{`-6sfXxy0AG5r0JcC&~V6f`$ISlI&jv`!~530Ag$`Oyglw07?Mz zTP$z>oqq*iG4kp9XP6Cwucw_Z_jM?Vu72c-1KlydbC0hj*+`@GWgqZz-oY>DyzWxc z%zHbPs0}u|={)#NVqkH9q>m@I3GR4)8IS_kW2>CBprz zs7R#$1f&H z%;Dt6h!|hUpm74>7oGxc|5v18TUHBsn`9_~W2P=28wc*Yep<^||>17avRd+fwQ|k1<&l;y|a+nyTMeui3v) zuf2j}ZND|Hfd(P1iXosMV>UKr4s_m`LpJ`_{=O_5jqfQk?r*%O5G^u%TdJpGSt9Rt z3lN}qtT%GZ4Kqz(O%0Rc3J+YY^sXO-x$%pL3T4tBzm*e@6ZTUf`Sm2^R|E zL|W1HX2QV<15w;C$rvRRm$(0LsQO{vtI_4ossJ^Qtg#-`Dl}Vh*xK)+mZ>Vw9}Ofx0%qNvGk(QXD-M!VF*L z4*-x)q)0pN1*SrVj;TxtfR6QG0V$6@kp`#s=F%wR#(@BwTwK4v_wemb_lgF@UZ4^} zpsym5FMEs_=^|Jm-!)^C^2_Lr63ozJnwY}Er~4S!p*BXIrEpKA$4+j*Y2y~4F11<_ za~ChaD?`#0FBX5?1wMDg_FR#hv7SOqu4kaP3qxgI6@b3Ug1AdaI+ zEBpb57xc2SnvF~!Q&Qm=HK) zjd4S2_cQ8LrQk)hOPH7ryqU{17+WubwYE3&ebJWaO*?ie4L4lF%56)EXlKq;d0z<6 z>uLsD8HBn>Yi*2C6zBPtJ?bQ&J5Wo9!a{xOI;Krmt#%Pc=NdAN;ZJ zqtd~#jNB;5?3kLK}LBMCcCpSCtVIMpBAF?RW9|h;&bv}5U0M8xmUTRLaG z+RacpnD=yYpgeUONHydn?y7AB!p3N}&X=I%GY55GRt<@xGEZ>byv4lvp0(CB@u@OG zLxwY*@H>I^AOmL+;3qu=^J@`bcn~vN>yd+x4YQy`uZn3-9EgARd3{$ zR_`g^zgCL&lz^WtxWK%Pt{yJbxBTdAwvFdRp^o`YV_pkt@ks18wKuDb)s?^6;j<~AdT`~ky&tix%g>*6 z?ao3EM#K&hpQJwEiUF;6{cuYOQ)b5X>cCr@;6cU}-2&YjxNZHJ_*okeSFV$dv~Lkx zh8`&=8ESab%*NbmKmf&Nn@_jdaWJuz*)0$uVcvR(doEph;3+LWFYbSq%5ScYh;X3( zly={EIfWdoY9%*&8H2LkP@*z7U);}1fyMs#MI+qbDvcdlCf&*GZ$tw4=XI|#ts>hk zI3KmliQX!LPlBn8Q3lNhkMyZ-iJ1 zdCIJGeCrcz8~J3Ydh0C^=BJTRJS`+~OaMtGBP@!=ca`wZ(LN9^O-6lruN0H*z^)#+ ztMD27D{{=kcin=g)4QE<+Lc|0<5JIsa)V1)%gr^D;KIL$e62NS^ZSB)XIRw(C3?qI zdYC|gmE#FYNfF25@gwsQn&NQ$JC>iqS^-yBP*VcO9jtqIQbfjMe?4^pqU`88si5=EhsD3ROi~dssuhCtEqJ;MBkx?5x^Y z-_sQGzQO0#8pRjyAb}Z|o9$&b=F-l{zNS>y;X}De-z(f?vf68Y()JYW!r~^7 z0dguEsj+f=Tx>r>>8IL-Ae-x>>DAeBc?Z9%*AO_fKE{7VB>vXb@)X*TA#9T~a70H!8LW76h*(1XLwOh%5ZmWty>pv&4N>-`nn8F0iF z-t{`TmgRG~m7zWghdgxo{dg@@WeE6LUW&BHcgST&=r_)8x5hoLt! zE1CV9h`S_1Aq=CWBG2nR^N33juRwB>*00Vx$mnTv`W=%J$T+-IKR%Ii`KdY1gORN4Wsd#h))O<8+kB&R92e-sR|#l$0Sm`VM8g5$Us1 zwyh7TT5QZN)W)XpYUN3Jm5r#RUOFi~`>TNT{=$HZXC(49$`K3Fr=73+$91t~4wad6 zXwH1%+ga_E;7N;prO*dSotKO&asCxMj1h^g5~r+R%_W9a+^DORNyu46gH>tvPq9uD z0GgnltJk#^j^idfi~;C^&ou(Xw8F4j%0jmXpNZbwh3v)_ST0^axCQK%R-G0Mmpq~1$q}oZt5;BJa$jSi&gkE<=@ZhAdu?h7G5W&*NNJpG4`mXDp1;rpnklyb?~~l>FiS zAZ*Ard=p@)%HANub?Ts4pE!i6ZVWF!?e)ukZn1>)F$xfR+?eG{z{hN$Z2KZEzFE&C ztZUC-z)l_Rk{4<9JW3DwlbOn4YR~LdR$?OyOg5f;{X_q^uc9JJqP!_o?q_>^z0d&3 zZ20wtVtOgW?xBU0;rQ{-*bC~Ms=A?Hp(pg3XBsjcgsy%Zrs$hWCC1|9WT?i*O#T-y(h*5f z68qXUMT&`;S^YJjBJPYN_N3n;YREsi32l`BQV*o2vYda1}SM9*4SYN%{GIQ$C zfaVw%^nBH^@Yqa?Pkopx7`kFhU^KQx~@gYab9n7lZU+OUFr5V&tc@7JRfK3UBG8#iT9H>Fwwf8yYHyQ4QiT}_iZ{7p5>~_AIBdKS%m#$JKCn%&Z8685mQAdRQRdA zot12C(Mik~uzfrD!r^dIUAgy;@@wfa>HREVbN?$+p>j8iHJ;%-Za+uy+by8mI%V6| z7~i^Z^ARsvyN=xC{u@m^F6=}|m1L_`7~{S7RglGRGiQrAMzf>c$9l2>um}*Ma?SUV zTrfX2br;_#K_B2(9~rhT2M*0j3Vww!?)rUhUa8{xac)t+`TCJ2Au2!M?T7Wp@J{Q+ z_!DU3CTU^elGP5QU`)AUEqMKgQ9nVPYX{ZdQZs{)A z5u|anMS|HBHq@eZQ;(p@tHKGW{B{C>HH(3l8576Ax-Z3sPsaIRR$=DwhrT|rslasj7Uo?R% zNX1*A)0oH>%>6-8v90!6?eMIZ9?DYkh3SafdEM32Jmf<@8*y!j9#VC{@2?fU?DflV zub%a4!ZB-qTieeTgA)?xsPT8RM~8Fi{Hwf&jLAwc&AS7=hq^uO1n`lOhO~0WmHX3` zE`s7DV%O$ys#uhi`Wv1tp)8rCIJ zOVMRcN)9@^%pH$$1`&Q%GSI~43buw@MM?zGAwyZ{)FVJXBwVSF*Et$v)GbY)!&5$Q z)$E@4`GcciO2x|%ZxS-K+NO4R<6^v?+FgUo{+17_jjAN^rb9ef)Tvr2?Rq3E>?r<= zE8K>B!K9vDFU=QI&aT`dmdLW5$DIDdVMFHjCrHb%BeHkRptS0t5@g1dPQwgTqr|Z# zvAXQJgI{BKwoXW3mjmm&{Ql3O5Mm-~S1zA{z;Nu-%s41_6(p(G#b<+z8A&+1<{UPt z<0y3Ro5Z@cT9SJi+uDP)@pJh+`&rLCiv1w6L(gca@h0B*`QV(^6ja57=3T?|>qp-{ z#l~IKhpJNXzJ9&wy4Dj5Ad<)&XcdXzzfwwv3%fRS86m~1fnmkN_JS@IYrY@~`IIkw z@}oQZ%#UcEyS{ibQ>~96>t0Q=WPpD~mR)1q2c#180&`=nQ~B`zjMF~Ggb|oP%a#q> zZ&&jwk=a@(MU_389$5ot>IHG!r%hpvl+SERS4os%+(1jb)Wxy$U&xC>aj#b+AG=g@m{xn1I-BiL{cIc((GQI;`a(}0 z_)>18iSd$kzFp_Ru}b@7^(2Y9v_z|b!7cE}smtYFsU78C@t>cUX&Pv8rhR+O6q*H$ zMMJ`jk;`kxL{LpQN>(DhsF!wp2kh#6_%dQqnji&T)BKt%gD0(Xpa|JNxu}Qqfp{tC zc=_fj!(emHf}YWbR6PsfCgd7a4+PY&WMCox&O{0|5LS(^xO@YEe!{s{K zm!sdx%08v`B-W426{7GEftl+T?&n_SX)hbK!QAzT;4zl^zP4T;3Wk@gV*MlZMhiZ` zJVQS(Hs3%XRujDcy-WGR{(@4pc!D(gWDde72ch`VU87{R(3c=?WHg#{O0a?-FZKw$ zK37pN6)oA)kWEt)!&MttJBTINne!dvgpR;VMKK~2lh)h7CbbA^A5P7=vzRld;kXyX z4RL&&1nIh~3lmkw@$s7<^zcfO=po4bAfyE=@dfPy{mvkr;(PR1-y2IAqyr*J58+xE zRE9L~&E;%u${qhE`I_3!MYNxg4lP!XZIm>7nQO%KXg2q@a_F-BS_C3qrH6h#iZ z8+~&cQ5IFpwjUmHoWPc<$JphfzN_Q?wLR>m89_7x5`w z_v@GN^u+INy<73zJ?vcA-<=YrzF?1HbSEbg<7Rru8XW{LWktnV2t}X;?H9B_jJ5FI z7M?KhTJEB0;^e_tkni@x3Eyh5VCH`2uj({UIdcPFV9i!degx8uOovUfyHJJNu-+BcX^Bd~{T@lBSItwu>T3P#)vZ&woLlwZZn5-+rQ@KM*OkZ| z(GTVh>l8>ws*bBn!j+W`0o$B+@Xz^_CTjqJ#9mfVLWNh%J$Pn!N93I3)ocxMmSNGz zukw2Z;*zP6l%II_C@FU|?O45h&W1P(#-V(lcFb%qBb_B^Gc~n1!umm+UtUf+Qcpn|Jd{v0g0mI*P;czX>(v zYNkYmr4uyNF7(S+_GF)%_4*m*-5Idm2=LKen$5C!?|d(= zB8Wk^yH`YM@IF_gY@TmIJrX8UP8obFLFW10C=O(a)!}y2Xgin=$DOXxV9G` z;d~NzaP=h3DFtjp>QV18EXMkN2{pQu+vz_2@9f{d*g_Vb?i;_c9#--*R&qz-F^Qar z1CJ-ko8LvkPF=9)~EW|s75LeSHSOy$$Al;ovY<+tbsr-m$v zM+>n8nsKh)Jc@Y|6aQpmLGR&X{TERhVO@%R9ZfY;)-BhTF_oPJ&EsGKyzdVcZHUOF z@?|#tP(68?@LM3ta|GNMcz^c1jY&6eU_mm$%}+cGKWo6esk_b?uC8cmma2^#3lqY=aSs4jx3 z^GP4GM)`TBMu5Wt#ccOB7W=%XwCmg-v(*nviiND?tdm77KrO{4>yOC>=n~{5f^7U1 zQ)s^7I7r|Nz`9JQbU`Bk_X;Za zwaNUm`GZQ>P%B#@J4q-Zxdt`Xn0*#DGH?|217d@wIj{eIPeHr4rM;B|bWMt;8>o5<(mD^;#FRv^d+(79!a_5IA$Wuk35FNccL<{$}f>k?VAt zca89D6{!tlzXjCNJK#S|ZUKaslNKT<>TVG*g_e`d_8g_;>p&VyW^B;PyNVVbsf_W< zU}pi@-5{z)xOYOCy?0jpg4Y4<=M_Z+M{;?Qxg^2lVa)ZV;F}5!BPI>3n%DhD*H6EW zO9&BkkwsP97y>Efr2f{IU5Gv)E>=u}pMkt{(wUj|} z2+n>z#|AjWyhne?c3nWy$lt^~23*|Fc(R7sE*slTrO-6o(c1WXZ_od9kJ+xa_lt^w zVYaJ%9>;41lv-#w-Kpt5_9i4y2p-isz!JxLuNIgHF~4|>R4Rt}F_GA4wa!Ukf$mM; zYs;dw<4i4OiqOvu4hxA-n?^-lKZAl;@u6U_leL$?N>tgSsofLpBoWCE^16vd?j4eM zRY`y6ld*n`y%3uB7;K#L8qw3?u3S#9Y>iul;LJ%%j(Aa8JbxHr{!5c#^swR?r5i?0 zi_C5?%`TdDRzkBrTRSd?_4(wlNeL=v<)&B$Q~Dvy?sH3>|dL_T?J2`#ar~6X&To-)dGDpEzR-Hrb;nH*1oxujuk|#TuC#lF4nzdsLNGz-} z+o3ZCvDUY$aA<$Nuk$V;ah{nc>syJ;18FWoU{?_81V7qbcd70%g}QBetS>tC!xGuo zvxTpRcyQ4(Ij!%LrqBCVCC3#GtI!6s%BqqLUqv>>Pd0gfVFsHEG0|OfJhVdR4)wN&yXJt~FRMCn zBD~)B^2@TrI@7jO6~!|y0u%<)V9OQB9Pj(=q$l(G;}|kS4z}^MC(G+OlS#p?y7szc zE#l9xpYD9pe1eB#1nbZ2MT^@FRNROCl zNSD9g{UIS7I%b)EExBZ24%JyLsW8|RC~_pQcHw`QxVN=1^z-3xG8gf+Mh3(tBrFR! zSFjvYpMugTbqSH7G^P{tszn{m{#uBP!|`T}lblVU-Fa+ElSAYF%*AtI@lAJA68#RE ze$E*tXX6`C0WreNAg}Z$g*>klIGl>92IR*$W2izIe%i#7w8`{8xeVW$@wA#pqowPG z=ogUvi$*-U6XuT`1dQnJ!>W)bY|`G+w!hz!z_zX=I(mg-#%%3Z_^k-%_wOwT)oJ)6 zNL}u29+6aXf3)D}J!mxvE>Cq=z89?MhpA|)ZmTl|%b;~B54410-dY}(ia+&LV}h4& zg^kN4g&ES%Gvg6+x{*h{)@~DA>;v=5_F&9gw?JRe>G@g^N^Z^y_1@?V%!K@PY*g1U z#R)gOIY@i3xG2ZWw6(7A!(~w|{Kdwyt`*g=TD}rhayk>=K@2J)hBSAuB>SA=l)^Xt@lsUk9lnJ|Ox-7nF3kh&eD5(V7i*MEl>>-# zLZH5lOuw;Xs;ZDuRbD9FR%!4mY*3yNsf#AWLQp+K_#}8*k?hcYS?$YLlUk@^cbWKo z^7i|SGr31jsRRr!Wy7qb=J(7J((5i}{UVlOblA>_J~57O3iQ~aiuDG;gpHpZ{W6k1 z_mw&@My%xd6Wrs=HqE+k!$t1>HCY2EQNgi@8mnZ3mE38CvsHVHeBUp(#)HwJx<#gWBfiudv9I(G7E_cU-3ISvm+o3Tr95q-vB3QaO~m7`y$7l6#1$pD znmZ~74t08Xm=}q3H+*iW!Sq3EN87hRT$Rzq-mj|@44WdR%GECAQxSaj9jW`rNhIs- z{Qtdl%Kzge`y2oB@A<#~&Hwyw{^x&4Z2kX+|9LI=uiQ@z(-3C20q!qf7TX|c?5U0d z(PM1laG&{KjpG7?kwm=R+n1>zYJV7_k5_d_+i`|3qmPy|f2JJ*U zup*zTpv8l_-LBPdfeG?SC3tZd%4vx=pA0jT4&S^;xCK74e+pXH!9&hi7;jh|Vih`^ zI<{nX4$JUY8jm!YTal~rx10QIDEk@H?}vR>?e{TQCNI)b7Jl5Ti@$)(?vV=Jm~?B< zT)boMi?@=fhNfk>q6j6xp_(!t%%eczdIvd0quAGUY4;Uz8WEs~o0`vxX<{F>-hBP* z({IObGWcZEHOCftD6!REp)2WQmRn$TCZ|*-7Cls91rAcn-Pf0b^-@ZGWot@4o_wQ+!Rz$9(T$~`m>M(7G;_O}`=B-xVr$6zv(Bh*6tWr2@ zo3l`!&k&o<<1Qi#RpSW;&o)Oo)5?1)qlaGP_ceWHxLz!@|uN>U5woVX?BRH8;^!tVDhu$ zaT1!xp@SGrXK$?QAXr-INc+WX=gP3@p83#sr(j@+kbps2L79Q;4wlVkW1o{%l%H)w zUa=XAT|Z;1-$}tOl2vN3{APZFouq?3hRKs>_DYh7$Xh>}{S(NWZoRX0973jx6s*3&NwP521oBbn#g? zp8HNrQBK!nwVaA}T^3;_Drfn`1;q%`G_O&K65rz2>pFE zmX|{Yx@&ih-zHBga{J(o6)>iKo~kL1?>TvKF^HV4^Zx-31ieedFeXQG~k zOw;A1oK?NfM~A0sN_kxPs{D4B_N^DG^8KCs+e(^&7*6|%Gg|l-sPbODG9>ZMJUFgE z`luip`zuxZd>V}Wq|rl(KaU1a<}L5fS>qksNe{@30Df}^!y7qI``QU-s;j-sN9=SP z=3FbzTnvt;RRzvdapw740Fk9v7G1`2GQgJMF#}Kcad^w?5(MLEPm5%xdjV{?TpNFO z@0S)Sw4UwG_rv4FPsvyk8|};p+>S01%hg^G^$b&Q5RTXN*DAQ!U!FvvKcvw@{EaWg z5@nphgl=_B}!)E<*dByY^C_ZlePefikc-(*%z>ou!MwU4Y$Pl zImp0;9};gp4}TxT)e6Vf0T-E!`18B%WoGBRjBmykv*8l(D+z|;VtNhM{L%tMRk?1G zqa|5ODV4y1o|xo&Zz`TNL+8-IQwy42;U)7Sup6~|4+nLs47F%WN+`ZOxrQTvI*r|2 z_ki9HijKmtR~5TJ#o|*A7|oUgZxMA_Zqm3}VtsxtJs@!=)jbvxgaz}0Up_*3Dv|1> z?sSi1c!(5SEJd?NW9=CRN= z_UOx$=LpA~?!=)>r8tt~SwrOVo&IP%EagpVtSt;La`+awa|`UKS)mv$gAjX_Wq~7B zSZ6n)duS`Hqr?Te_cLDF-;>L%r%iq94Gc_E>%T|g_`;*AXYy=O($Ao#dt00I1qUu0x*kG$Sa6dXRiHJQH{p6+K>64 z#qhvgzWB9Z;XuT%_P65pBTBBk_19NL-3&wDB?M_4M~ z&%DrfQp?c5ujCK;QFg~&6KBnM!b`Q+OfY>zfb#g!>;ZenR5ho_bMx=b#!pd6Z#39~ zH88dUC68c@aYY$#2oXRk>}wqv@dHw1d)h~~-~a|-nd z(U2JQn8l9uRIh7y&|sLDVi#7Dx`#B$OH6JuZ=fCRM84)8wRk?#%svTK;z^NLg{XTs zd3AiAh_UGR=6X%nj~elG!b$ICX%QtWyBli#_OZkH8u=aRj~PA@mZS*DumF#>${@=e ziS^>3ZU^5tBg6|G@16$De{Uw*{w0yzuWUQIc^Qp2<7q5`5E=lnAbr>Qs;MAZXXd7z z!qLL7avzfZ*tFWPNz7^H0Vw6MI-HM*D`QtXf}wg1u8XuDKYzcvx;sj+hEQfT&^J*8 z5P>0^)kJ2H%pT(*-;!lP6=rc~#S;vRf{1kU>c#B&|Fm%W4;D%hC@Hvl^=1+?N zQI1sIFzy+#?9rZv8VW>4mCrl+C+2t_6Zslby0DcCF4^jyx^#ld;f3qVM{(<96uY@H zd786FFzvFXJ=wRC4cP)B4>TBJ44e5Hgx!6I6m)sEh47)mNbZdwriC3wH)LMX565GV zo3Ox3-V7!eG^4q`-51gleVITpjP?1NjQgpAhVBd#PVS3?t#YH0t zWub4)(U9Jw;1{XxWaGX`iD+D8Tz5tW=mFAnqtbC(A70n+y3{tjk zHVt0V;`}+tB@EPK7R)j5ZFHm((=D(zsf3m=lmO4Cp(&hHH&`Pq#Ss#jar`Dawl@XP zRP(XK8fko(@aBgk{n+!oFeNH+%+?JZdS((s4K`OwE8R`|plc(%mnbbgDD6zVcE%QB zx5*Q8EYAYpe1;&+6~G;7j+EYNUEWgp^*x2*)8de3PbQlep)ZR)Hr1MLpR^)}gK>sz zPMCeWz{IC(#l}xVJ*vE$es*b0~%~o!`eU*Cz~+zmcs)D} zs|Y@7MbCyb_JIF}O0AWK?RBFZHx6z}uq4BAKFj%^&PNZ(2YA7Qx-WAHkv8kM0O20p zP=HVId5wGP^JNPEIG49uWNOPU%fRN!m0A@>Q|QORM0g8_8l84 z9WPr9m*0BSk-1^_e*HZ3@SC#rRI!H<=85Nptl{#(8-|q?y!4lNxZg_IHSnrLlv$~M zphtt~JTX2gPB^tC3*54hwls*Q*RQwn(eqwTP9_3NY^(!iALgUYBKTZry--vTy&?e7 zFm8)Hx$2)X7SkfIp%>-<>SC~z+=}=>yqRC&B6U%WSSf(-n<@S z*cJQ*Q;U`dpNDvMZ~^Gk_0_mQk(ya3UOCck;Ie}Ps=A>hc5T%y)WDnnn&C%6Be}B- zgF>dyGM6#t8^!J+##P0;9mpff+kuT(KHu%C>?`2`GD(3R=XZQ99XeACXSEv z`fyQb?)s+0`Di5><-2Z2ZXdjM0)E8;r%J)A1PAR*4#qy2jdsQe%P+Tp{cOG6^^~U8 z%hKFv0>!Npf2Si+Rf8_`Ik;%zjdltM~(S=PBxNC;eeYYnI#|QG-Zq?g6oGP>q?Udnn^ z6*^~BJs0*QaW6n_avS=xyy4q_e1g$aYs-0Ex4_*I`%5dAISDc5mZI*opGSJ$1N2JW zt=Xxfy{T@UpxS@qy<&V|Af>g0~T1q5O=M$!t9i1#&SP-!E|9qafDRKI`bW@07-;%xoDYFs4 zAP99>A2FCUKfK4+!J$Ou;C7drJuo8ro$3BY|avN0G003vbNxPL6=s zp-B8F{_94M$UZ-xgZYohFg3VkDX6hfCx6kx$w$geJw;&b!$LqB&O8NMa))qALs&=$ zoJBAM!PL2M3&aY-L<%8=I_ptkgQo*gn7$eL?0ClJt)Fimdw>gnYU&7t&GhSwquTH|TOsqWIG=7mt&S z`ZI)+;lkRY9{L+$(*Cf_3u%g7Q|JSb1?4cSw7|F#C& zF0l6#40F850;QDfdLN-})a;y-3nhW2hrtA$*oxgSXCeWqi>3CKTR@{W)+#E`0hSp( zGY@|FI~5cjt|tWw(Xh6B5APVrWkx2fGl8ifj&NNksbPK{%q%XLWMZ(RyGQAvunJq4 zCDXNmiDND!GIm9=Wy%!{W37Z31QG0~&ELCDkd?7mJjC)Nml6~k_@>hJz#cm=D4O+a z%X_XgG1$Fjkwd4Q;*F`mEL`K#j@81F{ z%NR#5Zdy=;O3?LFDB1LZtN1)h?Q;*!k`DIJO}5lv6=B+?u5tj`WH7&D5P65~uMSwo zl`ih{=LA2VKk?M(brAKTVvCOC+S=w(aCai=_i3Rmyw*XH!r;BLV)m0i_U?@wH2jv6 zj{=vjA!|DF_wVklAQIefp3R7F%Q{sr9HQl!9PCp4m(0 zbc*Lj+AgifO4j?cl!+HQ9}8v2j6tHsIWJxAawQmsflv+e8pz?O`_?=@Etc6lI+#G(tWrnQUh)DhbVFaJ zl?bp-D{p3x0Lx$l1t4biOtQrjFC25JLBvAp_FqYRhl!zNq~l$@Oz~*}@W}gqp$QTV z1Gk4{SrID{`W~b8ssnOZjR@+!8$8}_$^Ap~3M8OH;z72=;y=oT&H%d@eD`J!j2wU& ziHdW=`j5^v-*FNemilghYUzW{AeZghsZ#qSKkGq5XaR!WUN_M(z^EEqGr8ncn$lSo z#)bB}E!f~?+ZWRMbW?5h-J5^PNl~pBA?n~KCr)J2WlkZN{9}IEk*L@34KF2D0q;1` zAVROKXNe->V6pj0#H6aeycw@0r5J+mv%;;F2CAtx!O|HsGQ$(t8h@YA_sYua>qZ10 zg54{3Z<@V=iB zYZA`UAMA-I3Rl|H`1KZSui>~zGyf-brllG}{TC>qPSG?u_oN*%9nGyN-=5qNBq^kb z{{&ipozi(*gsTpHM^13fUd374`j5CoYJdjNeJSx63;9uvwFakx<8#^bSD%_c!5JI1 zyBwiYcYs8E3Ak_BjRFG>bH)`STrrnYRmS8@ij^YwA5tv9Xq^8ix7CxX(c&vrc`yQ%emrt~P;6cbmMWk-qN)d6II34rng|k-2 zsMd8Q75kUVN1~W%FuL;L1JvXQHPTQRpB6NCP`R7YG}HbGq)4WS^*0Z{A9AH{=l983 z6-p~4N-NmPNTwXZT&%c$w$W;rHh#YE(a}4`P5cZSxpd(OHM?&1Ub=U=CQjuz7+Y4H z`ZC$nl=eViHfzv@0E^rN%e6I&O849;r;nUV)_htyE*=&m6E7u3^p|qw8^kmX$Waix z=FGqL&3x{nsaKwZbVAOH(c@aFh`GazVk*Wg-^f=JiXG+|VZw z5E78aS>4N(_~c-=*wQ18IC*K-(yNV3vMb~k4LUad9#+so>epfRb&cUS;s;yXJ)C*wiBfYWJK3a z9vmL?v~T@2SEuzVM%Ft)$<;>sP(0nDheSZgip>_q(m;4QfIb04u6%3xV&53S_ZG$c zDs9+V2y3K+Pv>qk&Yfhl7Rw=jt(0QH!sc#v_6)E$Ky2v}hHlErWUp=%!^P?}ys%#D z3?u4X`5%F{y>G4Msq=fJKFkLNF+-SOhH^<@T2f7^(x882MIQ7P_WyAVa6^ZofIy?w21!eN{Q(F%> zw11RnWYO!dxn a&V@{E!r8 literal 0 HcmV?d00001 diff --git a/MLAB/firebee1/circuit.bmp b/MLAB/firebee1/circuit.bmp new file mode 100644 index 0000000000000000000000000000000000000000..10c587c3fe7e1bd89a0bb70d53730feecc94a98a GIT binary patch literal 32062 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 SQ|X7!8>9YTivKJ|;J*Q^($^~h literal 0 HcmV?d00001 diff --git a/MLAB/firebee1/firebee1.asm b/MLAB/firebee1/firebee1.asm new file mode 100644 index 0000000..cc1d11a --- /dev/null +++ b/MLAB/firebee1/firebee1.asm @@ -0,0 +1,845 @@ +;********************************************************** +;* firebee1 PIC18F4321 MAIN FILE +;********************************************************** +;* CREATED BY FREDI ASCHWANDEN +;* DATE 22.9.2009 +;********************************************************** + list PE=18f4520 ;EXTENDED INSTRUCTION SET + include "P18f4520.inc" +;------------------------ Equates --------------------------; +;Register addresses +;BANK 0 +SECS equ 0x00 +SECS_ALARM EQU 0x01 +MINS equ 0x02 +MINS_ALRAM EQU 0x03 +HOURS equ 0x04 +HOURS_ALARM EQU 0x05 +DAY_OF_WEEK EQU 0x06 +DAYS EQU 0x07 +MONTHS EQU 0x08 +YEARS EQU 0x09 ;offset vom 1968 +REGA EQU 0x0A +REGB EQU 0x0B +REGC EQU 0x0C +REGD EQU 0x0D +RTC_RAM EQU 0x0E ; bis 0x3F +free equ 0x40 +TICKS equ 0x41 ;125MS +TASTE_ON_TIME EQU 0x42 +TASTE_OFF_TIME EQU 0x43 +POWER_ON_TIME EQU 0x44 +AD_KANAL EQU 0x45 +U_ERR EQU 0x46 ;SPANNUNGSFEHLER WENN BIT 0=1, BIT1=1 WARTEN AUF GELADEN +U_ERR_TIME EQU 0x47 ;ZEIT SEIT SPANNUNGSFEHLER +U_POWER_IN EQU 0x48 ;SPANNUNG POWER IN 1V CA. 6E +RX_B EQU 0x49 ;RECEIVED BYT +RX_STATUS EQU 0x4A ;STATUS: 0x00=WAIT AUF MCF COMMANDO, 0x82=EMPFANGE 64BYT FROM RTC +TX_STATUS EQU 0x4B ;STATUS: 0x00=WAIT 0x81=SENDE 64BYT FROM RTC +GO_SUB EQU 0x4C ;WENN GLEICH 0xFB DANN SUBROUTINE AUSFÜHREN +GO_INT EQU 0x4D ;WENN GLEICH 0xFB DANN SUBROUTINE AUSFÜHREN +EAPIR1 EQU 0x4E ;INTERRUPT ACTIV UND ENABLE +EAPIR2 EQU 0x4F ;INTERRUPT ACTIV UND ENABLE +;BANK 1 AB 0x100 +RX_BUFFER EQU 0x100 ;0x80 BYT BUFFER BIS 0x17F BANK +TX_BUFFER EQU 0x180 ;0X80 BYT BUFFER BIS 0x1FF BANK + +;-------------------------------------------------------------- +SEND_RTC_TIME EQU .2 ;0.25 SEC (EINHEIT IST EIN TICK = 128MS +RESET_ON_TIME EQU .2 ;0.25 SEC (EINHEIT IST EIN TICK = 128MS +RESET_OFF_TIME EQU .4 ;0.5 SEC (EINHEIT IST EIN TICK = 128MS +OFF_TIME EQU .20 ;2.5 SEC (EINHEIT IST EIN TICK = 128MS +ON_TIME EQU .2 ;0.25 SEC (EINHEIT IST EIN TICK = 128MS +TIMER_HB EQU .240 ;256- (32768Hz PRO 1/8SEC = 4096TICKS/256) => 256-16=240 (resp 256-16/4 (wenn osco) = 252) +TIME_MAX EQU .160 ;MAXIMALTIME +U_ERR_PW_AUS EQU .5 ;5 SEC +;SERIEL +SYNC1 EQU 0FFh +SYNC1_DATA EQU 'A'; +SYNC2 EQU 0FEh +SYNC2_DATA EQU 'C'; +SYNC3 EQU 0FDh +SYNC3_DATA EQU 'P'; +SYNC4 EQU 0FCh +SYNC4_DATA EQU 'F'; +REQ_RTCD_FROM_PIC EQU 01h ;RTC AND NVRAM DATEN VOM PIC ANFORDERN +RTCD_FROM_PIC EQU 81h ;RTC AND NVRAM DATEN HEADER UND STATUS +REQ_RTCD_FROM_MCF EQU 02h ;RTC AND NVRAM DATEN VOM MCF ANFORDERN +RTCD_FROM_MCF EQU 82h ;RTC AND NVRAM DATEN HEADER UND STATUS +U_MIN_TO_MCF EQU 03h ;UNTERSPANNUNGSMITTEILUNG AN PROCESSOR +EXT_SUB_GO EQU 04h ;SERIELL CODE UM SUBROUTINEN/INTERRUPTS ZU AKTIVIEREN +EXT_SUB_STOP EQU 05h ;SERIELL CODE UM SUBROUTINEN/INTERRUPTS ZU STOPPEN +CLK_SLEEP EQU B'00010010' ;125kHz intern, SLEEP MODE +CLK_ACTIV EQU B'01110010' ;inTernal CLK=8MHz, SLEEP MODE, SLEEP MODE +EXT_CODE EQU 0xFB ;CODE FÜR EXTERNE SUBROUTINEN/INTERRUPTS AUSFÜHREN (FireBee!) +EXTERN_INT_ADR EQU 0x2000 ;HIER MUSS 0xFB STEHEN WENN EXTERNE INTERRUPTS AUSFÜHRBAR +EXTERN_INTERRUPTS EQU 0x2002 ;STARTPUNKT EXTERNE SUBROUTINES +EXTERN_SUB_ADR EQU 0x2010 ;HIER MUSS 0xFB STEHEN WENN EXTERNE SUBROUTINES AUSFÜHRBAR +EXTERN_SUBROUTINES EQU 0x2012 ;STARTPUNKT EXTERNE SUBROUTINES +REQ_BLOCK EQU 0xA0 ;BLOCK DATEN LESEN -> CODE UND 3 BYTS ADRESSE = TOTAL 4 BYTES +READ_BLOCK EQU 0xA1 ;PROGRAMM BLOCK PIC->MCF -> CODE, 3 BYTS ADRESSE UND 64 BYTS DATEN = TOTAL 68 BYTES +WRITE_BLOCK EQU 0xA2 ;PROGRAMM BLOCK MCF->PIC -> CODE, 3 BYTS ADRESSE UND 64 BYTS DATEN = TOTAL 68 BYTES +PRG_OK_PIC EQU 0x22 ;PROGRAMMIERUNG BLOCK FERTIG +;**********************************************************************************************""""""""""""" +; Start at the reset vector +Reset_Vector code 0x000 + BRA KALT_START +;-------------------------------------------------------------- +HIGH_INT_VEC code 0x0008 + GOTO 0x18 + +LOW_INT_VEC code 0x0018 +INT_HANDLER + CLRF BSR ;IMMER ACCESS BANK +;SETZEN GRUPPE 1 + MOVFF PIE1,EAPIR1 ;INTERRUPTS HOLEN + MOVF PIR1,0 ;MASKE + ANDWF EAPIR1 ;ACTIVE SETZEN + BTFSC EAPIR1,TMR1IF ;uhr interrupt? + BRA RTC_ISR ;ja-> + BTFSC EAPIR1,ADIF ;AD INTERRUTP? + BRA AD_ISR ;JA-> + BTFSC EAPIR1,TXIF ;seriell TX? + BRA TX_ISR ;JA-> + BTFSC EAPIR1,RCIF ;seriell RX? + BRA RX_ISR ;JA-> + +;SETZEN GRUPPE 2 + MOVFF PIE2,EAPIR2 ;INTERRUPTS HOLEN + MOVF PIR2,0 ;MASKE + ANDWF EAPIR2 ;ACTIVE SETZEN + + BTFSC EAPIR2,HLVDIF ;UNDER/OVERVOLTAGE DETECT + BRA HLVD_ISR ;JA-> + RETFIE + +;TESTEN UND SETZEN GRUPPE 1 + MOVFF PIE1,EAPIR1 ;INTERRUPTS HOLEN + MOVF PIR1,0 ;MASKE + ANDWF EAPIR1 ;ACTIVE SETZEN + TSTFSZ EAPIR1 + BRA INT_HANDLER +;TESTEN UND SETZEN GRUPPE 2 + MOVFF PIE2,EAPIR2 ;INTERRUPTS HOLEN + MOVF PIR2,0 ;MASKE + ANDWF EAPIR2 ;ACTIVE SETZEN + TSTFSZ EAPIR2 + BRA INT_HANDLER + + MOVLW EXT_CODE ;GO EXTERNE SUBROUTINEN AKTIV? + CPFSEQ GO_INT ;SKIP WENN JA + RETFIE + GOTO EXTERN_INTERRUPTS ;REGISTER SICHERN UND STARTEN +;**********************************************************************************************""""""""""""" + ; Start application beyond vector area + CODE 0x0100 +KALT_START +;RESET MODE + CLRF BSR ;BANK 0 +;ALLE INT AUS UND RÜCKSETZEN + CLRF INTCON ;alle INTERRUPT AUS + CLRF RCON ;INT PRIORITY AUS + CLRF PIE1 ;MASK DISABLE + CLRF PIE2 + CLRF PIR1 ;INT ACT AUS + CLRF PIR2 + CLRF IPR1 ;LOW PRIORITY + CLRF IPR2 + ; clock +; MOVLW B'01000000' ;32MHZ +; MOVWF OSCTUNE + CLRF OSCTUNE +;CLOCK + MOVLW CLK_ACTIV + MOVWF OSCCON + ; div init +;SET PORT A: **7:#master/0.409*5V0 **6:PIC_AMKB_RX **5:PIC_SWTICH **4:HIGH_CHARGE_CURRENT **3:2V5 *2:3V3/2 **1:1V25 **0:POWER_IN/11 + CLRF PORTA ;#master(7)=0, REST=0 + MOVLW B'11111111' ;DIRECTION: alles auf Input + MOVWF TRISA +;SET PORT B: **7:PGD **6:PGC **5:PGM **4:PIN_INT,1V5 **3:GAME PORT PIN10 **2:GAME PORT PIN11 **1:GAME PORT PIN6 **0: GAME PORT PIN5 + CLRF PORTB ;ALLES AUF 0 + MOVWF TRISB +;SET PORT C: **7: PIC_RX **6:PIC_TX **5:AMKB_TX **4:GAME PORT PIN4 **3:GAME PORT PIN12 **2:GAME PORT PIN13 **1+0: OCS 32K768Hz + CLRF PORTC + MOVWF TRISC +;SET PORT D: **7:#RSTI **6:GAME PORT PIN3 **5:PS2 KB CLK **4:PS2 MS CLK **3:PS2 KB DATA **2:MS DATA **1:TASTER **0:POWER ON/OFF (0=ON) +; SET TASTE UND POWER + CLRF PORTD ;ALLES AUF 0 + MOVWF TRISD ;ALLES AUF INPUT +;SET PORT E: **3:#MCLR **2:#PCI_RESET **1:PCI 3V3 **0:PIC LED (0=ON) + MOVLW B'00000001' ;LED OFF + CLRF PORTE ;ALLES AUF 0 + MOVWF TRISE ;ALLES AUF INPUT +;-------------------------- +; set OVERvoltage detekt + MOVLW B'10011011' ;INT WENN ÜBER 3.9V + MOVWF HLVDCON + MOVLW B'00000011' ;ERRORS ON, WAIT AUF LADEN + MOVWF U_ERR + MOVLW .20 ;SEIT 20SEC ERROR + MOVWF U_ERR_TIME ;SETZEN + BSF PIE2,HLVDIE ;Enable interrupt +;INTIALISIERUNGSPROGAMME + CALL LADESTROM ;LADESTROM EINSTELLEN +;UHR initialisieren + MOVLW TIMER_HB ;Preload TMR1 register + MOVWF TMR1H ; + CLRF TMR1L ;=0 + MOVLW B'00001111' ; 8 BIT, osc1 enable, TIMER MODE, TIMMER ENABLE + MOVWF T1CON ; SET + CLRF TICKS ; 1/8 sec register + CLRF SECS ; Initialize timekeeping registers + CLRF MINS ; + MOVLW .12 + MOVWF HOURS + MOVLW .1 + MOVWF DAY_OF_WEEK + MOVLW .1 + MOVWF DAYS + MOVLW .8 + MOVWF MONTHS + MOVLW .42 + MOVWF YEARS ;MONTAG 19.7.2010 12:00:00 (JAHR-1968) + CLRF TASTE_ON_TIME + CLRF TASTE_OFF_TIME + CLRF POWER_ON_TIME + BSF PIE1,TMR1IE ;Enable Timer1 interrupt +;AD WANDLER INITIALISIEREN + CLRF AD_KANAL ;BEI 0 BEGINNEN + CLRF ADCON0 ;AD MOUDUL AUS + MOVLW B'00001001' ;VREF=VDD,ANALOG INPUT AN0-AN5 + MOVWF ADCON1 + MOVLW B'00000000' ;LINKSSBÜNDIG,0 TAD,CLOCK=Fosc/2 + MOVWF ADCON2 +; BSF PIE1,ADIE ;INTERRUPT ENABLE + CLRF U_POWER_IN ;WERT AUF 0 VOLT +; seriell initialisieren + CLRF SPBRGH + MOVLW .16 + MOVWF SPBRG ;BAUDE RATE = 115K + MOVLW B'00000100' ;TX AUS, ASYNC HIGH SPEED + MOVWF TXSTA + MOVLW B'10010000' ;SERIEL EIN,RX EIN, + MOVWF RCSTA + MOVLW B'00001000' ;16BIT BRG, RISING EDGE INTERRUPT + MOVWF BAUDCON ;SETZEN +;EXTERNER SUBROUTINES + CLRF GO_SUB +; interrupts + CLRF INTCON3 ;EXTER INTERRUPT AUS, low priority + MOVLW B'11110000' ;PORT B PULLUPS AUS, EXT INT ON RISING EDGE, TMR0 AND BPIP Low priority + MOVWF INTCON2 + MOVLW B'11000000' ;global on, PERIPHERAL INT on + MOVWF INTCON +;CLOCK + MOVLW CLK_SLEEP ;GEHT JETZT IN SLEEP MODE + MOVWF OSCCON +;------------------------------------------------------------------------- +;---------------------------- MAIN LOOP ------------------------------------------------- +;------------------------------------------------------------------------- +MAIN + MOVLW EXT_CODE ;GO EXTERNE SUBROUTINEN AKTIV? + CPFSEQ GO_SUB ;SKIP WENN JA + BRA WARTEN ;SONST WARTEN + CALL MAIN2,1 ;REGISTER SICHERN UND STARTEN +WARTEN + BTFSC TRISD,RD0 ;SKIP IF POWER ON + SLEEP ;SLEPP BIS ZUM NÄCHSTEN INTERRUPT + BRA MAIN +MAIN2 + CALL EXTERN_SUBROUTINES ;EXTERNE SUBROUTINEN AUSFÜHREN AN STELLE 0 MUSS 0xFA STEHEN SONST UNGÜLTIG + RETURN 1 ;RETURN MIT REGISTER ZURÜCK +;**********************************************************************************************""""""""""""" +;--------------------------- subroutines ------------------------------------------------- +;**********************************************************************************************""""""""""""" +;POWER ON/OFF +POWER_EIN +;CLOCK + MOVLW CLK_ACTIV + MOVWF OSCCON + + BCF TRISA,RA7 ;CLOCK EINSCHALTEN + BCF TRISD,RD7 ;#RSTI AKTIVIEREN = LOW + BCF TRISB,RB4 ;PIC_INT AKTIVIEREN + BCF TRISD,RD0 ;POWER ON + BRA LS_ON_POWER ;LADESTROM EINSTELLEN +POWER_AUS +;CLOCK + MOVLW CLK_SLEEP + MOVWF OSCCON + + BSF TRISD,RD0 ;POWER OFF + BSF TRISD,RD7 ;#RSTI DEAKTIVIEREN + BSF TRISB,RB4 ;PIC INT DEAKTIVIEREN + BSF TRISA,RA7 ;CLOCK DEAKTIVIEREN + CLRF POWER_ON_TIME ;RÜCKSETZEN + BRA LS_OFF_POWER ;LADESTROM EINSTELLEN +;LADESTROM EINSTELLEN ---------------------------- +LADESTROM + BTFSC TRISD,RD0 ; ONPOWER? + BRA LS_OFF_POWER ; NEIN-> +LS_ON_POWER ;GROSSER LADESTROM 5A + BCF TRISA,RA4 ;10K ON + RETURN +LS_OFF_POWER ;KLEINER LADESTROM_MIN 1.85A + BSF TRISA,RA4 ;10K OFF + RETURN +;--------------------------------------------------- +;SERIELL AUS/EIN +SERIAL_OFF + BCF TXSTA,TXEN ;TX AUS + BCF PIE1,RCIE ;DISABLE RX interrupt + BCF PIR1,RCIF ;CLEAR RX interrupt + BCF PIE1,TXIE ;DISABLE TX interrupt + BCF PIR1,TXIF ;CLEAR TX interrupt + RETURN +SERIAL_ON + BTFSC TXSTA,TXEN ;SCHON EIN? + RETURN ;JA-> + BSF TXSTA,TXEN ;TX EIN + MOVLW SYNC1 + MOVWF RX_STATUS ;AUF SYNC WARTEN + CLRF TX_STATUS + MOVFF RCREG,RX_B ;RCREG LEEREN + MOVFF RCREG,RX_B ;RCREG LEEREN + BCF PIR1,TXIF ;CLEAR TX interrupt + BCF PIR1,RCIF ;INTERRUPT RX FLAG LÖSCHEN + BSF PIE1,RCIE ;ENABLE RX interrupt + NOP + RETURN +;--------------------------------------------------------------------- +; TASTENDRUCK +TASTE + BTFSS PORTD,RD1 ;TASTE GEDRÜCKT? + BRA TG_JA ;->JA +;TASTE NICHT GEDRÜCKT ODER LOSGELASSEN + CLRF TASTE_ON_TIME ;RÜCKSETZEN + + MOVLW TIME_MAX ;MAX + CPFSGT TASTE_OFF_TIME ;LÄNGER? + INCF TASTE_OFF_TIME ;NEIN ERHÖHEN + + MOVLW RESET_OFF_TIME ;2SEC + CPFSGT POWER_ON_TIME ;LÄNGER? + RETURN ;NEIN-> +;RESET AUFHEBEN + BSF TRISD,RD7 ;JA -> #RSTI DEAKTIVIEREN =HIGH + CALL SERIAL_ON ;SERIELL EINSCHALTEN + RETURN +;TASTE GEDRÜCKT +TG_JA + MOVLW OFF_TIME+1 + CPFSLT TASTE_ON_TIME ;KÜRZER ALS ONTIME+1 + RETURN ;NEIN->FERTIG + BTFSC TRISD,RD0 ;ONPOWER? + BRA TG_OFF_POWER ;NEIN-> +TG_ON_POWER + MOVLW SEND_RTC_TIME ;ZEIT FÜR RTC REQ FROM MCF HOLEN? + CPFSEQ TASTE_ON_TIME ;TEST + BRA TG_ON_POWER2 ;NEIN-> +SEND_RTC_REG + MOVLW REQ_RTCD_FROM_MCF + MOVWF TXREG ;SENDEN + BRA TG_END; +TG_ON_POWER2 + MOVLW RESET_ON_TIME ; + CPFSLT TASTE_ON_TIME ;KÜRZER? + BRA RESETEN +TG_ON_POWER3 + MOVLW OFF_TIME + CPFSLT TASTE_ON_TIME ;KÜRZER ON/OFF TIME? + CALL POWER_AUS ;NEIN->POWER OFF + BRA TG_END +TG_OFF_POWER + MOVLW ON_TIME + CPFSLT TASTE_ON_TIME ;KÜRZER ALS ON/OFF TIME? + CALL POWER_EIN ;NEIN->POWER ON +TG_END + CLRF TASTE_OFF_TIME ;RÜCKSETZEN + INCF TASTE_ON_TIME ;ERHÖHEN + RETURN +RESETEN + BCF TRISD,RD7 ;NEIN-> #RSTI AKTIVIEREN =LOW -->>>RESET + CALL SERIAL_OFF ;SERIELL DEAKTIVIEREN + BRA TG_ON_POWER3 +;**********************************************************************************************""""""""""""" +;----------------------------------------- INTERRUPTS +;**********************************************************************************************""""""""""""" +; SERIELL INTERRUPTS +;**********************************************************************************************""""""""""""" +;TX +TX_ISR ;TRANSMIT + MOVLW RTCD_FROM_PIC ;RTC DATEN SENDEN? + CPFSEQ TX_STATUS ;SKIP JA + BRA TX_ISR1 ;NEIN-> + MOVFF POSTINC0,TXREG ;BYT SENDEN + MOVLW 0x3F ;SCHON LETZTES BYTS? + CPFSGT FSR0L ;SKIP WENN FERTIG + RETFIE ;NEIN WEITERE SENDEN +TX_ISR_FERTIG + CLRF TX_STATUS + BCF PIE1,TXIE ;SONST DISABLE interrupt + BCF PIR1,TXIF ;INTERRUPT FLAG LÖSCHEN + RETFIE +TX_ISR1 + MOVLW READ_BLOCK ;READ BLOCK? + CPFSEQ TX_STATUS ;SKIP JA + BRA TX_ISR2 ;NEIN-> + MOVFF POSTINC0,TXREG ;BYT SENDEN + MOVLW 0xC3 ;SCHON LETZTES BYTS? + CPFSGT FSR0L ;SKIP WENN FERTIG + RETFIE ;NEIN WEITERE SENDEN +TX_ISR2 + BRA TX_ISR_FERTIG +;**********************************************************************************************""""""""""""" +;RX +RX_ISR ; BYT RECEIVED + MOVFF RCREG,RX_B ; BYT HOLEN +; MOVFF RX_B,TXREG ; ECHO + MOVLW SYNC4 ;IM SYNC STATUS? + CPFSLT RX_STATUS ;SKIP WENN NEIN + BRA RX_SYNC_START ;JA -> ZUERST SYNC EMPFANGEN +;--------------- + MOVLW RTCD_FROM_MCF ; DATEN VOM MCF CODE 0x82? + CPFSEQ RX_STATUS ; WENN JA-> SKIP + BRA RX_ISR1 ; NEIN-> +;64 BYT EMPFANGEN ------------------------------------- + MOVFF RX_B,POSTINC1 ;HOLEN -> (CNT+) + MOVLW 0x3F ;64 BYT ÜBERTRAGEN? + CPFSLT FSR1L ;NEIN ->SKIP + CLRF RX_STATUS ;JA FERTIG + RETFIE +;------------------------------------------------------------------------------------- +RX_ISR1 + CPFSEQ RX_B ;BLOCK HEADER 0X82? + BRA RX_ISR2 ;NEIN-> + MOVWF RX_STATUS ;STATUS SETZEN = EMPFANGENES BYT + LFSR 1,.0 ;BYT COUNTER AUF O + RETFIE +RX_ISR2 + MOVLW REQ_RTCD_FROM_PIC ;DATEN SENDEN? + CPFSEQ RX_B ;SKIP WENN JA + BRA RX_ISR3 ;SONST NEXT +;BLOCK HEADER UND 64 BYT SENDEN ----------------------------------------- + LFSR 0,.0 + BCF PIR1,TXIF ;INTERRUPT FLAG LÖSCHEN + BSF PIE1,TXIE ;Enable interrupt + MOVLW RTCD_FROM_PIC + MOVWF TX_STATUS ;STATUS SETZEN + MOVWF TXREG ;BLOCK HEADER = 0X81 + CLRF RX_STATUS ;STATUS RÜCKSETZEN + RETFIE ;UND WEG +;------------------------------------------------------------------------------------- +RX_ISR3 + MOVLW EXT_SUB_GO ;EXT SUB FREIGEBEN? + CPFSEQ RX_B + BRA RX_ISR4 ;NEIN-> +;EXT SUBS FREIGEBEN -------------------------------------------------------------- + MOVLW (EXTERN_INT_ADR & 0xFF0000)>>16 + MOVWF TBLPTRU + MOVLW (EXTERN_INT_ADR & 0x00FF00)>>8 + MOVWF TBLPTRH + MOVLW (EXTERN_INT_ADR & 0x0000FF) + MOVWF TBLPTRL ;ADRESSE SETZEN + TBLRD* ;WERT HOLEN (MUSS 0xFB SEIN SONST UNGÜLTIG) + MOVFF TABLAT,GO_INT ;EXTERNE SUBROUTINES AKTIVIEREN WENN OK + MOVLW (EXTERN_SUB_ADR & 0xFF0000)>>16 + MOVWF TBLPTRU + MOVLW (EXTERN_SUB_ADR & 0x00FF00)>>8 + MOVWF TBLPTRH + MOVLW (EXTERN_SUB_ADR & 0x0000FF) + MOVWF TBLPTRL ;ADRESSE SETZEN + TBLRD* ;WERT HOLEN (MUSS 0xFB SEIN SONST UNGÜLTIG) + MOVFF TABLAT,GO_SUB ;EXTERNE SUBROUTINES AKTIVIEREN WENN OK + CLRF RX_STATUS ;STATUS RÜCKSETZEN + RETFIE ;UND WEG +;------------------------------------------------------------------------------------- +RX_ISR4 + MOVLW EXT_SUB_STOP ;EXT SUB STOPPEN? + CPFSEQ RX_B + BRA RX_ISR5 ;NEIN-> +;EXT SUBS STOPPEN -------------------------------------------------------------- + CLRF GO_INT ;STOPPEN + CLRF GO_SUB ;STOPPEN + CLRF RX_STATUS ;STATUS RÜCKSETZEN + RETFIE ;UND WEG +;------------------------------------------------------------------------------------- +RX_ISR5 + MOVLW REQ_BLOCK ;REQ BLOCK? + CPFSEQ RX_B + BRA RX_ISR6 ;NEIN-> +;REQ BLOCK ---------------------------------------------------------------- + MOVWF RX_STATUS ;STATUS SETZEN = EMPFANGENES BYT + LFSR 1,TX_BUFFER ;BYT COUNTER AUF TX_BUFFER -> GLEICH EINTRAGEN + RETFIE +RX_ISR6 + CPFSEQ RX_STATUS ;REQ BLOCK ADRESSE EMPFANGFEN? + BRA RX_ISR7 ;NEIN-> +;3 BYT EMPFANGEN ------------------------------------- + MOVFF RX_B,POSTINC1 ;HOLEN -> (CNT+) + MOVLW 0x82 ;3 BYT ÜBERTRAGEN? (BUFFER BEGINNT BEI 0x180 + CPFSLT FSR1L ;NEIN ->SKIP + BRA RX_RB3BOK + RETFIE +RX_RB3BOK + LFSR 1,TX_BUFFER ;BYT RX COUNTER AUF TX_BUFFER + MOVFF POSTINC1,TBLPTRU ;ADRESSE EINTRAGEN + MOVFF POSTINC1,TBLPTRH + MOVFF POSTINC1,TBLPTRL + MOVLW 0xC2 ;67 BYT ÜBERTRAGEN? (BUFFER BEGINNT BEI 0x180 +RX_RB3B2 + TBLRD *+ ;LESEN UND NEXT + MOVFF TABLAT,POSTINC1 ;UND EINTRAGEN + CPFSEQ FSR1L ;WENN FERTIG ->SKIP + BRA RX_RB3B2 ;SONST LOOP +;BLOCK HEADER 3 BYTS ADRESSE UND 64 BYT SENDEN STARTEN ----------------------------------------- + LFSR 0,TX_BUFFER ;TX COUNTER AUF TX_BUFFER + BCF PIR1,TXIF ;INTERRUPT FLAG LÖSCHEN + BSF PIE1,TXIE ;Enable interrupt + MOVLW READ_BLOCK ;CODE HEADER 0xA1 + MOVWF TX_STATUS ;STATUS SETZEN + MOVWF TXREG ;BLOCK HEADER = 0XA1 + CLRF RX_STATUS ;STATUS RÜCKSETZEN + RETFIE ;UND WEG +;------------------------------------------------------------------------------------- +RX_ISR7 + MOVLW WRITE_BLOCK ;WRITE BLOCK 0xA2 BYT EMPFANGEN? + CPFSEQ RX_STATUS ;WENN JA-> SKIP + BRA RX_ISR8 ;NEIN-> +;WRITE BLOCK ---------------------------------------------------------------------------- +;67 BYT EMPFANGEN ------------------------------------- + MOVFF RX_B,POSTINC1 ;HOLEN -> (CNT+) + MOVLW 0x42 ;67 BYT ÜBERTRAGEN? + CPFSLT FSR1L ;WENN FERTIG ->SKIP + RETFIE +; ADRESSE UND DATEN SIND DA -> PROGRAMMING FLASH + LFSR 1,RX_BUFFER ;BYT COUNTER AUF RX BUFFER + MOVFF POSTINC1,TBLPTRU ;TABLE POINTER SETZEN + MOVLW (EXTERN_INT_ADR & 0xFF0000)>>16 + CPFSLT TBLPTRU ;TEST OB WENIGER ALS ERLAUBT + BRA NO_PROG ;JA-> + MOVFF POSTINC1,TBLPTRH ;TABLE POINTER SETZEN + MOVLW (EXTERN_INT_ADR & 0x00FF00)>>8 + CPFSLT TBLPTRU ;TEST OB WENIGER ALS ERLAUBT + BRA NO_PROG ;JA-> + MOVFF POSTINC1,TBLPTRL ;TABLE POINTER SETZEN +;EREASE BLOCK + BSF EECON1,EEPGD ; point to Flash program memory + BCF EECON1,CFGS ; access Flash program memory + BSF EECON1,WREN ; enable write to memory + BSF EECON1,FREE ; enable Row Erase operation + MOVLW 55h + MOVWF EECON2 ; write 55h + MOVLW 0AAh ; write 0AAh + MOVWF EECON2 + BSF EECON1,WR ; start erase (CPU stall) + MOVLW 0x42 ;67 BYT +WRITE_WORD_TO_HREGS + MOVFF POSTINC1,TABLAT ; get byte of buffer data + TBLWT+* ; write data, perform a short write to internal TBLWT holding register. + CPFSLT FSR1L ;SCHON BEI 67 BYTES? + BRA WRITE_WORD_TO_HREGS ;NEIN->LOOP +PROGRAM_MEMORY + BSF EECON1,EEPGD ; point to Flash program memory + BCF EECON1,CFGS ; access Flash program memory + BSF EECON1,WREN ; enable write to memory + MOVLW 55h + MOVWF EECON2 ; write 55h + MOVLW 0AAh + MOVWF EECON2 ; write 0AAh + BSF EECON1,WR ; start program (CPU stall) + BCF EECON1,WREN ; disable write to memory +NO_PROG + CLRF RX_STATUS ;AUF NORMLA SCHALTEN + RETFIE ;UND FERTIG +;WRITE BLOCK SETZEN? +RX_ISR8 + CPFSEQ RX_B ;BLOCK HEADER COMMANDOE 0XA2? + BRA RX_ISR9 ;NEIN-> + MOVWF RX_STATUS ;STATUS SETZEN = EMPFANGENES BYT + LFSR 1,RX_BUFFER ;BYT COUNTER AUF RX BUFFER + RETFIE +;------------------------------------------------------------------------------------- +RX_ISR9 + CLRF RX_STATUS + RETFIE +;------------------------------------------------------------------------------------- +;SYNC ABWARTEN UND WENN DA "OK!" SENDEN ---------------------------------------------------- +;------------------------------------------------------------------------------------- +RX_SYNC_START + MOVLW SYNC1 + CPFSEQ RX_STATUS + BRA RX_SYNC2 + MOVLW SYNC1_DATA + CPFSEQ RX_B + BRA NON_SYNC + MOVLW SYNC2 + MOVWF RX_STATUS + RETFIE +NON_SYNC + MOVLW SYNC1 + MOVWF RX_STATUS + RETFIE +RX_SYNC2 ;TEST AUF SYNC UND DATA 2 + MOVLW SYNC2 + CPFSEQ RX_STATUS + BRA RX_SYNC3 ;NICHT SYNC 2 + MOVLW SYNC2_DATA + CPFSEQ RX_B + BRA NON_SYNC + MOVLW SYNC3 + MOVWF RX_STATUS + RETFIE +RX_SYNC3 ;TEST AUF SYNC UND DATA 3 + MOVLW SYNC3 + CPFSEQ RX_STATUS + BRA RX_SYNC4 ;NICHT SYNC 3 + MOVLW SYNC3_DATA + CPFSEQ RX_B + BRA NON_SYNC + MOVLW SYNC4 + MOVWF RX_STATUS + RETFIE +RX_SYNC4 ;TEST AUF SYNC UND DATA 4 + MOVLW SYNC4 + CPFSEQ RX_STATUS + BRA NON_SYNC ;WIEDER VON VORN + MOVLW SYNC4_DATA + CPFSEQ RX_B ;SKIP OK + BRA NON_SYNC ;NICHT SYNC4 DATA +RX_WAIT1 + BTFSS TXSTA,TRMT + BRA RX_WAIT1 + MOVLW 'O' ;SENDE OK! + MOVWF TXREG; +RX_WAIT2 + BTFSS TXSTA,TRMT + BRA RX_WAIT2 + MOVLW 'K' ;SENDE OK! + MOVWF TXREG; +RX_WAIT3 + BTFSS TXSTA,TRMT + BRA RX_WAIT3 + MOVLW '!' + MOVWF TXREG; + CLRF RX_STATUS ;OK START NORMAL + RETFIE +;**********************************************************************************************""""""""""""" +;SPANNUNGSÜBERWACHUNGS INTERRUPT +HLVD_ISR + BTFSS U_ERR,1 ;WARTEN AUF GELADEN? + BRA HLVD_LE ;NEIN UNTERSPANNUNG DETEKT-> + BCF U_ERR,0 ;SPANNUNGSFEHLER AUS + BCF U_ERR,1 ;WARTEN AUF GELADEN=AUS + MOVLW U_ERR_PW_AUS+2 ;POWER AUS ÜBERSPRINGEN + MOVWF U_ERR_TIME ;ZEIT SETZEN + MOVLW B'00010111' ;INT WENN UNTER 3.12V + MOVWF HLVDCON +WAIT_LVDOK: + BTFSS HLVDCON,IVRST ;ABWARTEN BIS AENDERUNG AKTIV + BRA WAIT_LVDOK + BCF PIR2,HLVDIF ;INTERRUPT FLAG LÖSCHEN + RETFIE +HLVD_LE ;UNTERSPANNUNG + BSF U_ERR,0 ;ERROR SETZEN + BSF U_ERR,1 ;WARTEN AUF GELADEN SETZEN + CLRF U_ERR_TIME ;RÜCKSETZEN +;MESSAGE AN PROCESSOR + MOVLW U_MIN_TO_MCF + MOVWF TXREG ;SENDEN + + MOVLW B'10011010' ;INT WENN ÜBER 3.7V + MOVWF HLVDCON + BRA WAIT_LVDOK +;**********************************************************************************************""""""""""""" +;A/D INTERRUPT +AD_ISR + BCF PIR1,ADIF ;CLEAR INTERRUPT PENDIG + RETFIE ;RETURN +;************************************************************************************************************* +; uhr interrupt ALLE 1/8 SEC +RTC_ISR +;UHR WIEDER RÜCKSETZEN UND AKTIVIEREN + MOVLW TIMER_HB ;WIEDER AUF STARTWERT + MOVWF TMR1H ;SETZEN + BCF PIR1,TMR1IF ;INTERRUPT FLAG LÖSCHEN + BSF PORTB,RB4 ;PIC INT HIGH -------- + BSF TRISE,RE0 ;LED=OFF + BCF PORTB,RB4 ;PIC INT = LOW + BTFSC TRISD,RD0 ;POWER OFF? + BRA POWER_OFF_I ;JA-> +; POWER IS ON: +; BLINKEN 4X/SEC WENN RESET + BTFSC TRISD,RD7 ;RESET AKTIV? + BRA PINGS ;NEIN-> + BTFSC TICKS,0 ;UNGERADE TICKS? + BCF TRISE,RE0 ;NEIN->LED=ON + BRA PINGS +POWER_OFF_I + MOVLW .3 + ANDWF SECS,0 ;4 SEKUNDEN AUSMASKIEREN + BNZ PINGS ;NICHT MODULO4 -> + MOVLW .7 + CPFSEQ TICKS ;7. TICK? + BRA POWER_OFF_I2 ;NEIN-> + BCF TRISE,RE0 ;JA->LED=ON +POWER_OFF_I2 + MOVLW .30 ; WENIGER ALS 30 SEC SEIT LETZTEM SPANNUNGSFEHLER? + CPFSLT U_ERR_TIME + BRA PINGS ;NEIN-> + MOVLW .5 + CPFSEQ TICKS ;5. TICK? + BRA PINGS ;NEIN-> + BCF TRISE,RE0 ;JA->LED=ON +PINGS + CALL TASTE ;UP TASTE +; TASTE LOSGELASSEN? + MOVLW RESET_OFF_TIME + CPFSGT TASTE_OFF_TIME ;TASTE LÄNGER ALS 2 SEC LOSGELASSEN? + BRA PINGW ;NEIN-> + BSF TRISD,RD7 ;JA-> #RSTI INAKTIV =HIGH + BTFSS TRISD,RD0 ;POWER ON? + CALL SERIAL_ON ;ja->SERIELL EINSCHALTEN +;--TICKS=125MS +PINGW + INCF TICKS ;inc ticks + BTFSS TRISD,RD0 ;POWER ON? + BRA PINGS2 ;JA-> + MOVLW 20 + CPFSLT U_POWER_IN ;LADEGERÄT ANGESCHLOSSEN? + BRA PINGS2 ;->JA LED HELLER + MOVLW TIME_MAX ;>=MAXIMALZEIT? + CPFSLT U_ERR_TIME ;SEIT SPANNUNGSFEHLER + BSF TRISE,RE0 ;JA -> LED OFF +PINGS2 + MOVLW .7 ; 7? + CPFSGT TICKS + RETFIE ; NEIN ->RETURN +SEKUNDEN +;led blinken POWER ON----------------------------------------- + BTFSS TRISD,RD0 ;POWER ON? + BCF TRISE,RE0 ;JA -> LED_ON +;TIMER U_ERR ERHÖHEN + MOVLW TIME_MAX ;>=MAXIMALZEIT? + CPFSGT U_ERR_TIME ;SEIT SPANNUNGSFEHLER + INCF U_ERR_TIME ;NEIN ERHÖHEN +;SPANNUNGSFEHLER BEARBEITEN ---------------------------------------- + MOVLW U_ERR_PW_AUS ;POWER AUS ZEIT? + CPFSEQ U_ERR_TIME ; + BRA SEK_NPA ;NEIN + CALL POWER_AUS ;JA AUSSCHALTEN +;-------------------------------------------------------- +SEK_NPA +;SPANNUNG POWER IN MESSEN + MOVLW B'00000001' ;KANAL 0, AD ON + MOVWF ADCON0 ; + BSF ADCON0,1 ;GO +SEK_2 + BTFSC ADCON0,1 ;FERTIG? + BRA SEK_2 ;NEIN + MOVFF ADRESH,U_POWER_IN ;OK WERT EINTRAGEN + +;SPANNUNG 2V5 MESSEN -> U_ERR TIMER NICHT ERHÖHEN WENN ÜBER 3.2V RESP. WIEDER -1 + BTFSC TRISD,RD0 ;POWER ON? + BRA SEK_4 ;NEIN NICHT MESSEN + + MOVLW B'00001101' ;KANAL 3, AD ON + MOVWF ADCON0 ; + BSF ADCON0,1 ;GO +SEK_3 + BTFSC ADCON0,1 ;FERTIG? + BRA SEK_3 ;NEIN + MOVLW .200 ;UNTER 3.2V -> WENN WERT ÜBER 78% + CPFSLT ADRESH ;JA -> + BRA SEK_4 ;SONST WEITER +;TIMER U_ERR ERHÖHEN + BTFSS U_ERR,0 ;SPANNUNGSERROR? + BRA SEK_4 ;NEIN + MOVLW TIME_MAX ;>=MAXIMALZEIT? + CPFSGT U_ERR_TIME ;SEIT SPANNUNGSFEHLER + DECF U_ERR_TIME ;NEIN -> -1 +;------------------------------------------------------------- +SEK_4 + CLRF TICKS + INCF SECS ; Increment seconds + MOVLW .59 ; 60 seconds elapsed? + CPFSGT SECS + RETFIE ;RETURN +MINUTEN + CLRF SECS ; Clear seconds + INCF MINS ; Increment minutes + MOVLW .59 ; 60 minutes elapsed? + CPFSGT MINS + RETFIE ;RETURN +STUNDEN + CLRF MINS ; clear minutes + INCF HOURS ; Increment hours + MOVLW .23 ; 24 hours elapsed? + CPFSGT HOURS + RETFIE ;RETURN +TAGE_UND_TAG_DER_WOCHE + CLRF HOURS ; Reset hours + MOVLW .7 + CPFSLT DAY_OF_WEEK + CLRF DAY_OF_WEEK + INCF DAY_OF_WEEK + INCF DAYS + MOVLW .28 + CPFSGT DAYS + RETFIE ;RETURN +MEHR_ALS_28_TAGE + MOVLW .2 + CPFSEQ MONTHS ;FEB? + BRA NOT_FEB ;NEIN-> +FEB + MOVLW .3 + ANDWF YEARS,0 ;SCHALTJAHR + BNZ NEXT_MONTH ;NEIN-> +SCHALTJAHR + MOVLW .29 + CPFSGT DAYS + RETFIE ;RETURN +NEXT_MONTH + MOVLW .1 + MOVWF DAYS + INCF MONTHS + MOVLW 12 + CPFSGT MONTHS + RETFIE ;RETURN +YEAR + MOVLW .1 + MOVWF MONTHS + INCF YEARS + RETFIE ;RETURN +NOT_FEB + MOVLW .30 + CPFSGT DAYS + RETFIE +MEHR_ALS_30_TAGE + MOVLW .4 ;APRIL? + CPFSEQ MONTHS ;SKIP + BRA NOT_APRIL + BRA NEXT_MONTH ;APRIL-> +NOT_APRIL + MOVLW .6 ;JUNI? + CPFSEQ MONTHS + BRA NOT_JUNI + BRA NEXT_MONTH ;JUNI-> +NOT_JUNI + MOVLW .9 ;SEPTEMBER? + CPFSEQ MONTHS + BRA NOT_SEP + BRA NEXT_MONTH ;SEPTEMBER-> +NOT_SEP + MOVLW .11 ;NOVEMBER? + CPFSEQ MONTHS ;SKIP + RETFIE ;SIND MONATE MIT 31 TAGEN-> + BRA NEXT_MONTH ;SONST NOVEMBER-> +;**********************************************************************************************""""""""""""" +; ENDE MAIN +;**********************************************************************************************""""""""""""" +;**********************************************************************************************""""""""""""" +; EXTERN_SUBOUTINES FOGEN AB 0x1000 DIE SPÄTER EINPROGRAMMIERT WERDEN +;**********************************************************************************************""""""""""""" + end diff --git a/MLAB/firebee1/firebee1.cof b/MLAB/firebee1/firebee1.cof new file mode 100644 index 0000000000000000000000000000000000000000..d3b53d4f93c350bd8aa7b64c1e68c9480c001170 GIT binary patch literal 13640 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 AH2?qr literal 0 HcmV?d00001 diff --git a/MLAB/firebee1/firebee1.err b/MLAB/firebee1/firebee1.err new file mode 100644 index 0000000..e69de29 diff --git a/MLAB/firebee1/firebee1.hex b/MLAB/firebee1/firebee1.hex new file mode 100644 index 0000000..bef9bef --- /dev/null +++ b/MLAB/firebee1/firebee1.hex @@ -0,0 +1,82 @@ +:020000040000FA +:020000007FD0AF +:020002000000FC +:040008000CEF00F009 +:08001800E06A9DCF4EF09E50FE +:100020004E174EB115D24EBD11D24EB918D14EBB9E +:100030002BD1A0CF4FF0A1504F174FB5F3D11000E7 +:100040009DCF4EF09E504E174E67E6D7A0CF4FF093 +:10005000A1504F174F67E0D7FB0E4D63100001EF23 +:0200600010F09E +:10010000E06AF26AD06A9D6AA06A9E6AA16A9F6AE2 +:10011000A26A9B6A720ED36E806AFF0E926E816A2B +:10012000936E826A946E836A956E010E846A966EEF +:100130009B0ED26E030E466F140E476FA084E9EC3F +:1001400000F0F00ECF6ECE6A0F0ECD6E416B006BDD +:10015000026B0C0E046F010E066F010E076F080E86 +:10016000086F2A0E096F426B436B446B9D80456B91 +:10017000C26A090EC16E000EC06E486BB06A100EE6 +:10018000AF6E040EAC6E900EAB6E080EB86E4C6B7C +:10019000F06AF00EF16EC00EF26E120ED36EFB0E10 +:1001A0004C6302D0D7ED00F095B00300F8D709EC0E +:1001B00010F01300720ED36E929E959E93989590B8 +:1001C0000AD0120ED36E9580958E9388928E446BD2 +:1001D00004D095B002D09298120092881200AC9A86 +:1001E0009D9A9E9A9D989E981200ACBA1200AC8A75 +:1001F000FF0E4A6F4B6BAECF49F0AECF49F09E98E1 +:100200009E9A9D8A0000120083A20BD0426BA00E22 +:100210004365432B040E44651200958EF5EC00F007 +:100220001200150E4261120095B00ED0020E42630C +:1002300003D0020EAD6E0CD0020E42610CD0140E33 +:100240004261E1EC00F004D0020E4261DAEC00F011 +:10025000436B422B1200959EEFEC00F0F0D7810E1D +:100260004B6309D0EECFADFF3F0EE96410004B6B3E +:100270009D989E981000A10E4B6305D0EECFADFF68 +:10028000C30EE9641000F3D7AECF49F0FC0E4A610B +:1002900097D0820E4A6306D049C0E6FF3F0EE16068 +:1002A0004A6B1000496304D04A6F10EE00F0100052 +:1002B000010E496309D000EE00F09E989D88810EE2 +:1002C0004B6FAD6E4A6B1000040E496314D0000EE4 +:1002D000F86E200EF76E000EF66E0800F5CF4DF0AA +:1002E000000EF86E200EF76E100EF66E0800F5CFB9 +:1002F0004CF04A6B1000050E496304D04D6B4C6BFB +:100300004A6B1000A00E496304D04A6F11EE80F0D2 +:1003100010004A631DD049C0E6FF820EE16001D0A3 +:10032000100011EE80F0E6CFF8FFE6CFF7FFE6CF42 +:10033000F6FFC20E0900F5CFE6FFE162FBD701EE42 +:1003400080F09E989D88A10E4B6FAD6E4A6B100099 +:10035000A20E4A632DD049C0E6FF420EE1601000B4 +:1003600011EE00F0E6CFF8FF000EF8601FD0E6CFE8 +:10037000F7FF200EF8601AD0E6CFF6FFA68EA69CF7 +:10038000A684A688550EA76EAA0EA76EA682420E58 +:10039000E6CFF5FF0F00E160FBD7A68EA69CA684F2 +:1003A000550EA76EAA0EA76EA682A6944A6B1000E1 +:1003B000496304D04A6F11EE00F010004A6B100040 +:1003C000FF0E4A6309D0410E496303D0FE0E4A6F07 +:1003D0001000FF0E4A6F1000FE0E4A6306D0430E57 +:1003E0004963F7D7FD0E4A6F1000FD0E4A6306D031 +:1003F000500E4963EED7FC0E4A6F1000FC0E4A63A4 +:10040000E8D7460E4963E5D7ACA2FED74F0EAD6ED6 +:10041000ACA2FED74B0EAD6EACA2FED7210EAD6ED8 +:100420004A6B100046A30AD046914693070E476FC9 +:10043000170ED26ED2AAFED7A19410004681468331 +:10044000476B030EAD6E9A0ED26EF4D79E9C1000D1 +:10045000F00ECF6E9E9081889680819895B005D0E1 +:1004600095BE11D041B196900ED0030E00150BE150 +:10047000070E416301D096901E0E476104D0050E11 +:10048000416301D0969004EC01F0040E436504D062 +:10049000958E95A0F5EC00F0412B95A006D0200E8E +:1004A000486103D0A00E47619680070E4165100099 +:1004B00095A09690A00E4765472B050E476302D086 +:1004C000E1EC00F0010EC26EC282C2B2FED7C4CF10 +:1004D00048F095B00DD00D0EC26EC282C2B2FED7EA +:1004E000C80EC46005D046A103D0A00E47654707DB +:1004F000416B002B3B0E00651000006B022B3B0E86 +:1005000002651000026B042B170E04651000046BCB +:10051000070E0661066B062B072B1C0E07651000E5 +:10052000020E086310D0030E091503E11D0E0765C6 +:100530001000010E076F082B120E08651000010E47 +:10054000086F092B10001E0E07651000040E0863CB +:1005500001D0EFD7060E086301D0EBD7090E086370 +:0C05600001D0E7D70B0E08631000E3D7B2 +:00000001FF diff --git a/MLAB/firebee1/firebee1.lst b/MLAB/firebee1/firebee1.lst new file mode 100644 index 0000000..8b08d7e --- /dev/null +++ b/MLAB/firebee1/firebee1.lst @@ -0,0 +1,1979 @@ +MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 1 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + + 00001 ;********************************************************** + 00002 ;* firebee1 PIC18F4321 MAIN FILE + 00003 ;********************************************************** + 00004 ;* CREATED BY FREDI ASCHWANDEN + 00005 ;* DATE 22.9.2009 + 00006 ;********************************************************** + 00007 list PE=18f4520 ;EXTENDED INSTRUCTION SET + 00008 include "P18f4520.inc" + 00001 LIST + 00002 + 00003 ;========================================================================== + 00004 ; MPASM PIC18F4520 processor include + 00005 ; + 00006 ; (c) Copyright 1999-2007 Microchip Technology, All rights reserved + 00007 ;========================================================================== + 00008 + 01336 LIST + 00009 ;------------------------ Equates --------------------------; + 00010 ;Register addresses + 00011 ;BANK 0 + 00000000 00012 SECS equ 0x00 + 00000001 00013 SECS_ALARM EQU 0x01 + 00000002 00014 MINS equ 0x02 + 00000003 00015 MINS_ALRAM EQU 0x03 + 00000004 00016 HOURS equ 0x04 + 00000005 00017 HOURS_ALARM EQU 0x05 + 00000006 00018 DAY_OF_WEEK EQU 0x06 + 00000007 00019 DAYS EQU 0x07 + 00000008 00020 MONTHS EQU 0x08 + 00000009 00021 YEARS EQU 0x09 ;offset vom 1968 + 0000000A 00022 REGA EQU 0x0A + 0000000B 00023 REGB EQU 0x0B + 0000000C 00024 REGC EQU 0x0C + 0000000D 00025 REGD EQU 0x0D + 0000000E 00026 RTC_RAM EQU 0x0E ; bis 0x3F + 00000040 00027 free equ 0x40 + 00000041 00028 TICKS equ 0x41 ;125MS + 00000042 00029 TASTE_ON_TIME EQU 0x42 + 00000043 00030 TASTE_OFF_TIME EQU 0x43 + 00000044 00031 POWER_ON_TIME EQU 0x44 + 00000045 00032 AD_KANAL EQU 0x45 + 00000046 00033 U_ERR EQU 0x46 ;SPANNUNGSFEHLER WENN BIT 0=1, BIT1=1 WA + RTEN AUF GELADEN + 00000047 00034 U_ERR_TIME EQU 0x47 ;ZEIT SEIT SPANNUNGSFEHLER + 00000048 00035 U_POWER_IN EQU 0x48 ;SPANNUNG POWER IN 1V CA. 6E + 00000049 00036 RX_B EQU 0x49 ;RECEIVED BYT + 0000004A 00037 RX_STATUS EQU 0x4A ;STATUS: 0x00=WAIT AUF MCF COMMANDO, 0x8 + 2=EMPFANGE 64BYT FROM RTC + 0000004B 00038 TX_STATUS EQU 0x4B ;STATUS: 0x00=WAIT 0x81=SENDE 64BYT FROM + RTC + 0000004C 00039 GO_SUB EQU 0x4C ;WENN GLEICH 0xFB DANN SUBROUTINE AUSFÜH + REN + 0000004D 00040 GO_INT EQU 0x4D ;WENN GLEICH 0xFB DANN SUBROUTINE AUSFÜH + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 2 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + + REN + 0000004E 00041 EAPIR1 EQU 0x4E ;INTERRUPT ACTIV UND ENABLE + 0000004F 00042 EAPIR2 EQU 0x4F ;INTERRUPT ACTIV UND ENABLE + 00043 ;BANK 1 AB 0x100 + 00000100 00044 RX_BUFFER EQU 0x100 ;0x80 BYT BUFFER BIS 0x17F BANK + 00000180 00045 TX_BUFFER EQU 0x180 ;0X80 BYT BUFFER BIS 0x1FF BANK + 00046 + 00047 ;-------------------------------------------------------------- + 00000002 00048 SEND_RTC_TIME EQU .2 ;0.25 SEC (EINHEIT IST EIN TICK = 128MS + 00000002 00049 RESET_ON_TIME EQU .2 ;0.25 SEC (EINHEIT IST EIN TICK = 128MS + 00000004 00050 RESET_OFF_TIME EQU .4 ;0.5 SEC (EINHEIT IST EIN TICK = 128MS + 00000014 00051 OFF_TIME EQU .20 ;2.5 SEC (EINHEIT IST EIN TICK = + 128MS + 00000002 00052 ON_TIME EQU .2 ;0.25 SEC (EINHEIT IST EIN TICK + = 128MS + 000000F0 00053 TIMER_HB EQU .240 ;256- (32768Hz PRO 1/8SEC = 4096TICKS/25 + 6) => 256-16=240 (resp 256-16/4 (wenn osco) = 252) + 000000A0 00054 TIME_MAX EQU .160 ;MAXIMALTIME + 00000005 00055 U_ERR_PW_AUS EQU .5 ;5 SEC + 00056 ;SERIEL + 000000FF 00057 SYNC1 EQU 0FFh + 00000041 00058 SYNC1_DATA EQU 'A'; + 000000FE 00059 SYNC2 EQU 0FEh + 00000043 00060 SYNC2_DATA EQU 'C'; + 000000FD 00061 SYNC3 EQU 0FDh + 00000050 00062 SYNC3_DATA EQU 'P'; + 000000FC 00063 SYNC4 EQU 0FCh + 00000046 00064 SYNC4_DATA EQU 'F'; + 00000001 00065 REQ_RTCD_FROM_PIC EQU 01h ;RTC AND NVRAM DATEN VOM PIC ANFORDERN + 00000081 00066 RTCD_FROM_PIC EQU 81h ;RTC AND NVRAM DATEN HEADER UND STATUS + 00000002 00067 REQ_RTCD_FROM_MCF EQU 02h ;RTC AND NVRAM DATEN VOM MCF ANFORDERN + 00000082 00068 RTCD_FROM_MCF EQU 82h ;RTC AND NVRAM DATEN HEADER UND STATUS + 00000003 00069 U_MIN_TO_MCF EQU 03h ;UNTERSPANNUNGSMITTEILUNG AN PROCESSOR + 00000004 00070 EXT_SUB_GO EQU 04h ;SERIELL CODE UM SUBROUTINEN/INT + ERRUPTS ZU AKTIVIEREN + 00000005 00071 EXT_SUB_STOP EQU 05h ;SERIELL CODE UM SUBROUTINEN/INTERRUPTS + ZU STOPPEN + 00000012 00072 CLK_SLEEP EQU B'00010010' ;125kHz intern, SLEEP MODE + 00000072 00073 CLK_ACTIV EQU B'01110010' ;inTernal CLK=8MHz, SLEEP MODE, + SLEEP MODE + 000000FB 00074 EXT_CODE EQU 0xFB ;CODE FÜR EXTERNE SUBROUTINEN/INTERRUPTS + AUSFÜHREN (FireBee!) + 00002000 00075 EXTERN_INT_ADR EQU 0x2000 ;HIER MUSS 0xFB STEHEN WENN EXTERNE INTERRUPTS A + USFÜHRBAR + 00002002 00076 EXTERN_INTERRUPTS EQU 0x2002 ;STARTPUNKT EXTERNE SUBROUTINES + 00002010 00077 EXTERN_SUB_ADR EQU 0x2010 ;HIER MUSS 0xFB STEHEN WENN EXTERNE SUBROUTINES + AUSFÜHRBAR + 00002012 00078 EXTERN_SUBROUTINES EQU 0x2012 ;STARTPUNKT EXTERNE SUBROUTINES + 000000A0 00079 REQ_BLOCK EQU 0xA0 ;BLOCK DATEN LESEN -> CODE UND 3 BYTS AD + RESSE = TOTAL 4 BYTES + 000000A1 00080 READ_BLOCK EQU 0xA1 ;PROGRAMM BLOCK PIC->MCF -> CODE, 3 BYTS + ADRESSE UND 64 BYTS DATEN = TOTAL 68 BYTES + 000000A2 00081 WRITE_BLOCK EQU 0xA2 ;PROGRAMM BLOCK MCF->PIC -> CODE, 3 BYTS + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 3 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + + ADRESSE UND 64 BYTS DATEN = TOTAL 68 BYTES + 00000022 00082 PRG_OK_PIC EQU 0x22 ;PROGRAMMIERUNG BLOCK FERTIG + 00083 ;**********************************************************************************************""""""""" + """" + 00084 ; Start at the reset vector + 00085 Reset_Vector code 0x000 +000000 D??? 00086 BRA KALT_START + 00087 ;-------------------------------------------------------------- + 00088 HIGH_INT_VEC code 0x0008 +000008 EF0C F000 00089 GOTO 0x18 + 00090 + 00091 LOW_INT_VEC code 0x0018 +000018 00092 INT_HANDLER +000018 6AE0 00093 CLRF BSR ;IMMER ACCESS BANK + 00094 ;SETZEN GRUPPE 1 +00001A CF9D F04E 00095 MOVFF PIE1,EAPIR1 ;INTERRUPTS HOLEN +00001E 509E 00096 MOVF PIR1,0 ;MASKE +000020 174E 00097 ANDWF EAPIR1 ;ACTIVE SETZEN +000022 B14E 00098 BTFSC EAPIR1,TMR1IF ;uhr interrupt? +000024 D??? 00099 BRA RTC_ISR ;ja-> +000026 BD4E 00100 BTFSC EAPIR1,ADIF ;AD INTERRUTP? +000028 D??? 00101 BRA AD_ISR ;JA-> +00002A B94E 00102 BTFSC EAPIR1,TXIF ;seriell TX? +00002C D??? 00103 BRA TX_ISR ;JA-> +00002E BB4E 00104 BTFSC EAPIR1,RCIF ;seriell RX? +000030 D??? 00105 BRA RX_ISR ;JA-> + 00106 + 00107 ;SETZEN GRUPPE 2 +000032 CFA0 F04F 00108 MOVFF PIE2,EAPIR2 ;INTERRUPTS HOLEN +000036 50A1 00109 MOVF PIR2,0 ;MASKE +000038 174F 00110 ANDWF EAPIR2 ;ACTIVE SETZEN + 00111 +00003A B54F 00112 BTFSC EAPIR2,HLVDIF ;UNDER/OVERVOLTAGE DETECT +00003C D??? 00113 BRA HLVD_ISR ;JA-> +00003E 0010 00114 RETFIE + 00115 + 00116 ;TESTEN UND SETZEN GRUPPE 1 +000040 CF9D F04E 00117 MOVFF PIE1,EAPIR1 ;INTERRUPTS HOLEN +000044 509E 00118 MOVF PIR1,0 ;MASKE +000046 174E 00119 ANDWF EAPIR1 ;ACTIVE SETZEN +000048 674E 00120 TSTFSZ EAPIR1 +00004A D??? 00121 BRA INT_HANDLER + 00122 ;TESTEN UND SETZEN GRUPPE 2 +00004C CFA0 F04F 00123 MOVFF PIE2,EAPIR2 ;INTERRUPTS HOLEN +000050 50A1 00124 MOVF PIR2,0 ;MASKE +000052 174F 00125 ANDWF EAPIR2 ;ACTIVE SETZEN +000054 674F 00126 TSTFSZ EAPIR2 +000056 D??? 00127 BRA INT_HANDLER + 00128 +000058 0EFB 00129 MOVLW EXT_CODE ;GO EXTERNE SUBROUTINEN AKTIV? +00005A 634D 00130 CPFSEQ GO_INT ;SKIP WENN JA +00005C 0010 00131 RETFIE +00005E EF01 F010 00132 GOTO EXTERN_INTERRUPTS ;REGISTER SICHERN UND STARTEN + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 4 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + + 00133 ;**********************************************************************************************""""""""" + """" + 00134 ; Start application beyond vector area + 00135 CODE 0x0100 +000100 00136 KALT_START + 00137 ;RESET MODE +000100 6AE0 00138 CLRF BSR ;BANK 0 + 00139 ;ALLE INT AUS UND RÜCKSETZEN +000102 6AF2 00140 CLRF INTCON ;alle INTERRUPT AUS +000104 6AD0 00141 CLRF RCON ;INT PRIORITY AUS +000106 6A9D 00142 CLRF PIE1 ;MASK DISABLE +000108 6AA0 00143 CLRF PIE2 +00010A 6A9E 00144 CLRF PIR1 ;INT ACT AUS +00010C 6AA1 00145 CLRF PIR2 +00010E 6A9F 00146 CLRF IPR1 ;LOW PRIORITY +000110 6AA2 00147 CLRF IPR2 + 00148 ; clock + 00149 ; MOVLW B'01000000' ;32MHZ + 00150 ; MOVWF OSCTUNE +000112 6A9B 00151 CLRF OSCTUNE + 00152 ;CLOCK +000114 0E72 00153 MOVLW CLK_ACTIV +000116 6ED3 00154 MOVWF OSCCON + 00155 ; div init + 00156 ;SET PORT A: **7:#master/0.409*5V0 **6:PIC_AMKB_RX **5:PIC_SWTICH **4:HIGH_CHARGE_CURRENT **3:2V5 *2:3V3 + /2 **1:1V25 **0:POWER_IN/11 +000118 6A80 00157 CLRF PORTA ;#master(7)=0, REST=0 +00011A 0EFF 00158 MOVLW B'11111111' ;DIRECTION: alles auf Input +00011C 6E92 00159 MOVWF TRISA + 00160 ;SET PORT B: **7:PGD **6:PGC **5:PGM **4:PIN_INT,1V5 **3:GAME PORT PIN10 **2:GAME PORT PIN11 **1:GAME PO + RT PIN6 **0: GAME PORT PIN5 +00011E 6A81 00161 CLRF PORTB ;ALLES AUF 0 +000120 6E93 00162 MOVWF TRISB + 00163 ;SET PORT C: **7: PIC_RX **6:PIC_TX **5:AMKB_TX **4:GAME PORT PIN4 **3:GAME PORT PIN12 **2:GAME PORT PIN + 13 **1+0: OCS 32K768Hz +000122 6A82 00164 CLRF PORTC +000124 6E94 00165 MOVWF TRISC + 00166 ;SET PORT D: **7:#RSTI **6:GAME PORT PIN3 **5:PS2 KB CLK **4:PS2 MS CLK **3:PS2 KB DATA **2:MS DATA **1: + TASTER **0:POWER ON/OFF (0=ON) + 00167 ; SET TASTE UND POWER +000126 6A83 00168 CLRF PORTD ;ALLES AUF 0 +000128 6E95 00169 MOVWF TRISD ;ALLES AUF INPUT + 00170 ;SET PORT E: **3:#MCLR **2:#PCI_RESET **1:PCI 3V3 **0:PIC LED (0=ON) +00012A 0E01 00171 MOVLW B'00000001' ;LED OFF +00012C 6A84 00172 CLRF PORTE ;ALLES AUF 0 +00012E 6E96 00173 MOVWF TRISE ;ALLES AUF INPUT + 00174 ;-------------------------- + 00175 ; set OVERvoltage detekt +000130 0E9B 00176 MOVLW B'10011011' ;INT WENN ÜBER 3.9V +000132 6ED2 00177 MOVWF HLVDCON +000134 0E03 00178 MOVLW B'00000011' ;ERRORS ON, WAIT AUF LADEN +000136 6F46 00179 MOVWF U_ERR +000138 0E14 00180 MOVLW .20 ;SEIT 20SEC ERROR + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 5 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + +00013A 6F47 00181 MOVWF U_ERR_TIME ;SETZEN +00013C 84A0 00182 BSF PIE2,HLVDIE ;Enable interrupt + 00183 ;INTIALISIERUNGSPROGAMME +00013E EC?? F??? 00184 CALL LADESTROM ;LADESTROM EINSTELLEN + 00185 ;UHR initialisieren +000142 0EF0 00186 MOVLW TIMER_HB ;Preload TMR1 register +000144 6ECF 00187 MOVWF TMR1H ; +000146 6ACE 00188 CLRF TMR1L ;=0 +000148 0E0F 00189 MOVLW B'00001111' ; 8 BIT, osc1 enable, TIMER MODE, TIMMER ENABLE +00014A 6ECD 00190 MOVWF T1CON ; SET +00014C 6B41 00191 CLRF TICKS ; 1/8 sec register +00014E 6B00 00192 CLRF SECS ; Initialize timekeeping registers +000150 6B02 00193 CLRF MINS ; +000152 0E0C 00194 MOVLW .12 +000154 6F04 00195 MOVWF HOURS +000156 0E01 00196 MOVLW .1 +000158 6F06 00197 MOVWF DAY_OF_WEEK +00015A 0E01 00198 MOVLW .1 +00015C 6F07 00199 MOVWF DAYS +00015E 0E08 00200 MOVLW .8 +000160 6F08 00201 MOVWF MONTHS +000162 0E2A 00202 MOVLW .42 +000164 6F09 00203 MOVWF YEARS ;MONTAG 19.7.2010 12:00:00 (JAHR-1968) +000166 6B42 00204 CLRF TASTE_ON_TIME +000168 6B43 00205 CLRF TASTE_OFF_TIME +00016A 6B44 00206 CLRF POWER_ON_TIME +00016C 809D 00207 BSF PIE1,TMR1IE ;Enable Timer1 interrupt + 00208 ;AD WANDLER INITIALISIEREN +00016E 6B45 00209 CLRF AD_KANAL ;BEI 0 BEGINNEN +000170 6AC2 00210 CLRF ADCON0 ;AD MOUDUL AUS +000172 0E09 00211 MOVLW B'00001001' ;VREF=VDD,ANALOG INPUT AN0-AN5 +000174 6EC1 00212 MOVWF ADCON1 +000176 0E00 00213 MOVLW B'00000000' ;LINKSSBÜNDIG,0 TAD,CLOCK=Fosc/2 +000178 6EC0 00214 MOVWF ADCON2 + 00215 ; BSF PIE1,ADIE ;INTERRUPT ENABLE +00017A 6B48 00216 CLRF U_POWER_IN ;WERT AUF 0 VOLT + 00217 ; seriell initialisieren +00017C 6AB0 00218 CLRF SPBRGH +00017E 0E10 00219 MOVLW .16 +000180 6EAF 00220 MOVWF SPBRG ;BAUDE RATE = 115K +000182 0E04 00221 MOVLW B'00000100' ;TX AUS, ASYNC HIGH SPEED +000184 6EAC 00222 MOVWF TXSTA +000186 0E90 00223 MOVLW B'10010000' ;SERIEL EIN,RX EIN, +000188 6EAB 00224 MOVWF RCSTA +00018A 0E08 00225 MOVLW B'00001000' ;16BIT BRG, RISING EDGE INTERRUPT +00018C 6EB8 00226 MOVWF BAUDCON ;SETZEN + 00227 ;EXTERNER SUBROUTINES +00018E 6B4C 00228 CLRF GO_SUB + 00229 ; interrupts +000190 6AF0 00230 CLRF INTCON3 ;EXTER INTERRUPT AUS, low priority +000192 0EF0 00231 MOVLW B'11110000' ;PORT B PULLUPS AUS, EXT INT ON RISING EDGE, TMR0 AND BP + IP Low priority +000194 6EF1 00232 MOVWF INTCON2 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 6 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + +000196 0EC0 00233 MOVLW B'11000000' ;global on, PERIPHERAL INT on +000198 6EF2 00234 MOVWF INTCON + 00235 ;CLOCK +00019A 0E12 00236 MOVLW CLK_SLEEP ;GEHT JETZT IN SLEEP MODE +00019C 6ED3 00237 MOVWF OSCCON + 00238 ;------------------------------------------------------------------------- + 00239 ;---------------------------- MAIN LOOP ------------------------------------------------- + 00240 ;------------------------------------------------------------------------- +00019E 00241 MAIN +00019E 0EFB 00242 MOVLW EXT_CODE ;GO EXTERNE SUBROUTINEN AKTIV? +0001A0 634C 00243 CPFSEQ GO_SUB ;SKIP WENN JA +0001A2 D??? 00244 BRA WARTEN ;SONST WARTEN +0001A4 ED00 F000 00245 CALL MAIN2,1 ;REGISTER SICHERN UND STARTEN +0001A8 00246 WARTEN +0001A8 B095 00247 BTFSC TRISD,RD0 ;SKIP IF POWER ON +0001AA 0003 00248 SLEEP ;SLEPP BIS ZUM NÄCHSTEN INTERRUPT +0001AC D??? 00249 BRA MAIN +0001AE 00250 MAIN2 +0001AE EC09 F010 00251 CALL EXTERN_SUBROUTINES ;EXTERNE SUBROUTINEN AUSFÜHREN AN STELLE 0 MUSS 0xFA STEHEN SONS + T UNGÜLTIG +0001B2 0013 00252 RETURN 1 ;RETURN MIT REGISTER ZURÜCK + 00253 ;**********************************************************************************************""""""""" + """" + 00254 ;--------------------------- subroutines ------------------------------------------------- + 00255 ;**********************************************************************************************""""""""" + """" + 00256 ;POWER ON/OFF +0001B4 00257 POWER_EIN + 00258 ;CLOCK +0001B4 0E72 00259 MOVLW CLK_ACTIV +0001B6 6ED3 00260 MOVWF OSCCON + 00261 +0001B8 9E92 00262 BCF TRISA,RA7 ;CLOCK EINSCHALTEN +0001BA 9E95 00263 BCF TRISD,RD7 ;#RSTI AKTIVIEREN = LOW +0001BC 9893 00264 BCF TRISB,RB4 ;PIC_INT AKTIVIEREN +0001BE 9095 00265 BCF TRISD,RD0 ;POWER ON +0001C0 D??? 00266 BRA LS_ON_POWER ;LADESTROM EINSTELLEN +0001C2 00267 POWER_AUS + 00268 ;CLOCK +0001C2 0E12 00269 MOVLW CLK_SLEEP +0001C4 6ED3 00270 MOVWF OSCCON + 00271 +0001C6 8095 00272 BSF TRISD,RD0 ;POWER OFF +0001C8 8E95 00273 BSF TRISD,RD7 ;#RSTI DEAKTIVIEREN +0001CA 8893 00274 BSF TRISB,RB4 ;PIC INT DEAKTIVIEREN +0001CC 8E92 00275 BSF TRISA,RA7 ;CLOCK DEAKTIVIEREN +0001CE 6B44 00276 CLRF POWER_ON_TIME ;RÜCKSETZEN +0001D0 D??? 00277 BRA LS_OFF_POWER ;LADESTROM EINSTELLEN + 00278 ;LADESTROM EINSTELLEN ---------------------------- +0001D2 00279 LADESTROM +0001D2 B095 00280 BTFSC TRISD,RD0 ; ONPOWER? +0001D4 D??? 00281 BRA LS_OFF_POWER ; NEIN-> +0001D6 00282 LS_ON_POWER ;GROSSER LADESTROM 5A + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 7 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + +0001D6 9892 00283 BCF TRISA,RA4 ;10K ON +0001D8 0012 00284 RETURN +0001DA 00285 LS_OFF_POWER ;KLEINER LADESTROM_MIN 1.85A +0001DA 8892 00286 BSF TRISA,RA4 ;10K OFF +0001DC 0012 00287 RETURN + 00288 ;--------------------------------------------------- + 00289 ;SERIELL AUS/EIN +0001DE 00290 SERIAL_OFF +0001DE 9AAC 00291 BCF TXSTA,TXEN ;TX AUS +0001E0 9A9D 00292 BCF PIE1,RCIE ;DISABLE RX interrupt +0001E2 9A9E 00293 BCF PIR1,RCIF ;CLEAR RX interrupt +0001E4 989D 00294 BCF PIE1,TXIE ;DISABLE TX interrupt +0001E6 989E 00295 BCF PIR1,TXIF ;CLEAR TX interrupt +0001E8 0012 00296 RETURN +0001EA 00297 SERIAL_ON +0001EA BAAC 00298 BTFSC TXSTA,TXEN ;SCHON EIN? +0001EC 0012 00299 RETURN ;JA-> +0001EE 8AAC 00300 BSF TXSTA,TXEN ;TX EIN +0001F0 0EFF 00301 MOVLW SYNC1 +0001F2 6F4A 00302 MOVWF RX_STATUS ;AUF SYNC WARTEN +0001F4 6B4B 00303 CLRF TX_STATUS +0001F6 CFAE F049 00304 MOVFF RCREG,RX_B ;RCREG LEEREN +0001FA CFAE F049 00305 MOVFF RCREG,RX_B ;RCREG LEEREN +0001FE 989E 00306 BCF PIR1,TXIF ;CLEAR TX interrupt +000200 9A9E 00307 BCF PIR1,RCIF ;INTERRUPT RX FLAG LÖSCHEN +000202 8A9D 00308 BSF PIE1,RCIE ;ENABLE RX interrupt +000204 0000 00309 NOP +000206 0012 00310 RETURN + 00311 ;--------------------------------------------------------------------- + 00312 ; TASTENDRUCK +000208 00313 TASTE +000208 A283 00314 BTFSS PORTD,RD1 ;TASTE GEDRÜCKT? +00020A D??? 00315 BRA TG_JA ;->JA + 00316 ;TASTE NICHT GEDRÜCKT ODER LOSGELASSEN +00020C 6B42 00317 CLRF TASTE_ON_TIME ;RÜCKSETZEN + 00318 +00020E 0EA0 00319 MOVLW TIME_MAX ;MAX +000210 6543 00320 CPFSGT TASTE_OFF_TIME ;LÄNGER? +000212 2B43 00321 INCF TASTE_OFF_TIME ;NEIN ERHÖHEN + 00322 +000214 0E04 00323 MOVLW RESET_OFF_TIME ;2SEC +000216 6544 00324 CPFSGT POWER_ON_TIME ;LÄNGER? +000218 0012 00325 RETURN ;NEIN-> + 00326 ;RESET AUFHEBEN +00021A 8E95 00327 BSF TRISD,RD7 ;JA -> #RSTI DEAKTIVIEREN =HIGH +00021C EC?? F??? 00328 CALL SERIAL_ON ;SERIELL EINSCHALTEN +000220 0012 00329 RETURN + 00330 ;TASTE GEDRÜCKT +000222 00331 TG_JA +000222 0E15 00332 MOVLW OFF_TIME+1 +000224 6142 00333 CPFSLT TASTE_ON_TIME ;KÜRZER ALS ONTIME+1 +000226 0012 00334 RETURN ;NEIN->FERTIG +000228 B095 00335 BTFSC TRISD,RD0 ;ONPOWER? + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 8 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + +00022A D??? 00336 BRA TG_OFF_POWER ;NEIN-> +00022C 00337 TG_ON_POWER +00022C 0E02 00338 MOVLW SEND_RTC_TIME ;ZEIT FÜR RTC REQ FROM MCF HOLEN? +00022E 6342 00339 CPFSEQ TASTE_ON_TIME ;TEST +000230 D??? 00340 BRA TG_ON_POWER2 ;NEIN-> +000232 00341 SEND_RTC_REG +000232 0E02 00342 MOVLW REQ_RTCD_FROM_MCF +000234 6EAD 00343 MOVWF TXREG ;SENDEN +000236 D??? 00344 BRA TG_END; +000238 00345 TG_ON_POWER2 +000238 0E02 00346 MOVLW RESET_ON_TIME ; +00023A 6142 00347 CPFSLT TASTE_ON_TIME ;KÜRZER? +00023C D??? 00348 BRA RESETEN +00023E 00349 TG_ON_POWER3 +00023E 0E14 00350 MOVLW OFF_TIME +000240 6142 00351 CPFSLT TASTE_ON_TIME ;KÜRZER ON/OFF TIME? +000242 EC?? F??? 00352 CALL POWER_AUS ;NEIN->POWER OFF +000246 D??? 00353 BRA TG_END +000248 00354 TG_OFF_POWER +000248 0E02 00355 MOVLW ON_TIME +00024A 6142 00356 CPFSLT TASTE_ON_TIME ;KÜRZER ALS ON/OFF TIME? +00024C EC?? F??? 00357 CALL POWER_EIN ;NEIN->POWER ON +000250 00358 TG_END +000250 6B43 00359 CLRF TASTE_OFF_TIME ;RÜCKSETZEN +000252 2B42 00360 INCF TASTE_ON_TIME ;ERHÖHEN +000254 0012 00361 RETURN +000256 00362 RESETEN +000256 9E95 00363 BCF TRISD,RD7 ;NEIN-> #RSTI AKTIVIEREN =LOW -->>>RESET +000258 EC?? F??? 00364 CALL SERIAL_OFF ;SERIELL DEAKTIVIEREN +00025C D??? 00365 BRA TG_ON_POWER3 + 00366 ;**********************************************************************************************""""""""" + """" + 00367 ;----------------------------------------- INTERRUPTS + 00368 ;**********************************************************************************************""""""""" + """" + 00369 ; SERIELL INTERRUPTS + 00370 ;**********************************************************************************************""""""""" + """" + 00371 ;TX +00025E 00372 TX_ISR ;TRANSMIT +00025E 0E81 00373 MOVLW RTCD_FROM_PIC ;RTC DATEN SENDEN? +000260 634B 00374 CPFSEQ TX_STATUS ;SKIP JA +000262 D??? 00375 BRA TX_ISR1 ;NEIN-> +000264 CFEE FFAD 00376 MOVFF POSTINC0,TXREG ;BYT SENDEN +000268 0E3F 00377 MOVLW 0x3F ;SCHON LETZTES BYTS? +00026A 64E9 00378 CPFSGT FSR0L ;SKIP WENN FERTIG +00026C 0010 00379 RETFIE ;NEIN WEITERE SENDEN +00026E 00380 TX_ISR_FERTIG +00026E 6B4B 00381 CLRF TX_STATUS +000270 989D 00382 BCF PIE1,TXIE ;SONST DISABLE interrupt +000272 989E 00383 BCF PIR1,TXIF ;INTERRUPT FLAG LÖSCHEN +000274 0010 00384 RETFIE +000276 00385 TX_ISR1 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 9 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + +000276 0EA1 00386 MOVLW READ_BLOCK ;READ BLOCK? +000278 634B 00387 CPFSEQ TX_STATUS ;SKIP JA +00027A D??? 00388 BRA TX_ISR2 ;NEIN-> +00027C CFEE FFAD 00389 MOVFF POSTINC0,TXREG ;BYT SENDEN +000280 0EC3 00390 MOVLW 0xC3 ;SCHON LETZTES BYTS? +000282 64E9 00391 CPFSGT FSR0L ;SKIP WENN FERTIG +000284 0010 00392 RETFIE ;NEIN WEITERE SENDEN +000286 00393 TX_ISR2 +000286 D??? 00394 BRA TX_ISR_FERTIG + 00395 ;**********************************************************************************************""""""""" + """" + 00396 ;RX +000288 00397 RX_ISR ; BYT RECEIVED +000288 CFAE F049 00398 MOVFF RCREG,RX_B ; BYT HOLEN + 00399 ; MOVFF RX_B,TXREG ; ECHO +00028C 0EFC 00400 MOVLW SYNC4 ;IM SYNC STATUS? +00028E 614A 00401 CPFSLT RX_STATUS ;SKIP WENN NEIN +000290 D??? 00402 BRA RX_SYNC_START ;JA -> ZUERST SYNC EMPFANGEN + 00403 ;--------------- +000292 0E82 00404 MOVLW RTCD_FROM_MCF ; DATEN VOM MCF CODE 0x82? +000294 634A 00405 CPFSEQ RX_STATUS ; WENN JA-> SKIP +000296 D??? 00406 BRA RX_ISR1 ; NEIN-> + 00407 ;64 BYT EMPFANGEN ------------------------------------- +000298 C049 FFE6 00408 MOVFF RX_B,POSTINC1 ;HOLEN -> (CNT+) +00029C 0E3F 00409 MOVLW 0x3F ;64 BYT ÜBERTRAGEN? +00029E 60E1 00410 CPFSLT FSR1L ;NEIN ->SKIP +0002A0 6B4A 00411 CLRF RX_STATUS ;JA FERTIG +0002A2 0010 00412 RETFIE + 00413 ;------------------------------------------------------------------------------------- +0002A4 00414 RX_ISR1 +0002A4 6349 00415 CPFSEQ RX_B ;BLOCK HEADER 0X82? +0002A6 D??? 00416 BRA RX_ISR2 ;NEIN-> +0002A8 6F4A 00417 MOVWF RX_STATUS ;STATUS SETZEN = EMPFANGENES BYT +0002AA EE10 F000 00418 LFSR 1,.0 ;BYT COUNTER AUF O +0002AE 0010 00419 RETFIE +0002B0 00420 RX_ISR2 +0002B0 0E01 00421 MOVLW REQ_RTCD_FROM_PIC ;DATEN SENDEN? +0002B2 6349 00422 CPFSEQ RX_B ;SKIP WENN JA +0002B4 D??? 00423 BRA RX_ISR3 ;SONST NEXT + 00424 ;BLOCK HEADER UND 64 BYT SENDEN ----------------------------------------- +0002B6 EE00 F000 00425 LFSR 0,.0 +0002BA 989E 00426 BCF PIR1,TXIF ;INTERRUPT FLAG LÖSCHEN +0002BC 889D 00427 BSF PIE1,TXIE ;Enable interrupt +0002BE 0E81 00428 MOVLW RTCD_FROM_PIC +0002C0 6F4B 00429 MOVWF TX_STATUS ;STATUS SETZEN +0002C2 6EAD 00430 MOVWF TXREG ;BLOCK HEADER = 0X81 +0002C4 6B4A 00431 CLRF RX_STATUS ;STATUS RÜCKSETZEN +0002C6 0010 00432 RETFIE ;UND WEG + 00433 ;------------------------------------------------------------------------------------- +0002C8 00434 RX_ISR3 +0002C8 0E04 00435 MOVLW EXT_SUB_GO ;EXT SUB FREIGEBEN? +0002CA 6349 00436 CPFSEQ RX_B +0002CC D??? 00437 BRA RX_ISR4 ;NEIN-> + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 10 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + + 00438 ;EXT SUBS FREIGEBEN -------------------------------------------------------------- +0002CE 0E00 00439 MOVLW (EXTERN_INT_ADR & 0xFF0000)>>16 +0002D0 6EF8 00440 MOVWF TBLPTRU +0002D2 0E20 00441 MOVLW (EXTERN_INT_ADR & 0x00FF00)>>8 +0002D4 6EF7 00442 MOVWF TBLPTRH +0002D6 0E00 00443 MOVLW (EXTERN_INT_ADR & 0x0000FF) +0002D8 6EF6 00444 MOVWF TBLPTRL ;ADRESSE SETZEN +0002DA 0008 00445 TBLRD* ;WERT HOLEN (MUSS 0xFB SEIN SONST UNGÜLTIG) +0002DC CFF5 F04D 00446 MOVFF TABLAT,GO_INT ;EXTERNE SUBROUTINES AKTIVIEREN WENN OK +0002E0 0E00 00447 MOVLW (EXTERN_SUB_ADR & 0xFF0000)>>16 +0002E2 6EF8 00448 MOVWF TBLPTRU +0002E4 0E20 00449 MOVLW (EXTERN_SUB_ADR & 0x00FF00)>>8 +0002E6 6EF7 00450 MOVWF TBLPTRH +0002E8 0E10 00451 MOVLW (EXTERN_SUB_ADR & 0x0000FF) +0002EA 6EF6 00452 MOVWF TBLPTRL ;ADRESSE SETZEN +0002EC 0008 00453 TBLRD* ;WERT HOLEN (MUSS 0xFB SEIN SONST UNGÜLTIG) +0002EE CFF5 F04C 00454 MOVFF TABLAT,GO_SUB ;EXTERNE SUBROUTINES AKTIVIEREN WENN OK +0002F2 6B4A 00455 CLRF RX_STATUS ;STATUS RÜCKSETZEN +0002F4 0010 00456 RETFIE ;UND WEG + 00457 ;------------------------------------------------------------------------------------- +0002F6 00458 RX_ISR4 +0002F6 0E05 00459 MOVLW EXT_SUB_STOP ;EXT SUB STOPPEN? +0002F8 6349 00460 CPFSEQ RX_B +0002FA D??? 00461 BRA RX_ISR5 ;NEIN-> + 00462 ;EXT SUBS STOPPEN -------------------------------------------------------------- +0002FC 6B4D 00463 CLRF GO_INT ;STOPPEN +0002FE 6B4C 00464 CLRF GO_SUB ;STOPPEN +000300 6B4A 00465 CLRF RX_STATUS ;STATUS RÜCKSETZEN +000302 0010 00466 RETFIE ;UND WEG + 00467 ;------------------------------------------------------------------------------------- +000304 00468 RX_ISR5 +000304 0EA0 00469 MOVLW REQ_BLOCK ;REQ BLOCK? +000306 6349 00470 CPFSEQ RX_B +000308 D??? 00471 BRA RX_ISR6 ;NEIN-> + 00472 ;REQ BLOCK ---------------------------------------------------------------- +00030A 6F4A 00473 MOVWF RX_STATUS ;STATUS SETZEN = EMPFANGENES BYT +00030C EE11 F080 00474 LFSR 1,TX_BUFFER ;BYT COUNTER AUF TX_BUFFER -> GLEICH EINTRAGEN +000310 0010 00475 RETFIE +000312 00476 RX_ISR6 +000312 634A 00477 CPFSEQ RX_STATUS ;REQ BLOCK ADRESSE EMPFANGFEN? +000314 D??? 00478 BRA RX_ISR7 ;NEIN-> + 00479 ;3 BYT EMPFANGEN ------------------------------------- +000316 C049 FFE6 00480 MOVFF RX_B,POSTINC1 ;HOLEN -> (CNT+) +00031A 0E82 00481 MOVLW 0x82 ;3 BYT ÜBERTRAGEN? (BUFFER BEGINNT BEI 0x180 +00031C 60E1 00482 CPFSLT FSR1L ;NEIN ->SKIP +00031E D??? 00483 BRA RX_RB3BOK +000320 0010 00484 RETFIE +000322 00485 RX_RB3BOK +000322 EE11 F080 00486 LFSR 1,TX_BUFFER ;BYT RX COUNTER AUF TX_BUFFER +000326 CFE6 FFF8 00487 MOVFF POSTINC1,TBLPTRU ;ADRESSE EINTRAGEN +00032A CFE6 FFF7 00488 MOVFF POSTINC1,TBLPTRH +00032E CFE6 FFF6 00489 MOVFF POSTINC1,TBLPTRL +000332 0EC2 00490 MOVLW 0xC2 ;67 BYT ÜBERTRAGEN? (BUFFER BEGINNT BEI 0x180 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 11 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + +000334 00491 RX_RB3B2 +000334 0009 00492 TBLRD *+ ;LESEN UND NEXT +000336 CFF5 FFE6 00493 MOVFF TABLAT,POSTINC1 ;UND EINTRAGEN +00033A 62E1 00494 CPFSEQ FSR1L ;WENN FERTIG ->SKIP +00033C D??? 00495 BRA RX_RB3B2 ;SONST LOOP + 00496 ;BLOCK HEADER 3 BYTS ADRESSE UND 64 BYT SENDEN STARTEN ----------------------------------------- +00033E EE01 F080 00497 LFSR 0,TX_BUFFER ;TX COUNTER AUF TX_BUFFER +000342 989E 00498 BCF PIR1,TXIF ;INTERRUPT FLAG LÖSCHEN +000344 889D 00499 BSF PIE1,TXIE ;Enable interrupt +000346 0EA1 00500 MOVLW READ_BLOCK ;CODE HEADER 0xA1 +000348 6F4B 00501 MOVWF TX_STATUS ;STATUS SETZEN +00034A 6EAD 00502 MOVWF TXREG ;BLOCK HEADER = 0XA1 +00034C 6B4A 00503 CLRF RX_STATUS ;STATUS RÜCKSETZEN +00034E 0010 00504 RETFIE ;UND WEG + 00505 ;------------------------------------------------------------------------------------- +000350 00506 RX_ISR7 +000350 0EA2 00507 MOVLW WRITE_BLOCK ;WRITE BLOCK 0xA2 BYT EMPFANGEN? +000352 634A 00508 CPFSEQ RX_STATUS ;WENN JA-> SKIP +000354 D??? 00509 BRA RX_ISR8 ;NEIN-> + 00510 ;WRITE BLOCK ---------------------------------------------------------------------------- + 00511 ;67 BYT EMPFANGEN ------------------------------------- +000356 C049 FFE6 00512 MOVFF RX_B,POSTINC1 ;HOLEN -> (CNT+) +00035A 0E42 00513 MOVLW 0x42 ;67 BYT ÜBERTRAGEN? +00035C 60E1 00514 CPFSLT FSR1L ;WENN FERTIG ->SKIP +00035E 0010 00515 RETFIE + 00516 ; ADRESSE UND DATEN SIND DA -> PROGRAMMING FLASH +000360 EE11 F000 00517 LFSR 1,RX_BUFFER ;BYT COUNTER AUF RX BUFFER +000364 CFE6 FFF8 00518 MOVFF POSTINC1,TBLPTRU ;TABLE POINTER SETZEN +000368 0E00 00519 MOVLW (EXTERN_INT_ADR & 0xFF0000)>>16 +00036A 60F8 00520 CPFSLT TBLPTRU ;TEST OB WENIGER ALS ERLAUBT +00036C D??? 00521 BRA NO_PROG ;JA-> +00036E CFE6 FFF7 00522 MOVFF POSTINC1,TBLPTRH ;TABLE POINTER SETZEN +000372 0E20 00523 MOVLW (EXTERN_INT_ADR & 0x00FF00)>>8 +000374 60F8 00524 CPFSLT TBLPTRU ;TEST OB WENIGER ALS ERLAUBT +000376 D??? 00525 BRA NO_PROG ;JA-> +000378 CFE6 FFF6 00526 MOVFF POSTINC1,TBLPTRL ;TABLE POINTER SETZEN + 00527 ;EREASE BLOCK +00037C 8EA6 00528 BSF EECON1,EEPGD ; point to Flash program memory +00037E 9CA6 00529 BCF EECON1,CFGS ; access Flash program memory +000380 84A6 00530 BSF EECON1,WREN ; enable write to memory +000382 88A6 00531 BSF EECON1,FREE ; enable Row Erase operation +000384 0E55 00532 MOVLW 55h +000386 6EA7 00533 MOVWF EECON2 ; write 55h +000388 0EAA 00534 MOVLW 0AAh ; write 0AAh +00038A 6EA7 00535 MOVWF EECON2 +00038C 82A6 00536 BSF EECON1,WR ; start erase (CPU stall) +00038E 0E42 00537 MOVLW 0x42 ;67 BYT +000390 00538 WRITE_WORD_TO_HREGS +000390 CFE6 FFF5 00539 MOVFF POSTINC1,TABLAT ; get byte of buffer data +000394 000F 00540 TBLWT+* ; write data, perform a short write to internal + TBLWT holding register. +000396 60E1 00541 CPFSLT FSR1L ;SCHON BEI 67 BYTES? +000398 D??? 00542 BRA WRITE_WORD_TO_HREGS ;NEIN->LOOP + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 12 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + +00039A 00543 PROGRAM_MEMORY +00039A 8EA6 00544 BSF EECON1,EEPGD ; point to Flash program memory +00039C 9CA6 00545 BCF EECON1,CFGS ; access Flash program memory +00039E 84A6 00546 BSF EECON1,WREN ; enable write to memory +0003A0 0E55 00547 MOVLW 55h +0003A2 6EA7 00548 MOVWF EECON2 ; write 55h +0003A4 0EAA 00549 MOVLW 0AAh +0003A6 6EA7 00550 MOVWF EECON2 ; write 0AAh +0003A8 82A6 00551 BSF EECON1,WR ; start program (CPU stall) +0003AA 94A6 00552 BCF EECON1,WREN ; disable write to memory +0003AC 00553 NO_PROG +0003AC 6B4A 00554 CLRF RX_STATUS ;AUF NORMLA SCHALTEN +0003AE 0010 00555 RETFIE ;UND FERTIG + 00556 ;WRITE BLOCK SETZEN? +0003B0 00557 RX_ISR8 +0003B0 6349 00558 CPFSEQ RX_B ;BLOCK HEADER COMMANDOE 0XA2? +0003B2 D??? 00559 BRA RX_ISR9 ;NEIN-> +0003B4 6F4A 00560 MOVWF RX_STATUS ;STATUS SETZEN = EMPFANGENES BYT +0003B6 EE11 F000 00561 LFSR 1,RX_BUFFER ;BYT COUNTER AUF RX BUFFER +0003BA 0010 00562 RETFIE + 00563 ;------------------------------------------------------------------------------------- +0003BC 00564 RX_ISR9 +0003BC 6B4A 00565 CLRF RX_STATUS +0003BE 0010 00566 RETFIE + 00567 ;------------------------------------------------------------------------------------- + 00568 ;SYNC ABWARTEN UND WENN DA "OK!" SENDEN ---------------------------------------------------- + 00569 ;------------------------------------------------------------------------------------- +0003C0 00570 RX_SYNC_START +0003C0 0EFF 00571 MOVLW SYNC1 +0003C2 634A 00572 CPFSEQ RX_STATUS +0003C4 D??? 00573 BRA RX_SYNC2 +0003C6 0E41 00574 MOVLW SYNC1_DATA +0003C8 6349 00575 CPFSEQ RX_B +0003CA D??? 00576 BRA NON_SYNC +0003CC 0EFE 00577 MOVLW SYNC2 +0003CE 6F4A 00578 MOVWF RX_STATUS +0003D0 0010 00579 RETFIE +0003D2 00580 NON_SYNC +0003D2 0EFF 00581 MOVLW SYNC1 +0003D4 6F4A 00582 MOVWF RX_STATUS +0003D6 0010 00583 RETFIE +0003D8 00584 RX_SYNC2 ;TEST AUF SYNC UND DATA 2 +0003D8 0EFE 00585 MOVLW SYNC2 +0003DA 634A 00586 CPFSEQ RX_STATUS +0003DC D??? 00587 BRA RX_SYNC3 ;NICHT SYNC 2 +0003DE 0E43 00588 MOVLW SYNC2_DATA +0003E0 6349 00589 CPFSEQ RX_B +0003E2 D??? 00590 BRA NON_SYNC +0003E4 0EFD 00591 MOVLW SYNC3 +0003E6 6F4A 00592 MOVWF RX_STATUS +0003E8 0010 00593 RETFIE +0003EA 00594 RX_SYNC3 ;TEST AUF SYNC UND DATA 3 +0003EA 0EFD 00595 MOVLW SYNC3 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 13 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + +0003EC 634A 00596 CPFSEQ RX_STATUS +0003EE D??? 00597 BRA RX_SYNC4 ;NICHT SYNC 3 +0003F0 0E50 00598 MOVLW SYNC3_DATA +0003F2 6349 00599 CPFSEQ RX_B +0003F4 D??? 00600 BRA NON_SYNC +0003F6 0EFC 00601 MOVLW SYNC4 +0003F8 6F4A 00602 MOVWF RX_STATUS +0003FA 0010 00603 RETFIE +0003FC 00604 RX_SYNC4 ;TEST AUF SYNC UND DATA 4 +0003FC 0EFC 00605 MOVLW SYNC4 +0003FE 634A 00606 CPFSEQ RX_STATUS +000400 D??? 00607 BRA NON_SYNC ;WIEDER VON VORN +000402 0E46 00608 MOVLW SYNC4_DATA +000404 6349 00609 CPFSEQ RX_B ;SKIP OK +000406 D??? 00610 BRA NON_SYNC ;NICHT SYNC4 DATA +000408 00611 RX_WAIT1 +000408 A2AC 00612 BTFSS TXSTA,TRMT +00040A D??? 00613 BRA RX_WAIT1 +00040C 0E4F 00614 MOVLW 'O' ;SENDE OK! +00040E 6EAD 00615 MOVWF TXREG; +000410 00616 RX_WAIT2 +000410 A2AC 00617 BTFSS TXSTA,TRMT +000412 D??? 00618 BRA RX_WAIT2 +000414 0E4B 00619 MOVLW 'K' ;SENDE OK! +000416 6EAD 00620 MOVWF TXREG; +000418 00621 RX_WAIT3 +000418 A2AC 00622 BTFSS TXSTA,TRMT +00041A D??? 00623 BRA RX_WAIT3 +00041C 0E21 00624 MOVLW '!' +00041E 6EAD 00625 MOVWF TXREG; +000420 6B4A 00626 CLRF RX_STATUS ;OK START NORMAL +000422 0010 00627 RETFIE + 00628 ;**********************************************************************************************""""""""" + """" + 00629 ;SPANNUNGSÜBERWACHUNGS INTERRUPT +000424 00630 HLVD_ISR +000424 A346 00631 BTFSS U_ERR,1 ;WARTEN AUF GELADEN? +000426 D??? 00632 BRA HLVD_LE ;NEIN UNTERSPANNUNG DETEKT-> +000428 9146 00633 BCF U_ERR,0 ;SPANNUNGSFEHLER AUS +00042A 9346 00634 BCF U_ERR,1 ;WARTEN AUF GELADEN=AUS +00042C 0E07 00635 MOVLW U_ERR_PW_AUS+2 ;POWER AUS ÜBERSPRINGEN +00042E 6F47 00636 MOVWF U_ERR_TIME ;ZEIT SETZEN +000430 0E17 00637 MOVLW B'00010111' ;INT WENN UNTER 3.12V +000432 6ED2 00638 MOVWF HLVDCON +000434 00639 WAIT_LVDOK: +000434 AAD2 00640 BTFSS HLVDCON,IVRST ;ABWARTEN BIS AENDERUNG AKTIV +000436 D??? 00641 BRA WAIT_LVDOK +000438 94A1 00642 BCF PIR2,HLVDIF ;INTERRUPT FLAG LÖSCHEN +00043A 0010 00643 RETFIE +00043C 00644 HLVD_LE ;UNTERSPANNUNG +00043C 8146 00645 BSF U_ERR,0 ;ERROR SETZEN +00043E 8346 00646 BSF U_ERR,1 ;WARTEN AUF GELADEN SETZEN +000440 6B47 00647 CLRF U_ERR_TIME ;RÜCKSETZEN + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 14 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + + 00648 ;MESSAGE AN PROCESSOR +000442 0E03 00649 MOVLW U_MIN_TO_MCF +000444 6EAD 00650 MOVWF TXREG ;SENDEN + 00651 +000446 0E9A 00652 MOVLW B'10011010' ;INT WENN ÜBER 3.7V +000448 6ED2 00653 MOVWF HLVDCON +00044A D??? 00654 BRA WAIT_LVDOK + 00655 ;**********************************************************************************************""""""""" + """" + 00656 ;A/D INTERRUPT +00044C 00657 AD_ISR +00044C 9C9E 00658 BCF PIR1,ADIF ;CLEAR INTERRUPT PENDIG +00044E 0010 00659 RETFIE ;RETURN + 00660 ;******************************************************************************************************* + ****** + 00661 ; uhr interrupt ALLE 1/8 SEC +000450 00662 RTC_ISR + 00663 ;UHR WIEDER RÜCKSETZEN UND AKTIVIEREN +000450 0EF0 00664 MOVLW TIMER_HB ;WIEDER AUF STARTWERT +000452 6ECF 00665 MOVWF TMR1H ;SETZEN +000454 909E 00666 BCF PIR1,TMR1IF ;INTERRUPT FLAG LÖSCHEN +000456 8881 00667 BSF PORTB,RB4 ;PIC INT HIGH -------- +000458 8096 00668 BSF TRISE,RE0 ;LED=OFF +00045A 9881 00669 BCF PORTB,RB4 ;PIC INT = LOW +00045C B095 00670 BTFSC TRISD,RD0 ;POWER OFF? +00045E D??? 00671 BRA POWER_OFF_I ;JA-> + 00672 ; POWER IS ON: + 00673 ; BLINKEN 4X/SEC WENN RESET +000460 BE95 00674 BTFSC TRISD,RD7 ;RESET AKTIV? +000462 D??? 00675 BRA PINGS ;NEIN-> +000464 B141 00676 BTFSC TICKS,0 ;UNGERADE TICKS? +000466 9096 00677 BCF TRISE,RE0 ;NEIN->LED=ON +000468 D??? 00678 BRA PINGS +00046A 00679 POWER_OFF_I +00046A 0E03 00680 MOVLW .3 +00046C 1500 00681 ANDWF SECS,0 ;4 SEKUNDEN AUSMASKIEREN +00046E E1?? 00682 BNZ PINGS ;NICHT MODULO4 -> +000470 0E07 00683 MOVLW .7 +000472 6341 00684 CPFSEQ TICKS ;7. TICK? +000474 D??? 00685 BRA POWER_OFF_I2 ;NEIN-> +000476 9096 00686 BCF TRISE,RE0 ;JA->LED=ON +000478 00687 POWER_OFF_I2 +000478 0E1E 00688 MOVLW .30 ; WENIGER ALS 30 SEC SEIT LETZTEM SPANNUNGSFEHLER? +00047A 6147 00689 CPFSLT U_ERR_TIME +00047C D??? 00690 BRA PINGS ;NEIN-> +00047E 0E05 00691 MOVLW .5 +000480 6341 00692 CPFSEQ TICKS ;5. TICK? +000482 D??? 00693 BRA PINGS ;NEIN-> +000484 9096 00694 BCF TRISE,RE0 ;JA->LED=ON +000486 00695 PINGS +000486 EC?? F??? 00696 CALL TASTE ;UP TASTE + 00697 ; TASTE LOSGELASSEN? +00048A 0E04 00698 MOVLW RESET_OFF_TIME + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 15 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + +00048C 6543 00699 CPFSGT TASTE_OFF_TIME ;TASTE LÄNGER ALS 2 SEC LOSGELASSEN? +00048E D??? 00700 BRA PINGW ;NEIN-> +000490 8E95 00701 BSF TRISD,RD7 ;JA-> #RSTI INAKTIV =HIGH +000492 A095 00702 BTFSS TRISD,RD0 ;POWER ON? +000494 EC?? F??? 00703 CALL SERIAL_ON ;ja->SERIELL EINSCHALTEN + 00704 ;--TICKS=125MS +000498 00705 PINGW +000498 2B41 00706 INCF TICKS ;inc ticks +00049A A095 00707 BTFSS TRISD,RD0 ;POWER ON? +00049C D??? 00708 BRA PINGS2 ;JA-> +00049E 0E20 00709 MOVLW 20 +0004A0 6148 00710 CPFSLT U_POWER_IN ;LADEGERÄT ANGESCHLOSSEN? +0004A2 D??? 00711 BRA PINGS2 ;->JA LED HELLER +0004A4 0EA0 00712 MOVLW TIME_MAX ;>=MAXIMALZEIT? +0004A6 6147 00713 CPFSLT U_ERR_TIME ;SEIT SPANNUNGSFEHLER +0004A8 8096 00714 BSF TRISE,RE0 ;JA -> LED OFF +0004AA 00715 PINGS2 +0004AA 0E07 00716 MOVLW .7 ; 7? +0004AC 6541 00717 CPFSGT TICKS +0004AE 0010 00718 RETFIE ; NEIN ->RETURN +0004B0 00719 SEKUNDEN + 00720 ;led blinken POWER ON----------------------------------------- +0004B0 A095 00721 BTFSS TRISD,RD0 ;POWER ON? +0004B2 9096 00722 BCF TRISE,RE0 ;JA -> LED_ON + 00723 ;TIMER U_ERR ERHÖHEN +0004B4 0EA0 00724 MOVLW TIME_MAX ;>=MAXIMALZEIT? +0004B6 6547 00725 CPFSGT U_ERR_TIME ;SEIT SPANNUNGSFEHLER +0004B8 2B47 00726 INCF U_ERR_TIME ;NEIN ERHÖHEN + 00727 ;SPANNUNGSFEHLER BEARBEITEN ---------------------------------------- +0004BA 0E05 00728 MOVLW U_ERR_PW_AUS ;POWER AUS ZEIT? +0004BC 6347 00729 CPFSEQ U_ERR_TIME ; +0004BE D??? 00730 BRA SEK_NPA ;NEIN +0004C0 EC?? F??? 00731 CALL POWER_AUS ;JA AUSSCHALTEN + 00732 ;-------------------------------------------------------- +0004C4 00733 SEK_NPA + 00734 ;SPANNUNG POWER IN MESSEN +0004C4 0E01 00735 MOVLW B'00000001' ;KANAL 0, AD ON +0004C6 6EC2 00736 MOVWF ADCON0 ; +0004C8 82C2 00737 BSF ADCON0,1 ;GO +0004CA 00738 SEK_2 +0004CA B2C2 00739 BTFSC ADCON0,1 ;FERTIG? +0004CC D??? 00740 BRA SEK_2 ;NEIN +0004CE CFC4 F048 00741 MOVFF ADRESH,U_POWER_IN ;OK WERT EINTRAGEN + 00742 + 00743 ;SPANNUNG 2V5 MESSEN -> U_ERR TIMER NICHT ERHÖHEN WENN ÜBER 3.2V RESP. WIEDER -1 +0004D2 B095 00744 BTFSC TRISD,RD0 ;POWER ON? +0004D4 D??? 00745 BRA SEK_4 ;NEIN NICHT MESSEN + 00746 +0004D6 0E0D 00747 MOVLW B'00001101' ;KANAL 3, AD ON +0004D8 6EC2 00748 MOVWF ADCON0 ; +0004DA 82C2 00749 BSF ADCON0,1 ;GO +0004DC 00750 SEK_3 +0004DC B2C2 00751 BTFSC ADCON0,1 ;FERTIG? + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 16 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + +0004DE D??? 00752 BRA SEK_3 ;NEIN +0004E0 0EC8 00753 MOVLW .200 ;UNTER 3.2V -> WENN WERT ÜBER 78% +0004E2 60C4 00754 CPFSLT ADRESH ;JA -> +0004E4 D??? 00755 BRA SEK_4 ;SONST WEITER + 00756 ;TIMER U_ERR ERHÖHEN +0004E6 A146 00757 BTFSS U_ERR,0 ;SPANNUNGSERROR? +0004E8 D??? 00758 BRA SEK_4 ;NEIN +0004EA 0EA0 00759 MOVLW TIME_MAX ;>=MAXIMALZEIT? +0004EC 6547 00760 CPFSGT U_ERR_TIME ;SEIT SPANNUNGSFEHLER +0004EE 0747 00761 DECF U_ERR_TIME ;NEIN -> -1 + 00762 ;------------------------------------------------------------- +0004F0 00763 SEK_4 +0004F0 6B41 00764 CLRF TICKS +0004F2 2B00 00765 INCF SECS ; Increment seconds +0004F4 0E3B 00766 MOVLW .59 ; 60 seconds elapsed? +0004F6 6500 00767 CPFSGT SECS +0004F8 0010 00768 RETFIE ;RETURN +0004FA 00769 MINUTEN +0004FA 6B00 00770 CLRF SECS ; Clear seconds +0004FC 2B02 00771 INCF MINS ; Increment minutes +0004FE 0E3B 00772 MOVLW .59 ; 60 minutes elapsed? +000500 6502 00773 CPFSGT MINS +000502 0010 00774 RETFIE ;RETURN +000504 00775 STUNDEN +000504 6B02 00776 CLRF MINS ; clear minutes +000506 2B04 00777 INCF HOURS ; Increment hours +000508 0E17 00778 MOVLW .23 ; 24 hours elapsed? +00050A 6504 00779 CPFSGT HOURS +00050C 0010 00780 RETFIE ;RETURN +00050E 00781 TAGE_UND_TAG_DER_WOCHE +00050E 6B04 00782 CLRF HOURS ; Reset hours +000510 0E07 00783 MOVLW .7 +000512 6106 00784 CPFSLT DAY_OF_WEEK +000514 6B06 00785 CLRF DAY_OF_WEEK +000516 2B06 00786 INCF DAY_OF_WEEK +000518 2B07 00787 INCF DAYS +00051A 0E1C 00788 MOVLW .28 +00051C 6507 00789 CPFSGT DAYS +00051E 0010 00790 RETFIE ;RETURN +000520 00791 MEHR_ALS_28_TAGE +000520 0E02 00792 MOVLW .2 +000522 6308 00793 CPFSEQ MONTHS ;FEB? +000524 D??? 00794 BRA NOT_FEB ;NEIN-> +000526 00795 FEB +000526 0E03 00796 MOVLW .3 +000528 1509 00797 ANDWF YEARS,0 ;SCHALTJAHR +00052A E1?? 00798 BNZ NEXT_MONTH ;NEIN-> +00052C 00799 SCHALTJAHR +00052C 0E1D 00800 MOVLW .29 +00052E 6507 00801 CPFSGT DAYS +000530 0010 00802 RETFIE ;RETURN +000532 00803 NEXT_MONTH +000532 0E01 00804 MOVLW .1 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 17 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + +000534 6F07 00805 MOVWF DAYS +000536 2B08 00806 INCF MONTHS +000538 0E12 00807 MOVLW 12 +00053A 6508 00808 CPFSGT MONTHS +00053C 0010 00809 RETFIE ;RETURN +00053E 00810 YEAR +00053E 0E01 00811 MOVLW .1 +000540 6F08 00812 MOVWF MONTHS +000542 2B09 00813 INCF YEARS +000544 0010 00814 RETFIE ;RETURN +000546 00815 NOT_FEB +000546 0E1E 00816 MOVLW .30 +000548 6507 00817 CPFSGT DAYS +00054A 0010 00818 RETFIE +00054C 00819 MEHR_ALS_30_TAGE +00054C 0E04 00820 MOVLW .4 ;APRIL? +00054E 6308 00821 CPFSEQ MONTHS ;SKIP +000550 D??? 00822 BRA NOT_APRIL +000552 D??? 00823 BRA NEXT_MONTH ;APRIL-> +000554 00824 NOT_APRIL +000554 0E06 00825 MOVLW .6 ;JUNI? +000556 6308 00826 CPFSEQ MONTHS +000558 D??? 00827 BRA NOT_JUNI +00055A D??? 00828 BRA NEXT_MONTH ;JUNI-> +00055C 00829 NOT_JUNI +00055C 0E09 00830 MOVLW .9 ;SEPTEMBER? +00055E 6308 00831 CPFSEQ MONTHS +000560 D??? 00832 BRA NOT_SEP +000562 D??? 00833 BRA NEXT_MONTH ;SEPTEMBER-> +000564 00834 NOT_SEP +000564 0E0B 00835 MOVLW .11 ;NOVEMBER? +000566 6308 00836 CPFSEQ MONTHS ;SKIP +000568 0010 00837 RETFIE ;SIND MONATE MIT 31 TAGEN-> +00056A D??? 00838 BRA NEXT_MONTH ;SONST NOVEMBER-> + 00839 ;**********************************************************************************************""""""""" + """" + 00840 ; ENDE MAIN + 00841 ;**********************************************************************************************""""""""" + """" + 00842 ;**********************************************************************************************""""""""" + """" + 00843 ; EXTERN_SUBOUTINES FOGEN AB 0x1000 DIE SPÄTER EINPROGRAMMIERT WERDEN + 00844 ;**********************************************************************************************""""""""" + """" + 00845 end + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 18 + + +SYMBOL TABLE + LABEL VALUE + +A 00000000 +ABDEN 00000000 +ABDOVF 00000007 +ACCESS 00000000 +ACKDT 00000005 +ACKEN 00000004 +ACKSTAT 00000006 +ACQT0 00000003 +ACQT1 00000004 +ACQT2 00000005 +ADCON0 00000FC2 +ADCON1 00000FC1 +ADCON2 00000FC0 +ADCS0 00000000 +ADCS1 00000001 +ADCS2 00000002 +ADDEN 00000003 +ADEN 00000003 +ADFM 00000007 +ADIE 00000006 +ADIF 00000006 +ADIP 00000006 +ADON 00000000 +ADRES 00000FC3 +ADRESH 00000FC4 +ADRESL 00000FC3 +AD_ISR 0000044C +AD_KANAL 00000045 +AN0 00000000 +AN1 00000001 +AN10 00000001 +AN11 00000004 +AN12 00000000 +AN2 00000002 +AN3 00000003 +AN4 00000005 +AN5 00000000 +AN6 00000001 +AN7 00000002 +AN8 00000002 +AN9 00000003 +BANKED 00000001 +BAUDCON 00000FB8 +BAUDCTL 00000FB8 +BCLIE 00000003 +BCLIF 00000003 +BCLIP 00000003 +BF 00000000 +BGST 00000005 +BOR 00000000 +BRG16 00000003 +BRGH 00000002 +BSR 00000FE0 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 19 + + +SYMBOL TABLE + LABEL VALUE + +C 00000000 +C1INV 00000004 +C1OUT 00000006 +C2INV 00000005 +C2OUT 00000007 +CCP1 00000002 +CCP1CON 00000FBD +CCP1IE 00000002 +CCP1IF 00000002 +CCP1IP 00000002 +CCP1M0 00000000 +CCP1M1 00000001 +CCP1M2 00000002 +CCP1M3 00000003 +CCP1X 00000005 +CCP1Y 00000004 +CCP2CON 00000FBA +CCP2IE 00000000 +CCP2IF 00000000 +CCP2IP 00000000 +CCP2M0 00000000 +CCP2M1 00000001 +CCP2M2 00000002 +CCP2M3 00000003 +CCP2X 00000005 +CCP2Y 00000004 +CCP2_PORTB 00000003 +CCP2_PORTC 00000001 +CCPR1 00000FBE +CCPR1H 00000FBF +CCPR1L 00000FBE +CCPR2 00000FBB +CCPR2H 00000FBC +CCPR2L 00000FBB +CFGS 00000006 +CHS0 00000002 +CHS1 00000003 +CHS2 00000004 +CHS3 00000005 +CIS 00000003 +CK 00000006 +CKE 00000006 +CKP 00000004 +CLKI 00000007 +CLKO 00000006 +CLK_ACTIV 00000072 +CLK_SLEEP 00000012 +CM0 00000000 +CM1 00000001 +CM2 00000002 +CMCON 00000FB4 +CMIE 00000006 +CMIF 00000006 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 20 + + +SYMBOL TABLE + LABEL VALUE + +CMIP 00000006 +CREN 00000004 +CS 00000002 +CSRC 00000007 +CVR0 00000000 +CVR1 00000001 +CVR2 00000002 +CVR3 00000003 +CVRCON 00000FB5 +CVREF 00000002 +CVREN 00000007 +CVROE 00000006 +CVRR 00000005 +CVRSS 00000004 +D 00000005 +DAYS 00000007 +DAY_OF_WEEK 00000006 +DC 00000001 +DC1B0 00000004 +DC1B1 00000005 +DC2B0 00000004 +DC2B1 00000005 +DDRA TRISA +DDRB TRISB +DDRC TRISC +DDRD TRISD +DDRE TRISE +DONE 00000001 +D_A 00000005 +EAPIR1 0000004E +EAPIR2 0000004F +ECCP1AS 00000FB6 +ECCPAS0 00000004 +ECCPAS1 00000005 +ECCPAS2 00000006 +ECCPASE 00000007 +EEADR 00000FA9 +EECON1 00000FA6 +EECON2 00000FA7 +EEDATA 00000FA8 +EEIE 00000004 +EEIF 00000004 +EEIP 00000004 +EEPGD 00000007 +EXTERN_INTERRUPTS 00002002 +EXTERN_INT_ADR 00002000 +EXTERN_SUBROUTINES 00002012 +EXTERN_SUB_ADR 00002010 +EXT_CODE 000000FB +EXT_SUB_GO 00000004 +EXT_SUB_STOP 00000005 +FAST 00000001 +FEB 00000526 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 21 + + +SYMBOL TABLE + LABEL VALUE + +FERR 00000002 +FLTS 00000002 +FREE 00000004 +FSR0 00000000 +FSR0H 00000FEA +FSR0L 00000FE9 +FSR1 00000001 +FSR1H 00000FE2 +FSR1L 00000FE1 +FSR2 00000002 +FSR2H 00000FDA +FSR2L 00000FD9 +GCEN 00000007 +GIE 00000007 +GIEH 00000007 +GIEL 00000006 +GO 00000001 +GO_DONE 00000001 +GO_INT 0000004D +GO_SUB 0000004C +HLVDCON 00000FD2 +HLVDEN 00000004 +HLVDIE 00000002 +HLVDIF 00000002 +HLVDIP 00000002 +HLVDL0 00000000 +HLVDL1 00000001 +HLVDL2 00000002 +HLVDL3 00000003 +HLVD_ISR 00000424 +HLVD_LE 0000043C +HOURS 00000004 +HOURS_ALARM 00000005 +IBF 00000007 +IBOV 00000005 +IDLEN 00000007 +INDF0 00000FEF +INDF1 00000FE7 +INDF2 00000FDF +INT0 00000000 +INT0E 00000004 +INT0F 00000001 +INT0IE 00000004 +INT0IF 00000001 +INT1 00000001 +INT1E 00000003 +INT1F 00000000 +INT1IE 00000003 +INT1IF 00000000 +INT1IP 00000006 +INT1P 00000006 +INT2 00000002 +INT2E 00000004 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 22 + + +SYMBOL TABLE + LABEL VALUE + +INT2F 00000001 +INT2IE 00000004 +INT2IF 00000001 +INT2IP 00000007 +INT2P 00000007 +INTCON 00000FF2 +INTCON2 00000FF1 +INTCON3 00000FF0 +INTEDG0 00000006 +INTEDG1 00000005 +INTEDG2 00000004 +INTSRC 00000007 +INT_HANDLER 00000018 +IOFS 00000002 +IPEN 00000007 +IPR1 00000F9F +IPR2 00000FA2 +IRCF0 00000004 +IRCF1 00000005 +IRCF2 00000006 +IRVST 00000005 +IVRST 00000005 +KALT_START 00000100 +KBI0 00000004 +KBI1 00000005 +KBI2 00000006 +KBI3 00000007 +LADESTROM 000001D2 +LATA 00000F89 +LATA0 00000000 +LATA1 00000001 +LATA2 00000002 +LATA3 00000003 +LATA4 00000004 +LATA5 00000005 +LATA6 00000006 +LATA7 00000007 +LATB 00000F8A +LATB0 00000000 +LATB1 00000001 +LATB2 00000002 +LATB3 00000003 +LATB4 00000004 +LATB5 00000005 +LATB6 00000006 +LATB7 00000007 +LATC 00000F8B +LATC0 00000000 +LATC1 00000001 +LATC2 00000002 +LATC3 00000003 +LATC4 00000004 +LATC5 00000005 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 23 + + +SYMBOL TABLE + LABEL VALUE + +LATC6 00000006 +LATC7 00000007 +LATD 00000F8C +LATD0 00000000 +LATD1 00000001 +LATD2 00000002 +LATD3 00000003 +LATD4 00000004 +LATD5 00000005 +LATD6 00000006 +LATD7 00000007 +LATE 00000F8D +LATE0 00000000 +LATE1 00000001 +LATE2 00000002 +LS_OFF_POWER 000001DA +LS_ON_POWER 000001D6 +LVDCON 00000FD2 +LVDEN 00000004 +LVDIE 00000002 +LVDIF 00000002 +LVDIN 00000005 +LVDIP 00000002 +LVDL0 00000000 +LVDL1 00000001 +LVDL2 00000002 +LVDL3 00000003 +LVV0 00000000 +LVV1 00000001 +LVV2 00000002 +LVV3 00000003 +MAIN 0000019E +MAIN2 000001AE +MCLR 00000003 +MEHR_ALS_28_TAGE 00000520 +MEHR_ALS_30_TAGE 0000054C +MINS 00000002 +MINS_ALRAM 00000003 +MINUTEN 000004FA +MONTHS 00000008 +N 00000004 +NEXT_MONTH 00000532 +NON_SYNC 000003D2 +NOT_A 00000005 +NOT_ADDRESS 00000005 +NOT_APRIL 00000554 +NOT_BOR 00000000 +NOT_CS 00000002 +NOT_DONE 00000001 +NOT_FEB 00000546 +NOT_JUNI 0000055C +NOT_MCLR 00000003 +NOT_PD 00000002 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 24 + + +SYMBOL TABLE + LABEL VALUE + +NOT_POR 00000001 +NOT_RBPU 00000007 +NOT_RD 00000000 +NOT_RI 00000004 +NOT_SEP 00000564 +NOT_SS 00000005 +NOT_T1SYNC 00000002 +NOT_T3SYNC 00000002 +NOT_TO 00000003 +NOT_W 00000002 +NOT_WR 00000001 +NOT_WRITE 00000002 +NO_PROG 000003AC +OBF 00000006 +OERR 00000001 +OFF_TIME 00000014 +ON_TIME 00000002 +OSC1 00000007 +OSC2 00000006 +OSCCON 00000FD3 +OSCFIE 00000007 +OSCFIF 00000007 +OSCFIP 00000007 +OSCTUNE 00000F9B +OSTS 00000003 +OV 00000003 +P 00000004 +P1B 00000005 +P1C 00000006 +P1D 00000007 +P1M0 00000006 +P1M1 00000007 +PC 00000FF9 +PCFG0 00000000 +PCFG1 00000001 +PCFG2 00000002 +PCFG3 00000003 +PCL 00000FF9 +PCLATH 00000FFA +PCLATU 00000FFB +PD 00000002 +PDC0 00000000 +PDC1 00000001 +PDC2 00000002 +PDC3 00000003 +PDC4 00000004 +PDC5 00000005 +PDC6 00000006 +PEIE 00000006 +PEN 00000002 +PGC 00000006 +PGD 00000007 +PGM 00000005 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 25 + + +SYMBOL TABLE + LABEL VALUE + +PIE1 00000F9D +PIE2 00000FA0 +PINGS 00000486 +PINGS2 000004AA +PINGW 00000498 +PIR1 00000F9E +PIR2 00000FA1 +PLLEN 00000006 +PLUSW0 00000FEB +PLUSW1 00000FE3 +PLUSW2 00000FDB +POR 00000001 +PORTA 00000F80 +PORTB 00000F81 +PORTC 00000F82 +PORTD 00000F83 +PORTE 00000F84 +POSTDEC0 00000FED +POSTDEC1 00000FE5 +POSTDEC2 00000FDD +POSTINC0 00000FEE +POSTINC1 00000FE6 +POSTINC2 00000FDE +POWER_AUS 000001C2 +POWER_EIN 000001B4 +POWER_OFF_I 0000046A +POWER_OFF_I2 00000478 +POWER_ON_TIME 00000044 +PR2 00000FCB +PREINC0 00000FEC +PREINC1 00000FE4 +PREINC2 00000FDC +PRG_OK_PIC 00000022 +PROD 00000FF3 +PRODH 00000FF4 +PRODL 00000FF3 +PROGRAM_MEMORY 0000039A +PRSEN 00000007 +PSA 00000003 +PSP0 00000000 +PSP1 00000001 +PSP2 00000002 +PSP3 00000003 +PSP4 00000004 +PSP5 00000005 +PSP6 00000006 +PSP7 00000007 +PSPIE 00000007 +PSPIF 00000007 +PSPIP 00000007 +PSPMODE 00000004 +PSSAC0 00000002 +PSSAC1 00000003 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 26 + + +SYMBOL TABLE + LABEL VALUE + +PSSBD0 00000000 +PSSBD1 00000001 +PWM1CON 00000FB7 +R 00000002 +RA0 00000000 +RA1 00000001 +RA2 00000002 +RA3 00000003 +RA4 00000004 +RA5 00000005 +RA6 00000006 +RA7 00000007 +RB0 00000000 +RB1 00000001 +RB2 00000002 +RB3 00000003 +RB4 00000004 +RB5 00000005 +RB6 00000006 +RB7 00000007 +RBIE 00000003 +RBIF 00000000 +RBIP 00000000 +RBPU 00000007 +RC0 00000000 +RC1 00000001 +RC2 00000002 +RC3 00000003 +RC4 00000004 +RC5 00000005 +RC6 00000006 +RC7 00000007 +RCEN 00000003 +RCIDL 00000006 +RCIE 00000005 +RCIF 00000005 +RCIP 00000005 +RCMT 00000006 +RCON 00000FD0 +RCREG 00000FAE +RCSTA 00000FAB +RD 00000000 +RD0 00000000 +RD1 00000001 +RD16 00000007 +RD2 00000002 +RD3 00000003 +RD4 00000004 +RD5 00000005 +RD6 00000006 +RD7 00000007 +RE0 00000000 +RE1 00000001 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 27 + + +SYMBOL TABLE + LABEL VALUE + +RE2 00000002 +RE3 00000003 +READ_BLOCK 000000A1 +REGA 0000000A +REGB 0000000B +REGC 0000000C +REGD 0000000D +REQ_BLOCK 000000A0 +REQ_RTCD_FROM_MCF 00000002 +REQ_RTCD_FROM_PIC 00000001 +RESETEN 00000256 +RESET_OFF_TIME 00000004 +RESET_ON_TIME 00000002 +RI 00000004 +RSEN 00000001 +RTCD_FROM_MCF 00000082 +RTCD_FROM_PIC 00000081 +RTC_ISR 00000450 +RTC_RAM 0000000E +RX 00000007 +RX9 00000006 +RX9D 00000000 +RXDTP 00000005 +RX_B 00000049 +RX_BUFFER 00000100 +RX_ISR 00000288 +RX_ISR1 000002A4 +RX_ISR2 000002B0 +RX_ISR3 000002C8 +RX_ISR4 000002F6 +RX_ISR5 00000304 +RX_ISR6 00000312 +RX_ISR7 00000350 +RX_ISR8 000003B0 +RX_ISR9 000003BC +RX_RB3B2 00000334 +RX_RB3BOK 00000322 +RX_STATUS 0000004A +RX_SYNC2 000003D8 +RX_SYNC3 000003EA +RX_SYNC4 000003FC +RX_SYNC_START 000003C0 +RX_WAIT1 00000408 +RX_WAIT2 00000410 +RX_WAIT3 00000418 +R_W 00000002 +S 00000003 +SBOREN 00000006 +SCHALTJAHR 0000052C +SCK 00000003 +SCKP 00000004 +SCL 00000003 +SCS0 00000000 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 28 + + +SYMBOL TABLE + LABEL VALUE + +SCS1 00000001 +SDA 00000004 +SDI 00000004 +SDO 00000005 +SECS 00000000 +SECS_ALARM 00000001 +SEKUNDEN 000004B0 +SEK_2 000004CA +SEK_3 000004DC +SEK_4 000004F0 +SEK_NPA 000004C4 +SEN 00000000 +SENDB 00000003 +SEND_RTC_REG 00000232 +SEND_RTC_TIME 00000002 +SERIAL_OFF 000001DE +SERIAL_ON 000001EA +SMP 00000007 +SP0 00000000 +SP1 00000001 +SP2 00000002 +SP3 00000003 +SP4 00000004 +SPBRG 00000FAF +SPBRGH 00000FB0 +SPEN 00000007 +SREN 00000005 +SS 00000005 +SSPADD 00000FC8 +SSPBUF 00000FC9 +SSPCON1 00000FC6 +SSPCON2 00000FC5 +SSPEN 00000005 +SSPIE 00000003 +SSPIF 00000003 +SSPIP 00000003 +SSPM0 00000000 +SSPM1 00000001 +SSPM2 00000002 +SSPM3 00000003 +SSPOV 00000006 +SSPSTAT 00000FC7 +STATUS 00000FD8 +STKFUL 00000007 +STKOVF 00000007 +STKPTR 00000FFC +STKUNF 00000006 +STUNDEN 00000504 +SWDTE 00000000 +SWDTEN 00000000 +SYNC 00000004 +SYNC1 000000FF +SYNC1_DATA 00000041 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 29 + + +SYMBOL TABLE + LABEL VALUE + +SYNC2 000000FE +SYNC2_DATA 00000043 +SYNC3 000000FD +SYNC3_DATA 00000050 +SYNC4 000000FC +SYNC4_DATA 00000046 +T08BIT 00000006 +T0CKI 00000004 +T0CON 00000FD5 +T0CS 00000005 +T0IE 00000005 +T0IF 00000002 +T0PS0 00000000 +T0PS1 00000001 +T0PS2 00000002 +T0SE 00000004 +T13CKI 00000000 +T1CKI 00000000 +T1CKPS0 00000004 +T1CKPS1 00000005 +T1CON 00000FCD +T1OSCEN 00000003 +T1OSI 00000001 +T1OSO 00000000 +T1RUN 00000006 +T1SYNC 00000002 +T2CKPS0 00000000 +T2CKPS1 00000001 +T2CON 00000FCA +T2OUTPS0 00000003 +T2OUTPS1 00000004 +T2OUTPS2 00000005 +T2OUTPS3 00000006 +T3CCP1 00000003 +T3CCP2 00000006 +T3CKPS0 00000004 +T3CKPS1 00000005 +T3CON 00000FB1 +T3SYNC 00000002 +TABLAT 00000FF5 +TAGE_UND_TAG_DER_WOCHE 0000050E +TASTE 00000208 +TASTE_OFF_TIME 00000043 +TASTE_ON_TIME 00000042 +TBLPTR 00000FF6 +TBLPTRH 00000FF7 +TBLPTRL 00000FF6 +TBLPTRU 00000FF8 +TG_END 00000250 +TG_JA 00000222 +TG_OFF_POWER 00000248 +TG_ON_POWER 0000022C +TG_ON_POWER2 00000238 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 30 + + +SYMBOL TABLE + LABEL VALUE + +TG_ON_POWER3 0000023E +TICKS 00000041 +TIMER_HB 000000F0 +TIME_MAX 000000A0 +TMR0H 00000FD7 +TMR0IE 00000005 +TMR0IF 00000002 +TMR0IP 00000002 +TMR0L 00000FD6 +TMR0ON 00000007 +TMR1CS 00000001 +TMR1H 00000FCF +TMR1IE 00000000 +TMR1IF 00000000 +TMR1IP 00000000 +TMR1L 00000FCE +TMR1ON 00000000 +TMR2 00000FCC +TMR2IE 00000001 +TMR2IF 00000001 +TMR2IP 00000001 +TMR2ON 00000002 +TMR3CS 00000001 +TMR3H 00000FB3 +TMR3IE 00000001 +TMR3IF 00000001 +TMR3IP 00000001 +TMR3L 00000FB2 +TMR3ON 00000000 +TO 00000003 +TOS 00000FFD +TOSH 00000FFE +TOSL 00000FFD +TOSU 00000FFF +TRISA 00000F92 +TRISA0 00000000 +TRISA1 00000001 +TRISA2 00000002 +TRISA3 00000003 +TRISA4 00000004 +TRISA5 00000005 +TRISA6 00000006 +TRISA7 00000007 +TRISB 00000F93 +TRISB0 00000000 +TRISB1 00000001 +TRISB2 00000002 +TRISB3 00000003 +TRISB4 00000004 +TRISB5 00000005 +TRISB6 00000006 +TRISB7 00000007 +TRISC 00000F94 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 31 + + +SYMBOL TABLE + LABEL VALUE + +TRISC0 00000000 +TRISC1 00000001 +TRISC2 00000002 +TRISC3 00000003 +TRISC4 00000004 +TRISC5 00000005 +TRISC6 00000006 +TRISC7 00000007 +TRISD 00000F95 +TRISD0 00000000 +TRISD1 00000001 +TRISD2 00000002 +TRISD3 00000003 +TRISD4 00000004 +TRISD5 00000005 +TRISD6 00000006 +TRISD7 00000007 +TRISE 00000F96 +TRISE0 00000000 +TRISE1 00000001 +TRISE2 00000002 +TRMT 00000001 +TUN0 00000000 +TUN1 00000001 +TUN2 00000002 +TUN3 00000003 +TUN4 00000004 +TX 00000006 +TX9 00000006 +TX9D 00000000 +TXCKP 00000004 +TXEN 00000005 +TXIE 00000004 +TXIF 00000004 +TXIP 00000004 +TXREG 00000FAD +TXSTA 00000FAC +TX_BUFFER 00000180 +TX_ISR 0000025E +TX_ISR1 00000276 +TX_ISR2 00000286 +TX_ISR_FERTIG 0000026E +TX_STATUS 0000004B +UA 00000001 +U_ERR 00000046 +U_ERR_PW_AUS 00000005 +U_ERR_TIME 00000047 +U_MIN_TO_MCF 00000003 +U_POWER_IN 00000048 +VCFG0 00000004 +VCFG1 00000005 +VDIRMAG 00000007 +VPP 00000003 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 32 + + +SYMBOL TABLE + LABEL VALUE + +VREFN 00000002 +VREFP 00000003 +W 00000000 +WAIT_LVDOK 00000434 +WARTEN 000001A8 +WCOL 00000007 +WDTCON 00000FD1 +WR 00000001 +WREG 00000FE8 +WREN 00000002 +WRERR 00000003 +WRITE_BLOCK 000000A2 +WRITE_WORD_TO_HREGS 00000390 +WUE 00000001 +YEAR 0000053E +YEARS 00000009 +Z 00000002 +_BOREN_NOSLP_2L 000000FD +_BOREN_OFF_2L 000000F9 +_BOREN_ON_2L 000000FB +_BOREN_SBORDIS_2L 000000FF +_BORV_0_2L 000000E7 +_BORV_1_2L 000000EF +_BORV_2_2L 000000F7 +_BORV_3_2L 000000FF +_CCP2MX_PORTBE_3H 000000FE +_CCP2MX_PORTC_3H 000000FF +_CONFIG1H 00300001 +_CONFIG2H 00300003 +_CONFIG2L 00300002 +_CONFIG3H 00300005 +_CONFIG4L 00300006 +_CONFIG5H 00300009 +_CONFIG5L 00300008 +_CONFIG6H 0030000B +_CONFIG6L 0030000A +_CONFIG7H 0030000D +_CONFIG7L 0030000C +_CP0_OFF_5L 000000FF +_CP0_ON_5L 000000FE +_CP1_OFF_5L 000000FF +_CP1_ON_5L 000000FD +_CP2_OFF_5L 000000FF +_CP2_ON_5L 000000FB +_CP3_OFF_5L 000000FF +_CP3_ON_5L 000000F7 +_CPB_OFF_5H 000000FF +_CPB_ON_5H 000000BF +_CPD_OFF_5H 000000FF +_CPD_ON_5H 0000007F +_DEBUG_OFF_4L 000000FF +_DEBUG_ON_4L 0000007F +_DEVID1 003FFFFE + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 33 + + +SYMBOL TABLE + LABEL VALUE + +_DEVID2 003FFFFF +_EBTR0_OFF_7L 000000FF +_EBTR0_ON_7L 000000FE +_EBTR1_OFF_7L 000000FF +_EBTR1_ON_7L 000000FD +_EBTR2_OFF_7L 000000FF +_EBTR2_ON_7L 000000FB +_EBTR3_OFF_7L 000000FF +_EBTR3_ON_7L 000000F7 +_EBTRB_OFF_7H 000000FF +_EBTRB_ON_7H 000000BF +_FCMEN_OFF_1H 000000BF +_FCMEN_ON_1H 000000FF +_IDLOC0 00200000 +_IDLOC1 00200001 +_IDLOC2 00200002 +_IDLOC3 00200003 +_IDLOC4 00200004 +_IDLOC5 00200005 +_IDLOC6 00200006 +_IDLOC7 00200007 +_IESO_OFF_1H 0000007F +_IESO_ON_1H 000000FF +_LPT1OSC_OFF_3H 000000FB +_LPT1OSC_ON_3H 000000FF +_LVP_OFF_4L 000000FB +_LVP_ON_4L 000000FF +_MCLRE_OFF_3H 0000007F +_MCLRE_ON_3H 000000FF +_OSC_ECIO6_1H 000000F5 +_OSC_EC_1H 000000F4 +_OSC_HSPLL_1H 000000F6 +_OSC_HS_1H 000000F2 +_OSC_INTIO67_1H 000000F8 +_OSC_INTIO7_1H 000000F9 +_OSC_LP_1H 000000F0 +_OSC_RCIO6_1H 000000F7 +_OSC_RC_1H 000000F3 +_OSC_XT_1H 000000F1 +_PBADEN_OFF_3H 000000FD +_PBADEN_ON_3H 000000FF +_PWRT_OFF_2L 000000FF +_PWRT_ON_2L 000000FE +_STVREN_OFF_4L 000000FE +_STVREN_ON_4L 000000FF +_WDTPS_1024_2H 000000F5 +_WDTPS_128_2H 000000EF +_WDTPS_16384_2H 000000FD +_WDTPS_16_2H 000000E9 +_WDTPS_1_2H 000000E1 +_WDTPS_2048_2H 000000F7 +_WDTPS_256_2H 000000F1 +_WDTPS_2_2H 000000E3 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 34 + + +SYMBOL TABLE + LABEL VALUE + +_WDTPS_32768_2H 000000FF +_WDTPS_32_2H 000000EB +_WDTPS_4096_2H 000000F9 +_WDTPS_4_2H 000000E5 +_WDTPS_512_2H 000000F3 +_WDTPS_64_2H 000000ED +_WDTPS_8192_2H 000000FB +_WDTPS_8_2H 000000E7 +_WDT_OFF_2H 000000FE +_WDT_ON_2H 000000FF +_WRT0_OFF_6L 000000FF +_WRT0_ON_6L 000000FE +_WRT1_OFF_6L 000000FF +_WRT1_ON_6L 000000FD +_WRT2_OFF_6L 000000FF +_WRT2_ON_6L 000000FB +_WRT3_OFF_6L 000000FF +_WRT3_ON_6L 000000F7 +_WRTB_OFF_6H 000000FF +_WRTB_ON_6H 000000BF +_WRTC_OFF_6H 000000FF +_WRTC_ON_6H 000000DF +_WRTD_OFF_6H 000000FF +_WRTD_ON_6H 0000007F +_XINST_OFF_4L 000000BF +_XINST_ON_4L 000000FF +__18F4520 00000001 +free 00000040 + +Errors : 0 +Warnings : 0 reported, 0 suppressed +Messages : 0 reported, 0 suppressed + + \ No newline at end of file diff --git a/MLAB/firebee1/firebee1.map b/MLAB/firebee1/firebee1.map new file mode 100644 index 0000000..678b3b3 --- /dev/null +++ b/MLAB/firebee1/firebee1.map @@ -0,0 +1,188 @@ +MPLINK 4.35, Linker +Linker Map File - Created Fri Oct 01 13:06:43 2010 + + Section Info + Section Type Address Location Size(Bytes) + --------- --------- --------- --------- --------- + Reset_Vector code 0x000000 program 0x000002 + .cinit romdata 0x000002 program 0x000002 + HIGH_INT_VEC code 0x000008 program 0x000004 + LOW_INT_VEC code 0x000018 program 0x00004a + .code code 0x000100 program 0x00046c + + + + Program Memory Usage + Start End + --------- --------- + 0x000000 0x000003 + 0x000008 0x00000b + 0x000018 0x000061 + 0x000100 0x00056b + 1214 out of 33048 program addresses used, program memory utilization is 3% + + + + Symbols - Sorted by Name + Name Address Location Storage File + --------- --------- --------- --------- --------- + AD_ISR 0x00044c program static C:\FireBee\MLAB\firebee1\firebee1.asm + FEB 0x000526 program static C:\FireBee\MLAB\firebee1\firebee1.asm + HLVD_ISR 0x000424 program static C:\FireBee\MLAB\firebee1\firebee1.asm + HLVD_LE 0x00043c program static C:\FireBee\MLAB\firebee1\firebee1.asm + INT_HANDLER 0x000018 program static C:\FireBee\MLAB\firebee1\firebee1.asm + KALT_START 0x000100 program static C:\FireBee\MLAB\firebee1\firebee1.asm + LADESTROM 0x0001d2 program static C:\FireBee\MLAB\firebee1\firebee1.asm + LS_OFF_POWER 0x0001da program static C:\FireBee\MLAB\firebee1\firebee1.asm + LS_ON_POWER 0x0001d6 program static C:\FireBee\MLAB\firebee1\firebee1.asm + MAIN 0x00019e program static C:\FireBee\MLAB\firebee1\firebee1.asm + MAIN2 0x0001ae program static C:\FireBee\MLAB\firebee1\firebee1.asm + MEHR_ALS_28_TAGE 0x000520 program static C:\FireBee\MLAB\firebee1\firebee1.asm + MEHR_ALS_30_TAGE 0x00054c program static C:\FireBee\MLAB\firebee1\firebee1.asm + MINUTEN 0x0004fa program static C:\FireBee\MLAB\firebee1\firebee1.asm + NEXT_MONTH 0x000532 program static C:\FireBee\MLAB\firebee1\firebee1.asm + NON_SYNC 0x0003d2 program static C:\FireBee\MLAB\firebee1\firebee1.asm + NOT_APRIL 0x000554 program static C:\FireBee\MLAB\firebee1\firebee1.asm + NOT_FEB 0x000546 program static C:\FireBee\MLAB\firebee1\firebee1.asm + NOT_JUNI 0x00055c program static C:\FireBee\MLAB\firebee1\firebee1.asm + NOT_SEP 0x000564 program static C:\FireBee\MLAB\firebee1\firebee1.asm + NO_PROG 0x0003ac program static C:\FireBee\MLAB\firebee1\firebee1.asm + PINGS 0x000486 program static C:\FireBee\MLAB\firebee1\firebee1.asm + PINGS2 0x0004aa program static C:\FireBee\MLAB\firebee1\firebee1.asm + PINGW 0x000498 program static C:\FireBee\MLAB\firebee1\firebee1.asm + POWER_AUS 0x0001c2 program static C:\FireBee\MLAB\firebee1\firebee1.asm + POWER_EIN 0x0001b4 program static C:\FireBee\MLAB\firebee1\firebee1.asm + POWER_OFF_I 0x00046a program static C:\FireBee\MLAB\firebee1\firebee1.asm + POWER_OFF_I2 0x000478 program static C:\FireBee\MLAB\firebee1\firebee1.asm + PROGRAM_MEMORY 0x00039a program static C:\FireBee\MLAB\firebee1\firebee1.asm + RESETEN 0x000256 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RTC_ISR 0x000450 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR 0x000288 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR1 0x0002a4 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR2 0x0002b0 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR3 0x0002c8 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR4 0x0002f6 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR5 0x000304 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR6 0x000312 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR7 0x000350 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR8 0x0003b0 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR9 0x0003bc program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_RB3B2 0x000334 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_RB3BOK 0x000322 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_SYNC2 0x0003d8 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_SYNC3 0x0003ea program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_SYNC4 0x0003fc program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_SYNC_START 0x0003c0 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_WAIT1 0x000408 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_WAIT2 0x000410 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_WAIT3 0x000418 program static C:\FireBee\MLAB\firebee1\firebee1.asm + SCHALTJAHR 0x00052c program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEKUNDEN 0x0004b0 program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEK_2 0x0004ca program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEK_3 0x0004dc program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEK_4 0x0004f0 program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEK_NPA 0x0004c4 program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEND_RTC_REG 0x000232 program static C:\FireBee\MLAB\firebee1\firebee1.asm + SERIAL_OFF 0x0001de program static C:\FireBee\MLAB\firebee1\firebee1.asm + SERIAL_ON 0x0001ea program static C:\FireBee\MLAB\firebee1\firebee1.asm + STUNDEN 0x000504 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TAGE_UND_TAG_DER_WOCHE 0x00050e program static C:\FireBee\MLAB\firebee1\firebee1.asm + TASTE 0x000208 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_END 0x000250 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_JA 0x000222 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_OFF_POWER 0x000248 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_ON_POWER 0x00022c program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_ON_POWER2 0x000238 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_ON_POWER3 0x00023e program static C:\FireBee\MLAB\firebee1\firebee1.asm + TX_ISR 0x00025e program static C:\FireBee\MLAB\firebee1\firebee1.asm + TX_ISR1 0x000276 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TX_ISR2 0x000286 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TX_ISR_FERTIG 0x00026e program static C:\FireBee\MLAB\firebee1\firebee1.asm + WAIT_LVDOK 0x000434 program static C:\FireBee\MLAB\firebee1\firebee1.asm + WARTEN 0x0001a8 program static C:\FireBee\MLAB\firebee1\firebee1.asm + WRITE_WORD_TO_HREGS 0x000390 program static C:\FireBee\MLAB\firebee1\firebee1.asm + YEAR 0x00053e program static C:\FireBee\MLAB\firebee1\firebee1.asm + + + + Symbols - Sorted by Address + Name Address Location Storage File + --------- --------- --------- --------- --------- + INT_HANDLER 0x000018 program static C:\FireBee\MLAB\firebee1\firebee1.asm + KALT_START 0x000100 program static C:\FireBee\MLAB\firebee1\firebee1.asm + MAIN 0x00019e program static C:\FireBee\MLAB\firebee1\firebee1.asm + WARTEN 0x0001a8 program static C:\FireBee\MLAB\firebee1\firebee1.asm + MAIN2 0x0001ae program static C:\FireBee\MLAB\firebee1\firebee1.asm + POWER_EIN 0x0001b4 program static C:\FireBee\MLAB\firebee1\firebee1.asm + POWER_AUS 0x0001c2 program static C:\FireBee\MLAB\firebee1\firebee1.asm + LADESTROM 0x0001d2 program static C:\FireBee\MLAB\firebee1\firebee1.asm + LS_ON_POWER 0x0001d6 program static C:\FireBee\MLAB\firebee1\firebee1.asm + LS_OFF_POWER 0x0001da program static C:\FireBee\MLAB\firebee1\firebee1.asm + SERIAL_OFF 0x0001de program static C:\FireBee\MLAB\firebee1\firebee1.asm + SERIAL_ON 0x0001ea program static C:\FireBee\MLAB\firebee1\firebee1.asm + TASTE 0x000208 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_JA 0x000222 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_ON_POWER 0x00022c program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEND_RTC_REG 0x000232 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_ON_POWER2 0x000238 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_ON_POWER3 0x00023e program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_OFF_POWER 0x000248 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_END 0x000250 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RESETEN 0x000256 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TX_ISR 0x00025e program static C:\FireBee\MLAB\firebee1\firebee1.asm + TX_ISR_FERTIG 0x00026e program static C:\FireBee\MLAB\firebee1\firebee1.asm + TX_ISR1 0x000276 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TX_ISR2 0x000286 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR 0x000288 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR1 0x0002a4 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR2 0x0002b0 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR3 0x0002c8 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR4 0x0002f6 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR5 0x000304 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR6 0x000312 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_RB3BOK 0x000322 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_RB3B2 0x000334 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR7 0x000350 program static C:\FireBee\MLAB\firebee1\firebee1.asm + WRITE_WORD_TO_HREGS 0x000390 program static C:\FireBee\MLAB\firebee1\firebee1.asm + PROGRAM_MEMORY 0x00039a program static C:\FireBee\MLAB\firebee1\firebee1.asm + NO_PROG 0x0003ac program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR8 0x0003b0 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR9 0x0003bc program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_SYNC_START 0x0003c0 program static C:\FireBee\MLAB\firebee1\firebee1.asm + NON_SYNC 0x0003d2 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_SYNC2 0x0003d8 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_SYNC3 0x0003ea program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_SYNC4 0x0003fc program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_WAIT1 0x000408 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_WAIT2 0x000410 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_WAIT3 0x000418 program static C:\FireBee\MLAB\firebee1\firebee1.asm + HLVD_ISR 0x000424 program static C:\FireBee\MLAB\firebee1\firebee1.asm + WAIT_LVDOK 0x000434 program static C:\FireBee\MLAB\firebee1\firebee1.asm + HLVD_LE 0x00043c program static C:\FireBee\MLAB\firebee1\firebee1.asm + AD_ISR 0x00044c program static C:\FireBee\MLAB\firebee1\firebee1.asm + RTC_ISR 0x000450 program static C:\FireBee\MLAB\firebee1\firebee1.asm + POWER_OFF_I 0x00046a program static C:\FireBee\MLAB\firebee1\firebee1.asm + POWER_OFF_I2 0x000478 program static C:\FireBee\MLAB\firebee1\firebee1.asm + PINGS 0x000486 program static C:\FireBee\MLAB\firebee1\firebee1.asm + PINGW 0x000498 program static C:\FireBee\MLAB\firebee1\firebee1.asm + PINGS2 0x0004aa program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEKUNDEN 0x0004b0 program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEK_NPA 0x0004c4 program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEK_2 0x0004ca program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEK_3 0x0004dc program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEK_4 0x0004f0 program static C:\FireBee\MLAB\firebee1\firebee1.asm + MINUTEN 0x0004fa program static C:\FireBee\MLAB\firebee1\firebee1.asm + STUNDEN 0x000504 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TAGE_UND_TAG_DER_WOCHE 0x00050e program static C:\FireBee\MLAB\firebee1\firebee1.asm + MEHR_ALS_28_TAGE 0x000520 program static C:\FireBee\MLAB\firebee1\firebee1.asm + FEB 0x000526 program static C:\FireBee\MLAB\firebee1\firebee1.asm + SCHALTJAHR 0x00052c program static C:\FireBee\MLAB\firebee1\firebee1.asm + NEXT_MONTH 0x000532 program static C:\FireBee\MLAB\firebee1\firebee1.asm + YEAR 0x00053e program static C:\FireBee\MLAB\firebee1\firebee1.asm + NOT_FEB 0x000546 program static C:\FireBee\MLAB\firebee1\firebee1.asm + MEHR_ALS_30_TAGE 0x00054c program static C:\FireBee\MLAB\firebee1\firebee1.asm + NOT_APRIL 0x000554 program static C:\FireBee\MLAB\firebee1\firebee1.asm + NOT_JUNI 0x00055c program static C:\FireBee\MLAB\firebee1\firebee1.asm + NOT_SEP 0x000564 program static C:\FireBee\MLAB\firebee1\firebee1.asm + + diff --git a/MLAB/firebee1/firebee1.mcp b/MLAB/firebee1/firebee1.mcp new file mode 100644 index 0000000..45e7dcc --- /dev/null +++ b/MLAB/firebee1/firebee1.mcp @@ -0,0 +1,53 @@ +[HEADER] +magic_cookie={66E99B07-E706-4689-9E80-9B2582898A13} +file_version=1.0 +device=PIC18F4520 +[PATH_INFO] +BuildDirPolicy=BuildDirIsProjectDir +dir_src= +dir_bin= +dir_tmp= +dir_sin= +dir_inc= +dir_lib= +dir_lkr= +[CAT_FILTERS] +filter_src=*.asm +filter_inc=*.h;*.inc +filter_obj=*.o +filter_lib=*.lib +filter_lkr=*.lkr +[CAT_SUBFOLDERS] +subfolder_src= +subfolder_inc= +subfolder_obj= +subfolder_lib= +subfolder_lkr= +[FILE_SUBFOLDERS] +file_000=. +file_001=. +[GENERATED_FILES] +file_000=no +file_001=no +[OTHER_FILES] +file_000=no +file_001=no +[FILE_INFO] +file_000=firebee1.asm +file_001=C:\Program Files (x86)\Microchip\MPASM Suite\LKR\18f4520_g.lkr +[SUITE_INFO] +suite_guid={6B3DAA78-59C1-46DD-B6AA-DBDAE4E06484} +suite_state= +[TOOL_SETTINGS] +TS{DD2213A8-6310-47B1-8376-9430CDFC013F}= +TS{BFD27FBA-4A02-4C0E-A5E5-B812F3E7707C}=/o"$(BINDIR_)$(TARGETBASE).cof" /M"$(BINDIR_)$(TARGETBASE).map" /W +TS{ADE93A55-C7C7-4D4D-A4BA-59305F7D0391}= +[INSTRUMENTED_TRACE] +enable=0 +transport=0 +format=0 +[CUSTOM_BUILD] +Pre-Build= +Pre-BuildEnabled=1 +Post-Build= +Post-BuildEnabled=1 diff --git a/MLAB/firebee1/firebee1.mcs b/MLAB/firebee1/firebee1.mcs new file mode 100644 index 0000000..242fa7b --- /dev/null +++ b/MLAB/firebee1/firebee1.mcs @@ -0,0 +1,71 @@ +[Header] +MagicCookie={0b13fe8c-dfe0-40eb-8900-6712719559a7} +Version=1.0 +[File000] +Location=C:\FireBee\MLAB\firebee1\firebee1.o +Folder=Intermediary +DeviceName=PIC18F4520 +LanguageToolSuiteID={6B3DAA78-59C1-46DD-B6AA-DBDAE4E06484} +LanguageToolID={49D3CA3F-D9A3-4518-9943-226A347E8CC7} +LanguageToolLocation=C:\Program Files (x86)\Microchip\MPASM Suite\MPASMWIN.exe +PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)||$(INCDIR)||$(LIBDIR)||$(LKRDIR)|| +SOLK=|firebee1.asm|||||||C:\Program Files (x86)\Microchip\MPASM Suite\LKR\18f4520_g.lkr|| +SuiteArgsString= +ToolArgsString= +TraceCmdString= +DebugOptions= +[File001] +Location=C:\FireBee\MLAB\firebee1\firebee1.err +Folder=Intermediary +DeviceName=PIC18F4520 +LanguageToolSuiteID={6B3DAA78-59C1-46DD-B6AA-DBDAE4E06484} +LanguageToolID={49D3CA3F-D9A3-4518-9943-226A347E8CC7} +LanguageToolLocation=C:\Program Files (x86)\Microchip\MPASM Suite\MPASMWIN.exe +PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)||$(INCDIR)||$(LIBDIR)||$(LKRDIR)|| +SOLK=|firebee1.asm|||||||C:\Program Files (x86)\Microchip\MPASM Suite\LKR\18f4520_g.lkr|| +SuiteArgsString= +ToolArgsString= +TraceCmdString= +DebugOptions= +[File002] +Location=C:\FireBee\MLAB\firebee1\firebee1.lst +Folder=Output +DeviceName=PIC18F4520 +LanguageToolSuiteID={6B3DAA78-59C1-46DD-B6AA-DBDAE4E06484} +LanguageToolID={49D3CA3F-D9A3-4518-9943-226A347E8CC7} +LanguageToolLocation=C:\Program Files (x86)\Microchip\MPASM Suite\MPASMWIN.exe +PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)||$(INCDIR)||$(LIBDIR)||$(LKRDIR)|| +SOLK=|firebee1.asm|||||||C:\Program Files (x86)\Microchip\MPASM Suite\LKR\18f4520_g.lkr|| +SuiteArgsString= +ToolArgsString= +TraceCmdString= +DebugOptions= +[File003] +Location=C:\FireBee\MLAB\firebee1\firebee1.cof +Folder=Output +DeviceName=PIC18F4520 +LanguageToolSuiteID={6B3DAA78-59C1-46DD-B6AA-DBDAE4E06484} +LanguageToolID={96C98149-AA1B-4CF9-B967-FAE79CAB663C} +LanguageToolLocation=C:\Program Files (x86)\Microchip\MPASM Suite\mplink.exe +PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)||$(INCDIR)||$(LIBDIR)||$(LKRDIR)|| +SOLK=|firebee1.asm|||||||C:\Program Files (x86)\Microchip\MPASM Suite\LKR\18f4520_g.lkr|| +SuiteArgsString= +ToolArgsString=/o"$(BINDIR_)$(TARGETBASE).cof" /M"$(BINDIR_)$(TARGETBASE).map" /W +TraceCmdString= +DebugOptions= +[File004] +Location=C:\FireBee\MLAB\firebee1\firebee1.hex +Folder=Output +DeviceName=PIC18F4520 +LanguageToolSuiteID={6B3DAA78-59C1-46DD-B6AA-DBDAE4E06484} +LanguageToolID={96C98149-AA1B-4CF9-B967-FAE79CAB663C} +LanguageToolLocation=C:\Program Files (x86)\Microchip\MPASM Suite\mplink.exe +PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)||$(INCDIR)||$(LIBDIR)||$(LKRDIR)|| +SOLK=|firebee1.asm|||||||C:\Program Files (x86)\Microchip\MPASM Suite\LKR\18f4520_g.lkr|| +SuiteArgsString= +ToolArgsString=/o"$(BINDIR_)$(TARGETBASE).cof" /M"$(BINDIR_)$(TARGETBASE).map" /W +TraceCmdString= +DebugOptions= +[TOOL_LOC_STAMPS] +tool_loc{49D3CA3F-D9A3-4518-9943-226A347E8CC7}=C:\Program Files (x86)\Microchip\MPASM Suite\MPASMWIN.exe +tool_loc{96C98149-AA1B-4CF9-B967-FAE79CAB663C}=C:\Program Files (x86)\Microchip\MPASM Suite\mplink.exe diff --git a/MLAB/firebee1/firebee1.mcw b/MLAB/firebee1/firebee1.mcw new file mode 100644 index 0000000000000000000000000000000000000000..74deeebf5b6100924ee5ebf2631438d976dfbda0 GIT binary patch literal 33280 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 K{(aW(kNyXv-`UOp literal 0 HcmV?d00001 diff --git a/MLAB/firebee1/firebeei1.map b/MLAB/firebee1/firebeei1.map new file mode 100644 index 0000000..e12b3b5 --- /dev/null +++ b/MLAB/firebee1/firebeei1.map @@ -0,0 +1,156 @@ +MPLINK 4.33, Linker +Linker Map File - Created Mon Jan 11 14:35:58 2010 + + Section Info + Section Type Address Location Size(Bytes) + --------- --------- --------- --------- --------- + Reset_Vector code 0x000000 program 0x000004 + .cinit romdata 0x000004 program 0x000002 + LOW_INT_VEC code 0x000018 program 0x00004a + .code code 0x000100 program 0x00033c + + + + Program Memory Usage + Start End + --------- --------- + 0x000000 0x000005 + 0x000018 0x000061 + 0x000100 0x00043b + 908 out of 33048 program addresses used, program memory utilization is 2% + + + + Symbols - Sorted by Name + Name Address Location Storage File + --------- --------- --------- --------- --------- + AD_ISR 0x000326 program static C:\firebee\MLAB\firebee1\firebee1.asm + FEB 0x0003ee program static C:\firebee\MLAB\firebee1\firebee1.asm + HLVD_ISR 0x000300 program static C:\firebee\MLAB\firebee1\firebee1.asm + HLVD_LE 0x00031a program static C:\firebee\MLAB\firebee1\firebee1.asm + INT_HANDLER 0x00001e program static C:\firebee\MLAB\firebee1\firebee1.asm + INT_HANDLER2 0x00002e program static C:\firebee\MLAB\firebee1\firebee1.asm + KALT_START 0x000100 program static C:\firebee\MLAB\firebee1\firebee1.asm + LADESTROM 0x0001d2 program static C:\firebee\MLAB\firebee1\firebee1.asm + LS_OFF_POWER 0x0001de program static C:\firebee\MLAB\firebee1\firebee1.asm + LS_ON_POWER 0x0001d8 program static C:\firebee\MLAB\firebee1\firebee1.asm + MAIN 0x00019e program static C:\firebee\MLAB\firebee1\firebee1.asm + MEHR_ALS_28_TAGE 0x0003e6 program static C:\firebee\MLAB\firebee1\firebee1.asm + MEHR_ALS_30_TAGE 0x000414 program static C:\firebee\MLAB\firebee1\firebee1.asm + MINUTEN 0x0003c0 program static C:\firebee\MLAB\firebee1\firebee1.asm + NEXT_MONTH 0x0003fa program static C:\firebee\MLAB\firebee1\firebee1.asm + NON_SYNC 0x0002ae program static C:\firebee\MLAB\firebee1\firebee1.asm + NOT_APRIL 0x00041e program static C:\firebee\MLAB\firebee1\firebee1.asm + NOT_FEB 0x00040e program static C:\firebee\MLAB\firebee1\firebee1.asm + NOT_JUNI 0x000428 program static C:\firebee\MLAB\firebee1\firebee1.asm + NOT_SEP 0x000432 program static C:\firebee\MLAB\firebee1\firebee1.asm + PINGS 0x000368 program static C:\firebee\MLAB\firebee1\firebee1.asm + PINGS2 0x000380 program static C:\firebee\MLAB\firebee1\firebee1.asm + POWER_AUS 0x0001c0 program static C:\firebee\MLAB\firebee1\firebee1.asm + POWER_EIN 0x0001a6 program static C:\firebee\MLAB\firebee1\firebee1.asm + POWER_OFF_I 0x000346 program static C:\firebee\MLAB\firebee1\firebee1.asm + POWER_OFF_I2 0x000356 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_ISR 0x000256 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_ISR1 0x000268 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_ISR2 0x000274 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_RFM 0x000290 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_RRFP 0x000280 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_SYNC2 0x0002b4 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_SYNC3 0x0002c6 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_SYNC4 0x0002d8 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_SYNC_START 0x00029c program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_UNBEK 0x00027c program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_WAIT1 0x0002e4 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_WAIT2 0x0002ec program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_WAIT3 0x0002f4 program static C:\firebee\MLAB\firebee1\firebee1.asm + RESETEN 0x000232 program static C:\firebee\MLAB\firebee1\firebee1.asm + RTC_ISR 0x000326 program static C:\firebee\MLAB\firebee1\firebee1.asm + SCHALTJAHR 0x0003f4 program static C:\firebee\MLAB\firebee1\firebee1.asm + SEKUNDEN 0x000386 program static C:\firebee\MLAB\firebee1\firebee1.asm + SEK_2 0x0003ac program static C:\firebee\MLAB\firebee1\firebee1.asm + SEK_NPA 0x00039c program static C:\firebee\MLAB\firebee1\firebee1.asm + SEND_RTC_REG 0x00020c program static C:\firebee\MLAB\firebee1\firebee1.asm + STUNDEN 0x0003ca program static C:\firebee\MLAB\firebee1\firebee1.asm + TAGE_UND_TAG_DER_WOCHE 0x0003d4 program static C:\firebee\MLAB\firebee1\firebee1.asm + TASTE 0x0001e4 program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_END 0x00022c program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_JA 0x0001fa program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_OFF_POWER 0x000224 program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_ON_POWER 0x000206 program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_ON_POWER2 0x000212 program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_ON_POWER3 0x000218 program static C:\firebee\MLAB\firebee1\firebee1.asm + TX_ISR 0x00023c program static C:\firebee\MLAB\firebee1\firebee1.asm + TX_ISR1 0x000254 program static C:\firebee\MLAB\firebee1\firebee1.asm + TX_ISR_FERTIG 0x00024c program static C:\firebee\MLAB\firebee1\firebee1.asm + WAIT_LVDOK 0x000312 program static C:\firebee\MLAB\firebee1\firebee1.asm + WARTEN 0x0001a0 program static C:\firebee\MLAB\firebee1\firebee1.asm + YEAR 0x000406 program static C:\firebee\MLAB\firebee1\firebee1.asm + + + + Symbols - Sorted by Address + Name Address Location Storage File + --------- --------- --------- --------- --------- + INT_HANDLER 0x00001e program static C:\firebee\MLAB\firebee1\firebee1.asm + INT_HANDLER2 0x00002e program static C:\firebee\MLAB\firebee1\firebee1.asm + KALT_START 0x000100 program static C:\firebee\MLAB\firebee1\firebee1.asm + MAIN 0x00019e program static C:\firebee\MLAB\firebee1\firebee1.asm + WARTEN 0x0001a0 program static C:\firebee\MLAB\firebee1\firebee1.asm + POWER_EIN 0x0001a6 program static C:\firebee\MLAB\firebee1\firebee1.asm + POWER_AUS 0x0001c0 program static C:\firebee\MLAB\firebee1\firebee1.asm + LADESTROM 0x0001d2 program static C:\firebee\MLAB\firebee1\firebee1.asm + LS_ON_POWER 0x0001d8 program static C:\firebee\MLAB\firebee1\firebee1.asm + LS_OFF_POWER 0x0001de program static C:\firebee\MLAB\firebee1\firebee1.asm + TASTE 0x0001e4 program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_JA 0x0001fa program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_ON_POWER 0x000206 program static C:\firebee\MLAB\firebee1\firebee1.asm + SEND_RTC_REG 0x00020c program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_ON_POWER2 0x000212 program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_ON_POWER3 0x000218 program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_OFF_POWER 0x000224 program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_END 0x00022c program static C:\firebee\MLAB\firebee1\firebee1.asm + RESETEN 0x000232 program static C:\firebee\MLAB\firebee1\firebee1.asm + TX_ISR 0x00023c program static C:\firebee\MLAB\firebee1\firebee1.asm + TX_ISR_FERTIG 0x00024c program static C:\firebee\MLAB\firebee1\firebee1.asm + TX_ISR1 0x000254 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_ISR 0x000256 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_ISR1 0x000268 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_ISR2 0x000274 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_UNBEK 0x00027c program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_RRFP 0x000280 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_RFM 0x000290 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_SYNC_START 0x00029c program static C:\firebee\MLAB\firebee1\firebee1.asm + NON_SYNC 0x0002ae program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_SYNC2 0x0002b4 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_SYNC3 0x0002c6 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_SYNC4 0x0002d8 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_WAIT1 0x0002e4 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_WAIT2 0x0002ec program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_WAIT3 0x0002f4 program static C:\firebee\MLAB\firebee1\firebee1.asm + HLVD_ISR 0x000300 program static C:\firebee\MLAB\firebee1\firebee1.asm + WAIT_LVDOK 0x000312 program static C:\firebee\MLAB\firebee1\firebee1.asm + HLVD_LE 0x00031a program static C:\firebee\MLAB\firebee1\firebee1.asm + RTC_ISR 0x000326 program static C:\firebee\MLAB\firebee1\firebee1.asm + AD_ISR 0x000326 program static C:\firebee\MLAB\firebee1\firebee1.asm + POWER_OFF_I 0x000346 program static C:\firebee\MLAB\firebee1\firebee1.asm + POWER_OFF_I2 0x000356 program static C:\firebee\MLAB\firebee1\firebee1.asm + PINGS 0x000368 program static C:\firebee\MLAB\firebee1\firebee1.asm + PINGS2 0x000380 program static C:\firebee\MLAB\firebee1\firebee1.asm + SEKUNDEN 0x000386 program static C:\firebee\MLAB\firebee1\firebee1.asm + SEK_NPA 0x00039c program static C:\firebee\MLAB\firebee1\firebee1.asm + SEK_2 0x0003ac program static C:\firebee\MLAB\firebee1\firebee1.asm + MINUTEN 0x0003c0 program static C:\firebee\MLAB\firebee1\firebee1.asm + STUNDEN 0x0003ca program static C:\firebee\MLAB\firebee1\firebee1.asm + TAGE_UND_TAG_DER_WOCHE 0x0003d4 program static C:\firebee\MLAB\firebee1\firebee1.asm + MEHR_ALS_28_TAGE 0x0003e6 program static C:\firebee\MLAB\firebee1\firebee1.asm + FEB 0x0003ee program static C:\firebee\MLAB\firebee1\firebee1.asm + SCHALTJAHR 0x0003f4 program static C:\firebee\MLAB\firebee1\firebee1.asm + NEXT_MONTH 0x0003fa program static C:\firebee\MLAB\firebee1\firebee1.asm + YEAR 0x000406 program static C:\firebee\MLAB\firebee1\firebee1.asm + NOT_FEB 0x00040e program static C:\firebee\MLAB\firebee1\firebee1.asm + MEHR_ALS_30_TAGE 0x000414 program static C:\firebee\MLAB\firebee1\firebee1.asm + NOT_APRIL 0x00041e program static C:\firebee\MLAB\firebee1\firebee1.asm + NOT_JUNI 0x000428 program static C:\firebee\MLAB\firebee1\firebee1.asm + NOT_SEP 0x000432 program static C:\firebee\MLAB\firebee1\firebee1.asm + + diff --git a/MLAB/firebee1/readme.txt b/MLAB/firebee1/readme.txt new file mode 100644 index 0000000..4f5b8f3 --- /dev/null +++ b/MLAB/firebee1/readme.txt @@ -0,0 +1,125 @@ + PS2 -> Atari /Amiga Mouse Adapter + ~~~~~~~~~~~~~~~~~~~~~~~ + + + Version 1.4 July 2010 + + +Due to the short supply of mice for the Atari computers I decided to build an adapter that would allow me to use a serial mouse on my Atari, but even these are getting a bit old now, so I got the soldering iron out again and here's the result. A PS2 Mouse adapter for the Atari. It supports a standard PS2 mouse with 2 or 3 buttons and can also be used with the Microsoft optical IntelliMouse that comes with a USB to PS2 adapter. The middle button on the PS2 mouse is used as a left click and hold function for easy selection. Click the middle button again to release. Now for the bad news, for some reason Microsoft mice don't support the middle button in standard PS2 mode. :-( + +Please don't shout at me all you Atari users but as an added feature if you change a link then the adapter can be used with an Amiga as well. + + +All files, programs etc contained in this archive are copright 2010 by Tom Kirk. Personal use is allowed but any commercial use is not allowed. Please feel free to use my work but don't rip me off. + + + + Files in this archive. + ~~~~~~~~~~~~~~~~~~~~~~ + +readme.txt This text file +circuit.bmp Picture of circuit in bitmap format +PS2Atari_v1_4.hex Object code of the PIC16F84 program in Intel hex +PS2Atari_v1_4.asm Source code of the PIC16F84 program +pcbtop.bmp Top layer of the PCB in bitmap format +pcbbot.bmp Bottom layer of the PCB in bitmap format + + + + Technical Details. + ~~~~~~~~~~~~~~~~~~ + +When the PS2 mouse is moved or a button changes state a packet of data is sent, my circuit decodes this data and then simulates the Atari mouse. + +The circuit consists of a single microcontroller that contains a program to do the conversion. The circuit is shown in the file circuit.bmp + +The microcontroller (PIC) can be either a PIC16C84 or PIC16F84 or PIC16F84A. + +The PIC (IC1) needs to be programmed with the program. +The program is supplied in two forms PS2Atari_v1_4.hex is an object code file in Intel hex and can be read by most programmers capable of programming the PIC + +PS2Atari_v1_4.asm is the source code of the program and can be assembled with the free MPLAB / MPASM software from Microchip if you wish to create your own object file. Note needs "Disable case sensitivity" under build options setting in MPLAB to assemble without errors. + +The PIC should be programmed with oscillator as XT, watchdog disabled, powerup timer enabled and code protection off. (No point code protecting a freely available program.) + +The source code and object code is compatible with all the PIC microcontrollers listed above. + +I've built mine using a printed circuit board but it's small enough to be built using a small piece of stripboard. + +On my PCB I have a 6 pin mini din socket at one end and a 9 pin D type socket at the other. I can then use a standard port extender lead to connect to the Atari. I've found that a 9 pin PC serial extension lead can also be used for this as well if you remove the fastening screws. + +If you decide to build one on a piece of stripboard it will be easier to use cable mounted sockets as PCB types don't fit onto a stripboard. + +Once built the board can be mounted into a small plastic box. + +No special software is required on the Atari and it will work with all software. +Your favourite mouse accelerator program may be used if required. + + + + Parts list. + ~~~~~~~~~~~ + +IC1 PIC16F84A or PIC16F84 or PIC16C84 + +Fi1 4 MHz Ceramic resonator + +R1 10K +R2 10K + +C1 4.7 uF +C2 0.1 uF + +All capacitors should be rated at 16V or more. + +CN1 6 pin mini din PCB mounting socket +CN2 9 Pin D type PCB mounting socket + + +JP1 3 pin header and 2 way link + + +If building on a piece of stripboard I suggest using cable mounting types of connectors and use a small piece of multicore cable between the sockets and the stripboard. You will find the PCB sockets do not fit on a piece of stripboard. + +If you don't need the switchable Atari/Amiga support forget the 3 pin header and just use a wire link instead. + + + + History. + ~~~~~~~~ + +Version 1.4 July 2010 +Unused Pin RA4 now correctly set as an imput. +(Pin is tied to +5V on PCB for easier PCB routing.) +My oversight when transfering from prototype to PCB. +Thanks to Luciano for informing me. + +Version 1.3 Released March 2010 +Corrected a bug in button routine preventing both buttons being active together under certain conditions. +Thanks to Oliver Fleischmann for informing me. +(Can't believe it taken 6 Years for this bug to show itself!!) + +Version 1.2 Released March 2009 +Changed left/right button outputs to fake open collector. +Needed to stop conflits when using a joystick pluged into other port. + +Version 1.1 Released September 2004. +Added support for the Amiga and added the middle button support. + +Version 1.0 Never released. +My original version for the Atari only. + + + + Help. + ~~~~~ + +If you need further information or help then contact me at tgkirk@aol.com + +Please allow a few days for a reply as I have other commitments as well. + + Tom Kirk July 2010 + +P.S. I also have on my web site a Playstation controller to Atari adapter and a PC viewer for Atari format picture files. + + http://www.tgkirk.110mb.com diff --git a/usb/store/config.h b/usb/store/config.h index ce5464f..c929993 100644 --- a/usb/store/config.h +++ b/usb/store/config.h @@ -38,9 +38,9 @@ #define DEBUG_GLOBAL 1 #if DEBUG_GLOBAL /* Define only one of the three debug posibilities below */ -#define DEBUG_TO_FILE 1 +#define DEBUG_TO_FILE 0 #define DEBUG_TO_ARANYM 0 /* NOTE: No arguments are passed to the printf function */ -#define DEBUG_TO_CONSOLE 0 +#define DEBUG_TO_CONSOLE 1 /* Define which local layer you want on */ #define DEBUG_HOST_LAYER 0 diff --git a/usb/store/main.c b/usb/store/main.c index 32d7f4b..46a9e3f 100644 --- a/usb/store/main.c +++ b/usb/store/main.c @@ -96,6 +96,7 @@ printf("idx %d PCI handle: %lx\n", idx -1, handle); /* Galvez: Debug */ int main(int argc, char **argv) { +printf("main()\n"); #ifdef CONFIG_USB_STORAGE long p = 0; int r; diff --git a/usb/store/makefile b/usb/store/makefile index 2164391..624462b 100644 --- a/usb/store/makefile +++ b/usb/store/makefile @@ -39,7 +39,7 @@ PROGRAM = stor_pci.tos endif STACKSIZE = 64k -OPTIMISATION = -O -fomit-frame-pointer +OPTIMISATION = -O2 -fomit-frame-pointer CPU = -m68020-60 LIB = ASFLAGS = $(CPU) diff --git a/usb/store/usb_storage.c b/usb/store/usb_storage.c index e48724e..85e0218 100644 --- a/usb/store/usb_storage.c +++ b/usb/store/usb_storage.c @@ -198,7 +198,7 @@ typedef struct disk_partition { } disk_partition_t; //extern unsigned long swap_long(unsigned long val); -#define le32_to_int(a) swap_32(*(unsigned long *)a) +//#define le32_to_int(a) swap_32(*(unsigned long *)a) int usb_stor_get_info(struct usb_device *dev, struct us_data *us, block_dev_desc_t *dev_desc); int usb_storage_probe(struct usb_device *dev, unsigned int ifnum, struct us_data *ss); @@ -289,8 +289,8 @@ static int get_partition_info_extended(block_dev_desc_t *dev_desc, int ext_part_ { info->type = (unsigned long)pt->sys_ind; info->blksz = 512; - info->start = ext_part_sector + le32_to_int(pt->start4); - info->size = le32_to_int(pt->size4); + info->start = ext_part_sector + __le32_to_cpu(pt->start4); + info->size = __le32_to_cpu(pt->size4); DEBUG_STORAGE("DOS partition at offset 0x%lx, size 0x%lx, type 0x%x %s\r\n", info->start, info->size, pt->sys_ind, (is_extended(pt->sys_ind) ? " Extd" : "")); @@ -307,7 +307,7 @@ static int get_partition_info_extended(block_dev_desc_t *dev_desc, int ext_part_ { if(is_extended(pt->sys_ind)) { - int lba_start = le32_to_int(pt->start4) + relative; + int lba_start = __le32_to_cpu(pt->start4) + relative; usb_free(buffer); return get_partition_info_extended(dev_desc, lba_start, ext_part_sector == 0 ? lba_start : relative, part_num, which_part, info); }

{>`jBnk)Ji|4%m^^6RF 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 literal 0 HcmV?d00001 diff --git a/FPGA_quartus/Video/altdpram2_waveforms.html b/FPGA_quartus/Video/altdpram2_waveforms.html new file mode 100644 index 0000000..a856bf6 --- /dev/null +++ b/FPGA_quartus/Video/altdpram2_waveforms.html @@ -0,0 +1,16 @@ + + +Sample Waveforms for altdpram2.vhd + + +

FGHj0lLGVZjodKK>7fnl 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 + + ; define config bits + __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC + + ;4 MHz Clock + +;************************ Input output usage ******************** + +; RA0 Atari / Amiga select i/p +; RA1 PS2 mouse data +; RA2 PS2 mouse clock +; RA3 Not used +; RA4 Not used + +; RB0 Atari XA / Amiga XA o/p +; RB1 Atari XB / Amiga YB o/p +; RB2 Atari YA / Amiga YA o/p +; RB3 Atari YB / Amiga XB o/p +; RB4 Left button o/p +; RB5 Right button o/p +; RB6 Not used +; RB7 Not used + +;******************************************************************* + + +;********** I/O port equates ************** + + +ps2data equ 1 ;ps2 mouse data signal +ps2clk equ 2 ;ps2 mouse clock signal + + +;********** User register equates ********* + +temp equ 0ch ;Temporary storage +byte1 equ 0dh ;Byte 1 store +byte2 equ 0eh ;Byte 2 store +byte3 equ 0fh ;Byte 3 store +xinc equ 010h ;last x increment read +yinc equ 011h ;last y increment read +xlow equ 012h ;low byte of 16 bit x counter +xhigh equ 013h ;high byte of 16 bit x counter +ylow equ 014h ;low byte of 16 bit y counter +yhigh equ 015h ;high byte of 16 bit y counter +xpat equ 016h ;x pattern position +ypat equ 017h ;y pattern position +bcnt equ 018h ;bit counter +brec equ 019h ;byte received +timer equ 01ah ;timer counter +parity equ 01bh ;parity store +flag equ 01ch ;flag bits (bit 0 = ack error flag) + ; (bit 1 = parity error flag) + ; (bit 2 = middle button pressed flag) + ; (bit 3 = middle state flag) + ; (bit 4 = left button flag) + +;***************************************************************************************** + +;***** initialise program ******* + +reset clrwdt + bcf status,rp0 ;set page0 + clrf intcon ;disable interupts + bsf status,rp0 + movlw 084h ;set tmr0 to int clk,prescale/32 + movwf option_reg + bcf status,rp0 + clrf porta ;all porta outputs will be low when enabled + movlw 0h ;set mouse buttons and x y start levels + movwf portb + bsf status,rp0 + movlw 017h ;set porta bit 3 as an unused output + movwf trisa + movlw 030h ;set portb bit 4 and 5 as inputs (left/right button o/ps open collector) + movwf trisb + bcf status,rp0 + + clrf byte1 ;set start up values + clrf byte2 + clrf byte3 + clrf xinc + clrf yinc + clrf xlow + clrf xhigh + clrf ylow + clrf yhigh + clrf xpat + clrf ypat + clrf flag + + +;***************** set up ps2 mouse ********************* + + +start call ps2read ;read power up self test report + btfsc flag,1 ;parity error? + goto restart ;yes so jump + movlw 0aah ;correct ? + subwf brec,w + btfss status,z + goto restart ;no so jump + + call ps2read ;read power up pc mouse id + btfsc flag,1 ;parity error? + goto restart ;yes so jump + movlw 0h ;correct ? + subwf brec,w + btfss status,z + goto restart ;no so jump + +restart movlw 0ffh ;send reset pc mouse command + call ps2wri + btfsc flag,0 ;ack bit? + goto restart ;no so jump + + call ps2read ;ack returned + btfsc flag,1 ;parity error? + goto restart ;yes so jump + movlw 0fah ;correct ? + subwf brec,w + btfss status,z + goto restart ;no so jump + + call ps2read ;read self test report + btfsc flag,1 ;parity error? + goto restart ;yes so jump + movlw 0aah ;correct ? + subwf brec,w + btfss status,z + goto restart ;no so jump + + call ps2read ;read pc mouse id + btfsc flag,1 ;parity error? + goto restart ;yes so jump + movlw 0h ;correct ? + subwf brec,w + btfss status,z + goto restart ;no so jump + + movlw 0f4h ;send enable reporting command + call ps2wri + btfsc flag,0 ;ack bit? + goto restart ;no so jump + + call ps2read ;ack returned + btfsc flag,1 ;parity error? + goto restart ;yes so jump + movlw 0fah ;correct ? + subwf brec,w + btfss status,z + goto restart + + movlw 0f3h ;send set sample rate command + call ps2wri + btfsc flag,0 ;ack bit? + goto restart ;no so jump + + call ps2read ;ack returned + btfsc flag,1 ;parity error? + goto restart ;yes so jump + movlw 0fah ;correct ? + subwf brec,w + btfss status,z + goto restart + + movlw 028h ;send sample rate (40) + call ps2wri + btfsc flag,0 ;ack bit? + goto restart ;no so jump + + call ps2read ;ack returned + btfsc flag,1 ;parity error? + goto restart ;yes so jump + movlw 0fah ;correct ? + subwf brec,w + btfss status,z + goto restart + +;******************* Main program loop **************************** + +main call ps2read ;read 3 byte pc mouse packet + btfsc flag,1 ;parity error? + goto restart ;yes so jump + movf brec,w + movwf byte1 + call ps2read + btfsc flag,1 ;parity error? + goto restart ;yes so jump + movf brec,w + movwf byte2 + call ps2read + btfsc flag,1 ;parity error? + goto restart ;yes so jump + movf brec,w + movwf byte3 + +;adjust the 16 bit x counter + + clrf temp ;use temp as high byte + btfsc byte1,4 ;extend sign bit into high byte + decf temp,f + + movf byte2,w ;add low bytes + addwf xlow,f + btfsc status,c ;add carry to high + incf xhigh,f + movf temp,w ;add high bytes + addwf xhigh,f + +;adjust the 16 bit y counter + + clrf temp ;use temp as high byte + btfsc byte1,5 ;extend sign bit into high byte + decf temp,f + + movf byte3,w ;add low bytes + addwf ylow,f + btfsc status,c ;add carry to high + incf yhigh,f + movf temp,w ;add high bytes + addwf yhigh,f + +;left button + + btfss byte1,0 ;is the left pc mouse button pressed + goto lbutt ;no so jump + bsf flag,4 ;set left button flag + goto nbutt +lbutt bcf flag,4 ;reset left button flag + +;right button + +nbutt btfss byte1,1 ;is the right pc mouse button pressed + goto rbutt ;no so jump + bcf portb,5 ;set right button as pressed + bsf status,rp0 ;by setting pin as a low output + bcf trisb,5 + bcf status,rp0 + goto mbut +rbutt bsf status,rp0 ;set right button as not pressed + bsf trisb,5 ;by setting pin as an input + bcf status,rp0 + +;middle button + +mbut btfss byte1,2 ;check if middle button pressed + goto mbutt ;jump if not + btfsc flag,2 ;check middle button pressed flag + goto mbex ;set so jump + movlw 08h ;toggle middle state flag + xorwf flag,f + bsf flag,2 ;set middle button pressed flag + goto mbex + +mbutt btfss flag,2 + goto mbex + bcf flag,2 ;reset middle button pressed flag +mbex + + btfsc flag,3 ;check middle state flag + goto setlb ;jump if set + btfsc flag,4 ;check left button flag + goto setlb ;jump if set + bsf status,rp0 ;no flags set so set left buuton not pressed + bsf trisb,4 ;by setting pin as an input + bcf status,rp0 + goto main +setlb bcf portb,4 ;set left button pressed + bsf status,rp0 ;by setting pin as a low output + bcf trisb,4 + bcf status,rp0 + goto main + + +;***************************** Subs ***************************************** + +;***** Read a byte from the ps2 mouse ****** + +ps2read btfss porta,ps2data ;data low ? + goto ps2r1 ;yes so start reading data + call trans ;no so do emulated mouse move + clrf tmr0 ;clear rtcc before delay + +oned btfss porta,ps2data ;data low ? + goto ps2r1 ;yes so start reading data + movlw 0dh ;delay between emulated mouse moves + subwf tmr0,w + btfss status,z + goto oned ;not done so jump + goto ps2read ;check again + +ps2r1 call wlow ;wait until clock goes low for start bit + + call whigh ;wait until clock is high + + movlw 08h ;read 8 data bits + movwf bcnt + clrf parity ;clear parity counter + +ps2r2 call wlow ;wait until clock is low + bcf status,c ;clear carry flag + btfss porta,ps2data ;data bit set ? + goto ps2r3 ;no so jump + incf parity,f ;yes so inc the parity counter + bsf status,c ;set carry bit +ps2r3 rrf brec,f ;shift carry into destination + + call whigh ;wait until clock is high + + decfsz bcnt,f ;finished the 8 bits? + goto ps2r2 ;no so do again + + call wlow ;for the parity bit + btfsc porta,ps2data ;parity bit set? + incf parity,f ;yes so inc the parity counter + bcf flag,1 ;clear flag (no error) + btfss parity,0 ;check calculated parity + bsf flag,1 ;set flag (parity error!) + call whigh + + call wlow ;for the stop bit + call whigh + + return ;and exit + +;***** Write a byte to the ps2 mouse ****** + +ps2wri movwf brec ;speed not important at this point so + movwf temp ;calculate parity seperate for sake of + movlw 08h ;clarity + movwf bcnt + clrf parity +ps2w1 rrf temp,f ;shift bit into carry + movlw 01h ;preset for bit set + btfss status,c ;test carry + clrw ;bit zero so no addition + addwf parity,f ;update parity + decfsz bcnt,f ;any more bits to do? + goto ps2w1 ;yes so jump + comf parity,f ;only intrested in bit 0. + ;parity bit is complement of bit 0 + + movlw 08h ;bit count to 8 + movwf bcnt + + call clkl ;set clock low + + movlw 021h ;wait 100 uS + movwf temp +ps2ww decfsz temp,f + goto ps2ww + + call datl ;set data low + nop ;wait 5 uS + nop + nop + nop + nop + call clkh ;set clock high + +ps2w2 call wlow ;wait for clock to go low + rrf brec,f ;rotate bit into carry for testing + btfss status,c + goto ps2w3 ;jump if bit is low + call dath ;set data high + goto ps2w4 +ps2w3 call datl ;set data low +ps2w4 call whigh ;wait for clock to go high + + decfsz bcnt,f ;any more bits to send? + goto ps2w2 ;yes so jump + + call wlow ;wait for clock to go low + btfss parity,0 ;send parity bit + goto ps2w5 + call dath + goto ps2w6 +ps2w5 call datl +ps2w6 call whigh + + call wlow ;send stop bit + call dath + call whigh + + call wlow ;read ack from mouse + bcf flag,0 + btfsc porta,ps2data + bsf flag,0 + call whigh + + return + + +;******* wait for ps2 clock to go low ********** + +wlow btfsc porta,ps2clk + goto wlow + return + + +;******* wait for ps2 clock to go high ********** + +whigh btfss porta,ps2clk + goto whigh + return + + +;******* set ps2 clock low ********************* + +clkl bsf status,rp0 + bcf trisa,ps2clk + bcf status,rp0 + return + + +;******* set ps2 clock high ******************** + +clkh bsf status,rp0 + bsf trisa,ps2clk + bcf status,rp0 + return + + +;******* set ps2 data low ********************* + +datl bsf status,rp0 + bcf trisa,ps2data + bcf status,rp0 + return + + +;******* set ps2 data high ********************* + +dath bsf status,rp0 + bsf trisa,ps2data + bcf status,rp0 + return + + + +;********* emulate mouse move *************************** + +;move the emulated mouse by one step in the x direction if needed + +trans movf xlow,w ;is the x counter zero? + iorwf xhigh,w + btfsc status,z + goto ymove ;no so jump to y direction + + btfsc xhigh,7 ;is the x counter positive or negative? + goto xneg ;jump if negative + + incf xpat,f ;increment the pattern list position + movlw 04h ;test if end of pattern list + subwf xpat,w + btfsc status,z + clrf xpat ;end of pattern list so reset + movlw 0ffh ;subtract 1 from the 16 bit counter by adding ffffh + addwf xlow,f + btfsc status,c ;add carry to high byte + incf xhigh,f + addwf xhigh,f + goto ymove ;exit to y direction + +xneg decf xpat,f ;decrement the pattern list position + movlw 0ffh ;test if end of pattern list + subwf xpat,w + btfss status,z + goto xno + movlw 03h ;end of pattern list so reset + movwf xpat +xno movlw 01h ;add 1 to the 16 bit counter + addwf xlow,f + btfsc status,c ;add carry to high byte + incf xhigh,f + +;move the emulated mouse by one step in the y direction if needed + +ymove movf ylow,w ;is the y counter zero? + iorwf yhigh,w + btfsc status,z + goto out ;no so jump to output pattern + + btfsc yhigh,7 ;is the y counter positive or negative? + goto yneg ;jump if negative + + incf ypat,f ;increment the pattern list position + movlw 04h ;test if end of pattern list + subwf ypat,w + btfsc status,z + clrf ypat ;end of pattern list so reset + movlw 0ffh ;subtract 1 from the 16 bit counter by adding ffffh + addwf ylow,f + btfsc status,c ;add carry to high byte + incf yhigh,f + addwf yhigh,f + goto out ;exit to output pattern + +yneg decf ypat,f ;decrement the pattern list position + movlw 0ffh ;test if end of pattern list + subwf ypat,w + btfss status,z + goto yno + movlw 03h ;end of pattern list so reset + movwf ypat +yno movlw 01h ;add 1 to the 16 bit counter + addwf ylow,f + btfsc status,c ;add carry to high byte + incf yhigh,f + +;output new x and y patterns + +out btfsc porta,0 ;test if set for atari + goto amiga + + movf xpat,w ;get the x pattern bits + bsf pclath,1 ;set page 2 + call pattx + movwf temp ;store the pattern in temp + movf ypat,w ;get the y pattern bits + call patty + clrf pclath ;set page 0 + iorwf temp,f ;store the pattern in temp + + goto outpat + +amiga movf xpat,w ;get the x pattern bits + bsf pclath,1 ;set page 2 + call apatx + movwf temp ;store the pattern in temp + movf ypat,w ;get the y pattern bits + call apaty + clrf pclath ;set page 0 + iorwf temp,f ;store the pattern in temp + +outpat movf temp,w ;get patterns + andlw 0fh ;ensure high nibble stays zero + movwf portb ;ouput patterns + + + return + + +;*************** pattern lists ************** + + org 0200h + +;atari patterns +pattx addwf pcl,f + retlw 0 + retlw 1 + retlw 3 + retlw 2 + +patty addwf pcl,f + retlw 0 + retlw 4 + retlw 0ch + retlw 8 + +;amiga patterns +apatx addwf pcl,f + retlw 0 + retlw 1 + retlw 9 + retlw 8 + +apaty addwf pcl,f + retlw 0 + retlw 4 + retlw 6 + retlw 2 + +;******************************************************************************* + + END + + diff --git a/BaS_codewarrior/FireBee/MLAB/firebee1/Thumbs.db b/BaS_codewarrior/FireBee/MLAB/firebee1/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..5c84dfb6d19a66e008ecbeb8e2f2638efa71ba6d GIT binary patch literal 22528 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 a&V@{E!r8 literal 0 HcmV?d00001 diff --git a/BaS_codewarrior/FireBee/MLAB/firebee1/circuit.bmp b/BaS_codewarrior/FireBee/MLAB/firebee1/circuit.bmp new file mode 100644 index 0000000000000000000000000000000000000000..10c587c3fe7e1bd89a0bb70d53730feecc94a98a GIT binary patch literal 32062 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 SQ|X7!8>9YTivKJ|;J*Q^($^~h literal 0 HcmV?d00001 diff --git a/BaS_codewarrior/FireBee/MLAB/firebee1/firebee1.asm b/BaS_codewarrior/FireBee/MLAB/firebee1/firebee1.asm new file mode 100644 index 0000000..cc1d11a --- /dev/null +++ b/BaS_codewarrior/FireBee/MLAB/firebee1/firebee1.asm @@ -0,0 +1,845 @@ +;********************************************************** +;* firebee1 PIC18F4321 MAIN FILE +;********************************************************** +;* CREATED BY FREDI ASCHWANDEN +;* DATE 22.9.2009 +;********************************************************** + list PE=18f4520 ;EXTENDED INSTRUCTION SET + include "P18f4520.inc" +;------------------------ Equates --------------------------; +;Register addresses +;BANK 0 +SECS equ 0x00 +SECS_ALARM EQU 0x01 +MINS equ 0x02 +MINS_ALRAM EQU 0x03 +HOURS equ 0x04 +HOURS_ALARM EQU 0x05 +DAY_OF_WEEK EQU 0x06 +DAYS EQU 0x07 +MONTHS EQU 0x08 +YEARS EQU 0x09 ;offset vom 1968 +REGA EQU 0x0A +REGB EQU 0x0B +REGC EQU 0x0C +REGD EQU 0x0D +RTC_RAM EQU 0x0E ; bis 0x3F +free equ 0x40 +TICKS equ 0x41 ;125MS +TASTE_ON_TIME EQU 0x42 +TASTE_OFF_TIME EQU 0x43 +POWER_ON_TIME EQU 0x44 +AD_KANAL EQU 0x45 +U_ERR EQU 0x46 ;SPANNUNGSFEHLER WENN BIT 0=1, BIT1=1 WARTEN AUF GELADEN +U_ERR_TIME EQU 0x47 ;ZEIT SEIT SPANNUNGSFEHLER +U_POWER_IN EQU 0x48 ;SPANNUNG POWER IN 1V CA. 6E +RX_B EQU 0x49 ;RECEIVED BYT +RX_STATUS EQU 0x4A ;STATUS: 0x00=WAIT AUF MCF COMMANDO, 0x82=EMPFANGE 64BYT FROM RTC +TX_STATUS EQU 0x4B ;STATUS: 0x00=WAIT 0x81=SENDE 64BYT FROM RTC +GO_SUB EQU 0x4C ;WENN GLEICH 0xFB DANN SUBROUTINE AUSFÜHREN +GO_INT EQU 0x4D ;WENN GLEICH 0xFB DANN SUBROUTINE AUSFÜHREN +EAPIR1 EQU 0x4E ;INTERRUPT ACTIV UND ENABLE +EAPIR2 EQU 0x4F ;INTERRUPT ACTIV UND ENABLE +;BANK 1 AB 0x100 +RX_BUFFER EQU 0x100 ;0x80 BYT BUFFER BIS 0x17F BANK +TX_BUFFER EQU 0x180 ;0X80 BYT BUFFER BIS 0x1FF BANK + +;-------------------------------------------------------------- +SEND_RTC_TIME EQU .2 ;0.25 SEC (EINHEIT IST EIN TICK = 128MS +RESET_ON_TIME EQU .2 ;0.25 SEC (EINHEIT IST EIN TICK = 128MS +RESET_OFF_TIME EQU .4 ;0.5 SEC (EINHEIT IST EIN TICK = 128MS +OFF_TIME EQU .20 ;2.5 SEC (EINHEIT IST EIN TICK = 128MS +ON_TIME EQU .2 ;0.25 SEC (EINHEIT IST EIN TICK = 128MS +TIMER_HB EQU .240 ;256- (32768Hz PRO 1/8SEC = 4096TICKS/256) => 256-16=240 (resp 256-16/4 (wenn osco) = 252) +TIME_MAX EQU .160 ;MAXIMALTIME +U_ERR_PW_AUS EQU .5 ;5 SEC +;SERIEL +SYNC1 EQU 0FFh +SYNC1_DATA EQU 'A'; +SYNC2 EQU 0FEh +SYNC2_DATA EQU 'C'; +SYNC3 EQU 0FDh +SYNC3_DATA EQU 'P'; +SYNC4 EQU 0FCh +SYNC4_DATA EQU 'F'; +REQ_RTCD_FROM_PIC EQU 01h ;RTC AND NVRAM DATEN VOM PIC ANFORDERN +RTCD_FROM_PIC EQU 81h ;RTC AND NVRAM DATEN HEADER UND STATUS +REQ_RTCD_FROM_MCF EQU 02h ;RTC AND NVRAM DATEN VOM MCF ANFORDERN +RTCD_FROM_MCF EQU 82h ;RTC AND NVRAM DATEN HEADER UND STATUS +U_MIN_TO_MCF EQU 03h ;UNTERSPANNUNGSMITTEILUNG AN PROCESSOR +EXT_SUB_GO EQU 04h ;SERIELL CODE UM SUBROUTINEN/INTERRUPTS ZU AKTIVIEREN +EXT_SUB_STOP EQU 05h ;SERIELL CODE UM SUBROUTINEN/INTERRUPTS ZU STOPPEN +CLK_SLEEP EQU B'00010010' ;125kHz intern, SLEEP MODE +CLK_ACTIV EQU B'01110010' ;inTernal CLK=8MHz, SLEEP MODE, SLEEP MODE +EXT_CODE EQU 0xFB ;CODE FÜR EXTERNE SUBROUTINEN/INTERRUPTS AUSFÜHREN (FireBee!) +EXTERN_INT_ADR EQU 0x2000 ;HIER MUSS 0xFB STEHEN WENN EXTERNE INTERRUPTS AUSFÜHRBAR +EXTERN_INTERRUPTS EQU 0x2002 ;STARTPUNKT EXTERNE SUBROUTINES +EXTERN_SUB_ADR EQU 0x2010 ;HIER MUSS 0xFB STEHEN WENN EXTERNE SUBROUTINES AUSFÜHRBAR +EXTERN_SUBROUTINES EQU 0x2012 ;STARTPUNKT EXTERNE SUBROUTINES +REQ_BLOCK EQU 0xA0 ;BLOCK DATEN LESEN -> CODE UND 3 BYTS ADRESSE = TOTAL 4 BYTES +READ_BLOCK EQU 0xA1 ;PROGRAMM BLOCK PIC->MCF -> CODE, 3 BYTS ADRESSE UND 64 BYTS DATEN = TOTAL 68 BYTES +WRITE_BLOCK EQU 0xA2 ;PROGRAMM BLOCK MCF->PIC -> CODE, 3 BYTS ADRESSE UND 64 BYTS DATEN = TOTAL 68 BYTES +PRG_OK_PIC EQU 0x22 ;PROGRAMMIERUNG BLOCK FERTIG +;**********************************************************************************************""""""""""""" +; Start at the reset vector +Reset_Vector code 0x000 + BRA KALT_START +;-------------------------------------------------------------- +HIGH_INT_VEC code 0x0008 + GOTO 0x18 + +LOW_INT_VEC code 0x0018 +INT_HANDLER + CLRF BSR ;IMMER ACCESS BANK +;SETZEN GRUPPE 1 + MOVFF PIE1,EAPIR1 ;INTERRUPTS HOLEN + MOVF PIR1,0 ;MASKE + ANDWF EAPIR1 ;ACTIVE SETZEN + BTFSC EAPIR1,TMR1IF ;uhr interrupt? + BRA RTC_ISR ;ja-> + BTFSC EAPIR1,ADIF ;AD INTERRUTP? + BRA AD_ISR ;JA-> + BTFSC EAPIR1,TXIF ;seriell TX? + BRA TX_ISR ;JA-> + BTFSC EAPIR1,RCIF ;seriell RX? + BRA RX_ISR ;JA-> + +;SETZEN GRUPPE 2 + MOVFF PIE2,EAPIR2 ;INTERRUPTS HOLEN + MOVF PIR2,0 ;MASKE + ANDWF EAPIR2 ;ACTIVE SETZEN + + BTFSC EAPIR2,HLVDIF ;UNDER/OVERVOLTAGE DETECT + BRA HLVD_ISR ;JA-> + RETFIE + +;TESTEN UND SETZEN GRUPPE 1 + MOVFF PIE1,EAPIR1 ;INTERRUPTS HOLEN + MOVF PIR1,0 ;MASKE + ANDWF EAPIR1 ;ACTIVE SETZEN + TSTFSZ EAPIR1 + BRA INT_HANDLER +;TESTEN UND SETZEN GRUPPE 2 + MOVFF PIE2,EAPIR2 ;INTERRUPTS HOLEN + MOVF PIR2,0 ;MASKE + ANDWF EAPIR2 ;ACTIVE SETZEN + TSTFSZ EAPIR2 + BRA INT_HANDLER + + MOVLW EXT_CODE ;GO EXTERNE SUBROUTINEN AKTIV? + CPFSEQ GO_INT ;SKIP WENN JA + RETFIE + GOTO EXTERN_INTERRUPTS ;REGISTER SICHERN UND STARTEN +;**********************************************************************************************""""""""""""" + ; Start application beyond vector area + CODE 0x0100 +KALT_START +;RESET MODE + CLRF BSR ;BANK 0 +;ALLE INT AUS UND RÜCKSETZEN + CLRF INTCON ;alle INTERRUPT AUS + CLRF RCON ;INT PRIORITY AUS + CLRF PIE1 ;MASK DISABLE + CLRF PIE2 + CLRF PIR1 ;INT ACT AUS + CLRF PIR2 + CLRF IPR1 ;LOW PRIORITY + CLRF IPR2 + ; clock +; MOVLW B'01000000' ;32MHZ +; MOVWF OSCTUNE + CLRF OSCTUNE +;CLOCK + MOVLW CLK_ACTIV + MOVWF OSCCON + ; div init +;SET PORT A: **7:#master/0.409*5V0 **6:PIC_AMKB_RX **5:PIC_SWTICH **4:HIGH_CHARGE_CURRENT **3:2V5 *2:3V3/2 **1:1V25 **0:POWER_IN/11 + CLRF PORTA ;#master(7)=0, REST=0 + MOVLW B'11111111' ;DIRECTION: alles auf Input + MOVWF TRISA +;SET PORT B: **7:PGD **6:PGC **5:PGM **4:PIN_INT,1V5 **3:GAME PORT PIN10 **2:GAME PORT PIN11 **1:GAME PORT PIN6 **0: GAME PORT PIN5 + CLRF PORTB ;ALLES AUF 0 + MOVWF TRISB +;SET PORT C: **7: PIC_RX **6:PIC_TX **5:AMKB_TX **4:GAME PORT PIN4 **3:GAME PORT PIN12 **2:GAME PORT PIN13 **1+0: OCS 32K768Hz + CLRF PORTC + MOVWF TRISC +;SET PORT D: **7:#RSTI **6:GAME PORT PIN3 **5:PS2 KB CLK **4:PS2 MS CLK **3:PS2 KB DATA **2:MS DATA **1:TASTER **0:POWER ON/OFF (0=ON) +; SET TASTE UND POWER + CLRF PORTD ;ALLES AUF 0 + MOVWF TRISD ;ALLES AUF INPUT +;SET PORT E: **3:#MCLR **2:#PCI_RESET **1:PCI 3V3 **0:PIC LED (0=ON) + MOVLW B'00000001' ;LED OFF + CLRF PORTE ;ALLES AUF 0 + MOVWF TRISE ;ALLES AUF INPUT +;-------------------------- +; set OVERvoltage detekt + MOVLW B'10011011' ;INT WENN ÜBER 3.9V + MOVWF HLVDCON + MOVLW B'00000011' ;ERRORS ON, WAIT AUF LADEN + MOVWF U_ERR + MOVLW .20 ;SEIT 20SEC ERROR + MOVWF U_ERR_TIME ;SETZEN + BSF PIE2,HLVDIE ;Enable interrupt +;INTIALISIERUNGSPROGAMME + CALL LADESTROM ;LADESTROM EINSTELLEN +;UHR initialisieren + MOVLW TIMER_HB ;Preload TMR1 register + MOVWF TMR1H ; + CLRF TMR1L ;=0 + MOVLW B'00001111' ; 8 BIT, osc1 enable, TIMER MODE, TIMMER ENABLE + MOVWF T1CON ; SET + CLRF TICKS ; 1/8 sec register + CLRF SECS ; Initialize timekeeping registers + CLRF MINS ; + MOVLW .12 + MOVWF HOURS + MOVLW .1 + MOVWF DAY_OF_WEEK + MOVLW .1 + MOVWF DAYS + MOVLW .8 + MOVWF MONTHS + MOVLW .42 + MOVWF YEARS ;MONTAG 19.7.2010 12:00:00 (JAHR-1968) + CLRF TASTE_ON_TIME + CLRF TASTE_OFF_TIME + CLRF POWER_ON_TIME + BSF PIE1,TMR1IE ;Enable Timer1 interrupt +;AD WANDLER INITIALISIEREN + CLRF AD_KANAL ;BEI 0 BEGINNEN + CLRF ADCON0 ;AD MOUDUL AUS + MOVLW B'00001001' ;VREF=VDD,ANALOG INPUT AN0-AN5 + MOVWF ADCON1 + MOVLW B'00000000' ;LINKSSBÜNDIG,0 TAD,CLOCK=Fosc/2 + MOVWF ADCON2 +; BSF PIE1,ADIE ;INTERRUPT ENABLE + CLRF U_POWER_IN ;WERT AUF 0 VOLT +; seriell initialisieren + CLRF SPBRGH + MOVLW .16 + MOVWF SPBRG ;BAUDE RATE = 115K + MOVLW B'00000100' ;TX AUS, ASYNC HIGH SPEED + MOVWF TXSTA + MOVLW B'10010000' ;SERIEL EIN,RX EIN, + MOVWF RCSTA + MOVLW B'00001000' ;16BIT BRG, RISING EDGE INTERRUPT + MOVWF BAUDCON ;SETZEN +;EXTERNER SUBROUTINES + CLRF GO_SUB +; interrupts + CLRF INTCON3 ;EXTER INTERRUPT AUS, low priority + MOVLW B'11110000' ;PORT B PULLUPS AUS, EXT INT ON RISING EDGE, TMR0 AND BPIP Low priority + MOVWF INTCON2 + MOVLW B'11000000' ;global on, PERIPHERAL INT on + MOVWF INTCON +;CLOCK + MOVLW CLK_SLEEP ;GEHT JETZT IN SLEEP MODE + MOVWF OSCCON +;------------------------------------------------------------------------- +;---------------------------- MAIN LOOP ------------------------------------------------- +;------------------------------------------------------------------------- +MAIN + MOVLW EXT_CODE ;GO EXTERNE SUBROUTINEN AKTIV? + CPFSEQ GO_SUB ;SKIP WENN JA + BRA WARTEN ;SONST WARTEN + CALL MAIN2,1 ;REGISTER SICHERN UND STARTEN +WARTEN + BTFSC TRISD,RD0 ;SKIP IF POWER ON + SLEEP ;SLEPP BIS ZUM NÄCHSTEN INTERRUPT + BRA MAIN +MAIN2 + CALL EXTERN_SUBROUTINES ;EXTERNE SUBROUTINEN AUSFÜHREN AN STELLE 0 MUSS 0xFA STEHEN SONST UNGÜLTIG + RETURN 1 ;RETURN MIT REGISTER ZURÜCK +;**********************************************************************************************""""""""""""" +;--------------------------- subroutines ------------------------------------------------- +;**********************************************************************************************""""""""""""" +;POWER ON/OFF +POWER_EIN +;CLOCK + MOVLW CLK_ACTIV + MOVWF OSCCON + + BCF TRISA,RA7 ;CLOCK EINSCHALTEN + BCF TRISD,RD7 ;#RSTI AKTIVIEREN = LOW + BCF TRISB,RB4 ;PIC_INT AKTIVIEREN + BCF TRISD,RD0 ;POWER ON + BRA LS_ON_POWER ;LADESTROM EINSTELLEN +POWER_AUS +;CLOCK + MOVLW CLK_SLEEP + MOVWF OSCCON + + BSF TRISD,RD0 ;POWER OFF + BSF TRISD,RD7 ;#RSTI DEAKTIVIEREN + BSF TRISB,RB4 ;PIC INT DEAKTIVIEREN + BSF TRISA,RA7 ;CLOCK DEAKTIVIEREN + CLRF POWER_ON_TIME ;RÜCKSETZEN + BRA LS_OFF_POWER ;LADESTROM EINSTELLEN +;LADESTROM EINSTELLEN ---------------------------- +LADESTROM + BTFSC TRISD,RD0 ; ONPOWER? + BRA LS_OFF_POWER ; NEIN-> +LS_ON_POWER ;GROSSER LADESTROM 5A + BCF TRISA,RA4 ;10K ON + RETURN +LS_OFF_POWER ;KLEINER LADESTROM_MIN 1.85A + BSF TRISA,RA4 ;10K OFF + RETURN +;--------------------------------------------------- +;SERIELL AUS/EIN +SERIAL_OFF + BCF TXSTA,TXEN ;TX AUS + BCF PIE1,RCIE ;DISABLE RX interrupt + BCF PIR1,RCIF ;CLEAR RX interrupt + BCF PIE1,TXIE ;DISABLE TX interrupt + BCF PIR1,TXIF ;CLEAR TX interrupt + RETURN +SERIAL_ON + BTFSC TXSTA,TXEN ;SCHON EIN? + RETURN ;JA-> + BSF TXSTA,TXEN ;TX EIN + MOVLW SYNC1 + MOVWF RX_STATUS ;AUF SYNC WARTEN + CLRF TX_STATUS + MOVFF RCREG,RX_B ;RCREG LEEREN + MOVFF RCREG,RX_B ;RCREG LEEREN + BCF PIR1,TXIF ;CLEAR TX interrupt + BCF PIR1,RCIF ;INTERRUPT RX FLAG LÖSCHEN + BSF PIE1,RCIE ;ENABLE RX interrupt + NOP + RETURN +;--------------------------------------------------------------------- +; TASTENDRUCK +TASTE + BTFSS PORTD,RD1 ;TASTE GEDRÜCKT? + BRA TG_JA ;->JA +;TASTE NICHT GEDRÜCKT ODER LOSGELASSEN + CLRF TASTE_ON_TIME ;RÜCKSETZEN + + MOVLW TIME_MAX ;MAX + CPFSGT TASTE_OFF_TIME ;LÄNGER? + INCF TASTE_OFF_TIME ;NEIN ERHÖHEN + + MOVLW RESET_OFF_TIME ;2SEC + CPFSGT POWER_ON_TIME ;LÄNGER? + RETURN ;NEIN-> +;RESET AUFHEBEN + BSF TRISD,RD7 ;JA -> #RSTI DEAKTIVIEREN =HIGH + CALL SERIAL_ON ;SERIELL EINSCHALTEN + RETURN +;TASTE GEDRÜCKT +TG_JA + MOVLW OFF_TIME+1 + CPFSLT TASTE_ON_TIME ;KÜRZER ALS ONTIME+1 + RETURN ;NEIN->FERTIG + BTFSC TRISD,RD0 ;ONPOWER? + BRA TG_OFF_POWER ;NEIN-> +TG_ON_POWER + MOVLW SEND_RTC_TIME ;ZEIT FÜR RTC REQ FROM MCF HOLEN? + CPFSEQ TASTE_ON_TIME ;TEST + BRA TG_ON_POWER2 ;NEIN-> +SEND_RTC_REG + MOVLW REQ_RTCD_FROM_MCF + MOVWF TXREG ;SENDEN + BRA TG_END; +TG_ON_POWER2 + MOVLW RESET_ON_TIME ; + CPFSLT TASTE_ON_TIME ;KÜRZER? + BRA RESETEN +TG_ON_POWER3 + MOVLW OFF_TIME + CPFSLT TASTE_ON_TIME ;KÜRZER ON/OFF TIME? + CALL POWER_AUS ;NEIN->POWER OFF + BRA TG_END +TG_OFF_POWER + MOVLW ON_TIME + CPFSLT TASTE_ON_TIME ;KÜRZER ALS ON/OFF TIME? + CALL POWER_EIN ;NEIN->POWER ON +TG_END + CLRF TASTE_OFF_TIME ;RÜCKSETZEN + INCF TASTE_ON_TIME ;ERHÖHEN + RETURN +RESETEN + BCF TRISD,RD7 ;NEIN-> #RSTI AKTIVIEREN =LOW -->>>RESET + CALL SERIAL_OFF ;SERIELL DEAKTIVIEREN + BRA TG_ON_POWER3 +;**********************************************************************************************""""""""""""" +;----------------------------------------- INTERRUPTS +;**********************************************************************************************""""""""""""" +; SERIELL INTERRUPTS +;**********************************************************************************************""""""""""""" +;TX +TX_ISR ;TRANSMIT + MOVLW RTCD_FROM_PIC ;RTC DATEN SENDEN? + CPFSEQ TX_STATUS ;SKIP JA + BRA TX_ISR1 ;NEIN-> + MOVFF POSTINC0,TXREG ;BYT SENDEN + MOVLW 0x3F ;SCHON LETZTES BYTS? + CPFSGT FSR0L ;SKIP WENN FERTIG + RETFIE ;NEIN WEITERE SENDEN +TX_ISR_FERTIG + CLRF TX_STATUS + BCF PIE1,TXIE ;SONST DISABLE interrupt + BCF PIR1,TXIF ;INTERRUPT FLAG LÖSCHEN + RETFIE +TX_ISR1 + MOVLW READ_BLOCK ;READ BLOCK? + CPFSEQ TX_STATUS ;SKIP JA + BRA TX_ISR2 ;NEIN-> + MOVFF POSTINC0,TXREG ;BYT SENDEN + MOVLW 0xC3 ;SCHON LETZTES BYTS? + CPFSGT FSR0L ;SKIP WENN FERTIG + RETFIE ;NEIN WEITERE SENDEN +TX_ISR2 + BRA TX_ISR_FERTIG +;**********************************************************************************************""""""""""""" +;RX +RX_ISR ; BYT RECEIVED + MOVFF RCREG,RX_B ; BYT HOLEN +; MOVFF RX_B,TXREG ; ECHO + MOVLW SYNC4 ;IM SYNC STATUS? + CPFSLT RX_STATUS ;SKIP WENN NEIN + BRA RX_SYNC_START ;JA -> ZUERST SYNC EMPFANGEN +;--------------- + MOVLW RTCD_FROM_MCF ; DATEN VOM MCF CODE 0x82? + CPFSEQ RX_STATUS ; WENN JA-> SKIP + BRA RX_ISR1 ; NEIN-> +;64 BYT EMPFANGEN ------------------------------------- + MOVFF RX_B,POSTINC1 ;HOLEN -> (CNT+) + MOVLW 0x3F ;64 BYT ÜBERTRAGEN? + CPFSLT FSR1L ;NEIN ->SKIP + CLRF RX_STATUS ;JA FERTIG + RETFIE +;------------------------------------------------------------------------------------- +RX_ISR1 + CPFSEQ RX_B ;BLOCK HEADER 0X82? + BRA RX_ISR2 ;NEIN-> + MOVWF RX_STATUS ;STATUS SETZEN = EMPFANGENES BYT + LFSR 1,.0 ;BYT COUNTER AUF O + RETFIE +RX_ISR2 + MOVLW REQ_RTCD_FROM_PIC ;DATEN SENDEN? + CPFSEQ RX_B ;SKIP WENN JA + BRA RX_ISR3 ;SONST NEXT +;BLOCK HEADER UND 64 BYT SENDEN ----------------------------------------- + LFSR 0,.0 + BCF PIR1,TXIF ;INTERRUPT FLAG LÖSCHEN + BSF PIE1,TXIE ;Enable interrupt + MOVLW RTCD_FROM_PIC + MOVWF TX_STATUS ;STATUS SETZEN + MOVWF TXREG ;BLOCK HEADER = 0X81 + CLRF RX_STATUS ;STATUS RÜCKSETZEN + RETFIE ;UND WEG +;------------------------------------------------------------------------------------- +RX_ISR3 + MOVLW EXT_SUB_GO ;EXT SUB FREIGEBEN? + CPFSEQ RX_B + BRA RX_ISR4 ;NEIN-> +;EXT SUBS FREIGEBEN -------------------------------------------------------------- + MOVLW (EXTERN_INT_ADR & 0xFF0000)>>16 + MOVWF TBLPTRU + MOVLW (EXTERN_INT_ADR & 0x00FF00)>>8 + MOVWF TBLPTRH + MOVLW (EXTERN_INT_ADR & 0x0000FF) + MOVWF TBLPTRL ;ADRESSE SETZEN + TBLRD* ;WERT HOLEN (MUSS 0xFB SEIN SONST UNGÜLTIG) + MOVFF TABLAT,GO_INT ;EXTERNE SUBROUTINES AKTIVIEREN WENN OK + MOVLW (EXTERN_SUB_ADR & 0xFF0000)>>16 + MOVWF TBLPTRU + MOVLW (EXTERN_SUB_ADR & 0x00FF00)>>8 + MOVWF TBLPTRH + MOVLW (EXTERN_SUB_ADR & 0x0000FF) + MOVWF TBLPTRL ;ADRESSE SETZEN + TBLRD* ;WERT HOLEN (MUSS 0xFB SEIN SONST UNGÜLTIG) + MOVFF TABLAT,GO_SUB ;EXTERNE SUBROUTINES AKTIVIEREN WENN OK + CLRF RX_STATUS ;STATUS RÜCKSETZEN + RETFIE ;UND WEG +;------------------------------------------------------------------------------------- +RX_ISR4 + MOVLW EXT_SUB_STOP ;EXT SUB STOPPEN? + CPFSEQ RX_B + BRA RX_ISR5 ;NEIN-> +;EXT SUBS STOPPEN -------------------------------------------------------------- + CLRF GO_INT ;STOPPEN + CLRF GO_SUB ;STOPPEN + CLRF RX_STATUS ;STATUS RÜCKSETZEN + RETFIE ;UND WEG +;------------------------------------------------------------------------------------- +RX_ISR5 + MOVLW REQ_BLOCK ;REQ BLOCK? + CPFSEQ RX_B + BRA RX_ISR6 ;NEIN-> +;REQ BLOCK ---------------------------------------------------------------- + MOVWF RX_STATUS ;STATUS SETZEN = EMPFANGENES BYT + LFSR 1,TX_BUFFER ;BYT COUNTER AUF TX_BUFFER -> GLEICH EINTRAGEN + RETFIE +RX_ISR6 + CPFSEQ RX_STATUS ;REQ BLOCK ADRESSE EMPFANGFEN? + BRA RX_ISR7 ;NEIN-> +;3 BYT EMPFANGEN ------------------------------------- + MOVFF RX_B,POSTINC1 ;HOLEN -> (CNT+) + MOVLW 0x82 ;3 BYT ÜBERTRAGEN? (BUFFER BEGINNT BEI 0x180 + CPFSLT FSR1L ;NEIN ->SKIP + BRA RX_RB3BOK + RETFIE +RX_RB3BOK + LFSR 1,TX_BUFFER ;BYT RX COUNTER AUF TX_BUFFER + MOVFF POSTINC1,TBLPTRU ;ADRESSE EINTRAGEN + MOVFF POSTINC1,TBLPTRH + MOVFF POSTINC1,TBLPTRL + MOVLW 0xC2 ;67 BYT ÜBERTRAGEN? (BUFFER BEGINNT BEI 0x180 +RX_RB3B2 + TBLRD *+ ;LESEN UND NEXT + MOVFF TABLAT,POSTINC1 ;UND EINTRAGEN + CPFSEQ FSR1L ;WENN FERTIG ->SKIP + BRA RX_RB3B2 ;SONST LOOP +;BLOCK HEADER 3 BYTS ADRESSE UND 64 BYT SENDEN STARTEN ----------------------------------------- + LFSR 0,TX_BUFFER ;TX COUNTER AUF TX_BUFFER + BCF PIR1,TXIF ;INTERRUPT FLAG LÖSCHEN + BSF PIE1,TXIE ;Enable interrupt + MOVLW READ_BLOCK ;CODE HEADER 0xA1 + MOVWF TX_STATUS ;STATUS SETZEN + MOVWF TXREG ;BLOCK HEADER = 0XA1 + CLRF RX_STATUS ;STATUS RÜCKSETZEN + RETFIE ;UND WEG +;------------------------------------------------------------------------------------- +RX_ISR7 + MOVLW WRITE_BLOCK ;WRITE BLOCK 0xA2 BYT EMPFANGEN? + CPFSEQ RX_STATUS ;WENN JA-> SKIP + BRA RX_ISR8 ;NEIN-> +;WRITE BLOCK ---------------------------------------------------------------------------- +;67 BYT EMPFANGEN ------------------------------------- + MOVFF RX_B,POSTINC1 ;HOLEN -> (CNT+) + MOVLW 0x42 ;67 BYT ÜBERTRAGEN? + CPFSLT FSR1L ;WENN FERTIG ->SKIP + RETFIE +; ADRESSE UND DATEN SIND DA -> PROGRAMMING FLASH + LFSR 1,RX_BUFFER ;BYT COUNTER AUF RX BUFFER + MOVFF POSTINC1,TBLPTRU ;TABLE POINTER SETZEN + MOVLW (EXTERN_INT_ADR & 0xFF0000)>>16 + CPFSLT TBLPTRU ;TEST OB WENIGER ALS ERLAUBT + BRA NO_PROG ;JA-> + MOVFF POSTINC1,TBLPTRH ;TABLE POINTER SETZEN + MOVLW (EXTERN_INT_ADR & 0x00FF00)>>8 + CPFSLT TBLPTRU ;TEST OB WENIGER ALS ERLAUBT + BRA NO_PROG ;JA-> + MOVFF POSTINC1,TBLPTRL ;TABLE POINTER SETZEN +;EREASE BLOCK + BSF EECON1,EEPGD ; point to Flash program memory + BCF EECON1,CFGS ; access Flash program memory + BSF EECON1,WREN ; enable write to memory + BSF EECON1,FREE ; enable Row Erase operation + MOVLW 55h + MOVWF EECON2 ; write 55h + MOVLW 0AAh ; write 0AAh + MOVWF EECON2 + BSF EECON1,WR ; start erase (CPU stall) + MOVLW 0x42 ;67 BYT +WRITE_WORD_TO_HREGS + MOVFF POSTINC1,TABLAT ; get byte of buffer data + TBLWT+* ; write data, perform a short write to internal TBLWT holding register. + CPFSLT FSR1L ;SCHON BEI 67 BYTES? + BRA WRITE_WORD_TO_HREGS ;NEIN->LOOP +PROGRAM_MEMORY + BSF EECON1,EEPGD ; point to Flash program memory + BCF EECON1,CFGS ; access Flash program memory + BSF EECON1,WREN ; enable write to memory + MOVLW 55h + MOVWF EECON2 ; write 55h + MOVLW 0AAh + MOVWF EECON2 ; write 0AAh + BSF EECON1,WR ; start program (CPU stall) + BCF EECON1,WREN ; disable write to memory +NO_PROG + CLRF RX_STATUS ;AUF NORMLA SCHALTEN + RETFIE ;UND FERTIG +;WRITE BLOCK SETZEN? +RX_ISR8 + CPFSEQ RX_B ;BLOCK HEADER COMMANDOE 0XA2? + BRA RX_ISR9 ;NEIN-> + MOVWF RX_STATUS ;STATUS SETZEN = EMPFANGENES BYT + LFSR 1,RX_BUFFER ;BYT COUNTER AUF RX BUFFER + RETFIE +;------------------------------------------------------------------------------------- +RX_ISR9 + CLRF RX_STATUS + RETFIE +;------------------------------------------------------------------------------------- +;SYNC ABWARTEN UND WENN DA "OK!" SENDEN ---------------------------------------------------- +;------------------------------------------------------------------------------------- +RX_SYNC_START + MOVLW SYNC1 + CPFSEQ RX_STATUS + BRA RX_SYNC2 + MOVLW SYNC1_DATA + CPFSEQ RX_B + BRA NON_SYNC + MOVLW SYNC2 + MOVWF RX_STATUS + RETFIE +NON_SYNC + MOVLW SYNC1 + MOVWF RX_STATUS + RETFIE +RX_SYNC2 ;TEST AUF SYNC UND DATA 2 + MOVLW SYNC2 + CPFSEQ RX_STATUS + BRA RX_SYNC3 ;NICHT SYNC 2 + MOVLW SYNC2_DATA + CPFSEQ RX_B + BRA NON_SYNC + MOVLW SYNC3 + MOVWF RX_STATUS + RETFIE +RX_SYNC3 ;TEST AUF SYNC UND DATA 3 + MOVLW SYNC3 + CPFSEQ RX_STATUS + BRA RX_SYNC4 ;NICHT SYNC 3 + MOVLW SYNC3_DATA + CPFSEQ RX_B + BRA NON_SYNC + MOVLW SYNC4 + MOVWF RX_STATUS + RETFIE +RX_SYNC4 ;TEST AUF SYNC UND DATA 4 + MOVLW SYNC4 + CPFSEQ RX_STATUS + BRA NON_SYNC ;WIEDER VON VORN + MOVLW SYNC4_DATA + CPFSEQ RX_B ;SKIP OK + BRA NON_SYNC ;NICHT SYNC4 DATA +RX_WAIT1 + BTFSS TXSTA,TRMT + BRA RX_WAIT1 + MOVLW 'O' ;SENDE OK! + MOVWF TXREG; +RX_WAIT2 + BTFSS TXSTA,TRMT + BRA RX_WAIT2 + MOVLW 'K' ;SENDE OK! + MOVWF TXREG; +RX_WAIT3 + BTFSS TXSTA,TRMT + BRA RX_WAIT3 + MOVLW '!' + MOVWF TXREG; + CLRF RX_STATUS ;OK START NORMAL + RETFIE +;**********************************************************************************************""""""""""""" +;SPANNUNGSÜBERWACHUNGS INTERRUPT +HLVD_ISR + BTFSS U_ERR,1 ;WARTEN AUF GELADEN? + BRA HLVD_LE ;NEIN UNTERSPANNUNG DETEKT-> + BCF U_ERR,0 ;SPANNUNGSFEHLER AUS + BCF U_ERR,1 ;WARTEN AUF GELADEN=AUS + MOVLW U_ERR_PW_AUS+2 ;POWER AUS ÜBERSPRINGEN + MOVWF U_ERR_TIME ;ZEIT SETZEN + MOVLW B'00010111' ;INT WENN UNTER 3.12V + MOVWF HLVDCON +WAIT_LVDOK: + BTFSS HLVDCON,IVRST ;ABWARTEN BIS AENDERUNG AKTIV + BRA WAIT_LVDOK + BCF PIR2,HLVDIF ;INTERRUPT FLAG LÖSCHEN + RETFIE +HLVD_LE ;UNTERSPANNUNG + BSF U_ERR,0 ;ERROR SETZEN + BSF U_ERR,1 ;WARTEN AUF GELADEN SETZEN + CLRF U_ERR_TIME ;RÜCKSETZEN +;MESSAGE AN PROCESSOR + MOVLW U_MIN_TO_MCF + MOVWF TXREG ;SENDEN + + MOVLW B'10011010' ;INT WENN ÜBER 3.7V + MOVWF HLVDCON + BRA WAIT_LVDOK +;**********************************************************************************************""""""""""""" +;A/D INTERRUPT +AD_ISR + BCF PIR1,ADIF ;CLEAR INTERRUPT PENDIG + RETFIE ;RETURN +;************************************************************************************************************* +; uhr interrupt ALLE 1/8 SEC +RTC_ISR +;UHR WIEDER RÜCKSETZEN UND AKTIVIEREN + MOVLW TIMER_HB ;WIEDER AUF STARTWERT + MOVWF TMR1H ;SETZEN + BCF PIR1,TMR1IF ;INTERRUPT FLAG LÖSCHEN + BSF PORTB,RB4 ;PIC INT HIGH -------- + BSF TRISE,RE0 ;LED=OFF + BCF PORTB,RB4 ;PIC INT = LOW + BTFSC TRISD,RD0 ;POWER OFF? + BRA POWER_OFF_I ;JA-> +; POWER IS ON: +; BLINKEN 4X/SEC WENN RESET + BTFSC TRISD,RD7 ;RESET AKTIV? + BRA PINGS ;NEIN-> + BTFSC TICKS,0 ;UNGERADE TICKS? + BCF TRISE,RE0 ;NEIN->LED=ON + BRA PINGS +POWER_OFF_I + MOVLW .3 + ANDWF SECS,0 ;4 SEKUNDEN AUSMASKIEREN + BNZ PINGS ;NICHT MODULO4 -> + MOVLW .7 + CPFSEQ TICKS ;7. TICK? + BRA POWER_OFF_I2 ;NEIN-> + BCF TRISE,RE0 ;JA->LED=ON +POWER_OFF_I2 + MOVLW .30 ; WENIGER ALS 30 SEC SEIT LETZTEM SPANNUNGSFEHLER? + CPFSLT U_ERR_TIME + BRA PINGS ;NEIN-> + MOVLW .5 + CPFSEQ TICKS ;5. TICK? + BRA PINGS ;NEIN-> + BCF TRISE,RE0 ;JA->LED=ON +PINGS + CALL TASTE ;UP TASTE +; TASTE LOSGELASSEN? + MOVLW RESET_OFF_TIME + CPFSGT TASTE_OFF_TIME ;TASTE LÄNGER ALS 2 SEC LOSGELASSEN? + BRA PINGW ;NEIN-> + BSF TRISD,RD7 ;JA-> #RSTI INAKTIV =HIGH + BTFSS TRISD,RD0 ;POWER ON? + CALL SERIAL_ON ;ja->SERIELL EINSCHALTEN +;--TICKS=125MS +PINGW + INCF TICKS ;inc ticks + BTFSS TRISD,RD0 ;POWER ON? + BRA PINGS2 ;JA-> + MOVLW 20 + CPFSLT U_POWER_IN ;LADEGERÄT ANGESCHLOSSEN? + BRA PINGS2 ;->JA LED HELLER + MOVLW TIME_MAX ;>=MAXIMALZEIT? + CPFSLT U_ERR_TIME ;SEIT SPANNUNGSFEHLER + BSF TRISE,RE0 ;JA -> LED OFF +PINGS2 + MOVLW .7 ; 7? + CPFSGT TICKS + RETFIE ; NEIN ->RETURN +SEKUNDEN +;led blinken POWER ON----------------------------------------- + BTFSS TRISD,RD0 ;POWER ON? + BCF TRISE,RE0 ;JA -> LED_ON +;TIMER U_ERR ERHÖHEN + MOVLW TIME_MAX ;>=MAXIMALZEIT? + CPFSGT U_ERR_TIME ;SEIT SPANNUNGSFEHLER + INCF U_ERR_TIME ;NEIN ERHÖHEN +;SPANNUNGSFEHLER BEARBEITEN ---------------------------------------- + MOVLW U_ERR_PW_AUS ;POWER AUS ZEIT? + CPFSEQ U_ERR_TIME ; + BRA SEK_NPA ;NEIN + CALL POWER_AUS ;JA AUSSCHALTEN +;-------------------------------------------------------- +SEK_NPA +;SPANNUNG POWER IN MESSEN + MOVLW B'00000001' ;KANAL 0, AD ON + MOVWF ADCON0 ; + BSF ADCON0,1 ;GO +SEK_2 + BTFSC ADCON0,1 ;FERTIG? + BRA SEK_2 ;NEIN + MOVFF ADRESH,U_POWER_IN ;OK WERT EINTRAGEN + +;SPANNUNG 2V5 MESSEN -> U_ERR TIMER NICHT ERHÖHEN WENN ÜBER 3.2V RESP. WIEDER -1 + BTFSC TRISD,RD0 ;POWER ON? + BRA SEK_4 ;NEIN NICHT MESSEN + + MOVLW B'00001101' ;KANAL 3, AD ON + MOVWF ADCON0 ; + BSF ADCON0,1 ;GO +SEK_3 + BTFSC ADCON0,1 ;FERTIG? + BRA SEK_3 ;NEIN + MOVLW .200 ;UNTER 3.2V -> WENN WERT ÜBER 78% + CPFSLT ADRESH ;JA -> + BRA SEK_4 ;SONST WEITER +;TIMER U_ERR ERHÖHEN + BTFSS U_ERR,0 ;SPANNUNGSERROR? + BRA SEK_4 ;NEIN + MOVLW TIME_MAX ;>=MAXIMALZEIT? + CPFSGT U_ERR_TIME ;SEIT SPANNUNGSFEHLER + DECF U_ERR_TIME ;NEIN -> -1 +;------------------------------------------------------------- +SEK_4 + CLRF TICKS + INCF SECS ; Increment seconds + MOVLW .59 ; 60 seconds elapsed? + CPFSGT SECS + RETFIE ;RETURN +MINUTEN + CLRF SECS ; Clear seconds + INCF MINS ; Increment minutes + MOVLW .59 ; 60 minutes elapsed? + CPFSGT MINS + RETFIE ;RETURN +STUNDEN + CLRF MINS ; clear minutes + INCF HOURS ; Increment hours + MOVLW .23 ; 24 hours elapsed? + CPFSGT HOURS + RETFIE ;RETURN +TAGE_UND_TAG_DER_WOCHE + CLRF HOURS ; Reset hours + MOVLW .7 + CPFSLT DAY_OF_WEEK + CLRF DAY_OF_WEEK + INCF DAY_OF_WEEK + INCF DAYS + MOVLW .28 + CPFSGT DAYS + RETFIE ;RETURN +MEHR_ALS_28_TAGE + MOVLW .2 + CPFSEQ MONTHS ;FEB? + BRA NOT_FEB ;NEIN-> +FEB + MOVLW .3 + ANDWF YEARS,0 ;SCHALTJAHR + BNZ NEXT_MONTH ;NEIN-> +SCHALTJAHR + MOVLW .29 + CPFSGT DAYS + RETFIE ;RETURN +NEXT_MONTH + MOVLW .1 + MOVWF DAYS + INCF MONTHS + MOVLW 12 + CPFSGT MONTHS + RETFIE ;RETURN +YEAR + MOVLW .1 + MOVWF MONTHS + INCF YEARS + RETFIE ;RETURN +NOT_FEB + MOVLW .30 + CPFSGT DAYS + RETFIE +MEHR_ALS_30_TAGE + MOVLW .4 ;APRIL? + CPFSEQ MONTHS ;SKIP + BRA NOT_APRIL + BRA NEXT_MONTH ;APRIL-> +NOT_APRIL + MOVLW .6 ;JUNI? + CPFSEQ MONTHS + BRA NOT_JUNI + BRA NEXT_MONTH ;JUNI-> +NOT_JUNI + MOVLW .9 ;SEPTEMBER? + CPFSEQ MONTHS + BRA NOT_SEP + BRA NEXT_MONTH ;SEPTEMBER-> +NOT_SEP + MOVLW .11 ;NOVEMBER? + CPFSEQ MONTHS ;SKIP + RETFIE ;SIND MONATE MIT 31 TAGEN-> + BRA NEXT_MONTH ;SONST NOVEMBER-> +;**********************************************************************************************""""""""""""" +; ENDE MAIN +;**********************************************************************************************""""""""""""" +;**********************************************************************************************""""""""""""" +; EXTERN_SUBOUTINES FOGEN AB 0x1000 DIE SPÄTER EINPROGRAMMIERT WERDEN +;**********************************************************************************************""""""""""""" + end diff --git a/BaS_codewarrior/FireBee/MLAB/firebee1/firebee1.cof b/BaS_codewarrior/FireBee/MLAB/firebee1/firebee1.cof new file mode 100644 index 0000000000000000000000000000000000000000..d3b53d4f93c350bd8aa7b64c1e68c9480c001170 GIT binary patch literal 13640 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 AH2?qr literal 0 HcmV?d00001 diff --git a/BaS_codewarrior/FireBee/MLAB/firebee1/firebee1.err b/BaS_codewarrior/FireBee/MLAB/firebee1/firebee1.err new file mode 100644 index 0000000..e69de29 diff --git a/BaS_codewarrior/FireBee/MLAB/firebee1/firebee1.hex b/BaS_codewarrior/FireBee/MLAB/firebee1/firebee1.hex new file mode 100644 index 0000000..bef9bef --- /dev/null +++ b/BaS_codewarrior/FireBee/MLAB/firebee1/firebee1.hex @@ -0,0 +1,82 @@ +:020000040000FA +:020000007FD0AF +:020002000000FC +:040008000CEF00F009 +:08001800E06A9DCF4EF09E50FE +:100020004E174EB115D24EBD11D24EB918D14EBB9E +:100030002BD1A0CF4FF0A1504F174FB5F3D11000E7 +:100040009DCF4EF09E504E174E67E6D7A0CF4FF093 +:10005000A1504F174F67E0D7FB0E4D63100001EF23 +:0200600010F09E +:10010000E06AF26AD06A9D6AA06A9E6AA16A9F6AE2 +:10011000A26A9B6A720ED36E806AFF0E926E816A2B +:10012000936E826A946E836A956E010E846A966EEF +:100130009B0ED26E030E466F140E476FA084E9EC3F +:1001400000F0F00ECF6ECE6A0F0ECD6E416B006BDD +:10015000026B0C0E046F010E066F010E076F080E86 +:10016000086F2A0E096F426B436B446B9D80456B91 +:10017000C26A090EC16E000EC06E486BB06A100EE6 +:10018000AF6E040EAC6E900EAB6E080EB86E4C6B7C +:10019000F06AF00EF16EC00EF26E120ED36EFB0E10 +:1001A0004C6302D0D7ED00F095B00300F8D709EC0E +:1001B00010F01300720ED36E929E959E93989590B8 +:1001C0000AD0120ED36E9580958E9388928E446BD2 +:1001D00004D095B002D09298120092881200AC9A86 +:1001E0009D9A9E9A9D989E981200ACBA1200AC8A75 +:1001F000FF0E4A6F4B6BAECF49F0AECF49F09E98E1 +:100200009E9A9D8A0000120083A20BD0426BA00E22 +:100210004365432B040E44651200958EF5EC00F007 +:100220001200150E4261120095B00ED0020E42630C +:1002300003D0020EAD6E0CD0020E42610CD0140E33 +:100240004261E1EC00F004D0020E4261DAEC00F011 +:10025000436B422B1200959EEFEC00F0F0D7810E1D +:100260004B6309D0EECFADFF3F0EE96410004B6B3E +:100270009D989E981000A10E4B6305D0EECFADFF68 +:10028000C30EE9641000F3D7AECF49F0FC0E4A610B +:1002900097D0820E4A6306D049C0E6FF3F0EE16068 +:1002A0004A6B1000496304D04A6F10EE00F0100052 +:1002B000010E496309D000EE00F09E989D88810EE2 +:1002C0004B6FAD6E4A6B1000040E496314D0000EE4 +:1002D000F86E200EF76E000EF66E0800F5CF4DF0AA +:1002E000000EF86E200EF76E100EF66E0800F5CFB9 +:1002F0004CF04A6B1000050E496304D04D6B4C6BFB +:100300004A6B1000A00E496304D04A6F11EE80F0D2 +:1003100010004A631DD049C0E6FF820EE16001D0A3 +:10032000100011EE80F0E6CFF8FFE6CFF7FFE6CF42 +:10033000F6FFC20E0900F5CFE6FFE162FBD701EE42 +:1003400080F09E989D88A10E4B6FAD6E4A6B100099 +:10035000A20E4A632DD049C0E6FF420EE1601000B4 +:1003600011EE00F0E6CFF8FF000EF8601FD0E6CFE8 +:10037000F7FF200EF8601AD0E6CFF6FFA68EA69CF7 +:10038000A684A688550EA76EAA0EA76EA682420E58 +:10039000E6CFF5FF0F00E160FBD7A68EA69CA684F2 +:1003A000550EA76EAA0EA76EA682A6944A6B1000E1 +:1003B000496304D04A6F11EE00F010004A6B100040 +:1003C000FF0E4A6309D0410E496303D0FE0E4A6F07 +:1003D0001000FF0E4A6F1000FE0E4A6306D0430E57 +:1003E0004963F7D7FD0E4A6F1000FD0E4A6306D031 +:1003F000500E4963EED7FC0E4A6F1000FC0E4A63A4 +:10040000E8D7460E4963E5D7ACA2FED74F0EAD6ED6 +:10041000ACA2FED74B0EAD6EACA2FED7210EAD6ED8 +:100420004A6B100046A30AD046914693070E476FC9 +:10043000170ED26ED2AAFED7A19410004681468331 +:10044000476B030EAD6E9A0ED26EF4D79E9C1000D1 +:10045000F00ECF6E9E9081889680819895B005D0E1 +:1004600095BE11D041B196900ED0030E00150BE150 +:10047000070E416301D096901E0E476104D0050E11 +:10048000416301D0969004EC01F0040E436504D062 +:10049000958E95A0F5EC00F0412B95A006D0200E8E +:1004A000486103D0A00E47619680070E4165100099 +:1004B00095A09690A00E4765472B050E476302D086 +:1004C000E1EC00F0010EC26EC282C2B2FED7C4CF10 +:1004D00048F095B00DD00D0EC26EC282C2B2FED7EA +:1004E000C80EC46005D046A103D0A00E47654707DB +:1004F000416B002B3B0E00651000006B022B3B0E86 +:1005000002651000026B042B170E04651000046BCB +:10051000070E0661066B062B072B1C0E07651000E5 +:10052000020E086310D0030E091503E11D0E0765C6 +:100530001000010E076F082B120E08651000010E47 +:10054000086F092B10001E0E07651000040E0863CB +:1005500001D0EFD7060E086301D0EBD7090E086370 +:0C05600001D0E7D70B0E08631000E3D7B2 +:00000001FF diff --git a/BaS_codewarrior/FireBee/MLAB/firebee1/firebee1.lst b/BaS_codewarrior/FireBee/MLAB/firebee1/firebee1.lst new file mode 100644 index 0000000..8b08d7e --- /dev/null +++ b/BaS_codewarrior/FireBee/MLAB/firebee1/firebee1.lst @@ -0,0 +1,1979 @@ +MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 1 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + + 00001 ;********************************************************** + 00002 ;* firebee1 PIC18F4321 MAIN FILE + 00003 ;********************************************************** + 00004 ;* CREATED BY FREDI ASCHWANDEN + 00005 ;* DATE 22.9.2009 + 00006 ;********************************************************** + 00007 list PE=18f4520 ;EXTENDED INSTRUCTION SET + 00008 include "P18f4520.inc" + 00001 LIST + 00002 + 00003 ;========================================================================== + 00004 ; MPASM PIC18F4520 processor include + 00005 ; + 00006 ; (c) Copyright 1999-2007 Microchip Technology, All rights reserved + 00007 ;========================================================================== + 00008 + 01336 LIST + 00009 ;------------------------ Equates --------------------------; + 00010 ;Register addresses + 00011 ;BANK 0 + 00000000 00012 SECS equ 0x00 + 00000001 00013 SECS_ALARM EQU 0x01 + 00000002 00014 MINS equ 0x02 + 00000003 00015 MINS_ALRAM EQU 0x03 + 00000004 00016 HOURS equ 0x04 + 00000005 00017 HOURS_ALARM EQU 0x05 + 00000006 00018 DAY_OF_WEEK EQU 0x06 + 00000007 00019 DAYS EQU 0x07 + 00000008 00020 MONTHS EQU 0x08 + 00000009 00021 YEARS EQU 0x09 ;offset vom 1968 + 0000000A 00022 REGA EQU 0x0A + 0000000B 00023 REGB EQU 0x0B + 0000000C 00024 REGC EQU 0x0C + 0000000D 00025 REGD EQU 0x0D + 0000000E 00026 RTC_RAM EQU 0x0E ; bis 0x3F + 00000040 00027 free equ 0x40 + 00000041 00028 TICKS equ 0x41 ;125MS + 00000042 00029 TASTE_ON_TIME EQU 0x42 + 00000043 00030 TASTE_OFF_TIME EQU 0x43 + 00000044 00031 POWER_ON_TIME EQU 0x44 + 00000045 00032 AD_KANAL EQU 0x45 + 00000046 00033 U_ERR EQU 0x46 ;SPANNUNGSFEHLER WENN BIT 0=1, BIT1=1 WA + RTEN AUF GELADEN + 00000047 00034 U_ERR_TIME EQU 0x47 ;ZEIT SEIT SPANNUNGSFEHLER + 00000048 00035 U_POWER_IN EQU 0x48 ;SPANNUNG POWER IN 1V CA. 6E + 00000049 00036 RX_B EQU 0x49 ;RECEIVED BYT + 0000004A 00037 RX_STATUS EQU 0x4A ;STATUS: 0x00=WAIT AUF MCF COMMANDO, 0x8 + 2=EMPFANGE 64BYT FROM RTC + 0000004B 00038 TX_STATUS EQU 0x4B ;STATUS: 0x00=WAIT 0x81=SENDE 64BYT FROM + RTC + 0000004C 00039 GO_SUB EQU 0x4C ;WENN GLEICH 0xFB DANN SUBROUTINE AUSFÜH + REN + 0000004D 00040 GO_INT EQU 0x4D ;WENN GLEICH 0xFB DANN SUBROUTINE AUSFÜH + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 2 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + + REN + 0000004E 00041 EAPIR1 EQU 0x4E ;INTERRUPT ACTIV UND ENABLE + 0000004F 00042 EAPIR2 EQU 0x4F ;INTERRUPT ACTIV UND ENABLE + 00043 ;BANK 1 AB 0x100 + 00000100 00044 RX_BUFFER EQU 0x100 ;0x80 BYT BUFFER BIS 0x17F BANK + 00000180 00045 TX_BUFFER EQU 0x180 ;0X80 BYT BUFFER BIS 0x1FF BANK + 00046 + 00047 ;-------------------------------------------------------------- + 00000002 00048 SEND_RTC_TIME EQU .2 ;0.25 SEC (EINHEIT IST EIN TICK = 128MS + 00000002 00049 RESET_ON_TIME EQU .2 ;0.25 SEC (EINHEIT IST EIN TICK = 128MS + 00000004 00050 RESET_OFF_TIME EQU .4 ;0.5 SEC (EINHEIT IST EIN TICK = 128MS + 00000014 00051 OFF_TIME EQU .20 ;2.5 SEC (EINHEIT IST EIN TICK = + 128MS + 00000002 00052 ON_TIME EQU .2 ;0.25 SEC (EINHEIT IST EIN TICK + = 128MS + 000000F0 00053 TIMER_HB EQU .240 ;256- (32768Hz PRO 1/8SEC = 4096TICKS/25 + 6) => 256-16=240 (resp 256-16/4 (wenn osco) = 252) + 000000A0 00054 TIME_MAX EQU .160 ;MAXIMALTIME + 00000005 00055 U_ERR_PW_AUS EQU .5 ;5 SEC + 00056 ;SERIEL + 000000FF 00057 SYNC1 EQU 0FFh + 00000041 00058 SYNC1_DATA EQU 'A'; + 000000FE 00059 SYNC2 EQU 0FEh + 00000043 00060 SYNC2_DATA EQU 'C'; + 000000FD 00061 SYNC3 EQU 0FDh + 00000050 00062 SYNC3_DATA EQU 'P'; + 000000FC 00063 SYNC4 EQU 0FCh + 00000046 00064 SYNC4_DATA EQU 'F'; + 00000001 00065 REQ_RTCD_FROM_PIC EQU 01h ;RTC AND NVRAM DATEN VOM PIC ANFORDERN + 00000081 00066 RTCD_FROM_PIC EQU 81h ;RTC AND NVRAM DATEN HEADER UND STATUS + 00000002 00067 REQ_RTCD_FROM_MCF EQU 02h ;RTC AND NVRAM DATEN VOM MCF ANFORDERN + 00000082 00068 RTCD_FROM_MCF EQU 82h ;RTC AND NVRAM DATEN HEADER UND STATUS + 00000003 00069 U_MIN_TO_MCF EQU 03h ;UNTERSPANNUNGSMITTEILUNG AN PROCESSOR + 00000004 00070 EXT_SUB_GO EQU 04h ;SERIELL CODE UM SUBROUTINEN/INT + ERRUPTS ZU AKTIVIEREN + 00000005 00071 EXT_SUB_STOP EQU 05h ;SERIELL CODE UM SUBROUTINEN/INTERRUPTS + ZU STOPPEN + 00000012 00072 CLK_SLEEP EQU B'00010010' ;125kHz intern, SLEEP MODE + 00000072 00073 CLK_ACTIV EQU B'01110010' ;inTernal CLK=8MHz, SLEEP MODE, + SLEEP MODE + 000000FB 00074 EXT_CODE EQU 0xFB ;CODE FÜR EXTERNE SUBROUTINEN/INTERRUPTS + AUSFÜHREN (FireBee!) + 00002000 00075 EXTERN_INT_ADR EQU 0x2000 ;HIER MUSS 0xFB STEHEN WENN EXTERNE INTERRUPTS A + USFÜHRBAR + 00002002 00076 EXTERN_INTERRUPTS EQU 0x2002 ;STARTPUNKT EXTERNE SUBROUTINES + 00002010 00077 EXTERN_SUB_ADR EQU 0x2010 ;HIER MUSS 0xFB STEHEN WENN EXTERNE SUBROUTINES + AUSFÜHRBAR + 00002012 00078 EXTERN_SUBROUTINES EQU 0x2012 ;STARTPUNKT EXTERNE SUBROUTINES + 000000A0 00079 REQ_BLOCK EQU 0xA0 ;BLOCK DATEN LESEN -> CODE UND 3 BYTS AD + RESSE = TOTAL 4 BYTES + 000000A1 00080 READ_BLOCK EQU 0xA1 ;PROGRAMM BLOCK PIC->MCF -> CODE, 3 BYTS + ADRESSE UND 64 BYTS DATEN = TOTAL 68 BYTES + 000000A2 00081 WRITE_BLOCK EQU 0xA2 ;PROGRAMM BLOCK MCF->PIC -> CODE, 3 BYTS + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 3 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + + ADRESSE UND 64 BYTS DATEN = TOTAL 68 BYTES + 00000022 00082 PRG_OK_PIC EQU 0x22 ;PROGRAMMIERUNG BLOCK FERTIG + 00083 ;**********************************************************************************************""""""""" + """" + 00084 ; Start at the reset vector + 00085 Reset_Vector code 0x000 +000000 D??? 00086 BRA KALT_START + 00087 ;-------------------------------------------------------------- + 00088 HIGH_INT_VEC code 0x0008 +000008 EF0C F000 00089 GOTO 0x18 + 00090 + 00091 LOW_INT_VEC code 0x0018 +000018 00092 INT_HANDLER +000018 6AE0 00093 CLRF BSR ;IMMER ACCESS BANK + 00094 ;SETZEN GRUPPE 1 +00001A CF9D F04E 00095 MOVFF PIE1,EAPIR1 ;INTERRUPTS HOLEN +00001E 509E 00096 MOVF PIR1,0 ;MASKE +000020 174E 00097 ANDWF EAPIR1 ;ACTIVE SETZEN +000022 B14E 00098 BTFSC EAPIR1,TMR1IF ;uhr interrupt? +000024 D??? 00099 BRA RTC_ISR ;ja-> +000026 BD4E 00100 BTFSC EAPIR1,ADIF ;AD INTERRUTP? +000028 D??? 00101 BRA AD_ISR ;JA-> +00002A B94E 00102 BTFSC EAPIR1,TXIF ;seriell TX? +00002C D??? 00103 BRA TX_ISR ;JA-> +00002E BB4E 00104 BTFSC EAPIR1,RCIF ;seriell RX? +000030 D??? 00105 BRA RX_ISR ;JA-> + 00106 + 00107 ;SETZEN GRUPPE 2 +000032 CFA0 F04F 00108 MOVFF PIE2,EAPIR2 ;INTERRUPTS HOLEN +000036 50A1 00109 MOVF PIR2,0 ;MASKE +000038 174F 00110 ANDWF EAPIR2 ;ACTIVE SETZEN + 00111 +00003A B54F 00112 BTFSC EAPIR2,HLVDIF ;UNDER/OVERVOLTAGE DETECT +00003C D??? 00113 BRA HLVD_ISR ;JA-> +00003E 0010 00114 RETFIE + 00115 + 00116 ;TESTEN UND SETZEN GRUPPE 1 +000040 CF9D F04E 00117 MOVFF PIE1,EAPIR1 ;INTERRUPTS HOLEN +000044 509E 00118 MOVF PIR1,0 ;MASKE +000046 174E 00119 ANDWF EAPIR1 ;ACTIVE SETZEN +000048 674E 00120 TSTFSZ EAPIR1 +00004A D??? 00121 BRA INT_HANDLER + 00122 ;TESTEN UND SETZEN GRUPPE 2 +00004C CFA0 F04F 00123 MOVFF PIE2,EAPIR2 ;INTERRUPTS HOLEN +000050 50A1 00124 MOVF PIR2,0 ;MASKE +000052 174F 00125 ANDWF EAPIR2 ;ACTIVE SETZEN +000054 674F 00126 TSTFSZ EAPIR2 +000056 D??? 00127 BRA INT_HANDLER + 00128 +000058 0EFB 00129 MOVLW EXT_CODE ;GO EXTERNE SUBROUTINEN AKTIV? +00005A 634D 00130 CPFSEQ GO_INT ;SKIP WENN JA +00005C 0010 00131 RETFIE +00005E EF01 F010 00132 GOTO EXTERN_INTERRUPTS ;REGISTER SICHERN UND STARTEN + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 4 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + + 00133 ;**********************************************************************************************""""""""" + """" + 00134 ; Start application beyond vector area + 00135 CODE 0x0100 +000100 00136 KALT_START + 00137 ;RESET MODE +000100 6AE0 00138 CLRF BSR ;BANK 0 + 00139 ;ALLE INT AUS UND RÜCKSETZEN +000102 6AF2 00140 CLRF INTCON ;alle INTERRUPT AUS +000104 6AD0 00141 CLRF RCON ;INT PRIORITY AUS +000106 6A9D 00142 CLRF PIE1 ;MASK DISABLE +000108 6AA0 00143 CLRF PIE2 +00010A 6A9E 00144 CLRF PIR1 ;INT ACT AUS +00010C 6AA1 00145 CLRF PIR2 +00010E 6A9F 00146 CLRF IPR1 ;LOW PRIORITY +000110 6AA2 00147 CLRF IPR2 + 00148 ; clock + 00149 ; MOVLW B'01000000' ;32MHZ + 00150 ; MOVWF OSCTUNE +000112 6A9B 00151 CLRF OSCTUNE + 00152 ;CLOCK +000114 0E72 00153 MOVLW CLK_ACTIV +000116 6ED3 00154 MOVWF OSCCON + 00155 ; div init + 00156 ;SET PORT A: **7:#master/0.409*5V0 **6:PIC_AMKB_RX **5:PIC_SWTICH **4:HIGH_CHARGE_CURRENT **3:2V5 *2:3V3 + /2 **1:1V25 **0:POWER_IN/11 +000118 6A80 00157 CLRF PORTA ;#master(7)=0, REST=0 +00011A 0EFF 00158 MOVLW B'11111111' ;DIRECTION: alles auf Input +00011C 6E92 00159 MOVWF TRISA + 00160 ;SET PORT B: **7:PGD **6:PGC **5:PGM **4:PIN_INT,1V5 **3:GAME PORT PIN10 **2:GAME PORT PIN11 **1:GAME PO + RT PIN6 **0: GAME PORT PIN5 +00011E 6A81 00161 CLRF PORTB ;ALLES AUF 0 +000120 6E93 00162 MOVWF TRISB + 00163 ;SET PORT C: **7: PIC_RX **6:PIC_TX **5:AMKB_TX **4:GAME PORT PIN4 **3:GAME PORT PIN12 **2:GAME PORT PIN + 13 **1+0: OCS 32K768Hz +000122 6A82 00164 CLRF PORTC +000124 6E94 00165 MOVWF TRISC + 00166 ;SET PORT D: **7:#RSTI **6:GAME PORT PIN3 **5:PS2 KB CLK **4:PS2 MS CLK **3:PS2 KB DATA **2:MS DATA **1: + TASTER **0:POWER ON/OFF (0=ON) + 00167 ; SET TASTE UND POWER +000126 6A83 00168 CLRF PORTD ;ALLES AUF 0 +000128 6E95 00169 MOVWF TRISD ;ALLES AUF INPUT + 00170 ;SET PORT E: **3:#MCLR **2:#PCI_RESET **1:PCI 3V3 **0:PIC LED (0=ON) +00012A 0E01 00171 MOVLW B'00000001' ;LED OFF +00012C 6A84 00172 CLRF PORTE ;ALLES AUF 0 +00012E 6E96 00173 MOVWF TRISE ;ALLES AUF INPUT + 00174 ;-------------------------- + 00175 ; set OVERvoltage detekt +000130 0E9B 00176 MOVLW B'10011011' ;INT WENN ÜBER 3.9V +000132 6ED2 00177 MOVWF HLVDCON +000134 0E03 00178 MOVLW B'00000011' ;ERRORS ON, WAIT AUF LADEN +000136 6F46 00179 MOVWF U_ERR +000138 0E14 00180 MOVLW .20 ;SEIT 20SEC ERROR + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 5 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + +00013A 6F47 00181 MOVWF U_ERR_TIME ;SETZEN +00013C 84A0 00182 BSF PIE2,HLVDIE ;Enable interrupt + 00183 ;INTIALISIERUNGSPROGAMME +00013E EC?? F??? 00184 CALL LADESTROM ;LADESTROM EINSTELLEN + 00185 ;UHR initialisieren +000142 0EF0 00186 MOVLW TIMER_HB ;Preload TMR1 register +000144 6ECF 00187 MOVWF TMR1H ; +000146 6ACE 00188 CLRF TMR1L ;=0 +000148 0E0F 00189 MOVLW B'00001111' ; 8 BIT, osc1 enable, TIMER MODE, TIMMER ENABLE +00014A 6ECD 00190 MOVWF T1CON ; SET +00014C 6B41 00191 CLRF TICKS ; 1/8 sec register +00014E 6B00 00192 CLRF SECS ; Initialize timekeeping registers +000150 6B02 00193 CLRF MINS ; +000152 0E0C 00194 MOVLW .12 +000154 6F04 00195 MOVWF HOURS +000156 0E01 00196 MOVLW .1 +000158 6F06 00197 MOVWF DAY_OF_WEEK +00015A 0E01 00198 MOVLW .1 +00015C 6F07 00199 MOVWF DAYS +00015E 0E08 00200 MOVLW .8 +000160 6F08 00201 MOVWF MONTHS +000162 0E2A 00202 MOVLW .42 +000164 6F09 00203 MOVWF YEARS ;MONTAG 19.7.2010 12:00:00 (JAHR-1968) +000166 6B42 00204 CLRF TASTE_ON_TIME +000168 6B43 00205 CLRF TASTE_OFF_TIME +00016A 6B44 00206 CLRF POWER_ON_TIME +00016C 809D 00207 BSF PIE1,TMR1IE ;Enable Timer1 interrupt + 00208 ;AD WANDLER INITIALISIEREN +00016E 6B45 00209 CLRF AD_KANAL ;BEI 0 BEGINNEN +000170 6AC2 00210 CLRF ADCON0 ;AD MOUDUL AUS +000172 0E09 00211 MOVLW B'00001001' ;VREF=VDD,ANALOG INPUT AN0-AN5 +000174 6EC1 00212 MOVWF ADCON1 +000176 0E00 00213 MOVLW B'00000000' ;LINKSSBÜNDIG,0 TAD,CLOCK=Fosc/2 +000178 6EC0 00214 MOVWF ADCON2 + 00215 ; BSF PIE1,ADIE ;INTERRUPT ENABLE +00017A 6B48 00216 CLRF U_POWER_IN ;WERT AUF 0 VOLT + 00217 ; seriell initialisieren +00017C 6AB0 00218 CLRF SPBRGH +00017E 0E10 00219 MOVLW .16 +000180 6EAF 00220 MOVWF SPBRG ;BAUDE RATE = 115K +000182 0E04 00221 MOVLW B'00000100' ;TX AUS, ASYNC HIGH SPEED +000184 6EAC 00222 MOVWF TXSTA +000186 0E90 00223 MOVLW B'10010000' ;SERIEL EIN,RX EIN, +000188 6EAB 00224 MOVWF RCSTA +00018A 0E08 00225 MOVLW B'00001000' ;16BIT BRG, RISING EDGE INTERRUPT +00018C 6EB8 00226 MOVWF BAUDCON ;SETZEN + 00227 ;EXTERNER SUBROUTINES +00018E 6B4C 00228 CLRF GO_SUB + 00229 ; interrupts +000190 6AF0 00230 CLRF INTCON3 ;EXTER INTERRUPT AUS, low priority +000192 0EF0 00231 MOVLW B'11110000' ;PORT B PULLUPS AUS, EXT INT ON RISING EDGE, TMR0 AND BP + IP Low priority +000194 6EF1 00232 MOVWF INTCON2 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 6 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + +000196 0EC0 00233 MOVLW B'11000000' ;global on, PERIPHERAL INT on +000198 6EF2 00234 MOVWF INTCON + 00235 ;CLOCK +00019A 0E12 00236 MOVLW CLK_SLEEP ;GEHT JETZT IN SLEEP MODE +00019C 6ED3 00237 MOVWF OSCCON + 00238 ;------------------------------------------------------------------------- + 00239 ;---------------------------- MAIN LOOP ------------------------------------------------- + 00240 ;------------------------------------------------------------------------- +00019E 00241 MAIN +00019E 0EFB 00242 MOVLW EXT_CODE ;GO EXTERNE SUBROUTINEN AKTIV? +0001A0 634C 00243 CPFSEQ GO_SUB ;SKIP WENN JA +0001A2 D??? 00244 BRA WARTEN ;SONST WARTEN +0001A4 ED00 F000 00245 CALL MAIN2,1 ;REGISTER SICHERN UND STARTEN +0001A8 00246 WARTEN +0001A8 B095 00247 BTFSC TRISD,RD0 ;SKIP IF POWER ON +0001AA 0003 00248 SLEEP ;SLEPP BIS ZUM NÄCHSTEN INTERRUPT +0001AC D??? 00249 BRA MAIN +0001AE 00250 MAIN2 +0001AE EC09 F010 00251 CALL EXTERN_SUBROUTINES ;EXTERNE SUBROUTINEN AUSFÜHREN AN STELLE 0 MUSS 0xFA STEHEN SONS + T UNGÜLTIG +0001B2 0013 00252 RETURN 1 ;RETURN MIT REGISTER ZURÜCK + 00253 ;**********************************************************************************************""""""""" + """" + 00254 ;--------------------------- subroutines ------------------------------------------------- + 00255 ;**********************************************************************************************""""""""" + """" + 00256 ;POWER ON/OFF +0001B4 00257 POWER_EIN + 00258 ;CLOCK +0001B4 0E72 00259 MOVLW CLK_ACTIV +0001B6 6ED3 00260 MOVWF OSCCON + 00261 +0001B8 9E92 00262 BCF TRISA,RA7 ;CLOCK EINSCHALTEN +0001BA 9E95 00263 BCF TRISD,RD7 ;#RSTI AKTIVIEREN = LOW +0001BC 9893 00264 BCF TRISB,RB4 ;PIC_INT AKTIVIEREN +0001BE 9095 00265 BCF TRISD,RD0 ;POWER ON +0001C0 D??? 00266 BRA LS_ON_POWER ;LADESTROM EINSTELLEN +0001C2 00267 POWER_AUS + 00268 ;CLOCK +0001C2 0E12 00269 MOVLW CLK_SLEEP +0001C4 6ED3 00270 MOVWF OSCCON + 00271 +0001C6 8095 00272 BSF TRISD,RD0 ;POWER OFF +0001C8 8E95 00273 BSF TRISD,RD7 ;#RSTI DEAKTIVIEREN +0001CA 8893 00274 BSF TRISB,RB4 ;PIC INT DEAKTIVIEREN +0001CC 8E92 00275 BSF TRISA,RA7 ;CLOCK DEAKTIVIEREN +0001CE 6B44 00276 CLRF POWER_ON_TIME ;RÜCKSETZEN +0001D0 D??? 00277 BRA LS_OFF_POWER ;LADESTROM EINSTELLEN + 00278 ;LADESTROM EINSTELLEN ---------------------------- +0001D2 00279 LADESTROM +0001D2 B095 00280 BTFSC TRISD,RD0 ; ONPOWER? +0001D4 D??? 00281 BRA LS_OFF_POWER ; NEIN-> +0001D6 00282 LS_ON_POWER ;GROSSER LADESTROM 5A + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 7 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + +0001D6 9892 00283 BCF TRISA,RA4 ;10K ON +0001D8 0012 00284 RETURN +0001DA 00285 LS_OFF_POWER ;KLEINER LADESTROM_MIN 1.85A +0001DA 8892 00286 BSF TRISA,RA4 ;10K OFF +0001DC 0012 00287 RETURN + 00288 ;--------------------------------------------------- + 00289 ;SERIELL AUS/EIN +0001DE 00290 SERIAL_OFF +0001DE 9AAC 00291 BCF TXSTA,TXEN ;TX AUS +0001E0 9A9D 00292 BCF PIE1,RCIE ;DISABLE RX interrupt +0001E2 9A9E 00293 BCF PIR1,RCIF ;CLEAR RX interrupt +0001E4 989D 00294 BCF PIE1,TXIE ;DISABLE TX interrupt +0001E6 989E 00295 BCF PIR1,TXIF ;CLEAR TX interrupt +0001E8 0012 00296 RETURN +0001EA 00297 SERIAL_ON +0001EA BAAC 00298 BTFSC TXSTA,TXEN ;SCHON EIN? +0001EC 0012 00299 RETURN ;JA-> +0001EE 8AAC 00300 BSF TXSTA,TXEN ;TX EIN +0001F0 0EFF 00301 MOVLW SYNC1 +0001F2 6F4A 00302 MOVWF RX_STATUS ;AUF SYNC WARTEN +0001F4 6B4B 00303 CLRF TX_STATUS +0001F6 CFAE F049 00304 MOVFF RCREG,RX_B ;RCREG LEEREN +0001FA CFAE F049 00305 MOVFF RCREG,RX_B ;RCREG LEEREN +0001FE 989E 00306 BCF PIR1,TXIF ;CLEAR TX interrupt +000200 9A9E 00307 BCF PIR1,RCIF ;INTERRUPT RX FLAG LÖSCHEN +000202 8A9D 00308 BSF PIE1,RCIE ;ENABLE RX interrupt +000204 0000 00309 NOP +000206 0012 00310 RETURN + 00311 ;--------------------------------------------------------------------- + 00312 ; TASTENDRUCK +000208 00313 TASTE +000208 A283 00314 BTFSS PORTD,RD1 ;TASTE GEDRÜCKT? +00020A D??? 00315 BRA TG_JA ;->JA + 00316 ;TASTE NICHT GEDRÜCKT ODER LOSGELASSEN +00020C 6B42 00317 CLRF TASTE_ON_TIME ;RÜCKSETZEN + 00318 +00020E 0EA0 00319 MOVLW TIME_MAX ;MAX +000210 6543 00320 CPFSGT TASTE_OFF_TIME ;LÄNGER? +000212 2B43 00321 INCF TASTE_OFF_TIME ;NEIN ERHÖHEN + 00322 +000214 0E04 00323 MOVLW RESET_OFF_TIME ;2SEC +000216 6544 00324 CPFSGT POWER_ON_TIME ;LÄNGER? +000218 0012 00325 RETURN ;NEIN-> + 00326 ;RESET AUFHEBEN +00021A 8E95 00327 BSF TRISD,RD7 ;JA -> #RSTI DEAKTIVIEREN =HIGH +00021C EC?? F??? 00328 CALL SERIAL_ON ;SERIELL EINSCHALTEN +000220 0012 00329 RETURN + 00330 ;TASTE GEDRÜCKT +000222 00331 TG_JA +000222 0E15 00332 MOVLW OFF_TIME+1 +000224 6142 00333 CPFSLT TASTE_ON_TIME ;KÜRZER ALS ONTIME+1 +000226 0012 00334 RETURN ;NEIN->FERTIG +000228 B095 00335 BTFSC TRISD,RD0 ;ONPOWER? + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 8 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + +00022A D??? 00336 BRA TG_OFF_POWER ;NEIN-> +00022C 00337 TG_ON_POWER +00022C 0E02 00338 MOVLW SEND_RTC_TIME ;ZEIT FÜR RTC REQ FROM MCF HOLEN? +00022E 6342 00339 CPFSEQ TASTE_ON_TIME ;TEST +000230 D??? 00340 BRA TG_ON_POWER2 ;NEIN-> +000232 00341 SEND_RTC_REG +000232 0E02 00342 MOVLW REQ_RTCD_FROM_MCF +000234 6EAD 00343 MOVWF TXREG ;SENDEN +000236 D??? 00344 BRA TG_END; +000238 00345 TG_ON_POWER2 +000238 0E02 00346 MOVLW RESET_ON_TIME ; +00023A 6142 00347 CPFSLT TASTE_ON_TIME ;KÜRZER? +00023C D??? 00348 BRA RESETEN +00023E 00349 TG_ON_POWER3 +00023E 0E14 00350 MOVLW OFF_TIME +000240 6142 00351 CPFSLT TASTE_ON_TIME ;KÜRZER ON/OFF TIME? +000242 EC?? F??? 00352 CALL POWER_AUS ;NEIN->POWER OFF +000246 D??? 00353 BRA TG_END +000248 00354 TG_OFF_POWER +000248 0E02 00355 MOVLW ON_TIME +00024A 6142 00356 CPFSLT TASTE_ON_TIME ;KÜRZER ALS ON/OFF TIME? +00024C EC?? F??? 00357 CALL POWER_EIN ;NEIN->POWER ON +000250 00358 TG_END +000250 6B43 00359 CLRF TASTE_OFF_TIME ;RÜCKSETZEN +000252 2B42 00360 INCF TASTE_ON_TIME ;ERHÖHEN +000254 0012 00361 RETURN +000256 00362 RESETEN +000256 9E95 00363 BCF TRISD,RD7 ;NEIN-> #RSTI AKTIVIEREN =LOW -->>>RESET +000258 EC?? F??? 00364 CALL SERIAL_OFF ;SERIELL DEAKTIVIEREN +00025C D??? 00365 BRA TG_ON_POWER3 + 00366 ;**********************************************************************************************""""""""" + """" + 00367 ;----------------------------------------- INTERRUPTS + 00368 ;**********************************************************************************************""""""""" + """" + 00369 ; SERIELL INTERRUPTS + 00370 ;**********************************************************************************************""""""""" + """" + 00371 ;TX +00025E 00372 TX_ISR ;TRANSMIT +00025E 0E81 00373 MOVLW RTCD_FROM_PIC ;RTC DATEN SENDEN? +000260 634B 00374 CPFSEQ TX_STATUS ;SKIP JA +000262 D??? 00375 BRA TX_ISR1 ;NEIN-> +000264 CFEE FFAD 00376 MOVFF POSTINC0,TXREG ;BYT SENDEN +000268 0E3F 00377 MOVLW 0x3F ;SCHON LETZTES BYTS? +00026A 64E9 00378 CPFSGT FSR0L ;SKIP WENN FERTIG +00026C 0010 00379 RETFIE ;NEIN WEITERE SENDEN +00026E 00380 TX_ISR_FERTIG +00026E 6B4B 00381 CLRF TX_STATUS +000270 989D 00382 BCF PIE1,TXIE ;SONST DISABLE interrupt +000272 989E 00383 BCF PIR1,TXIF ;INTERRUPT FLAG LÖSCHEN +000274 0010 00384 RETFIE +000276 00385 TX_ISR1 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 9 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + +000276 0EA1 00386 MOVLW READ_BLOCK ;READ BLOCK? +000278 634B 00387 CPFSEQ TX_STATUS ;SKIP JA +00027A D??? 00388 BRA TX_ISR2 ;NEIN-> +00027C CFEE FFAD 00389 MOVFF POSTINC0,TXREG ;BYT SENDEN +000280 0EC3 00390 MOVLW 0xC3 ;SCHON LETZTES BYTS? +000282 64E9 00391 CPFSGT FSR0L ;SKIP WENN FERTIG +000284 0010 00392 RETFIE ;NEIN WEITERE SENDEN +000286 00393 TX_ISR2 +000286 D??? 00394 BRA TX_ISR_FERTIG + 00395 ;**********************************************************************************************""""""""" + """" + 00396 ;RX +000288 00397 RX_ISR ; BYT RECEIVED +000288 CFAE F049 00398 MOVFF RCREG,RX_B ; BYT HOLEN + 00399 ; MOVFF RX_B,TXREG ; ECHO +00028C 0EFC 00400 MOVLW SYNC4 ;IM SYNC STATUS? +00028E 614A 00401 CPFSLT RX_STATUS ;SKIP WENN NEIN +000290 D??? 00402 BRA RX_SYNC_START ;JA -> ZUERST SYNC EMPFANGEN + 00403 ;--------------- +000292 0E82 00404 MOVLW RTCD_FROM_MCF ; DATEN VOM MCF CODE 0x82? +000294 634A 00405 CPFSEQ RX_STATUS ; WENN JA-> SKIP +000296 D??? 00406 BRA RX_ISR1 ; NEIN-> + 00407 ;64 BYT EMPFANGEN ------------------------------------- +000298 C049 FFE6 00408 MOVFF RX_B,POSTINC1 ;HOLEN -> (CNT+) +00029C 0E3F 00409 MOVLW 0x3F ;64 BYT ÜBERTRAGEN? +00029E 60E1 00410 CPFSLT FSR1L ;NEIN ->SKIP +0002A0 6B4A 00411 CLRF RX_STATUS ;JA FERTIG +0002A2 0010 00412 RETFIE + 00413 ;------------------------------------------------------------------------------------- +0002A4 00414 RX_ISR1 +0002A4 6349 00415 CPFSEQ RX_B ;BLOCK HEADER 0X82? +0002A6 D??? 00416 BRA RX_ISR2 ;NEIN-> +0002A8 6F4A 00417 MOVWF RX_STATUS ;STATUS SETZEN = EMPFANGENES BYT +0002AA EE10 F000 00418 LFSR 1,.0 ;BYT COUNTER AUF O +0002AE 0010 00419 RETFIE +0002B0 00420 RX_ISR2 +0002B0 0E01 00421 MOVLW REQ_RTCD_FROM_PIC ;DATEN SENDEN? +0002B2 6349 00422 CPFSEQ RX_B ;SKIP WENN JA +0002B4 D??? 00423 BRA RX_ISR3 ;SONST NEXT + 00424 ;BLOCK HEADER UND 64 BYT SENDEN ----------------------------------------- +0002B6 EE00 F000 00425 LFSR 0,.0 +0002BA 989E 00426 BCF PIR1,TXIF ;INTERRUPT FLAG LÖSCHEN +0002BC 889D 00427 BSF PIE1,TXIE ;Enable interrupt +0002BE 0E81 00428 MOVLW RTCD_FROM_PIC +0002C0 6F4B 00429 MOVWF TX_STATUS ;STATUS SETZEN +0002C2 6EAD 00430 MOVWF TXREG ;BLOCK HEADER = 0X81 +0002C4 6B4A 00431 CLRF RX_STATUS ;STATUS RÜCKSETZEN +0002C6 0010 00432 RETFIE ;UND WEG + 00433 ;------------------------------------------------------------------------------------- +0002C8 00434 RX_ISR3 +0002C8 0E04 00435 MOVLW EXT_SUB_GO ;EXT SUB FREIGEBEN? +0002CA 6349 00436 CPFSEQ RX_B +0002CC D??? 00437 BRA RX_ISR4 ;NEIN-> + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 10 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + + 00438 ;EXT SUBS FREIGEBEN -------------------------------------------------------------- +0002CE 0E00 00439 MOVLW (EXTERN_INT_ADR & 0xFF0000)>>16 +0002D0 6EF8 00440 MOVWF TBLPTRU +0002D2 0E20 00441 MOVLW (EXTERN_INT_ADR & 0x00FF00)>>8 +0002D4 6EF7 00442 MOVWF TBLPTRH +0002D6 0E00 00443 MOVLW (EXTERN_INT_ADR & 0x0000FF) +0002D8 6EF6 00444 MOVWF TBLPTRL ;ADRESSE SETZEN +0002DA 0008 00445 TBLRD* ;WERT HOLEN (MUSS 0xFB SEIN SONST UNGÜLTIG) +0002DC CFF5 F04D 00446 MOVFF TABLAT,GO_INT ;EXTERNE SUBROUTINES AKTIVIEREN WENN OK +0002E0 0E00 00447 MOVLW (EXTERN_SUB_ADR & 0xFF0000)>>16 +0002E2 6EF8 00448 MOVWF TBLPTRU +0002E4 0E20 00449 MOVLW (EXTERN_SUB_ADR & 0x00FF00)>>8 +0002E6 6EF7 00450 MOVWF TBLPTRH +0002E8 0E10 00451 MOVLW (EXTERN_SUB_ADR & 0x0000FF) +0002EA 6EF6 00452 MOVWF TBLPTRL ;ADRESSE SETZEN +0002EC 0008 00453 TBLRD* ;WERT HOLEN (MUSS 0xFB SEIN SONST UNGÜLTIG) +0002EE CFF5 F04C 00454 MOVFF TABLAT,GO_SUB ;EXTERNE SUBROUTINES AKTIVIEREN WENN OK +0002F2 6B4A 00455 CLRF RX_STATUS ;STATUS RÜCKSETZEN +0002F4 0010 00456 RETFIE ;UND WEG + 00457 ;------------------------------------------------------------------------------------- +0002F6 00458 RX_ISR4 +0002F6 0E05 00459 MOVLW EXT_SUB_STOP ;EXT SUB STOPPEN? +0002F8 6349 00460 CPFSEQ RX_B +0002FA D??? 00461 BRA RX_ISR5 ;NEIN-> + 00462 ;EXT SUBS STOPPEN -------------------------------------------------------------- +0002FC 6B4D 00463 CLRF GO_INT ;STOPPEN +0002FE 6B4C 00464 CLRF GO_SUB ;STOPPEN +000300 6B4A 00465 CLRF RX_STATUS ;STATUS RÜCKSETZEN +000302 0010 00466 RETFIE ;UND WEG + 00467 ;------------------------------------------------------------------------------------- +000304 00468 RX_ISR5 +000304 0EA0 00469 MOVLW REQ_BLOCK ;REQ BLOCK? +000306 6349 00470 CPFSEQ RX_B +000308 D??? 00471 BRA RX_ISR6 ;NEIN-> + 00472 ;REQ BLOCK ---------------------------------------------------------------- +00030A 6F4A 00473 MOVWF RX_STATUS ;STATUS SETZEN = EMPFANGENES BYT +00030C EE11 F080 00474 LFSR 1,TX_BUFFER ;BYT COUNTER AUF TX_BUFFER -> GLEICH EINTRAGEN +000310 0010 00475 RETFIE +000312 00476 RX_ISR6 +000312 634A 00477 CPFSEQ RX_STATUS ;REQ BLOCK ADRESSE EMPFANGFEN? +000314 D??? 00478 BRA RX_ISR7 ;NEIN-> + 00479 ;3 BYT EMPFANGEN ------------------------------------- +000316 C049 FFE6 00480 MOVFF RX_B,POSTINC1 ;HOLEN -> (CNT+) +00031A 0E82 00481 MOVLW 0x82 ;3 BYT ÜBERTRAGEN? (BUFFER BEGINNT BEI 0x180 +00031C 60E1 00482 CPFSLT FSR1L ;NEIN ->SKIP +00031E D??? 00483 BRA RX_RB3BOK +000320 0010 00484 RETFIE +000322 00485 RX_RB3BOK +000322 EE11 F080 00486 LFSR 1,TX_BUFFER ;BYT RX COUNTER AUF TX_BUFFER +000326 CFE6 FFF8 00487 MOVFF POSTINC1,TBLPTRU ;ADRESSE EINTRAGEN +00032A CFE6 FFF7 00488 MOVFF POSTINC1,TBLPTRH +00032E CFE6 FFF6 00489 MOVFF POSTINC1,TBLPTRL +000332 0EC2 00490 MOVLW 0xC2 ;67 BYT ÜBERTRAGEN? (BUFFER BEGINNT BEI 0x180 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 11 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + +000334 00491 RX_RB3B2 +000334 0009 00492 TBLRD *+ ;LESEN UND NEXT +000336 CFF5 FFE6 00493 MOVFF TABLAT,POSTINC1 ;UND EINTRAGEN +00033A 62E1 00494 CPFSEQ FSR1L ;WENN FERTIG ->SKIP +00033C D??? 00495 BRA RX_RB3B2 ;SONST LOOP + 00496 ;BLOCK HEADER 3 BYTS ADRESSE UND 64 BYT SENDEN STARTEN ----------------------------------------- +00033E EE01 F080 00497 LFSR 0,TX_BUFFER ;TX COUNTER AUF TX_BUFFER +000342 989E 00498 BCF PIR1,TXIF ;INTERRUPT FLAG LÖSCHEN +000344 889D 00499 BSF PIE1,TXIE ;Enable interrupt +000346 0EA1 00500 MOVLW READ_BLOCK ;CODE HEADER 0xA1 +000348 6F4B 00501 MOVWF TX_STATUS ;STATUS SETZEN +00034A 6EAD 00502 MOVWF TXREG ;BLOCK HEADER = 0XA1 +00034C 6B4A 00503 CLRF RX_STATUS ;STATUS RÜCKSETZEN +00034E 0010 00504 RETFIE ;UND WEG + 00505 ;------------------------------------------------------------------------------------- +000350 00506 RX_ISR7 +000350 0EA2 00507 MOVLW WRITE_BLOCK ;WRITE BLOCK 0xA2 BYT EMPFANGEN? +000352 634A 00508 CPFSEQ RX_STATUS ;WENN JA-> SKIP +000354 D??? 00509 BRA RX_ISR8 ;NEIN-> + 00510 ;WRITE BLOCK ---------------------------------------------------------------------------- + 00511 ;67 BYT EMPFANGEN ------------------------------------- +000356 C049 FFE6 00512 MOVFF RX_B,POSTINC1 ;HOLEN -> (CNT+) +00035A 0E42 00513 MOVLW 0x42 ;67 BYT ÜBERTRAGEN? +00035C 60E1 00514 CPFSLT FSR1L ;WENN FERTIG ->SKIP +00035E 0010 00515 RETFIE + 00516 ; ADRESSE UND DATEN SIND DA -> PROGRAMMING FLASH +000360 EE11 F000 00517 LFSR 1,RX_BUFFER ;BYT COUNTER AUF RX BUFFER +000364 CFE6 FFF8 00518 MOVFF POSTINC1,TBLPTRU ;TABLE POINTER SETZEN +000368 0E00 00519 MOVLW (EXTERN_INT_ADR & 0xFF0000)>>16 +00036A 60F8 00520 CPFSLT TBLPTRU ;TEST OB WENIGER ALS ERLAUBT +00036C D??? 00521 BRA NO_PROG ;JA-> +00036E CFE6 FFF7 00522 MOVFF POSTINC1,TBLPTRH ;TABLE POINTER SETZEN +000372 0E20 00523 MOVLW (EXTERN_INT_ADR & 0x00FF00)>>8 +000374 60F8 00524 CPFSLT TBLPTRU ;TEST OB WENIGER ALS ERLAUBT +000376 D??? 00525 BRA NO_PROG ;JA-> +000378 CFE6 FFF6 00526 MOVFF POSTINC1,TBLPTRL ;TABLE POINTER SETZEN + 00527 ;EREASE BLOCK +00037C 8EA6 00528 BSF EECON1,EEPGD ; point to Flash program memory +00037E 9CA6 00529 BCF EECON1,CFGS ; access Flash program memory +000380 84A6 00530 BSF EECON1,WREN ; enable write to memory +000382 88A6 00531 BSF EECON1,FREE ; enable Row Erase operation +000384 0E55 00532 MOVLW 55h +000386 6EA7 00533 MOVWF EECON2 ; write 55h +000388 0EAA 00534 MOVLW 0AAh ; write 0AAh +00038A 6EA7 00535 MOVWF EECON2 +00038C 82A6 00536 BSF EECON1,WR ; start erase (CPU stall) +00038E 0E42 00537 MOVLW 0x42 ;67 BYT +000390 00538 WRITE_WORD_TO_HREGS +000390 CFE6 FFF5 00539 MOVFF POSTINC1,TABLAT ; get byte of buffer data +000394 000F 00540 TBLWT+* ; write data, perform a short write to internal + TBLWT holding register. +000396 60E1 00541 CPFSLT FSR1L ;SCHON BEI 67 BYTES? +000398 D??? 00542 BRA WRITE_WORD_TO_HREGS ;NEIN->LOOP + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 12 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + +00039A 00543 PROGRAM_MEMORY +00039A 8EA6 00544 BSF EECON1,EEPGD ; point to Flash program memory +00039C 9CA6 00545 BCF EECON1,CFGS ; access Flash program memory +00039E 84A6 00546 BSF EECON1,WREN ; enable write to memory +0003A0 0E55 00547 MOVLW 55h +0003A2 6EA7 00548 MOVWF EECON2 ; write 55h +0003A4 0EAA 00549 MOVLW 0AAh +0003A6 6EA7 00550 MOVWF EECON2 ; write 0AAh +0003A8 82A6 00551 BSF EECON1,WR ; start program (CPU stall) +0003AA 94A6 00552 BCF EECON1,WREN ; disable write to memory +0003AC 00553 NO_PROG +0003AC 6B4A 00554 CLRF RX_STATUS ;AUF NORMLA SCHALTEN +0003AE 0010 00555 RETFIE ;UND FERTIG + 00556 ;WRITE BLOCK SETZEN? +0003B0 00557 RX_ISR8 +0003B0 6349 00558 CPFSEQ RX_B ;BLOCK HEADER COMMANDOE 0XA2? +0003B2 D??? 00559 BRA RX_ISR9 ;NEIN-> +0003B4 6F4A 00560 MOVWF RX_STATUS ;STATUS SETZEN = EMPFANGENES BYT +0003B6 EE11 F000 00561 LFSR 1,RX_BUFFER ;BYT COUNTER AUF RX BUFFER +0003BA 0010 00562 RETFIE + 00563 ;------------------------------------------------------------------------------------- +0003BC 00564 RX_ISR9 +0003BC 6B4A 00565 CLRF RX_STATUS +0003BE 0010 00566 RETFIE + 00567 ;------------------------------------------------------------------------------------- + 00568 ;SYNC ABWARTEN UND WENN DA "OK!" SENDEN ---------------------------------------------------- + 00569 ;------------------------------------------------------------------------------------- +0003C0 00570 RX_SYNC_START +0003C0 0EFF 00571 MOVLW SYNC1 +0003C2 634A 00572 CPFSEQ RX_STATUS +0003C4 D??? 00573 BRA RX_SYNC2 +0003C6 0E41 00574 MOVLW SYNC1_DATA +0003C8 6349 00575 CPFSEQ RX_B +0003CA D??? 00576 BRA NON_SYNC +0003CC 0EFE 00577 MOVLW SYNC2 +0003CE 6F4A 00578 MOVWF RX_STATUS +0003D0 0010 00579 RETFIE +0003D2 00580 NON_SYNC +0003D2 0EFF 00581 MOVLW SYNC1 +0003D4 6F4A 00582 MOVWF RX_STATUS +0003D6 0010 00583 RETFIE +0003D8 00584 RX_SYNC2 ;TEST AUF SYNC UND DATA 2 +0003D8 0EFE 00585 MOVLW SYNC2 +0003DA 634A 00586 CPFSEQ RX_STATUS +0003DC D??? 00587 BRA RX_SYNC3 ;NICHT SYNC 2 +0003DE 0E43 00588 MOVLW SYNC2_DATA +0003E0 6349 00589 CPFSEQ RX_B +0003E2 D??? 00590 BRA NON_SYNC +0003E4 0EFD 00591 MOVLW SYNC3 +0003E6 6F4A 00592 MOVWF RX_STATUS +0003E8 0010 00593 RETFIE +0003EA 00594 RX_SYNC3 ;TEST AUF SYNC UND DATA 3 +0003EA 0EFD 00595 MOVLW SYNC3 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 13 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + +0003EC 634A 00596 CPFSEQ RX_STATUS +0003EE D??? 00597 BRA RX_SYNC4 ;NICHT SYNC 3 +0003F0 0E50 00598 MOVLW SYNC3_DATA +0003F2 6349 00599 CPFSEQ RX_B +0003F4 D??? 00600 BRA NON_SYNC +0003F6 0EFC 00601 MOVLW SYNC4 +0003F8 6F4A 00602 MOVWF RX_STATUS +0003FA 0010 00603 RETFIE +0003FC 00604 RX_SYNC4 ;TEST AUF SYNC UND DATA 4 +0003FC 0EFC 00605 MOVLW SYNC4 +0003FE 634A 00606 CPFSEQ RX_STATUS +000400 D??? 00607 BRA NON_SYNC ;WIEDER VON VORN +000402 0E46 00608 MOVLW SYNC4_DATA +000404 6349 00609 CPFSEQ RX_B ;SKIP OK +000406 D??? 00610 BRA NON_SYNC ;NICHT SYNC4 DATA +000408 00611 RX_WAIT1 +000408 A2AC 00612 BTFSS TXSTA,TRMT +00040A D??? 00613 BRA RX_WAIT1 +00040C 0E4F 00614 MOVLW 'O' ;SENDE OK! +00040E 6EAD 00615 MOVWF TXREG; +000410 00616 RX_WAIT2 +000410 A2AC 00617 BTFSS TXSTA,TRMT +000412 D??? 00618 BRA RX_WAIT2 +000414 0E4B 00619 MOVLW 'K' ;SENDE OK! +000416 6EAD 00620 MOVWF TXREG; +000418 00621 RX_WAIT3 +000418 A2AC 00622 BTFSS TXSTA,TRMT +00041A D??? 00623 BRA RX_WAIT3 +00041C 0E21 00624 MOVLW '!' +00041E 6EAD 00625 MOVWF TXREG; +000420 6B4A 00626 CLRF RX_STATUS ;OK START NORMAL +000422 0010 00627 RETFIE + 00628 ;**********************************************************************************************""""""""" + """" + 00629 ;SPANNUNGSÜBERWACHUNGS INTERRUPT +000424 00630 HLVD_ISR +000424 A346 00631 BTFSS U_ERR,1 ;WARTEN AUF GELADEN? +000426 D??? 00632 BRA HLVD_LE ;NEIN UNTERSPANNUNG DETEKT-> +000428 9146 00633 BCF U_ERR,0 ;SPANNUNGSFEHLER AUS +00042A 9346 00634 BCF U_ERR,1 ;WARTEN AUF GELADEN=AUS +00042C 0E07 00635 MOVLW U_ERR_PW_AUS+2 ;POWER AUS ÜBERSPRINGEN +00042E 6F47 00636 MOVWF U_ERR_TIME ;ZEIT SETZEN +000430 0E17 00637 MOVLW B'00010111' ;INT WENN UNTER 3.12V +000432 6ED2 00638 MOVWF HLVDCON +000434 00639 WAIT_LVDOK: +000434 AAD2 00640 BTFSS HLVDCON,IVRST ;ABWARTEN BIS AENDERUNG AKTIV +000436 D??? 00641 BRA WAIT_LVDOK +000438 94A1 00642 BCF PIR2,HLVDIF ;INTERRUPT FLAG LÖSCHEN +00043A 0010 00643 RETFIE +00043C 00644 HLVD_LE ;UNTERSPANNUNG +00043C 8146 00645 BSF U_ERR,0 ;ERROR SETZEN +00043E 8346 00646 BSF U_ERR,1 ;WARTEN AUF GELADEN SETZEN +000440 6B47 00647 CLRF U_ERR_TIME ;RÜCKSETZEN + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 14 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + + 00648 ;MESSAGE AN PROCESSOR +000442 0E03 00649 MOVLW U_MIN_TO_MCF +000444 6EAD 00650 MOVWF TXREG ;SENDEN + 00651 +000446 0E9A 00652 MOVLW B'10011010' ;INT WENN ÜBER 3.7V +000448 6ED2 00653 MOVWF HLVDCON +00044A D??? 00654 BRA WAIT_LVDOK + 00655 ;**********************************************************************************************""""""""" + """" + 00656 ;A/D INTERRUPT +00044C 00657 AD_ISR +00044C 9C9E 00658 BCF PIR1,ADIF ;CLEAR INTERRUPT PENDIG +00044E 0010 00659 RETFIE ;RETURN + 00660 ;******************************************************************************************************* + ****** + 00661 ; uhr interrupt ALLE 1/8 SEC +000450 00662 RTC_ISR + 00663 ;UHR WIEDER RÜCKSETZEN UND AKTIVIEREN +000450 0EF0 00664 MOVLW TIMER_HB ;WIEDER AUF STARTWERT +000452 6ECF 00665 MOVWF TMR1H ;SETZEN +000454 909E 00666 BCF PIR1,TMR1IF ;INTERRUPT FLAG LÖSCHEN +000456 8881 00667 BSF PORTB,RB4 ;PIC INT HIGH -------- +000458 8096 00668 BSF TRISE,RE0 ;LED=OFF +00045A 9881 00669 BCF PORTB,RB4 ;PIC INT = LOW +00045C B095 00670 BTFSC TRISD,RD0 ;POWER OFF? +00045E D??? 00671 BRA POWER_OFF_I ;JA-> + 00672 ; POWER IS ON: + 00673 ; BLINKEN 4X/SEC WENN RESET +000460 BE95 00674 BTFSC TRISD,RD7 ;RESET AKTIV? +000462 D??? 00675 BRA PINGS ;NEIN-> +000464 B141 00676 BTFSC TICKS,0 ;UNGERADE TICKS? +000466 9096 00677 BCF TRISE,RE0 ;NEIN->LED=ON +000468 D??? 00678 BRA PINGS +00046A 00679 POWER_OFF_I +00046A 0E03 00680 MOVLW .3 +00046C 1500 00681 ANDWF SECS,0 ;4 SEKUNDEN AUSMASKIEREN +00046E E1?? 00682 BNZ PINGS ;NICHT MODULO4 -> +000470 0E07 00683 MOVLW .7 +000472 6341 00684 CPFSEQ TICKS ;7. TICK? +000474 D??? 00685 BRA POWER_OFF_I2 ;NEIN-> +000476 9096 00686 BCF TRISE,RE0 ;JA->LED=ON +000478 00687 POWER_OFF_I2 +000478 0E1E 00688 MOVLW .30 ; WENIGER ALS 30 SEC SEIT LETZTEM SPANNUNGSFEHLER? +00047A 6147 00689 CPFSLT U_ERR_TIME +00047C D??? 00690 BRA PINGS ;NEIN-> +00047E 0E05 00691 MOVLW .5 +000480 6341 00692 CPFSEQ TICKS ;5. TICK? +000482 D??? 00693 BRA PINGS ;NEIN-> +000484 9096 00694 BCF TRISE,RE0 ;JA->LED=ON +000486 00695 PINGS +000486 EC?? F??? 00696 CALL TASTE ;UP TASTE + 00697 ; TASTE LOSGELASSEN? +00048A 0E04 00698 MOVLW RESET_OFF_TIME + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 15 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + +00048C 6543 00699 CPFSGT TASTE_OFF_TIME ;TASTE LÄNGER ALS 2 SEC LOSGELASSEN? +00048E D??? 00700 BRA PINGW ;NEIN-> +000490 8E95 00701 BSF TRISD,RD7 ;JA-> #RSTI INAKTIV =HIGH +000492 A095 00702 BTFSS TRISD,RD0 ;POWER ON? +000494 EC?? F??? 00703 CALL SERIAL_ON ;ja->SERIELL EINSCHALTEN + 00704 ;--TICKS=125MS +000498 00705 PINGW +000498 2B41 00706 INCF TICKS ;inc ticks +00049A A095 00707 BTFSS TRISD,RD0 ;POWER ON? +00049C D??? 00708 BRA PINGS2 ;JA-> +00049E 0E20 00709 MOVLW 20 +0004A0 6148 00710 CPFSLT U_POWER_IN ;LADEGERÄT ANGESCHLOSSEN? +0004A2 D??? 00711 BRA PINGS2 ;->JA LED HELLER +0004A4 0EA0 00712 MOVLW TIME_MAX ;>=MAXIMALZEIT? +0004A6 6147 00713 CPFSLT U_ERR_TIME ;SEIT SPANNUNGSFEHLER +0004A8 8096 00714 BSF TRISE,RE0 ;JA -> LED OFF +0004AA 00715 PINGS2 +0004AA 0E07 00716 MOVLW .7 ; 7? +0004AC 6541 00717 CPFSGT TICKS +0004AE 0010 00718 RETFIE ; NEIN ->RETURN +0004B0 00719 SEKUNDEN + 00720 ;led blinken POWER ON----------------------------------------- +0004B0 A095 00721 BTFSS TRISD,RD0 ;POWER ON? +0004B2 9096 00722 BCF TRISE,RE0 ;JA -> LED_ON + 00723 ;TIMER U_ERR ERHÖHEN +0004B4 0EA0 00724 MOVLW TIME_MAX ;>=MAXIMALZEIT? +0004B6 6547 00725 CPFSGT U_ERR_TIME ;SEIT SPANNUNGSFEHLER +0004B8 2B47 00726 INCF U_ERR_TIME ;NEIN ERHÖHEN + 00727 ;SPANNUNGSFEHLER BEARBEITEN ---------------------------------------- +0004BA 0E05 00728 MOVLW U_ERR_PW_AUS ;POWER AUS ZEIT? +0004BC 6347 00729 CPFSEQ U_ERR_TIME ; +0004BE D??? 00730 BRA SEK_NPA ;NEIN +0004C0 EC?? F??? 00731 CALL POWER_AUS ;JA AUSSCHALTEN + 00732 ;-------------------------------------------------------- +0004C4 00733 SEK_NPA + 00734 ;SPANNUNG POWER IN MESSEN +0004C4 0E01 00735 MOVLW B'00000001' ;KANAL 0, AD ON +0004C6 6EC2 00736 MOVWF ADCON0 ; +0004C8 82C2 00737 BSF ADCON0,1 ;GO +0004CA 00738 SEK_2 +0004CA B2C2 00739 BTFSC ADCON0,1 ;FERTIG? +0004CC D??? 00740 BRA SEK_2 ;NEIN +0004CE CFC4 F048 00741 MOVFF ADRESH,U_POWER_IN ;OK WERT EINTRAGEN + 00742 + 00743 ;SPANNUNG 2V5 MESSEN -> U_ERR TIMER NICHT ERHÖHEN WENN ÜBER 3.2V RESP. WIEDER -1 +0004D2 B095 00744 BTFSC TRISD,RD0 ;POWER ON? +0004D4 D??? 00745 BRA SEK_4 ;NEIN NICHT MESSEN + 00746 +0004D6 0E0D 00747 MOVLW B'00001101' ;KANAL 3, AD ON +0004D8 6EC2 00748 MOVWF ADCON0 ; +0004DA 82C2 00749 BSF ADCON0,1 ;GO +0004DC 00750 SEK_3 +0004DC B2C2 00751 BTFSC ADCON0,1 ;FERTIG? + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 16 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + +0004DE D??? 00752 BRA SEK_3 ;NEIN +0004E0 0EC8 00753 MOVLW .200 ;UNTER 3.2V -> WENN WERT ÜBER 78% +0004E2 60C4 00754 CPFSLT ADRESH ;JA -> +0004E4 D??? 00755 BRA SEK_4 ;SONST WEITER + 00756 ;TIMER U_ERR ERHÖHEN +0004E6 A146 00757 BTFSS U_ERR,0 ;SPANNUNGSERROR? +0004E8 D??? 00758 BRA SEK_4 ;NEIN +0004EA 0EA0 00759 MOVLW TIME_MAX ;>=MAXIMALZEIT? +0004EC 6547 00760 CPFSGT U_ERR_TIME ;SEIT SPANNUNGSFEHLER +0004EE 0747 00761 DECF U_ERR_TIME ;NEIN -> -1 + 00762 ;------------------------------------------------------------- +0004F0 00763 SEK_4 +0004F0 6B41 00764 CLRF TICKS +0004F2 2B00 00765 INCF SECS ; Increment seconds +0004F4 0E3B 00766 MOVLW .59 ; 60 seconds elapsed? +0004F6 6500 00767 CPFSGT SECS +0004F8 0010 00768 RETFIE ;RETURN +0004FA 00769 MINUTEN +0004FA 6B00 00770 CLRF SECS ; Clear seconds +0004FC 2B02 00771 INCF MINS ; Increment minutes +0004FE 0E3B 00772 MOVLW .59 ; 60 minutes elapsed? +000500 6502 00773 CPFSGT MINS +000502 0010 00774 RETFIE ;RETURN +000504 00775 STUNDEN +000504 6B02 00776 CLRF MINS ; clear minutes +000506 2B04 00777 INCF HOURS ; Increment hours +000508 0E17 00778 MOVLW .23 ; 24 hours elapsed? +00050A 6504 00779 CPFSGT HOURS +00050C 0010 00780 RETFIE ;RETURN +00050E 00781 TAGE_UND_TAG_DER_WOCHE +00050E 6B04 00782 CLRF HOURS ; Reset hours +000510 0E07 00783 MOVLW .7 +000512 6106 00784 CPFSLT DAY_OF_WEEK +000514 6B06 00785 CLRF DAY_OF_WEEK +000516 2B06 00786 INCF DAY_OF_WEEK +000518 2B07 00787 INCF DAYS +00051A 0E1C 00788 MOVLW .28 +00051C 6507 00789 CPFSGT DAYS +00051E 0010 00790 RETFIE ;RETURN +000520 00791 MEHR_ALS_28_TAGE +000520 0E02 00792 MOVLW .2 +000522 6308 00793 CPFSEQ MONTHS ;FEB? +000524 D??? 00794 BRA NOT_FEB ;NEIN-> +000526 00795 FEB +000526 0E03 00796 MOVLW .3 +000528 1509 00797 ANDWF YEARS,0 ;SCHALTJAHR +00052A E1?? 00798 BNZ NEXT_MONTH ;NEIN-> +00052C 00799 SCHALTJAHR +00052C 0E1D 00800 MOVLW .29 +00052E 6507 00801 CPFSGT DAYS +000530 0010 00802 RETFIE ;RETURN +000532 00803 NEXT_MONTH +000532 0E01 00804 MOVLW .1 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 17 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + +000534 6F07 00805 MOVWF DAYS +000536 2B08 00806 INCF MONTHS +000538 0E12 00807 MOVLW 12 +00053A 6508 00808 CPFSGT MONTHS +00053C 0010 00809 RETFIE ;RETURN +00053E 00810 YEAR +00053E 0E01 00811 MOVLW .1 +000540 6F08 00812 MOVWF MONTHS +000542 2B09 00813 INCF YEARS +000544 0010 00814 RETFIE ;RETURN +000546 00815 NOT_FEB +000546 0E1E 00816 MOVLW .30 +000548 6507 00817 CPFSGT DAYS +00054A 0010 00818 RETFIE +00054C 00819 MEHR_ALS_30_TAGE +00054C 0E04 00820 MOVLW .4 ;APRIL? +00054E 6308 00821 CPFSEQ MONTHS ;SKIP +000550 D??? 00822 BRA NOT_APRIL +000552 D??? 00823 BRA NEXT_MONTH ;APRIL-> +000554 00824 NOT_APRIL +000554 0E06 00825 MOVLW .6 ;JUNI? +000556 6308 00826 CPFSEQ MONTHS +000558 D??? 00827 BRA NOT_JUNI +00055A D??? 00828 BRA NEXT_MONTH ;JUNI-> +00055C 00829 NOT_JUNI +00055C 0E09 00830 MOVLW .9 ;SEPTEMBER? +00055E 6308 00831 CPFSEQ MONTHS +000560 D??? 00832 BRA NOT_SEP +000562 D??? 00833 BRA NEXT_MONTH ;SEPTEMBER-> +000564 00834 NOT_SEP +000564 0E0B 00835 MOVLW .11 ;NOVEMBER? +000566 6308 00836 CPFSEQ MONTHS ;SKIP +000568 0010 00837 RETFIE ;SIND MONATE MIT 31 TAGEN-> +00056A D??? 00838 BRA NEXT_MONTH ;SONST NOVEMBER-> + 00839 ;**********************************************************************************************""""""""" + """" + 00840 ; ENDE MAIN + 00841 ;**********************************************************************************************""""""""" + """" + 00842 ;**********************************************************************************************""""""""" + """" + 00843 ; EXTERN_SUBOUTINES FOGEN AB 0x1000 DIE SPÄTER EINPROGRAMMIERT WERDEN + 00844 ;**********************************************************************************************""""""""" + """" + 00845 end + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 18 + + +SYMBOL TABLE + LABEL VALUE + +A 00000000 +ABDEN 00000000 +ABDOVF 00000007 +ACCESS 00000000 +ACKDT 00000005 +ACKEN 00000004 +ACKSTAT 00000006 +ACQT0 00000003 +ACQT1 00000004 +ACQT2 00000005 +ADCON0 00000FC2 +ADCON1 00000FC1 +ADCON2 00000FC0 +ADCS0 00000000 +ADCS1 00000001 +ADCS2 00000002 +ADDEN 00000003 +ADEN 00000003 +ADFM 00000007 +ADIE 00000006 +ADIF 00000006 +ADIP 00000006 +ADON 00000000 +ADRES 00000FC3 +ADRESH 00000FC4 +ADRESL 00000FC3 +AD_ISR 0000044C +AD_KANAL 00000045 +AN0 00000000 +AN1 00000001 +AN10 00000001 +AN11 00000004 +AN12 00000000 +AN2 00000002 +AN3 00000003 +AN4 00000005 +AN5 00000000 +AN6 00000001 +AN7 00000002 +AN8 00000002 +AN9 00000003 +BANKED 00000001 +BAUDCON 00000FB8 +BAUDCTL 00000FB8 +BCLIE 00000003 +BCLIF 00000003 +BCLIP 00000003 +BF 00000000 +BGST 00000005 +BOR 00000000 +BRG16 00000003 +BRGH 00000002 +BSR 00000FE0 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 19 + + +SYMBOL TABLE + LABEL VALUE + +C 00000000 +C1INV 00000004 +C1OUT 00000006 +C2INV 00000005 +C2OUT 00000007 +CCP1 00000002 +CCP1CON 00000FBD +CCP1IE 00000002 +CCP1IF 00000002 +CCP1IP 00000002 +CCP1M0 00000000 +CCP1M1 00000001 +CCP1M2 00000002 +CCP1M3 00000003 +CCP1X 00000005 +CCP1Y 00000004 +CCP2CON 00000FBA +CCP2IE 00000000 +CCP2IF 00000000 +CCP2IP 00000000 +CCP2M0 00000000 +CCP2M1 00000001 +CCP2M2 00000002 +CCP2M3 00000003 +CCP2X 00000005 +CCP2Y 00000004 +CCP2_PORTB 00000003 +CCP2_PORTC 00000001 +CCPR1 00000FBE +CCPR1H 00000FBF +CCPR1L 00000FBE +CCPR2 00000FBB +CCPR2H 00000FBC +CCPR2L 00000FBB +CFGS 00000006 +CHS0 00000002 +CHS1 00000003 +CHS2 00000004 +CHS3 00000005 +CIS 00000003 +CK 00000006 +CKE 00000006 +CKP 00000004 +CLKI 00000007 +CLKO 00000006 +CLK_ACTIV 00000072 +CLK_SLEEP 00000012 +CM0 00000000 +CM1 00000001 +CM2 00000002 +CMCON 00000FB4 +CMIE 00000006 +CMIF 00000006 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 20 + + +SYMBOL TABLE + LABEL VALUE + +CMIP 00000006 +CREN 00000004 +CS 00000002 +CSRC 00000007 +CVR0 00000000 +CVR1 00000001 +CVR2 00000002 +CVR3 00000003 +CVRCON 00000FB5 +CVREF 00000002 +CVREN 00000007 +CVROE 00000006 +CVRR 00000005 +CVRSS 00000004 +D 00000005 +DAYS 00000007 +DAY_OF_WEEK 00000006 +DC 00000001 +DC1B0 00000004 +DC1B1 00000005 +DC2B0 00000004 +DC2B1 00000005 +DDRA TRISA +DDRB TRISB +DDRC TRISC +DDRD TRISD +DDRE TRISE +DONE 00000001 +D_A 00000005 +EAPIR1 0000004E +EAPIR2 0000004F +ECCP1AS 00000FB6 +ECCPAS0 00000004 +ECCPAS1 00000005 +ECCPAS2 00000006 +ECCPASE 00000007 +EEADR 00000FA9 +EECON1 00000FA6 +EECON2 00000FA7 +EEDATA 00000FA8 +EEIE 00000004 +EEIF 00000004 +EEIP 00000004 +EEPGD 00000007 +EXTERN_INTERRUPTS 00002002 +EXTERN_INT_ADR 00002000 +EXTERN_SUBROUTINES 00002012 +EXTERN_SUB_ADR 00002010 +EXT_CODE 000000FB +EXT_SUB_GO 00000004 +EXT_SUB_STOP 00000005 +FAST 00000001 +FEB 00000526 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 21 + + +SYMBOL TABLE + LABEL VALUE + +FERR 00000002 +FLTS 00000002 +FREE 00000004 +FSR0 00000000 +FSR0H 00000FEA +FSR0L 00000FE9 +FSR1 00000001 +FSR1H 00000FE2 +FSR1L 00000FE1 +FSR2 00000002 +FSR2H 00000FDA +FSR2L 00000FD9 +GCEN 00000007 +GIE 00000007 +GIEH 00000007 +GIEL 00000006 +GO 00000001 +GO_DONE 00000001 +GO_INT 0000004D +GO_SUB 0000004C +HLVDCON 00000FD2 +HLVDEN 00000004 +HLVDIE 00000002 +HLVDIF 00000002 +HLVDIP 00000002 +HLVDL0 00000000 +HLVDL1 00000001 +HLVDL2 00000002 +HLVDL3 00000003 +HLVD_ISR 00000424 +HLVD_LE 0000043C +HOURS 00000004 +HOURS_ALARM 00000005 +IBF 00000007 +IBOV 00000005 +IDLEN 00000007 +INDF0 00000FEF +INDF1 00000FE7 +INDF2 00000FDF +INT0 00000000 +INT0E 00000004 +INT0F 00000001 +INT0IE 00000004 +INT0IF 00000001 +INT1 00000001 +INT1E 00000003 +INT1F 00000000 +INT1IE 00000003 +INT1IF 00000000 +INT1IP 00000006 +INT1P 00000006 +INT2 00000002 +INT2E 00000004 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 22 + + +SYMBOL TABLE + LABEL VALUE + +INT2F 00000001 +INT2IE 00000004 +INT2IF 00000001 +INT2IP 00000007 +INT2P 00000007 +INTCON 00000FF2 +INTCON2 00000FF1 +INTCON3 00000FF0 +INTEDG0 00000006 +INTEDG1 00000005 +INTEDG2 00000004 +INTSRC 00000007 +INT_HANDLER 00000018 +IOFS 00000002 +IPEN 00000007 +IPR1 00000F9F +IPR2 00000FA2 +IRCF0 00000004 +IRCF1 00000005 +IRCF2 00000006 +IRVST 00000005 +IVRST 00000005 +KALT_START 00000100 +KBI0 00000004 +KBI1 00000005 +KBI2 00000006 +KBI3 00000007 +LADESTROM 000001D2 +LATA 00000F89 +LATA0 00000000 +LATA1 00000001 +LATA2 00000002 +LATA3 00000003 +LATA4 00000004 +LATA5 00000005 +LATA6 00000006 +LATA7 00000007 +LATB 00000F8A +LATB0 00000000 +LATB1 00000001 +LATB2 00000002 +LATB3 00000003 +LATB4 00000004 +LATB5 00000005 +LATB6 00000006 +LATB7 00000007 +LATC 00000F8B +LATC0 00000000 +LATC1 00000001 +LATC2 00000002 +LATC3 00000003 +LATC4 00000004 +LATC5 00000005 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 23 + + +SYMBOL TABLE + LABEL VALUE + +LATC6 00000006 +LATC7 00000007 +LATD 00000F8C +LATD0 00000000 +LATD1 00000001 +LATD2 00000002 +LATD3 00000003 +LATD4 00000004 +LATD5 00000005 +LATD6 00000006 +LATD7 00000007 +LATE 00000F8D +LATE0 00000000 +LATE1 00000001 +LATE2 00000002 +LS_OFF_POWER 000001DA +LS_ON_POWER 000001D6 +LVDCON 00000FD2 +LVDEN 00000004 +LVDIE 00000002 +LVDIF 00000002 +LVDIN 00000005 +LVDIP 00000002 +LVDL0 00000000 +LVDL1 00000001 +LVDL2 00000002 +LVDL3 00000003 +LVV0 00000000 +LVV1 00000001 +LVV2 00000002 +LVV3 00000003 +MAIN 0000019E +MAIN2 000001AE +MCLR 00000003 +MEHR_ALS_28_TAGE 00000520 +MEHR_ALS_30_TAGE 0000054C +MINS 00000002 +MINS_ALRAM 00000003 +MINUTEN 000004FA +MONTHS 00000008 +N 00000004 +NEXT_MONTH 00000532 +NON_SYNC 000003D2 +NOT_A 00000005 +NOT_ADDRESS 00000005 +NOT_APRIL 00000554 +NOT_BOR 00000000 +NOT_CS 00000002 +NOT_DONE 00000001 +NOT_FEB 00000546 +NOT_JUNI 0000055C +NOT_MCLR 00000003 +NOT_PD 00000002 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 24 + + +SYMBOL TABLE + LABEL VALUE + +NOT_POR 00000001 +NOT_RBPU 00000007 +NOT_RD 00000000 +NOT_RI 00000004 +NOT_SEP 00000564 +NOT_SS 00000005 +NOT_T1SYNC 00000002 +NOT_T3SYNC 00000002 +NOT_TO 00000003 +NOT_W 00000002 +NOT_WR 00000001 +NOT_WRITE 00000002 +NO_PROG 000003AC +OBF 00000006 +OERR 00000001 +OFF_TIME 00000014 +ON_TIME 00000002 +OSC1 00000007 +OSC2 00000006 +OSCCON 00000FD3 +OSCFIE 00000007 +OSCFIF 00000007 +OSCFIP 00000007 +OSCTUNE 00000F9B +OSTS 00000003 +OV 00000003 +P 00000004 +P1B 00000005 +P1C 00000006 +P1D 00000007 +P1M0 00000006 +P1M1 00000007 +PC 00000FF9 +PCFG0 00000000 +PCFG1 00000001 +PCFG2 00000002 +PCFG3 00000003 +PCL 00000FF9 +PCLATH 00000FFA +PCLATU 00000FFB +PD 00000002 +PDC0 00000000 +PDC1 00000001 +PDC2 00000002 +PDC3 00000003 +PDC4 00000004 +PDC5 00000005 +PDC6 00000006 +PEIE 00000006 +PEN 00000002 +PGC 00000006 +PGD 00000007 +PGM 00000005 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 25 + + +SYMBOL TABLE + LABEL VALUE + +PIE1 00000F9D +PIE2 00000FA0 +PINGS 00000486 +PINGS2 000004AA +PINGW 00000498 +PIR1 00000F9E +PIR2 00000FA1 +PLLEN 00000006 +PLUSW0 00000FEB +PLUSW1 00000FE3 +PLUSW2 00000FDB +POR 00000001 +PORTA 00000F80 +PORTB 00000F81 +PORTC 00000F82 +PORTD 00000F83 +PORTE 00000F84 +POSTDEC0 00000FED +POSTDEC1 00000FE5 +POSTDEC2 00000FDD +POSTINC0 00000FEE +POSTINC1 00000FE6 +POSTINC2 00000FDE +POWER_AUS 000001C2 +POWER_EIN 000001B4 +POWER_OFF_I 0000046A +POWER_OFF_I2 00000478 +POWER_ON_TIME 00000044 +PR2 00000FCB +PREINC0 00000FEC +PREINC1 00000FE4 +PREINC2 00000FDC +PRG_OK_PIC 00000022 +PROD 00000FF3 +PRODH 00000FF4 +PRODL 00000FF3 +PROGRAM_MEMORY 0000039A +PRSEN 00000007 +PSA 00000003 +PSP0 00000000 +PSP1 00000001 +PSP2 00000002 +PSP3 00000003 +PSP4 00000004 +PSP5 00000005 +PSP6 00000006 +PSP7 00000007 +PSPIE 00000007 +PSPIF 00000007 +PSPIP 00000007 +PSPMODE 00000004 +PSSAC0 00000002 +PSSAC1 00000003 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 26 + + +SYMBOL TABLE + LABEL VALUE + +PSSBD0 00000000 +PSSBD1 00000001 +PWM1CON 00000FB7 +R 00000002 +RA0 00000000 +RA1 00000001 +RA2 00000002 +RA3 00000003 +RA4 00000004 +RA5 00000005 +RA6 00000006 +RA7 00000007 +RB0 00000000 +RB1 00000001 +RB2 00000002 +RB3 00000003 +RB4 00000004 +RB5 00000005 +RB6 00000006 +RB7 00000007 +RBIE 00000003 +RBIF 00000000 +RBIP 00000000 +RBPU 00000007 +RC0 00000000 +RC1 00000001 +RC2 00000002 +RC3 00000003 +RC4 00000004 +RC5 00000005 +RC6 00000006 +RC7 00000007 +RCEN 00000003 +RCIDL 00000006 +RCIE 00000005 +RCIF 00000005 +RCIP 00000005 +RCMT 00000006 +RCON 00000FD0 +RCREG 00000FAE +RCSTA 00000FAB +RD 00000000 +RD0 00000000 +RD1 00000001 +RD16 00000007 +RD2 00000002 +RD3 00000003 +RD4 00000004 +RD5 00000005 +RD6 00000006 +RD7 00000007 +RE0 00000000 +RE1 00000001 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 27 + + +SYMBOL TABLE + LABEL VALUE + +RE2 00000002 +RE3 00000003 +READ_BLOCK 000000A1 +REGA 0000000A +REGB 0000000B +REGC 0000000C +REGD 0000000D +REQ_BLOCK 000000A0 +REQ_RTCD_FROM_MCF 00000002 +REQ_RTCD_FROM_PIC 00000001 +RESETEN 00000256 +RESET_OFF_TIME 00000004 +RESET_ON_TIME 00000002 +RI 00000004 +RSEN 00000001 +RTCD_FROM_MCF 00000082 +RTCD_FROM_PIC 00000081 +RTC_ISR 00000450 +RTC_RAM 0000000E +RX 00000007 +RX9 00000006 +RX9D 00000000 +RXDTP 00000005 +RX_B 00000049 +RX_BUFFER 00000100 +RX_ISR 00000288 +RX_ISR1 000002A4 +RX_ISR2 000002B0 +RX_ISR3 000002C8 +RX_ISR4 000002F6 +RX_ISR5 00000304 +RX_ISR6 00000312 +RX_ISR7 00000350 +RX_ISR8 000003B0 +RX_ISR9 000003BC +RX_RB3B2 00000334 +RX_RB3BOK 00000322 +RX_STATUS 0000004A +RX_SYNC2 000003D8 +RX_SYNC3 000003EA +RX_SYNC4 000003FC +RX_SYNC_START 000003C0 +RX_WAIT1 00000408 +RX_WAIT2 00000410 +RX_WAIT3 00000418 +R_W 00000002 +S 00000003 +SBOREN 00000006 +SCHALTJAHR 0000052C +SCK 00000003 +SCKP 00000004 +SCL 00000003 +SCS0 00000000 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 28 + + +SYMBOL TABLE + LABEL VALUE + +SCS1 00000001 +SDA 00000004 +SDI 00000004 +SDO 00000005 +SECS 00000000 +SECS_ALARM 00000001 +SEKUNDEN 000004B0 +SEK_2 000004CA +SEK_3 000004DC +SEK_4 000004F0 +SEK_NPA 000004C4 +SEN 00000000 +SENDB 00000003 +SEND_RTC_REG 00000232 +SEND_RTC_TIME 00000002 +SERIAL_OFF 000001DE +SERIAL_ON 000001EA +SMP 00000007 +SP0 00000000 +SP1 00000001 +SP2 00000002 +SP3 00000003 +SP4 00000004 +SPBRG 00000FAF +SPBRGH 00000FB0 +SPEN 00000007 +SREN 00000005 +SS 00000005 +SSPADD 00000FC8 +SSPBUF 00000FC9 +SSPCON1 00000FC6 +SSPCON2 00000FC5 +SSPEN 00000005 +SSPIE 00000003 +SSPIF 00000003 +SSPIP 00000003 +SSPM0 00000000 +SSPM1 00000001 +SSPM2 00000002 +SSPM3 00000003 +SSPOV 00000006 +SSPSTAT 00000FC7 +STATUS 00000FD8 +STKFUL 00000007 +STKOVF 00000007 +STKPTR 00000FFC +STKUNF 00000006 +STUNDEN 00000504 +SWDTE 00000000 +SWDTEN 00000000 +SYNC 00000004 +SYNC1 000000FF +SYNC1_DATA 00000041 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 29 + + +SYMBOL TABLE + LABEL VALUE + +SYNC2 000000FE +SYNC2_DATA 00000043 +SYNC3 000000FD +SYNC3_DATA 00000050 +SYNC4 000000FC +SYNC4_DATA 00000046 +T08BIT 00000006 +T0CKI 00000004 +T0CON 00000FD5 +T0CS 00000005 +T0IE 00000005 +T0IF 00000002 +T0PS0 00000000 +T0PS1 00000001 +T0PS2 00000002 +T0SE 00000004 +T13CKI 00000000 +T1CKI 00000000 +T1CKPS0 00000004 +T1CKPS1 00000005 +T1CON 00000FCD +T1OSCEN 00000003 +T1OSI 00000001 +T1OSO 00000000 +T1RUN 00000006 +T1SYNC 00000002 +T2CKPS0 00000000 +T2CKPS1 00000001 +T2CON 00000FCA +T2OUTPS0 00000003 +T2OUTPS1 00000004 +T2OUTPS2 00000005 +T2OUTPS3 00000006 +T3CCP1 00000003 +T3CCP2 00000006 +T3CKPS0 00000004 +T3CKPS1 00000005 +T3CON 00000FB1 +T3SYNC 00000002 +TABLAT 00000FF5 +TAGE_UND_TAG_DER_WOCHE 0000050E +TASTE 00000208 +TASTE_OFF_TIME 00000043 +TASTE_ON_TIME 00000042 +TBLPTR 00000FF6 +TBLPTRH 00000FF7 +TBLPTRL 00000FF6 +TBLPTRU 00000FF8 +TG_END 00000250 +TG_JA 00000222 +TG_OFF_POWER 00000248 +TG_ON_POWER 0000022C +TG_ON_POWER2 00000238 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 30 + + +SYMBOL TABLE + LABEL VALUE + +TG_ON_POWER3 0000023E +TICKS 00000041 +TIMER_HB 000000F0 +TIME_MAX 000000A0 +TMR0H 00000FD7 +TMR0IE 00000005 +TMR0IF 00000002 +TMR0IP 00000002 +TMR0L 00000FD6 +TMR0ON 00000007 +TMR1CS 00000001 +TMR1H 00000FCF +TMR1IE 00000000 +TMR1IF 00000000 +TMR1IP 00000000 +TMR1L 00000FCE +TMR1ON 00000000 +TMR2 00000FCC +TMR2IE 00000001 +TMR2IF 00000001 +TMR2IP 00000001 +TMR2ON 00000002 +TMR3CS 00000001 +TMR3H 00000FB3 +TMR3IE 00000001 +TMR3IF 00000001 +TMR3IP 00000001 +TMR3L 00000FB2 +TMR3ON 00000000 +TO 00000003 +TOS 00000FFD +TOSH 00000FFE +TOSL 00000FFD +TOSU 00000FFF +TRISA 00000F92 +TRISA0 00000000 +TRISA1 00000001 +TRISA2 00000002 +TRISA3 00000003 +TRISA4 00000004 +TRISA5 00000005 +TRISA6 00000006 +TRISA7 00000007 +TRISB 00000F93 +TRISB0 00000000 +TRISB1 00000001 +TRISB2 00000002 +TRISB3 00000003 +TRISB4 00000004 +TRISB5 00000005 +TRISB6 00000006 +TRISB7 00000007 +TRISC 00000F94 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 31 + + +SYMBOL TABLE + LABEL VALUE + +TRISC0 00000000 +TRISC1 00000001 +TRISC2 00000002 +TRISC3 00000003 +TRISC4 00000004 +TRISC5 00000005 +TRISC6 00000006 +TRISC7 00000007 +TRISD 00000F95 +TRISD0 00000000 +TRISD1 00000001 +TRISD2 00000002 +TRISD3 00000003 +TRISD4 00000004 +TRISD5 00000005 +TRISD6 00000006 +TRISD7 00000007 +TRISE 00000F96 +TRISE0 00000000 +TRISE1 00000001 +TRISE2 00000002 +TRMT 00000001 +TUN0 00000000 +TUN1 00000001 +TUN2 00000002 +TUN3 00000003 +TUN4 00000004 +TX 00000006 +TX9 00000006 +TX9D 00000000 +TXCKP 00000004 +TXEN 00000005 +TXIE 00000004 +TXIF 00000004 +TXIP 00000004 +TXREG 00000FAD +TXSTA 00000FAC +TX_BUFFER 00000180 +TX_ISR 0000025E +TX_ISR1 00000276 +TX_ISR2 00000286 +TX_ISR_FERTIG 0000026E +TX_STATUS 0000004B +UA 00000001 +U_ERR 00000046 +U_ERR_PW_AUS 00000005 +U_ERR_TIME 00000047 +U_MIN_TO_MCF 00000003 +U_POWER_IN 00000048 +VCFG0 00000004 +VCFG1 00000005 +VDIRMAG 00000007 +VPP 00000003 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 32 + + +SYMBOL TABLE + LABEL VALUE + +VREFN 00000002 +VREFP 00000003 +W 00000000 +WAIT_LVDOK 00000434 +WARTEN 000001A8 +WCOL 00000007 +WDTCON 00000FD1 +WR 00000001 +WREG 00000FE8 +WREN 00000002 +WRERR 00000003 +WRITE_BLOCK 000000A2 +WRITE_WORD_TO_HREGS 00000390 +WUE 00000001 +YEAR 0000053E +YEARS 00000009 +Z 00000002 +_BOREN_NOSLP_2L 000000FD +_BOREN_OFF_2L 000000F9 +_BOREN_ON_2L 000000FB +_BOREN_SBORDIS_2L 000000FF +_BORV_0_2L 000000E7 +_BORV_1_2L 000000EF +_BORV_2_2L 000000F7 +_BORV_3_2L 000000FF +_CCP2MX_PORTBE_3H 000000FE +_CCP2MX_PORTC_3H 000000FF +_CONFIG1H 00300001 +_CONFIG2H 00300003 +_CONFIG2L 00300002 +_CONFIG3H 00300005 +_CONFIG4L 00300006 +_CONFIG5H 00300009 +_CONFIG5L 00300008 +_CONFIG6H 0030000B +_CONFIG6L 0030000A +_CONFIG7H 0030000D +_CONFIG7L 0030000C +_CP0_OFF_5L 000000FF +_CP0_ON_5L 000000FE +_CP1_OFF_5L 000000FF +_CP1_ON_5L 000000FD +_CP2_OFF_5L 000000FF +_CP2_ON_5L 000000FB +_CP3_OFF_5L 000000FF +_CP3_ON_5L 000000F7 +_CPB_OFF_5H 000000FF +_CPB_ON_5H 000000BF +_CPD_OFF_5H 000000FF +_CPD_ON_5H 0000007F +_DEBUG_OFF_4L 000000FF +_DEBUG_ON_4L 0000007F +_DEVID1 003FFFFE + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 33 + + +SYMBOL TABLE + LABEL VALUE + +_DEVID2 003FFFFF +_EBTR0_OFF_7L 000000FF +_EBTR0_ON_7L 000000FE +_EBTR1_OFF_7L 000000FF +_EBTR1_ON_7L 000000FD +_EBTR2_OFF_7L 000000FF +_EBTR2_ON_7L 000000FB +_EBTR3_OFF_7L 000000FF +_EBTR3_ON_7L 000000F7 +_EBTRB_OFF_7H 000000FF +_EBTRB_ON_7H 000000BF +_FCMEN_OFF_1H 000000BF +_FCMEN_ON_1H 000000FF +_IDLOC0 00200000 +_IDLOC1 00200001 +_IDLOC2 00200002 +_IDLOC3 00200003 +_IDLOC4 00200004 +_IDLOC5 00200005 +_IDLOC6 00200006 +_IDLOC7 00200007 +_IESO_OFF_1H 0000007F +_IESO_ON_1H 000000FF +_LPT1OSC_OFF_3H 000000FB +_LPT1OSC_ON_3H 000000FF +_LVP_OFF_4L 000000FB +_LVP_ON_4L 000000FF +_MCLRE_OFF_3H 0000007F +_MCLRE_ON_3H 000000FF +_OSC_ECIO6_1H 000000F5 +_OSC_EC_1H 000000F4 +_OSC_HSPLL_1H 000000F6 +_OSC_HS_1H 000000F2 +_OSC_INTIO67_1H 000000F8 +_OSC_INTIO7_1H 000000F9 +_OSC_LP_1H 000000F0 +_OSC_RCIO6_1H 000000F7 +_OSC_RC_1H 000000F3 +_OSC_XT_1H 000000F1 +_PBADEN_OFF_3H 000000FD +_PBADEN_ON_3H 000000FF +_PWRT_OFF_2L 000000FF +_PWRT_ON_2L 000000FE +_STVREN_OFF_4L 000000FE +_STVREN_ON_4L 000000FF +_WDTPS_1024_2H 000000F5 +_WDTPS_128_2H 000000EF +_WDTPS_16384_2H 000000FD +_WDTPS_16_2H 000000E9 +_WDTPS_1_2H 000000E1 +_WDTPS_2048_2H 000000F7 +_WDTPS_256_2H 000000F1 +_WDTPS_2_2H 000000E3 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 34 + + +SYMBOL TABLE + LABEL VALUE + +_WDTPS_32768_2H 000000FF +_WDTPS_32_2H 000000EB +_WDTPS_4096_2H 000000F9 +_WDTPS_4_2H 000000E5 +_WDTPS_512_2H 000000F3 +_WDTPS_64_2H 000000ED +_WDTPS_8192_2H 000000FB +_WDTPS_8_2H 000000E7 +_WDT_OFF_2H 000000FE +_WDT_ON_2H 000000FF +_WRT0_OFF_6L 000000FF +_WRT0_ON_6L 000000FE +_WRT1_OFF_6L 000000FF +_WRT1_ON_6L 000000FD +_WRT2_OFF_6L 000000FF +_WRT2_ON_6L 000000FB +_WRT3_OFF_6L 000000FF +_WRT3_ON_6L 000000F7 +_WRTB_OFF_6H 000000FF +_WRTB_ON_6H 000000BF +_WRTC_OFF_6H 000000FF +_WRTC_ON_6H 000000DF +_WRTD_OFF_6H 000000FF +_WRTD_ON_6H 0000007F +_XINST_OFF_4L 000000BF +_XINST_ON_4L 000000FF +__18F4520 00000001 +free 00000040 + +Errors : 0 +Warnings : 0 reported, 0 suppressed +Messages : 0 reported, 0 suppressed + + \ No newline at end of file diff --git a/BaS_codewarrior/FireBee/MLAB/firebee1/firebee1.map b/BaS_codewarrior/FireBee/MLAB/firebee1/firebee1.map new file mode 100644 index 0000000..678b3b3 --- /dev/null +++ b/BaS_codewarrior/FireBee/MLAB/firebee1/firebee1.map @@ -0,0 +1,188 @@ +MPLINK 4.35, Linker +Linker Map File - Created Fri Oct 01 13:06:43 2010 + + Section Info + Section Type Address Location Size(Bytes) + --------- --------- --------- --------- --------- + Reset_Vector code 0x000000 program 0x000002 + .cinit romdata 0x000002 program 0x000002 + HIGH_INT_VEC code 0x000008 program 0x000004 + LOW_INT_VEC code 0x000018 program 0x00004a + .code code 0x000100 program 0x00046c + + + + Program Memory Usage + Start End + --------- --------- + 0x000000 0x000003 + 0x000008 0x00000b + 0x000018 0x000061 + 0x000100 0x00056b + 1214 out of 33048 program addresses used, program memory utilization is 3% + + + + Symbols - Sorted by Name + Name Address Location Storage File + --------- --------- --------- --------- --------- + AD_ISR 0x00044c program static C:\FireBee\MLAB\firebee1\firebee1.asm + FEB 0x000526 program static C:\FireBee\MLAB\firebee1\firebee1.asm + HLVD_ISR 0x000424 program static C:\FireBee\MLAB\firebee1\firebee1.asm + HLVD_LE 0x00043c program static C:\FireBee\MLAB\firebee1\firebee1.asm + INT_HANDLER 0x000018 program static C:\FireBee\MLAB\firebee1\firebee1.asm + KALT_START 0x000100 program static C:\FireBee\MLAB\firebee1\firebee1.asm + LADESTROM 0x0001d2 program static C:\FireBee\MLAB\firebee1\firebee1.asm + LS_OFF_POWER 0x0001da program static C:\FireBee\MLAB\firebee1\firebee1.asm + LS_ON_POWER 0x0001d6 program static C:\FireBee\MLAB\firebee1\firebee1.asm + MAIN 0x00019e program static C:\FireBee\MLAB\firebee1\firebee1.asm + MAIN2 0x0001ae program static C:\FireBee\MLAB\firebee1\firebee1.asm + MEHR_ALS_28_TAGE 0x000520 program static C:\FireBee\MLAB\firebee1\firebee1.asm + MEHR_ALS_30_TAGE 0x00054c program static C:\FireBee\MLAB\firebee1\firebee1.asm + MINUTEN 0x0004fa program static C:\FireBee\MLAB\firebee1\firebee1.asm + NEXT_MONTH 0x000532 program static C:\FireBee\MLAB\firebee1\firebee1.asm + NON_SYNC 0x0003d2 program static C:\FireBee\MLAB\firebee1\firebee1.asm + NOT_APRIL 0x000554 program static C:\FireBee\MLAB\firebee1\firebee1.asm + NOT_FEB 0x000546 program static C:\FireBee\MLAB\firebee1\firebee1.asm + NOT_JUNI 0x00055c program static C:\FireBee\MLAB\firebee1\firebee1.asm + NOT_SEP 0x000564 program static C:\FireBee\MLAB\firebee1\firebee1.asm + NO_PROG 0x0003ac program static C:\FireBee\MLAB\firebee1\firebee1.asm + PINGS 0x000486 program static C:\FireBee\MLAB\firebee1\firebee1.asm + PINGS2 0x0004aa program static C:\FireBee\MLAB\firebee1\firebee1.asm + PINGW 0x000498 program static C:\FireBee\MLAB\firebee1\firebee1.asm + POWER_AUS 0x0001c2 program static C:\FireBee\MLAB\firebee1\firebee1.asm + POWER_EIN 0x0001b4 program static C:\FireBee\MLAB\firebee1\firebee1.asm + POWER_OFF_I 0x00046a program static C:\FireBee\MLAB\firebee1\firebee1.asm + POWER_OFF_I2 0x000478 program static C:\FireBee\MLAB\firebee1\firebee1.asm + PROGRAM_MEMORY 0x00039a program static C:\FireBee\MLAB\firebee1\firebee1.asm + RESETEN 0x000256 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RTC_ISR 0x000450 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR 0x000288 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR1 0x0002a4 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR2 0x0002b0 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR3 0x0002c8 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR4 0x0002f6 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR5 0x000304 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR6 0x000312 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR7 0x000350 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR8 0x0003b0 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR9 0x0003bc program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_RB3B2 0x000334 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_RB3BOK 0x000322 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_SYNC2 0x0003d8 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_SYNC3 0x0003ea program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_SYNC4 0x0003fc program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_SYNC_START 0x0003c0 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_WAIT1 0x000408 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_WAIT2 0x000410 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_WAIT3 0x000418 program static C:\FireBee\MLAB\firebee1\firebee1.asm + SCHALTJAHR 0x00052c program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEKUNDEN 0x0004b0 program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEK_2 0x0004ca program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEK_3 0x0004dc program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEK_4 0x0004f0 program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEK_NPA 0x0004c4 program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEND_RTC_REG 0x000232 program static C:\FireBee\MLAB\firebee1\firebee1.asm + SERIAL_OFF 0x0001de program static C:\FireBee\MLAB\firebee1\firebee1.asm + SERIAL_ON 0x0001ea program static C:\FireBee\MLAB\firebee1\firebee1.asm + STUNDEN 0x000504 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TAGE_UND_TAG_DER_WOCHE 0x00050e program static C:\FireBee\MLAB\firebee1\firebee1.asm + TASTE 0x000208 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_END 0x000250 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_JA 0x000222 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_OFF_POWER 0x000248 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_ON_POWER 0x00022c program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_ON_POWER2 0x000238 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_ON_POWER3 0x00023e program static C:\FireBee\MLAB\firebee1\firebee1.asm + TX_ISR 0x00025e program static C:\FireBee\MLAB\firebee1\firebee1.asm + TX_ISR1 0x000276 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TX_ISR2 0x000286 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TX_ISR_FERTIG 0x00026e program static C:\FireBee\MLAB\firebee1\firebee1.asm + WAIT_LVDOK 0x000434 program static C:\FireBee\MLAB\firebee1\firebee1.asm + WARTEN 0x0001a8 program static C:\FireBee\MLAB\firebee1\firebee1.asm + WRITE_WORD_TO_HREGS 0x000390 program static C:\FireBee\MLAB\firebee1\firebee1.asm + YEAR 0x00053e program static C:\FireBee\MLAB\firebee1\firebee1.asm + + + + Symbols - Sorted by Address + Name Address Location Storage File + --------- --------- --------- --------- --------- + INT_HANDLER 0x000018 program static C:\FireBee\MLAB\firebee1\firebee1.asm + KALT_START 0x000100 program static C:\FireBee\MLAB\firebee1\firebee1.asm + MAIN 0x00019e program static C:\FireBee\MLAB\firebee1\firebee1.asm + WARTEN 0x0001a8 program static C:\FireBee\MLAB\firebee1\firebee1.asm + MAIN2 0x0001ae program static C:\FireBee\MLAB\firebee1\firebee1.asm + POWER_EIN 0x0001b4 program static C:\FireBee\MLAB\firebee1\firebee1.asm + POWER_AUS 0x0001c2 program static C:\FireBee\MLAB\firebee1\firebee1.asm + LADESTROM 0x0001d2 program static C:\FireBee\MLAB\firebee1\firebee1.asm + LS_ON_POWER 0x0001d6 program static C:\FireBee\MLAB\firebee1\firebee1.asm + LS_OFF_POWER 0x0001da program static C:\FireBee\MLAB\firebee1\firebee1.asm + SERIAL_OFF 0x0001de program static C:\FireBee\MLAB\firebee1\firebee1.asm + SERIAL_ON 0x0001ea program static C:\FireBee\MLAB\firebee1\firebee1.asm + TASTE 0x000208 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_JA 0x000222 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_ON_POWER 0x00022c program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEND_RTC_REG 0x000232 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_ON_POWER2 0x000238 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_ON_POWER3 0x00023e program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_OFF_POWER 0x000248 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_END 0x000250 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RESETEN 0x000256 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TX_ISR 0x00025e program static C:\FireBee\MLAB\firebee1\firebee1.asm + TX_ISR_FERTIG 0x00026e program static C:\FireBee\MLAB\firebee1\firebee1.asm + TX_ISR1 0x000276 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TX_ISR2 0x000286 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR 0x000288 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR1 0x0002a4 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR2 0x0002b0 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR3 0x0002c8 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR4 0x0002f6 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR5 0x000304 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR6 0x000312 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_RB3BOK 0x000322 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_RB3B2 0x000334 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR7 0x000350 program static C:\FireBee\MLAB\firebee1\firebee1.asm + WRITE_WORD_TO_HREGS 0x000390 program static C:\FireBee\MLAB\firebee1\firebee1.asm + PROGRAM_MEMORY 0x00039a program static C:\FireBee\MLAB\firebee1\firebee1.asm + NO_PROG 0x0003ac program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR8 0x0003b0 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR9 0x0003bc program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_SYNC_START 0x0003c0 program static C:\FireBee\MLAB\firebee1\firebee1.asm + NON_SYNC 0x0003d2 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_SYNC2 0x0003d8 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_SYNC3 0x0003ea program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_SYNC4 0x0003fc program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_WAIT1 0x000408 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_WAIT2 0x000410 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_WAIT3 0x000418 program static C:\FireBee\MLAB\firebee1\firebee1.asm + HLVD_ISR 0x000424 program static C:\FireBee\MLAB\firebee1\firebee1.asm + WAIT_LVDOK 0x000434 program static C:\FireBee\MLAB\firebee1\firebee1.asm + HLVD_LE 0x00043c program static C:\FireBee\MLAB\firebee1\firebee1.asm + AD_ISR 0x00044c program static C:\FireBee\MLAB\firebee1\firebee1.asm + RTC_ISR 0x000450 program static C:\FireBee\MLAB\firebee1\firebee1.asm + POWER_OFF_I 0x00046a program static C:\FireBee\MLAB\firebee1\firebee1.asm + POWER_OFF_I2 0x000478 program static C:\FireBee\MLAB\firebee1\firebee1.asm + PINGS 0x000486 program static C:\FireBee\MLAB\firebee1\firebee1.asm + PINGW 0x000498 program static C:\FireBee\MLAB\firebee1\firebee1.asm + PINGS2 0x0004aa program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEKUNDEN 0x0004b0 program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEK_NPA 0x0004c4 program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEK_2 0x0004ca program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEK_3 0x0004dc program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEK_4 0x0004f0 program static C:\FireBee\MLAB\firebee1\firebee1.asm + MINUTEN 0x0004fa program static C:\FireBee\MLAB\firebee1\firebee1.asm + STUNDEN 0x000504 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TAGE_UND_TAG_DER_WOCHE 0x00050e program static C:\FireBee\MLAB\firebee1\firebee1.asm + MEHR_ALS_28_TAGE 0x000520 program static C:\FireBee\MLAB\firebee1\firebee1.asm + FEB 0x000526 program static C:\FireBee\MLAB\firebee1\firebee1.asm + SCHALTJAHR 0x00052c program static C:\FireBee\MLAB\firebee1\firebee1.asm + NEXT_MONTH 0x000532 program static C:\FireBee\MLAB\firebee1\firebee1.asm + YEAR 0x00053e program static C:\FireBee\MLAB\firebee1\firebee1.asm + NOT_FEB 0x000546 program static C:\FireBee\MLAB\firebee1\firebee1.asm + MEHR_ALS_30_TAGE 0x00054c program static C:\FireBee\MLAB\firebee1\firebee1.asm + NOT_APRIL 0x000554 program static C:\FireBee\MLAB\firebee1\firebee1.asm + NOT_JUNI 0x00055c program static C:\FireBee\MLAB\firebee1\firebee1.asm + NOT_SEP 0x000564 program static C:\FireBee\MLAB\firebee1\firebee1.asm + + diff --git a/BaS_codewarrior/FireBee/MLAB/firebee1/firebee1.mcp b/BaS_codewarrior/FireBee/MLAB/firebee1/firebee1.mcp new file mode 100644 index 0000000..45e7dcc --- /dev/null +++ b/BaS_codewarrior/FireBee/MLAB/firebee1/firebee1.mcp @@ -0,0 +1,53 @@ +[HEADER] +magic_cookie={66E99B07-E706-4689-9E80-9B2582898A13} +file_version=1.0 +device=PIC18F4520 +[PATH_INFO] +BuildDirPolicy=BuildDirIsProjectDir +dir_src= +dir_bin= +dir_tmp= +dir_sin= +dir_inc= +dir_lib= +dir_lkr= +[CAT_FILTERS] +filter_src=*.asm +filter_inc=*.h;*.inc +filter_obj=*.o +filter_lib=*.lib +filter_lkr=*.lkr +[CAT_SUBFOLDERS] +subfolder_src= +subfolder_inc= +subfolder_obj= +subfolder_lib= +subfolder_lkr= +[FILE_SUBFOLDERS] +file_000=. +file_001=. +[GENERATED_FILES] +file_000=no +file_001=no +[OTHER_FILES] +file_000=no +file_001=no +[FILE_INFO] +file_000=firebee1.asm +file_001=C:\Program Files (x86)\Microchip\MPASM Suite\LKR\18f4520_g.lkr +[SUITE_INFO] +suite_guid={6B3DAA78-59C1-46DD-B6AA-DBDAE4E06484} +suite_state= +[TOOL_SETTINGS] +TS{DD2213A8-6310-47B1-8376-9430CDFC013F}= +TS{BFD27FBA-4A02-4C0E-A5E5-B812F3E7707C}=/o"$(BINDIR_)$(TARGETBASE).cof" /M"$(BINDIR_)$(TARGETBASE).map" /W +TS{ADE93A55-C7C7-4D4D-A4BA-59305F7D0391}= +[INSTRUMENTED_TRACE] +enable=0 +transport=0 +format=0 +[CUSTOM_BUILD] +Pre-Build= +Pre-BuildEnabled=1 +Post-Build= +Post-BuildEnabled=1 diff --git a/BaS_codewarrior/FireBee/MLAB/firebee1/firebee1.mcs b/BaS_codewarrior/FireBee/MLAB/firebee1/firebee1.mcs new file mode 100644 index 0000000..242fa7b --- /dev/null +++ b/BaS_codewarrior/FireBee/MLAB/firebee1/firebee1.mcs @@ -0,0 +1,71 @@ +[Header] +MagicCookie={0b13fe8c-dfe0-40eb-8900-6712719559a7} +Version=1.0 +[File000] +Location=C:\FireBee\MLAB\firebee1\firebee1.o +Folder=Intermediary +DeviceName=PIC18F4520 +LanguageToolSuiteID={6B3DAA78-59C1-46DD-B6AA-DBDAE4E06484} +LanguageToolID={49D3CA3F-D9A3-4518-9943-226A347E8CC7} +LanguageToolLocation=C:\Program Files (x86)\Microchip\MPASM Suite\MPASMWIN.exe +PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)||$(INCDIR)||$(LIBDIR)||$(LKRDIR)|| +SOLK=|firebee1.asm|||||||C:\Program Files (x86)\Microchip\MPASM Suite\LKR\18f4520_g.lkr|| +SuiteArgsString= +ToolArgsString= +TraceCmdString= +DebugOptions= +[File001] +Location=C:\FireBee\MLAB\firebee1\firebee1.err +Folder=Intermediary +DeviceName=PIC18F4520 +LanguageToolSuiteID={6B3DAA78-59C1-46DD-B6AA-DBDAE4E06484} +LanguageToolID={49D3CA3F-D9A3-4518-9943-226A347E8CC7} +LanguageToolLocation=C:\Program Files (x86)\Microchip\MPASM Suite\MPASMWIN.exe +PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)||$(INCDIR)||$(LIBDIR)||$(LKRDIR)|| +SOLK=|firebee1.asm|||||||C:\Program Files (x86)\Microchip\MPASM Suite\LKR\18f4520_g.lkr|| +SuiteArgsString= +ToolArgsString= +TraceCmdString= +DebugOptions= +[File002] +Location=C:\FireBee\MLAB\firebee1\firebee1.lst +Folder=Output +DeviceName=PIC18F4520 +LanguageToolSuiteID={6B3DAA78-59C1-46DD-B6AA-DBDAE4E06484} +LanguageToolID={49D3CA3F-D9A3-4518-9943-226A347E8CC7} +LanguageToolLocation=C:\Program Files (x86)\Microchip\MPASM Suite\MPASMWIN.exe +PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)||$(INCDIR)||$(LIBDIR)||$(LKRDIR)|| +SOLK=|firebee1.asm|||||||C:\Program Files (x86)\Microchip\MPASM Suite\LKR\18f4520_g.lkr|| +SuiteArgsString= +ToolArgsString= +TraceCmdString= +DebugOptions= +[File003] +Location=C:\FireBee\MLAB\firebee1\firebee1.cof +Folder=Output +DeviceName=PIC18F4520 +LanguageToolSuiteID={6B3DAA78-59C1-46DD-B6AA-DBDAE4E06484} +LanguageToolID={96C98149-AA1B-4CF9-B967-FAE79CAB663C} +LanguageToolLocation=C:\Program Files (x86)\Microchip\MPASM Suite\mplink.exe +PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)||$(INCDIR)||$(LIBDIR)||$(LKRDIR)|| +SOLK=|firebee1.asm|||||||C:\Program Files (x86)\Microchip\MPASM Suite\LKR\18f4520_g.lkr|| +SuiteArgsString= +ToolArgsString=/o"$(BINDIR_)$(TARGETBASE).cof" /M"$(BINDIR_)$(TARGETBASE).map" /W +TraceCmdString= +DebugOptions= +[File004] +Location=C:\FireBee\MLAB\firebee1\firebee1.hex +Folder=Output +DeviceName=PIC18F4520 +LanguageToolSuiteID={6B3DAA78-59C1-46DD-B6AA-DBDAE4E06484} +LanguageToolID={96C98149-AA1B-4CF9-B967-FAE79CAB663C} +LanguageToolLocation=C:\Program Files (x86)\Microchip\MPASM Suite\mplink.exe +PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)||$(INCDIR)||$(LIBDIR)||$(LKRDIR)|| +SOLK=|firebee1.asm|||||||C:\Program Files (x86)\Microchip\MPASM Suite\LKR\18f4520_g.lkr|| +SuiteArgsString= +ToolArgsString=/o"$(BINDIR_)$(TARGETBASE).cof" /M"$(BINDIR_)$(TARGETBASE).map" /W +TraceCmdString= +DebugOptions= +[TOOL_LOC_STAMPS] +tool_loc{49D3CA3F-D9A3-4518-9943-226A347E8CC7}=C:\Program Files (x86)\Microchip\MPASM Suite\MPASMWIN.exe +tool_loc{96C98149-AA1B-4CF9-B967-FAE79CAB663C}=C:\Program Files (x86)\Microchip\MPASM Suite\mplink.exe diff --git a/BaS_codewarrior/FireBee/MLAB/firebee1/firebee1.mcw b/BaS_codewarrior/FireBee/MLAB/firebee1/firebee1.mcw new file mode 100644 index 0000000000000000000000000000000000000000..74deeebf5b6100924ee5ebf2631438d976dfbda0 GIT binary patch literal 33280 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 K{(aW(kNyXv-`UOp literal 0 HcmV?d00001 diff --git a/BaS_codewarrior/FireBee/MLAB/firebee1/firebeei1.map b/BaS_codewarrior/FireBee/MLAB/firebee1/firebeei1.map new file mode 100644 index 0000000..e12b3b5 --- /dev/null +++ b/BaS_codewarrior/FireBee/MLAB/firebee1/firebeei1.map @@ -0,0 +1,156 @@ +MPLINK 4.33, Linker +Linker Map File - Created Mon Jan 11 14:35:58 2010 + + Section Info + Section Type Address Location Size(Bytes) + --------- --------- --------- --------- --------- + Reset_Vector code 0x000000 program 0x000004 + .cinit romdata 0x000004 program 0x000002 + LOW_INT_VEC code 0x000018 program 0x00004a + .code code 0x000100 program 0x00033c + + + + Program Memory Usage + Start End + --------- --------- + 0x000000 0x000005 + 0x000018 0x000061 + 0x000100 0x00043b + 908 out of 33048 program addresses used, program memory utilization is 2% + + + + Symbols - Sorted by Name + Name Address Location Storage File + --------- --------- --------- --------- --------- + AD_ISR 0x000326 program static C:\firebee\MLAB\firebee1\firebee1.asm + FEB 0x0003ee program static C:\firebee\MLAB\firebee1\firebee1.asm + HLVD_ISR 0x000300 program static C:\firebee\MLAB\firebee1\firebee1.asm + HLVD_LE 0x00031a program static C:\firebee\MLAB\firebee1\firebee1.asm + INT_HANDLER 0x00001e program static C:\firebee\MLAB\firebee1\firebee1.asm + INT_HANDLER2 0x00002e program static C:\firebee\MLAB\firebee1\firebee1.asm + KALT_START 0x000100 program static C:\firebee\MLAB\firebee1\firebee1.asm + LADESTROM 0x0001d2 program static C:\firebee\MLAB\firebee1\firebee1.asm + LS_OFF_POWER 0x0001de program static C:\firebee\MLAB\firebee1\firebee1.asm + LS_ON_POWER 0x0001d8 program static C:\firebee\MLAB\firebee1\firebee1.asm + MAIN 0x00019e program static C:\firebee\MLAB\firebee1\firebee1.asm + MEHR_ALS_28_TAGE 0x0003e6 program static C:\firebee\MLAB\firebee1\firebee1.asm + MEHR_ALS_30_TAGE 0x000414 program static C:\firebee\MLAB\firebee1\firebee1.asm + MINUTEN 0x0003c0 program static C:\firebee\MLAB\firebee1\firebee1.asm + NEXT_MONTH 0x0003fa program static C:\firebee\MLAB\firebee1\firebee1.asm + NON_SYNC 0x0002ae program static C:\firebee\MLAB\firebee1\firebee1.asm + NOT_APRIL 0x00041e program static C:\firebee\MLAB\firebee1\firebee1.asm + NOT_FEB 0x00040e program static C:\firebee\MLAB\firebee1\firebee1.asm + NOT_JUNI 0x000428 program static C:\firebee\MLAB\firebee1\firebee1.asm + NOT_SEP 0x000432 program static C:\firebee\MLAB\firebee1\firebee1.asm + PINGS 0x000368 program static C:\firebee\MLAB\firebee1\firebee1.asm + PINGS2 0x000380 program static C:\firebee\MLAB\firebee1\firebee1.asm + POWER_AUS 0x0001c0 program static C:\firebee\MLAB\firebee1\firebee1.asm + POWER_EIN 0x0001a6 program static C:\firebee\MLAB\firebee1\firebee1.asm + POWER_OFF_I 0x000346 program static C:\firebee\MLAB\firebee1\firebee1.asm + POWER_OFF_I2 0x000356 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_ISR 0x000256 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_ISR1 0x000268 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_ISR2 0x000274 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_RFM 0x000290 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_RRFP 0x000280 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_SYNC2 0x0002b4 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_SYNC3 0x0002c6 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_SYNC4 0x0002d8 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_SYNC_START 0x00029c program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_UNBEK 0x00027c program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_WAIT1 0x0002e4 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_WAIT2 0x0002ec program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_WAIT3 0x0002f4 program static C:\firebee\MLAB\firebee1\firebee1.asm + RESETEN 0x000232 program static C:\firebee\MLAB\firebee1\firebee1.asm + RTC_ISR 0x000326 program static C:\firebee\MLAB\firebee1\firebee1.asm + SCHALTJAHR 0x0003f4 program static C:\firebee\MLAB\firebee1\firebee1.asm + SEKUNDEN 0x000386 program static C:\firebee\MLAB\firebee1\firebee1.asm + SEK_2 0x0003ac program static C:\firebee\MLAB\firebee1\firebee1.asm + SEK_NPA 0x00039c program static C:\firebee\MLAB\firebee1\firebee1.asm + SEND_RTC_REG 0x00020c program static C:\firebee\MLAB\firebee1\firebee1.asm + STUNDEN 0x0003ca program static C:\firebee\MLAB\firebee1\firebee1.asm + TAGE_UND_TAG_DER_WOCHE 0x0003d4 program static C:\firebee\MLAB\firebee1\firebee1.asm + TASTE 0x0001e4 program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_END 0x00022c program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_JA 0x0001fa program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_OFF_POWER 0x000224 program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_ON_POWER 0x000206 program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_ON_POWER2 0x000212 program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_ON_POWER3 0x000218 program static C:\firebee\MLAB\firebee1\firebee1.asm + TX_ISR 0x00023c program static C:\firebee\MLAB\firebee1\firebee1.asm + TX_ISR1 0x000254 program static C:\firebee\MLAB\firebee1\firebee1.asm + TX_ISR_FERTIG 0x00024c program static C:\firebee\MLAB\firebee1\firebee1.asm + WAIT_LVDOK 0x000312 program static C:\firebee\MLAB\firebee1\firebee1.asm + WARTEN 0x0001a0 program static C:\firebee\MLAB\firebee1\firebee1.asm + YEAR 0x000406 program static C:\firebee\MLAB\firebee1\firebee1.asm + + + + Symbols - Sorted by Address + Name Address Location Storage File + --------- --------- --------- --------- --------- + INT_HANDLER 0x00001e program static C:\firebee\MLAB\firebee1\firebee1.asm + INT_HANDLER2 0x00002e program static C:\firebee\MLAB\firebee1\firebee1.asm + KALT_START 0x000100 program static C:\firebee\MLAB\firebee1\firebee1.asm + MAIN 0x00019e program static C:\firebee\MLAB\firebee1\firebee1.asm + WARTEN 0x0001a0 program static C:\firebee\MLAB\firebee1\firebee1.asm + POWER_EIN 0x0001a6 program static C:\firebee\MLAB\firebee1\firebee1.asm + POWER_AUS 0x0001c0 program static C:\firebee\MLAB\firebee1\firebee1.asm + LADESTROM 0x0001d2 program static C:\firebee\MLAB\firebee1\firebee1.asm + LS_ON_POWER 0x0001d8 program static C:\firebee\MLAB\firebee1\firebee1.asm + LS_OFF_POWER 0x0001de program static C:\firebee\MLAB\firebee1\firebee1.asm + TASTE 0x0001e4 program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_JA 0x0001fa program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_ON_POWER 0x000206 program static C:\firebee\MLAB\firebee1\firebee1.asm + SEND_RTC_REG 0x00020c program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_ON_POWER2 0x000212 program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_ON_POWER3 0x000218 program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_OFF_POWER 0x000224 program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_END 0x00022c program static C:\firebee\MLAB\firebee1\firebee1.asm + RESETEN 0x000232 program static C:\firebee\MLAB\firebee1\firebee1.asm + TX_ISR 0x00023c program static C:\firebee\MLAB\firebee1\firebee1.asm + TX_ISR_FERTIG 0x00024c program static C:\firebee\MLAB\firebee1\firebee1.asm + TX_ISR1 0x000254 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_ISR 0x000256 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_ISR1 0x000268 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_ISR2 0x000274 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_UNBEK 0x00027c program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_RRFP 0x000280 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_RFM 0x000290 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_SYNC_START 0x00029c program static C:\firebee\MLAB\firebee1\firebee1.asm + NON_SYNC 0x0002ae program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_SYNC2 0x0002b4 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_SYNC3 0x0002c6 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_SYNC4 0x0002d8 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_WAIT1 0x0002e4 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_WAIT2 0x0002ec program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_WAIT3 0x0002f4 program static C:\firebee\MLAB\firebee1\firebee1.asm + HLVD_ISR 0x000300 program static C:\firebee\MLAB\firebee1\firebee1.asm + WAIT_LVDOK 0x000312 program static C:\firebee\MLAB\firebee1\firebee1.asm + HLVD_LE 0x00031a program static C:\firebee\MLAB\firebee1\firebee1.asm + RTC_ISR 0x000326 program static C:\firebee\MLAB\firebee1\firebee1.asm + AD_ISR 0x000326 program static C:\firebee\MLAB\firebee1\firebee1.asm + POWER_OFF_I 0x000346 program static C:\firebee\MLAB\firebee1\firebee1.asm + POWER_OFF_I2 0x000356 program static C:\firebee\MLAB\firebee1\firebee1.asm + PINGS 0x000368 program static C:\firebee\MLAB\firebee1\firebee1.asm + PINGS2 0x000380 program static C:\firebee\MLAB\firebee1\firebee1.asm + SEKUNDEN 0x000386 program static C:\firebee\MLAB\firebee1\firebee1.asm + SEK_NPA 0x00039c program static C:\firebee\MLAB\firebee1\firebee1.asm + SEK_2 0x0003ac program static C:\firebee\MLAB\firebee1\firebee1.asm + MINUTEN 0x0003c0 program static C:\firebee\MLAB\firebee1\firebee1.asm + STUNDEN 0x0003ca program static C:\firebee\MLAB\firebee1\firebee1.asm + TAGE_UND_TAG_DER_WOCHE 0x0003d4 program static C:\firebee\MLAB\firebee1\firebee1.asm + MEHR_ALS_28_TAGE 0x0003e6 program static C:\firebee\MLAB\firebee1\firebee1.asm + FEB 0x0003ee program static C:\firebee\MLAB\firebee1\firebee1.asm + SCHALTJAHR 0x0003f4 program static C:\firebee\MLAB\firebee1\firebee1.asm + NEXT_MONTH 0x0003fa program static C:\firebee\MLAB\firebee1\firebee1.asm + YEAR 0x000406 program static C:\firebee\MLAB\firebee1\firebee1.asm + NOT_FEB 0x00040e program static C:\firebee\MLAB\firebee1\firebee1.asm + MEHR_ALS_30_TAGE 0x000414 program static C:\firebee\MLAB\firebee1\firebee1.asm + NOT_APRIL 0x00041e program static C:\firebee\MLAB\firebee1\firebee1.asm + NOT_JUNI 0x000428 program static C:\firebee\MLAB\firebee1\firebee1.asm + NOT_SEP 0x000432 program static C:\firebee\MLAB\firebee1\firebee1.asm + + diff --git a/BaS_codewarrior/FireBee/MLAB/firebee1/readme.txt b/BaS_codewarrior/FireBee/MLAB/firebee1/readme.txt new file mode 100644 index 0000000..4f5b8f3 --- /dev/null +++ b/BaS_codewarrior/FireBee/MLAB/firebee1/readme.txt @@ -0,0 +1,125 @@ + PS2 -> Atari /Amiga Mouse Adapter + ~~~~~~~~~~~~~~~~~~~~~~~ + + + Version 1.4 July 2010 + + +Due to the short supply of mice for the Atari computers I decided to build an adapter that would allow me to use a serial mouse on my Atari, but even these are getting a bit old now, so I got the soldering iron out again and here's the result. A PS2 Mouse adapter for the Atari. It supports a standard PS2 mouse with 2 or 3 buttons and can also be used with the Microsoft optical IntelliMouse that comes with a USB to PS2 adapter. The middle button on the PS2 mouse is used as a left click and hold function for easy selection. Click the middle button again to release. Now for the bad news, for some reason Microsoft mice don't support the middle button in standard PS2 mode. :-( + +Please don't shout at me all you Atari users but as an added feature if you change a link then the adapter can be used with an Amiga as well. + + +All files, programs etc contained in this archive are copright 2010 by Tom Kirk. Personal use is allowed but any commercial use is not allowed. Please feel free to use my work but don't rip me off. + + + + Files in this archive. + ~~~~~~~~~~~~~~~~~~~~~~ + +readme.txt This text file +circuit.bmp Picture of circuit in bitmap format +PS2Atari_v1_4.hex Object code of the PIC16F84 program in Intel hex +PS2Atari_v1_4.asm Source code of the PIC16F84 program +pcbtop.bmp Top layer of the PCB in bitmap format +pcbbot.bmp Bottom layer of the PCB in bitmap format + + + + Technical Details. + ~~~~~~~~~~~~~~~~~~ + +When the PS2 mouse is moved or a button changes state a packet of data is sent, my circuit decodes this data and then simulates the Atari mouse. + +The circuit consists of a single microcontroller that contains a program to do the conversion. The circuit is shown in the file circuit.bmp + +The microcontroller (PIC) can be either a PIC16C84 or PIC16F84 or PIC16F84A. + +The PIC (IC1) needs to be programmed with the program. +The program is supplied in two forms PS2Atari_v1_4.hex is an object code file in Intel hex and can be read by most programmers capable of programming the PIC + +PS2Atari_v1_4.asm is the source code of the program and can be assembled with the free MPLAB / MPASM software from Microchip if you wish to create your own object file. Note needs "Disable case sensitivity" under build options setting in MPLAB to assemble without errors. + +The PIC should be programmed with oscillator as XT, watchdog disabled, powerup timer enabled and code protection off. (No point code protecting a freely available program.) + +The source code and object code is compatible with all the PIC microcontrollers listed above. + +I've built mine using a printed circuit board but it's small enough to be built using a small piece of stripboard. + +On my PCB I have a 6 pin mini din socket at one end and a 9 pin D type socket at the other. I can then use a standard port extender lead to connect to the Atari. I've found that a 9 pin PC serial extension lead can also be used for this as well if you remove the fastening screws. + +If you decide to build one on a piece of stripboard it will be easier to use cable mounted sockets as PCB types don't fit onto a stripboard. + +Once built the board can be mounted into a small plastic box. + +No special software is required on the Atari and it will work with all software. +Your favourite mouse accelerator program may be used if required. + + + + Parts list. + ~~~~~~~~~~~ + +IC1 PIC16F84A or PIC16F84 or PIC16C84 + +Fi1 4 MHz Ceramic resonator + +R1 10K +R2 10K + +C1 4.7 uF +C2 0.1 uF + +All capacitors should be rated at 16V or more. + +CN1 6 pin mini din PCB mounting socket +CN2 9 Pin D type PCB mounting socket + + +JP1 3 pin header and 2 way link + + +If building on a piece of stripboard I suggest using cable mounting types of connectors and use a small piece of multicore cable between the sockets and the stripboard. You will find the PCB sockets do not fit on a piece of stripboard. + +If you don't need the switchable Atari/Amiga support forget the 3 pin header and just use a wire link instead. + + + + History. + ~~~~~~~~ + +Version 1.4 July 2010 +Unused Pin RA4 now correctly set as an imput. +(Pin is tied to +5V on PCB for easier PCB routing.) +My oversight when transfering from prototype to PCB. +Thanks to Luciano for informing me. + +Version 1.3 Released March 2010 +Corrected a bug in button routine preventing both buttons being active together under certain conditions. +Thanks to Oliver Fleischmann for informing me. +(Can't believe it taken 6 Years for this bug to show itself!!) + +Version 1.2 Released March 2009 +Changed left/right button outputs to fake open collector. +Needed to stop conflits when using a joystick pluged into other port. + +Version 1.1 Released September 2004. +Added support for the Amiga and added the middle button support. + +Version 1.0 Never released. +My original version for the Atari only. + + + + Help. + ~~~~~ + +If you need further information or help then contact me at tgkirk@aol.com + +Please allow a few days for a reply as I have other commitments as well. + + Tom Kirk July 2010 + +P.S. I also have on my web site a Playstation controller to Atari adapter and a PC viewer for Atari format picture files. + + http://www.tgkirk.110mb.com diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/asm-m68k/byteorder.h b/BaS_codewarrior/FireBee/trunk/usb/store/asm-m68k/byteorder.h new file mode 100644 index 0000000..3d4f13c --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/asm-m68k/byteorder.h @@ -0,0 +1,107 @@ +/* + * Copyright (C) 2004-2007 Freescale Semiconductor, Inc. + * TsiChung Liew (Tsi-Chung.Liew@freescale.com) + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#ifndef _M68K_BYTEORDER_H +#define _M68K_BYTEORDER_H + +#include "types.h" + +#ifdef __GNUC__ +#define __sw16(x) \ + ((__u16)( \ + (((__u16)(x) & (__u16)0x00ffU) << 8) | \ + (((__u16)(x) & (__u16)0xff00U) >> 8) )) +#define __sw32(x) \ + ((__u32)( \ + (((__u32)(x)) << 24) | \ + (((__u32)(x) & (__u32)0x0000ff00UL) << 8) | \ + (((__u32)(x) & (__u32)0x00ff0000UL) >> 8) | \ + (((__u32)(x)) >> 24) )) + +extern __inline__ unsigned ld_le16(const volatile unsigned short *addr) +{ + unsigned result = *addr; + return __sw16(result); +} + +extern __inline__ void st_le16(volatile unsigned short *addr, + const unsigned val) +{ + *addr = __sw16(val); +} + +extern __inline__ unsigned ld_le32(const volatile unsigned *addr) +{ + unsigned result = *addr; + return __sw32(result); +} + +extern __inline__ void st_le32(volatile unsigned *addr, const unsigned val) +{ + *addr = __sw32(val); +} + +#if 0 +/* alas, egcs sounds like it has a bug in this code that doesn't use the + inline asm correctly, and can cause file corruption. Until I hear that + it's fixed, I can live without the extra speed. I hope. */ +#if !(__GNUC__ >= 2 && __GNUC_MINOR__ >= 90) +#if 0 +# define __arch_swab16(x) ld_le16(&x) +# define __arch_swab32(x) ld_le32(&x) +#else +static __inline__ __attribute__ ((const)) +__u16 ___arch__swab16(__u16 value) +{ + return __sw16(value); +} + +static __inline__ __attribute__ ((const)) +__u32 ___arch__swab32(__u32 value) +{ + return __sw32(value); +} + +#define __arch__swab32(x) ___arch__swab32(x) +#define __arch__swab16(x) ___arch__swab16(x) +#endif /* 0 */ + +#endif + +/* The same, but returns converted value from the location pointer by addr. */ +#define __arch__swab16p(addr) ld_le16(addr) +#define __arch__swab32p(addr) ld_le32(addr) + +/* The same, but do the conversion in situ, ie. put the value back to addr. */ +#define __arch__swab16s(addr) st_le16(addr,*addr) +#define __arch__swab32s(addr) st_le32(addr,*addr) +#endif + +#endif /* __GNUC__ */ + +#if defined(__GNUC__) && !defined(__STRICT_ANSI__) +#define __BYTEORDER_HAS_U64__ +#endif +#include "byteorder/big_endian.h" + +#endif /* _M68K_BYTEORDER_H */ diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/asm-m68k/byteorder/big_endian.h b/BaS_codewarrior/FireBee/trunk/usb/store/asm-m68k/byteorder/big_endian.h new file mode 100644 index 0000000..fbdea2c --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/asm-m68k/byteorder/big_endian.h @@ -0,0 +1,69 @@ +#ifndef _LINUX_BYTEORDER_BIG_ENDIAN_H +#define _LINUX_BYTEORDER_BIG_ENDIAN_H + +#ifndef __BIG_ENDIAN +#define __BIG_ENDIAN 4321 +#endif +#ifndef __BIG_ENDIAN_BITFIELD +#define __BIG_ENDIAN_BITFIELD +#endif +#define __BYTE_ORDER __BIG_ENDIAN + +#include "swab.h" + +#define __constant_htonl(x) ((__u32)(x)) +#define __constant_ntohl(x) ((__u32)(x)) +#define __constant_htons(x) ((__u16)(x)) +#define __constant_ntohs(x) ((__u16)(x)) +#define __constant_cpu_to_le64(x) ___swab64((x)) +#define __constant_le64_to_cpu(x) ___swab64((x)) +#define __constant_cpu_to_le32(x) ___swab32((x)) +#define __constant_le32_to_cpu(x) ___swab32((x)) +#define __constant_cpu_to_le16(x) ___swab16((x)) +#define __constant_le16_to_cpu(x) ___swab16((x)) +#define __constant_cpu_to_be64(x) ((__u64)(x)) +#define __constant_be64_to_cpu(x) ((__u64)(x)) +#define __constant_cpu_to_be32(x) ((__u32)(x)) +#define __constant_be32_to_cpu(x) ((__u32)(x)) +#define __constant_cpu_to_be16(x) ((__u16)(x)) +#define __constant_be16_to_cpu(x) ((__u16)(x)) +#define __cpu_to_le64(x) __swab64((x)) +#define __le64_to_cpu(x) __swab64((x)) +#define __cpu_to_le32(x) __swab32((x)) +#define __le32_to_cpu(x) __swab32((x)) +#define __cpu_to_le16(x) __swab16((x)) +#define __le16_to_cpu(x) __swab16((x)) +#define __cpu_to_be64(x) ((__u64)(x)) +#define __be64_to_cpu(x) ((__u64)(x)) +#define __cpu_to_be32(x) ((__u32)(x)) +#define __be32_to_cpu(x) ((__u32)(x)) +#define __cpu_to_be16(x) ((__u16)(x)) +#define __be16_to_cpu(x) ((__u16)(x)) +#define __cpu_to_le64p(x) __swab64p((x)) +#define __le64_to_cpup(x) __swab64p((x)) +#define __cpu_to_le32p(x) __swab32p((x)) +#define __le32_to_cpup(x) __swab32p((x)) +#define __cpu_to_le16p(x) __swab16p((x)) +#define __le16_to_cpup(x) __swab16p((x)) +#define __cpu_to_be64p(x) (*(__u64*)(x)) +#define __be64_to_cpup(x) (*(__u64*)(x)) +#define __cpu_to_be32p(x) (*(__u32*)(x)) +#define __be32_to_cpup(x) (*(__u32*)(x)) +#define __cpu_to_be16p(x) (*(__u16*)(x)) +#define __be16_to_cpup(x) (*(__u16*)(x)) +#define __cpu_to_le64s(x) __swab64s((x)) +#define __le64_to_cpus(x) __swab64s((x)) +#define __cpu_to_le32s(x) __swab32s((x)) +#define __le32_to_cpus(x) __swab32s((x)) +#define __cpu_to_le16s(x) __swab16s((x)) +#define __le16_to_cpus(x) __swab16s((x)) +#define __cpu_to_be64s(x) do {} while (0) +#define __be64_to_cpus(x) do {} while (0) +#define __cpu_to_be32s(x) do {} while (0) +#define __be32_to_cpus(x) do {} while (0) +#define __cpu_to_be16s(x) do {} while (0) +#define __be16_to_cpus(x) do {} while (0) + +#include "generic.h" + +#endif /* _LINUX_BYTEORDER_BIG_ENDIAN_H */ diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/asm-m68k/byteorder/generic.h b/BaS_codewarrior/FireBee/trunk/usb/store/asm-m68k/byteorder/generic.h new file mode 100644 index 0000000..e3db5cc --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/asm-m68k/byteorder/generic.h @@ -0,0 +1,180 @@ +#ifndef _LINUX_BYTEORDER_GENERIC_H +#define _LINUX_BYTEORDER_GENERIC_H + +/* + * linux/byteorder_generic.h + * Generic Byte-reordering support + * + * Francois-Rene Rideau 19970707 + * gathered all the good ideas from all asm-foo/byteorder.h into one file, + * cleaned them up. + * I hope it is compliant with non-GCC compilers. + * I decided to put __BYTEORDER_HAS_U64__ in byteorder.h, + * because I wasn't sure it would be ok to put it in types.h + * Upgraded it to 2.1.43 + * Francois-Rene Rideau 19971012 + * Upgraded it to 2.1.57 + * to please Linus T., replaced huge #ifdef's between little/big endian + * by nestedly #include'd files. + * Francois-Rene Rideau 19971205 + * Made it to 2.1.71; now a facelift: + * Put files under include/linux/byteorder/ + * Split swab from generic support. + * + * TODO: + * = Regular kernel maintainers could also replace all these manual + * byteswap macros that remain, disseminated among drivers, + * after some grep or the sources... + * = Linus might want to rename all these macros and files to fit his taste, + * to fit his personal naming scheme. + * = it seems that a few drivers would also appreciate + * nybble swapping support... + * = every architecture could add their byteswap macro in asm/byteorder.h + * see how some architectures already do (i386, alpha, ppc, etc) + * = cpu_to_beXX and beXX_to_cpu might some day need to be well + * distinguished throughout the kernel. This is not the case currently, + * since little endian, big endian, and pdp endian machines needn't it. + * But this might be the case for, say, a port of Linux to 20/21 bit + * architectures (and F21 Linux addict around?). + */ + +/* + * The following macros are to be defined by : + * + * Conversion of long and short int between network and host format + * ntohl(__u32 x) + * ntohs(__u16 x) + * htonl(__u32 x) + * htons(__u16 x) + * It seems that some programs (which? where? or perhaps a standard? POSIX?) + * might like the above to be functions, not macros (why?). + * if that's true, then detect them, and take measures. + * Anyway, the measure is: define only ___ntohl as a macro instead, + * and in a separate file, have + * unsigned long inline ntohl(x){return ___ntohl(x);} + * + * The same for constant arguments + * __constant_ntohl(__u32 x) + * __constant_ntohs(__u16 x) + * __constant_htonl(__u32 x) + * __constant_htons(__u16 x) + * + * Conversion of XX-bit integers (16- 32- or 64-) + * between native CPU format and little/big endian format + * 64-bit stuff only defined for proper architectures + * cpu_to_[bl]eXX(__uXX x) + * [bl]eXX_to_cpu(__uXX x) + * + * The same, but takes a pointer to the value to convert + * cpu_to_[bl]eXXp(__uXX x) + * [bl]eXX_to_cpup(__uXX x) + * + * The same, but change in situ + * cpu_to_[bl]eXXs(__uXX x) + * [bl]eXX_to_cpus(__uXX x) + * + * See asm-foo/byteorder.h for examples of how to provide + * architecture-optimized versions + * + */ + + +//#if defined(__KERNEL__) +/* + * inside the kernel, we can use nicknames; + * outside of it, we must avoid POSIX namespace pollution... + */ +#define cpu_to_le64 __cpu_to_le64 +#define le64_to_cpu __le64_to_cpu +#define cpu_to_le32 __cpu_to_le32 +#define le32_to_cpu __le32_to_cpu +#define cpu_to_le16 __cpu_to_le16 +#define le16_to_cpu __le16_to_cpu +#define cpu_to_be64 __cpu_to_be64 +#define be64_to_cpu __be64_to_cpu +#define cpu_to_be32 __cpu_to_be32 +#define be32_to_cpu __be32_to_cpu +#define cpu_to_be16 __cpu_to_be16 +#define be16_to_cpu __be16_to_cpu +#define cpu_to_le64p __cpu_to_le64p +#define le64_to_cpup __le64_to_cpup +#define cpu_to_le32p __cpu_to_le32p +#define le32_to_cpup __le32_to_cpup +#define cpu_to_le16p __cpu_to_le16p +#define le16_to_cpup __le16_to_cpup +#define cpu_to_be64p __cpu_to_be64p +#define be64_to_cpup __be64_to_cpup +#define cpu_to_be32p __cpu_to_be32p +#define be32_to_cpup __be32_to_cpup +#define cpu_to_be16p __cpu_to_be16p +#define be16_to_cpup __be16_to_cpup +#define cpu_to_le64s __cpu_to_le64s +#define le64_to_cpus __le64_to_cpus +#define cpu_to_le32s __cpu_to_le32s +#define le32_to_cpus __le32_to_cpus +#define cpu_to_le16s __cpu_to_le16s +#define le16_to_cpus __le16_to_cpus +#define cpu_to_be64s __cpu_to_be64s +#define be64_to_cpus __be64_to_cpus +#define cpu_to_be32s __cpu_to_be32s +#define be32_to_cpus __be32_to_cpus +#define cpu_to_be16s __cpu_to_be16s +#define be16_to_cpus __be16_to_cpus +//#endif + + +/* + * Handle ntohl and suches. These have various compatibility + * issues - like we want to give the prototype even though we + * also have a macro for them in case some strange program + * wants to take the address of the thing or something.. + * + * Note that these used to return a "long" in libc5, even though + * long is often 64-bit these days.. Thus the casts. + * + * They have to be macros in order to do the constant folding + * correctly - if the argument passed into a inline function + * it is no longer constant according to gcc.. + */ + +#undef ntohl +#undef ntohs +#undef htonl +#undef htons + +/* + * Do the prototypes. Somebody might want to take the + * address or some such sick thing.. + */ +#if defined(__KERNEL__) || (defined (__GLIBC__) && __GLIBC__ >= 2) +extern __u32 ntohl(__u32); +extern __u32 htonl(__u32); +#else +extern unsigned long int ntohl(unsigned long int); +extern unsigned long int htonl(unsigned long int); +#endif +extern unsigned short int ntohs(unsigned short int); +extern unsigned short int htons(unsigned short int); + + +#if defined(__GNUC__) && (__GNUC__ >= 2) + +#define ___htonl(x) __cpu_to_be32(x) +#define ___htons(x) __cpu_to_be16(x) +#define ___ntohl(x) __be32_to_cpu(x) +#define ___ntohs(x) __be16_to_cpu(x) + +#if defined(__KERNEL__) || (defined (__GLIBC__) && __GLIBC__ >= 2) +#define htonl(x) ___htonl(x) +#define ntohl(x) ___ntohl(x) +#else +#define htonl(x) ((unsigned long)___htonl(x)) +#define ntohl(x) ((unsigned long)___ntohl(x)) +#endif +#define htons(x) ___htons(x) +#define ntohs(x) ___ntohs(x) + +#endif /* OPTIMIZE */ + + +#endif /* _LINUX_BYTEORDER_GENERIC_H */ diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/asm-m68k/byteorder/little_endian.h b/BaS_codewarrior/FireBee/trunk/usb/store/asm-m68k/byteorder/little_endian.h new file mode 100644 index 0000000..b6c67eb --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/asm-m68k/byteorder/little_endian.h @@ -0,0 +1,69 @@ +#ifndef _LINUX_BYTEORDER_LITTLE_ENDIAN_H +#define _LINUX_BYTEORDER_LITTLE_ENDIAN_H + +#ifndef __LITTLE_ENDIAN +#define __LITTLE_ENDIAN 1234 +#endif +#ifndef __LITTLE_ENDIAN_BITFIELD +#define __LITTLE_ENDIAN_BITFIELD +#endif +#define __BYTE_ORDER __LITTLE_ENDIAN + +#include "swab.h" + +#define __constant_htonl(x) ___constant_swab32((x)) +#define __constant_ntohl(x) ___constant_swab32((x)) +#define __constant_htons(x) ___constant_swab16((x)) +#define __constant_ntohs(x) ___constant_swab16((x)) +#define __constant_cpu_to_le64(x) ((__u64)(x)) +#define __constant_le64_to_cpu(x) ((__u64)(x)) +#define __constant_cpu_to_le32(x) ((__u32)(x)) +#define __constant_le32_to_cpu(x) ((__u32)(x)) +#define __constant_cpu_to_le16(x) ((__u16)(x)) +#define __constant_le16_to_cpu(x) ((__u16)(x)) +#define __constant_cpu_to_be64(x) ___constant_swab64((x)) +#define __constant_be64_to_cpu(x) ___constant_swab64((x)) +#define __constant_cpu_to_be32(x) ___constant_swab32((x)) +#define __constant_be32_to_cpu(x) ___constant_swab32((x)) +#define __constant_cpu_to_be16(x) ___constant_swab16((x)) +#define __constant_be16_to_cpu(x) ___constant_swab16((x)) +#define __cpu_to_le64(x) ((__u64)(x)) +#define __le64_to_cpu(x) ((__u64)(x)) +#define __cpu_to_le32(x) ((__u32)(x)) +#define __le32_to_cpu(x) ((__u32)(x)) +#define __cpu_to_le16(x) ((__u16)(x)) +#define __le16_to_cpu(x) ((__u16)(x)) +#define __cpu_to_be64(x) __swab64((x)) +#define __be64_to_cpu(x) __swab64((x)) +#define __cpu_to_be32(x) __swab32((x)) +#define __be32_to_cpu(x) __swab32((x)) +#define __cpu_to_be16(x) __swab16((x)) +#define __be16_to_cpu(x) __swab16((x)) +#define __cpu_to_le64p(x) (*(__u64*)(x)) +#define __le64_to_cpup(x) (*(__u64*)(x)) +#define __cpu_to_le32p(x) (*(__u32*)(x)) +#define __le32_to_cpup(x) (*(__u32*)(x)) +#define __cpu_to_le16p(x) (*(__u16*)(x)) +#define __le16_to_cpup(x) (*(__u16*)(x)) +#define __cpu_to_be64p(x) __swab64p((x)) +#define __be64_to_cpup(x) __swab64p((x)) +#define __cpu_to_be32p(x) __swab32p((x)) +#define __be32_to_cpup(x) __swab32p((x)) +#define __cpu_to_be16p(x) __swab16p((x)) +#define __be16_to_cpup(x) __swab16p((x)) +#define __cpu_to_le64s(x) do {} while (0) +#define __le64_to_cpus(x) do {} while (0) +#define __cpu_to_le32s(x) do {} while (0) +#define __le32_to_cpus(x) do {} while (0) +#define __cpu_to_le16s(x) do {} while (0) +#define __le16_to_cpus(x) do {} while (0) +#define __cpu_to_be64s(x) __swab64s((x)) +#define __be64_to_cpus(x) __swab64s((x)) +#define __cpu_to_be32s(x) __swab32s((x)) +#define __be32_to_cpus(x) __swab32s((x)) +#define __cpu_to_be16s(x) __swab16s((x)) +#define __be16_to_cpus(x) __swab16s((x)) + +#include "generic.h" + +#endif /* _LINUX_BYTEORDER_LITTLE_ENDIAN_H */ diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/asm-m68k/byteorder/swab.h b/BaS_codewarrior/FireBee/trunk/usb/store/asm-m68k/byteorder/swab.h new file mode 100644 index 0000000..d3394b0 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/asm-m68k/byteorder/swab.h @@ -0,0 +1,158 @@ +#ifndef _LINUX_BYTEORDER_SWAB_H +#define _LINUX_BYTEORDER_SWAB_H + +/* + * linux/byteorder/swab.h + * Byte-swapping, independently from CPU endianness + * swabXX[ps]?(foo) + * + * Francois-Rene Rideau 19971205 + * separated swab functions from cpu_to_XX, + * to clean up support for bizarre-endian architectures. + * + * See asm-i386/byteorder.h and suches for examples of how to provide + * architecture-dependent optimized versions + * + */ + +/* casts are necessary for constants, because we never know how for sure + * how U/UL/ULL map to __u16, __u32, __u64. At least not in a portable way. + */ +#define ___swab16(x) \ + ((__u16)( \ + (((__u16)(x) & (__u16)0x00ffU) << 8) | \ + (((__u16)(x) & (__u16)0xff00U) >> 8) )) +#define ___swab32(x) \ + ((__u32)( \ + (((__u32)(x) & (__u32)0x000000ffUL) << 24) | \ + (((__u32)(x) & (__u32)0x0000ff00UL) << 8) | \ + (((__u32)(x) & (__u32)0x00ff0000UL) >> 8) | \ + (((__u32)(x) & (__u32)0xff000000UL) >> 24) )) +#define ___swab64(x) \ + ((__u64)( \ + (__u64)(((__u64)(x) & (__u64)0x00000000000000ffULL) << 56) | \ + (__u64)(((__u64)(x) & (__u64)0x000000000000ff00ULL) << 40) | \ + (__u64)(((__u64)(x) & (__u64)0x0000000000ff0000ULL) << 24) | \ + (__u64)(((__u64)(x) & (__u64)0x00000000ff000000ULL) << 8) | \ + (__u64)(((__u64)(x) & (__u64)0x000000ff00000000ULL) >> 8) | \ + (__u64)(((__u64)(x) & (__u64)0x0000ff0000000000ULL) >> 24) | \ + (__u64)(((__u64)(x) & (__u64)0x00ff000000000000ULL) >> 40) | \ + (__u64)(((__u64)(x) & (__u64)0xff00000000000000ULL) >> 56) )) + +/* + * provide defaults when no architecture-specific optimization is detected + */ +#ifndef __arch__swab16 +# define __arch__swab16(x) ___swab16(x) +#endif +#ifndef __arch__swab32 +# define __arch__swab32(x) ___swab32(x) +#endif +#ifndef __arch__swab64 +# define __arch__swab64(x) ___swab64(x) +#endif + +#ifndef __arch__swab16p +# define __arch__swab16p(x) __swab16(*(x)) +#endif +#ifndef __arch__swab32p +# define __arch__swab32p(x) __swab32(*(x)) +#endif +#ifndef __arch__swab64p +# define __arch__swab64p(x) __swab64(*(x)) +#endif + +#ifndef __arch__swab16s +# define __arch__swab16s(x) do { *(x) = __swab16p((x)); } while (0) +#endif +#ifndef __arch__swab32s +# define __arch__swab32s(x) do { *(x) = __swab32p((x)); } while (0) +#endif +#ifndef __arch__swab64s +# define __arch__swab64s(x) do { *(x) = __swab64p((x)); } while (0) +#endif + + +/* + * Allow constant folding + */ +#if defined(__GNUC__) && (__GNUC__ >= 2) && defined(__OPTIMIZE__) +# define __swab16(x) \ +(__builtin_constant_p((__u16)(x)) ? \ + ___swab16((x)) : \ + __fswab16((x))) +# define __swab32(x) \ +(__builtin_constant_p((__u32)(x)) ? \ + ___swab32((x)) : \ + __fswab32((x))) +# define __swab64(x) \ +(__builtin_constant_p((__u64)(x)) ? \ + ___swab64((x)) : \ + __fswab64((x))) +#else +# define __swab16(x) __fswab16(x) +# define __swab32(x) __fswab32(x) +# define __swab64(x) __fswab64(x) +#endif /* OPTIMIZE */ + + +static __inline__ __attribute__((const)) __u16 __fswab16(__u16 x) +{ + return __arch__swab16(x); +} +static __inline__ __u16 __swab16p(__u16 *x) +{ + return __arch__swab16p(x); +} +static __inline__ void __swab16s(__u16 *addr) +{ + __arch__swab16s(addr); +} + +static __inline__ __attribute__((const)) __u32 __fswab32(__u32 x) +{ + return __arch__swab32(x); +} +static __inline__ __u32 __swab32p(__u32 *x) +{ + return __arch__swab32p(x); +} +static __inline__ void __swab32s(__u32 *addr) +{ + __arch__swab32s(addr); +} + +#ifdef __BYTEORDER_HAS_U64__ +static __inline__ __attribute__((const)) __u64 __fswab64(__u64 x) +{ +# ifdef __SWAB_64_THRU_32__ + __u32 h = x >> 32; + __u32 l = x & ((1ULL<<32)-1); + return (((__u64)__swab32(l)) << 32) | ((__u64)(__swab32(h))); +# else + return __arch__swab64(x); +# endif +} +static __inline__ __u64 __swab64p(__u64 *x) +{ + return __arch__swab64p(x); +} +static __inline__ void __swab64s(__u64 *addr) +{ + __arch__swab64s(addr); +} +#endif /* __BYTEORDER_HAS_U64__ */ + +//#if defined(__KERNEL__) +#define swab16 __swab16 +#define swab32 __swab32 +#define swab64 __swab64 +#define swab16p __swab16p +#define swab32p __swab32p +#define swab64p __swab64p +#define swab16s __swab16s +#define swab32s __swab32s +#define swab64s __swab64s +//#endif + +#endif /* _LINUX_BYTEORDER_SWAB_H */ diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/asm-m68k/io.h b/BaS_codewarrior/FireBee/trunk/usb/store/asm-m68k/io.h new file mode 100644 index 0000000..3c6455d --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/asm-m68k/io.h @@ -0,0 +1,263 @@ +/* + * IO header file + * + * Copyright (C) 2004-2007 Freescale Semiconductor, Inc. + * TsiChung Liew (Tsi-Chung.Liew@freescale.com) + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#ifndef __ASM_M68K_IO_H__ +#define __ASM_M68K_IO_H__ + +#include "byteorder.h" + +#define __raw_readb(addr) (*(volatile u8 *)(addr)) +#define __raw_readw(addr) (*(volatile u16 *)(addr)) +#define __raw_readl(addr) (*(volatile u32 *)(addr)) + +#define __raw_writeb(b,addr) ((*(volatile u8 *) (addr)) = (b)) +#define __raw_writew(w,addr) ((*(volatile u16 *) (addr)) = (w)) +#define __raw_writel(l,addr) ((*(volatile u32 *) (addr)) = (l)) + +#define readb(addr) in_8((volatile u8 *)(addr)) +#define writeb(b,addr) out_8((volatile u8 *)(addr), (b)) +#if !defined(__BIG_ENDIAN) +//#if defined(__BIG_ENDIAN) +#define readw(addr) (*(volatile u16 *) (addr)) +#define readl(addr) (*(volatile u32 *) (addr)) +#define writew(b,addr) ((*(volatile u16 *) (addr)) = (b)) +#define writel(b,addr) ((*(volatile u32 *) (addr)) = (b)) +#else /* Galvez: in_le16() does the swap reading + * twice from fifo (register), when reading + * from fifo once the value is changed by the new one */ +#define readw(addr) ld_le16((volatile u16 *)(addr)) /* instead of in_le16((volatile u16 *)(addr))*/ +#define readl(addr) in_le32((volatile u32 *)(addr)) +#define writew(b,addr) out_le16((volatile u16 *)(addr),(b)) +#define writel(b,addr) out_le32((volatile u32 *)(addr),(b)) +#endif + +/* + * The insw/outsw/insl/outsl macros don't do byte-swapping. + * They are only used in practice for transferring buffers which + * are arrays of bytes, and byte-swapping is not appropriate in + * that case. - paulus + */ +#define insb(port, buf, ns) _insb((u8 *)((port)+_IO_BASE), (buf), (ns)) +#define outsb(port, buf, ns) _outsb((u8 *)((port)+_IO_BASE), (buf), (ns)) +#define insw(port, buf, ns) _insw_ns((u16 *)((port)+_IO_BASE), (buf), (ns)) +#define outsw(port, buf, ns) _outsw_ns((u16 *)((port)+_IO_BASE), (buf), (ns)) +#define insl(port, buf, nl) _insl_ns((u32 *)((port)+_IO_BASE), (buf), (nl)) +#define outsl(port, buf, nl) _outsl_ns((u32 *)((port)+_IO_BASE), (buf), (nl)) + +#define inb(port) in_8((u8 *)((port)+_IO_BASE)) +#define outb(val, port) out_8((u8 *)((port)+_IO_BASE), (val)) +#if !defined(__BIG_ENDIAN) +//#if defined(__BIG_ENDIAN) +#define inw(port) in_be16((u16 *)((port)+_IO_BASE)) +#define outw(val, port) out_be16((u16 *)((port)+_IO_BASE), (val)) +#define inl(port) in_be32((u32 *)((port)+_IO_BASE)) +#define outl(val, port) out_be32((u32 *)((port)+_IO_BASE), (val)) +#else +#define inw(port) in_le16((u16 *)((port)+_IO_BASE)) +#define outw(val, port) out_le16((u16 *)((port)+_IO_BASE), (val)) +#define inl(port) in_le32((u32 *)((port)+_IO_BASE)) +#define outl(val, port) out_le32((u32 *)((port)+_IO_BASE), (val)) +#endif + +extern inline void _insb(volatile u8 * port, void *buf, int ns) +{ + u8 *data = (u8 *) buf; + while (ns--) + *data++ = *port; +} + +extern inline void _outsb(volatile u8 * port, const void *buf, int ns) +{ + u8 *data = (u8 *) buf; + while (ns--) + *port = *data++; +} + +extern inline void _insw(volatile u16 * port, void *buf, int ns) +{ + u16 *data = (u16 *) buf; + while (ns--) + *data++ = __sw16(*port); +} + +extern inline void _outsw(volatile u16 * port, const void *buf, int ns) +{ + u16 *data = (u16 *) buf; + while (ns--) { + *port = __sw16(*data); + data++; + } +} + +extern inline void _insl(volatile u32 * port, void *buf, int nl) +{ + u32 *data = (u32 *) buf; + while (nl--) + *data++ = __sw32(*port); +} + +extern inline void _outsl(volatile u32 * port, const void *buf, int nl) +{ + u32 *data = (u32 *) buf; + while (nl--) { + *port = __sw32(*data); + data++; + } +} + +extern inline void _insw_ns(volatile u16 * port, void *buf, int ns) +{ + u16 *data = (u16 *) buf; + while (ns--) + *data++ = *port; +} + +extern inline void _outsw_ns(volatile u16 * port, const void *buf, int ns) +{ + u16 *data = (u16 *) buf; + while (ns--) { + *port = *data++; + } +} + +extern inline void _insl_ns(volatile u32 * port, void *buf, int nl) +{ + u32 *data = (u32 *) buf; + while (nl--) + *data++ = *port; +} + +extern inline void _outsl_ns(volatile u32 * port, const void *buf, int nl) +{ + u32 *data = (u32 *) buf; + while (nl--) { + *port = *data; + data++; + } +} + +/* + * The *_ns versions below don't do byte-swapping. + * Neither do the standard versions now, these are just here + * for older code. + */ +#define insw_ns(port, buf, ns) _insw_ns((u16 *)((port)+_IO_BASE), (buf), (ns)) +#define outsw_ns(port, buf, ns) _outsw_ns((u16 *)((port)+_IO_BASE), (buf), (ns)) +#define insl_ns(port, buf, nl) _insl_ns((u32 *)((port)+_IO_BASE), (buf), (nl)) +#define outsl_ns(port, buf, nl) _outsl_ns((u32 *)((port)+_IO_BASE), (buf), (nl)) + +#define IO_SPACE_LIMIT ~0 + +/* + * 8, 16 and 32 bit, big and little endian I/O operations, with barrier. + */ +extern inline int in_8(volatile u8 * addr) +{ + return (int)*addr; +} + +extern inline void out_8(volatile u8 * addr, int val) +{ + *addr = (u8) val; +} + +extern inline int in_le16(volatile u16 * addr) +{ + return __sw16(*addr); +} + +extern inline int in_be16(volatile u16 * addr) +{ + return (*addr & 0xFFFF); +} + +extern inline void out_le16(volatile u16 * addr, int val) +{ + *addr = __sw16(val); +} + +extern inline void out_be16(volatile u16 * addr, int val) +{ + *addr = (u16) val; +} + +extern inline unsigned in_le32(volatile u32 * addr) +{ + return __sw32(*addr); +} + +extern inline unsigned in_be32(volatile u32 * addr) +{ + return (*addr); +} + +extern inline void out_le32(volatile unsigned *addr, int val) +{ + *addr = __sw32(val); +} + +extern inline void out_be32(volatile unsigned *addr, int val) +{ + *addr = val; +} + +static inline void sync(void) +{ + /* This sync function is for PowerPC or other architecture instruction + * ColdFire does not have this instruction. Dummy function, added for + * compatibility (CFI driver) + */ +} + +/* + * Given a physical address and a length, return a virtual address + * that can be used to access the memory range with the caching + * properties specified by "flags". + */ +#define MAP_NOCACHE (0) +#define MAP_WRCOMBINE (0) +#define MAP_WRBACK (0) +#define MAP_WRTHROUGH (0) + +static inline void *map_physmem(phys_addr_t paddr, unsigned long len, + unsigned long flags) +{ + return (void *)paddr; +} + +/* + * Take down a mapping set up by map_physmem(). + */ +static inline void unmap_physmem(void *vaddr, unsigned long flags) +{ + +} + +static inline phys_addr_t virt_to_phys(void * vaddr) +{ + return (phys_addr_t)(vaddr); +} + +#endif /* __ASM_M68K_IO_H__ */ diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/asm-m68k/types.h b/BaS_codewarrior/FireBee/trunk/usb/store/asm-m68k/types.h new file mode 100644 index 0000000..42ff2a6 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/asm-m68k/types.h @@ -0,0 +1,53 @@ +#ifndef _M68K_TYPES_H +#define _M68K_TYPES_H + +#ifndef __ASSEMBLY__ + +typedef unsigned short umode_t; + +typedef __signed__ char __s8; +typedef unsigned char __u8; + +typedef __signed__ short __s16; +typedef unsigned short __u16; + +typedef __signed__ int __s32; +typedef unsigned int __u32; + +#if defined(__GNUC__) +__extension__ typedef __signed__ long long __s64; +__extension__ typedef unsigned long long __u64; +#endif + +typedef struct { + __u32 u[4]; +} __attribute__((aligned(16))) vector128; + +//#ifdef __KERNEL__ +/* + * These aren't exported outside the kernel to avoid name space clashes + */ +typedef signed char s8; +typedef unsigned char u8; + +typedef signed short s16; +typedef unsigned short u16; + +typedef signed int s32; +typedef unsigned int u32; + +typedef signed long long s64; +typedef unsigned long long u64; + +#define BITS_PER_LONG 32 + +/* DMA addresses are 32-bits wide */ +typedef u32 dma_addr_t; + +typedef unsigned long phys_addr_t; +typedef unsigned long phys_size_t; + +//#endif /* __KERNEL__ */ +#endif /* __ASSEMBLY__ */ + +#endif diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/bios.S b/BaS_codewarrior/FireBee/trunk/usb/store/bios.S new file mode 100644 index 0000000..fb83a92 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/bios.S @@ -0,0 +1,1378 @@ +/* TOS 4.04 Xbios dispatcher for the CT60/CTPCI boards + * and USB-disk / Ram-Disk utility + * Didier Mequignon 2005-2009, e-mail: aniplay@wanadoo.fr + * + * Modified to be used as an application by David Gálvez 2010. + * + * This file is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This file is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + + + +#include "config.h" +#include "vars.h" + +#define old_pun_ptr 0x516 + +#undef pun_ptr +#define pun_ptr pun_ptr_usb + +.global _max_logical_drive + +#define MAX_LOGICAL_DRIVE _max_logical_drive + +.chip 68040 + +.global ___mint + +#if defined(CONFIG_USB_UHCI) || defined(CONFIG_USB_OHCI) || defined(CONFIG_USB_EHCI) || \ + defined(CONFIG_USB_ISP116X_HCD) || defined(CONFIG_USB_ARANYM_HCD) +#ifdef CONFIG_USB_STORAGE + .global _install_usb_stor,_usb_stor_read,_usb_stor_write,_usb_1st_disk_drive,_SuperFromUser, _SuperTouser +#endif /* CONFIG_USB_STORAGE */ +#endif /* CONFIG_USB_UHCI || CONFIG_USB_OHCI || CONFIG_USB_EHCI || CONFIG_USB_ISP116X_HCD */ + + + +#if defined(CONFIG_USB_KEYBOARD) || (CONFIG_USB_MOUSE) +.global _asm_set_ipl +.global _call_ikbdvec,_call_mousevec +#endif + +#ifdef DEBUG_BIOS_LAYER + .global display_string,hex_long,hex_word,hex_byte,display_char,wait_key,_debug +#endif + + .data + +/* XHDI */ + +#define XH_DL_SECSIZ 0 // maximal sector size (BIOS level) +#define XH_DL_MINFAT 1 // minimal number of FATs +#define XH_DL_MAXFAT 2 // maximal number of FATs +#define XH_DL_MINSPC 3 // sectors per cluster minimal +#define XH_DL_MAXSPC 4 // sectors per cluster maximal +#define XH_DL_CLUSTS 5 // maximal number of clusters of a 16 bit FAT +#define XH_DL_MAXSEC 6 // maximal number of sectors +#define XH_DL_DRIVES 7 // maximal number of BIOS drives supported by the DOS + + +/* AHDI */ + +#define PUN_DEV 0x1F /* device number of HD */ +#define PUN_UNIT 0x07 /* Unit number */ +#define PUN_SCSI 0x08 /* 1=SCSI 0=ACSI */ +#define PUN_IDE 0x10 /* Falcon IDE */ +#define PUN_USB 0x20 /* USB */ +#define PUN_REMOVABLE 0x40 /* Removable media */ +#define PUN_VALID 0x80 /* zero if valid */ + +#define pinfo_puns 0 // 2 bytes +#define pinfo_pun 2 // 32 bytes +#define pinfo_pstart 34 // 32 x 4 bytes +#define pinfo_cookie 162 // 4 bytes +#define pinfo_cookptr 166 // 4 bytes +#define pinfo_vernum 170 // 2 bytes +#define pinfo_maxsiz 172 // 2 bytes +#define pinfo_ptype 174 // 32 x 4 bytes +#define pinfo_psize 302 // 32 x 4 bytes +#define pinfo_flags 430 // 32 x 2 bytes, internal use: B15:swap, B7:change, B0:bootable +#define pinfo_bpb 494 // 32 x 32 bytes +#define pinfo_devnum 1518 // 32 bytes +#define pinfo_size 1550 + + +#if 1//#ifdef DEBUG_BIOS_LAYER +//debug1: .asciz "XBIOS #0x" +//debug2: .asciz "Setscreen 0x" +debug3: .asciz "hdv_rw 0x" +debug4: .ascii "hdv_bpb" + .byte 13,10,0 +debug5: .ascii "hdv_mediach" + .byte 13,10,0 +//debug6: .asciz "Vsetmode 0x" +//debug7: .asciz "ValidMode 0x" +//debug8: .asciz "Gettime 0x +debug132: .asciz "XHDI XHReadWrite 0x" +debug133: .ascii "XHDI XHInqTarget2" + .byte 13,10,0 +debug134: .ascii "XHDI XHInqDev" + .byte 13,10,0 +debug135: .ascii "XHDI XHInqDriver" + .byte 13,10,0 +debug136: .ascii "XHDI XHInqDev2" + .byte 13,10,0 +debug137: .ascii "XHDI XHDOSLimits" + .byte 13,10,0 +debug138: .ascii "GALVEZ DEBUG" /* Galvez: DEBUG */ + .byte 13,10,0 +debug139: .ascii "XHDI XHReadWrite" /* Galvez: DEBUG */ + .byte 13,10,0 + .align 2 +#endif + + +// dc.l 0x58425241 // XBRA +// dc.l 0x5F504349 // _PCI +// dc.l 0 // cannot store here because we are in flash + + + +text_color: + + moveq #0,D0 + move.w 0x3E86,D0 // number of planes + cmp.l #2,D0 + bls.s .black_and_white + pea (A0) + move.w #9,-(SP) + trap #1 // Cconws + addq.l #6,SP +.black_and_white: + rts + +#if defined(CONFIG_USB_KEYBOARD) || (CONFIG_USB_MOUSE) +_asm_set_ipl: + link A6,#-8 + movem.l D6-D7,(SP) + move.w SR,D7 // current SR + move.l D7,D0 // prepare return value + and.l #0x0700,D0 // mask out IPL + lsr.l #8,D0 // IPL + move.l 8(A6),D6 // get argument + and.l #7,D6 // least significant three bits + lsl.l #8,D6 // move over to make mask + and.l #0x0000F8FF,D7 // zero out current IPL + or.l D6,D7 // place new IPL in SR + move.w D7,SR + movem.l (SP),D6-D7 + lea 8(SP),SP + unlk A6 + rts + +_call_ikbdvec: + + lea -24(SP),SP + movem.l D0-D2/A0-A2,(SP) + move.l 28(SP),D0 // ikbd code + move.l 32(SP),A0 // iorec + and.l #0xFF,D0 + move.l 0x1132,A2 // ikbdvec + jsr (A2) + movem.l (SP),D0-D2/A0-A2 + lea 24(SP),SP + rts + +_call_mousevec: + + lea -24(SP),SP + movem.l D0-D2/A0-A2,(SP) + move.l 28(SP),A0 // data + move.l 32(SP),A2 + move.l (A2),A2 // mousevec + jsr (A2) + movem.l (SP),D0-D2/A0-A2 + lea 24(SP),SP + rts +#endif + +install_xbra: // A0: handler, D0: vector, D1: ID + + lea -28(SP),SP + movem.l D1-D3/A0-A3,(SP) + moveq #0,D3 + move.w D0,D3 // vector + move.l A0,A3 // handler + move.l D1,-(SP) + move.w #3,-(SP) // TT ram if possible + move.l #18,-(SP) // size + move.w #0x44,-(SP) // Mxalloc + trap #1 + addq.l #8,SP + move.l (SP)+,D1 + tst.l D0 + beq.s .error_xbra + move.l D0,A0 + move.l #0x58425241,(A0)+ // XBRA + move.l D1,(A0)+ + clr.l (A0)+ + move.w #0x4EF9,(A0)+ // JMP + move.l A3,(A0)+ // handler + lea -10(A0),A0 + + cpusha BC + + move.l D3,A1 + move.l (A1),D0 + move.l D0,(A0)+ // old vector + move.l A0,(A1) // JMP, new vector +.error_xbra: + tst.l D0 + movem.l (SP),D1-D3/A0-A3 + lea 28(SP),SP + rts +#if defined(CONFIG_USB_UHCI) || defined(CONFIG_USB_OHCI) || defined(CONFIG_USB_EHCI) || \ + defined(CONFIG_USB_ISP116X_HCD) || defined(CONFIG_USB_ARANYM_HCD) +#ifdef CONFIG_USB_STORAGE +_install_usb_stor: + lea -32(SP),SP + movem.l D1-D4/A0-A3,(SP) + move.l 36(SP),D0 // dev_num + cmp.l #PUN_DEV,D0 + bhi .no_pinfo // error + move.l 40(SP),D2 // part_type + move.l D2,D1 + and.l #0xFFFFFF,D1 // ID + // GEMDOS + cmp.l #0x47454D,D1 // GEM up to 16M + beq.s .partition_ok + cmp.l #0x42474D,D1 // BGM over 16M + beq.s .partition_ok + cmp.l #0x524157,D1 // RAW + beq.s .partition_ok + // DOS 1:FAT12, 0xB/0xC:FAT32 + cmp.l #0x4,D2 // FAT16 up to 32M + beq.s .partition_ok + cmp.l #0x6,D2 // FAT16 over 32M + beq.s .partition_ok + tst.l ___mint // Galvez: NOT MiNT? then go out + beq .invalid_partition_type + cmp.l #0xE,D2 // WIN95 FAT16 + beq .partition_ok + cmp.l #0xB,D2 // FAT32 + beq.s .partition_ok + cmp.l #0xC,D2 // FAT32 + bne .partition_ok + cmp.l #0x81,D2 // MINIX + bne .partition_ok + cmp.l #0x83,D2 // EXT2/LNX + bne .partition_ok +.partition_ok: + move.l old_pun_ptr,A2 // Galvez: we need it to update hd driver pun struct + move.l pun_ptr,D0 + bne.s .pinfo_ok + move.w #3,-(SP) // TT ram if possible + move.l #pinfo_size,-(SP) + move.w #0x44,-(SP) // Mxalloc + trap #1 + addq.l #8,SP + move.l D0,pun_ptr + beq.s .no_pinfo + move.l D0,A3 + clr.w pinfo_puns(A3) + move.w #0x0300,D0 + move.w D0,pinfo_vernum(A3) + move.w #0x4000,D0 + move.w D0,pinfo_maxsiz(A3) + lea pinfo_pun(A3),A0 + moveq #-1,D0 + move.w D0,(A0)+ // drives A/B + move.l D0,(A0)+ + move.l D0,(A0)+ + move.l D0,(A0)+ + move.l D0,(A0)+ + move.l D0,(A0)+ + move.l D0,(A0)+ + move.l D0,(A0)+ + move.w D0,(A0) + lea pinfo_pstart(A3),A0 + lea pinfo_size(A3),A1 +.clrpun: + clr.w -(A1) + cmp.l A0,A1 + bgt.s .clrpun + move.l A3,D0 // pun_ptr +.pinfo_ok: + move.l D0,A3 // pun_ptr + moveq #2,D4 // drive C + move.l _drvbits,D0 +.search_empty_drive_usb: + btst D4,D0 + beq.s .drive_not_exist_usb + addq.l #1,D4 + cmp.l #MAX_LOGICAL_DRIVE,D4 + bcs.s .search_empty_drive_usb + bra .drive_full_usb // all drives already used +.no_pinfo: + moveq #0,D0 // not installed + bra .end_usb_disk +.drive_not_exist_usb: + move.w pinfo_puns(A3),D0 + addq.l #1,D0 + move.w D0,pinfo_puns(A3) + moveq #0,D0 + bset #7,D0 // changed + lea pinfo_flags(A3),A0 + move.l D0,(A0,D4.l*4) // B15:swap, B7:change, B0:bootable + lea pinfo_psize(A3),A0 + move.l 48(SP),D3 // part_size + move.l 44(SP),D1 // part_offset + move.l 40(SP),D2 // part_type + move.l 36(SP),D0 // dev_num + move.b D0,pinfo_devnum(A3,D4.l) + move.l D2,pinfo_ptype(A3,D4.l*4) + move.l D4,D2 + or.l #PUN_USB,D2 + move.b D2,pinfo_pun(A3,D4.l) + cmp.l #15,D4 // Galvez: update AHDI pun struct: + bgt .ahdi_part_num_limit // Galvez: if logical part. > 16 + move.b D2,pinfo_pun(A2,D4.l) // Galvez: don't update pun struct, + move.w D0,-(SP) // Galvez: to avoid corruption. + move.w pinfo_puns(A2),D0 // Galvez: update hd driver pun stuct + addq.l #1,D0 // Galvez: othewise MiNT only handles 16MB + move.w D0,pinfo_puns(A2) // Galvez: when not using XHDI + move.w (SP)+,D0 // Galvez: see BLOCK_IO.c (MiNT sources) +.ahdi_part_num_limit: + move.l D3,(A0,D4.l*4) // size + move.l D1,pinfo_pstart(A3,D4.l*4) + move.l _dskbufp,A0 + move.l A0,-(SP) // buffer + move.l #1,-(SP) // blkcnt + move.l D1,-(SP) // blknr + move.l D0,-(SP) // devnum + jsr _usb_stor_read + lea 16(SP),SP + tst.l D0 + beq .end_usb_disk // read error + tst.l _usb_1st_disk_drive + bne .usb_1st_drive_ok // hdv vectors installed + move.l D4,_usb_1st_disk_drive + move.w SR,D0 + move.w D0,-(SP) + or.l #0x700,D0 // mask interrupts + move.w D0,SR + move.l #0x5F555342,D1 // _USB + lea det_hdv_bpb_usb(PC),A0 + move.w #hdv_bpb,D0 + bsr install_xbra + move.l D0,old_hdv_bpb_usb + lea det_hdv_rw_usb(PC),A0 + move.w #hdv_rw,D0 + bsr install_xbra + move.l D0,old_hdv_rw_usb + lea det_hdv_mediach_usb(PC),A0 + move.w #hdv_mediach,D0 + bsr install_xbra + move.l D0,old_hdv_mediach_usb + move.l cookie,D0 + beq.s .no_cookie_jar + move.l D0,A0 + move.l #0x58484449,D1 // XHDI +.find_cookie_jar: + tst.l (A0) + beq.s .cookie_slot_free + cmp.l (A0),D1 + beq.s .cookie_found + addq.l #8,A0 + bra.s .find_cookie_jar +.cookie_found: + move.l 4(A0),D0 + move.l D0,old_xhdi + lea xhdi(PC),A1 + clr.l -(SP) // XHGetVersion + move.l D0,A0 + jsr (A0) + addq.l #4,SP + move.l D0,old_xhdi_version + move.l A1,-(SP) + move.w #9,-(SP) // Galvez: XHNewCookie + jsr (A0) + add.l #6,SP + tst.l D0 + beq.s .no_cookie_jar + move.l A1,4(A0) // Galvez: Replace cookie "by-hand" + bra.s .no_cookie_jar +.cookie_slot_free: + move.l 4(A0),12(A0) // copy size + lea xhdi(PC),A1 + move.l A1,(A0)+ + clr.l (A0) + clr.l old_xhdi + move.l #0x120,D0 // protocol version + move.l D0,old_xhdi_version +.no_cookie_jar: + move.w (SP)+,D0 + move.w D0,SR // restore interrupts +.usb_1st_drive_ok: + move.l _dskbufp,A0 // boot sector + lea pinfo_bpb(A3),A1 + move.l D4,D2 // logical drive + asl.l #5,D2 // * 32 + add.l D2,A1 + moveq #0,D2 + move.b 0xC(A0),D2 + asl.l #8,D2 + move.b 0xB(A0),D2 // BPS + move.w D2,(A1) // sector size + moveq #0,D1 + move.b 0xD(A0),D1 // SPC + move.w D1,2(A1) // cluster size in sectors + move.w D1,D0 + mulu D2,D0 + move.w D0,4(A1) // cluster size in bytes + moveq #0,D0 + move.b 0x12(A0),D0 + asl.l #8,D0 + move.b 0x11(A0),D0 // NDIRS + asl.l #5,D0 // * 32 + + divu D2,D0 // / sector size + + move.w D0,6(A1) // size directory in sectors + moveq #0,D2 + move.b 0x17(A0),D2 + asl.l #8,D2 + move.b 0x16(A0),D2 // SPF + move.w D2,8(A1) // FAT size + moveq #0,D0 + move.b 0xF(A0),D0 + asl.l #8,D0 + move.b 0xE(A0),D0 // RES + move.l D0,D3 + add.l D2,D3 // + FAT size + move.w D3,10(A1) // 1st sector of FAT2 + moveq #0,D3 + move.b 0x10(A0),D3 // NFATS + mulu D2,D3 // * FAT size + add.l D0,D3 // + RES + moveq #0,D0 + move.w 6(A1),D0 // size directory in sectors + add.l D3,D0 + move.w D0,12(A1) // 1st data sector + moveq #0,D2 + move.b 0x14(A0),D2 + asl.l #8,D2 + move.b 0x13(A0),D2 // NSECTS + bne.s .nsects_ok_usb + lea pinfo_psize(A3),A2 + move.l (A2,D4.w*4),D2 // partition size in sectors + sub.l D0,D2 // - 1st data sector +.nsects_ok_usb: + divu D1,D2 + + move.w D2,14(A1) // total clusters + moveq #1,D0 + move.w D0,16(A1) // FAT 16 + clr.w 18(A1) + clr.l 20(A1) + clr.l 24(A1) + clr.l 28(A1) + move.l _drvbits,D0 + bset D4,D0 + move.l D0,_drvbits + moveq #2,D0 // drive C + cmp.l D4,D0 + bne.s .no_set_drive_usb + move.w D0,_bootdev + move.w D0,-(SP) + move.w #0xE,-(SP) // Dsetdrv + trap #1 + addq.l #4,SP +.no_set_drive_usb: + move.l 36(SP),D0 // devnum + movem.l 52(SP),A1/A2/A3 // vendor / revision / product + move.l product_name,A0 // save product name pointer for XHDI +#if DEBUG_BIOS_LAYER + move.l D0, -(SP) + move.b D4,D0 + jsr hex_byte /* Galvez: DEBUG device */ + move.l (SP)+,D0 +#endif + move.l A3,(A0,D4.l*4) + bsr display_drive_usb + pea message2b(PC) + move.w #9,-(SP) + trap #1 // Cconws + addq.l #6,SP + moveq #0x41,D0 // A + add.l D4,D0 + move.w D0,-(SP) + move.w #2,-(SP) + trap #1 // Cconout + addq.l #4,SP + pea crlf(PC) + move.w #9,-(SP) + trap #1 // Cconws + addq.l #6,SP + move.l D4,D0 // OK + bra.s .end_usb_disk +.invalid_partition_type: + pea error4(PC) + bra.s .display_error_usb +.drive_full_usb: + pea error2(PC) +.display_error_usb: + move.l 36+4(SP),D0 // devnum + movem.l 52+4(SP),A1/A2/A3 // vendor / revision / product + bsr display_drive_usb + move.w #0x2C,-(SP) + move.w #2,-(SP) + trap #1 // Cconout + addq.l #4,SP + move.w #0x20,-(SP) + move.w #2,-(SP) + trap #1 // Cconout + addq.l #4,SP + move.w #9,-(SP) + trap #1 // Cconws + addq.l #6,SP + moveq #0,D0 // not installed +.end_usb_disk: + movem.l (SP),D1-D4/A0-A3 + lea 32(SP),SP + rts + +display_drive_usb: + + move.l A1,-(SP) + moveq #0x30,D1 + add.l D1,D0 // dev_num + move.w D0,-(SP) + lea blue(PC),A0 + bsr text_color + pea message2(PC) // USB-disk installed + move.w #9,-(SP) + trap #1 // Cconws + addq.l #6,SP + move.w #2,-(SP) + trap #1 // Cconout + addq.l #4,SP + move.w #0x2E,-(SP) + move.w #2,-(SP) + trap #1 // Cconout + addq.l #4,SP + move.w #0x30,-(SP) + move.w #2,-(SP) + trap #1 // Cconout + addq.l #4,SP + lea black(PC),A0 + bsr text_color + move.w #0x20,-(SP) + move.w #2,-(SP) + trap #1 // Cconout + addq.l #4,SP + move.w #9,-(SP) + trap #1 // Cconws + addq.l #6,SP + move.w #0x20,-(SP) + move.w #2,-(SP) + trap #1 // Cconout + addq.l #4,SP + move.l A2,-(SP) + move.w #9,-(SP) + trap #1 // Cconws + addq.l #6,SP + move.w #0x20,-(SP) + move.w #2,-(SP) + trap #1 // Cconout + addq.l #4,SP + move.l A3,-(SP) + move.w #9,-(SP) + trap #1 // Cconws + addq.l #6,SP + rts + +det_hdv_bpb_usb: + move.l A0,-(SP) + move.l pun_ptr,A0 + moveq #0,D0 + move.w 4+4(SP),D0 // drive + cmp.l _usb_1st_disk_drive,D0 + bcs.s .dhbu2 + cmp.l #MAX_LOGICAL_DRIVE,D0 + bcc.s .dhbu2 + tst.b pinfo_pun(A0,D0.l) + bpl.s .dhbu1 +.dhbu2: + move.l (SP)+,A0 + moveq #0,D0 + move.l old_hdv_bpb_usb,-(SP) + rts +.dhbu1: + move.l D1,-(SP) + move.l pinfo_ptype(A0,D0.l*4),D1 + and.l #0xFFFFFF,D1 + cmp.l #0x524157,D1 // RAW + beq.s .dhbu4 + cmp.l #0x81,D1 // MINIX + beq.s .dhbu4 + cmp.l #0x83,D1 // EXT2/LNX + bne.s .dhbu3 +.dhbu4: + move.l (SP)+,D1 + move.l (SP)+,A0 + moveq #0,D0 + rts +.dhbu3: + lea pinfo_bpb(A0),A0 + asl.l #5,D0 // * 32 + add.l A0,D0 +#if DEBUG_BIOS_LAYER + move.l D0,-(SP) + moveq #0x30,D0 + jsr display_char + moveq #0x78,D0 + jsr display_char + move.l (SP),D0 + jsr hex_long + moveq #0x20,D0 + jsr display_char + lea debug4(PC),A0 + jsr display_string + move.l (SP)+,D0 +#endif + move.l (SP)+,D1 + move.l (SP)+,A0 + rts + +det_hdv_rw_usb: + + lea -28(SP),SP + movem.l D1-D4/A0-A2,(SP) +#if DEBUG_BIOS_LAYER + lea debug3(PC),A0 + jsr display_string + move.w 4+28(SP),D0 // rwflag + jsr hex_word + moveq #0x20,D0 + jsr display_char + moveq #0x30,D0 + jsr display_char + moveq #0x78,D0 + jsr display_char + move.l 6+28(SP),D0 // buffer + jsr hex_long + moveq #0x20,D0 + jsr display_char + moveq #0x30,D0 + jsr display_char + moveq #0x78,D0 + jsr display_char + move.w 10+28(SP),D0 // num sectors + jsr hex_word + moveq #0x20,D0 + jsr display_char + moveq #0x30,D0 + jsr display_char + moveq #0x78,D0 + jsr display_char + move.w 12+28(SP),D0 // logical sector + jsr hex_word + moveq #0x20,D0 + jsr display_char + moveq #0x30,D0 + jsr display_char + moveq #0x78,D0 + jsr display_char + move.w 16+28(SP),D0 // Galvez: logical sector (lrecno) + jsr hex_long + moveq #0x20,D0 + jsr display_char + moveq #0x30,D0 + jsr display_char + moveq #0x78,D0 + jsr display_char + move.w 14+28(SP),D0 // drive + jsr hex_word + moveq #13,D0 + jsr display_char + moveq #10,D0 + jsr display_char +#endif + btst #3,5+28(SP) // rwflag + bne.s .dhru8 // physical + move.l pun_ptr,A0 + moveq #0,D0 + move.w 14+28(SP),D0 // drive + cmp.l _usb_1st_disk_drive,D0 + bcs.s .dhru8 + cmp.l #MAX_LOGICAL_DRIVE,D0 + bcc.s .dhru8 + moveq #0,D4 + move.b pinfo_pun(A0,D0.l),D4 + bpl.s .dhru1 // valid +.dhru8: + movem.l (SP),D1-D4/A0-A2 + lea 28(SP),SP + moveq #0,D0 + move.l old_hdv_rw_usb,-(SP) + rts +.dhru1: + move.l D4,D2 + and.l #PUN_USB,D2 + beq.s .dhru8 // not USB + and.l #PUN_DEV,D4 + moveq #0,D2 + move.w 12+28(SP),D2 // logical sector + cmp.w #0xffff,D2 // Galvez: check recno <> -1 + bne.s .dhru6 + move.l 16+28(SP),D2 // logical sector +.dhru6: + tst.l D2 + bmi .dhru2 // negative logical sector + move.l 6+28(SP),D1 // buffer + beq .dhru4 // no buffer + move.l pinfo_pstart(A0,D0.l*4),D3 + move.l pinfo_devnum(A0,D0.l),D4 // devnum in the USB bus + lea pinfo_bpb(A0),A0 + asl.l #5,D0 // * 32 + add.l D0,A0 + move.w 14(A0),D0 // total clusters + mulu.w 2(A0),D0 // cluster size in sectors + cmp.l D0,D2 // logical sector to hight + bcc .dhru2 + moveq #0,D0 + move.w (A0),D0 // sector size + lsr.l #8,D0 + lsr.l #1,D0 // / 512 + move.l D1,A0 // buffer + move.w 10+28(SP),D1 // num sectors + beq .dhru4 // no sectors + mulu D0,D1 + mulu.l D0,D2 + add.l D3,D2 // start sector + move.l D1,D3 // count + btst #0,5+28(SP) // rwflag + beq.s .dhru7 // read + // write + tst.l D2 // logical sector + beq.s .dhru2 // root sector + move.l A0,-(SP) // buffer + move.l D3,-(SP) // blkcnt + move.l D2,-(SP) // blknr + move.l D4,-(SP) // USB devnum + jsr _usb_stor_write + bra.s .dhru5 +.dhru2: + moveq #-1,D0 // error + bra.s .dhru3 +.dhru4: + moveq #0,D0 // OK + bra.s .dhru3 +.dhru7: + move.l A0,-(SP) // buffer + move.l D3,-(SP) // blkcnt + move.l D2,-(SP) // blknr + move.l D4,-(SP) // USB devnum + jsr _usb_stor_read +.dhru5: + lea 16(SP),SP + tst.l D0 + seq.b D0 + ext.w D0 + ext.l D0 + bclr #0,D0 // OK or device not responding -2 +.dhru3: + movem.l (SP),D1-D4/A0-A2 + lea 28(SP),SP + rts + +det_hdv_mediach_usb: + + move.l A0,-(SP) + move.l pun_ptr,A0 + moveq #0,D0 + move.w 4+4(SP),D0 // drive + cmp.l _usb_1st_disk_drive,D0 + bcs.s .dhmu2 + cmp.l #MAX_LOGICAL_DRIVE,D0 + bcc.s .dhmu2 + tst.b pinfo_pun(A0,D0.l) + bpl.s .dhmu1 +.dhmu2: + move.l (SP)+,A0 + moveq #0,D0 + move.l old_hdv_mediach_usb,-(SP) + rts +.dhmu1: +#if 0 // #if DEBUG_BIOS_LAYER + move.l A0,-(SP) + lea debug5(PC),A0 + jsr display_string + move.l (SP)+,A0 +#endif + lea pinfo_flags(A0),A0 + add.l D0,A0 + add.l D0,A0 + bclr #7,1(A0) + sne.b D0 + and.l #2,D0 + move.l (SP)+,A0 + rts + + // XHDI + + dc.l 0x27011992 + +xhdi: + link A6,#0 + movem.l D1-A5,-(SP) + moveq #0,D1 + move.w 8(A6),D1 + + move.w D1,D0 +#if DEBUG_BIOS_LAYER + move.w D0, -(SP) + jsr hex_word /* Galvez: DEBUG. XHDI function */ + move.w (SP)+,D0 +#endif + moveq #-32,D0 // invalid function + cmp.l #18,d1 + bcc.s .bad_xhdi + move.w SR,D0 // supervisor only + moveq #-1,d0 // error + move.w tab_xhdi(PC,D1.l*2),D1 + jsr tab_xhdi(PC,D1.W) + +.bad_xhdi: + movem.l (SP)+,D1-A5 + unlk A6 + rts +#if DEBUG_BIOS_LAYER +debug: + lea debug138(PC),A0 + jsr display_string + rts +#endif + +tab_xhdi: + dc.w XHGetVersion-tab_xhdi // 0 + dc.w XHInqTarget-tab_xhdi // 1 + dc.w XHReserve-tab_xhdi // 2 + dc.w XHLock-tab_xhdi // 3 + dc.w XHStop-tab_xhdi // 4 + dc.w XHEject-tab_xhdi // 5 + dc.w XHDrvMap-tab_xhdi // 6 + dc.w XHInqDev-tab_xhdi // 7 + dc.w XHInqDriver-tab_xhdi // 8 + dc.w XHNewCookie-tab_xhdi // 9 + dc.w XHReadWrite-tab_xhdi // 10 + dc.w XHInqTarget2-tab_xhdi // 11 + dc.w XHInqDev2-tab_xhdi // 12 + dc.w XHDriverSpecial-tab_xhdi // 13 + dc.w XHGetCapacity-tab_xhdi // 14 + dc.w XHMediumChanged-tab_xhdi // 15 + dc.w XHMiNTInfo-tab_xhdi // 16 + dc.w XHDOSLimits-tab_xhdi // 17 + +XHGetVersion: +#if DEBUG_BIOS_LAYER + move.l A0,-(SP) + lea debug138(PC),A0 + jsr display_string + move.l (SP)+,A0 +#endif + move.l #0x120,D0 // protocol version + move.l old_xhdi_version,D1 + cmp.l D1,D0 + bcs.s .xv1 + move.l D1,D0 // minimum version +.xv1: + rts + +XHInqTarget: + + moveq #32,D2 // stringlen + bra.s .xi1 + +XHInqTarget2: + +#if DEBUG_BIOS_LAYER + move.l A0,-(SP) + lea debug133(PC),A0 + jsr display_string + move.l (SP)+,A0 +#endif + move.w 26(A6),D2 // stringlen +.xi1: + tst.w 12(A6) // minor + bne.s .xi2 + moveq #0,D0 + move.w 10(A6),D0 // major + cmp.w #PUN_USB,D0 + bcs.s .xi2 + cmp.w #PUN_USB+PUN_DEV,D0 + bls.s .xi3 +.xi2: + tst.l old_xhdi + beq.s .xi7 + moveq #-15,D0 // unknown device + rts +.xi7: + move.l old_xhdi,-(SP) + rts +.xi3: + tst.l 14(A6) + beq.s .xi8 + move.l 14(A6),A0 + move.l #512,(A0) +.xi8: + tst.l 18(A6) + beq.s .xi9 + move.l 18(A6),A0 // flags + move.l #0x00000002,(A0) // removable +.xi9: + move.l 22(A6),D1 // product_name + beq.s .xi6 // no pointer + move.l D1,A0 + + and.b #PUN_DEV,D0 + move.l product_name,A1 + move.l (A1,D0.l*4),D0 // Galvez: D0 should be the bios drive number + beq.s .xi6 // no pointer + move.l D0,A1 +.xi5: + move.b (A1)+,(A0)+ + beq.s .xi4 + subq.w #1,D2 + bpl.s .xi5 // Galvez: test +.xi4: + clr.b -1(A0) +.xi6: + moveq #0,D0 + rts + +XHReserve: +XHLock: +XHStop: +XHEject: + + tst.l old_xhdi + beq.s .xnu1 + moveq #0,D0 + rts +.xnu1: + move.l old_xhdi,-(SP) + rts + +XHDrvMap: + + move.l _drvbits,D0 + rts + +XHInqDev: + +#if DEBUG_BIOS_LAYER + lea debug134(PC),A0 + jsr display_string +#endif + + move.l pun_ptr,A0 + moveq #0,D0 + move.w 10(A6),D0 // bios_device + cmp.l _usb_1st_disk_drive,D0 + bcs.s .xd2 + cmp.l #MAX_LOGICAL_DRIVE,D0 + bcc.s .xd2 + moveq #0,D1 + move.b pinfo_pun(A0,D0.l),D1 + bpl.s .xd1 +.xd2: + + tst.l old_xhdi + beq.s .xd3 + moveq #-46,D0 // invalid drive number + + rts +.xd3: + move.l old_xhdi,-(SP) + rts +.xd1: + move.l D1,D2 + and.l #PUN_USB+PUN_DEV,D2 + beq.s .xd2 + tst.l 12(A6) + beq.s .xd4 + move.l 12(A6),A1 // major + move.w D1,(A1) +.xd4: + tst.l 16(A6) + beq.s .xd5 + move.l 16(A6),A1 // minor + clr.w (A1) +.xd5: + tst.l 20(A6) + beq.s .xd6 + move.l pinfo_pstart(A0,D0.l*4),D1 + move.l 20(A6),A1 // start_sector + move.l D1,(A1) +.xd6: + lea pinfo_bpb(A0),A0 + asl.l #5,D0 // * 32 + add.l A0,D0 + tst.l 24(A6) + beq.s .xd7 + move.l 24(A6),A1 // bpb + move.l D0,(A1) +.xd7: + moveq #0,D0 + rts + +XHInqDriver: + +#if DEBUG_BIOS_LAYER + lea debug135(PC),A0 + jsr display_string +#endif + move.l pun_ptr,A0 + moveq #0,D0 + move.w 10(A6),D0 // bios_device + cmp.l _usb_1st_disk_drive,D0 + bcs.s .xdr2 + cmp.l #MAX_LOGICAL_DRIVE,D0 + bcc.s .xdr2 + moveq #0,D1 + move.b pinfo_pun(A0,D0.l),D1 + bpl.s .xdr1 +.xdr2: + tst.l old_xhdi + beq.s .xdr8 + moveq #-46,D0 // invalid drive number + rts +.xdr8: + move.l old_xhdi,-(SP) + rts +.xdr1: + move.l D1,D0 + and.l #PUN_USB,D0 + beq.s .xdr2 + move.l 12(A6),D0 // name, 17 characters + beq.s .xdr3 + move.l D0,A1 + lea message1(PC),A0 + moveq #17,D1 +.xdr6: + move.b (A0)+,D0 + beq.s .xdr7 + move.b D0,(A1)+ + subq.l #1,D1 + bpl.s .xdr6 +.xdr7: + clr.b (A1) +.xdr3: + move.l 16(A6),D0 // version, 7 characters + beq.s .xdr4 + move.l D0,A1 + move.b #0x34,(A1)+ // ??? TOS 4.04 + move.b #0x2E,(A1)+ + move.b #0x30,(A1)+ + move.b #0x34,(A1)+ + clr.b (A1) +.xdr4: + move.l 20(A6),D0 // company, 17 characters + beq.s .xdr5 + move.l D0,A1 + clr.b (A1) +.xdr5: + move.l 24(A6),A1 // ahdi_version + move.w pinfo_vernum(A0),(A1) + move.l 28(A6),A1 // maxIPL + moveq #5,D0 + move.w D0,(A1) + moveq #0,D0 + rts + +XHReadWrite: // read / write physical sectors +#if DEBUG_BIOS_LAYER + lea debug139(PC),A0 + jsr display_string +#endif + + tst.w 12(A6) // minor + bne.s .xr4 + moveq #0,D4 + move.w 10(A6),D4 // major + cmp.l #PUN_USB,D4 + bcs.s .xr4 + cmp.l #PUN_USB+PUN_DEV,D4 + bls.s .xr1 +.xr4: + tst.l old_xhdi + beq.s .xr6 + moveq #-15,D0 // unknown device + rts +.xr6: + move.l old_xhdi,-(SP) + rts +.xr1: +#if DEBUG_BIOS_LAYER + lea debug132(PC),A0 + jsr display_string + move.w 14(A6),D0 // rwflag + jsr hex_word + moveq #0x20,D0 + jsr display_char + moveq #0x30,D0 + jsr display_char + moveq #0x78,D0 + jsr display_char + move.l 24(A6),D0 // buffer + jsr hex_long + moveq #0x20,D0 + jsr display_char + moveq #0x30,D0 + jsr display_char + moveq #0x78,D0 + jsr display_char + move.w 20(A6),D0 // num sectors + jsr hex_word + moveq #0x20,D0 + jsr display_char + moveq #0x30,D0 + jsr display_char + moveq #0x78,D0 + jsr display_char + move.l 16(A6),D0 // logical sector + jsr hex_long + moveq #13,D0 + jsr display_char + moveq #10,D0 + jsr display_char +#endif + move.l 22(A6),A0 // buffer + moveq #0,D3 + move.w 20(A6),D3 // count + beq .xr2 // no sectors + move.l 16(A6),D2 // start sector + btst #0,15(A6) // rwflag + beq.s .xr7 // read + // write + move.l A0,-(SP) // buffer + move.l D3,-(SP) // blkcnt + move.l D2,-(SP) // blknr + move.l D4,D0 // major + and.l #PUN_DEV,D0 + move.l pun_ptr,A0 + move.b pinfo_devnum(A0,D0.l),D0 // devnum in the USB bus + move.l D0,-(SP) // USB devnum + jsr _usb_stor_write + bra.s .xr5 +.xr2: + moveq #-1,D0 // error + bra.s .xr3 +.xr7: + move.l A0,-(SP) // buffer + move.l D3,-(SP) // blkcnt + move.l D2,-(SP) // blknr + move.l D4,D0 // major + and.l #PUN_DEV,D0 + move.l pun_ptr,A0 + move.b pinfo_devnum(A0,D0.l),D0 // devnum in the USB bus + move.l D0,-(SP) // USB devnum + jsr _usb_stor_read +.xr5: + lea 16(SP),SP + tst.l D0 + seq.b D0 + ext.w D0 + ext.l D0 + bclr #0,D0 // OK or device not responding -2 +.xr3: + rts + +XHInqDev2: + +#if DEBUG_BIOS_LAYER + lea debug136(PC),A0 + jsr display_string // Galvez: changed bsr by jsr to avoid linker error +#endif + move.l pun_ptr,A0 + moveq #0,D0 + move.w 10(A6),D0 // bios_device + cmp.l _usb_1st_disk_drive,D0 + bcs.s .xdd2 + cmp.l #MAX_LOGICAL_DRIVE,D0 + bcc.s .xdd2 + moveq #0,D1 + move.b pinfo_pun(A0,D0.l),D1 + bpl.s .xdd1 +.xdd2: + tst.l old_xhdi + beq.s .xdd4 + moveq #-46,D0 // invalid drive number + rts +.xdd4: + move.l old_xhdi,-(SP) + rts +.xdd1: + move.w D1,D2 + and.b #PUN_USB+PUN_DEV,D2 + beq.s .xdd2 + tst.l 12(A6) + beq.s .xdd5 + move.l 12(A6),A1 // major + move.w D2,(A1) +.xdd5: + tst.l 16(A6) + beq.s .xdd6 + move.l 16(A6),A1 // minor + clr.w (A1) +.xdd6: + tst.l 20(A6) + beq.s .xdd7 + move.l pinfo_pstart(A0,D0.l*4),D1 + move.l 20(A6),A1 // start_sector + move.l D1,(A1) +.xdd7: + tst.l 24(A6) + beq.s .xdd8 + lea pinfo_bpb(A0),A2 + move.l D0,D1 + asl.l #5,D1 // * 32 + add.l A2,D1 + move.l 24(A6),A1 // bpb + move.l D1,(A1) +.xdd8: + tst.l 28(A6) + beq.s .xdd9 + move.l 28(A6),A1 // blocks + lea pinfo_psize(A0),A2 + move.l (A2,D0.l*4),(A1) +.xdd9: + tst.l 32(A6) + beq.s .xdd10 + move.l 32(A6),A1 // partid + clr.l (A1) + move.b pinfo_ptype+3(A0,D0.l*4),D1 + move.w #0x0044,(A1) // NULL+ 'D' + move.b D1,2(A1) +.xdd10: + moveq #0,D0 + rts + +XHDriverSpecial: +XHGetCapacity: +XHMediumChanged: +XHMiNTInfo: +XHNewCookie: + + tst.l old_xhdi + beq.s .xn1 + moveq #-32,D0 // invalid function number + rts +.xn1: + move.l old_xhdi,-(SP) + rts + +XHDOSLimits: + + tst.l old_xhdi + bne.s .xn1 +#if DEBUG_BIOS_LAYER + lea debug137(PC),A0 + jsr display_string +#endif + moveq #0,D0 + move.w 10(A6),D0 // which + cmp.l #XH_DL_SECSIZ,D0 // maximal sector size (BIOS level) + bne.s .xl1 + move.l #0x4000,D0 + rts +.xl1: + cmp.l #XH_DL_MINFAT,D0 // minimal number of FATs + bne.s .xl2 + moveq #1,D0 + rts +.xl2: + cmp.l #XH_DL_MAXFAT,D0 // maximal number of FATs + bne.s .xl3 + moveq #2,D0 + rts +.xl3: + cmp.l #XH_DL_MINSPC,D0 // sectors per cluster minimal + bne.s .xl4 + moveq #2,D0 + rts +.xl4: + cmp.l #XH_DL_MAXSPC,D0 // sectors per cluster maximal + bne.s .xl5 +#ifdef COLDFIRE + moveq #64,D0 // for this Coldfire version of BDOS, else 2 +#else + moveq #2,D0 +#endif + rts +.xl5: + cmp.l #XH_DL_CLUSTS,D0 // maximal number of clusters of a 16 bit FAT + bne.s .xl6 + move.l #0x8000,D0 + rts +.xl6: + cmp.l #XH_DL_MAXSEC,D0 // maximal number of sectors + bne.S .xl7 +#ifdef COLDFIRE + move.l #0x200000,D0 // for this Coldfire version of BDOS, else 0x10000 +#else + move.l #0x10000,D0 +#endif + rts +.xl7: + cmp.l #XH_DL_DRIVES,D0 // maximal number of BIOS drives supported by the DOS + bne.s .xl8 + moveq #16,D0 + rts +.xl8: + moveq #-32,D0 // invalid function number + rts + + + + +#endif /* CONFIG_USB_STORAGE */ +#endif /* CONFIG_USB_UHCI || CONFIG_USB_OHCI || CONFIG_USB_EHCI || CONFIG_USB_ISP116X_HCD */ + + +#if defined(CONFIG_USB_UHCI) || defined(CONFIG_USB_OHCI) || defined(CONFIG_USB_EHCI) || \ + defined(CONFIG_USB_ISP116X_HCD) || defined(CONFIG_USB_ARANYM_HCD) +#ifdef CONFIG_USB_STORAGE +message1: .ascii "TOS4.04 " +message2: .asciz "USB " +message2b: .asciz ", disk installed in " +#endif +#endif + +crlf: .byte 13,10,0 +error: .asciz "No ram-disk installed, " +error1: .ascii "no enough radeon memory" + .byte 13,10,0 +error2: .ascii "all drives already used" + .byte 13,10,0 +error3: .ascii "error disk name" + .byte 13,10,0 +error4: .ascii "partition type not supported" + .byte 13,10,0 +blue: .byte 0x1B,0x62,0x34,0 +black: .byte 0x1B,0x62,0x3F,0 + + .align 2 + +#if defined(CONFIG_USB_UHCI) || defined(CONFIG_USB_OHCI) || defined(CONFIG_USB_EHCI) \ + || defined(CONFIG_USB_ISP116X_HCD) || defined(CONFIG_USB_ARANYM_HCD) +#ifdef CONFIG_USB_STORAGE + + .lcomm pun_ptr_usb,4 + .lcomm user_sp,4 + + .lcomm _usb_1st_disk_drive,4 + .lcomm old_hdv_bpb_usb,4 + .lcomm old_hdv_rw_usb,4 + .lcomm old_hdv_mediach_usb,4 + .lcomm old_xhdi,4 + .lcomm old_xhdi_version,4 + .lcomm product_name,4*(PUN_DEV+1) +#endif /* CONFIG_USB_STORAGE */ +#endif /* CONFIG_USB_UHCI || CONFIG_USB_OHCI || CONFIG_USB_EHCI || CONFIG_USB_ISP116X_HCD */ + + diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/cmd_usb.c b/BaS_codewarrior/FireBee/trunk/usb/store/cmd_usb.c new file mode 100644 index 0000000..9c6b3da --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/cmd_usb.c @@ -0,0 +1,731 @@ +/* + * Modified for Atari by David Gálvez 2010 + * Modified for Atari by Didier Mequignon 2009 + * + * (C) Copyright 2001 + * Denis Peter, MPL AG Switzerland + * + * Most of this source has been derived from the Linux USB + * project. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + */ + + +#include "config.h" +#include "asm-m68k/byteorder.h" +#include "usb.h" + + +//#undef RESET_START_STOP_CMDS +//#define RESET_START_STOP_CMDS + +#ifdef CONFIG_USB_STORAGE +static int usb_stor_curr_dev = -1; /* current device */ +#endif + +#ifdef PCI_XBIOS +extern short pci_init(void); +#endif + +/* some display routines (info command) */ +char *usb_get_class_desc(unsigned char dclass) +{ + switch (dclass) { + case USB_CLASS_PER_INTERFACE: + return "See Interface"; + case USB_CLASS_AUDIO: + return "Audio"; + case USB_CLASS_COMM: + return "Communication"; + case USB_CLASS_HID: + return "Human Interface"; + case USB_CLASS_PRINTER: + return "Printer"; + case USB_CLASS_MASS_STORAGE: + return "Mass Storage"; + case USB_CLASS_HUB: + return "Hub"; + case USB_CLASS_DATA: + return "CDC Data"; + case USB_CLASS_VENDOR_SPEC: + return "Vendor specific"; + default: + return ""; + } +} + +void usb_display_class_sub(unsigned char dclass, unsigned char subclass, + unsigned char proto) +{ + switch (dclass) { + case USB_CLASS_PER_INTERFACE: + printf("See Interface"); + break; + case USB_CLASS_HID: + printf("Human Interface, Subclass: "); + switch (subclass) { + case USB_SUB_HID_NONE: + printf("None"); + break; + case USB_SUB_HID_BOOT: + printf("Boot "); + switch (proto) { + case USB_PROT_HID_NONE: + printf("None"); + break; + case USB_PROT_HID_KEYBOARD: + printf("Keyboard"); + break; + case USB_PROT_HID_MOUSE: + printf("Mouse"); + break; + default: + printf("reserved"); + break; + } + break; + default: + printf("reserved"); + break; + } + break; + case USB_CLASS_MASS_STORAGE: + printf("Mass Storage, "); + switch (subclass) { + case US_SC_RBC: + printf("RBC "); + break; + case US_SC_8020: + printf("SFF-8020i (ATAPI)"); + break; + case US_SC_QIC: + printf("QIC-157 (Tape)"); + break; + case US_SC_UFI: + printf("UFI"); + break; + case US_SC_8070: + printf("SFF-8070"); + break; + case US_SC_SCSI: + printf("Transp. SCSI"); + break; + default: + printf("reserved"); + break; + } + printf(", "); + switch (proto) { + case US_PR_CB: + printf("Command/Bulk"); + break; + case US_PR_CBI: + printf("Command/Bulk/Int"); + break; + case US_PR_BULK: + printf("Bulk only"); + break; + default: + printf("reserved"); + break; + } + break; + default: + printf("%s", usb_get_class_desc(dclass)); + break; + } +} + +void usb_display_string(struct usb_device *dev, int idx) +{ + char buffer[256]; + if (idx != 0) { + if (usb_string(dev, idx, &buffer[0], 256) > 0) + printf("String: \"%s\"", buffer); + } +} + +void usb_display_desc(struct usb_device *dev) +{ + if (dev->descriptor.bDescriptorType == USB_DT_DEVICE) { + printf("%d: %s, USB Revision %x.%x\n", dev->devnum, + usb_get_class_desc(dev->config.if_desc[0].bInterfaceClass), + (dev->descriptor.bcdUSB>>8) & 0xff, + dev->descriptor.bcdUSB & 0xff); + + if (strlen(dev->mf) || strlen(dev->prod) || + strlen(dev->serial)) + printf(" - %s %s %s\n", dev->mf, dev->prod, + dev->serial); + if (dev->descriptor.bDeviceClass) { + printf(" - Class: "); + usb_display_class_sub(dev->descriptor.bDeviceClass, + dev->descriptor.bDeviceSubClass, + dev->descriptor.bDeviceProtocol); + printf("\n"); + } else { + printf(" - Class: (from Interface) %s\n", + usb_get_class_desc( + dev->config.if_desc[0].bInterfaceClass)); + } + printf(" - PacketSize: %d Configurations: %d\n", + dev->descriptor.bMaxPacketSize0, + dev->descriptor.bNumConfigurations); + printf(" - Vendor: 0x%04x Product 0x%04x Version %d.%d\n", + dev->descriptor.idVendor, dev->descriptor.idProduct, + (dev->descriptor.bcdDevice>>8) & 0xff, + dev->descriptor.bcdDevice & 0xff); + } + +} + +void usb_display_conf_desc(struct usb_config_descriptor *config, + struct usb_device *dev) +{ + printf(" Configuration: %d\n", config->bConfigurationValue); + printf(" - Interfaces: %d %s%s%dmA\n", config->bNumInterfaces, + (config->bmAttributes & 0x40) ? "Self Powered " : "Bus Powered ", + (config->bmAttributes & 0x20) ? "Remote Wakeup " : "", + config->MaxPower*2); + if (config->iConfiguration) { + printf(" - "); + usb_display_string(dev, config->iConfiguration); + printf("\n"); + } +} + +void usb_display_if_desc(struct usb_interface_descriptor *ifdesc, + struct usb_device *dev) +{ + printf(" Interface: %d\n", ifdesc->bInterfaceNumber); + printf(" - Alternate Setting %d, Endpoints: %d\n", + ifdesc->bAlternateSetting, ifdesc->bNumEndpoints); + printf(" - Class "); + usb_display_class_sub(ifdesc->bInterfaceClass, + ifdesc->bInterfaceSubClass, ifdesc->bInterfaceProtocol); + printf("\n"); + if (ifdesc->iInterface) { + printf(" - "); + usb_display_string(dev, ifdesc->iInterface); + printf("\n"); + } +} + +void usb_display_ep_desc(struct usb_endpoint_descriptor *epdesc) +{ + printf(" - Endpoint %d %s ", epdesc->bEndpointAddress & 0xf, + (epdesc->bEndpointAddress & 0x80) ? "In" : "Out"); + switch ((epdesc->bmAttributes & 0x03)) { + case 0: + printf("Control"); + break; + case 1: + printf("Isochronous"); + break; + case 2: + printf("Bulk"); + break; + case 3: + printf("Interrupt"); + break; + } + printf(" MaxPacket %d", epdesc->wMaxPacketSize); + if ((epdesc->bmAttributes & 0x03) == 0x3) + printf(" Interval %dms", epdesc->bInterval); + printf("\n"); +} + +/* main routine to diasplay the configs, interfaces and endpoints */ +void usb_display_config(struct usb_device *dev) +{ + struct usb_config_descriptor *config; + struct usb_interface_descriptor *ifdesc; + struct usb_endpoint_descriptor *epdesc; + int i, ii; + + config = &dev->config; + usb_display_conf_desc(config, dev); + for (i = 0; i < config->no_of_if; i++) { + ifdesc = &config->if_desc[i]; + usb_display_if_desc(ifdesc, dev); + for (ii = 0; ii < ifdesc->no_of_ep; ii++) { + epdesc = &ifdesc->ep_desc[ii]; + usb_display_ep_desc(epdesc); + } + } + printf("\n"); +} + +static inline char *portspeed(int speed) +{ + if (speed == USB_SPEED_HIGH) + return "480 Mb/s"; + else if (speed == USB_SPEED_LOW) + return "1.5 Mb/s"; + else + return "12 Mb/s"; +} + +/* shows the device tree recursively */ +void usb_show_tree_graph(struct usb_device *dev, char *pre) +{ + int i, idx; + int has_child, last_child, port; + + idx = strlen(pre); + printf(" %s", pre); + /* check if the device has connected children */ + has_child = 0; + for (i = 0; i < dev->maxchild; i++) { + if (dev->children[i] != NULL) + has_child = 1; + } + /* check if we are the last one */ + last_child = 1; + if (dev->parent != NULL) { + for (i = 0; i < dev->parent->maxchild; i++) { + /* search for children */ + if (dev->parent->children[i] == dev) { + /* found our pointer, see if we have a + * little sister + */ + port = i; + while (i++ < dev->parent->maxchild) { + if (dev->parent->children[i] != NULL) { + /* found a sister */ + last_child = 0; + break; + } /* if */ + } /* while */ + } /* device found */ + } /* for all children of the parent */ + printf("\b+-"); + /* correct last child */ + if (last_child) + pre[idx-1] = ' '; + } /* if not root hub */ + else + printf(" "); + printf("%d ", dev->devnum); + pre[idx++] = ' '; + pre[idx++] = has_child ? '|' : ' '; + pre[idx] = 0; + printf(" %s (%s, %dmA)\n", usb_get_class_desc( + dev->config.if_desc[0].bInterfaceClass), + portspeed(dev->speed), + dev->config.MaxPower * 2); + if (strlen(dev->mf) || strlen(dev->prod) || strlen(dev->serial)) + printf(" %s %s %s %s\n", pre, dev->mf, dev->prod, dev->serial); + printf(" %s\n", pre); + if (dev->maxchild > 0) { + for (i = 0; i < dev->maxchild; i++) { + if (dev->children[i] != NULL) { + usb_show_tree_graph(dev->children[i], pre); + pre[idx] = 0; + } + } + } +} + +/* main routine for the tree command */ +void usb_show_tree(struct usb_device *dev) +{ + char preamble[32]; + + memset(preamble, 0, 32); + usb_show_tree_graph(dev, &preamble[0]); +} + + +/****************************************************************************** + * usb boot command intepreter. Derived from diskboot + */ +#if 0 +#ifdef CONFIG_USB_STORAGE +int do_usbboot(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ + char *boot_device = NULL; + char *ep; + int dev, part = 1, rcode; + ulong addr, cnt; + disk_partition_t info; + image_header_t *hdr; + block_dev_desc_t *stor_dev; +#if defined(CONFIG_FIT) + const void *fit_hdr = NULL; +#endif + + switch (argc) { + case 1: + addr = CONFIG_SYS_LOAD_ADDR; + boot_device = getenv("bootdevice"); + break; + case 2: + addr = strtoul(argv[1], NULL, 16); + boot_device = getenv("bootdevice"); + break; + case 3: + addr = strtoul(argv[1], NULL, 16); + boot_device = argv[2]; + break; + default: +// cmd_usage(cmdtp); + return 1; + } + + if (!boot_device) { + puts("\n** No boot device **\n"); + return 1; + } + + dev = strtoul(boot_device, &ep, 16); + stor_dev = usb_stor_get_dev(dev); + if (stor_dev->type == DEV_TYPE_UNKNOWN) { + printf("\n** Device %d not available\n", dev); + return 1; + } + if (stor_dev->block_read == NULL) { + printf("storage device not initialized. Use usb scan\n"); + return 1; + } + if (*ep) { + if (*ep != ':') { + puts("\n** Invalid boot device, use `dev[:part]' **\n"); + return 1; + } + part = strtoul(++ep, NULL, 16); + } + + if (get_partition_info(stor_dev, part, &info)) { + /* try to boot raw .... */ + strncpy((char *)&info.type[0], BOOT_PART_TYPE, + sizeof(BOOT_PART_TYPE)); + strncpy((char *)&info.name[0], "Raw", 4); + info.start = 0; + info.blksz = 0x200; + info.size = 2880; + printf("error reading partinfo...try to boot raw\n"); + } + if ((strncmp((char *)info.type, BOOT_PART_TYPE, + sizeof(info.type)) != 0) && + (strncmp((char *)info.type, BOOT_PART_COMP, + sizeof(info.type)) != 0)) { + printf("\n** Invalid partition type \"%.32s\"" + " (expect \"" BOOT_PART_TYPE "\")\n", + info.type); + return 1; + } + printf("\nLoading from USB device %d, partition %d: " + "Name: %.32s Type: %.32s\n", + dev, part, info.name, info.type); + + debug("First Block: %ld, # of blocks: %ld, Block Size: %ld\n", + info.start, info.size, info.blksz); + + if (stor_dev->block_read(dev, info.start, 1, (ulong *)addr) != 1) { + printf("** Read error on %d:%d\n", dev, part); + return 1; + } + + switch (genimg_get_format((void *)addr)) { + case IMAGE_FORMAT_LEGACY: +// hdr = (image_header_t *)addr; + +// if (!image_check_hcrc(hdr)) { +// puts("\n** Bad Header Checksum **\n"); + return 1; + } + +// image_print_contents(hdr); + +// cnt = image_get_image_size(hdr); + break; +#if defined(CONFIG_FIT) + case IMAGE_FORMAT_FIT: + fit_hdr = (const void *)addr; + puts("Fit image detected...\n"); + + cnt = fit_get_size(fit_hdr); + break; +#endif + default: + puts("** Unknown image type\n"); + return 1; + } + + cnt += info.blksz - 1; + cnt /= info.blksz; + cnt -= 1; + + if (stor_dev->block_read(dev, info.start+1, cnt, + (ulong *)(addr+info.blksz)) != cnt) { + printf("\n** Read error on %d:%d\n", dev, part); + return 1; + } + +#if defined(CONFIG_FIT) + /* This cannot be done earlier, we need complete FIT image in RAM + * first + */ + if (genimg_get_format((void *)addr) == IMAGE_FORMAT_FIT) { + if (!fit_check_format(fit_hdr)) { + puts("** Bad FIT image format\n"); + return 1; + } + fit_print_contents(fit_hdr); + } +#endif + + /* Loading ok, update default load address */ + load_addr = addr; + + flush_cache(addr, (cnt+1)*info.blksz); + + /* Check if we should attempt an auto-start */ + if (((ep = getenv("autostart")) != NULL) && (strcmp(ep, "yes") == 0)) { + char *local_args[2]; + extern int do_bootm(cmd_tbl_t *, int, int, char *[]); + local_args[0] = argv[0]; + local_args[1] = NULL; + printf("Automatic boot of image at addr 0x%08lX ...\n", addr); + rcode = do_bootm(cmdtp, 0, 1, local_args); + return rcode; + } + return 0; +} +#endif +#endif /* CONFIG_USB_STORAGE */ + + +/****************************************************************************** + * usb command intepreter + */ +int do_usb(int argc, char **argv) +{ + + int i; + struct usb_device *dev = NULL; + +#ifdef CONFIG_USB_STORAGE + block_dev_desc_t *stor_dev; +#endif + extern char usb_started; + + if ((strncmp(argv[1], "reset", 5) == 0) || + (strncmp(argv[1], "start", 5) == 0)) { + usb_stop(); + printf("(Re)start USB...\n"); +#ifdef PCI_XBIOS + i = pci_init(); +#else + if (usb_init() >= 0) + i = 1; +#endif + +#ifdef CONFIG_USB_STORAGE + /* try to recognize storage devices immediately */ + if (i == 1) + usb_stor_curr_dev = usb_stor_scan( ); +#endif + return 0; + } + if (strncmp(argv[1], "stop", 4) == 0) { +#ifdef CONFIG_USB_KEYBOARD + if (argc == 2) { + if (usb_kbd_deregister() != 0) { + printf("USB not stopped: usbkbd still" + " using USB\n"); + return 1; + } + } else { + /* forced stop, switch console in to serial */ + usb_kbd_deregister(); + } +#endif + printf("stopping USB..\n"); + usb_stop(); + return 0; + } + if (!usb_started) { + printf("USB is stopped. Please issue 'usb start' first.\n"); + return 1; + } + + if (strncmp(argv[1], "tree", 4) == 0) { + printf("\nDevice Tree:\n"); + usb_show_tree(usb_get_dev_index(0)); + return 0; + } + if (strncmp(argv[1], "inf", 3) == 0) + { + int d1; + if (argc == 2) + { + for (d1 = 0; d1 < USB_MAX_DEVICE; d1++) { + dev = usb_get_dev_index(d1); + if (dev == NULL) + break; + usb_display_desc(dev); + usb_display_config(dev); + } + return 0; + } else + { + int d2; + + i = strtoul(argv[2], NULL, 16); + printf("config for device %d\n", i); + for (d2 = 0; d2 < USB_MAX_DEVICE; d2++) { + dev = usb_get_dev_index(d2); + if (dev == NULL) + break; + if (dev->devnum == i) + break; + } + if (dev == NULL) { + printf("*** NO Device avaiable ***\n"); + return 0; + } else { + usb_display_desc(dev); + usb_display_config(dev); + } + } + return 0; + } +#ifdef CONFIG_USB_STORAGE + if (strncmp(argv[1], "stor", 4) == 0) + return usb_stor_info(); +#if 0 + if (strncmp(argv[1], "part", 4) == 0) { + int devno, ok = 0; + if (argc == 2) { + for (devno = 0; devno < USB_MAX_STOR_DEV; ++devno) { + stor_dev = usb_stor_get_dev(devno); + if (stor_dev->type != DEV_TYPE_UNKNOWN) { + ok++; + if (devno) + printf("\n"); + printf("print_part of %x\n", devno); + print_part(stor_dev); + } + } + } else { + devno = strtoul(argv[2], NULL, 16); + stor_dev = usb_stor_get_dev(devno); + if (stor_dev->type != DEV_TYPE_UNKNOWN) { + ok++; + printf("print_part of %x\n", devno); + print_part(stor_dev); + } + } + if (!ok) { + printf("\nno USB devices available\n"); + return 1; + } + return 0; + } +#endif + if (strcmp(argv[1], "read") == 0) { + if (usb_stor_curr_dev < 0) { + printf("no current device selected\n"); + return 1; + } + if (argc == 5) { + unsigned long addr = strtoul(argv[2], NULL, 16); + unsigned long blk = strtoul(argv[3], NULL, 16); + unsigned long cnt = strtoul(argv[4], NULL, 16); + unsigned long n; + printf("\nUSB read: device %d block # %ld, count %ld" + " ... ", usb_stor_curr_dev, blk, cnt); + stor_dev = usb_stor_get_dev(usb_stor_curr_dev); + n = stor_dev->block_read(usb_stor_curr_dev, blk, cnt, + (unsigned long *)addr); + printf("%ld blocks read: %s\n", n, + (n == cnt) ? "OK" : "ERROR"); + if (n == cnt) + return 0; + return 1; + } + } + if (strncmp(argv[1], "dev", 3) == 0) { + if (argc == 3) { + int device = (int)strtoul(argv[2], NULL, 10); + printf("\nUSB device %d: ", device); + if (device >= USB_MAX_STOR_DEV) { + printf("unknown device\n"); + return 1; + } + printf("\n Device %d: ", device); + stor_dev = usb_stor_get_dev(device); + dev_print(stor_dev); + if (stor_dev->type == DEV_TYPE_UNKNOWN) + return 1; + usb_stor_curr_dev = device; + printf("... is now current device\n"); + return 0; + } else { + printf("\nUSB device %d: ", usb_stor_curr_dev); + stor_dev = usb_stor_get_dev(usb_stor_curr_dev); + dev_print(stor_dev); + if (stor_dev->type == DEV_TYPE_UNKNOWN) + return 1; + return 0; + } + return 0; + } +#endif /* CONFIG_USB_STORAGE */ +// cmd_usage(cmdtp); + return 1; +} +#if 0 +#ifdef CONFIG_USB_STORAGE +U_BOOT_CMD( + usb, 5, 1, do_usb, + "USB sub-system", + "reset - reset (rescan) USB controller\n" + "usb stop [f] - stop USB [f]=force stop\n" + "usb tree - show USB device tree\n" + "usb info [dev] - show available USB devices\n" + "usb storage - show details of USB storage devices\n" + "usb dev [dev] - show or set current USB storage device\n" + "usb part [dev] - print partition table of one or all USB storage" + " devices\n" + "usb read addr blk# cnt - read `cnt' blocks starting at block `blk#'\n" + " to memory address `addr'" +); + + +U_BOOT_CMD( + usbboot, 3, 1, do_usbboot, + "boot from USB device", + "loadAddr dev:part" +); + +#else +U_BOOT_CMD( + usb, 5, 1, do_usb, + "USB sub-system", + "reset - reset (rescan) USB controller\n" + "usb tree - show USB device tree\n" + "usb info [dev] - show available USB devices" +); +#endif +#endif diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/compile.txt b/BaS_codewarrior/FireBee/trunk/usb/store/compile.txt new file mode 100644 index 0000000..c14b6bd --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/compile.txt @@ -0,0 +1,6 @@ +I have used gcc 4.4.3 native version and gcc 4.4.3 cross-compiler version to +compile these sources. +There are 4 targets "make ethernat", "make netusbee", "make aranym", "make ohci-pci". +If you use cross-compiler add "CROSS=yes" to the commands above. +Before compiling "ohci-pci" target you must "make clean" if you have been compiling the other targets before. +"make all" compiles the 4 targets. diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/config.h b/BaS_codewarrior/FireBee/trunk/usb/store/config.h new file mode 100644 index 0000000..ce5464f --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/config.h @@ -0,0 +1,54 @@ +#ifndef _CONFIG_H +#define _CONFIG_H + +//#define ARCH m68k +//#define COLDFIRE /* Besides change one(first) .chip in detxbios.S 68060 or 5200 */ +//#define CONFIG_USB_ISP116X_HCD +//#define SUPERVISOR +/* Change .chip in detxbios.S 68060 or 5200 */ + +/*----- USB -----*/ +//#define CONFIG_LEGACY_USB_INIT_SEQ +#define CONFIG_USB_STORAGE +//#define CONFIG_USB_KEYBOARD +//#define CONFIG_USB_MOUSE +//#define CONFIG_USB_INTERRUPT_POLLING +#define CONFIG_USB_ARANYM_HCD +/*----- ISP116x-HCD ------*/ +#define ISP116X_HCD_USE_UDELAY +#define ISP116X_HCD_USE_EXTRA_DELAY +//#define ISP116X_HCD_SEL15kRES +//#define ISP116X_HCD_OC_ENABLE +//#define ISP116X_HCD_REMOTE_WAKEUP_ENABLE +/*----- OHCI-HCI -----*/ +#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS 1 +#define CONFIG_USB_OHCI +//#define PCI_XBIOS /* Defined in the makefile */ + + +/*----- DEBUG -----*/ +/* You should activate global debug, + * #define DEBUG_GLOBAL 1 to turn on + * #define DEBUG_GLOBAL 0 to turn off + * After global debug is enable + * you can activate the debug independently + * in each layer where debug is possible + */ + +#define DEBUG_GLOBAL 1 +#if DEBUG_GLOBAL +/* Define only one of the three debug posibilities below */ +#define DEBUG_TO_FILE 1 +#define DEBUG_TO_ARANYM 0 /* NOTE: No arguments are passed to the printf function */ +#define DEBUG_TO_CONSOLE 0 + +/* Define which local layer you want on */ +#define DEBUG_HOST_LAYER 0 +#define DEBUG_USB_LAYER 0 +#define DEBUG_HUB_LAYER 0 +#define DEBUG_STORAGE_LAYER 0 +#define DEBUG_XHDI_LAYER 0 +#define DEBUG_BIOS_LAYER 0 /* NOTE: Always to console */ + +#endif +#endif /* _CONFIG_H */ diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/debug.c b/BaS_codewarrior/FireBee/trunk/usb/store/debug.c new file mode 100644 index 0000000..a2a1a86 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/debug.c @@ -0,0 +1,64 @@ +/* + * debug.c + * + * This file is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This file is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "config.h" + +#include +#include +#include + + +#if DEBUG_TO_FILE +static FILE *debug_handle = NULL; + + +void +debug_init(char *file) +{ + char filename[20] = ""; + + strcpy(filename, file); + + debug_handle = fopen(filename, "a"); + + if (debug_handle != NULL) + setvbuf (debug_handle, NULL, _IONBF, 0); +} + + +void debug_exit(void) +{ + if (debug_handle != NULL && debug_handle != stdout) + fclose(debug_handle); + debug_handle = NULL; +} + + +void debug(char *FormatString, ...) +{ + va_list arg_ptr; + + va_start(arg_ptr, FormatString); + vfprintf(debug_handle, FormatString, arg_ptr); + va_end(arg_ptr); + fflush(debug_handle); + +} +#endif + + diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/debug.h b/BaS_codewarrior/FireBee/trunk/usb/store/debug.h new file mode 100644 index 0000000..e64b59e --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/debug.h @@ -0,0 +1,97 @@ +/* + * debug.h + * + * This file is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This file is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef _DEBUG_H +#define _DEBUG_H + +#include "config.h" +#include "host/aranym/nf_ops.h" + +void debug_init ( char *file); +void debug_exit ( void ); +void debug (char *FormatString, ...); + +/* You should activate global debug in config.h, uncommenting the #define DEBUG line */ +/* After global debug is enable you can activate them independly in each file */ + + +#if DEBUG_GLOBAL +#if DEBUG_TO_FILE +#define DEBUG(fmt, args...) debug_init("usb.log"); \ + debug( "%s: "fmt"\n\r" , __FUNCTION__, ##args); \ + debug_exit( ) +#endif /* DEBUG_TO_FILE */ + +#if DEBUG_TO_ARANYM +#define DEBUG(fmt, args...) nf_debug(fmt ) +#endif /* DEBUG_TO_ARANYM */ + +#if DEBUG_TO_CONSOLE +#define DEBUG(fmt, args...) printf("%s: "fmt"\n\r" , __FUNCTION__, ##args) +#endif /* DEBUG_TO_CONSOLE */ + +/* This allows control debug messages independenly for different layers */ +#if DEBUG_HOST_LAYER +#define DEBUG_HOST(fmt, args...) DEBUG(fmt, ##args) +#else +#define DEBUG_HOST(fmt, args...) {} +#endif +#if DEBUG_USB_LAYER +#define DEBUG_USB(fmt, args...) DEBUG(fmt, ##args) +#else +#define DEBUG_USB(fmt, args...) {} +#endif +#if DEBUG_HUB_LAYER +#define DEBUG_HUB(fmt, args...) DEBUG(fmt, ##args) +#else +#define DEBUG_HUB(fmt, args...) {} +#endif +#if DEBUG_STORAGE_LAYER +#define DEBUG_STORAGE(fmt, args...) DEBUG(fmt, ##args) +#else +#define DEBUG_STORAGE(fmt, args...) {} +#endif +#if DEBUG_XHDI_LAYER +#define DEBUG_XHDI(fmt, args...) DEBUG(fmt, ##args) +#else +#define DEBUG_XHDI(fmt, args...) {} +#endif + +#else +#define DEBUG(fmt, args...) {} +#if DEBUG_HOST_LAYER +#define DEBUG_HOST(fmt, args...) DEBUG(fmt, ##args) +#endif +#define DEBUG(fmt, args...) {} +#if DEBUG_USB_LAYER +#define DEBUG_USB(fmt, args...) DEBUG(fmt, ##args) +#endif +#if DEBUG_HUB_LAYER +#define DEBUG_HUB(fmt, args...) DEBUG(fmt, ##args) +#endif +#if DEBUG_STORAGE_LAYER +#define DEBUG_STORAGE(fmt, args...) DEBUG(fmt, ##args) +#endif +#if DEBUG_XHDI_LAYER +#define DEBUG_XHDI(fmt, args...) DEBUG(fmt, ##args) +#endif + +#endif /* DEBUG_GLOBAL */ + + +#endif /* _DEBUG_H */ diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/debug2.S b/BaS_codewarrior/FireBee/trunk/usb/store/debug2.S new file mode 100644 index 0000000..0c8dd8a --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/debug2.S @@ -0,0 +1,840 @@ +/* Debug the CT60 + * + * Didier Mequignon, 2003-2006, e-mail: aniplay@wanadoo.fr + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + .chip 68040 + .globl exception + +#ifdef COLDFIRE + .globl null + +#include "fire.h" +#endif + +#include "vars.h" + +#define DEBUG + +#ifdef DEBUG + .global display_string,hex_long,hex_word,hex_byte,display_char,wait_key,_debug +#endif + + .text + +#ifdef COLDFIRE + +null: + clr.l 0x380 // not valid + move.l SP,0x3C0 + move.l A6,0x3BC + lea 0x384,A6 + movem.l D0-D7/A0-A5,(A6) + clr.l 0x3C8 // USP + moveq #-1,D1 +#endif + +exception: + + clr.l memvalid + lea.l mess1(PC),A0 + bsr display_string +#ifdef COLDFIRE + ext.l D1 + addq.l #1,D1 + move.l D1,D7 // vector number +#else + addq.w #1,D1 + move.w D1,D7 // vector number +#endif + moveq #0,D0 + move.w D7,D0 +#ifdef COLDFIRE + .chip 68060 + divu #10,D0 + .chip 5200 + move.l D0,D1 + and.l #7,D0 + beq.s .ex1 + or.l #0x30,D0 + bsr display_char +.ex1: + swap D1 + move.w D1,D0 + or.l #0x30,D0 +#else + divu #10,D0 + and.w #7,D0 + beq.s .ex1 + or.w #0x30,D0 + bsr display_char +.ex1: + swap d0 + or.w #0x30,D0 +#endif + bsr display_char + moveq #0x3A,D0 + bsr display_char + moveq #0x20,D0 + bsr display_char + lea.l tab_mess_exc(PC),A0 + move.w D7,D0 + bsr display_tab + moveq #13,D0 + bsr display_char + moveq #10,D0 + bsr display_char +#ifdef COLDFIRE + tst.w D7 + beq .ex0 +#endif + lea.l mess2(PC),A0 // SR + bsr display_string +#ifdef COLDFIRE + move.w save_sr,D0 // SR +#else + move.l 0x3C0,A0 //SSP + move.w (A0),D0 +#endif + bsr hex_word // SR + lea.l mess3(PC),A0 + bsr display_string +#ifdef COLDFIRE + move.w save_sr,D2 // SR + and.l #0xB71F,D2 +#else + move.l 0x3C0,A0 //SSP + move.w (A0),D2 // SR + and.w #0xB71F,D2 +#endif + lea.l tab_status(PC),A1 + moveq #15,D1 +.ex5: + btst.l D1,D2 + beq.s .ex6 + moveq #0,D0 + move.b (A1,D1),D0 + move.w D0,D3 +#ifdef COLDFIRE + and.l #0xF8,D3 + cmp.l #0x30,D3 +#else + and.w #0xF8,D3 + cmp.w #0x30,D3 +#endif + bne.s .ex4 + move.w D0,-(SP) + moveq #0x49,D0 // I + bsr display_char + move.w (SP)+,D0 +.ex4: + bsr display_char + moveq #0x20,D0 + bsr display_char +.ex6: +#ifdef COLDFIRE + subq.l #1,D1 + bpl.s .ex5 +.ex0: +#else + dbf D1,.ex5 +#endif + lea.l mess4(PC),A0 // PC + bsr display_string +#ifdef COLDFIRE + move.l save_pc,D0 // PC +#else + move.l 0x3C0,A0 // SSP + move.l 2(A0),D0 // PC +#endif + bsr hex_long + lea.l mess10(PC),A0 // Basepage + bsr display_string + move.l 0x6EE4,D0 + bsr hex_long +#ifdef COLDFIRE + tst.w D7 + beq .ex2 +#endif + lea.l mess5(PC),A0 // CACR + bsr display_string +#ifdef COLDFIRE + .chip 68060 + movec.l CACR,D0 // from value stored in the CF68KLIB + .chip 5200 + bsr hex_long + cmp.l #2,D7 + bne.s .ex2 + lea.l mess6(PC),A0 // address fault + bsr display_string + move.l address_fault,D0 // from value stored in the CF68KLIB + bsr hex_long +#else /* ATARI - CT60 */ + movec.l CACR,D0 + bsr hex_long + cmp.w #2,D7 + beq.s .ex3 // Acces Fault + cmp.w #3,D7 + beq.s .ex3 // Adress Error + cmp.w #5,D7 + beq.s .ex3 // Zero Divide + cmp.w #9,D7 + bne .ex2 // <> Trace +.ex3: + lea.l mess6(PC),A0 // address fault + bsr display_string + move.l 0x3C0,A0 // SSP + move.l 8(A0),D0 // address fault + bsr hex_long + cmp.w #2,D7 + bne .ex2 // <> Acces Fault + lea.l mess7(PC),A0 // FSLW + bsr display_string + move.l 0x3C0,A0 // SSP + move.l 12(A0),D0 // FSLW + bsr hex_long + lea.l mess3(PC),A0 + bsr display_string + moveq #13,D0 + bsr display_char + moveq #10,D0 + bsr display_char + move.l 0x3C0,A0 // SSP + move.l 12(A0),D2 // FSLW + and.l #0x0BFFFFFD,D2 + lea.l tab_fslw1(PC),A1 + lea.l tab_fslw2(PC),A2 + lea.l tab_fslw3(PC),A3 + moveq #31,D1 + moveq #0,D3 +.ex13: + btst.l D1,D2 + beq.s .ex14 + moveq #0,D0 + move.b (A1,D3),D0 + bsr display_char + moveq #0,D0 + move.b (A2,D3),D0 + cmp.b #0x20,D0 + beq.s .ex12 + bsr display_char + moveq #0,D0 + move.b (A3,D3),D0 + cmp.b #0x20,D0 + beq.s .ex12 + bsr display_char +.ex12: + moveq #0x20,D0 + bsr display_char +.ex14: + addq.w #1,D3 + dbf D1,.ex13 +#endif /* COLDFIRE */ +.ex2: + lea.l mess8(PC),A0 // SSP + bsr display_string + move.l 0x3C0,D0 // SSP + bsr hex_long + lea.l mess9(PC),A0 // USP + bsr display_string + move.l 0x3C8,D0 // USP + bsr hex_long + lea.l 0x384,A1 // registers + lea.l 32(A1),A2 + moveq #7,D1 +.ex8: + moveq #13,D0 + bsr display_char + moveq #10,D0 + bsr display_char + moveq #0x44,D0 + bsr display_char + moveq #7,D0 +#ifdef COLDFIRE + sub.l D1,D0 + or.l #0x30,D0 +#else + sub.w D1,D0 + or.w #0x30,D0 +#endif + move.w D0,-(SP) + bsr display_nb + move.l (A1),D0 + bsr hex_long // data registers + moveq #0x20,D0 + bsr display_char + tst.w D1 + beq.s .ex9 + moveq #0x41,D0 + bsr display_char + move.w (SP),D0 + bsr display_nb + move.l (A2),D0 + bsr hex_long // address registers + moveq #0x20,D0 + bsr display_char +.ex9: + addq.l #2,SP + addq.l #4,A1 + addq.l #4,A2 +#ifdef COLDFIRE + subq.l #1,D1 + bpl.s .ex8 +#else + dbf D1,.ex8 +#endif + moveq #13,D0 + bsr display_char +.loop_wait_key: +#ifdef COLDFIRE +#ifdef DEBUG + move.w #1,-(SP) // AUX +#else + move.w #2,-(SP) // CON +#endif +#else + move.w #2,-(SP) // CON +#endif + move.w #2,-(SP) // Bconin + trap #13 + addq.l #4,SP + ext.l D0 + move.l D0,-(SP) + move.l #0x5F504349,D0 + lea 0xED0000,A0 // 128 KB + cmp.l (A0),D0 // _PCI + beq.s .pci_drivers + lea 0xEC0000,A0 // 192 KB + cmp.l (A0),D0 // _PCI + beq.s .pci_drivers + lea 0xEB0000,A0 // 256 KB + cmp.l (A0),D0 // _PCI + beq.s .pci_drivers + lea 0xEA0000,A0 // 320 KB + cmp.l (A0),D0 // _PCI + bne.s .no_pci_drivers +.pci_drivers: + jsr 40(A0) // drivers PCI in flash, add dbug (68k disassembler) + move.l D0,(SP) + bne .no_pci_drivers + addq.l #4,SP + bra.s .loop_wait_key +.no_pci_drivers: + move.l (SP)+,D0 +#ifdef COLDFIRE + and.l #0xFF,D0 + cmp.l #0x6D,D0 // m +#else + cmp.b #0x6D,D0 // m +#endif + beq.s .memory_dump +#ifdef COLDFIRE + cmp.l #0x70,D0 // p +#else + cmp.b #0x70,D0 // p +#endif + beq.s .patch_memory +#ifdef DEBUG +#ifdef COLDFIRE + cmp.l #0x20,D0 +#else + cmp.b #0x20,D0 +#endif + bne .loop_wait_key + lea mess14(PC),A0 + bsr display_string +#endif + rts +.memory_dump: + lea mess11(PC),A0 // memory dump + bsr display_string + bsr get_hex_value + move.l D0,A0 + bsr dump + bra .loop_wait_key +.patch_memory: + lea mess12(PC),A0 // patch memory + bsr display_string + bsr get_hex_value + move.l D0,A1 + lea mess13(PC),A0 // value + bsr display_string + bsr get_hex_value + cmp.l #0x100,D0 + bcc.s .word_value + move.b D0,(A1) + lea crlf(PC),A0 + bsr display_string + move.l A1,D0 + bsr hex_long + moveq #0x20,D0 + bsr display_char + move.b (A1),D0 + bsr hex_byte + bra .loop_wait_key +.word_value: + cmp.l #0x10000,D0 + bcc.s .long_value + move.w D0,(A1) + lea crlf(PC),A0 + bsr display_string + move.l A1,D0 + bsr hex_long + moveq #0x20,D0 + bsr display_char + move.w (A1),D0 + bsr hex_word + bra .loop_wait_key +.long_value: + move.l D0,(A1) + lea crlf(PC),A0 + bsr display_string + move.l A1,D0 + bsr hex_long + moveq #0x20,D0 + bsr display_char + move.l (A1),D0 + bsr hex_long + bra .loop_wait_key + +display_nb: + + bsr display_char + moveq #0x3A,D0 + bsr display_char + moveq #0x24,D0 + bsr display_char + rts + +display_tab: + +#ifdef COLDFIRE + move.l D1,-(SP) +#endif + move.w D0,-(SP) + moveq #0,D0 +.dt1: +#ifdef COLDFIRE + move.b (A0),D1 + extb.l D1 + cmp.l #-1,D1 + beq.s .dt3 + moveq #0,D1 + move.w (SP),D1 + cmp.l D1,D0 +#else + cmp.b #-1,(A0) + beq.s .dt3 + cmp.w (SP),D0 +#endif + beq.s .dt4 +.dt2: + tst.b (A0)+ + bne.s .dt2 +#ifdef COLDFIRE + addq.l #1,D0 +#else + addq.w #1,D0 +#endif + bra.s .dt1 +.dt4: + bsr display_string +.dt3: + + addq.l #2,SP +#ifdef COLDFIRE + move.l (SP)+,D1 +#endif + rts + +hex_long: + move.l D0,-(SP) + swap D0 + bsr.s hex_word + move.l (SP)+,D0 +hex_word: + move.w D0,-(SP) +#ifdef COLDFIRE + lsr.l #8,D0 + bsr.s hex_byte + move.w (SP)+,D0 +hex_byte: + move.w D0,-(SP) + lsr.l #4,D0 + bsr.s hex_char + move.w (SP)+,D0 +hex_char: + and.l #0xF,D0 + or.l #0x30,D0 + cmp.l #0x3A,D0 + bcs.s display_char + addq.l #7,D0 + +display_char: + and.l #0xFF,D0 +#ifdef DEBUG /* warning !!! If serial mouse */ + move.l D1,-(SP) +.wait_uart: + move.b MCF_UART_USR0,D1 + and.l #MCF_UART_USR_TXRDY,D1 + beq.s .wait_uart + move.b D0,MCF_UART_UTB0 // send the character + move.l (SP)+,D1 +#else + lea -24(SP),SP + movem.l D0-D2/A0-A2,(SP) + move.w D0,-(sp) + move.w #2,-(SP) + move.w #3,-(SP) // Bconout + trap #13 + addq.l #6,SP + movem.l (SP),D0-D2/A0-A2 + lea 24(SP),SP +#endif /* DEBUG */ + rts +#else /* ATARI */ + lsr.w #8,D0 + bsr.s hex_byte + move.w (SP)+,D0 +hex_byte: + move.w D0,-(SP) + lsr.b #4,D0 + bsr.s hex_char + move.w (SP)+,D0 +hex_char: + and.b #0xF,D0 + or.b #0x30,D0 + cmp.b #0x3A,D0 + bcs.s display_char + addq.b #7,D0 + +display_char: + and.w #0xFF,D0 + movem.l D0-D2/A0-A2,-(SP) + move.w D0,-(sp) + move.w #2,-(SP) + move.w #3,-(SP) // Bconout + trap #13 + addq.l #6,SP + movem.l (SP)+,D0-D2/A0-A2 + rts +#endif /* COLDFIRE */ + +display_string: + +#ifdef COLDFIRE + move.l D0,-(SP) + move.l A0,-(SP) +#else + movem.l D0/A0,-(SP) +#endif +.os2: + move.b (A0)+,D0 + beq.s .os1 + bsr display_char + bra.s .os2 +.os1: +#ifdef COLDFIRE + move.l (SP)+,A0 + move.l (SP)+,D0 +#else + movem.l (SP)+,D0/A0 +#endif + rts + +get_hex_value: + +#ifdef COLDFIRE + lea -56(SP),SP + movem.l D1-A5,(SP) + link A6,#-8 + moveq #0,D7 +.loop_get_value: +#ifdef DEBUG + move.w #1,-(SP) // AUX +#else + move.w #2,-(SP) // CON +#endif + move.w #2,-(SP) // Bconin + trap #13 + addq.l #4,SP + and.l #0xFF,D0 + cmp.l #13,D0 + beq.s .conv_get_value + cmp.l #8,D0 + bne.s .not_backspace + tst.w D7 + ble.s .loop_get_value + bsr display_char + subq.l #1,D7 + bra.s .loop_get_value +.not_backspace: + cmp.l #0x30,D0 + bcs.s .loop_get_value + cmp.l #0x39,D0 + bls.s .number_value + cmp.l #0x41,D0 + bcs.s .loop_get_value + cmp.l #0x46,D0 + bls.s .letter_value + cmp.l #0x61,D0 + bcs.s .loop_get_value + cmp.l #0x66,D0 + bhi.s .loop_get_value +.letter_value: + bsr display_char + and.l #0x0F,D0 + add.l #9,D0 + bra.s .store_value +.number_value: + bsr display_char + and.l #0x0F,D0 +.store_value: + move.b D0,-8(A6,D7) + addq.l #1,D7 + cmp.l #8,D7 + bcs .loop_get_value +.conv_get_value: + moveq #0,D0 + subq.l #1,D7 + bmi.s .end_get_value + moveq #0,D6 +.loop_value: + asl.l #4,D0 + moveq #0,D1 + move.b -8(A6,D6),D1 + or.l D1,D0 + addq.l #1,D6 + subq.l #1,D7 + bpl.s .loop_value +.end_get_value: + tst.l D0 + unlk A6 + movem.l (SP),D1-A5 + lea 56(SP),SP +#else /* ATARI */ + movem.l D1-A5,-(SP) + link A6,#-8 + moveq #0,D7 +.loop_get_value: + move.w #2,-(SP) // CON + move.w #2,-(SP) // Bconin + trap #13 + addq.l #4,SP + cmp.b #13,D0 + beq.s .conv_get_value + cmp.b #8,D0 + bne.s .not_backspace + tst.w D7 + ble.s .loop_get_value + bsr display_char + subq.w #1,D7 + bra.s .loop_get_value +.not_backspace: + cmp.b #0x30,D0 + bcs.s .loop_get_value + cmp.b #0x39,D0 + bls.s .number_value + cmp.b #0x41,D0 + bcs.s .loop_get_value + cmp.b #0x46,D0 + bls.s .letter_value + cmp.b #0x61,D0 + bcs.s .loop_get_value + cmp.b #0x66,D0 + bhi.s .loop_get_value +.letter_value: + bsr display_char + and.b #0x0F,D0 + add.b #9,D0 + bra.s .store_value +.number_value: + bsr display_char + and.b #0x0F,D0 +.store_value: + move.b D0,-8(A6,D7) + addq.w #1,D7 + cmp.w #8,D7 + bcs.s .loop_get_value +.conv_get_value: + moveq #0,D0 + subq.w #1,D7 + bmi.s .end_get_value + moveq #0,D6 +.loop_value: + asl.l #4,D0 + or.b -8(A6,D6),D0 + addq.w #1,D6 + dbf D7,.loop_value +.end_get_value: + tst.l D0 + unlk A6 + movem.l (SP)+,D1-A5 +#endif /* COLDFIRE */ + rts + +dump: + +#ifdef COLDFIRE + lea -20(SP),SP + movem.l D0-D2/A0-A1,(SP) +#else + movem.l D0-D2/A0-A1,-(SP) +#endif + move.l A0,A1 + moveq #3,D1 +.loop_dump1: + lea crlf(PC),A0 + bsr display_string + move.l A1,D0 + bsr hex_long + moveq #0x20,D0 + bsr display_char + moveq #15,D2 +.loop_dump2: + move.b (A1)+,D0 + bsr hex_byte + moveq #0x20,D0 + bsr display_char +#ifdef COLDFIRE + subq.l #1,D2 + bpl.s .loop_dump2 +#else + dbf D2,.loop_dump2 +#endif + lea -16(A1),A1 + moveq #15,D2 +.loop_dump3: + move.b (A1)+,D0 +#ifdef COLDFIRE + and.l #0xFF,D0 + cmp.l #0x20,D0 + bcs.s .dump_bad_char + cmp.l #0x7F,D0 +#else + cmp.b #0x20,D0 + bcs.s .dump_bad_char + cmp.b #0x7F,D0 +#endif + bcs.s .dump_ok +.dump_bad_char: + moveq #0x2E,D0 +.dump_ok: + bsr display_char +#ifdef COLDFIRE + subq.l #1,D2 + bpl.s .loop_dump3 + subq.l #1,D1 + bpl.s .loop_dump1 + movem.l (SP),D0-D2/A0-A1 + lea 20(SP),SP +#else + dbf D2,.loop_dump3 + dbf D1,.loop_dump1 + movem.l (SP)+,D0-D2/A0-A1 +#endif + rts + +crlf: .byte 13,10,0 +mess1: .byte 13,10 + .asciz "EXCEPTION PROCESSING " +mess2: .byte 13,10 + .asciz "Status Register (SR): $" +mess3: .asciz ", bits to 1: " +mess4: .byte 13,10 + .asciz "Program Counter (PC): $" +mess5: .byte 13,10 + .asciz "Cache Register (CACR): $" +mess6: .byte 13,10 + .asciz "Address Fault: $" +mess7: .byte 13,10 + .asciz "Fault Status Word (FSLW): " +mess8: .byte 13,10 + .asciz "Supervisor Stack (SSP): $" +mess9: .byte 13,10 + .asciz "User Stack (USP): $" +mess10: .byte 13,10 + .asciz "Basepage: $" +mess11: .byte 13,10 + .asciz "Memory dump (hex) ? " +mess12: .byte 13,10 + .asciz "Patch memory (hex) ? " +mess13: .byte 13,10 + .asciz "Value (hex) ? " +mess14: .byte 13,10 + .ascii "Pterm" + .byte 13,10,0 + +tab_mess_exc: +#ifdef COLDFIRE + .asciz "Null (jump or call)" +#else + .byte 0 +#endif + .byte 0 + .asciz "Access Fault" + .asciz "Address Error" + .asciz "Illegal Instruction" + .asciz "Integer Zero Divide" + .byte 0 + .byte 0 + .asciz "Privilege Violation" + .asciz "Trace" + .asciz "Line A" + .asciz "Line F" + .asciz "Emulator Interrupt" + .byte 0 + .asciz "Format Error" + .asciz "Uninitialised Interrupt" + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .asciz "Spurious Interrupt" + .asciz "Interrupt level 1" + .asciz "Interrupt level 2" + .asciz "Interrupt level 3" + .asciz "Interrupt level 4" + .asciz "Interrupt level 5" + .asciz "Interrupt level 6" + .asciz "Interrupt level 7" + .asciz "Trap #0" + .asciz "Trap #1" + .asciz "Trap #2" + .asciz "Trap #3" + .asciz "Trap #4" + .asciz "Trap #5" + .asciz "Trap #6" + .asciz "Trap #7" + .asciz "Trap #8" + .asciz "Trap #9" + .asciz "Trap #10" + .asciz "Trap #11" + .asciz "Trap #12" + .asciz "Trap #13" + .asciz "Trap #14" + .asciz "Trap #15" + .byte -1 + +tab_status: .ascii "CVZNX 012 MS T" + +tab_fslw1: .ascii " M LRWSSTTTTTIPSPPIPSWTRWTB S" +tab_fslw2: .ascii " A K ZZTTMMMOBBTTLFPPWEETP S" +tab_fslw3: .ascii " 1010210 EEAB E RE E" diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/host/aranym/aranym-hcd.c b/BaS_codewarrior/FireBee/trunk/usb/store/host/aranym/aranym-hcd.c new file mode 100644 index 0000000..fe3dbb9 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/host/aranym/aranym-hcd.c @@ -0,0 +1,150 @@ +/* + NatFeat USB host chip emulator + + ARAnyM (C) 2010 David Gálvez + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/*--- Include ---*/ + +#include +#include + +#include +#include + +#include "nf_ops.h" +#include "usbhost_nfapi.h" +#include "../../config.h" +#include "../../asm-m68k/io.h" +#include "../../usb.h" +#include "../../debug.h" + +/*--- Defines ---*/ + +#ifndef EINVFN +#define EINVFN -32 +#endif + +#ifndef DEV_CONSOLE +#define DEV_CONSOLE 2 +#endif + +#define DRIVER_NAME "ARAnyM USB host chip emulator" +#define VERSION "v0.1" + + +/*--- Functions prototypes ---*/ + +static void press_any_key(void); + + +/*--- Local variables ---*/ + +static struct nf_ops *nfOps; +static unsigned long nfUsbHostId; + + +/*--- Functions ---*/ + + +static void press_any_key(void) +{ + + (void) Cconws("- Press any key to continue -\r\n"); + while (Bconstat(DEV_CONSOLE) == 0) { }; +} + + +/* --- Transfer functions -------------------------------------------------- */ + +int submit_int_msg(struct usb_device *dev, unsigned long pipe, void *buffer, + int len, int interval) +{ + int r; + + r = nfOps->call(USBHOST(USBHOST_SUBMIT_INT_MSG), dev, pipe, buffer, len, interval); + + return 0; +} + +int submit_control_msg(struct usb_device *dev, unsigned long pipe, void *buffer, + int len, struct devrequest *setup) +{ + int r; + + r = nfOps->call(USBHOST(USBHOST_SUBMIT_CONTROL_MSG), dev, pipe, buffer, len, setup); + + return r; +} + +int submit_bulk_msg(struct usb_device *dev, unsigned long pipe, void *buffer, + int len) +{ + int r; + + r = nfOps->call(USBHOST(USBHOST_SUBMIT_BULK_MSG), dev, pipe, buffer, len); + + return 0; +} + +/* --- Init functions ------------------------------------------------------ */ + +int usb_lowlevel_init(void) +{ + int r; + + (void) Cconws( + "\033p " DRIVER_NAME " " VERSION " \033q\r\n" + "Copyright (c) ARAnyM Development Team, " __DATE__ "\r\n" + ); + + nfOps = nf_init(); + if (!nfOps) { + (void) Cconws("__NF cookie not present on this system\r\n"); + press_any_key(); + return 0; + } + + nfUsbHostId=nfOps->get_id("USBHOST"); + if (nfUsbHostId == 0) { + (void) Cconws("NF USBHOST functions not present on this system\r\n"); + press_any_key(); + } + + /* List present devices */ + + r = nfOps->call(USBHOST(USBHOST_LOWLEVEL_INIT)); + + if (!r) + (void) Cconws(" USB Init \r\n"); + else + (void) Cconws(" Couldn't init aranym host chip emulator \r\n"); + + return 0; + +} + +int usb_lowlevel_stop(void) +{ + int r; + + r = nfOps->call(USBHOST(USBHOST_LOWLEVEL_STOP)); + + return 0; + +} + diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/host/aranym/natfeat.c b/BaS_codewarrior/FireBee/trunk/usb/store/host/aranym/natfeat.c new file mode 100644 index 0000000..93edd30 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/host/aranym/natfeat.c @@ -0,0 +1,118 @@ +/* + * ARAnyM native features interface. + * (c) 2005-2008 ARAnyM development team + * + * In 2006 updated with FreeMiNT headers and code. + * In 2008 converted from "__NF" cookie to direct usage of NF instructions + * + **/ + +/* + * Copied from FreeMiNT source tree where Native Features were added recently + * + * Copyright 2003 Frank Naumann + * All rights reserved. + * + * This file is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This file is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * + * Author: Frank Naumann + * Started: 2003-12-13 + * + */ + +# include +# include +# include "nf_ops.h" + + +#define ARANYM 1 +# ifdef ARANYM + + +static unsigned long nf_get_id_instr = 0x73004e75UL; +static unsigned long nf_call_instr = 0x73014e75UL; + +static struct nf_ops _nf_ops = { (void*)&nf_get_id_instr, (void*)&nf_call_instr }; +static struct nf_ops *nf_ops = 0UL; + +extern int detect_native_features(void); + +struct nf_ops * +nf_init(void) +{ + if (Supexec(detect_native_features)) + { + nf_ops = &_nf_ops; + return nf_ops; + } + + return 0UL; +} + + +const char * +nf_name(void) +{ + static char buf[64] = "Unknown emulator"; + + if (nf_ops) + { + static int done = 0; + + if (!done) + { + long nfid_name = nf_ops->get_id("NF_NAME"); + + if (nfid_name) + nf_ops->call(nfid_name, buf, sizeof(buf)); + + done = 1; + } + } + + return buf; +} + +int +nf_debug(const char *msg) +{ + if (nf_ops) + { + long nfid_stderr = nf_ops->get_id("NF_STDERR"); + + if (nfid_stderr) + { + nf_ops->call(nfid_stderr, msg); + return 1; + } + } + + return 0; +} + +void +nf_shutdown(void) +{ + if (nf_ops) + { + long shutdown_id = nf_ops->get_id("NF_SHUTDOWN"); + + if (shutdown_id) + nf_ops->call(shutdown_id); + } +} + +# endif diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/host/aranym/natfeat_asm.S b/BaS_codewarrior/FireBee/trunk/usb/store/host/aranym/natfeat_asm.S new file mode 100644 index 0000000..e1b75b3 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/host/aranym/natfeat_asm.S @@ -0,0 +1,76 @@ +/* + * ARAnyM native features interface. + * (c) 2005-2008 ARAnyM development team + * + * In 2006 updated with FreeMiNT headers and code. + * In 2008 converted from "__NF" cookie to direct usage of NF instructions + * + **/ + +/* + * Copied from FreeMiNT source tree where Native Features were added recently + * + * Copyright 2003 Frank Naumann + * All rights reserved. + * + * This file is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This file is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * + * Author: Frank Naumann + * Started: 2003-12-13 + * + * please send suggestions, patches or bug reports to me or + * the MiNT mailing list + * + */ + +#define ARANYM 1 +# ifdef ARANYM + + .text + + .globl _detect_native_features + +/* + * NatFeats test (routine retuns TRUE/FALSE (1/0) in D0) + */ +_detect_native_features: + + clr.l d0 // assume no NatFeats available + move.l sp,a1 // save the ssp + move.l (0x0010).w,a0 // illegal instruction vector + move.l #fail_natfeat,(0x0010).w + + nop // flush pipelines (for 68040+) + + pea (nf_version_name).w(pc) + subq.l #4,sp + dc.w 0x7300 // Jump to NATFEAT_ID + tst.l d0 + beq.s fail_natfeat + moveq #1,d0 // NatFeats detected + +fail_natfeat: + move.l a1,sp + move.l a0,(0x0010).w + + nop // flush pipelines (for 68040+) + + rts + +nf_version_name: + .ascii "NF_VERSION\0" + +# endif diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/host/aranym/nf_ops.h b/BaS_codewarrior/FireBee/trunk/usb/store/host/aranym/nf_ops.h new file mode 100644 index 0000000..b8d1e79 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/host/aranym/nf_ops.h @@ -0,0 +1,63 @@ +/* + * $Id: nf_ops.h,v 1.2 2006-01-31 16:21:22 standa Exp $ + * + * ARAnyM Native Features suite. + * + * This file was taken from FreeMiNT. + * + * Copyright 2003 Frank Naumann + * All rights reserved. + * + * This file is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This file is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * + * Author: Frank Naumann + * Started: 2003-12-14 + * + * Please send suggestions, patches or bug reports to me or + * the MiNT mailing list. + * + */ + +# ifndef _m68k_nf_ops_h +# define _m68k_nf_ops_h + +#include /* for __CDECL */ + + +struct nf_ops +{ + long __CDECL (*get_id)(const char *); + long __CDECL (*call)(long id, ...); + long res[3]; +}; + + +/** + * Use this function to intialize Native Features. + * + * @return the pointer to 'struct nf_ops' or NULL when + * not available. + **/ +struct nf_ops *nf_init(void); + + +/* basic set native feature functions */ +const char *nf_name(void); +int nf_debug(const char *msg); +void nf_shutdown(void); + + +# endif /* _m68k_nf_ops_h */ diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/host/aranym/usbhost_nfapi.h b/BaS_codewarrior/FireBee/trunk/usb/store/host/aranym/usbhost_nfapi.h new file mode 100644 index 0000000..e8ffa2e --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/host/aranym/usbhost_nfapi.h @@ -0,0 +1,40 @@ +/* + NatFeat USB Host chip emulator + + ARAnyM (C) 2010 David Gálvez + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#ifndef _USBHOST_NFAPI_H +#define _USBHOST_NFAPI_H + +/* if you change anything in the enum {} below you have to increase + this ARAUSBHOST_NFAPI_VERSION! +*/ +#define ARAUSBHOST_NFAPI_VERSION 0x00000000 + +enum { + GET_VERSION = 0, /* no parameters, return NFAPI_VERSION in d0 */ + USBHOST_LOWLEVEL_INIT, + USBHOST_LOWLEVEL_STOP, + USBHOST_SUBMIT_CONTROL_MSG, + USBHOST_SUBMIT_INT_MSG, + USBHOST_SUBMIT_BULK_MSG +}; + +#define USBHOST(a) (nfUsbHostId + a) + +#endif /* _USBHOST_NFAPI_H */ diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/host/ethernat/isp116x-hcd.c b/BaS_codewarrior/FireBee/trunk/usb/store/host/ethernat/isp116x-hcd.c new file mode 100644 index 0000000..fbfa611 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/host/ethernat/isp116x-hcd.c @@ -0,0 +1,1583 @@ +/* + * Modified for Atari-EtherNat by David Gálvez 2010 + * + * ISP116x HCD (Host Controller Driver) for u-boot. + * + * Copyright (C) 2006-2007 Rodolfo Giometti + * Copyright (C) 2006-2007 Eurotech S.p.A. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Derived in part from the SL811 HCD driver "u-boot/drivers/usb/sl811_usb.c" + * (original copyright message follows): + * + * (C) Copyright 2004 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * This code is based on linux driver for sl811hs chip, source at + * drivers/usb/host/sl811.c: + * + * SL811 Host Controller Interface driver for USB. + * + * Copyright (c) 2003/06, Courage Co., Ltd. + * + * Based on: + * 1.uhci.c by Linus Torvalds, Johannes Erdfelt, Randy Dunlap, + * Georg Acher, Deti Fliegl, Thomas Sailer, Roman Weissgaerber, + * Adam Richter, Gregory P. Smith; + * 2.Original SL811 driver (hc_sl811.o) by Pei Liu + * 3.Rewrited as sl811.o by Yin Aihua + * + * [[GNU/GPL disclaimer]] + * + * and in part from AU1x00 OHCI HCD driver "u-boot/cpu/mips/au1x00_usb_ohci.c" + * (original copyright message follows): + * + * URB OHCI HCD (Host Controller Driver) for USB on the AU1x00. + * + * (C) Copyright 2003 + * Gary Jennejohn, DENX Software Engineering + * + * [[GNU/GPL disclaimer]] + * + * Note: Part of this code has been derived from linux + */ +#include "../../config.h" +#include "../../asm-m68k/io.h" +#include "../../usb.h" +#include "../../debug.h" + +void udelay(unsigned long usec); + +//extern void boot_printf(const char *fmt, ...); + + +/* + * ISP116x chips require certain delays between accesses to its + * registers. The following timing options exist. + * + * 1. Configure your memory controller (the best) + * 2. Use ndelay (easiest, poorest). For that, enable the following macro. + * + * Value is in microseconds. + */ +#ifdef ISP116X_HCD_USE_UDELAY +#define UDELAY 1 +#endif + +/* + * On some (slowly?) machines an extra delay after data packing into + * controller's FIFOs is required, * otherwise you may get the following + * error: + * + * uboot> usb start + * (Re)start USB... + * USB: scanning bus for devices... isp116x: isp116x_submit_job: CTL:TIMEOUT + * isp116x: isp116x_submit_job: ****** FIFO not ready! ****** + * + * USB device not responding, giving up (status=4) + * isp116x: isp116x_submit_job: ****** FIFO not empty! ****** + * isp116x: isp116x_submit_job: ****** FIFO not empty! ****** + * isp116x: isp116x_submit_job: ****** FIFO not empty! ****** + * 3 USB Device(s) found + * scanning bus for storage devices... 0 Storage Device(s) found + * + * Value is in milliseconds. + */ +#ifdef ISP116X_HCD_USE_EXTRA_DELAY +#define EXTRA_DELAY 2 +#endif + +/* + * Enable the following defines if you wish enable extra debugging messages. + * Normal debug messages controlled from config.h. + */ + +//#define TRACE /* enable tracing code */ +//#define VERBOSE /* verbose debugging messages */ + +#include "isp116x.h" + +#define DRIVER_VERSION "08 Jan 2007" +static const char hcd_name[] = "isp116x-hcd"; + +struct isp116x isp116x_dev; +struct isp116x_platform_data isp116x_board; +static int got_rhsc; /* root hub status change */ +struct usb_device *devgone; /* device which was disconnected */ +static int rh_devnum; /* address of Root Hub endpoint */ + +/* ------------------------------------------------------------------------- */ + +#define ALIGN(x,a) (((x)+(a)-1UL)&~((a)-1UL)) +#define min1_t(type,x,y) \ + ({ type __x = (x); type __y = (y); __x < __y ? __x : __y; }) + +/* Galvez: added to avoid shadow warnings */ +#define min2_t(type,x,y) \ + ({ type __a = (x); type __b = (y); __a < __b ? __a : __b; }) + +/* ------------------------------------------------------------------------- */ + + +static int isp116x_reset(struct isp116x *isp116x); + +/* --- Debugging functions ------------------------------------------------- */ + +#define isp116x_show_reg(d, r) { \ + if ((r) < 0x20) { \ + DEBUG_HOST("%-12s[%02x]: %08x", #r, \ + r, isp116x_read_reg32(d, r)); \ + } else { \ + DEBUG_HOST("%-12s[%02x]: %04x", #r, \ + r, isp116x_read_reg16(d, r)); \ + } \ +} + +#define isp116x_show_regs(d) { \ + isp116x_show_reg(d, HCREVISION); \ + isp116x_show_reg(d, HCCONTROL); \ + isp116x_show_reg(d, HCCMDSTAT); \ + isp116x_show_reg(d, HCINTSTAT); \ + isp116x_show_reg(d, HCINTENB); \ + isp116x_show_reg(d, HCFMINTVL); \ + isp116x_show_reg(d, HCFMREM); \ + isp116x_show_reg(d, HCFMNUM); \ + isp116x_show_reg(d, HCLSTHRESH); \ + isp116x_show_reg(d, HCRHDESCA); \ + isp116x_show_reg(d, HCRHDESCB); \ + isp116x_show_reg(d, HCRHSTATUS); \ + isp116x_show_reg(d, HCRHPORT1); \ + isp116x_show_reg(d, HCRHPORT2); \ + isp116x_show_reg(d, HCHWCFG); \ + isp116x_show_reg(d, HCDMACFG); \ + isp116x_show_reg(d, HCXFERCTR); \ + isp116x_show_reg(d, HCuPINT); \ + isp116x_show_reg(d, HCuPINTENB); \ + isp116x_show_reg(d, HCCHIPID); \ + isp116x_show_reg(d, HCSCRATCH); \ + isp116x_show_reg(d, HCITLBUFLEN); \ + isp116x_show_reg(d, HCATLBUFLEN); \ + isp116x_show_reg(d, HCBUFSTAT); \ + isp116x_show_reg(d, HCRDITL0LEN); \ + isp116x_show_reg(d, HCRDITL1LEN); \ +} + +#if defined(TRACE) + +static int isp116x_get_current_frame_number(struct usb_device *usb_dev) +{ + struct isp116x *isp116x = &isp116x_dev; + + return isp116x_read_reg32(isp116x, HCFMNUM); +} + +static void dump_msg(struct usb_device *dev, unsigned long pipe, void *buffer, + int len, char *str) +{ +#if defined(VERBOSE) + int i; +#endif + DEBUG_HOST("%s URB:[%4x] dev:%2ld,ep:%2ld-%c,type:%s,len:%d stat:%#lx", + str, + isp116x_get_current_frame_number(dev), + usb_pipedevice(pipe), + usb_pipeendpoint(pipe), + usb_pipeout(pipe) ? 'O' : 'I', + usb_pipetype(pipe) < 2 ? + (usb_pipeint(pipe) ? + "INTR" : "ISOC") : + (usb_pipecontrol(pipe) ? "CTRL" : "BULK"), len, dev->status); +#if defined(VERBOSE) + debug_init("usb.log"); + if (len > 0 && buffer) { + debug(__FILE__ ": data(%d):", len); + for (i = 0; i < 16 && i < len; i++) + debug(" %02x", ((__u8 *) buffer)[i]); + debug("%s\r\n", i < len ? "..." : ""); + } + debug_exit(); +#endif +} + +#define PTD_DIR_STR(ptd) ({char __c; \ + switch(PTD_GET_DIR(ptd)){ \ + case 0: __c = 's'; break; \ + case 1: __c = 'o'; break; \ + default: __c = 'i'; break; \ + }; __c;}) + +/* + Dump PTD info. The code documents the format + perfectly, right :) +*/ +static inline void dump_ptd(struct ptd *ptd) +{ +#if defined(VERBOSE) + int k; +#endif + + DEBUG_HOST("PTD(ext) : cc:%x %d%c%d %d,%d,%d t:%x %x%x%x", + PTD_GET_CC(ptd), + PTD_GET_FA(ptd), PTD_DIR_STR(ptd), PTD_GET_EP(ptd), + PTD_GET_COUNT(ptd), PTD_GET_LEN(ptd), PTD_GET_MPS(ptd), + PTD_GET_TOGGLE(ptd), + PTD_GET_ACTIVE(ptd), PTD_GET_SPD(ptd), PTD_GET_LAST(ptd)); +#if defined(VERBOSE) + debug_init("usb.log"); + debug("isp116x: %s: PTD(byte): ", __FUNCTION__); + for (k = 0; k < sizeof(struct ptd); ++k) { + debug("%02x ", ((u8 *) ptd)[k]); + } + debug("\n\r"); + debug_exit(); +#endif +} + +static inline void dump_ptd_data(struct ptd *ptd, u8 * buf, int type) +{ +#if defined(VERBOSE) + int k; + + debug_init("usb.log"); + if (type == 0 /* 0ut data */ ) { + debug("isp116x: %s: out data: ", __FUNCTION__); + for (k = 0; k < PTD_GET_LEN(ptd); ++k) { + debug("%02x ", ((u8 *) buf)[k]); + } + debug("\n\r"); + } + if (type == 1 /* 1n data */ ) { + debug("isp116x: %s: in data: ", __FUNCTION__); + for (k = 0; k < PTD_GET_COUNT(ptd); ++k) { + debug("%02x ", ((u8 *) buf)[k]); + } + debug("\n\r"); + } + + debug_exit(); + + if (PTD_GET_LAST(ptd)) { + DEBUG_HOST("--- last PTD ---"); + } +#endif +} + +#else + +#define dump_msg(dev, pipe, buffer, len, str) do { } while (0) +#define dump_pkt(dev, pipe, buffer, len, setup, str, small) do {} while (0) + +#define dump_ptd(ptd) do {} while (0) +#define dump_ptd_data(ptd, buf, type) do {} while (0) + +#endif + +/* --- Virtual Root Hub ---------------------------------------------------- */ + +/* Device descriptor */ +static __u8 root_hub_dev_des[] = { + 0x12, /* __u8 bLength; */ + 0x01, /* __u8 bDescriptorType; Device */ + 0x10, /* __u16 bcdUSB; v1.1 */ + 0x01, + 0x09, /* __u8 bDeviceClass; HUB_CLASSCODE */ + 0x00, /* __u8 bDeviceSubClass; */ + 0x00, /* __u8 bDeviceProtocol; */ + 0x08, /* __u8 bMaxPacketSize0; 8 Bytes */ + 0x00, /* __u16 idVendor; */ + 0x00, + 0x00, /* __u16 idProduct; */ + 0x00, + 0x00, /* __u16 bcdDevice; */ + 0x00, + 0x00, /* __u8 iManufacturer; */ + 0x01, /* __u8 iProduct; */ + 0x00, /* __u8 iSerialNumber; */ + 0x01 /* __u8 bNumConfigurations; */ +}; + +/* Configuration descriptor */ +static __u8 root_hub_config_des[] = { + 0x09, /* __u8 bLength; */ + 0x02, /* __u8 bDescriptorType; Configuration */ + 0x19, /* __u16 wTotalLength; */ + 0x00, + 0x01, /* __u8 bNumInterfaces; */ + 0x01, /* __u8 bConfigurationValue; */ + 0x00, /* __u8 iConfiguration; */ + 0x40, /* __u8 bmAttributes; + Bit 7: Bus-powered, 6: Self-powered, 5 Remote-wakwup, 4..0: resvd */ + 0x00, /* __u8 MaxPower; */ + + /* interface */ + 0x09, /* __u8 if_bLength; */ + 0x04, /* __u8 if_bDescriptorType; Interface */ + 0x00, /* __u8 if_bInterfaceNumber; */ + 0x00, /* __u8 if_bAlternateSetting; */ + 0x01, /* __u8 if_bNumEndpoints; */ + 0x09, /* __u8 if_bInterfaceClass; HUB_CLASSCODE */ + 0x00, /* __u8 if_bInterfaceSubClass; */ + 0x00, /* __u8 if_bInterfaceProtocol; */ + 0x00, /* __u8 if_iInterface; */ + + /* endpoint */ + 0x07, /* __u8 ep_bLength; */ + 0x05, /* __u8 ep_bDescriptorType; Endpoint */ + 0x81, /* __u8 ep_bEndpointAddress; IN Endpoint 1 */ + 0x03, /* __u8 ep_bmAttributes; Interrupt */ + 0x00, /* __u16 ep_wMaxPacketSize; ((MAX_ROOT_PORTS + 1) / 8 */ + 0x02, + 0xff /* __u8 ep_bInterval; 255 ms */ +}; + +static unsigned char root_hub_str_index0[] = { + 0x04, /* __u8 bLength; */ + 0x03, /* __u8 bDescriptorType; String-descriptor */ + 0x09, /* __u8 lang ID */ + 0x04, /* __u8 lang ID */ +}; + +static unsigned char root_hub_str_index1[] = { + 0x22, /* __u8 bLength; */ + 0x03, /* __u8 bDescriptorType; String-descriptor */ + 'I', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'S', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'P', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + '1', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + '1', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + '6', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'x', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + ' ', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'R', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'o', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'o', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 't', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + ' ', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'H', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'u', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'b', /* __u8 Unicode */ + 0, /* __u8 Unicode */ +}; + +/* + * Hub class-specific descriptor is constructed dynamically + */ + +/* --- Virtual root hub management functions ------------------------------- */ + +static int rh_check_port_status(struct isp116x *isp116x) +{ + u32 temp, ndp, i; + int res; + + res = -1; + temp = isp116x_read_reg32(isp116x, HCRHSTATUS); + ndp = (temp & RH_A_NDP); + for (i = 0; i < ndp; i++) { + temp = isp116x_read_reg32(isp116x, HCRHPORT1 + i); + /* check for a device disconnect */ + if (((temp & (RH_PS_PESC | RH_PS_CSC)) == + (RH_PS_PESC | RH_PS_CSC)) && ((temp & RH_PS_CCS) == 0)) { + res = i; + break; + } + } + return res; +} + +/* --- HC management functions --------------------------------------------- */ + +/* Write len bytes to fifo, pad till 32-bit boundary + */ +static void write_ptddata_to_fifo(struct isp116x *isp116x, void *buf, int len) +{ + u8 *dp = (u8 *) buf; + u16 *dp2 = (u16 *) buf; + u16 w; + int quot = len % 4; + +/* For EtherNat, take the raw_write out in write functions, here we don't + * like that EtherNat swap the bytes for us, so we swap them before we send + * them, then the bytes will arrive to the USB device with the correct positions + */ + if ((unsigned long)dp2 & 1) { + DEBUG_HOST("---not aligned ---"); + /* not aligned */ + for (; len > 1; len -= 2) { + w = *dp++; + w |= *dp++ << 8; + isp116x_write_data16(isp116x, w); + } + if (len) + isp116x_write_data16(isp116x, (u16) * dp); + } else { + DEBUG_HOST("---aligned ---"); + /* aligned */ + for (; len > 1; len -= 2) + isp116x_write_data16(isp116x, *dp2++); + if (len){DEBUG_HOST("write_data16\r\n"); /* GALVEZ: DEBUG */ + isp116x_raw_write_data16(isp116x, 0xff & *((u8 *) dp2));} + } + if (quot == 1 || quot == 2) + isp116x_write_data16(isp116x, 0); +} + +/* Read len bytes from fifo and then read till 32-bit boundary + */ +static void read_ptddata_from_fifo(struct isp116x *isp116x, void *buf, int len) +{ + u8 *dp = (u8 *) buf; + u16 *dp2 = (u16 *) buf; + u16 w; + int quot = len % 4; + +/* For EtherNAT, take the raw_read out from read functions, we want to swap the bytes + to read correct values because EtherNat swapped the bytes by hardware before we read + them */ + + if ((unsigned long)dp2 & 1) { + /* not aligned */ + DEBUG_HOST("---not aligned ---"); + for (; len > 1; len -= 2) { + w = isp116x_read_data16(isp116x); + *dp++ = w & 0xff; + *dp++ = (w >> 8) & 0xff; + } + if (len) + *dp = 0xff & isp116x_read_data16(isp116x); + } else { + /* aligned */ + DEBUG_HOST("---aligned ---"); + for (; len > 1; len -= 2) + *dp2++ = isp116x_read_data16(isp116x); + if (len) + *(u8 *) dp2 = 0xff & isp116x_raw_read_data16(isp116x); + } + if (quot == 1 || quot == 2) + isp116x_read_data16(isp116x); +} + +/* Write PTD's and data for scheduled transfers into the fifo ram. + * Fifo must be empty and ready */ +static void pack_fifo(struct isp116x *isp116x, struct usb_device *dev, + unsigned long pipe, struct ptd *ptd, int n, void *data, + int len) +{ + int buflen = n * sizeof(struct ptd) + len; + int i, done; + + DEBUG_HOST("--- pack buffer %p - %d bytes (fifo %d) ---", data, len, buflen); + + isp116x_write_reg16(isp116x, HCuPINT, HCuPINT_AIIEOT); + + isp116x_write_reg16(isp116x, HCXFERCTR, buflen); + isp116x_write_addr(isp116x, HCATLPORT | ISP116x_WRITE_OFFSET); + + done = 0; + for (i = 0; i < n; i++) { + DEBUG_HOST("i=%d - done=%d - len=%d", i, done, PTD_GET_LEN(&ptd[i])); + +/* For EtherNAT, use raw_write to don't swap bytes */ + dump_ptd(&ptd[i]); + isp116x_raw_write_data16(isp116x, ptd[i].count); + isp116x_raw_write_data16(isp116x, ptd[i].mps); + isp116x_raw_write_data16(isp116x, ptd[i].len); + isp116x_raw_write_data16(isp116x, ptd[i].faddr); + + dump_ptd_data(&ptd[i], (__u8 *) data + done, 0); + + write_ptddata_to_fifo(isp116x, + (__u8 *) data + done, + PTD_GET_LEN(&ptd[i])); + + done += PTD_GET_LEN(&ptd[i]); + } +} + +/* Read the processed PTD's and data from fifo ram back to URBs' buffers. + * Fifo must be full and done */ +static int unpack_fifo(struct isp116x *isp116x, struct usb_device *dev, + unsigned long pipe, struct ptd *ptd, int n, void *data, + int len) +{ + int buflen = n * sizeof(struct ptd) + len; + int i, done, cc, ret; + + isp116x_write_reg16(isp116x, HCuPINT, HCuPINT_AIIEOT); + isp116x_write_reg16(isp116x, HCXFERCTR, buflen); + isp116x_write_addr(isp116x, HCATLPORT); + + ret = TD_CC_NOERROR; + done = 0; + for (i = 0; i < n; i++) { + /* Galvez: DEBUG */ +// DEBUG_HOST("i=%d - done=%d - len=%d", i, done, PTD_GET_LEN(&ptd[i])); + DEBUG_HOST("i=%d n=%d - done=%d - len= %d ptd_len=%d\n\r", i,n, done, len, PTD_GET_LEN(&ptd[i])); + /*****************/ + + /* For EtherNAT, use raw_read to don't swap bytes */ + ptd[i].count = isp116x_raw_read_data16(isp116x); + ptd[i].mps = isp116x_raw_read_data16(isp116x); + ptd[i].len = isp116x_raw_read_data16(isp116x); + ptd[i].faddr = isp116x_raw_read_data16(isp116x); + dump_ptd(&ptd[i]); + + /* when cc is 15 the data has not being touch by the HC + * so we have to read all to empty completly the buffer + */ +// if ( PTD_GET_COUNT(ptd) != 0 || PTD_GET_CC(ptd) == 15 ) + read_ptddata_from_fifo(isp116x, + (__u8 *) data + done, + PTD_GET_LEN(&ptd[i])); + dump_ptd_data(&ptd[i], (__u8 *) data + done, 1); + + done += PTD_GET_LEN(&ptd[i]); + + cc = PTD_GET_CC(&ptd[i]); + + /* Data underrun means basically that we had more buffer space than + * the function had data. It is perfectly normal but upper levels have + * to know how much we actually transferred. + */ + if (cc == TD_NOTACCESSED || + (cc != TD_CC_NOERROR && (ret == TD_CC_NOERROR || ret == TD_DATAUNDERRUN))) + ret = cc; + } + + DEBUG_HOST("--- unpack buffer %p - %d bytes (fifo %d) count: %d---\n", data, len, buflen, PTD_GET_COUNT(ptd)); + + return ret; +} + +/* Interrupt handling + */ +static int isp116x_interrupt(struct isp116x *isp116x) +{ + u16 irqstat; + u32 intstat; + int ret = 0; + + isp116x_write_reg16(isp116x, HCuPINTENB, 0); + irqstat = isp116x_read_reg16(isp116x, HCuPINT); + isp116x_write_reg16(isp116x, HCuPINT, irqstat); + DEBUG_HOST(">>>>>> irqstat %x <<<<<<", irqstat); + + if (irqstat & HCuPINT_ATL) { + DEBUG_HOST(">>>>>> HCuPINT_ATL <<<<<<"); + udelay(500); + ret = 1; + } + + if (irqstat & HCuPINT_OPR) { + intstat = isp116x_read_reg32(isp116x, HCINTSTAT); + isp116x_write_reg32(isp116x, HCINTSTAT, intstat); + DEBUG_HOST(">>>>>> HCuPINT_OPR %x <<<<<<", intstat); + + if (intstat & HCINT_UE) { + ERR("unrecoverable error, controller disabled"); + + /* FIXME: be optimistic, hope that bug won't repeat + * often. Make some non-interrupt context restart the + * controller. Count and limit the retries though; + * either hardware or software errors can go forever... + */ + isp116x_reset(isp116x); + ret = -1; + return -1; + } + + if (intstat & HCINT_RHSC) { + got_rhsc = 1; + ret = 1; + /* When root hub or any of its ports is going + to come out of suspend, it may take more + than 10ms for status bits to stabilize. */ + wait_ms(20); + } + + if (intstat & HCINT_SO) { + ERR("schedule overrun"); + ret = -1; + } + + irqstat &= ~HCuPINT_OPR; + } + + return ret; +} + +/* With one PTD we can transfer almost 1K in one go; + * HC does the splitting into endpoint digestible transactions + */ +struct ptd ptd[1]; + +static inline int max_transfer_len(struct usb_device *dev, unsigned long pipe) +{ + unsigned mpck = usb_maxpacket(dev, pipe); + + /* One PTD can transfer 1023 bytes but try to always + * transfer multiples of endpoint buffer size + */ + return 1023 / mpck * mpck; +} + +/* Do an USB transfer + */ +static int isp116x_submit_job(struct usb_device *dev, unsigned long pipe, + int dir, void *buffer, int len) +{ + struct isp116x *isp116x = &isp116x_dev; + int type = usb_pipetype(pipe); + int epnum = usb_pipeendpoint(pipe); + int max = usb_maxpacket(dev, pipe); + int dir_out = usb_pipeout(pipe); + int speed_low = usb_pipeslow(pipe); + int i, done = 0, stat, timeout, cc; + + /* 500 frames or 0.5s timeout when function is busy and NAKs transactions for a while */ + int retries = 500; + + + DEBUG_HOST("------------------------------------------------"); + dump_msg(dev, pipe, buffer, len, "SUBMIT"); + DEBUG_HOST("------------------------------------------------"); + + if (len >= 1024) { + ERR("Too big job"); + dev->status = USB_ST_CRC_ERR; + return -1; + } + + if (isp116x->disabled) { + ERR("EPIPE"); + dev->status = USB_ST_CRC_ERR; + return -1; + } + + /* device pulled? Shortcut the action. */ + if (devgone == dev) { + ERR("ENODEV"); + dev->status = USB_ST_CRC_ERR; + return USB_ST_CRC_ERR; + } + + if (!max) { + ERR("pipesize for pipe %lx is zero", pipe); + dev->status = USB_ST_CRC_ERR; + return -1; + } + + if (type == PIPE_ISOCHRONOUS) { + ERR("isochronous transfers not supported"); + dev->status = USB_ST_CRC_ERR; + return -1; + } + + /* FIFO not empty? */ + if (isp116x_read_reg16(isp116x, HCBUFSTAT) & HCBUFSTAT_ATL_FULL) { + DEBUG_HOST("****** FIFO not empty! ******"); + printf("****** FIFO not empty! ******\n\r"); + dev->status = USB_ST_BUF_ERR; + return -1; + } + +retry: + isp116x_write_reg32(isp116x, HCINTSTAT, 0xff); + /* Prepare the PTD data */ + ptd->count = PTD_CC_MSK | PTD_ACTIVE_MSK | + PTD_TOGGLE(usb_gettoggle(dev, epnum, dir_out)); + ptd->mps = PTD_MPS(max) | PTD_SPD(speed_low) | PTD_EP(epnum) | PTD_LAST_MSK; + ptd->len = PTD_LEN(len) | PTD_DIR(dir); + ptd->faddr = PTD_FA(usb_pipedevice(pipe)); + + +retry_same: + + /* FIFO not empty? */ /* GALVEZ: DEBUG */ + if (isp116x_read_reg16(isp116x, HCBUFSTAT) & HCBUFSTAT_ATL_FULL) { + DEBUG_HOST("****** FIFO not empty! ******"); + printf("****** FIFO not empty! ******\n\r"); + dev->status = USB_ST_BUF_ERR; + return -1; + } + + /* Pack data into FIFO ram */ + pack_fifo(isp116x, dev, pipe, ptd, 1, buffer, len); + +#ifdef EXTRA_DELAY + wait_ms(EXTRA_DELAY); +#endif + + /* Start the data transfer */ + + /* Allow more time for a BULK device to react - some are slow */ + if (usb_pipebulk(pipe)) + timeout = 5000; /* Galvez: default = 5000 */ + else + timeout = 100; + + /* Wait for it to complete */ + for (;;) { + /* Check whether the controller is done */ + stat = isp116x_interrupt(isp116x); + + if (stat < 0) { + dev->status = USB_ST_CRC_ERR; + break; + } + if (stat > 0) + break; + + /* Check the timeout */ + if (--timeout) + udelay(1); + else { + ERR("CTL:TIMEOUT "); + printf("CTL:TIMEOUT "); + stat = USB_ST_CRC_ERR; + break; + } + } + + /* We got an Root Hub Status Change interrupt */ + if (got_rhsc) { + isp116x_show_regs(isp116x); + + got_rhsc = 0; + + /* Abuse timeout */ + timeout = rh_check_port_status(isp116x); + if (timeout >= 0) { + /* + * FIXME! NOTE! AAAARGH! + * This is potentially dangerous because it assumes + * that only one device is ever plugged in! + */ + devgone = dev; + } + } + + + /* Ok, now we can read transfer status */ + + /* FIFO not ready? */ + if (!(isp116x_read_reg16(isp116x, HCBUFSTAT) & HCBUFSTAT_ATL_DONE)) { + DEBUG_HOST("****** FIFO not ready! ******"); + printf("****** FIFO not ready! ******\n\r"); + dev->status = USB_ST_BUF_ERR; + return -1; + } + + + /* Unpack data from FIFO ram */ + cc = unpack_fifo(isp116x, dev, pipe, ptd, 1, buffer, len); + + i = PTD_GET_COUNT(ptd); + done += i; + buffer += i; + len -= i; + + + /* There was some kind of real problem; Prepare the PTD again + * and retry from the failed transaction on + */ + if (cc && cc != TD_NOTACCESSED && cc != TD_DATAUNDERRUN) { + DEBUG_HOST("PROBLEM cc: %d", cc); + if (retries >= 100) { + retries -= 100; + /* The chip will have toggled the toggle bit for the failed + * transaction too. We have to toggle it back. + */ + usb_settoggle(dev, epnum, dir_out, !PTD_GET_TOGGLE(ptd)); + goto retry; + } + } + /* "Normal" errors; TD_NOTACCESSED would mean in effect that the function have NAKed + * the transactions from the first on for the whole frame. It may be busy and we retry + * with the same PTD. PTD_ACTIVE (and not TD_NOTACCESSED) would mean that some of the + * PTD didn't make it because the function was busy or the frame ended before the PTD + * finished. We prepare the rest of the data and try again. + */ + else if ( cc == TD_NOTACCESSED || PTD_GET_ACTIVE(ptd) || ( cc != TD_DATAUNDERRUN && PTD_GET_COUNT(ptd) < PTD_GET_LEN(ptd))) { + DEBUG_HOST("NORMAL ERROR"); + if (retries) { + --retries; + if (cc == TD_NOTACCESSED && PTD_GET_ACTIVE(ptd) && !PTD_GET_COUNT(ptd)) { + goto retry_same; + } + usb_settoggle(dev, epnum, dir_out, PTD_GET_TOGGLE(ptd)); + goto retry; + } + } + + + if (cc != TD_CC_NOERROR && cc != TD_DATAUNDERRUN) { + DEBUG_HOST("****** completition code error %x ******", cc); + switch (cc) { + case TD_CC_BITSTUFFING: + dev->status = USB_ST_BIT_ERR; + break; + case TD_CC_STALL: + dev->status = USB_ST_STALLED; + break; + case TD_BUFFEROVERRUN: + case TD_BUFFERUNDERRUN: + dev->status = USB_ST_BUF_ERR; + break; + default: + dev->status = USB_ST_CRC_ERR; + } + return -cc; + } + else usb_settoggle(dev, epnum, dir_out, PTD_GET_TOGGLE(ptd)); + + dump_msg(dev, pipe, buffer, len, "SUBMIT(ret)"); + + dev->status = 0; + return done; +} + +/* Adapted from au1x00_usb_ohci.c + */ +static int isp116x_submit_rh_msg(struct usb_device *dev, unsigned long pipe, + void *buffer, int transfer_len, + struct devrequest *cmd) +{ + struct isp116x *isp116x = &isp116x_dev; + u32 tmp = 0; + + int leni = transfer_len; + int len = 0; + int stat = 0; + u32 datab[4]; + u8 *data_buf = (u8 *) datab; + u16 bmRType_bReq; + u16 wValue; + u16 wIndex; + u16 wLength; + + if (usb_pipeint(pipe)) { + INFO("Root-Hub submit IRQ: NOT implemented"); + return 0; + } + + bmRType_bReq = cmd->requesttype | (cmd->request << 8); + wValue = swap_16(cmd->value); + wIndex = swap_16(cmd->index); + wLength = swap_16(cmd->length); + + DEBUG_HOST("--- HUB ----------------------------------------"); + DEBUG_HOST("submit rh urb, req=%x val=%#x index=%#x len=%d", + bmRType_bReq, wValue, wIndex, wLength); + dump_msg(dev, pipe, buffer, transfer_len, "RH"); + DEBUG_HOST("------------------------------------------------"); + + switch (bmRType_bReq) { + case RH_GET_STATUS: + DEBUG_HOST("RH_GET_STATUS"); + + *(__u16 *) data_buf = swap_16(1); + len = 2; + break; + + case RH_GET_STATUS | RH_INTERFACE: + DEBUG_HOST("RH_GET_STATUS | RH_INTERFACE"); + + *(__u16 *) data_buf = swap_16(0); + len = 2; + break; + + case RH_GET_STATUS | RH_ENDPOINT: + DEBUG_HOST("RH_GET_STATUS | RH_ENDPOINT"); + + *(__u16 *) data_buf = swap_16(0); + len = 2; + break; + + case RH_GET_STATUS | RH_CLASS: + DEBUG_HOST("RH_GET_STATUS | RH_CLASS"); + + tmp = isp116x_read_reg32(isp116x, HCRHSTATUS); + + *(__u32 *) data_buf = swap_32(tmp & ~(RH_HS_CRWE | RH_HS_DRWE)); + len = 4; + break; + + case RH_GET_STATUS | RH_OTHER | RH_CLASS: + DEBUG_HOST("RH_GET_STATUS | RH_OTHER | RH_CLASS"); + + tmp = isp116x_read_reg32(isp116x, HCRHPORT1 + wIndex - 1); + *(__u32 *) data_buf = swap_32(tmp); + isp116x_show_regs(isp116x); + len = 4; + break; + + case RH_CLEAR_FEATURE | RH_ENDPOINT: + DEBUG_HOST("RH_CLEAR_FEATURE | RH_ENDPOINT"); + + switch (wValue) { + case RH_ENDPOINT_STALL: + DEBUG_HOST("C_HUB_ENDPOINT_STALL"); + len = 0; + break; + } + break; + + case RH_CLEAR_FEATURE | RH_CLASS: + DEBUG_HOST("RH_CLEAR_FEATURE | RH_CLASS"); + + switch (wValue) { + case RH_C_HUB_LOCAL_POWER: + DEBUG_HOST("C_HUB_LOCAL_POWER"); + len = 0; + break; + + case RH_C_HUB_OVER_CURRENT: + DEBUG_HOST("C_HUB_OVER_CURRENT"); + isp116x_write_reg32(isp116x, HCRHSTATUS, RH_HS_OCIC); + len = 0; + break; + } + break; + + case RH_CLEAR_FEATURE | RH_OTHER | RH_CLASS: + DEBUG_HOST("RH_CLEAR_FEATURE | RH_OTHER | RH_CLASS"); + + switch (wValue) { + case RH_PORT_ENABLE: + isp116x_write_reg32(isp116x, HCRHPORT1 + wIndex - 1, + RH_PS_CCS); + len = 0; + break; + + case RH_PORT_SUSPEND: + isp116x_write_reg32(isp116x, HCRHPORT1 + wIndex - 1, + RH_PS_POCI); + len = 0; + break; + + case RH_PORT_POWER: + isp116x_write_reg32(isp116x, HCRHPORT1 + wIndex - 1, + RH_PS_LSDA); + len = 0; + break; + + case RH_C_PORT_CONNECTION: + isp116x_write_reg32(isp116x, HCRHPORT1 + wIndex - 1, + RH_PS_CSC); + len = 0; + break; + + case RH_C_PORT_ENABLE: + isp116x_write_reg32(isp116x, HCRHPORT1 + wIndex - 1, + RH_PS_PESC); + len = 0; + break; + + case RH_C_PORT_SUSPEND: + isp116x_write_reg32(isp116x, HCRHPORT1 + wIndex - 1, + RH_PS_PSSC); + len = 0; + break; + + case RH_C_PORT_OVER_CURRENT: + isp116x_write_reg32(isp116x, HCRHPORT1 + wIndex - 1, + RH_PS_POCI); + len = 0; + break; + + case RH_C_PORT_RESET: + isp116x_write_reg32(isp116x, HCRHPORT1 + wIndex - 1, + RH_PS_PRSC); + len = 0; + break; + + default: + ERR("invalid wValue"); + stat = USB_ST_STALLED; + } + + isp116x_show_regs(isp116x); + + break; + + case RH_SET_FEATURE | RH_OTHER | RH_CLASS: + DEBUG_HOST("RH_SET_FEATURE | RH_OTHER | RH_CLASS"); + + switch (wValue) { + case RH_PORT_SUSPEND: + isp116x_write_reg32(isp116x, HCRHPORT1 + wIndex - 1, + RH_PS_PSS); + len = 0; + break; + + case RH_PORT_RESET: + /* Spin until any current reset finishes */ + while (1) { + tmp = + isp116x_read_reg32(isp116x, + HCRHPORT1 + wIndex - 1); + if (!(tmp & RH_PS_PRS)) + break; + wait_ms(1); + } + isp116x_write_reg32(isp116x, HCRHPORT1 + wIndex - 1, + RH_PS_PRS); + wait_ms(10); + + len = 0; + break; + + case RH_PORT_POWER: + isp116x_write_reg32(isp116x, HCRHPORT1 + wIndex - 1, + RH_PS_PPS); + len = 0; + break; + + case RH_PORT_ENABLE: + isp116x_write_reg32(isp116x, HCRHPORT1 + wIndex - 1, + RH_PS_PES); + len = 0; + break; + + default: + ERR("invalid wValue"); + stat = USB_ST_STALLED; + } + + isp116x_show_regs(isp116x); + + break; + + case RH_SET_ADDRESS: + DEBUG_HOST("RH_SET_ADDRESS"); + + rh_devnum = wValue; + len = 0; + break; + + case RH_GET_DESCRIPTOR: + DEBUG_HOST("RH_GET_DESCRIPTOR: %x, %d", wValue, wLength); + + switch (wValue) { + case (USB_DT_DEVICE << 8): /* device descriptor */ + len = min1_t(unsigned int, + leni, min2_t(unsigned int, + sizeof(root_hub_dev_des), + wLength)); + data_buf = root_hub_dev_des; + break; + + case (USB_DT_CONFIG << 8): /* configuration descriptor */ + len = min1_t(unsigned int, + leni, min2_t(unsigned int, + sizeof(root_hub_config_des), + wLength)); + data_buf = root_hub_config_des; + break; + + case ((USB_DT_STRING << 8) | 0x00): /* string 0 descriptors */ + len = min1_t(unsigned int, + leni, min2_t(unsigned int, + sizeof(root_hub_str_index0), + wLength)); + data_buf = root_hub_str_index0; + break; + + case ((USB_DT_STRING << 8) | 0x01): /* string 1 descriptors */ + len = min1_t(unsigned int, + leni, min2_t(unsigned int, + sizeof(root_hub_str_index1), + wLength)); + data_buf = root_hub_str_index1; + break; + + default: + ERR("invalid wValue"); + stat = USB_ST_STALLED; + } + + break; + + case RH_GET_DESCRIPTOR | RH_CLASS: + DEBUG_HOST("RH_GET_DESCRIPTOR | RH_CLASS"); + + tmp = isp116x_read_reg32(isp116x, HCRHDESCA); + + data_buf[0] = 0x09; /* min length; */ + data_buf[1] = 0x29; + data_buf[2] = tmp & RH_A_NDP; + data_buf[3] = 0; + if (tmp & RH_A_PSM) /* per-port power switching? */ + data_buf[3] |= 0x01; + if (tmp & RH_A_NOCP) /* no overcurrent reporting? */ + data_buf[3] |= 0x10; + else if (tmp & RH_A_OCPM) /* per-port overcurrent rep? */ + data_buf[3] |= 0x08; + + /* Corresponds to data_buf[4-7] */ + datab[1] = 0; + data_buf[5] = (tmp & RH_A_POTPGT) >> 24; + + tmp = isp116x_read_reg32(isp116x, HCRHDESCB); + + data_buf[7] = tmp & RH_B_DR; + if (data_buf[2] < 7) + data_buf[8] = 0xff; + else { + data_buf[0] += 2; + data_buf[8] = (tmp & RH_B_DR) >> 8; + data_buf[10] = data_buf[9] = 0xff; + } + + len = min1_t(unsigned int, leni, + min2_t(unsigned int, data_buf[0], wLength)); + break; + + case RH_GET_CONFIGURATION: + DEBUG_HOST("RH_GET_CONFIGURATION"); + + *(__u8 *) data_buf = 0x01; + len = 1; + break; + + case RH_SET_CONFIGURATION: + DEBUG_HOST("RH_SET_CONFIGURATION"); + + isp116x_write_reg32(isp116x, HCRHSTATUS, RH_HS_LPSC); + len = 0; + break; + + default: + ERR("*** *** *** unsupported root hub command *** *** ***"); + stat = USB_ST_STALLED; + } + + len = min1_t(int, len, leni); + if (buffer != data_buf) + memcpy(buffer, data_buf, len); + + dev->act_len = len; + dev->status = stat; + DEBUG_HOST("dev act_len %d, status %ld", dev->act_len, dev->status); + + dump_msg(dev, pipe, buffer, transfer_len, "RH(ret)"); + + return stat; +} + +/* --- Transfer functions -------------------------------------------------- */ + +int submit_int_msg(struct usb_device *dev, unsigned long pipe, void *buffer, + int len, int interval) +{ + DEBUG_HOST("dev=%p pipe=%#lx buf=%p size=%d int=%d", + dev, pipe, buffer, len, interval); + + return -1; +} + +int submit_control_msg(struct usb_device *dev, unsigned long pipe, void *buffer, + int len, struct devrequest *setup) +{ + int devnum = usb_pipedevice(pipe); + int epnum = usb_pipeendpoint(pipe); + int max = max_transfer_len(dev, pipe); + int dir_in = usb_pipein(pipe); + int done, ret; + + + /* Control message is for the HUB? */ + if (devnum == rh_devnum) + return isp116x_submit_rh_msg(dev, pipe, buffer, len, setup); + + /* Ok, no HUB message so send the message to the device */ + + /* Setup phase */ + DEBUG_HOST("--- SETUP PHASE --------------------------------"); + usb_settoggle(dev, epnum, 1, 0); + + + ret = isp116x_submit_job(dev, pipe, + PTD_DIR_SETUP, + setup, sizeof(struct devrequest)); + if (ret < 0) { + DEBUG_HOST("control setup phase error (ret = %d", ret); + return -1; + } + + /* Data phase */ + DEBUG_HOST("--- DATA PHASE ---------------------------------"); + done = 0; + usb_settoggle(dev, epnum, !dir_in, 1); + while (done < len) { + ret = isp116x_submit_job(dev, pipe, + dir_in ? PTD_DIR_IN : PTD_DIR_OUT, + (__u8 *) buffer + done, + max > len - done ? len - done : max); + if (ret < 0) { + DEBUG_HOST("control data phase error (ret = %d)", ret); + return -1; + } + done += ret; + + if (dir_in && ret < max) /* short packet */ + break; + } + + /* Status phase */ + DEBUG_HOST("--- STATUS PHASE -------------------------------"); + usb_settoggle(dev, epnum, !dir_in, 1); + ret = isp116x_submit_job(dev, pipe, + !dir_in ? PTD_DIR_IN : PTD_DIR_OUT, NULL, 0); + if (ret < 0) { + DEBUG_HOST("control status phase error (ret = %d", ret); + return -1; + } + + dev->act_len = done; + + dump_msg(dev, pipe, buffer, len, "DEV(ret)"); + + return done; +} + +int submit_bulk_msg(struct usb_device *dev, unsigned long pipe, void *buffer, + int len) +{ + int dir_out = usb_pipeout(pipe); + int max = max_transfer_len(dev, pipe); + int done, ret; + + DEBUG_HOST("--- BULK ---------------------------------------"); + DEBUG_HOST("dev=%ld pipe=%ld buf=%p size=%d dir_out=%d", + usb_pipedevice(pipe), usb_pipeendpoint(pipe), buffer, len, dir_out); + + done = 0; + while (done < len) { + + ret = isp116x_submit_job(dev, pipe, + !dir_out ? PTD_DIR_IN : PTD_DIR_OUT, + (__u8 *) buffer + done, + max > len - done ? len - done : max); + + if (ret < 0) { + DEBUG_HOST("error on bulk message (ret = %d)", ret); + return -1; + } + + done += ret; + + if (!dir_out && ret < max) /* short packet */ + break; + } + + dev->act_len = done; + + return 0; +} + +/* --- Basic functions ----------------------------------------------------- */ + + +#if 0 +/* GALVEZ: Test function */ +static int GALVEZ_test_function( struct isp116x *isp116x ) +{ + short rwc; + + rwc = isp116x_read_reg16(isp116x, HCCONTROL) & HCCONTROL_RWC; + if (rwc) { + INFO ("remote wake-up supported \n\r"); + } + return 0; + +} +#endif + +static int isp116x_sw_reset(struct isp116x *isp116x) +{ + int retries = 15; + int ret = 0; + + DEBUG_HOST(""); + + isp116x->disabled = 1; + + isp116x_write_reg16(isp116x, HCSWRES, HCSWRES_MAGIC); + isp116x_write_reg32(isp116x, HCCMDSTAT, HCCMDSTAT_HCR); + + while (--retries) { + /* It usually resets within 1 ms */ + /* GALVEZ: not enough for TOS, try 7 ms */ + wait_ms(7); + if (!(isp116x_read_reg32(isp116x, HCCMDSTAT) & HCCMDSTAT_HCR)) + break; + } + + if (!retries) { + ERR("software reset timeout"); + ret = -1; + } + +#if 0 + /* GALVEZ: DEBUG SOFTWARE RESET */ + + retries = 5000; + + while (--retries){ + if ((isp116x_read_reg32(isp116x, HCCMDSTAT) & HCCMDSTAT_HCR)) { + INFO ("HCR: 1 retries: %d\n\r",retries); + } + } +#endif /* END DEBUG */ + + return ret; +} + +static int isp116x_reset(struct isp116x *isp116x) +{ + unsigned long t; + u16 clkrdy = 0; + int ret, timeout = 15;/* ms + * Galvez: 15 ms sometimes isn't enough, + * for EtherNat under TOS ??????? increased to 150 ms + */ + + DEBUG_HOST(""); + + ret = isp116x_sw_reset(isp116x); + + if (ret) + return ret; + + for (t = 0; t < timeout; t++) { + clkrdy = isp116x_read_reg16(isp116x, HCuPINT) & HCuPINT_CLKRDY; + if (clkrdy) + break; + wait_ms(1); + } + if (!clkrdy) { + ERR("clock not ready after %dms", timeout); + /* After sw_reset the clock won't report to be ready, if + H_WAKEUP pin is high. */ + ERR("please make sure that the H_WAKEUP pin is pulled low!"); + ret = -1; + } + return ret; +} + +static void isp116x_stop(struct isp116x *isp116x) +{ + u32 val; + + DEBUG_HOST(""); + + isp116x_write_reg16(isp116x, HCuPINTENB, 0); + + /* Switch off ports' power, some devices don't come up + after next 'start' without this */ + val = isp116x_read_reg32(isp116x, HCRHDESCA); + val &= ~(RH_A_NPS | RH_A_PSM); + isp116x_write_reg32(isp116x, HCRHDESCA, val); + isp116x_write_reg32(isp116x, HCRHSTATUS, RH_HS_LPS); + + isp116x_sw_reset(isp116x); + +#if 0 + /* EtherNAT control register, disamble interrupt for USB */ + u8 *cpld_cr, value; + p = SuperFromUser(); + cpld_cr = ETHERNAT_CPLD_CR; + value = *cpld_cr; + INFO ("ETHERNAT_CPLD_CR %x", value); + value &= 0xFB; + INFO ("ETHERNAT_CPLD_CR %x", value); + *cpld_cr = value; + SuperToUser(p); +#endif +} + +/* + * Configure the chip. The chip must be successfully reset by now. + */ +static int isp116x_start(struct isp116x *isp116x) +{ + struct isp116x_platform_data *board = isp116x->board; + u32 val; + + DEBUG_HOST(""); + + /* Clear interrupt status and disable all interrupt sources */ + isp116x_write_reg16(isp116x, HCuPINT, 0xff); + isp116x_write_reg16(isp116x, HCuPINTENB, 0); + + isp116x_write_reg16(isp116x, HCITLBUFLEN, ISP116x_ITL_BUFSIZE); + isp116x_write_reg16(isp116x, HCATLBUFLEN, ISP116x_ATL_BUFSIZE); + + /* Hardware configuration */ + val = HCHWCFG_DBWIDTH(1); + + if (board->sel15Kres) + val |= HCHWCFG_15KRSEL; + /* Remote wakeup won't work without working clock */ + if (board->remote_wakeup_enable) + val |= HCHWCFG_CLKNOTSTOP; + if (board->oc_enable) + val |= HCHWCFG_ANALOG_OC; + isp116x_write_reg16(isp116x, HCHWCFG, val); + +#if 0 + /* EtherNAT control register, enable interrupt for USB */ + u8 *cpld_cr, value; + p = SuperFromUser(); + cpld_cr = ETHERNAT_CPLD_CR; + INFO ("%s: ETHERNAT_CPLD_CR reg: %x",__FUNCTION__, *cpld_cr); + value = *cpld_cr; + value |= 0x04; + Bconin(DEV_CONSOLE); + *cpld_cr = value; + Bconin(DEV_CONSOLE); + INFO ("%s: ETHERNAT_CPLD_CR reg:%x", __FUNCTION__, *cpld_cr); + SuperToUser(p); +#endif + /* --- Root hub configuration */ + val = (25 << 24) & RH_A_POTPGT; + /* AN10003_1.pdf recommends RH_A_NPS (no power switching) to + be always set. Yet, instead, we request individual port + power switching. */ + val |= RH_A_PSM; + /* Report overcurrent per port */ + val |= RH_A_OCPM; + isp116x_write_reg32(isp116x, HCRHDESCA, val); + isp116x->rhdesca = isp116x_read_reg32(isp116x, HCRHDESCA); + + val = RH_B_PPCM; + isp116x_write_reg32(isp116x, HCRHDESCB, val); + isp116x->rhdescb = isp116x_read_reg32(isp116x, HCRHDESCB); + + val = 0; + if (board->remote_wakeup_enable) + val |= RH_HS_DRWE; + isp116x_write_reg32(isp116x, HCRHSTATUS, val); + isp116x->rhstatus = isp116x_read_reg32(isp116x, HCRHSTATUS); + + isp116x_write_reg32(isp116x, HCFMINTVL, 0x27782edf); + + /* Go operational */ + val = HCCONTROL_USB_OPER; + if (board->remote_wakeup_enable) + val |= HCCONTROL_RWE; + isp116x_write_reg32(isp116x, HCCONTROL, val); + + /* Disable ports to avoid race in device enumeration */ + isp116x_write_reg32(isp116x, HCRHPORT1, RH_PS_CCS); + isp116x_write_reg32(isp116x, HCRHPORT2, RH_PS_CCS); + + isp116x_show_regs(isp116x); + + isp116x->disabled = 0; + + return 0; +} + +/* --- Init functions ------------------------------------------------------ */ + + + +int isp116x_check_id(struct isp116x *isp116x) +{ + u16 val; + + val = isp116x_read_reg16(isp116x, HCCHIPID); + DEBUG_HOST("chip ID: %04x", val); + + if ((val & HCCHIPID_MASK) != HCCHIPID_MAGIC) { + printf("invalid chip ID %04x", val); + return -1; + } + + return 0; +} + + +int usb_lowlevel_init(void) +{ +// u16 val; + + struct isp116x *isp116x = &isp116x_dev; + + DEBUG_HOST(""); + + got_rhsc = rh_devnum = 0; + + /* Init device registers addr */ + isp116x->addr_reg = (u16 *) ISP116X_HCD_ADDR; + isp116x->data_reg = (u16 *) ISP116X_HCD_DATA; + + /* Setup specific board settings */ +#ifdef ISP116X_HCD_SEL15kRES + isp116x_board.sel15Kres = 1; +#endif +#ifdef ISP116X_HCD_OC_ENABLE + isp116x_board.oc_enable = 1; +#endif +#ifdef ISP116X_HCD_REMOTE_WAKEUP_ENABLE + isp116x_board.remote_wakeup_enable = 1; +#endif + isp116x->board = &isp116x_board; + + /* Try to get ISP116x silicon chip ID */ + if (isp116x_check_id(isp116x) < 0) + return (-1); + + isp116x->disabled = 1; + isp116x->sleeping = 0; + + isp116x_reset(isp116x); + isp116x_start(isp116x); + + return 0; +} + +int usb_lowlevel_stop(void) +{ + struct isp116x *isp116x = &isp116x_dev; + + DEBUG_HOST(""); + + if (!isp116x->disabled) + isp116x_stop(isp116x); + + return 0; +} diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/host/ethernat/isp116x.h b/BaS_codewarrior/FireBee/trunk/usb/store/host/ethernat/isp116x.h new file mode 100644 index 0000000..26678ba --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/host/ethernat/isp116x.h @@ -0,0 +1,542 @@ +/* + * Modified for Atari-EtherNat by David Gálvez 2010 + * + * ISP116x register declarations and HCD data structures + * + * Copyright (C) 2007 Rodolfo Giometti + * Copyright (C) 2007 Eurotech S.p.A. + * Copyright (C) 2005 Olav Kongas + * Portions: + * Copyright (C) 2004 Lothar Wassmann + * Copyright (C) 2004 Psion Teklogix + * Copyright (C) 2004 David Brownell + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#ifndef _ETHERNAT_ISP116X_H +#define _ETHERNAT_ISP116X_H + + +#define ERR(fmt, args...) printf("isp116x: %s: " fmt "\n\r" , __FUNCTION__ , ## args) +#define WARN(fmt, args...) printf("isp116x: %s: " fmt "\n\r" , __FUNCTION__ , ## args) +#define INFO(fmt, args...) printf("isp116x: " fmt "\n\r" , ## args) + +/* ------------------------------------------------------------------------- */ + +/* us of 1ms frame */ +#define MAX_LOAD_LIMIT 850 + +/* Full speed: max # of bytes to transfer for a single urb + at a time must be < 1024 && must be multiple of 64. + 832 allows transfering 4kiB within 5 frames. */ +#define MAX_TRANSFER_SIZE_FULLSPEED 832 + +/* Low speed: there is no reason to schedule in very big + chunks; often the requested long transfers are for + string descriptors containing short strings. */ +#define MAX_TRANSFER_SIZE_LOWSPEED 64 + +/* Bytetime (us), a rough indication of how much time it + would take to transfer a byte of useful data over USB */ +#define BYTE_TIME_FULLSPEED 1 +#define BYTE_TIME_LOWSPEED 20 + +/* Buffer sizes */ +#define ISP116x_BUF_SIZE 4096 +#define ISP116x_ITL_BUFSIZE 0 +#define ISP116x_ATL_BUFSIZE ((ISP116x_BUF_SIZE) - 2*(ISP116x_ITL_BUFSIZE)) + +#define ISP116x_WRITE_OFFSET 0x80 + +/* --- ISP116x address registers in EtherNAT --------------------------------*/ + +#define ISP116X_HCD_ADDR 0x80000016 +#define ISP116X_HCD_DATA 0x80000012 +#define ETHERNAT_CPLD_CR 0x80000023 /* 0x80000023 - 1 */ + +/* --- ISP116x registers/bits ---------------------------------------------- */ + +#define HCREVISION 0x00 +#define HCCONTROL 0x01 +#define HCCONTROL_HCFS (3 << 6) /* host controller + functional state */ +#define HCCONTROL_USB_RESET (0 << 6) +#define HCCONTROL_USB_RESUME (1 << 6) +#define HCCONTROL_USB_OPER (2 << 6) +#define HCCONTROL_USB_SUSPEND (3 << 6) +#define HCCONTROL_RWC (1 << 9) /* remote wakeup connected */ +#define HCCONTROL_RWE (1 << 10) /* remote wakeup enable */ +#define HCCMDSTAT 0x02 +#define HCCMDSTAT_HCR (1 << 0) /* host controller reset */ +#define HCCMDSTAT_SOC (3 << 16) /* scheduling overrun count */ +#define HCINTSTAT 0x03 +#define HCINT_SO (1 << 0) /* scheduling overrun */ +#define HCINT_WDH (1 << 1) /* writeback of done_head */ +#define HCINT_SF (1 << 2) /* start frame */ +#define HCINT_RD (1 << 3) /* resume detect */ +#define HCINT_UE (1 << 4) /* unrecoverable error */ +#define HCINT_FNO (1 << 5) /* frame number overflow */ +#define HCINT_RHSC (1 << 6) /* root hub status change */ +#define HCINT_OC (1 << 30) /* ownership change */ +#define HCINT_MIE (1 << 31) /* master interrupt enable */ +#define HCINTENB 0x04 +#define HCINTDIS 0x05 +#define HCFMINTVL 0x0d +#define HCFMREM 0x0e +#define HCFMNUM 0x0f +#define HCLSTHRESH 0x11 +#define HCRHDESCA 0x12 +#define RH_A_NDP (0x3 << 0) /* # downstream ports */ +#define RH_A_PSM (1 << 8) /* power switching mode */ +#define RH_A_NPS (1 << 9) /* no power switching */ +#define RH_A_DT (1 << 10) /* device type (mbz) */ +#define RH_A_OCPM (1 << 11) /* overcurrent protection + mode */ +#define RH_A_NOCP (1 << 12) /* no overcurrent protection */ +#define RH_A_POTPGT (0xff << 24) /* power on -> power good + time */ +#define HCRHDESCB 0x13 +#define RH_B_DR (0xffff << 0) /* device removable flags */ +#define RH_B_PPCM (0xffff << 16) /* port power control mask */ +#define HCRHSTATUS 0x14 +#define RH_HS_LPS (1 << 0) /* local power status */ +#define RH_HS_OCI (1 << 1) /* over current indicator */ +#define RH_HS_DRWE (1 << 15) /* device remote wakeup + enable */ +#define RH_HS_LPSC (1 << 16) /* local power status change */ +#define RH_HS_OCIC (1 << 17) /* over current indicator + change */ +#define RH_HS_CRWE (1 << 31) /* clear remote wakeup + enable */ +#define HCRHPORT1 0x15 +#define RH_PS_CCS (1 << 0) /* current connect status */ +#define RH_PS_PES (1 << 1) /* port enable status */ +#define RH_PS_PSS (1 << 2) /* port suspend status */ +#define RH_PS_POCI (1 << 3) /* port over current + indicator */ +#define RH_PS_PRS (1 << 4) /* port reset status */ +#define RH_PS_PPS (1 << 8) /* port power status */ +#define RH_PS_LSDA (1 << 9) /* low speed device attached */ +#define RH_PS_CSC (1 << 16) /* connect status change */ +#define RH_PS_PESC (1 << 17) /* port enable status change */ +#define RH_PS_PSSC (1 << 18) /* port suspend status + change */ +#define RH_PS_OCIC (1 << 19) /* over current indicator + change */ +#define RH_PS_PRSC (1 << 20) /* port reset status change */ +#define HCRHPORT_CLRMASK (0x1f << 16) +#define HCRHPORT2 0x16 +#define HCHWCFG 0x20 +#define HCHWCFG_15KRSEL (1 << 12) +#define HCHWCFG_CLKNOTSTOP (1 << 11) +#define HCHWCFG_ANALOG_OC (1 << 10) +#define HCHWCFG_DACK_MODE (1 << 8) +#define HCHWCFG_EOT_POL (1 << 7) +#define HCHWCFG_DACK_POL (1 << 6) +#define HCHWCFG_DREQ_POL (1 << 5) +#define HCHWCFG_DBWIDTH_MASK (0x03 << 3) +#define HCHWCFG_DBWIDTH(n) (((n) << 3) & HCHWCFG_DBWIDTH_MASK) +#define HCHWCFG_INT_POL (1 << 2) +#define HCHWCFG_INT_TRIGGER (1 << 1) +#define HCHWCFG_INT_ENABLE (1 << 0) +#define HCDMACFG 0x21 +#define HCDMACFG_BURST_LEN_MASK (0x03 << 5) +#define HCDMACFG_BURST_LEN(n) (((n) << 5) & HCDMACFG_BURST_LEN_MASK) +#define HCDMACFG_BURST_LEN_1 HCDMACFG_BURST_LEN(0) +#define HCDMACFG_BURST_LEN_4 HCDMACFG_BURST_LEN(1) +#define HCDMACFG_BURST_LEN_8 HCDMACFG_BURST_LEN(2) +#define HCDMACFG_DMA_ENABLE (1 << 4) +#define HCDMACFG_BUF_TYPE_MASK (0x07 << 1) +#define HCDMACFG_CTR_SEL (1 << 2) +#define HCDMACFG_ITLATL_SEL (1 << 1) +#define HCDMACFG_DMA_RW_SELECT (1 << 0) +#define HCXFERCTR 0x22 +#define HCuPINT 0x24 +#define HCuPINT_SOF (1 << 0) +#define HCuPINT_ATL (1 << 1) +#define HCuPINT_AIIEOT (1 << 2) +#define HCuPINT_OPR (1 << 4) +#define HCuPINT_SUSP (1 << 5) +#define HCuPINT_CLKRDY (1 << 6) +#define HCuPINTENB 0x25 +#define HCCHIPID 0x27 +#define HCCHIPID_MASK 0xff00 +#define HCCHIPID_MAGIC 0x6100 +#define HCSCRATCH 0x28 +#define HCSWRES 0x29 +#define HCSWRES_MAGIC 0x00f6 +#define HCITLBUFLEN 0x2a +#define HCATLBUFLEN 0x2b +#define HCBUFSTAT 0x2c +#define HCBUFSTAT_ITL0_FULL (1 << 0) +#define HCBUFSTAT_ITL1_FULL (1 << 1) +#define HCBUFSTAT_ATL_FULL (1 << 2) +#define HCBUFSTAT_ITL0_DONE (1 << 3) +#define HCBUFSTAT_ITL1_DONE (1 << 4) +#define HCBUFSTAT_ATL_DONE (1 << 5) +#define HCRDITL0LEN 0x2d +#define HCRDITL1LEN 0x2e +#define HCITLPORT 0x40 +#define HCATLPORT 0x41 + +/* PTD accessor macros. */ +#define PTD_GET_COUNT(p) (((p)->count & PTD_COUNT_MSK) >> 0) +#define PTD_COUNT(v) (((v) << 0) & PTD_COUNT_MSK) +#define PTD_GET_TOGGLE(p) (((p)->count & PTD_TOGGLE_MSK) >> 10) +#define PTD_TOGGLE(v) (((v) << 10) & PTD_TOGGLE_MSK) +#define PTD_GET_ACTIVE(p) (((p)->count & PTD_ACTIVE_MSK) >> 11) +#define PTD_ACTIVE(v) (((v) << 11) & PTD_ACTIVE_MSK) +#define PTD_GET_CC(p) (((p)->count & PTD_CC_MSK) >> 12) +#define PTD_CC(v) (((v) << 12) & PTD_CC_MSK) +#define PTD_GET_MPS(p) (((p)->mps & PTD_MPS_MSK) >> 0) +#define PTD_MPS(v) (((v) << 0) & PTD_MPS_MSK) +#define PTD_GET_SPD(p) (((p)->mps & PTD_SPD_MSK) >> 10) +#define PTD_SPD(v) (((v) << 10) & PTD_SPD_MSK) +#define PTD_GET_LAST(p) (((p)->mps & PTD_LAST_MSK) >> 11) +#define PTD_LAST(v) (((v) << 11) & PTD_LAST_MSK) +#define PTD_GET_EP(p) (((p)->mps & PTD_EP_MSK) >> 12) +#define PTD_EP(v) (((v) << 12) & PTD_EP_MSK) +#define PTD_GET_LEN(p) (((p)->len & PTD_LEN_MSK) >> 0) +#define PTD_LEN(v) (((v) << 0) & PTD_LEN_MSK) +#define PTD_GET_DIR(p) (((p)->len & PTD_DIR_MSK) >> 10) +#define PTD_DIR(v) (((v) << 10) & PTD_DIR_MSK) +#define PTD_GET_B5_5(p) (((p)->len & PTD_B5_5_MSK) >> 13) +#define PTD_B5_5(v) (((v) << 13) & PTD_B5_5_MSK) +#define PTD_GET_FA(p) (((p)->faddr & PTD_FA_MSK) >> 0) +#define PTD_FA(v) (((v) << 0) & PTD_FA_MSK) +#define PTD_GET_FMT(p) (((p)->faddr & PTD_FMT_MSK) >> 7) +#define PTD_FMT(v) (((v) << 7) & PTD_FMT_MSK) + +/* Hardware transfer status codes -- CC from ptd->count */ +#define TD_CC_NOERROR 0x00 +#define TD_CC_CRC 0x01 +#define TD_CC_BITSTUFFING 0x02 +#define TD_CC_DATATOGGLEM 0x03 +#define TD_CC_STALL 0x04 +#define TD_DEVNOTRESP 0x05 +#define TD_PIDCHECKFAIL 0x06 +#define TD_UNEXPECTEDPID 0x07 +#define TD_DATAOVERRUN 0x08 +#define TD_DATAUNDERRUN 0x09 + /* 0x0A, 0x0B reserved for hardware */ +#define TD_BUFFEROVERRUN 0x0C +#define TD_BUFFERUNDERRUN 0x0D + /* 0x0E, 0x0F reserved for HCD */ +#define TD_NOTACCESSED 0x0F + +/* ------------------------------------------------------------------------- */ + +#define LOG2_PERIODIC_SIZE 5 /* arbitrary; this matches OHCI */ +#define PERIODIC_SIZE (1 << LOG2_PERIODIC_SIZE) + +/* Philips transfer descriptor */ +struct ptd { + u16 count; +#define PTD_COUNT_MSK (0x3ff << 0) +#define PTD_TOGGLE_MSK (1 << 10) +#define PTD_ACTIVE_MSK (1 << 11) +#define PTD_CC_MSK (0xf << 12) + u16 mps; +#define PTD_MPS_MSK (0x3ff << 0) +#define PTD_SPD_MSK (1 << 10) +#define PTD_LAST_MSK (1 << 11) +#define PTD_EP_MSK (0xf << 12) + u16 len; +#define PTD_LEN_MSK (0x3ff << 0) +#define PTD_DIR_MSK (3 << 10) +#define PTD_DIR_SETUP (0) +#define PTD_DIR_OUT (1) +#define PTD_DIR_IN (2) +#define PTD_B5_5_MSK (1 << 13) + u16 faddr; +#define PTD_FA_MSK (0x7f << 0) +#define PTD_FMT_MSK (1 << 7) +} __attribute__ ((packed, aligned(2))); + +struct isp116x_ep { + struct usb_device *udev; + struct ptd ptd; + + u8 maxpacket; + u8 epnum; + u8 nextpid; + + u16 length; /* of current packet */ + unsigned char *data; /* to databuf */ + + u16 error_count; +}; + +/* URB struct */ +#define N_URB_TD 48 +#define URB_DEL 1 +typedef struct { + struct isp116x_ep *ed; + void *transfer_buffer; /* (in) associated data buffer */ + int actual_length; /* (return) actual transfer length */ + unsigned long pipe; /* (in) pipe information */ +#if 0 + int state; +#endif +} urb_priv_t; + +struct isp116x_platform_data { + /* Enable internal resistors on downstream ports */ + unsigned sel15Kres:1; + /* On-chip overcurrent detection */ + unsigned oc_enable:1; + /* Enable wakeup by devices on usb bus (e.g. wakeup + by attachment/detachment or by device activity + such as moving a mouse). When chosen, this option + prevents stopping internal clock, increasing + thereby power consumption in suspended state. */ + unsigned remote_wakeup_enable:1; +}; + +struct isp116x { + u16 *addr_reg; + u16 *data_reg; + + struct isp116x_platform_data *board; + + struct dentry *dentry; + unsigned long stat1, stat2, stat4, stat8, stat16; + + /* Status flags */ + unsigned disabled:1; + unsigned sleeping:1; + + /* Root hub registers */ + u32 rhdesca; + u32 rhdescb; + u32 rhstatus; + u32 rhport[2]; + + /* Schedule for the current frame */ + struct isp116x_ep *atl_active; + int atl_buflen; + int atl_bufshrt; + int atl_last_dir; + int atl_finishing; +}; + +/* ------------------------------------------------- */ + +/* Inter-io delay (ns). The chip is picky about access timings; it + * expects at least: + * 150ns delay between consecutive accesses to DATA_REG, + * 300ns delay between access to ADDR_REG and DATA_REG + * OE, WE MUST NOT be changed during these intervals + */ +#if defined(UDELAY) +#define isp116x_delay(h,d) udelay(d) +#else +#define isp116x_delay(h,d) do {} while (0) +#endif + +#include "../../super.h" /* + * Functions to call supervisor mode + * Super() in TOS is buggy + */ + +u32 p; + +static inline void isp116x_write_addr(struct isp116x *isp116x, unsigned reg) +{ +// p = SuperFromUser( ); + __raw_writew(reg & 0xff, isp116x->addr_reg ); + isp116x_delay(isp116x, UDELAY); +// SuperToUser( p ); +} + +static inline void isp116x_write_data16(struct isp116x *isp116x, u16 val) +{ +// p = SuperFromUser( ); + writew(val, isp116x->data_reg); + isp116x_delay(isp116x, UDELAY); +// SuperToUser( p ); +} + +static inline void isp116x_raw_write_data16(struct isp116x *isp116x, u16 val) +{ +// p = SuperFromUser( ); + __raw_writew(val, isp116x->data_reg); + isp116x_delay(isp116x, UDELAY); +// SuperToUser( p ); +} + +static inline u16 isp116x_read_data16(struct isp116x *isp116x) +{ + u16 val; +// p = SuperFromUser( ); + val = readw(isp116x->data_reg); + isp116x_delay(isp116x, UDELAY); +// SuperToUser( p ); + return val; +} + +static inline u16 isp116x_raw_read_data16(struct isp116x *isp116x) +{ + u16 val; +// p = SuperFromUser( ); + val = __raw_readw(isp116x->data_reg); + isp116x_delay(isp116x, UDELAY); +// SuperToUser( p ); + return val; +} + + +static inline void isp116x_write_data32(struct isp116x *isp116x, u32 val) +{ +// p = SuperFromUser( ); + writew(val & 0xffff, isp116x->data_reg); + isp116x_delay(isp116x, UDELAY); + writew(val >> 16, isp116x->data_reg); + isp116x_delay(isp116x, UDELAY); +// SuperToUser( p ); +} + +/* + * Added for EtherNat, to write HC registers without swaping them + * EtherNat already swap them by hardware (i suppose.....) + */ +static inline void isp116x_raw_write_data32(struct isp116x *isp116x, u32 val) +{ +// p = SuperFromUser( ); + __raw_writew(val & 0xffff, isp116x->data_reg); + isp116x_delay(isp116x, UDELAY); + __raw_writew(val >> 16, isp116x->data_reg); + isp116x_delay(isp116x, UDELAY); +// SuperToUser( p ); +} +/***********************************************/ + +static inline u32 isp116x_read_data32(struct isp116x *isp116x) +{ + u32 val; +// p = SuperFromUser( ); + val = (u32) readw(isp116x->data_reg); + isp116x_delay(isp116x, UDELAY); + val |= ((u32) readw(isp116x->data_reg)) << 16; + isp116x_delay(isp116x, UDELAY); +// SuperToUser( p ); + return val; +} + +/* + * Added for EtherNat, to read HC registers without swaping them + * EtherNat already swap them by hardware (i suppose.....) + */ +static inline u32 isp116x_raw_read_data32(struct isp116x *isp116x) +{ + u32 val; +// p = SuperFromUser( ); + val = (u32) __raw_readw(isp116x->data_reg); + isp116x_delay(isp116x, UDELAY); + val |= ((u32) __raw_readw(isp116x->data_reg)) << 16; + isp116x_delay(isp116x, UDELAY); +// SuperToUser( p ); + return val; +} +/*******************************************************************/ + +/* Let's keep register access functions out of line. Hint: + we wait at least 150 ns at every access. +*/ + +/* with EtherNat use raw_read to avoid swaping bytes*/ + +static u16 isp116x_read_reg16(struct isp116x *isp116x, unsigned reg) +{ + isp116x_write_addr(isp116x, reg); + return isp116x_raw_read_data16(isp116x); +} + +static u32 isp116x_read_reg32(struct isp116x *isp116x, unsigned reg) +{ + isp116x_write_addr(isp116x, reg); + return isp116x_raw_read_data32(isp116x); +} + +static void isp116x_write_reg16(struct isp116x *isp116x, unsigned reg, + unsigned val) +{ + isp116x_write_addr(isp116x, reg | ISP116x_WRITE_OFFSET); + isp116x_raw_write_data16(isp116x, (u16) (val & 0xffff)); +} + +/* with Etehrnat used raw_write to avoid swaping bytes by software */ +static void isp116x_write_reg32(struct isp116x *isp116x, unsigned reg, + unsigned val) +{ + isp116x_write_addr(isp116x, reg | ISP116x_WRITE_OFFSET); + isp116x_raw_write_data32(isp116x, (u32) val); +} + +/* --- USB HUB constants (not OHCI-specific; see hub.h) -------------------- */ + +/* destination of request */ +#define RH_INTERFACE 0x01 +#define RH_ENDPOINT 0x02 +#define RH_OTHER 0x03 + +#define RH_CLASS 0x20 +#define RH_VENDOR 0x40 + +/* Requests: bRequest << 8 | bmRequestType */ +#define RH_GET_STATUS 0x0080 +#define RH_CLEAR_FEATURE 0x0100 +#define RH_SET_FEATURE 0x0300 +#define RH_SET_ADDRESS 0x0500 +#define RH_GET_DESCRIPTOR 0x0680 +#define RH_SET_DESCRIPTOR 0x0700 +#define RH_GET_CONFIGURATION 0x0880 +#define RH_SET_CONFIGURATION 0x0900 +#define RH_GET_STATE 0x0280 +#define RH_GET_INTERFACE 0x0A80 +#define RH_SET_INTERFACE 0x0B00 +#define RH_SYNC_FRAME 0x0C80 +/* Our Vendor Specific Request */ +#define RH_SET_EP 0x2000 + +/* Hub port features */ +#define RH_PORT_CONNECTION 0x00 +#define RH_PORT_ENABLE 0x01 +#define RH_PORT_SUSPEND 0x02 +#define RH_PORT_OVER_CURRENT 0x03 +#define RH_PORT_RESET 0x04 +#define RH_PORT_POWER 0x08 +#define RH_PORT_LOW_SPEED 0x09 + +#define RH_C_PORT_CONNECTION 0x10 +#define RH_C_PORT_ENABLE 0x11 +#define RH_C_PORT_SUSPEND 0x12 +#define RH_C_PORT_OVER_CURRENT 0x13 +#define RH_C_PORT_RESET 0x14 + +/* Hub features */ +#define RH_C_HUB_LOCAL_POWER 0x00 +#define RH_C_HUB_OVER_CURRENT 0x01 + +#define RH_DEVICE_REMOTE_WAKEUP 0x00 +#define RH_ENDPOINT_STALL 0x01 + +#define RH_ACK 0x01 +#define RH_REQ_ERR -1 +#define RH_NACK 0x00 + +#endif /* _ETHERNAT_ISP116X_H */ diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/host/netusbee/isp116x-hcd.c b/BaS_codewarrior/FireBee/trunk/usb/store/host/netusbee/isp116x-hcd.c new file mode 100644 index 0000000..c26e6e1 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/host/netusbee/isp116x-hcd.c @@ -0,0 +1,1561 @@ +/* + * Modified for Atari-NetUSBee by David Gálvez 2010 + * + * ISP116x HCD (Host Controller Driver) for u-boot. + * + * Copyright (C) 2006-2007 Rodolfo Giometti + * Copyright (C) 2006-2007 Eurotech S.p.A. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Derived in part from the SL811 HCD driver "u-boot/drivers/usb/sl811_usb.c" + * (original copyright message follows): + * + * (C) Copyright 2004 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * This code is based on linux driver for sl811hs chip, source at + * drivers/usb/host/sl811.c: + * + * SL811 Host Controller Interface driver for USB. + * + * Copyright (c) 2003/06, Courage Co., Ltd. + * + * Based on: + * 1.uhci.c by Linus Torvalds, Johannes Erdfelt, Randy Dunlap, + * Georg Acher, Deti Fliegl, Thomas Sailer, Roman Weissgaerber, + * Adam Richter, Gregory P. Smith; + * 2.Original SL811 driver (hc_sl811.o) by Pei Liu + * 3.Rewrited as sl811.o by Yin Aihua + * + * [[GNU/GPL disclaimer]] + * + * and in part from AU1x00 OHCI HCD driver "u-boot/cpu/mips/au1x00_usb_ohci.c" + * (original copyright message follows): + * + * URB OHCI HCD (Host Controller Driver) for USB on the AU1x00. + * + * (C) Copyright 2003 + * Gary Jennejohn, DENX Software Engineering + * + * [[GNU/GPL disclaimer]] + * + * Note: Part of this code has been derived from linux + */ + +#include "../../config.h" +#include "../../asm-m68k/io.h" +#include "../../usb.h" +#include "../../debug.h" + +void udelay (unsigned long usec); + +//extern void boot_printf (const char *fmt, ...); + + +/* + * ISP116x chips require certain delays between accesses to its + * registers. The following timing options exist. + * + * 1. Configure your memory controller (the best) + * 2. Use ndelay (easiest, poorest). For that, enable the following macro. + * + * Value is in microseconds. + */ +#ifdef ISP116X_HCD_USE_UDELAY +#define UDELAY 1 +#endif + +/* + * On some (slowly?) machines an extra delay after data packing into + * controller's FIFOs is required, * otherwise you may get the following + * error: + * + * uboot> usb start + * (Re)start USB... + * USB: scanning bus for devices... isp116x: isp116x_submit_job: CTL:TIMEOUT + * isp116x: isp116x_submit_job: ****** FIFO not ready! ****** + * + * USB device not responding, giving up (status=4) + * isp116x: isp116x_submit_job: ****** FIFO not empty! ****** + * isp116x: isp116x_submit_job: ****** FIFO not empty! ****** + * isp116x: isp116x_submit_job: ****** FIFO not empty! ****** + * 3 USB Device(s) found + * scanning bus for storage devices... 0 Storage Device(s) found + * + * Value is in milliseconds. + */ +#ifdef ISP116X_HCD_USE_EXTRA_DELAY +#define EXTRA_DELAY 50 +#endif + +/* + * Enable the following defines if you wish enable extra debugging messages. + * Normal debug messages controlled from config.h. + */ + +//#define TRACE /* enable tracing code */ +//#define VERBOSE /* verbose debugging messages */ + +#include "isp116x.h" + +#define DRIVER_VERSION "08 Jan 2007" +static const char hcd_name[] = "isp116x-hcd"; + +struct isp116x isp116x_dev; +struct isp116x_platform_data isp116x_board; +static int got_rhsc; /* root hub status change */ +struct usb_device *devgone; /* device which was disconnected */ +static int rh_devnum; /* address of Root Hub endpoint */ + +/* ------------------------------------------------------------------------- */ + +#define ALIGN(x,a) (((x)+(a)-1UL)&~((a)-1UL)) +#define min1_t(type,x,y) \ + ({ type __x = (x); type __y = (y); __x < __y ? __x : __y; }) + +/*Galvez: added to avoid shadow warnings */ +#define min2_t(type,x,y) \ + ({ type __a = (x); type __b = (y); __a < __b ? __a : __b; }) + +/* ------------------------------------------------------------------------- */ + + +static int isp116x_reset(struct isp116x *isp116x); + +/* --- Debugging functions ------------------------------------------------- */ + +#define isp116x_show_reg(d, r) { \ + if ((r) < 0x20) { \ + DEBUG_HOST("%-12s[%02x]: %08x", #r, \ + r, isp116x_read_reg32(d, r)); \ + } else { \ + DEBUG_HOST("%-12s[%02x]: %04x", #r, \ + r, isp116x_read_reg16(d, r)); \ + } \ +} + +#define isp116x_show_regs(d) { \ + isp116x_show_reg(d, HCREVISION); \ + isp116x_show_reg(d, HCCONTROL); \ + isp116x_show_reg(d, HCCMDSTAT); \ + isp116x_show_reg(d, HCINTSTAT); \ + isp116x_show_reg(d, HCINTENB); \ + isp116x_show_reg(d, HCFMINTVL); \ + isp116x_show_reg(d, HCFMREM); \ + isp116x_show_reg(d, HCFMNUM); \ + isp116x_show_reg(d, HCLSTHRESH); \ + isp116x_show_reg(d, HCRHDESCA); \ + isp116x_show_reg(d, HCRHDESCB); \ + isp116x_show_reg(d, HCRHSTATUS); \ + isp116x_show_reg(d, HCRHPORT1); \ + isp116x_show_reg(d, HCRHPORT2); \ + isp116x_show_reg(d, HCHWCFG); \ + isp116x_show_reg(d, HCDMACFG); \ + isp116x_show_reg(d, HCXFERCTR); \ + isp116x_show_reg(d, HCuPINT); \ + isp116x_show_reg(d, HCuPINTENB); \ + isp116x_show_reg(d, HCCHIPID); \ + isp116x_show_reg(d, HCSCRATCH); \ + isp116x_show_reg(d, HCITLBUFLEN); \ + isp116x_show_reg(d, HCATLBUFLEN); \ + isp116x_show_reg(d, HCBUFSTAT); \ + isp116x_show_reg(d, HCRDITL0LEN); \ + isp116x_show_reg(d, HCRDITL1LEN); \ +} + +#if defined(TRACE) + +static int isp116x_get_current_frame_number(struct usb_device *usb_dev) +{ + struct isp116x *isp116x = &isp116x_dev; + + return isp116x_read_reg32(isp116x, HCFMNUM); +} + +static void dump_msg(struct usb_device *dev, unsigned long pipe, void *buffer, + int len, char *str) +{ +#if defined(VERBOSE) + int i; +#endif + DEBUG_HOST("%s URB:[%4x] dev:%2ld,ep:%2ld-%c,type:%s,len:%d stat:%#lx", + str, + isp116x_get_current_frame_number(dev), + usb_pipedevice(pipe), + usb_pipeendpoint(pipe), + usb_pipeout(pipe) ? 'O' : 'I', + usb_pipetype(pipe) < 2 ? + (usb_pipeint(pipe) ? + "INTR" : "ISOC") : + (usb_pipecontrol(pipe) ? "CTRL" : "BULK"), len, dev->status); +#if defined(VERBOSE) + debug_init ("usb.log"); + if (len > 0 && buffer) { + debug(__FILE__ ": data(%d):", len); + for (i = 0; i < 16 && i < len; i++) + debug(" %02x", ((__u8 *) buffer)[i]); + debug("%s\r\n", i < len ? "..." : ""); + } + debug_exit ( ); +#endif +} + +#define PTD_DIR_STR(ptd) ({char __c; \ + switch(PTD_GET_DIR(ptd)){ \ + case 0: __c = 's'; break; \ + case 1: __c = 'o'; break; \ + default: __c = 'i'; break; \ + }; __c;}) + +/* + Dump PTD info. The code documents the format + perfectly, right :) +*/ +static inline void dump_ptd(struct ptd *ptd) +{ +#if defined(VERBOSE) + int k; +#endif + + DEBUG_HOST("PTD(ext) : cc:%x %d%c%d %d,%d,%d t:%x %x%x%x", + PTD_GET_CC(ptd), + PTD_GET_FA(ptd), PTD_DIR_STR(ptd), PTD_GET_EP(ptd), + PTD_GET_COUNT(ptd), PTD_GET_LEN(ptd), PTD_GET_MPS(ptd), + PTD_GET_TOGGLE(ptd), + PTD_GET_ACTIVE(ptd), PTD_GET_SPD(ptd), PTD_GET_LAST(ptd)); +#if defined(VERBOSE) + debug_init ("usb.log"); + debug("isp116x: %s: PTD(byte): ", __FUNCTION__); + for (k = 0; k < sizeof(struct ptd); ++k) { + debug("%02x ", ((u8 *) ptd)[k]); + } + debug("\n\r"); + debug_exit ( ); +#endif +} + +static inline void dump_ptd_data(struct ptd *ptd, u8 * buf, int type) +{ +#if defined(VERBOSE) + int k; + + debug_init ("usb.log"); + if (type == 0 /* 0ut data */ ) { + debug("isp116x: %s: out data: ", __FUNCTION__); + for (k = 0; k < PTD_GET_LEN(ptd); ++k) { + debug("%02x ", ((u8 *) buf)[k]); + } + debug("\n\r"); + } + if (type == 1 /* 1n data */ ) { + debug("isp116x: %s: in data: ", __FUNCTION__); + for (k = 0; k < PTD_GET_COUNT(ptd); ++k) { + debug("%02x ", ((u8 *) buf)[k]); + } + debug("\n\r"); + } + + debug_exit ( ); + + if (PTD_GET_LAST(ptd)) { + DEBUG_HOST("--- last PTD ---"); + } +#endif +} + +#else + +#define dump_msg(dev, pipe, buffer, len, str) do { } while (0) +#define dump_pkt(dev, pipe, buffer, len, setup, str, small) do {} while (0) + +#define dump_ptd(ptd) do {} while (0) +#define dump_ptd_data(ptd, buf, type) do {} while (0) + +#endif + +/* --- Virtual Root Hub ---------------------------------------------------- */ + +/* Device descriptor */ +static __u8 root_hub_dev_des[] = { + 0x12, /* __u8 bLength; */ + 0x01, /* __u8 bDescriptorType; Device */ + 0x10, /* __u16 bcdUSB; v1.1 */ + 0x01, + 0x09, /* __u8 bDeviceClass; HUB_CLASSCODE */ + 0x00, /* __u8 bDeviceSubClass; */ + 0x00, /* __u8 bDeviceProtocol; */ + 0x08, /* __u8 bMaxPacketSize0; 8 Bytes */ + 0x00, /* __u16 idVendor; */ + 0x00, + 0x00, /* __u16 idProduct; */ + 0x00, + 0x00, /* __u16 bcdDevice; */ + 0x00, + 0x00, /* __u8 iManufacturer; */ + 0x01, /* __u8 iProduct; */ + 0x00, /* __u8 iSerialNumber; */ + 0x01 /* __u8 bNumConfigurations; */ +}; + +/* Configuration descriptor */ +static __u8 root_hub_config_des[] = { + 0x09, /* __u8 bLength; */ + 0x02, /* __u8 bDescriptorType; Configuration */ + 0x19, /* __u16 wTotalLength; */ + 0x00, + 0x01, /* __u8 bNumInterfaces; */ + 0x01, /* __u8 bConfigurationValue; */ + 0x00, /* __u8 iConfiguration; */ + 0x40, /* __u8 bmAttributes; + Bit 7: Bus-powered, 6: Self-powered, 5 Remote-wakwup, 4..0: resvd */ + 0x00, /* __u8 MaxPower; */ + + /* interface */ + 0x09, /* __u8 if_bLength; */ + 0x04, /* __u8 if_bDescriptorType; Interface */ + 0x00, /* __u8 if_bInterfaceNumber; */ + 0x00, /* __u8 if_bAlternateSetting; */ + 0x01, /* __u8 if_bNumEndpoints; */ + 0x09, /* __u8 if_bInterfaceClass; HUB_CLASSCODE */ + 0x00, /* __u8 if_bInterfaceSubClass; */ + 0x00, /* __u8 if_bInterfaceProtocol; */ + 0x00, /* __u8 if_iInterface; */ + + /* endpoint */ + 0x07, /* __u8 ep_bLength; */ + 0x05, /* __u8 ep_bDescriptorType; Endpoint */ + 0x81, /* __u8 ep_bEndpointAddress; IN Endpoint 1 */ + 0x03, /* __u8 ep_bmAttributes; Interrupt */ + 0x00, /* __u16 ep_wMaxPacketSize; ((MAX_ROOT_PORTS + 1) / 8 */ + 0x02, + 0xff /* __u8 ep_bInterval; 255 ms */ +}; + +static unsigned char root_hub_str_index0[] = { + 0x04, /* __u8 bLength; */ + 0x03, /* __u8 bDescriptorType; String-descriptor */ + 0x09, /* __u8 lang ID */ + 0x04, /* __u8 lang ID */ +}; + +static unsigned char root_hub_str_index1[] = { + 0x22, /* __u8 bLength; */ + 0x03, /* __u8 bDescriptorType; String-descriptor */ + 'I', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'S', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'P', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + '1', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + '1', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + '6', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'x', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + ' ', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'R', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'o', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'o', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 't', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + ' ', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'H', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'u', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'b', /* __u8 Unicode */ + 0, /* __u8 Unicode */ +}; + +/* + * Hub class-specific descriptor is constructed dynamically + */ + +/* --- Virtual root hub management functions ------------------------------- */ + +static int rh_check_port_status(struct isp116x *isp116x) +{ + u32 temp, ndp, i; + int res; + + res = -1; + temp = isp116x_read_reg32(isp116x, HCRHSTATUS); + ndp = (temp & RH_A_NDP); + for (i = 0; i < ndp; i++) { + temp = isp116x_read_reg32(isp116x, HCRHPORT1 + i); + /* check for a device disconnect */ + if (((temp & (RH_PS_PESC | RH_PS_CSC)) == + (RH_PS_PESC | RH_PS_CSC)) && ((temp & RH_PS_CCS) == 0)) { + res = i; + break; + } + } + return res; +} + +/* --- HC management functions --------------------------------------------- */ + +/* Write len bytes to fifo, pad till 32-bit boundary + */ +static void write_ptddata_to_fifo(struct isp116x *isp116x, void *buf, int len) +{ + u8 *dp = (u8 *) buf; + u16 *dp2 = (u16 *) buf; + u16 w; + int quot = len % 4; + +/* For NetUSBee, take the raw_write out in write functions, here we don't + * like that NetUSBee swap the bytes for us, so we swap them before we send + * them, then the bytes will arrive to the USB device with the correct positions + */ + if ((unsigned long)dp2 & 1) { + DEBUG_HOST("---not aligned ---"); + /* not aligned */ + for (; len > 1; len -= 2) { + w = *dp++; + w |= *dp++ << 8; + isp116x_write_data16(isp116x, w); + } + if (len) + isp116x_write_data16(isp116x, (u16) * dp); + } else { + DEBUG_HOST("---aligned ---"); + /* aligned */ + for (; len > 1; len -= 2) + isp116x_write_data16(isp116x, *dp2++); + if (len){DEBUG_HOST("write_data16\r\n"); /*GALVEZ: DEBUG */ + isp116x_raw_write_data16(isp116x, 0xff & *((u8 *) dp2));} + } + if (quot == 1 || quot == 2) + isp116x_write_data16(isp116x, 0); +} + +/* Read len bytes from fifo and then read till 32-bit boundary + */ +static void read_ptddata_from_fifo(struct isp116x *isp116x, void *buf, int len) +{ + u8 *dp = (u8 *) buf; + u16 *dp2 = (u16 *) buf; + u16 w; + int quot = len % 4; + +/* For NetUSBee, take the raw_read out from read functions, we want to swap the bytes + to read correct values because NetUSBee swaped the bytes by hardware before we read + them */ + + if ((unsigned long)dp2 & 1) { + /* not aligned */ + DEBUG_HOST("---not aligned ---"); + for (; len > 1; len -= 2) { + w = isp116x_read_data16(isp116x); + *dp++ = w & 0xff; + *dp++ = (w >> 8) & 0xff; + } + if (len) + *dp = 0xff & isp116x_read_data16(isp116x); + } else { + /* aligned */ + DEBUG_HOST("---aligned ---"); + for (; len > 1; len -= 2) + *dp2++ = isp116x_read_data16(isp116x); + if (len) + *(u8 *) dp2 = 0xff & isp116x_raw_read_data16(isp116x); + } + if (quot == 1 || quot == 2) + isp116x_read_data16(isp116x); +} + +/* Write PTD's and data for scheduled transfers into the fifo ram. + * Fifo must be empty and ready */ +static void pack_fifo(struct isp116x *isp116x, struct usb_device *dev, + unsigned long pipe, struct ptd *ptd, int n, void *data, + int len) +{ + int buflen = n * sizeof(struct ptd) + len; + int i, done; + + DEBUG_HOST("--- pack buffer %p - %d bytes (fifo %d) ---", data, len, buflen); + + isp116x_write_reg16(isp116x, HCuPINT, HCuPINT_AIIEOT); + + isp116x_write_reg16(isp116x, HCXFERCTR, buflen); + isp116x_write_addr(isp116x, HCATLPORT | ISP116x_WRITE_OFFSET); + + done = 0; + for (i = 0; i < n; i++) { + DEBUG_HOST("i=%d - done=%d - len=%d", i, done, PTD_GET_LEN(&ptd[i])); + +/* For NetUSBee, use raw_write to don't swap bytes */ + dump_ptd(&ptd[i]); + isp116x_raw_write_data16(isp116x, ptd[i].count); + isp116x_raw_write_data16(isp116x, ptd[i].mps); + isp116x_raw_write_data16(isp116x, ptd[i].len); + isp116x_raw_write_data16(isp116x, ptd[i].faddr); + + dump_ptd_data(&ptd[i], (__u8 *) data + done, 0); + + write_ptddata_to_fifo(isp116x, + (__u8 *) data + done, + PTD_GET_LEN(&ptd[i])); + + done += PTD_GET_LEN(&ptd[i]); + } +} + +/* Read the processed PTD's and data from fifo ram back to URBs' buffers. + * Fifo must be full and done */ +static int unpack_fifo(struct isp116x *isp116x, struct usb_device *dev, + unsigned long pipe, struct ptd *ptd, int n, void *data, + int len) +{ + int buflen = n * sizeof(struct ptd) + len; + int i, done, cc, ret; + + isp116x_write_reg16(isp116x, HCuPINT, HCuPINT_AIIEOT); + isp116x_write_reg16(isp116x, HCXFERCTR, buflen); + isp116x_write_addr(isp116x, HCATLPORT); + + ret = TD_CC_NOERROR; + done = 0; + for (i = 0; i < n; i++) { + /* Galvez: DEBUG */ +// DEBUG_HOST("i=%d - done=%d - len=%d", i, done, PTD_GET_LEN(&ptd[i])); + DEBUG_HOST("i=%d n=%d - done=%d - len= %d ptd_len=%d\n\r", i,n, done, len, PTD_GET_LEN(&ptd[i])); + /*****************/ + + /* For NetUSBee, use raw_read to don't swap bytes */ + ptd[i].count = isp116x_raw_read_data16(isp116x); + ptd[i].mps = isp116x_raw_read_data16(isp116x); + ptd[i].len = isp116x_raw_read_data16(isp116x); + ptd[i].faddr = isp116x_raw_read_data16(isp116x); + dump_ptd(&ptd[i]); + + /* when cc is 15 the data has not being touch by the HC + * so we have to read all to empty completly the buffer + */ +// if ( PTD_GET_COUNT(ptd) != 0 || PTD_GET_CC(ptd) == 15 ) + read_ptddata_from_fifo(isp116x, + (__u8 *) data + done, + PTD_GET_LEN(&ptd[i])); + dump_ptd_data(&ptd[i], (__u8 *) data + done, 1); + + done += PTD_GET_LEN(&ptd[i]); + + cc = PTD_GET_CC(&ptd[i]); + + /* Data underrun means basically that we had more buffer space than + * the function had data. It is perfectly normal but upper levels have + * to know how much we actually transferred. + */ + if (cc == TD_NOTACCESSED || + (cc != TD_CC_NOERROR && (ret == TD_CC_NOERROR || ret == TD_DATAUNDERRUN))) + ret = cc; + } + + DEBUG_HOST("--- unpack buffer %p - %d bytes (fifo %d) count: %d---\n", data, len, buflen, PTD_GET_COUNT(ptd)); + + return ret; +} + +/* Interrupt handling + */ +static int isp116x_interrupt(struct isp116x *isp116x) +{ + u16 irqstat; + u32 intstat; + int ret = 0; + + isp116x_write_reg16(isp116x, HCuPINTENB, 0); + irqstat = isp116x_read_reg16(isp116x, HCuPINT); + isp116x_write_reg16(isp116x, HCuPINT, irqstat); + DEBUG_HOST(">>>>>> irqstat %x <<<<<<", irqstat); + + if (irqstat & HCuPINT_ATL) { + DEBUG_HOST(">>>>>> HCuPINT_ATL <<<<<<"); + udelay(500); + ret = 1; + } + + if (irqstat & HCuPINT_OPR) { + intstat = isp116x_read_reg32(isp116x, HCINTSTAT); + isp116x_write_reg32(isp116x, HCINTSTAT, intstat); + DEBUG_HOST(">>>>>> HCuPINT_OPR %x <<<<<<", intstat); + + if (intstat & HCINT_UE) { + ERR("unrecoverable error, controller disabled"); + + /* FIXME: be optimistic, hope that bug won't repeat + * often. Make some non-interrupt context restart the + * controller. Count and limit the retries though; + * either hardware or software errors can go forever... + */ + isp116x_reset(isp116x); + ret = -1; + return -1; + } + + if (intstat & HCINT_RHSC) { + got_rhsc = 1; + ret = 1; + /* When root hub or any of its ports is going + to come out of suspend, it may take more + than 10ms for status bits to stabilize. */ + wait_ms(20); + } + + if (intstat & HCINT_SO) { + ERR("schedule overrun"); + ret = -1; + } + + irqstat &= ~HCuPINT_OPR; + } + + return ret; +} + +/* With one PTD we can transfer almost 1K in one go; + * HC does the splitting into endpoint digestible transactions + */ +struct ptd ptd[1]; + +static inline int max_transfer_len(struct usb_device *dev, unsigned long pipe) +{ + unsigned mpck = usb_maxpacket(dev, pipe); + + /* One PTD can transfer 1023 bytes but try to always + * transfer multiples of endpoint buffer size + */ + return 1023 / mpck * mpck; +} + +/* Do an USB transfer + */ +static int isp116x_submit_job(struct usb_device *dev, unsigned long pipe, + int dir, void *buffer, int len) +{ + struct isp116x *isp116x = &isp116x_dev; + int type = usb_pipetype(pipe); + int epnum = usb_pipeendpoint(pipe); + int max = usb_maxpacket(dev, pipe); + int dir_out = usb_pipeout(pipe); + int speed_low = usb_pipeslow(pipe); + int i, done = 0, stat, timeout, cc; + + /* 500 frames or 0.5s timeout when function is busy and NAKs transactions for a while */ + int retries = 500; + + + DEBUG_HOST("------------------------------------------------"); + dump_msg(dev, pipe, buffer, len, "SUBMIT"); + DEBUG_HOST("------------------------------------------------"); + + if (len >= 1024) { + ERR("Too big job"); + dev->status = USB_ST_CRC_ERR; + return -1; + } + + if (isp116x->disabled) { + ERR("EPIPE"); + dev->status = USB_ST_CRC_ERR; + return -1; + } + + /* device pulled? Shortcut the action. */ + if (devgone == dev) { + ERR("ENODEV"); + dev->status = USB_ST_CRC_ERR; + return USB_ST_CRC_ERR; + } + + if (!max) { + ERR("pipesize for pipe %lx is zero", pipe); + dev->status = USB_ST_CRC_ERR; + return -1; + } + + if (type == PIPE_ISOCHRONOUS) { + ERR("isochronous transfers not supported"); + dev->status = USB_ST_CRC_ERR; + return -1; + } + + /* FIFO not empty? */ + if (isp116x_read_reg16(isp116x, HCBUFSTAT) & HCBUFSTAT_ATL_FULL) { + DEBUG_HOST("****** FIFO not empty! ******"); + printf("****** FIFO not empty! ******\n\r"); + dev->status = USB_ST_BUF_ERR; + return -1; + } + +retry: + isp116x_write_reg32(isp116x, HCINTSTAT, 0xff); + /* Prepare the PTD data */ + ptd->count = PTD_CC_MSK | PTD_ACTIVE_MSK | + PTD_TOGGLE(usb_gettoggle(dev, epnum, dir_out)); + ptd->mps = PTD_MPS(max) | PTD_SPD(speed_low) | PTD_EP(epnum) | PTD_LAST_MSK; + ptd->len = PTD_LEN(len) | PTD_DIR(dir); + ptd->faddr = PTD_FA(usb_pipedevice(pipe)); + + +retry_same: + + /* FIFO not empty? */ /* GALVEZ: DEBUG */ + if (isp116x_read_reg16(isp116x, HCBUFSTAT) & HCBUFSTAT_ATL_FULL) { + DEBUG_HOST("****** FIFO not empty! ******"); + printf("****** FIFO not empty! ******\n\r"); +// dev->status = USB_ST_BUF_ERR; +// return -1; + } + + /* Pack data into FIFO ram */ + pack_fifo(isp116x, dev, pipe, ptd, 1, buffer, len); + +#ifdef EXTRA_DELAY + wait_ms(EXTRA_DELAY); +#endif + + /* Start the data transfer */ + + /* Allow more time for a BULK device to react - some are slow */ + if (usb_pipebulk(pipe)) + timeout = 5000; /* Galvez: default = 5000 */ + else + timeout = 1000; /* Galvez : netusbee : default = 100 */ + + /* Wait for it to complete */ + for (;;) { + /* Check whether the controller is done */ + stat = isp116x_interrupt(isp116x); + + if (stat < 0) { + dev->status = USB_ST_CRC_ERR; + break; + } + if (stat > 0) + break; + + /* Check the timeout */ + if (--timeout) + udelay(1); + else { + ERR("CTL:TIMEOUT "); + printf("CTL:TIMEOUT "); + stat = USB_ST_CRC_ERR; + break; + } + } + + /* We got an Root Hub Status Change interrupt */ + if (got_rhsc) { + isp116x_show_regs(isp116x); + + got_rhsc = 0; + + /* Abuse timeout */ + timeout = rh_check_port_status(isp116x); + if (timeout >= 0) { + /* + * FIXME! NOTE! AAAARGH! + * This is potentially dangerous because it assumes + * that only one device is ever plugged in! + */ + devgone = dev; + } + } + + + /* Ok, now we can read transfer status */ + + /* FIFO not ready? */ + if (!(isp116x_read_reg16(isp116x, HCBUFSTAT) & HCBUFSTAT_ATL_DONE)) { + DEBUG_HOST("****** FIFO not ready! ******"); + printf("****** FIFO not ready! ******\n\r"); + dev->status = USB_ST_BUF_ERR; + return -1; + } + + + /* Unpack data from FIFO ram */ + cc = unpack_fifo(isp116x, dev, pipe, ptd, 1, buffer, len); + + i = PTD_GET_COUNT(ptd); + done += i; + buffer += i; + len -= i; + + + /* There was some kind of real problem; Prepare the PTD again + * and retry from the failed transaction on + */ + if (cc && cc != TD_NOTACCESSED && cc != TD_DATAUNDERRUN) { + DEBUG_HOST("PROBLEM cc: %d", cc); + if (retries >= 100) { + retries -= 100; + /* The chip will have toggled the toggle bit for the failed + * transaction too. We have to toggle it back. + */ + usb_settoggle(dev, epnum, dir_out, !PTD_GET_TOGGLE(ptd)); + goto retry; + } + } + /* "Normal" errors; TD_NOTACCESSED would mean in effect that the function have NAKed + * the transactions from the first on for the whole frame. It may be busy and we retry + * with the same PTD. PTD_ACTIVE (and not TD_NOTACCESSED) would mean that some of the + * PTD didn't make it because the function was busy or the frame ended before the PTD + * finished. We prepare the rest of the data and try again. + */ + else if ( cc == TD_NOTACCESSED || PTD_GET_ACTIVE(ptd) || ( cc != TD_DATAUNDERRUN && PTD_GET_COUNT(ptd) < PTD_GET_LEN(ptd))) { + DEBUG_HOST("NORMAL ERROR"); + if (retries) { + --retries; + if (cc == TD_NOTACCESSED && PTD_GET_ACTIVE(ptd) && !PTD_GET_COUNT(ptd)) { + goto retry_same; + } + usb_settoggle(dev, epnum, dir_out, PTD_GET_TOGGLE(ptd)); + goto retry; + } + } + + + if (cc != TD_CC_NOERROR && cc != TD_DATAUNDERRUN) { + DEBUG_HOST("****** completition code error %x ******", cc); + switch (cc) { + case TD_CC_BITSTUFFING: + dev->status = USB_ST_BIT_ERR; + break; + case TD_CC_STALL: + dev->status = USB_ST_STALLED; + break; + case TD_BUFFEROVERRUN: + case TD_BUFFERUNDERRUN: + dev->status = USB_ST_BUF_ERR; + break; + default: + dev->status = USB_ST_CRC_ERR; + } + return -cc; + } + else usb_settoggle(dev, epnum, dir_out, PTD_GET_TOGGLE(ptd)); + + dump_msg(dev, pipe, buffer, len, "SUBMIT(ret)"); + + dev->status = 0; + return done; +} + +/* Adapted from au1x00_usb_ohci.c + */ +static int isp116x_submit_rh_msg(struct usb_device *dev, unsigned long pipe, + void *buffer, int transfer_len, + struct devrequest *cmd) +{ + struct isp116x *isp116x = &isp116x_dev; + u32 tmp = 0; + + int leni = transfer_len; + int len = 0; + int stat = 0; + u32 datab[4]; + u8 *data_buf = (u8 *) datab; + u16 bmRType_bReq; + u16 wValue; + u16 wIndex; + u16 wLength; + + if (usb_pipeint(pipe)) { + INFO("Root-Hub submit IRQ: NOT implemented"); + return 0; + } + + bmRType_bReq = cmd->requesttype | (cmd->request << 8); + wValue = swap_16(cmd->value); + wIndex = swap_16(cmd->index); + wLength = swap_16(cmd->length); + + DEBUG_HOST("--- HUB ----------------------------------------"); + DEBUG_HOST("submit rh urb, req=%x val=%#x index=%#x len=%d", + bmRType_bReq, wValue, wIndex, wLength); + dump_msg(dev, pipe, buffer, transfer_len, "RH"); + DEBUG_HOST("------------------------------------------------"); + + switch (bmRType_bReq) { + case RH_GET_STATUS: + DEBUG_HOST("RH_GET_STATUS"); + + *(__u16 *) data_buf = swap_16(1); + len = 2; + break; + + case RH_GET_STATUS | RH_INTERFACE: + DEBUG_HOST("RH_GET_STATUS | RH_INTERFACE"); + + *(__u16 *) data_buf = swap_16(0); + len = 2; + break; + + case RH_GET_STATUS | RH_ENDPOINT: + DEBUG_HOST("RH_GET_STATUS | RH_ENDPOINT"); + + *(__u16 *) data_buf = swap_16(0); + len = 2; + break; + + case RH_GET_STATUS | RH_CLASS: + DEBUG_HOST("RH_GET_STATUS | RH_CLASS"); + + tmp = isp116x_read_reg32(isp116x, HCRHSTATUS); + + *(__u32 *) data_buf = swap_32(tmp & ~(RH_HS_CRWE | RH_HS_DRWE)); + len = 4; + break; + + case RH_GET_STATUS | RH_OTHER | RH_CLASS: + DEBUG_HOST("RH_GET_STATUS | RH_OTHER | RH_CLASS"); + + tmp = isp116x_read_reg32(isp116x, HCRHPORT1 + wIndex - 1); + *(__u32 *) data_buf = swap_32(tmp); + isp116x_show_regs(isp116x); + len = 4; + break; + + case RH_CLEAR_FEATURE | RH_ENDPOINT: + DEBUG_HOST("RH_CLEAR_FEATURE | RH_ENDPOINT"); + + switch (wValue) { + case RH_ENDPOINT_STALL: + DEBUG_HOST("C_HUB_ENDPOINT_STALL"); + len = 0; + break; + } + break; + + case RH_CLEAR_FEATURE | RH_CLASS: + DEBUG_HOST("RH_CLEAR_FEATURE | RH_CLASS"); + + switch (wValue) { + case RH_C_HUB_LOCAL_POWER: + DEBUG_HOST("C_HUB_LOCAL_POWER"); + len = 0; + break; + + case RH_C_HUB_OVER_CURRENT: + DEBUG_HOST("C_HUB_OVER_CURRENT"); + isp116x_write_reg32(isp116x, HCRHSTATUS, RH_HS_OCIC); + len = 0; + break; + } + break; + + case RH_CLEAR_FEATURE | RH_OTHER | RH_CLASS: + DEBUG_HOST("RH_CLEAR_FEATURE | RH_OTHER | RH_CLASS"); + + switch (wValue) { + case RH_PORT_ENABLE: + isp116x_write_reg32(isp116x, HCRHPORT1 + wIndex - 1, + RH_PS_CCS); + len = 0; + break; + + case RH_PORT_SUSPEND: + isp116x_write_reg32(isp116x, HCRHPORT1 + wIndex - 1, + RH_PS_POCI); + len = 0; + break; + + case RH_PORT_POWER: + isp116x_write_reg32(isp116x, HCRHPORT1 + wIndex - 1, + RH_PS_LSDA); + len = 0; + break; + + case RH_C_PORT_CONNECTION: + isp116x_write_reg32(isp116x, HCRHPORT1 + wIndex - 1, + RH_PS_CSC); + len = 0; + break; + + case RH_C_PORT_ENABLE: + isp116x_write_reg32(isp116x, HCRHPORT1 + wIndex - 1, + RH_PS_PESC); + len = 0; + break; + + case RH_C_PORT_SUSPEND: + isp116x_write_reg32(isp116x, HCRHPORT1 + wIndex - 1, + RH_PS_PSSC); + len = 0; + break; + + case RH_C_PORT_OVER_CURRENT: + isp116x_write_reg32(isp116x, HCRHPORT1 + wIndex - 1, + RH_PS_POCI); + len = 0; + break; + + case RH_C_PORT_RESET: + isp116x_write_reg32(isp116x, HCRHPORT1 + wIndex - 1, + RH_PS_PRSC); + len = 0; + break; + + default: + ERR("invalid wValue"); + stat = USB_ST_STALLED; + } + + isp116x_show_regs(isp116x); + + break; + + case RH_SET_FEATURE | RH_OTHER | RH_CLASS: + DEBUG_HOST("RH_SET_FEATURE | RH_OTHER | RH_CLASS"); + + switch (wValue) { + case RH_PORT_SUSPEND: + isp116x_write_reg32(isp116x, HCRHPORT1 + wIndex - 1, + RH_PS_PSS); + len = 0; + break; + + case RH_PORT_RESET: + /* Spin until any current reset finishes */ + while (1) { + tmp = + isp116x_read_reg32(isp116x, + HCRHPORT1 + wIndex - 1); + if (!(tmp & RH_PS_PRS)) + break; + wait_ms(1); + } + isp116x_write_reg32(isp116x, HCRHPORT1 + wIndex - 1, + RH_PS_PRS); + wait_ms(10); + + len = 0; + break; + + case RH_PORT_POWER: + isp116x_write_reg32(isp116x, HCRHPORT1 + wIndex - 1, + RH_PS_PPS); + len = 0; + break; + + case RH_PORT_ENABLE: + isp116x_write_reg32(isp116x, HCRHPORT1 + wIndex - 1, + RH_PS_PES); + len = 0; + break; + + default: + ERR("invalid wValue"); + stat = USB_ST_STALLED; + } + + isp116x_show_regs(isp116x); + + break; + + case RH_SET_ADDRESS: + DEBUG_HOST("RH_SET_ADDRESS"); + + rh_devnum = wValue; + len = 0; + break; + + case RH_GET_DESCRIPTOR: + DEBUG_HOST("RH_GET_DESCRIPTOR: %x, %d", wValue, wLength); + + switch (wValue) { + case (USB_DT_DEVICE << 8): /* device descriptor */ + len = min1_t(unsigned int, + leni, min2_t(unsigned int, + sizeof(root_hub_dev_des), + wLength)); + data_buf = root_hub_dev_des; + break; + + case (USB_DT_CONFIG << 8): /* configuration descriptor */ + len = min1_t(unsigned int, + leni, min2_t(unsigned int, + sizeof(root_hub_config_des), + wLength)); + data_buf = root_hub_config_des; + break; + + case ((USB_DT_STRING << 8) | 0x00): /* string 0 descriptors */ + len = min1_t(unsigned int, + leni, min2_t(unsigned int, + sizeof(root_hub_str_index0), + wLength)); + data_buf = root_hub_str_index0; + break; + + case ((USB_DT_STRING << 8) | 0x01): /* string 1 descriptors */ + len = min1_t(unsigned int, + leni, min2_t(unsigned int, + sizeof(root_hub_str_index1), + wLength)); + data_buf = root_hub_str_index1; + break; + + default: + ERR("invalid wValue"); + stat = USB_ST_STALLED; + } + + break; + + case RH_GET_DESCRIPTOR | RH_CLASS: + DEBUG_HOST("RH_GET_DESCRIPTOR | RH_CLASS"); + + tmp = isp116x_read_reg32(isp116x, HCRHDESCA); + + data_buf[0] = 0x09; /* min length; */ + data_buf[1] = 0x29; + data_buf[2] = tmp & RH_A_NDP; + data_buf[3] = 0; + if (tmp & RH_A_PSM) /* per-port power switching? */ + data_buf[3] |= 0x01; + if (tmp & RH_A_NOCP) /* no overcurrent reporting? */ + data_buf[3] |= 0x10; + else if (tmp & RH_A_OCPM) /* per-port overcurrent rep? */ + data_buf[3] |= 0x08; + + /* Corresponds to data_buf[4-7] */ + datab[1] = 0; + data_buf[5] = (tmp & RH_A_POTPGT) >> 24; + + tmp = isp116x_read_reg32(isp116x, HCRHDESCB); + + data_buf[7] = tmp & RH_B_DR; + if (data_buf[2] < 7) + data_buf[8] = 0xff; + else { + data_buf[0] += 2; + data_buf[8] = (tmp & RH_B_DR) >> 8; + data_buf[10] = data_buf[9] = 0xff; + } + + len = min1_t(unsigned int, leni, + min2_t(unsigned int, data_buf[0], wLength)); + break; + + case RH_GET_CONFIGURATION: + DEBUG_HOST("RH_GET_CONFIGURATION"); + + *(__u8 *) data_buf = 0x01; + len = 1; + break; + + case RH_SET_CONFIGURATION: + DEBUG_HOST("RH_SET_CONFIGURATION"); + + isp116x_write_reg32(isp116x, HCRHSTATUS, RH_HS_LPSC); + len = 0; + break; + + default: + ERR("*** *** *** unsupported root hub command *** *** ***"); + stat = USB_ST_STALLED; + } + + len = min1_t(int, len, leni); + if (buffer != data_buf) + memcpy(buffer, data_buf, len); + + dev->act_len = len; + dev->status = stat; + DEBUG_HOST("dev act_len %d, status %ld", dev->act_len, dev->status); + + dump_msg(dev, pipe, buffer, transfer_len, "RH(ret)"); + + return stat; +} + +/* --- Transfer functions -------------------------------------------------- */ + +int submit_int_msg(struct usb_device *dev, unsigned long pipe, void *buffer, + int len, int interval) +{ + DEBUG_HOST("dev=%p pipe=%#lx buf=%p size=%d int=%d", + dev, pipe, buffer, len, interval); + + return -1; +} + +int submit_control_msg(struct usb_device *dev, unsigned long pipe, void *buffer, + int len, struct devrequest *setup) +{ + int devnum = usb_pipedevice(pipe); + int epnum = usb_pipeendpoint(pipe); + int max = max_transfer_len(dev, pipe); + int dir_in = usb_pipein(pipe); + int done, ret; + + + /* Control message is for the HUB? */ + if (devnum == rh_devnum) + return isp116x_submit_rh_msg(dev, pipe, buffer, len, setup); + + /* Ok, no HUB message so send the message to the device */ + + /* Setup phase */ + DEBUG_HOST("--- SETUP PHASE --------------------------------"); + usb_settoggle(dev, epnum, 1, 0); + + + ret = isp116x_submit_job(dev, pipe, + PTD_DIR_SETUP, + setup, sizeof(struct devrequest)); + if (ret < 0) { + DEBUG_HOST("control setup phase error (ret = %d", ret); + return -1; + } + + /* Data phase */ + DEBUG_HOST("--- DATA PHASE ---------------------------------"); + done = 0; + usb_settoggle(dev, epnum, !dir_in, 1); + while (done < len) { + ret = isp116x_submit_job(dev, pipe, + dir_in ? PTD_DIR_IN : PTD_DIR_OUT, + (__u8 *) buffer + done, + max > len - done ? len - done : max); + if (ret < 0) { + DEBUG_HOST("control data phase error (ret = %d)", ret); + return -1; + } + done += ret; + + if (dir_in && ret < max) /* short packet */ + break; + } + + /* Status phase */ + DEBUG_HOST("--- STATUS PHASE -------------------------------"); + usb_settoggle(dev, epnum, !dir_in, 1); + ret = isp116x_submit_job(dev, pipe, + !dir_in ? PTD_DIR_IN : PTD_DIR_OUT, NULL, 0); + if (ret < 0) { + DEBUG_HOST("control status phase error (ret = %d", ret); + return -1; + } + + dev->act_len = done; + + dump_msg(dev, pipe, buffer, len, "DEV(ret)"); + + return done; +} + +int submit_bulk_msg(struct usb_device *dev, unsigned long pipe, void *buffer, + int len) +{ + int dir_out = usb_pipeout(pipe); + int max = max_transfer_len(dev, pipe); + int done, ret; + + DEBUG_HOST("--- BULK ---------------------------------------"); + DEBUG_HOST("dev=%ld pipe=%ld buf=%p size=%d dir_out=%d", + usb_pipedevice(pipe), usb_pipeendpoint(pipe), buffer, len, dir_out); + + done = 0; + while (done < len) { + + ret = isp116x_submit_job(dev, pipe, + !dir_out ? PTD_DIR_IN : PTD_DIR_OUT, + (__u8 *) buffer + done, + max > len - done ? len - done : max); + + if (ret < 0) { + DEBUG_HOST("error on bulk message (ret = %d)", ret); + return -1; + } + + done += ret; + + if (!dir_out && ret < max) /* short packet */ + break; + } + + dev->act_len = done; + + return 0; +} + +/* --- Basic functions ----------------------------------------------------- */ + + +#if 0 +/* GALVEZ: Test function */ +static int GALVEZ_test_function( struct isp116x *isp116x ) +{ + short res; + + isp116x_write_reg16(isp116x, HCSCRATCH, 0x1234); + res = isp116x_read_reg16(isp116x, HCSCRATCH); + ERR ("Scratch register read: %x\r\n",res); + return 0; + +} +#endif + +static int isp116x_sw_reset(struct isp116x *isp116x) +{ + int retries = 15; + int ret = 0; + + DEBUG_HOST(""); + + isp116x->disabled = 1; + + isp116x_write_reg16(isp116x, HCSWRES, HCSWRES_MAGIC); + isp116x_write_reg32(isp116x, HCCMDSTAT, HCCMDSTAT_HCR); + + while (--retries) { + /* It usually resets within 1 ms */ + /* GALVEZ: not enough for TOS, try 7 ms */ + wait_ms(7); + if (!(isp116x_read_reg32(isp116x, HCCMDSTAT) & HCCMDSTAT_HCR)) + break; + } + + if (!retries) { + ERR("software reset timeout"); + ret = -1; + } + +#if 0 + /* GALVEZ: DEBUG SOFTWARE RESET */ + + retries = 5000; + + while (--retries){ + if ((isp116x_read_reg32(isp116x, HCCMDSTAT) & HCCMDSTAT_HCR)) { + INFO ("HCR: 1 retries: %d\n\r",retries); + } + } +#endif /* END DEBUG */ + + return ret; +} + +static int isp116x_reset(struct isp116x *isp116x) +{ + unsigned long t; + u16 clkrdy = 0; + int ret, timeout = 1000;/* ms + * Galvez: 15 ms sometimes isn't enough, + * for NetUSBee under TOS ??????? increased to 150 ms + */ + + DEBUG_HOST(""); + + ret = isp116x_sw_reset(isp116x); + + if (ret) + return ret; + + for (t = 0; t < timeout; t++) { + clkrdy = isp116x_read_reg16(isp116x, HCuPINT) & HCuPINT_CLKRDY; + if (clkrdy) + break; + wait_ms(1); + } + if (!clkrdy) { + ERR("clock not ready after %dms", timeout); + /* After sw_reset the clock won't report to be ready, if + H_WAKEUP pin is high. */ + ERR("please make sure that the H_WAKEUP pin is pulled low!"); + ret = -1; + } + return ret; +} + +static void isp116x_stop(struct isp116x *isp116x) +{ + u32 val; + + DEBUG_HOST(""); + + isp116x_write_reg16(isp116x, HCuPINTENB, 0); + + /* Switch off ports' power, some devices don't come up + after next 'start' without this */ + val = isp116x_read_reg32(isp116x, HCRHDESCA); + val &= ~(RH_A_NPS | RH_A_PSM); + isp116x_write_reg32(isp116x, HCRHDESCA, val); + isp116x_write_reg32(isp116x, HCRHSTATUS, RH_HS_LPS); + + isp116x_sw_reset(isp116x); +} + +/* + * Configure the chip. The chip must be successfully reset by now. + */ +static int isp116x_start(struct isp116x *isp116x) +{ + struct isp116x_platform_data *board = isp116x->board; + u32 val; + + DEBUG_HOST(""); + + /* Clear interrupt status and disable all interrupt sources */ + isp116x_write_reg16(isp116x, HCuPINT, 0xff); + isp116x_write_reg16(isp116x, HCuPINTENB, 0); + + isp116x_write_reg16(isp116x, HCITLBUFLEN, ISP116x_ITL_BUFSIZE); + isp116x_write_reg16(isp116x, HCATLBUFLEN, ISP116x_ATL_BUFSIZE); + + /* Hardware configuration */ + val = HCHWCFG_DBWIDTH(1); + + if (board->sel15Kres) + val |= HCHWCFG_15KRSEL; + /* Remote wakeup won't work without working clock */ + if (board->remote_wakeup_enable) + val |= HCHWCFG_CLKNOTSTOP; + if (board->oc_enable) + val |= HCHWCFG_ANALOG_OC; + isp116x_write_reg16(isp116x, HCHWCFG, val); + + + /* --- Root hub configuration */ + val = (25 << 24) & RH_A_POTPGT; + /* AN10003_1.pdf recommends RH_A_NPS (no power switching) to + be always set. Yet, instead, we request individual port + power switching. */ + val |= RH_A_PSM; + /* Report overcurrent per port */ + val |= RH_A_OCPM; + isp116x_write_reg32(isp116x, HCRHDESCA, val); + isp116x->rhdesca = isp116x_read_reg32(isp116x, HCRHDESCA); + + val = RH_B_PPCM; + isp116x_write_reg32(isp116x, HCRHDESCB, val); + isp116x->rhdescb = isp116x_read_reg32(isp116x, HCRHDESCB); + + val = 0; + if (board->remote_wakeup_enable) + val |= RH_HS_DRWE; + isp116x_write_reg32(isp116x, HCRHSTATUS, val); + isp116x->rhstatus = isp116x_read_reg32(isp116x, HCRHSTATUS); + + isp116x_write_reg32(isp116x, HCFMINTVL, 0x27782edf); + + /* Go operational */ + val = HCCONTROL_USB_OPER; + if (board->remote_wakeup_enable) + val |= HCCONTROL_RWE; + isp116x_write_reg32(isp116x, HCCONTROL, val); + + /* Disable ports to avoid race in device enumeration */ + isp116x_write_reg32(isp116x, HCRHPORT1, RH_PS_CCS); + isp116x_write_reg32(isp116x, HCRHPORT2, RH_PS_CCS); + + isp116x_show_regs(isp116x); + + isp116x->disabled = 0; + + return 0; +} + +/* --- Init functions ------------------------------------------------------ */ + + + +int isp116x_check_id(struct isp116x *isp116x) +{ + u16 val; + + val = isp116x_read_reg16(isp116x, HCCHIPID); + DEBUG_HOST("chip ID: %04x", val); + printf ("chip ID: %04x", val); + + if ((val & HCCHIPID_MASK) != HCCHIPID_MAGIC) { + printf("invalid chip ID %04x", val); + return -1; + } + + return 0; +} + + +int usb_lowlevel_init(void) +{ +// u16 val; + + struct isp116x *isp116x = &isp116x_dev; + + DEBUG_HOST(""); + + got_rhsc = rh_devnum = 0; + + /* Init device registers addr */ + isp116x->addr_reg = (u16 *) ISP116X_HCD_ADDR_BEE; + isp116x->data_reg = (u16 *) ISP116X_HCD_DATA_BEE; + + /* Setup specific board settings */ +#ifdef ISP116X_HCD_SEL15kRES + isp116x_board.sel15Kres = 1; +#endif +#ifdef ISP116X_HCD_OC_ENABLE + isp116x_board.oc_enable = 1; +#endif +#ifdef ISP116X_HCD_REMOTE_WAKEUP_ENABLE + isp116x_board.remote_wakeup_enable = 1; +#endif + isp116x->board = &isp116x_board; + + /* Try to get ISP116x silicon chip ID */ + if ( isp116x_check_id(isp116x) < 0) + return -1; + + +// GALVEZ_test_function ( isp116x ); /* Gálvez: Testing writing to registers */ + + isp116x->disabled = 1; + isp116x->sleeping = 0; + + isp116x_reset(isp116x); + isp116x_start(isp116x); + + return 0; +} + +int usb_lowlevel_stop(void) +{ + struct isp116x *isp116x = &isp116x_dev; + + DEBUG_HOST(""); + + if (!isp116x->disabled) + isp116x_stop(isp116x); + + return 0; +} diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/host/netusbee/isp116x.h b/BaS_codewarrior/FireBee/trunk/usb/store/host/netusbee/isp116x.h new file mode 100644 index 0000000..7d62865 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/host/netusbee/isp116x.h @@ -0,0 +1,596 @@ +/* + * Modified for Atari-NetUSBee by David Gálvez 2010 + * + * ISP116x register declarations and HCD data structures + * + * Copyright (C) 2007 Rodolfo Giometti + * Copyright (C) 2007 Eurotech S.p.A. + * Copyright (C) 2005 Olav Kongas + * Portions: + * Copyright (C) 2004 Lothar Wassmann + * Copyright (C) 2004 Psion Teklogix + * Copyright (C) 2004 David Brownell + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ +#ifndef _NETUSBEE_ISP116X_H +#define _NETUSBEE_ISP116X_H + + +#define ERR(fmt, args...) printf("isp116x: %s: " fmt "\n\r" , __FUNCTION__ , ## args) +#define WARN(fmt, args...) printf("isp116x: %s: " fmt "\n\r" , __FUNCTION__ , ## args) +#define INFO(fmt, args...) printf("isp116x: " fmt "\n\r" , ## args) + +/* ------------------------------------------------------------------------- */ + +/* us of 1ms frame */ +#define MAX_LOAD_LIMIT 850 + +/* Full speed: max # of bytes to transfer for a single urb + at a time must be < 1024 && must be multiple of 64. + 832 allows transfering 4kiB within 5 frames. */ +#define MAX_TRANSFER_SIZE_FULLSPEED 832 + +/* Low speed: there is no reason to schedule in very big + chunks; often the requested long transfers are for + string descriptors containing short strings. */ +#define MAX_TRANSFER_SIZE_LOWSPEED 64 + +/* Bytetime (us), a rough indication of how much time it + would take to transfer a byte of useful data over USB */ +#define BYTE_TIME_FULLSPEED 1 +#define BYTE_TIME_LOWSPEED 20 + +/* Buffer sizes */ +#define ISP116x_BUF_SIZE 4096 +#define ISP116x_ITL_BUFSIZE 0 +#define ISP116x_ATL_BUFSIZE ((ISP116x_BUF_SIZE) - 2*(ISP116x_ITL_BUFSIZE)) + +#define ISP116x_WRITE_OFFSET 0x80 + + +/* --- ISP116x address registers in Netusbee --------------------------------*/ + +#define ISP116X_HCD_ADDR_BEE 0x00FBC000 +#define ISP116X_HCD_DATA_BEE 0x00FA0000 + + +/* --- ISP116x registers/bits ---------------------------------------------- */ + +#define HCREVISION 0x00 +#define HCCONTROL 0x01 +#define HCCONTROL_HCFS (3 << 6) /* host controller + functional state */ +#define HCCONTROL_USB_RESET (0 << 6) +#define HCCONTROL_USB_RESUME (1 << 6) +#define HCCONTROL_USB_OPER (2 << 6) +#define HCCONTROL_USB_SUSPEND (3 << 6) +#define HCCONTROL_RWC (1 << 9) /* remote wakeup connected */ +#define HCCONTROL_RWE (1 << 10) /* remote wakeup enable */ +#define HCCMDSTAT 0x02 +#define HCCMDSTAT_HCR (1 << 0) /* host controller reset */ +#define HCCMDSTAT_SOC (3 << 16) /* scheduling overrun count */ +#define HCINTSTAT 0x03 +#define HCINT_SO (1 << 0) /* scheduling overrun */ +#define HCINT_WDH (1 << 1) /* writeback of done_head */ +#define HCINT_SF (1 << 2) /* start frame */ +#define HCINT_RD (1 << 3) /* resume detect */ +#define HCINT_UE (1 << 4) /* unrecoverable error */ +#define HCINT_FNO (1 << 5) /* frame number overflow */ +#define HCINT_RHSC (1 << 6) /* root hub status change */ +#define HCINT_OC (1 << 30) /* ownership change */ +#define HCINT_MIE (1 << 31) /* master interrupt enable */ +#define HCINTENB 0x04 +#define HCINTDIS 0x05 +#define HCFMINTVL 0x0d +#define HCFMREM 0x0e +#define HCFMNUM 0x0f +#define HCLSTHRESH 0x11 +#define HCRHDESCA 0x12 +#define RH_A_NDP (0x3 << 0) /* # downstream ports */ +#define RH_A_PSM (1 << 8) /* power switching mode */ +#define RH_A_NPS (1 << 9) /* no power switching */ +#define RH_A_DT (1 << 10) /* device type (mbz) */ +#define RH_A_OCPM (1 << 11) /* overcurrent protection + mode */ +#define RH_A_NOCP (1 << 12) /* no overcurrent protection */ +#define RH_A_POTPGT (0xff << 24) /* power on -> power good + time */ +#define HCRHDESCB 0x13 +#define RH_B_DR (0xffff << 0) /* device removable flags */ +#define RH_B_PPCM (0xffff << 16) /* port power control mask */ +#define HCRHSTATUS 0x14 +#define RH_HS_LPS (1 << 0) /* local power status */ +#define RH_HS_OCI (1 << 1) /* over current indicator */ +#define RH_HS_DRWE (1 << 15) /* device remote wakeup + enable */ +#define RH_HS_LPSC (1 << 16) /* local power status change */ +#define RH_HS_OCIC (1 << 17) /* over current indicator + change */ +#define RH_HS_CRWE (1 << 31) /* clear remote wakeup + enable */ +#define HCRHPORT1 0x15 +#define RH_PS_CCS (1 << 0) /* current connect status */ +#define RH_PS_PES (1 << 1) /* port enable status */ +#define RH_PS_PSS (1 << 2) /* port suspend status */ +#define RH_PS_POCI (1 << 3) /* port over current + indicator */ +#define RH_PS_PRS (1 << 4) /* port reset status */ +#define RH_PS_PPS (1 << 8) /* port power status */ +#define RH_PS_LSDA (1 << 9) /* low speed device attached */ +#define RH_PS_CSC (1 << 16) /* connect status change */ +#define RH_PS_PESC (1 << 17) /* port enable status change */ +#define RH_PS_PSSC (1 << 18) /* port suspend status + change */ +#define RH_PS_OCIC (1 << 19) /* over current indicator + change */ +#define RH_PS_PRSC (1 << 20) /* port reset status change */ +#define HCRHPORT_CLRMASK (0x1f << 16) +#define HCRHPORT2 0x16 +#define HCHWCFG 0x20 +#define HCHWCFG_15KRSEL (1 << 12) +#define HCHWCFG_CLKNOTSTOP (1 << 11) +#define HCHWCFG_ANALOG_OC (1 << 10) +#define HCHWCFG_DACK_MODE (1 << 8) +#define HCHWCFG_EOT_POL (1 << 7) +#define HCHWCFG_DACK_POL (1 << 6) +#define HCHWCFG_DREQ_POL (1 << 5) +#define HCHWCFG_DBWIDTH_MASK (0x03 << 3) +#define HCHWCFG_DBWIDTH(n) (((n) << 3) & HCHWCFG_DBWIDTH_MASK) +#define HCHWCFG_INT_POL (1 << 2) +#define HCHWCFG_INT_TRIGGER (1 << 1) +#define HCHWCFG_INT_ENABLE (1 << 0) +#define HCDMACFG 0x21 +#define HCDMACFG_BURST_LEN_MASK (0x03 << 5) +#define HCDMACFG_BURST_LEN(n) (((n) << 5) & HCDMACFG_BURST_LEN_MASK) +#define HCDMACFG_BURST_LEN_1 HCDMACFG_BURST_LEN(0) +#define HCDMACFG_BURST_LEN_4 HCDMACFG_BURST_LEN(1) +#define HCDMACFG_BURST_LEN_8 HCDMACFG_BURST_LEN(2) +#define HCDMACFG_DMA_ENABLE (1 << 4) +#define HCDMACFG_BUF_TYPE_MASK (0x07 << 1) +#define HCDMACFG_CTR_SEL (1 << 2) +#define HCDMACFG_ITLATL_SEL (1 << 1) +#define HCDMACFG_DMA_RW_SELECT (1 << 0) +#define HCXFERCTR 0x22 +#define HCuPINT 0x24 +#define HCuPINT_SOF (1 << 0) +#define HCuPINT_ATL (1 << 1) +#define HCuPINT_AIIEOT (1 << 2) +#define HCuPINT_OPR (1 << 4) +#define HCuPINT_SUSP (1 << 5) +#define HCuPINT_CLKRDY (1 << 6) +#define HCuPINTENB 0x25 +#define HCCHIPID 0x27 +#define HCCHIPID_MASK 0xff00 +#define HCCHIPID_MAGIC 0x6100 +#define HCSCRATCH 0x28 +#define HCSWRES 0x29 +#define HCSWRES_MAGIC 0x00f6 +#define HCITLBUFLEN 0x2a +#define HCATLBUFLEN 0x2b +#define HCBUFSTAT 0x2c +#define HCBUFSTAT_ITL0_FULL (1 << 0) +#define HCBUFSTAT_ITL1_FULL (1 << 1) +#define HCBUFSTAT_ATL_FULL (1 << 2) +#define HCBUFSTAT_ITL0_DONE (1 << 3) +#define HCBUFSTAT_ITL1_DONE (1 << 4) +#define HCBUFSTAT_ATL_DONE (1 << 5) +#define HCRDITL0LEN 0x2d +#define HCRDITL1LEN 0x2e +#define HCITLPORT 0x40 +#define HCATLPORT 0x41 + +/* PTD accessor macros. */ +#define PTD_GET_COUNT(p) (((p)->count & PTD_COUNT_MSK) >> 0) +#define PTD_COUNT(v) (((v) << 0) & PTD_COUNT_MSK) +#define PTD_GET_TOGGLE(p) (((p)->count & PTD_TOGGLE_MSK) >> 10) +#define PTD_TOGGLE(v) (((v) << 10) & PTD_TOGGLE_MSK) +#define PTD_GET_ACTIVE(p) (((p)->count & PTD_ACTIVE_MSK) >> 11) +#define PTD_ACTIVE(v) (((v) << 11) & PTD_ACTIVE_MSK) +#define PTD_GET_CC(p) (((p)->count & PTD_CC_MSK) >> 12) +#define PTD_CC(v) (((v) << 12) & PTD_CC_MSK) +#define PTD_GET_MPS(p) (((p)->mps & PTD_MPS_MSK) >> 0) +#define PTD_MPS(v) (((v) << 0) & PTD_MPS_MSK) +#define PTD_GET_SPD(p) (((p)->mps & PTD_SPD_MSK) >> 10) +#define PTD_SPD(v) (((v) << 10) & PTD_SPD_MSK) +#define PTD_GET_LAST(p) (((p)->mps & PTD_LAST_MSK) >> 11) +#define PTD_LAST(v) (((v) << 11) & PTD_LAST_MSK) +#define PTD_GET_EP(p) (((p)->mps & PTD_EP_MSK) >> 12) +#define PTD_EP(v) (((v) << 12) & PTD_EP_MSK) +#define PTD_GET_LEN(p) (((p)->len & PTD_LEN_MSK) >> 0) +#define PTD_LEN(v) (((v) << 0) & PTD_LEN_MSK) +#define PTD_GET_DIR(p) (((p)->len & PTD_DIR_MSK) >> 10) +#define PTD_DIR(v) (((v) << 10) & PTD_DIR_MSK) +#define PTD_GET_B5_5(p) (((p)->len & PTD_B5_5_MSK) >> 13) +#define PTD_B5_5(v) (((v) << 13) & PTD_B5_5_MSK) +#define PTD_GET_FA(p) (((p)->faddr & PTD_FA_MSK) >> 0) +#define PTD_FA(v) (((v) << 0) & PTD_FA_MSK) +#define PTD_GET_FMT(p) (((p)->faddr & PTD_FMT_MSK) >> 7) +#define PTD_FMT(v) (((v) << 7) & PTD_FMT_MSK) + +/* Hardware transfer status codes -- CC from ptd->count */ +#define TD_CC_NOERROR 0x00 +#define TD_CC_CRC 0x01 +#define TD_CC_BITSTUFFING 0x02 +#define TD_CC_DATATOGGLEM 0x03 +#define TD_CC_STALL 0x04 +#define TD_DEVNOTRESP 0x05 +#define TD_PIDCHECKFAIL 0x06 +#define TD_UNEXPECTEDPID 0x07 +#define TD_DATAOVERRUN 0x08 +#define TD_DATAUNDERRUN 0x09 + /* 0x0A, 0x0B reserved for hardware */ +#define TD_BUFFEROVERRUN 0x0C +#define TD_BUFFERUNDERRUN 0x0D + /* 0x0E, 0x0F reserved for HCD */ +#define TD_NOTACCESSED 0x0F + +/* ------------------------------------------------------------------------- */ + +#define LOG2_PERIODIC_SIZE 5 /* arbitrary; this matches OHCI */ +#define PERIODIC_SIZE (1 << LOG2_PERIODIC_SIZE) + +/* Philips transfer descriptor */ +struct ptd { + u16 count; +#define PTD_COUNT_MSK (0x3ff << 0) +#define PTD_TOGGLE_MSK (1 << 10) +#define PTD_ACTIVE_MSK (1 << 11) +#define PTD_CC_MSK (0xf << 12) + u16 mps; +#define PTD_MPS_MSK (0x3ff << 0) +#define PTD_SPD_MSK (1 << 10) +#define PTD_LAST_MSK (1 << 11) +#define PTD_EP_MSK (0xf << 12) + u16 len; +#define PTD_LEN_MSK (0x3ff << 0) +#define PTD_DIR_MSK (3 << 10) +#define PTD_DIR_SETUP (0) +#define PTD_DIR_OUT (1) +#define PTD_DIR_IN (2) +#define PTD_B5_5_MSK (1 << 13) + u16 faddr; +#define PTD_FA_MSK (0x7f << 0) +#define PTD_FMT_MSK (1 << 7) +} __attribute__ ((packed, aligned(2))); + +struct isp116x_ep { + struct usb_device *udev; + struct ptd ptd; + + u8 maxpacket; + u8 epnum; + u8 nextpid; + + u16 length; /* of current packet */ + unsigned char *data; /* to databuf */ + + u16 error_count; +}; + +/* URB struct */ +#define N_URB_TD 48 +#define URB_DEL 1 +typedef struct { + struct isp116x_ep *ed; + void *transfer_buffer; /* (in) associated data buffer */ + int actual_length; /* (return) actual transfer length */ + unsigned long pipe; /* (in) pipe information */ +#if 0 + int state; +#endif +} urb_priv_t; + +struct isp116x_platform_data { + /* Enable internal resistors on downstream ports */ + unsigned sel15Kres:1; + /* On-chip overcurrent detection */ + unsigned oc_enable:1; + /* Enable wakeup by devices on usb bus (e.g. wakeup + by attachment/detachment or by device activity + such as moving a mouse). When chosen, this option + prevents stopping internal clock, increasing + thereby power consumption in suspended state. */ + unsigned remote_wakeup_enable:1; +}; + +struct isp116x { + u16 *addr_reg; + u16 *data_reg; + + struct isp116x_platform_data *board; + + struct dentry *dentry; + unsigned long stat1, stat2, stat4, stat8, stat16; + + /* Status flags */ + unsigned disabled:1; + unsigned sleeping:1; + + /* Root hub registers */ + u32 rhdesca; + u32 rhdescb; + u32 rhstatus; + u32 rhport[2]; + + /* Schedule for the current frame */ + struct isp116x_ep *atl_active; + int atl_buflen; + int atl_bufshrt; + int atl_last_dir; + int atl_finishing; +}; + +/* ------------------------------------------------- */ + +/* Inter-io delay (ns). The chip is picky about access timings; it + * expects at least: + * 150ns delay between consecutive accesses to DATA_REG, + * 300ns delay between access to ADDR_REG and DATA_REG + * OE, WE MUST NOT be changed during these intervals + */ +#if defined(UDELAY) +#define isp116x_delay(h,d) udelay(d) +#else +#define isp116x_delay(h,d) do {} while (0) +#endif + +#include "../../super.h" /* + * Functions to call supervisor mode + * Super() in in TOS is buggy + */ + + +static inline void isp116x_write_addr(struct isp116x *isp116x, unsigned reg) +{ + u16 dumm; + u32 p = 0; + if ( !(Super (SUP_INQUIRE))) + p = SuperFromUser( ); + isp116x->data_reg = (u16*)(ISP116X_HCD_DATA_BEE + ((reg & 0x00ff)<<1)); + dumm = __raw_readw( isp116x->data_reg ); + isp116x->addr_reg = (u16*)ISP116X_HCD_ADDR_BEE; + dumm = __raw_readw( isp116x->addr_reg ); + isp116x_delay(isp116x, UDELAY); + if ((Super (SUP_INQUIRE)) && (p)) + SuperToUser( p ); +// ERR ( "data_reg: %x \n\r", isp116x->data_reg); +// ERR ( "addr_reg: %x \n\r", isp116x->addr_reg); +} + +static inline void isp116x_write_data16(struct isp116x *isp116x, u16 val) +{ + u16 dumm; + u32 p = 0; + if ( !(Super (SUP_INQUIRE))) + p = SuperFromUser( ); + isp116x->data_reg = (u16*)(ISP116X_HCD_DATA_BEE + ((val & 0xff00)>>7) ); + dumm = __raw_readw(isp116x->data_reg); + isp116x->addr_reg = (u16*)((ISP116X_HCD_ADDR_BEE - 0x4000) + ((val & 0x00ff)<<1)); + dumm = __raw_readw(isp116x->addr_reg); + isp116x_delay(isp116x, UDELAY); + if ((Super (SUP_INQUIRE)) && (p)) + SuperToUser( p ); +// ERR ( "data_reg: %x \n\r", isp116x->data_reg); +// ERR ( "addr_reg: %x \n\r", isp116x->addr_reg); +} + +static inline void isp116x_raw_write_data16(struct isp116x *isp116x, u16 val) +{ + u16 dumm; + u32 p = 0; + if ( !(Super (SUP_INQUIRE))) + p = SuperFromUser( ); + isp116x->data_reg = (u16*)(ISP116X_HCD_DATA_BEE + ((val & 0x00ff)<<1)); + dumm = __raw_readw(isp116x->data_reg); + isp116x->addr_reg = (u16*)((ISP116X_HCD_ADDR_BEE - 0x4000) + ((val & 0xff00)>>7)); + dumm = __raw_readw(isp116x->addr_reg); + isp116x_delay(isp116x, UDELAY); + if ((Super (SUP_INQUIRE)) && (p)) + SuperToUser( p ); +// ERR ( "data_reg: %x \n\r", isp116x->data_reg); +// ERR ( "addr_reg: %x \n\r", isp116x->addr_reg); +} + + +static inline u16 isp116x_read_data16(struct isp116x *isp116x) +{ + u16 val; + u32 p = 0; + if ( !(Super (SUP_INQUIRE))) + p = SuperFromUser( ); + isp116x->data_reg = (u16*)(ISP116X_HCD_DATA_BEE + 0x8000); + val = readw(isp116x->data_reg ); + isp116x_delay(isp116x, UDELAY); + if ((Super (SUP_INQUIRE)) && (p)) + SuperToUser( p ); + return val; +} + + +static inline u16 isp116x_raw_read_data16(struct isp116x *isp116x) +{ + u16 val; + u32 p = 0; + if ( !(Super (SUP_INQUIRE))) + p = SuperFromUser( ); + isp116x->data_reg = (u16*)(ISP116X_HCD_DATA_BEE + 0x8000); + val = __raw_readw(isp116x->data_reg ); + isp116x_delay(isp116x, UDELAY); + if ((Super (SUP_INQUIRE)) && (p)) + SuperToUser( p ); +// ERR ( "data_reg: %x value: %x\n\r", isp116x->data_reg, val ); + return val; +} + +#if 0 /* We don't use it anymore */ +static inline void isp116x_write_data32(struct isp116x *isp116x, u32 val) +{ +// p = SuperFromUser( ); + writew(val & 0xffff, isp116x->data_reg); + isp116x_delay(isp116x, UDELAY); + writew(val >> 16, isp116x->data_reg); + isp116x_delay(isp116x, UDELAY); +// SuperToUser( p ); +} +#endif + +/* + * Added for NetUSBee, to write HC registers without swaping them + * NetUSBee already swap them by hardware (i suppose.....) + */ +static inline void isp116x_raw_write_data32(struct isp116x *isp116x, u32 val) +{ + u16 dumm; + u32 p = 0; + if ( !(Super (SUP_INQUIRE))) + p = SuperFromUser( ); + isp116x->data_reg = (u16*)(ISP116X_HCD_DATA_BEE + ((val & 0x000000ff)<<1) ); + dumm = __raw_readw(isp116x->data_reg); + isp116x->addr_reg = (u16*)((ISP116X_HCD_ADDR_BEE - 0x4000) + ((val & 0x0000ff00)>>7)); + dumm = __raw_readw(isp116x->addr_reg); + isp116x_delay(isp116x, UDELAY); + isp116x->data_reg = (u16*)(ISP116X_HCD_DATA_BEE + ((val & 0x00ff0000)>>15)); + dumm = __raw_readw(isp116x->data_reg); + isp116x->addr_reg = (u16*)((ISP116X_HCD_ADDR_BEE - 0x4000) + ((val & 0xff000000)>>23) ); + dumm = __raw_readw(isp116x->addr_reg); + isp116x_delay(isp116x, UDELAY); + if ((Super (SUP_INQUIRE)) && (p)) + SuperToUser( p ); +} +/***********************************************/ + +#if 0 /* We don't use it */ +static inline u32 isp116x_read_data32(struct isp116x *isp116x) +{ + u32 val; + p = SuperFromUser( ); + val = (u32) readw(isp116x->data_reg); + isp116x_delay(isp116x, UDELAY); + val |= ((u32) readw(isp116x->data_reg)) << 16; + isp116x_delay(isp116x, UDELAY); + SuperToUser( p ); + return val; +} +#endif + +/* + * Added for NetUSBee, to read HC registers without swaping them + * NetUSBee already swap them by hardware (i suppose.....) + */ +static inline u32 isp116x_raw_read_data32(struct isp116x *isp116x) +{ + u32 val; + u32 p = 0; + if ( !(Super (SUP_INQUIRE))) + p = SuperFromUser( ); + isp116x->data_reg = (u16*)(ISP116X_HCD_DATA_BEE + 0x8000); + val = (u32) __raw_readw(isp116x->data_reg ); + isp116x_delay(isp116x, UDELAY); + val |= ((u32) __raw_readw(isp116x->data_reg )) << 16; + isp116x_delay(isp116x, UDELAY); + if ((Super (SUP_INQUIRE)) && (p)) + SuperToUser( p ); + return val; +} +/*******************************************************************/ + +/* Let's keep register access functions out of line. Hint: + we wait at least 150 ns at every access. +*/ + +/* with NetUSBee use raw_read to avoid swaping bytes*/ + +static u16 isp116x_read_reg16(struct isp116x *isp116x, unsigned reg) +{ + isp116x_write_addr(isp116x, reg); + return isp116x_raw_read_data16(isp116x); +} + +static u32 isp116x_read_reg32(struct isp116x *isp116x, unsigned reg) +{ + isp116x_write_addr(isp116x, reg); + return isp116x_raw_read_data32(isp116x); +} + +static void isp116x_write_reg16(struct isp116x *isp116x, unsigned reg, + unsigned val) +{ + isp116x_write_addr(isp116x, reg | ISP116x_WRITE_OFFSET); + isp116x_raw_write_data16(isp116x, (u16) (val & 0xffff)); +} + +/* with NetUSBee used raw_write to avoid swaping bytes by software */ +static void isp116x_write_reg32(struct isp116x *isp116x, unsigned reg, + unsigned val) +{ + isp116x_write_addr(isp116x, reg | ISP116x_WRITE_OFFSET); + isp116x_raw_write_data32(isp116x, (u32) val); +} + +/* --- USB HUB constants (not OHCI-specific; see hub.h) -------------------- */ + +/* destination of request */ +#define RH_INTERFACE 0x01 +#define RH_ENDPOINT 0x02 +#define RH_OTHER 0x03 + +#define RH_CLASS 0x20 +#define RH_VENDOR 0x40 + +/* Requests: bRequest << 8 | bmRequestType */ +#define RH_GET_STATUS 0x0080 +#define RH_CLEAR_FEATURE 0x0100 +#define RH_SET_FEATURE 0x0300 +#define RH_SET_ADDRESS 0x0500 +#define RH_GET_DESCRIPTOR 0x0680 +#define RH_SET_DESCRIPTOR 0x0700 +#define RH_GET_CONFIGURATION 0x0880 +#define RH_SET_CONFIGURATION 0x0900 +#define RH_GET_STATE 0x0280 +#define RH_GET_INTERFACE 0x0A80 +#define RH_SET_INTERFACE 0x0B00 +#define RH_SYNC_FRAME 0x0C80 +/* Our Vendor Specific Request */ +#define RH_SET_EP 0x2000 + +/* Hub port features */ +#define RH_PORT_CONNECTION 0x00 +#define RH_PORT_ENABLE 0x01 +#define RH_PORT_SUSPEND 0x02 +#define RH_PORT_OVER_CURRENT 0x03 +#define RH_PORT_RESET 0x04 +#define RH_PORT_POWER 0x08 +#define RH_PORT_LOW_SPEED 0x09 + +#define RH_C_PORT_CONNECTION 0x10 +#define RH_C_PORT_ENABLE 0x11 +#define RH_C_PORT_SUSPEND 0x12 +#define RH_C_PORT_OVER_CURRENT 0x13 +#define RH_C_PORT_RESET 0x14 + +/* Hub features */ +#define RH_C_HUB_LOCAL_POWER 0x00 +#define RH_C_HUB_OVER_CURRENT 0x01 + +#define RH_DEVICE_REMOTE_WAKEUP 0x00 +#define RH_ENDPOINT_STALL 0x01 + +#define RH_ACK 0x01 +#define RH_REQ_ERR -1 +#define RH_NACK 0x00 + +#endif /* _NETUSBEE_ISP116X_H */ diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/host/ohci-pci/ltoa.c b/BaS_codewarrior/FireBee/trunk/usb/store/host/ohci-pci/ltoa.c new file mode 100644 index 0000000..747ec55 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/host/ohci-pci/ltoa.c @@ -0,0 +1,38 @@ +/* + * File: ltoa.c + * Purpose: Function normally found in a standard C lib. + * + * Notes: This supports ASCII only!!! + */ + +void ltoa(char *buf, long n, unsigned long base) +{ + unsigned long un; + char *tmp, ch; + un = n; + if((base == 10) && (n < 0)) + { + *buf++ = '-'; + un = -n; + } + tmp = buf; + do + { + ch = un % base; + un = un / base; + if(ch <= 9) + ch += '0'; + else + ch += 'a' - 10; + *tmp++ = ch; + } + while(un); + *tmp = '\0'; + while(tmp > buf) + { + ch = *buf; + *buf++ = *--tmp; + *tmp = ch; + } +} + diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/host/ohci-pci/mod_devicetable.h b/BaS_codewarrior/FireBee/trunk/usb/store/host/ohci-pci/mod_devicetable.h new file mode 100644 index 0000000..8e480b5 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/host/ohci-pci/mod_devicetable.h @@ -0,0 +1,165 @@ +#ifndef MOD_DEVICETABLE_H +#define MOD_DEVICETABLE_H + +#define PCI_ANY_ID (~0) + +struct pci_device_id { + unsigned long vendor, device; /* Vendor and device ID or PCI_ANY_ID*/ + unsigned long subvendor, subdevice; /* Subsystem ID's or PCI_ANY_ID */ + unsigned long class, class_mask; /* (class,subclass,prog-if) triplet */ + unsigned long driver_data; /* Data private to the driver */ +}; + +#define IEEE1394_MATCH_VENDOR_ID 0x0001 +#define IEEE1394_MATCH_MODEL_ID 0x0002 +#define IEEE1394_MATCH_SPECIFIER_ID 0x0004 +#define IEEE1394_MATCH_VERSION 0x0008 + +struct ieee1394_device_id { + unsigned long match_flags; + unsigned long vendor_id; + unsigned long model_id; + unsigned long specifier_id; + unsigned long version; + unsigned long driver_data; +}; + +/* + * Device table entry for "new style" table-driven USB drivers. + * User mode code can read these tables to choose which modules to load. + * Declare the table as a MODULE_DEVICE_TABLE. + * + * A probe() parameter will point to a matching entry from this table. + * Use the driver_info field for each match to hold information tied + * to that match: device quirks, etc. + * + * Terminate the driver's table with an all-zeroes entry. + * Use the flag values to control which fields are compared. + */ + +/** + * struct usb_device_id - identifies USB devices for probing and hotplugging + * @match_flags: Bit mask controlling of the other fields are used to match + * against new devices. Any field except for driver_info may be used, + * although some only make sense in conjunction with other fields. + * This is usually set by a USB_DEVICE_*() macro, which sets all + * other fields in this structure except for driver_info. + * @idVendor: USB vendor ID for a device; numbers are assigned + * by the USB forum to its members. + * @idProduct: Vendor-assigned product ID. + * @bcdDevice_lo: Low end of range of vendor-assigned product version numbers. + * This is also used to identify individual product versions, for + * a range consisting of a single device. + * @bcdDevice_hi: High end of version number range. The range of product + * versions is inclusive. + * @bDeviceClass: Class of device; numbers are assigned + * by the USB forum. Products may choose to implement classes, + * or be vendor-specific. Device classes specify behavior of all + * the interfaces on a devices. + * @bDeviceSubClass: Subclass of device; associated with bDeviceClass. + * @bDeviceProtocol: Protocol of device; associated with bDeviceClass. + * @bInterfaceClass: Class of interface; numbers are assigned + * by the USB forum. Products may choose to implement classes, + * or be vendor-specific. Interface classes specify behavior only + * of a given interface; other interfaces may support other classes. + * @bInterfaceSubClass: Subclass of interface; associated with bInterfaceClass. + * @bInterfaceProtocol: Protocol of interface; associated with bInterfaceClass. + * @driver_info: Holds information used by the driver. Usually it holds + * a pointer to a descriptor understood by the driver, or perhaps + * device flags. + * + * In most cases, drivers will create a table of device IDs by using + * USB_DEVICE(), or similar macros designed for that purpose. + * They will then export it to userspace using MODULE_DEVICE_TABLE(), + * and provide it to the USB core through their usb_driver structure. + * + * See the usb_match_id() function for information about how matches are + * performed. Briefly, you will normally use one of several macros to help + * construct these entries. Each entry you provide will either identify + * one or more specific products, or will identify a class of products + * which have agreed to behave the same. You should put the more specific + * matches towards the beginning of your table, so that driver_info can + * record quirks of specific products. + */ +struct usb_device_id { + /* which fields to match against? */ + unsigned short match_flags; + + /* Used for product specific matches; range is inclusive */ + unsigned short idVendor; + unsigned short idProduct; + unsigned short bcdDevice_lo; + unsigned short bcdDevice_hi; + + /* Used for device class matches */ + unsigned char bDeviceClass; + unsigned char bDeviceSubClass; + unsigned char bDeviceProtocol; + + /* Used for interface class matches */ + unsigned char bInterfaceClass; + unsigned char bInterfaceSubClass; + unsigned char bInterfaceProtocol; + + /* not matched against */ + unsigned long driver_info; +}; + +/* Some useful macros to use to create struct usb_device_id */ +#define USB_DEVICE_ID_MATCH_VENDOR 0x0001 +#define USB_DEVICE_ID_MATCH_PRODUCT 0x0002 +#define USB_DEVICE_ID_MATCH_DEV_LO 0x0004 +#define USB_DEVICE_ID_MATCH_DEV_HI 0x0008 +#define USB_DEVICE_ID_MATCH_DEV_CLASS 0x0010 +#define USB_DEVICE_ID_MATCH_DEV_SUBCLASS 0x0020 +#define USB_DEVICE_ID_MATCH_DEV_PROTOCOL 0x0040 +#define USB_DEVICE_ID_MATCH_INT_CLASS 0x0080 +#define USB_DEVICE_ID_MATCH_INT_SUBCLASS 0x0100 +#define USB_DEVICE_ID_MATCH_INT_PROTOCOL 0x0200 + +/* s390 CCW devices */ +struct ccw_device_id { + unsigned short match_flags; /* which fields to match against */ + + unsigned short cu_type; /* control unit type */ + unsigned short dev_type; /* device type */ + unsigned char cu_model; /* control unit model */ + unsigned char dev_model; /* device model */ + + unsigned long driver_info; +}; + +#define CCW_DEVICE_ID_MATCH_CU_TYPE 0x01 +#define CCW_DEVICE_ID_MATCH_CU_MODEL 0x02 +#define CCW_DEVICE_ID_MATCH_DEVICE_TYPE 0x04 +#define CCW_DEVICE_ID_MATCH_DEVICE_MODEL 0x08 + + +#define PNP_ID_LEN 8 +#define PNP_MAX_DEVICES 8 + +struct pnp_device_id { + unsigned char id[PNP_ID_LEN]; + unsigned long driver_data; +}; + +struct pnp_card_device_id { + unsigned char id[PNP_ID_LEN]; + unsigned long driver_data; + struct { + unsigned char id[PNP_ID_LEN]; + } devs[PNP_MAX_DEVICES]; +}; + + +#define SERIO_ANY 0xff + +struct serio_device_id { + unsigned char type; + unsigned char extra; + unsigned char id; + unsigned char proto; +}; + + +#endif /* MOD_DEVICETABLE_H */ diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/host/ohci-pci/ohci-hcd.c b/BaS_codewarrior/FireBee/trunk/usb/store/host/ohci-pci/ohci-hcd.c new file mode 100644 index 0000000..8dcab45 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/host/ohci-pci/ohci-hcd.c @@ -0,0 +1,1953 @@ +/* + * URB OHCI HCD (Host Controller Driver) for USB and PCI bus. + * + * Interrupt support is added. Now, it has been tested + * on ULI1575 chip and works well with USB keyboard. + * + * (C) Copyright 2007 + * Zhang Wei, Freescale Semiconductor, Inc. + * + * (C) Copyright 2003 + * Gary Jennejohn, DENX Software Engineering + * + * Note: Much of this code has been derived from Linux 2.4 + * (C) Copyright 1999 Roman Weissgaerber + * (C) Copyright 2000-2002 David Brownell + * + * Modified for the MP2USB by (C) Copyright 2005 Eric Benard + * ebenard@eukrea.com - based on s3c24x0's driver + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + */ +/* + * IMPORTANT NOTE + * this driver is intended for use with USB Mass Storage Devices + * (BBB) and USB keyboard. There is NO support for Isochronous pipes! + */ + +#include "../../config.h" +#include "../../usb.h" +#include "ohci.h" +#include "pci_ids.h" +#include "pcixbios.h" + +#include "../../debug.h" +/* Extra debug information, aside from config.h */ +#undef OHCI_VERBOSE_DEBUG /* not always helpful */ +#undef SHOW_INFO +#undef OHCI_FILL_TRACE + +/* For initializing controller (mask in an HCFS mode too) */ +#define OHCI_CONTROL_INIT \ + (OHCI_CTRL_CBSR & 0x3) | OHCI_CTRL_IE | OHCI_CTRL_PLE + +/* + * e.g. PCI controllers need this + */ +#ifdef CONFIG_SYS_OHCI_SWAP_REG_ACCESS +# define readl(a) __swap_32(*((volatile u32 *)(a))) +# define writel(a, b) (*((volatile u32 *)(b)) = __swap_32((volatile u32)a)) +#else +# define readl(a) (*((volatile u32 *)(a))) +# define writel(a, b) (*((volatile u32 *)(b)) = ((volatile u32)a)) +#endif /* CONFIG_SYS_OHCI_SWAP_REG_ACCESS */ + +#define min_t(type, x, y) \ + ({ type __x = (x); type __y = (y); __x < __y ? __x: __y; }) + +/* Galvez: added to avoid shadow warnings */ +#define min2_t(type,x,y) \ + ({ type __a = (x); type __b = (y); __a < __b ? __a : __b; }) + +struct pci_device_id usb_pci_table[] = { + { PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M5237, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, /* ULI1575 PCI OHCI module ids */ + { PCI_VENDOR_ID_NEC, PCI_DEVICE_ID_NEC_USB, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, /* NEC PCI OHCI module ids */ +// { PCI_VENDOR_ID_PHILIPS, PCI_VENDOR_ID_PHILIPS_ISP1561, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, /* Philips 1561 PCI OHCI module ids */ + /* Please add supported PCI OHCI controller ids here */ + { 0, 0, 0, 0, 0, 0, 0 } +}; + + +#define err(format, arg...) printf("ERROR: " format "\r\n", ## arg) +#ifdef SHOW_INFO +#define info(format, arg...) printf("INFO: " format "\r\n", ## arg) +#else +#define info(format, arg...) do {} while (0) +#endif + +#define m16_swap(x) cpu_to_le16(x) +#define m32_swap(x) cpu_to_le32(x) + +typedef struct +{ + long ident; + union + { + long l; + short i[2]; + char c[4]; + } v; +} COOKIE; + +extern COOKIE *get_cookie(long id); +extern void udelay(long usec); +extern void ltoa(char *buf, long n, unsigned long base); + +/* global ohci_t */ +static ohci_t gohci; +/* device which was disconnected */ +struct usb_device *devgone; +char ohci_inited; + +static inline u32 roothub_a(struct ohci *hc) + { return readl(&hc->regs->roothub.a); } +static inline u32 roothub_b(struct ohci *hc) + { return readl(&hc->regs->roothub.b); } +static inline u32 roothub_status(struct ohci *hc) + { return readl(&hc->regs->roothub.status); } +static inline u32 roothub_portstatus(struct ohci *hc, int i) + { return readl(&hc->regs->roothub.portstatus[i]); } + +/* forward declaration */ +static int hc_interrupt(void); +static void td_submit_job(struct usb_device *dev, unsigned long pipe, +void *buffer, int transfer_len, struct devrequest *setup, urb_priv_t *urb, int interval); + +#if 0 +unsigned short cpu_to_le16(unsigned short val) +{ + extern unsigned short swap_short(unsigned short val); + if(gohci.big_endian) + return(swap_short(val)); + return(val); +} + +unsigned long cpu_to_le32(unsigned long val) +{ + extern unsigned long swap_long(unsigned long val); + if(gohci.big_endian) + return(swap_long(val)); + return(val); +} +#endif + +/*-------------------------------------------------------------------------* + * URB support functions + *-------------------------------------------------------------------------*/ + +/* free HCD-private data associated with this URB */ + +static void urb_free_priv(urb_priv_t *urb) +{ + int i; + struct td *td; + int last = urb->length - 1; + if(last >= 0) + { + for(i = 0; i <= last; i++) + { + td = urb->td[i]; + if(td) + { + td->usb_dev = NULL; + urb->td[i] = NULL; + } + } + } + usb_free(urb); +} + +/*-------------------------------------------------------------------------*/ + +#if DEBUG_HOST_LAYER +static int sohci_get_current_frame_number(struct usb_device *dev); + +/* debug| print the main components of an URB + * small: 0) header + data packets 1) just header */ + +static void pkt_print(urb_priv_t *purb, struct usb_device *dev, + unsigned long pipe, void *buffer, int transfer_len, + struct devrequest *setup, char *str, int small) +{ + DEBUG_HOST("%s URB:[%4x] dev:%2lu,ep:%2lu-%c,type:%s,len:%d/%d stat:%#lx", + str, + sohci_get_current_frame_number(dev), + usb_pipedevice(pipe), + usb_pipeendpoint(pipe), + usb_pipeout(pipe)? 'O': 'I', + usb_pipetype(pipe) < 2 ? \ + (usb_pipeint(pipe)? "INTR": "ISOC"): \ + (usb_pipecontrol(pipe)? "CTRL": "BULK"), + (purb ? purb->actual_length : 0), + transfer_len, dev->status); +#ifdef OHCI_VERBOSE_DEBUG + if(!small) + { + int i, len; + if(usb_pipecontrol(pipe)) + { + DEBUG_HOST(__FILE__ ": cmd(8):"); + for(i = 0; i < 8 ; i++) + DEBUG_HOST(" %02x", ((__u8 *)setup)[i]); + DEBUG_HOST("\r\n"); + } + if(transfer_len > 0 && buffer) + { + DEBUG_HOST(__FILE__ ": data(%d/%d):", (purb ? purb->actual_length : 0), transfer_len); + len = usb_pipeout(pipe)? transfer_len : (purb ? purb->actual_length : 0); + for(i = 0; i < 16 && i < len; i++) + DEBUG_HOST(" %02x", ((__u8 *)buffer)[i]); + DEBUG_HOST("%s\r\n", i < len? "...": ""); + } + } +#endif +} + +/* just for debugging; prints non-empty branches of the int ed tree + * inclusive iso eds */ +void ep_print_int_eds(ohci_t *ohci, char *str) +{ + int i, j; + __u32 *ed_p; + for(i = 0; i < 32; i++) + { + j = 5; + ed_p = &(ohci->hcca->int_table[i]); + if(*ed_p == 0) + continue; + DEBUG_HOST(__FILE__ ": %s branch int %2d(%2x):", str, i, i); + while(*ed_p != 0 && j--) + { + ed_t *ed = (ed_t *)m32_swap((unsigned long)ed_p); + DEBUG_HOST(" ed: %4x;", ed->hwINFO); + ed_p = &ed->hwNextED; + } + DEBUG_HOST("\r\n"); + } +} + +static void ohci_dump_intr_mask(char *label, __u32 mask) +{ + DEBUG_HOST("%s: 0x%08x%s%s%s%s%s%s%s%s%s", + label, + mask, + (mask & OHCI_INTR_MIE) ? " MIE" : "", + (mask & OHCI_INTR_OC) ? " OC" : "", + (mask & OHCI_INTR_RHSC) ? " RHSC" : "", + (mask & OHCI_INTR_FNO) ? " FNO" : "", + (mask & OHCI_INTR_UE) ? " UE" : "", + (mask & OHCI_INTR_RD) ? " RD" : "", + (mask & OHCI_INTR_SF) ? " SF" : "", + (mask & OHCI_INTR_WDH) ? " WDH" : "", + (mask & OHCI_INTR_SO) ? " SO" : "" + ); +} + +static void maybe_print_eds(char *label, __u32 value) +{ + ed_t *edp; + value += gohci.dma_offset; + edp = (ed_t *)value; + if(value && (value < 0xDFFFF0)) /* STRAM */ + { + DEBUG_HOST("%s %08x", label, value); + DEBUG_HOST("%08x", edp->hwINFO); + DEBUG_HOST("%08x", edp->hwTailP); + DEBUG_HOST("%08x", edp->hwHeadP); + DEBUG_HOST("%08x", edp->hwNextED); + } +} + +static char *hcfs2string(int state) +{ + switch(state) + { + case OHCI_USB_RESET: return "reset"; + case OHCI_USB_RESUME: return "resume"; + case OHCI_USB_OPER: return "operational"; + case OHCI_USB_SUSPEND: return "suspend"; + } + return "?"; +} + +/* dump control and status registers */ +static void ohci_dump_status(ohci_t *controller) +{ + struct ohci_regs *regs = controller->regs; + __u32 temp = readl(®s->revision) & 0xff; + if(temp != 0x10) + DEBUG_HOST("spec %d.%d", (temp >> 4), (temp & 0x0f)); + temp = readl(®s->control); + DEBUG_HOST("control: 0x%08x%s%s%s HCFS=%s%s%s%s%s CBSR=%d", temp, + (temp & OHCI_CTRL_RWE) ? " RWE" : "", + (temp & OHCI_CTRL_RWC) ? " RWC" : "", + (temp & OHCI_CTRL_IR) ? " IR" : "", + hcfs2string(temp & OHCI_CTRL_HCFS), + (temp & OHCI_CTRL_BLE) ? " BLE" : "", + (temp & OHCI_CTRL_CLE) ? " CLE" : "", + (temp & OHCI_CTRL_IE) ? " IE" : "", + (temp & OHCI_CTRL_PLE) ? " PLE" : "", + temp & OHCI_CTRL_CBSR + ); + temp = readl(®s->cmdstatus); + DEBUG_HOST("cmdstatus: 0x%08x SOC=%d%s%s%s%s", temp, + (temp & OHCI_SOC) >> 16, + (temp & OHCI_OCR) ? " OCR" : "", + (temp & OHCI_BLF) ? " BLF" : "", + (temp & OHCI_CLF) ? " CLF" : "", + (temp & OHCI_HCR) ? " HCR" : "" + ); + ohci_dump_intr_mask("intrstatus", readl(®s->intrstatus)); + ohci_dump_intr_mask("intrenable", readl(®s->intrenable)); + maybe_print_eds("ed_periodcurrent", readl(®s->ed_periodcurrent)); + maybe_print_eds("ed_controlhead", readl(®s->ed_controlhead)); + maybe_print_eds("ed_controlcurrent", readl(®s->ed_controlcurrent)); + maybe_print_eds("ed_bulkhead", readl(®s->ed_bulkhead)); + maybe_print_eds("ed_bulkcurrent", readl(®s->ed_bulkcurrent)); + maybe_print_eds("donehead", readl(®s->donehead)); +} + +static void ohci_dump_roothub(ohci_t *controller, int verbose) +{ + __u32 temp, ndp, i; + temp = roothub_a(controller); + ndp = (temp & RH_A_NDP); + if(verbose) + { + DEBUG_HOST("roothub.a: %08x POTPGT=%d%s%s%s%s%s NDP=%d", temp, + ((temp & RH_A_POTPGT) >> 24) & 0xff, + (temp & RH_A_NOCP) ? " NOCP" : "", + (temp & RH_A_OCPM) ? " OCPM" : "", + (temp & RH_A_DT) ? " DT" : "", + (temp & RH_A_NPS) ? " NPS" : "", + (temp & RH_A_PSM) ? " PSM" : "", + ndp + ); + temp = roothub_b(controller); + DEBUG_HOST("roothub.b: %08x PPCM=%04x DR=%04x", + temp, + (temp & RH_B_PPCM) >> 16, + (temp & RH_B_DR) + ); + temp = roothub_status(controller); + DEBUG_HOST("roothub.status: %08x%s%s%s%s%s%s", + temp, + (temp & RH_HS_CRWE) ? " CRWE" : "", + (temp & RH_HS_OCIC) ? " OCIC" : "", + (temp & RH_HS_LPSC) ? " LPSC" : "", + (temp & RH_HS_DRWE) ? " DRWE" : "", + (temp & RH_HS_OCI) ? " OCI" : "", + (temp & RH_HS_LPS) ? " LPS" : "" + ); + } + for(i = 0; i < ndp; i++) + { + temp = roothub_portstatus(controller, i); + DEBUG_HOST("roothub.portstatus [%d] = 0x%08x%s%s%s%s%s%s%s%s%s%s%s%s", + i, + temp, + (temp & RH_PS_PRSC) ? " PRSC" : "", + (temp & RH_PS_OCIC) ? " OCIC" : "", + (temp & RH_PS_PSSC) ? " PSSC" : "", + (temp & RH_PS_PESC) ? " PESC" : "", + (temp & RH_PS_CSC) ? " CSC" : "", + + (temp & RH_PS_LSDA) ? " LSDA" : "", + (temp & RH_PS_PPS) ? " PPS" : "", + (temp & RH_PS_PRS) ? " PRS" : "", + (temp & RH_PS_POCI) ? " POCI" : "", + (temp & RH_PS_PSS) ? " PSS" : "", + + (temp & RH_PS_PES) ? " PES" : "", + (temp & RH_PS_CCS) ? " CCS" : "" + ); + } +} + +static void ohci_dump(ohci_t *controller, int verbose) +{ + DEBUG_HOST("OHCI controller usb-%s state", controller->slot_name); + /* dumps some of the state we know about */ + ohci_dump_status(controller); + if(verbose) + ep_print_int_eds(controller, "hcca"); + DEBUG_HOST("hcca frame #%04x", controller->hcca->frame_no); + ohci_dump_roothub(controller, 1); +} +#endif /* DEBUG */ + +/*-------------------------------------------------------------------------* + * Interface functions (URB) + *-------------------------------------------------------------------------*/ + +/* get a transfer request */ + +int sohci_submit_job(urb_priv_t *urb, struct devrequest *setup) +{ + ohci_t *ohci; + ed_t *ed; + urb_priv_t *purb_priv = urb; + int i, size = 0; + struct usb_device *dev = urb->dev; + unsigned long pipe = urb->pipe; + void *buffer = urb->transfer_buffer; + int transfer_len = urb->transfer_buffer_length; + int interval = urb->interval; + ohci = &gohci; + /* when controller's hung, permit only roothub cleanup attempts + * such as powering down ports */ + if(ohci->disabled) + { + err("sohci_submit_job: EPIPE"); + return -1; + } + /* we're about to begin a new transaction here so mark the + * URB unfinished */ + urb->finished = 0; + /* every endpoint has a ed, locate and fill it */ + ed = ep_add_ed(dev, pipe, interval, 1); + if(!ed) + { + err("sohci_submit_job: ENOMEM"); + return -1; + } + /* for the private part of the URB we need the number of TDs (size) */ + switch(usb_pipetype(pipe)) + { + case PIPE_BULK: /* one TD for every 4096 Byte */ + size = (transfer_len - 1) / 4096 + 1; + break; + case PIPE_CONTROL:/* 1 TD for setup, 1 for ACK and 1 for every 4096 B */ + size = (transfer_len == 0) ? 2: (transfer_len - 1) / 4096 + 3; + break; + case PIPE_INTERRUPT: /* 1 TD */ + size = 1; + break; + } + ed->purb = urb; + if(size >= (N_URB_TD - 1)) + { + err("need %d TDs, only have %d", size, N_URB_TD); + return -1; + } + purb_priv->pipe = pipe; + /* fill the private part of the URB */ + purb_priv->length = size; + purb_priv->ed = ed; + purb_priv->actual_length = 0; + /* allocate the TDs */ + /* note that td[0] was allocated in ep_add_ed */ + for(i = 0; i < size; i++) + { + purb_priv->td[i] = td_alloc(dev); + if(!purb_priv->td[i]) + { + purb_priv->length = i; + urb_free_priv(purb_priv); + err("sohci_submit_job: ENOMEM"); + return -1; + } + } + if(ed->state == ED_NEW || (ed->state & ED_DEL)) + { + urb_free_priv(purb_priv); + err("sohci_submit_job: EINVAL"); + return -1; + } + /* link the ed into a chain if is not already */ + if(ed->state != ED_OPER) + ep_link(ohci, ed); + /* fill the TDs and link it to the ed */ + td_submit_job(dev, pipe, buffer, transfer_len, setup, purb_priv, interval); + return 0; +} + +static inline int sohci_return_job(struct ohci *hc, urb_priv_t *urb) +{ + struct ohci_regs *regs = hc->regs; + switch(usb_pipetype(urb->pipe)) + { + case PIPE_INTERRUPT: + /* implicitly requeued */ + if(urb->dev->irq_handle && (urb->dev->irq_act_len = urb->actual_length)) + { + writel(OHCI_INTR_WDH, ®s->intrenable); + readl(®s->intrenable); /* PCI posting flush */ + /* call interrupt device routine */ + DEBUG_HOST("irq_handle device %d", urb->dev->devnum); + urb->dev->irq_handle(urb->dev); + writel(OHCI_INTR_WDH, ®s->intrdisable); + readl(®s->intrdisable); /* PCI posting flush */ + } + urb->actual_length = 0; + td_submit_job(urb->dev, urb->pipe, urb->transfer_buffer, urb->transfer_buffer_length, NULL, urb, urb->interval); + break; + case PIPE_CONTROL: + case PIPE_BULK: + break; + default: + return 0; + } + return 1; +} + +/*-------------------------------------------------------------------------*/ + +#if DEBUG_HOST_LAYER +/* tell us the current USB frame number */ + +static int sohci_get_current_frame_number(struct usb_device *usb_dev) +{ + ohci_t *ohci = &gohci; + return m16_swap(ohci->hcca->frame_no); +} +#endif + +/*-------------------------------------------------------------------------* + * ED handling functions + *-------------------------------------------------------------------------*/ + +/* search for the right branch to insert an interrupt ed into the int tree + * do some load ballancing; + * returns the branch and + * sets the interval to interval = 2^integer (ld (interval)) */ + +static int ep_int_ballance(ohci_t *ohci, int interval, int load) +{ + int i, branch = 0; + /* search for the least loaded interrupt endpoint + * branch of all 32 branches + */ + for (i = 0; i < 32; i++) + if (ohci->ohci_int_load [branch] > ohci->ohci_int_load [i]) + branch = i; + + branch = branch % interval; + for (i = branch; i < 32; i += interval) + ohci->ohci_int_load [i] += load; + + return branch; +} + +/*-------------------------------------------------------------------------*/ + +/* 2^int( ld (inter)) */ + +static int ep_2_n_interval(int inter) +{ + int i; + for(i = 0; ((inter >> i) > 1) && (i < 5); i++); + return 1 << i; +} + +/*-------------------------------------------------------------------------*/ + +/* the int tree is a binary tree + * in order to process it sequentially the indexes of the branches have to + * be mapped the mapping reverses the bits of a word of num_bits length */ +static int ep_rev(int num_bits, int word) +{ + int i, wout = 0; + for(i = 0; i < num_bits; i++) + wout |= (((word >> i) & 1) << (num_bits - i - 1)); + return wout; +} + +/*-------------------------------------------------------------------------* + * ED handling functions + *-------------------------------------------------------------------------*/ + +/* link an ed into one of the HC chains */ + +static int ep_link(ohci_t *ohci, ed_t *edi) +{ + volatile ed_t *ed = edi; + int int_branch; + int i; + int inter; + int interval; + int load; + __u32 *ed_p; + ed->state = ED_OPER; + ed->int_interval = 0; + switch(ed->type) + { + case PIPE_CONTROL: + ed->hwNextED = 0; + if(ohci->ed_controltail == NULL) + writel(ed - ohci->dma_offset, &ohci->regs->ed_controlhead); + else + ohci->ed_controltail->hwNextED = m32_swap((unsigned long)ed - ohci->dma_offset); + ed->ed_prev = ohci->ed_controltail; + if(!ohci->ed_controltail && !ohci->ed_rm_list[0] && !ohci->ed_rm_list[1] && !ohci->sleeping) + { + ohci->hc_control |= OHCI_CTRL_CLE; + writel(ohci->hc_control, &ohci->regs->control); + } + ohci->ed_controltail = edi; + break; + case PIPE_BULK: + ed->hwNextED = 0; + if(ohci->ed_bulktail == NULL) + writel(ed - ohci->dma_offset, &ohci->regs->ed_bulkhead); + else + ohci->ed_bulktail->hwNextED = m32_swap((unsigned long)ed - ohci->dma_offset); + ed->ed_prev = ohci->ed_bulktail; + if(!ohci->ed_bulktail && !ohci->ed_rm_list[0] && !ohci->ed_rm_list[1] && !ohci->sleeping) + { + ohci->hc_control |= OHCI_CTRL_BLE; + writel(ohci->hc_control, &ohci->regs->control); + } + ohci->ed_bulktail = edi; + break; + case PIPE_INTERRUPT: + load = ed->int_load; + interval = ep_2_n_interval(ed->int_period); + ed->int_interval = interval; + int_branch = ep_int_ballance(ohci, interval, load); + ed->int_branch = int_branch; + for(i = 0; i < ep_rev(6, interval); i += inter) + { + inter = 1; + for(ed_p = &(ohci->hcca->int_table[ep_rev(5, i) + int_branch]); + (*ed_p != 0) && (((ed_t *)ed_p)->int_interval >= interval); + ed_p = &(((ed_t *)ed_p)->hwNextED)) + inter = ep_rev(6, ((ed_t *)ed_p)->int_interval); + ed->hwNextED = *ed_p; + *ed_p = m32_swap((unsigned long)ed - ohci->dma_offset); + } + break; + } + return 0; +} + +/*-------------------------------------------------------------------------*/ + +/* scan the periodic table to find and unlink this ED */ +static void periodic_unlink(struct ohci *ohci, volatile struct ed *ed, + unsigned idx, unsigned period) +{ + for( ;idx < NUM_INTS; idx += period) + { + __u32 *ed_p = &ohci->hcca->int_table[idx]; + /* ED might have been unlinked through another path */ + while(*ed_p != 0) + { + if(((struct ed *)m32_swap((unsigned long)ed_p)) == ed) + { + *ed_p = ed->hwNextED; + break; + } + ed_p = &(((struct ed *)m32_swap((unsigned long)ed_p))->hwNextED); + } + } +} + +/* unlink an ed from one of the HC chains. + * just the link to the ed is unlinked. + * the link from the ed still points to another operational ed or 0 + * so the HC can eventually finish the processing of the unlinked ed */ + +static int ep_unlink(ohci_t *ohci, ed_t *edi) +{ + volatile ed_t *ed = edi; + int i; + ed->hwINFO |= m32_swap(OHCI_ED_SKIP); + switch(ed->type) + { + case PIPE_CONTROL: + if(ed->ed_prev == NULL) + { + if(!ed->hwNextED) + { + ohci->hc_control &= ~OHCI_CTRL_CLE; + writel(ohci->hc_control, &ohci->regs->control); + } + writel(m32_swap(*((__u32 *)&ed->hwNextED)), &ohci->regs->ed_controlhead); + } + else + ed->ed_prev->hwNextED = ed->hwNextED; + if(ohci->ed_controltail == ed) + ohci->ed_controltail = ed->ed_prev; + else + ((ed_t *)(m32_swap(*((__u32 *)&ed->hwNextED))) + ohci->dma_offset)->ed_prev = ed->ed_prev; + break; + case PIPE_BULK: + if(ed->ed_prev == NULL) + { + if(!ed->hwNextED) + { + ohci->hc_control &= ~OHCI_CTRL_BLE; + writel(ohci->hc_control, &ohci->regs->control); + } + writel(m32_swap(*((__u32 *)&ed->hwNextED)), &ohci->regs->ed_bulkhead); + } + else + ed->ed_prev->hwNextED = ed->hwNextED; + if(ohci->ed_bulktail == ed) + ohci->ed_bulktail = ed->ed_prev; + else + ((ed_t *)(m32_swap(*((__u32 *)&ed->hwNextED))) + ohci->dma_offset)->ed_prev = ed->ed_prev; + break; + case PIPE_INTERRUPT: + periodic_unlink(ohci, ed, 0, 1); + for(i = ed->int_branch; i < 32; i += ed->int_interval) + ohci->ohci_int_load[i] -= ed->int_load; + break; + } + ed->state = ED_UNLINK; + return 0; +} + +/*-------------------------------------------------------------------------*/ + +/* add/reinit an endpoint; this should be done once at the + * usb_set_configuration command, but the USB stack is a little bit + * stateless so we do it at every transaction if the state of the ed + * is ED_NEW then a dummy td is added and the state is changed to + * ED_UNLINK in all other cases the state is left unchanged the ed + * info fields are setted anyway even though most of them should not + * change + */ +static ed_t *ep_add_ed(struct usb_device *usb_dev, unsigned long pipe, int interval, int load) +{ + td_t *td; + ed_t *ed_ret; + volatile ed_t *ed; + struct ohci_device *ohci_dev = gohci.ohci_dev; + ed = ed_ret = &ohci_dev->ed[(usb_pipeendpoint(pipe) << 1) | (usb_pipecontrol(pipe)? 0: usb_pipeout(pipe))]; + if((ed->state & ED_DEL) || (ed->state & ED_URB_DEL)) + { + err("ep_add_ed: pending delete"); + /* pending delete request */ + return NULL; + } + if(ed->state == ED_NEW) + { + /* dummy td; end of td list for ed */ + td = td_alloc(usb_dev); + ed->hwTailP = m32_swap((unsigned long)td - gohci.dma_offset); + ed->hwHeadP = ed->hwTailP; + ed->state = ED_UNLINK; + ed->type = usb_pipetype(pipe); + ohci_dev->ed_cnt++; + } + ed->hwINFO = m32_swap(usb_pipedevice(pipe) + | usb_pipeendpoint(pipe) << 7 + | (usb_pipeisoc(pipe)? 0x8000: 0) + | (usb_pipecontrol(pipe)? 0: \ + (usb_pipeout(pipe)? 0x800: 0x1000)) + | usb_pipeslow(pipe) << 13 + | usb_maxpacket(usb_dev, pipe) << 16); + if(ed->type == PIPE_INTERRUPT && ed->state == ED_UNLINK) + { + ed->int_period = interval; + ed->int_load = load; + } + return ed_ret; +} + +/*-------------------------------------------------------------------------* + * TD handling functions + *-------------------------------------------------------------------------*/ + +/* enqueue next TD for this URB (OHCI spec 5.2.8.2) */ + +static void td_fill(ohci_t *ohci, unsigned int info, void *data, int len, + struct usb_device *dev, int idx, urb_priv_t *urb_priv) +{ + volatile td_t *td, *td_pt; +#ifdef OHCI_FILL_TRACE + int i; +#endif + if(idx > urb_priv->length) + { + err("index > length"); + return; + } + /* use this td as the next dummy */ + td_pt = urb_priv->td[idx]; + td_pt->hwNextTD = 0; + /* fill the old dummy TD */ + td = urb_priv->td[idx] = (td_t *)((m32_swap(urb_priv->ed->hwTailP) & ~0xf) + ohci->dma_offset); + td->ed = urb_priv->ed; + td->next_dl_td = NULL; + td->index = idx; + td->data = (__u32)data; +#ifdef OHCI_FILL_TRACE + if(usb_pipebulk(urb_priv->pipe) && usb_pipeout(urb_priv->pipe)) + { + for(i = 0; i < len; i++) + printf("td->data[%d] %#2x ", i, ((unsigned char *)td->data)[i]); + printf("\r\n"); + } +#endif + if(!len) + data = NULL; + td->hwINFO = m32_swap(info); + if(data != NULL) + { + td->hwCBP = m32_swap((unsigned long)data - ohci->dma_offset); + td->hwBE = m32_swap((unsigned long)(data + len - 1 - ohci->dma_offset)); + } + else + { + td->hwCBP = 0; + td->hwBE = 0; + } + td->hwNextTD = m32_swap((unsigned long)td_pt - ohci->dma_offset); + /* append to queue */ + td->ed->hwTailP = td->hwNextTD; +#if 0 + if(data) + { + int i; + static char buf[4096]; + char buf2[16]; + *buf = '\0'; + for(i = 0; i < len; i++) + { + ltoa(buf2, (long)*(unsigned char *)(data + i), 16); + strcat(buf, buf2); + strcat(buf, " "); + } + err(">>>>>>td_fill: %08x %08x %08X %08X at 0x%08x", + m32_swap(td->hwINFO), m32_swap(td->hwCBP), m32_swap(td->hwNextTD), m32_swap(td->hwBE), td); + err(" ... %s", buf); + } + else + err(">>>>>>td_fill: %08x %08x %08X %08X at 0x%08x", + m32_swap(td->hwINFO), m32_swap(td->hwCBP), m32_swap(td->hwNextTD), m32_swap(td->hwBE), td); +#endif +} + +/*-------------------------------------------------------------------------*/ + +/* prepare all TDs of a transfer */ + +static void td_submit_job(struct usb_device *dev, unsigned long pipe, + void *buffer, int transfer_len, struct devrequest *setup, urb_priv_t *urb, int interval) +{ + ohci_t *ohci = &gohci; + int data_len = transfer_len; + void *data; + int cnt = 0; + __u32 info = 0; + unsigned int toggle = 0; + /* OHCI handles the DATA-toggles itself, we just use the USB-toggle + * bits for reseting */ + if(usb_gettoggle(dev, usb_pipeendpoint(pipe), usb_pipeout(pipe))) + toggle = TD_T_TOGGLE; + else + { + toggle = TD_T_DATA0; + usb_settoggle(dev, usb_pipeendpoint(pipe), usb_pipeout(pipe), 1); + } + urb->td_cnt = 0; + if(data_len) + data = buffer; + else + data = NULL; + switch(usb_pipetype(pipe)) + { + case PIPE_BULK: + info = usb_pipeout(pipe) ? TD_CC | TD_DP_OUT : TD_CC | TD_DP_IN ; + while(data_len > 4096) + { + td_fill(ohci, info | (cnt? TD_T_TOGGLE : toggle), data, 4096, dev, cnt, urb); + data += 4096; data_len -= 4096; cnt++; + } + info = usb_pipeout(pipe) ? TD_CC | TD_DP_OUT : TD_CC | TD_R | TD_DP_IN ; + td_fill(ohci, info | (cnt? TD_T_TOGGLE:toggle), data, data_len, dev, cnt, urb); + cnt++; + if(!ohci->sleeping) /* start bulk list */ + writel(OHCI_BLF, &ohci->regs->cmdstatus); + break; + case PIPE_CONTROL: + /* Setup phase */ + info = TD_CC | TD_DP_SETUP | TD_T_DATA0; + td_fill(ohci, info, setup, 8, dev, cnt++, urb); + /* Optional Data phase */ + if(data_len > 0) + { + info = usb_pipeout(pipe) ? TD_CC | TD_R | TD_DP_OUT | TD_T_DATA1 : TD_CC | TD_R | TD_DP_IN | TD_T_DATA1; + /* NOTE: mishandles transfers >8K, some >4K */ + td_fill(ohci, info, data, data_len, dev, cnt++, urb); + } + /* Status phase */ + info = usb_pipeout(pipe) ? TD_CC | TD_DP_IN | TD_T_DATA1 : TD_CC | TD_DP_OUT | TD_T_DATA1; + td_fill(ohci, info, data, 0, dev, cnt++, urb); + if(!ohci->sleeping) /* start Control list */ + writel(OHCI_CLF, &ohci->regs->cmdstatus); + break; + case PIPE_INTERRUPT: + info = usb_pipeout(urb->pipe) ? TD_CC | TD_DP_OUT | toggle : TD_CC | TD_R | TD_DP_IN | toggle; + td_fill(ohci, info, data, data_len, dev, cnt++, urb); + break; + } + if(urb->length != cnt) + DEBUG_HOST("TD LENGTH %d != CNT %d", urb->length, cnt); +} + +/*-------------------------------------------------------------------------* + * Done List handling functions + *-------------------------------------------------------------------------*/ + +/* calculate the transfer length and update the urb */ + +static void dl_transfer_length(td_t *td) +{ + __u32 tdINFO, tdBE, tdCBP; + urb_priv_t *lurb_priv = td->ed->purb; + tdINFO = m32_swap(td->hwINFO); + tdBE = m32_swap(td->hwBE); + tdCBP = m32_swap(td->hwCBP); + if(tdBE) + tdBE += gohci.dma_offset; + if(tdCBP) + tdCBP += gohci.dma_offset; + if(!(usb_pipecontrol(lurb_priv->pipe) && ((td->index == 0) || (td->index == lurb_priv->length - 1)))) + { + if(tdBE != 0) + { + if(td->hwCBP == 0) + lurb_priv->actual_length += tdBE - td->data + 1; + else + lurb_priv->actual_length += tdCBP - td->data; + } + } +} + +/*-------------------------------------------------------------------------*/ +void check_status(td_t *td_list) +{ + urb_priv_t *lurb_priv = td_list->ed->purb; + int urb_len = lurb_priv->length; + __u32 *phwHeadP = &td_list->ed->hwHeadP; + int cc = TD_CC_GET(m32_swap(td_list->hwINFO)); + if(cc) + { + err(" USB-error: %s (%x)", cc_to_string[cc], cc); + if(*phwHeadP & m32_swap(0x1)) + { + if(lurb_priv && ((td_list->index + 1) < urb_len)) + { + *phwHeadP = (lurb_priv->td[urb_len - 1]->hwNextTD & m32_swap(0xfffffff0)) | (*phwHeadP & m32_swap(0x2)); + lurb_priv->td_cnt += urb_len - td_list->index - 1; + } + else + *phwHeadP &= m32_swap(0xfffffff2); + } +#ifdef CONFIG_MPC5200 + td_list->hwNextTD = 0; +#endif + } +} + +/* replies to the request have to be on a FIFO basis so + * we reverse the reversed done-list */ +td_t *dl_reverse_done_list(ohci_t *ohci) +{ + __u32 td_list_hc; + td_t *td_rev = NULL; + td_t *td_list = NULL; + td_list_hc = m32_swap(ohci->hcca->done_head) & ~0xf; + if(td_list_hc) + td_list_hc += ohci->dma_offset; + ohci->hcca->done_head = 0; + while(td_list_hc) + { + td_list = (td_t *)td_list_hc; + check_status(td_list); + td_list->next_dl_td = td_rev; + td_rev = td_list; + td_list_hc = m32_swap(td_list->hwNextTD) & ~0xf; + if(td_list_hc) + td_list_hc += ohci->dma_offset; + } + return td_list; +} + +/*-------------------------------------------------------------------------*/ +/*-------------------------------------------------------------------------*/ + +static void finish_urb(ohci_t *ohci, urb_priv_t *urb, int status) +{ + if((status & (ED_OPER | ED_UNLINK)) && (urb->state != URB_DEL)) + urb->finished = sohci_return_job(ohci, urb); + else + DEBUG_HOST("finish_urb: strange.., ED state %x, \r\n", status); +} + +/* + * Used to take back a TD from the host controller. This would normally be + * called from within dl_done_list, however it may be called directly if the + * HC no longer sees the TD and it has not appeared on the donelist (after + * two frames). This bug has been observed on ZF Micro systems. + */ +int takeback_td(ohci_t *ohci, td_t *td_list) +{ + ed_t *ed; + int cc; + int stat = 0; + /* urb_t *urb; */ + urb_priv_t *lurb_priv; + __u32 tdINFO, edHeadP, edTailP; + tdINFO = m32_swap(td_list->hwINFO); + ed = td_list->ed; + lurb_priv = ed->purb; + dl_transfer_length(td_list); + lurb_priv->td_cnt++; + /* error code of transfer */ + cc = TD_CC_GET(tdINFO); + if(cc) + { + err("USB-error: %s (%x)", cc_to_string[cc], cc); + stat = cc_to_error[cc]; + } + /* see if this done list makes for all TD's of current URB, + * and mark the URB finished if so */ + if(lurb_priv->td_cnt == lurb_priv->length) + finish_urb(ohci, lurb_priv, ed->state); + DEBUG_HOST("dl_done_list: processing TD %x, len %x\r\n", + lurb_priv->td_cnt, lurb_priv->length); + if(ed->state != ED_NEW && (!usb_pipeint(lurb_priv->pipe))) + { + edHeadP = m32_swap(ed->hwHeadP) & ~0xf; + edTailP = m32_swap(ed->hwTailP); + /* unlink eds if they are not busy */ + if((edHeadP == edTailP) && (ed->state == ED_OPER)) + ep_unlink(ohci, ed); + } + return stat; +} + +int dl_done_list(ohci_t *ohci) +{ + int stat = 0; + td_t *td_list = dl_reverse_done_list(ohci); + while(td_list) + { + td_t *td_next = td_list->next_dl_td; + stat = takeback_td(ohci, td_list); + td_list = td_next; + } + return stat; +} + +/*-------------------------------------------------------------------------* + * Virtual Root Hub + *-------------------------------------------------------------------------*/ + +/* Device descriptor */ +static __u8 root_hub_dev_des[] = +{ + 0x12, /* __u8 bLength; */ + 0x01, /* __u8 bDescriptorType; Device */ + 0x10, /* __u16 bcdUSB; v1.1 */ + 0x01, + 0x09, /* __u8 bDeviceClass; HUB_CLASSCODE */ + 0x00, /* __u8 bDeviceSubClass; */ + 0x00, /* __u8 bDeviceProtocol; */ + 0x08, /* __u8 bMaxPacketSize0; 8 Bytes */ + 0x00, /* __u16 idVendor; */ + 0x00, + 0x00, /* __u16 idProduct; */ + 0x00, + 0x00, /* __u16 bcdDevice; */ + 0x00, + 0x00, /* __u8 iManufacturer; */ + 0x01, /* __u8 iProduct; */ + 0x00, /* __u8 iSerialNumber; */ + 0x01 /* __u8 bNumConfigurations; */ +}; + +/* Configuration descriptor */ +static __u8 root_hub_config_des[] = +{ + 0x09, /* __u8 bLength; */ + 0x02, /* __u8 bDescriptorType; Configuration */ + 0x19, /* __u16 wTotalLength; */ + 0x00, + 0x01, /* __u8 bNumInterfaces; */ + 0x01, /* __u8 bConfigurationValue; */ + 0x00, /* __u8 iConfiguration; */ + 0x40, /* __u8 bmAttributes; + Bit 7: Bus-powered, 6: Self-powered, 5 Remote-wakwup, 4..0: resvd */ + 0x00, /* __u8 MaxPower; */ + + /* interface */ + 0x09, /* __u8 if_bLength; */ + 0x04, /* __u8 if_bDescriptorType; Interface */ + 0x00, /* __u8 if_bInterfaceNumber; */ + 0x00, /* __u8 if_bAlternateSetting; */ + 0x01, /* __u8 if_bNumEndpoints; */ + 0x09, /* __u8 if_bInterfaceClass; HUB_CLASSCODE */ + 0x00, /* __u8 if_bInterfaceSubClass; */ + 0x00, /* __u8 if_bInterfaceProtocol; */ + 0x00, /* __u8 if_iInterface; */ + + /* endpoint */ + 0x07, /* __u8 ep_bLength; */ + 0x05, /* __u8 ep_bDescriptorType; Endpoint */ + 0x81, /* __u8 ep_bEndpointAddress; IN Endpoint 1 */ + 0x03, /* __u8 ep_bmAttributes; Interrupt */ + 0x02, /* __u16 ep_wMaxPacketSize; ((MAX_ROOT_PORTS + 1) / 8 */ + 0x00, + 0xff /* __u8 ep_bInterval; 255 ms */ +}; + +static unsigned char root_hub_str_index0[] = +{ + 0x04, /* __u8 bLength; */ + 0x03, /* __u8 bDescriptorType; String-descriptor */ + 0x09, /* __u8 lang ID */ + 0x04, /* __u8 lang ID */ +}; + +static unsigned char root_hub_str_index1[] = +{ + 28, /* __u8 bLength; */ + 0x03, /* __u8 bDescriptorType; String-descriptor */ + 'O', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'H', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'C', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'I', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + ' ', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'R', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'o', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'o', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 't', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + ' ', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'H', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'u', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'b', /* __u8 Unicode */ + 0, /* __u8 Unicode */ +}; + +/* Hub class-specific descriptor is constructed dynamically */ + +/*-------------------------------------------------------------------------*/ + +#define OK(x) len = (x); break +#if DEBUG_HOST_LAYER +#define WR_RH_STAT(x) {info("WR:status %#8x", (x)); writel((x), \ + &gohci.regs->roothub.status); } +#define WR_RH_PORTSTAT(x) {info("WR:portstatus[%d] %#8x", wIndex-1, \ + (x)); writel((x), &gohci.regs->roothub.portstatus[wIndex-1]); } +#else +#define WR_RH_STAT(x) writel((x), &gohci.regs->roothub.status) +#define WR_RH_PORTSTAT(x) writel((x), \ + &gohci.regs->roothub.portstatus[wIndex-1]) +#endif +#define RD_RH_STAT roothub_status(&gohci) +#define RD_RH_PORTSTAT roothub_portstatus(&gohci, wIndex-1) + +/* request to virtual root hub */ + +int rh_check_port_status(ohci_t *controller) +{ + __u32 temp, ndp, i; + int res = -1; + temp = roothub_a(controller); + ndp = (temp & RH_A_NDP); + for (i = 0; i < ndp; i++) { + temp = roothub_portstatus(controller, i); + /* check for a device disconnect */ + if (((temp & (RH_PS_PESC | RH_PS_CSC)) == + (RH_PS_PESC | RH_PS_CSC)) && + ((temp & RH_PS_CCS) == 0)) { + res = i; + break; + } + } + return res; +} + +static int ohci_submit_rh_msg(struct usb_device *dev, unsigned long pipe, + void *buffer, int transfer_len, struct devrequest *cmd) +{ + void *data = buffer; + int leni = transfer_len; + int len = 0; + int stat = 0; + __u32 datab[4]; + __u8 *data_buf = (__u8 *)datab; + __u16 bmRType_bReq; + __u16 wValue; + __u16 wIndex; + __u16 wLength; +#if DEBUG_HOST_LAYER + pkt_print(NULL, dev, pipe, buffer, transfer_len, cmd, "SUB(rh)", usb_pipein(pipe)); +#else +// wait_ms(1); +#endif + if(usb_pipeint(pipe)) + { + info("Root-Hub submit IRQ: NOT implemented"); + return 0; + } + bmRType_bReq = cmd->requesttype | (cmd->request << 8); + wValue = le16_to_cpu(cmd->value); + wIndex = le16_to_cpu(cmd->index); + wLength = le16_to_cpu(cmd->length); + info("Root-Hub: adr: %2x cmd(%1x): %08x %04x %04x %04x", + dev->devnum, 8, bmRType_bReq, wValue, wIndex, wLength); + switch(bmRType_bReq) + { + /* Request Destination: + without flags: Device, + RH_INTERFACE: interface, + RH_ENDPOINT: endpoint, + RH_CLASS means HUB here, + RH_OTHER | RH_CLASS almost ever means HUB_PORT here + */ + case RH_GET_STATUS: + *(__u16 *)data_buf = cpu_to_le16(1); + OK(2); + case RH_GET_STATUS | RH_INTERFACE: + *(__u16 *)data_buf = cpu_to_le16(0); + OK(2); + case RH_GET_STATUS | RH_ENDPOINT: + *(__u16 *)data_buf = cpu_to_le16(0); + OK(2); + case RH_GET_STATUS | RH_CLASS: + *(__u32 *)data_buf = cpu_to_le32(RD_RH_STAT & ~(RH_HS_CRWE | RH_HS_DRWE)); + OK(4); + case RH_GET_STATUS | RH_OTHER | RH_CLASS: + *(__u32 *)data_buf = cpu_to_le32(RD_RH_PORTSTAT); + OK(4); + case RH_CLEAR_FEATURE | RH_ENDPOINT: + switch(wValue) + { + case (RH_ENDPOINT_STALL): OK(0); + } + break; + case RH_CLEAR_FEATURE | RH_CLASS: + switch(wValue) + { + case RH_C_HUB_LOCAL_POWER: OK(0); + case (RH_C_HUB_OVER_CURRENT): WR_RH_STAT(RH_HS_OCIC); OK(0); + } + break; + case RH_CLEAR_FEATURE | RH_OTHER | RH_CLASS: + switch(wValue) + { + case (RH_PORT_ENABLE): WR_RH_PORTSTAT(RH_PS_CCS); OK(0); + case (RH_PORT_SUSPEND): WR_RH_PORTSTAT(RH_PS_POCI); OK(0); + case (RH_PORT_POWER): WR_RH_PORTSTAT(RH_PS_LSDA); OK(0); + case (RH_C_PORT_CONNECTION): WR_RH_PORTSTAT(RH_PS_CSC); OK(0); + case (RH_C_PORT_ENABLE): WR_RH_PORTSTAT(RH_PS_PESC); OK(0); + case (RH_C_PORT_SUSPEND): WR_RH_PORTSTAT(RH_PS_PSSC); OK(0); + case (RH_C_PORT_OVER_CURRENT):WR_RH_PORTSTAT(RH_PS_OCIC); OK(0); + case (RH_C_PORT_RESET): WR_RH_PORTSTAT(RH_PS_PRSC); OK(0); + } + break; + case RH_SET_FEATURE | RH_OTHER | RH_CLASS: + switch(wValue) + { + case (RH_PORT_SUSPEND): WR_RH_PORTSTAT(RH_PS_PSS); OK(0); + case (RH_PORT_RESET): /* BUG IN HUP CODE *********/ + if(RD_RH_PORTSTAT & RH_PS_CCS) + WR_RH_PORTSTAT(RH_PS_PRS); + OK(0); + case (RH_PORT_POWER): WR_RH_PORTSTAT(RH_PS_PPS); wait_ms(100); OK(0); + case (RH_PORT_ENABLE): /* BUG IN HUP CODE *********/ + if(RD_RH_PORTSTAT & RH_PS_CCS) + WR_RH_PORTSTAT(RH_PS_PES); + OK(0); + } + break; + case RH_SET_ADDRESS: + gohci.rh.devnum = wValue; + OK(0); + case RH_GET_DESCRIPTOR: + switch((wValue & 0xff00) >> 8) + { + case(0x01): /* device descriptor */ + len = min_t(unsigned int, leni, min2_t(unsigned int, sizeof(root_hub_dev_des), wLength)); + data_buf = root_hub_dev_des; + OK(len); + case(0x02): /* configuration descriptor */ + len = min_t(unsigned int, leni, min2_t(unsigned int, sizeof(root_hub_config_des), wLength)); + data_buf = root_hub_config_des; + OK(len); + case(0x03): /* string descriptors */ + if(wValue == 0x0300) + { + len = min_t(unsigned int, leni, min2_t(unsigned int, sizeof(root_hub_str_index0), wLength)); + data_buf = root_hub_str_index0; + OK(len); + } + if(wValue == 0x0301) + { + len = min_t(unsigned int, leni, min2_t(unsigned int, sizeof(root_hub_str_index1), wLength)); + data_buf = root_hub_str_index1; + OK(len); + } + default: + stat = USB_ST_STALLED; + } + break; + case RH_GET_DESCRIPTOR | RH_CLASS: + { + __u32 temp = roothub_a(&gohci); + data_buf[0] = 9; /* min length; */ + data_buf[1] = 0x29; + data_buf[2] = temp & RH_A_NDP; + data_buf[3] = 0; + if(temp & RH_A_PSM) /* per-port power switching? */ + data_buf[3] |= 0x1; + if(temp & RH_A_NOCP) /* no overcurrent reporting? */ + data_buf[3] |= 0x10; + else if(temp & RH_A_OCPM) /* per-port overcurrent reporting? */ + data_buf[3] |= 0x8; + /* corresponds to data_buf[4-7] */ + datab[1] = 0; + data_buf[5] = (temp & RH_A_POTPGT) >> 24; + temp = roothub_b(&gohci); + data_buf[7] = temp & RH_B_DR; + if(data_buf[2] < 7) + data_buf[8] = 0xff; + else + { + data_buf[0] += 2; + data_buf[8] = (temp & RH_B_DR) >> 8; + data_buf[10] = data_buf[9] = 0xff; + } + len = min_t(unsigned int, leni, min2_t(unsigned int, data_buf [0], wLength)); + OK(len); + } + case RH_GET_CONFIGURATION: *(__u8 *) data_buf = 0x01; OK(1); + case RH_SET_CONFIGURATION: WR_RH_STAT(0x10000); OK(0); + default: + DEBUG_HOST("unsupported root hub command"); + stat = USB_ST_STALLED; + } +#if DEBUG_HOST_LAYER + ohci_dump_roothub(&gohci, 1); +#else +// wait_ms(1); +#endif + len = min_t(int, len, leni); + if(data != data_buf) + memcpy(data, data_buf, len); + dev->act_len = len; + dev->status = stat; +#if DEBUG_HOST_LAYER + pkt_print(NULL, dev, pipe, buffer, transfer_len, cmd, "RET(rh)", 0/*usb_pipein(pipe)*/); +#else +// wait_ms(1); +#endif + return stat; +} + +/*-------------------------------------------------------------------------*/ + +/* common code for handling submit messages - used for all but root hub accesses. */ + +int submit_common_msg(struct usb_device *dev, unsigned long pipe, void *buffer, + int transfer_len, struct devrequest *setup, int interval) +{ + int stat = 0; + int maxsize = usb_maxpacket(dev, pipe); + int timeout; + urb_priv_t *urb; + urb = (urb_priv_t *)usb_malloc(sizeof(urb_priv_t)); + if(urb == NULL) + { + err("submit_common_msg malloc failed"); + return -1; + } + memset(urb, 0, sizeof(urb_priv_t)); + urb->dev = dev; + urb->pipe = pipe; + urb->transfer_buffer = buffer; + urb->transfer_buffer_length = transfer_len; + urb->interval = interval; + /* device pulled? Shortcut the action. */ + if(devgone == dev) + { + dev->status = USB_ST_CRC_ERR; + return 0; + } +#if DEBUG_HOST_LAYER + urb->actual_length = 0; + pkt_print(urb, dev, pipe, buffer, transfer_len, setup, "SUB", usb_pipein(pipe)); +#else +// wait_ms(1); +#endif + if(!maxsize) + { + err("submit_common_message: pipesize for pipe %lx is zero", pipe); + return -1; + } + if(sohci_submit_job(urb, setup) < 0) + { + err("sohci_submit_job failed"); + return -1; + } +#if 0 + wait_ms(10); + /* ohci_dump_status(&gohci); */ +#endif + /* allow more time for a BULK device to react - some are slow */ +#define BULK_TO 5000 /* timeout in milliseconds */ + if(usb_pipebulk(pipe)) + timeout = BULK_TO; + else + timeout = 100; + /* wait for it to complete */ + while(1) + { + /* check whether the controller is done */ +#ifdef COLDFIRE /* no bus snooping on Coldfire */ +#ifdef NETWORK +#ifdef LWIP + extern unsigned long pxCurrentTCB, tid_TOS; + extern void flush_caches(void); + if(pxCurrentTCB != tid_TOS) + flush_caches(); + else +#endif /* LWIP */ +#endif /* NETWORK */ + asm(" .chip 68060\n cpusha DC\n .chip 5200\n"); +#endif /* COLDFIRE */ + stat = hc_interrupt(); + if(stat < 0) + { + stat = USB_ST_CRC_ERR; + break; + } + /* NOTE: since we are not interrupt driven in U-Boot and always + * handle only one URB at a time, we cannot assume the + * transaction finished on the first successful return from + * hc_interrupt().. unless the flag for current URB is set, + * meaning that all TD's to/from device got actually + * transferred and processed. If the current URB is not + * finished we need to re-iterate this loop so as + * hc_interrupt() gets called again as there needs to be some + * more TD's to process still */ + if((stat >= 0) && (stat != 0xff) && (urb->finished)) + { + /* 0xff is returned for an SF-interrupt */ + break; + } + if(--timeout) + { + wait_ms(1); + if(!urb->finished) + DEBUG_HOST("*"); + } + else + { + err("CTL:TIMEOUT "); + DEBUG_HOST("submit_common_msg: TO status %x\r\n", stat); + urb->finished = 1; + stat = USB_ST_CRC_ERR; + break; + } + } + dev->status = stat; + dev->act_len = transfer_len; +#if DEBUG_HOST_LAYER + pkt_print(urb, dev, pipe, buffer, transfer_len, setup, "RET(ctlr)", usb_pipein(pipe)); +#else +// wait_ms(1); +#endif + /* free TDs in urb_priv */ + if(!usb_pipeint(pipe)) + urb_free_priv(urb); + return 0; +} + +/* submit routines called from usb.c */ +int submit_bulk_msg(struct usb_device *dev, unsigned long pipe, void *buffer, int transfer_len) +{ + info("submit_bulk_msg"); + return submit_common_msg(dev, pipe, buffer, transfer_len, NULL, 0); +} + +int submit_control_msg(struct usb_device *dev, unsigned long pipe, void *buffer, int transfer_len, struct devrequest *setup) +{ + int maxsize = usb_maxpacket(dev, pipe); + info("submit_control_msg"); +#if DEBUG_HOST_LAYER + pkt_print(NULL, dev, pipe, buffer, transfer_len, setup, "SUB", usb_pipein(pipe)); +#else +// wait_ms(1); +#endif + if(!maxsize) + { + err("submit_control_message: pipesize for pipe %lx is zero", pipe); + return -1; + } + if(((pipe >> 8) & 0x7f) == gohci.rh.devnum) + { + gohci.rh.dev = dev; + /* root hub - redirect */ + return ohci_submit_rh_msg(dev, pipe, buffer, transfer_len, setup); + } + return submit_common_msg(dev, pipe, buffer, transfer_len, setup, 0); +} + +int submit_int_msg(struct usb_device *dev, unsigned long pipe, void *buffer, int transfer_len, int interval) +{ + info("submit_int_msg"); + return submit_common_msg(dev, pipe, buffer, transfer_len, NULL, interval); +} + +/*-------------------------------------------------------------------------* + * HC functions + *-------------------------------------------------------------------------*/ + +/* reset the HC and BUS */ + +static int hc_reset(ohci_t *ohci) +{ + int timeout = 30; + int smm_timeout = 50; /* 0,5 sec */ + DEBUG_HOST("%s\r\n", __FUNCTION__); + if(readl(&ohci->regs->control) & OHCI_CTRL_IR) + { + /* SMM owns the HC */ + writel(OHCI_OCR, &ohci->regs->cmdstatus);/* request ownership */ + info("USB HC TakeOver from SMM"); + while(readl(&ohci->regs->control) & OHCI_CTRL_IR) + { + wait_ms(10); + if(--smm_timeout == 0) + { + err("USB HC TakeOver failed!"); + return -1; + } + } + } + /* Disable HC interrupts */ + writel(OHCI_INTR_MIE, &ohci->regs->intrdisable); + DEBUG_HOST("USB HC reset_hc usb-%s: ctrl = 0x%X ;\r\n", ohci->slot_name, readl(&ohci->regs->control)); + /* Reset USB (needed by some controllers) */ + ohci->hc_control = 0; + writel(ohci->hc_control, &ohci->regs->control); + /* HC Reset requires max 10 us delay */ + writel(OHCI_HCR, &ohci->regs->cmdstatus); + while((readl(&ohci->regs->cmdstatus) & OHCI_HCR) != 0) + { + if(--timeout == 0) + { + err("USB HC reset timed out!"); + return -1; + } + udelay(1); + } + return 0; +} + +/*-------------------------------------------------------------------------*/ + +/* Start an OHCI controller, set the BUS operational + * enable interrupts + * connect the virtual root hub */ + +static int hc_start(ohci_t *ohci) +{ + __u32 mask; + unsigned int fminterval; + ohci->disabled = 1; + /* Tell the controller where the control and bulk lists are + * The lists are empty now. */ + writel(0, &ohci->regs->ed_controlhead); + writel(0, &ohci->regs->ed_bulkhead); + writel((__u32)ohci->hcca - ohci->dma_offset, &ohci->regs->hcca); /* a reset clears this */ + fminterval = 0x2edf; + writel((fminterval * 9) / 10, &ohci->regs->periodicstart); + fminterval |= ((((fminterval - 210) * 6) / 7) << 16); + writel(fminterval, &ohci->regs->fminterval); + writel(0x628, &ohci->regs->lsthresh); + /* start controller operations */ + ohci->hc_control = OHCI_CONTROL_INIT | OHCI_USB_OPER; + ohci->disabled = 0; + writel(ohci->hc_control, &ohci->regs->control); + /* disable all interrupts */ + mask = (OHCI_INTR_SO | OHCI_INTR_WDH | OHCI_INTR_SF | OHCI_INTR_RD | + OHCI_INTR_UE | OHCI_INTR_FNO | OHCI_INTR_RHSC | OHCI_INTR_OC | OHCI_INTR_MIE); + writel(mask, &ohci->regs->intrdisable); + /* clear all interrupts */ + mask &= ~OHCI_INTR_MIE; + writel(mask, &ohci->regs->intrstatus); + /* Choose the interrupts we care about now - but w/o MIE */ + mask = OHCI_INTR_RHSC | OHCI_INTR_UE | OHCI_INTR_WDH | OHCI_INTR_SO; + writel(mask, &ohci->regs->intrenable); +#ifdef OHCI_USE_NPS + /* required for AMD-756 and some Mac platforms */ + writel((roothub_a(ohci) | RH_A_NPS) & ~RH_A_PSM, &ohci->regs->roothub.a); + writel(RH_HS_LPSC, &ohci->regs->roothub.status); +#endif /* OHCI_USE_NPS */ +#define mdelay(n) ({unsigned long msec = (n); while (msec--) udelay(1000); }) + /* POTPGT delay is bits 24-31, in 2 ms units. */ + mdelay((roothub_a(ohci) >> 23) & 0x1fe); + /* connect the virtual root hub */ + ohci->rh.devnum = 0; + return 0; +} + +/*-------------------------------------------------------------------------*/ + +#ifdef CONFIG_USB_INTERRUPT_POLLING + +/* Poll USB interrupt. */ +void usb_event_poll(void) +{ + if(ohci_inited) + { +#ifdef COLDFIRE /* no bus snooping on Coldfire */ +#ifdef NETWORK +#ifdef LWIP + extern unsigned long pxCurrentTCB, tid_TOS; + extern void flush_caches(void); + if(pxCurrentTCB != tid_TOS) + flush_caches(); + else +#endif /* LWIP */ +#endif /* NETWORK */ + asm(" .chip 68060\n cpusha DC\n .chip 5200\n"); +#endif /* COLDFIRE */ + hc_interrupt(); + } +} + +#endif /* CONFIG_USB_INTERRUPT_POLLING */ + +/* an interrupt happens */ +static int hc_interrupt(void) +{ + ohci_t *ohci = &gohci; + struct ohci_regs *regs = ohci->regs; + int ints, stat = -1; + if((ohci->hcca->done_head != 0) && !(m32_swap(ohci->hcca->done_head) & 0x01)) + ints = OHCI_INTR_WDH; + else + { + ints = readl(®s->intrstatus); + if(ints == ~(u32)0) + { + ohci->disabled++; + err("%s device removed!", ohci->slot_name); + return -1; + } + else + { + ints &= readl(®s->intrenable); + if(ints == 0) + { +// DEBUG_HOST("hc_interrupt: returning..\r\n"); + return 0xff; + } + } + } + DEBUG_HOST("Interrupt: 0x%x frame: 0x%x", ints, le16_to_cpu(ohci->hcca->frame_no)); + if(ints & OHCI_INTR_RHSC) + { + stat = 0xff; + } + if(ints & OHCI_INTR_UE) + { + ohci->disabled++; + err("OHCI Unrecoverable Error, controller usb-%s disabled", ohci->slot_name); + /* e.g. due to PCI Master/Target Abort */ +#if DEBUG_HOST_LAYER + ohci_dump(ohci, 1); +#else +// wait_ms(1); +#endif + /* FIXME: be optimistic, hope that bug won't repeat often. */ + /* Make some non-interrupt context restart the controller. */ + /* Count and limit the retries though; either hardware or */ + /* software errors can go forever... */ + hc_reset(ohci); + return -1; + } + if(ints & OHCI_INTR_WDH) + { +// wait_ms(1); + writel(OHCI_INTR_WDH, ®s->intrdisable); + (void)readl(®s->intrdisable); /* flush */ + stat = dl_done_list(&gohci); + writel(OHCI_INTR_WDH, ®s->intrenable); + (void)readl(®s->intrdisable); /* flush */ + } + if(ints & OHCI_INTR_SO) + { + DEBUG_HOST("USB Schedule overrun\r\n"); + writel(OHCI_INTR_SO, ®s->intrenable); + stat = -1; + } + /* FIXME: this assumes SOF (1/ms) interrupts don't get lost... */ + if(ints & OHCI_INTR_SF) + { + unsigned int frame = m16_swap(ohci->hcca->frame_no) & 1; +// wait_ms(1); + writel(OHCI_INTR_SF, ®s->intrdisable); + if(ohci->ed_rm_list[frame] != NULL) + writel(OHCI_INTR_SF, ®s->intrenable); + stat = 0xff; + } + writel(ints, ®s->intrstatus); + return stat; +} + +#ifndef CONFIG_USB_INTERRUPT_POLLING + +static int handle_usb_interrupt(void) +{ +#ifdef COLDFIRE /* no bus snooping on Coldfire */ + extern void flush_caches(void); + conout_debug('.'); + flush_caches(); /* native interrupt */ +#endif /* COLDFIRE */ + gohci.irq = 0; + hc_interrupt(); + gohci.irq = -1; + return 1; /* clear interrupt, 0: disable interrupt */ +} + +void usb_enable_interrupt(int enable) +{ + ohci_t *ohci = &gohci; + if(enable) + writel(OHCI_INTR_MIE, &ohci->regs->intrenable); + else + writel(OHCI_INTR_MIE, &ohci->regs->intrdisable); +} + +#endif /* !CONFIG_USB_INTERRUPT_POLLING */ + +/*-------------------------------------------------------------------------*/ + +/*-------------------------------------------------------------------------*/ + +/* De-allocate all resources.. */ + +static void hc_release_ohci(ohci_t *ohci) +{ + DEBUG_HOST("USB HC release ohci usb-%s", ohci->slot_name); + if(!ohci->disabled) + hc_reset(ohci); +} + +static void hc_free_buffers(ohci_t *ohci) +{ + if(ohci->td_unaligned != NULL) + { + usb_free(ohci->td_unaligned); + ohci->td_unaligned = NULL; + } + if(ohci->ohci_dev_unaligned != NULL) + { + usb_free(ohci->ohci_dev_unaligned); + ohci->ohci_dev_unaligned = NULL; + } + if(ohci->hcca_unaligned != NULL) + { + usb_free(ohci->hcca_unaligned); + ohci->hcca_unaligned = NULL; + } +} + +/*-------------------------------------------------------------------------*/ + +/* + * low level initalisation routine, called from usb.c + */ +int usb_lowlevel_init(long handle, const struct pci_device_id *ent) +{ + char buf[16]; + unsigned long usb_base_addr = 0xFFFFFFFF; + PCI_RSC_DESC *pci_rsc_desc; +#ifdef PCI_XBIOS + pci_rsc_desc = (PCI_RSC_DESC *)get_resource(handle); /* USB OHCI */ +#else + COOKIE *p = get_cookie('_PCI'); + PCI_COOKIE *bios_cookie = (PCI_COOKIE *)p->v.l; + if(bios_cookie == NULL) /* faster than XBIOS calls */ + return(-1); + tab_funcs_pci = &bios_cookie->routine[0]; + pci_rsc_desc = (PCI_RSC_DESC *)Get_resource(handle); /* USB OHCI */ +#endif + if(handle && (ent != NULL)) + { + memset(&gohci, 0, sizeof(ohci_t)); + gohci.handle = handle; + } + else if(!gohci.handle) /* for restart USB cmd */ + return(-1); + /* this must be aligned to a 256 byte boundary */ + gohci.hcca_unaligned = (struct ohci_hcca *)usb_malloc(sizeof(struct ohci_hcca) + 256); + if(gohci.hcca_unaligned == NULL) + { + err("HCCA malloc failed"); + return -1; + } + /* align the storage */ + gohci.hcca = (struct ohci_hcca *)(((unsigned long)gohci.hcca_unaligned + 255) & ~255); + memset(gohci.hcca, 0, sizeof(struct ohci_hcca)); + info("aligned ghcca 0x%p", gohci.hcca); + gohci.ohci_dev_unaligned = (struct ohci_device *)usb_malloc(sizeof(struct ohci_device) + 8); + if(gohci.ohci_dev_unaligned == NULL) + { + err("EDs malloc failed"); + hc_free_buffers(&gohci); + return -1; + } + gohci.ohci_dev = (struct ohci_device *)(((unsigned long)gohci.ohci_dev_unaligned + 7) & ~7); + memset(gohci.ohci_dev, 0, sizeof(struct ohci_device)); + info("aligned EDs 0x%p", gohci.ohci_dev); + gohci.td_unaligned = (td_t *)usb_malloc(sizeof(td_t) * (NUM_TD + 1)); + if(gohci.td_unaligned == NULL) + { + err("TDs malloc failed"); + hc_free_buffers(&gohci); + return -1; + } + ptd = (td_t *)(((unsigned long)gohci.td_unaligned + 7) & ~7); + memset(ptd, 0, sizeof(td_t) * NUM_TD); + info("aligned TDs 0x%p", ptd); + gohci.disabled = 1; + gohci.sleeping = 0; + gohci.irq = -1; + if((long)pci_rsc_desc >= 0) + { + unsigned short flags; + do + { + DEBUG_HOST("PCI USB descriptors: flags 0x%08x start 0x%08x \r\n offset 0x%08x dmaoffset 0x%08x length 0x%08x", + pci_rsc_desc->flags, pci_rsc_desc->start, pci_rsc_desc->offset, pci_rsc_desc->dmaoffset, pci_rsc_desc->length); + if(!(pci_rsc_desc->flags & FLG_IO)) + { + if(usb_base_addr == 0xFFFFFFFF) + { + usb_base_addr = pci_rsc_desc->start; + gohci.regs = (void *)(pci_rsc_desc->offset + pci_rsc_desc->start); + gohci.dma_offset = pci_rsc_desc->dmaoffset; + if((pci_rsc_desc->flags & FLG_ENDMASK) == ORD_MOTOROLA) + gohci.big_endian = 0; /* host bridge make swapping intel -> motorola */ + else + gohci.big_endian = 1; /* driver must swapping intel -> motorola */ + } + } + flags = pci_rsc_desc->flags; + pci_rsc_desc += (unsigned long)pci_rsc_desc->next; + } + while(!(flags & FLG_LAST)); + } + else + { + hc_free_buffers(&gohci); + return(-1); /* get_resource error */ + } + if(usb_base_addr == 0xFFFFFFFF) + { + hc_free_buffers(&gohci); + return(-1); + } + if(handle && (ent != NULL)) + { + switch(ent->vendor) + { + case PCI_VENDOR_ID_AL: gohci.slot_name = "uli1575"; break; + case PCI_VENDOR_ID_NEC: gohci.slot_name = "uPD720101"; break; + case PCI_VENDOR_ID_PHILIPS: gohci.slot_name = "isp1561"; break; + default: gohci.slot_name = "generic"; break; + } + } + (void) Cconws("OHCI usb-"); + (void) Cconws(gohci.slot_name); + (void) Cconws(", regs address 0x"); + ltoa(buf, (long)gohci.regs, 16); + (void) Cconws(buf); + (void) Cconws(", PCI handle 0x"); + ltoa(buf, handle, 16); + (void) Cconws(buf); + (void) Cconws("\r\n"); + gohci.flags = 0; + if(hc_reset(&gohci) < 0) + { + err("Can't reset usb-%s", gohci.slot_name); + hc_release_ohci(&gohci); + hc_free_buffers(&gohci); + return -1; + } + if(hc_start(&gohci) < 0) + { + err("Can't start usb-%s", gohci.slot_name); + hc_release_ohci(&gohci); + hc_free_buffers(&gohci); + /* Initialization failed */ + return -1; + } +#if DEBUG_HOST_LAYER + ohci_dump(&gohci, 1); +#else +// wait_ms(1); +#endif +#ifndef CONFIG_USB_INTERRUPT_POLLING +#ifdef PCI_XBIOS + hook_interrupt(handle, handle_usb_interrupt, NULL); +#else + Hook_interrupt(handle, (void *)handle_usb_interrupt, NULL); +#endif /* PCI_BIOS */ +#endif /* CONFIG_USB_INTERRUPT_POLLING */ + ohci_inited = 1; + return 0; +} + +int usb_lowlevel_stop(void) +{ + /* this gets called really early - before the controller has */ + /* even been initialized! */ + if(!ohci_inited) + return 0; +#ifndef CONFIG_USB_INTERRUPT_POLLING +#ifdef PCI_XBIOS + unhook_interrupt(gohci.handle); +#else + Unhook_interrupt(gohci.handle); +#endif /* PCI_BIOS */ +#endif /* CONFIG_USB_INTERRUPT_POLLING */ + /* call hc_release_ohci() here ? */ + hc_reset(&gohci); + hc_free_buffers(&gohci); + /* This driver is no longer initialised. It needs a new low-level + * init (board/cpu) before it can be used again. */ + ohci_inited = 0; + return 0; +} diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/host/ohci-pci/ohci.h b/BaS_codewarrior/FireBee/trunk/usb/store/host/ohci-pci/ohci.h new file mode 100644 index 0000000..b07e3b2 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/host/ohci-pci/ohci.h @@ -0,0 +1,457 @@ +/* + * URB OHCI HCD (Host Controller Driver) for USB. + * + * (C) Copyright 1999 Roman Weissgaerber + * (C) Copyright 2000-2001 David Brownell + * + * usb-ohci.h + */ + +static int cc_to_error[16] = { + +/* mapping of the OHCI CC status to error codes */ + /* No Error */ 0, + /* CRC Error */ USB_ST_CRC_ERR, + /* Bit Stuff */ USB_ST_BIT_ERR, + /* Data Togg */ USB_ST_CRC_ERR, + /* Stall */ USB_ST_STALLED, + /* DevNotResp */ -1, + /* PIDCheck */ USB_ST_BIT_ERR, + /* UnExpPID */ USB_ST_BIT_ERR, + /* DataOver */ USB_ST_BUF_ERR, + /* DataUnder */ USB_ST_BUF_ERR, + /* reservd */ -1, + /* reservd */ -1, + /* BufferOver */ USB_ST_BUF_ERR, + /* BuffUnder */ USB_ST_BUF_ERR, + /* Not Access */ -1, + /* Not Access */ -1 +}; + +static const char *cc_to_string[16] = { + "No Error", + "CRC: Last data packet from endpoint contained a CRC error.", + "BITSTUFFING: Last data packet from endpoint contained a bit stuffing violation", + "DATATOGGLEMISMATCH: Last packet from endpoint had data toggle PID that did not match the expected value.", + "STALL: TD was moved to the Done Queue because the endpoint returned a STALL PID", + "DEVICENOTRESPONDING: Device did not respond to token (IN) or did not provide a handshake (OUT)", + "PIDCHECKFAILURE: Check bits on PID from endpoint failed on data PID (IN) or handshake (OUT)", + "UNEXPECTEDPID: Receive PID was not valid when encountered or PID value is not defined.", + "DATAOVERRUN: The amount of data returned by the endpoint exceeded either the size of the maximum data packet allowed from the endpoint (found in MaximumPacketSize field of ED) or the remaining buffer size.", + "DATAUNDERRUN: The endpoint returned less than MaximumPacketSize and that amount was not sufficient to fill the specified buffer", + "reserved1", + "reserved2", + "BUFFEROVERRUN: During an IN, HC received data from endpoint faster than it could be written to system memory", + "BUFFERUNDERRUN: During an OUT, HC could not retrieve data from system memory fast enough to keep up with data USB data rate.", + "NOT ACCESSED: This code is set by software before the TD is placed on a list to be processed by the HC.(1)", + "NOT ACCESSED: This code is set by software before the TD is placed on a list to be processed by the HC.(2)", +}; + +/* ED States */ + +#define ED_NEW 0x00 +#define ED_UNLINK 0x01 +#define ED_OPER 0x02 +#define ED_DEL 0x04 +#define ED_URB_DEL 0x08 + +/* usb_ohci_ed */ +struct ed { + __u32 hwINFO; + __u32 hwTailP; + __u32 hwHeadP; + __u32 hwNextED; + + struct ed *ed_prev; + __u8 int_period; + __u8 int_branch; + __u8 int_load; + __u8 int_interval; + __u8 state; + __u8 type; + __u16 last_iso; + struct ed *ed_rm_list; + + struct usb_device *usb_dev; + void *purb; + __u32 unused[2]; +} __attribute__((aligned(16))); +typedef struct ed ed_t; + + +/* TD info field */ +#define TD_CC 0xf0000000 +#define TD_CC_GET(td_p) ((td_p >>28) & 0x0f) +#define TD_CC_SET(td_p, cc) (td_p) = ((td_p) & 0x0fffffff) | (((cc) & 0x0f) << 28) +#define TD_EC 0x0C000000 +#define TD_T 0x03000000 +#define TD_T_DATA0 0x02000000 +#define TD_T_DATA1 0x03000000 +#define TD_T_TOGGLE 0x00000000 +#define TD_R 0x00040000 +#define TD_DI 0x00E00000 +#define TD_DI_SET(X) (((X) & 0x07)<< 21) +#define TD_DP 0x00180000 +#define TD_DP_SETUP 0x00000000 +#define TD_DP_IN 0x00100000 +#define TD_DP_OUT 0x00080000 + +#define TD_ISO 0x00010000 +#define TD_DEL 0x00020000 + +/* CC Codes */ +#define TD_CC_NOERROR 0x00 +#define TD_CC_CRC 0x01 +#define TD_CC_BITSTUFFING 0x02 +#define TD_CC_DATATOGGLEM 0x03 +#define TD_CC_STALL 0x04 +#define TD_DEVNOTRESP 0x05 +#define TD_PIDCHECKFAIL 0x06 +#define TD_UNEXPECTEDPID 0x07 +#define TD_DATAOVERRUN 0x08 +#define TD_DATAUNDERRUN 0x09 +#define TD_BUFFEROVERRUN 0x0C +#define TD_BUFFERUNDERRUN 0x0D +#define TD_NOTACCESSED 0x0F + + +#define MAXPSW 1 + +struct td { + __u32 hwINFO; + __u32 hwCBP; /* Current Buffer Pointer */ + __u32 hwNextTD; /* Next TD Pointer */ + __u32 hwBE; /* Memory Buffer End Pointer */ + + __u16 hwPSW[MAXPSW]; + __u8 unused; + __u8 index; + struct ed *ed; + struct td *next_dl_td; + struct usb_device *usb_dev; + int transfer_len; + __u32 data; + + __u32 unused2[2]; +} __attribute__((aligned(32))); +typedef struct td td_t; + +#define OHCI_ED_SKIP (1 << 14) + +/* + * The HCCA (Host Controller Communications Area) is a 256 byte + * structure defined in the OHCI spec. that the host controller is + * told the base address of. It must be 256-byte aligned. + */ + +#define NUM_INTS 32 /* part of the OHCI standard */ +struct ohci_hcca { + __u32 int_table[NUM_INTS]; /* Interrupt ED table */ +#if defined(CONFIG_MPC5200) + __u16 pad1; /* set to 0 on each frame_no change */ + __u16 frame_no; /* current frame number */ +#else + __u16 frame_no; /* current frame number */ + __u16 pad1; /* set to 0 on each frame_no change */ +#endif + __u32 done_head; /* info returned for an interrupt */ + u8 reserved_for_hc[116]; +} __attribute__((aligned(256))); + + +/* + * Maximum number of root hub ports. + */ +#ifndef CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS +# error "CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS undefined!" +#endif + +/* + * This is the structure of the OHCI controller's memory mapped I/O + * region. This is Memory Mapped I/O. You must use the readl() and + * writel() macros defined in asm/io.h to access these!! + */ +struct ohci_regs { + /* control and status registers */ + __u32 revision; + __u32 control; + __u32 cmdstatus; + __u32 intrstatus; + __u32 intrenable; + __u32 intrdisable; + /* memory pointers */ + __u32 hcca; + __u32 ed_periodcurrent; + __u32 ed_controlhead; + __u32 ed_controlcurrent; + __u32 ed_bulkhead; + __u32 ed_bulkcurrent; + __u32 donehead; + /* frame counters */ + __u32 fminterval; + __u32 fmremaining; + __u32 fmnumber; + __u32 periodicstart; + __u32 lsthresh; + /* Root hub ports */ + struct ohci_roothub_regs { + __u32 a; + __u32 b; + __u32 status; + __u32 portstatus[CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS]; + } roothub; +} __attribute__((aligned(32))); + +/* Some EHCI controls */ +#define EHCI_USBCMD_OFF 0x20 +#define EHCI_USBCMD_HCRESET (1 << 1) + +/* OHCI CONTROL AND STATUS REGISTER MASKS */ + +/* + * HcControl (control) register masks + */ +#define OHCI_CTRL_CBSR (3 << 0) /* control/bulk service ratio */ +#define OHCI_CTRL_PLE (1 << 2) /* periodic list enable */ +#define OHCI_CTRL_IE (1 << 3) /* isochronous enable */ +#define OHCI_CTRL_CLE (1 << 4) /* control list enable */ +#define OHCI_CTRL_BLE (1 << 5) /* bulk list enable */ +#define OHCI_CTRL_HCFS (3 << 6) /* host controller functional state */ +#define OHCI_CTRL_IR (1 << 8) /* interrupt routing */ +#define OHCI_CTRL_RWC (1 << 9) /* remote wakeup connected */ +#define OHCI_CTRL_RWE (1 << 10) /* remote wakeup enable */ + +/* pre-shifted values for HCFS */ +# define OHCI_USB_RESET (0 << 6) +# define OHCI_USB_RESUME (1 << 6) +# define OHCI_USB_OPER (2 << 6) +# define OHCI_USB_SUSPEND (3 << 6) + +/* + * HcCommandStatus (cmdstatus) register masks + */ +#define OHCI_HCR (1 << 0) /* host controller reset */ +#define OHCI_CLF (1 << 1) /* control list filled */ +#define OHCI_BLF (1 << 2) /* bulk list filled */ +#define OHCI_OCR (1 << 3) /* ownership change request */ +#define OHCI_SOC (3 << 16) /* scheduling overrun count */ + +/* + * masks used with interrupt registers: + * HcInterruptStatus (intrstatus) + * HcInterruptEnable (intrenable) + * HcInterruptDisable (intrdisable) + */ +#define OHCI_INTR_SO (1 << 0) /* scheduling overrun */ +#define OHCI_INTR_WDH (1 << 1) /* writeback of done_head */ +#define OHCI_INTR_SF (1 << 2) /* start frame */ +#define OHCI_INTR_RD (1 << 3) /* resume detect */ +#define OHCI_INTR_UE (1 << 4) /* unrecoverable error */ +#define OHCI_INTR_FNO (1 << 5) /* frame number overflow */ +#define OHCI_INTR_RHSC (1 << 6) /* root hub status change */ +#define OHCI_INTR_OC (1 << 30) /* ownership change */ +#define OHCI_INTR_MIE (1 << 31) /* master interrupt enable */ + + +/* Virtual Root HUB */ +struct virt_root_hub { + int devnum; /* Address of Root Hub endpoint */ + void *dev; /* was urb */ + void *int_addr; + int send; + int interval; +}; + +/* USB HUB CONSTANTS (not OHCI-specific; see hub.h) */ + +/* destination of request */ +#define RH_INTERFACE 0x01 +#define RH_ENDPOINT 0x02 +#define RH_OTHER 0x03 + +#define RH_CLASS 0x20 +#define RH_VENDOR 0x40 + +/* Requests: bRequest << 8 | bmRequestType */ +#define RH_GET_STATUS 0x0080 +#define RH_CLEAR_FEATURE 0x0100 +#define RH_SET_FEATURE 0x0300 +#define RH_SET_ADDRESS 0x0500 +#define RH_GET_DESCRIPTOR 0x0680 +#define RH_SET_DESCRIPTOR 0x0700 +#define RH_GET_CONFIGURATION 0x0880 +#define RH_SET_CONFIGURATION 0x0900 +#define RH_GET_STATE 0x0280 +#define RH_GET_INTERFACE 0x0A80 +#define RH_SET_INTERFACE 0x0B00 +#define RH_SYNC_FRAME 0x0C80 +/* Our Vendor Specific Request */ +#define RH_SET_EP 0x2000 + + +/* Hub port features */ +#define RH_PORT_CONNECTION 0x00 +#define RH_PORT_ENABLE 0x01 +#define RH_PORT_SUSPEND 0x02 +#define RH_PORT_OVER_CURRENT 0x03 +#define RH_PORT_RESET 0x04 +#define RH_PORT_POWER 0x08 +#define RH_PORT_LOW_SPEED 0x09 + +#define RH_C_PORT_CONNECTION 0x10 +#define RH_C_PORT_ENABLE 0x11 +#define RH_C_PORT_SUSPEND 0x12 +#define RH_C_PORT_OVER_CURRENT 0x13 +#define RH_C_PORT_RESET 0x14 + +/* Hub features */ +#define RH_C_HUB_LOCAL_POWER 0x00 +#define RH_C_HUB_OVER_CURRENT 0x01 + +#define RH_DEVICE_REMOTE_WAKEUP 0x00 +#define RH_ENDPOINT_STALL 0x01 + +#define RH_ACK 0x01 +#define RH_REQ_ERR -1 +#define RH_NACK 0x00 + + +/* OHCI ROOT HUB REGISTER MASKS */ + +/* roothub.portstatus [i] bits */ +#define RH_PS_CCS 0x00000001 /* current connect status */ +#define RH_PS_PES 0x00000002 /* port enable status*/ +#define RH_PS_PSS 0x00000004 /* port suspend status */ +#define RH_PS_POCI 0x00000008 /* port over current indicator */ +#define RH_PS_PRS 0x00000010 /* port reset status */ +#define RH_PS_PPS 0x00000100 /* port power status */ +#define RH_PS_LSDA 0x00000200 /* low speed device attached */ +#define RH_PS_CSC 0x00010000 /* connect status change */ +#define RH_PS_PESC 0x00020000 /* port enable status change */ +#define RH_PS_PSSC 0x00040000 /* port suspend status change */ +#define RH_PS_OCIC 0x00080000 /* over current indicator change */ +#define RH_PS_PRSC 0x00100000 /* port reset status change */ + +/* roothub.status bits */ +#define RH_HS_LPS 0x00000001 /* local power status */ +#define RH_HS_OCI 0x00000002 /* over current indicator */ +#define RH_HS_DRWE 0x00008000 /* device remote wakeup enable */ +#define RH_HS_LPSC 0x00010000 /* local power status change */ +#define RH_HS_OCIC 0x00020000 /* over current indicator change */ +#define RH_HS_CRWE 0x80000000 /* clear remote wakeup enable */ + +/* roothub.b masks */ +#define RH_B_DR 0x0000ffff /* device removable flags */ +#define RH_B_PPCM 0xffff0000 /* port power control mask */ + +/* roothub.a masks */ +#define RH_A_NDP (0xff << 0) /* number of downstream ports */ +#define RH_A_PSM (1 << 8) /* power switching mode */ +#define RH_A_NPS (1 << 9) /* no power switching */ +#define RH_A_DT (1 << 10) /* device type (mbz) */ +#define RH_A_OCPM (1 << 11) /* over current protection mode */ +#define RH_A_NOCP (1 << 12) /* no over current protection */ +#define RH_A_POTPGT (0xff << 24) /* power on to power good time */ + +/* urb */ +#define N_URB_TD 48 +typedef struct +{ + ed_t *ed; + __u16 length; /* number of tds associated with this request */ + __u16 td_cnt; /* number of tds already serviced */ + struct usb_device *dev; + int state; + unsigned long pipe; + void *transfer_buffer; + int transfer_buffer_length; + int interval; + int actual_length; + int finished; + td_t *td[N_URB_TD]; /* list pointer to all corresponding TDs associated with this request */ +} urb_priv_t; +#define URB_DEL 1 + +#define NUM_EDS 8 /* num of preallocated endpoint descriptors */ + +struct ohci_device { + ed_t ed[NUM_EDS]; + int ed_cnt; +}; + +/* + * This is the full ohci controller description + * + * Note how the "proper" USB information is just + * a subset of what the full implementation needs. (Linus) + */ + +typedef struct ohci { + long handle; /* PCI BIOS */ + int big_endian; /* PCI BIOS */ + struct ohci_hcca *hcca_unaligned; + struct ohci_hcca *hcca; /* hcca */ + td_t *td_unaligned; + struct ohci_device *ohci_dev_unaligned; + /* this allocates EDs for all possible endpoints */ + struct ohci_device *ohci_dev; + /*dma_addr_t hcca_dma;*/ + + int irq; + int disabled; /* e.g. got a UE, we're hung */ + int sleeping; + unsigned long flags; /* for HC bugs */ + + unsigned long dma_offset; + struct ohci_regs *regs; /* OHCI controller's memory */ + + int ohci_int_load[32]; /* load of the 32 Interrupt Chains (for load balancing)*/ + ed_t *ed_rm_list[2]; /* lists of all endpoints to be removed */ + ed_t *ed_bulktail; /* last endpoint of bulk list */ + ed_t *ed_controltail; /* last endpoint of control list */ + int intrstatus; + __u32 hc_control; /* copy of the hc control reg */ + struct usb_device *dev[32]; + struct virt_root_hub rh; + + const char *slot_name; +} ohci_t; + +/* hcd */ +/* endpoint */ +static int ep_link(ohci_t * ohci, ed_t * ed); +static int ep_unlink(ohci_t * ohci, ed_t * ed); +static ed_t * ep_add_ed(struct usb_device * usb_dev, unsigned long pipe, + int interval, int load); + +/*-------------------------------------------------------------------------*/ + +/* we need more TDs than EDs */ +#define NUM_TD 64 + +/* pointers to aligned storage */ +td_t *ptd; + +/* TDs ... */ +static inline struct td *td_alloc(struct usb_device *usb_dev) +{ + int i; + struct td *td; + td = NULL; + for(i = 0; i < NUM_TD; i++) + { + if(ptd[i].usb_dev == NULL) + { + td = &ptd[i]; + td->usb_dev = usb_dev; + break; + } + } + return td; +} + +static inline void ed_free(struct ed *ed) +{ + ed->usb_dev = NULL; +} + diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/host/ohci-pci/pci_ids.h b/BaS_codewarrior/FireBee/trunk/usb/store/host/ohci-pci/pci_ids.h new file mode 100644 index 0000000..29ea2de --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/host/ohci-pci/pci_ids.h @@ -0,0 +1,2613 @@ +/* + * PCI Class, Vendor and Device IDs + * + * Please keep sorted. + */ + +/* Device classes and subclasses */ + +#define PCI_CLASS_NOT_DEFINED 0x0000 +#define PCI_CLASS_NOT_DEFINED_VGA 0x0001 + +#define PCI_BASE_CLASS_STORAGE 0x01 +#define PCI_CLASS_STORAGE_SCSI 0x0100 +#define PCI_CLASS_STORAGE_IDE 0x0101 +#define PCI_CLASS_STORAGE_FLOPPY 0x0102 +#define PCI_CLASS_STORAGE_IPI 0x0103 +#define PCI_CLASS_STORAGE_RAID 0x0104 +#define PCI_CLASS_STORAGE_OTHER 0x0180 + +#define PCI_BASE_CLASS_NETWORK 0x02 +#define PCI_CLASS_NETWORK_ETHERNET 0x0200 +#define PCI_CLASS_NETWORK_TOKEN_RING 0x0201 +#define PCI_CLASS_NETWORK_FDDI 0x0202 +#define PCI_CLASS_NETWORK_ATM 0x0203 +#define PCI_CLASS_NETWORK_OTHER 0x0280 + +#define PCI_BASE_CLASS_DISPLAY 0x03 +#define PCI_CLASS_DISPLAY_VGA 0x0300 +#define PCI_CLASS_DISPLAY_XGA 0x0301 +#define PCI_CLASS_DISPLAY_3D 0x0302 +#define PCI_CLASS_DISPLAY_OTHER 0x0380 + +#define PCI_BASE_CLASS_MULTIMEDIA 0x04 +#define PCI_CLASS_MULTIMEDIA_VIDEO 0x0400 +#define PCI_CLASS_MULTIMEDIA_AUDIO 0x0401 +#define PCI_CLASS_MULTIMEDIA_PHONE 0x0402 +#define PCI_CLASS_MULTIMEDIA_OTHER 0x0480 + +#define PCI_BASE_CLASS_MEMORY 0x05 +#define PCI_CLASS_MEMORY_RAM 0x0500 +#define PCI_CLASS_MEMORY_FLASH 0x0501 +#define PCI_CLASS_MEMORY_OTHER 0x0580 + +#define PCI_BASE_CLASS_BRIDGE 0x06 +#define PCI_CLASS_BRIDGE_HOST 0x0600 +#define PCI_CLASS_BRIDGE_ISA 0x0601 +#define PCI_CLASS_BRIDGE_EISA 0x0602 +#define PCI_CLASS_BRIDGE_MC 0x0603 +#define PCI_CLASS_BRIDGE_PCI 0x0604 +#define PCI_CLASS_BRIDGE_PCMCIA 0x0605 +#define PCI_CLASS_BRIDGE_NUBUS 0x0606 +#define PCI_CLASS_BRIDGE_CARDBUS 0x0607 +#define PCI_CLASS_BRIDGE_RACEWAY 0x0608 +#define PCI_CLASS_BRIDGE_OTHER 0x0680 + +#define PCI_BASE_CLASS_COMMUNICATION 0x07 +#define PCI_CLASS_COMMUNICATION_SERIAL 0x0700 +#define PCI_CLASS_COMMUNICATION_PARALLEL 0x0701 +#define PCI_CLASS_COMMUNICATION_MULTISERIAL 0x0702 +#define PCI_CLASS_COMMUNICATION_MODEM 0x0703 +#define PCI_CLASS_COMMUNICATION_OTHER 0x0780 + +#define PCI_BASE_CLASS_SYSTEM 0x08 +#define PCI_CLASS_SYSTEM_PIC 0x0800 +#define PCI_CLASS_SYSTEM_DMA 0x0801 +#define PCI_CLASS_SYSTEM_TIMER 0x0802 +#define PCI_CLASS_SYSTEM_RTC 0x0803 +#define PCI_CLASS_SYSTEM_PCI_HOTPLUG 0x0804 +#define PCI_CLASS_SYSTEM_OTHER 0x0880 + +#define PCI_BASE_CLASS_INPUT 0x09 +#define PCI_CLASS_INPUT_KEYBOARD 0x0900 +#define PCI_CLASS_INPUT_PEN 0x0901 +#define PCI_CLASS_INPUT_MOUSE 0x0902 +#define PCI_CLASS_INPUT_SCANNER 0x0903 +#define PCI_CLASS_INPUT_GAMEPORT 0x0904 +#define PCI_CLASS_INPUT_OTHER 0x0980 + +#define PCI_BASE_CLASS_DOCKING 0x0a +#define PCI_CLASS_DOCKING_GENERIC 0x0a00 +#define PCI_CLASS_DOCKING_OTHER 0x0a80 + +#define PCI_BASE_CLASS_PROCESSOR 0x0b +#define PCI_CLASS_PROCESSOR_386 0x0b00 +#define PCI_CLASS_PROCESSOR_486 0x0b01 +#define PCI_CLASS_PROCESSOR_PENTIUM 0x0b02 +#define PCI_CLASS_PROCESSOR_ALPHA 0x0b10 +#define PCI_CLASS_PROCESSOR_POWERPC 0x0b20 +#define PCI_CLASS_PROCESSOR_MIPS 0x0b30 +#define PCI_CLASS_PROCESSOR_CO 0x0b40 + +#define PCI_BASE_CLASS_SERIAL 0x0c +#define PCI_CLASS_SERIAL_FIREWIRE 0x0c00 +#define PCI_CLASS_SERIAL_ACCESS 0x0c01 +#define PCI_CLASS_SERIAL_SSA 0x0c02 +#define PCI_CLASS_SERIAL_USB 0x0c03 +/* added code to find different types of USB controllers */ +#define PCI_CLASS_SERIAL_USB_UHCI 0x0c0300 +#define PCI_CLASS_SERIAL_USB_OHCI 0x0c0310 +#define PCI_CLASS_SERIAL_USB_EHCI 0x0c0320 +#define PCI_CLASS_SERIAL_FIBER 0x0c04 +#define PCI_CLASS_SERIAL_SMBUS 0x0c05 + +#define PCI_BASE_CLASS_INTELLIGENT 0x0e +#define PCI_CLASS_INTELLIGENT_I2O 0x0e00 + +#define PCI_BASE_CLASS_SATELLITE 0x0f +#define PCI_CLASS_SATELLITE_TV 0x0f00 +#define PCI_CLASS_SATELLITE_AUDIO 0x0f01 +#define PCI_CLASS_SATELLITE_VOICE 0x0f03 +#define PCI_CLASS_SATELLITE_DATA 0x0f04 + +#define PCI_BASE_CLASS_CRYPT 0x10 +#define PCI_CLASS_CRYPT_NETWORK 0x1000 +#define PCI_CLASS_CRYPT_ENTERTAINMENT 0x1001 +#define PCI_CLASS_CRYPT_OTHER 0x1080 + +#define PCI_BASE_CLASS_SIGNAL_PROCESSING 0x11 +#define PCI_CLASS_SP_DPIO 0x1100 +#define PCI_CLASS_SP_OTHER 0x1180 + +#define PCI_CLASS_OTHERS 0xff + +/* Vendors and devices. Sort key: vendor first, device next. */ + +#define PCI_VENDOR_ID_DYNALINK 0x0675 +#define PCI_DEVICE_ID_DYNALINK_IS64PH 0x1702 + +#define PCI_VENDOR_ID_BERKOM 0x0871 +#define PCI_DEVICE_ID_BERKOM_A1T 0xffa1 +#define PCI_DEVICE_ID_BERKOM_T_CONCEPT 0xffa2 +#define PCI_DEVICE_ID_BERKOM_A4T 0xffa4 +#define PCI_DEVICE_ID_BERKOM_SCITEL_QUADRO 0xffa8 + +#define PCI_VENDOR_ID_COMPAQ 0x0e11 +#define PCI_DEVICE_ID_COMPAQ_TOKENRING 0x0508 +#define PCI_DEVICE_ID_COMPAQ_1280 0x3033 +#define PCI_DEVICE_ID_COMPAQ_TRIFLEX 0x4000 +#define PCI_DEVICE_ID_COMPAQ_6010 0x6010 +#define PCI_DEVICE_ID_COMPAQ_TACHYON 0xa0fc +#define PCI_DEVICE_ID_COMPAQ_SMART2P 0xae10 +#define PCI_DEVICE_ID_COMPAQ_NETEL100 0xae32 +#define PCI_DEVICE_ID_COMPAQ_NETEL10 0xae34 +#define PCI_DEVICE_ID_COMPAQ_TRIFLEX_IDE 0xae33 +#define PCI_DEVICE_ID_COMPAQ_NETFLEX3I 0xae35 +#define PCI_DEVICE_ID_COMPAQ_NETEL100D 0xae40 +#define PCI_DEVICE_ID_COMPAQ_NETEL100PI 0xae43 +#define PCI_DEVICE_ID_COMPAQ_NETEL100I 0xb011 +#define PCI_DEVICE_ID_COMPAQ_CISS 0xb060 +#define PCI_DEVICE_ID_COMPAQ_CISSB 0xb178 +#define PCI_DEVICE_ID_COMPAQ_CISSC 0x46 +#define PCI_DEVICE_ID_COMPAQ_THUNDER 0xf130 +#define PCI_DEVICE_ID_COMPAQ_NETFLEX3B 0xf150 + +#define PCI_VENDOR_ID_NCR 0x1000 +#define PCI_VENDOR_ID_LSI_LOGIC 0x1000 +#define PCI_DEVICE_ID_NCR_53C810 0x0001 +#define PCI_DEVICE_ID_NCR_53C820 0x0002 +#define PCI_DEVICE_ID_NCR_53C825 0x0003 +#define PCI_DEVICE_ID_NCR_53C815 0x0004 +#define PCI_DEVICE_ID_LSI_53C810AP 0x0005 +#define PCI_DEVICE_ID_NCR_53C860 0x0006 +#define PCI_DEVICE_ID_LSI_53C1510 0x000a +#define PCI_DEVICE_ID_NCR_53C896 0x000b +#define PCI_DEVICE_ID_NCR_53C895 0x000c +#define PCI_DEVICE_ID_NCR_53C885 0x000d +#define PCI_DEVICE_ID_NCR_53C875 0x000f +#define PCI_DEVICE_ID_NCR_53C1510 0x0010 +#define PCI_DEVICE_ID_LSI_53C895A 0x0012 +#define PCI_DEVICE_ID_LSI_53C875A 0x0013 +#define PCI_DEVICE_ID_LSI_53C1010_33 0x0020 +#define PCI_DEVICE_ID_LSI_53C1010_66 0x0021 +#define PCI_DEVICE_ID_LSI_53C1030 0x0030 +#define PCI_DEVICE_ID_LSI_1030_53C1035 0x0032 +#define PCI_DEVICE_ID_LSI_53C1035 0x0040 +#define PCI_DEVICE_ID_NCR_53C875J 0x008f +#define PCI_DEVICE_ID_LSI_FC909 0x0621 +#define PCI_DEVICE_ID_LSI_FC929 0x0622 +#define PCI_DEVICE_ID_LSI_FC929_LAN 0x0623 +#define PCI_DEVICE_ID_LSI_FC919 0x0624 +#define PCI_DEVICE_ID_LSI_FC919_LAN 0x0625 +#define PCI_DEVICE_ID_LSI_FC929X 0x0626 +#define PCI_DEVICE_ID_LSI_FC939X 0x0642 +#define PCI_DEVICE_ID_LSI_FC949X 0x0640 +#define PCI_DEVICE_ID_LSI_FC919X 0x0628 +#define PCI_DEVICE_ID_NCR_YELLOWFIN 0x0701 +#define PCI_DEVICE_ID_LSI_61C102 0x0901 +#define PCI_DEVICE_ID_LSI_63C815 0x1000 +#define PCI_DEVICE_ID_LSI_SAS1064 0x0050 +#define PCI_DEVICE_ID_LSI_SAS1066 0x005E +#define PCI_DEVICE_ID_LSI_SAS1068 0x0054 +#define PCI_DEVICE_ID_LSI_SAS1064A 0x005C +#define PCI_DEVICE_ID_LSI_SAS1064E 0x0056 +#define PCI_DEVICE_ID_LSI_SAS1066E 0x005A +#define PCI_DEVICE_ID_LSI_SAS1068E 0x0058 +#define PCI_DEVICE_ID_LSI_SAS1078 0x0060 + +#define PCI_VENDOR_ID_ATI 0x1002 +/* Mach64 */ +#define PCI_DEVICE_ID_ATI_68800 0x4158 +#define PCI_DEVICE_ID_ATI_215CT222 0x4354 +#define PCI_DEVICE_ID_ATI_210888CX 0x4358 +#define PCI_DEVICE_ID_ATI_215ET222 0x4554 +/* Mach64 / Rage */ +#define PCI_DEVICE_ID_ATI_215GB 0x4742 +#define PCI_DEVICE_ID_ATI_215GD 0x4744 +#define PCI_DEVICE_ID_ATI_215GI 0x4749 +#define PCI_DEVICE_ID_ATI_215GP 0x4750 +#define PCI_DEVICE_ID_ATI_215GQ 0x4751 +#define PCI_DEVICE_ID_ATI_215XL 0x4752 +#define PCI_DEVICE_ID_ATI_215GT 0x4754 +#define PCI_DEVICE_ID_ATI_215GTB 0x4755 +#define PCI_DEVICE_ID_ATI_215_IV 0x4756 +#define PCI_DEVICE_ID_ATI_215_IW 0x4757 +#define PCI_DEVICE_ID_ATI_215_IZ 0x475A +#define PCI_DEVICE_ID_ATI_210888GX 0x4758 +#define PCI_DEVICE_ID_ATI_215_LB 0x4c42 +#define PCI_DEVICE_ID_ATI_215_LD 0x4c44 +#define PCI_DEVICE_ID_ATI_215_LG 0x4c47 +#define PCI_DEVICE_ID_ATI_215_LI 0x4c49 +#define PCI_DEVICE_ID_ATI_215_LM 0x4c4D +#define PCI_DEVICE_ID_ATI_215_LN 0x4c4E +#define PCI_DEVICE_ID_ATI_215_LR 0x4c52 +#define PCI_DEVICE_ID_ATI_215_LS 0x4c53 +#define PCI_DEVICE_ID_ATI_264_LT 0x4c54 +/* Mach64 VT */ +#define PCI_DEVICE_ID_ATI_264VT 0x5654 +#define PCI_DEVICE_ID_ATI_264VU 0x5655 +#define PCI_DEVICE_ID_ATI_264VV 0x5656 +/* Rage128 GL */ +#define PCI_DEVICE_ID_ATI_RAGE128_RE 0x5245 +#define PCI_DEVICE_ID_ATI_RAGE128_RF 0x5246 +#define PCI_DEVICE_ID_ATI_RAGE128_RG 0x5247 +/* Rage128 VR */ +#define PCI_DEVICE_ID_ATI_RAGE128_RK 0x524b +#define PCI_DEVICE_ID_ATI_RAGE128_RL 0x524c +#define PCI_DEVICE_ID_ATI_RAGE128_SE 0x5345 +#define PCI_DEVICE_ID_ATI_RAGE128_SF 0x5346 +#define PCI_DEVICE_ID_ATI_RAGE128_SG 0x5347 +#define PCI_DEVICE_ID_ATI_RAGE128_SH 0x5348 +#define PCI_DEVICE_ID_ATI_RAGE128_SK 0x534b +#define PCI_DEVICE_ID_ATI_RAGE128_SL 0x534c +#define PCI_DEVICE_ID_ATI_RAGE128_SM 0x534d +#define PCI_DEVICE_ID_ATI_RAGE128_SN 0x534e +/* Rage128 Ultra */ +#define PCI_DEVICE_ID_ATI_RAGE128_TF 0x5446 +#define PCI_DEVICE_ID_ATI_RAGE128_TL 0x544c +#define PCI_DEVICE_ID_ATI_RAGE128_TR 0x5452 +#define PCI_DEVICE_ID_ATI_RAGE128_TS 0x5453 +#define PCI_DEVICE_ID_ATI_RAGE128_TT 0x5454 +#define PCI_DEVICE_ID_ATI_RAGE128_TU 0x5455 +/* Rage128 M3 */ +#define PCI_DEVICE_ID_ATI_RAGE128_LE 0x4c45 +#define PCI_DEVICE_ID_ATI_RAGE128_LF 0x4c46 +/* Rage128 M4 */ +#define PCI_DEVICE_ID_ATI_RAGE128_MF 0x4d46 +#define PCI_DEVICE_ID_ATI_RAGE128_ML 0x4d4c +/* Rage128 Pro GL */ +#define PCI_DEVICE_ID_ATI_RAGE128_PA 0x5041 +#define PCI_DEVICE_ID_ATI_RAGE128_PB 0x5042 +#define PCI_DEVICE_ID_ATI_RAGE128_PC 0x5043 +#define PCI_DEVICE_ID_ATI_RAGE128_PD 0x5044 +#define PCI_DEVICE_ID_ATI_RAGE128_PE 0x5045 +#define PCI_DEVICE_ID_ATI_RAGE128_PF 0x5046 +/* Rage128 Pro VR */ +#define PCI_DEVICE_ID_ATI_RAGE128_PG 0x5047 +#define PCI_DEVICE_ID_ATI_RAGE128_PH 0x5048 +#define PCI_DEVICE_ID_ATI_RAGE128_PI 0x5049 +#define PCI_DEVICE_ID_ATI_RAGE128_PJ 0x504A +#define PCI_DEVICE_ID_ATI_RAGE128_PK 0x504B +#define PCI_DEVICE_ID_ATI_RAGE128_PL 0x504C +#define PCI_DEVICE_ID_ATI_RAGE128_PM 0x504D +#define PCI_DEVICE_ID_ATI_RAGE128_PN 0x504E +#define PCI_DEVICE_ID_ATI_RAGE128_PO 0x504F +#define PCI_DEVICE_ID_ATI_RAGE128_PP 0x5050 +#define PCI_DEVICE_ID_ATI_RAGE128_PQ 0x5051 +#define PCI_DEVICE_ID_ATI_RAGE128_PR 0x5052 +#define PCI_DEVICE_ID_ATI_RAGE128_TR 0x5452 +#define PCI_DEVICE_ID_ATI_RAGE128_PS 0x5053 +#define PCI_DEVICE_ID_ATI_RAGE128_PT 0x5054 +#define PCI_DEVICE_ID_ATI_RAGE128_PU 0x5055 +#define PCI_DEVICE_ID_ATI_RAGE128_PV 0x5056 +#define PCI_DEVICE_ID_ATI_RAGE128_PW 0x5057 +#define PCI_DEVICE_ID_ATI_RAGE128_PX 0x5058 +/* Rage128 M4 */ +#define PCI_DEVICE_ID_ATI_RADEON_LE 0x4d45 +#define PCI_DEVICE_ID_ATI_RADEON_LF 0x4d46 +/* Radeon R100 */ +#define PCI_DEVICE_ID_ATI_RADEON_QD 0x5144 +#define PCI_DEVICE_ID_ATI_RADEON_QE 0x5145 +#define PCI_DEVICE_ID_ATI_RADEON_QF 0x5146 +#define PCI_DEVICE_ID_ATI_RADEON_QG 0x5147 +/* Radeon RV100 (VE) */ +#define PCI_DEVICE_ID_ATI_RADEON_QY 0x5159 +#define PCI_DEVICE_ID_ATI_RADEON_QZ 0x515a +/* Radeon R200 (8500) */ +#define PCI_DEVICE_ID_ATI_RADEON_QL 0x514c +#define PCI_DEVICE_ID_ATI_RADEON_QN 0x514e +#define PCI_DEVICE_ID_ATI_RADEON_QO 0x514f +#define PCI_DEVICE_ID_ATI_RADEON_Ql 0x516c +#define PCI_DEVICE_ID_ATI_RADEON_BB 0x4242 +/* Radeon R200 (9100) */ +#define PCI_DEVICE_ID_ATI_RADEON_QM 0x514d +/* Radeon RV200 (7500) */ +#define PCI_DEVICE_ID_ATI_RADEON_QW 0x5157 +#define PCI_DEVICE_ID_ATI_RADEON_QX 0x5158 +/* Radeon NV-100 */ +#define PCI_DEVICE_ID_ATI_RADEON_N1 0x5159 +#define PCI_DEVICE_ID_ATI_RADEON_N2 0x515a +/* Radeon RV250 (9000) */ +#define PCI_DEVICE_ID_ATI_RADEON_Id 0x4964 +#define PCI_DEVICE_ID_ATI_RADEON_Ie 0x4965 +#define PCI_DEVICE_ID_ATI_RADEON_If 0x4966 +#define PCI_DEVICE_ID_ATI_RADEON_Ig 0x4967 +/* Radeon RV280 (9200) */ +#define PCI_DEVICE_ID_ATI_RADEON_Y_ 0x5960 +#define PCI_DEVICE_ID_ATI_RADEON_Ya 0x5961 +#define PCI_DEVICE_ID_ATI_RADEON_Yd 0x5964 +/* Radeon R300 (9500) */ +#define PCI_DEVICE_ID_ATI_RADEON_AD 0x4144 +/* Radeon R300 (9700) */ +#define PCI_DEVICE_ID_ATI_RADEON_ND 0x4e44 +#define PCI_DEVICE_ID_ATI_RADEON_NE 0x4e45 +#define PCI_DEVICE_ID_ATI_RADEON_NF 0x4e46 +#define PCI_DEVICE_ID_ATI_RADEON_NG 0x4e47 +#define PCI_DEVICE_ID_ATI_RADEON_AE 0x4145 +#define PCI_DEVICE_ID_ATI_RADEON_AF 0x4146 +/* Radeon R350 (9800) */ +#define PCI_DEVICE_ID_ATI_RADEON_NH 0x4e48 +#define PCI_DEVICE_ID_ATI_RADEON_NI 0x4e49 +/* Radeon RV350 (9600) */ +#define PCI_DEVICE_ID_ATI_RADEON_AP 0x4150 +#define PCI_DEVICE_ID_ATI_RADEON_AR 0x4152 +/* Radeon M6 */ +#define PCI_DEVICE_ID_ATI_RADEON_LY 0x4c59 +#define PCI_DEVICE_ID_ATI_RADEON_LZ 0x4c5a +/* Radeon M7 */ +#define PCI_DEVICE_ID_ATI_RADEON_LW 0x4c57 +#define PCI_DEVICE_ID_ATI_RADEON_LX 0x4c58 +/* Radeon M9 */ +#define PCI_DEVICE_ID_ATI_RADEON_Ld 0x4c64 +#define PCI_DEVICE_ID_ATI_RADEON_Le 0x4c65 +#define PCI_DEVICE_ID_ATI_RADEON_Lf 0x4c66 +#define PCI_DEVICE_ID_ATI_RADEON_Lg 0x4c67 +/* Radeon */ +#define PCI_DEVICE_ID_ATI_RADEON_RA 0x5144 +#define PCI_DEVICE_ID_ATI_RADEON_RB 0x5145 +#define PCI_DEVICE_ID_ATI_RADEON_RC 0x5146 +#define PCI_DEVICE_ID_ATI_RADEON_RD 0x5147 +/* RadeonIGP */ +#define PCI_DEVICE_ID_ATI_RS100 0xcab0 +#define PCI_DEVICE_ID_ATI_RS200 0xcab2 +#define PCI_DEVICE_ID_ATI_RS200_B 0xcbb2 +#define PCI_DEVICE_ID_ATI_RS250 0xcab3 +#define PCI_DEVICE_ID_ATI_RS300_100 0x5830 +#define PCI_DEVICE_ID_ATI_RS300_133 0x5831 +#define PCI_DEVICE_ID_ATI_RS300_166 0x5832 +#define PCI_DEVICE_ID_ATI_RS300_200 0x5833 +#define PCI_DEVICE_ID_ATI_RS350_100 0x7830 +#define PCI_DEVICE_ID_ATI_RS350_133 0x7831 +#define PCI_DEVICE_ID_ATI_RS350_166 0x7832 +#define PCI_DEVICE_ID_ATI_RS350_200 0x7833 +#define PCI_DEVICE_ID_ATI_RS400_100 0x5a30 +#define PCI_DEVICE_ID_ATI_RS400_133 0x5a31 +#define PCI_DEVICE_ID_ATI_RS400_166 0x5a32 +#define PCI_DEVICE_ID_ATI_RS400_200 0x5a33 +#define PCI_DEVICE_ID_ATI_RS480 0x5950 +/* ATI IXP Chipset */ +#define PCI_DEVICE_ID_ATI_IXP200_IDE 0x4349 +#define PCI_DEVICE_ID_ATI_IXP300_IDE 0x4369 +#define PCI_DEVICE_ID_ATI_IXP300_SATA 0x436e +#define PCI_DEVICE_ID_ATI_IXP400_IDE 0x4376 +#define PCI_DEVICE_ID_ATI_IXP400_SATA 0x4379 + +#define PCI_VENDOR_ID_VLSI 0x1004 +#define PCI_DEVICE_ID_VLSI_82C592 0x0005 +#define PCI_DEVICE_ID_VLSI_82C593 0x0006 +#define PCI_DEVICE_ID_VLSI_82C594 0x0007 +#define PCI_DEVICE_ID_VLSI_82C597 0x0009 +#define PCI_DEVICE_ID_VLSI_82C541 0x000c +#define PCI_DEVICE_ID_VLSI_82C543 0x000d +#define PCI_DEVICE_ID_VLSI_82C532 0x0101 +#define PCI_DEVICE_ID_VLSI_82C534 0x0102 +#define PCI_DEVICE_ID_VLSI_82C535 0x0104 +#define PCI_DEVICE_ID_VLSI_82C147 0x0105 +#define PCI_DEVICE_ID_VLSI_VAS96011 0x0702 + +#define PCI_VENDOR_ID_ADL 0x1005 +#define PCI_DEVICE_ID_ADL_2301 0x2301 + +#define PCI_VENDOR_ID_NS 0x100b +#define PCI_DEVICE_ID_NS_87415 0x0002 +#define PCI_DEVICE_ID_NS_87560_LIO 0x000e +#define PCI_DEVICE_ID_NS_87560_USB 0x0012 +#define PCI_DEVICE_ID_NS_83815 0x0020 +#define PCI_DEVICE_ID_NS_83820 0x0022 +#define PCI_DEVICE_ID_NS_SCx200_BRIDGE 0x0500 +#define PCI_DEVICE_ID_NS_SCx200_SMI 0x0501 +#define PCI_DEVICE_ID_NS_SCx200_IDE 0x0502 +#define PCI_DEVICE_ID_NS_SCx200_AUDIO 0x0503 +#define PCI_DEVICE_ID_NS_SCx200_VIDEO 0x0504 +#define PCI_DEVICE_ID_NS_SCx200_XBUS 0x0505 +#define PCI_DEVICE_ID_NS_SC1100_BRIDGE 0x0510 +#define PCI_DEVICE_ID_NS_SC1100_SMI 0x0511 +#define PCI_DEVICE_ID_NS_SC1100_XBUS 0x0515 +#define PCI_DEVICE_ID_NS_87410 0xd001 + +#define PCI_VENDOR_ID_TSENG 0x100c +#define PCI_DEVICE_ID_TSENG_W32P_2 0x3202 +#define PCI_DEVICE_ID_TSENG_W32P_b 0x3205 +#define PCI_DEVICE_ID_TSENG_W32P_c 0x3206 +#define PCI_DEVICE_ID_TSENG_W32P_d 0x3207 +#define PCI_DEVICE_ID_TSENG_ET6000 0x3208 + +#define PCI_VENDOR_ID_WEITEK 0x100e +#define PCI_DEVICE_ID_WEITEK_P9000 0x9001 +#define PCI_DEVICE_ID_WEITEK_P9100 0x9100 + +#define PCI_VENDOR_ID_DEC 0x1011 +#define PCI_DEVICE_ID_DEC_BRD 0x0001 +#define PCI_DEVICE_ID_DEC_TULIP 0x0002 +#define PCI_DEVICE_ID_DEC_TGA 0x0004 +#define PCI_DEVICE_ID_DEC_TULIP_FAST 0x0009 +#define PCI_DEVICE_ID_DEC_TGA2 0x000D +#define PCI_DEVICE_ID_DEC_FDDI 0x000F +#define PCI_DEVICE_ID_DEC_TULIP_PLUS 0x0014 +#define PCI_DEVICE_ID_DEC_21142 0x0019 +#define PCI_DEVICE_ID_DEC_21052 0x0021 +#define PCI_DEVICE_ID_DEC_21150 0x0022 +#define PCI_DEVICE_ID_DEC_21152 0x0024 +#define PCI_DEVICE_ID_DEC_21153 0x0025 +#define PCI_DEVICE_ID_DEC_21154 0x0026 +#define PCI_DEVICE_ID_DEC_21285 0x1065 +#define PCI_DEVICE_ID_COMPAQ_42XX 0x0046 + +#define PCI_VENDOR_ID_CIRRUS 0x1013 +#define PCI_DEVICE_ID_CIRRUS_7548 0x0038 +#define PCI_DEVICE_ID_CIRRUS_5430 0x00a0 +#define PCI_DEVICE_ID_CIRRUS_5434_4 0x00a4 +#define PCI_DEVICE_ID_CIRRUS_5434_8 0x00a8 +#define PCI_DEVICE_ID_CIRRUS_5436 0x00ac +#define PCI_DEVICE_ID_CIRRUS_5446 0x00b8 +#define PCI_DEVICE_ID_CIRRUS_5480 0x00bc +#define PCI_DEVICE_ID_CIRRUS_5462 0x00d0 +#define PCI_DEVICE_ID_CIRRUS_5464 0x00d4 +#define PCI_DEVICE_ID_CIRRUS_5465 0x00d6 +#define PCI_DEVICE_ID_CIRRUS_6729 0x1100 +#define PCI_DEVICE_ID_CIRRUS_6832 0x1110 +#define PCI_DEVICE_ID_CIRRUS_7542 0x1200 +#define PCI_DEVICE_ID_CIRRUS_7543 0x1202 +#define PCI_DEVICE_ID_CIRRUS_7541 0x1204 + +#define PCI_VENDOR_ID_IBM 0x1014 +#define PCI_DEVICE_ID_IBM_FIRE_CORAL 0x000a +#define PCI_DEVICE_ID_IBM_TR 0x0018 +#define PCI_DEVICE_ID_IBM_82G2675 0x001d +#define PCI_DEVICE_ID_IBM_MCA 0x0020 +#define PCI_DEVICE_ID_IBM_82351 0x0022 +#define PCI_DEVICE_ID_IBM_PYTHON 0x002d +#define PCI_DEVICE_ID_IBM_SERVERAID 0x002e +#define PCI_DEVICE_ID_IBM_TR_WAKE 0x003e +#define PCI_DEVICE_ID_IBM_MPIC 0x0046 +#define PCI_DEVICE_ID_IBM_3780IDSP 0x007d +#define PCI_DEVICE_ID_IBM_CHUKAR 0x0096 +#define PCI_DEVICE_ID_IBM_CPC710_PCI64 0x00fc +#define PCI_DEVICE_ID_IBM_CPC710_PCI32 0x0105 +#define PCI_DEVICE_ID_IBM_405GP 0x0156 +#define PCI_DEVICE_ID_IBM_SNIPE 0x0180 +#define PCI_DEVICE_ID_IBM_SERVERAIDI960 0x01bd +#define PCI_DEVICE_ID_IBM_CITRINE 0x028C +#define PCI_DEVICE_ID_IBM_GEMSTONE 0xB166 +#define PCI_DEVICE_ID_IBM_MPIC_2 0xffff +#define PCI_DEVICE_ID_IBM_ICOM_DEV_ID_1 0x0031 +#define PCI_DEVICE_ID_IBM_ICOM_DEV_ID_2 0x0219 +#define PCI_DEVICE_ID_IBM_ICOM_V2_TWO_PORTS_RVX 0x021A +#define PCI_DEVICE_ID_IBM_ICOM_V2_ONE_PORT_RVX_ONE_PORT_MDM 0x0251 +#define PCI_DEVICE_ID_IBM_ICOM_FOUR_PORT_MODEL 0x252 + +#define PCI_VENDOR_ID_COMPEX2 0x101a // pci.ids says "AT&T GIS (NCR)" +#define PCI_DEVICE_ID_COMPEX2_100VG 0x0005 + +#define PCI_VENDOR_ID_WD 0x101c +#define PCI_DEVICE_ID_WD_7197 0x3296 +#define PCI_DEVICE_ID_WD_90C 0xc24a + +#define PCI_VENDOR_ID_AMI 0x101e +#define PCI_DEVICE_ID_AMI_MEGARAID3 0x1960 +#define PCI_DEVICE_ID_AMI_MEGARAID 0x9010 +#define PCI_DEVICE_ID_AMI_MEGARAID2 0x9060 + +#define PCI_VENDOR_ID_AMD 0x1022 +#define PCI_DEVICE_ID_AMD_LANCE 0x2000 +#define PCI_DEVICE_ID_AMD_LANCE_HOME 0x2001 +#define PCI_DEVICE_ID_AMD_SCSI 0x2020 +#define PCI_DEVICE_ID_AMD_SERENADE 0x36c0 +#define PCI_DEVICE_ID_AMD_FE_GATE_7006 0x7006 +#define PCI_DEVICE_ID_AMD_FE_GATE_7007 0x7007 +#define PCI_DEVICE_ID_AMD_FE_GATE_700C 0x700C +#define PCI_DEVICE_ID_AMD_FE_GATE_700D 0x700D +#define PCI_DEVICE_ID_AMD_FE_GATE_700E 0x700E +#define PCI_DEVICE_ID_AMD_FE_GATE_700F 0x700F +#define PCI_DEVICE_ID_AMD_COBRA_7400 0x7400 +#define PCI_DEVICE_ID_AMD_COBRA_7401 0x7401 +#define PCI_DEVICE_ID_AMD_COBRA_7403 0x7403 +#define PCI_DEVICE_ID_AMD_COBRA_7404 0x7404 +#define PCI_DEVICE_ID_AMD_VIPER_7408 0x7408 +#define PCI_DEVICE_ID_AMD_VIPER_7409 0x7409 +#define PCI_DEVICE_ID_AMD_VIPER_740B 0x740B +#define PCI_DEVICE_ID_AMD_VIPER_740C 0x740C +#define PCI_DEVICE_ID_AMD_VIPER_7410 0x7410 +#define PCI_DEVICE_ID_AMD_VIPER_7411 0x7411 +#define PCI_DEVICE_ID_AMD_VIPER_7413 0x7413 +#define PCI_DEVICE_ID_AMD_VIPER_7414 0x7414 +#define PCI_DEVICE_ID_AMD_OPUS_7440 0x7440 +# define PCI_DEVICE_ID_AMD_VIPER_7440 PCI_DEVICE_ID_AMD_OPUS_7440 +#define PCI_DEVICE_ID_AMD_OPUS_7441 0x7441 +# define PCI_DEVICE_ID_AMD_VIPER_7441 PCI_DEVICE_ID_AMD_OPUS_7441 +#define PCI_DEVICE_ID_AMD_OPUS_7443 0x7443 +# define PCI_DEVICE_ID_AMD_VIPER_7443 PCI_DEVICE_ID_AMD_OPUS_7443 +#define PCI_DEVICE_ID_AMD_OPUS_7445 0x7445 +#define PCI_DEVICE_ID_AMD_OPUS_7448 0x7448 +# define PCI_DEVICE_ID_AMD_VIPER_7448 PCI_DEVICE_ID_AMD_OPUS_7448 +#define PCI_DEVICE_ID_AMD_OPUS_7449 0x7449 +# define PCI_DEVICE_ID_AMD_VIPER_7449 PCI_DEVICE_ID_AMD_OPUS_7449 +#define PCI_DEVICE_ID_AMD_8111_LAN 0x7462 +#define PCI_DEVICE_ID_AMD_8111_LPC 0x7468 +#define PCI_DEVICE_ID_AMD_8111_IDE 0x7469 +#define PCI_DEVICE_ID_AMD_8111_SMBUS2 0x746a +#define PCI_DEVICE_ID_AMD_8111_SMBUS 0x746b +#define PCI_DEVICE_ID_AMD_8111_AUDIO 0x746d +#define PCI_DEVICE_ID_AMD_8151_0 0x7454 +#define PCI_DEVICE_ID_AMD_8131_APIC 0x7450 + +#define PCI_VENDOR_ID_TRIDENT 0x1023 +#define PCI_DEVICE_ID_TRIDENT_4DWAVE_DX 0x2000 +#define PCI_DEVICE_ID_TRIDENT_4DWAVE_NX 0x2001 +#define PCI_DEVICE_ID_TRIDENT_9320 0x9320 +#define PCI_DEVICE_ID_TRIDENT_9388 0x9388 +#define PCI_DEVICE_ID_TRIDENT_9397 0x9397 +#define PCI_DEVICE_ID_TRIDENT_939A 0x939A +#define PCI_DEVICE_ID_TRIDENT_9520 0x9520 +#define PCI_DEVICE_ID_TRIDENT_9525 0x9525 +#define PCI_DEVICE_ID_TRIDENT_9420 0x9420 +#define PCI_DEVICE_ID_TRIDENT_9440 0x9440 +#define PCI_DEVICE_ID_TRIDENT_9660 0x9660 +#define PCI_DEVICE_ID_TRIDENT_9750 0x9750 +#define PCI_DEVICE_ID_TRIDENT_9850 0x9850 +#define PCI_DEVICE_ID_TRIDENT_9880 0x9880 +#define PCI_DEVICE_ID_TRIDENT_8400 0x8400 +#define PCI_DEVICE_ID_TRIDENT_8420 0x8420 +#define PCI_DEVICE_ID_TRIDENT_8500 0x8500 + +#define PCI_VENDOR_ID_AI 0x1025 +#define PCI_DEVICE_ID_AI_M1435 0x1435 + +#define PCI_VENDOR_ID_DELL 0x1028 +#define PCI_DEVICE_ID_DELL_RACIII 0x0008 +#define PCI_DEVICE_ID_DELL_RAC4 0x0012 + +#define PCI_VENDOR_ID_MATROX 0x102B +#define PCI_DEVICE_ID_MATROX_MGA_2 0x0518 +#define PCI_DEVICE_ID_MATROX_MIL 0x0519 +#define PCI_DEVICE_ID_MATROX_MYS 0x051A +#define PCI_DEVICE_ID_MATROX_MIL_2 0x051b +#define PCI_DEVICE_ID_MATROX_MIL_2_AGP 0x051f +#define PCI_DEVICE_ID_MATROX_MGA_IMP 0x0d10 +#define PCI_DEVICE_ID_MATROX_G100_MM 0x1000 +#define PCI_DEVICE_ID_MATROX_G100_AGP 0x1001 +#define PCI_DEVICE_ID_MATROX_G200_PCI 0x0520 +#define PCI_DEVICE_ID_MATROX_G200_AGP 0x0521 +#define PCI_DEVICE_ID_MATROX_G400 0x0525 +#define PCI_DEVICE_ID_MATROX_G550 0x2527 +#define PCI_DEVICE_ID_MATROX_VIA 0x4536 + +#define PCI_VENDOR_ID_CT 0x102c +#define PCI_DEVICE_ID_CT_69000 0x00c0 +#define PCI_DEVICE_ID_CT_65545 0x00d8 +#define PCI_DEVICE_ID_CT_65548 0x00dc +#define PCI_DEVICE_ID_CT_65550 0x00e0 +#define PCI_DEVICE_ID_CT_65554 0x00e4 +#define PCI_DEVICE_ID_CT_65555 0x00e5 + +#define PCI_VENDOR_ID_MIRO 0x1031 +#define PCI_DEVICE_ID_MIRO_36050 0x5601 +#define PCI_DEVICE_ID_MIRO_DC10PLUS 0x7efe +#define PCI_DEVICE_ID_MIRO_DC30PLUS 0xd801 + +#define PCI_VENDOR_ID_NEC 0x1033 +#define PCI_DEVICE_ID_NEC_CBUS_1 0x0001 /* PCI-Cbus Bridge */ +#define PCI_DEVICE_ID_NEC_LOCAL 0x0002 /* Local Bridge */ +#define PCI_DEVICE_ID_NEC_ATM 0x0003 /* ATM LAN Controller */ +#define PCI_DEVICE_ID_NEC_R4000 0x0004 /* R4000 Bridge */ +#define PCI_DEVICE_ID_NEC_486 0x0005 /* 486 Like Peripheral Bus Bridge */ +#define PCI_DEVICE_ID_NEC_ACCEL_1 0x0006 /* Graphic Accelerator */ +#define PCI_DEVICE_ID_NEC_UXBUS 0x0007 /* UX-Bus Bridge */ +#define PCI_DEVICE_ID_NEC_ACCEL_2 0x0008 /* Graphic Accelerator */ +#define PCI_DEVICE_ID_NEC_GRAPH 0x0009 /* PCI-CoreGraph Bridge */ +#define PCI_DEVICE_ID_NEC_VL 0x0016 /* PCI-VL Bridge */ +#define PCI_DEVICE_ID_NEC_STARALPHA2 0x002c /* STAR ALPHA2 */ +#define PCI_DEVICE_ID_NEC_CBUS_2 0x002d /* PCI-Cbus Bridge */ +#define PCI_DEVICE_ID_NEC_USB 0x0035 /* PCI-USB Host */ +#define PCI_DEVICE_ID_NEC_CBUS_3 0x003b +#define PCI_DEVICE_ID_NEC_NAPCCARD 0x003e +#define PCI_DEVICE_ID_NEC_PCX2 0x0046 /* PowerVR */ +#define PCI_DEVICE_ID_NEC_NILE4 0x005a +#define PCI_DEVICE_ID_NEC_VRC5476 0x009b +#define PCI_DEVICE_ID_NEC_VRC4173 0x00a5 +#define PCI_DEVICE_ID_NEC_VRC5477_AC97 0x00a6 +#define PCI_DEVICE_ID_NEC_PC9821CS01 0x800c /* PC-9821-CS01 */ +#define PCI_DEVICE_ID_NEC_PC9821NRB06 0x800d /* PC-9821NR-B06 */ + +#define PCI_VENDOR_ID_FD 0x1036 +#define PCI_DEVICE_ID_FD_36C70 0x0000 + +#define PCI_VENDOR_ID_SI 0x1039 +#define PCI_DEVICE_ID_SI_5591_AGP 0x0001 +#define PCI_DEVICE_ID_SI_6202 0x0002 +#define PCI_DEVICE_ID_SI_503 0x0008 +#define PCI_DEVICE_ID_SI_ACPI 0x0009 +#define PCI_DEVICE_ID_SI_SMBUS 0x0016 +#define PCI_DEVICE_ID_SI_LPC 0x0018 +#define PCI_DEVICE_ID_SI_5597_VGA 0x0200 +#define PCI_DEVICE_ID_SI_6205 0x0205 +#define PCI_DEVICE_ID_SI_501 0x0406 +#define PCI_DEVICE_ID_SI_496 0x0496 +#define PCI_DEVICE_ID_SI_300 0x0300 +#define PCI_DEVICE_ID_SI_315H 0x0310 +#define PCI_DEVICE_ID_SI_315 0x0315 +#define PCI_DEVICE_ID_SI_315PRO 0x0325 +#define PCI_DEVICE_ID_SI_530 0x0530 +#define PCI_DEVICE_ID_SI_540 0x0540 +#define PCI_DEVICE_ID_SI_550 0x0550 +#define PCI_DEVICE_ID_SI_540_VGA 0x5300 +#define PCI_DEVICE_ID_SI_550_VGA 0x5315 +#define PCI_DEVICE_ID_SI_601 0x0601 +#define PCI_DEVICE_ID_SI_620 0x0620 +#define PCI_DEVICE_ID_SI_630 0x0630 +#define PCI_DEVICE_ID_SI_633 0x0633 +#define PCI_DEVICE_ID_SI_635 0x0635 +#define PCI_DEVICE_ID_SI_640 0x0640 +#define PCI_DEVICE_ID_SI_645 0x0645 +#define PCI_DEVICE_ID_SI_646 0x0646 +#define PCI_DEVICE_ID_SI_648 0x0648 +#define PCI_DEVICE_ID_SI_650 0x0650 +#define PCI_DEVICE_ID_SI_651 0x0651 +#define PCI_DEVICE_ID_SI_652 0x0652 +#define PCI_DEVICE_ID_SI_655 0x0655 +#define PCI_DEVICE_ID_SI_661 0x0661 +#define PCI_DEVICE_ID_SI_730 0x0730 +#define PCI_DEVICE_ID_SI_733 0x0733 +#define PCI_DEVICE_ID_SI_630_VGA 0x6300 +#define PCI_DEVICE_ID_SI_730_VGA 0x7300 +#define PCI_DEVICE_ID_SI_735 0x0735 +#define PCI_DEVICE_ID_SI_740 0x0740 +#define PCI_DEVICE_ID_SI_741 0x0741 +#define PCI_DEVICE_ID_SI_745 0x0745 +#define PCI_DEVICE_ID_SI_746 0x0746 +#define PCI_DEVICE_ID_SI_748 0x0748 +#define PCI_DEVICE_ID_SI_750 0x0750 +#define PCI_DEVICE_ID_SI_751 0x0751 +#define PCI_DEVICE_ID_SI_752 0x0752 +#define PCI_DEVICE_ID_SI_755 0x0755 +#define PCI_DEVICE_ID_SI_760 0x0760 +#define PCI_DEVICE_ID_SI_900 0x0900 +#define PCI_DEVICE_ID_SI_961 0x0961 +#define PCI_DEVICE_ID_SI_962 0x0962 +#define PCI_DEVICE_ID_SI_963 0x0963 +#define PCI_DEVICE_ID_SI_5107 0x5107 +#define PCI_DEVICE_ID_SI_5300 0x5300 +#define PCI_DEVICE_ID_SI_5511 0x5511 +#define PCI_DEVICE_ID_SI_5513 0x5513 +#define PCI_DEVICE_ID_SI_5518 0x5518 +#define PCI_DEVICE_ID_SI_5571 0x5571 +#define PCI_DEVICE_ID_SI_5581 0x5581 +#define PCI_DEVICE_ID_SI_5582 0x5582 +#define PCI_DEVICE_ID_SI_5591 0x5591 +#define PCI_DEVICE_ID_SI_5596 0x5596 +#define PCI_DEVICE_ID_SI_5597 0x5597 +#define PCI_DEVICE_ID_SI_5598 0x5598 +#define PCI_DEVICE_ID_SI_5600 0x5600 +#define PCI_DEVICE_ID_SI_6300 0x6300 +#define PCI_DEVICE_ID_SI_6306 0x6306 +#define PCI_DEVICE_ID_SI_6326 0x6326 +#define PCI_DEVICE_ID_SI_7001 0x7001 +#define PCI_DEVICE_ID_SI_7012 0x7012 +#define PCI_DEVICE_ID_SI_7016 0x7016 + +#define PCI_VENDOR_ID_HP 0x103c +#define PCI_DEVICE_ID_HP_VISUALIZE_EG 0x1005 +#define PCI_DEVICE_ID_HP_VISUALIZE_FX6 0x1006 +#define PCI_DEVICE_ID_HP_VISUALIZE_FX4 0x1008 +#define PCI_DEVICE_ID_HP_VISUALIZE_FX2 0x100a +#define PCI_DEVICE_ID_HP_TACHYON 0x1028 +#define PCI_DEVICE_ID_HP_TACHLITE 0x1029 +#define PCI_DEVICE_ID_HP_J2585A 0x1030 +#define PCI_DEVICE_ID_HP_J2585B 0x1031 +#define PCI_DEVICE_ID_HP_J2973A 0x1040 +#define PCI_DEVICE_ID_HP_J2970A 0x1042 +#define PCI_DEVICE_ID_HP_DIVA 0x1048 +#define PCI_DEVICE_ID_HP_DIVA_TOSCA1 0x1049 +#define PCI_DEVICE_ID_HP_DIVA_TOSCA2 0x104A +#define PCI_DEVICE_ID_HP_DIVA_MAESTRO 0x104B +#define PCI_DEVICE_ID_HP_PCI_LBA 0x1054 +#define PCI_DEVICE_ID_HP_REO_SBA 0x10f0 +#define PCI_DEVICE_ID_HP_REO_IOC 0x10f1 +#define PCI_DEVICE_ID_HP_VISUALIZE_FXE 0x108b +#define PCI_DEVICE_ID_HP_DIVA_HALFDOME 0x1223 +#define PCI_DEVICE_ID_HP_DIVA_KEYSTONE 0x1226 +#define PCI_DEVICE_ID_HP_DIVA_POWERBAR 0x1227 +#define PCI_DEVICE_ID_HP_ZX1_SBA 0x1229 +#define PCI_DEVICE_ID_HP_ZX1_IOC 0x122a +#define PCI_DEVICE_ID_HP_PCIX_LBA 0x122e +#define PCI_DEVICE_ID_HP_SX1000_IOC 0x127c +#define PCI_DEVICE_ID_HP_DIVA_EVEREST 0x1282 +#define PCI_DEVICE_ID_HP_DIVA_AUX 0x1290 +#define PCI_DEVICE_ID_HP_DIVA_RMP3 0x1301 +#define PCI_DEVICE_ID_HP_CISSA 0x3220 +#define PCI_DEVICE_ID_HP_CISSB 0x3230 +#define PCI_DEVICE_ID_HP_ZX2_IOC 0x4031 + +#define PCI_VENDOR_ID_PCTECH 0x1042 +#define PCI_DEVICE_ID_PCTECH_RZ1000 0x1000 +#define PCI_DEVICE_ID_PCTECH_RZ1001 0x1001 +#define PCI_DEVICE_ID_PCTECH_SAMURAI_0 0x3000 +#define PCI_DEVICE_ID_PCTECH_SAMURAI_1 0x3010 +#define PCI_DEVICE_ID_PCTECH_SAMURAI_IDE 0x3020 + +#define PCI_VENDOR_ID_ASUSTEK 0x1043 +#define PCI_DEVICE_ID_ASUSTEK_0675 0x0675 + +#define PCI_VENDOR_ID_DPT 0x1044 +#define PCI_DEVICE_ID_DPT 0xa400 + +#define PCI_VENDOR_ID_OPTI 0x1045 +#define PCI_DEVICE_ID_OPTI_92C178 0xc178 +#define PCI_DEVICE_ID_OPTI_82C557 0xc557 +#define PCI_DEVICE_ID_OPTI_82C558 0xc558 +#define PCI_DEVICE_ID_OPTI_82C621 0xc621 +#define PCI_DEVICE_ID_OPTI_82C700 0xc700 +#define PCI_DEVICE_ID_OPTI_82C701 0xc701 +#define PCI_DEVICE_ID_OPTI_82C814 0xc814 +#define PCI_DEVICE_ID_OPTI_82C822 0xc822 +#define PCI_DEVICE_ID_OPTI_82C861 0xc861 +#define PCI_DEVICE_ID_OPTI_82C825 0xd568 + +#define PCI_VENDOR_ID_ELSA 0x1048 +#define PCI_DEVICE_ID_ELSA_MICROLINK 0x1000 +#define PCI_DEVICE_ID_ELSA_QS3000 0x3000 + +#define PCI_VENDOR_ID_SGS 0x104a +#define PCI_DEVICE_ID_SGS_2000 0x0008 +#define PCI_DEVICE_ID_SGS_1764 0x0009 + +#define PCI_VENDOR_ID_BUSLOGIC 0x104B +#define PCI_DEVICE_ID_BUSLOGIC_MULTIMASTER_NC 0x0140 +#define PCI_DEVICE_ID_BUSLOGIC_MULTIMASTER 0x1040 +#define PCI_DEVICE_ID_BUSLOGIC_FLASHPOINT 0x8130 + +#define PCI_VENDOR_ID_TI 0x104c +#define PCI_DEVICE_ID_TI_TVP4010 0x3d04 +#define PCI_DEVICE_ID_TI_TVP4020 0x3d07 +#define PCI_DEVICE_ID_TI_4450 0x8011 +#define PCI_DEVICE_ID_TI_1130 0xac12 +#define PCI_DEVICE_ID_TI_1031 0xac13 +#define PCI_DEVICE_ID_TI_1131 0xac15 +#define PCI_DEVICE_ID_TI_1250 0xac16 +#define PCI_DEVICE_ID_TI_1220 0xac17 +#define PCI_DEVICE_ID_TI_1221 0xac19 +#define PCI_DEVICE_ID_TI_1210 0xac1a +#define PCI_DEVICE_ID_TI_1450 0xac1b +#define PCI_DEVICE_ID_TI_1225 0xac1c +#define PCI_DEVICE_ID_TI_1251A 0xac1d +#define PCI_DEVICE_ID_TI_1211 0xac1e +#define PCI_DEVICE_ID_TI_1251B 0xac1f +#define PCI_DEVICE_ID_TI_4410 0xac41 +#define PCI_DEVICE_ID_TI_4451 0xac42 +#define PCI_DEVICE_ID_TI_4510 0xac44 +#define PCI_DEVICE_ID_TI_4520 0xac46 +#define PCI_DEVICE_ID_TI_1410 0xac50 +#define PCI_DEVICE_ID_TI_1420 0xac51 +#define PCI_DEVICE_ID_TI_1451A 0xac52 +#define PCI_DEVICE_ID_TI_1620 0xac54 +#define PCI_DEVICE_ID_TI_1520 0xac55 +#define PCI_DEVICE_ID_TI_1510 0xac56 + +#define PCI_VENDOR_ID_SONY 0x104d +#define PCI_DEVICE_ID_SONY_CXD3222 0x8039 + +#define PCI_VENDOR_ID_OAK 0x104e +#define PCI_DEVICE_ID_OAK_OTI107 0x0107 + +/* Winbond have two vendor IDs! See 0x10ad as well */ +#define PCI_VENDOR_ID_WINBOND2 0x1050 +#define PCI_DEVICE_ID_WINBOND2_89C940 0x0940 +#define PCI_DEVICE_ID_WINBOND2_89C940F 0x5a5a +#define PCI_DEVICE_ID_WINBOND2_6692 0x6692 + +#define PCI_VENDOR_ID_ANIGMA 0x1051 +#define PCI_DEVICE_ID_ANIGMA_MC145575 0x0100 + +#define PCI_VENDOR_ID_EFAR 0x1055 +#define PCI_DEVICE_ID_EFAR_SLC90E66_1 0x9130 +#define PCI_DEVICE_ID_EFAR_SLC90E66_0 0x9460 +#define PCI_DEVICE_ID_EFAR_SLC90E66_2 0x9462 +#define PCI_DEVICE_ID_EFAR_SLC90E66_3 0x9463 + +#define PCI_VENDOR_ID_MOTOROLA 0x1057 +#define PCI_VENDOR_ID_MOTOROLA_OOPS 0x1507 +#define PCI_DEVICE_ID_MOTOROLA_MPC105 0x0001 +#define PCI_DEVICE_ID_MOTOROLA_MPC106 0x0002 +#define PCI_DEVICE_ID_MOTOROLA_MPC107 0x0004 +#define PCI_DEVICE_ID_MOTOROLA_RAVEN 0x4801 +#define PCI_DEVICE_ID_MOTOROLA_FALCON 0x4802 +#define PCI_DEVICE_ID_MOTOROLA_HAWK 0x4803 +#define PCI_DEVICE_ID_MOTOROLA_CPX8216 0x4806 +#define PCI_DEVICE_ID_MOTOROLA_HARRIER 0x480b +#define PCI_DEVICE_ID_MOTOROLA_MPC5200 0x5803 + +#define PCI_VENDOR_ID_PROMISE 0x105a +#define PCI_DEVICE_ID_PROMISE_20265 0x0d30 +#define PCI_DEVICE_ID_PROMISE_20267 0x4d30 +#define PCI_DEVICE_ID_PROMISE_20246 0x4d33 +#define PCI_DEVICE_ID_PROMISE_20262 0x4d38 +#define PCI_DEVICE_ID_PROMISE_20263 0x0D38 +#define PCI_DEVICE_ID_PROMISE_20268 0x4d68 +#define PCI_DEVICE_ID_PROMISE_20268R 0x6268 +#define PCI_DEVICE_ID_PROMISE_20269 0x4d69 +#define PCI_DEVICE_ID_PROMISE_20270 0x6268 +#define PCI_DEVICE_ID_PROMISE_20271 0x6269 +#define PCI_DEVICE_ID_PROMISE_20275 0x1275 +#define PCI_DEVICE_ID_PROMISE_20276 0x5275 +#define PCI_DEVICE_ID_PROMISE_20277 0x7275 +#define PCI_DEVICE_ID_PROMISE_5300 0x5300 + +#define PCI_VENDOR_ID_N9 0x105d +#define PCI_DEVICE_ID_N9_I128 0x2309 +#define PCI_DEVICE_ID_N9_I128_2 0x2339 +#define PCI_DEVICE_ID_N9_I128_T2R 0x493d + +#define PCI_VENDOR_ID_UMC 0x1060 +#define PCI_DEVICE_ID_UMC_UM8673F 0x0101 +#define PCI_DEVICE_ID_UMC_UM8891A 0x0891 +#define PCI_DEVICE_ID_UMC_UM8886BF 0x673a +#define PCI_DEVICE_ID_UMC_UM8886A 0x886a +#define PCI_DEVICE_ID_UMC_UM8881F 0x8881 +#define PCI_DEVICE_ID_UMC_UM8886F 0x8886 +#define PCI_DEVICE_ID_UMC_UM9017F 0x9017 +#define PCI_DEVICE_ID_UMC_UM8886N 0xe886 +#define PCI_DEVICE_ID_UMC_UM8891N 0xe891 + +#define PCI_VENDOR_ID_X 0x1061 +#define PCI_DEVICE_ID_X_AGX016 0x0001 + +#define PCI_VENDOR_ID_MYLEX 0x1069 +#define PCI_DEVICE_ID_MYLEX_DAC960_P 0x0001 +#define PCI_DEVICE_ID_MYLEX_DAC960_PD 0x0002 +#define PCI_DEVICE_ID_MYLEX_DAC960_PG 0x0010 +#define PCI_DEVICE_ID_MYLEX_DAC960_LA 0x0020 +#define PCI_DEVICE_ID_MYLEX_DAC960_LP 0x0050 +#define PCI_DEVICE_ID_MYLEX_DAC960_BA 0xBA56 +#define PCI_DEVICE_ID_MYLEX_DAC960_GEM 0xB166 + +#define PCI_VENDOR_ID_PICOP 0x1066 +#define PCI_DEVICE_ID_PICOP_PT86C52X 0x0001 +#define PCI_DEVICE_ID_PICOP_PT80C524 0x8002 + +#define PCI_VENDOR_ID_APPLE 0x106b +#define PCI_DEVICE_ID_APPLE_BANDIT 0x0001 +#define PCI_DEVICE_ID_APPLE_GC 0x0002 +#define PCI_DEVICE_ID_APPLE_HYDRA 0x000e +#define PCI_DEVICE_ID_APPLE_UNI_N_FW 0x0018 +#define PCI_DEVICE_ID_APPLE_KL_USB 0x0019 +#define PCI_DEVICE_ID_APPLE_UNI_N_AGP 0x0020 +#define PCI_DEVICE_ID_APPLE_UNI_N_GMAC 0x0021 +#define PCI_DEVICE_ID_APPLE_KEYLARGO 0x0022 +#define PCI_DEVICE_ID_APPLE_UNI_N_GMACP 0x0024 +#define PCI_DEVICE_ID_APPLE_KEYLARGO_P 0x0025 +#define PCI_DEVICE_ID_APPLE_KL_USB_P 0x0026 +#define PCI_DEVICE_ID_APPLE_UNI_N_AGP_P 0x0027 +#define PCI_DEVICE_ID_APPLE_UNI_N_AGP15 0x002d +#define PCI_DEVICE_ID_APPLE_UNI_N_PCI15 0x002e +#define PCI_DEVICE_ID_APPLE_UNI_N_FW2 0x0030 +#define PCI_DEVICE_ID_APPLE_UNI_N_GMAC2 0x0032 +#define PCI_DEVIEC_ID_APPLE_UNI_N_ATA 0x0033 +#define PCI_DEVICE_ID_APPLE_UNI_N_AGP2 0x0034 +#define PCI_DEVICE_ID_APPLE_IPID_ATA100 0x003b +#define PCI_DEVICE_ID_APPLE_KEYLARGO_I 0x003e +#define PCI_DEVICE_ID_APPLE_K2_ATA100 0x0043 +#define PCI_DEVICE_ID_APPLE_U3_AGP 0x004b +#define PCI_DEVICE_ID_APPLE_K2_GMAC 0x004c +#define PCI_DEVICE_ID_APPLE_SH_ATA 0x0050 +#define PCI_DEVICE_ID_APPLE_SH_SUNGEM 0x0051 +#define PCI_DEVICE_ID_APPLE_SH_FW 0x0052 +#define PCI_DEVICE_ID_APPLE_U3L_AGP 0x0058 +#define PCI_DEVICE_ID_APPLE_U3H_AGP 0x0059 +#define PCI_DEVICE_ID_APPLE_TIGON3 0x1645 + +#define PCI_VENDOR_ID_YAMAHA 0x1073 +#define PCI_DEVICE_ID_YAMAHA_724 0x0004 +#define PCI_DEVICE_ID_YAMAHA_724F 0x000d +#define PCI_DEVICE_ID_YAMAHA_740 0x000a +#define PCI_DEVICE_ID_YAMAHA_740C 0x000c +#define PCI_DEVICE_ID_YAMAHA_744 0x0010 +#define PCI_DEVICE_ID_YAMAHA_754 0x0012 + +#define PCI_VENDOR_ID_NEXGEN 0x1074 +#define PCI_DEVICE_ID_NEXGEN_82C501 0x4e78 + +#define PCI_VENDOR_ID_QLOGIC 0x1077 +#define PCI_DEVICE_ID_QLOGIC_ISP1020 0x1020 +#define PCI_DEVICE_ID_QLOGIC_ISP1022 0x1022 +#define PCI_DEVICE_ID_QLOGIC_ISP2100 0x2100 +#define PCI_DEVICE_ID_QLOGIC_ISP2200 0x2200 + +#define PCI_VENDOR_ID_CYRIX 0x1078 +#define PCI_DEVICE_ID_CYRIX_5510 0x0000 +#define PCI_DEVICE_ID_CYRIX_PCI_MASTER 0x0001 +#define PCI_DEVICE_ID_CYRIX_5520 0x0002 +#define PCI_DEVICE_ID_CYRIX_5530_LEGACY 0x0100 +#define PCI_DEVICE_ID_CYRIX_5530_SMI 0x0101 +#define PCI_DEVICE_ID_CYRIX_5530_IDE 0x0102 +#define PCI_DEVICE_ID_CYRIX_5530_AUDIO 0x0103 +#define PCI_DEVICE_ID_CYRIX_5530_VIDEO 0x0104 + +#define PCI_VENDOR_ID_LEADTEK 0x107d +#define PCI_DEVICE_ID_LEADTEK_805 0x0000 + +#define PCI_VENDOR_ID_INTERPHASE 0x107e +#define PCI_DEVICE_ID_INTERPHASE_5526 0x0004 +#define PCI_DEVICE_ID_INTERPHASE_55x6 0x0005 +#define PCI_DEVICE_ID_INTERPHASE_5575 0x0008 + +#define PCI_VENDOR_ID_CONTAQ 0x1080 +#define PCI_DEVICE_ID_CONTAQ_82C599 0x0600 +#define PCI_DEVICE_ID_CONTAQ_82C693 0xc693 + +#define PCI_VENDOR_ID_FOREX 0x1083 + +#define PCI_VENDOR_ID_OLICOM 0x108d +#define PCI_DEVICE_ID_OLICOM_OC3136 0x0001 +#define PCI_DEVICE_ID_OLICOM_OC2315 0x0011 +#define PCI_DEVICE_ID_OLICOM_OC2325 0x0012 +#define PCI_DEVICE_ID_OLICOM_OC2183 0x0013 +#define PCI_DEVICE_ID_OLICOM_OC2326 0x0014 +#define PCI_DEVICE_ID_OLICOM_OC6151 0x0021 + +#define PCI_VENDOR_ID_SUN 0x108e +#define PCI_DEVICE_ID_SUN_EBUS 0x1000 +#define PCI_DEVICE_ID_SUN_HAPPYMEAL 0x1001 +#define PCI_DEVICE_ID_SUN_RIO_EBUS 0x1100 +#define PCI_DEVICE_ID_SUN_RIO_GEM 0x1101 +#define PCI_DEVICE_ID_SUN_RIO_1394 0x1102 +#define PCI_DEVICE_ID_SUN_RIO_USB 0x1103 +#define PCI_DEVICE_ID_SUN_GEM 0x2bad +#define PCI_DEVICE_ID_SUN_SIMBA 0x5000 +#define PCI_DEVICE_ID_SUN_PBM 0x8000 +#define PCI_DEVICE_ID_SUN_SCHIZO 0x8001 +#define PCI_DEVICE_ID_SUN_SABRE 0xa000 +#define PCI_DEVICE_ID_SUN_HUMMINGBIRD 0xa001 +#define PCI_DEVICE_ID_SUN_TOMATILLO 0xa801 + +#define PCI_VENDOR_ID_CMD 0x1095 +#define PCI_DEVICE_ID_CMD_640 0x0640 +#define PCI_DEVICE_ID_CMD_643 0x0643 +#define PCI_DEVICE_ID_CMD_646 0x0646 +#define PCI_DEVICE_ID_CMD_647 0x0647 +#define PCI_DEVICE_ID_CMD_648 0x0648 +#define PCI_DEVICE_ID_CMD_649 0x0649 +#define PCI_DEVICE_ID_CMD_670 0x0670 +#define PCI_DEVICE_ID_CMD_680 0x0680 + +#define PCI_DEVICE_ID_SII_680 0x0680 +#define PCI_DEVICE_ID_SII_3112 0x3112 +#define PCI_DEVICE_ID_SII_1210SA 0x0240 + +#define PCI_VENDOR_ID_VISION 0x1098 +#define PCI_DEVICE_ID_VISION_QD8500 0x0001 +#define PCI_DEVICE_ID_VISION_QD8580 0x0002 + +#define PCI_VENDOR_ID_BROOKTREE 0x109e +#define PCI_DEVICE_ID_BROOKTREE_848 0x0350 +#define PCI_DEVICE_ID_BROOKTREE_849A 0x0351 +#define PCI_DEVICE_ID_BROOKTREE_878_1 0x036e +#define PCI_DEVICE_ID_BROOKTREE_878 0x0878 +#define PCI_DEVICE_ID_BROOKTREE_8474 0x8474 + +#define PCI_VENDOR_ID_SIERRA 0x10a8 +#define PCI_DEVICE_ID_SIERRA_STB 0x0000 + +#define PCI_VENDOR_ID_SGI 0x10a9 +#define PCI_DEVICE_ID_SGI_IOC3 0x0003 +#define PCI_DEVICE_ID_SGI_IOC4 0x100a +#define PCI_VENDOR_ID_SGI_LITHIUM 0x1002 + +#define PCI_VENDOR_ID_ACC 0x10aa +#define PCI_DEVICE_ID_ACC_2056 0x0000 + +#define PCI_VENDOR_ID_WINBOND 0x10ad +#define PCI_DEVICE_ID_WINBOND_83769 0x0001 +#define PCI_DEVICE_ID_WINBOND_82C105 0x0105 +#define PCI_DEVICE_ID_WINBOND_83C553 0x0565 + +#define PCI_VENDOR_ID_DATABOOK 0x10b3 +#define PCI_DEVICE_ID_DATABOOK_87144 0xb106 + +#define PCI_VENDOR_ID_PLX 0x10b5 +#define PCI_DEVICE_ID_PLX_R685 0x1030 +#define PCI_DEVICE_ID_PLX_ROMULUS 0x106a +#define PCI_DEVICE_ID_PLX_SPCOM800 0x1076 +#define PCI_DEVICE_ID_PLX_1077 0x1077 +#define PCI_DEVICE_ID_PLX_SPCOM200 0x1103 +#define PCI_DEVICE_ID_PLX_DJINN_ITOO 0x1151 +#define PCI_DEVICE_ID_PLX_R753 0x1152 +#define PCI_DEVICE_ID_PLX_9030 0x9030 +#define PCI_DEVICE_ID_PLX_9050 0x9050 +#define PCI_DEVICE_ID_PLX_9060 0x9060 +#define PCI_DEVICE_ID_PLX_9060ES 0x906E +#define PCI_DEVICE_ID_PLX_9060SD 0x906D +#define PCI_DEVICE_ID_PLX_9080 0x9080 +#define PCI_DEVICE_ID_PLX_GTEK_SERIAL2 0xa001 + +#define PCI_VENDOR_ID_MADGE 0x10b6 +#define PCI_DEVICE_ID_MADGE_MK2 0x0002 +#define PCI_DEVICE_ID_MADGE_C155S 0x1001 + +#define PCI_VENDOR_ID_3COM 0x10b7 +#define PCI_DEVICE_ID_3COM_3C985 0x0001 +#define PCI_DEVICE_ID_3COM_3C940 0x1700 +#define PCI_DEVICE_ID_3COM_3C339 0x3390 +#define PCI_DEVICE_ID_3COM_3C359 0x3590 +#define PCI_DEVICE_ID_3COM_3C590 0x5900 +#define PCI_DEVICE_ID_3COM_3C595TX 0x5950 +#define PCI_DEVICE_ID_3COM_3C595T4 0x5951 +#define PCI_DEVICE_ID_3COM_3C595MII 0x5952 +#define PCI_DEVICE_ID_3COM_3C940B 0x80eb +#define PCI_DEVICE_ID_3COM_3C900TPO 0x9000 +#define PCI_DEVICE_ID_3COM_3C900COMBO 0x9001 +#define PCI_DEVICE_ID_3COM_3C905TX 0x9050 +#define PCI_DEVICE_ID_3COM_3C905T4 0x9051 +#define PCI_DEVICE_ID_3COM_3C905B_TX 0x9055 +#define PCI_DEVICE_ID_3COM_3CR990 0x9900 +#define PCI_DEVICE_ID_3COM_3CR990_TX_95 0x9902 +#define PCI_DEVICE_ID_3COM_3CR990_TX_97 0x9903 +#define PCI_DEVICE_ID_3COM_3CR990B 0x9904 +#define PCI_DEVICE_ID_3COM_3CR990_FX 0x9905 +#define PCI_DEVICE_ID_3COM_3CR990SVR95 0x9908 +#define PCI_DEVICE_ID_3COM_3CR990SVR97 0x9909 +#define PCI_DEVICE_ID_3COM_3CR990SVR 0x990a + +#define PCI_VENDOR_ID_SMC 0x10b8 +#define PCI_DEVICE_ID_SMC_EPIC100 0x0005 + +#define PCI_VENDOR_ID_AL 0x10b9 +#define PCI_DEVICE_ID_AL_M1445 0x1445 +#define PCI_DEVICE_ID_AL_M1449 0x1449 +#define PCI_DEVICE_ID_AL_M1451 0x1451 +#define PCI_DEVICE_ID_AL_M1461 0x1461 +#define PCI_DEVICE_ID_AL_M1489 0x1489 +#define PCI_DEVICE_ID_AL_M1511 0x1511 +#define PCI_DEVICE_ID_AL_M1513 0x1513 +#define PCI_DEVICE_ID_AL_M1521 0x1521 +#define PCI_DEVICE_ID_AL_M1523 0x1523 +#define PCI_DEVICE_ID_AL_M1531 0x1531 +#define PCI_DEVICE_ID_AL_M1533 0x1533 +#define PCI_DEVICE_ID_AL_M1535 0x1535 +#define PCI_DEVICE_ID_AL_M1541 0x1541 +#define PCI_DEVICE_ID_AL_M1543 0x1543 +#define PCI_DEVICE_ID_AL_M1563 0x1563 +#define PCI_DEVICE_ID_AL_M1621 0x1621 +#define PCI_DEVICE_ID_AL_M1631 0x1631 +#define PCI_DEVICE_ID_AL_M1632 0x1632 +#define PCI_DEVICE_ID_AL_M1641 0x1641 +#define PCI_DEVICE_ID_AL_M1644 0x1644 +#define PCI_DEVICE_ID_AL_M1647 0x1647 +#define PCI_DEVICE_ID_AL_M1651 0x1651 +#define PCI_DEVICE_ID_AL_M1671 0x1671 +#define PCI_DEVICE_ID_AL_M1681 0x1681 +#define PCI_DEVICE_ID_AL_M1683 0x1683 +#define PCI_DEVICE_ID_AL_M1689 0x1689 +#define PCI_DEVICE_ID_AL_M3307 0x3307 +#define PCI_DEVICE_ID_AL_M4803 0x5215 +#define PCI_DEVICE_ID_AL_M5219 0x5219 +#define PCI_DEVICE_ID_AL_M5228 0x5228 +#define PCI_DEVICE_ID_AL_M5229 0x5229 +#define PCI_DEVICE_ID_AL_M5237 0x5237 +#define PCI_DEVICE_ID_AL_M5243 0x5243 +#define PCI_DEVICE_ID_AL_M5451 0x5451 +#define PCI_DEVICE_ID_AL_M7101 0x7101 + +#define PCI_VENDOR_ID_MITSUBISHI 0x10ba + +#define PCI_VENDOR_ID_SURECOM 0x10bd +#define PCI_DEVICE_ID_SURECOM_NE34 0x0e34 + +#define PCI_VENDOR_ID_NEOMAGIC 0x10c8 +#define PCI_DEVICE_ID_NEOMAGIC_MAGICGRAPH_NM2070 0x0001 +#define PCI_DEVICE_ID_NEOMAGIC_MAGICGRAPH_128V 0x0002 +#define PCI_DEVICE_ID_NEOMAGIC_MAGICGRAPH_128ZV 0x0003 +#define PCI_DEVICE_ID_NEOMAGIC_MAGICGRAPH_NM2160 0x0004 +#define PCI_DEVICE_ID_NEOMAGIC_MAGICMEDIA_256AV 0x0005 +#define PCI_DEVICE_ID_NEOMAGIC_MAGICGRAPH_128ZVPLUS 0x0083 + +#define PCI_VENDOR_ID_ASP 0x10cd +#define PCI_DEVICE_ID_ASP_ABP940 0x1200 +#define PCI_DEVICE_ID_ASP_ABP940U 0x1300 +#define PCI_DEVICE_ID_ASP_ABP940UW 0x2300 + +#define PCI_VENDOR_ID_MACRONIX 0x10d9 +#define PCI_DEVICE_ID_MACRONIX_MX98713 0x0512 +#define PCI_DEVICE_ID_MACRONIX_MX987x5 0x0531 + +#define PCI_VENDOR_ID_TCONRAD 0x10da +#define PCI_DEVICE_ID_TCONRAD_TOKENRING 0x0508 + +#define PCI_VENDOR_ID_CERN 0x10dc +#define PCI_DEVICE_ID_CERN_SPSB_PMC 0x0001 +#define PCI_DEVICE_ID_CERN_SPSB_PCI 0x0002 +#define PCI_DEVICE_ID_CERN_HIPPI_DST 0x0021 +#define PCI_DEVICE_ID_CERN_HIPPI_SRC 0x0022 + +#define PCI_VENDOR_ID_NVIDIA 0x10de +#define PCI_DEVICE_ID_NVIDIA_TNT 0x0020 +#define PCI_DEVICE_ID_NVIDIA_TNT2 0x0028 +#define PCI_DEVICE_ID_NVIDIA_UTNT2 0x0029 +#define PCI_DEVICE_ID_NVIDIA_TNT_UNKNOWN 0x002a +#define PCI_DEVICE_ID_NVIDIA_VTNT2 0x002C +#define PCI_DEVICE_ID_NVIDIA_UVTNT2 0x002D +#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_IDE 0x0035 +#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_SATA 0x0036 +#define PCI_DEVICE_ID_NVIDIA_NVENET_10 0x0037 +#define PCI_DEVICE_ID_NVIDIA_NVENET_11 0x0038 +#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_SATA2 0x003e +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_6800_ULTRA 0x0040 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_6800 0x0041 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_6800_LE 0x0042 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_6800_GT 0x0045 +#define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_4000 0x004E +#define PCI_DEVICE_ID_NVIDIA_NFORCE4_SMBUS 0x0052 +#define PCI_DEVICE_ID_NVIDIA_NFORCE_CK804_IDE 0x0053 +#define PCI_DEVICE_ID_NVIDIA_NFORCE_CK804_SATA 0x0054 +#define PCI_DEVICE_ID_NVIDIA_NFORCE_CK804_SATA2 0x0055 +#define PCI_DEVICE_ID_NVIDIA_NVENET_8 0x0056 +#define PCI_DEVICE_ID_NVIDIA_NVENET_9 0x0057 +#define PCI_DEVICE_ID_NVIDIA_CK804_AUDIO 0x0059 +#define PCI_DEVICE_ID_NVIDIA_NFORCE2_SMBUS 0x0064 +#define PCI_DEVICE_ID_NVIDIA_NFORCE2_IDE 0x0065 +#define PCI_DEVICE_ID_NVIDIA_NVENET_2 0x0066 +#define PCI_DEVICE_ID_NVIDIA_MCP2_AUDIO 0x006a +#define PCI_DEVICE_ID_NVIDIA_NFORCE2S_SMBUS 0x0084 +#define PCI_DEVICE_ID_NVIDIA_NFORCE2S_IDE 0x0085 +#define PCI_DEVICE_ID_NVIDIA_NVENET_4 0x0086 +#define PCI_DEVICE_ID_NVIDIA_NVENET_5 0x008c +#define PCI_DEVICE_ID_NVIDIA_NFORCE2S_SATA 0x008e +#define PCI_DEVICE_ID_NVIDIA_ITNT2 0x00A0 +#define PCI_DEVICE_ID_GEFORCE_6800A 0x00c1 +#define PCI_DEVICE_ID_GEFORCE_6800A_LE 0x00c2 +#define PCI_DEVICE_ID_GEFORCE_GO_6800 0x00c8 +#define PCI_DEVICE_ID_GEFORCE_GO_6800_ULTRA 0x00c9 +#define PCI_DEVICE_ID_QUADRO_FX_GO1400 0x00cc +#define PCI_DEVICE_ID_QUADRO_FX_1400 0x00ce +#define PCI_DEVICE_ID_NVIDIA_NFORCE3 0x00d1 +#define PCI_DEVICE_ID_NVIDIA_MCP3_AUDIO 0x00da +#define PCI_DEVICE_ID_NVIDIA_NFORCE3_SMBUS 0x00d4 +#define PCI_DEVICE_ID_NVIDIA_NFORCE3_IDE 0x00d5 +#define PCI_DEVICE_ID_NVIDIA_NVENET_3 0x00d6 +#define PCI_DEVICE_ID_NVIDIA_MCP3_AUDIO 0x00da +#define PCI_DEVICE_ID_NVIDIA_NVENET_7 0x00df +#define PCI_DEVICE_ID_NVIDIA_NFORCE3S 0x00e1 +#define PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA 0x00e3 +#define PCI_DEVICE_ID_NVIDIA_NFORCE3S_SMBUS 0x00e4 +#define PCI_DEVICE_ID_NVIDIA_NFORCE3S_IDE 0x00e5 +#define PCI_DEVICE_ID_NVIDIA_NVENET_6 0x00e6 +#define PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA2 0x00ee +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_SDR 0x0100 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_DDR 0x0101 +#define PCI_DEVICE_ID_NVIDIA_QUADRO 0x0103 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE2_MX 0x0110 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE2_MX2 0x0111 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE2_GO 0x0112 +#define PCI_DEVICE_ID_NVIDIA_QUADRO2_MXR 0x0113 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_6600_GT 0x0140 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_6600 0x0141 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_6610_XL 0x0145 +#define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_540 0x014E +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_6200 0x014F +#define PCI_DEVICE_ID_NVIDIA_GEFORCE2_GTS 0x0150 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE2_GTS2 0x0151 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE2_ULTRA 0x0152 +#define PCI_DEVICE_ID_NVIDIA_QUADRO2_PRO 0x0153 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_6200_TURBOCACHE 0x0161 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_GO_6200 0x0164 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_GO_6250 0x0166 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_GO_6200_1 0x0167 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_GO_6250_1 0x0168 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX_460 0x0170 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX_440 0x0171 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX_420 0x0172 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX_440_SE 0x0173 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_440_GO 0x0174 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_420_GO 0x0175 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_420_GO_M32 0x0176 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_460_GO 0x0177 +#define PCI_DEVICE_ID_NVIDIA_QUADRO4_500XGL 0x0178 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_440_GO_M64 0x0179 +#define PCI_DEVICE_ID_NVIDIA_QUADRO4_200 0x017A +#define PCI_DEVICE_ID_NVIDIA_QUADRO4_550XGL 0x017B +#define PCI_DEVICE_ID_NVIDIA_QUADRO4_500_GOGL 0x017C +#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_410_GO_M16 0x017D +#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX_440_8X 0x0181 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX_440SE_8X 0x0182 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX_420_8X 0x0183 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_448_GO 0x0186 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_488_GO 0x0187 +#define PCI_DEVICE_ID_NVIDIA_QUADRO4_580_XGL 0x0188 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX_MAC 0x0189 +#define PCI_DEVICE_ID_NVIDIA_QUADRO4_280_NVS 0x018A +#define PCI_DEVICE_ID_NVIDIA_QUADRO4_380_XGL 0x018B +#define PCI_DEVICE_ID_NVIDIA_IGEFORCE2 0x01a0 +#define PCI_DEVICE_ID_NVIDIA_NFORCE 0x01a4 +#define PCI_DEVICE_ID_NVIDIA_MCP1_AUDIO 0x01b1 +#define PCI_DEVICE_ID_NVIDIA_NFORCE_SMBUS 0x01b4 +#define PCI_DEVICE_ID_NVIDIA_NFORCE_IDE 0x01bc +#define PCI_DEVICE_ID_NVIDIA_NVENET_1 0x01c3 +#define PCI_DEVICE_ID_NVIDIA_NFORCE2 0x01e0 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE3 0x0200 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE3_1 0x0201 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE3_2 0x0202 +#define PCI_DEVICE_ID_NVIDIA_QUADRO_DDC 0x0203 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_6800B 0x0211 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_6800B_LE 0x0212 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_6800B_GT 0x0215 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI_4600 0x0250 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI_4400 0x0251 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI_4200 0x0253 +#define PCI_DEVICE_ID_NVIDIA_QUADRO4_900XGL 0x0258 +#define PCI_DEVICE_ID_NVIDIA_QUADRO4_750XGL 0x0259 +#define PCI_DEVICE_ID_NVIDIA_QUADRO4_700XGL 0x025B +#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP51_IDE 0x0265 +#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP51_SATA 0x0266 +#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP51_SATA2 0x0267 +#define PCI_DEVICE_ID_NVIDIA_NVENET_12 0x0268 +#define PCI_DEVICE_ID_NVIDIA_NVENET_13 0x0269 +#define PCI_DEVICE_ID_NVIDIA_MCP51_AUDIO 0x026B +#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI_4800 0x0280 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI_4800_8X 0x0281 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI_4800SE 0x0282 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_4200_GO 0x0286 +#define PCI_DEVICE_ID_NVIDIA_QUADRO4_980_XGL 0x0288 +#define PCI_DEVICE_ID_NVIDIA_QUADRO4_780_XGL 0x0289 +#define PCI_DEVICE_ID_NVIDIA_QUADRO4_700_GOGL 0x028C +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5800_ULTRA 0x0301 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5800 0x0302 +#define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_2000 0x0308 +#define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_1000 0x0309 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5600_ULTRA 0x0311 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5600 0x0312 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5600SE 0x0314 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5600 0x031A +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5650 0x031B +#define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_GO700 0x031C +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5200 0x0320 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5200_ULTRA 0x0321 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5200_1 0x0322 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5200SE 0x0323 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5200 0x0324 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5250 0x0325 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5500 0x0326 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5100 0x0327 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5250_32 0x0328 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO_5200 0x0329 +#define PCI_DEVICE_ID_NVIDIA_QUADRO_NVS_280_PCI 0x032A +#define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_500 0x032B +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5300 0x032C +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5100 0x032D +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5900_ULTRA 0x0330 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5900 0x0331 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5900XT 0x0332 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5950_ULTRA 0x0333 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5900ZT 0x0334 +#define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_3000 0x0338 +#define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_700 0x033F +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5700_ULTRA 0x0341 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5700 0x0342 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5700LE 0x0343 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5700VE 0x0344 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5700_1 0x0347 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5700_2 0x0348 +#define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_GO1000 0x034C +#define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_1100 0x034E + +#define PCI_VENDOR_ID_IMS 0x10e0 +#define PCI_DEVICE_ID_IMS_8849 0x8849 +#define PCI_DEVICE_ID_IMS_TT128 0x9128 +#define PCI_DEVICE_ID_IMS_TT3D 0x9135 + +#define PCI_VENDOR_ID_TEKRAM2 0x10e1 +#define PCI_DEVICE_ID_TEKRAM2_690c 0x690c + +#define PCI_VENDOR_ID_TUNDRA 0x10e3 +#define PCI_DEVICE_ID_TUNDRA_CA91C042 0x0000 + +#define PCI_VENDOR_ID_AMCC 0x10e8 +#define PCI_DEVICE_ID_AMCC_MYRINET 0x8043 +#define PCI_DEVICE_ID_AMCC_PARASTATION 0x8062 +#define PCI_DEVICE_ID_AMCC_S5933 0x807d +#define PCI_DEVICE_ID_AMCC_S5933_HEPC3 0x809c + +#define PCI_VENDOR_ID_INTERG 0x10ea +#define PCI_DEVICE_ID_INTERG_1680 0x1680 +#define PCI_DEVICE_ID_INTERG_1682 0x1682 +#define PCI_DEVICE_ID_INTERG_2000 0x2000 +#define PCI_DEVICE_ID_INTERG_2010 0x2010 +#define PCI_DEVICE_ID_INTERG_5000 0x5000 +#define PCI_DEVICE_ID_INTERG_5050 0x5050 + +#define PCI_VENDOR_ID_REALTEK 0x10ec +#define PCI_DEVICE_ID_REALTEK_8029 0x8029 +#define PCI_DEVICE_ID_REALTEK_8129 0x8129 +#define PCI_DEVICE_ID_REALTEK_8139 0x8139 +#define PCI_DEVICE_ID_REALTEK_8169 0x8169 + +#define PCI_VENDOR_ID_XILINX 0x10ee +#define PCI_DEVICE_ID_TURBOPAM 0x4020 + +#define PCI_VENDOR_ID_TRUEVISION 0x10fa +#define PCI_DEVICE_ID_TRUEVISION_T1000 0x000c + +#define PCI_VENDOR_ID_INIT 0x1101 +#define PCI_DEVICE_ID_INIT_320P 0x9100 +#define PCI_DEVICE_ID_INIT_360P 0x9500 + +#define PCI_VENDOR_ID_CREATIVE 0x1102 // duplicate: ECTIVA +#define PCI_DEVICE_ID_CREATIVE_EMU10K1 0x0002 + +#define PCI_VENDOR_ID_ECTIVA 0x1102 // duplicate: CREATIVE +#define PCI_DEVICE_ID_ECTIVA_EV1938 0x8938 + +#define PCI_VENDOR_ID_TTI 0x1103 +#define PCI_DEVICE_ID_TTI_HPT343 0x0003 +#define PCI_DEVICE_ID_TTI_HPT366 0x0004 +#define PCI_DEVICE_ID_TTI_HPT372 0x0005 +#define PCI_DEVICE_ID_TTI_HPT302 0x0006 +#define PCI_DEVICE_ID_TTI_HPT371 0x0007 +#define PCI_DEVICE_ID_TTI_HPT374 0x0008 +#define PCI_DEVICE_ID_TTI_HPT372N 0x0009 // apparently a 372N variant? + +#define PCI_VENDOR_ID_VIA 0x1106 +#define PCI_DEVICE_ID_VIA_8763_0 0x0198 +#define PCI_DEVICE_ID_VIA_8380_0 0x0204 +#define PCI_DEVICE_ID_VIA_3238_0 0x0238 +#define PCI_DEVICE_ID_VIA_PT880 0x0258 +#define PCI_DEVICE_ID_VIA_PX8X0_0 0x0259 +#define PCI_DEVICE_ID_VIA_3269_0 0x0269 +#define PCI_DEVICE_ID_VIA_K8T800PRO_0 0x0282 +#define PCI_DEVICE_ID_VIA_8363_0 0x0305 +#define PCI_DEVICE_ID_VIA_8371_0 0x0391 +#define PCI_DEVICE_ID_VIA_8501_0 0x0501 +#define PCI_DEVICE_ID_VIA_82C505 0x0505 +#define PCI_DEVICE_ID_VIA_82C561 0x0561 +#define PCI_DEVICE_ID_VIA_82C586_1 0x0571 +#define PCI_DEVICE_ID_VIA_82C576 0x0576 +#define PCI_DEVICE_ID_VIA_82C585 0x0585 +#define PCI_DEVICE_ID_VIA_82C586_0 0x0586 +#define PCI_DEVICE_ID_VIA_82C595 0x0595 +#define PCI_DEVICE_ID_VIA_82C596 0x0596 +#define PCI_DEVICE_ID_VIA_82C597_0 0x0597 +#define PCI_DEVICE_ID_VIA_82C598_0 0x0598 +#define PCI_DEVICE_ID_VIA_8601_0 0x0601 +#define PCI_DEVICE_ID_VIA_8605_0 0x0605 +#define PCI_DEVICE_ID_VIA_82C680 0x0680 +#define PCI_DEVICE_ID_VIA_82C686 0x0686 +#define PCI_DEVICE_ID_VIA_82C691_0 0x0691 +#define PCI_DEVICE_ID_VIA_82C693 0x0693 +#define PCI_DEVICE_ID_VIA_82C693_1 0x0698 +#define PCI_DEVICE_ID_VIA_82C926 0x0926 +#define PCI_DEVICE_ID_VIA_82C576_1 0x1571 +#define PCI_DEVICE_ID_VIA_82C595_97 0x1595 +#define PCI_DEVICE_ID_VIA_82C586_2 0x3038 +#define PCI_DEVICE_ID_VIA_82C586_3 0x3040 +#define PCI_DEVICE_ID_VIA_6305 0x3044 +#define PCI_DEVICE_ID_VIA_82C596_3 0x3050 +#define PCI_DEVICE_ID_VIA_82C596B_3 0x3051 +#define PCI_DEVICE_ID_VIA_82C686_4 0x3057 +#define PCI_DEVICE_ID_VIA_82C686_5 0x3058 +#define PCI_DEVICE_ID_VIA_8233_5 0x3059 +#define PCI_DEVICE_ID_VIA_8233_7 0x3065 +#define PCI_DEVICE_ID_VIA_82C686_6 0x3068 +#define PCI_DEVICE_ID_VIA_8233_0 0x3074 +#define PCI_DEVICE_ID_VIA_8633_0 0x3091 +#define PCI_DEVICE_ID_VIA_8367_0 0x3099 +#define PCI_DEVICE_ID_VIA_8653_0 0x3101 +#define PCI_DEVICE_ID_VIA_8622 0x3102 +#define PCI_DEVICE_ID_VIA_8233C_0 0x3109 +#define PCI_DEVICE_ID_VIA_8361 0x3112 +#define PCI_DEVICE_ID_VIA_XM266 0x3116 +#define PCI_DEVICE_ID_VIA_612X 0x3119 +#define PCI_DEVICE_ID_VIA_862X_0 0x3123 +#define PCI_DEVICE_ID_VIA_8753_0 0x3128 +#define PCI_DEVICE_ID_VIA_8233A 0x3147 +#define PCI_DEVICE_ID_VIA_8703_51_0 0x3148 +#define PCI_DEVICE_ID_VIA_8237_SATA 0x3149 +#define PCI_DEVICE_ID_VIA_XN266 0x3156 +#define PCI_DEVICE_ID_VIA_8754C_0 0x3168 +#define PCI_DEVICE_ID_VIA_8235 0x3177 +#define PCI_DEVICE_ID_VIA_P4N333 0x3178 +#define PCI_DEVICE_ID_VIA_8385_0 0x3188 +#define PCI_DEVICE_ID_VIA_8377_0 0x3189 +#define PCI_DEVICE_ID_VIA_8378_0 0x3205 +#define PCI_DEVICE_ID_VIA_8783_0 0x3208 +#define PCI_DEVICE_ID_VIA_P4M400 0x3209 +#define PCI_DEVICE_ID_VIA_8237 0x3227 +#define PCI_DEVICE_ID_VIA_3296_0 0x0296 +#define PCI_DEVICE_ID_VIA_86C100A 0x6100 +#define PCI_DEVICE_ID_VIA_8231 0x8231 +#define PCI_DEVICE_ID_VIA_8231_4 0x8235 +#define PCI_DEVICE_ID_VIA_8365_1 0x8305 +#define PCI_DEVICE_ID_VIA_8371_1 0x8391 +#define PCI_DEVICE_ID_VIA_8501_1 0x8501 +#define PCI_DEVICE_ID_VIA_82C597_1 0x8597 +#define PCI_DEVICE_ID_VIA_82C598_1 0x8598 +#define PCI_DEVICE_ID_VIA_8601_1 0x8601 +#define PCI_DEVICE_ID_VIA_8505_1 0x8605 +#define PCI_DEVICE_ID_VIA_8633_1 0xB091 +#define PCI_DEVICE_ID_VIA_8367_1 0xB099 +#define PCI_DEVICE_ID_VIA_P4X266_1 0xB101 +#define PCI_DEVICE_ID_VIA_8615_1 0xB103 +#define PCI_DEVICE_ID_VIA_8361_1 0xB112 +#define PCI_DEVICE_ID_VIA_8235_1 0xB168 +#define PCI_DEVICE_ID_VIA_838X_1 0xB188 +#define PCI_DEVICE_ID_VIA_83_87XX_1 0xB198 + +#define PCI_VENDOR_ID_SIEMENS 0x110A +#define PCI_DEVICE_ID_SIEMENS_DSCC4 0x2102 + +#define PCI_VENDOR_ID_SMC2 0x1113 +#define PCI_DEVICE_ID_SMC2_1211TX 0x1211 + +#define PCI_VENDOR_ID_VORTEX 0x1119 +#define PCI_DEVICE_ID_VORTEX_GDT60x0 0x0000 +#define PCI_DEVICE_ID_VORTEX_GDT6000B 0x0001 +#define PCI_DEVICE_ID_VORTEX_GDT6x10 0x0002 +#define PCI_DEVICE_ID_VORTEX_GDT6x20 0x0003 +#define PCI_DEVICE_ID_VORTEX_GDT6530 0x0004 +#define PCI_DEVICE_ID_VORTEX_GDT6550 0x0005 +#define PCI_DEVICE_ID_VORTEX_GDT6x17 0x0006 +#define PCI_DEVICE_ID_VORTEX_GDT6x27 0x0007 +#define PCI_DEVICE_ID_VORTEX_GDT6537 0x0008 +#define PCI_DEVICE_ID_VORTEX_GDT6557 0x0009 +#define PCI_DEVICE_ID_VORTEX_GDT6x15 0x000a +#define PCI_DEVICE_ID_VORTEX_GDT6x25 0x000b +#define PCI_DEVICE_ID_VORTEX_GDT6535 0x000c +#define PCI_DEVICE_ID_VORTEX_GDT6555 0x000d +#define PCI_DEVICE_ID_VORTEX_GDT6x17RP 0x0100 +#define PCI_DEVICE_ID_VORTEX_GDT6x27RP 0x0101 +#define PCI_DEVICE_ID_VORTEX_GDT6537RP 0x0102 +#define PCI_DEVICE_ID_VORTEX_GDT6557RP 0x0103 +#define PCI_DEVICE_ID_VORTEX_GDT6x11RP 0x0104 +#define PCI_DEVICE_ID_VORTEX_GDT6x21RP 0x0105 +#define PCI_DEVICE_ID_VORTEX_GDT6x17RP1 0x0110 +#define PCI_DEVICE_ID_VORTEX_GDT6x27RP1 0x0111 +#define PCI_DEVICE_ID_VORTEX_GDT6537RP1 0x0112 +#define PCI_DEVICE_ID_VORTEX_GDT6557RP1 0x0113 +#define PCI_DEVICE_ID_VORTEX_GDT6x11RP1 0x0114 +#define PCI_DEVICE_ID_VORTEX_GDT6x21RP1 0x0115 +#define PCI_DEVICE_ID_VORTEX_GDT6x17RP2 0x0120 +#define PCI_DEVICE_ID_VORTEX_GDT6x27RP2 0x0121 +#define PCI_DEVICE_ID_VORTEX_GDT6537RP2 0x0122 +#define PCI_DEVICE_ID_VORTEX_GDT6557RP2 0x0123 +#define PCI_DEVICE_ID_VORTEX_GDT6x11RP2 0x0124 +#define PCI_DEVICE_ID_VORTEX_GDT6x21RP2 0x0125 + +#define PCI_VENDOR_ID_EF 0x111a +#define PCI_DEVICE_ID_EF_ATM_FPGA 0x0000 +#define PCI_DEVICE_ID_EF_ATM_ASIC 0x0002 +#define PCI_VENDOR_ID_EF_ATM_LANAI2 0x0003 +#define PCI_VENDOR_ID_EF_ATM_LANAIHB 0x0005 + +#define PCI_VENDOR_ID_IDT 0x111d +#define PCI_DEVICE_ID_IDT_IDT77201 0x0001 + +#define PCI_VENDOR_ID_FORE 0x1127 +#define PCI_DEVICE_ID_FORE_PCA200PC 0x0210 +#define PCI_DEVICE_ID_FORE_PCA200E 0x0300 + +#define PCI_VENDOR_ID_IMAGINGTECH 0x112f +#define PCI_DEVICE_ID_IMAGINGTECH_ICPCI 0x0000 + +#define PCI_VENDOR_ID_PHILIPS 0x1131 +#define PCI_DEVICE_ID_PHILIPS_SAA7145 0x7145 +#define PCI_DEVICE_ID_PHILIPS_SAA7146 0x7146 +#define PCI_DEVICE_ID_PHILIPS_SAA9730 0x9730 + +#define PCI_VENDOR_ID_EICON 0x1133 +#define PCI_DEVICE_ID_EICON_DIVA20PRO 0xe001 +#define PCI_DEVICE_ID_EICON_DIVA20 0xe002 +#define PCI_DEVICE_ID_EICON_DIVA20PRO_U 0xe003 +#define PCI_DEVICE_ID_EICON_DIVA20_U 0xe004 +#define PCI_DEVICE_ID_EICON_DIVA201 0xe005 +#define PCI_DEVICE_ID_EICON_DIVA202 0xe00b +#define PCI_DEVICE_ID_EICON_MAESTRA 0xe010 +#define PCI_DEVICE_ID_EICON_MAESTRAQ 0xe012 +#define PCI_DEVICE_ID_EICON_MAESTRAQ_U 0xe013 +#define PCI_DEVICE_ID_EICON_MAESTRAP 0xe014 + +#define PCI_VENDOR_ID_ZIATECH 0x1138 +#define PCI_DEVICE_ID_ZIATECH_5550_HC 0x5550 + +#define PCI_VENDOR_ID_CYCLONE 0x113c +#define PCI_DEVICE_ID_CYCLONE_SDK 0x0001 + +#define PCI_VENDOR_ID_ALLIANCE 0x1142 +#define PCI_DEVICE_ID_ALLIANCE_PROMOTIO 0x3210 +#define PCI_DEVICE_ID_ALLIANCE_PROVIDEO 0x6422 +#define PCI_DEVICE_ID_ALLIANCE_AT24 0x6424 +#define PCI_DEVICE_ID_ALLIANCE_AT3D 0x643d + +#define PCI_VENDOR_ID_SYSKONNECT 0x1148 +#define PCI_DEVICE_ID_SYSKONNECT_FP 0x4000 +#define PCI_DEVICE_ID_SYSKONNECT_TR 0x4200 +#define PCI_DEVICE_ID_SYSKONNECT_GE 0x4300 +#define PCI_DEVICE_ID_SYSKONNECT_YU 0x4320 +#define PCI_DEVICE_ID_SYSKONNECT_9DXX 0x4400 +#define PCI_DEVICE_ID_SYSKONNECT_9MXX 0x4500 + +#define PCI_VENDOR_ID_VMIC 0x114a +#define PCI_DEVICE_ID_VMIC_VME 0x7587 + +#define PCI_VENDOR_ID_DIGI 0x114f +#define PCI_DEVICE_ID_DIGI_EPC 0x0002 +#define PCI_DEVICE_ID_DIGI_RIGHTSWITCH 0x0003 +#define PCI_DEVICE_ID_DIGI_XEM 0x0004 +#define PCI_DEVICE_ID_DIGI_XR 0x0005 +#define PCI_DEVICE_ID_DIGI_CX 0x0006 +#define PCI_DEVICE_ID_DIGI_XRJ 0x0009 +#define PCI_DEVICE_ID_DIGI_EPCJ 0x000a +#define PCI_DEVICE_ID_DIGI_XR_920 0x0027 +#define PCI_DEVICE_ID_DIGI_DF_M_IOM2_E 0x0070 +#define PCI_DEVICE_ID_DIGI_DF_M_E 0x0071 +#define PCI_DEVICE_ID_DIGI_DF_M_IOM2_A 0x0072 +#define PCI_DEVICE_ID_DIGI_DF_M_A 0x0073 +#define PCI_DEVICE_ID_NEO_2DB9 0x00C8 +#define PCI_DEVICE_ID_NEO_2DB9PRI 0x00C9 +#define PCI_DEVICE_ID_NEO_2RJ45 0x00CA +#define PCI_DEVICE_ID_NEO_2RJ45PRI 0x00CB + +#define PCI_VENDOR_ID_MUTECH 0x1159 +#define PCI_DEVICE_ID_MUTECH_MV1000 0x0001 + +#define PCI_VENDOR_ID_XIRCOM 0x115d +#define PCI_DEVICE_ID_XIRCOM_X3201_ETH 0x0003 +#define PCI_DEVICE_ID_XIRCOM_RBM56G 0x0101 +#define PCI_DEVICE_ID_XIRCOM_X3201_MDM 0x0103 + +#define PCI_VENDOR_ID_RENDITION 0x1163 +#define PCI_DEVICE_ID_RENDITION_VERITE 0x0001 +#define PCI_DEVICE_ID_RENDITION_VERITE2100 0x2000 + +#define PCI_VENDOR_ID_SERVERWORKS 0x1166 +#define PCI_DEVICE_ID_SERVERWORKS_HE 0x0008 +#define PCI_DEVICE_ID_SERVERWORKS_LE 0x0009 +#define PCI_DEVICE_ID_SERVERWORKS_CIOB30 0x0010 +#define PCI_DEVICE_ID_SERVERWORKS_CMIC_HE 0x0011 +#define PCI_DEVICE_ID_SERVERWORKS_GCNB_LE 0x0017 +#define PCI_DEVICE_ID_SERVERWORKS_OSB4 0x0200 +#define PCI_DEVICE_ID_SERVERWORKS_CSB5 0x0201 +#define PCI_DEVICE_ID_SERVERWORKS_CSB6 0x0203 +#define PCI_DEVICE_ID_SERVERWORKS_OSB4IDE 0x0211 +#define PCI_DEVICE_ID_SERVERWORKS_CSB5IDE 0x0212 +#define PCI_DEVICE_ID_SERVERWORKS_CSB6IDE 0x0213 +#define PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2 0x0217 +#define PCI_DEVICE_ID_SERVERWORKS_OSB4USB 0x0220 +#define PCI_DEVICE_ID_SERVERWORKS_CSB5USB PCI_DEVICE_ID_SERVERWORKS_OSB4USB +#define PCI_DEVICE_ID_SERVERWORKS_CSB6USB 0x0221 +#define PCI_DEVICE_ID_SERVERWORKS_GCLE 0x0225 +#define PCI_DEVICE_ID_SERVERWORKS_GCLE2 0x0227 +#define PCI_DEVICE_ID_SERVERWORKS_CSB5ISA 0x0230 + +#define PCI_VENDOR_ID_SBE 0x1176 +#define PCI_DEVICE_ID_SBE_WANXL100 0x0301 +#define PCI_DEVICE_ID_SBE_WANXL200 0x0302 +#define PCI_DEVICE_ID_SBE_WANXL400 0x0104 + +#define PCI_VENDOR_ID_TOSHIBA 0x1179 +#define PCI_DEVICE_ID_TOSHIBA_PICCOLO 0x0102 +#define PCI_DEVICE_ID_TOSHIBA_PICCOLO_1 0x0103 +#define PCI_DEVICE_ID_TOSHIBA_PICCOLO_2 0x0105 +#define PCI_DEVICE_ID_TOSHIBA_601 0x0601 +#define PCI_DEVICE_ID_TOSHIBA_TOPIC95 0x060a +#define PCI_DEVICE_ID_TOSHIBA_TOPIC95_A 0x0603 +#define PCI_DEVICE_ID_TOSHIBA_TOPIC95_B 0x060a +#define PCI_DEVICE_ID_TOSHIBA_TOPIC97 0x060f +#define PCI_DEVICE_ID_TOSHIBA_TOPIC100 0x0617 + +#define PCI_VENDOR_ID_TOSHIBA_2 0x102f +#define PCI_DEVICE_ID_TOSHIBA_TX3927 0x000a +#define PCI_DEVICE_ID_TOSHIBA_TC35815CF 0x0030 +#define PCI_DEVICE_ID_TOSHIBA_TX4927 0x0180 +#define PCI_DEVICE_ID_TOSHIBA_TC86C001_MISC 0x0108 + +#define PCI_VENDOR_ID_RICOH 0x1180 +#define PCI_DEVICE_ID_RICOH_RL5C465 0x0465 +#define PCI_DEVICE_ID_RICOH_RL5C466 0x0466 +#define PCI_DEVICE_ID_RICOH_RL5C475 0x0475 +#define PCI_DEVICE_ID_RICOH_RL5C476 0x0476 +#define PCI_DEVICE_ID_RICOH_RL5C478 0x0478 + +#define PCI_VENDOR_ID_DLINK 0x1186 +#define PCI_DEVICE_ID_DLINK_DGE510T 0x4c00 + +#define PCI_VENDOR_ID_ARTOP 0x1191 +#define PCI_DEVICE_ID_ARTOP_ATP8400 0x0004 +#define PCI_DEVICE_ID_ARTOP_ATP850UF 0x0005 +#define PCI_DEVICE_ID_ARTOP_ATP860 0x0006 +#define PCI_DEVICE_ID_ARTOP_ATP860R 0x0007 +#define PCI_DEVICE_ID_ARTOP_ATP865 0x0008 +#define PCI_DEVICE_ID_ARTOP_ATP865R 0x0009 +#define PCI_DEVICE_ID_ARTOP_AEC7610 0x8002 +#define PCI_DEVICE_ID_ARTOP_AEC7612UW 0x8010 +#define PCI_DEVICE_ID_ARTOP_AEC7612U 0x8020 +#define PCI_DEVICE_ID_ARTOP_AEC7612S 0x8030 +#define PCI_DEVICE_ID_ARTOP_AEC7612D 0x8040 +#define PCI_DEVICE_ID_ARTOP_AEC7612SUW 0x8050 +#define PCI_DEVICE_ID_ARTOP_8060 0x8060 +#define PCI_DEVICE_ID_ARTOP_AEC67160 0x8080 +#define PCI_DEVICE_ID_ARTOP_AEC67160_2 0x8081 +#define PCI_DEVICE_ID_ARTOP_AEC67162 0x808a + +#define PCI_VENDOR_ID_ZEITNET 0x1193 +#define PCI_DEVICE_ID_ZEITNET_1221 0x0001 +#define PCI_DEVICE_ID_ZEITNET_1225 0x0002 + +#define PCI_VENDOR_ID_OMEGA 0x119b +#define PCI_DEVICE_ID_OMEGA_82C092G 0x1221 + +#define PCI_VENDOR_ID_FUJITSU_ME 0x119e +#define PCI_DEVICE_ID_FUJITSU_FS155 0x0001 +#define PCI_DEVICE_ID_FUJITSU_FS50 0x0003 + +#define PCI_SUBVENDOR_ID_KEYSPAN 0x11a9 +#define PCI_SUBDEVICE_ID_KEYSPAN_SX2 0x5334 + +#define PCI_VENDOR_ID_MARVELL 0x11ab +#define PCI_DEVICE_ID_MARVELL_GT64011 0x4146 +#define PCI_DEVICE_ID_MARVELL_GT64111 0x4146 +#define PCI_DEVICE_ID_MARVELL_GT64260 0x6430 +#define PCI_DEVICE_ID_MARVELL_MV64360 0x6460 +#define PCI_DEVICE_ID_MARVELL_MV64460 0x6480 +#define PCI_DEVICE_ID_MARVELL_GT96100 0x9652 +#define PCI_DEVICE_ID_MARVELL_GT96100A 0x9653 + +#define PCI_VENDOR_ID_LITEON 0x11ad +#define PCI_DEVICE_ID_LITEON_LNE100TX 0x0002 + +#define PCI_VENDOR_ID_V3 0x11b0 +#define PCI_DEVICE_ID_V3_V960 0x0001 +#define PCI_DEVICE_ID_V3_V350 0x0001 +#define PCI_DEVICE_ID_V3_V961 0x0002 +#define PCI_DEVICE_ID_V3_V351 0x0002 + +#define PCI_VENDOR_ID_NP 0x11bc +#define PCI_DEVICE_ID_NP_PCI_FDDI 0x0001 + +#define PCI_VENDOR_ID_ATT 0x11c1 +#define PCI_DEVICE_ID_ATT_L56XMF 0x0440 +#define PCI_DEVICE_ID_ATT_VENUS_MODEM 0x480 + +#define PCI_VENDOR_ID_NEC2 0x11c3 /* NEC (2nd) */ + +#define PCI_VENDOR_ID_SPECIALIX 0x11cb +#define PCI_DEVICE_ID_SPECIALIX_IO8 0x2000 +#define PCI_DEVICE_ID_SPECIALIX_XIO 0x4000 +#define PCI_DEVICE_ID_SPECIALIX_RIO 0x8000 +#define PCI_SUBDEVICE_ID_SPECIALIX_SPEED4 0xa004 + +#define PCI_VENDOR_ID_AURAVISION 0x11d1 +#define PCI_DEVICE_ID_AURAVISION_VXP524 0x01f7 + +#define PCI_VENDOR_ID_ANALOG_DEVICES 0x11d4 +#define PCI_DEVICE_ID_AD1889JS 0x1889 + +#define PCI_VENDOR_ID_IKON 0x11d5 +#define PCI_DEVICE_ID_IKON_10115 0x0115 +#define PCI_DEVICE_ID_IKON_10117 0x0117 + +#define PCI_VENDOR_ID_SEGA 0x11db +#define PCI_DEVICE_ID_SEGA_BBA 0x1234 + +#define PCI_VENDOR_ID_ZORAN 0x11de +#define PCI_DEVICE_ID_ZORAN_36057 0x6057 +#define PCI_DEVICE_ID_ZORAN_36120 0x6120 + +#define PCI_VENDOR_ID_KINETIC 0x11f4 +#define PCI_DEVICE_ID_KINETIC_2915 0x2915 + +#define PCI_VENDOR_ID_COMPEX 0x11f6 +#define PCI_DEVICE_ID_COMPEX_ENET100VG4 0x0112 +#define PCI_DEVICE_ID_COMPEX_RL2000 0x1401 + +#define PCI_VENDOR_ID_RP 0x11fe +#define PCI_DEVICE_ID_RP32INTF 0x0001 +#define PCI_DEVICE_ID_RP8INTF 0x0002 +#define PCI_DEVICE_ID_RP16INTF 0x0003 +#define PCI_DEVICE_ID_RP4QUAD 0x0004 +#define PCI_DEVICE_ID_RP8OCTA 0x0005 +#define PCI_DEVICE_ID_RP8J 0x0006 +#define PCI_DEVICE_ID_RP4J 0x0007 +#define PCI_DEVICE_ID_RP8SNI 0x0008 +#define PCI_DEVICE_ID_RP16SNI 0x0009 +#define PCI_DEVICE_ID_RPP4 0x000A +#define PCI_DEVICE_ID_RPP8 0x000B +#define PCI_DEVICE_ID_RP8M 0x000C +#define PCI_DEVICE_ID_RP4M 0x000D +#define PCI_DEVICE_ID_RP2_232 0x000E +#define PCI_DEVICE_ID_RP2_422 0x000F +#define PCI_DEVICE_ID_URP32INTF 0x0801 +#define PCI_DEVICE_ID_URP8INTF 0x0802 +#define PCI_DEVICE_ID_URP16INTF 0x0803 +#define PCI_DEVICE_ID_URP8OCTA 0x0805 +#define PCI_DEVICE_ID_UPCI_RM3_8PORT 0x080C +#define PCI_DEVICE_ID_UPCI_RM3_4PORT 0x080D +#define PCI_DEVICE_ID_CRP16INTF 0x0903 + +#define PCI_VENDOR_ID_CYCLADES 0x120e +#define PCI_DEVICE_ID_CYCLOM_Y_Lo 0x0100 +#define PCI_DEVICE_ID_CYCLOM_Y_Hi 0x0101 +#define PCI_DEVICE_ID_CYCLOM_4Y_Lo 0x0102 +#define PCI_DEVICE_ID_CYCLOM_4Y_Hi 0x0103 +#define PCI_DEVICE_ID_CYCLOM_8Y_Lo 0x0104 +#define PCI_DEVICE_ID_CYCLOM_8Y_Hi 0x0105 +#define PCI_DEVICE_ID_CYCLOM_Z_Lo 0x0200 +#define PCI_DEVICE_ID_CYCLOM_Z_Hi 0x0201 +#define PCI_DEVICE_ID_PC300_RX_2 0x0300 +#define PCI_DEVICE_ID_PC300_RX_1 0x0301 +#define PCI_DEVICE_ID_PC300_TE_2 0x0310 +#define PCI_DEVICE_ID_PC300_TE_1 0x0311 +#define PCI_DEVICE_ID_PC300_TE_M_2 0x0320 +#define PCI_DEVICE_ID_PC300_TE_M_1 0x0321 + +/* Allied Telesyn */ +#define PCI_VENDOR_ID_AT 0x1259 +#define PCI_SUBDEVICE_ID_AT_2701FX 0x2703 + +#define PCI_VENDOR_ID_ESSENTIAL 0x120f +#define PCI_DEVICE_ID_ESSENTIAL_ROADRUNNER 0x0001 + +#define PCI_VENDOR_ID_O2 0x1217 +#define PCI_DEVICE_ID_O2_6729 0x6729 +#define PCI_DEVICE_ID_O2_6730 0x673a +#define PCI_DEVICE_ID_O2_6832 0x6832 +#define PCI_DEVICE_ID_O2_6836 0x6836 + +#define PCI_VENDOR_ID_3DFX 0x121a +#define PCI_DEVICE_ID_3DFX_VOODOO 0x0001 +#define PCI_DEVICE_ID_3DFX_VOODOO2 0x0002 +#define PCI_DEVICE_ID_3DFX_BANSHEE 0x0003 +#define PCI_DEVICE_ID_3DFX_VOODOO3 0x0005 +#define PCI_DEVICE_ID_3DFX_VOODOO5 0x0009 + +#define PCI_VENDOR_ID_SIGMADES 0x1236 +#define PCI_DEVICE_ID_SIGMADES_6425 0x6401 + +#define PCI_VENDOR_ID_CCUBE 0x123f + +#define PCI_VENDOR_ID_AVM 0x1244 +#define PCI_DEVICE_ID_AVM_B1 0x0700 +#define PCI_DEVICE_ID_AVM_C4 0x0800 +#define PCI_DEVICE_ID_AVM_A1 0x0a00 +#define PCI_DEVICE_ID_AVM_A1_V2 0x0e00 +#define PCI_DEVICE_ID_AVM_C2 0x1100 +#define PCI_DEVICE_ID_AVM_T1 0x1200 + +#define PCI_VENDOR_ID_DIPIX 0x1246 + +#define PCI_VENDOR_ID_STALLION 0x124d +#define PCI_DEVICE_ID_STALLION_ECHPCI832 0x0000 +#define PCI_DEVICE_ID_STALLION_ECHPCI864 0x0002 +#define PCI_DEVICE_ID_STALLION_EIOPCI 0x0003 + +#define PCI_VENDOR_ID_OPTIBASE 0x1255 +#define PCI_DEVICE_ID_OPTIBASE_FORGE 0x1110 +#define PCI_DEVICE_ID_OPTIBASE_FUSION 0x1210 +#define PCI_DEVICE_ID_OPTIBASE_VPLEX 0x2110 +#define PCI_DEVICE_ID_OPTIBASE_VPLEXCC 0x2120 +#define PCI_DEVICE_ID_OPTIBASE_VQUEST 0x2130 + +/* Allied Telesyn */ +#define PCI_VENDOR_ID_AT 0x1259 +#define PCI_SUBDEVICE_ID_AT_2700FX 0x2701 +#define PCI_SUBDEVICE_ID_AT_2701FX 0x2703 + +#define PCI_VENDOR_ID_ESS 0x125d +#define PCI_DEVICE_ID_ESS_ESS1968 0x1968 +#define PCI_DEVICE_ID_ESS_AUDIOPCI 0x1969 +#define PCI_DEVICE_ID_ESS_ESS1978 0x1978 + +#define PCI_VENDOR_ID_SATSAGEM 0x1267 +#define PCI_DEVICE_ID_SATSAGEM_NICCY 0x1016 +#define PCI_DEVICE_ID_SATSAGEM_PCR2101 0x5352 +#define PCI_DEVICE_ID_SATSAGEM_TELSATTURBO 0x5a4b + +#define PCI_VENDOR_ID_HUGHES 0x1273 +#define PCI_DEVICE_ID_HUGHES_DIRECPC 0x0002 + +#define PCI_VENDOR_ID_ENSONIQ 0x1274 +#define PCI_DEVICE_ID_ENSONIQ_CT5880 0x5880 +#define PCI_DEVICE_ID_ENSONIQ_ES1370 0x5000 +#define PCI_DEVICE_ID_ENSONIQ_ES1371 0x1371 + +#define PCI_VENDOR_ID_TRANSMETA 0x1279 +#define PCI_DEVICE_ID_EFFICEON 0x0060 + +#define PCI_VENDOR_ID_ROCKWELL 0x127A + +#define PCI_VENDOR_ID_ITE 0x1283 +#define PCI_DEVICE_ID_ITE_IT8172G 0x8172 +#define PCI_DEVICE_ID_ITE_IT8172G_AUDIO 0x0801 +#define PCI_DEVICE_ID_ITE_8872 0x8872 +#define PCI_DEVICE_ID_ITE_IT8330G_0 0xe886 + +/* formerly Platform Tech */ +#define PCI_VENDOR_ID_ESS_OLD 0x1285 +#define PCI_DEVICE_ID_ESS_ESS0100 0x0100 + +#define PCI_VENDOR_ID_ALTEON 0x12ae +#define PCI_DEVICE_ID_ALTEON_ACENIC 0x0001 + +#define PCI_VENDOR_ID_USR 0x12B9 + +#define PCI_SUBVENDOR_ID_CONNECT_TECH 0x12c4 +#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH8_232 0x0001 +#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH4_232 0x0002 +#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH2_232 0x0003 +#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH8_485 0x0004 +#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH8_485_4_4 0x0005 +#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH4_485 0x0006 +#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH4_485_2_2 0x0007 +#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH2_485 0x0008 +#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH8_485_2_6 0x0009 +#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH081101V1 0x000A +#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH041101V1 0x000B + +#define PCI_VENDOR_ID_PICTUREL 0x12c5 +#define PCI_DEVICE_ID_PICTUREL_PCIVST 0x0081 + +#define PCI_VENDOR_ID_NVIDIA_SGS 0x12d2 +#define PCI_DEVICE_ID_NVIDIA_SGS_RIVA128 0x0018 + +#define PCI_SUBVENDOR_ID_CHASE_PCIFAST 0x12E0 +#define PCI_SUBDEVICE_ID_CHASE_PCIFAST4 0x0031 +#define PCI_SUBDEVICE_ID_CHASE_PCIFAST8 0x0021 +#define PCI_SUBDEVICE_ID_CHASE_PCIFAST16 0x0011 +#define PCI_SUBDEVICE_ID_CHASE_PCIFAST16FMC 0x0041 +#define PCI_SUBVENDOR_ID_CHASE_PCIRAS 0x124D +#define PCI_SUBDEVICE_ID_CHASE_PCIRAS4 0xF001 +#define PCI_SUBDEVICE_ID_CHASE_PCIRAS8 0xF010 + +#define PCI_VENDOR_ID_AUREAL 0x12eb +#define PCI_DEVICE_ID_AUREAL_VORTEX_1 0x0001 +#define PCI_DEVICE_ID_AUREAL_VORTEX_2 0x0002 +#define PCI_DEVICE_ID_AUREAL_ADVANTAGE 0x0003 + +#define PCI_VENDOR_ID_ELECTRONICDESIGNGMBH 0x12f8 +#define PCI_DEVICE_ID_LML_33R10 0x8a02 + +#define PCI_VENDOR_ID_CBOARDS 0x1307 +#define PCI_DEVICE_ID_CBOARDS_DAS1602_16 0x0001 + +#define PCI_VENDOR_ID_SIIG 0x131f +#define PCI_DEVICE_ID_SIIG_1S_10x_550 0x1000 +#define PCI_DEVICE_ID_SIIG_1S_10x_650 0x1001 +#define PCI_DEVICE_ID_SIIG_1S_10x_850 0x1002 +#define PCI_DEVICE_ID_SIIG_1S1P_10x_550 0x1010 +#define PCI_DEVICE_ID_SIIG_1S1P_10x_650 0x1011 +#define PCI_DEVICE_ID_SIIG_1S1P_10x_850 0x1012 +#define PCI_DEVICE_ID_SIIG_1P_10x 0x1020 +#define PCI_DEVICE_ID_SIIG_2P_10x 0x1021 +#define PCI_DEVICE_ID_SIIG_2S_10x_550 0x1030 +#define PCI_DEVICE_ID_SIIG_2S_10x_650 0x1031 +#define PCI_DEVICE_ID_SIIG_2S_10x_850 0x1032 +#define PCI_DEVICE_ID_SIIG_2S1P_10x_550 0x1034 +#define PCI_DEVICE_ID_SIIG_2S1P_10x_650 0x1035 +#define PCI_DEVICE_ID_SIIG_2S1P_10x_850 0x1036 +#define PCI_DEVICE_ID_SIIG_4S_10x_550 0x1050 +#define PCI_DEVICE_ID_SIIG_4S_10x_650 0x1051 +#define PCI_DEVICE_ID_SIIG_4S_10x_850 0x1052 +#define PCI_DEVICE_ID_SIIG_1S_20x_550 0x2000 +#define PCI_DEVICE_ID_SIIG_1S_20x_650 0x2001 +#define PCI_DEVICE_ID_SIIG_1S_20x_850 0x2002 +#define PCI_DEVICE_ID_SIIG_1P_20x 0x2020 +#define PCI_DEVICE_ID_SIIG_2P_20x 0x2021 +#define PCI_DEVICE_ID_SIIG_2S_20x_550 0x2030 +#define PCI_DEVICE_ID_SIIG_2S_20x_650 0x2031 +#define PCI_DEVICE_ID_SIIG_2S_20x_850 0x2032 +#define PCI_DEVICE_ID_SIIG_2P1S_20x_550 0x2040 +#define PCI_DEVICE_ID_SIIG_2P1S_20x_650 0x2041 +#define PCI_DEVICE_ID_SIIG_2P1S_20x_850 0x2042 +#define PCI_DEVICE_ID_SIIG_1S1P_20x_550 0x2010 +#define PCI_DEVICE_ID_SIIG_1S1P_20x_650 0x2011 +#define PCI_DEVICE_ID_SIIG_1S1P_20x_850 0x2012 +#define PCI_DEVICE_ID_SIIG_4S_20x_550 0x2050 +#define PCI_DEVICE_ID_SIIG_4S_20x_650 0x2051 +#define PCI_DEVICE_ID_SIIG_4S_20x_850 0x2052 +#define PCI_DEVICE_ID_SIIG_2S1P_20x_550 0x2060 +#define PCI_DEVICE_ID_SIIG_2S1P_20x_650 0x2061 +#define PCI_DEVICE_ID_SIIG_2S1P_20x_850 0x2062 + +#define PCI_VENDOR_ID_RADISYS 0x1331 +#define PCI_DEVICE_ID_RADISYS_ENP2611 0x0030 + +#define PCI_VENDOR_ID_DOMEX 0x134a +#define PCI_DEVICE_ID_DOMEX_DMX3191D 0x0001 + +#define PCI_VENDOR_ID_QUATECH 0x135C +#define PCI_DEVICE_ID_QUATECH_QSC100 0x0010 +#define PCI_DEVICE_ID_QUATECH_DSC100 0x0020 +#define PCI_DEVICE_ID_QUATECH_DSC200 0x0030 +#define PCI_DEVICE_ID_QUATECH_QSC200 0x0040 +#define PCI_DEVICE_ID_QUATECH_ESC100D 0x0050 +#define PCI_DEVICE_ID_QUATECH_ESC100M 0x0060 + +#define PCI_VENDOR_ID_SEALEVEL 0x135e +#define PCI_DEVICE_ID_SEALEVEL_U530 0x7101 +#define PCI_DEVICE_ID_SEALEVEL_UCOMM2 0x7201 +#define PCI_DEVICE_ID_SEALEVEL_UCOMM422 0x7402 +#define PCI_DEVICE_ID_SEALEVEL_UCOMM232 0x7202 +#define PCI_DEVICE_ID_SEALEVEL_COMM4 0x7401 +#define PCI_DEVICE_ID_SEALEVEL_COMM8 0x7801 +#define PCI_DEVICE_ID_SEALEVEL_UCOMM8 0x7804 + +#define PCI_VENDOR_ID_HYPERCOPE 0x1365 +#define PCI_DEVICE_ID_HYPERCOPE_PLX 0x9050 +#define PCI_SUBDEVICE_ID_HYPERCOPE_OLD_ERGO 0x0104 +#define PCI_SUBDEVICE_ID_HYPERCOPE_ERGO 0x0106 +#define PCI_SUBDEVICE_ID_HYPERCOPE_METRO 0x0107 +#define PCI_SUBDEVICE_ID_HYPERCOPE_CHAMP2 0x0108 +#define PCI_SUBDEVICE_ID_HYPERCOPE_PLEXUS 0x0109 + +#define PCI_VENDOR_ID_KAWASAKI 0x136b +#define PCI_DEVICE_ID_MCHIP_KL5A72002 0xff01 + +#define PCI_VENDOR_ID_CNET 0x1371 +#define PCI_DEVICE_ID_CNET_GIGACARD 0x434e + +#define PCI_VENDOR_ID_LMC 0x1376 +#define PCI_DEVICE_ID_LMC_HSSI 0x0003 +#define PCI_DEVICE_ID_LMC_DS3 0x0004 +#define PCI_DEVICE_ID_LMC_SSI 0x0005 +#define PCI_DEVICE_ID_LMC_T1 0x0006 + +#define PCI_VENDOR_ID_NETGEAR 0x1385 +#define PCI_DEVICE_ID_NETGEAR_GA620 0x620a +#define PCI_DEVICE_ID_NETGEAR_GA622 0x622a + +#define PCI_VENDOR_ID_APPLICOM 0x1389 +#define PCI_DEVICE_ID_APPLICOM_PCIGENERIC 0x0001 +#define PCI_DEVICE_ID_APPLICOM_PCI2000IBS_CAN 0x0002 +#define PCI_DEVICE_ID_APPLICOM_PCI2000PFB 0x0003 + +#define PCI_VENDOR_ID_MOXA 0x1393 +#define PCI_DEVICE_ID_MOXA_RC7000 0x0001 +#define PCI_DEVICE_ID_MOXA_CP102 0x1020 +#define PCI_DEVICE_ID_MOXA_CP102UL 0x1021 +#define PCI_DEVICE_ID_MOXA_CP102U 0x1022 +#define PCI_DEVICE_ID_MOXA_C104 0x1040 +#define PCI_DEVICE_ID_MOXA_CP104U 0x1041 +#define PCI_DEVICE_ID_MOXA_CP104JU 0x1042 +#define PCI_DEVICE_ID_MOXA_CT114 0x1140 +#define PCI_DEVICE_ID_MOXA_CP114 0x1141 +#define PCI_DEVICE_ID_MOXA_CP118U 0x1180 +#define PCI_DEVICE_ID_MOXA_CP132 0x1320 +#define PCI_DEVICE_ID_MOXA_CP132U 0x1321 +#define PCI_DEVICE_ID_MOXA_CP134U 0x1340 +#define PCI_DEVICE_ID_MOXA_C168 0x1680 +#define PCI_DEVICE_ID_MOXA_CP168U 0x1681 +#define PCI_DEVICE_ID_MOXA_CP204J 0x2040 +#define PCI_DEVICE_ID_MOXA_C218 0x2180 +#define PCI_DEVICE_ID_MOXA_C320 0x3200 + +#define PCI_VENDOR_ID_CCD 0x1397 +#define PCI_DEVICE_ID_CCD_2BD0 0x2bd0 +#define PCI_DEVICE_ID_CCD_B000 0xb000 +#define PCI_DEVICE_ID_CCD_B006 0xb006 +#define PCI_DEVICE_ID_CCD_B007 0xb007 +#define PCI_DEVICE_ID_CCD_B008 0xb008 +#define PCI_DEVICE_ID_CCD_B009 0xb009 +#define PCI_DEVICE_ID_CCD_B00A 0xb00a +#define PCI_DEVICE_ID_CCD_B00B 0xb00b +#define PCI_DEVICE_ID_CCD_B00C 0xb00c +#define PCI_DEVICE_ID_CCD_B100 0xb100 + +#define PCI_VENDOR_ID_EXAR 0x13a8 +#define PCI_DEVICE_ID_EXAR_XR17C152 0x0152 +#define PCI_DEVICE_ID_EXAR_XR17C154 0x0154 +#define PCI_DEVICE_ID_EXAR_XR17C158 0x0158 + +#define PCI_VENDOR_ID_MICROGATE 0x13c0 +#define PCI_DEVICE_ID_MICROGATE_USC 0x0010 +#define PCI_DEVICE_ID_MICROGATE_SCC 0x0020 +#define PCI_DEVICE_ID_MICROGATE_SCA 0x0030 +#define PCI_DEVICE_ID_MICROGATE_USC2 0x0210 + +#define PCI_VENDOR_ID_3WARE 0x13C1 +#define PCI_DEVICE_ID_3WARE_1000 0x1000 +#define PCI_DEVICE_ID_3WARE_7000 0x1001 +#define PCI_DEVICE_ID_3WARE_9000 0x1002 + +#define PCI_VENDOR_ID_IOMEGA 0x13ca +#define PCI_DEVICE_ID_IOMEGA_BUZ 0x4231 + +#define PCI_VENDOR_ID_ABOCOM 0x13D1 +#define PCI_DEVICE_ID_ABOCOM_2BD1 0x2BD1 + +#define PCI_VENDOR_ID_CMEDIA 0x13f6 +#define PCI_DEVICE_ID_CMEDIA_CM8338A 0x0100 +#define PCI_DEVICE_ID_CMEDIA_CM8338B 0x0101 +#define PCI_DEVICE_ID_CMEDIA_CM8738 0x0111 +#define PCI_DEVICE_ID_CMEDIA_CM8738B 0x0112 + +#define PCI_VENDOR_ID_LAVA 0x1407 +#define PCI_DEVICE_ID_LAVA_DSERIAL 0x0100 /* 2x 16550 */ +#define PCI_DEVICE_ID_LAVA_QUATRO_A 0x0101 /* 2x 16550, half of 4 port */ +#define PCI_DEVICE_ID_LAVA_QUATRO_B 0x0102 /* 2x 16550, half of 4 port */ +#define PCI_DEVICE_ID_LAVA_OCTO_A 0x0180 /* 4x 16550A, half of 8 port */ +#define PCI_DEVICE_ID_LAVA_OCTO_B 0x0181 /* 4x 16550A, half of 8 port */ +#define PCI_DEVICE_ID_LAVA_PORT_PLUS 0x0200 /* 2x 16650 */ +#define PCI_DEVICE_ID_LAVA_QUAD_A 0x0201 /* 2x 16650, half of 4 port */ +#define PCI_DEVICE_ID_LAVA_QUAD_B 0x0202 /* 2x 16650, half of 4 port */ +#define PCI_DEVICE_ID_LAVA_SSERIAL 0x0500 /* 1x 16550 */ +#define PCI_DEVICE_ID_LAVA_PORT_650 0x0600 /* 1x 16650 */ +#define PCI_DEVICE_ID_LAVA_PARALLEL 0x8000 +#define PCI_DEVICE_ID_LAVA_DUAL_PAR_A 0x8002 /* The Lava Dual Parallel is */ +#define PCI_DEVICE_ID_LAVA_DUAL_PAR_B 0x8003 /* two PCI devices on a card */ +#define PCI_DEVICE_ID_LAVA_BOCA_IOPPAR 0x8800 + +#define PCI_VENDOR_ID_TIMEDIA 0x1409 +#define PCI_DEVICE_ID_TIMEDIA_1889 0x7168 + +#define PCI_VENDOR_ID_OXSEMI 0x1415 +#define PCI_DEVICE_ID_OXSEMI_12PCI840 0x8403 +#define PCI_DEVICE_ID_OXSEMI_16PCI954 0x9501 +#define PCI_DEVICE_ID_OXSEMI_16PCI95N 0x9511 +#define PCI_DEVICE_ID_OXSEMI_16PCI954PP 0x9513 +#define PCI_DEVICE_ID_OXSEMI_16PCI952 0x9521 + +#define PCI_VENDOR_ID_SAMSUNG 0x144d + +#define PCI_VENDOR_ID_AIRONET 0x14b9 +#define PCI_DEVICE_ID_AIRONET_4800_1 0x0001 +#define PCI_DEVICE_ID_AIRONET_4800 0x4500 // values switched? see +#define PCI_DEVICE_ID_AIRONET_4500 0x4800 // drivers/net/aironet4500_card.c + +#define PCI_VENDOR_ID_TITAN 0x14D2 +#define PCI_DEVICE_ID_TITAN_010L 0x8001 +#define PCI_DEVICE_ID_TITAN_100L 0x8010 +#define PCI_DEVICE_ID_TITAN_110L 0x8011 +#define PCI_DEVICE_ID_TITAN_200L 0x8020 +#define PCI_DEVICE_ID_TITAN_210L 0x8021 +#define PCI_DEVICE_ID_TITAN_400L 0x8040 +#define PCI_DEVICE_ID_TITAN_800L 0x8080 +#define PCI_DEVICE_ID_TITAN_100 0xA001 +#define PCI_DEVICE_ID_TITAN_200 0xA005 +#define PCI_DEVICE_ID_TITAN_400 0xA003 +#define PCI_DEVICE_ID_TITAN_800B 0xA004 + +#define PCI_VENDOR_ID_PANACOM 0x14d4 +#define PCI_DEVICE_ID_PANACOM_QUADMODEM 0x0400 +#define PCI_DEVICE_ID_PANACOM_DUALMODEM 0x0402 + +#define PCI_VENDOR_ID_SIPACKETS 0x14d9 +#define PCI_DEVICE_ID_SP_HT 0x0010 + +#define PCI_VENDOR_ID_AFAVLAB 0x14db +#define PCI_DEVICE_ID_AFAVLAB_P028 0x2180 +#define PCI_DEVICE_ID_AFAVLAB_P030 0x2182 + +#define PCI_VENDOR_ID_BROADCOM 0x14e4 +#define PCI_DEVICE_ID_TIGON3_5752 0x1600 +#define PCI_DEVICE_ID_TIGON3_5752M 0x1601 +#define PCI_DEVICE_ID_TIGON3_5700 0x1644 +#define PCI_DEVICE_ID_TIGON3_5701 0x1645 +#define PCI_DEVICE_ID_TIGON3_5702 0x1646 +#define PCI_DEVICE_ID_TIGON3_5703 0x1647 +#define PCI_DEVICE_ID_TIGON3_5704 0x1648 +#define PCI_DEVICE_ID_TIGON3_5704S_2 0x1649 +#define PCI_DEVICE_ID_NX2_5706 0x164a +#define PCI_DEVICE_ID_TIGON3_5702FE 0x164d +#define PCI_DEVICE_ID_TIGON3_5705 0x1653 +#define PCI_DEVICE_ID_TIGON3_5705_2 0x1654 +#define PCI_DEVICE_ID_TIGON3_5720 0x1658 +#define PCI_DEVICE_ID_TIGON3_5721 0x1659 +#define PCI_DEVICE_ID_TIGON3_5705M 0x165d +#define PCI_DEVICE_ID_TIGON3_5705M_2 0x165e +#define PCI_DEVICE_ID_TIGON3_5705F 0x166e +#define PCI_DEVICE_ID_TIGON3_5750 0x1676 +#define PCI_DEVICE_ID_TIGON3_5751 0x1677 +#define PCI_DEVICE_ID_TIGON3_5750M 0x167c +#define PCI_DEVICE_ID_TIGON3_5751M 0x167d +#define PCI_DEVICE_ID_TIGON3_5751F 0x167e +#define PCI_DEVICE_ID_TIGON3_5782 0x1696 +#define PCI_DEVICE_ID_TIGON3_5788 0x169c +#define PCI_DEVICE_ID_TIGON3_5789 0x169d +#define PCI_DEVICE_ID_TIGON3_5702X 0x16a6 +#define PCI_DEVICE_ID_TIGON3_5703X 0x16a7 +#define PCI_DEVICE_ID_TIGON3_5704S 0x16a8 +#define PCI_DEVICE_ID_NX2_5706S 0x16aa +#define PCI_DEVICE_ID_TIGON3_5702A3 0x16c6 +#define PCI_DEVICE_ID_TIGON3_5703A3 0x16c7 +#define PCI_DEVICE_ID_TIGON3_5781 0x16dd +#define PCI_DEVICE_ID_TIGON3_5753 0x16f7 +#define PCI_DEVICE_ID_TIGON3_5753M 0x16fd +#define PCI_DEVICE_ID_TIGON3_5753F 0x16fe +#define PCI_DEVICE_ID_TIGON3_5901 0x170d +#define PCI_DEVICE_ID_BCM4401B1 0x170c +#define PCI_DEVICE_ID_TIGON3_5901_2 0x170e +#define PCI_DEVICE_ID_BCM4401 0x4401 +#define PCI_DEVICE_ID_BCM4401B0 0x4402 + +#define PCI_VENDOR_ID_TOPIC 0x151f +#define PCI_DEVICE_ID_TOPIC_TP560 0x0000 + +#define PCI_VENDOR_ID_ENE 0x1524 +#define PCI_DEVICE_ID_ENE_1211 0x1211 +#define PCI_DEVICE_ID_ENE_1225 0x1225 +#define PCI_DEVICE_ID_ENE_1410 0x1410 +#define PCI_DEVICE_ID_ENE_1420 0x1420 + +#define PCI_VENDOR_ID_SYBA 0x1592 +#define PCI_DEVICE_ID_SYBA_2P_EPP 0x0782 +#define PCI_DEVICE_ID_SYBA_1P_ECP 0x0783 + +#define PCI_VENDOR_ID_MORETON 0x15aa +#define PCI_DEVICE_ID_RASTEL_2PORT 0x2000 + +#define PCI_VENDOR_ID_ZOLTRIX 0x15b0 +#define PCI_DEVICE_ID_ZOLTRIX_2BD0 0x2bd0 + +#define PCI_VENDOR_ID_MELLANOX 0x15b3 +#define PCI_DEVICE_ID_MELLANOX_TAVOR 0x5a44 +#define PCI_DEVICE_ID_MELLANOX_ARBEL_COMPAT 0x6278 +#define PCI_DEVICE_ID_MELLANOX_ARBEL 0x6282 +#define PCI_DEVICE_ID_MELLANOX_SINAI_OLD 0x5e8c +#define PCI_DEVICE_ID_MELLANOX_SINAI 0x6274 + +#define PCI_VENDOR_ID_PDC 0x15e9 +#define PCI_DEVICE_ID_PDC_1841 0x1841 + +#define PCI_VENDOR_ID_MACROLINK 0x15ed +#define PCI_DEVICE_ID_MACROLINK_MCCS8 0x1000 +#define PCI_DEVICE_ID_MACROLINK_MCCS 0x1001 +#define PCI_DEVICE_ID_MACROLINK_MCCS8H 0x1002 +#define PCI_DEVICE_ID_MACROLINK_MCCSH 0x1003 +#define PCI_DEVICE_ID_MACROLINK_MCCR8 0x2000 +#define PCI_DEVICE_ID_MACROLINK_MCCR 0x2001 + +#define PCI_VENDOR_ID_FARSITE 0x1619 +#define PCI_DEVICE_ID_FARSITE_T2P 0x0400 +#define PCI_DEVICE_ID_FARSITE_T4P 0x0440 +#define PCI_DEVICE_ID_FARSITE_T1U 0x0610 +#define PCI_DEVICE_ID_FARSITE_T2U 0x0620 +#define PCI_DEVICE_ID_FARSITE_T4U 0x0640 +#define PCI_DEVICE_ID_FARSITE_TE1 0x1610 +#define PCI_DEVICE_ID_FARSITE_TE1C 0x1612 + +#define PCI_VENDOR_ID_SIBYTE 0x166d +#define PCI_DEVICE_ID_BCM1250_HT 0x0002 + +#define PCI_VENDOR_ID_LINKSYS 0x1737 +#define PCI_DEVICE_ID_LINKSYS_EG1032 0x1032 +#define PCI_DEVICE_ID_LINKSYS_EG1064 0x1064 + +#define PCI_VENDOR_ID_ALTIMA 0x173b +#define PCI_DEVICE_ID_ALTIMA_AC1000 0x03e8 +#define PCI_DEVICE_ID_ALTIMA_AC1001 0x03e9 +#define PCI_DEVICE_ID_ALTIMA_AC9100 0x03ea +#define PCI_DEVICE_ID_ALTIMA_AC1003 0x03eb + +#define PCI_VENDOR_ID_S2IO 0x17d5 +#define PCI_DEVICE_ID_S2IO_WIN 0x5731 +#define PCI_DEVICE_ID_S2IO_UNI 0x5831 +#define PCI_DEVICE_ID_HERC_WIN 0x5732 +#define PCI_DEVICE_ID_HERC_UNI 0x5832 + +#define PCI_VENDOR_ID_INFINICON 0x1820 + +#define PCI_VENDOR_ID_TOPSPIN 0x1867 + +#define PCI_VENDOR_ID_TDI 0x192E +#define PCI_DEVICE_ID_TDI_EHCI 0x0101 + +#define PCI_VENDOR_ID_SYMPHONY 0x1c1c +#define PCI_DEVICE_ID_SYMPHONY_101 0x0001 + +#define PCI_VENDOR_ID_TEKRAM 0x1de1 +#define PCI_DEVICE_ID_TEKRAM_DC290 0xdc29 + +#define PCI_VENDOR_ID_HINT 0x3388 +#define PCI_DEVICE_ID_HINT_VXPROII_IDE 0x8013 + +#define PCI_VENDOR_ID_3DLABS 0x3d3d +#define PCI_DEVICE_ID_3DLABS_300SX 0x0001 +#define PCI_DEVICE_ID_3DLABS_500TX 0x0002 +#define PCI_DEVICE_ID_3DLABS_DELTA 0x0003 +#define PCI_DEVICE_ID_3DLABS_PERMEDIA 0x0004 +#define PCI_DEVICE_ID_3DLABS_MX 0x0006 +#define PCI_DEVICE_ID_3DLABS_PERMEDIA2 0x0007 +#define PCI_DEVICE_ID_3DLABS_GAMMA 0x0008 +#define PCI_DEVICE_ID_3DLABS_PERMEDIA2V 0x0009 + +#define PCI_VENDOR_ID_AVANCE 0x4005 +#define PCI_DEVICE_ID_AVANCE_ALG2064 0x2064 +#define PCI_DEVICE_ID_AVANCE_2302 0x2302 + +#define PCI_VENDOR_ID_AKS 0x416c +#define PCI_DEVICE_ID_AKS_ALADDINCARD 0x0100 +#define PCI_DEVICE_ID_AKS_CPC 0x0200 + +#define PCI_VENDOR_ID_REDCREEK 0x4916 +#define PCI_DEVICE_ID_RC45 0x1960 + +#define PCI_VENDOR_ID_NETVIN 0x4a14 +#define PCI_DEVICE_ID_NETVIN_NV5000SC 0x5000 + +#define PCI_VENDOR_ID_S3 0x5333 +#define PCI_DEVICE_ID_S3_PLATO_PXS 0x0551 +#define PCI_DEVICE_ID_S3_ViRGE 0x5631 +#define PCI_DEVICE_ID_S3_TRIO 0x8811 +#define PCI_DEVICE_ID_S3_AURORA64VP 0x8812 +#define PCI_DEVICE_ID_S3_TRIO64UVP 0x8814 +#define PCI_DEVICE_ID_S3_ViRGE_VX 0x883d +#define PCI_DEVICE_ID_S3_868 0x8880 +#define PCI_DEVICE_ID_S3_928 0x88b0 +#define PCI_DEVICE_ID_S3_864_1 0x88c0 +#define PCI_DEVICE_ID_S3_864_2 0x88c1 +#define PCI_DEVICE_ID_S3_964_1 0x88d0 +#define PCI_DEVICE_ID_S3_964_2 0x88d1 +#define PCI_DEVICE_ID_S3_968 0x88f0 +#define PCI_DEVICE_ID_S3_TRIO64V2 0x8901 +#define PCI_DEVICE_ID_S3_PLATO_PXG 0x8902 +#define PCI_DEVICE_ID_S3_ViRGE_DXGX 0x8a01 +#define PCI_DEVICE_ID_S3_ViRGE_GX2 0x8a10 +#define PCI_DEVICE_ID_S3_SAVAGE4 0x8a25 +#define PCI_DEVICE_ID_S3_ViRGE_MX 0x8c01 +#define PCI_DEVICE_ID_S3_ViRGE_MXP 0x8c02 +#define PCI_DEVICE_ID_S3_ViRGE_MXPMV 0x8c03 +#define PCI_DEVICE_ID_S3_PROSAVAGE8 0x8d04 +#define PCI_DEVICE_ID_S3_SONICVIBES 0xca00 + +#define PCI_VENDOR_ID_DUNORD 0x5544 +#define PCI_DEVICE_ID_DUNORD_I3000 0x0001 + +#define PCI_VENDOR_ID_DCI 0x6666 +#define PCI_DEVICE_ID_DCI_PCCOM4 0x0001 +#define PCI_DEVICE_ID_DCI_PCCOM8 0x0002 + +#define PCI_VENDOR_ID_DUNORD 0x5544 +#define PCI_DEVICE_ID_DUNORD_I3000 0x0001 + +#define PCI_VENDOR_ID_GENROCO 0x5555 +#define PCI_DEVICE_ID_GENROCO_HFP832 0x0003 + +#define PCI_VENDOR_ID_INTEL 0x8086 +#define PCI_DEVICE_ID_INTEL_EESSC 0x0008 +#define PCI_DEVICE_ID_INTEL_21145 0x0039 +#define PCI_DEVICE_ID_INTEL_82375 0x0482 +#define PCI_DEVICE_ID_INTEL_82424 0x0483 +#define PCI_DEVICE_ID_INTEL_82378 0x0484 +#define PCI_DEVICE_ID_INTEL_82430 0x0486 +#define PCI_DEVICE_ID_INTEL_82434 0x04a3 +#define PCI_DEVICE_ID_INTEL_I960 0x0960 +#define PCI_DEVICE_ID_INTEL_I960RM 0x0962 +#define PCI_DEVICE_ID_INTEL_82562ET 0x1031 +#define PCI_DEVICE_ID_INTEL_82801CAM 0x1038 +#define PCI_DEVICE_ID_INTEL_82815_MC 0x1130 +#define PCI_DEVICE_ID_INTEL_82815_AB 0x1131 +#define PCI_DEVICE_ID_INTEL_82815_CGC 0x1132 +#define PCI_DEVICE_ID_INTEL_82559ER 0x1209 +#define PCI_DEVICE_ID_INTEL_82092AA_0 0x1221 +#define PCI_DEVICE_ID_INTEL_82092AA_1 0x1222 +#define PCI_DEVICE_ID_INTEL_7116 0x1223 +#define PCI_DEVICE_ID_INTEL_7505_0 0x2550 +#define PCI_DEVICE_ID_INTEL_7505_1 0x2552 +#define PCI_DEVICE_ID_INTEL_7205_0 0x255d +#define PCI_DEVICE_ID_INTEL_82596 0x1226 +#define PCI_DEVICE_ID_INTEL_82865 0x1227 +#define PCI_DEVICE_ID_INTEL_82557 0x1229 +#define PCI_DEVICE_ID_INTEL_82437 0x122d +#define PCI_DEVICE_ID_INTEL_82371FB_0 0x122e +#define PCI_DEVICE_ID_INTEL_82371FB_1 0x1230 +#define PCI_DEVICE_ID_INTEL_82371MX 0x1234 +#define PCI_DEVICE_ID_INTEL_82437MX 0x1235 +#define PCI_DEVICE_ID_INTEL_82441 0x1237 +#define PCI_DEVICE_ID_INTEL_82380FB 0x124b +#define PCI_DEVICE_ID_INTEL_82439 0x1250 +#define PCI_DEVICE_ID_INTEL_80960_RP 0x1960 +#define PCI_DEVICE_ID_INTEL_82840_HB 0x1a21 +#define PCI_DEVICE_ID_INTEL_82845_HB 0x1a30 +#define PCI_DEVICE_ID_INTEL_82801AA_0 0x2410 +#define PCI_DEVICE_ID_INTEL_82801AA_1 0x2411 +#define PCI_DEVICE_ID_INTEL_82801AA_2 0x2412 +#define PCI_DEVICE_ID_INTEL_82801AA_3 0x2413 +#define PCI_DEVICE_ID_INTEL_82801AA_5 0x2415 +#define PCI_DEVICE_ID_INTEL_82801AA_6 0x2416 +#define PCI_DEVICE_ID_INTEL_82801AA_8 0x2418 +#define PCI_DEVICE_ID_INTEL_82801AB_0 0x2420 +#define PCI_DEVICE_ID_INTEL_82801AB_1 0x2421 +#define PCI_DEVICE_ID_INTEL_82801AB_2 0x2422 +#define PCI_DEVICE_ID_INTEL_82801AB_3 0x2423 +#define PCI_DEVICE_ID_INTEL_82801AB_5 0x2425 +#define PCI_DEVICE_ID_INTEL_82801AB_6 0x2426 +#define PCI_DEVICE_ID_INTEL_82801AB_8 0x2428 +#define PCI_DEVICE_ID_INTEL_82801BA_0 0x2440 +#define PCI_DEVICE_ID_INTEL_82801BA_1 0x2442 +#define PCI_DEVICE_ID_INTEL_82801BA_2 0x2443 +#define PCI_DEVICE_ID_INTEL_82801BA_3 0x2444 +#define PCI_DEVICE_ID_INTEL_82801BA_4 0x2445 +#define PCI_DEVICE_ID_INTEL_82801BA_5 0x2446 +#define PCI_DEVICE_ID_INTEL_82801BA_6 0x2448 +#define PCI_DEVICE_ID_INTEL_82801BA_7 0x2449 +#define PCI_DEVICE_ID_INTEL_82801BA_8 0x244a +#define PCI_DEVICE_ID_INTEL_82801BA_9 0x244b +#define PCI_DEVICE_ID_INTEL_82801BA_10 0x244c +#define PCI_DEVICE_ID_INTEL_82801BA_11 0x244e +#define PCI_DEVICE_ID_INTEL_82801E_0 0x2450 +#define PCI_DEVICE_ID_INTEL_82801E_2 0x2452 +#define PCI_DEVICE_ID_INTEL_82801E_3 0x2453 +#define PCI_DEVICE_ID_INTEL_82801E_9 0x2459 +#define PCI_DEVICE_ID_INTEL_82801E_11 0x245b +#define PCI_DEVICE_ID_INTEL_82801E_13 0x245d +#define PCI_DEVICE_ID_INTEL_82801E_14 0x245e +#define PCI_DEVICE_ID_INTEL_82801CA_0 0x2480 +#define PCI_DEVICE_ID_INTEL_82801CA_2 0x2482 +#define PCI_DEVICE_ID_INTEL_82801CA_3 0x2483 +#define PCI_DEVICE_ID_INTEL_82801CA_4 0x2484 +#define PCI_DEVICE_ID_INTEL_82801CA_5 0x2485 +#define PCI_DEVICE_ID_INTEL_82801CA_6 0x2486 +#define PCI_DEVICE_ID_INTEL_82801CA_7 0x2487 +#define PCI_DEVICE_ID_INTEL_82801CA_10 0x248a +#define PCI_DEVICE_ID_INTEL_82801CA_11 0x248b +#define PCI_DEVICE_ID_INTEL_82801CA_12 0x248c +#define PCI_DEVICE_ID_INTEL_82801DB_0 0x24c0 +#define PCI_DEVICE_ID_INTEL_82801DB_1 0x24c1 +#define PCI_DEVICE_ID_INTEL_82801DB_2 0x24c2 +#define PCI_DEVICE_ID_INTEL_82801DB_3 0x24c3 +#define PCI_DEVICE_ID_INTEL_82801DB_4 0x24c4 +#define PCI_DEVICE_ID_INTEL_82801DB_5 0x24c5 +#define PCI_DEVICE_ID_INTEL_82801DB_6 0x24c6 +#define PCI_DEVICE_ID_INTEL_82801DB_7 0x24c7 +#define PCI_DEVICE_ID_INTEL_82801DB_9 0x24c9 +#define PCI_DEVICE_ID_INTEL_82801DB_10 0x24ca +#define PCI_DEVICE_ID_INTEL_82801DB_11 0x24cb +#define PCI_DEVICE_ID_INTEL_82801DB_12 0x24cc +#define PCI_DEVICE_ID_INTEL_82801DB_13 0x24cd +#define PCI_DEVICE_ID_INTEL_82801EB_0 0x24d0 +#define PCI_DEVICE_ID_INTEL_82801EB_1 0x24d1 +#define PCI_DEVICE_ID_INTEL_82801EB_2 0x24d2 +#define PCI_DEVICE_ID_INTEL_82801EB_3 0x24d3 +#define PCI_DEVICE_ID_INTEL_82801EB_4 0x24d4 +#define PCI_DEVICE_ID_INTEL_82801EB_5 0x24d5 +#define PCI_DEVICE_ID_INTEL_82801EB_6 0x24d6 +#define PCI_DEVICE_ID_INTEL_82801EB_7 0x24d7 +#define PCI_DEVICE_ID_INTEL_82801EB_11 0x24db +#define PCI_DEVICE_ID_INTEL_82801EB_13 0x24dd +#define PCI_DEVICE_ID_INTEL_ESB_1 0x25a1 +#define PCI_DEVICE_ID_INTEL_ESB_2 0x25a2 +#define PCI_DEVICE_ID_INTEL_ESB_3 0x25a3 +#define PCI_DEVICE_ID_INTEL_ESB_31 0x25b0 +#define PCI_DEVICE_ID_INTEL_ESB_4 0x25a4 +#define PCI_DEVICE_ID_INTEL_ESB_5 0x25a6 +#define PCI_DEVICE_ID_INTEL_ESB_6 0x25a7 +#define PCI_DEVICE_ID_INTEL_ESB_7 0x25a9 +#define PCI_DEVICE_ID_INTEL_ESB_8 0x25aa +#define PCI_DEVICE_ID_INTEL_ESB_9 0x25ab +#define PCI_DEVICE_ID_INTEL_ESB_11 0x25ac +#define PCI_DEVICE_ID_INTEL_ESB_12 0x25ad +#define PCI_DEVICE_ID_INTEL_ESB_13 0x25ae +#define PCI_DEVICE_ID_INTEL_82820_HB 0x2500 +#define PCI_DEVICE_ID_INTEL_82820_UP_HB 0x2501 +#define PCI_DEVICE_ID_INTEL_82850_HB 0x2530 +#define PCI_DEVICE_ID_INTEL_82860_HB 0x2531 +#define PCI_DEVICE_ID_INTEL_82845G_HB 0x2560 +#define PCI_DEVICE_ID_INTEL_82845G_IG 0x2562 +#define PCI_DEVICE_ID_INTEL_82865_HB 0x2570 +#define PCI_DEVICE_ID_INTEL_82865_IG 0x2572 +#define PCI_DEVICE_ID_INTEL_82875_HB 0x2578 +#define PCI_DEVICE_ID_INTEL_82875_IG 0x257b +#define PCI_DEVICE_ID_INTEL_82915G_HB 0x2580 +#define PCI_DEVICE_ID_INTEL_82915G_IG 0x2582 +#define PCI_DEVICE_ID_INTEL_82915GM_HB 0x2590 +#define PCI_DEVICE_ID_INTEL_82915GM_IG 0x2592 +#define PCI_DEVICE_ID_INTEL_82945G_HB 0x2770 +#define PCI_DEVICE_ID_INTEL_82945G_IG 0x2772 +#define PCI_DEVICE_ID_INTEL_ICH6_0 0x2640 +#define PCI_DEVICE_ID_INTEL_ICH6_1 0x2641 +#define PCI_DEVICE_ID_INTEL_ICH6_2 0x2642 +#define PCI_DEVICE_ID_INTEL_ICH6_3 0x2651 +#define PCI_DEVICE_ID_INTEL_ICH6_4 0x2652 +#define PCI_DEVICE_ID_INTEL_ICH6_5 0x2653 +#define PCI_DEVICE_ID_INTEL_ICH6_6 0x2658 +#define PCI_DEVICE_ID_INTEL_ICH6_7 0x2659 +#define PCI_DEVICE_ID_INTEL_ICH6_8 0x265a +#define PCI_DEVICE_ID_INTEL_ICH6_9 0x265b +#define PCI_DEVICE_ID_INTEL_ICH6_10 0x265c +#define PCI_DEVICE_ID_INTEL_ICH6_11 0x2660 +#define PCI_DEVICE_ID_INTEL_ICH6_12 0x2662 +#define PCI_DEVICE_ID_INTEL_ICH6_13 0x2664 +#define PCI_DEVICE_ID_INTEL_ICH6_14 0x2666 +#define PCI_DEVICE_ID_INTEL_ICH6_15 0x2668 +#define PCI_DEVICE_ID_INTEL_ICH6_16 0x266a +#define PCI_DEVICE_ID_INTEL_ICH6_17 0x266d +#define PCI_DEVICE_ID_INTEL_ICH6_18 0x266e +#define PCI_DEVICE_ID_INTEL_ICH6_19 0x266f +#define PCI_DEVICE_ID_INTEL_ESB2_0 0x2670 +#define PCI_DEVICE_ID_INTEL_ESB2_1 0x2680 +#define PCI_DEVICE_ID_INTEL_ESB2_2 0x2681 +#define PCI_DEVICE_ID_INTEL_ESB2_3 0x2682 +#define PCI_DEVICE_ID_INTEL_ESB2_4 0x2683 +#define PCI_DEVICE_ID_INTEL_ESB2_5 0x2688 +#define PCI_DEVICE_ID_INTEL_ESB2_6 0x2689 +#define PCI_DEVICE_ID_INTEL_ESB2_7 0x268a +#define PCI_DEVICE_ID_INTEL_ESB2_8 0x268b +#define PCI_DEVICE_ID_INTEL_ESB2_9 0x268c +#define PCI_DEVICE_ID_INTEL_ESB2_10 0x2690 +#define PCI_DEVICE_ID_INTEL_ESB2_11 0x2692 +#define PCI_DEVICE_ID_INTEL_ESB2_12 0x2694 +#define PCI_DEVICE_ID_INTEL_ESB2_13 0x2696 +#define PCI_DEVICE_ID_INTEL_ESB2_14 0x2698 +#define PCI_DEVICE_ID_INTEL_ESB2_15 0x2699 +#define PCI_DEVICE_ID_INTEL_ESB2_16 0x269a +#define PCI_DEVICE_ID_INTEL_ESB2_17 0x269b +#define PCI_DEVICE_ID_INTEL_ESB2_18 0x269e +#define PCI_DEVICE_ID_INTEL_ICH7_0 0x27b8 +#define PCI_DEVICE_ID_INTEL_ICH7_1 0x27b9 +#define PCI_DEVICE_ID_INTEL_ICH7_2 0x27c0 +#define PCI_DEVICE_ID_INTEL_ICH7_3 0x27c1 +#define PCI_DEVICE_ID_INTEL_ICH7_30 0x27b0 +#define PCI_DEVICE_ID_INTEL_ICH7_31 0x27bd +#define PCI_DEVICE_ID_INTEL_ICH7_5 0x27c4 +#define PCI_DEVICE_ID_INTEL_ICH7_6 0x27c5 +#define PCI_DEVICE_ID_INTEL_ICH7_7 0x27c8 +#define PCI_DEVICE_ID_INTEL_ICH7_8 0x27c9 +#define PCI_DEVICE_ID_INTEL_ICH7_9 0x27ca +#define PCI_DEVICE_ID_INTEL_ICH7_10 0x27cb +#define PCI_DEVICE_ID_INTEL_ICH7_11 0x27cc +#define PCI_DEVICE_ID_INTEL_ICH7_12 0x27d0 +#define PCI_DEVICE_ID_INTEL_ICH7_13 0x27d2 +#define PCI_DEVICE_ID_INTEL_ICH7_14 0x27d4 +#define PCI_DEVICE_ID_INTEL_ICH7_15 0x27d6 +#define PCI_DEVICE_ID_INTEL_ICH7_16 0x27d8 +#define PCI_DEVICE_ID_INTEL_ICH7_17 0x27da +#define PCI_DEVICE_ID_INTEL_ICH7_18 0x27dc +#define PCI_DEVICE_ID_INTEL_ICH7_19 0x27dd +#define PCI_DEVICE_ID_INTEL_ICH7_20 0x27de +#define PCI_DEVICE_ID_INTEL_ICH7_21 0x27df +#define PCI_DEVICE_ID_INTEL_ICH7_22 0x27e0 +#define PCI_DEVICE_ID_INTEL_ICH7_23 0x27e2 +#define PCI_DEVICE_ID_INTEL_82855PM_HB 0x3340 +#define PCI_DEVICE_ID_INTEL_ESB2_19 0x3500 +#define PCI_DEVICE_ID_INTEL_ESB2_20 0x3501 +#define PCI_DEVICE_ID_INTEL_ESB2_21 0x3504 +#define PCI_DEVICE_ID_INTEL_ESB2_22 0x3505 +#define PCI_DEVICE_ID_INTEL_ESB2_23 0x350c +#define PCI_DEVICE_ID_INTEL_ESB2_24 0x350d +#define PCI_DEVICE_ID_INTEL_ESB2_25 0x3510 +#define PCI_DEVICE_ID_INTEL_ESB2_26 0x3511 +#define PCI_DEVICE_ID_INTEL_ESB2_27 0x3514 +#define PCI_DEVICE_ID_INTEL_ESB2_28 0x3515 +#define PCI_DEVICE_ID_INTEL_ESB2_29 0x3518 +#define PCI_DEVICE_ID_INTEL_ESB2_30 0x3519 +#define PCI_DEVICE_ID_INTEL_82830_HB 0x3575 +#define PCI_DEVICE_ID_INTEL_82830_CGC 0x3577 +#define PCI_DEVICE_ID_INTEL_82855GM_HB 0x3580 +#define PCI_DEVICE_ID_INTEL_82855GM_IG 0x3582 +#define PCI_DEVICE_ID_INTEL_E7520_MCH 0x3590 +#define PCI_DEVICE_ID_INTEL_E7320_MCH 0x3592 +#define PCI_DEVICE_ID_INTEL_MCH_PA 0x3595 +#define PCI_DEVICE_ID_INTEL_MCH_PA1 0x3596 +#define PCI_DEVICE_ID_INTEL_MCH_PB 0x3597 +#define PCI_DEVICE_ID_INTEL_MCH_PB1 0x3598 +#define PCI_DEVICE_ID_INTEL_MCH_PC 0x3599 +#define PCI_DEVICE_ID_INTEL_MCH_PC1 0x359a +#define PCI_DEVICE_ID_INTEL_E7525_MCH 0x359e +#define PCI_DEVICE_ID_INTEL_80310 0x530d +#define PCI_DEVICE_ID_INTEL_82371SB_0 0x7000 +#define PCI_DEVICE_ID_INTEL_82371SB_1 0x7010 +#define PCI_DEVICE_ID_INTEL_82371SB_2 0x7020 +#define PCI_DEVICE_ID_INTEL_82437VX 0x7030 +#define PCI_DEVICE_ID_INTEL_82439TX 0x7100 +#define PCI_DEVICE_ID_INTEL_82371AB_0 0x7110 +#define PCI_DEVICE_ID_INTEL_82371AB 0x7111 +#define PCI_DEVICE_ID_INTEL_82371AB_2 0x7112 +#define PCI_DEVICE_ID_INTEL_82371AB_3 0x7113 +#define PCI_DEVICE_ID_INTEL_82810_MC1 0x7120 +#define PCI_DEVICE_ID_INTEL_82810_IG1 0x7121 +#define PCI_DEVICE_ID_INTEL_82810_MC3 0x7122 +#define PCI_DEVICE_ID_INTEL_82810_IG3 0x7123 +#define PCI_DEVICE_ID_INTEL_82810E_MC 0x7124 +#define PCI_DEVICE_ID_INTEL_82810E_IG 0x7125 +#define PCI_DEVICE_ID_INTEL_82443LX_0 0x7180 +#define PCI_DEVICE_ID_INTEL_82443LX_1 0x7181 +#define PCI_DEVICE_ID_INTEL_82443BX_0 0x7190 +#define PCI_DEVICE_ID_INTEL_82443BX_1 0x7191 +#define PCI_DEVICE_ID_INTEL_82443BX_2 0x7192 +#define PCI_DEVICE_ID_INTEL_440MX 0x7195 +#define PCI_DEVICE_ID_INTEL_82443MX_0 0x7198 +#define PCI_DEVICE_ID_INTEL_82443MX_1 0x7199 +#define PCI_DEVICE_ID_INTEL_82443MX_2 0x719a +#define PCI_DEVICE_ID_INTEL_82443MX_3 0x719b +#define PCI_DEVICE_ID_INTEL_82443GX_0 0x71a0 +#define PCI_DEVICE_ID_INTEL_82443GX_1 0x71a1 +#define PCI_DEVICE_ID_INTEL_82443GX_2 0x71a2 +#define PCI_DEVICE_ID_INTEL_82372FB_0 0x7600 +#define PCI_DEVICE_ID_INTEL_82372FB_1 0x7601 +#define PCI_DEVICE_ID_INTEL_82372FB_2 0x7602 +#define PCI_DEVICE_ID_INTEL_82372FB_3 0x7603 +#define PCI_DEVICE_ID_INTEL_82454GX 0x84c4 +#define PCI_DEVICE_ID_INTEL_82450GX 0x84c5 +#define PCI_DEVICE_ID_INTEL_82451NX 0x84ca +#define PCI_DEVICE_ID_INTEL_82454NX 0x84cb +#define PCI_DEVICE_ID_INTEL_84460GX 0x84ea +#define PCI_DEVICE_ID_INTEL_IXP4XX 0x8500 +#define PCI_DEVICE_ID_INTEL_IXP2400 0x9001 +#define PCI_DEVICE_ID_INTEL_IXP2800 0x9004 +#define PCI_DEVICE_ID_INTEL_S21152BB 0xb152 + +#define PCI_VENDOR_ID_COMPUTONE 0x8e0e +#define PCI_DEVICE_ID_COMPUTONE_IP2EX 0x0291 +#define PCI_DEVICE_ID_COMPUTONE_PG 0x0302 +#define PCI_SUBVENDOR_ID_COMPUTONE 0x8e0e +#define PCI_SUBDEVICE_ID_COMPUTONE_PG4 0x0001 +#define PCI_SUBDEVICE_ID_COMPUTONE_PG8 0x0002 +#define PCI_SUBDEVICE_ID_COMPUTONE_PG6 0x0003 + +#define PCI_VENDOR_ID_KTI 0x8e2e +#define PCI_DEVICE_ID_KTI_ET32P2 0x3000 + +#define PCI_VENDOR_ID_ADAPTEC 0x9004 +#define PCI_DEVICE_ID_ADAPTEC_7810 0x1078 +#define PCI_DEVICE_ID_ADAPTEC_7821 0x2178 +#define PCI_DEVICE_ID_ADAPTEC_38602 0x3860 +#define PCI_DEVICE_ID_ADAPTEC_7850 0x5078 +#define PCI_DEVICE_ID_ADAPTEC_7855 0x5578 +#define PCI_DEVICE_ID_ADAPTEC_5800 0x5800 +#define PCI_DEVICE_ID_ADAPTEC_3860 0x6038 +#define PCI_DEVICE_ID_ADAPTEC_1480A 0x6075 +#define PCI_DEVICE_ID_ADAPTEC_7860 0x6078 +#define PCI_DEVICE_ID_ADAPTEC_7861 0x6178 +#define PCI_DEVICE_ID_ADAPTEC_7870 0x7078 +#define PCI_DEVICE_ID_ADAPTEC_7871 0x7178 +#define PCI_DEVICE_ID_ADAPTEC_7872 0x7278 +#define PCI_DEVICE_ID_ADAPTEC_7873 0x7378 +#define PCI_DEVICE_ID_ADAPTEC_7874 0x7478 +#define PCI_DEVICE_ID_ADAPTEC_7895 0x7895 +#define PCI_DEVICE_ID_ADAPTEC_7880 0x8078 +#define PCI_DEVICE_ID_ADAPTEC_7881 0x8178 +#define PCI_DEVICE_ID_ADAPTEC_7882 0x8278 +#define PCI_DEVICE_ID_ADAPTEC_7883 0x8378 +#define PCI_DEVICE_ID_ADAPTEC_7884 0x8478 +#define PCI_DEVICE_ID_ADAPTEC_7885 0x8578 +#define PCI_DEVICE_ID_ADAPTEC_7886 0x8678 +#define PCI_DEVICE_ID_ADAPTEC_7887 0x8778 +#define PCI_DEVICE_ID_ADAPTEC_7888 0x8878 +#define PCI_DEVICE_ID_ADAPTEC_1030 0x8b78 + +#define PCI_VENDOR_ID_ADAPTEC2 0x9005 +#define PCI_DEVICE_ID_ADAPTEC2_2940U2 0x0010 +#define PCI_DEVICE_ID_ADAPTEC2_2930U2 0x0011 +#define PCI_DEVICE_ID_ADAPTEC2_7890B 0x0013 +#define PCI_DEVICE_ID_ADAPTEC2_7890 0x001f +#define PCI_DEVICE_ID_ADAPTEC2_3940U2 0x0050 +#define PCI_DEVICE_ID_ADAPTEC2_3950U2D 0x0051 +#define PCI_DEVICE_ID_ADAPTEC2_7896 0x005f +#define PCI_DEVICE_ID_ADAPTEC2_7892A 0x0080 +#define PCI_DEVICE_ID_ADAPTEC2_7892B 0x0081 +#define PCI_DEVICE_ID_ADAPTEC2_7892D 0x0083 +#define PCI_DEVICE_ID_ADAPTEC2_7892P 0x008f +#define PCI_DEVICE_ID_ADAPTEC2_7899A 0x00c0 +#define PCI_DEVICE_ID_ADAPTEC2_7899B 0x00c1 +#define PCI_DEVICE_ID_ADAPTEC2_7899D 0x00c3 +#define PCI_DEVICE_ID_ADAPTEC2_7899P 0x00cf +#define PCI_DEVICE_ID_ADAPTEC2_SCAMP 0x0503 + +#define PCI_VENDOR_ID_ATRONICS 0x907f +#define PCI_DEVICE_ID_ATRONICS_2015 0x2015 + +#define PCI_VENDOR_ID_HOLTEK 0x9412 +#define PCI_DEVICE_ID_HOLTEK_6565 0x6565 + +#define PCI_VENDOR_ID_NETMOS 0x9710 +#define PCI_DEVICE_ID_NETMOS_9705 0x9705 +#define PCI_DEVICE_ID_NETMOS_9715 0x9715 +#define PCI_DEVICE_ID_NETMOS_9735 0x9735 +#define PCI_DEVICE_ID_NETMOS_9745 0x9745 +#define PCI_DEVICE_ID_NETMOS_9755 0x9755 +#define PCI_DEVICE_ID_NETMOS_9805 0x9805 +#define PCI_DEVICE_ID_NETMOS_9815 0x9815 +#define PCI_DEVICE_ID_NETMOS_9835 0x9835 +#define PCI_DEVICE_ID_NETMOS_9845 0x9845 +#define PCI_DEVICE_ID_NETMOS_9855 0x9855 + +#define PCI_SUBVENDOR_ID_EXSYS 0xd84d +#define PCI_SUBDEVICE_ID_EXSYS_4014 0x4014 + +#define PCI_VENDOR_ID_TIGERJET 0xe159 +#define PCI_DEVICE_ID_TIGERJET_300 0x0001 +#define PCI_DEVICE_ID_TIGERJET_100 0x0002 + +#define PCI_VENDOR_ID_TTTECH 0x0357 +#define PCI_DEVICE_ID_TTTECH_MC322 0x000A + +#define PCI_VENDOR_ID_ARK 0xedd8 +#define PCI_DEVICE_ID_ARK_STING 0xa091 +#define PCI_DEVICE_ID_ARK_STINGARK 0xa099 +#define PCI_DEVICE_ID_ARK_2000MT 0xa0a1 diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/host/ohci-pci/pcixbios.h b/BaS_codewarrior/FireBee/trunk/usb/store/host/ohci-pci/pcixbios.h new file mode 100644 index 0000000..5788130 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/host/ohci-pci/pcixbios.h @@ -0,0 +1,342 @@ +/* TOS 4.04 Xbios PCI for the CT60 board +* Didier Mequignon 2005, e-mail: aniplay@wanadoo.fr +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; either +* version 2.1 of the License, or (at your option) any later version. +* +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public +* License along with this library; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#ifndef _OHCI_PCI_PCIXBIOS_H +#define _OHCI_PCI_PCIXBIOS_H + +#define PCIIDR 0x00 /* PCI Configuration ID Register */ +#define PCICSR 0x04 /* PCI Command/Status Register */ +#define PCICR 0x04 /* PCI Command Register */ +#define PCISR 0x06 /* PCI Status Register */ +#define PCIREV 0x08 /* PCI Revision ID Register */ +#define PCICCR 0x09 /* PCI Class Code Register */ +#define PCICLSR 0x0C /* PCI Cache Line Size Register */ +#define PCILTR 0x0D /* PCI Latency Timer Register */ +#define PCIHTR 0x0E /* PCI Header Type Register */ +#define PCIBISTR 0x0F /* PCI Build-In Self Test Register */ +#define PCIBAR0 0x10 /* PCI Base Address Register for Memory + Accesses to Local, Runtime, and DMA */ +#define PCIBAR1 0x14 /* PCI Base Address Register for I/O + Accesses to Local, Runtime, and DMA */ +#define PCIBAR2 0x18 /* PCI Base Address Register for Memory + Accesses to Local Address Space 0 */ +#define PCIBAR3 0x1C /* PCI Base Address Register for Memory + Accesses to Local Address Space 1 */ +#define PCIBAR4 0x20 /* PCI Base Address Register, reserved */ +#define PCIBAR5 0x24 /* PCI Base Address Register, reserved */ +#define PCICIS 0x28 /* PCI Cardbus CIS Pointer, not support*/ +#define PCISVID 0x2C /* PCI Subsystem Vendor ID */ +#define PCISID 0x2E /* PCI Subsystem ID */ +#define PCIERBAR 0x30 /* PCI Expansion ROM Base Register */ +#define CAP_PTR 0x34 /* New Capability Pointer */ +#define PCIILR 0x3C /* PCI Interrupt Line Register */ +#define PCIIPR 0x3D /* PCI Interrupt Pin Register */ +#define PCIMGR 0x3E /* PCI Min_Gnt Register */ +#define PCIMLR 0x3F /* PCI Max_Lat Register */ +#define PMCAPID 0x40 /* Power Management Capability ID */ +#define PMNEXT 0x41 /* Power Management Next Capability + Pointer */ +#define PMC 0x42 /* Power Management Capabilities */ +#define PMCSR 0x44 /* Power Management Control/Status */ +#define PMCSR_BSE 0x46 /* PMCSR Bridge Support Extensions */ +#define PMDATA 0x47 /* Power Management Data */ +#define HS_CNTL 0x48 /* Hot Swap Control */ +#define HS_NEXT 0x49 /* Hot Swap Next Capability Pointer */ +#define HS_CSR 0x4A /* Hot Swap Control/Status */ +#define PVPDCNTL 0x4C /* PCI Vital Product Data Control */ +#define PVPD_NEXT 0x4D /* PCI Vital Product Data Next + Capability Pointer */ +#define PVPDAD 0x4E /* PCI Vital Product Data Address */ +#define PVPDATA 0x50 /* PCI VPD Data */ + +typedef struct +{ + unsigned long *subcookie; + unsigned long version; + long routine[45]; +} PCI_COOKIE; + +typedef struct /* structure of resource descriptor */ +{ + unsigned short next; /* length of the following structure */ + unsigned short flags; /* type of resource and misc. flags */ + unsigned long start; /* start-address of resource */ + unsigned long length; /* length of resource */ + unsigned long offset; /* offset PCI to phys. CPU Address */ + unsigned long dmaoffset; /* offset for DMA-transfers */ +} PCI_RSC_DESC; + +typedef struct /* structure of address conversion */ +{ + unsigned long adr; /* calculated address (CPU<->PCI) */ + unsigned long len; /* length of memory range */ +} PCI_CONV_ADR; + +/******************************************************************************/ +/* PCI-BIOS Error Codes */ +/******************************************************************************/ +#define PCI_SUCCESSFUL 0 /* everything's fine */ +#define PCI_FUNC_NOT_SUPPORTED -2 /* function not supported */ +#define PCI_BAD_VENDOR_ID -3 /* wrong Vendor ID */ +#define PCI_DEVICE_NOT_FOUND -4 /* PCI-Device not found */ +#define PCI_BAD_REGISTER_NUMBER -5 /* wrong register number */ +#define PCI_SET_FAILED -6 /* reserved for later use */ +#define PCI_BUFFER_TOO_SMALL -7 /* reserved for later use */ +#define PCI_GENERAL_ERROR -8 /* general BIOS error code */ +#define PCI_BAD_HANDLE -9 /* wrong/unknown PCI-handle */ + +/******************************************************************************/ +/* Flags used in Resource-Descriptor */ +/******************************************************************************/ +#define FLG_IO 0x4000 /* Ressource in IO range */ +#define FLG_LAST 0x8000 /* last ressource */ +#define FLG_8BIT 0x0100 /* 8 bit accesses allowed */ +#define FLG_16BIT 0x0200 /* 16 bit accesses allowed */ +#define FLG_32BIT 0x0400 /* 32 bit accesses allowed */ +#define FLG_ENDMASK 0x000F /* mask for byte ordering */ + +/******************************************************************************/ +/* Values used in FLG_ENDMASK for Byte Ordering */ +/******************************************************************************/ +#define ORD_MOTOROLA 0 /* Motorola (big endian) */ +#define ORD_INTEL_AS 1 /* Intel (little endian), addr.swapped */ +#define ORD_INTEL_LS 2 /* Intel (little endian), lane swapped */ +#define ORD_UNKNOWN 15 /* unknown (BIOS-calls allowed only) */ + +/******************************************************************************/ +/* Status Info used in Device-Descriptor */ +/******************************************************************************/ +#define DEVICE_FREE 0 /* Device is not used */ +#define DEVICE_USED 1 /* Device is used by another driver */ +#define DEVICE_CALLBACK 2 /* used, but driver can be cancelled */ +#define DEVICE_AVAILABLE 3 /* used, not available */ +#define NO_DEVICE -1 /* no device detected */ + +/******************************************************************************/ +/* Callback-Routine */ +/******************************************************************************/ + #define GET_DRIVER_ID 0 /* CB-Routine 0: Get Driver ID */ + #define REMOVE_DRIVER 1 /* CB-Routine 1: Remove Driver */ + +/******************************************************************************/ +/* Functions */ +/******************************************************************************/ +//#ifndef OSBIND_CLOBBER_LIST +//#define OSBIND_CLOBBER_LIST +//#endif + +#ifndef trap_14_wlw +#define trap_14_wlw(n, a, b) \ +__extension__ \ +({ \ + register long retvalue __asm__("d0"); \ + long _a = (long) (a); \ + short _b = (short) (b); \ + \ + __asm__ volatile ( \ + "movw %3,sp@-\n\t" \ + "movl %2,sp@-\n\t" \ + "movw %1,sp@-\n\t" \ + "trap #14\n\t" \ + "lea sp@(8),sp" \ + : "=r"(retvalue) \ + : "g"(n), "r"(_a), "r"(_b) \ + ); \ + retvalue; \ +}) +#endif +#ifndef trap_14_wll +#define trap_14_wll(n, a, b) \ +__extension__ \ +({ \ + register long retvalue __asm__("d0"); \ + long _a = (long) (a); \ + long _b = (long) (b); \ + \ + __asm__ volatile ( \ + "movl %3,sp@-\n\t" \ + "movl %2,sp@-\n\t" \ + "movw %1,sp@-\n\t" \ + "trap #14\n\t" \ + "lea sp@(10),sp" \ + : "=r"(retvalue) \ + : "g"(n), "r"(_a), "r"(_b) \ + ); \ + retvalue; \ +}) +#endif +#ifndef trap_14_wlww +#define trap_14_wlww(n, a, b, c) \ +__extension__ \ +({ \ + register long retvalue __asm__("d0"); \ + long _a = (long) (a); \ + short _b = (short) (b); \ + short _c = (short) (c); \ + \ + __asm__ volatile ( \ + "movl %4,sp@-\n\t" \ + "movw %3,sp@-\n\t" \ + "movw %2,sp@-\n\t" \ + "movw %1,sp@-\n\t" \ + "trap #14\n\t" \ + "lea sp@(10),sp" \ + : "=r"(retvalue) \ + : "g"(n), "r"(_a), "r"(_b), "r"(_c) \ + ); \ + retvalue; \ +}) +#endif +#ifndef trap_14_wlwl +#define trap_14_wlwl(n, a, b, c) \ +__extension__ \ +({ \ + register long retvalue __asm__("d0"); \ + long _a = (long) (a); \ + short _b = (short) (b); \ + long _c = (long) (c); \ + \ + __asm__ volatile ( \ + "movl %4,sp@-\n\t" \ + "movw %3,sp@-\n\t" \ + "movl %2,sp@-\n\t" \ + "movw %1,sp@-\n\t" \ + "trap #14\n\t" \ + "lea sp@(12),sp" \ + : "=r"(retvalue) \ + : "g"(n), "r"(_a), "r"(_b), "r"(_c) \ + ); \ + retvalue; \ +}) +#endif +#ifndef trap_14_wlll +#define trap_14_wlll(n, a, b, c) \ +__extension__ \ +({ \ + register long retvalue __asm__("d0"); \ + long _a = (long) (a); \ + long _b = (long) (b); \ + long _c = (long) (c); \ + \ + __asm__ volatile ( \ + "movl %4,sp@-\n\t" \ + "movl %3,sp@-\n\t" \ + "movl %2,sp@-\n\t" \ + "movw %1,sp@-\n\t" \ + "trap #14\n\t" \ + "lea sp@(14),sp" \ + : "=r"(retvalue) \ + : "g"(n), "r"(_a), "r"(_b), "r"(_c) \ + ); \ + retvalue; \ +}) +#endif + +#define find_pci_device(id,index) (long)trap_14_wlw((short)(300),(unsigned long)(id),(unsigned short)(index)) +#define find_pci_classcode(classcode,index) (long)trap_14_wlw((short)(301),(unsigned long)(classcode),(unsigned short)(index)) +#define read_config_byte(handle,reg,address) (long)trap_14_wlwl((short)(302),(long)(handle),(unsigned short)(reg),(unsigned char *)(address)) +#define read_config_word(handle,reg,address) (long)trap_14_wlwl((short)(303),(long)(handle),(unsigned short)(reg),(unsigned short *)(address)) +#define read_config_longword(handle,reg,address) (long)trap_14_wlwl((short)(304),(long)(handle),(unsigned short)(reg),(unsigned long *)(address)) +#define fast_read_config_byte(handle,reg) (unsigned char)trap_14_wlw((short)(305),(long)(handle),(unsigned short)(reg)) +#define fast_read_config_word(handle,reg) (unsigned short)trap_14_wlw((short)(306),(long)(handle),(unsigned short)(reg)) +#define fast_read_config_longword(handle,reg) (unsigned long)trap_14_wlw((short)(307),(long)(handle),(unsigned short)(reg)) +#define write_config_byte(handle,reg,data) (long)trap_14_wlww((short)(308),(long)(handle),(unsigned short)(reg),(unsigned short)(data)) +#define write_config_word(handle,reg,data) (long)trap_14_wlww((short)(309),(long)(handle),(unsigned short)(reg),(unsigned short)(data)) +#define write_config_longword(handle,reg,data) (long)trap_14_wlwl((short)(310),(long)(handle),(unsigned short)(reg),(unsigned long)(data)) +#define hook_interrupt(handle,routine,parameter) (long)trap_14_wlll((short)(311),(long)(handle),(unsigned long *)(routine),(unsigned long *)(parameter)) +#define unhook_interrupt(handle) (long)trap_14_wl((short)(312),(long)(handle)) +#define special_cycle(bus_number,special_cycle) (long)trap_14_wwl((short)(313),(unsigned short)(bus_number),(unsigned long)(special_cycle)) +#define get_routing(handle) (long)trap_14_wl((short)(314),(long)(handle)) +#define set_interrupt(handle,mode) (long)trap_14_wlw((short)(315),(long)(handle),(short)(mode)) +#define get_resource(handle) (long)trap_14_wl((short)(316),(long)(handle)) +#define get_card_used(handle,callback) (long)trap_14_wll((short)(317),(long)(handle),(long *)(address)) +#define set_card_used(handle,callback) (long)trap_14_wll((short)(318),(long)(handle),(long *)(callback)) +#define read_mem_byte(handle,offset,address) (long)trap_14_wlll((short)(319),(long)(handle),(unsigned long)(offset),(unsigned char *)(address)) +#define read_mem_word(handle,offset,address) (long)trap_14_wlll((short)(320),(unsigned long)(offset),(unsigned short *)(address)) +#define read_mem_longword(handle,offset,address) (long)trap_14_wlll((short)(321),(unsigned long)(offset),(unsigned long *)(address)) +#define fast_read_mem_byte(handle,offset) (unsigned char)trap_14_wll((short)(322),(long)(handle),(unsigned long)(offset)) +#define fast_read_mem_word(handle,offset) (unsigned short)trap_14_wll((short)(323),(long)(handle),(unsigned long)(offset)) +#define fast_read_mem_longword(handle,offset) (unsigned long)trap_14_wll((short)(324),(long)(handle),(unsigned long)(offset)) +#define write_mem_byte(handle,offset,data) (long)trap_14_wllw((short)(325),(long)(handle),(unsigned long)(offset),(unsigned short)(data)) +#define write_mem_word(handle,offset,data) (long)trap_14_wllw((short)(326),(long)(handle),(unsigned long)(offset),(unsigned short)(data)) +#define write_mem_longword(handle,offset,data) (long)trap_14_wlll((short)(327),(long)(handle),(unsigned long)(offset),(unsigned long)(data)) +#define read_io_byte(handle,offset,address) (long)trap_14_wlll((short)(328),(long)(handle),(unsigned long)(offset),(unsigned char *)(address)) +#define read_io_word(handle,offset,address) (long)trap_14_wlll((short)(329),(long)(handle),(unsigned long)(offset),(unsigned short *)(address)) +#define read_io_longword(handle,offset,address) (long)trap_14_wlll((short)(330),(long)(handle),(unsigned long)(offset),(unsigned long *)(address)) +#define fast_read_io_byte(handle,offset) (unsigned char)trap_14_wll((short)(331),(long)(handle),(unsigned long)(offset)) +#define fast_read_io_word(handle,offset) (unsigned short)trap_14_wll((short)(332),(long)(handle),(unsigned long)(offset)) +#define fast_read_io_longword(handle,offset) (unsigned long)trap_14_wll((short)(333),(long)(handle),(unsigned long)(offset)) +#define write_io_byte(handle,offset,data) (long)trap_14_wllw((short)(334),(long)(handle),(unsigned long)(offset),(unsigned short)(data)) +#define write_io_word(handle,offset,data) (long)trap_14_wllw((short)(335),(long)(handle),(unsigned long)(offset),(unsigned short)(data)) +#define write_io_longword(handle,offset,data) (long)trap_14_wlll((short)(336),(long)(handle),(unsigned long)(offset),(unsigned long)(data)) +#define get_machine_id() (long)trap_14_w((short)(337)) +#define get_pagesize() (long)trap_14_w((short)(338)) +#define virt_to_bus(handle,address,pointer) (long)trap_14_wlll((short)(339),(long)(handle),(unsigned long)(address),(unsigned long *)(pointer)) +#define bus_to_virt(handle,address,pointer) (long)trap_14_wlll((short)(340),(long)(handle),(unsigned long)(address),(unsigned long *)(pointer)) +#define virt_to_phys(address,pointer) (long)trap_14_wll((short)(341),(unsigned long)(address),(unsigned long *)(pointer)) +#define phys_to_virt(address,pointer) (long)trap_14_wll((short)(342),(unsigned long)(address),(unsigned long *)(pointer)) +#define dma_setbuffer(pci_address,local_address,size) (long)trap_14_wlll((short)(350),(unsigned long)(pci_address),(unsigned long)(local_address),(unsigned long)(size)) +#define dma_buffoper(mode) (long)trap_14_ww((short)(351),(short)(mode)) +#define read_mailbox(mailbox,pointer) (long)trap_14_wwl((short)(352),(short)(mailbox),(unsigned long *)(pointer)) +#define write_mailbox(mailbox,data) (long)trap_14_wwl((short)(353),(short)(mailbox),(unsigned long)(data)) + +extern long Find_pci_device(unsigned long id, unsigned short index); +extern long Find_pci_classcode(unsigned long class, unsigned short index); +extern long Read_config_byte(long handle, unsigned short reg, unsigned char *address); +extern long Read_config_word(long handle, unsigned short reg, unsigned short *address); +extern long Read_config_longword(long handle, unsigned short reg, unsigned long *address); +extern unsigned char Fast_read_config_byte(long handle, unsigned short reg); +extern unsigned short Fast_read_config_word(long handle, unsigned short reg); +extern unsigned long Fast_read_config_longword(long handle, unsigned short reg); +extern long Write_config_byte(long handle, unsigned short reg, unsigned short val); +extern long Write_config_word(long handle, unsigned short reg, unsigned short val); +extern long Write_config_longword(long handle, unsigned short reg, unsigned long val); +extern long Hook_interrupt(long handle, unsigned long *routine, unsigned long *parameter); +extern long Unhook_interrupt(long handle); +extern long Special_cycle(unsigned short bus, unsigned long data); +extern long Get_routing(long handle); +extern long Set_interrupt(long handle); +extern long Get_resource(long handle); +extern long Get_card_used(long handle, unsigned long *address); +extern long Set_card_used(long handle, unsigned long *callback); +extern long Read_mem_byte(long handle, unsigned long offset, unsigned char *address); +extern long Read_mem_word(long handle, unsigned long offset, unsigned short *address); +extern long Read_mem_longword(long handle, unsigned long offset, unsigned long *address); +extern unsigned char Fast_read_mem_byte(long handle, unsigned long offset); +extern unsigned short Fast_read_mem_word(long handle, unsigned long offset); +extern unsigned long Fast_read_mem_longword(long handle, unsigned long offset); +extern long Write_mem_byte(long handle, unsigned long offset, unsigned short val); +extern long Write_mem_word(long handle, unsigned long offset, unsigned short val); +extern long Write_mem_longword(long handle, unsigned long offset, unsigned long val); +extern long Read_io_byte(long handle, unsigned long offset, unsigned char *address); +extern long Read_io_word(long handle, unsigned long offset, unsigned short *address); +extern long Read_io_longword(long handle, unsigned long offset, unsigned long *address); +extern unsigned char Fast_read_io_byte(long handle, unsigned long offset); +extern unsigned short Fast_read_io_word(long handle, unsigned long offset); +extern unsigned long Fast_read_io_longword(long handle, unsigned long offset); +extern long Write_io_byte(long handle, unsigned long offset, unsigned short val); +extern long Write_io_word(long handle, unsigned long offset, unsigned short val); +extern long Write_io_longword(long handle, unsigned long offset, unsigned long val); +extern long Get_machine_id(void); +extern long Get_pagesize(void); +extern long Virt_to_bus(long handle, unsigned long address, PCI_CONV_ADR *pointer); +extern long Bus_to_virt(long handle, unsigned long address, PCI_CONV_ADR *pointer); +extern long Virt_to_phys(unsigned long address, PCI_CONV_ADR *pointer); +extern long Phys_to_virt(unsigned long address, PCI_CONV_ADR *pointer); + +#endif diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/main.c b/BaS_codewarrior/FireBee/trunk/usb/store/main.c new file mode 100644 index 0000000..32d7f4b --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/main.c @@ -0,0 +1,206 @@ +/* + * David Galvez. 2010, e-mail: dgalvez75@gmail.com + * PCI code taken from FireTos by Didier Mequignon + * + * This file is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This file is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "config.h" +#include "usb.h" +#include "super.h" +#include "debug.h" +#ifdef PCI_XBIOS +#include "host/ohci-pci/pci_ids.h" +#include "host/ohci-pci/pcixbios.h" +#endif +#include +#include + +extern long install_usb_stor(int dev_num, unsigned long part_type, + unsigned long part_offset, unsigned long part_size, + char *vendor, char *revision, char *product); +extern int do_usb(int argc, char **argv); +extern unsigned long _PgmSize; +extern long __mint; +#ifdef PCI_XBIOS +extern struct pci_device_id usb_pci_table[]; /* ohci-hcd.c */ +#endif + +int usb_stor_curr_dev; +unsigned long usb_1st_disk_drive; +short max_logical_drive; + +#ifdef PCI_XBIOS +short pci_init(void) +{ +/* PCI devices detection */ + struct pci_device_id *board; + long handle; + short usb_found; + + short idx; + long err; + unsigned long class; + + usb_found = 0; + idx = 0; + do { + handle = find_pci_device(0x0000FFFFL, idx++); +printf("idx %d PCI handle: %lx\n", idx -1, handle); /* Galvez: Debug */ + if(handle >= 0) { + unsigned long id = 0; + err = read_config_longword(handle, PCIIDR, &id); + + if((err >= 0) && !usb_found) { + if(read_config_longword(handle, PCIREV, &class) >= 0 + && ((class >> 16) == PCI_CLASS_SERIAL_USB)) { + if((class >> 8) == PCI_CLASS_SERIAL_USB_UHCI) + (void) Cconws("UHCI USB controller found\r\n"); + else if((class >> 8) == PCI_CLASS_SERIAL_USB_OHCI) { + (void) Cconws("OHCI USB controller found\r\n"); +#ifdef CONFIG_USB_OHCI + board = usb_pci_table; /* compare table */ + while(board->vendor) { + if((board->vendor == (id & 0xFFFF)) + && (board->device == (id >> 16))) { + if(usb_init(handle, board) >= 0) + usb_found = 1; + break; + } + board++; + } +#endif /* CONFIG_USB_OHCI */ + } + else if((class >> 8) == PCI_CLASS_SERIAL_USB_EHCI) + (void) Cconws("EHCI USB controller found\r\n"); + } + } + } + } + while(handle >= 0); + return usb_found; +} +#endif /* PCI_XBIOS */ + +int main(int argc, char **argv) +{ +#ifdef CONFIG_USB_STORAGE + long p = 0; + int r; + + if (__mint) + max_logical_drive = 24; + else max_logical_drive = 16; + + if (argc == 1) { + short usb_found = 0; + + usb_stor_curr_dev = -1; + usb_1st_disk_drive = 0; + + usb_stop(); +#ifdef PCI_XBIOS + usb_found = pci_init(); +#else + if (usb_init() >= 0) + usb_found = 1; +#endif /* PCI_XBIOS */ + if (usb_found) { + /* Scan and get info from all the storage devices found */ + usb_stor_curr_dev = usb_stor_scan(); + /* it doesn't really return current device * + * only 0 if it has found any store device * + * -1 otherwise */ + if (usb_stor_curr_dev != -1) { + int dev_num = usb_stor_curr_dev; + block_dev_desc_t *stor_dev; + + while ((stor_dev = usb_stor_get_dev(dev_num)) != NULL) { + int part_num = 1; + unsigned long part_type, part_offset, part_size; + /* Now find partitions in this storage device */ + while (!fat_register_device(stor_dev, part_num, &part_type, + &part_offset, &part_size)) { + if (!(Super(SUP_INQUIRE))) { + p = SuperFromUser (); + } + + /* install partition */ + r = install_usb_stor(dev_num, part_type, part_offset, + part_size, stor_dev->vendor, + stor_dev->revision, stor_dev->product); + if (r == -1) + printf("unable to install storage device\n"); + + if (p) + SuperToUser(p); + + part_num++; + } + dev_num++; + } + + } +#if 0 + long *drvbits; + long value; + + p = SuperFromUser(); + + drvbits = 0x000004c2; + + value = *drvbits; + printf("\ndrvbits: %x \n", (unsigned)value); + SuperToUser(p); +#endif + + } + + if (!__mint) { + printf(" Press any key"); + Bconin(DEV_CONSOLE); + } + Ptermres( _PgmSize, 0); + } +#endif /* CONFIG_USB_STORAGE */ + + if (strncmp(argv[1], "tree", 4) == 0) { + argc = 2; + argv[1] = "start"; + do_usb(argc, argv); + + argv[1] = "inf"; + do_usb(argc, argv); + + argv[1] = "tree"; + do_usb(argc, argv); + + argv[1] = "storage"; + do_usb(argc, argv); + +// argc = 3; +// argv[1] = "dev"; +// argv[2] = "0"; +// do_usb(argc, argv); + +// argc = 2; + argv[1] = "stop"; + do_usb (argc, argv); + + printf(" Press any key\r\n"); + Bconin(DEV_CONSOLE); + } + return 0; +} diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/makefile b/BaS_codewarrior/FireBee/trunk/usb/store/makefile new file mode 100644 index 0000000..2164391 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/makefile @@ -0,0 +1,85 @@ + +ifeq ($(CROSS),yes) +CC = m68k-atari-mint-gcc +STRIP = m68k-atari-mint-strip +STACK = m68k-atari-mint-stack +INCLUDE_GEM_PATH = /usr/local/cross-mint/m68k-atari-mint/include +LIB_GEM_PATH = /usr/local/cross-mint/m68k-atari-mint/lib +else +CC = gcc +STRIP = /usr/bin/strip +STACK = stack +COMPRESS = upx +INCLUDE_GEM_PATH = /usr/GEM/include +LIB_GEM_PATH = /usr/GEM/lib +endif + + +ifeq ($(MAKECMDGOALS), aranym) +HCD_S = ./host/aranym/natfeat_asm.S +HCD_C = ./host/aranym/aranym-hcd.c ./host/aranym/natfeat.c +HCD_H = ./host/aranym/nf_ops.h ./host/aranym/usbhost_nfapi.h +PROGRAM = stor_ara.tos +endif +ifeq ($(MAKECMDGOALS), netusbee) +HCD_C = ./host/netusbee/isp116x-hcd.c +HCD_H = ./host/netusbee/isp116x.h +PROGRAM = stor_ntu.tos +endif +ifeq ($(MAKECMDGOALS), ethernat) +HCD_C = ./host/ethernat/isp116x-hcd.c +HCD_H = ./host/ethernat/isp116x.h +PROGRAM = stor_etn.tos +endif +ifeq ($(MAKECMDGOALS), ohci-pci) +HCD_C = ./host/ohci-pci/ohci-hcd.c ./host/ohci-pci/ltoa.c +HCD_H = ./host/ohci-pci/ohci.h ./host/ohci-pci/pcixbios.h +DEFS = -DPCI_XBIOS +PROGRAM = stor_pci.tos +endif + +STACKSIZE = 64k +OPTIMISATION = -O -fomit-frame-pointer +CPU = -m68020-60 +LIB = +ASFLAGS = $(CPU) +CFLAGS = $(CPU) $(OPTIMISATION) -Wall -Wshadow -I$(INCLUDE_GEM_PATH) $(DEFS) -g +LFLAGS = -L$(LIB_GEM_PATH) +COBJS = main.c udelay.c cmd_usb.c usb.c usb_mem.c usb_storage.c debug.c $(HCD_C) +SOBJS = debug2.S bios.S $(HCD_S) +HSRC = config.h debug.h part.h scsi.h super.h usb.h usb_defs.h vars.h $(HCD_H) +COBJECTS = $(COBJS:.c=.o) +SOBJECTS = $(SOBJS:.S=.o) + +all: + make ethernat + make netusbee + make aranym + rm -f *.o + make ohci-pci + +ethernat: $(PROGRAM) + +aranym: $(PROGRAM) + +netusbee: $(PROGRAM) + +ohci-pci: $(PROGRAM) + +$(PROGRAM): $(COBJECTS) $(SOBJECTS) $(HSRC) + $(CC) -o $@ $(COBJECTS) $(SOBJECTS) + +strip: + $(STRIP) $(PROGRAM) + +stack: + $(STACK) -S $(STACKSIZE) $(PROGRAM) + +compress: + $(COMPRESS) $(PROGRAM) + +clean: + rm -f *.tos *.log + find ./ -type f -name "*.o" -exec rm -f {} \; + + diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/part.h b/BaS_codewarrior/FireBee/trunk/usb/store/part.h new file mode 100644 index 0000000..96ae888 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/part.h @@ -0,0 +1,88 @@ +/* + * (C) Copyright 2000-2004 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ +#ifndef _PART_H +#define _PART_H + +typedef unsigned long long uint64_t; +typedef unsigned long lbaint_t; + +typedef struct block_dev_desc { + int if_type; /* type of the interface */ + int dev; /* device number */ + unsigned char part_type; /* partition type */ + unsigned char target; /* target SCSI ID */ + unsigned char lun; /* target LUN */ + unsigned char type; /* device type */ + unsigned char removable; /* removable device */ +#ifdef CONFIG_LBA48 + unsigned char lba48; /* device can use 48bit addr (ATA/ATAPI v7) */ +#endif + lbaint_t lba; /* number of blocks */ + unsigned long blksz; /* block size */ + char vendor [40+1]; /* IDE model, SCSI Vendor */ + char product[20+1]; /* IDE Serial no, SCSI product */ + char revision[8+1]; /* firmware revision */ + unsigned long (*block_read)(int dev, unsigned long start, lbaint_t blkcnt, void *buffer); + unsigned long (*block_write)(int dev, unsigned long start, lbaint_t blkcnt, const void *buffer); + void *priv; /* driver private struct pointer */ +}block_dev_desc_t; + +/* Interface types: */ +#define IF_TYPE_UNKNOWN 0 +#define IF_TYPE_IDE 1 +#define IF_TYPE_SCSI 2 +#define IF_TYPE_ATAPI 3 +#define IF_TYPE_USB 4 +#define IF_TYPE_DOC 5 +#define IF_TYPE_MMC 6 +#define IF_TYPE_SD 7 +#define IF_TYPE_SATA 8 + +/* Part types */ +#define PART_TYPE_UNKNOWN 0x00 +#define PART_TYPE_MAC 0x01 +#define PART_TYPE_DOS 0x02 +#define PART_TYPE_ISO 0x03 +#define PART_TYPE_AMIGA 0x04 +#define PART_TYPE_EFI 0x05 + +/* + * Type string for U-Boot bootable partitions + */ +#define BOOT_PART_TYPE "U-Boot" /* primary boot partition type */ +#define BOOT_PART_COMP "PPCBoot" /* PPCBoot compatibility type */ + +/* device types */ +#define DEV_TYPE_UNKNOWN 0xff /* not connected */ +#define DEV_TYPE_HARDDISK 0x00 /* harddisk */ +#define DEV_TYPE_TAPE 0x01 /* Tape */ +#define DEV_TYPE_CDROM 0x05 /* CD-ROM */ +#define DEV_TYPE_OPDISK 0x07 /* optical disk */ + +void print_part(block_dev_desc_t *dev_desc); +void init_part(block_dev_desc_t *dev_desc); +void dev_print(block_dev_desc_t *dev_desc); + +int fat_register_device(block_dev_desc_t *dev_desc, int part_no, unsigned long *part_type, unsigned long *part_offset, unsigned long *part_size); + +#endif /* _PART_H */ diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/readme.txt b/BaS_codewarrior/FireBee/trunk/usb/store/readme.txt new file mode 100644 index 0000000..a1de9ad --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/readme.txt @@ -0,0 +1,68 @@ +This application allows you to mount an USB mass storage device though +the Ethernat hardware or the Aranym USB Natfeat, read or copy files from/to this device. +It's derived from the work done by Didier Mequignon for FireTOS. + +This is still quite experimental so i am not responsable for any data loss +or corruption, play with it at your own risk. Please backup your data ;-) + +**** Binaries **** + +stor_etn.tos ---> EtherNat +stor_ara.tos ---> Aranym +stor_ntu.tos ---> NetUSBee +stor_pci.tos ---> PCI-OHCI + +Note that NetUSBee and PCI-OHCI don't work yet + +**** How it works ***** + +Depending on your hardware run stor_etn.tos or stor_ara.tos application from your desktop, +if everything goes well you can use the "install partition" option in your desktop menu to +access the new partitions. + +It has been tested it under CT060 TOS and MiNT 1.16.3. +Teted in Aranym with MiNT 1.17.0 beta and TOS 4.04. + +**** Limits/Problems ***** + +- The supported partitions are the supported partitions by the OS. +It has been tested with FAT16 in TOS4.04, with FAT16, FAT32 and ext2 with MiNT. + +- There is still no handle for mounting/unmounting partitions. Neither detection for +devices already plugged, so when you mount one device you can't unmount it. +If you run the application several times with the same USB stick plugged, it +will mount the device again as a new different logical partition. + +- It's VERY VERY slow, for now the transfer rate it's quite ridiculous. I hope +to solve this soon. Under Aranym it can be better. + +- I don't think that it works together with umouse from Jan Thomas. + +- This is only a start don't expect too much. + +- Thing desktop crashes when inquiring to show info about the device. + +For feedback, suggestions or tips mail me at dgalvez75@gmail.com + +**** Histoy **** +* 5/10/2010 (alfa 05) + - XHDI working (assembler version). + - Under MiNT FAT32 and ext2 partitions can be accesed. + - Introduced NetUSBee sources (not working yet) + - Introduced OHCI-PCI sources (to be tested) +* 27/8/2010 (alfa 04) + - Start XHDI translation to C. + - Support for Aranym HCD. +* 19/5/2010 (alfa 03) + - Killed a bug that could produce some corruption in the pun_info struct. +* 26/4/2010 (alfa 02) + - Under MiNT if the number of partitions was greater than 16, the driver wasn't installed. + - Wait for a key pess before retuning the desktop under TOS when driver is loaded. + - Resolved big bug that produced that data written/read above the first 16 MB to be corrupted. +* 1/3/2010 (alfa 01) + - Initial release + +David Galvez 05/10/2010 +Version: alfa 05 + + diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/scsi.h b/BaS_codewarrior/FireBee/trunk/usb/store/scsi.h new file mode 100644 index 0000000..a42c0a3 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/scsi.h @@ -0,0 +1,209 @@ +/* + * (C) Copyright 2001 + * Denis Peter, MPL AG Switzerland + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + */ + #ifndef _SCSI_H + #define _SCSI_H + +typedef struct SCSI_cmd_block{ + unsigned char cmd[16]; /* command */ + unsigned char sense_buf[64]; /* for request sense */ + unsigned char status; /* SCSI Status */ + unsigned char target; /* Target ID */ + unsigned char lun; /* Target LUN */ + unsigned char cmdlen; /* command len */ + unsigned long datalen; /* Total data length */ + unsigned char * pdata; /* pointer to data */ + unsigned char msgout[12]; /* Messge out buffer (NOT USED) */ + unsigned char msgin[12]; /* Message in buffer */ + unsigned char sensecmdlen; /* Sense command len */ + unsigned long sensedatalen; /* Sense data len */ + unsigned char sensecmd[6]; /* Sense command */ + unsigned long contr_stat; /* Controller Status */ + unsigned long trans_bytes; /* tranfered bytes */ + + unsigned int priv; +}ccb; + +/*----------------------------------------------------------- +** +** SCSI constants. +** +**----------------------------------------------------------- +*/ + +/* +** Messages +*/ + +#define M_COMPLETE (0x00) +#define M_EXTENDED (0x01) +#define M_SAVE_DP (0x02) +#define M_RESTORE_DP (0x03) +#define M_DISCONNECT (0x04) +#define M_ID_ERROR (0x05) +#define M_ABORT (0x06) +#define M_REJECT (0x07) +#define M_NOOP (0x08) +#define M_PARITY (0x09) +#define M_LCOMPLETE (0x0a) +#define M_FCOMPLETE (0x0b) +#define M_RESET (0x0c) +#define M_ABORT_TAG (0x0d) +#define M_CLEAR_QUEUE (0x0e) +#define M_INIT_REC (0x0f) +#define M_REL_REC (0x10) +#define M_TERMINATE (0x11) +#define M_SIMPLE_TAG (0x20) +#define M_HEAD_TAG (0x21) +#define M_ORDERED_TAG (0x22) +#define M_IGN_RESIDUE (0x23) +#define M_IDENTIFY (0x80) + +#define M_X_MODIFY_DP (0x00) +#define M_X_SYNC_REQ (0x01) +#define M_X_WIDE_REQ (0x03) +#define M_X_PPR_REQ (0x04) + + +/* +** Status +*/ + +#define S_GOOD (0x00) +#define S_CHECK_COND (0x02) +#define S_COND_MET (0x04) +#define S_BUSY (0x08) +#define S_INT (0x10) +#define S_INT_COND_MET (0x14) +#define S_CONFLICT (0x18) +#define S_TERMINATED (0x20) +#define S_QUEUE_FULL (0x28) +#define S_ILLEGAL (0xff) +#define S_SENSE (0x80) + +/* + * Sense_keys + */ + +#define SENSE_NO_SENSE 0x0 +#define SENSE_RECOVERED_ERROR 0x1 +#define SENSE_NOT_READY 0x2 +#define SENSE_MEDIUM_ERROR 0x3 +#define SENSE_HARDWARE_ERROR 0x4 +#define SENSE_ILLEGAL_REQUEST 0x5 +#define SENSE_UNIT_ATTENTION 0x6 +#define SENSE_DATA_PROTECT 0x7 +#define SENSE_BLANK_CHECK 0x8 +#define SENSE_VENDOR_SPECIFIC 0x9 +#define SENSE_COPY_ABORTED 0xA +#define SENSE_ABORTED_COMMAND 0xB +#define SENSE_VOLUME_OVERFLOW 0xD +#define SENSE_MISCOMPARE 0xE + + +#define SCSI_CHANGE_DEF 0x40 /* Change Definition (Optional) */ +#define SCSI_COMPARE 0x39 /* Compare (O) */ +#define SCSI_COPY 0x18 /* Copy (O) */ +#define SCSI_COP_VERIFY 0x3A /* Copy and Verify (O) */ +#define SCSI_INQUIRY 0x12 /* Inquiry (MANDATORY) */ +#define SCSI_LOG_SELECT 0x4C /* Log Select (O) */ +#define SCSI_LOG_SENSE 0x4D /* Log Sense (O) */ +#define SCSI_MODE_SEL6 0x15 /* Mode Select 6-byte (Device Specific) */ +#define SCSI_MODE_SEL10 0x55 /* Mode Select 10-byte (Device Specific) */ +#define SCSI_MODE_SEN6 0x1A /* Mode Sense 6-byte (Device Specific) */ +#define SCSI_MODE_SEN10 0x5A /* Mode Sense 10-byte (Device Specific) */ +#define SCSI_READ_BUFF 0x3C /* Read Buffer (O) */ +#define SCSI_REQ_SENSE 0x03 /* Request Sense (MANDATORY) */ +#define SCSI_SEND_DIAG 0x1D /* Send Diagnostic (O) */ +#define SCSI_TST_U_RDY 0x00 /* Test Unit Ready (MANDATORY) */ +#define SCSI_WRITE_BUFF 0x3B /* Write Buffer (O) */ +/*************************************************************************** + * %%% Commands Unique to Direct Access Devices %%% + ***************************************************************************/ +#define SCSI_COMPARE 0x39 /* Compare (O) */ +#define SCSI_FORMAT 0x04 /* Format Unit (MANDATORY) */ +#define SCSI_LCK_UN_CAC 0x36 /* Lock Unlock Cache (O) */ +#define SCSI_PREFETCH 0x34 /* Prefetch (O) */ +#define SCSI_MED_REMOVL 0x1E /* Prevent/Allow medium Removal (O) */ +#define SCSI_READ6 0x08 /* Read 6-byte (MANDATORY) */ +#define SCSI_READ10 0x28 /* Read 10-byte (MANDATORY) */ +#define SCSI_RD_CAPAC 0x25 /* Read Capacity (MANDATORY) */ +#define SCSI_RD_DEFECT 0x37 /* Read Defect Data (O) */ +#define SCSI_READ_LONG 0x3E /* Read Long (O) */ +#define SCSI_REASS_BLK 0x07 /* Reassign Blocks (O) */ +#define SCSI_RCV_DIAG 0x1C /* Receive Diagnostic Results (O) */ +#define SCSI_RELEASE 0x17 /* Release Unit (MANDATORY) */ +#define SCSI_REZERO 0x01 /* Rezero Unit (O) */ +#define SCSI_SRCH_DAT_E 0x31 /* Search Data Equal (O) */ +#define SCSI_SRCH_DAT_H 0x30 /* Search Data High (O) */ +#define SCSI_SRCH_DAT_L 0x32 /* Search Data Low (O) */ +#define SCSI_SEEK6 0x0B /* Seek 6-Byte (O) */ +#define SCSI_SEEK10 0x2B /* Seek 10-Byte (O) */ +#define SCSI_SEND_DIAG 0x1D /* Send Diagnostics (MANDATORY) */ +#define SCSI_SET_LIMIT 0x33 /* Set Limits (O) */ +#define SCSI_START_STP 0x1B /* Start/Stop Unit (O) */ +#define SCSI_SYNC_CACHE 0x35 /* Synchronize Cache (O) */ +#define SCSI_VERIFY 0x2F /* Verify (O) */ +#define SCSI_WRITE6 0x0A /* Write 6-Byte (MANDATORY) */ +#define SCSI_WRITE10 0x2A /* Write 10-Byte (MANDATORY) */ +#define SCSI_WRT_VERIFY 0x2E /* Write and Verify (O) */ +#define SCSI_WRITE_LONG 0x3F /* Write Long (O) */ +#define SCSI_WRITE_SAME 0x41 /* Write Same (O) */ + +#if 0 +/**************************************************************************** + * decleration of functions which have to reside in the LowLevel Part Driver + */ + +void scsi_print_error(ccb *pccb); +int scsi_exec(ccb *pccb); +void scsi_bus_reset(void); +void scsi_low_level_init(int busdevfunc); + + +/*************************************************************************** + * functions residing inside cmd_scsi.c + */ +void scsi_init(void); + +#endif + +#define SCSI_IDENTIFY 0xC0 /* not used */ + +/* Hardware errors */ +#define SCSI_SEL_TIME_OUT 0x00000101 /* Selection time out */ +#define SCSI_HNS_TIME_OUT 0x00000102 /* Handshake */ +#define SCSI_MA_TIME_OUT 0x00000103 /* Phase error */ +#define SCSI_UNEXP_DIS 0x00000104 /* unexpected disconnect */ + +#define SCSI_INT_STATE 0x00010000 /* unknown Interrupt number is stored in 16 LSB */ + + +#ifndef TRUE +#define TRUE 1 +#endif +#ifndef FALSE +#define FALSE 0 +#endif + +#endif /* _SCSI_H */ diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/super.h b/BaS_codewarrior/FireBee/trunk/usb/store/super.h new file mode 100644 index 0000000..017beb9 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/super.h @@ -0,0 +1,58 @@ +/* + * super.h + * + * This file is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This file is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef _SUPER_H +#define _SUPER_H + +static inline +long SuperFromUser() +{ + register long retvalue __asm__("d0"); + + __asm__ volatile + ( + "clr.l -(%%sp)\n\t" + "move.w #0x20,-(%%sp)\n\t" + "trap #1\n\t" + "addq.l #6,%%sp" + : "=r"(retvalue) /* outputs */ + : /* inputs */ + : "d1", "d2", "a0", "a1", "a2" /* clobbered regs */ + ); + + return retvalue; +} + +static inline +void SuperToUser(long ssp) +{ + register long spbackup; + + __asm__ volatile + ( + "move.l sp,%0\n\t" + "move.l %1,-(%%sp)\n\t" + "move.w #0x20,-(%%sp)\n\t" + "trap #1\n\t" + "move.l %0,sp" + : "=&r"(spbackup) /* outputs */ + : "g"(ssp) /* inputs */ + : "d0", "d1", "d2", "a0", "a1", "a2" /* clobbered regs */ + ); +} +#endif /* _SUPER_H */ diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/udelay.c b/BaS_codewarrior/FireBee/trunk/usb/store/udelay.c new file mode 100644 index 0000000..d685aad --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/udelay.c @@ -0,0 +1,39 @@ +/* + * David Galvez. 2010, e-mail: dgalvez75@gmail.com + * Modified from MiNTlib + * + * This file is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This file is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include +#include +#include +#include + +#define USEC_PER_TICK (1000000L / ((unsigned long)CLOCKS_PER_SEC)) +#define USEC_TO_CLOCK_TICKS(us) ((us) / USEC_PER_TICK ) + +/* + * Galvez: We should use usleep POSIX function in MiNTlib, but it gives problems related with + * Fselect system call, until we trace where the problems come from we are using this function + */ + +void udelay(unsigned long usec) +{ + long stop; + + stop = _clock() + USEC_TO_CLOCK_TICKS(usec); + while (_clock() < stop); +} diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/usb.c b/BaS_codewarrior/FireBee/trunk/usb/store/usb.c new file mode 100644 index 0000000..6b3335d --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/usb.c @@ -0,0 +1,1422 @@ +/* + * Modified for Atari by David Gálvez 2010 + * Modified for Atari by Didier Mequignon 2009 + * + * Most of this source has been derived from the Linux USB + * project: + * (C) Copyright Linus Torvalds 1999 + * (C) Copyright Johannes Erdfelt 1999-2001 + * (C) Copyright Andreas Gal 1999 + * (C) Copyright Gregory P. Smith 1999 + * (C) Copyright Deti Fliegl 1999 (new USB architecture) + * (C) Copyright Randy Dunlap 2000 + * (C) Copyright David Brownell 2000 (kernel hotplug, usb_device_id) + * (C) Copyright Yggdrasil Computing, Inc. 2000 + * (usb_device_id matching changes by Adam J. Richter) + * + * Adapted for U-Boot: + * (C) Copyright 2001 Denis Peter, MPL AG Switzerland + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + */ + +/* + * How it works: + * + * Since this is a bootloader, the devices will not be automatic + * (re)configured on hotplug, but after a restart of the USB the + * device should work. + * + * For each transfer (except "Interrupt") we wait for completion. + */ +#include "config.h" +#include "debug.h" +#include "usb.h" + +#ifdef CONFIG_4xx +#include +#endif + +#include + +#define DEBUG_USB_LOCAL 1 +#ifndef DEBUG_USB_LOCAL +#define DEBUG_USB(fmt, args...) +#endif + +#define USB_BUFSIZ 512 + +void udelay(unsigned long usec); + +static struct usb_device usb_dev[USB_MAX_DEVICE]; +static int dev_index; +static int running; +static int asynch_allowed; +static struct devrequest setup_packet; + +char usb_started; /* flag for the started/stopped USB status */ + +/********************************************************************** + * some forward declerations... + */ +void usb_scan_devices(void); + +int usb_hub_probe(struct usb_device *dev, int ifnum); +void usb_hub_reset(void); +static int hub_port_reset(struct usb_device *dev, int port, + unsigned short *portstat); + +/*********************************************************************** + * wait_ms + */ + +inline void wait_ms(unsigned long ms) +{ + udelay( ms * 1000); +} + +/*************************************************************************** + * Init USB Device + */ + +#ifndef PCI_XBIOS +int usb_init(void) +#else +int usb_init(long handle, const struct pci_device_id *ent) +#endif +{ + int result; + + running = 0; + dev_index = 0; + asynch_allowed = 1; + usb_hub_reset(); + + /* Added by Didier */ + if(usb_mem_init()) + { + usb_started = 0; + return -1; /* out of memoy */ + } + + /* init low_level USB */ + printf("USB: "); +#ifndef PCI_XBIOS + result = usb_lowlevel_init( ); +#else + result = usb_lowlevel_init(0,NULL); +#endif + /* if lowlevel init is OK, scan the bus for devices + * i.e. search HUBs and configure them */ + if (result == 0) { + printf("scanning bus for devices... "); + running = 1; + usb_scan_devices(); + usb_started = 1; + return 0; + } else { + printf("Error, couldn't init Lowlevel part\n"); + usb_started = 0; + return -1; + } +} + +/****************************************************************************** + * Stop USB this stops the LowLevel Part and deregisters USB devices. + */ +int usb_stop(void) +{ + int res = 0; + + if (usb_started) { + asynch_allowed = 1; + usb_started = 0; + usb_hub_reset(); + res = usb_lowlevel_stop(); + } + return res; +} + +/* + * disables the asynch behaviour of the control message. This is used for data + * transfers that uses the exclusiv access to the control and bulk messages. + */ +void usb_disable_asynch(int disable) +{ +#if 0 +/* Added by Didier */ +#ifndef CONFIG_USB_INTERRUPT_POLLING + if(!asynch_allowed && !disable) + { + DEBUG_USB("Enable interrupts\r\n"); + usb_enable_interrupt(1); + } + else if(asynch_allowed && disable) + { + DEBUG_USB("Disable interrupts\r\n"); + usb_enable_interrupt(0); + } +#endif +#endif + asynch_allowed = !disable; +} + + +/*------------------------------------------------------------------- + * Message wrappers. + * + */ + +/* + * submits an Interrupt Message + */ +int usb_submit_int_msg(struct usb_device *dev, unsigned long pipe, + void *buffer, int transfer_len, int interval) +{ + return submit_int_msg(dev, pipe, buffer, transfer_len, interval); +} + +/* + * submits a control message and waits for comletion (at least timeout * 1ms) + * If timeout is 0, we don't wait for completion (used as example to set and + * clear keyboards LEDs). For data transfers, (storage transfers) we don't + * allow control messages with 0 timeout, by previousely resetting the flag + * asynch_allowed (usb_disable_asynch(1)). + * returns the transfered length if OK or -1 if error. The transfered length + * and the current status are stored in the dev->act_len and dev->status. + */ +int usb_control_msg(struct usb_device *dev, unsigned int pipe, + unsigned char request, unsigned char requesttype, + unsigned short value, unsigned short idx, + void *data, unsigned short size, int timeout) +{ + if ((timeout == 0) && (!asynch_allowed)) { + /* request for a asynch control pipe is not allowed */ + return -1; + } + + /* set setup command */ + setup_packet.requesttype = requesttype; + setup_packet.request = request; + setup_packet.value = __cpu_to_le16(value); + setup_packet.index = __cpu_to_le16(idx); + setup_packet.length = __cpu_to_le16(size); + DEBUG_USB("usb_control_msg: request: 0x%X, requesttype: 0x%X, " \ + "value 0x%X idx 0x%X length 0x%X\n", + request, requesttype, value, idx, size); + dev->status = USB_ST_NOT_PROC; /*not yet processed */ + + submit_control_msg(dev, pipe, data, size, &setup_packet); + if (timeout == 0){ + DEBUG_USB("size %d \r\n", size); + return (int)size; + } + + if (dev->status != 0) { + /* + * Let's wait a while for the timeout to elapse. + * It has no real use, but it keeps the interface happy. + */ + DEBUG_USB("status %ld \n\r", dev->status); + wait_ms(timeout); + return -1; + } + return dev->act_len; +} + +/*------------------------------------------------------------------- + * submits bulk message, and waits for completion. returns 0 if Ok or + * -1 if Error. + * synchronous behavior + */ +int usb_bulk_msg(struct usb_device *dev, unsigned int pipe, + void *data, int len, int *actual_length, int timeout) +{ + if (len < 0) + return -1; + dev->status = USB_ST_NOT_PROC; /*not yet processed */ + submit_bulk_msg(dev, pipe, data, len); + while (timeout--) { + if (!((volatile unsigned long)dev->status & USB_ST_NOT_PROC)) + break; + wait_ms(1); + } + + *actual_length = dev->act_len; + if (dev->status == 0) + return 0; + else + return -1; +} + + +/*------------------------------------------------------------------- + * Max Packet stuff + */ + +/* + * returns the max packet size, depending on the pipe direction and + * the configurations values + */ +int usb_maxpacket(struct usb_device *dev, unsigned long pipe) +{ + /* direction is out -> use emaxpacket out */ + if ((pipe & USB_DIR_IN) == 0) + return dev->epmaxpacketout[((pipe>>15) & 0xf)]; + else + return dev->epmaxpacketin[((pipe>>15) & 0xf)]; +} + +/* The routine usb_set_maxpacket_ep() is extracted from the loop of routine + * usb_set_maxpacket(), because the optimizer of GCC 4.x chokes on this routine + * when it is inlined in 1 single routine. What happens is that the register r3 + * is used as loop-count 'i', but gets overwritten later on. + * This is clearly a compiler bug, but it is easier to workaround it here than + * to update the compiler (Occurs with at least several GCC 4.{1,2},x + * CodeSourcery compilers like e.g. 2007q3, 2008q1, 2008q3 lite editions on ARM) + */ +static void __attribute__((noinline)) +usb_set_maxpacket_ep(struct usb_device *dev, struct usb_endpoint_descriptor *ep) +{ + int b; + + b = ep->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK; + + if ((ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == + USB_ENDPOINT_XFER_CONTROL) { + /* Control => bidirectional */ + dev->epmaxpacketout[b] = ep->wMaxPacketSize; + dev->epmaxpacketin[b] = ep->wMaxPacketSize; + DEBUG_USB("##Control EP epmaxpacketout/in[%d] = %d\n", + b, dev->epmaxpacketin[b]); + } else { + if ((ep->bEndpointAddress & 0x80) == 0) { + /* OUT Endpoint */ + if (ep->wMaxPacketSize > dev->epmaxpacketout[b]) { + dev->epmaxpacketout[b] = ep->wMaxPacketSize; + DEBUG_USB("##EP epmaxpacketout[%d] = %d\n", + b, dev->epmaxpacketout[b]); + } + } else { + /* IN Endpoint */ + if (ep->wMaxPacketSize > dev->epmaxpacketin[b]) { + dev->epmaxpacketin[b] = ep->wMaxPacketSize; + DEBUG_USB("##EP epmaxpacketin[%d] = %d\n", + b, dev->epmaxpacketin[b]); + } + } /* if out */ + } /* if control */ +} + +/* + * set the max packed value of all endpoints in the given configuration + */ +int usb_set_maxpacket(struct usb_device *dev) +{ + int i, ii; + + for (i = 0; i < dev->config.bNumInterfaces; i++) + for (ii = 0; ii < dev->config.if_desc[i].bNumEndpoints; ii++) + usb_set_maxpacket_ep(dev, + &dev->config.if_desc[i].ep_desc[ii]); + + return 0; +} + +/******************************************************************************* + * Parse the config, located in buffer, and fills the dev->config structure. + * Note that all little/big endian swapping are done automatically. + */ +int usb_parse_config(struct usb_device *dev, unsigned char *buffer, int cfgno) +{ + struct usb_descriptor_header *head; + int idx, ifno, epno, curr_if_num; + int i; + unsigned char *ch; + + ifno = -1; + epno = -1; + curr_if_num = -1; + + dev->configno = cfgno; + head = (struct usb_descriptor_header *) &buffer[0]; + if (head->bDescriptorType != USB_DT_CONFIG) { + printf(" ERROR: NOT USB_CONFIG_DESC %x\n", + head->bDescriptorType); + return -1; + } + memcpy(&dev->config, buffer, buffer[0]); + __le16_to_cpus(&(dev->config.wTotalLength)); + dev->config.no_of_if = 0; + + idx = dev->config.bLength; + /* Ok the first entry must be a configuration entry, + * now process the others */ + head = (struct usb_descriptor_header *) &buffer[idx]; + while (idx + 1 < dev->config.wTotalLength) { + switch (head->bDescriptorType) { + case USB_DT_INTERFACE: + if (((struct usb_interface_descriptor *) \ + &buffer[idx])->bInterfaceNumber != curr_if_num) { + /* this is a new interface, copy new desc */ + ifno = dev->config.no_of_if; + dev->config.no_of_if++; + memcpy(&dev->config.if_desc[ifno], + &buffer[idx], buffer[idx]); + dev->config.if_desc[ifno].no_of_ep = 0; + dev->config.if_desc[ifno].num_altsetting = 1; + curr_if_num = + dev->config.if_desc[ifno].bInterfaceNumber; + } else { + /* found alternate setting for the interface */ + dev->config.if_desc[ifno].num_altsetting++; + } + break; + case USB_DT_ENDPOINT: + epno = dev->config.if_desc[ifno].no_of_ep; + /* found an endpoint */ + dev->config.if_desc[ifno].no_of_ep++; + memcpy(&dev->config.if_desc[ifno].ep_desc[epno], + &buffer[idx], buffer[idx]); + __le16_to_cpus(&(dev->config.if_desc[ifno].ep_desc[epno].\ + wMaxPacketSize)); + DEBUG_USB("if %d, ep %d\n", ifno, epno); + break; + default: + if (head->bLength == 0) + return 1; + + DEBUG_USB("unknown Description Type : %x\n", + head->bDescriptorType); + + { + ch = (unsigned char *)head; + for (i = 0; i < head->bLength; i++) + DEBUG_USB("%02X ", *ch++); + DEBUG_USB("\n\n\n"); + } + break; + } + idx += head->bLength; + head = (struct usb_descriptor_header *)&buffer[idx]; + } + return 1; +} + +/*********************************************************************** + * Clears an endpoint + * endp: endpoint number in bits 0-3; + * direction flag in bit 7 (1 = IN, 0 = OUT) + */ +int usb_clear_halt(struct usb_device *dev, int pipe) +{ + int result; + int endp = usb_pipeendpoint(pipe)|(usb_pipein(pipe)<<7); + + result = usb_control_msg(dev, usb_sndctrlpipe(dev, 0), + USB_REQ_CLEAR_FEATURE, USB_RECIP_ENDPOINT, 0, + endp, NULL, 0, USB_CNTL_TIMEOUT * 3); + + /* don't clear if failed */ + if (result < 0) + return result; + + /* + * NOTE: we do not get status and verify reset was successful + * as some devices are reported to lock up upon this check.. + */ + + usb_endpoint_running(dev, usb_pipeendpoint(pipe), usb_pipeout(pipe)); + + /* toggle is reset on clear */ + usb_settoggle(dev, usb_pipeendpoint(pipe), usb_pipeout(pipe), 0); + return 0; +} + + +/********************************************************************** + * get_descriptor type + */ +int usb_get_descriptor(struct usb_device *dev, unsigned char type, + unsigned char idx, void *buf, int size) +{ + int res; +DEBUG_USB( "%s\n",__FUNCTION__); + res = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), + USB_REQ_GET_DESCRIPTOR, USB_DIR_IN, + (type << 8) + idx, 0, + buf, size, USB_CNTL_TIMEOUT); + return res; +} + +/********************************************************************** + * gets configuration cfgno and store it in the buffer + */ +int usb_get_configuration_no(struct usb_device *dev, + unsigned char *buffer, int cfgno) +{ + int result; + unsigned int tmp; + struct usb_config_descriptor *config; + + + config = (struct usb_config_descriptor *)&buffer[0]; + result = usb_get_descriptor(dev, USB_DT_CONFIG, cfgno, buffer, 9); + if (result < 9) { + if (result < 0) + printf("unable to get descriptor, error %lX\n", + dev->status); + else + printf("config descriptor too short " \ + "(expected %i, got %i)\n", 9, result); + return -1; + } + tmp = __le16_to_cpu(config->wTotalLength); + + if (tmp > USB_BUFSIZ) { + DEBUG_USB("usb_get_configuration_no: failed to get " \ + "descriptor - too long: %d\n", tmp); + return -1; + } + + result = usb_get_descriptor(dev, USB_DT_CONFIG, cfgno, buffer, tmp); + DEBUG_USB("get_conf_no %d Result %d, wLength %d\n", + cfgno, result, tmp); + return result; +} + +/******************************************************************** + * set address of a device to the value in dev->devnum. + * This can only be done by addressing the device via the default address (0) + */ +int usb_set_address(struct usb_device *dev) +{ + int res; + + DEBUG_USB("set address %d\n", dev->devnum); + res = usb_control_msg(dev, usb_snddefctrl(dev), + USB_REQ_SET_ADDRESS, 0, + (dev->devnum), 0, + NULL, 0, USB_CNTL_TIMEOUT); + return res; +} + +/******************************************************************** + * set interface number to interface + */ +int usb_set_interface(struct usb_device *dev, int interface, int alternate) +{ + struct usb_interface_descriptor *if_face = NULL; + int ret, i; + + for (i = 0; i < dev->config.bNumInterfaces; i++) { + if (dev->config.if_desc[i].bInterfaceNumber == interface) { + if_face = &dev->config.if_desc[i]; + break; + } + } + if (!if_face) { + printf("selecting invalid interface %d", interface); + return -1; + } + /* + * We should return now for devices with only one alternate setting. + * According to 9.4.10 of the Universal Serial Bus Specification + * Revision 2.0 such devices can return with a STALL. This results in + * some USB sticks timeouting during initialization and then being + * unusable in U-Boot. + */ + if (if_face->num_altsetting == 1) + return 0; + + ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0), + USB_REQ_SET_INTERFACE, USB_RECIP_INTERFACE, + alternate, interface, NULL, 0, + USB_CNTL_TIMEOUT * 5); + if (ret < 0) + return ret; + + return 0; +} + +/******************************************************************** + * set configuration number to configuration + */ +int usb_set_configuration(struct usb_device *dev, int configuration) +{ + int res; + DEBUG_USB("set configuration %d\n", configuration); + /* set setup command */ + res = usb_control_msg(dev, usb_sndctrlpipe(dev, 0), + USB_REQ_SET_CONFIGURATION, 0, + configuration, 0, + NULL, 0, USB_CNTL_TIMEOUT); + if (res == 0) { + dev->toggle[0] = 0; + dev->toggle[1] = 0; + return 0; + } else + return -1; +} + +/******************************************************************** + * set protocol to protocol + */ +int usb_set_protocol(struct usb_device *dev, int ifnum, int protocol) +{ + return usb_control_msg(dev, usb_sndctrlpipe(dev, 0), + USB_REQ_SET_PROTOCOL, USB_TYPE_CLASS | USB_RECIP_INTERFACE, + protocol, ifnum, NULL, 0, USB_CNTL_TIMEOUT); +} + +/******************************************************************** + * set idle + */ +int usb_set_idle(struct usb_device *dev, int ifnum, int duration, int report_id) +{ + return usb_control_msg(dev, usb_sndctrlpipe(dev, 0), + USB_REQ_SET_IDLE, USB_TYPE_CLASS | USB_RECIP_INTERFACE, + (duration << 8) | report_id, ifnum, NULL, 0, USB_CNTL_TIMEOUT); +} + +/******************************************************************** + * get report + */ +int usb_get_report(struct usb_device *dev, int ifnum, unsigned char type, + unsigned char id, void *buf, int size) +{ + return usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), + USB_REQ_GET_REPORT, + USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_INTERFACE, + (type << 8) + id, ifnum, buf, size, USB_CNTL_TIMEOUT); +} + +/******************************************************************** + * get class descriptor + */ +int usb_get_class_descriptor(struct usb_device *dev, int ifnum, + unsigned char type, unsigned char id, void *buf, int size) +{ + return usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), + USB_REQ_GET_DESCRIPTOR, USB_RECIP_INTERFACE | USB_DIR_IN, + (type << 8) + id, ifnum, buf, size, USB_CNTL_TIMEOUT); +} + +/******************************************************************** + * get string index in buffer + */ +int usb_get_string(struct usb_device *dev, unsigned short langid, + unsigned char idx, void *buf, int size) +{ + int i; + int result; + + for (i = 0; i < 3; ++i) { + /* some devices are flaky */ + result = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), + USB_REQ_GET_DESCRIPTOR, USB_DIR_IN, + (USB_DT_STRING << 8) + idx, langid, buf, size, + USB_CNTL_TIMEOUT); + + if (result > 0) + break; + } + + return result; +} + + +static void usb_try_string_workarounds(unsigned char *buf, int *length) +{ + int newlength, oldlength = *length; + + for (newlength = 2; newlength + 1 < oldlength; newlength += 2) + { + char c = buf[newlength]; + if ((c < ' ') || (c >= 127) || buf[newlength + 1]) + break; + } + if (newlength > 2) { + buf[0] = newlength; + *length = newlength; + } +} + + +static int usb_string_sub(struct usb_device *dev, unsigned int langid, + unsigned int idx, unsigned char *buf) +{ + int rc; + + /* Try to read the string descriptor by asking for the maximum + * possible number of bytes */ + rc = usb_get_string(dev, langid, idx, buf, 255); + + /* If that failed try to read the descriptor length, then + * ask for just that many bytes */ + if (rc < 2) { + rc = usb_get_string(dev, langid, idx, buf, 2); + if (rc == 2) + rc = usb_get_string(dev, langid, idx, buf, buf[0]); + } + + if (rc >= 2) { + if (!buf[0] && !buf[1]) + usb_try_string_workarounds(buf, &rc); + + /* There might be extra junk at the end of the descriptor */ + if (buf[0] < rc) + rc = buf[0]; + + rc = rc - (rc & 1); /* force a multiple of two */ + } + + if (rc < 2) + rc = -1; + + return rc; +} + + +/******************************************************************** + * usb_string: + * Get string index and translate it to ascii. + * returns string length (> 0) or error (< 0) + */ +int usb_string(struct usb_device *dev, int idx, char *buf, size_t size) +{ + unsigned char mybuf[USB_BUFSIZ]; + unsigned char *tbuf; + int err; + unsigned int u, idx2; + + if (size <= 0 || !buf || !idx) + return -1; + buf[0] = 0; + tbuf = &mybuf[0]; + + /* get langid for strings if it's not yet known */ + if (!dev->have_langid) { + err = usb_string_sub(dev, 0, 0, tbuf); + if (err < 0) { + DEBUG_USB("error getting string descriptor 0 " \ + "(error=%lx)\n", dev->status); + return -1; + } else if (tbuf[0] < 4) { + DEBUG_USB("string descriptor 0 too short\n"); + return -1; + } else { + dev->have_langid = -1; + dev->string_langid = tbuf[2] | (tbuf[3] << 8); + /* always use the first langid listed */ + DEBUG_USB("USB device number %d default " \ + "language ID 0x%x\n", + dev->devnum, dev->string_langid); + } + } + + err = usb_string_sub(dev, dev->string_langid, idx, tbuf); + if (err < 0) + return err; + + size--; /* leave room for trailing NULL char in output buffer */ + for (idx2 = 0, u = 2; u < err; u += 2) { + if (idx2 >= size) + break; + if (tbuf[u+1]) /* high byte */ + buf[idx2++] = '?'; /* non-ASCII character */ + else + buf[idx2++] = tbuf[u]; + } + buf[idx2] = 0; + err = idx2; + return err; +} + + +/******************************************************************** + * USB device handling: + * the USB device are static allocated [USB_MAX_DEVICE]. + */ + + +/* returns a pointer to the device with the index [idx]. + * if the device is not assigned (dev->devnum==-1) returns NULL + */ +struct usb_device *usb_get_dev_index(int idx) +{ + if (usb_dev[idx].devnum == -1) + return NULL; + else + return &usb_dev[idx]; +} + + +/* returns a pointer of a new device structure or NULL, if + * no device struct is available + */ +struct usb_device *usb_alloc_new_device(void) +{ + int i; + DEBUG_USB("New Device %d\n", dev_index); + if (dev_index == USB_MAX_DEVICE) { + printf("ERROR, too many USB Devices, max=%d\n", USB_MAX_DEVICE); + return NULL; + } + /* default Address is 0, real addresses start with 1 */ + usb_dev[dev_index].devnum = dev_index + 1; + usb_dev[dev_index].maxchild = 0; + for (i = 0; i < USB_MAXCHILDREN; i++) + usb_dev[dev_index].children[i] = NULL; + usb_dev[dev_index].parent = NULL; + dev_index++; + return &usb_dev[dev_index - 1]; +} + + +/* + * By the time we get here, the device has gotten a new device ID + * and is in the default state. We need to identify the thing and + * get the ball rolling.. + * + * Returns 0 for success, != 0 for error. + */ +int usb_new_device(struct usb_device *dev) +{ + int addr, err; + int tmp; + unsigned char tmpbuf[USB_BUFSIZ]; + + /* We still haven't set the Address yet */ + addr = dev->devnum; + dev->devnum = 0; + + +#ifdef CONFIG_LEGACY_USB_INIT_SEQ + /* this is the old and known way of initializing devices, it is + * different than what Windows and Linux are doing. Windows and Linux + * both retrieve 64 bytes while reading the device descriptor + * Several USB stick devices report ERR: CTL_TIMEOUT, caused by an + * invalid header while reading 8 bytes as device descriptor. */ + dev->descriptor.bMaxPacketSize0 = 8; /* Start off at 8 bytes */ + dev->maxpacketsize = PACKET_SIZE_8; + dev->epmaxpacketin[0] = 8; + dev->epmaxpacketout[0] = 8; + + err = usb_get_descriptor(dev, USB_DT_DEVICE, 0, &dev->descriptor, 8); + if (err < 8) { + printf("\n USB device not responding, " \ + "giving up (status=%lX)\n", dev->status); + return 1; + } + +#else + /* This is a Windows scheme of initialization sequence, with double + * reset of the device (Linux uses the same sequence) + * Some equipment is said to work only with such init sequence; this + * patch is based on the work by Alan Stern: + * http://sourceforge.net/mailarchive/forum.php? + * thread_id=5729457&forum_id=5398 + */ + + struct usb_device_descriptor *desc; + int port = -1; + struct usb_device *parent = dev->parent; + unsigned short portstatus; + + /* send 64-byte GET-DEVICE-DESCRIPTOR request. Since the descriptor is + * only 18 bytes long, this will terminate with a short packet. But if + * the maxpacket size is 8 or 16 the device may be waiting to transmit + * some more, or keeps on retransmitting the 8 byte header. */ + + desc = (struct usb_device_descriptor *)tmpbuf; + dev->descriptor.bMaxPacketSize0 = 64; /* Start off at 64 bytes */ + /* Default to 64 byte max packet size */ + dev->maxpacketsize = PACKET_SIZE_64; + dev->epmaxpacketin[0] = 64; + dev->epmaxpacketout[0] = 64; + + err = usb_get_descriptor(dev, USB_DT_DEVICE, 0, desc, 64); + if (err < 0) { + DEBUG_USB("usb_new_device: usb_get_descriptor() failed\n"); + return 1; + } + + dev->descriptor.bMaxPacketSize0 = desc->bMaxPacketSize0; + + /* find the port number we're at */ + if (parent) { + int j; + + for (j = 0; j < parent->maxchild; j++) { + if (parent->children[j] == dev) { + port = j; + break; + } + } + if (port < 0) { + printf("usb_new_device:cannot locate device's port.\n"); + return 1; + } + + /* reset the port for the second time */ + err = hub_port_reset(dev->parent, port, &portstatus); + if (err < 0) { + printf("\n Couldn't reset port %i\n", port); + return 1; + } + } +#endif + + dev->epmaxpacketin[0] = dev->descriptor.bMaxPacketSize0; + dev->epmaxpacketout[0] = dev->descriptor.bMaxPacketSize0; + switch (dev->descriptor.bMaxPacketSize0) { + case 8: + dev->maxpacketsize = PACKET_SIZE_8; + break; + case 16: + dev->maxpacketsize = PACKET_SIZE_16; + break; + case 32: + dev->maxpacketsize = PACKET_SIZE_32; + break; + case 64: + dev->maxpacketsize = PACKET_SIZE_64; + break; + } + dev->devnum = addr; + + err = usb_set_address(dev); /* set address */ + + if (err < 0) { + printf("\n USB device not accepting new address " \ + "(error=%lX)\n", dev->status); + return 1; + } + + wait_ms(10); /* Let the SET_ADDRESS settle */ + + tmp = sizeof(dev->descriptor); + + err = usb_get_descriptor(dev, USB_DT_DEVICE, 0, + &dev->descriptor, sizeof(dev->descriptor)); + if (err < tmp) { + if (err < 0) + printf("unable to get device descriptor (error=%d)\n", + err); + else + printf("USB device descriptor short read " \ + "(expected %i, got %i)\n", tmp, err); + return 1; + } + /* correct le values */ + __le16_to_cpus(&dev->descriptor.bcdUSB); + __le16_to_cpus(&dev->descriptor.idVendor); + __le16_to_cpus(&dev->descriptor.idProduct); + __le16_to_cpus(&dev->descriptor.bcdDevice); + /* only support for one config for now */ + usb_get_configuration_no(dev, &tmpbuf[0], 0); + usb_parse_config(dev, &tmpbuf[0], 0); + usb_set_maxpacket(dev); + /* we set the default configuration here */ + if (usb_set_configuration(dev, dev->config.bConfigurationValue)) { + printf("failed to set default configuration " \ + "len %d, status %lX\n", dev->act_len, dev->status); + return -1; + } + DEBUG_USB("new device strings: Mfr=%d, Product=%d, SerialNumber=%d\n", + dev->descriptor.iManufacturer, dev->descriptor.iProduct, + dev->descriptor.iSerialNumber); + memset(dev->mf, 0, sizeof(dev->mf)); + memset(dev->prod, 0, sizeof(dev->prod)); + memset(dev->serial, 0, sizeof(dev->serial)); + if (dev->descriptor.iManufacturer) + usb_string(dev, dev->descriptor.iManufacturer, + dev->mf, sizeof(dev->mf)); + if (dev->descriptor.iProduct) + usb_string(dev, dev->descriptor.iProduct, + dev->prod, sizeof(dev->prod)); + if (dev->descriptor.iSerialNumber) + usb_string(dev, dev->descriptor.iSerialNumber, + dev->serial, sizeof(dev->serial)); + DEBUG_USB("Manufacturer %s\n", dev->mf); + DEBUG_USB("Product %s\n", dev->prod); + DEBUG_USB("SerialNumber %s\n", dev->serial); + /* now probe if the device is a hub */ + usb_hub_probe(dev, 0); + return 0; +} + + +/* build device Tree */ +void usb_scan_devices(void) +{ + int i; + struct usb_device *dev; + + /* first make all devices unknown */ + for (i = 0; i < USB_MAX_DEVICE; i++) { + memset(&usb_dev[i], 0, sizeof(struct usb_device)); + usb_dev[i].devnum = -1; + } + dev_index = 0; + /* device 0 is always present (root hub, so let it analyze) */ + dev = usb_alloc_new_device(); + if (usb_new_device(dev)) + printf("No USB Device found\n"); + else + printf("%d USB Device(s) found\n", dev_index); + /* insert "driver" if possible */ +#ifdef CONFIG_USB_KEYBOARD + drv_usb_kbd_init(); + DEBUG_USB("scan end\n"); +#endif + +#ifdef CONFIG_USB_MOUSE + drv_usb_mouse_init(); + DEBUG_USB("scan end\n"); +#endif +} + + +/**************************************************************************** + * HUB "Driver" + * Probes device for being a hub and configurate it + */ + +static struct usb_hub_device hub_dev[USB_MAX_HUB]; +static int usb_hub_index; + + +int usb_get_hub_descriptor(struct usb_device *dev, void *data, int size) +{ + return usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), + USB_REQ_GET_DESCRIPTOR, USB_DIR_IN | USB_RT_HUB, + USB_DT_HUB << 8, 0, data, size, USB_CNTL_TIMEOUT); +} + +int usb_clear_hub_feature(struct usb_device *dev, int feature) +{ + return usb_control_msg(dev, usb_sndctrlpipe(dev, 0), + USB_REQ_CLEAR_FEATURE, USB_RT_HUB, feature, + 0, NULL, 0, USB_CNTL_TIMEOUT); +} + +int usb_clear_port_feature(struct usb_device *dev, int port, int feature) +{ + return usb_control_msg(dev, usb_sndctrlpipe(dev, 0), + USB_REQ_CLEAR_FEATURE, USB_RT_PORT, feature, + port, NULL, 0, USB_CNTL_TIMEOUT); +} + +int usb_set_port_feature(struct usb_device *dev, int port, int feature) +{ + return usb_control_msg(dev, usb_sndctrlpipe(dev, 0), + USB_REQ_SET_FEATURE, USB_RT_PORT, feature, + port, NULL, 0, USB_CNTL_TIMEOUT); +} + +int usb_get_hub_status(struct usb_device *dev, void *data) +{ + return usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), + USB_REQ_GET_STATUS, USB_DIR_IN | USB_RT_HUB, 0, 0, + data, sizeof(struct usb_hub_status), USB_CNTL_TIMEOUT); +} + +int usb_get_port_status(struct usb_device *dev, int port, void *data) +{ + return usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), + USB_REQ_GET_STATUS, USB_DIR_IN | USB_RT_PORT, 0, port, + data, sizeof(struct usb_hub_status), USB_CNTL_TIMEOUT); +} + + +static void usb_hub_power_on(struct usb_hub_device *hub) +{ + int i; + struct usb_device *dev; + + dev = hub->pusb_dev; + /* Enable power to the ports */ + DEBUG_HUB("enabling power on all ports\n"); + for (i = 0; i < dev->maxchild; i++) { + usb_set_port_feature(dev, i + 1, USB_PORT_FEAT_POWER); + DEBUG_HUB("port %d returns %lX\n", i + 1, dev->status); + wait_ms(hub->desc.bPwrOn2PwrGood * 2); + } +} + +void usb_hub_reset(void) +{ + usb_hub_index = 0; +} + +struct usb_hub_device *usb_hub_allocate(void) +{ + if (usb_hub_index < USB_MAX_HUB) + return &hub_dev[usb_hub_index++]; + + printf("ERROR: USB_MAX_HUB (%d) reached\n", USB_MAX_HUB); + return NULL; +} + +#define MAX_TRIES 5 + +static inline char *portspeed(int portstatus) +{ + if (portstatus & (1 << USB_PORT_FEAT_HIGHSPEED)) + return "480 Mb/s"; + else if (portstatus & (1 << USB_PORT_FEAT_LOWSPEED)) + return "1.5 Mb/s"; + else + return "12 Mb/s"; +} + +static int hub_port_reset(struct usb_device *dev, int port, + unsigned short *portstat) +{ + int tries; + struct usb_port_status portsts; + unsigned short portstatus, portchange; + + DEBUG_HUB("hub_port_reset: resetting port %d...\n", port); + for (tries = 0; tries < MAX_TRIES; tries++) { + + usb_set_port_feature(dev, port + 1, USB_PORT_FEAT_RESET); + wait_ms(200); + + if (usb_get_port_status(dev, port + 1, &portsts) < 0) { + DEBUG_HUB("get_port_status failed status %lX\n", + dev->status); + return -1; + } + portstatus = __le16_to_cpu(portsts.wPortStatus); + portchange = __le16_to_cpu(portsts.wPortChange); + + DEBUG_HUB("portstatus %x, change %x, %s\n", + portstatus, portchange, + portspeed(portstatus)); + + DEBUG_HUB("STAT_C_CONNECTION = %d STAT_CONNECTION = %d" \ + " USB_PORT_STAT_ENABLE %d\n", + (portchange & USB_PORT_STAT_C_CONNECTION) ? 1 : 0, + (portstatus & USB_PORT_STAT_CONNECTION) ? 1 : 0, + (portstatus & USB_PORT_STAT_ENABLE) ? 1 : 0); + + if ((portchange & USB_PORT_STAT_C_CONNECTION) || + !(portstatus & USB_PORT_STAT_CONNECTION)) + return -1; + + if (portstatus & USB_PORT_STAT_ENABLE) + break; + + wait_ms(200); + } + + if (tries == MAX_TRIES) { + DEBUG_HUB("Cannot enable port %i after %i retries, " \ + "disabling port.\n", port + 1, MAX_TRIES); + DEBUG_HUB("Maybe the USB cable is bad?\n"); + return -1; + } + + usb_clear_port_feature(dev, port + 1, USB_PORT_FEAT_C_RESET); + *portstat = portstatus; + return 0; +} + + +void usb_hub_port_connect_change(struct usb_device *dev, int port) +{ + struct usb_device *usb; + struct usb_port_status portsts; + unsigned short portstatus, portchange; + + /* Check status */ + if (usb_get_port_status(dev, port + 1, &portsts) < 0) { + DEBUG_HUB("get_port_status failed\n"); + return; + } + + portstatus = __le16_to_cpu(portsts.wPortStatus); + portchange = __le16_to_cpu(portsts.wPortChange); + DEBUG_HUB("portstatus %x, change %x, %s\n", + portstatus, portchange, portspeed(portstatus)); + + /* Clear the connection change status */ + usb_clear_port_feature(dev, port + 1, USB_PORT_FEAT_C_CONNECTION); + + /* Disconnect any existing devices under this port */ + if (((!(portstatus & USB_PORT_STAT_CONNECTION)) && + (!(portstatus & USB_PORT_STAT_ENABLE))) || (dev->children[port])) { + DEBUG_HUB("usb_disconnect(&hub->children[port]);\n"); + /* Return now if nothing is connected */ + if (!(portstatus & USB_PORT_STAT_CONNECTION)) + return; + } + wait_ms(200); + + /* Reset the port */ + if (hub_port_reset(dev, port, &portstatus) < 0) { + printf("cannot reset port %i!?\n", port + 1); + return; + } + + wait_ms(200); + + /* Allocate a new device struct for it */ + usb = usb_alloc_new_device(); + if (portstatus & USB_PORT_STAT_HIGH_SPEED) + usb->speed = USB_SPEED_HIGH; + else if (portstatus & USB_PORT_STAT_LOW_SPEED) + usb->speed = USB_SPEED_LOW; + else + usb->speed = USB_SPEED_FULL; + + dev->children[port] = usb; + usb->parent = dev; + /* Run it through the hoops (find a driver, etc) */ + if (usb_new_device(usb)) { + /* Woops, disable the port */ + DEBUG_HUB("hub: disabling port %d\n", port + 1); + usb_clear_port_feature(dev, port + 1, USB_PORT_FEAT_ENABLE); + } +} + + +int usb_hub_configure(struct usb_device *dev) +{ + unsigned char buffer[USB_BUFSIZ], *bitmap; + struct usb_hub_descriptor *descriptor; + struct usb_hub_status *hubsts; + int i; + struct usb_hub_device *hub; + + /* "allocate" Hub device */ + hub = usb_hub_allocate(); + if (hub == NULL) + return -1; + hub->pusb_dev = dev; + /* Get the the hub descriptor */ + if (usb_get_hub_descriptor(dev, buffer, 4) < 0) { + DEBUG_HUB("usb_hub_configure: failed to get hub " \ + "descriptor, giving up %lX\n", dev->status); + return -1; + } + descriptor = (struct usb_hub_descriptor *)buffer; + + /* silence compiler warning if USB_BUFSIZ is > 256 [= sizeof(char)] */ + i = descriptor->bLength; + if (i > USB_BUFSIZ) { + DEBUG_HUB("usb_hub_configure: failed to get hub " \ + "descriptor - too long: %d\n", + descriptor->bLength); + return -1; + } + + if (usb_get_hub_descriptor(dev, buffer, descriptor->bLength) < 0) { + DEBUG_HUB("usb_hub_configure: failed to get hub " \ + "descriptor 2nd giving up %lX\n", dev->status); + return -1; + } + memcpy((unsigned char *)&hub->desc, buffer, descriptor->bLength); + /* adjust 16bit values */ + hub->desc.wHubCharacteristics = + __le16_to_cpu(descriptor->wHubCharacteristics); + + /* set the bitmap */ + bitmap = (unsigned char *)&hub->desc.DeviceRemovable[0]; + /* devices not removable by default */ + memset(bitmap, 0xff, (USB_MAXCHILDREN+1+7)/8); + bitmap = (unsigned char *)&hub->desc.PortPowerCtrlMask[0]; + memset(bitmap, 0xff, (USB_MAXCHILDREN+1+7)/8); /* PowerMask = 1B */ + + for (i = 0; i < ((hub->desc.bNbrPorts + 1 + 7)/8); i++) + hub->desc.DeviceRemovable[i] = descriptor->DeviceRemovable[i]; + + for (i = 0; i < ((hub->desc.bNbrPorts + 1 + 7)/8); i++) + hub->desc.DeviceRemovable[i] = descriptor->PortPowerCtrlMask[i]; + + dev->maxchild = descriptor->bNbrPorts; + DEBUG_HUB("%d ports detected\n", dev->maxchild); + + switch (hub->desc.wHubCharacteristics & HUB_CHAR_LPSM) { + case 0x00: + DEBUG_HUB("ganged power switching\n"); + break; + case 0x01: + DEBUG_HUB("individual port power switching\n"); + break; + case 0x02: + case 0x03: + DEBUG_HUB("unknown reserved power switching mode\n"); + break; + } + + if (hub->desc.wHubCharacteristics & HUB_CHAR_COMPOUND) { + DEBUG_HUB("part of a compound device\n"); + } + else { + DEBUG_HUB("standalone hub\n"); + } + + switch (hub->desc.wHubCharacteristics & HUB_CHAR_OCPM) { + case 0x00: + DEBUG_HUB("global over-current protection\n"); + break; + case 0x08: + DEBUG_HUB("individual port over-current protection\n"); + break; + case 0x10: + case 0x18: + DEBUG_HUB("no over-current protection\n"); + break; + } + + DEBUG_HUB("power on to power good time: %dms\n", + descriptor->bPwrOn2PwrGood * 2); + DEBUG_HUB("hub controller current requirement: %dmA\n", + descriptor->bHubContrCurrent); + + for (i = 0; i < dev->maxchild; i++) + DEBUG_HUB("port %d is%s removable\n", i + 1, + hub->desc.DeviceRemovable[(i + 1) / 8] & \ + (1 << ((i + 1) % 8)) ? " not" : ""); + + if (sizeof(struct usb_hub_status) > USB_BUFSIZ) { + DEBUG_HUB("usb_hub_configure: failed to get Status - " \ + "too long: %d\n", descriptor->bLength); + return -1; + } + + if (usb_get_hub_status(dev, buffer) < 0) { + DEBUG_HUB("usb_hub_configure: failed to get Status %lX\n", + dev->status); + return -1; + } + + hubsts = (struct usb_hub_status *)buffer; + DEBUG_HUB("get_hub_status returned status %X, change %X\n", + __le16_to_cpu(hubsts->wHubStatus), + __le16_to_cpu(hubsts->wHubChange)); + DEBUG_HUB("local power source is %s\n", + (__le16_to_cpu(hubsts->wHubStatus) & HUB_STATUS_LOCAL_POWER) ? \ + "lost (inactive)" : "good"); + DEBUG_HUB("%sover-current condition exists\n", + (__le16_to_cpu(hubsts->wHubStatus) & HUB_STATUS_OVERCURRENT) ? \ + "" : "no "); + usb_hub_power_on(hub); + + + + for (i = 0; i < dev->maxchild; i++) { + struct usb_port_status portsts; + unsigned short portstatus, portchange; + + wait_ms (100); /* GALVEZ: add delay for MiNT/TOS */ + + if (usb_get_port_status(dev, i + 1, &portsts) < 0) { + DEBUG_HUB("get_port_status failed\n"); + continue; + } + + portstatus = __le16_to_cpu(portsts.wPortStatus); + portchange = __le16_to_cpu(portsts.wPortChange); + DEBUG_HUB("Port %d Status %X Change %X\n", + i + 1, portstatus, portchange); + + if (portchange & USB_PORT_STAT_C_CONNECTION) { + DEBUG_HUB("port %d connection change\n", i + 1); + usb_hub_port_connect_change(dev, i); + } + + if (portchange & USB_PORT_STAT_C_ENABLE) { + DEBUG_HUB("port %d enable change, status %x\n", + i + 1, portstatus); + usb_clear_port_feature(dev, i + 1, + USB_PORT_FEAT_C_ENABLE); + + /* EM interference sometimes causes bad shielded USB + * devices to be shutdown by the hub, this hack enables + * them again. Works at least with mouse driver */ + if (!(portstatus & USB_PORT_STAT_ENABLE) && + (portstatus & USB_PORT_STAT_CONNECTION) && + ((dev->children[i]))) { + DEBUG_HUB("already running port %i " \ + "disabled by hub (EMI?), " \ + "re-enabling...\n", i + 1); + usb_hub_port_connect_change(dev, i); + } + } + if (portstatus & USB_PORT_STAT_SUSPEND) { + DEBUG_HUB("port %d suspend change\n", i + 1); + usb_clear_port_feature(dev, i + 1, + USB_PORT_FEAT_SUSPEND); + } + + if (portchange & USB_PORT_STAT_C_OVERCURRENT) { + DEBUG_HUB("port %d over-current change\n", i + 1); + usb_clear_port_feature(dev, i + 1, + USB_PORT_FEAT_C_OVER_CURRENT); + usb_hub_power_on(hub); + } + + if (portchange & USB_PORT_STAT_C_RESET) { + DEBUG_HUB("port %d reset change\n", i + 1); + usb_clear_port_feature(dev, i + 1, + USB_PORT_FEAT_C_RESET); + } + } /* end for i all ports */ + return 0; +} + +int usb_hub_probe(struct usb_device *dev, int ifnum) +{ + struct usb_interface_descriptor *iface; + struct usb_endpoint_descriptor *ep; + int ret; + + iface = &dev->config.if_desc[ifnum]; + /* Is it a hub? */ + if (iface->bInterfaceClass != USB_CLASS_HUB) + return 0; + /* Some hubs have a subclass of 1, which AFAICT according to the */ + /* specs is not defined, but it works */ + if ((iface->bInterfaceSubClass != 0) && + (iface->bInterfaceSubClass != 1)) + return 0; + /* Multiple endpoints? What kind of mutant ninja-hub is this? */ + if (iface->bNumEndpoints != 1) + return 0; + ep = &iface->ep_desc[0]; + /* Output endpoint? Curiousier and curiousier.. */ + if (!(ep->bEndpointAddress & USB_DIR_IN)) + return 0; + /* If it's not an interrupt endpoint, we'd better punt! */ + if ((ep->bmAttributes & 3) != 3) + return 0; + /* We found a hub */ + DEBUG_HUB("USB hub found\n"); + ret = usb_hub_configure(dev); + + return ret; +} + +/* EOF */ diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/usb.h b/BaS_codewarrior/FireBee/trunk/usb/store/usb.h new file mode 100644 index 0000000..ce2cd93 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/usb.h @@ -0,0 +1,470 @@ +/* + * Modified for Atari by David Gálvez 2010 + * Modified for Atari by Didier Mequignon 2009 + * + * (C) Copyright 2001 + * Denis Peter, MPL AG Switzerland + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * Note: Part of this code has been derived from linux + * + */ +#ifndef _USB_H_ +#define _USB_H_ + +#include +#include +#include +#include +#include + +#include "host/ohci-pci/mod_devicetable.h" +#include "usb_defs.h" +#include "asm-m68k/types.h" +#include "asm-m68k/byteorder.h" +#include "part.h" + +#ifdef PCI_XBIOS + +#define in8(addr) fast_read_mem_byte(usb_handle,addr) +#define in16r(addr) fast_read_mem_word(usb_handle,addr) +#define in32r(addr) fast_read_mem_longword(usb_handle,addr) +#define out8(addr,val) write_mem_byte(usb_handle,addr,val) +#define out16r(addr,val) write_mem_word(usb_handle,addr,val) +#define out32r(addr,val) write_mem_longword(usb_handle,addr,val) + +#else /* !PCI_XBIOS */ + +extern long *tab_funcs_pci; + +#define in8(addr) Fast_read_mem_byte(usb_handle,addr) +#define in16r(addr) Fast_read_mem_word(usb_handle,addr) +#define in32r(addr) Fast_read_mem_longword(usb_handle,addr) +#define out8(addr,val) Write_mem_byte(usb_handle,addr,val) +#define out16r(addr,val) Write_mem_word(usb_handle,addr,val) +#define out32r(addr,val) Write_mem_longword(usb_handle,addr,val) + +#endif /* PCI_XBIOS */ + + +/* Everything is aribtrary */ +#define USB_ALTSETTINGALLOC 4 +#define USB_MAXALTSETTING 128 /* Hard limit */ + +#define USB_MAX_DEVICE 32 +#define USB_MAXCONFIG 8 +#define USB_MAXINTERFACES 8 +#define USB_MAXENDPOINTS 16 +#define USB_MAXCHILDREN 8 /* This is arbitrary */ +#define USB_MAX_HUB 16 + +#define USB_CNTL_TIMEOUT 100 /* 100ms timeout */ + +/* String descriptor */ +struct usb_string_descriptor { + unsigned char bLength; + unsigned char bDescriptorType; + unsigned short wData[1]; +} __attribute__ ((packed)); + +/* device request (setup) */ +struct devrequest { + unsigned char requesttype; + unsigned char request; + unsigned short value; + unsigned short index; + unsigned short length; +} __attribute__ ((packed)); + +/* All standard descriptors have these 2 fields in common */ +struct usb_descriptor_header { + unsigned char bLength; + unsigned char bDescriptorType; +} __attribute__ ((packed)); + +/* Device descriptor */ +struct usb_device_descriptor { + unsigned char bLength; + unsigned char bDescriptorType; + unsigned short bcdUSB; + unsigned char bDeviceClass; + unsigned char bDeviceSubClass; + unsigned char bDeviceProtocol; + unsigned char bMaxPacketSize0; + unsigned short idVendor; + unsigned short idProduct; + unsigned short bcdDevice; + unsigned char iManufacturer; + unsigned char iProduct; + unsigned char iSerialNumber; + unsigned char bNumConfigurations; +} __attribute__ ((packed)); + +/* Endpoint descriptor */ +struct usb_endpoint_descriptor { + unsigned char bLength; + unsigned char bDescriptorType; + unsigned char bEndpointAddress; + unsigned char bmAttributes; + unsigned short wMaxPacketSize; + unsigned char bInterval; + unsigned char bRefresh; + unsigned char bSynchAddress; +} __attribute__ ((packed)) __attribute__ ((aligned(2))); + +/* Interface descriptor */ +struct usb_interface_descriptor { + unsigned char bLength; + unsigned char bDescriptorType; + unsigned char bInterfaceNumber; + unsigned char bAlternateSetting; + unsigned char bNumEndpoints; + unsigned char bInterfaceClass; + unsigned char bInterfaceSubClass; + unsigned char bInterfaceProtocol; + unsigned char iInterface; + + unsigned char no_of_ep; + unsigned char num_altsetting; + unsigned char act_altsetting; + + struct usb_endpoint_descriptor ep_desc[USB_MAXENDPOINTS]; +} __attribute__ ((packed)); + + +/* Configuration descriptor information.. */ +struct usb_config_descriptor { + unsigned char bLength; + unsigned char bDescriptorType; + unsigned short wTotalLength; + unsigned char bNumInterfaces; + unsigned char bConfigurationValue; + unsigned char iConfiguration; + unsigned char bmAttributes; + unsigned char MaxPower; + + unsigned char no_of_if; /* number of interfaces */ + struct usb_interface_descriptor if_desc[USB_MAXINTERFACES]; +} __attribute__ ((packed)); + +enum { + /* Maximum packet size; encoded as 0,1,2,3 = 8,16,32,64 */ + PACKET_SIZE_8 = 0, + PACKET_SIZE_16 = 1, + PACKET_SIZE_32 = 2, + PACKET_SIZE_64 = 3, +}; + +struct usb_device { + int devnum; /* Device number on USB bus */ + int speed; /* full/low/high */ + char mf[32]; /* manufacturer */ + char prod[32]; /* product */ + char serial[32]; /* serial number */ + + /* Maximum packet size; one of: PACKET_SIZE_* */ + int maxpacketsize; + /* one bit for each endpoint ([0] = IN, [1] = OUT) */ + unsigned int toggle[2]; + /* endpoint halts; one bit per endpoint # & direction; + * [0] = IN, [1] = OUT + */ + unsigned int halted[2]; + int epmaxpacketin[16]; /* INput endpoint specific maximums */ + int epmaxpacketout[16]; /* OUTput endpoint specific maximums */ + + int configno; /* selected config number */ + struct usb_device_descriptor descriptor; /* Device Descriptor */ + struct usb_config_descriptor config; /* config descriptor */ + + int have_langid; /* whether string_langid is valid yet */ + int string_langid; /* language ID for strings */ + int (*irq_handle)(struct usb_device *dev); + unsigned long irq_status; + int irq_act_len; /* transfered bytes */ + void *privptr; + /* + * Child devices - if this is a hub device + * Each instance needs its own set of data structures. + */ + unsigned long status; + int act_len; /* transfered bytes */ + int maxchild; /* Number of ports if hub */ + int portnr; + struct usb_device *parent; + struct usb_device *children[USB_MAXCHILDREN]; +}; + +/********************************************************************** + * this is how the lowlevel part communicate with the outer world + */ + +#if defined(CONFIG_USB_UHCI) || defined(CONFIG_USB_OHCI) || \ + defined(CONFIG_USB_EHCI) || defined(CONFIG_USB_OHCI_NEW) || \ + defined(CONFIG_USB_SL811HS) || defined(CONFIG_USB_ISP116X_HCD) || \ + defined(CONFIG_USB_R8A66597_HCD) || defined(CONFIG_USB_DAVINCI) || \ + defined(CONFIG_USB_ARANYM_HCD) + +#ifdef PCI_XBIOS +int usb_lowlevel_init(long handle, const struct pci_device_id *ent); +#else +int usb_lowlevel_init(void); +#endif + +int usb_lowlevel_stop(void); +int submit_bulk_msg(struct usb_device *dev, unsigned long pipe, + void *buffer, int transfer_len); +int submit_control_msg(struct usb_device *dev, unsigned long pipe, void *buffer, + int transfer_len, struct devrequest *setup); +int submit_int_msg(struct usb_device *dev, unsigned long pipe, void *buffer, + int transfer_len, int interval); + +#ifdef CONFIG_USB_INTERRUPT_POLLING +void usb_event_poll(void); +#else +void usb_enable_interrupt(int enable); +#endif + +/* Defines */ +#define USB_UHCI_VEND_ID 0x8086 +#define USB_UHCI_DEV_ID 0x7112 + +#else +#error USB Lowlevel not defined +#endif + +#ifdef CONFIG_USB_STORAGE + +#define USB_MAX_STOR_DEV 2 /* GALVEZ: DEFAULT 5 */ +block_dev_desc_t *usb_stor_get_dev(int idx); +int usb_stor_scan(void); +int usb_stor_info(void); + +#endif + +#ifdef CONFIG_USB_MOUSE +int drv_usb_mouse_init(void); +int usb_mouse_deregister(void); +#endif + + +#ifdef CONFIG_USB_KEYBOARD +int drv_usb_kbd_init(void); +int usb_kbd_deregister(void); +#endif + +/* memory */ +void *usb_malloc(long amount); +int usb_free(void *addr); +int usb_mem_init(void); +void usb_mem_stop(void); + + +/* routines */ +#ifdef PCI_XBIOS +int usb_init(long handle, const struct pci_device_id *ent); /* initialize the USB Controller */ +#else +int usb_init(void); /* initialize the USB Controller */ +#endif +int usb_stop(void); /* stop the USB Controller */ + + +int usb_set_protocol(struct usb_device *dev, int ifnum, int protocol); +int usb_set_idle(struct usb_device *dev, int ifnum, int duration, + int report_id); +struct usb_device *usb_get_dev_index(int idx); +int usb_control_msg(struct usb_device *dev, unsigned int pipe, + unsigned char request, unsigned char requesttype, + unsigned short value, unsigned short idx, + void *data, unsigned short size, int timeout); +int usb_bulk_msg(struct usb_device *dev, unsigned int pipe, + void *data, int len, int *actual_length, int timeout); +int usb_submit_int_msg(struct usb_device *dev, unsigned long pipe, + void *buffer, int transfer_len, int interval); +void usb_disable_asynch(int disable); +int usb_maxpacket(struct usb_device *dev, unsigned long pipe); +inline void wait_ms(unsigned long ms); +int usb_get_configuration_no(struct usb_device *dev, unsigned char *buffer, + int cfgno); +int usb_get_report(struct usb_device *dev, int ifnum, unsigned char type, + unsigned char id, void *buf, int size); +int usb_get_class_descriptor(struct usb_device *dev, int ifnum, + unsigned char type, unsigned char id, void *buf, + int size); +int usb_clear_halt(struct usb_device *dev, int pipe); +int usb_string(struct usb_device *dev, int idx, char *buf, size_t size); +int usb_set_interface(struct usb_device *dev, int interface, int alternate); + +/* big endian -> little endian conversion */ +/* some CPUs are already little endian e.g. the ARM920T */ +#define __swap_16(x) \ + ({ unsigned short x_ = (unsigned short)x; \ + (unsigned short)( \ + ((x_ & 0x00FFU) << 8) | ((x_ & 0xFF00U) >> 8)); \ + }) +#define __swap_32(x) \ + ({ unsigned long x_ = (unsigned long)x; \ + (unsigned long)( \ + ((x_ & 0x000000FFUL) << 24) | \ + ((x_ & 0x0000FF00UL) << 8) | \ + ((x_ & 0x00FF0000UL) >> 8) | \ + ((x_ & 0xFF000000UL) >> 24)); \ + }) + +#ifdef __LITTLE_ENDIAN +# define swap_16(x) (x) +# define swap_32(x) (x) +#else +# define swap_16(x) __swap_16(x) +# define swap_32(x) __swap_32(x) +#endif + +/* + * Calling this entity a "pipe" is glorifying it. A USB pipe + * is something embarrassingly simple: it basically consists + * of the following information: + * - device number (7 bits) + * - endpoint number (4 bits) + * - current Data0/1 state (1 bit) + * - direction (1 bit) + * - speed (2 bits) + * - max packet size (2 bits: 8, 16, 32 or 64) + * - pipe type (2 bits: control, interrupt, bulk, isochronous) + * + * That's 18 bits. Really. Nothing more. And the USB people have + * documented these eighteen bits as some kind of glorious + * virtual data structure. + * + * Let's not fall in that trap. We'll just encode it as a simple + * unsigned int. The encoding is: + * + * - max size: bits 0-1 (00 = 8, 01 = 16, 10 = 32, 11 = 64) + * - direction: bit 7 (0 = Host-to-Device [Out], + * (1 = Device-to-Host [In]) + * - device: bits 8-14 + * - endpoint: bits 15-18 + * - Data0/1: bit 19 + * - speed: bit 26 (0 = Full, 1 = Low Speed, 2 = High) + * - pipe type: bits 30-31 (00 = isochronous, 01 = interrupt, + * 10 = control, 11 = bulk) + * + * Why? Because it's arbitrary, and whatever encoding we select is really + * up to us. This one happens to share a lot of bit positions with the UHCI + * specification, so that much of the uhci driver can just mask the bits + * appropriately. + */ +/* Create various pipes... */ +#define create_pipe(dev,endpoint) \ + (((dev)->devnum << 8) | (endpoint << 15) | \ + ((dev)->speed << 26) | (dev)->maxpacketsize) +#define default_pipe(dev) ((dev)->speed << 26) + +#define usb_sndctrlpipe(dev, endpoint) ((PIPE_CONTROL << 30) | \ + create_pipe(dev, endpoint)) +#define usb_rcvctrlpipe(dev, endpoint) ((PIPE_CONTROL << 30) | \ + create_pipe(dev, endpoint) | \ + USB_DIR_IN) +#define usb_sndisocpipe(dev, endpoint) ((PIPE_ISOCHRONOUS << 30) | \ + create_pipe(dev, endpoint)) +#define usb_rcvisocpipe(dev, endpoint) ((PIPE_ISOCHRONOUS << 30) | \ + create_pipe(dev, endpoint) | \ + USB_DIR_IN) +#define usb_sndbulkpipe(dev, endpoint) ((PIPE_BULK << 30) | \ + create_pipe(dev, endpoint)) +#define usb_rcvbulkpipe(dev, endpoint) ((PIPE_BULK << 30) | \ + create_pipe(dev, endpoint) | \ + USB_DIR_IN) +#define usb_sndintpipe(dev, endpoint) ((PIPE_INTERRUPT << 30) | \ + create_pipe(dev, endpoint)) +#define usb_rcvintpipe(dev, endpoint) ((PIPE_INTERRUPT << 30) | \ + create_pipe(dev, endpoint) | \ + USB_DIR_IN) +#define usb_snddefctrl(dev) ((PIPE_CONTROL << 30) | \ + default_pipe(dev)) +#define usb_rcvdefctrl(dev) ((PIPE_CONTROL << 30) | \ + default_pipe(dev) | \ + USB_DIR_IN) + +/* The D0/D1 toggle bits */ +#define usb_gettoggle(dev, ep, out) (((dev)->toggle[out] >> ep) & 1) +#define usb_dotoggle(dev, ep, out) ((dev)->toggle[out] ^= (1 << ep)) +#define usb_settoggle(dev, ep, out, bit) ((dev)->toggle[out] = \ + ((dev)->toggle[out] & \ + ~(1 << ep)) | ((bit) << ep)) + +/* Endpoint halt control/status */ +#define usb_endpoint_out(ep_dir) (((ep_dir >> 7) & 1) ^ 1) +#define usb_endpoint_halt(dev, ep, out) ((dev)->halted[out] |= (1 << (ep))) +#define usb_endpoint_running(dev, ep, out) ((dev)->halted[out] &= ~(1 << (ep))) +#define usb_endpoint_halted(dev, ep, out) ((dev)->halted[out] & (1 << (ep))) + +#define usb_packetid(pipe) (((pipe) & USB_DIR_IN) ? USB_PID_IN : \ + USB_PID_OUT) + +#define usb_pipeout(pipe) ((((pipe) >> 7) & 1) ^ 1) +#define usb_pipein(pipe) (((pipe) >> 7) & 1) +#define usb_pipedevice(pipe) (((pipe) >> 8) & 0x7f) +#define usb_pipe_endpdev(pipe) (((pipe) >> 8) & 0x7ff) +#define usb_pipeendpoint(pipe) (((pipe) >> 15) & 0xf) +#define usb_pipedata(pipe) (((pipe) >> 19) & 1) +#define usb_pipespeed(pipe) (((pipe) >> 26) & 3) +#define usb_pipeslow(pipe) (usb_pipespeed(pipe) == USB_SPEED_LOW) +#define usb_pipetype(pipe) (((pipe) >> 30) & 3) +#define usb_pipeisoc(pipe) (usb_pipetype((pipe)) == PIPE_ISOCHRONOUS) +#define usb_pipeint(pipe) (usb_pipetype((pipe)) == PIPE_INTERRUPT) +#define usb_pipecontrol(pipe) (usb_pipetype((pipe)) == PIPE_CONTROL) +#define usb_pipebulk(pipe) (usb_pipetype((pipe)) == PIPE_BULK) + + +/************************************************************************* + * Hub Stuff + */ +struct usb_port_status { + unsigned short wPortStatus; + unsigned short wPortChange; +} __attribute__ ((packed)); + +struct usb_hub_status { + unsigned short wHubStatus; + unsigned short wHubChange; +} __attribute__ ((packed)); + + +/* Hub descriptor */ +struct usb_hub_descriptor { + unsigned char bLength; + unsigned char bDescriptorType; + unsigned char bNbrPorts; + unsigned short wHubCharacteristics; + unsigned char bPwrOn2PwrGood; + unsigned char bHubContrCurrent; + unsigned char DeviceRemovable[(USB_MAXCHILDREN+1+7)/8]; + unsigned char PortPowerCtrlMask[(USB_MAXCHILDREN+1+7)/8]; + /* DeviceRemovable and PortPwrCtrlMask want to be variable-length + bitmaps that hold max 255 entries. (bit0 is ignored) */ +} __attribute__ ((packed)); + + +struct usb_hub_device { + struct usb_device *pusb_dev; + struct usb_hub_descriptor desc; +}; + +#endif /*_USB_H_ */ diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/usb_defs.h b/BaS_codewarrior/FireBee/trunk/usb/store/usb_defs.h new file mode 100644 index 0000000..8032e57 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/usb_defs.h @@ -0,0 +1,251 @@ +/* + * (C) Copyright 2001 + * Denis Peter, MPL AG Switzerland + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * Note: Part of this code has been derived from linux + * + */ +#ifndef _USB_DEFS_H_ +#define _USB_DEFS_H_ + +/* USB constants */ + +/* Device and/or Interface Class codes */ +#define USB_CLASS_PER_INTERFACE 0 /* for DeviceClass */ +#define USB_CLASS_AUDIO 1 +#define USB_CLASS_COMM 2 +#define USB_CLASS_HID 3 +#define USB_CLASS_PRINTER 7 +#define USB_CLASS_MASS_STORAGE 8 +#define USB_CLASS_HUB 9 +#define USB_CLASS_DATA 10 +#define USB_CLASS_VENDOR_SPEC 0xff + +/* some HID sub classes */ +#define USB_SUB_HID_NONE 0 +#define USB_SUB_HID_BOOT 1 + +/* some UID Protocols */ +#define USB_PROT_HID_NONE 0 +#define USB_PROT_HID_KEYBOARD 1 +#define USB_PROT_HID_MOUSE 2 + + +/* Sub STORAGE Classes */ +#define US_SC_RBC 1 /* Typically, flash devices */ +#define US_SC_8020 2 /* CD-ROM */ +#define US_SC_QIC 3 /* QIC-157 Tapes */ +#define US_SC_UFI 4 /* Floppy */ +#define US_SC_8070 5 /* Removable media */ +#define US_SC_SCSI 6 /* Transparent */ +#define US_SC_MIN US_SC_RBC +#define US_SC_MAX US_SC_SCSI + +/* STORAGE Protocols */ +#define US_PR_CB 1 /* Control/Bulk w/o interrupt */ +#define US_PR_CBI 0 /* Control/Bulk/Interrupt */ +#define US_PR_BULK 0x50 /* bulk only */ + +/* USB types */ +#define USB_TYPE_STANDARD (0x00 << 5) +#define USB_TYPE_CLASS (0x01 << 5) +#define USB_TYPE_VENDOR (0x02 << 5) +#define USB_TYPE_RESERVED (0x03 << 5) + +/* USB recipients */ +#define USB_RECIP_DEVICE 0x00 +#define USB_RECIP_INTERFACE 0x01 +#define USB_RECIP_ENDPOINT 0x02 +#define USB_RECIP_OTHER 0x03 + +/* USB directions */ +#define USB_DIR_OUT 0 +#define USB_DIR_IN 0x80 + +/* USB device speeds */ +#define USB_SPEED_FULL 0x0 /* 12Mbps */ +#define USB_SPEED_LOW 0x1 /* 1.5Mbps */ +#define USB_SPEED_HIGH 0x2 /* 480Mbps */ +#define USB_SPEED_RESERVED 0x3 + +/* Descriptor types */ +#define USB_DT_DEVICE 0x01 +#define USB_DT_CONFIG 0x02 +#define USB_DT_STRING 0x03 +#define USB_DT_INTERFACE 0x04 +#define USB_DT_ENDPOINT 0x05 + +#define USB_DT_HID (USB_TYPE_CLASS | 0x01) +#define USB_DT_REPORT (USB_TYPE_CLASS | 0x02) +#define USB_DT_PHYSICAL (USB_TYPE_CLASS | 0x03) +#define USB_DT_HUB (USB_TYPE_CLASS | 0x09) + +/* Descriptor sizes per descriptor type */ +#define USB_DT_DEVICE_SIZE 18 +#define USB_DT_CONFIG_SIZE 9 +#define USB_DT_INTERFACE_SIZE 9 +#define USB_DT_ENDPOINT_SIZE 7 +#define USB_DT_ENDPOINT_AUDIO_SIZE 9 /* Audio extension */ +#define USB_DT_HUB_NONVAR_SIZE 7 +#define USB_DT_HID_SIZE 9 + +/* Endpoints */ +#define USB_ENDPOINT_NUMBER_MASK 0x0f /* in bEndpointAddress */ +#define USB_ENDPOINT_DIR_MASK 0x80 + +#define USB_ENDPOINT_XFERTYPE_MASK 0x03 /* in bmAttributes */ +#define USB_ENDPOINT_XFER_CONTROL 0 +#define USB_ENDPOINT_XFER_ISOC 1 +#define USB_ENDPOINT_XFER_BULK 2 +#define USB_ENDPOINT_XFER_INT 3 + +/* USB Packet IDs (PIDs) */ +#define USB_PID_UNDEF_0 0xf0 +#define USB_PID_OUT 0xe1 +#define USB_PID_ACK 0xd2 +#define USB_PID_DATA0 0xc3 +#define USB_PID_UNDEF_4 0xb4 +#define USB_PID_SOF 0xa5 +#define USB_PID_UNDEF_6 0x96 +#define USB_PID_UNDEF_7 0x87 +#define USB_PID_UNDEF_8 0x78 +#define USB_PID_IN 0x69 +#define USB_PID_NAK 0x5a +#define USB_PID_DATA1 0x4b +#define USB_PID_PREAMBLE 0x3c +#define USB_PID_SETUP 0x2d +#define USB_PID_STALL 0x1e +#define USB_PID_UNDEF_F 0x0f + +/* Standard requests */ +#define USB_REQ_GET_STATUS 0x00 +#define USB_REQ_CLEAR_FEATURE 0x01 +#define USB_REQ_SET_FEATURE 0x03 +#define USB_REQ_SET_ADDRESS 0x05 +#define USB_REQ_GET_DESCRIPTOR 0x06 +#define USB_REQ_SET_DESCRIPTOR 0x07 +#define USB_REQ_GET_CONFIGURATION 0x08 +#define USB_REQ_SET_CONFIGURATION 0x09 +#define USB_REQ_GET_INTERFACE 0x0A +#define USB_REQ_SET_INTERFACE 0x0B +#define USB_REQ_SYNCH_FRAME 0x0C + +/* HID requests */ +#define USB_REQ_GET_REPORT 0x01 +#define USB_REQ_GET_IDLE 0x02 +#define USB_REQ_GET_PROTOCOL 0x03 +#define USB_REQ_SET_REPORT 0x09 +#define USB_REQ_SET_IDLE 0x0A +#define USB_REQ_SET_PROTOCOL 0x0B + + +/* "pipe" definitions */ + +#define PIPE_ISOCHRONOUS 0 +#define PIPE_INTERRUPT 1 +#define PIPE_CONTROL 2 +#define PIPE_BULK 3 +#define PIPE_DEVEP_MASK 0x0007ff00 + +#define USB_ISOCHRONOUS 0 +#define USB_INTERRUPT 1 +#define USB_CONTROL 2 +#define USB_BULK 3 + +/* USB-status codes: */ +#define USB_ST_ACTIVE 0x1 /* TD is active */ +#define USB_ST_STALLED 0x2 /* TD is stalled */ +#define USB_ST_BUF_ERR 0x4 /* buffer error */ +#define USB_ST_BABBLE_DET 0x8 /* Babble detected */ +#define USB_ST_NAK_REC 0x10 /* NAK Received*/ +#define USB_ST_CRC_ERR 0x20 /* CRC/timeout Error */ +#define USB_ST_BIT_ERR 0x40 /* Bitstuff error */ +#define USB_ST_NOT_PROC 0x80000000L /* Not yet processed */ + + +/************************************************************************* + * Hub defines + */ + +/* + * Hub request types + */ + +#define USB_RT_HUB (USB_TYPE_CLASS | USB_RECIP_DEVICE) +#define USB_RT_PORT (USB_TYPE_CLASS | USB_RECIP_OTHER) + +/* + * Hub Class feature numbers + */ +#define C_HUB_LOCAL_POWER 0 +#define C_HUB_OVER_CURRENT 1 + +/* + * Port feature numbers + */ +#define USB_PORT_FEAT_CONNECTION 0 +#define USB_PORT_FEAT_ENABLE 1 +#define USB_PORT_FEAT_SUSPEND 2 +#define USB_PORT_FEAT_OVER_CURRENT 3 +#define USB_PORT_FEAT_RESET 4 +#define USB_PORT_FEAT_POWER 8 +#define USB_PORT_FEAT_LOWSPEED 9 +#define USB_PORT_FEAT_HIGHSPEED 10 +#define USB_PORT_FEAT_C_CONNECTION 16 +#define USB_PORT_FEAT_C_ENABLE 17 +#define USB_PORT_FEAT_C_SUSPEND 18 +#define USB_PORT_FEAT_C_OVER_CURRENT 19 +#define USB_PORT_FEAT_C_RESET 20 + +/* wPortStatus bits */ +#define USB_PORT_STAT_CONNECTION 0x0001 +#define USB_PORT_STAT_ENABLE 0x0002 +#define USB_PORT_STAT_SUSPEND 0x0004 +#define USB_PORT_STAT_OVERCURRENT 0x0008 +#define USB_PORT_STAT_RESET 0x0010 +#define USB_PORT_STAT_POWER 0x0100 +#define USB_PORT_STAT_LOW_SPEED 0x0200 +#define USB_PORT_STAT_HIGH_SPEED 0x0400 /* support for EHCI */ +#define USB_PORT_STAT_SPEED \ + (USB_PORT_STAT_LOW_SPEED | USB_PORT_STAT_HIGH_SPEED) + +/* wPortChange bits */ +#define USB_PORT_STAT_C_CONNECTION 0x0001 +#define USB_PORT_STAT_C_ENABLE 0x0002 +#define USB_PORT_STAT_C_SUSPEND 0x0004 +#define USB_PORT_STAT_C_OVERCURRENT 0x0008 +#define USB_PORT_STAT_C_RESET 0x0010 + +/* wHubCharacteristics (masks) */ +#define HUB_CHAR_LPSM 0x0003 +#define HUB_CHAR_COMPOUND 0x0004 +#define HUB_CHAR_OCPM 0x0018 + +/* + *Hub Status & Hub Change bit masks + */ +#define HUB_STATUS_LOCAL_POWER 0x0001 +#define HUB_STATUS_OVERCURRENT 0x0002 + +#define HUB_CHANGE_LOCAL_POWER 0x0001 +#define HUB_CHANGE_OVERCURRENT 0x0002 + +#endif /*_USB_DEFS_H_ */ diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/usb_mem.c b/BaS_codewarrior/FireBee/trunk/usb/store/usb_mem.c new file mode 100644 index 0000000..7397d12 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/usb_mem.c @@ -0,0 +1,220 @@ +/* + * usb_mem.c + * + * based from Emutos / BDOS + * + * Copyright (c) 2001 Lineo, Inc. + * + * Authors: Karl T. Braun, Martin Doering, Laurent Vogel + * + * This file is distributed under the GPL, version 2 or at your + * option any later version. + */ + +#include +#include +#include + +#ifndef FALSE +#define FALSE 0 +#endif +#ifndef TRUE +#define TRUE 1 +#endif + +#define USB_BUFFER_SIZE 0x10000 + +static void *usb_buffer; + +/* MD - Memory Descriptor */ + +#define MD struct _md_ + +MD +{ + MD *m_link; + long m_start; + long m_length; +}; + +/* MPB - Memory Partition Block */ + +#define MPB struct _mpb + +MPB +{ + MD *mp_mfl; + MD *mp_mal; + MD *mp_rover; +}; + +#define MAXMD 100 + +static int count_md; +static MD tab_md[MAXMD]; +static MPB pmd; + +static MD *ffit(long amount, MPB *mp) +{ + MD *p,*q,*p1; /* free list is composed of MD's */ + int maxflg; + long maxval; + if(amount != -1) + { + amount += 15; /* 16 bytes alignment */ + amount &= 0xFFFFFFF0; + } + if((q = mp->mp_rover) == 0) /* get rotating pointer */ + return(0) ; + maxval = 0; + maxflg = (amount == -1 ? TRUE : FALSE) ; + p = q->m_link; /* start with next MD */ + do /* search the list for an MD with enough space */ + { + if(p == 0) + { + /* at end of list, wrap back to start */ + q = (MD *) &mp->mp_mfl; /* q => mfl field */ + p = q->m_link; /* p => 1st MD */ + } + if((!maxflg) && (p->m_length >= amount)) + { + /* big enough */ + if(p->m_length == amount) + q->m_link = p->m_link; /* take the whole thing */ + else + { + /* break it up - 1st allocate a new + MD to describe the remainder */ + if(count_md >= MAXMD) + return(0); + p1 = &tab_md[count_md++]; + /* init new MD */ + p1->m_length = p->m_length - amount; + p1->m_start = p->m_start + amount; + p1->m_link = p->m_link; + p->m_length = amount; /* adjust allocated block */ + q->m_link = p1; + } + /* link allocate block into allocated list, + mark owner of block, & adjust rover */ + p->m_link = mp->mp_mal; + mp->mp_mal = p; + mp->mp_rover = (q == (MD *) &mp->mp_mfl ? q->m_link : q); + return(p); /* got some */ + } + else if(p->m_length > maxval) + maxval = p->m_length; + p = ( q=p )->m_link; + } + while(q != mp->mp_rover); + /* return either the max, or 0 (error) */ + if(maxflg) + { + maxval -= 15; /* 16 bytes alignment */ + if(maxval < 0) + maxval = 0; + else + maxval &= 0xFFFFFFF0; + } + return(maxflg ? (MD *) maxval : 0); +} + +static void freeit(MD *m, MPB *mp) +{ + MD *p, *q; + q = 0; + for(p = mp->mp_mfl; p ; p = (q=p) -> m_link) + { + if(m->m_start <= p->m_start) + break; + } + m->m_link = p; + if(q) + q->m_link = m; + else + mp->mp_mfl = m; + if(!mp->mp_rover) + mp->mp_rover = m; + if(p) + { + if(m->m_start + m->m_length == p->m_start) + { /* join to higher neighbor */ + m->m_length += p->m_length; + m->m_link = p->m_link; + if(p == mp->mp_rover) + mp->mp_rover = m; + if(count_md>=0) + count_md--; + } + } + if(q) + { + if(q->m_start + q->m_length == m->m_start) + { /* join to lower neighbor */ + q->m_length += m->m_length; + q->m_link = m->m_link; + if(m == mp->mp_rover) + mp->mp_rover = q; + if(count_md>=0) + count_md--; + } + } +} + +int usb_free(void *addr) +{ + MD *p,**q; + MPB *mpb; + mpb = &pmd; + if(usb_buffer == NULL) + return(EFAULT); + for(p = *(q = &mpb->mp_mal); p; p = *(q = &p->m_link)) + { + if((long)addr == p->m_start) + break; + } + if(!p) + return(EFAULT); + *q = p->m_link; + freeit(p,mpb); + return(0); +} + +void *usb_malloc(long amount) +{ + MD *m; + if(usb_buffer == NULL) + return(NULL); + if(amount == -1L) + return((void *)ffit(-1L,&pmd)); + if(amount <= 0 ) + return(0); + if((amount & 1)) + amount++; + m = ffit(amount,&pmd); + if(m == NULL) + return(NULL); + return((void *)m->m_start); +} + +int usb_mem_init(void) +{ + usb_buffer = (void *)Mxalloc(USB_BUFFER_SIZE + 16, 0); /* STRAM - cache in writethough */ + if(usb_buffer == NULL) + return(-1); + pmd.mp_mfl = pmd.mp_rover = &tab_md[0]; + tab_md[0].m_link = (MD *)NULL; + tab_md[0].m_start = ((long)usb_buffer + 15) & ~15; + tab_md[0].m_length = USB_BUFFER_SIZE; + pmd.mp_mal = (MD *)NULL; + count_md = 1; + return(0); +} + +void usb_mem_stop(void) +{ + if(usb_buffer != NULL) + Mfree(usb_buffer); +} + diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/usb_storage.c b/BaS_codewarrior/FireBee/trunk/usb/store/usb_storage.c new file mode 100644 index 0000000..e48724e --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/usb_storage.c @@ -0,0 +1,1632 @@ +/* + * Modified for Atari by David Gálvez 2010 + * Modified for Atari by Didier Mequignon 2009 + * + * Most of this source has been derived from the Linux USB + * project: + * (c) 1999-2002 Matthew Dharm (mdharm-usb@one-eyed-alien.net) + * (c) 2000 David L. Brown, Jr. (usb-storage@davidb.org) + * (c) 1999 Michael Gee (michael@linuxspecific.com) + * (c) 2000 Yggdrasil Computing, Inc. + * + * + * Adapted for U-Boot: + * (C) Copyright 2001 Denis Peter, MPL AG Switzerland + * + * For BBB support (C) Copyright 2003 + * Gary Jennejohn, DENX Software Engineering + * + * BBB support based on /sys/dev/usb/umass.c from + * FreeBSD. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + */ + +/* Note: + * Currently only the CBI transport protocoll has been implemented, and it + * is only tested with a TEAC USB Floppy. Other Massstorages with CBI or CB + * transport protocoll may work as well. + */ +/* + * New Note: + * Support for USB Mass Storage Devices (BBB) has been added. It has + * only been tested with USB memory sticks. + */ + +#include "config.h" +#include "usb.h" +#include "scsi.h" +#include "super.h" +#include "debug.h" + +#if defined(CONFIG_USB_UHCI) || defined(CONFIG_USB_OHCI) || defined(CONFIG_USB_EHCI) \ + || defined(CONFIG_USB_ISP116X_HCD) || defined(CONFIG_USB_ARANYM_HCD) +#ifdef CONFIG_USB_STORAGE + +/* + * Extra debug to the one availble in config.h + * These three extra debug levels go always to the log file + * uncomment them if you want them on + */ +//#define USB_STOR_DEBUG +//#define BBB_COMDAT_TRACE +//#define BBB_XPORT_TRACE + + +extern void udelay(long usec); +extern void ltoa(char *buf, long n, unsigned long base); + +/* direction table -- this indicates the direction of the data + * transfer for each command code -- a 1 indicates input + */ +unsigned char us_direction[256/8] = { + 0x28, 0x81, 0x14, 0x14, 0x20, 0x01, 0x90, 0x77, + 0x0C, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +#define US_DIRECTION(x) ((us_direction[x>>3] >> (x & 7)) & 1) + +static unsigned char *usb_stor_buf; +static ccb usb_ccb; + +/* + * CBI style + */ + +#define US_CBI_ADSC 0 + +/* + * BULK only + */ +#define US_BBB_RESET 0xff +#define US_BBB_GET_MAX_LUN 0xfe + +/* Command Block Wrapper */ +typedef struct { + __u32 dCBWSignature; +# define CBWSIGNATURE 0x43425355 + __u32 dCBWTag; + __u32 dCBWDataTransferLength; + __u8 bCBWFlags; +# define CBWFLAGS_OUT 0x00 +# define CBWFLAGS_IN 0x80 + __u8 bCBWLUN; + __u8 bCDBLength; +# define CBWCDBLENGTH 16 + __u8 CBWCDB[CBWCDBLENGTH]; +} umass_bbb_cbw_t; +#define UMASS_BBB_CBW_SIZE 31 +static __u32 CBWTag; + +/* Command Status Wrapper */ +typedef struct { + __u32 dCSWSignature; +# define CSWSIGNATURE 0x53425355 + __u32 dCSWTag; + __u32 dCSWDataResidue; + __u8 bCSWStatus; +# define CSWSTATUS_GOOD 0x0 +# define CSWSTATUS_FAILED 0x1 +# define CSWSTATUS_PHASE 0x2 +} umass_bbb_csw_t; +#define UMASS_BBB_CSW_SIZE 13 + +//#define USB_MAX_STOR_DEV 5 /* GALVEZ: Defined in usb.h */ +static int usb_max_devs; /* number of highest available usb device */ + +static block_dev_desc_t usb_dev_desc[USB_MAX_STOR_DEV]; + +struct us_data; +typedef int (*trans_cmnd)(ccb *cb, struct us_data *data); +typedef int (*trans_reset)(struct us_data *data); + +struct us_data { + struct usb_device *pusb_dev; /* this usb_device */ + + unsigned int flags; /* from filter initially */ + unsigned char ifnum; /* interface number */ + unsigned char ep_in; /* in endpoint */ + unsigned char ep_out; /* out ....... */ + unsigned char ep_int; /* interrupt . */ + unsigned char subclass; /* as in overview */ + unsigned char protocol; /* .............. */ + unsigned char attention_done; /* force attn on first cmd */ + unsigned short ip_data; /* interrupt data */ + int action; /* what to do */ + int ip_wanted; /* needed */ + int *irq_handle; /* for USB int requests */ + unsigned int irqpipe; /* pipe for release_irq */ + unsigned char irqmaxp; /* max packed for irq Pipe */ + unsigned char irqinterval; /* Intervall for IRQ Pipe */ + ccb *srb; /* current srb */ + trans_reset transport_reset; /* reset routine */ + trans_cmnd transport; /* transport routine */ +}; + +static struct us_data usb_stor[USB_MAX_STOR_DEV]; + +#define USB_STOR_TRANSPORT_GOOD 0 +#define USB_STOR_TRANSPORT_FAILED -1 +#define USB_STOR_TRANSPORT_ERROR -2 + +#define DEFAULT_SECTOR_SIZE 512 + +#define DOS_PART_TBL_OFFSET 0x1be +#define DOS_PART_MAGIC_OFFSET 0x1fe +#define DOS_PBR_FSTYPE_OFFSET 0x36 +#define DOS_PBR_MEDIA_TYPE_OFFSET 0x15 +#define DOS_MBR 0 +#define DOS_PBR 1 +#define DOS_FS_TYPE_OFFSET 0x36 + +typedef struct dos_partition { + unsigned char boot_ind; /* 0x80 - active */ + unsigned char head; /* starting head */ + unsigned char sector; /* starting sector */ + unsigned char cyl; /* starting cylinder */ + unsigned char sys_ind; /* What partition type */ + unsigned char end_head; /* end head */ + unsigned char end_sector; /* end sector */ + unsigned char end_cyl; /* end cylinder */ + unsigned char start4[4]; /* starting sector counting from 0 */ + unsigned char size4[4]; /* nr of sectors in partition */ +} dos_partition_t; + +typedef struct disk_partition { + unsigned long type; + unsigned long start; /* # of first block in partition */ + unsigned long size; /* number of blocks in partition */ + unsigned long blksz; /* block size in bytes */ +} disk_partition_t; + +//extern unsigned long swap_long(unsigned long val); +#define le32_to_int(a) swap_32(*(unsigned long *)a) + +int usb_stor_get_info(struct usb_device *dev, struct us_data *us, block_dev_desc_t *dev_desc); +int usb_storage_probe(struct usb_device *dev, unsigned int ifnum, struct us_data *ss); +unsigned long usb_stor_read(int device, unsigned long blknr, unsigned long blkcnt, void *buffer); +unsigned long usb_stor_write(int device, unsigned long blknr, unsigned long blkcnt, const void *buffer); +struct usb_device * usb_get_dev_index(int index); +void uhci_show_temp_int_td(void); + +block_dev_desc_t *usb_stor_get_dev(int idx) +{ + return(idx < USB_MAX_STOR_DEV) ? &usb_dev_desc[idx] : NULL; +} + +void init_part(block_dev_desc_t *dev_desc) +{ + unsigned char *buffer = (unsigned char *)usb_malloc(DEFAULT_SECTOR_SIZE); + if(buffer == NULL) + return; + if((dev_desc->block_read(dev_desc->dev, 0, 1, (unsigned long *)buffer) != 1) + || (buffer[DOS_PART_MAGIC_OFFSET + 0] != 0x55) || (buffer[DOS_PART_MAGIC_OFFSET + 1] != 0xaa)) + { + usb_free(buffer); + return; + } + dev_desc->part_type = PART_TYPE_DOS; + DEBUG_STORAGE("DOS partition table found\r\n"); +#ifdef USB_STOR_DEBUG + { + debug_init("usb.log"); + int j; + for(j = 0; j < 512; j++) + { + if((j & 15) == 0) + debug("\r\n%04X ", j); + debug("%02X ", buffer[j]); + if((j & 15) == 15) + { + int k; + for(k = j-15; k <= j; k++) + { + if(buffer[k] < ' ' || buffer[k] >= 127) + debug("."); + else + debug("%c", buffer[k]); + } + } + } + debug("\r\n"); + debug_exit(); + } +#endif + usb_free(buffer); +} + +static inline int is_extended(int part_type) +{ + return(part_type == 0x5 || part_type == 0xf || part_type == 0x85); +} + +/* Print a partition that is relative to its Extended partition table + */ +static int get_partition_info_extended(block_dev_desc_t *dev_desc, int ext_part_sector, int relative, int part_num, int which_part, disk_partition_t *info) +{ + dos_partition_t *pt; + int i; + unsigned char *buffer = (unsigned char *)usb_malloc(DEFAULT_SECTOR_SIZE); + + if(buffer == NULL) + return -1; + if(dev_desc->block_read(dev_desc->dev, ext_part_sector, 1, (unsigned long *)buffer) != 1) + { + DEBUG_STORAGE("Can't read partition table on %d:%d\r\n", dev_desc->dev, ext_part_sector); + usb_free(buffer); + return -1; + } + if(buffer[DOS_PART_MAGIC_OFFSET] != 0x55 || buffer[DOS_PART_MAGIC_OFFSET + 1] != 0xaa) + { + DEBUG_STORAGE("bad MBR sector signature 0x%02x%02x\n", buffer[DOS_PART_MAGIC_OFFSET], buffer[DOS_PART_MAGIC_OFFSET + 1]); + usb_free(buffer); + return -1; + } + /* Print all primary/logical partitions */ + pt = (dos_partition_t *)(buffer + DOS_PART_TBL_OFFSET); + for(i = 0; i < 4; i++, pt++) + { + /* fdisk does not show the extended partitions that are not in the MBR */ + if((pt->sys_ind != 0) && (part_num == which_part) && (is_extended(pt->sys_ind) == 0)) + { + info->type = (unsigned long)pt->sys_ind; + info->blksz = 512; + info->start = ext_part_sector + le32_to_int(pt->start4); + info->size = le32_to_int(pt->size4); + DEBUG_STORAGE("DOS partition at offset 0x%lx, size 0x%lx, type 0x%x %s\r\n", + info->start, info->size, pt->sys_ind, + (is_extended(pt->sys_ind) ? " Extd" : "")); + usb_free(buffer); + return 0; + } + /* Reverse engr the fdisk part# assignment rule! */ + if((ext_part_sector == 0) || (pt->sys_ind != 0 && !is_extended (pt->sys_ind))) + part_num++; + } + /* Follows the extended partitions */ + pt = (dos_partition_t *)(buffer + DOS_PART_TBL_OFFSET); + for(i = 0; i < 4; i++, pt++) + { + if(is_extended(pt->sys_ind)) + { + int lba_start = le32_to_int(pt->start4) + relative; + usb_free(buffer); + return get_partition_info_extended(dev_desc, lba_start, ext_part_sector == 0 ? lba_start : relative, part_num, which_part, info); + } + } + usb_free(buffer); + return -1; +} + +int fat_register_device(block_dev_desc_t *dev_desc, int part_no, unsigned long *part_type, unsigned long *part_offset, unsigned long *part_size) +{ + unsigned char *buffer; + disk_partition_t info; + + if(!dev_desc->block_read) + return -1; + + buffer = (unsigned char *)usb_malloc(DEFAULT_SECTOR_SIZE); + if(buffer == NULL) + return -1; + /* check if we have a MBR (on floppies we have only a PBR) */ + + if(dev_desc->block_read(dev_desc->dev, 0, 1, (unsigned long *)buffer) != 1) + { + DEBUG_STORAGE("Can't read from device %d\r\n", dev_desc->dev); + usb_free(buffer); + return -1; + } + + if(buffer[DOS_PART_MAGIC_OFFSET] != 0x55 || buffer[DOS_PART_MAGIC_OFFSET + 1] != 0xaa) + { + /* no signature found */ + usb_free(buffer); + return -1; + } + + /* First we assume, there is a MBR */ + if(!get_partition_info_extended(dev_desc, 0, 0, 1, part_no, &info)) + { + *part_type = info.type; + *part_offset = info.start; + *part_size = info.size; + } + else if(!strncmp((char *)&buffer[DOS_FS_TYPE_OFFSET], "FAT", 3)) + { + /* ok, we assume we are on a PBR only */ + *part_type = 0; + *part_offset = 0; + *part_size = 0; + } + else + { + DEBUG_STORAGE("Partition %d not valid on device %d\r\n", part_no, dev_desc->dev); + usb_free(buffer); + return -1; + } + usb_free(buffer); + return 0; +} + +#if defined(CONFIG_USB_OHCI) || defined(CONFIG_USB_ISP116X_HCD) || defined(CONFIG_USB_ARANYM_HCD) + +void dev_print(block_dev_desc_t *dev_desc) +{ +#ifdef CONFIG_LBA48 + uint64_t lba512; /* number of blocks if 512bytes block size */ +#else + lbaint_t lba512; +#endif + if(dev_desc->type == DEV_TYPE_UNKNOWN) + { + printf("not available\r\n"); + DEBUG_STORAGE("not available\r\n"); + return; + } + DEBUG_STORAGE("Vendor: %s Rev: %s Prod: %s\r\n", dev_desc->vendor, dev_desc->revision, dev_desc->product); + DEBUG_STORAGE("\r\n"); + printf("Vendor: %s Rev: %s Prod: %s\r\n", dev_desc->vendor, dev_desc->revision, dev_desc->product); + printf("\r\n"); + if((dev_desc->lba * dev_desc->blksz) > 0L) + { + unsigned long mb, mb_quot, mb_rem, gb, gb_quot, gb_rem; + lbaint_t lba = dev_desc->lba; + lba512 = (lba * (dev_desc->blksz / 512)); + mb = (10 * lba512) / 2048; /* 2048 = (1024 * 1024) / 512 MB */ + /* round to 1 digit */ + mb_quot = mb / 10; + mb_rem = mb - (10 * mb_quot); + gb = mb / 1024; + gb_quot = gb / 10; + gb_rem = gb - (10 * gb_quot); +#ifdef CONFIG_LBA48 + if(dev_desc->lba48) + printf("Supports 48-bit addressing\r\n"); +#endif + DEBUG_STORAGE("Capacity: %ld.%ld MB = %ld.%ld GB (%ld x %ld)\r\n", mb_quot, mb_rem, gb_quot, gb_rem, (unsigned long)lba, dev_desc->blksz); + printf("Capacity: %ld.%ld MB = %ld.%ld GB (%ld x %ld)\r\n", mb_quot, mb_rem, gb_quot, gb_rem, (unsigned long)lba, dev_desc->blksz); + } + else { + DEBUG_STORAGE("Capacity: not available\r\n"); + printf("Capacity: not available\r\n"); + } +} + +/******************************************************************************* + * show info on storage devices; 'usb start/init' must be invoked earlier + * as we only retrieve structures populated during devices initialization + */ +int usb_stor_info(void) +{ + int i; + if(usb_max_devs > 0) + { + for(i = 0; i < usb_max_devs; i++) + { + DEBUG_STORAGE("Device %d: ", i); + printf("Device %d: ", i); + dev_print(&usb_dev_desc[i]); + } + return 0; + } + DEBUG_STORAGE("No storage devices\r\n"); + printf("No storage devices\r\n"); + return 1; +} + +#endif /* CONFIG_USB_OHCI */ + +/******************************************************************************* + * scan the usb and reports device info to the user + * returns current device or -1 if no + */ +int usb_stor_scan(void) +{ + unsigned char i; + struct usb_device *dev; + DEBUG_STORAGE("usb_stor_scan()"); /* Galvez: Debug trace */ + if(usb_stor_buf == NULL) + usb_stor_buf = (unsigned char *)usb_malloc(512); + if(usb_stor_buf == NULL) + return -1; + memset(usb_stor_buf, 0, sizeof(usb_stor_buf)); + usb_disable_asynch(1); /* asynch transfer not allowed */ + for(i = 0; i < USB_MAX_STOR_DEV; i++) + { + memset(&usb_dev_desc[i], 0, sizeof(block_dev_desc_t)); + usb_dev_desc[i].target = 0xff; + usb_dev_desc[i].if_type = IF_TYPE_USB; + usb_dev_desc[i].dev = i; + usb_dev_desc[i].part_type = PART_TYPE_UNKNOWN; + usb_dev_desc[i].block_read = usb_stor_read; + usb_dev_desc[i].block_write = usb_stor_write; + } + usb_max_devs = 0; + for(i = 0; i < USB_MAX_DEVICE; i++) + { + dev = usb_get_dev_index(i); /* get device */ + if(dev == NULL) + break; /* no more devices avaiable */ + DEBUG_STORAGE("Device %d\r\n", i); + if(usb_storage_probe(dev, 0, &usb_stor[usb_max_devs])) + { + /* ok, it is a storage devices + * get info and fill it in + */ + if(usb_stor_get_info(dev, &usb_stor[usb_max_devs], &usb_dev_desc[usb_max_devs])) + usb_max_devs++; + } + /* if storage device */ + if(usb_max_devs == USB_MAX_STOR_DEV) + { + printf("Max USB Storage Device reached: %d stopping\r\n", usb_max_devs); + break; + } + } /* for */ + usb_disable_asynch(0); /* asynch transfer allowed */ + DEBUG_STORAGE("%d Storage Device(s) found\r\n", usb_max_devs); + printf("%d Storage Device(s) found\r\n", usb_max_devs); + if(usb_max_devs > 0) + return 0; + return -1; +} + +static int usb_stor_irq(struct usb_device *dev) +{ + struct us_data *us; + us = (struct us_data *)dev->privptr; + if(us->ip_wanted) + us->ip_wanted = 0; + return 0; +} + +#ifdef USB_STOR_DEBUG + +static void usb_show_srb(ccb *pccb) +{ + int i; + debug_init("usb.log"); + debug("SRB: len %d datalen 0x%lX\r\n ", pccb->cmdlen, pccb->datalen); + for (i = 0; i < 12; i++) + debug("%02X ", pccb->cmd[i]); + debug("\r\n"); + debug_exit(); +} + +static void display_int_status(unsigned long tmp) +{ + debug_init("usb.log"); + debug("Status: %s %s %s %s %s %s %s\r\n", + (tmp & USB_ST_ACTIVE) ? "Active" : "", + (tmp & USB_ST_STALLED) ? "Stalled" : "", + (tmp & USB_ST_BUF_ERR) ? "Buffer Error" : "", + (tmp & USB_ST_BABBLE_DET) ? "Babble Det" : "", + (tmp & USB_ST_NAK_REC) ? "NAKed" : "", + (tmp & USB_ST_CRC_ERR) ? "CRC Error" : "", + (tmp & USB_ST_BIT_ERR) ? "Bitstuff Error" : ""); + debug_exit(); +} + +#endif + +/*********************************************************************** + * Data transfer routines + ***********************************************************************/ + +static int us_one_transfer(struct us_data *us, int pipe, char *buf, int length) +{ + int max_size; + int this_xfer; + int result; + int partial; + int maxtry; + int stat; + /* determine the maximum packet size for these transfers */ + max_size = usb_maxpacket(us->pusb_dev, pipe) * 16; + /* while we have data left to transfer */ + while(length) + { + /* calculate how long this will be -- maximum or a remainder */ + this_xfer = length > max_size ? max_size : length; + length -= this_xfer; + /* setup the retry counter */ + maxtry = 10; + /* set up the transfer loop */ + do + { + /* transfer the data */ + DEBUG_STORAGE("Bulk xfer 0x%x(%d) try #%d\r\n", (unsigned int)buf, this_xfer, 11 - maxtry); + result = usb_bulk_msg(us->pusb_dev, pipe, buf, this_xfer, &partial, USB_CNTL_TIMEOUT * 5); + DEBUG_STORAGE("bulk_msg returned %d xferred %d/%d\r\n", result, partial, this_xfer); + if(us->pusb_dev->status != 0) + { + /* if we stall, we need to clear it before we go on */ +#ifdef USB_STOR_DEBUG + display_int_status(us->pusb_dev->status); +#endif + if(us->pusb_dev->status & USB_ST_STALLED) + { + DEBUG_STORAGE("stalled ->clearing endpoint halt for pipe 0x%x\r\n", pipe); + stat = us->pusb_dev->status; + usb_clear_halt(us->pusb_dev, pipe); + us->pusb_dev->status = stat; + if(this_xfer == partial) + { + DEBUG_STORAGE("bulk transferred with error %lX, but data ok\r\n", us->pusb_dev->status); + return 0; + } + else + return result; + } + if(us->pusb_dev->status & USB_ST_NAK_REC) + { + DEBUG_STORAGE("Device NAKed bulk_msg\r\n"); + return result; + } + DEBUG_STORAGE("bulk transferred with error"); + if(this_xfer == partial) + { + DEBUG_STORAGE(" %ld, but data ok\r\n", us->pusb_dev->status); + return 0; + } + /* if our try counter reaches 0, bail out */ + DEBUG_STORAGE(" %ld, data %d\r\n", us->pusb_dev->status, partial); + if(!maxtry--) + return result; + } + /* update to show what data was transferred */ + this_xfer -= partial; + buf += partial; + /* continue until this transfer is done */ + } while (this_xfer); + } + /* if we get here, we're done and successful */ + return 0; +} + +static int usb_stor_BBB_reset(struct us_data *us) +{ + int result; + unsigned int pipe; + /* + * Reset recovery (5.3.4 in Universal Serial Bus Mass Storage Class) + * + * For Reset Recovery the host shall issue in the following order: + * a) a Bulk-Only Mass Storage Reset + * b) a Clear Feature HALT to the Bulk-In endpoint + * c) a Clear Feature HALT to the Bulk-Out endpoint + * + * This is done in 3 steps. + * + * If the reset doesn't succeed, the device should be port reset. + * + * This comment stolen from FreeBSD's /sys/dev/usb/umass.c. + */ + DEBUG_STORAGE("BBB_reset\r\n"); + result = usb_control_msg(us->pusb_dev, usb_sndctrlpipe(us->pusb_dev, 0), + US_BBB_RESET, USB_TYPE_CLASS | USB_RECIP_INTERFACE, 0, us->ifnum, 0, 0, USB_CNTL_TIMEOUT * 5); + if((result < 0) && (us->pusb_dev->status & USB_ST_STALLED)) + { + DEBUG_STORAGE("RESET:stall\r\n"); + return -1; + } + /* long wait for reset */ + wait_ms(150); + DEBUG_STORAGE("BBB_reset result %d: status %lX reset\r\n", result, us->pusb_dev->status); + pipe = usb_rcvbulkpipe(us->pusb_dev, us->ep_in); + result = usb_clear_halt(us->pusb_dev, pipe); + /* long wait for reset */ + wait_ms(150); + DEBUG_STORAGE("BBB_reset result %d: status %lX clearing IN endpoint\r\n", result, us->pusb_dev->status); + /* long wait for reset */ + pipe = usb_sndbulkpipe(us->pusb_dev, us->ep_out); + result = usb_clear_halt(us->pusb_dev, pipe); + wait_ms(150); + DEBUG_STORAGE("BBB_reset result %d: status %lX clearing OUT endpoint\r\n", result, us->pusb_dev->status); + DEBUG_STORAGE("BBB_reset done\r\n"); + return 0; +} + +/* FIXME: this reset function doesn't really reset the port, and it + * should. Actually it should probably do what it's doing here, and + * reset the port physically + */ +static int usb_stor_CB_reset(struct us_data *us) +{ + unsigned char cmd[12]; + int result; + DEBUG_STORAGE("CB_reset\r\n"); + memset(cmd, 0xff, sizeof(cmd)); + cmd[0] = SCSI_SEND_DIAG; + cmd[1] = 4; + result = usb_control_msg(us->pusb_dev, usb_sndctrlpipe(us->pusb_dev, 0), + US_CBI_ADSC, USB_TYPE_CLASS | USB_RECIP_INTERFACE, 0, us->ifnum, cmd, sizeof(cmd), USB_CNTL_TIMEOUT * 5); + /* long wait for reset */ + wait_ms(1500); + DEBUG_STORAGE("CB_reset result %d: status %lX clearing endpoint halt\r\n", result, us->pusb_dev->status); + usb_clear_halt(us->pusb_dev, usb_rcvbulkpipe(us->pusb_dev, us->ep_in)); + usb_clear_halt(us->pusb_dev, usb_rcvbulkpipe(us->pusb_dev, us->ep_out)); + DEBUG_STORAGE("CB_reset done\r\n"); + return 0; +} + +/* + * Set up the command for a BBB device. Note that the actual SCSI + * command is copied into cbw.CBWCDB. + */ +int usb_stor_BBB_comdat(ccb *srb, struct us_data *us) +{ + int result; + int actlen; + int dir_in; + unsigned int pipe; + umass_bbb_cbw_t *cbw = (umass_bbb_cbw_t *)usb_malloc(sizeof(umass_bbb_cbw_t)); + if(cbw == NULL) + { + DEBUG_STORAGE("usb_stor_BBB_comdat: out of memory\r\n"); + return -1; + } + dir_in = US_DIRECTION(srb->cmd[0]); + DEBUG_STORAGE("usb_stor_BBB_comdat: dir_in: %d\r\n",dir_in); +#ifdef BBB_COMDAT_TRACE + debug_init ("usb.log"); + debug("dir %d lun %d cmdlen %d cmd %p datalen %d pdata %p\r\n", dir_in, srb->lun, srb->cmdlen, srb->cmd, srb->datalen, srb->pdata); + if(srb->cmdlen) + { + for(result = 0; result < srb->cmdlen; result++) + debug("cmd[%d] %#x ", result, srb->cmd[result]); + debug("\r\n"); + } + debug_exit( ); +#endif + /* sanity checks */ + if(!(srb->cmdlen <= CBWCDBLENGTH)) + { + DEBUG_STORAGE("usb_stor_BBB_comdat: cmdlen too large\r\n"); + usb_free(cbw); + return -1; + } + /* always OUT to the ep */ + pipe = usb_sndbulkpipe(us->pusb_dev, us->ep_out); + cbw->dCBWSignature = cpu_to_le32(CBWSIGNATURE); + cbw->dCBWTag = cpu_to_le32(CBWTag++); + cbw->dCBWDataTransferLength = cpu_to_le32(srb->datalen); + cbw->bCBWFlags = (dir_in ? CBWFLAGS_IN : CBWFLAGS_OUT); + cbw->bCBWLUN = srb->lun; + cbw->bCDBLength = srb->cmdlen; + /* copy the command data into the CBW command data buffer */ + /* DST SRC LEN!!! */ + memcpy(&cbw->CBWCDB, srb->cmd, srb->cmdlen); + + result = usb_bulk_msg(us->pusb_dev, pipe, cbw, UMASS_BBB_CBW_SIZE, &actlen, USB_CNTL_TIMEOUT * 5); + if(result < 0) + { DEBUG_STORAGE("usb_stor_BBB_comdat:usb_bulk_msg error\r\n");} + usb_free(cbw); + return result; +} + +/* FIXME: we also need a CBI_command which sets up the completion + * interrupt, and waits for it + */ +int usb_stor_CB_comdat(ccb *srb, struct us_data *us) +{ + int result = 0; + int dir_in, retry; + unsigned int pipe; + unsigned long status; + retry = 5; + dir_in = US_DIRECTION(srb->cmd[0]); + if(dir_in) + pipe = usb_rcvbulkpipe(us->pusb_dev, us->ep_in); + else + pipe = usb_sndbulkpipe(us->pusb_dev, us->ep_out); + while(retry--) + { + DEBUG_STORAGE("CBI gets a command: Try %d\r\n", 5 - retry); +#ifdef USB_STOR_DEBUG + usb_show_srb(srb); +#endif + /* let's send the command via the control pipe */ + result = usb_control_msg(us->pusb_dev, usb_sndctrlpipe(us->pusb_dev , 0), + US_CBI_ADSC, USB_TYPE_CLASS | USB_RECIP_INTERFACE, 0, us->ifnum, srb->cmd, srb->cmdlen, USB_CNTL_TIMEOUT * 5); + DEBUG_STORAGE("CB_transport: control msg returned %d, status %lX\r\n", result, us->pusb_dev->status); + /* check the return code for the command */ + if(result < 0) + { + if(us->pusb_dev->status & USB_ST_STALLED) + { + status = us->pusb_dev->status; + DEBUG_STORAGE(" stall during command found, clear pipe\r\n"); + usb_clear_halt(us->pusb_dev, usb_sndctrlpipe(us->pusb_dev, 0)); + us->pusb_dev->status = status; + } + DEBUG_STORAGE(" error during command %02X Stat = %lX\r\n", srb->cmd[0], us->pusb_dev->status); + return result; + } + /* transfer the data payload for this command, if one exists*/ + DEBUG_STORAGE("CB_transport: control msg returned %d, direction is %s to go 0x%lx\r\n", result, dir_in ? "IN" : "OUT", srb->datalen); + if(srb->datalen) + { + result = us_one_transfer(us, pipe, (char *)srb->pdata, srb->datalen); + DEBUG_STORAGE("CBI attempted to transfer data, result is %d status %lX, len %d\r\n", result, us->pusb_dev->status, us->pusb_dev->act_len); + if(!(us->pusb_dev->status & USB_ST_NAK_REC)) + break; + } /* if(srb->datalen) */ + else + break; + } + /* return result */ + return result; +} + +int usb_stor_CBI_get_status(ccb *srb, struct us_data *us) +{ + int timeout; + us->ip_wanted = 1; + submit_int_msg(us->pusb_dev, us->irqpipe, (void *) &us->ip_data, us->irqmaxp, us->irqinterval); + timeout = 1000; + while(timeout--) + { + if((volatile int *) us->ip_wanted == 0) + break; + wait_ms(10); + } + if(us->ip_wanted) + { + DEBUG_STORAGE("Did not get interrupt on CBI\r\n"); + printf("Did not get interrupt on CBI\r\n"); + us->ip_wanted = 0; + return USB_STOR_TRANSPORT_ERROR; + } + DEBUG_STORAGE("Got interrupt data 0x%x, transfered %d status 0x%lX\r\n", us->ip_data, us->pusb_dev->irq_act_len, us->pusb_dev->irq_status); + /* UFI gives us ASC and ASCQ, like a request sense */ + if(us->subclass == US_SC_UFI) + { + if(srb->cmd[0] == SCSI_REQ_SENSE || srb->cmd[0] == SCSI_INQUIRY) + return USB_STOR_TRANSPORT_GOOD; /* Good */ + else if(us->ip_data) + return USB_STOR_TRANSPORT_FAILED; + else + return USB_STOR_TRANSPORT_GOOD; + } + /* otherwise, we interpret the data normally */ + switch(us->ip_data) + { + case 0x0001: return USB_STOR_TRANSPORT_GOOD; + case 0x0002: return USB_STOR_TRANSPORT_FAILED; + default: return USB_STOR_TRANSPORT_ERROR; + } + return USB_STOR_TRANSPORT_ERROR; +} + +#define USB_TRANSPORT_UNKNOWN_RETRY 5 +#define USB_TRANSPORT_NOT_READY_RETRY 10 + +/* clear a stall on an endpoint - special for BBB devices */ +int usb_stor_BBB_clear_endpt_stall(struct us_data *us, __u8 endpt) +{ + int result; + /* ENDPOINT_HALT = 0, so set value to 0 */ + result = usb_control_msg(us->pusb_dev, usb_sndctrlpipe(us->pusb_dev, 0), + USB_REQ_CLEAR_FEATURE, USB_RECIP_ENDPOINT, 0, endpt, 0, 0, USB_CNTL_TIMEOUT * 5); + return result; +} + +int usb_stor_BBB_transport(ccb *srb, struct us_data *us) +{ + int result, retry; + int dir_in; + int actlen, data_actlen; + unsigned int pipe, pipein, pipeout; +// DEBUG_STORAGE ( ); /* GALVEZ: DEBUG */ +#ifdef BBB_XPORT_TRACE + unsigned char *ptr; + int idx; +#endif + umass_bbb_csw_t *csw = (umass_bbb_csw_t *)usb_malloc(sizeof(umass_bbb_csw_t)); + if(csw == NULL) + { + DEBUG_STORAGE("out of memory\r\n"); + return USB_STOR_TRANSPORT_FAILED; + } + dir_in = US_DIRECTION(srb->cmd[0]); + /* COMMAND phase */ + DEBUG_STORAGE("COMMAND phase\n"); + result = usb_stor_BBB_comdat(srb, us); + if(result < 0) + { + DEBUG_STORAGE("failed to send CBW status %ld\r\n", us->pusb_dev->status); + usb_stor_BBB_reset(us); + usb_free(csw); + return USB_STOR_TRANSPORT_FAILED; + } + wait_ms(5); + pipein = usb_rcvbulkpipe(us->pusb_dev, us->ep_in); + pipeout = usb_sndbulkpipe(us->pusb_dev, us->ep_out); + /* DATA phase + error handling */ + data_actlen = 0; + /* no data, go immediately to the STATUS phase */ + if(srb->datalen == 0) + goto st; + DEBUG_STORAGE("DATA phase\n"); + if(dir_in) + pipe = pipein; + else + pipe = pipeout; + result = usb_bulk_msg(us->pusb_dev, pipe, srb->pdata, srb->datalen, &data_actlen, USB_CNTL_TIMEOUT * 5); + /* special handling of STALL in DATA phase */ + if((result < 0) && (us->pusb_dev->status & USB_ST_STALLED)) + { + DEBUG_STORAGE("DATA:stall\r\n"); + /* clear the STALL on the endpoint */ + result = usb_stor_BBB_clear_endpt_stall(us, dir_in ? us->ep_in : us->ep_out); + if(result >= 0) + /* continue on to STATUS phase */ + goto st; + } + if(result < 0) + { + DEBUG_STORAGE("usb_bulk_msg error status %ld\r\n", us->pusb_dev->status); + usb_stor_BBB_reset(us); + usb_free(csw); + return USB_STOR_TRANSPORT_FAILED; + } +#ifdef BBB_XPORT_TRACE + debug_init("usb.log"); + for(idx = 0; idx < data_actlen; idx++) + debug("pdata[%d] %#x ", idx, srb->pdata[idx]); + debug("\r\n"); + debug_exit( ); +#endif + /* STATUS phase + error handling */ +st: + retry = 0; +again: + DEBUG_STORAGE("STATUS phase\n"); + result = usb_bulk_msg(us->pusb_dev, pipein, csw, UMASS_BBB_CSW_SIZE, &actlen, USB_CNTL_TIMEOUT*5); + /* special handling of STALL in STATUS phase */ + + if((result < 0) && (retry < 1) && (us->pusb_dev->status & USB_ST_STALLED)) + { + DEBUG_STORAGE("STATUS:stall\r\n"); + /* clear the STALL on the endpoint */ + result = usb_stor_BBB_clear_endpt_stall(us, us->ep_in); + if(result >= 0 && (retry++ < 1)) + /* do a retry */ + goto again; + } + + if(result < 0) + { + DEBUG_STORAGE("usb_bulk_msg error status %ld\r\n", us->pusb_dev->status); + usb_stor_BBB_reset(us); + usb_free(csw); + return USB_STOR_TRANSPORT_FAILED; + } +#ifdef BBB_XPORT_TRACE + debug_init("usb.log"); + ptr = (unsigned char *)csw; + for(idx = 0; idx < UMASS_BBB_CSW_SIZE; idx++) + debug("ptr[%d] %#x ", idx, ptr[idx]); + debug("\r\n"); + debug_exit( ); +#endif + /* misuse pipe to get the residue */ + pipe = le32_to_cpu(csw->dCSWDataResidue); + if(pipe == 0 && srb->datalen != 0 && srb->datalen - data_actlen != 0) + pipe = srb->datalen - data_actlen; + if(CSWSIGNATURE != le32_to_cpu(csw->dCSWSignature)) + { + DEBUG_STORAGE("!CSWSIGNATURE\r\n"); + usb_stor_BBB_reset(us); + usb_free(csw); + return USB_STOR_TRANSPORT_FAILED; + } + else if((CBWTag - 1) != le32_to_cpu(csw->dCSWTag)) + { + DEBUG_STORAGE("!Tag\r\n"); + usb_stor_BBB_reset(us); + usb_free(csw); + return USB_STOR_TRANSPORT_FAILED; + } + else if(csw->bCSWStatus > CSWSTATUS_PHASE) + { + DEBUG_STORAGE(">PHASE\r\n"); + usb_stor_BBB_reset(us); + usb_free(csw); + return USB_STOR_TRANSPORT_FAILED; + } + else if(csw->bCSWStatus == CSWSTATUS_PHASE) + { + DEBUG_STORAGE("=PHASE\r\n"); + usb_stor_BBB_reset(us); + usb_free(csw); + return USB_STOR_TRANSPORT_FAILED; + } + else if(data_actlen > srb->datalen) + { + DEBUG_STORAGE("transferred %dB instead of %ldB\r\n", data_actlen, srb->datalen); + usb_free(csw); + return USB_STOR_TRANSPORT_FAILED; + } + else if(csw->bCSWStatus == CSWSTATUS_FAILED) + { +// printf("FAILED\r\n"); /* GALVEZ: DEBUG */ + DEBUG_STORAGE("FAILED\r\n"); + usb_free(csw); + return USB_STOR_TRANSPORT_FAILED; + } + usb_free(csw);; + return result; +} + +int usb_stor_CB_transport(ccb *srb, struct us_data *us) +{ + int result, status; + ccb *psrb; + ccb reqsrb; + int retry, notready; + psrb = &reqsrb; + status = USB_STOR_TRANSPORT_GOOD; + retry = 0; + notready = 0; + /* issue the command */ +do_retry: + result = usb_stor_CB_comdat(srb, us); + DEBUG_STORAGE("command / Data returned %d, status %lX\r\n", result, us->pusb_dev->status); + /* if this is an CBI Protocol, get IRQ */ + if(us->protocol == US_PR_CBI) + { + status = usb_stor_CBI_get_status(srb, us); + /* if the status is error, report it */ + if(status == USB_STOR_TRANSPORT_ERROR) + { + DEBUG_STORAGE(" USB CBI Command Error\r\n"); + return status; + } + srb->sense_buf[12] = (unsigned char)(us->ip_data >> 8); + srb->sense_buf[13] = (unsigned char)(us->ip_data & 0xff); + if(!us->ip_data) + { + /* if the status is good, report it */ + if(status == USB_STOR_TRANSPORT_GOOD) + { + DEBUG_STORAGE(" USB CBI Command Good\r\n"); + return status; + } + } + } + /* do we have to issue an auto request? */ + /* HERE we have to check the result */ + if((result < 0) && !(us->pusb_dev->status & USB_ST_STALLED)) + { + DEBUG_STORAGE("ERROR %lX\r\n", us->pusb_dev->status); + us->transport_reset(us); + return USB_STOR_TRANSPORT_ERROR; + } + if((us->protocol == US_PR_CBI) && ((srb->cmd[0] == SCSI_REQ_SENSE) || (srb->cmd[0] == SCSI_INQUIRY))) + { + /* do not issue an autorequest after request sense */ + DEBUG_STORAGE("No auto request and good\r\n"); + return USB_STOR_TRANSPORT_GOOD; + } + /* issue an request_sense */ + memset(&psrb->cmd[0], 0, 12); + psrb->cmd[0] = SCSI_REQ_SENSE; + psrb->cmd[1] = srb->lun << 5; + psrb->cmd[4] = 18; + psrb->datalen = 18; + psrb->pdata = &srb->sense_buf[0]; + psrb->cmdlen = 12; + /* issue the command */ + result = usb_stor_CB_comdat(psrb, us); + DEBUG_STORAGE("auto request returned %d\r\n", result); + /* if this is an CBI Protocol, get IRQ */ + if(us->protocol == US_PR_CBI) + status = usb_stor_CBI_get_status(psrb, us); + if((result < 0) && !(us->pusb_dev->status & USB_ST_STALLED)) + { + DEBUG_STORAGE(" AUTO REQUEST ERROR %ld\r\n", us->pusb_dev->status); + return USB_STOR_TRANSPORT_ERROR; + } + DEBUG_STORAGE("autorequest returned 0x%02X 0x%02X 0x%02X 0x%02X\r\n", srb->sense_buf[0], srb->sense_buf[2], srb->sense_buf[12], srb->sense_buf[13]); + /* Check the auto request result */ + if((srb->sense_buf[2] == 0) && (srb->sense_buf[12] == 0) && (srb->sense_buf[13] == 0)) + { + /* ok, no sense */ + return USB_STOR_TRANSPORT_GOOD; + } + /* Check the auto request result */ + switch(srb->sense_buf[2]) + { + case 0x01: + /* Recovered Error */ + return USB_STOR_TRANSPORT_GOOD; + case 0x02: /* Not Ready */ + if(notready++ > USB_TRANSPORT_NOT_READY_RETRY) + { + DEBUG_STORAGE("cmd 0x%02X returned 0x%02X 0x%02X 0x%02X 0x%02X (NOT READY)\r\n", srb->cmd[0], srb->sense_buf[0], srb->sense_buf[2], srb->sense_buf[12], srb->sense_buf[13]); + return USB_STOR_TRANSPORT_FAILED; + } + else + { + wait_ms(100); + goto do_retry; + } + break; + default: + if(retry++ > USB_TRANSPORT_UNKNOWN_RETRY) + { + DEBUG_STORAGE("cmd 0x%02X returned 0x%02X 0x%02X 0x%02X 0x%02X\r\n", + srb->cmd[0], srb->sense_buf[0], srb->sense_buf[2], + srb->sense_buf[12], srb->sense_buf[13]); + return USB_STOR_TRANSPORT_FAILED; + } + else + goto do_retry; + break; + } + return USB_STOR_TRANSPORT_FAILED; +} + +static int usb_inquiry(ccb *srb, struct us_data *ss) +{ + DEBUG_STORAGE ("usb_inquiry()"); /* GALVEZ: DEBUG */ + + int retry, i; + retry = 5; + do + { + memset(&srb->cmd[0], 0, 12); + srb->cmd[0] = SCSI_INQUIRY; + srb->cmd[4] = 36; + srb->datalen = 36; + srb->cmdlen = 12; + i = ss->transport(srb, ss); + DEBUG_STORAGE("inquiry returns %d\r\n", i); + if(i == 0) + break; + } + while(retry--); + if(!retry) + { + DEBUG_STORAGE("error in inquiry\r\n"); + printf("error in inquiry\r\n"); + return -1; + } + return 0; +} + +static int usb_request_sense(ccb *srb, struct us_data *ss) +{ + DEBUG_STORAGE("usb_request_sense()"); /* GALVEZ: DEBUG */ + char *ptr; + ptr = (char *)srb->pdata; + memset(&srb->cmd[0], 0, /*12*/6); /* GALVEZ: DEBUG: DEFAULT 12 */ + srb->cmd[0] = SCSI_REQ_SENSE; + srb->cmd[4] = 18; + srb->datalen = 18; + srb->pdata = &srb->sense_buf[0]; + srb->cmdlen = /*12*/6; /* GALVEZ: DEBUG: DEFAULT 12 */ + ss->transport(srb, ss); + DEBUG_STORAGE("Request Sense returned %02X %02X %02X\r\n", srb->sense_buf[2], srb->sense_buf[12], srb->sense_buf[13]); + srb->pdata = (unsigned char *)ptr; + return 0; +} + +static int usb_test_unit_ready(ccb *srb, struct us_data *ss) +{ + int retries = 10; + DEBUG_STORAGE("usb_test_unit_ready()"); /* GALVEZ: DEBUG */ + do + { + memset(&srb->cmd[0], 0, /*12*/ 6); /* GALVEZ: DEBUG: DEFAULT 12 */ + srb->cmd[0] = SCSI_TST_U_RDY; + srb->datalen = 0; + srb->cmdlen = /*12*/ 6; /* GALVEZ: DEBUG: DEFAULT 12 */ + if(ss->transport(srb, ss) == USB_STOR_TRANSPORT_GOOD) + return 0; + usb_request_sense(srb, ss); + wait_ms(100); + } + while(retries--); + return -1; +} + +static int usb_read_capacity(ccb *srb, struct us_data *ss) +{ + int retry; + /* XXX retries */ + retry = 3; + DEBUG_STORAGE("usb_read_capacity()"); /* GALVEZ: DEBUG */ + do + { + memset(&srb->cmd[0], 0, 12); + srb->cmd[0] = SCSI_RD_CAPAC; + srb->datalen = 8; + srb->cmdlen = 12; + if(ss->transport(srb, ss) == USB_STOR_TRANSPORT_GOOD) + return 0; + } + while(retry--); + return -1; +} + +static int usb_read_10(ccb *srb, struct us_data *ss, unsigned long start, unsigned short blocks) +{ + memset(&srb->cmd[0], 0, 12); + srb->cmd[0] = SCSI_READ10; + srb->cmd[2] = ((unsigned char) (start >> 24)) & 0xff; + srb->cmd[3] = ((unsigned char) (start >> 16)) & 0xff; + srb->cmd[4] = ((unsigned char) (start >> 8)) & 0xff; + srb->cmd[5] = ((unsigned char) (start)) & 0xff; + srb->cmd[7] = ((unsigned char) (blocks >> 8)) & 0xff; + srb->cmd[8] = (unsigned char) blocks & 0xff; + srb->cmdlen = 12; + DEBUG_STORAGE("read10: start %lx blocks %x\r\n", start, blocks); + return ss->transport(srb, ss); +} + +static int usb_write_10(ccb *srb, struct us_data *ss, unsigned long start, unsigned short blocks) +{ + memset(&srb->cmd[0], 0, 12); + srb->cmd[0] = SCSI_WRITE10; + srb->cmd[2] = ((unsigned char) (start >> 24)) & 0xff; + srb->cmd[3] = ((unsigned char) (start >> 16)) & 0xff; + srb->cmd[4] = ((unsigned char) (start >> 8)) & 0xff; + srb->cmd[5] = ((unsigned char) (start)) & 0xff; + srb->cmd[7] = ((unsigned char) (blocks >> 8)) & 0xff; + srb->cmd[8] = (unsigned char) blocks & 0xff; + srb->cmdlen = 12; + DEBUG_STORAGE("write10: start %lx blocks %x\r\n", start, blocks); + return ss->transport(srb, ss); +} + +#ifdef CONFIG_USB_BIN_FIXUP +/* + * Some USB storage devices queried for SCSI identification data respond with + * binary strings, which if output to the console freeze the terminal. The + * workaround is to modify the vendor and product strings read from such + * device with proper values (as reported by 'usb info'). + * + * Vendor and product length limits are taken from the definition of + * block_dev_desc_t in include/part.h. + */ +static void usb_bin_fixup(struct usb_device_descriptor descriptor, unsigned char vendor[], unsigned char product[]) +{ + const unsigned char max_vendor_len = 40; + const unsigned char max_product_len = 20; + if(descriptor.idVendor == 0x0424 && descriptor.idProduct == 0x223a) + { + strncpy((char *)vendor, "SMSC", max_vendor_len); + strncpy((char *)product, "Flash Media Cntrller", max_product_len); + } +} +#endif /* CONFIG_USB_BIN_FIXUP */ + +#define USB_MAX_READ_BLK 20 + +unsigned long usb_stor_read(int device, unsigned long blknr, unsigned long blkcnt, void *buffer) +{ + unsigned long start, blks, buf_addr; + unsigned short smallblks; + struct usb_device *dev; + int retry, i; + ccb *srb = &usb_ccb; + + + if(blkcnt == 0) + return 0; + device &= 0xff; + /* Setup device */ +// printf ("blknr: %x\n\r", blknr); /* Galvez: Debug */ + DEBUG_STORAGE("usb_read: dev %d \r\n", device); + dev = NULL; +#ifdef SUPERVISOR + int p = 0; + /* GALVEZ: Acces to register in Supervisor */ + if (!(Super(SUP_INQUIRE))){ + p = SuperFromUser(); + } +#endif + + for(i = 0; i < USB_MAX_DEVICE; i++) + { + dev = usb_get_dev_index(i); + if(dev == NULL){ +#ifdef SUPERVISOR + /* GALVEZ: come back to user mode */ + if ((Super(SUP_INQUIRE)) && (p)){ + SuperToUser(p); + } +#endif + return 0; + } + if(dev->devnum == usb_dev_desc[device].target) + break; + } + usb_disable_asynch(1); /* asynch transfer not allowed */ + srb->lun = usb_dev_desc[device].lun; + buf_addr = (unsigned long)buffer; + start = blknr; + blks = blkcnt; + + if(usb_test_unit_ready(srb, (struct us_data *)dev->privptr)) + { + DEBUG_STORAGE("Device NOT ready\r\n Request Sense returned %02X %02X %02X\r\n", srb->sense_buf[2], srb->sense_buf[12], srb->sense_buf[13]); + printf("Device NOT ready\r\n Request Sense returned %02X %02X %02X\r\n", srb->sense_buf[2], srb->sense_buf[12], srb->sense_buf[13]); +#ifdef SUPERVISOR + /* GALVEZ: come back to user mode */ + if ((Super(SUP_INQUIRE)) && (p)){ + SuperToUser(p); + } +#endif + return 0; + } + + DEBUG_STORAGE("usb_read: dev %d startblk %lx, blccnt %lx buffer %lx\r\n", device, start, blks, buf_addr); + do + { + /* XXX need some comment here */ + retry = 2; + srb->pdata = (unsigned char *)buf_addr; + if(blks > USB_MAX_READ_BLK) + smallblks = USB_MAX_READ_BLK; + else + smallblks = (unsigned short) blks; +retry_it: + srb->datalen = usb_dev_desc[device].blksz * smallblks; + srb->pdata = (unsigned char *)buf_addr; + if(usb_read_10(srb, (struct us_data *)dev->privptr, start, smallblks)) + { + DEBUG_STORAGE("Read ERROR\r\n"); + usb_request_sense(srb, (struct us_data *)dev->privptr); + if(retry--) + goto retry_it; + blkcnt -= blks; + break; + } + start += smallblks; + blks -= smallblks; + buf_addr += srb->datalen; + } + while(blks != 0); + DEBUG_STORAGE("usb_read: end startblk %lx, blccnt %x buffer %lx\r\n", start, smallblks, buf_addr); + usb_disable_asynch(0); /* asynch transfer allowed */ +#ifdef SUPERVISOR + /* GALVEZ: come back to user mode */ + if ((Super(SUP_INQUIRE)) && (p)){ + SuperToUser(p); + } +#endif + return blkcnt; +} + +unsigned long usb_stor_write(int device, unsigned long blknr, unsigned long blkcnt, const void *buffer) +{ + unsigned long start, blks, buf_addr; + unsigned short smallblks; + struct usb_device *dev; + int retry, i; + ccb *srb = &usb_ccb; + + if(blkcnt == 0) + return 0; + device &= 0xff; + /* Setup device */ + DEBUG_STORAGE("usb_write: dev %d \r\n", device); +#ifdef SUPERVISOR + int p = 0; + /* GALVEZ: Acces to register in Supervisor */ + if ( !(Super(SUP_INQUIRE))){ + p = SuperFromUser(); + } +#endif + + dev = NULL; + for(i = 0; i < USB_MAX_DEVICE; i++) + { + dev = usb_get_dev_index(i); + if(dev == NULL){ +#ifdef SUPERVISOR + /* GALVEZ: come back to user mode */ + if ((Super(SUP_INQUIRE)) && (p)) + SuperToUser(p); +#endif + return 0; + } + if(dev->devnum == usb_dev_desc[device].target) + break; + } + usb_disable_asynch(1); /* asynch transfer not allowed */ + srb->lun = usb_dev_desc[device].lun; + buf_addr = (unsigned long)buffer; + start = blknr; + blks = blkcnt; +//#if 1 /* GALVEZ: DEBUG */ + if(usb_test_unit_ready(srb, (struct us_data *)dev->privptr)) + { + DEBUG_STORAGE("Device NOT ready\r\n Request Sense returned %02X %02X %02X\r\n", srb->sense_buf[2], srb->sense_buf[12], srb->sense_buf[13]); + printf("Device NOT ready\r\n Request Sense returned %02X %02X %02X\r\n", srb->sense_buf[2], srb->sense_buf[12], srb->sense_buf[13]); +#ifdef SUPERVISOR + /* GALVEZ: come back to user mode */ + if ((Super(SUP_INQUIRE)) && (p)) + SuperToUser(p); +#endif + return 0; + } +//#endif + DEBUG_STORAGE("usb_write: dev %d startblk %lx, blccnt %lx buffer %lx\r\n", device, start, blks, buf_addr); + do + { + /* XXX need some comment here */ + retry = 2; + srb->pdata = (unsigned char *)buf_addr; + if(blks > USB_MAX_READ_BLK) + smallblks = USB_MAX_READ_BLK; + else + smallblks = (unsigned short)blks; +retry_it: + srb->datalen = usb_dev_desc[device].blksz * smallblks; + srb->pdata = (unsigned char *)buf_addr; + if(usb_write_10(srb, (struct us_data *)dev->privptr, start, smallblks)) + { + DEBUG_STORAGE("Write ERROR\r\n"); + usb_request_sense(srb, (struct us_data *)dev->privptr); + if(retry--) + goto retry_it; + blkcnt -= blks; + break; + } + start += smallblks; + blks -= smallblks; + buf_addr += srb->datalen; + } + while(blks != 0); + DEBUG_STORAGE("usb_write: end startblk %lx, blccnt %x buffer %lx\r\n", start, smallblks, buf_addr); + usb_disable_asynch(0); /* asynch transfer allowed */ +#ifdef SUPERVISOR + /* GALVEZ: come back to user mode */ + if ((Super(SUP_INQUIRE)) && (p)) + SuperToUser(p); +#endif + return blkcnt; +} + +/* Probe to see if a new device is actually a Storage device */ +int usb_storage_probe(struct usb_device *dev, unsigned int ifnum, struct us_data *ss) +{ + struct usb_interface_descriptor *iface; + int i; + unsigned int flags = 0; + int protocol = 0; + int subclass = 0; + + DEBUG_STORAGE("usb_storage_probe()"); + + /* let's examine the device now */ + iface = &dev->config.if_desc[ifnum]; +#if 0 + DEBUG_STORAGE("iVendor 0x%X iProduct 0x%X\r\n", dev->descriptor.idVendor, dev->descriptor.idProduct); + /* this is the place to patch some storage devices */ + if((dev->descriptor.idVendor) == 0x066b && (dev->descriptor.idProduct) == 0x0103) + { + DEBUG_STORAGE("patched for E-USB\r\n"); + protocol = US_PR_CB; + subclass = US_SC_UFI; /* an assumption */ + } +#endif + if(dev->descriptor.bDeviceClass != 0 || iface->bInterfaceClass != USB_CLASS_MASS_STORAGE + || iface->bInterfaceSubClass < US_SC_MIN || iface->bInterfaceSubClass > US_SC_MAX) + /* if it's not a mass storage, we go no further */ + return 0; + memset(ss, 0, sizeof(struct us_data)); + /* At this point, we know we've got a live one */ + DEBUG_STORAGE("\r\n\r\nUSB Mass Storage device detected\r\n"); + DEBUG_STORAGE("Protocol: %x SubClass: %x", iface->bInterfaceProtocol, /* GALVEZ: DEBUG */ + iface->bInterfaceSubClass ); + /* Initialize the us_data structure with some useful info */ + ss->flags = flags; + ss->ifnum = ifnum; + ss->pusb_dev = dev; + ss->attention_done = 0; + /* If the device has subclass and protocol, then use that. Otherwise, + * take data from the specific interface. + */ + if(subclass) + { + ss->subclass = subclass; + ss->protocol = protocol; + } + else + { + ss->subclass = iface->bInterfaceSubClass; + ss->protocol = iface->bInterfaceProtocol; + } + /* set the handler pointers based on the protocol */ + DEBUG_STORAGE("Transport: "); + switch(ss->protocol) + { + case US_PR_CB: + DEBUG_STORAGE("Control/Bulk\r\n"); + ss->transport = usb_stor_CB_transport; + ss->transport_reset = usb_stor_CB_reset; + break; + case US_PR_CBI: + DEBUG_STORAGE("Control/Bulk/Interrupt\r\n"); + ss->transport = usb_stor_CB_transport; + ss->transport_reset = usb_stor_CB_reset; + break; + case US_PR_BULK: + DEBUG_STORAGE("Bulk/Bulk/Bulk\r\n"); + ss->transport = usb_stor_BBB_transport; + ss->transport_reset = usb_stor_BBB_reset; + break; + default: + printf("USB Storage Transport unknown / not yet implemented\r\n"); + return 0; + break; + } + /* + * We are expecting a minimum of 2 endpoints - in and out (bulk). + * An optional interrupt is OK (necessary for CBI protocol). + * We will ignore any others. + */ + DEBUG_STORAGE("Number of endpoints: %d\r\n", iface->bNumEndpoints); + for(i = 0; i < iface->bNumEndpoints; i++) + { + /* is it an BULK endpoint? */ + if((iface->ep_desc[i].bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_BULK) + { + if(iface->ep_desc[i].bEndpointAddress & USB_DIR_IN) + ss->ep_in = iface->ep_desc[i].bEndpointAddress & USB_ENDPOINT_NUMBER_MASK; + else + ss->ep_out = iface->ep_desc[i].bEndpointAddress & USB_ENDPOINT_NUMBER_MASK; + } + /* is it an interrupt endpoint? */ + if((iface->ep_desc[i].bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_INT) + { + ss->ep_int = iface->ep_desc[i].bEndpointAddress & USB_ENDPOINT_NUMBER_MASK; + ss->irqinterval = iface->ep_desc[i].bInterval; + } + } + DEBUG_STORAGE("Endpoints In %d Out %d Int %d\r\n", ss->ep_in, ss->ep_out, ss->ep_int); + /* Do some basic sanity checks, and bail if we find a problem */ + if(usb_set_interface(dev, iface->bInterfaceNumber, 0) || !ss->ep_in || !ss->ep_out + || (ss->protocol == US_PR_CBI && ss->ep_int == 0)) + { + DEBUG_STORAGE("Problems with device\r\n"); + return 0; + } + /* set class specific stuff */ + /* We only handle certain protocols. Currently, these are + * the only ones. + * The SFF8070 accepts the requests used in u-boot + */ + if(ss->subclass != US_SC_UFI && ss->subclass != US_SC_SCSI && ss->subclass != US_SC_8070) + { + DEBUG_STORAGE("Sorry, protocol %d not yet supported.\r\n", ss->subclass); + printf("Sorry, protocol %d not yet supported.\r\n", ss->subclass); + return 0; + } + if(ss->ep_int) + { + /* we had found an interrupt endpoint, prepare irq pipe + * set up the IRQ pipe and handler + */ + ss->irqinterval = (ss->irqinterval > 0) ? ss->irqinterval : 255; + ss->irqpipe = usb_rcvintpipe(ss->pusb_dev, ss->ep_int); + ss->irqmaxp = usb_maxpacket(dev, ss->irqpipe); + dev->irq_handle = usb_stor_irq; + } + dev->privptr = (void *)ss; + return 1; +} + +int usb_stor_get_info(struct usb_device *dev, struct us_data *ss, block_dev_desc_t *dev_desc) +{ + unsigned char perq, modi; + unsigned long cap[2]; + unsigned long *capacity, *blksz; + ccb *pccb = &usb_ccb; + DEBUG_STORAGE("usb_stor_ger_info()"); + /* for some reasons a couple of devices would not survive this reset */ + if( + /* Sony USM256E */ + (dev->descriptor.idVendor == 0x054c && dev->descriptor.idProduct == 0x019e) + /* USB007 Mini-USB2 Flash Drive */ + || (dev->descriptor.idVendor == 0x066f && dev->descriptor.idProduct == 0x2010) + /* SanDisk Corporation Cruzer Micro 20044318410546613953 */ + || (dev->descriptor.idVendor == 0x0781 && dev->descriptor.idProduct == 0x5151) + /* SanDisk Corporation U3 Cruzer Micro 1/4GB Flash Drive 000016244373FFB4 */ + || (dev->descriptor.idVendor == 0x0781 && dev->descriptor.idProduct == 0x5406) + ) + { DEBUG_STORAGE("usb_stor_get_info: skipping RESET..\r\n");} + else + ss->transport_reset(ss); + pccb->pdata = usb_stor_buf; + dev_desc->target = dev->devnum; + pccb->lun = dev_desc->lun; + DEBUG_STORAGE(" address %d\r\n", dev_desc->target); + if(usb_inquiry(pccb, ss)) + return -1; + perq = usb_stor_buf[0]; + modi = usb_stor_buf[1]; + if((perq & 0x1f) == 0x1f) + /* skip unknown devices */ + return 0; + if((modi&0x80) == 0x80) + /* drive is removable */ + dev_desc->removable = 1; + memcpy(&dev_desc->vendor[0], &usb_stor_buf[8], 8); + memcpy(&dev_desc->product[0], &usb_stor_buf[16], 16); + memcpy(&dev_desc->revision[0], &usb_stor_buf[32], 4); + dev_desc->vendor[8] = 0; + dev_desc->product[16] = 0; + dev_desc->revision[4] = 0; +#ifdef CONFIG_USB_BIN_FIXUP + usb_bin_fixup(dev->descriptor, (uchar *)dev_desc->vendor, (uchar *)dev_desc->product); +#endif /* CONFIG_USB_BIN_FIXUP */ + DEBUG_STORAGE("ISO Vers %X, Response Data %X\r\n", usb_stor_buf[2], usb_stor_buf[3]); + if(usb_test_unit_ready(pccb, ss)) + { + DEBUG_STORAGE("Device NOT ready\r\n Request Sense returned %02X %02X %02X\r\n", pccb->sense_buf[2], pccb->sense_buf[12], pccb->sense_buf[13]); + printf("Device NOT ready\r\n Request Sense returned %02X %02X %02X\r\n", pccb->sense_buf[2], pccb->sense_buf[12], pccb->sense_buf[13]); + if(dev_desc->removable == 1) + { + dev_desc->type = perq; + return 1; + } + return 0; + } + pccb->pdata = (unsigned char *)&cap[0]; + memset(pccb->pdata, 0, 8); + if(usb_read_capacity(pccb, ss) != 0) + { + printf("READ_CAP ERROR\r\n"); + cap[0] = 2880; + cap[1] = 0x200; + } + DEBUG_STORAGE("Read Capacity returns: 0x%lx, 0x%lx\r\n", cap[0], cap[1]); +#if 0 + if(cap[0] > (0x200000 * 10)) /* greater than 10 GByte */ + cap[0] >>= 16; +#endif + cap[0] = cpu_to_be32(cap[0]); + cap[1] = cpu_to_be32(cap[1]); + /* this assumes bigendian! */ + cap[0] += 1; + capacity = &cap[0]; + blksz = &cap[1]; + DEBUG_STORAGE("Capacity = 0x%lx, blocksz = 0x%lx\r\n", *capacity, *blksz); + dev_desc->lba = *capacity; + dev_desc->blksz = *blksz; + dev_desc->type = perq; + DEBUG_STORAGE(" address %d\r\n", dev_desc->target); + DEBUG_STORAGE("partype: %d\r\n", dev_desc->part_type); + init_part(dev_desc); + DEBUG_STORAGE("partype: %d\r\n", dev_desc->part_type); + return 1; +} + +#endif /* CONFIG_USB_STORAGE */ +#endif /* CONFIG_USB_UHCI || CONFIG_USB_OHCI || CONFIG_USB_EHCI */ diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/vars.h b/BaS_codewarrior/FireBee/trunk/usb/store/vars.h new file mode 100644 index 0000000..b6e626b --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/vars.h @@ -0,0 +1,83 @@ +/* +* Modified by David Gálvez 2010. +* +* TOS 4.04 Xbios vars for the CT60 board +* Didier Mequignon 2002-2005, e-mail: aniplay@wanadoo.fr +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; either +* version 2.1 of the License, or (at your option) any later version. +* +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public +* License along with this library; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#ifndef _VARS_H +#define _VARS_H + + +#define etv_timer 0x400 +#define etv_critic 0x404 +#define memvalid 0x420 +#define memctrl 0x424 +#define resvalid 0x426 +#define resvector 0x42A +#define phystop 0x42E +#define _memtop 0x436 +#define memval2 0x43A +#define flock 0x43E +#define _timer_ms 0x442 +#define _bootdev 0x446 +#define sshiftmd 0x44C +#define _v_bas_ad 0x44E +#define vblsem 0x452 +#define nvbls 0x454 +#define _vblqueue 0x456 +#define colorptr 0x45A +#define _vbclock 0x462 +#define _frclock 0x466 +#define hdv_init 0x46A +#define HDV_BPB 0x472 +#define hdv_bpb 0x472 +#define HDV_RW 0x476 +#define hdv_rw 0x476 +#define hdv_boot 0x47A +#define HDV_MEDIACH 0x47E +#define hdv_mediach 0x47E +#define _cmdload 0x482 +#define conterm 0x484 +#define trp14ret 0x486 +#define __md 0x49E +#define savptr 0x4A2 +#define _nflops 0x4A6 +#define con_state 0x4A8 +#define save_row 0x4AC +#define _hz_200 0x4BA +#define _DRVBITS 0x4C2 +#define _drvbits 0x4C2 +#define DSKBUFP 0x4C6 +#define _dskbufp 0x4C6 +#define _dumpflg 0x4EE +#define _sysbase 0x4F2 +#define exec_os 0x4FE +#define dump_vec 0x502 +#define ptr_stat 0x506 +#define ptr_vec 0x50A +#define aux_sta 0x50E +#define aux_vec 0x512 +#define PUN_PTR 0x516 +#define memval3 0x51A +#define proc_type 0x59E +#define COOKIE 0x5A0 +#define cookie 0x5A0 + + + +#endif diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/xhdi.c b/BaS_codewarrior/FireBee/trunk/usb/store/xhdi.c new file mode 100644 index 0000000..3be2bfa --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/xhdi.c @@ -0,0 +1,391 @@ +/***************** NOT READY YET ***********************/ +/**************** ONLY EXPERIMENTAL ********************/ + +/* TOS 4.04 Xbios dispatcher for the CT60/CTPCI boards + * and USB-disk / Ram-Disk utility + * Didier Mequignon 2005-2009, e-mail: aniplay@wanadoo.fr + * + * Translation to C by David Galvez. 2010, e-mail: dgalvez75@gmail.com + * + * This file is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This file is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include +#include + +#include "config.h" +#include "vars.h" +#include "xhdi.h" +#include "debug.h" + +long *drvbits = (long *)_DRVBITS; + +struct pun_info *old_pun_ptr = (struct pun_info *)0x512; +struct usb_pun_info pun_ptr_usb; + +XBRA xbra_hdv_bpb; +XBRA xbra_hdv_rw; +XBRA xbra_hdv_mediach; + +extern long usb_1st_disk_drive; +extern short max_logical_drive; + +extern unsigned long usb_stor_read(int device, unsigned long blknr, unsigned long blkcnt, void *buffer); + +void drive_full_usb(void) +{ + DEBUG_XHDI("\n"); +} + +long __CDECL hdv_bpb_usb(void) +{ + unsigned short dev; + long r; + + __asm__ volatile /* get arguments from the stack */ + ( + "move.w 12(%%sp),%0\n\t" + + :/*outputs*/ "=m" (dev) + :/*inputs*/ + ); + + __asm__ volatile /* call old vector */ + ( + "movem.l %%d2-%%d7/%%a2-%%a6,-(%%sp)\n\t" /* important to save register */ + "move.l %1,%%a0\n\t" + "move.w #0,-(%%sp)\n\t" + "move.w %2,-(%%sp)\n\t" + "jsr (%%a0)\n\t" + "addq.l #4,%%sp\n\t" + "move.l %%d0,%0\n\t" + "movem.l (%%sp)+,%%d2-%%d7/%%a2-%%a6\n\t" + :/*outputs*/ "=r" (r) + :/*inputs*/ "m" (xbra_hdv_bpb.xb_oldvec), "m" (dev) + :"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "a2", "a3", "a4", "a5" /*clobbered regs*/ + ); + return r; +} + +long __CDECL hdv_rw_usb(void) +{ + void *buf; + short count, recno, dev, mode; + long lrecno; + + long r = 0; + + __asm__ volatile /* get arguments from the stack */ + ( + "move.l 18(%%sp),%0\n\t" + "move.w 14(%%sp),%1\n\t" + "move.w 12(%%sp),%2\n\t" + "move.w 10(%%sp),%3\n\t" + "move.l 8(%%sp),%4\n\t" + "move.w 4(%%sp),%5\n\t" + :/*outputs*/ "=r" (lrecno), "=r" (dev) ,"=r" (recno), "=r" (count), "=r" (buf), "=r" (mode) + :/*inputs*/ + ); + + DEBUG_XHDI("lrecno %lx dev %d recno %x count %d mode %x\n", + lrecno, dev, recno, count, mode); + + DEBUG_XHDI("\n"); + DEBUG_XHDI("rw\n"); + + __asm__ volatile /* call old vector */ + ( + "movem.l %%d2-%%d7/%%a2-%%a6,-(%%sp)\n\t" + "move.l %1,%%a0\n\t" + "move.l (%%a0),%%d0\n\t" + "move.w #0,-(%%sp)\n\t" + "move.l %2,-(%%sp)\n\t" + "move.w %3,-(%%sp)\n\t" + "move.w %4,-(%%sp)\n\t" + "move.w %5,-(%%sp)\n\t" + "move.l %6,-(%%sp)\n\t" + "move.w %7,-(%%sp)\n\t" + "move.l %%d0,%%a0\n\t" + "jsr (%%a0)\n\t" + "addq.l #4,%%sp\n\t" + "move.l %%d0,%0\n\t" + "movem.l (%%sp)+,%%d2-%%d7/%%a2-%%a6\n\t" + :/*outputs*/ "=r" (r) + :/*inputs*/ "r" (xbra_hdv_rw.xb_oldvec), "r" (lrecno), "r" (dev) ,"r" (recno), "r" (count), "r" (buf), "r" (mode) + :"d0"/*, "d1", "d2", "d3", "d4", "d5", "d6", "d7", "a2", "a3", "a4", "a5" clobbered regs*/ + ); + +// r = (*xbra_hdv_rw.xb_oldvec)(mode, buf, num, recno, dev, l); + DEBUG_XHDI (" r %lx \n", r); + + return r; +} + +long __CDECL hdv_mediach_usb(void) +{ + DEBUG_XHDI("\n"); + DEBUG_XHDI("mediach\n"); + + short dev, dev1, dev2; + long r; + + __asm__ volatile /* get arguments from the stack */ + ( + "move.w 2(%%sp),%0\n\t" + "move.w 4(%%sp),%1\n\t" + "move.w 6(%%sp),%2\n\t" + :/*outputs*/ "=r" (dev), "=r" (dev1), "=r" (dev2) + :/*inputs*/ + ); + + DEBUG_XHDI (" dev(2) %x dev(4) %x dev(6) %x\n", dev, dev1, dev2); + + __asm__ volatile /* call old vector */ + ( + "movem.l %%d2-%%d7/%%a2-%%a6,-(%%sp)\n\t" + "move.l %1,%%a0\n\t" + "move.l (%%a0),%%d0\n\t" + "move.w #0,-(%%sp)\n\t" + "move.w %2,-(%%sp)\n\t" + "move.l %%d0,%%a0\n\t" + "jsr (%%a0)\n\t" + "addq.l #4,%%sp\n\t" + "move.l %%d0,%0\n\t" + "movem.l (%%sp)+,%%d2-%%d7/%%a2-%%a6\n\t" + :/*outputs*/ "=r" (r) + :/*inputs*/ "r" (xbra_hdv_mediach.xb_oldvec), "r" (dev) + :"d0"/*, "d1", "d2", "d3", "d4", "d5", "d6", "d7", "a2", "a3", "a4", "a5" clobbered regs*/ + ); +// printf (" r %lx \n", r); +// r = (*xbra_hdv_mediach.xb_oldvec)(d); +// DEBUG_XHDI("Calling vector: %x\n", xbra_hdv_mediach.xb_oldvec); +// r = (*xbra_hdv_mediach.xb_oldvec)(5); + DEBUG_XHDI(" r %lx \n", r); + + return r; +} + +void install_xbra(XBRA *xbra_hd, long id, long old_vec, long (*handle)()) +{ + DEBUG_XHDI("\n"); +#define XBRA_MAGIC 0x58425241L /* "XBRA" */ +#define JMP_OPCODE 0x4EF9 + + xbra_hd->xb_magic = XBRA_MAGIC; + xbra_hd->xb_id = id; + xbra_hd->xb_oldvec = *((Func *)old_vec); + xbra_hd->jump = JMP_OPCODE; + xbra_hd->handle = (Func) handle; + + *((Func *)old_vec) = xbra_hd->handle; + + DEBUG_XHDI("id: %x xbra_hd->xb_oldvec %x old_vec %x old_vec (*) %x old_vec (&) %x\n", + xbra_hd->xb_id, xbra_hd->xb_oldvec, old_vec, *((Func *)old_vec), &old_vec); + + __asm__ volatile /* clean cache ??? */ + ( + "cpusha BC\n\t" + :/*outputs*/ + :/*inputs*/ + ); +} + +void usb_drive_ok(void) +{ + DEBUG_XHDI("\n"); + +} + + +long install_usb_partition(unsigned char drive, int dev_num, unsigned long part_type, + unsigned long part_offset, unsigned long part_size) +{ + DEBUG_XHDI("\n"); + + int *dskbufp = (int *)DSKBUFP; + unsigned short status_register; + + long old_hdv_bpb; + long old_hdv_rw; + long old_hdv_mediach; + + if (drive < 16) { + (pun_ptr_usb.puns)++; + pun_ptr_usb.pun[drive] = dev_num | PUN_USB; + pun_ptr_usb.pstart[drive] = part_offset; + pun_ptr_usb.ptype[drive] = part_type; + pun_ptr_usb.psize[drive] = part_size; + /* flags B15:swap, B7:change, B0:bootable */ +#define BOOTABLE 0x0001 +#define CHANGE 0x0080 +#define SWAP 0x8000 + pun_ptr_usb.flags[drive] = CHANGE; + } + + if (drive < 16) { + old_pun_ptr->puns++; + old_pun_ptr->pun[drive] = dev_num | PUN_USB; + } + + if (usb_stor_read (dev_num, part_offset, 1, (void *)(*dskbufp)) == 0) + return -1; + + if (usb_1st_disk_drive) + usb_drive_ok(); + + usb_1st_disk_drive = drive; + + long r; + r = (long)Getbpb (2); + DEBUG_XHDI("Before int. Getbpb return: %x \n", r); + + + __asm__ volatile /* mask interrupts */ + ( + "move.w %%sr,%%d0\n\t" + "move.w %%d0,%0\n\t" + "or.l #0x700,%%d0\n\t" + "move.w %%d0,%%sr\n\t" + :/*outputs*/ "=r" (status_register) + :/*inputs*/ + :"d0" /*clobbered regs*/ + ); + +#define _USB 0x5F555342 /* _USB */ + long id = _USB; + old_hdv_bpb = (long)HDV_BPB; + + DEBUG_XHDI("id: %x old_hdv_bpb %x old_hdv_bpb (*) %x hdv_bpb_usb %x\n", + id, old_hdv_bpb, *((Func *)old_hdv_bpb), hdv_bpb_usb); + install_xbra(&xbra_hdv_bpb, id, old_hdv_bpb, hdv_bpb_usb); + DEBUG_XHDI("id: %x old_hdv_bpb %x old_hdv_bpb (*) %x hdv_bpb_usb %x\n", + xbra_hdv_bpb.xb_id, xbra_hdv_bpb.xb_oldvec, *((Func *)xbra_hdv_bpb.xb_oldvec), xbra_hdv_bpb.handle); +#if 0 + old_hdv_rw = (long)HDV_RW; + DEBUG_XHDI("id: %x old_hdv_rw %x old_hdv_rw (*) %x hdv_rw_usb %x\n", + id, old_hdv_rw, *((Func *)old_hdv_rw), hdv_rw_usb); + install_xbra(&xbra_hdv_rw, id, old_hdv_rw, hdv_rw_usb); + DEBUG_XHDI("id: %x old_hdv_rw %x old_hdv_rw (*) %x hdv_rw_usb %x\n", + xbra_hdv_rw.xb_id, xbra_hdv_rw.xb_oldvec, *((Func *)xbra_hdv_rw.xb_oldvec), xbra_hdv_rw.handle); + + old_hdv_mediach = (long)HDV_MEDIACH; + DEBUG_XHDI("id: %x old_hdv_mediach %x old_hdv_mediach (*) %x hdv_mediach_usb %x\n", + id, old_hdv_mediach, *((Func *)old_hdv_mediach), hdv_mediach_usb); + install_xbra(&xbra_hdv_mediach, id, old_hdv_mediach, hdv_mediach_usb); + DEBUG_XHDI("id: %x old_hdv_mediach %x old_hdv_mediach (*) %x hdv_mediach_usb %x\n", + xbra_hdv_mediach.xb_id, xbra_hdv_mediach.xb_oldvec, *((Func *)xbra_hdv_mediach.xb_oldvec), xbra_hdv_mediach.handle); +#endif + + r = (long)Getbpb (4); + + DEBUG_XHDI("Before int. Getbpb return: %x \n", r); + +// Bconin(DEV_CONSOLE); + __asm__ volatile /* restore interrupts */ + ( + "move.w %%sr,%%d0\n\t" + "and.w %0,%%d0\n\t" + "move.w %%d0,%%sr\n\t" + :/*outputs*/ + :/*inputs*/ "r" (status_register) + :"d0" + ); + DEBUG_XHDI("after restore interrups\n"); +// Bconin(DEV_CONSOLE); + return 0; +} + +unsigned char search_empty_drive(int dev_num, unsigned long part_type, + unsigned long part_offset, unsigned long part_size) +{ + DEBUG_XHDI("\n"); + + unsigned char drive = 2; + + DEBUG_XHDI("drvbits: %x\n", *drvbits); + while (drive < MAX_LOGICAL_DRIVE) { + if (!(*drvbits & (0x00000001 << drive))) { + DEBUG_XHDI("drive: %d\n", drive); + if (install_usb_partition(drive, dev_num, part_type, part_offset, part_size) == -1) { + DEBUG_XHDI("Couldn't install USB partition\n"); + return -1; + } + else return drive; + } + drive++; + } + printf("all drives already used!\n\r"); + + return -1; +} + +unsigned char add_partition(int dev_num, unsigned long part_type, + unsigned long part_offset, unsigned long part_size) +{ + DEBUG_XHDI("\n"); + + unsigned char i; + unsigned char drive; + + pun_ptr_usb.puns = 0x0000; + pun_ptr_usb.version_num = 0x0300; + pun_ptr_usb.max_sect_siz = 0x4000; + + for (i=0; i<16; i++) + pun_ptr_usb.pun[i] = 0xff; + + if ((drive = search_empty_drive(dev_num, part_type, part_offset, part_size)) == -1) + return -1; + return drive; +} + +int install_usb_stor(int dev_num, unsigned long part_type, + unsigned long part_offset, unsigned long part_size, + char *vendor, char *revision, char *product ) +{ + DEBUG_XHDI("\n"); + unsigned char part_num; + + if (dev_num <= PUN_DEV) { /* Max. of 32 USB storage devices */ + switch (part_type) { /* Although real limit is 16 of pinfo struct */ + case GEM: + break; + case BGM: + break; + case RAW: + break; + case FAT16_32MB: + break; + case FAT16: + break; + case FAT16_WIN95: + break; + case FAT32: + break; + case FAT32_II: + break; + default: + printf("Invalid partition type (0x%08lx)\r\n", part_type); + return -1; + } + if ((part_num = add_partition(dev_num, part_type, part_offset, part_size)) == -1) + return -1; + else return 0; + } + printf("Maxim number(%d) of USB storage device reached \n\r", dev_num); + return -1; +} + + diff --git a/BaS_codewarrior/FireBee/trunk/usb/store/xhdi.h b/BaS_codewarrior/FireBee/trunk/usb/store/xhdi.h new file mode 100644 index 0000000..d8f20bb --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/usb/store/xhdi.h @@ -0,0 +1,101 @@ +/* + * David Galvez. 2010, e-mail: dgalvez75@gmail.com + * + * This file is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This file is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef _XHDI_H +#define _XHDI_H + +typedef long __CDECL (*Func)(); + +//#define old_pun_ptr 0x516 + +#undef PUN_PTR +//#define pun_ptr pun_ptr_usb + +#define MAX_LOGICAL_DRIVE max_logical_drive + +/* AHDI */ + +#define PUN_DEV 0x1F /* device number of HD */ +#define PUN_UNIT 0x07 /* Unit number */ +#define PUN_SCSI 0x08 /* 1=SCSI 0=ACSI */ +#define PUN_IDE 0x10 /* Falcon IDE */ +#define PUN_USB 0x20 /* USB */ +#define PUN_REMOVABLE 0x40 /* Removable media */ +#define PUN_VALID 0x80 /* zero if valid */ + +#define PINFO_PUNS 0 // 2 bytes +#define PINFO_PUN 2 // 16 bytes +#define PINFO_PSTART 18 // 16 x 4 bytes +#define PINFO_COOKIE 82 // 4 bytes +#define PINFO_COOKPTR 86 // 4 bytes +#define PINFO_VERNUM 90 // 2 bytes +#define PINFO_MAXSIZE 92 // 2 bytes +#define PINFO_PTYPE 94 // 16 x 4 bytes +#define PINFO_PSIZE 158 // 16 x 4 bytes +#define PINFO_FLAGS 222 // 16 x 2 bytes, internal use: B15:swap, B7:change, B0:bootable +#define PINFO_BPB 256 // 16 x 32 bytes +#define PINFO_SIZE 768 + +struct pun_info +{ + short puns; /* Number of HD's */ + char pun [16]; /* AND with masks below: */ + long pstart [16]; + long cookie; /* 'AHDI' if following valid */ + long *cook_ptr; /* Points to 'cookie' */ + unsigned short version_num; /* AHDI version */ + unsigned short max_sect_siz; /* Max logical sec size */ + long reserved[16]; /* Reserved */ +}; + +struct usb_pun_info +{ + short puns; /* Number of HD's */ + char pun [16]; /* AND with masks below: */ + long pstart [16]; + long cookie; /* 'AHDI' if following valid */ + long *cook_ptr; /* Points to 'cookie' */ + unsigned short version_num; /* AHDI version */ + unsigned short max_sect_siz; /* Max logical sec size */ + long reserved[16]; /* Reserved */ + long ptype[16]; + long psize[16]; + unsigned short flags[16]; +}; + +/* PARTITIONS TYPES */ +#define GEM 0x47454D // GEM up to 16 MB +#define BGM 0x42474D // BGM over 16 MB +#define RAW 0x524157 // RAW +#define FAT16_32MB 0x4 // DOS FAT16 up to 32 MB +#define FAT16 0x6 // DOS FAT16 over 32 MB +#define FAT16_WIN95 0xE // WIN95 FAT16 +#define FAT32 0xB // FAT32 +#define FAT32_II 0xC // FAT32 + +typedef struct xbra XBRA; +struct xbra { + long xb_magic; /* "XBRA" = 0x58425241 */ + long xb_id; /* ID of four ASCII characters */ + Func xb_oldvec; /* Old value of the vectors */ + short jump; + Func handle; +}; + + +#endif /* _XHDI_H */ diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/asm.sh b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/asm.sh new file mode 100644 index 0000000..58c4f53 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/asm.sh @@ -0,0 +1,6 @@ +#!/bin/bash +export DSP_PATH=~/.wine/drive_c/Programme/Motorola/DSP56300/clas + +wine $DSP_PATH/asm56300.exe -b -g -l $1.asm +wine $DSP_PATH/dsplnk.exe $1.cln +wine $DSP_PATH/cldlod.exe $1.cld > $1.lod diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_agu/test.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_agu/test.asm new file mode 100644 index 0000000..ff0d2b6 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_agu/test.asm @@ -0,0 +1,13 @@ + + move #1,n1 + move #10,r1 + nop + move (r1)+n1 + move #15,m1 + rep #10 + move (r1)+n1 + move #10,n1 + rep #10 + move (r1)+n1 + + diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_abs.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_abs.asm new file mode 100644 index 0000000..9e400e8 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_abs.asm @@ -0,0 +1,12 @@ + +; clear CCR + andi #$00,CCR + move #>0.25,a + abs a + move #>-0.25,a + abs a + move #>0,a + abs a + move #>$80,a2 + abs a + diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_adc.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_adc.asm new file mode 100644 index 0000000..0589a4e --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_adc.asm @@ -0,0 +1,11 @@ + move #>0,y0 + move #>1,y1 + clr b + move #>1,b0 +; set only carry bit + andi #$00,ccr + ori #$01,ccr + adc y,b + move #>$800000,y1 + move #>$80,b2 + adc y,b diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_add.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_add.asm new file mode 100644 index 0000000..ba12582 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_add.asm @@ -0,0 +1,11 @@ + move #>0,y0 + move #>1,y1 + clr b + move #>1,b0 +; set only carry bit + andi #$00,ccr + ori #$01,ccr + add y,b + move #>$800000,y1 + move #>$80,b2 + add y,b diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_addl.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_addl.asm new file mode 100644 index 0000000..dd80cb5 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_addl.asm @@ -0,0 +1,9 @@ + move #>$55,a + clr b + move #>$55,b0 + andi #$00,ccr + addl a,b + move #>$AA,a + addl a,b + move #>$80,b2 + addl a,b diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_addr.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_addr.asm new file mode 100644 index 0000000..7be3b44 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_addr.asm @@ -0,0 +1,9 @@ + move #>$55,a + clr b + move #>$55,b0 + andi #$00,ccr + addr a,b + move #>$AA,a + addr a,b + move #>$80,b2 + addr a,b diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_and.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_and.asm new file mode 100644 index 0000000..72aba75 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_and.asm @@ -0,0 +1,12 @@ + move #>$000FFF,y0 + move #>$FFFFFF,b + andi #$00,ccr + and y0,b + move #>$FFF000,y0 + move #>$FFFFFF,b + andi #$00,ccr + and y0,b + move #>$000000,y0 + move #>$FFFFFF,b + andi #$00,ccr + and y0,b diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_asl.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_asl.asm new file mode 100644 index 0000000..9a7244b --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_asl.asm @@ -0,0 +1,8 @@ +; move #>0,y0 +; move #>1,y1 + clr b + move #>$A5,b0 + move #>$A5,b1 + move #>$A5,b2 + andi #$00,ccr + asl b diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_asr.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_asr.asm new file mode 100644 index 0000000..c37a0cc --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_asr.asm @@ -0,0 +1,8 @@ +; move #>0,y0 +; move #>1,y1 + clr b + move #>$A5,b0 + move #>$A5,b1 + move #>$A5,b2 + andi #$00,ccr + asr b diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_carry.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_carry.asm new file mode 100644 index 0000000..2fe6ff5 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_carry.asm @@ -0,0 +1,20 @@ + clr a + clr b + andi #$00,ccr + move #>$7F,a2 + move #>$7F,b2 + add a,b + + clr a + clr b + andi #$00,ccr + move #>$80,a2 + move #>$7F,b2 + add a,b + + clr a + clr b + andi #$00,ccr + move #>$80,a2 + move #>$80,b2 + add a,b diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_clr.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_clr.asm new file mode 100644 index 0000000..6b2083d --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_clr.asm @@ -0,0 +1,9 @@ + +; clear CCR + andi #$00,CCR + move #>0.25,a + clr a + move #>-0.25,a + andi #$00,CCR + ori #$01,CCR + clr a diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_cmp.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_cmp.asm new file mode 100644 index 0000000..978933f --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_cmp.asm @@ -0,0 +1,20 @@ + move #$20,b + move #$24,y0 + andi #$00,ccr + cmp y0,b + move #$20,b + move #$20,y0 + andi #$00,ccr + cmp y0,b + move #$24,b + move #$20,y0 + andi #$00,ccr + cmp y0,b + move #$800AAA,b + move #$20,y0 + andi #$00,ccr + cmp y0,b + move #$800AAA,y0 + move #$20,b + andi #$00,ccr + cmp y0,b diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_cmpm.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_cmpm.asm new file mode 100644 index 0000000..a63a0d4 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_cmpm.asm @@ -0,0 +1,20 @@ + move #$20,b + move #$24,y0 + andi #$00,ccr + cmpm y0,b + move #$20,b + move #$20,y0 + andi #$00,ccr + cmpm y0,b + move #$24,b + move #$20,y0 + andi #$00,ccr + cmpm y0,b + move #$800AAA,b + move #$20,y0 + andi #$00,ccr + cmpm y0,b + move #$800AAA,y0 + move #$20,b + andi #$00,ccr + cmpm y0,b diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_eor.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_eor.asm new file mode 100644 index 0000000..381c5dc --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_eor.asm @@ -0,0 +1,8 @@ + move #>$000FFF,y0 + move #>$FF00FF,b + andi #$00,ccr + eor y0,b + move #>$FFFFFF,y0 + move #>$FFFFFF,b + andi #$00,ccr + eor y0,b diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_lsl.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_lsl.asm new file mode 100644 index 0000000..51e845f --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_lsl.asm @@ -0,0 +1,7 @@ + + andi #$00,CCR + move #>0.25,a + move #>$AAAAAA,a + move #>$BCDEFA,a0 + rep #24 + lsl a diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_lsr.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_lsr.asm new file mode 100644 index 0000000..87177a9 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_lsr.asm @@ -0,0 +1,7 @@ + + andi #$00,CCR + move #>0.25,a + move #>$AAAAAA,a + move #>$BCDEFA,a0 + rep #24 + lsr a diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_mac.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_mac.asm new file mode 100644 index 0000000..b97fb6a --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_mac.asm @@ -0,0 +1,17 @@ + + andi #$00,CCR + clr a + move #$80,a2 + move #>0.25,x0 + move #>0.50,y0 + mac -x0,y0,a + move #>-0.25,x0 + move #>-0.55,y0 + mac x0,y0,a + move #>-0.20,x0 + move #>+0.55,y0 + mac x0,y0,a + move #>-0.20,x0 + move #>+0.55,y0 + mac -x0,y0,a + diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_macr.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_macr.asm new file mode 100644 index 0000000..ebbfdf5 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_macr.asm @@ -0,0 +1,17 @@ + + andi #$00,CCR + clr a + move #$100000,a + move #>$123456,x0 + move #>$123456,y0 + macr x0,y0,a + move #$100001,a + move #>$123456,x0 + move #>$123456,y0 + macr x0,y0,a + move #$100000,a + move #$800000,a0 + move #>$123456,x0 + move #>$123456,y0 + macr x0,y0,a + diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_mpy.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_mpy.asm new file mode 100644 index 0000000..afde500 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_mpy.asm @@ -0,0 +1,15 @@ + + andi #$00,CCR + move #>0.25,x0 + move #>0.50,y0 + mpy x0,y0,a + move #>-0.25,x0 + move #>-0.55,y0 + mpy x0,y0,a + move #>-0.20,x0 + move #>+0.55,y0 + mpy x0,y0,a + move #>-0.20,x0 + move #>+0.55,y0 + mpy -x0,y0,a + diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_mpyr.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_mpyr.asm new file mode 100644 index 0000000..847bccf --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_mpyr.asm @@ -0,0 +1,5 @@ + + andi #$00,CCR + move #>$654321,y0 + mpyr -y0,y0,a + diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_neg.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_neg.asm new file mode 100644 index 0000000..9fbc708 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_neg.asm @@ -0,0 +1,10 @@ + + andi #$00,CCR + move #>$654321,a + neg a + clr a + move #>$80,a2 + neg a + move #>$800000,a + neg a + diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_norm.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_norm.asm new file mode 100644 index 0000000..50749fe --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_norm.asm @@ -0,0 +1,14 @@ + clr a + move #$000001,a1 + tst a + rep #$2F + norm R3,a + clr a + move #$FF0000,a + move #$84,a2 + tst a + rep #$2F + norm R1,a + clr a + rep #$2F + norm R2,a diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_not.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_not.asm new file mode 100644 index 0000000..997fb45 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_not.asm @@ -0,0 +1,8 @@ + move #>$000FFF,y0 + move #>$7F00FF,b + andi #$00,ccr + not b + move #>$000000,y0 + move #>$FFFFFF,b + andi #$00,ccr + not b diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_or.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_or.asm new file mode 100644 index 0000000..025991f --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_or.asm @@ -0,0 +1,8 @@ + move #>$000FFF,y0 + move #>$FF00FF,b + andi #$00,ccr + or y0,b + move #>$000000,y0 + move #>$000000,b + andi #$00,ccr + or y0,b diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_rnd.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_rnd.asm new file mode 100644 index 0000000..9c7f4bb --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_rnd.asm @@ -0,0 +1,11 @@ + + andi #$00,CCR + move #>$123456,a1 + move #>$789ABC,a0 + rnd a + move #>$123456,a1 + move #>$800000,a0 + rnd a + move #>$123455,a1 + move #>$800000,a0 + rnd a diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_rol.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_rol.asm new file mode 100644 index 0000000..4f69ef6 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_rol.asm @@ -0,0 +1,6 @@ + + andi #$00,CCR + move #>$AAAAAA,a + move #>$BCDEFA,a0 + rep #24 + rol a diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_ror.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_ror.asm new file mode 100644 index 0000000..4fcca89 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_ror.asm @@ -0,0 +1,6 @@ + + andi #$00,CCR + move #>$AAAAAA,a + move #>$BCDEFA,a0 + rep #24 + ror a diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_sbc.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_sbc.asm new file mode 100644 index 0000000..7beb742 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_sbc.asm @@ -0,0 +1,15 @@ + move #>0,y0 + move #>1,y1 + clr b + move #>1,b0 +; set only carry bit + andi #$00,ccr + ori #$01,ccr + sbc y,b + move #>$800000,y1 + move #>$80,b2 + sbc y,b + clr b + move #>$80,b2 + move #>$1,y1 + sbc y,b diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_sub.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_sub.asm new file mode 100644 index 0000000..fa69320 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_sub.asm @@ -0,0 +1,15 @@ + move #>0,y0 + move #>1,y1 + clr b + move #>1,b0 +; set only carry bit + andi #$00,ccr + ori #$01,ccr + sub y,b + move #>$800000,y1 + move #>$80,b2 + sub y,b + clr b + move #>$80,b2 + move #>$1,y1 + sub y1,b diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_subl.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_subl.asm new file mode 100644 index 0000000..4d4a601 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_subl.asm @@ -0,0 +1,15 @@ + move #>0,a0 + move #>1,a1 + clr b + move #>1,b0 +; set only carry bit + andi #$00,ccr + ori #$01,ccr + subl a,b + move #>$800000,a1 + move #>$80,b2 + subl a,b + clr b + move #>$80,b2 + move #>$1,a1 + subl a,b diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_subr.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_subr.asm new file mode 100644 index 0000000..989ff9a --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_subr.asm @@ -0,0 +1,15 @@ + move #>0,a0 + move #>1,a1 + clr b + move #>1,b0 +; set only carry bit + andi #$00,ccr + ori #$01,ccr + subr a,b + move #>$800000,a1 + move #>$80,b2 + subr a,b + clr b + move #>$80,b2 + move #>$1,a1 + subr a,b diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_tcc.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_tcc.asm new file mode 100644 index 0000000..dd471b3 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_tcc.asm @@ -0,0 +1,10 @@ + move #20,r1 + move #$ABCDEF,x0 + move #$123456,b + andi #$00,ccr + tcs x0,a r1,r3 + tcc x0,b r1,r2 + ; set Zero Flag + ori #$04,ccr + teq x0,a r1,r3 + tne x0,b r1,r2 diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_tfr.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_tfr.asm new file mode 100644 index 0000000..26fa4c1 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_tfr.asm @@ -0,0 +1,7 @@ + move #$ABCDEF,a + move #$123456,b + tfr a,b b,a + move #$555555,x0 + move #$AAAAAA,y1 + tfr x0,a a,x0 + tfr y1,b b,y0 diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_tst.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_tst.asm new file mode 100644 index 0000000..b86e4a4 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_alu/test_tst.asm @@ -0,0 +1,9 @@ + clr b + tst b +; set only carry bit + andi #$00,ccr + ori #$01,ccr + move #>$80,b2 + tst b + move #>$7F,b2 + tst b diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_mem/test.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_mem/test.asm new file mode 100644 index 0000000..17599e4 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_mem/test.asm @@ -0,0 +1,8 @@ + + move #4,r0 + move #20,r1 + move r1,x:(r0) + move x:(r0),a + move r1,y:(r0) + move l:(r0)+,ab + diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_pm_l/test.asm b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_pm_l/test.asm new file mode 100644 index 0000000..821d39b --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/asm/test_pm_l/test.asm @@ -0,0 +1,21 @@ + + move #>$10,x0 + move #>$11,x1 + move #11,a1 + move #-3,a2 + jclr #0,a,blubb + bset #0,x:(r0)+ + move #>$26,y0 + move #>$27,y1 + move x,L:(r0)+ + move y,L:(r0)+ + move x,L:$0A + move y,L:$1F + move y,L:$00A0 + move x,L:$004F + move L:-(r0),x + move L:-(r0),y + move L:$0A,x + move L:$1F,y +blubb + diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/doc/Change.log b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/doc/Change.log new file mode 100644 index 0000000..1dc8d5b --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/doc/Change.log @@ -0,0 +1,185 @@ +Done: +02.01.09 + - Started work on pipeline (FE, FE2, DC, AG, EX) + - Program counter counts linearly + - Initial program memory holds program data + - Started work on instruction decoder +03.01.09 + - Jump instructions work (with flushing of the pipeline) + - First version of AGU implemented + - Detection of double word instructions + - Initial version of global register file +04.01.09 + - Included hardware stack + - Finished support for JSR and JSCC instructions + - RTI/RTS work + - ANDI/ORI work + - Initial work on REP instruction +10.01.09 + - Initial suppurt for X memory accesses. One stall cycle is introduced when + accessing the X memory. + - Finished implementation of REP instruction. Reading number of loops from + registers is still missing. + - Initial support for DO loops. + - Preventing to write the R registers when stalling occurs or a jump is + performed +11.01.09 + - Finished implementation of DO loops (stop looping at the end) + - Nested loops work + - Single instruction loops work + - ENDDO instruction implemented (very much the same as usual end of the loop) +12.01.09 + - Included Y memory and its addressing modes for REP and DO instruction. + - Setup of a sheet showing which types of which instructions have been + implemented and how many clock cycles are needed. +16.01.09 + - Integration of LUA instruction. +24.01.09 + - Integrated different addressing schemes (immediate short, immediate long, + absolute address) + - Integration and test of MOVE(C) instruction. Some modes missing (writing to + memory) + - Testing of Y memory read accesses. +26.01.09 + - Continued testing of different addressing modes. + - Decoding for first parallel move operations. +01.02.09 + - Moved memory components to an extra entity (memory_management) + - Writing to internal X and Y memory supported. Problems are possible for + reading the same address one instruction after writing at the same address! + - Included ALU registers (x,y,a,b) into register file + - Integration of x/y/l bus started +03.02.09 + - Continued testing of parallel moves (there are quite a few cases!) +07.02.09 + - Fixed REP instruction for instructions that are causing a stall due to + a memory read + - Fixed fetching from program data when stalling. + - Fixed detection of double word instruction, when previous instruction + used the AGU as well (forgot instruction word in sensitivity list). + - Continued testing of parallel moves. + - First synthesis run: Changed RAM description to map to BRAMs, removed + latches, and many things are still missing, post-synthesis results: + - Xilinx Spartan3A, Speed-Grade -4 + - 1488 FFs + - 4657 4-Input LUTs + - 3 BRAMs + - 71.08 MHz +08.02.09 + - Implemented second address generation unit in order to access X and Y + memory at the same time + - Implemented reverse carry addressing modes for FFT addressing + - Started implementation of modulo addressing. + - Set M0-M7 to -1 in reset. + - Downloaded the assembler for DSP56300. I hope to use it in order to + generate the content of the program memory automatically, which will + boost the testing speed... + - Encoding each instruction to test by hand just sucks. I think I will + integrate some bootloader in order to use the LOD files from the + assembler to initiate the RAMs. + - Implementation of data shifter and limiter (when accessing a or b and + giving the result to XDB or YDB). Needs testing. + - Integration for L: addressing modes. Needs nesting. +10.02.09 + - Fixed decoding of X: and Y: adressing mode (collided with L: adressing) + - L: adressing modes are working +14.02.09 + - Implemented BCHG,BCLR,BSET,BTST,JCLR,JSCLR,JSET,JSSET. A lot of testing + is still needed. Peripheral register accesses are still missing. + - Second synthesis run: Removed new latches again. + , many things are still missing, post-synthesis results: + - Xilinx Spartan3A, Speed-Grade -4 + - 1519 FFs + - 6210 4-Input LUTs + - 3 BRAMs + - 51.68 MHz + * Critical path for JSCLR/JSSET=> read limited a/b, go through bit modify + unit, test whether condition met, push data to stack. Reading of + limited A/B is probably a bug (DSP56001 UM says CCR is not changed, + in DSP56300 simulator the flag is set when reading a/b!!). +15.02.09 + - Started implementing the ALU. + - ABS works. + - MPY(R), MAC(R) implemented, rounding is missing. + - Clock frequency dropped to 41 MHz, but the critical path is not caused by + the MAC in the ALU! The multiplier is composed of four 18x18 multipliers + and still seems to be very fast! +16.02.09 + - Implemented decoding and controlling of ALU for + ADC, ADD, ADDL, ADDR, AND, ASL, ASR, CLR, CMP, CMPM, EOR, NEG, NOT, OR + Still missing ALU instructions: + DIV, NORM, RND, ROL, ROR, SBC, SUB, SUBL, SUBR, Tcc, TFR, TST + Except for DIV and NORM this will be straight forward. + - Other things that need to be done : + * Adress Generation Unit does not support modulo addressing. + * MOVEP/MOVEM/STOP/WAIT/ILLEGAL/RESET/SWI + * Interrupts + * External memory accesses + * Peripheral devices (SCI, SSI, Host port) +17.02.09 + - Implemented decoding and controlling of ALU instructions for + RND, ROL, ROR, SBC, SUB, SUBL, SUBR, TFR, TST + Still missing ALU instructions: + DIV, NORM, Tcc +08.03.09 + - Forgot integration of LSR and LSL instructions. TBD. + - Started integration of Condition flag generation in ALU. + - New synthesis run with ALU, register balancing: + - Xilinx Spartan3A, Speed-Grade -4 + - 3115 FFs + - 7417 4-Input LUTs + - 3 BRAMs + - 39.47 MHz +13.03.09 + - Integrated decoding of LSL/LSR instructions. + - Integrated rotating function into ALU. + - Included convergent rounding functionality into ALU. + - Implemented Tcc instruction. + - Implemented DIV instruction. +15.03.09 + - Tested ABS,ADC,ADD,ADDL,ADDR,AND,ASL,ASR,CLR,CMP,CMPM,DIV,EOR, + LSL,LSR,MPY,MPYR,MAC,MACR,NEG,NOT,OR + - Bugs fixed: + - Detection of overflow corrected when negating most negative + value $80 000000 000000. + - Decoding of ADC and TFR clarified. + - Overflow flag generation when left shifting of 56 bit values. + - For logical operations the flag generation relied on the adder + output which was wrong. Now relies on the Logical unit output. + - Decoding of CMPM clarified in order not to conflict with NOT. + - Shifter was used for CMP(M) instructions, which is wrong. + - Hopefully calculation of carry and overflow flag work correctly now... + - MPY/MAC write result back. + - Limit Flag is not cleared by the ALU anymore (has to be reset by the + user!). +16.03.09 + - Tested RND + - Bugs fixed: + - Simulator seems to misunderstand the X"1000000" where the first digit + represents a single bit. Comparing against this value fixed! RND works. + +17.03.09 + - Tested ROR,ROL,SBC,SUB,SUBL,SUBR,TCC,TFR,TST,NORM + - Integrated logic for NORM instruction support. + - ALU is complete now! + - Bugs fixed: + - Fixed setting of CCR for ROL/ROR + - TCC didn't read register through ALU + - Known bugs: + - Carry calculation for SBC is still buggy + - New synthesis run with ALU, register balancing: + - Xilinx Spartan3A, Speed-Grade -4 + - 1801 FFs + - 7407 4-Input LUTs + - 3 BRAMs + - 30.84 MHz + Critical path is in the ALU (multiplication, adding, rounding, zero-flag + calculation). I wonder why the values changed like that since the + last synthesis run. +26.03.09 + - Included support for modulo addressing in AGUs. This allows for the + integration of ring buffers. Now 7900 LUTs. +18.05.10 + - Commenting of code. + - Added second memory port for p-mem (needed for movem-instruction) + diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/adgen_stage.vhd b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/adgen_stage.vhd new file mode 100644 index 0000000..df96c27 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/adgen_stage.vhd @@ -0,0 +1,291 @@ +------------------------------------------------------------------------------ +--! @file +--! @author Matthias Alles +--! @date 01/2009 +--! @brief Address generation logic +--! +------------------------------------------------------------------------------ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity adgen_stage is port( + activate_adgen : in std_logic; + activate_x_mem : in std_logic; + activate_y_mem : in std_logic; + activate_l_mem : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + optional_ea_word : in std_logic_vector(23 downto 0); + register_file : in register_file_type; + adgen_mode_a : in adgen_mode_type; + adgen_mode_b : in adgen_mode_type; + address_out_x : out unsigned(BW_ADDRESS-1 downto 0); + address_out_y : out unsigned(BW_ADDRESS-1 downto 0); + wr_R_port_A_valid : out std_logic; + wr_R_port_A : out addr_wr_port_type; + wr_R_port_B_valid : out std_logic; + wr_R_port_B : out addr_wr_port_type +); +end entity; + + +architecture rtl of adgen_stage is + + signal address_out_x_int : unsigned(BW_ADDRESS-1 downto 0); + + signal r_reg_local_x : unsigned(BW_ADDRESS-1 downto 0); + signal n_reg_local_x : unsigned(BW_ADDRESS-1 downto 0); + signal m_reg_local_x : unsigned(BW_ADDRESS-1 downto 0); + + signal r_reg_local_y : unsigned(BW_ADDRESS-1 downto 0); + signal n_reg_local_y : unsigned(BW_ADDRESS-1 downto 0); + signal m_reg_local_y : unsigned(BW_ADDRESS-1 downto 0); + + function calculate_modulo_bitmask(m_reg_local : in unsigned ) return std_logic_vector is + variable modulo_bitmask_intern : std_logic_vector(BW_ADDRESS-1 downto 0); + begin + modulo_bitmask_intern(BW_ADDRESS-1) := m_reg_local(BW_ADDRESS-1); + for i in BW_ADDRESS-2 downto 0 loop + modulo_bitmask_intern(i) := modulo_bitmask_intern(i+1) or m_reg_local(i); + end loop; + + return modulo_bitmask_intern; + end function calculate_modulo_bitmask; + + function calculate_new_r_reg(new_r_reg_intermediate, r_reg_local, m_reg_local: in unsigned; + modulo_bitmask: in std_logic_vector ) return unsigned is + variable modulo_result : unsigned(BW_ADDRESS-1 downto 0); + variable new_r_reg_intern : unsigned(BW_ADDRESS-1 downto 0); + begin + -- cut out the bits we are interested in + -- for modulo addressing + for i in 0 to BW_ADDRESS-1 loop + if modulo_bitmask(i) = '1' then + modulo_result(i) := new_r_reg_intermediate(i); + else + modulo_result(i) := '0'; + end if; + end loop; + -- compare whether an overflow occurred and we + -- have to renormalize the result + if modulo_result > m_reg_local then + modulo_result := modulo_result - m_reg_local; + end if; + + -- linear addressing + if m_reg_local = 2**BW_ADDRESS-1 then + new_r_reg_intern := new_r_reg_intermediate; + -- bit reverse operation + elsif m_reg_local = 0 then + for i in 0 to BW_ADDRESS-1 loop + new_r_reg_intern(BW_ADDRESS - 1 - i) := new_r_reg_intermediate(i); + end loop; + -- modulo arithmetic / linear addressing + else + -- only update the bits that are part of the bitmask! + for i in 0 to BW_ADDRESS-1 loop + if modulo_bitmask(i) = '1' then + new_r_reg_intern(i) := modulo_result(i); + else + new_r_reg_intern(i) := r_reg_local(i); + end if; + end loop; + end if; + return new_r_reg_intern; + end function calculate_new_r_reg; + + procedure set_operands(r_reg_local, m_reg_local, addr_mod : in unsigned; op1, op2 : out unsigned) is + begin + -- bit reverse operation + if m_reg_local = 0 then + -- reverse the input to the adder bit wise + -- so we just need to use a single adder + for i in 0 to BW_ADDRESS-1 loop + op1(BW_ADDRESS - 1 - i) := r_reg_local(i); + op2(BW_ADDRESS - 1 - i) := addr_mod(i); + end loop; + -- modulo arithmetic / linear addressing + else + op1 := r_reg_local; + op2 := addr_mod; + end if; + end procedure set_operands; + +begin + + address_out_x <= address_out_x_int; + + r_reg_local_x <= register_file.addr_r(to_integer(unsigned(instr_word(10 downto 8)))); + n_reg_local_x <= register_file.addr_n(to_integer(unsigned(instr_word(10 downto 8)))); + m_reg_local_x <= register_file.addr_m(to_integer(unsigned(instr_word(10 downto 8)))); + + r_reg_local_y <= register_file.addr_r(to_integer(unsigned((not instr_word(10)) & instr_word(14 downto 13)))); + n_reg_local_y <= register_file.addr_n(to_integer(unsigned((not instr_word(10)) & instr_word(14 downto 13)))); + m_reg_local_y <= register_file.addr_m(to_integer(unsigned((not instr_word(10)) & instr_word(14 downto 13)))); + + address_generator_X: process(activate_adgen, instr_word, adgen_mode_a, r_reg_local_x, n_reg_local_x, m_reg_local_x) is + variable op1 : unsigned(BW_ADDRESS-1 downto 0); + variable op2 : unsigned(BW_ADDRESS-1 downto 0); + variable addr_mod : unsigned(BW_ADDRESS-1 downto 0); + variable new_r_reg : unsigned(BW_ADDRESS-1 downto 0); + variable new_r_reg_interm : unsigned(BW_ADDRESS-1 downto 0); + variable modulo_bitmask : std_logic_vector(BW_ADDRESS-1 downto 0); + variable modulo_result : unsigned(BW_ADDRESS-1 downto 0); + begin + + -- select the operands for the calculation + case adgen_mode_a is + -- (Rn) - Nn + when POST_MIN_N => addr_mod := unsigned(- signed(n_reg_local_x)); + -- (Rn) + Nn + when POST_PLUS_N => addr_mod := n_reg_local_x; + -- (Rn)- + when POST_MIN_1 => addr_mod := (others => '1'); -- -1 + -- (Rn)+ + when POST_PLUS_1 => addr_mod := to_unsigned(1, BW_ADDRESS); + -- (Rn) + when NOP => addr_mod := (others => '0'); + -- (Rn + Nn) + when INDEXED_N => addr_mod := n_reg_local_x; + -- -(Rn) + when PRE_MIN_1 => addr_mod := (others => '1'); -- - 1 + -- absolute address (appended to instruction word) + when ABSOLUTE => addr_mod := (others => '0'); + when IMMEDIATE => addr_mod := (others => '0'); + end case; + + ------------------------------------------------ + -- set op1 and op2 according to modulo register + ------------------------------------------------ + set_operands(r_reg_local_x, m_reg_local_x, addr_mod, op1, op2); + + ------------------------- + -- Calculate new address + ------------------------- + new_r_reg_interm := op1 + op2; + + ---------------------------------- + -- Calculate new register content + ----------------------------------- + modulo_bitmask := calculate_modulo_bitmask(m_reg_local_x); + new_r_reg := calculate_new_r_reg(new_r_reg_interm, r_reg_local_x, m_reg_local_x, modulo_bitmask); + + -- store the updated register in the global register file + -- do not store when we do nothing or there is nothing to update + -- LUA instructions DO NOT UPDATE the source register!! + if (adgen_mode_a = NOP or adgen_mode_a = ABSOLUTE or adgen_mode_a = IMMEDIATE or instr_array = INSTR_LUA) then + wr_R_port_A_valid <= '0'; + else + wr_R_port_A_valid <= '1'; + end if; + wr_R_port_A.reg_number <= unsigned(instr_word(10 downto 8)); + wr_R_port_A.reg_value <= new_r_reg; + + -- select the output of the AGU + case adgen_mode_a is + -- (Rn) - Nn + when POST_MIN_N => address_out_x_int <= r_reg_local_x; + -- (Rn) + Nn + when POST_PLUS_N => address_out_x_int <= r_reg_local_x; + -- (Rn)- + when POST_MIN_1 => address_out_x_int <= r_reg_local_x; + -- (Rn)+ + when POST_PLUS_1 => address_out_x_int <= r_reg_local_x; + -- (Rn) + when NOP => address_out_x_int <= r_reg_local_x; + -- (Rn + Nn) + when INDEXED_N => address_out_x_int <= new_r_reg; + -- -(Rn) + when PRE_MIN_1 => address_out_x_int <= new_r_reg; + -- absolute address (appended to instruction word) + when ABSOLUTE => address_out_x_int <= unsigned(optional_ea_word(BW_ADDRESS-1 downto 0)); + when IMMEDIATE => address_out_x_int <= r_reg_local_x; -- Done externally, value never used + end case; + -- LUA instructions only use the updated address! + if instr_array = INSTR_LUA then + address_out_x_int <= new_r_reg; + end if; + + end process address_generator_X; + + + --------------------------------------------------------- + -- Second address generator + -- Used when accessing X and Y memory at the same time + --------------------------------------------------------- + address_generator_Y: process(activate_adgen, activate_x_mem, activate_y_mem, activate_l_mem, instr_word, + register_file, adgen_mode_b, address_out_x_int, r_reg_local_y, n_reg_local_y, m_reg_local_y) is + variable op1 : unsigned(BW_ADDRESS-1 downto 0); + variable op2 : unsigned(BW_ADDRESS-1 downto 0); + variable addr_mod : unsigned(BW_ADDRESS-1 downto 0); + variable new_r_reg : unsigned(BW_ADDRESS-1 downto 0); + variable new_r_reg_interm : unsigned(BW_ADDRESS-1 downto 0); + variable modulo_bitmask : std_logic_vector(BW_ADDRESS-1 downto 0); + variable modulo_result : unsigned(BW_ADDRESS-1 downto 0); + begin + + -- select the operands for the calculation + case adgen_mode_b is + -- (Rn) + Nn + when POST_PLUS_N => addr_mod := n_reg_local_y; + -- (Rn)- + when POST_MIN_1 => addr_mod := (others => '1'); -- -1 + -- (Rn)+ + when POST_PLUS_1 => addr_mod := to_unsigned(1, BW_ADDRESS); + -- (Rn) + when others => addr_mod := (others => '0'); + end case; + + ------------------------------------------------ + -- set op1 and op2 according to modulo register + ------------------------------------------------ + set_operands(r_reg_local_y, m_reg_local_y, addr_mod, op1, op2); + + ------------------------- + -- Calculate new address + ------------------------- + new_r_reg_interm := op1 + op2; + + ---------------------------------- + -- Calculate new register content + ----------------------------------- + modulo_bitmask := calculate_modulo_bitmask(m_reg_local_y); + new_r_reg := calculate_new_r_reg(new_r_reg_interm, r_reg_local_y, m_reg_local_y, modulo_bitmask); + + -- store the updated register in the global register file + -- do not store when we do nothing or there is nothing to update + if adgen_mode_b = NOP then + wr_R_port_B_valid <= '0'; + else + wr_R_port_B_valid <= '1'; + end if; + wr_R_port_B.reg_number <= unsigned((not instr_word(10)) & instr_word(14 downto 13)); + wr_R_port_B.reg_value <= new_r_reg; + + -- the address for the y memory is calculated in the first AGU if the x memory is not accessed! + -- so use the other output as address output for the y memory! + -- Furthermore, use the same address for L memory accesses (X and Y memory access the same address!) + if (activate_y_mem = '1' and activate_x_mem = '0') or activate_l_mem = '1' then + address_out_y <= address_out_x_int; + -- in any other case use the locally computed value + else + -- select the output of the AGU + case adgen_mode_b is + -- (Rn) + Nn + when POST_PLUS_N => address_out_y <= r_reg_local_y; + -- (Rn)- + when POST_MIN_1 => address_out_y <= r_reg_local_y; + -- (Rn)+ + when POST_PLUS_1 => address_out_y <= r_reg_local_y; + -- (Rn) + when others => address_out_y <= r_reg_local_y; + end case; + end if; + end process address_generator_Y; + +end architecture; diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/constants_pkg.vhd b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/constants_pkg.vhd new file mode 100644 index 0000000..c84a406 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/constants_pkg.vhd @@ -0,0 +1,74 @@ +------------------------------------------------------------------------------ +--! @file +--! @author Matthias Alles +--! @date 01/2009 +--! @brief General constants for decoding pipeline. +--! +------------------------------------------------------------------------------ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; + + +package constants_pkg is + + + ------------------------- + -- Flags in CCR register + ------------------------- + + constant C_FLAG : natural := 0; + constant V_FLAG : natural := 1; + constant Z_FLAG : natural := 2; + constant N_FLAG : natural := 3; + constant U_FLAG : natural := 4; + constant E_FLAG : natural := 5; + constant L_FLAG : natural := 6; + constant S_FLAG : natural := 7; + + + ------------------- + -- Pipeline stages + ------------------- + + constant ST_FE_FE2 : natural := 0; + constant ST_FE2_DEC : natural := 1; + constant ST_DEC_ADG : natural := 2; + constant ST_ADG_EX : natural := 3; + + + ---------------------- + -- Activation signals + ---------------------- + + constant ACT_ADGEN : natural := 0; -- Run the address generator + constant ACT_ALU : natural := 1; -- Activation of ALU results in modification of the status register + constant ACT_EXEC_BRA : natural := 2; -- Branch (in execute stage) + constant ACT_EXEC_CR_MOD : natural := 3; -- Control Register Modification (in execute stage) + constant ACT_EXEC_LOOP : natural := 4; -- Loop instruction (REP, DO) + constant ACT_X_MEM_RD : natural := 5; -- Init read from X memory + constant ACT_Y_MEM_RD : natural := 6; -- Init read from Y memory + constant ACT_P_MEM_RD : natural := 7; -- Init read from P memory + constant ACT_X_MEM_WR : natural := 8; -- Init write to X memory + constant ACT_Y_MEM_WR : natural := 9; -- Init write to Y memory + constant ACT_P_MEM_WR : natural := 10; -- Init write to P memory + constant ACT_REG_RD : natural := 11; -- Read from register (6 bit addressing) + constant ACT_REG_WR : natural := 12; -- Write to register (6 bit addressing) + constant ACT_IMM_8BIT : natural := 13; -- 8 bit immediate operand (in instruction word) + constant ACT_IMM_12BIT : natural := 14; -- 12 bit immediate operand (in instruction word) + constant ACT_IMM_LONG : natural := 15; -- 24 bit immediate operant (in optional instruction word) + constant ACT_X_BUS_RD : natural := 16; -- Read data via X-bus (from x0,x1,a,b) + constant ACT_X_BUS_WR : natural := 17; -- Write data via X-bus (to x0,x1,a,b) + constant ACT_Y_BUS_RD : natural := 18; -- Read data via Y-bus (from y0,y1,a,b) + constant ACT_Y_BUS_WR : natural := 19; -- Write data via Y-bus (to y0,y1,a,b) + constant ACT_L_BUS_RD : natural := 20; -- Read data via L-bus (from a10, b10,x,y,a,b,ab,ba) + constant ACT_L_BUS_WR : natural := 21; -- Write data via L-bus (to a10, b10,x,y,a,b,ab,ba) + constant ACT_BIT_MOD_WR : natural := 22; -- Bit modify write (to set for BSET, BCLR, BCHG) + constant ACT_REG_WR_CC : natural := 23; -- Write to register file conditionally (Tcc) + constant ACT_ALU_WR_CC : natural := 24; -- Write ALU result conditionally (Tcc) + constant ACT_NORM : natural := 25; -- NORM instruction needs special handling + +end package constants_pkg; diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/decode_stage.vhd b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/decode_stage.vhd new file mode 100644 index 0000000..0725c6b --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/decode_stage.vhd @@ -0,0 +1,1226 @@ +------------------------------------------------------------------------------ +--! @file +--! @author Matthias Alles +--! @date 01/2009 +--! @brief Instruction Decoder +--! +--! @details This entity generates multiple flags depending on the instruction +--! word. The flags are used for activation of certain logic units within the +--! subsequent pipeline stages (ALU, AGU, bit modifications, ...). Also the +--! decoder checks whether currently we are processing a double word +--! instruction. +--! +------------------------------------------------------------------------------ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity decode_stage is port( + activate_dec : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + dble_word_instr : out std_logic; + instr_array : out instructions_type; + act_array : out std_logic_vector(NUM_ACT_SIGNALS-1 downto 0); + reg_wr_addr : out std_logic_vector(5 downto 0); + reg_rd_addr : out std_logic_vector(5 downto 0); + x_bus_rd_addr : out std_logic_vector(1 downto 0); + x_bus_wr_addr : out std_logic_vector(1 downto 0); + y_bus_rd_addr : out std_logic_vector(1 downto 0); + y_bus_wr_addr : out std_logic_vector(1 downto 0); + l_bus_addr : out std_logic_vector(2 downto 0); + adgen_mode_a : out adgen_mode_type; + adgen_mode_b : out adgen_mode_type; + alu_ctrl : out alu_ctrl_type +); +end entity; + + +architecture rtl of decode_stage is + + signal instr_array_int : instructions_type; +-- signal activate_pm_int : std_logic; + type adgen_bittype_type is (NOP, SINGLE_X, SINGLE_X_SHORT, DOUBLE_X_Y); + -- SINGLE_X : MMMRRR + -- SINGLE_X_SHORT : MMRRR + -- DOUBLE_X_Y : mmrrMMRRR + signal adgen_bittype : adgen_bittype_type; + + signal ea_extension_available : std_logic; + + signal alu_tcc_decoded : std_logic; + signal alu_div_decoded : std_logic; + signal alu_norm_decoded : std_logic; + +begin + + + -- output the decoded instruction + instr_array <= instr_array_int; + + -- calculate whether this is a double word instruction + dble_word_instr <= '1' when ea_extension_available = '1' or + instr_array_int = INSTR_DO or + instr_array_int = INSTR_JCLR or + instr_array_int = INSTR_JSCLR or + instr_array_int = INSTR_JSET or + instr_array_int = INSTR_JSSET else + '0'; + + alu_instruction_decoder: process(instr_word, activate_dec, alu_tcc_decoded, + alu_div_decoded, alu_norm_decoded) is + variable instr_word_var : std_logic_vector(23 downto 0); + begin + if activate_dec = '1' then + instr_word_var := instr_word; + else + instr_word_var := (others => '0'); + end if; + + alu_ctrl.mul_op1 <= (others => '0'); + alu_ctrl.mul_op2 <= (others => '0'); + alu_ctrl.rotate <= '0'; + alu_ctrl.div_instr <= '0'; + alu_ctrl.norm_instr <= '0'; + alu_ctrl.shift_src <= '0'; + alu_ctrl.shift_src_sign <= (others => '0'); + alu_ctrl.shift_mode <= ZEROS; + alu_ctrl.add_src_stage_1 <= (others => '0'); + alu_ctrl.add_src_stage_2 <= (others => '0'); + alu_ctrl.add_src_sign <= (others => '0'); + alu_ctrl.logic_function <= (others => '0'); + alu_ctrl.word_24_update <= '0'; + alu_ctrl.rounding_used <= (others => '0'); + alu_ctrl.store_result <= '0'; + for i in 0 to 7 loop -- by default do not touch any of the ccr flags (L;E;U;N;Z;V;C) + alu_ctrl.ccr_flags_ctrl(i) <= DONT_TOUCH; + end loop; + alu_ctrl.dst_accu <= instr_word_var(3); -- default value for all alu operations + + -- check wether instruction that allows parallel moves + -- has to be decoded, then it is an ALU operation in the 8 LSBs + -- Only exceptions are DIV, NORM, and Tcc + if instr_word_var(23 downto 20) /= "0000" then + -- ABS + if instr_word_var(7 downto 4) = "0010" and instr_word_var(2 downto 0) = "110" then + -- Read accu + alu_ctrl.shift_mode <= NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- source/dst are the same register + alu_ctrl.shift_src_sign <= "10"; -- the sign of the operand depends on the operand + -- negative operand will negate the content of the accu as + -- needed by the ABS instruction + alu_ctrl.add_src_stage_2 <= "00"; -- select zero + alu_ctrl.store_result <= '1'; -- store the result + -- set all flags but carry + for i in 1 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- ADC + if instr_word_var(7 downto 5) = "001" and instr_word_var(2 downto 0) = "001" then + -- Read accu + alu_ctrl.shift_mode <= NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with the original sign + -- Read S + alu_ctrl.add_src_stage_1 <= "01" & instr_word_var(4); -- X or Y + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "00"; -- with original sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "10"; -- add carry to result of addition + -- set all flags + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- ADD + if instr_word_var(7) = '0' and instr_word_var(2 downto 0) = "000" and instr_word_var(6 downto 4) /= "000" then + -- Read accu + alu_ctrl.shift_mode <= NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with the original sign + -- Read S + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 4); -- source register (JJJ encoding) + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "00"; -- with original sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set all flags + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- ADDL + if instr_word_var(7 downto 4) = "0001" and instr_word_var(2 downto 0) = "010" then + -- Read accu + alu_ctrl.shift_mode <= SHIFT_LEFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with the original sign + -- Read S + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 4); -- source register (JJJ encoding) (here: A,B) + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "00"; -- with original sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set all flags + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- ADDR + if instr_word_var(7 downto 4) = "0000" and instr_word_var(2 downto 0) = "010" then + -- Read accu + alu_ctrl.shift_mode <= SHIFT_RIGHT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with the original sign + -- Read S + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 5) & '1'; -- source register (JJJ encoding) (here: A,B) + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "00"; -- with original sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set all flags + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- AND / OR / EOR + if instr_word_var(7 downto 6) = "01" and (instr_word_var(2 downto 0) = "110" or -- and + instr_word_var(2 downto 0) = "010" or -- or + instr_word_var(2 downto 0) = "011") then -- eor + alu_ctrl.logic_function <= instr_word_var(2 downto 0); -- 000: none, 110: and, 010: or, 011: eor, 111: not + alu_ctrl.word_24_update <= '1'; -- only accumulator bits 47 downto 24 affected? + -- Read accu + alu_ctrl.shift_mode <= NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with the original sign + -- Read S + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 4); -- source register (JJJ encoding) (here: A,B) + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "00"; -- with original sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set following flags + alu_ctrl.ccr_flags_ctrl(N_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(Z_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(V_FLAG) <= CLEAR; + end if; + -- ASL + if instr_word_var(7 downto 4) = "0011" and instr_word_var(2 downto 0) = "010" then + -- Read accu + alu_ctrl.shift_mode <= SHIFT_LEFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with the original sign + -- Read S + alu_ctrl.add_src_stage_2 <= "00"; -- select zero as operand + alu_ctrl.add_src_sign <= "00"; -- with original sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set all flags + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- ASR + if instr_word_var(7 downto 4) = "0010" and instr_word_var(2 downto 0) = "010" then + -- Read accu + alu_ctrl.shift_mode <= SHIFT_RIGHT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with the original sign + -- Read S + alu_ctrl.add_src_stage_2 <= "00"; -- select zero as operand + alu_ctrl.add_src_sign <= "00"; -- with original sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set all flags, V-flag will be cleared due to shifting + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- CLR + if instr_word_var(7 downto 4) = "0001" and instr_word_var(2 downto 0) = "011" then + -- Read accu + alu_ctrl.shift_mode <= ZEROS; + -- Read S + alu_ctrl.add_src_stage_2 <= "00"; -- select zero as operand + alu_ctrl.add_src_sign <= "00"; -- with original sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set following flags + alu_ctrl.ccr_flags_ctrl(S_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(E_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(U_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(N_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(Z_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(V_FLAG) <= CLEAR; + end if; + -- CMP + if instr_word_var(7) = '0' and instr_word_var(6 downto 5) /= "01" and + instr_word_var(2 downto 0) = "101" then + -- Read accu + alu_ctrl.shift_mode <= NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with the original sign + -- Read S + if instr_word_var(6) = '1' then + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 4); -- source register (JJJ encoding) x0,x1,y0,y1 + else + alu_ctrl.add_src_stage_1 <= "001"; -- select opposite accu (JJJ encoding) + end if; + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "01"; -- with negative sign + alu_ctrl.store_result <= '0'; -- do not store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set all flags + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- CMPM + if instr_word_var(7) = '0' and instr_word_var(6 downto 5) /= "01" and + instr_word_var(2 downto 0) = "111" then + -- Read accu + alu_ctrl.shift_mode <= NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "10"; -- with the sign dependant sign (magnitude!) + -- Read S + if instr_word_var(6) = '1' then + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 4); -- source register (JJJ encoding) x0,x1,y0,y1 + else + alu_ctrl.add_src_stage_1 <= "001"; -- select opposite accu (JJJ encoding) + end if; + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "10"; -- with sign dependant sign (magnitude!) + alu_ctrl.store_result <= '0'; -- do not store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set all flags + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- LSL + if instr_word_var(7 downto 4) = "0011" and instr_word_var(2 downto 0) = "011" then + alu_ctrl.word_24_update <= '1'; + -- Read accu + alu_ctrl.shift_mode <= SHIFT_LEFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with normal sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + alu_ctrl.add_src_stage_2 <= "00"; -- select zero as second operand + -- set N,Z,V,C flags + for i in 0 to 3 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- LSR + if instr_word_var(7 downto 4) = "0010" and instr_word_var(2 downto 0) = "011" then + alu_ctrl.word_24_update <= '1'; + -- Read accu + alu_ctrl.shift_mode <= SHIFT_RIGHT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with normal sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + alu_ctrl.add_src_stage_2 <= "00"; -- select zero as second operand + -- set N,Z,V,C flags + for i in 0 to 3 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- MPY, MPYR, MAC, MACR + if instr_word_var(7) = '1' then + case instr_word_var(6 downto 4) is + when "000" => alu_ctrl.mul_op1 <= "00"; alu_ctrl.mul_op2 <= "00"; -- x0,x0 + when "001" => alu_ctrl.mul_op1 <= "10"; alu_ctrl.mul_op2 <= "10"; -- y0,y0 + when "010" => alu_ctrl.mul_op1 <= "01"; alu_ctrl.mul_op2 <= "00"; -- x1,x0 + when "011" => alu_ctrl.mul_op1 <= "11"; alu_ctrl.mul_op2 <= "10"; -- y1,y0 + when "100" => alu_ctrl.mul_op1 <= "00"; alu_ctrl.mul_op2 <= "11"; -- x0,y1 + when "101" => alu_ctrl.mul_op1 <= "10"; alu_ctrl.mul_op2 <= "00"; -- y0,x0 + when "110" => alu_ctrl.mul_op1 <= "01"; alu_ctrl.mul_op2 <= "10"; -- x1,y0 + when others => alu_ctrl.mul_op1 <= "11"; alu_ctrl.mul_op2 <= "01"; -- y1,x1 + end case; + alu_ctrl.store_result <= '1'; -- store result in accu + alu_ctrl.add_src_stage_2 <= "10"; -- select mul out for adder! + alu_ctrl.add_src_sign <= '0' & instr_word_var(2); -- select +/- + alu_ctrl.rounding_used <= '0' & instr_word_var(0); -- rounding is determined by that bit! + if instr_word_var(1) = '0' then -- MPY(R) + alu_ctrl.shift_mode <= ZEROS; + else -- MAC(R) + alu_ctrl.shift_mode <= NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with the original sign + end if; + -- set all flags but carry! + for i in 1 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- NEG + if instr_word_var(7 downto 4) = "0011" and instr_word_var(2 downto 0) = "110" then + -- Read accu + alu_ctrl.shift_mode <= ZEROS; +-- alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to +-- alu_ctrl.shift_src_sign <= "01"; -- with negative sign + -- Read Accu + alu_ctrl.add_src_stage_1 <= "000"; -- source register equal to dst_register + alu_ctrl.add_src_stage_2 <= "01"; -- select register as operand + alu_ctrl.add_src_sign <= "01"; -- with negative sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set all flags but carry! + for i in 1 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- NOT + if instr_word_var(7 downto 4) = "0001" and instr_word_var(2 downto 0) = "111" then + alu_ctrl.word_24_update <= '1'; + -- Read accu + alu_ctrl.shift_mode <= NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with normal sign + alu_ctrl.logic_function <= instr_word_var(2 downto 0); -- select not operation + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set following flags + alu_ctrl.ccr_flags_ctrl(N_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(Z_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(V_FLAG) <= CLEAR; + end if; + -- RND + if instr_word_var(7 downto 4) = "0001" and instr_word_var(2 downto 0) = "001" then + -- Read accu + alu_ctrl.shift_mode <= NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with normal sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "01"; -- normal rounding needed + alu_ctrl.add_src_stage_2 <= "00"; -- select zero as second operand + -- set all flags but carry! + for i in 1 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- ROL + if instr_word_var(7 downto 4) = "0011" and instr_word_var(2 downto 0) = "111" then + alu_ctrl.word_24_update <= '1'; + alu_ctrl.rotate <= '1'; + -- Read accu + alu_ctrl.shift_mode <= SHIFT_LEFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with normal sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + alu_ctrl.add_src_stage_2 <= "00"; -- select zero as second operand + -- set the following flags + alu_ctrl.ccr_flags_ctrl(C_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(V_FLAG) <= CLEAR; + alu_ctrl.ccr_flags_ctrl(Z_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(N_FLAG) <= MODIFY; + end if; + -- ROR + if instr_word_var(7 downto 4) = "0010" and instr_word_var(2 downto 0) = "111" then + alu_ctrl.word_24_update <= '1'; + alu_ctrl.rotate <= '1'; + -- Read accu + alu_ctrl.shift_mode <= SHIFT_RIGHT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with normal sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + alu_ctrl.add_src_stage_2 <= "00"; -- select zero as second operand + -- set the following flags + alu_ctrl.ccr_flags_ctrl(C_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(V_FLAG) <= CLEAR; + alu_ctrl.ccr_flags_ctrl(Z_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(N_FLAG) <= MODIFY; + end if; + -- SBC + if instr_word_var(7 downto 5) = "001" and instr_word_var(2 downto 0) = "101" then + -- Read accu + alu_ctrl.shift_mode <= NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with normal sign + -- Read S + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 4); -- source register (JJJ encoding) X,Y + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "01"; -- with negative sign + alu_ctrl.rounding_used <= "11"; -- subtract carry + alu_ctrl.store_result <= '1'; -- store the result + -- set all flags! + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- SUB + if instr_word_var(7) = '0' and instr_word_var(2 downto 0) = "100" then + -- Read accu + alu_ctrl.shift_mode <= NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with normal sign + -- Read S + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 4); -- source register (JJJ encoding) + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "01"; -- with negative sign + alu_ctrl.rounding_used <= "00"; -- no rounding needed + alu_ctrl.store_result <= '1'; -- store the result + -- set all flags! + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- SUBL + if instr_word_var(7 downto 4) = "0001" and instr_word_var(2 downto 0) = "110" then + -- Read accu + alu_ctrl.shift_mode <= SHIFT_LEFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with normal sign + -- Read S + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 4); -- source register (JJJ encoding) + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "01"; -- with negative sign + alu_ctrl.rounding_used <= "00"; -- no rounding needed + alu_ctrl.store_result <= '1'; -- store the result + -- set all flags! + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- SUBR + if instr_word_var(7 downto 4) = "0000" and instr_word_var(2 downto 0) = "110" then + -- Read accu + alu_ctrl.shift_mode <= SHIFT_RIGHT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with normal sign + -- Read S + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 5) & '1'; -- source register (JJJ encoding) + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "01"; -- with negative sign + alu_ctrl.rounding_used <= "00"; -- no rounding needed + alu_ctrl.store_result <= '1'; -- store the result + -- set all flags! + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + -- TFR + if instr_word_var(7) = '0' and instr_word_var(6 downto 5) /= "01" and + instr_word_var(6 downto 4) /= "001" and instr_word_var(2 downto 0) = "001" then + -- do not read accu + alu_ctrl.shift_mode <= ZEROS; + -- Read S + if instr_word_var(6) = '1' then + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 4); -- source register (JJJ encoding) + else + alu_ctrl.add_src_stage_1 <= "001"; -- B,A or A,B (depending on dest. accu) + end if; + alu_ctrl.add_src_stage_2 <= "01"; -- select the register source + alu_ctrl.add_src_sign <= "00"; -- with positive sign + alu_ctrl.rounding_used <= "00"; -- no rounding needed + alu_ctrl.store_result <= '1'; -- store the result + -- do not set any flag at all! + end if; + -- TST + if instr_word_var(7 downto 4) = "0000" and instr_word_var(2 downto 0) = "011" then + -- do not read accu + alu_ctrl.shift_mode <= NO_SHIFT; -- no shift + alu_ctrl.shift_src <= instr_word_var(3); -- read source accu + alu_ctrl.shift_src_sign <= "00"; -- sign unchanged + -- Read S + alu_ctrl.add_src_stage_2 <= "00"; -- select zero + alu_ctrl.add_src_sign <= "00"; -- with positive sign + alu_ctrl.rounding_used <= "00"; -- no rounding needed + alu_ctrl.store_result <= '0'; -- do not store the result + -- set all flags but carry! + for i in 1 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + end if; + end if; -- Parallel move ALU instructions + + -- Tcc + if alu_tcc_decoded = '1' then + -- Read source + if instr_word_var(6) = '1' then + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 4); -- source register (JJJ encoding) + else + alu_ctrl.add_src_stage_1 <= "001"; -- B,A or A,B (depending on dest. accu) + end if; + alu_ctrl.add_src_stage_2 <= "01"; -- select the registers as source + -- The .store_result flag is generated in the execute stage + -- depending on the condition codes + -- do not set any flag at all! + end if; +--mul_op1 : std_logic_vector(1 downto 0); -- x0,x1,y0,y1 +--mul_op2 : std_logic_vector(1 downto 0); -- x0,x1,y0,y1 +--shift_src : std_logic; -- a,b +--shift_src_sign : std_logic_vector(1 downto 0); -- 00: pos, 01: neg, 10: sign dependant, 11: reserved +--shift_mode : alu_shift_mode; +--add_src_stage_1 : std_logic_vector(2 downto 0); -- x0,x1,y0,y1,x,y,a,b +--add_src_stage_2 : std_logic_vector(1 downto 0); -- 00: 0 , 01: add_src_1, 10: mul_result, 11: reserved +--add_src_sign : std_logic_vector(1 downto 0); -- 00: pos, 01: neg, 10: sign dependant, 11: div instruction! +--logic_function : std_logic_vector(2 downto 0); -- 000: none, 110: and, 010: or, 011: eor, 111: not +--word_24_update : std_logic; -- only accumulator bits 47 downto 24 affected? +--rounding_used : std_logic_vector(1 downto 0); -- 00: no rounding, 01: rounding, 10: add carry, 11: subtract carry +--store_result : std_logic; -- 0: do not update accumulator, 1: update accumulator +--dst_accu : std_logic; -- 0: a, 1: b + -- DIV + if alu_div_decoded = '1' then + alu_ctrl.store_result <= '1'; -- do store the result + -- shifter operation + alu_ctrl.shift_mode <= SHIFT_LEFT; -- shift left + alu_ctrl.shift_src <= instr_word_var(3); -- read source accu + alu_ctrl.div_instr <= '1'; -- this is THE div instruction, special handling needed + -- source operand loading + alu_ctrl.add_src_stage_1 <= instr_word_var(6 downto 4); -- source register (JJJ encoding) + alu_ctrl.add_src_stage_2 <= "01"; -- select the registers as source + alu_ctrl.add_src_sign <= "11"; -- div instruction, sign dependant on D[55] XOR S[23] + -- if 1: positive, if 0: negative + alu_ctrl.ccr_flags_ctrl(C_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(V_FLAG) <= MODIFY; + alu_ctrl.ccr_flags_ctrl(L_FLAG) <= MODIFY; + end if; + -- NORM + if alu_norm_decoded = '1' then + -- set all alu-ctrl signals to ASL/ASR already here + -- depending on the condition code registers the flags + -- will be completed in the execute stage + alu_ctrl.norm_instr <= '1'; + -- Read accu + --alu_ctrl.shift_mode <= SHIFT_RIGHT/SHIFT_LEFT/NO_SHIFT; + alu_ctrl.shift_src <= instr_word_var(3); -- accumulate to the same register we want to write to + alu_ctrl.shift_src_sign <= "00"; -- with the original sign + -- Read S + alu_ctrl.add_src_stage_2 <= "00"; -- select zero as operand + alu_ctrl.add_src_sign <= "00"; -- with original sign + alu_ctrl.store_result <= '1'; -- store the result + alu_ctrl.rounding_used <= "00"; -- no rounding needed + -- set all flags, V-flag will be cleared due to shifting + for i in 0 to 7 loop + alu_ctrl.ccr_flags_ctrl(i) <= MODIFY; + end loop; + + end if; + end process; + + + instruction_decoder: process(instr_word, activate_dec) is + variable instr_word_var : std_logic_vector(23 downto 0); + procedure activate_AGU is + begin + -- check for immediate long addressing + if instr_word_var(13 downto 8) = "110100" then + act_array(ACT_IMM_LONG) <= '1'; + act_array(ACT_X_MEM_RD) <= '0'; -- No memory accesses for Immediate addressing! + act_array(ACT_Y_MEM_RD) <= '0'; + act_array(ACT_X_MEM_WR) <= '0'; + act_array(ACT_Y_MEM_WR) <= '0'; + else + act_array(ACT_ADGEN) <= '1'; + end if; + end procedure activate_AGU; + begin + instr_array_int <= INSTR_NOP; + act_array <= (others => '0'); + adgen_bittype <= NOP; + reg_rd_addr <= (others => '0'); + reg_wr_addr <= (others => '0'); + x_bus_rd_addr <= (others => '0'); + x_bus_wr_addr <= (others => '0'); + y_bus_rd_addr <= (others => '0'); + y_bus_wr_addr <= (others => '0'); + l_bus_addr <= instr_word_var(19) & instr_word_var(17 downto 16); + + alu_tcc_decoded <= '0'; + alu_div_decoded <= '0'; + alu_norm_decoded <= '0'; + + -- in case the decoding is not activated we insert a nop + if activate_dec = '1' then + instr_word_var := instr_word; + else + instr_word_var := (others => '0'); + end if; + + if instr_word_var(23 downto 16) = X"00" then + case instr_word_var(15 downto 0) is + when X"0000" => instr_array_int <= INSTR_NOP; + when X"0004" => instr_array_int <= INSTR_RTI; act_array(ACT_EXEC_BRA) <= '1'; + when X"0005" => instr_array_int <= INSTR_ILLEGAL; + when X"0006" => instr_array_int <= INSTR_SWI; + when X"000C" => instr_array_int <= INSTR_RTS; act_array(ACT_EXEC_BRA) <= '1'; + when X"0084" => instr_array_int <= INSTR_RESET; + when X"0086" => instr_array_int <= INSTR_WAIT; + when X"0087" => instr_array_int <= INSTR_STOP; + when X"008C" => instr_array_int <= INSTR_ENDDO; + act_array(ACT_EXEC_LOOP) <= '1'; + when others => + act_array(ACT_EXEC_CR_MOD) <= '1'; -- modify control register + if instr_word_var(7 downto 2) = "101110" then + instr_array_int <= INSTR_ANDI; + elsif instr_word_var(7 downto 2) = "111110" then + instr_array_int <= INSTR_ORI; + end if; + end case; + end if; + --------------------------------------------------------- + -- DIV and NORM + --------------------------------------------------------- + if instr_word_var(23 downto 16) = X"01" then + -- DIV + if instr_word_var(15 downto 6) = "1000000001" and instr_word_var(2 downto 0) = "000" then + alu_div_decoded <= '1'; + act_array(ACT_ALU) <= '1'; -- force ALU to update status register + end if; + -- NORM + if instr_word_var(15 downto 11) = "11011" and instr_word_var(7 downto 4) = "0001" and + instr_word_var(2 downto 0) = "101" then + alu_norm_decoded <= '1'; + act_array(ACT_NORM) <= '1'; -- NORM instruction decoded, + -- special handling in exec-stage is caused + act_array(ACT_REG_RD) <= '1'; + reg_rd_addr <= instr_word_var(13 downto 12) & '0' & instr_word_var(10 downto 8); -- Write same Rn + act_array(ACT_REG_WR) <= '1'; + reg_wr_addr <= instr_word_var(13 downto 12) & '0' & instr_word_var(10 downto 8); -- Write same Rn + end if; + end if; + --------------------------------------------------------- + -- Tcc + --------------------------------------------------------- + if instr_word_var(23 downto 16) = X"02" or instr_word_var(23 downto 16) = X"03" then + -- Tcc S1, D1 S2, D2 (ALU/Reg file) + if instr_word_var(16) = '0' and instr_word_var(11 downto 7) = "00000" and + instr_word_var(2 downto 0) = "000" then + act_array(ACT_ALU_WR_CC) <= '1'; + alu_tcc_decoded <= '1'; + -- Tcc S1, D1 S2, D2 (ALU/Reg file) + elsif instr_word_var(16) = '1' and instr_word_var(11) = '0' and + instr_word_var(7) = '0' then + act_array(ACT_ALU_WR_CC) <= '1'; + alu_tcc_decoded <= '1'; + act_array(ACT_REG_WR_CC) <= '1'; + reg_rd_addr <= "010" & instr_word_var(10 downto 8); -- Read Rn + reg_wr_addr <= "010" & instr_word_var( 2 downto 0); -- Write to other Rn + end if; + end if; + --------------------------------------------------------- + -- MOVEC and LUA instruction with registers + --------------------------------------------------------- + if instr_word_var(23 downto 16) = X"04" then + act_array(ACT_REG_WR) <= '1'; + -- LUA instruction + if instr_word_var(15 downto 13) = "010" and instr_word_var(7 downto 4) = "0001" then + instr_array_int <= INSTR_LUA; + act_array(ACT_ADGEN) <= '1'; + adgen_bittype <= SINGLE_X_SHORT; + reg_wr_addr <= instr_word_var(5 downto 0); + end if; + -- MOVEC instruction (S1, D2) or (S2, D1) + if instr_word_var(14) = '1' and instr_word_var(7 downto 5) = "101" then + instr_array_int <= INSTR_MOVEC; + act_array(ACT_REG_RD) <= '1'; + -- Write D1 + if instr_word_var(15) = '1' then + reg_wr_addr <= instr_word_var(5 downto 0); + reg_rd_addr <= instr_word_var(13 downto 8); + -- Read S1 + else + reg_wr_addr <= instr_word_var(13 downto 8); + reg_rd_addr <= instr_word_var(5 downto 0); + end if; + end if; + end if; + ------------------------------------------------------------------------- + -- MOVEC instruction with memory access/absolute address + ------------------------------------------------------------------------- + if instr_word_var(23 downto 16) = X"05" and + instr_word_var(7) = '0' and instr_word_var(5) = '1' then + + instr_array_int <= INSTR_MOVEC; + -- read from memory, write to register + if instr_word_var(15) = '1' then + act_array(ACT_REG_WR) <= '1'; + reg_wr_addr <= instr_word_var(5 downto 0); + -- X Memory read? + if instr_word_var(6) = '0' then + act_array(ACT_X_MEM_RD) <= '1'; + -- Y Memory read? + else + act_array(ACT_Y_MEM_RD) <= '1'; + end if; + -- write to memory, read register + else + act_array(ACT_REG_RD) <= '1'; + reg_rd_addr <= instr_word_var(5 downto 0); + -- X Memory write? + if instr_word_var(6) = '0' then + act_array(ACT_X_MEM_WR) <= '1'; + -- Y Memory write? + else + act_array(ACT_Y_MEM_WR) <= '1'; + end if; + end if; + -- AGU needed? + if instr_word_var(14) = '1' then + -- detect whether two word instruction! + adgen_bittype <= SINGLE_X; + -- check for immediate long addressing + if instr_word_var(13 downto 8) = "110100" then + act_array(ACT_IMM_LONG) <= '1'; + act_array(ACT_X_MEM_RD) <= '0'; -- No memory accesses for Immediate addressing! + act_array(ACT_Y_MEM_RD) <= '0'; + act_array(ACT_X_MEM_WR) <= '0'; + act_array(ACT_Y_MEM_WR) <= '0'; + else + act_array(ACT_ADGEN) <= '1'; + end if; + else + -- X:/Y:aa short is done in the adgen-stage automatically + end if; + end if; + ------------------------------------------------------------------------- + -- MOVEC instruction with immediate + ------------------------------------------------------------------------- + if instr_word_var(23 downto 16) = X"05" and instr_word_var(7 downto 5) = "101" then + instr_array_int <= INSTR_MOVEC; + act_array(ACT_IMM_8BIT) <= '1'; + act_array(ACT_REG_WR) <= '1'; + reg_wr_addr <= instr_word_var(5 downto 0); + end if; + --------------------------------- + -- REP or DO loop? + --------------------------------- + if instr_word_var(23 downto 16) = X"06" then + -- Instruction encoding is the same for both except of this bit + if instr_word_var(5) = '1' then + instr_array_int <= INSTR_REP; + else + instr_array_int <= INSTR_DO; + end if; + act_array(ACT_EXEC_LOOP) <= '1'; + -- Init reading of loop counter from memory + if instr_word_var(15) = '0' and instr_word_var(7) = '0' then + -- X/Y: ea? + if instr_word_var(14) = '1' then + act_array(ACT_ADGEN) <= '1'; + end if; + -- X/Y: aa? + -- Done automatically in the ADGEN stage by testing whether the ADGEN unit activated or not! + -- If not the absolute address stored in the instruction word is used. + ------- + -- only a single memory access is required + adgen_bittype <= SINGLE_X; + -- X/Y as source? + if instr_word_var(6) = '0' then + act_array(ACT_X_MEM_RD) <= '1'; + else + act_array(ACT_Y_MEM_RD) <= '1'; + end if; + elsif instr_word_var(15) = '1' and instr_word_var(7) = '0' then + -- S (register as source) + reg_rd_addr <= instr_word_var(13 downto 8); + act_array(ACT_REG_RD) <= '1'; + -- #xxx ,12 bit immediate + elsif instr_word_var(7 downto 6) = "10" and instr_word_var(4) = '0' then + act_array(ACT_IMM_12BIT) <= '1'; + end if; + end if; + -------------------------------- + -- MOVEM (Program memory move) + -------------------------------- + if instr_word_var(23 downto 16) = X"07" then + -- read memory, write reg + if instr_word_var(15) = '1' then + act_array(ACT_REG_WR) <= '1'; + reg_wr_addr <= instr_word_var(5 downto 0); + act_array(ACT_P_MEM_RD) <= '1'; + -- read reg, write memory + elsif instr_word_var(15) = '0' then + act_array(ACT_REG_RD) <= '1'; + reg_rd_addr <= instr_word_var(5 downto 0); + act_array(ACT_P_MEM_WR) <= '1'; + end if; + -- AGU needed? + if instr_word_var(14) = '1' and instr_word_var(7 downto 6) = "10" then + adgen_bittype <= SINGLE_X; + -- activate AGU and test whether immediate data is used + activate_AGU; + elsif instr_word_var(14) = '0' and instr_word_var(7 downto 6) = "00" then + -- X:/Y:aa short is done in the adgen-stage automatically + end if; + end if; + -------------------------------- + -- MOVEP (Peripheral memory move) + -------------------------------- + if instr_word_var(23 downto 16) = "0000100-" then + -- TODO?? Why parallel moves in software model?? + case instr_word_var(15 downto 0) is +-- when "-1------1-------" => instr_array_int(INSTR_MOVEP) <= '1'; +-- when "-1------01------" => instr_array_int(INSTR_MOVEP) <= '1'; +-- when "-1------00------" => instr_array_int(INSTR_MOVEP) <= '1'; + when others => + end case; + end if; + -- BSET, BCLR, BCHG, BTST, JCLR, JSET, JSCLR, JSSET, JMP, JCC, JSCC, JSR + if instr_word_var(23 downto 16) = X"0A" or instr_word_var(23 downto 16) = X"0B" then + + reg_rd_addr <= instr_word_var(13 downto 8); + reg_wr_addr <= instr_word_var(13 downto 8); + + if instr_word_var(16) = '0' then + if instr_word_var(7) = '0' and instr_word_var(5) = '0' then + instr_array_int <= INSTR_BCLR; + elsif instr_word_var(7) = '0' and instr_word_var(5) = '1' then + instr_array_int <= INSTR_BSET; + elsif instr_word_var(7) = '1' and instr_word_var(5) = '0' then + instr_array_int <= INSTR_JCLR; + elsif instr_word_var(7) = '1' and instr_word_var(5) = '1' then + instr_array_int <= INSTR_JSET; + end if; + elsif instr_word_var(16) = '1' then + if instr_word_var(7) = '0' and instr_word_var(5) = '0' then + instr_array_int <= INSTR_BCHG; + elsif instr_word_var(7) = '0' and instr_word_var(5) = '1' then + instr_array_int <= INSTR_BTST; + elsif instr_word_var(7) = '1' and instr_word_var(5) = '0' then + instr_array_int <= INSTR_JSCLR; + elsif instr_word_var(7) = '1' and instr_word_var(5) = '1' then + instr_array_int <= INSTR_JSSET; + end if; + end if; + if instr_word_var(7) = '1' then + act_array(ACT_EXEC_BRA) <= '1'; + end if; + + -- memory access? + if instr_word_var(15) = '0' then + -- X: + if instr_word_var(6) = '0' then + act_array(ACT_X_MEM_RD) <= '1'; + -- if not a jump instruction and not BTST write back the result + if instr_word_var(7) = '0' and not(instr_word_var(16) = '1' and instr_word_var(5) = '1') then + act_array(ACT_X_MEM_WR) <= '1'; + end if; + -- Y: + else + act_array(ACT_Y_MEM_RD) <= '1'; + -- if not a jump instruction and not BTST write back the result + if instr_word_var(7) = '0' and not(instr_word_var(16) = '1' and instr_word_var(5) = '1') then + act_array(ACT_Y_MEM_WR) <= '1'; + end if; + end if; + end if; + + case instr_word_var(15 downto 14) is + -- X:/Y: aa + when "00" => + + -- X:/Y: ea + when "01" => + act_array(ACT_ADGEN) <= '1'; + adgen_bittype <= SINGLE_X; + + -- X:/Y: pp + -- TODO! + when "10" => + + when others => -- "11" + if instr_word_var(7 downto 0) = "10000000" then + -- JMP/JSR ea + act_array(ACT_EXEC_BRA) <= '1'; + act_array(ACT_ADGEN) <= '1'; + adgen_bittype <= SINGLE_X; + if instr_word_var(16) = '0' then + instr_array_int <= INSTR_JMP; + elsif instr_word_var(16) = '1' then + instr_array_int <= INSTR_JSR; + end if; + elsif instr_word_var(7 downto 4) = "1010" then + -- JCC/JSCC ea + act_array(ACT_EXEC_BRA) <= '1'; + act_array(ACT_ADGEN) <= '1'; + adgen_bittype <= SINGLE_X; + if instr_word_var(16) = '0' then + instr_array_int <= INSTR_JCC; + elsif instr_word_var(16) = '1' then + instr_array_int <= INSTR_JSCC; + end if; + -- JSCLR,JSET,JCLR,JSSET,BTST,BCLR,BSET,BCHG S/D + else + act_array(ACT_REG_RD) <= '1'; + -- if not a jump instruction and not BTST write back the result + if instr_word_var(7) = '0' and not(instr_word_var(16) = '1' and instr_word_var(5) = '1') then + act_array(ACT_REG_WR) <= '1'; + end if; + end if; + end case; + end if; + -- JMP xxx (absoulute short) + if instr_word_var(23 downto 16) = X"0C" then + if instr_word_var(15 downto 12) = "0000" then + instr_array_int <= INSTR_JMP; + act_array(ACT_EXEC_BRA) <= '1'; + end if; + end if; + -- JSR xxx (absolute short) + if instr_word_var(23 downto 16) = X"0D" then + if instr_word_var(15 downto 12) = "0000" then + instr_array_int <= INSTR_JSR; + act_array(ACT_EXEC_BRA) <= '1'; + end if; + end if; + -- JCC xxx (absolute short) + if instr_word_var(23 downto 16) = X"0E" then + instr_array_int <= INSTR_JCC; + act_array(ACT_EXEC_BRA) <= '1'; + end if; + -- JSCC xxx (absolute short) + if instr_word_var(23 downto 16) = X"0F" then + instr_array_int <= INSTR_JSCC; + act_array(ACT_EXEC_BRA) <= '1'; + end if; + + ------------------------------------------------ + -- PARALLEL MOVE SECTION!! + ------------------------------------------------ + -- Here are the ALU operations that allow for parallel moves + if instr_word_var(23 downto 20) /= "0000" then + act_array(ACT_ALU) <= '1'; -- force ALU to update status register + end if; + -- PM: I + if instr_word_var(23 downto 21) = "001" and instr_word_var(20 downto 18) /= "000" then + act_array(ACT_IMM_8BIT) <= '1'; + act_array(ACT_REG_WR) <= '1'; + reg_wr_addr <= '0' & instr_word_var(20 downto 16); + end if; + -- PM: R + if instr_word_var(23 downto 18) = "001000" then + act_array(ACT_REG_WR) <= '1'; + reg_wr_addr <= '0' & instr_word_var(12 downto 8); + act_array(ACT_REG_RD) <= '1'; + reg_rd_addr <= '0' & instr_word_var(17 downto 13); + end if; + -- PM: U + if instr_word_var(23 downto 13) = "00100000010" then + act_array(ACT_ADGEN) <= '1'; + adgen_bittype <= SINGLE_X_SHORT; + end if; + -- PM: X or PM:Y + if instr_word_var(23 downto 22) = "01" and + -- Check whether L: type parallel move. If so do not enter this branch! + not (instr_word_var(21 downto 20) = "00" and instr_word_var(18) = '0') then + -- read memory, write reg + if instr_word_var(15) = '1' then + act_array(ACT_REG_WR) <= '1'; + reg_wr_addr <= '0' & instr_word_var(21 downto 20) & instr_word_var(18 downto 16); -- TODO: CHECK!! + -- X Memory read? + if instr_word_var(19) = '0' then + act_array(ACT_X_MEM_RD) <= '1'; + -- Y Memory read? + else + act_array(ACT_Y_MEM_RD) <= '1'; + end if; + -- read reg, write memory + elsif instr_word_var(15) = '0' then + act_array(ACT_REG_RD) <= '1'; + reg_rd_addr <= '0' & instr_word_var(21 downto 20) & instr_word_var(18 downto 16); -- TODO: CHECK!! + -- X Memory write? + if instr_word_var(19) = '0' then + act_array(ACT_X_MEM_WR) <= '1'; + -- Y Memory write? + else + act_array(ACT_Y_MEM_WR) <= '1'; + end if; + end if; + -- AGU needed? + if instr_word_var(14) = '1' then + -- detect whether two word instruction! + adgen_bittype <= SINGLE_X; + -- activate AGU and test whether immediate data is used + activate_AGU; + else + -- X:/Y:aa short is done in the adgen-stage automatically + end if; + end if; + -- PM: X:R or R:Y (Class I) + if instr_word_var(23 downto 20) = "0001" then + adgen_bittype <= SINGLE_X; + -- X:R + if instr_word_var(14) = '0' then + x_bus_rd_addr <= instr_word_var(19 downto 18); + x_bus_wr_addr <= instr_word_var(19 downto 18); + y_bus_rd_addr <= '1' & instr_word_var(17); + y_bus_wr_addr <= '0' & instr_word_var(16); -- TODO: Check encoding, manual uses three fs! + -- S2,D2 in any case! + act_array(ACT_Y_BUS_RD) <= '1'; + act_array(ACT_Y_BUS_WR) <= '1'; + -- Write D1? + if instr_word_var(15) = '1' then + act_array(ACT_X_MEM_RD) <= '1'; + act_array(ACT_X_BUS_WR) <= '1'; + else + -- Read S1? + act_array(ACT_X_MEM_WR) <= '1'; + act_array(ACT_X_BUS_RD) <= '1'; + end if; + -- R:Y + elsif instr_word_var(14) = '1' then + x_bus_rd_addr <= '1' & instr_word_var(19); + x_bus_wr_addr <= '0' & instr_word_var(18); + y_bus_rd_addr <= instr_word_var(17 downto 16); + y_bus_wr_addr <= instr_word_var(17 downto 16); + -- S1,D1 in any case! + act_array(ACT_X_BUS_RD) <= '1'; + act_array(ACT_X_BUS_WR) <= '1'; + -- Write D1? + if instr_word_var(15) = '1' then + act_array(ACT_Y_MEM_RD) <= '1'; + act_array(ACT_Y_BUS_WR) <= '1'; + else + -- Read S1? + act_array(ACT_Y_MEM_WR) <= '1'; + act_array(ACT_Y_BUS_RD) <= '1'; + end if; + + end if; + -- detect whether two word instruction! + adgen_bittype <= SINGLE_X; + -- activate AGU and test whether immediate data is used + activate_AGU; + end if; + -- PM: X:R or R:Y (Class II) + if instr_word_var(23 downto 17) = "0000100" and instr_word_var(14) = '0' then + act_array(ACT_REG_RD) <= '1'; + -- X:R + if instr_word_var(15) = '0' then + reg_rd_addr <= "00111" & instr_word_var(16); -- read A or B + act_array(ACT_X_MEM_WR) <= '1'; -- and store it in X memory + x_bus_rd_addr <= "00"; -- read x0 + x_bus_wr_addr <= '1' & instr_word_var(16); -- and write to A or B + act_array(ACT_X_BUS_RD) <= '1'; + act_array(ACT_X_BUS_WR) <= '1'; + -- R:Y + elsif instr_word_var(15) = '1' then + reg_rd_addr <= "00111" & instr_word_var(16); -- read A or B + act_array(ACT_Y_MEM_WR) <= '1'; -- and store it in Y memory + y_bus_rd_addr <= "00"; -- read y0 + y_bus_wr_addr <= '1' & instr_word_var(16); -- and write to A or B + act_array(ACT_Y_BUS_RD) <= '1'; + act_array(ACT_Y_BUS_WR) <= '1'; + end if; + -- detect whether two word instruction! + adgen_bittype <= SINGLE_X; + -- activate AGU and test whether immediate data is used + activate_AGU; + end if; + -- PM: L: + l_bus_addr <= instr_word_var(19) & instr_word_var(17 downto 16); + if instr_word_var(23 downto 20) = "0100" and instr_word_var(18) = '0' then + -- Read S? + if instr_word_var(15) = '0' then + act_array(ACT_L_BUS_RD) <= '1'; + act_array(ACT_X_MEM_WR) <= '1'; + act_array(ACT_Y_MEM_WR) <= '1'; + else -- Write D + act_array(ACT_L_BUS_WR) <= '1'; + act_array(ACT_X_MEM_RD) <= '1'; + act_array(ACT_Y_MEM_RD) <= '1'; + end if; + if instr_word_var(14) = '1' then + adgen_bittype <= SINGLE_X; + activate_AGU; + else + -- L:aa automatically performed in ADGEN stage + end if; + end if; + -- PM: X: Y: + if instr_word_var(23) = '1' then + adgen_bittype <= DOUBLE_X_Y; + -- No immediate value allowed, so activate in any case! + act_array(ACT_ADGEN) <= '1'; + -- S1, X: + if instr_word_var(15) = '0' then + act_array(ACT_X_BUS_RD) <= '1'; + x_bus_rd_addr <= instr_word_var(19 downto 18); + act_array(ACT_X_MEM_WR) <= '1'; + -- X:, D1 + else + act_array(ACT_X_BUS_WR) <= '1'; + x_bus_wr_addr <= instr_word_var(19 downto 18); + act_array(ACT_X_MEM_RD) <= '1'; + end if; + -- S2, Y: + if instr_word_var(22) = '0' then + act_array(ACT_Y_BUS_RD) <= '1'; + y_bus_rd_addr <= instr_word_var(17 downto 16); + act_array(ACT_Y_MEM_WR) <= '1'; + -- Y:, D2 + else + act_array(ACT_Y_BUS_WR) <= '1'; + y_bus_wr_addr <= instr_word_var(17 downto 16); + act_array(ACT_Y_MEM_RD) <= '1'; + end if; + end if; + end process; + + adgen_decoder: process(adgen_bittype, instr_word) is + begin + adgen_mode_a <= NOP; + adgen_mode_b <= NOP; + ea_extension_available <= '0'; + + case adgen_bittype is + when SINGLE_X => + case instr_word(13 downto 11) is + when "000" => adgen_mode_a <= POST_MIN_N; + when "001" => adgen_mode_a <= POST_PLUS_N; + when "010" => adgen_mode_a <= POST_MIN_1; + when "011" => adgen_mode_a <= POST_PLUS_1; + when "100" => adgen_mode_a <= NOP; + when "101" => adgen_mode_a <= INDEXED_N; + when "111" => adgen_mode_a <= PRE_MIN_1; + when "110" => + if instr_word(10 downto 8) = "000" then + adgen_mode_a <= ABSOLUTE; + ea_extension_available <= '1'; + elsif instr_word(10 downto 8) = "100" then + adgen_mode_a <= IMMEDIATE; + ea_extension_available <= '1'; + else + adgen_mode_a <= NOP; -- INVALID OPCODE! + end if; + when others => + end case; + when SINGLE_X_SHORT => + case instr_word(12 downto 11) is + when "00" => adgen_mode_a <= POST_MIN_N; + when "01" => adgen_mode_a <= POST_PLUS_N; + when "10" => adgen_mode_a <= POST_MIN_1; + when "11" => adgen_mode_a <= POST_PLUS_1; + when others => + end case; + when DOUBLE_X_Y => + case instr_word(12 downto 11) is + when "00" => adgen_mode_a <= NOP; + when "01" => adgen_mode_a <= POST_PLUS_N; + when "10" => adgen_mode_a <= POST_MIN_1; + when "11" => adgen_mode_a <= POST_PLUS_1; + when others => + end case; + case instr_word(21 downto 20) is + when "00" => adgen_mode_b <= NOP; + when "01" => adgen_mode_b <= POST_PLUS_N; + when "10" => adgen_mode_b <= POST_MIN_1; + when "11" => adgen_mode_b <= POST_PLUS_1; + when others => + end case; + when others => + end case; + end process adgen_decoder; + +end architecture rtl; + diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/dsp56k.vhd b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/dsp56k.vhd new file mode 100644 index 0000000..c8be35c --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/dsp56k.vhd @@ -0,0 +1,117 @@ +------------------------------------------------------------------------------ +--! @file +--! @author Matthias Alles +--! @date 01/2009 +--! @brief Top entity of DSP +--! +------------------------------------------------------------------------------ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity dsp56k is port ( + clk, rst : in std_logic; + -- put register file here for synthesis! + register_file : out register_file_type +-- port_a_in : in port_a_in_type; +-- port_a_out : out port_a_out_type; +-- port_b_in : in port_b_in_type; +-- port_b_out : out port_b_out_type; +-- port_c_in : in port_c_in_type; +-- port_c_out : out port_c_out_type; + +); +end dsp56k; + + +architecture rtl of dsp56k is + + component pipeline is port ( + clk, rst : in std_logic; + register_file_out : out register_file_type; + stall_flags_out : out std_logic_vector(PIPELINE_DEPTH-1 downto 0); + memory_stall : in std_logic; + data_rom_enable: out std_logic; + pmem_ctrl_in : out mem_ctrl_type_in; + pmem_ctrl_out : in mem_ctrl_type_out; + pmem2_ctrl_in : out mem_ctrl_type_in; + pmem2_ctrl_out : in mem_ctrl_type_out; + xmem_ctrl_in : out mem_ctrl_type_in; + xmem_ctrl_out : in mem_ctrl_type_out; + ymem_ctrl_in : out mem_ctrl_type_in; + ymem_ctrl_out : in mem_ctrl_type_out + + ); + end component pipeline; + + component memory_management is port ( + clk, rst : in std_logic; + stall_flags : in std_logic_vector(PIPELINE_DEPTH-1 downto 0); + memory_stall : out std_logic; + data_rom_enable: in std_logic; + pmem_ctrl_in : in mem_ctrl_type_in; + pmem_ctrl_out : out mem_ctrl_type_out; + pmem2_ctrl_in : in mem_ctrl_type_in; + pmem2_ctrl_out : out mem_ctrl_type_out; + xmem_ctrl_in : in mem_ctrl_type_in; + xmem_ctrl_out : out mem_ctrl_type_out; + ymem_ctrl_in : in mem_ctrl_type_in; + ymem_ctrl_out : out mem_ctrl_type_out + ); + end component memory_management; + + signal stall_flags : std_logic_vector(PIPELINE_DEPTH-1 downto 0); + signal memory_stall : std_logic; + signal data_rom_enable : std_logic; + signal pmem_ctrl_in : mem_ctrl_type_in; + signal pmem_ctrl_out : mem_ctrl_type_out; + signal pmem2_ctrl_in : mem_ctrl_type_in; + signal pmem2_ctrl_out : mem_ctrl_type_out; + signal xmem_ctrl_in : mem_ctrl_type_in; + signal xmem_ctrl_out : mem_ctrl_type_out; + signal ymem_ctrl_in : mem_ctrl_type_in; + signal ymem_ctrl_out : mem_ctrl_type_out; + +begin + + pipeline_inst : pipeline port map( + clk => clk, + rst => rst, + register_file_out => register_file, + stall_flags_out => stall_flags, + memory_stall => memory_stall, + data_rom_enable => data_rom_enable, + pmem_ctrl_in => pmem_ctrl_in, + pmem_ctrl_out => pmem_ctrl_out, + pmem2_ctrl_in => pmem2_ctrl_in, + pmem2_ctrl_out => pmem2_ctrl_out, + xmem_ctrl_in => xmem_ctrl_in, + xmem_ctrl_out => xmem_ctrl_out, + ymem_ctrl_in => ymem_ctrl_in, + ymem_ctrl_out => ymem_ctrl_out + ); + + --------------------- + -- MEMORY MANAGEMENT + --------------------- + MMU_inst: memory_management port map ( + clk => clk, + rst => rst, + stall_flags => stall_flags, + memory_stall => memory_stall, + data_rom_enable => data_rom_enable, + pmem_ctrl_in => pmem_ctrl_in, + pmem_ctrl_out => pmem_ctrl_out, + pmem2_ctrl_in => pmem2_ctrl_in, + pmem2_ctrl_out => pmem2_ctrl_out, + xmem_ctrl_in => xmem_ctrl_in, + xmem_ctrl_out => xmem_ctrl_out, + ymem_ctrl_in => ymem_ctrl_in, + ymem_ctrl_out => ymem_ctrl_out + ); + +end architecture rtl; diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/exec_stage_alu.vhd b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/exec_stage_alu.vhd new file mode 100644 index 0000000..249be3c --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/exec_stage_alu.vhd @@ -0,0 +1,611 @@ +------------------------------------------------------------------------------ +--! @file +--! @author Matthias Alles +--! @date 01/2009 +--! @brief ALU, including shifter, MAC unit, etc. +--! +------------------------------------------------------------------------------ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity exec_stage_alu is port( + alu_activate : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + alu_ctrl : in alu_ctrl_type; + register_file : in register_file_type; + addr_r_in : in unsigned(BW_ADDRESS-1 downto 0); + addr_r_out : out unsigned(BW_ADDRESS-1 downto 0); + modify_accu : out std_logic; + dst_accu : out std_logic; + modified_accu : out signed(55 downto 0); + modify_sr : out std_logic; + modified_sr : out std_logic_vector(15 downto 0) +); +end entity; + +architecture rtl of exec_stage_alu is + + signal alu_shifter_out : signed(55 downto 0); + signal alu_shifter_carry_out : std_logic; + signal alu_shifter_overflow_out : std_logic; + + signal alu_logic_conj : signed(55 downto 0); + signal alu_multiplier_out : signed(55 downto 0); + signal alu_src_op : signed(55 downto 0); + signal alu_add_result : signed(56 downto 0); + signal alu_add_carry_out : std_logic; + signal alu_post_adder_result : signed(56 downto 0); + + signal scaling_mode : std_logic_vector(1 downto 0); + + signal modified_accu_int : signed(55 downto 0); + + signal norm_instr_asl : std_logic; + signal norm_instr_asr : std_logic; + signal norm_instr_nop : std_logic; + signal norm_update_ccr : std_logic; + +begin + + + -- store calculated value? + modify_accu <= alu_ctrl.store_result; + modified_accu <= modified_accu_int; + -- for the norm instruction we first need to determine whether we have to + -- update the CCR register or not + modify_sr <= alu_activate when alu_ctrl.norm_instr = '0' else + norm_update_ccr; + dst_accu <= alu_ctrl.dst_accu; + + scaling_mode <= register_file.sr(11 downto 10); + + + calcule_ccr_flags: process(register_file, alu_ctrl, alu_shifter_carry_out, + alu_post_adder_result, modified_accu_int, alu_add_carry_out) is + begin + -- by default do not modify the flags in the status register + modified_sr <= register_file.sr; + + -- Carry flag generation + ------------------------- + case alu_ctrl.ccr_flags_ctrl(C_FLAG) is + when CLEAR => modified_sr(C_FLAG) <= '0'; + when SET => modified_sr(C_FLAG) <= '1'; + when MODIFY => + -- the carry flag can stem from the shifter or from the post adder + -- in case we shift and add only a zero to the shift result (ASL, ASR, LSL, LSR, ROL, ROR) + -- take the carry flag from the shifter, else from the post adder + if (alu_ctrl.shift_mode = SHIFT_LEFT or alu_ctrl.shift_mode = SHIFT_RIGHT) and + alu_ctrl.add_src_stage_2 = "00" then -- add zero after shifting? + modified_sr(C_FLAG) <= alu_shifter_carry_out; + elsif alu_ctrl.div_instr = '1' then + modified_sr(C_FLAG) <= not std_logic(alu_post_adder_result(55)); + else +-- modified_sr(C_FLAG) <= std_logic(alu_post_adder_result(57)); + modified_sr(C_FLAG) <= alu_add_carry_out; + end if; + when others => -- Don't touch + end case; + + -- Overflow flag generation + ---------------------------- + case alu_ctrl.ccr_flags_ctrl(V_FLAG) is + when CLEAR => modified_sr(V_FLAG) <= '0'; + when SET => modified_sr(V_FLAG) <= '1'; + when MODIFY => + -- There are two sources for the overflow flag: + -- 1) + -- in case the result cannot be represented using 56 bits set + -- the overflow flag. this is the case when the two MSBs of + -- the 57 bit result are different + -- 2) + -- The shifter circuit performs a 56 bit left shift. In case the + -- two MSBs of the operand are different set the overflow flag as well + if (alu_ctrl.div_instr = '0' and alu_post_adder_result(56) /= alu_post_adder_result(55)) or + (alu_ctrl.shift_mode = SHIFT_LEFT and alu_ctrl.word_24_update = '0' and + alu_shifter_overflow_out = '1' ) then + modified_sr(V_FLAG) <= '1'; + else + modified_sr(V_FLAG) <= '0'; + end if; + when others => -- Don't touch + end case; + + -- Zero flag generation + ---------------------------- + case alu_ctrl.ccr_flags_ctrl(Z_FLAG) is + when CLEAR => modified_sr(Z_FLAG) <= '0'; + when SET => modified_sr(Z_FLAG) <= '1'; + when MODIFY => + -- in case the result is zero set this flag + -- distinguish between 24 bit and 56 bit ALU operations + -- 24 bit instructions are LSL, LSR, ROR, ROL, OR, EOR, NOT, AND + if (alu_ctrl.word_24_update = '1' and modified_accu_int(47 downto 24) = 0) or + (alu_ctrl.word_24_update = '0' and modified_accu_int(55 downto 0) = 0) then + modified_sr(Z_FLAG) <= '1'; + else + modified_sr(Z_FLAG) <= '0'; + end if; + when others => -- Don't touch + end case; + + -- Negative flag generation + ---------------------------- + case alu_ctrl.ccr_flags_ctrl(N_FLAG) is + when CLEAR => modified_sr(N_FLAG) <= '0'; + when SET => modified_sr(N_FLAG) <= '1'; + when MODIFY => + -- in case the result is negative set this flag + -- distinguish between 24 bit and 56 bit ALU operations + -- 24 bit instructions are LSL, LSR, ROR, ROL, OR, EOR, NOT, AND + if alu_ctrl.word_24_update = '1' then + modified_sr(N_FLAG) <= std_logic(modified_accu_int(47)); + else + modified_sr(N_FLAG) <= std_logic(modified_accu_int(55)); + end if; + when others => -- Don't touch + end case; + + -- Unnormalized flag generation + ---------------------------- + case alu_ctrl.ccr_flags_ctrl(U_FLAG) is + when CLEAR => modified_sr(U_FLAG) <= '0'; + when SET => modified_sr(U_FLAG) <= '1'; + when MODIFY => + -- Set unnormalized bit according to the scaling mode + if (scaling_mode = "00" and alu_post_adder_result(47) = alu_post_adder_result(46)) or + (scaling_mode = "01" and alu_post_adder_result(48) = alu_post_adder_result(47)) or + (scaling_mode = "10" and alu_post_adder_result(46) = alu_post_adder_result(45)) then + modified_sr(U_FLAG) <= '1'; + else + modified_sr(U_FLAG) <= '0'; + end if; + when others => -- Don't touch + end case; + + -- Extension flag generation + ---------------------------- + case alu_ctrl.ccr_flags_ctrl(E_FLAG) is + when CLEAR => modified_sr(E_FLAG) <= '0'; + when SET => modified_sr(E_FLAG) <= '1'; + when MODIFY => + -- Set extension flag by default + modified_sr(E_FLAG) <= '1'; + -- Clear extension flag according to the scaling mode + case scaling_mode is + when "00" => + if alu_post_adder_result(55 downto 47) = "111111111" or alu_post_adder_result(55 downto 47) = "000000000" then + modified_sr(E_FLAG) <= '0'; + end if; + when "01" => + if alu_post_adder_result(55 downto 48) = "11111111" or alu_post_adder_result(55 downto 48) = "00000000" then + modified_sr(E_FLAG) <= '0'; + end if; + when "10" => + if alu_post_adder_result(55 downto 46) = "1111111111" or alu_post_adder_result(55 downto 46) = "0000000000" then + modified_sr(E_FLAG) <= '0'; + end if; + when others => + modified_sr(E_FLAG) <= '0'; + end case; + when others => -- Don't touch + end case; + + -- Limit flag generation (equals overflow flag generaton!) + -- Clearing of the Limit flag has to be done by the user! + ----------------------------------------------------------- + case alu_ctrl.ccr_flags_ctrl(L_FLAG) is + when CLEAR => modified_sr(L_FLAG) <= '0'; + when SET => modified_sr(L_FLAG) <= '1'; + when MODIFY => + -- There are two sources for the overflow flag: + -- 1) + -- in case the result cannot be represented using 56 bits set + -- the overflow flag. this is the case when the two MSBs of + -- the 57 bit result are different + -- 2) + -- The shifter circuit performs a 56 bit left shift. In case the + -- two MSBs of the operand are different set the overflow flag as well + if (alu_ctrl.div_instr = '0' and alu_post_adder_result(56) /= alu_post_adder_result(55)) or + (alu_ctrl.shift_mode = SHIFT_LEFT and alu_ctrl.word_24_update = '0' and + alu_shifter_overflow_out = '1' ) then + modified_sr(L_FLAG) <= '1'; + end if; + when others => -- Don't touch + end case; + + -- Scaling flag generation (DSP56002 and up) + -------------------------------------------- + -- Scaling flag is not generated in the ALU, but when A or B are read to the XDB or YDB + + end process; + + + src_operand_select: process(register_file, alu_ctrl) is + begin + -- decoding according similar to JJJ representation + case alu_ctrl.add_src_stage_1 is + when "000" => + -- select depending on destination accu + if alu_ctrl.dst_accu = '0' then + alu_src_op <= register_file.a; + else + alu_src_op <= register_file.b; + end if; + when "001" => -- A,B or B,A + -- select depending on destination accu + if alu_ctrl.dst_accu = '0' then + alu_src_op <= register_file.b; + else + alu_src_op <= register_file.a; + end if; + when "010" => -- X + alu_src_op(55 downto 48) <= (others => register_file.x1(23)); + alu_src_op(47 downto 0) <= register_file.x1 & register_file.x0; + when "011" => -- Y + alu_src_op(55 downto 48) <= (others => register_file.y1(23)); + alu_src_op(47 downto 0) <= register_file.y1 & register_file.y0; + when "100" => -- x0 + alu_src_op(55 downto 48) <= (others => register_file.x0(23)); + alu_src_op(47 downto 24) <= register_file.x0; + alu_src_op(23 downto 0) <= (others => '0'); + when "101" => -- y0 + alu_src_op(55 downto 48) <= (others => register_file.y0(23)); + alu_src_op(47 downto 24) <= register_file.y0; + alu_src_op(23 downto 0) <= (others => '0'); + when "110" => -- x1 + alu_src_op(55 downto 48) <= (others => register_file.x1(23)); + alu_src_op(47 downto 24) <= register_file.x1; + alu_src_op(23 downto 0) <= (others => '0'); + when "111" => -- y1 + alu_src_op(55 downto 48) <= (others => register_file.y1(23)); + alu_src_op(47 downto 24) <= register_file.y1; + alu_src_op(23 downto 0) <= (others => '0'); + when others => + end case; + end process; + + alu_logical_functions: process(alu_ctrl, alu_src_op, alu_shifter_out) is + begin + alu_logic_conj <= alu_shifter_out; + case alu_ctrl.logic_function is + when "110" => + alu_logic_conj(47 downto 24) <= alu_shifter_out(47 downto 24) and alu_src_op(47 downto 24); + when "010" => + alu_logic_conj(47 downto 24) <= alu_shifter_out(47 downto 24) or alu_src_op(47 downto 24); + when "011" => + alu_logic_conj(47 downto 24) <= alu_shifter_out(47 downto 24) xor alu_src_op(47 downto 24); + when "111" => + alu_logic_conj(47 downto 24) <= not alu_shifter_out(47 downto 24); + when others => + end case; + end process; + + alu_adder : process(alu_ctrl, alu_src_op, alu_multiplier_out, alu_shifter_out) is + variable add_src_op_1 : signed(56 downto 0); + variable add_src_op_2 : signed(56 downto 0); + variable carry_const : signed(56 downto 0); + variable alu_shifter_out_57 : signed(56 downto 0); + variable alu_add_result_58 : signed(57 downto 0); + variable alu_add_result_interm : signed(56 downto 0); + variable invert_carry_flag : std_logic; + begin + + -- by default do not invert the carry + invert_carry_flag := '0'; + + -- determine whether to use multiplier output, the operand defined above, or zeros! + -- resizing is done here already. Like that we can see whether an overflow + -- occurs due to negating the source operand + case alu_ctrl.add_src_stage_2 is + when "00" => add_src_op_1 := (others => '0'); + when "10" => add_src_op_1 := resize(alu_multiplier_out, 57); + when others => add_src_op_1 := resize(alu_src_op, 57); + end case; + + -- determine the sign for the 1st operand! + case alu_ctrl.add_src_sign is + -- normal operation + when "00" => add_src_op_1 := add_src_op_1; + -- negative sign + when "01" => add_src_op_1 := - add_src_op_1; + invert_carry_flag := not invert_carry_flag; + -- change according to sign + -- performs - | accu | for the CMPM instruction + when "10" => + -- we subtract in any case, so invert the carry! + invert_carry_flag := not invert_carry_flag; + if add_src_op_1(55) = '0' then + add_src_op_1 := - add_src_op_1; + else + add_src_op_1 := add_src_op_1; + end if; + -- div instruction! + -- sign dependant of D[55] XOR S[23], if 1 => positive , if 0 => negative + -- add_src_op_1 holds S[23] (sign extension!) + when others => + if (alu_ctrl.shift_src = '0' and add_src_op_1(55) /= register_file.a(55)) or + (alu_ctrl.shift_src = '1' and add_src_op_1(55) /= register_file.b(55)) then + add_src_op_1 := add_src_op_1; + else + add_src_op_1 := - add_src_op_1; +-- invert_carry_flag := not invert_carry_flag; + end if; + end case; + + alu_shifter_out_57 := resize(alu_shifter_out, 57); + + -- determine the sign for the 2nd operand (coming from the shifter)! + case alu_ctrl.shift_src_sign is + -- negative sign + when "01" => + add_src_op_2 := - alu_shifter_out_57; + -- change according to sign + -- this allows to build the magnitude (ABS, CMPM) + when "10" => + if alu_shifter_out(55) = '1' then + add_src_op_2 := - alu_shifter_out_57; + else + add_src_op_2 := alu_shifter_out_57; + end if; + when others => + add_src_op_2 := alu_shifter_out_57; + end case; + + -- determine whether carry flag has to be added or subtracted + if alu_ctrl.rounding_used = "10" then + carry_const := (others => '0'); + -- add carry flag + carry_const(0) := register_file.sr(C_FLAG); + elsif alu_ctrl.rounding_used = "11" then + -- subtract carry flag + carry_const := (others => register_file.sr(0)); -- carry flag + else + carry_const := (others => '0'); + end if; + + -- add the values and calculate the carry bit + alu_add_result_interm := ('0' & add_src_op_1(55 downto 0)) + + ('0' & add_src_op_2(55 downto 0)) + + ('0' & carry_const(55 downto 0)); + + -- here pops the new carry out of the adder + if invert_carry_flag = '0' then + alu_add_carry_out <= alu_add_result_interm(56); + else + alu_add_carry_out <= not alu_add_result_interm(56); + end if; + + -- calculate the last bit (56), in order to test for overflow later on + alu_add_result(55 downto 0) <= alu_add_result_interm(55 downto 0); +-- alu_add_result(56) <= add_src_op_1(56) xor add_src_op_2(56) xor alu_add_result_interm(56); + alu_add_result(56) <= add_src_op_1(56) xor add_src_op_2(56) + xor carry_const(56) xor alu_add_result_interm(56); + + end process alu_adder; + + + -- Adder after the normal arithmetic adder + -- This adder is responsible for +-- -- 1) carry addition +-- -- 2) carry subtration + -- 3) convergent rounding + alu_post_adder: process(alu_add_result, scaling_mode, alu_ctrl) is + variable post_adder_constant : signed(56 downto 0); + variable testing_constant : signed(24 downto 0); + begin + -- by default add nothing + post_adder_constant := (others => '0'); + + case alu_ctrl.rounding_used is + -- rounding dependant on scaling bits + when "01" => + case scaling_mode is + -- no scaling + when "00" => testing_constant := alu_add_result(23 downto 0) & '0'; + -- scale down + when "01" => testing_constant := alu_add_result(24 downto 0); + -- scale up + when "10" => testing_constant := alu_add_result(22 downto 0) & "00"; + when others => + testing_constant := alu_add_result(23 downto 0) & '0'; + end case; + + -- Special case! + if testing_constant(24) = '1' and testing_constant(23 downto 0) = X"000000" then + -- add depending on bit left to the rounding position + case scaling_mode is + -- no scaling + when "00" => post_adder_constant(23) := alu_add_result(24); + -- scale down + when "01" => post_adder_constant(24) := alu_add_result(25); + -- scale up + when "10" => post_adder_constant(22) := alu_add_result(23); + when others => + end case; + else -- testing_constant /= X"1000000" + -- add rounding constant depending on scaling mode + -- results in round up if MSB of testing constant is set, else nothing happens + case scaling_mode is + -- no scaling + when "00" => post_adder_constant(23) := '1'; + -- scale down + when "01" => post_adder_constant(24) := '1'; + -- scale up + when "10" => post_adder_constant(22) := '1'; + when others => + end case; + end if; + -- no rounding + when others => + post_adder_constant := (others => '0'); + + end case; + + -- Add the result of the first adder to the constant (e.g., carry flag) + alu_post_adder_result <= alu_add_result + post_adder_constant; + + -- When rounding is used set 24 LSBs to zero! + if alu_ctrl.rounding_used = "01" then + alu_post_adder_result(23 downto 0) <= (others => '0'); + end if; + end process; + + + + alu_select_new_accu: process(alu_post_adder_result, alu_logic_conj, alu_ctrl) is + begin + if alu_ctrl.logic_function /= "000" then + modified_accu_int <= alu_logic_conj; + else + modified_accu_int <= alu_post_adder_result(55 downto 0); + end if; + end process; + + + -- contains the 24*24 bit fractional multiplier + alu_multiplier : process(register_file, alu_ctrl) is + variable src_op1: signed(23 downto 0); + variable src_op2: signed(23 downto 0); + variable mul_result_interm : signed(47 downto 0); + begin + -- select source operands for multiplication + case alu_ctrl.mul_op1 is + when "00" => src_op1 := register_file.x0; + when "01" => src_op1 := register_file.x1; + when "10" => src_op1 := register_file.y0; + when others => src_op1 := register_file.y1; + end case; + case alu_ctrl.mul_op2 is + when "00" => src_op2 := register_file.x0; + when "01" => src_op2 := register_file.x1; + when "10" => src_op2 := register_file.y0; + when others => src_op2 := register_file.y1; + end case; + + -- perform integer multiplication + mul_result_interm := src_op1 * src_op2; + + -- sign extension of result + alu_multiplier_out(55 downto 48) <= (others => mul_result_interm(47)); + -- convert from two's complement representation to fractional format + -- signed integer multiplication delivers twice the sign bit, but only one is needed for the + -- fractional multiplication, so remove one and append a zero to the result + alu_multiplier_out(47 downto 0) <= mul_result_interm(46 downto 0) & '0'; + + end process alu_multiplier; + + + -- contains the data shifter + alu_shifter: process(register_file, alu_ctrl, norm_instr_asl, norm_instr_asr) is + variable src_accu : signed(55 downto 0); + variable shift_to_perform : alu_shift_mode; + begin + -- read source accumulator + if alu_ctrl.shift_src = '0' then + src_accu := register_file.a; + else + src_accu := register_file.b; + end if; + + alu_shifter_carry_out <= '0'; + alu_shifter_overflow_out <= '0'; + + -- NORM instruction determines the shift value just + -- in time, so overwrite the flag from the alu_ctrl + -- for this instruction by the calculated value + if alu_ctrl.norm_instr = '0' then + shift_to_perform := alu_ctrl.shift_mode; + else + if norm_instr_asl = '1' then + shift_to_perform := SHIFT_LEFT; + elsif norm_instr_asr = '1' then + shift_to_perform := SHIFT_RIGHT; + else + shift_to_perform := NO_SHIFT; + end if; + end if; + + case shift_to_perform is + when NO_SHIFT => + alu_shifter_out <= src_accu; + when SHIFT_LEFT => + -- ASL, ADDL, DIV? + if alu_ctrl.word_24_update = '0' then + -- special handling for div instruction required + if alu_ctrl.div_instr = '1' then + alu_shifter_out <= src_accu(54 downto 0) & register_file.sr(C_FLAG); + else + alu_shifter_out <= src_accu(54 downto 0) & '0'; + end if; + alu_shifter_carry_out <= src_accu(55); + -- detect overflow that results from left shifting + -- Needed for ASL, ADDL, DIV instructions + if src_accu(55) /= src_accu(54) then + alu_shifter_overflow_out <= '1'; + end if; + -- LSL/ROL? + elsif alu_ctrl.word_24_update = '1' then + alu_shifter_out(55 downto 48) <= src_accu(55 downto 48); + alu_shifter_out(23 downto 0) <= src_accu(23 downto 0); + alu_shifter_carry_out <= src_accu(47); + if alu_ctrl.rotate = '0' then -- LSL ? + alu_shifter_out(47 downto 24) <= src_accu(46 downto 24) & '0'; + else -- ROL ? + alu_shifter_out(47 downto 24) <= src_accu(46 downto 24) & register_file.sr(C_FLAG); + end if; + end if; + when SHIFT_RIGHT => + -- ASR? + if alu_ctrl.word_24_update = '0' then + alu_shifter_out <= src_accu(55) & src_accu(55 downto 1); + alu_shifter_carry_out <= src_accu(0); + -- LSR/ROR? + elsif alu_ctrl.word_24_update = '1' then + alu_shifter_out(55 downto 48) <= src_accu(55 downto 48); + alu_shifter_out(23 downto 0) <= src_accu(23 downto 0); + alu_shifter_carry_out <= src_accu(24); + if alu_ctrl.rotate = '0' then -- LSR + alu_shifter_out(47 downto 24) <= '0' & src_accu(47 downto 25); + else -- ROR + alu_shifter_out(47 downto 24) <= register_file.sr(C_FLAG) & src_accu(47 downto 25); + end if; + end if; + when ZEROS => + alu_shifter_out <= (others => '0'); + end case; + end process alu_shifter; + + + -- Special handling for NORM instruction + -- Determine which case occurs (see User's Manual for more information) + norm_instr_logic: process(register_file, addr_r_in) is + begin + norm_instr_asl <= '0'; + norm_instr_asr <= '0'; + + -- Either left shift + if register_file.sr(E_FLAG) = '0' and + register_file.sr(U_FLAG) = '1' and + register_file.sr(Z_FLAG) = '0' then + norm_instr_asl <= '1'; + norm_update_ccr <= '1'; + addr_r_out <= addr_r_in - 1; + -- Or right shift + elsif register_file.sr(E_FLAG) = '1' then + norm_instr_asr <= '1'; + norm_update_ccr <= '1'; + addr_r_out <= addr_r_in + 1; + -- Or do nothing! + else + norm_update_ccr <= '0'; + addr_r_out <= addr_r_in; + end if; + end process; + +end architecture; diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/exec_stage_bit_modify.vhd b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/exec_stage_bit_modify.vhd new file mode 100644 index 0000000..0bd69cd --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/exec_stage_bit_modify.vhd @@ -0,0 +1,86 @@ +----------------------------------------------------------------------------- +--! @file +--! @author Matthias Alles +--! @date 01/2009 +--! @brief Bit modify (BCLR, BSET, J(S)CLR, J(S)SET) +--! +------------------------------------------------------------------------------ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity exec_stage_bit_modify is port( + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + src_operand : in std_logic_vector(23 downto 0); + register_file : in register_file_type; + dst_operand : out std_logic_vector(23 downto 0); + bit_cond_met : out std_logic; + modify_sr : out std_logic; + modified_sr : out std_logic_vector(15 downto 0) +); +end entity; + + +architecture rtl of exec_stage_bit_modify is + + signal operand_bit : std_logic; + signal src_operand_32 : std_logic_vector(31 downto 0); + +begin + + -- this is just a helper signal to prevent the simulator + -- to stop when accessing a bit > 23. + src_operand_32 <= "00000000" & src_operand; + -- read the bit we want to test (and modify) + operand_bit <= src_operand_32(to_integer(unsigned(instr_word(4 downto 0)))); + + -- modify the Carry flag only for the bit modify instructions! + modify_sr <= '1' when instr_array = INSTR_BCLR or instr_array = INSTR_BSET or instr_array = INSTR_BCHG or instr_array = INSTR_BTST else '0'; + modified_sr <= register_file.sr(15 downto 1) & operand_bit; + + bit_operation: process(instr_word, instr_array, src_operand, operand_bit) is + variable new_bit : std_logic; + begin + -- do nothing by default! + dst_operand <= src_operand; + bit_cond_met <= '0'; + + -- determine which bit to write + if instr_array = INSTR_BCLR then + new_bit := '0'; + elsif instr_array = INSTR_BSET then + new_bit := '1'; + else -- BCHG + new_bit := not operand_bit; + end if; + + if instr_array = INSTR_BCLR or instr_array = INSTR_BSET or instr_array = INSTR_BCHG then + dst_operand(to_integer(unsigned(instr_word(4 downto 0)))) <= new_bit; + end if; + + + -- check for the jump instructions whether condition is met or not! + if instr_array = INSTR_JCLR or instr_array = INSTR_JSCLR then + if operand_bit = '0' then + bit_cond_met <= '1'; + else + bit_cond_met <= '0'; + end if; + end if; + if instr_array = INSTR_JSET or instr_array = INSTR_JSSET then + if operand_bit = '0' then + bit_cond_met <= '0'; + else + bit_cond_met <= '1'; + end if; + end if; + + end process; + + +end architecture; diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/exec_stage_branch.vhd b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/exec_stage_branch.vhd new file mode 100644 index 0000000..f59cc09 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/exec_stage_branch.vhd @@ -0,0 +1,124 @@ +----------------------------------------------------------------------------- +--! @file +--! @author Matthias Alles +--! @date 01/2009 +--! @brief Branch control +--! +------------------------------------------------------------------------------ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity exec_stage_branch is port( + activate_exec_bra : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + register_file : in register_file_type; + jump_address : in unsigned(BW_ADDRESS-1 downto 0); + bit_cond_met : in std_logic; + cc_flag_set : in std_logic; + push_stack : out push_stack_type; + pop_stack : out pop_stack_type; + modify_pc : out std_logic; + modified_pc : out unsigned(BW_ADDRESS-1 downto 0); + modify_sr : out std_logic; + modified_sr : out std_logic_vector(15 downto 0) +); +end entity; + + +architecture rtl of exec_stage_branch is + + signal branch_condition_met : std_logic; + signal modify_pc_int : std_logic; + +begin + + modify_pc_int <= '1' when activate_exec_bra = '1' and branch_condition_met = '1' else '0'; + modify_pc <= modify_pc_int; + + calculate_branch_condition : process(instr_word, instr_array, register_file, bit_cond_met) + begin + branch_condition_met <= '0'; + + -- unconditional jumps + if instr_array = INSTR_JMP or + instr_array = INSTR_JSR or + instr_array = INSTR_RTI or + instr_array = INSTR_RTS then + -- jump always + branch_condition_met <= '1'; + end if; + -- then see whether the branch condition is satisfied + if instr_array = INSTR_JCC or instr_array = INSTR_JSCC then + branch_condition_met <= cc_flag_set; + end if; + -- jmp that is executed according to a certain bit condition + if instr_array = INSTR_JCLR or instr_array = INSTR_JSCLR or + instr_array = INSTR_JSET or instr_array = INSTR_JSSET then + branch_condition_met <= bit_cond_met; + end if; + end process calculate_branch_condition; + + + calculate_branch_target : process(instr_array, instr_word, jump_address) + begin + modified_pc <= jump_address; + + -- address calculation is the same for the following instructions + if instr_array = INSTR_JMP or + instr_array = INSTR_JCC or + instr_array = INSTR_JSCC or + instr_array = INSTR_JSR then + if instr_word(18) = '1' then + -- short jump address included in opcode (bits 11 downto 0) + modified_pc(11 downto 0) <= unsigned(instr_word(11 downto 0)); + elsif instr_word(18) = '0' then + -- effective address defined by opcode and coming from address generator unit + modified_pc <= jump_address; + end if; + end if; + + -- jump address contains the obligatory address of the second + -- instruction word + if instr_array = INSTR_JCLR or + instr_array = INSTR_JSET or + instr_array = INSTR_JSCLR or + instr_array = INSTR_JSSET then + modified_pc <= jump_address; + end if; + + -- target address is stored on the stack + if instr_array = INSTR_RTS or + instr_array = INSTR_RTI then + modified_pc <= unsigned(register_file.current_ssh); + end if; + end process calculate_branch_target; + + -- Subroutine functions need to store PC and SR on the stack + push_stack.valid <= '1' when modify_pc_int = '1' and (instr_array = INSTR_JSCC or instr_array = INSTR_JSR or + instr_array = INSTR_JSCLR or instr_array = INSTR_JSSET) else '0'; + push_stack.content <= PC_AND_SR; + -- pc is set externally! + push_stack.pc <= (others => '0'); + + -- RTI/RTS instructions need to read from the stack + pop_stack.valid <= '1' when modify_pc_int = '1' and (instr_array = INSTR_RTI or instr_array = INSTR_RTS) else '0'; + + -- some instructions require to set the SR + calculate_status_register : process(instr_array) + begin + modify_sr <= '0'; + modified_sr <= (others => '0'); + if instr_array = INSTR_RTI then + modify_sr <= '1'; + modified_sr <= register_file.current_ssl; + end if; + end process calculate_status_register; + + +end architecture rtl; diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/exec_stage_cc_flag_calc.vhd b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/exec_stage_cc_flag_calc.vhd new file mode 100644 index 0000000..2f69230 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/exec_stage_cc_flag_calc.vhd @@ -0,0 +1,82 @@ +----------------------------------------------------------------------------- +--! @file +--! @author Matthias Alles +--! @date 01/2009 +--! @brief Calculate whether cc flag condition is true +--! +------------------------------------------------------------------------------ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity exec_stage_cc_flag_calc is port( + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + register_file : in register_file_type; + cc_flag_set : out std_logic +); +end entity; + + +architecture rtl of exec_stage_cc_flag_calc is + + +begin + + calculate_cc_flag : process(instr_word, instr_array, register_file) + + variable cc_select : std_logic_vector(3 downto 0); + + procedure calculate_cc_flag(cc: std_logic_vector(3 downto 0)) is + variable c_flag : std_logic := register_file.ccr(0); + variable v_flag : std_logic := register_file.ccr(1); + variable z_flag : std_logic := register_file.ccr(2); + variable n_flag : std_logic := register_file.ccr(3); + variable u_flag : std_logic := register_file.ccr(4); + variable e_flag : std_logic := register_file.ccr(5); + variable l_flag : std_logic := register_file.ccr(6); + + begin + if (cc = "0000" and c_flag = '0') or -- CC: carry clear + (cc = "1000" and c_flag = '1') or -- CS: carry set + (cc = "0101" and e_flag = '0') or -- EC: extension clear + (cc = "1010" and z_flag = '1') or -- EQ: equal + (cc = "1101" and e_flag = '1') or -- ES: extension set + (cc = "0001" and (n_flag = v_flag)) or -- GE: greater than or equal + (cc = "0001" and ((n_flag xor v_flag) or z_flag) = '0') or -- GT: greater than + (cc = "0110" and l_flag = '0') or -- LC: limit clear + (cc = "1111" and ((n_flag xor v_flag) or z_flag ) = '1') or -- LE: less or equal + (cc = "1110" and l_flag = '1') or -- LS: limit set + (cc = "1001" and (n_flag /= v_flag)) or -- LT: less than + (cc = "1011" and n_flag = '1') or -- MI: minus + (cc = "0010" and z_flag = '0') or -- NE: not equal + (cc = "1100" and (( not u_flag and not e_flag) or z_flag) = '1') or -- NR: normalized + (cc = "0011" and n_flag = '0') or -- PL: plus + (cc = "0100" and (( not u_flag and not e_flag ) or z_flag) = '0') -- NN: not normalized + then + cc_flag_set <= '1'; + end if; + end procedure; + + begin + + cc_flag_set <= '0'; + + -- Rip the flags we have to test for from the instruction word + if (instr_array = INSTR_JCC and instr_word(18) = '0') or + (instr_array = INSTR_JSCC) then + cc_select := instr_word(3 downto 0); + else + cc_select := instr_word(15 downto 12); + end if; + + calculate_cc_flag(cc_select); + + end process; + + +end architecture; diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/exec_stage_cr_mod.vhd b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/exec_stage_cr_mod.vhd new file mode 100644 index 0000000..2465125 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/exec_stage_cr_mod.vhd @@ -0,0 +1,79 @@ +----------------------------------------------------------------------------- +--! @file +--! @author Matthias Alles +--! @date 01/2009 +--! @brief +--! +------------------------------------------------------------------------------ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity exec_stage_cr_mod is port ( + activate_exec_cr_mod : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + register_file : in register_file_type; + modify_sr : out std_logic; + modified_sr : out std_logic_vector(15 downto 0); + modify_omr : out std_logic; + modified_omr : out std_logic_vector(7 downto 0) +); +end exec_stage_cr_mod; + + +architecture rtl of exec_stage_cr_mod is + +begin + + process(activate_exec_cr_mod, instr_word, instr_array, register_file) is + variable imm8 : std_logic_vector(7 downto 0); + variable op8 : std_logic_vector(7 downto 0); + variable res8 : std_logic_vector(7 downto 0); + begin + modify_sr <= '0'; + modify_omr <= '0'; + modified_sr <= (others => '0'); + modified_omr <= (others => '0'); + + imm8 := instr_word(15 downto 8); + if instr_word(1 downto 0) = "00" then + -- read MR + op8 := register_file.mr; + elsif instr_word(1 downto 0) = "01" then + -- read CCR + op8 := register_file.ccr; + else -- instr_word(1 downto 0) = "10" + -- read OMR + op8 := register_file.omr; + end if; + + if instr_array = INSTR_ANDI then + res8 := imm8 and op8; + else -- instr_array = INSTR_ORI + res8 := imm8 or op8; + end if; + + -- only write the result when activated + if activate_exec_cr_mod = '1' then + if instr_word(1 downto 0) = "00" then + -- update MR + modify_sr <= '1'; + modified_sr <= res8 & register_file.ccr; + elsif instr_word(1 downto 0) = "01" then + -- update CCR + modify_sr <= '1'; + modified_sr <= register_file.mr & res8; + elsif instr_word(1 downto 0) = "10" then + -- update OMR + modify_omr <= '1'; + modified_omr <= res8; + end if; + end if; + end process; + +end architecture; diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/exec_stage_loops.vhd b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/exec_stage_loops.vhd new file mode 100644 index 0000000..3472636 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/exec_stage_loops.vhd @@ -0,0 +1,207 @@ +------------------------------------------------------------------------------ +--! @file +--! @author Matthias Alles +--! @date 01/2009 +--! @brief Loop control (REP, DO, ENDDO) +--! +------------------------------------------------------------------------------ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity exec_stage_loop is port( + clk, rst : in std_logic; + activate_exec_loop : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + loop_iterations : in unsigned(15 downto 0); + loop_address : in unsigned(BW_ADDRESS-1 downto 0); + loop_start_address: in unsigned(BW_ADDRESS-1 downto 0); + register_file : in register_file_type; + fetch_perform_enddo: in std_logic; + memory_stall : in std_logic; + push_stack : out push_stack_type; + pop_stack : out pop_stack_type; + stall_rep : out std_logic; + stall_do : out std_logic; + decrement_lc : out std_logic; + modify_lc : out std_logic; + modified_lc : out unsigned(15 downto 0); + modify_la : out std_logic; + modified_la : out unsigned(15 downto 0); + modify_pc : out std_logic; + modified_pc : out unsigned(BW_ADDRESS-1 downto 0); + modify_sr : out std_logic; + modified_sr : out std_logic_vector(15 downto 0) +); +end entity; + + +architecture rtl of exec_stage_loop is + + signal rep_loop_polling : std_logic; + signal do_loop_polling : std_logic; + signal enddo_polling : std_logic; + signal lc_temp : unsigned(15 downto 0); + signal rf_lc_eq_1 : std_logic; + signal memory_stall_t : std_logic; + +begin + + modified_pc <= loop_start_address; + + + -- loop counter in register file equal to 1? + rf_lc_eq_1 <= '1' when register_file.lc = 1 else '0'; + + process(activate_exec_loop, instr_array, register_file, fetch_perform_enddo, + rep_loop_polling, loop_iterations, rf_lc_eq_1, loop_start_address) is + begin + stall_rep <= '0'; + stall_do <= '0'; + + modify_la <= '0'; + modify_lc <= '0'; + modify_pc <= '0'; + modify_sr <= '0'; + modified_la <= loop_address; + modified_lc <= loop_iterations; -- default + -- set the loop flag LF (bit 15) of Status register + modified_sr(15) <= '1'; + modified_sr(14 downto 0) <= register_file.sr(14 downto 0); + + push_stack.valid <= '0'; -- push PC and SR on the stack + push_stack.pc <= loop_start_address; + push_stack.content <= LA_AND_LC; + + pop_stack.valid <= '0'; + decrement_lc <= '0'; + ------------------ + -- DO instruction + ------------------ + if activate_exec_loop = '1' and instr_array = INSTR_DO then + -- first instruction of the do loop instruction? + if do_loop_polling = '0' then + stall_do <= '1'; + modify_lc <= '1'; -- store the new loop counter + modify_la <= '1'; -- store the new loop address + push_stack.valid <= '1'; -- push LA and LC on the stack + push_stack.content <= LA_AND_LC; + else -- second clock cycle of the do loop instruction ? + push_stack.valid <= '1'; -- push PC and SR on the stack + push_stack.pc <= loop_start_address; + push_stack.content <= PC_AND_SR; + -- set the PC to the first instruction of the loop + -- the already fetched instruction are flushed from the pipeline + -- this prevents problems, when the loop consists of only one or two instructions + modify_pc <= '1'; + -- set the loop flag + modify_sr <= '1'; + end if; + end if; + ----------------------------------------------- + -- ENDDO instruction / loop end in fetch stage + ----------------------------------------------- + if (activate_exec_loop = '1' and instr_array = INSTR_ENDDO) or fetch_perform_enddo = '1' or enddo_polling = '1' then + pop_stack.valid <= '1'; + if enddo_polling = '0' then + -- only restore the LF from the stack + modified_sr(15) <= register_file.current_ssl(15); + modify_sr <= '1'; + stall_do <= '1'; -- stall one clock cycle + else + -- restore loop counter and loop address in second clock cycle + modified_lc <= unsigned(register_file.current_ssl); + modify_lc <= '1'; + modified_la <= unsigned(register_file.current_ssh); + modify_la <= '1'; + end if; + end if; + ------------------- + -- REP instruction + ------------------- + if activate_exec_loop = '1' and instr_array = INSTR_REP then + -- only do something when there are more than 1 iterations + -- the first execution is already on the way + if loop_iterations /= 1 then + stall_rep <= '1'; -- stall the fetch and decode stages + modify_lc <= '1'; -- store the loop counter + modified_lc <= loop_iterations - 1; + end if; + end if; + + -- keep processing the single instruction + if rep_loop_polling = '1' then + stall_rep <= '1'; + -- if the REP instruction caused a stall do not modify the lc! + if memory_stall_t = '0' then + if rf_lc_eq_1 = '0' then + decrement_lc <= '1'; + -- when the instruction to repeat caused a memory stall + -- do not continue! + else + -- finish the REP instruction by restoring the LC + stall_rep <= '0'; + modify_lc <= '1'; + modified_lc <= lc_temp; + end if; + end if; + end if; + end process; + + + -- process that allows to remember that we are processing a REP/DO instruction + -- even though the REP instruction is not available in the pipeline anymore + -- also store the old loop counter + process(clk) is + begin + if rising_edge(clk) then + if rst = '1' then + rep_loop_polling <= '0'; + do_loop_polling <= '0'; + enddo_polling <= '0'; + lc_temp <= (others => '0'); + memory_stall_t <= '0'; + else + memory_stall_t <= memory_stall; + + if activate_exec_loop = '1' and instr_array = INSTR_REP then + -- only do something when there are more than 1 iterations + -- the first execution is already on the way + if loop_iterations /= 1 then + rep_loop_polling <= '1'; + lc_temp <= register_file.lc; + end if; + end if; + -- test whether the REP instruction has been executed + if rep_loop_polling = '1' and rf_lc_eq_1 = '1' and memory_stall_t = '0' then + rep_loop_polling <= '0'; + end if; + + -- do loop execution takes two clock cycles + -- in the first clock cycle we store loop address and loop counter on the stack + -- in the second clock cycle we store programm counter and status register on the stack + if activate_exec_loop = '1' and instr_array = INSTR_DO then + do_loop_polling <= '1'; + end if; + -- clear the flag immediately again (only two cycles execution time!) + if do_loop_polling = '1' then + do_loop_polling <= '0'; + end if; + + -- ENDDO instructions take two clock cycles as well! + if (activate_exec_loop = '1' and instr_array = INSTR_ENDDO) or fetch_perform_enddo = '1' then + enddo_polling <= '1'; + end if; + if enddo_polling = '1' then + enddo_polling <= '0'; + end if; + end if; + end if; + end process; + +end architecture; diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/fetch_stage.vhd b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/fetch_stage.vhd new file mode 100644 index 0000000..0848bf8 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/fetch_stage.vhd @@ -0,0 +1,67 @@ +------------------------------------------------------------------------------ +--! @file +--! @author Matthias Alles +--! @date 01/2009 +--! @brief Fetching from program memory +--! +------------------------------------------------------------------------------ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; + + +entity fetch_stage is port( + + pc_old : in unsigned(BW_ADDRESS-1 downto 0); + pc_new : out unsigned(BW_ADDRESS-1 downto 0); + modify_pc : in std_logic; + modified_pc : in unsigned(BW_ADDRESS-1 downto 0); + register_file : in register_file_type; + decrement_lc : out std_logic; + perform_enddo : out std_logic + +); +end fetch_stage; + + +architecture rtl of fetch_stage is + + +begin + + pc_calculation: process(pc_old, modify_pc, modified_pc, register_file) is + begin + decrement_lc <= '0'; + perform_enddo <= '0'; + + -- by default increment pc by one + pc_new <= pc_old + 1; + if modify_pc = '1' then + pc_new <= modified_pc; + end if; + -- Loop Flag set? + if register_file.sr(15) = '1' then + if register_file.la = pc_old then + -- Loop not finished? + -- => start from the beginning if necessary + if register_file.lc /= 1 then + -- if the last address was LA and the loop is not finished yet, we have to + -- read now from the beginning of the loop again + pc_new <= unsigned(register_file.current_ssh(BW_ADDRESS-1 downto 0)); + -- decrement loop counter + decrement_lc <= '1'; + else + -- loop done! + -- => tell the loop controller in the exec stage to perform the enddo operation + -- (without flushing of the pipeline!) + perform_enddo <= '1'; + end if; + end if; + end if; + end process pc_calculation; + +end architecture rtl; + diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/mem_control.vhd b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/mem_control.vhd new file mode 100644 index 0000000..02c70eb --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/mem_control.vhd @@ -0,0 +1,1543 @@ +------------------------------------------------------------------------------ +--! @file +--! @author Matthias Alles +--! @date 01/2009 +--! @brief Internal DSP RAM +--! +------------------------------------------------------------------------------ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; + +entity mem_control is + generic( + mem_type : memory_type := P_MEM + ); + port( + clk, rst : in std_logic; + rd_addr : in unsigned(BW_ADDRESS-1 downto 0); + rd_en : in std_logic; + data_out : out std_logic_vector(23 downto 0); + data_out_valid : out std_logic; + wr_addr : in unsigned(BW_ADDRESS-1 downto 0); + wr_en : in std_logic; + wr_accomplished : out std_logic; + data_in : in std_logic_vector(23 downto 0) + ); +end entity mem_control; + + +architecture rtl of mem_control is + + signal int_mem_rd_addr : std_logic_vector(7 downto 0); + type int_mem_type is array(0 to 255) of std_logic_vector(23 downto 0); + signal int_mem : int_mem_type; + signal int_pmem : int_mem_type := ( +-- AGU testing +X"390100", +X"310A00", +X"000000", +X"204900", +X"050FA1", +X"060AA0", +X"204900", +X"390A00", +X"060AA0", +X"204900", +X"000000", +X"000000", +X"000000", +X"000000", +-- AGU testing + +-- ABS begin +--X"0000B9", +--X"56F400", +--X"200000", +--X"200026", +--X"56F400", +--X"E00000", +--X"200026", +--X"56F400", +--X"000000", +--X"200026", +--X"52F400", +--X"000080", +--X"200026", +-- ABS end + +-- ADC begin +--X"46F400", +--X"000000", +--X"47F400", +--X"000001", +--X"20001B", +--X"51F400", +--X"000001", +--X"0000B9", +--X"0001F9", +--X"200039", +--X"47F400", +--X"800000", +--X"53F400", +--X"000080", +--X"200039", +-- ADC end + +-- ADD begin +--X"46F400", +--X"000000", +--X"47F400", +--X"000001", +--X"20001B", +--X"51F400", +--X"000001", +--X"0000B9", +--X"0001F9", +--X"200038", +--X"47F400", +--X"800000", +--X"53F400", +--X"000080", +--X"200038", +-- ADD end + +-- ADDL begin +--X"56F400", +--X"000055", +--X"20001B", +--X"51F400", +--X"000055", +--X"0000B9", +--X"20001A", +--X"56F400", +--X"0000AA", +--X"20001A", +--X"53F400", +--X"000080", +--X"20001A", +-- ADDL end + +-- ADDR begin +--X"56F400", +--X"000055", +--X"20001B", +--X"51F400", +--X"000055", +--X"0000B9", +--X"20000A", +--X"56F400", +--X"0000AA", +--X"20000A", +--X"53F400", +--X"000080", +--X"20000A", +-- ADDR end + +-- AND begin +--X"46F400", +--X"000FFF", +--X"57F400", +--X"FFFFFF", +--X"0000B9", +--X"20005E", +--X"46F400", +--X"FFF000", +--X"57F400", +--X"FFFFFF", +--X"0000B9", +--X"20005E", +--X"46F400", +--X"000000", +--X"57F400", +--X"FFFFFF", +--X"0000B9", +--X"20005E", +-- AND end + +-- EOR begin +--X"46F400", +--X"000FFF", +--X"57F400", +--X"FF00FF", +--X"0000B9", +--X"20005B", +--X"46F400", +--X"FFFFFF", +--X"57F400", +--X"FFFFFF", +--X"0000B9", +--X"20005B", +-- EOR end + +-- OR begin +--X"46F400", +--X"000FFF", +--X"57F400", +--X"FF00FF", +--X"0000B9", +--X"20005A", +--X"46F400", +--X"000000", +--X"57F400", +--X"000000", +--X"0000B9", +--X"20005A", +-- OR end + +-- NOT begin +--X"46F400", +--X"000FFF", +--X"57F400", +--X"7F00FF", +--X"0000B9", +--X"20001F", +--X"46F400", +--X"000000", +--X"57F400", +--X"FFFFFF", +--X"0000B9", +--X"20001F", +-- NOT end + +-- ASL begin +--X"20001B", +--X"51F400", +--X"0000A5", +--X"55F400", +--X"0000A5", +--X"53F400", +--X"0000A5", +--X"0000B9", +--X"20003A", +-- ASL end + +-- ASR begin +--X"20001B", +--X"51F400", +--X"0000A5", +--X"55F400", +--X"0000A5", +--X"53F400", +--X"0000A5", +--X"0000B9", +--X"20002A", +-- ASR end + +-- CLR begin +--X"0000B9", +--X"56F400", +--X"200000", +--X"200013", +--X"56F400", +--X"E00000", +--X"0000B9", +--X"0001F9", +--X"200013", +-- CLR end + +-- CMP begin +--X"2F2000", +--X"262400", +--X"0000B9", +--X"20005D", +--X"2F2000", +--X"262000", +--X"0000B9", +--X"20005D", +--X"2F2400", +--X"262000", +--X"0000B9", +--X"20005D", +--X"57F400", +--X"800AAA", +--X"262000", +--X"0000B9", +--X"20005D", +--X"46F400", +--X"800AAA", +--X"2F2000", +--X"0000B9", +--X"20005D", +-- CMP end + +-- CMPM begin +--X"2F2000", +--X"262400", +--X"0000B9", +--X"20005F", +--X"2F2000", +--X"262000", +--X"0000B9", +--X"20005F", +--X"2F2400", +--X"262000", +--X"0000B9", +--X"20005F", +--X"57F400", +--X"800AAA", +--X"262000", +--X"0000B9", +--X"20005F", +--X"46F400", +--X"800AAA", +--X"2F2000", +--X"0000B9", +--X"20005F", +-- CMPM end + +-- DIV begin +--X"00FEB9", +--X"44F400", +--X"600000", +--X"56F400", +--X"200000", +--X"0618A0", +--X"018040", +--X"210E00", +-- DIV end + +-- LSL begin +--X"0000B9", +--X"56F400", +--X"200000", +--X"56F400", +--X"AAAAAA", +--X"50F400", +--X"BCDEFA", +--X"0618A0", +--X"200033", +-- LSL end + +-- LSR begin +--X"0000B9", +--X"56F400", +--X"200000", +--X"56F400", +--X"AAAAAA", +--X"50F400", +--X"BCDEFA", +--X"0618A0", +--X"200023", +-- LSR end + +-- MPY begin +--X"0000B9", +--X"44F400", +--X"200000", +--X"46F400", +--X"400000", +--X"2000D0", +--X"44F400", +--X"E00000", +--X"46F400", +--X"B9999A", +--X"2000D0", +--X"44F400", +--X"E66666", +--X"46F400", +--X"466666", +--X"2000D0", +--X"44F400", +--X"E66666", +--X"46F400", +--X"466666", +--X"2000D4", +-- MPY end + +-- MAC begin +--X"0000B9", +--X"200013", +--X"2A8000", +--X"44F400", +--X"200000", +--X"46F400", +--X"400000", +--X"2000D6", +--X"44F400", +--X"E00000", +--X"46F400", +--X"B9999A", +--X"2000D2", +--X"44F400", +--X"E66666", +--X"46F400", +--X"466666", +--X"2000D2", +--X"44F400", +--X"E66666", +--X"46F400", +--X"466666", +--X"2000D6", +-- MAC end + +-- MACR begin +--X"0000B9", +--X"200013", +--X"2E1000", +--X"44F400", +--X"123456", +--X"46F400", +--X"123456", +--X"2000D3", +--X"56F400", +--X"100001", +--X"44F400", +--X"123456", +--X"46F400", +--X"123456", +--X"2000D3", +--X"2E1000", +--X"50F400", +--X"800000", +--X"44F400", +--X"123456", +--X"46F400", +--X"123456", +--X"2000D3", +-- MACR end + +-- MPYR begin +--X"0000B9", +--X"46F400", +--X"654321", +--X"200095", +-- MPYR end + +-- NEG begin +--X"0000B9", +--X"56F400", +--X"654321", +--X"200036", +--X"200013", +--X"52F400", +--X"000080", +--X"200036", +--X"56F400", +--X"800000", +--X"200036", +-- NEG end + +-- NORM begin +--X"200013", +--X"2C0100", +--X"200003", +--X"062FA0", +--X"01DB15", +--X"200013", +--X"2EFF00", +--X"2A8400", +--X"200003", +--X"062FA0", +--X"01D915", +--X"200013", +--X"062FA0", +--X"01DA15", +-- NORM end + +-- RND begin +--X"0000B9", +--X"54F400", +--X"123456", +--X"50F400", +--X"789ABC", +--X"200011", +--X"54F400", +--X"123456", +--X"50F400", +--X"800000", +--X"200011", +--X"54F400", +--X"123455", +--X"50F400", +--X"800000", +--X"200011", +-- RND end + +-- ROR begin +--X"0000B9", +--X"56F400", +--X"AAAAAA", +--X"50F400", +--X"BCDEFA", +--X"0618A0", +--X"200027", +-- ROR end + +-- ROL begin +--X"0000B9", +--X"56F400", +--X"AAAAAA", +--X"50F400", +--X"BCDEFA", +--X"0618A0", +--X"200037", +-- ROL end + + +-- SUB begin +--X"46F400", +--X"000000", +--X"47F400", +--X"000001", +--X"20001B", +--X"51F400", +--X"000001", +--X"0000B9", +--X"0001F9", +--X"20003C", +--X"47F400", +--X"800000", +--X"53F400", +--X"000080", +--X"20003C", +--X"20001B", +--X"53F400", +--X"000080", +--X"47F400", +--X"000001", +--X"20007C", +-- SUB end + +-- SUBL begin +--X"50F400", +--X"000000", +--X"54F400", +--X"000001", +--X"20001B", +--X"51F400", +--X"000001", +--X"0000B9", +--X"0001F9", +--X"20001E", +--X"54F400", +--X"800000", +--X"53F400", +--X"000080", +--X"20001E", +--X"20001B", +--X"53F400", +--X"000080", +--X"54F400", +--X"000001", +--X"20001E", +-- SUBL end + +-- SUBR begin +--X"50F400", +--X"000000", +--X"54F400", +--X"000001", +--X"20001B", +--X"51F400", +--X"000001", +--X"0000B9", +--X"0001F9", +--X"20000E", +--X"54F400", +--X"800000", +--X"53F400", +--X"000080", +--X"20000E", +--X"20001B", +--X"53F400", +--X"000080", +--X"54F400", +--X"000001", +--X"20000E", +-- SUBR end + +-- SBC begin +--X"46F400", +--X"000000", +--X"47F400", +--X"000001", +--X"20001B", +--X"51F400", +--X"000001", +--X"0000B9", +--X"0001F9", +--X"20003D", +--X"47F400", +--X"800000", +--X"53F400", +--X"000080", +--X"20003D", +--X"20001B", +--X"53F400", +--X"000080", +--X"47F400", +--X"000001", +--X"20003D", +-- SBC end + +-- TCC begin +--X"311400", +--X"44F400", +--X"ABCDEF", +--X"57F400", +--X"123456", +--X"0000B9", +--X"038143", +--X"03014A", +--X"0004F9", +--X"03A143", +--X"03214A", +-- TCC end + +-- TFR begin +--X"56F400", +--X"ABCDEF", +--X"57F400", +--X"123456", +--X"21EE09", +--X"44F400", +--X"555555", +--X"47F400", +--X"AAAAAA", +--X"21C441", +--X"21E679", +-- TFR end + +-- TST begin +--X"20001B", +--X"20000B", +--X"0000B9", +--X"0001F9", +--X"53F400", +--X"000080", +--X"20000B", +--X"53F400", +--X"00007F", +--X"20000B", +-- TST end + + +--X"2AFF00", +--X"54F400", +--X"FFFFFF", +--X"50F400", +--X"FFFFF2", +--X"200026", +--X"000000", +--X"000000", +--X"000000", +--X"000000", +--X"000000", +--X"000000", +--X"000000", +--X"000000", +--X"000000", +--X"000000", +X"000000", +X"000000", +X"000000", +X"000000", +X"000000", +X"000000", +X"000000", +X"000000", +X"000000", +--X"44F400", +--X"100010", +--X"45F400", +--X"100011", +--X"0B5880", +--X"000017", +--X"46F400", +--X"100026", +--X"47F400", +--X"100027", +--X"425800", +--X"435800", +--X"420A00", +--X"431F00", +--X"437000", +--X"0000A0", +--X"427000", +--X"00004F", +-- X"42F800", +-- X"43F800", +-- X"428A00", +-- X"439F00", +-- "001100000100100000000000", -- 0 move #72,r0 +-- "001110000000100000000000", -- 1 move #8,n0 +-- "000001010000000010100000", -- 2 move #0,m0 +-- "000001010001000010100001", -- 3 move #16,m1 +-- "000001101110000100100000", -- 4 rep m1 +-- "010001001100100000000000", -- 5 move x:(r0)+n0,x0 +-- "000000000000000000000000", -- 6 +-- "000000000000000000000000", -- 7 +-- "000000000000000000000000", -- 8 +-- "000000000000000000000000", -- 9 +-- "000000000000000000000000", -- 10 +-- "000000000000000000000000", -- 11 +-- "000000000000000000000000", -- 12 +-- "000000000000000000000000", -- 13 +-- "000000000000000000000000", -- 14 +-- "000000000000000000000000", -- 15 +-- "000000000000000000000000", -- 16 +-- "000000000000000000000000", -- 17 +-- "000000000000000000000000", -- 18 +-- "000000000000000000000000", -- 19 +-- "000010101101101010000000", -- 20 -- JMP (r2)+ +-- "000000000000000000000000", -- 20 +-- "000000000000000000000000", -- 21 +-- "000000000000000000000000", -- 22 + "000000000000000000000000", -- 23 + "000000000000000000000000", -- 24 + "000000000000000000000000", -- 25 + "000000000000000000000000", -- 26 + "000000000000000000000000", -- 27 + "000000000000000000000000", -- 28 + "000000000000000000000000", -- 29 + "000000000000000000000000", -- 30 + "000000000000000000000000", -- 31 +-- "000000000000000000000000", -- 32 +-- "000011010000000000000000", -- 32 -- JSR #0 + "000010111111000010000000", -- 32 -- JSR absolute + "000000000000000001000000", -- 33 -- #64 + "000000000000000000000000", -- 34 + "000000000000000000000000", -- 35 + "000000000000000000000000", -- 36 + "000000000000000000000000", -- 37 + "000000000000000000000000", -- 38 + "000000000000000000000000", -- 39 + "000000000000000000000000", -- 40 + "000000000000000000000000", -- 41 + "000000000000000000000000", -- 42 + "000000000000000000000000", -- 43 + "000000000000000000000000", -- 44 + "000000000000000000000000", -- 45 + "000000000000000000000000", -- 46 + "000000000000000000000000", -- 47 + "000000000000000000000000", -- 48 + "000000000000000000000000", -- 49 + "000000000000000000000000", -- 50 + "000000000000000000000000", -- 51 + "000000000000000000000000", -- 52 + "000000000000000000000000", -- 53 + "000000000000000000000000", -- 54 + "000000000000000000000000", -- 55 + "000000000000000000000000", -- 56 + "000000000000000000000000", -- 57 + "000000000000000000000000", -- 58 + "000000000000000000000000", -- 59 + "000000000000000000000000", -- 60 + "000000000000000000000000", -- 61 + "000000000000000000000000", -- 62 + "000000000000000000000000", -- 63 + "000000000000000000000000", -- 64 + "000000000000000000000000", -- 65 + "000000000000000000000000", -- 66 + "000000000000000000000000", -- 67 + "000000000000000000000000", -- 68 + "000000000000000000000000", -- 69 + "000000000000000000000100", -- 70 -- RTI + "000000000000000000000000", -- 71 + "000000000000000000000000", -- 72 + "000000000000000000000000", -- 73 + "000000000000000000000000", -- 74 + "000000000000000000000000", -- 75 + "000000000000000000000000", -- 76 + "000000000000000000000000", -- 77 + "000000000000000000000000", -- 78 + "000000000000000000000000", -- 79 + "000000000000000000000000", -- 80 + "000000000000000000000000", -- 81 + "000000000000000000000000", -- 82 + "000000000000000000000000", -- 83 + "000000000000000000000000", -- 84 + "000000000000000000000000", -- 85 + "000000000000000000000000", -- 86 + "000000000000000000000000", -- 87 + "000000000000000000000000", -- 88 + "000000000000000000000000", -- 89 + "000000000000000000000000", -- 90 + "000000000000000000000000", -- 91 + "000000000000000000000000", -- 92 + "000000000000000000000000", -- 93 + "000000000000000000000000", -- 94 + "000000000000000000000000", -- 95 + "000000000000000000000000", -- 96 + "000000000000000000000000", -- 97 + "000000000000000000000000", -- 98 + "000000000000000000000000", -- 99 + "000000000000000000000000", -- 100 + "000000000000000000000000", -- 101 + "000000000000000000000000", -- 102 + "000000000000000000000000", -- 103 + "000000000000000000000000", -- 104 + "000000000000000000000000", -- 105 + "000000000000000000000000", -- 106 + "000000000000000000000000", -- 107 + "000000000000000000000000", -- 108 + "000000000000000000000000", -- 109 + "000000000000000000000000", -- 110 + "000000000000000000000000", -- 111 + "000000000000000000000000", -- 112 + "000000000000000000000000", -- 113 + "000000000000000000000000", -- 114 + "000000000000000000000000", -- 115 + "000000000000000000000000", -- 116 + "000000000000000000000000", -- 117 + "000000000000000000000000", -- 118 + "000000000000000000000000", -- 119 + "000000000000000000000000", -- 120 + "000000000000000000000000", -- 121 + "000000000000000000000000", -- 122 + "000000000000000000000000", -- 123 + "000000000000000000000000", -- 124 + "000000000000000000000000", -- 125 + "000000000000000000000000", -- 126 + "000000000000000000000000", -- 127 + "000000000000000000000000", -- 128 + "000000000000000000000000", -- 129 + "000000000000000000000000", -- 130 + "000000000000000000000000", -- 131 + "000000000000000000000000", -- 132 + "000000000000000000000000", -- 133 + "000000000000000000000000", -- 134 + "000000000000000000000000", -- 135 + "000000000000000000000000", -- 136 + "000000000000000000000000", -- 137 + "000000000000000000000000", -- 138 + "000000000000000000000000", -- 139 + "000000000000000000000000", -- 140 + "000000000000000000000000", -- 141 + "000000000000000000000000", -- 142 + "000000000000000000000000", -- 143 + "000000000000000000000000", -- 144 + "000000000000000000000000", -- 145 + "000000000000000000000000", -- 146 + "000000000000000000000000", -- 147 + "000000000000000000000000", -- 148 + "000000000000000000000000", -- 149 + "000000000000000000000000", -- 150 + "000000000000000000000000", -- 151 + "000000000000000000000000", -- 152 + "000000000000000000000000", -- 153 + "000000000000000000000000", -- 154 + "000000000000000000000000", -- 155 + "000000000000000000000000", -- 156 + "000000000000000000000000", -- 157 + "000000000000000000000000", -- 158 + "000000000000000000000000", -- 159 + "000000000000000000000000", -- 160 + "000000000000000000000000", -- 161 + "000000000000000000000000", -- 162 + "000000000000000000000000", -- 163 + "000000000000000000000000", -- 164 + "000000000000000000000000", -- 165 + "000000000000000000000000", -- 166 + "000000000000000000000000", -- 167 + "000000000000000000000000", -- 168 + "000000000000000000000000", -- 169 + "000000000000000000000000", -- 170 + "000000000000000000000000", -- 171 + "000000000000000000000000", -- 172 + "000000000000000000000000", -- 173 + "000000000000000000000000", -- 174 + "000000000000000000000000", -- 175 + "000000000000000000000000", -- 176 + "000000000000000000000000", -- 177 + "000000000000000000000000", -- 178 + "000000000000000000000000", -- 179 + "000000000000000000000000", -- 180 + "000000000000000000000000", -- 181 + "000000000000000000000000", -- 182 + "000000000000000000000000", -- 183 + "000000000000000000000000", -- 184 + "000000000000000000000000", -- 185 + "000000000000000000000000", -- 186 + "000000000000000000000000", -- 187 + "000000000000000000000000", -- 188 + "000000000000000000000000", -- 189 + "000000000000000000000000", -- 190 + "000000000000000000000000", -- 191 + "000000000000000000000000", -- 192 + "000000000000000000000000", -- 193 + "000000000000000000000000", -- 194 + "000000000000000000000000", -- 195 + "000000000000000000000000", -- 196 + "000000000000000000000000", -- 197 + "000000000000000000000000", -- 198 + "000000000000000000000000", -- 199 + "000000000000000000000000", -- 200 + "000000000000000000000000", -- 201 + "000000000000000000000000", -- 202 + "000000000000000000000000", -- 203 + "000000000000000000000000", -- 204 + "000000000000000000000000", -- 205 + "000000000000000000000000", -- 206 + "000000000000000000000000", -- 207 + "000000000000000000000000", -- 208 + "000000000000000000000000", -- 209 + "000000000000000000000000", -- 210 + "000000000000000000000000", -- 211 + "000000000000000000000000", -- 212 + "000000000000000000000000", -- 213 + "000000000000000000000000", -- 214 + "000000000000000000000000", -- 215 + "000000000000000000000000", -- 216 + "000000000000000000000000", -- 217 + "000000000000000000000000", -- 218 + "000000000000000000000000", -- 219 + "000000000000000000000000", -- 220 + "000000000000000000000000", -- 221 + "000000000000000000000000", -- 222 + "000000000000000000000000", -- 223 + "000000000000000000000000", -- 224 + "000000000000000000000000", -- 225 + "000000000000000000000000", -- 226 + "000000000000000000000000", -- 227 + "000000000000000000000000", -- 228 + "000000000000000000000000", -- 229 + "000000000000000000000000", -- 230 + "000000000000000000000000", -- 231 + "000000000000000000000000", -- 232 + "000000000000000000000000", -- 233 + "000000000000000000000000", -- 234 + "000000000000000000000000", -- 235 + "000000000000000000000000", -- 236 + "000000000000000000000000", -- 237 + "000000000000000000000000", -- 238 + "000000000000000000000000", -- 239 + "000000000000000000000000", -- 240 + "000000000000000000000000", -- 241 + "000000000000000000000000", -- 242 + "000000000000000000000000", -- 243 + "000000000000000000000000", -- 244 + "000000000000000000000000", -- 245 + "000000000000000000000000", -- 246 + "000000000000000000000000", -- 247 + "000000000000000000000000", -- 248 + "000000000000000000000000", -- 249 + "000000000000000000000000", -- 250 + "000000000000000000000000", -- 251 + "000000000000000000000000", -- 252 + "000000000000000000000000", -- 253 + "000000000000000000000000", -- 254 + "000000000000000000000000"); -- 255 + signal int_xmem : int_mem_type := ( +-- when "11------10000000" => instr_array(JMP_INSTR) <= '1'; +-- "000000000000111011111001", -- 0 -- ORI #$0E, CCR + "000000000000000000001100", -- 0 -- REP + "000000000000000000000101", -- 1 -- ORI #$0E, MR + "000000000000111011111010", -- 2 -- ORI #$0E, OMR + "000000000000100010111010", -- 3 -- ANDI #$08, OMR +-- "000010101111000010000000", -- 1 -- JMP absolute +-- "000000000000000000011111", -- 2 -- #31 +-- "000011000000000000010000", -- 3 -- JMP #16 + "000000000000000000000000", -- 4 + "000000000000000000000000", -- 5 + "000000000000000000000000", -- 6 + "000000000000000000000000", -- 7 + "000000000000000000000000", -- 8 + "000000000000000000000000", -- 9 + "000000000000000000000000", -- 10 + "000000000000000000000000", -- 11 + "000000000000000000000000", -- 12 + "000000000000000000000000", -- 13 + "000000000000000000000000", -- 14 + "000000000000000000000000", -- 15 + "000000000000000000000000", -- 16 +-- "000000000000000000000000", -- 17 + "000010101101010110100000", -- 17 -- JCC (r5)- + "000000000000000000000000", -- 18 + "000000000000000000000000", -- 19 + "000010101101101010000000", -- 20 -- JMP (r2)+ + "000000000000000000000000", -- 21 + "000000000000000000000000", -- 22 + "000000000000000000000000", -- 23 + "000000000000000000000000", -- 24 + "000000000000000000000000", -- 25 + "000000000000000000000000", -- 26 + "000000000000000000000000", -- 27 + "000000000000000000000000", -- 28 + "000000000000000000000000", -- 29 + "000000000000000000000000", -- 30 + "000000000000000000000000", -- 31 +-- "000000000000000000000000", -- 32 +-- "000011010000000000000000", -- 32 -- JSR #0 + "000010111111000010000000", -- 32 -- JSR absolute + "000000000000000001000000", -- 33 -- #64 + "000000000000000000000000", -- 34 + "000000000000000000000000", -- 35 + "000000000000000000000000", -- 36 + "000000000000000000000000", -- 37 + "000000000000000000000000", -- 38 + "000000000000000000000000", -- 39 + "000000000000000000000000", -- 40 + "000000000000000000000000", -- 41 + "000000000000000000000000", -- 42 + "000000000000000000000000", -- 43 + "000000000000000000000000", -- 44 + "000000000000000000000000", -- 45 + "000000000000000000000000", -- 46 + "000000000000000000000000", -- 47 + "000000000000000000000000", -- 48 + "000000000000000000000000", -- 49 + "000000000000000000000000", -- 50 + "000000000000000000000000", -- 51 + "000000000000000000000000", -- 52 + "000000000000000000000000", -- 53 + "000000000000000000000000", -- 54 + "000000000000000000000000", -- 55 + "000000000000000000000000", -- 56 + "000000000000000000000000", -- 57 + "000000000000000000000000", -- 58 + "000000000000000000000000", -- 59 + "000000000000000000000000", -- 60 + "000000000000000000000000", -- 61 + "000000000000000000000000", -- 62 + "000000000000000000000000", -- 63 + "000000000000000000000000", -- 64 + "000000000000000000000000", -- 65 + "000000000000000000000000", -- 66 + "000000000000000000000000", -- 67 + "000000000000000000000000", -- 68 + "000000000000000000000000", -- 69 + "000000000000000000000100", -- 70 -- RTI + "000000000000000000000000", -- 71 + "000000000000000000000000", -- 72 + "000000000000000000000000", -- 73 + "000000000000000000000000", -- 74 + "000000000000000000000000", -- 75 + "000000000000000000000000", -- 76 + "000000000000000000000000", -- 77 + "000000000000000000000000", -- 78 + "000000000000000000000000", -- 79 + "000000000000000000000000", -- 80 + "000000000000000000000000", -- 81 + "000000000000000000000000", -- 82 + "000000000000000000000000", -- 83 + "000000000000000000000000", -- 84 + "000000000000000000000000", -- 85 + "000000000000000000000000", -- 86 + "000000000000000000000000", -- 87 + "000000000000000000000000", -- 88 + "000000000000000000000000", -- 89 + "000000000000000000000000", -- 90 + "000000000000000000000000", -- 91 + "000000000000000000000000", -- 92 + "000000000000000000000000", -- 93 + "000000000000000000000000", -- 94 + "000000000000000000000000", -- 95 + "000000000000000000000000", -- 96 + "000000000000000000000000", -- 97 + "000000000000000000000000", -- 98 + "000000000000000000000000", -- 99 + "000000000000000000000000", -- 100 + "000000000000000000000000", -- 101 + "000000000000000000000000", -- 102 + "000000000000000000000000", -- 103 + "000000000000000000000000", -- 104 + "000000000000000000000000", -- 105 + "000000000000000000000000", -- 106 + "000000000000000000000000", -- 107 + "000000000000000000000000", -- 108 + "000000000000000000000000", -- 109 + "000000000000000000000000", -- 110 + "000000000000000000000000", -- 111 + "000000000000000000000000", -- 112 + "000000000000000000000000", -- 113 + "000000000000000000000000", -- 114 + "000000000000000000000000", -- 115 + "000000000000000000000000", -- 116 + "000000000000000000000000", -- 117 + "000000000000000000000000", -- 118 + "000000000000000000000000", -- 119 + "000000000000000000000000", -- 120 + "000000000000000000000000", -- 121 + "000000000000000000000000", -- 122 + "000000000000000000000000", -- 123 + "000000000000000000000000", -- 124 + "000000000000000000000000", -- 125 + "000000000000000000000000", -- 126 + "000000000000000000000000", -- 127 + "000000000000000000000000", -- 128 + "000000000000000000000000", -- 129 + "000000000000000000000000", -- 130 + "000000000000000000000000", -- 131 + "000000000000000000000000", -- 132 + "000000000000000000000000", -- 133 + "000000000000000000000000", -- 134 + "000000000000000000000000", -- 135 + "000000000000000000000000", -- 136 + "000000000000000000000000", -- 137 + "000000000000000000000000", -- 138 + "000000000000000000000000", -- 139 + "000000000000000000000000", -- 140 + "000000000000000000000000", -- 141 + "000000000000000000000000", -- 142 + "000000000000000000000000", -- 143 + "000000000000000000000000", -- 144 + "000000000000000000000000", -- 145 + "000000000000000000000000", -- 146 + "000000000000000000000000", -- 147 + "000000000000000000000000", -- 148 + "000000000000000000000000", -- 149 + "000000000000000000000000", -- 150 + "000000000000000000000000", -- 151 + "000000000000000000000000", -- 152 + "000000000000000000000000", -- 153 + "000000000000000000000000", -- 154 + "000000000000000000000000", -- 155 + "000000000000000000000000", -- 156 + "000000000000000000000000", -- 157 + "000000000000000000000000", -- 158 + "000000000000000000000000", -- 159 + "000000000000000000000000", -- 160 + "000000000000000000000000", -- 161 + "000000000000000000000000", -- 162 + "000000000000000000000000", -- 163 + "000000000000000000000000", -- 164 + "000000000000000000000000", -- 165 + "000000000000000000000000", -- 166 + "000000000000000000000000", -- 167 + "000000000000000000000000", -- 168 + "000000000000000000000000", -- 169 + "000000000000000000000000", -- 170 + "000000000000000000000000", -- 171 + "000000000000000000000000", -- 172 + "000000000000000000000000", -- 173 + "000000000000000000000000", -- 174 + "000000000000000000000000", -- 175 + "000000000000000000000000", -- 176 + "000000000000000000000000", -- 177 + "000000000000000000000000", -- 178 + "000000000000000000000000", -- 179 + "000000000000000000000000", -- 180 + "000000000000000000000000", -- 181 + "000000000000000000000000", -- 182 + "000000000000000000000000", -- 183 + "000000000000000000000000", -- 184 + "000000000000000000000000", -- 185 + "000000000000000000000000", -- 186 + "000000000000000000000000", -- 187 + "000000000000000000000000", -- 188 + "000000000000000000000000", -- 189 + "000000000000000000000000", -- 190 + "000000000000000000000000", -- 191 + "000000000000000000000000", -- 192 + "000000000000000000000000", -- 193 + "000000000000000000000000", -- 194 + "000000000000000000000000", -- 195 + "000000000000000000000000", -- 196 + "000000000000000000000000", -- 197 + "000000000000000000000000", -- 198 + "000000000000000000000000", -- 199 + "000000000000000000000000", -- 200 + "000000000000000000000000", -- 201 + "000000000000000000000000", -- 202 + "000000000000000000000000", -- 203 + "000000000000000000000000", -- 204 + "000000000000000000000000", -- 205 + "000000000000000000000000", -- 206 + "000000000000000000000000", -- 207 + "000000000000000000000000", -- 208 + "000000000000000000000000", -- 209 + "000000000000000000000000", -- 210 + "000000000000000000000000", -- 211 + "000000000000000000000000", -- 212 + "000000000000000000000000", -- 213 + "000000000000000000000000", -- 214 + "000000000000000000000000", -- 215 + "000000000000000000000000", -- 216 + "000000000000000000000000", -- 217 + "000000000000000000000000", -- 218 + "000000000000000000000000", -- 219 + "000000000000000000000000", -- 220 + "000000000000000000000000", -- 221 + "000000000000000000000000", -- 222 + "000000000000000000000000", -- 223 + "000000000000000000000000", -- 224 + "000000000000000000000000", -- 225 + "000000000000000000000000", -- 226 + "000000000000000000000000", -- 227 + "000000000000000000000000", -- 228 + "000000000000000000000000", -- 229 + "000000000000000000000000", -- 230 + "000000000000000000000000", -- 231 + "000000000000000000000000", -- 232 + "000000000000000000000000", -- 233 + "000000000000000000000000", -- 234 + "000000000000000000000000", -- 235 + "000000000000000000000000", -- 236 + "000000000000000000000000", -- 237 + "000000000000000000000000", -- 238 + "000000000000000000000000", -- 239 + "000000000000000000000000", -- 240 + "000000000000000000000000", -- 241 + "000000000000000000000000", -- 242 + "000000000000000000000000", -- 243 + "000000000000000000000000", -- 244 + "000000000000000000000000", -- 245 + "000000000000000000000000", -- 246 + "000000000000000000000000", -- 247 + "000000000000000000000000", -- 248 + "000000000000000000000000", -- 249 + "000000000000000000000000", -- 250 + "000000000000000000000000", -- 251 + "000000000000000000000000", -- 252 + "000000000000000000000000", -- 253 + "000000000000000000000000", -- 254 + "000000000000000000000000"); -- 255 + signal int_ymem : int_mem_type := ( +-- when "11------10000000" => instr_array(JMP_INSTR) <= '1'; +-- "000000000000111011111001", -- 0 -- ORI #$0E, CCR + "000000000000000000000001", -- 0 -- REP + "000000000000000000000010", -- 1 -- ORI #$0E, MR + "000000000000000000000011", -- 2 -- ORI #$0E, OMR + "000000000000000000000100", -- 3 -- ANDI #$08, OMR +-- "000010101111000010000000", -- 1 -- JMP absolute +-- "000000000000000000011111", -- 2 -- #31 +-- "000011000000000000010000", -- 3 -- JMP #16 + "000000000000000000000101", -- 4 + "000000000000000000000110", -- 5 + "000000000000000000000111", -- 6 + "000000000000000000001000", -- 7 + "000000000000000000001001", -- 8 + "000000000000000000001010", -- 9 + "000000000000000000001011", -- 10 + "000000000000000000001100", -- 11 + "000000000000000000001101", -- 12 + "000000000000000000001110", -- 13 + "000000000000000000001111", -- 14 + "000000000000000000010000", -- 15 + "000000000000000000010001", -- 16 +-- "000000000000000000000000", -- 17 + "000010101101010110100000", -- 17 -- JCC (r5)- + "000000000000000000000000", -- 18 + "000000000000000000000000", -- 19 + "000010101101101010000000", -- 20 -- JMP (r2)+ + "000000000000000000000000", -- 21 + "000000000000000000000000", -- 22 + "000000000000000000000000", -- 23 + "000000000000000000000000", -- 24 + "000000000000000000000000", -- 25 + "000000000000000000000000", -- 26 + "000000000000000000000000", -- 27 + "000000000000000000000000", -- 28 + "000000000000000000000000", -- 29 + "000000000000000000000000", -- 30 + "000000000000000000000000", -- 31 +-- "000000000000000000000000", -- 32 +-- "000011010000000000000000", -- 32 -- JSR #0 + "000010111111000010000000", -- 32 -- JSR absolute + "000000000000000001000000", -- 33 -- #64 + "000000000000000000000000", -- 34 + "000000000000000000000000", -- 35 + "000000000000000000000000", -- 36 + "000000000000000000000000", -- 37 + "000000000000000000000000", -- 38 + "000000000000000000000000", -- 39 + "000000000000000000000000", -- 40 + "000000000000000000000000", -- 41 + "000000000000000000000000", -- 42 + "000000000000000000000000", -- 43 + "000000000000000000000000", -- 44 + "000000000000000000000000", -- 45 + "000000000000000000000000", -- 46 + "000000000000000000000000", -- 47 + "000000000000000000000000", -- 48 + "000000000000000000000000", -- 49 + "000000000000000000000000", -- 50 + "000000000000000000000000", -- 51 + "000000000000000000000000", -- 52 + "000000000000000000000000", -- 53 + "000000000000000000000000", -- 54 + "000000000000000000000000", -- 55 + "000000000000000000000000", -- 56 + "000000000000000000000000", -- 57 + "000000000000000000000000", -- 58 + "000000000000000000000000", -- 59 + "000000000000000000000000", -- 60 + "000000000000000000000000", -- 61 + "000000000000000000000000", -- 62 + "000000000000000000000000", -- 63 + "000000000000000000000000", -- 64 + "000000000000000000000000", -- 65 + "000000000000000000000000", -- 66 + "000000000000000000000000", -- 67 + "000000000000000000000000", -- 68 + "000000000000000000000000", -- 69 + "000000000000000000000100", -- 70 -- RTI + "000000000000000000000000", -- 71 + "000000000000000000000000", -- 72 + "000000000000000000000000", -- 73 + "000000000000000000000000", -- 74 + "000000000000000000000000", -- 75 + "000000000000000000000000", -- 76 + "000000000000000000000000", -- 77 + "000000000000000000000000", -- 78 + "000000000000000000000000", -- 79 + "000000000000000000000000", -- 80 + "000000000000000000000000", -- 81 + "000000000000000000000000", -- 82 + "000000000000000000000000", -- 83 + "000000000000000000000000", -- 84 + "000000000000000000000000", -- 85 + "000000000000000000000000", -- 86 + "000000000000000000000000", -- 87 + "000000000000000000000000", -- 88 + "000000000000000000000000", -- 89 + "000000000000000000000000", -- 90 + "000000000000000000000000", -- 91 + "000000000000000000000000", -- 92 + "000000000000000000000000", -- 93 + "000000000000000000000000", -- 94 + "000000000000000000000000", -- 95 + "000000000000000000000000", -- 96 + "000000000000000000000000", -- 97 + "000000000000000000000000", -- 98 + "000000000000000000000000", -- 99 + "000000000000000000000000", -- 100 + "000000000000000000000000", -- 101 + "000000000000000000000000", -- 102 + "000000000000000000000000", -- 103 + "000000000000000000000000", -- 104 + "000000000000000000000000", -- 105 + "000000000000000000000000", -- 106 + "000000000000000000000000", -- 107 + "000000000000000000000000", -- 108 + "000000000000000000000000", -- 109 + "000000000000000000000000", -- 110 + "000000000000000000000000", -- 111 + "000000000000000000000000", -- 112 + "000000000000000000000000", -- 113 + "000000000000000000000000", -- 114 + "000000000000000000000000", -- 115 + "000000000000000000000000", -- 116 + "000000000000000000000000", -- 117 + "000000000000000000000000", -- 118 + "000000000000000000000000", -- 119 + "000000000000000000000000", -- 120 + "000000000000000000000000", -- 121 + "000000000000000000000000", -- 122 + "000000000000000000000000", -- 123 + "000000000000000000000000", -- 124 + "000000000000000000000000", -- 125 + "000000000000000000000000", -- 126 + "000000000000000000000000", -- 127 + "000000000000000000000000", -- 128 + "000000000000000000000000", -- 129 + "000000000000000000000000", -- 130 + "000000000000000000000000", -- 131 + "000000000000000000000000", -- 132 + "000000000000000000000000", -- 133 + "000000000000000000000000", -- 134 + "000000000000000000000000", -- 135 + "000000000000000000000000", -- 136 + "000000000000000000000000", -- 137 + "000000000000000000000000", -- 138 + "000000000000000000000000", -- 139 + "000000000000000000000000", -- 140 + "000000000000000000000000", -- 141 + "000000000000000000000000", -- 142 + "000000000000000000000000", -- 143 + "000000000000000000000000", -- 144 + "000000000000000000000000", -- 145 + "000000000000000000000000", -- 146 + "000000000000000000000000", -- 147 + "000000000000000000000000", -- 148 + "000000000000000000000000", -- 149 + "000000000000000000000000", -- 150 + "000000000000000000000000", -- 151 + "000000000000000000000000", -- 152 + "000000000000000000000000", -- 153 + "000000000000000000000000", -- 154 + "000000000000000000000000", -- 155 + "000000000000000000000000", -- 156 + "000000000000000000000000", -- 157 + "000000000000000000000000", -- 158 + "000000000000000000000000", -- 159 + "000000000000000000000000", -- 160 + "000000000000000000000000", -- 161 + "000000000000000000000000", -- 162 + "000000000000000000000000", -- 163 + "000000000000000000000000", -- 164 + "000000000000000000000000", -- 165 + "000000000000000000000000", -- 166 + "000000000000000000000000", -- 167 + "000000000000000000000000", -- 168 + "000000000000000000000000", -- 169 + "000000000000000000000000", -- 170 + "000000000000000000000000", -- 171 + "000000000000000000000000", -- 172 + "000000000000000000000000", -- 173 + "000000000000000000000000", -- 174 + "000000000000000000000000", -- 175 + "000000000000000000000000", -- 176 + "000000000000000000000000", -- 177 + "000000000000000000000000", -- 178 + "000000000000000000000000", -- 179 + "000000000000000000000000", -- 180 + "000000000000000000000000", -- 181 + "000000000000000000000000", -- 182 + "000000000000000000000000", -- 183 + "000000000000000000000000", -- 184 + "000000000000000000000000", -- 185 + "000000000000000000000000", -- 186 + "000000000000000000000000", -- 187 + "000000000000000000000000", -- 188 + "000000000000000000000000", -- 189 + "000000000000000000000000", -- 190 + "000000000000000000000000", -- 191 + "000000000000000000000000", -- 192 + "000000000000000000000000", -- 193 + "000000000000000000000000", -- 194 + "000000000000000000000000", -- 195 + "000000000000000000000000", -- 196 + "000000000000000000000000", -- 197 + "000000000000000000000000", -- 198 + "000000000000000000000000", -- 199 + "000000000000000000000000", -- 200 + "000000000000000000000000", -- 201 + "000000000000000000000000", -- 202 + "000000000000000000000000", -- 203 + "000000000000000000000000", -- 204 + "000000000000000000000000", -- 205 + "000000000000000000000000", -- 206 + "000000000000000000000000", -- 207 + "000000000000000000000000", -- 208 + "000000000000000000000000", -- 209 + "000000000000000000000000", -- 210 + "000000000000000000000000", -- 211 + "000000000000000000000000", -- 212 + "000000000000000000000000", -- 213 + "000000000000000000000000", -- 214 + "000000000000000000000000", -- 215 + "000000000000000000000000", -- 216 + "000000000000000000000000", -- 217 + "000000000000000000000000", -- 218 + "000000000000000000000000", -- 219 + "000000000000000000000000", -- 220 + "000000000000000000000000", -- 221 + "000000000000000000000000", -- 222 + "000000000000000000000000", -- 223 + "000000000000000000000000", -- 224 + "000000000000000000000000", -- 225 + "000000000000000000000000", -- 226 + "000000000000000000000000", -- 227 + "000000000000000000000000", -- 228 + "000000000000000000000000", -- 229 + "000000000000000000000000", -- 230 + "000000000000000000000000", -- 231 + "000000000000000000000000", -- 232 + "000000000000000000000000", -- 233 + "000000000000000000000000", -- 234 + "000000000000000000000000", -- 235 + "000000000000000000000000", -- 236 + "000000000000000000000000", -- 237 + "000000000000000000000000", -- 238 + "000000000000000000000000", -- 239 + "000000000000000000000000", -- 240 + "000000000000000000000000", -- 241 + "000000000000000000000000", -- 242 + "000000000000000000000000", -- 243 + "000000000000000000000000", -- 244 + "000000000000000000000000", -- 245 + "000000000000000000000000", -- 246 + "000000000000000000000000", -- 247 + "000000000000000000000000", -- 248 + "000000000000000000000000", -- 249 + "000000000000000000000000", -- 250 + "000000000000000000000000", -- 251 + "000000000000000000000000", -- 252 + "000000000000000000000000", -- 253 + "000000000000000000000000", -- 254 + "000000000000000000000000"); -- 255 + +begin + +-- int_mem <= int_pmem when mem_type = P_MEM else +-- int_xmem when mem_type = X_MEM else +-- int_ymem when mem_type = Y_MEM; + + wr_accomplished <= wr_en; + + PMEM_GEN: if mem_type = P_MEM generate + data_out <= int_pmem(to_integer(unsigned(int_mem_rd_addr))); + process(clk) is + begin + if rising_edge(clk) then +-- if rst = '1' then +-- data_out_valid <= '0'; +-- int_mem_rd_addr <= (others => '0'); +-- else + int_mem_rd_addr <= std_logic_vector(rd_addr(7 downto 0)); + data_out_valid <= rd_en; + if wr_en = '1' then + int_pmem(to_integer(wr_addr)) <= data_in; + end if; +-- end if; + end if; + end process; + end generate; + + XMEM_GEN: if mem_type = X_MEM generate + data_out <= int_xmem(to_integer(unsigned(int_mem_rd_addr))); + process(clk) is + begin + if rising_edge(clk) then +-- if rst = '1' then +-- data_out_valid <= '0'; +-- int_mem_rd_addr <= (others => '0'); +-- else + int_mem_rd_addr <= std_logic_vector(rd_addr(7 downto 0)); + data_out_valid <= rd_en; + if wr_en = '1' then + int_xmem(to_integer(wr_addr)) <= data_in; + end if; +-- end if; + end if; + end process; + end generate; + + YMEM_GEN: if mem_type = Y_MEM generate + data_out <= int_ymem(to_integer(unsigned(int_mem_rd_addr))); + process(clk) is + begin + if rising_edge(clk) then +-- if rst = '1' then +-- data_out_valid <= '0'; +-- int_mem_rd_addr <= (others => '0'); +-- else + int_mem_rd_addr <= std_logic_vector(rd_addr(7 downto 0)); + data_out_valid <= rd_en; + if wr_en = '1' then + int_ymem(to_integer(wr_addr)) <= data_in; + end if; +-- end if; + end if; + end process; + end generate; +-- process(clk, rst) is +-- begin +-- if rising_edge(clk) then +-- if rst = '1' then +-- data_out_valid <= '0'; +-- int_mem_rd_addr <= (others => '0'); +-- else +-- int_mem_rd_addr <= std_logic_vector(rd_addr(7 downto 0)); +-- data_out_valid <= rd_en; +-- if wr_en = '1' then +-- if mem_type = P_MEM then +-- int_pmem(to_integer(wr_addr)) <= data_in; +-- elsif mem_type = X_MEM then +-- int_xmem(to_integer(wr_addr)) <= data_in; +-- elsif mem_type = Y_MEM then +-- int_ymem(to_integer(wr_addr)) <= data_in; +-- end if; +-- end if; +-- end if; +-- end if; +-- end process; + +end architecture rtl; + diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/memory_management.vhd b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/memory_management.vhd new file mode 100644 index 0000000..215fe66 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/memory_management.vhd @@ -0,0 +1,223 @@ +------------------------------------------------------------------------------ +--! @file +--! @author Matthias Alles +--! @date 01/2009 +--! @brief Memory controller +--! +--! @details This entity contains the internal memories. These are: +--! - pmem +--! - xmem +--! - ymem +--! - ROM tables +--! - Bootup code +--! All memory requests are collected here. Only when they are all finished +--! the memory_stall-flag is released. External memory accesses are given to +--! the external interface. +--! +------------------------------------------------------------------------------ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity memory_management is port ( + clk, rst : in std_logic; + stall_flags : in std_logic_vector(PIPELINE_DEPTH-1 downto 0); + memory_stall : out std_logic; + data_rom_enable: in std_logic; + pmem_ctrl_in : in mem_ctrl_type_in; + pmem_ctrl_out : out mem_ctrl_type_out; + pmem2_ctrl_in : in mem_ctrl_type_in; + pmem2_ctrl_out : out mem_ctrl_type_out; + xmem_ctrl_in : in mem_ctrl_type_in; + xmem_ctrl_out : out mem_ctrl_type_out; + ymem_ctrl_in : in mem_ctrl_type_in; + ymem_ctrl_out : out mem_ctrl_type_out +); +end memory_management; + + +architecture rtl of memory_management is + + component mem_control is + generic( + mem_type : memory_type + ); + port( + clk, rst : in std_logic; + rd_addr : in unsigned(BW_ADDRESS-1 downto 0); + rd_en : in std_logic; + data_out : out std_logic_vector(23 downto 0); + data_out_valid : out std_logic; + wr_addr : in unsigned(BW_ADDRESS-1 downto 0); + wr_en : in std_logic; + wr_accomplished : out std_logic; + data_in : in std_logic_vector(23 downto 0) + ); + end component mem_control; + + signal pmem_data_out : std_logic_vector(23 downto 0); + signal pmem_data_out_valid : std_logic; + + signal pmem_rd_addr : unsigned(BW_ADDRESS-1 downto 0); + signal pmem_rd_en : std_logic; + + signal xmem_rd_en : std_logic; + signal xmem_data_out : std_logic_vector(23 downto 0); + signal xmem_data_out_valid : std_logic; + signal xmem_rd_polling : std_logic; + + signal ymem_rd_en : std_logic; + signal ymem_data_out : std_logic_vector(23 downto 0); + signal ymem_data_out_valid : std_logic; + signal ymem_rd_polling : std_logic; + + signal pmem_stall_buffer : std_logic_vector(23 downto 0); + signal pmem_stall_buffer_valid : std_logic; + signal xmem_stall_buffer : std_logic_vector(23 downto 0); + signal ymem_stall_buffer : std_logic_vector(23 downto 0); + + signal stall_flags_d : std_logic_vector(PIPELINE_DEPTH-1 downto 0); + +begin + + -- here it is necessary to store the output of the pmem/xmem/ymem when the pipeline enters a stall + -- when the pipeline wakes up, this temporal result is inserted into the pipeline + stall_buffer: process(clk) is + begin + if rising_edge(clk) then + if rst = '1' then + pmem_stall_buffer <= (others => '0'); + pmem_stall_buffer_valid <= '0'; + xmem_stall_buffer <= (others => '0'); + ymem_stall_buffer <= (others => '0'); + stall_flags_d <= (others => '0'); + else + stall_flags_d <= stall_flags; + if stall_flags(ST_FE2_DEC) = '1' and stall_flags_d(ST_FE2_DEC) = '0' then + if pmem_data_out_valid = '1' then + pmem_stall_buffer <= pmem_data_out; + pmem_stall_buffer_valid <= '1'; + end if; + end if; + if stall_flags(ST_FE2_DEC) = '0' and stall_flags_d(ST_FE2_DEC) = '1' then + pmem_stall_buffer_valid <= '0'; + end if; + + end if; + end if; + end process stall_buffer; + + memory_stall <= '1' when ( xmem_rd_en = '1' or (xmem_rd_polling = '1' and xmem_data_out_valid = '0') ) or + ( ymem_rd_en = '1' or (ymem_rd_polling = '1' and ymem_data_out_valid = '0') ) else + '0'; + + ------------------------------- + -- PMEM CONTROLLER + ------------------------------- + inst_pmem_ctrl : mem_control + generic map( + mem_type => P_MEM + ) + port map( + clk => clk, + rst => rst, + rd_addr => pmem_ctrl_in.rd_addr, + rd_en => pmem_ctrl_in.rd_en, + data_out => pmem_data_out, + data_out_valid => pmem_data_out_valid, + wr_addr => pmem_ctrl_in.wr_addr, + wr_en => pmem_ctrl_in.wr_en, + data_in => pmem_ctrl_in.data_in + ); + + -- In case we wake up from a stall use the buffered value + pmem_ctrl_out.data_out <= pmem_stall_buffer when stall_flags(ST_FE2_DEC) = '0' and + stall_flags_d(ST_FE2_DEC) = '1' and + pmem_stall_buffer_valid = '1' else + pmem_data_out; + + pmem_ctrl_out.data_out_valid <= pmem_stall_buffer_valid when stall_flags(ST_FE2_DEC) = '0' and + stall_flags_d(ST_FE2_DEC) = '1' else + '0' when stall_flags(ST_FE2_DEC) = '1' else + pmem_data_out_valid; + + ------------------------------- + -- XMEM CONTROLLER + ------------------------------- + inst_xmem_ctrl : mem_control + generic map( + mem_type => X_MEM + ) + port map( + clk => clk, + rst => rst, + rd_addr => xmem_ctrl_in.rd_addr, + rd_en => xmem_rd_en, + data_out => xmem_data_out, + data_out_valid => xmem_data_out_valid, + wr_addr => xmem_ctrl_in.wr_addr, + wr_en => xmem_ctrl_in.wr_en, + data_in => xmem_ctrl_in.data_in + ); + + xmem_rd_en <= '1' when xmem_rd_polling = '0' and xmem_ctrl_in.rd_en = '1' else '0'; + + xmem_ctrl_out.data_out <= xmem_data_out; + xmem_ctrl_out.data_out_valid <= xmem_data_out_valid; + + ------------------------------- + -- YMEM CONTROLLER + ------------------------------- + inst_ymem_ctrl : mem_control + generic map( + mem_type => Y_MEM + ) + port map( + clk => clk, + rst => rst, + rd_addr => ymem_ctrl_in.rd_addr, + rd_en => ymem_rd_en, + data_out => ymem_data_out, + data_out_valid => ymem_data_out_valid, + wr_addr => ymem_ctrl_in.wr_addr, + wr_en => ymem_ctrl_in.wr_en, + data_in => ymem_ctrl_in.data_in + ); + + ymem_rd_en <= '1' when ymem_rd_polling = '0' and ymem_ctrl_in.rd_en = '1' else '0'; + + ymem_ctrl_out.data_out <= ymem_data_out; + ymem_ctrl_out.data_out_valid <= ymem_data_out_valid; + + mem_stall_control: process(clk) is + begin + if rising_edge(clk) then + if rst = '1' then + xmem_rd_polling <= '0'; + ymem_rd_polling <= '0'; + else + if xmem_rd_en = '1' then + xmem_rd_polling <= '1'; + end if; + + if xmem_data_out_valid = '1' then + xmem_rd_polling <= '0'; + end if; + + if ymem_rd_en = '1' then + ymem_rd_polling <= '1'; + end if; + + if ymem_data_out_valid = '1' then + ymem_rd_polling <= '0'; + end if; + + end if; + end if; + end process; +end architecture; + diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/parameter_pkg.vhd b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/parameter_pkg.vhd new file mode 100644 index 0000000..f06c000 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/parameter_pkg.vhd @@ -0,0 +1,18 @@ +------------------------------------------------------------------------------ +--! @file +--! @author Matthias Alles +--! @date 01/2009 +--! @brief Global parameters +--! +------------------------------------------------------------------------------ + +package parameter_pkg is + + constant BW_ADDRESS : natural := 16; + + -- number of pipeline register stages + constant PIPELINE_DEPTH : natural := 4; + + constant NUM_ACT_SIGNALS : natural := 26; + +end package; diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/pipeline.vhd b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/pipeline.vhd new file mode 100644 index 0000000..f00db65 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/pipeline.vhd @@ -0,0 +1,1007 @@ +------------------------------------------------------------------------------ +--! @file +--! @author Matthias Alles +--! @date 01/2009 +--! @brief DSP 56k pipeline +--! +--! @details This is the computational part of the DSP core. The pipeline +--! consists of five stages: +--! - FE : Initiate read access to program memory +--! - FE2: Retrieve data from program memory +--! - DEC: Instruction decode +--! - ADG: Address generation units - also inits of xmem, ymem, and pmem reads +--! - EX : Execute stage, contains ALU, loop controls, writes to xmem, ymem, +--! pmem +--! +------------------------------------------------------------------------------ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity pipeline is port ( + clk, rst : in std_logic; + register_file_out : out register_file_type; + stall_flags_out : out std_logic_vector(PIPELINE_DEPTH-1 downto 0); + memory_stall : in std_logic; + data_rom_enable: out std_logic; + pmem_ctrl_in : out mem_ctrl_type_in; + pmem_ctrl_out : in mem_ctrl_type_out; + pmem2_ctrl_in : out mem_ctrl_type_in; + pmem2_ctrl_out : in mem_ctrl_type_out; + xmem_ctrl_in : out mem_ctrl_type_in; + xmem_ctrl_out : in mem_ctrl_type_out; + ymem_ctrl_in : out mem_ctrl_type_in; + ymem_ctrl_out : in mem_ctrl_type_out + +); +end pipeline; + +-- TODOs: +-- External memory accesses +-- ROM tables +-- Reading from SSH flag has to modify stack pointer +-- Memory access (x,y,p) and stalling accordingly + +-- List of known BUGS: +-- - Reading from address one clock cycle after writing to the same address might result in corrupted data!! +-- - SBC instruction has errorneous carry flag calculation + +-- List of probable issues: +-- - Reading from XMEM/YMEM with stalls probably results in corrupted data +-- - ENDDO instruction probably has to flush the pipeline afterwards +-- - Writing to memory occurs twice, when stalls occur + +-- Things to optimize: +-- - RTS/RTI could be executed in the ADGEN Stage already +-- - DO loops always flush the pipeline. This is necessary in case we have a very short loop. +-- The single instruction of the loop then has passed the fetch stage already without the branch + + +architecture rtl of pipeline is + + signal pipeline_regs : pipeline_type; + signal stall_flags : std_logic_vector(PIPELINE_DEPTH-1 downto 0); + + component fetch_stage is port( + pc_old : in unsigned(BW_ADDRESS-1 downto 0); + pc_new : out unsigned(BW_ADDRESS-1 downto 0); + modify_pc : in std_logic; + modified_pc : in unsigned(BW_ADDRESS-1 downto 0); + register_file : in register_file_type; + decrement_lc : out std_logic; + perform_enddo : out std_logic + ); + end component fetch_stage; + + signal pc_old, pc_new : unsigned(BW_ADDRESS-1 downto 0); + signal fetch_modify_pc : std_logic; + signal fetch_modified_pc : unsigned(BW_ADDRESS-1 downto 0); + signal fetch_perform_enddo: std_logic; + signal fetch_decrement_lc: std_logic; + + + component decode_stage is port( + activate_dec : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + dble_word_instr : out std_logic; + instr_array : out instructions_type; + act_array : out std_logic_vector(NUM_ACT_SIGNALS-1 downto 0); + reg_wr_addr : out std_logic_vector(5 downto 0); + reg_rd_addr : out std_logic_vector(5 downto 0); + x_bus_rd_addr : out std_logic_vector(1 downto 0); + x_bus_wr_addr : out std_logic_vector(1 downto 0); + y_bus_rd_addr : out std_logic_vector(1 downto 0); + y_bus_wr_addr : out std_logic_vector(1 downto 0); + l_bus_addr : out std_logic_vector(2 downto 0); + adgen_mode_a : out adgen_mode_type; + adgen_mode_b : out adgen_mode_type; + alu_ctrl : out alu_ctrl_type + ); + end component decode_stage; + + signal dec_activate : std_logic; + signal dec_instr_word : std_logic_vector(23 downto 0); + signal dec_dble_word_instr : std_logic; + signal dec_instr_array : instructions_type; + signal dec_act_array : std_logic_vector(NUM_ACT_SIGNALS-1 downto 0); + signal dec_reg_wr_addr : std_logic_vector(5 downto 0); + signal dec_reg_rd_addr : std_logic_vector(5 downto 0); + signal dec_x_bus_wr_addr : std_logic_vector(1 downto 0); + signal dec_x_bus_rd_addr : std_logic_vector(1 downto 0); + signal dec_y_bus_wr_addr : std_logic_vector(1 downto 0); + signal dec_y_bus_rd_addr : std_logic_vector(1 downto 0); + signal dec_l_bus_addr : std_logic_vector(2 downto 0); + signal dec_adgen_mode_a : adgen_mode_type; + signal dec_adgen_mode_b : adgen_mode_type; + signal dec_alu_ctrl : alu_ctrl_type; + + component adgen_stage is port( + activate_adgen : in std_logic; + activate_x_mem : in std_logic; + activate_y_mem : in std_logic; + activate_l_mem : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + optional_ea_word : in std_logic_vector(23 downto 0); + register_file : in register_file_type; + adgen_mode_a : in adgen_mode_type; + adgen_mode_b : in adgen_mode_type; + address_out_x : out unsigned(BW_ADDRESS-1 downto 0); + address_out_y : out unsigned(BW_ADDRESS-1 downto 0); + wr_R_port_A_valid : out std_logic; + wr_R_port_A : out addr_wr_port_type; + wr_R_port_B_valid : out std_logic; + wr_R_port_B : out addr_wr_port_type + ); + end component adgen_stage; + + signal adgen_activate : std_logic; + signal adgen_activate_x_mem : std_logic; + signal adgen_activate_y_mem : std_logic; + signal adgen_activate_l_mem : std_logic; + signal adgen_instr_word : std_logic_vector(23 downto 0); + signal adgen_instr_array : instructions_type; + signal adgen_optional_ea_word : std_logic_vector(23 downto 0); + signal adgen_register_file : register_file_type; + signal adgen_mode_a : adgen_mode_type; + signal adgen_mode_b : adgen_mode_type; + signal adgen_address_out_x : unsigned(BW_ADDRESS-1 downto 0); + signal adgen_address_out_y : unsigned(BW_ADDRESS-1 downto 0); + signal adgen_wr_R_port_A_valid : std_logic; + signal adgen_wr_R_port_A : addr_wr_port_type; + signal adgen_wr_R_port_B_valid : std_logic; + signal adgen_wr_R_port_B : addr_wr_port_type; + + component exec_stage_bit_modify is port( + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + src_operand : in std_logic_vector(23 downto 0); + register_file : in register_file_type; + dst_operand : out std_logic_vector(23 downto 0); + bit_cond_met : out std_logic; + modify_sr : out std_logic; + modified_sr : out std_logic_vector(15 downto 0) + ); + end component exec_stage_bit_modify; + + signal exec_bit_modify_instr_word : std_logic_vector(23 downto 0); + signal exec_bit_modify_instr_array : instructions_type; + signal exec_bit_modify_src_operand : std_logic_vector(23 downto 0); + signal exec_bit_modify_dst_operand : std_logic_vector(23 downto 0); + signal exec_bit_modify_bit_cond_met : std_logic; + signal exec_bit_modify_modify_sr : std_logic; + signal exec_bit_modify_modified_sr : std_logic_vector(15 downto 0); + + component exec_stage_branch is port( + activate_exec_bra : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + register_file : in register_file_type; + jump_address : in unsigned(BW_ADDRESS-1 downto 0); + bit_cond_met : in std_logic; + cc_flag_set : in std_logic; + push_stack : out push_stack_type; + pop_stack : out pop_stack_type; + modify_pc : out std_logic; + modified_pc : out unsigned(BW_ADDRESS-1 downto 0); + modify_sr : out std_logic; + modified_sr : out std_logic_vector(15 downto 0) + ); + end component exec_stage_branch; + + signal exec_bra_activate : std_logic; + signal exec_bra_instr_word : std_logic_vector(23 downto 0); + signal exec_bra_instr_array : instructions_type; + signal exec_bra_jump_address : unsigned(BW_ADDRESS-1 downto 0); + signal exec_bra_bit_cond_met : std_logic; + signal exec_bra_push_stack : push_stack_type; + signal exec_bra_pop_stack : pop_stack_type; + signal exec_bra_modify_pc : std_logic; + signal exec_bra_modified_pc : unsigned(BW_ADDRESS-1 downto 0); + signal exec_bra_modify_sr : std_logic; + signal exec_bra_modified_sr : std_logic_vector(15 downto 0); + + component exec_stage_cr_mod is port( + activate_exec_cr_mod : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + register_file : in register_file_type; + modify_sr : out std_logic; + modified_sr : out std_logic_vector(15 downto 0); + modify_omr : out std_logic; + modified_omr : out std_logic_vector(7 downto 0) + ); + end component exec_stage_cr_mod; + + signal exec_cr_mod_activate : std_logic; + signal exec_cr_mod_instr_word : std_logic_vector(23 downto 0); + signal exec_cr_mod_instr_array : instructions_type; + signal exec_cr_mod_modify_sr : std_logic; + signal exec_cr_mod_modified_sr : std_logic_vector(15 downto 0); + signal exec_cr_mod_modify_omr : std_logic; + signal exec_cr_mod_modified_omr : std_logic_vector(7 downto 0); + + component exec_stage_loop is port( + clk, rst : in std_logic; + activate_exec_loop : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + loop_iterations : in unsigned(15 downto 0); + loop_address : in unsigned(BW_ADDRESS-1 downto 0); + loop_start_address: in unsigned(BW_ADDRESS-1 downto 0); + register_file : in register_file_type; + fetch_perform_enddo: in std_logic; + memory_stall : in std_logic; + push_stack : out push_stack_type; + pop_stack : out pop_stack_type; + stall_rep : out std_logic; + stall_do : out std_logic; + decrement_lc : out std_logic; + modify_lc : out std_logic; + modified_lc : out unsigned(15 downto 0); + modify_la : out std_logic; + modified_la : out unsigned(15 downto 0); + modify_pc : out std_logic; + modified_pc : out unsigned(BW_ADDRESS-1 downto 0); + modify_sr : out std_logic; + modified_sr : out std_logic_vector(15 downto 0) + ); + end component exec_stage_loop; + + signal exec_loop_activate : std_logic; + signal exec_loop_instr_word : std_logic_vector(23 downto 0); + signal exec_loop_instr_array : instructions_type; + signal exec_loop_iterations : unsigned(15 downto 0); + signal exec_loop_address : unsigned(BW_ADDRESS-1 downto 0); + signal exec_loop_start_address : unsigned(BW_ADDRESS-1 downto 0); + signal exec_loop_register_file : register_file_type; + signal exec_loop_push_stack : push_stack_type; + signal exec_loop_pop_stack : pop_stack_type; + signal exec_loop_stall_rep : std_logic; + signal exec_loop_stall_do : std_logic; + signal exec_loop_decrement_lc : std_logic; + signal exec_loop_modify_lc : std_logic; + signal exec_loop_modified_lc : unsigned(15 downto 0); + signal exec_loop_modify_la : std_logic; + signal exec_loop_modified_la : unsigned(BW_ADDRESS-1 downto 0); + signal exec_loop_modify_pc : std_logic; + signal exec_loop_modified_pc : unsigned(BW_ADDRESS-1 downto 0); + signal exec_loop_modify_sr : std_logic; + signal exec_loop_modified_sr : std_logic_vector(BW_ADDRESS-1 downto 0); + + component exec_stage_alu is port( + alu_activate : in std_logic; + instr_word : in std_logic_vector(23 downto 0); + alu_ctrl : in alu_ctrl_type; + register_file : in register_file_type; + addr_r_in : in unsigned(BW_ADDRESS-1 downto 0); + addr_r_out : out unsigned(BW_ADDRESS-1 downto 0); + modify_accu : out std_logic; + dst_accu : out std_logic; + modified_accu : out signed(55 downto 0); + modify_sr : out std_logic; + modified_sr : out std_logic_vector(15 downto 0) + ); + end component exec_stage_alu; + + signal exec_alu_activate : std_logic; + signal exec_alu_instr_word : std_logic_vector(23 downto 0); + signal exec_alu_ctrl : alu_ctrl_type; + signal exec_alu_addr_r_in : unsigned(BW_ADDRESS-1 downto 0); + signal exec_alu_addr_r_out : unsigned(BW_ADDRESS-1 downto 0); + signal exec_alu_modify_accu : std_logic; + signal exec_alu_dst_accu : std_logic; + signal exec_alu_modified_accu : signed(55 downto 0); + signal exec_alu_modify_sr : std_logic; + signal exec_alu_modified_sr : std_logic_vector(15 downto 0); + + signal exec_imm_8bit : std_logic_vector(23 downto 0); + signal exec_imm_12bit : std_logic_vector(23 downto 0); + signal exec_src_operand : std_logic_vector(23 downto 0); + signal exec_dst_operand : std_logic_vector(23 downto 0); + + component exec_stage_cc_flag_calc is port( + instr_word : in std_logic_vector(23 downto 0); + instr_array : in instructions_type; + register_file : in register_file_type; + cc_flag_set : out std_logic + ); + end component exec_stage_cc_flag_calc; + + signal exec_cc_flag_calc_instr_word : std_logic_vector(23 downto 0); + signal exec_cc_flag_calc_instr_array : instructions_type; + signal exec_cc_flag_set : std_logic; + + component reg_file is port( + clk, rst : in std_logic; + register_file : out register_file_type; + wr_R_port_A_valid : in std_logic; + wr_R_port_A : in addr_wr_port_type; + wr_R_port_B_valid : in std_logic; + wr_R_port_B : in addr_wr_port_type; + alu_wr_valid : in std_logic; + alu_wr_addr : in std_logic; + alu_wr_data : in signed(55 downto 0); + reg_wr_addr : in std_logic_vector(5 downto 0); + reg_wr_addr_valid : in std_logic; + reg_wr_data : in std_Logic_vector(23 downto 0); + reg_rd_addr : in std_logic_vector(5 downto 0); + reg_rd_data : out std_Logic_vector(23 downto 0); + X_bus_rd_addr : in std_logic_vector(1 downto 0); + X_bus_data_out : out std_logic_vector(23 downto 0); + X_bus_wr_addr : in std_logic_vector(1 downto 0); + X_bus_wr_valid : in std_logic; + X_bus_data_in : in std_logic_vector(23 downto 0); + Y_bus_rd_addr : in std_logic_vector(1 downto 0); + Y_bus_data_out : out std_logic_vector(23 downto 0); + Y_bus_wr_addr : in std_logic_vector(1 downto 0); + Y_bus_wr_valid : in std_logic; + Y_bus_data_in : in std_logic_vector(23 downto 0); + L_bus_rd_addr : in std_logic_vector(2 downto 0); + L_bus_rd_valid : in std_logic; + L_bus_wr_addr : in std_logic_vector(2 downto 0); + L_bus_wr_valid : in std_logic; + push_stack : in push_stack_type; + pop_stack : in pop_stack_type; + set_sr : in std_logic; + new_sr : in std_logic_vector(15 downto 0); + set_omr : in std_logic; + new_omr : in std_logic_vector(7 downto 0); + set_lc : in std_logic; + new_lc : in unsigned(15 downto 0); + dec_lc : in std_logic; + set_la : in std_logic; + new_la : in unsigned(BW_ADDRESS-1 downto 0) + ); + end component reg_file; + + signal register_file : register_file_type; + signal rf_wr_R_port_A_valid : std_logic; + signal rf_wr_R_port_B_valid : std_logic; + signal rf_reg_wr_addr : std_logic_vector(5 downto 0); + signal rf_reg_wr_addr_valid : std_logic; + signal rf_reg_wr_data : std_logic_vector(23 downto 0); + signal rf_reg_rd_addr : std_logic_vector(5 downto 0); + signal rf_reg_rd_data : std_logic_vector(23 downto 0); + signal rf_X_bus_rd_addr : std_logic_vector(1 downto 0); + signal rf_X_bus_data_out : std_logic_vector(23 downto 0); + signal rf_X_bus_wr_addr : std_logic_vector(1 downto 0); + signal rf_X_bus_wr_valid : std_logic; + signal rf_X_bus_data_in : std_logic_vector(23 downto 0); + signal rf_Y_bus_rd_addr : std_logic_vector(1 downto 0); + signal rf_Y_bus_data_out : std_logic_vector(23 downto 0); + signal rf_Y_bus_wr_addr : std_logic_vector(1 downto 0); + signal rf_Y_bus_wr_valid : std_logic; + signal rf_Y_bus_data_in : std_logic_vector(23 downto 0); + signal rf_L_bus_rd_addr : std_logic_vector(2 downto 0); + signal rf_L_bus_rd_valid : std_logic; + signal rf_L_bus_wr_addr : std_logic_vector(2 downto 0); + signal rf_L_bus_wr_valid : std_logic; + signal push_stack : push_stack_type; + signal pop_stack : pop_stack_type; + signal rf_set_sr : std_logic; + signal rf_new_sr : std_logic_vector(15 downto 0); + signal rf_set_omr : std_logic; + signal rf_new_omr : std_logic_vector(7 downto 0); + signal rf_dec_lc : std_logic; + signal rf_set_lc : std_logic; + signal rf_new_lc : unsigned(15 downto 0); + signal rf_set_la : std_logic; + signal rf_new_la : unsigned(BW_ADDRESS-1 downto 0); + signal rf_alu_wr_valid : std_logic; + + signal pmem_data_out : std_logic_vector(23 downto 0); + signal pmem_data_out_valid : std_logic; + signal pmem2_data_out : std_logic_vector(23 downto 0); + signal pmem2_data_out_valid : std_logic; + +begin + + register_file_out <= register_file; + stall_flags_out <= stall_flags; + + -- merge all stall sources + stall_flags(ST_FE_FE2) <= '1' when exec_loop_stall_rep = '1' or + memory_stall = '1' or + exec_loop_stall_do = '1' else '0'; + stall_flags(ST_FE2_DEC) <= '1' when exec_loop_stall_rep = '1' or + memory_stall = '1' or + exec_loop_stall_do = '1' else '0'; + stall_flags(ST_DEC_ADG) <= '1' when exec_loop_stall_rep = '1' or + memory_stall = '1' or + exec_loop_stall_do = '1' else '0'; + stall_flags(ST_ADG_EX) <= exec_loop_stall_do; + + + shift_pipeline: process(clk, rst) is + procedure flush_pipeline_stage(stage: natural) is + begin + pipeline_regs(stage).pc <= (others => '1'); + pipeline_regs(stage).instr_word <= (others => '0'); + pipeline_regs(stage).act_array <= (others => '0'); + pipeline_regs(stage).instr_array <= INSTR_NOP; + pipeline_regs(stage).dble_word_instr <= '0'; + pipeline_regs(stage).dec_activate <= '0'; + pipeline_regs(stage).adgen_mode_a <= NOP; + pipeline_regs(stage).adgen_mode_b <= NOP; + pipeline_regs(stage).reg_wr_addr <= (others => '0'); + pipeline_regs(stage).reg_rd_addr <= (others => '0'); + pipeline_regs(stage).x_bus_rd_addr <= (others => '0'); + pipeline_regs(stage).x_bus_wr_addr <= (others => '0'); + pipeline_regs(stage).y_bus_rd_addr <= (others => '0'); + pipeline_regs(stage).y_bus_wr_addr <= (others => '0'); + pipeline_regs(stage).l_bus_addr <= (others => '0'); + pipeline_regs(stage).adgen_address_x <= (others => '0'); + pipeline_regs(stage).adgen_address_y <= (others => '0'); + pipeline_regs(stage).RAM_out_x <= (others => '0'); + pipeline_regs(stage).RAM_out_y <= (others => '0'); + pipeline_regs(stage).alu_ctrl.store_result <= '0'; + end procedure flush_pipeline_stage; + begin + if rising_edge(clk) then + if rst = '1' then + for i in 0 to PIPELINE_DEPTH-1 loop + flush_pipeline_stage(i); + end loop; + else + -- shift the pipeline registers when no stall applies + for i in 1 to PIPELINE_DEPTH-1 loop + if stall_flags(i) = '0' then + -- The following situations have to be considered: + -- 1) Do not copy the pipeline registers from a stalled pipeline stage. + -- Instead insert NOPs into the pipeline, except for the REP instruction. + -- 2) Flushing of the ST_ADG_EX-stage is required when a memory access causes + -- a stall. In this case the EX-stage will perform its task and the pipeline + -- stage has to be flushed. Otherwise the instruction would be executed twice. +-- TODO: +-- What happens when memory writes cause a stall? => Flushing of ST_ADG_EX not allowed!? + if (stall_flags(i-1) = '1' and exec_loop_stall_rep = '0') or + (i = ST_ADG_EX and memory_stall = '1' and exec_loop_stall_rep = '1') then + flush_pipeline_stage(i); + else + pipeline_regs(i) <= pipeline_regs(i-1); + end if; + end if; + end loop; + -- FE_FE2 Pipeline Registers + if stall_flags(ST_FE_FE2) = '0' then + pipeline_regs(ST_FE_FE2).pc <= pc_new; + pipeline_regs(ST_FE_FE2).dec_activate <= '1'; + end if; + + -- FE2_DEC Pipeline Registers + if stall_flags(ST_FE2_DEC) = '0' then + -- Normal pipeline operation? + -- Buffering of RAM output when stalling is performed in the memory management + if pmem_data_out_valid = '1' then + pipeline_regs(ST_FE2_DEC).instr_word <= pmem_data_out; + end if; + end if; + + -- DEC_ADG Pipeline registers + if stall_flags(ST_DEC_ADG) = '0' then + pipeline_regs(ST_DEC_ADG).act_array <= dec_act_array; + pipeline_regs(ST_DEC_ADG).instr_array <= dec_instr_array; + pipeline_regs(ST_DEC_ADG).dble_word_instr <= dec_dble_word_instr; + pipeline_regs(ST_DEC_ADG).reg_wr_addr <= dec_reg_wr_addr; + pipeline_regs(ST_DEC_ADG).reg_rd_addr <= dec_reg_rd_addr; + pipeline_regs(ST_DEC_ADG).x_bus_wr_addr <= dec_x_bus_wr_addr; + pipeline_regs(ST_DEC_ADG).x_bus_rd_addr <= dec_x_bus_rd_addr; + pipeline_regs(ST_DEC_ADG).y_bus_wr_addr <= dec_y_bus_wr_addr; + pipeline_regs(ST_DEC_ADG).y_bus_rd_addr <= dec_y_bus_rd_addr; + pipeline_regs(ST_DEC_ADG).l_bus_addr <= dec_l_bus_addr; + pipeline_regs(ST_DEC_ADG).adgen_mode_a <= dec_adgen_mode_a; + pipeline_regs(ST_DEC_ADG).adgen_mode_b <= dec_adgen_mode_b; + pipeline_regs(ST_DEC_ADG).alu_ctrl <= dec_alu_ctrl; + end if; + + -- ADG_EX Pipeline registers + if stall_flags(ST_ADG_EX) = '0' then + pipeline_regs(ST_ADG_EX).adgen_address_x <= adgen_address_out_x; + pipeline_regs(ST_ADG_EX).adgen_address_y <= adgen_address_out_y; + end if; + +-- TODO: memory_stall neu eingebaut, noch nicht getestet. Hier evtl. wie oben direkt auf +-- stall_flags zugreifen (ST_ADG_EX)? + -- Copying to the pipeline register should only happen, when the stall is released. + -- Otherwise the content could be deleted before it is actually used (when x and y + -- content are not valid at the same time). + if xmem_ctrl_out.data_out_valid = '1' and memory_stall = '0' then + pipeline_regs(ST_ADG_EX).RAM_out_x <= xmem_ctrl_out.data_out; + end if; + if ymem_ctrl_out.data_out_valid = '1'and memory_stall = '0' then + pipeline_regs(ST_ADG_EX).RAM_out_y <= ymem_ctrl_out.data_out; + end if; + + -- EXECUTE Pipeline stuff + if exec_bra_modify_pc = '1' or exec_loop_modify_pc = '1' then + -- clear the following pipeline stages, + -- since we modified the pc. + -- Do not flush ST_FE_FE2 - it will hold the correct pc. + flush_pipeline_stage(ST_FE2_DEC); + flush_pipeline_stage(ST_DEC_ADG); + flush_pipeline_stage(ST_ADG_EX); + end if; + end if; + end if; + end process shift_pipeline; + + + ------------------------------- + -- FETCH STAGE INSTANTIATION + ------------------------------- + + inst_fetch_stage: fetch_stage port map( + pc_old => pc_old, + pc_new => pc_new, + modify_pc => fetch_modify_pc, + modified_pc => fetch_modified_pc, + register_file => register_file, + decrement_lc => fetch_decrement_lc, + perform_enddo => fetch_perform_enddo + ); + + pc_old <= pipeline_regs(ST_FE_FE2).pc; + + fetch_modify_pc <= '1' when exec_bra_modify_pc = '1' or exec_loop_modify_pc = '1' else '0'; + fetch_modified_pc <= exec_bra_modified_pc when exec_bra_modify_pc = '1' else + exec_loop_modified_pc; + + + ------------------------------- + -- DECODE STAGE INSTANTIATION + ------------------------------- + + inst_decode_stage : decode_stage port map( + activate_dec => dec_activate, + instr_word => dec_instr_word, + dble_word_instr => dec_dble_word_instr, + instr_array => dec_instr_array, + act_array => dec_act_array, + reg_wr_addr => dec_reg_wr_addr, + reg_rd_addr => dec_reg_rd_addr, + x_bus_wr_addr => dec_x_bus_wr_addr, + x_bus_rd_addr => dec_x_bus_rd_addr, + y_bus_wr_addr => dec_y_bus_wr_addr, + y_bus_rd_addr => dec_y_bus_rd_addr, + l_bus_addr => dec_l_bus_addr, + adgen_mode_a => dec_adgen_mode_a, + adgen_mode_b => dec_adgen_mode_b, + alu_ctrl => dec_alu_ctrl + ); + + dec_instr_word <= pipeline_regs(ST_FE2_DEC).instr_word; + -- do not decode, when we have no valid instruction. This can happen when + -- 1) the pipeline just started its operation + -- 2) the pipeline was flushed due to a jump + -- 3) we are processing an instruction that consists of two words + dec_activate <= '1' when pipeline_regs(ST_FE2_DEC).dec_activate = '1' and pipeline_regs(ST_DEC_ADG).dble_word_instr = '0' else '0'; + + + ------------------------------- + -- AGU STAGE INSTANTIATION + ------------------------------- + + inst_adgen_stage: adgen_stage port map( + activate_adgen => adgen_activate, + activate_x_mem => adgen_activate_x_mem, + activate_y_mem => adgen_activate_y_mem, + activate_l_mem => adgen_activate_l_mem, + instr_word => adgen_instr_word, + instr_array => adgen_instr_array, + optional_ea_word => adgen_optional_ea_word, + register_file => register_file, + adgen_mode_a => adgen_mode_a, + adgen_mode_b => adgen_mode_b, + address_out_x => adgen_address_out_x, + address_out_y => adgen_address_out_y, + wr_R_port_A_valid => adgen_wr_R_port_A_valid, + wr_R_port_A => adgen_wr_R_port_A, + wr_R_port_B_valid => adgen_wr_R_port_B_valid, + wr_R_port_B => adgen_wr_R_port_B + ); + + adgen_activate <= pipeline_regs(ST_DEC_ADG).act_array(ACT_ADGEN); + adgen_activate_x_mem <= '1' when pipeline_regs(ST_DEC_ADG).act_array(ACT_X_MEM_RD) = '1' or + pipeline_regs(ST_DEC_ADG).act_array(ACT_X_MEM_WR) = '1' else '0'; + adgen_activate_y_mem <= '1' when pipeline_regs(ST_DEC_ADG).act_array(ACT_Y_MEM_RD) = '1' or + pipeline_regs(ST_DEC_ADG).act_array(ACT_Y_MEM_WR) = '1' else '0'; + adgen_activate_l_mem <= '1' when pipeline_regs(ST_DEC_ADG).act_array(ACT_L_BUS_RD) = '1' or + pipeline_regs(ST_DEC_ADG).act_array(ACT_L_BUS_WR) = '1' else '0'; + adgen_instr_word <= pipeline_regs(ST_DEC_ADG).instr_word; + adgen_instr_array <= pipeline_regs(ST_DEC_ADG).instr_array; + adgen_optional_ea_word <= pipeline_regs(ST_DEC_ADG-1).instr_word; + adgen_mode_a <= pipeline_regs(ST_DEC_ADG).adgen_mode_a; + adgen_mode_b <= pipeline_regs(ST_DEC_ADG).adgen_mode_b; + + + ------------------------------- + -- EXECUTE STAGE INSTANTIATIONS + ------------------------------- + + -- Data ALU (MPY, MAC, ADD, shift, ...) + inst_exec_stage_alu: exec_stage_alu port map( + alu_activate => exec_alu_activate, + instr_word => exec_alu_instr_word, + alu_ctrl => exec_alu_ctrl, + register_file => register_file, + addr_r_in => exec_alu_addr_r_in, + addr_r_out => exec_alu_addr_r_out, + modify_accu => exec_alu_modify_accu, + dst_accu => exec_alu_dst_accu, + modified_accu => exec_alu_modified_accu, + modify_sr => exec_alu_modify_sr, + modified_sr => exec_alu_modified_sr + ); + + exec_alu_activate <= pipeline_regs(ST_ADG_EX).act_array(ACT_ALU); + exec_alu_instr_word <= pipeline_regs(ST_ADG_EX).instr_word; + exec_alu_ctrl <= pipeline_regs(ST_ADG_EX).alu_ctrl; + + exec_alu_addr_r_in <= unsigned(rf_reg_rd_data(BW_ADDRESS-1 downto 0)); + + -- Bit modification unit (BCLR, BSET, BCHG, ...) + inst_exec_stage_bit_modify: exec_stage_bit_modify port map( + instr_word => exec_bit_modify_instr_word, + instr_array => exec_bit_modify_instr_array, + src_operand => exec_bit_modify_src_operand, + register_file => register_file, + dst_operand => exec_bit_modify_dst_operand, + bit_cond_met => exec_bit_modify_bit_cond_met, + modify_sr => exec_bit_modify_modify_sr, + modified_sr => exec_bit_modify_modified_sr + ); + + exec_bit_modify_instr_word <= pipeline_regs(ST_ADG_EX).instr_word; + exec_bit_modify_instr_array <= pipeline_regs(ST_ADG_EX).instr_array; + exec_bit_modify_src_operand <= exec_src_operand; + + -- Writing to the register file using the 6 bit addressing scheme + -- sources are: + -- 1) X-RAM output + -- 2) Y-RAM output + -- 3) register file itself + -- 4) short immediate value (8 bit stored in instruction word) + -- 5) long immediate value (from optional effective address extension) + -- 6) address generated by the address generation unit (LUA instr) + exec_src_operand <= pipeline_regs(ST_ADG_EX).RAM_out_x when pipeline_regs(ST_ADG_EX).act_array(ACT_X_MEM_RD) = '1' else + pipeline_regs(ST_ADG_EX).RAM_out_y when pipeline_regs(ST_ADG_EX).act_array(ACT_Y_MEM_RD) = '1' else + rf_reg_rd_data when pipeline_regs(ST_ADG_EX).act_array(ACT_REG_RD) = '1' else + exec_imm_8bit when pipeline_regs(ST_ADG_EX).act_array(ACT_IMM_8BIT) = '1' else + exec_imm_12bit when pipeline_regs(ST_ADG_EX).act_array(ACT_IMM_12BIT) = '1' else + pipeline_regs(ST_ADG_EX-1).instr_word when pipeline_regs(ST_ADG_EX).act_array(ACT_IMM_LONG) = '1' else + std_logic_vector(resize(pipeline_regs(ST_ADG_EX).adgen_address_x, 24)); -- for LUA instr. + + -- Destination for the register file using the 6 bit addressing scheme. + -- Either read the bit modified version of the read value + -- or the output of a p-memory read + -- or use the modified Rn in case of a NORM instruction + exec_dst_operand <= exec_bit_modify_dst_operand when pipeline_regs(ST_ADG_EX).act_array(ACT_NORM) = '0' else + pmem2_data_out when pipeline_regs(ST_ADG_EX).act_array(ACT_P_MEM_RD) = '1' else + std_logic_vector(resize(exec_alu_addr_r_out,24)); + + -- Unit to check whether cc (in Jcc, JScc, Tcc, ...) is true + inst_exec_stage_cc_flag_calc: exec_stage_cc_flag_calc port map( + instr_word => exec_cc_flag_calc_instr_word, + instr_array => exec_cc_flag_calc_instr_array, + register_file => register_file, + cc_flag_set => exec_cc_flag_set + ); + + exec_cc_flag_calc_instr_word <= pipeline_regs(ST_ADG_EX).instr_word; + exec_cc_flag_calc_instr_array <= pipeline_regs(ST_ADG_EX).instr_array; + + -- Branch calculation unit + inst_exec_stage_branch : exec_stage_branch port map( + activate_exec_bra => exec_bra_activate, + instr_word => exec_bra_instr_word, + instr_array => exec_bra_instr_array, + register_file => register_file, + jump_address => exec_bra_jump_address, + bit_cond_met => exec_bra_bit_cond_met, + cc_flag_set => exec_cc_flag_set, + push_stack => exec_bra_push_stack, + pop_stack => exec_bra_pop_stack, + modify_pc => exec_bra_modify_pc, + modified_pc => exec_bra_modified_pc, + modify_sr => exec_bra_modify_sr, + modified_sr => exec_bra_modified_sr + ); + + exec_bra_activate <= pipeline_regs(ST_ADG_EX).act_array(ACT_EXEC_BRA); + exec_bra_instr_word <= pipeline_regs(ST_ADG_EX).instr_word; + exec_bra_instr_array <= pipeline_regs(ST_ADG_EX).instr_array; + exec_bra_jump_address <= pipeline_regs(ST_ADG_EX).adgen_address_x when pipeline_regs(ST_ADG_EX).dble_word_instr = '0' else + unsigned(pipeline_regs(ST_ADG_EX-1).instr_word(BW_ADDRESS-1 downto 0)); + exec_bra_bit_cond_met <= exec_bit_modify_bit_cond_met; + + -- Control register modifications + inst_exec_stage_cr_mod : exec_stage_cr_mod port map( + activate_exec_cr_mod => exec_cr_mod_activate, + instr_word => exec_cr_mod_instr_word, + instr_array => exec_cr_mod_instr_array, + register_file => register_file, + modify_sr => exec_cr_mod_modify_sr, + modified_sr => exec_cr_mod_modified_sr, + modify_omr => exec_cr_mod_modify_omr, + modified_omr => exec_cr_mod_modified_omr + ); + + exec_cr_mod_activate <= pipeline_regs(ST_ADG_EX).act_array(ACT_EXEC_CR_MOD); + exec_cr_mod_instr_word <= pipeline_regs(ST_ADG_EX).instr_word; + exec_cr_mod_instr_array <= pipeline_regs(ST_ADG_EX).instr_array; + + -- Loop control + inst_exec_stage_loop: exec_stage_loop port map( + clk => clk, + rst => rst, + activate_exec_loop => exec_loop_activate, + instr_word => exec_loop_instr_word, + instr_array => exec_loop_instr_array, + loop_iterations => exec_loop_iterations, + loop_address => exec_loop_address, + loop_start_address => exec_loop_start_address, + register_file => register_file, + fetch_perform_enddo=> fetch_perform_enddo, + memory_stall => memory_stall, + push_stack => exec_loop_push_stack, + pop_stack => exec_loop_pop_stack, + stall_rep => exec_loop_stall_rep, + stall_do => exec_loop_stall_do, + modify_lc => exec_loop_modify_lc, + decrement_lc => exec_loop_decrement_lc, + modified_lc => exec_loop_modified_lc, + modify_la => exec_loop_modify_la, + modified_la => exec_loop_modified_la, + modify_pc => exec_loop_modify_pc, + modified_pc => exec_loop_modified_pc, + modify_sr => exec_loop_modify_sr, + modified_sr => exec_loop_modified_sr + ); + + exec_loop_activate <= pipeline_regs(ST_ADG_EX).act_array(ACT_EXEC_LOOP); + exec_loop_instr_word <= pipeline_regs(ST_ADG_EX).instr_word; + exec_loop_instr_array <= pipeline_regs(ST_ADG_EX).instr_array; + exec_loop_iterations <= unsigned(exec_src_operand(15 downto 0)); + + -- Loop address is given by the second instruction word of the DO instruction. + -- This address is available one previous stage within the pipeline + exec_loop_address <= unsigned(pipeline_regs(ST_ADG_EX-1).instr_word(BW_ADDRESS-1 downto 0)) - 1; + -- one more stage before we find the programm counter of the first instruction to be executed in a DO loop + exec_loop_start_address <= unsigned(pipeline_regs(ST_ADG_EX-2).pc); + + -- For the 8 bit immediate is can be either a fractional (registers x0,x1,y0,y1,a,b) or an unsigned (the rest) + exec_imm_8bit(23 downto 16) <= (others => '0') when rf_reg_wr_addr(5 downto 2) /= "0001" and rf_reg_wr_addr(5 downto 1) /= "00111" else + pipeline_regs(ST_ADG_EX).instr_word(15 downto 8); + exec_imm_8bit(15 downto 8) <= (others => '0'); + exec_imm_8bit( 7 downto 0) <= (others => '0') when rf_reg_wr_addr(5 downto 2) = "0001" or rf_reg_wr_addr(5 downto 1) = "00111" else + pipeline_regs(ST_ADG_EX).instr_word(15 downto 8); + -- The 12 bit immediate stems from the instruction word + exec_imm_12bit(23 downto 12) <= (others => '0'); + exec_imm_12bit(11 downto 0) <= pipeline_regs(ST_ADG_EX).instr_word(3 downto 0) & pipeline_regs(ST_ADG_EX).instr_word(15 downto 8); + + + ----------------- + -- REGISTER FILE + ----------------- + + inst_reg_file: reg_file port map( + clk => clk, + rst => rst, + + -- Output for reading when needed + register_file => register_file, + + -- AGU write ports + wr_R_port_A_valid => rf_wr_R_port_A_valid, + wr_R_port_A => adgen_wr_R_port_A, + wr_R_port_B_valid => rf_wr_R_port_B_valid, + wr_R_port_B => adgen_wr_R_port_B, + + -- register read/write port + reg_wr_addr => rf_reg_wr_addr, + reg_wr_addr_valid => rf_reg_wr_addr_valid, + reg_wr_data => rf_reg_wr_data, + reg_rd_addr => rf_reg_rd_addr, + reg_rd_data => rf_reg_rd_data, + + -- ALU result write port + alu_wr_valid => rf_alu_wr_valid, + alu_wr_addr => exec_alu_dst_accu, + alu_wr_data => exec_alu_modified_accu, + + -- Bus read and write ports (X/Y/L) + X_bus_rd_addr => rf_X_bus_rd_addr, + X_bus_data_out => rf_X_bus_data_out, + X_bus_wr_addr => rf_X_bus_wr_addr , + X_bus_wr_valid => rf_X_bus_wr_valid, + X_bus_data_in => rf_X_bus_data_in , + Y_bus_rd_addr => rf_Y_bus_rd_addr , + Y_bus_data_out => rf_Y_bus_data_out, + Y_bus_wr_addr => rf_Y_bus_wr_addr , + Y_bus_wr_valid => rf_Y_bus_wr_valid, + Y_bus_data_in => rf_Y_bus_data_in , + L_bus_rd_addr => rf_L_bus_rd_addr , + L_bus_rd_valid => rf_L_bus_rd_valid, + L_bus_wr_addr => rf_L_bus_wr_addr , + L_bus_wr_valid => rf_L_bus_wr_valid, + + -- Stack modifications + push_stack => push_stack, + pop_stack => pop_stack, + + -- Control register modifications + set_sr => rf_set_sr, + new_sr => rf_new_sr, + set_omr => rf_set_omr, + new_omr => rf_new_omr, + set_la => rf_set_la, + new_la => rf_new_la, + dec_lc => rf_dec_lc, + set_lc => rf_set_lc, + new_lc => rf_new_lc + ); + + -- writing to the R registers within the ADGEN stage has to be prevented when + -- 1) a jump is currently being executed (which is detected in the exec stage) + -- 2) stall cycles occur. In this case the write will happen in the last cycle, when we stop stalling. + -- 3) a memory access results in a stall (e.g. caused by the instruction to REP) + rf_wr_R_port_A_valid <= '0' when stall_flags(ST_ADG_EX) = '1' or + exec_bra_modify_pc = '1' or + memory_stall = '1' else + adgen_wr_R_port_A_valid; + rf_wr_R_port_B_valid <= '0' when stall_flags(ST_ADG_EX) = '1' or + exec_bra_modify_pc = '1' or + memory_stall = '1' else + adgen_wr_R_port_B_valid; + + + rf_reg_wr_addr <= pipeline_regs(ST_ADG_EX).reg_wr_addr; + -- can be set due to + -- 1) normal write operation (e.g., move) + -- 2) conditional move (Tcc) + rf_reg_wr_addr_valid <= '1' when pipeline_regs(ST_ADG_EX).act_array(ACT_REG_WR) = '1' else + exec_cc_flag_set when pipeline_regs(ST_ADG_EX).act_array(ACT_REG_WR_CC) = '1' else '0'; + rf_reg_wr_data <= exec_dst_operand; + + rf_reg_rd_addr <= pipeline_regs(ST_ADG_EX).reg_rd_addr; + + -- Writing from the ALU can depend on the condition code (Tcc) instruction + rf_alu_wr_valid <= exec_cc_flag_set when pipeline_regs(ST_ADG_EX).act_array(ACT_ALU_WR_CC) = '1' else + exec_alu_modify_accu; + + push_stack.valid <= '1' when exec_bra_push_stack.valid = '1' or exec_loop_push_stack.valid = '1' else '0'; + push_stack.content <= exec_bra_push_stack.content when exec_bra_push_stack.valid = '1' else + exec_loop_push_stack.content; + -- for jump to subroutine store the pc of the subsequent instruction + push_stack.pc <= pipeline_regs(ST_ADG_EX-1).pc when exec_bra_push_stack.valid = '1' and pipeline_regs(ST_ADG_EX).dble_word_instr = '0' else + pipeline_regs(ST_ADG_EX-2).pc when exec_bra_push_stack.valid = '1' and pipeline_regs(ST_ADG_EX).dble_word_instr = '1' else + exec_loop_push_stack.pc when exec_loop_push_stack.valid = '1' else + (others => '0'); + + pop_stack.valid <= '1' when exec_bra_pop_stack.valid = '1' or exec_loop_pop_stack.valid = '1' else '0'; + + rf_set_sr <= '1' when exec_bra_modify_sr = '1' or + exec_cr_mod_modify_sr = '1' or + exec_loop_modify_sr = '1' or + exec_alu_modify_sr = '1' or + exec_bit_modify_modify_sr = '1' else '0'; + rf_new_sr <= exec_bra_modified_sr when exec_bra_modify_sr = '1' else + exec_cr_mod_modified_sr when exec_cr_mod_modify_sr = '1' else + exec_loop_modified_sr when exec_loop_modify_sr = '1' else + exec_alu_modified_sr when exec_alu_modify_sr = '1' else + exec_bit_modify_modified_sr; -- when exec_bit_modify_modify_sr = '1' else + + rf_set_omr <= exec_cr_mod_modify_omr; + rf_new_omr <= exec_cr_mod_modified_omr; + rf_set_lc <= exec_loop_modify_lc; + rf_new_lc <= exec_loop_modified_lc; + rf_set_la <= exec_loop_modify_la; + rf_new_la <= exec_loop_modified_la; + + rf_dec_lc <= '1' when exec_loop_decrement_lc = '1' or fetch_decrement_lc = '1' else '0'; + + ----------------- + -- BUSES (X,Y,L) + ----------------- + + rf_X_bus_wr_valid <= pipeline_regs(ST_ADG_EX).act_array(ACT_X_BUS_WR); + rf_X_bus_wr_addr <= pipeline_regs(ST_ADG_EX).x_bus_wr_addr; + rf_X_bus_rd_addr <= pipeline_regs(ST_ADG_EX).x_bus_rd_addr; + rf_X_bus_data_in <= rf_X_bus_data_out when pipeline_regs(ST_ADG_EX).act_array(ACT_X_BUS_RD) = '1' else + pipeline_regs(ST_ADG_EX).RAM_out_x; -- when pipeline_regs(ST_ADG_EX).act_array(ACT_X_MEM_RD) = '1' else + + rf_Y_bus_wr_valid <= pipeline_regs(ST_ADG_EX).act_array(ACT_Y_BUS_WR); + rf_Y_bus_wr_addr <= pipeline_regs(ST_ADG_EX).y_bus_wr_addr; + rf_Y_bus_rd_addr <= pipeline_regs(ST_ADG_EX).y_bus_rd_addr; + rf_Y_bus_data_in <= rf_Y_bus_data_out when pipeline_regs(ST_ADG_EX).act_array(ACT_Y_BUS_RD) = '1' else + pipeline_regs(ST_ADG_EX).RAM_out_y; -- when pipeline_regs(ST_ADG_EX).act_array(ACT_Y_MEM_RD) = '1' else + + rf_L_bus_wr_valid <= pipeline_regs(ST_ADG_EX).act_array(ACT_L_BUS_WR); + rf_L_bus_rd_valid <= pipeline_regs(ST_ADG_EX).act_array(ACT_L_BUS_RD); + rf_L_bus_wr_addr <= pipeline_regs(ST_ADG_EX).l_bus_addr; -- equal to bits in instruction word + rf_L_bus_rd_addr <= pipeline_regs(ST_ADG_EX).l_bus_addr; -- could be simplified by taking these bits.. + + + data_rom_enable <= register_file.omr(2); + + + ------------------------- + -- Program Memory Port 1 + -------------------------- + + -- pmem port 1 is only for instruction fetch + pmem_ctrl_in.rd_addr <= pc_new; + pmem_ctrl_in.rd_en <= '1' when stall_flags(ST_FE_FE2) = '0' else '0'; + + -- never write to this port + pmem_ctrl_in.wr_addr <= (others => '0'); + pmem_ctrl_in.wr_en <= '0'; + pmem_ctrl_in.data_in <= (others => '0'); + + pmem_data_out <= pmem_ctrl_out.data_out; + pmem_data_out_valid <= pmem_ctrl_out.data_out_valid; + + + ------------------------- + -- Program Memory Port 2 + -------------------------- +-- TODO: This is untested! + + -- pmem port 2 is for movem instructions + + -- take x memory address as address + pmem2_ctrl_in.rd_addr <= adgen_address_out_x when pipeline_regs(ST_DEC_ADG).act_array(ACT_ADGEN) = '1' else + "0000000000" & unsigned(pipeline_regs(ST_DEC_ADG).instr_word(13 downto 8)); + pmem2_ctrl_in.rd_en <= pipeline_regs(ST_DEC_ADG).act_array(ACT_P_MEM_RD); + + + -- Either take the result of the AGU or use the absolute value stored in the instruction word + pmem2_ctrl_in.wr_addr <= pipeline_regs(ST_ADG_EX).adgen_address_x when pipeline_regs(ST_ADG_EX).act_array(ACT_ADGEN) = '1' else + "0000000000" & unsigned(pipeline_regs(ST_ADG_EX).instr_word(13 downto 8)); + pmem2_ctrl_in.wr_en <= pipeline_regs(ST_ADG_EX).act_array(ACT_P_MEM_WR); + + -- only the register file read value is allowed here + pmem2_ctrl_in.data_in <= rf_reg_rd_data; + + pmem2_data_out <= pmem2_ctrl_out.data_out; + pmem2_data_out_valid <= pmem2_ctrl_out.data_out_valid; + + ------------------ + -- X Memory + ------------------ + + -- Either take the result of the AGU or use the short absolute value stored in the instruction word + xmem_ctrl_in.rd_addr <= adgen_address_out_x when pipeline_regs(ST_DEC_ADG).act_array(ACT_ADGEN) = '1' else + "0000000000" & unsigned(pipeline_regs(ST_DEC_ADG).instr_word(13 downto 8)); + xmem_ctrl_in.rd_en <= '1' when pipeline_regs(ST_DEC_ADG).act_array(ACT_X_MEM_RD) = '1' else '0'; + -- Either take the result of the AGU or use the absolute value stored in the instruction word + xmem_ctrl_in.wr_addr <= pipeline_regs(ST_ADG_EX).adgen_address_x when pipeline_regs(ST_ADG_EX).act_array(ACT_ADGEN) = '1' else + "0000000000" & unsigned(pipeline_regs(ST_ADG_EX).instr_word(13 downto 8)); + xmem_ctrl_in.wr_en <= '1' when pipeline_regs(ST_ADG_EX).act_array(ACT_X_MEM_WR) = '1' else '0'; + xmem_ctrl_in.data_in <= rf_X_bus_data_out when pipeline_regs(ST_ADG_EX).act_array(ACT_X_BUS_RD) = '1' or + pipeline_regs(ST_ADG_EX).act_array(ACT_L_BUS_RD) = '1' else + exec_dst_operand; + + + ------------------ + -- Y Memory + ------------------ + + -- Either take the result of the AGU or use the absolute value stored in the instruction word + ymem_ctrl_in.rd_addr <= adgen_address_out_y when pipeline_regs(ST_DEC_ADG).act_array(ACT_ADGEN) = '1' else + "0000000000" & unsigned(pipeline_regs(ST_DEC_ADG).instr_word(13 downto 8)); + ymem_ctrl_in.rd_en <= '1' when pipeline_regs(ST_DEC_ADG).act_array(ACT_Y_MEM_RD) = '1' else '0'; + -- Either take the result of the AGU or use the absolute value stored in the instruction word + ymem_ctrl_in.wr_addr <= pipeline_regs(ST_ADG_EX).adgen_address_y when pipeline_regs(ST_ADG_EX).act_array(ACT_ADGEN) = '1' else + "0000000000" & unsigned(pipeline_regs(ST_ADG_EX).instr_word(13 downto 8)); + ymem_ctrl_in.wr_en <= '1' when pipeline_regs(ST_ADG_EX).act_array(ACT_Y_MEM_WR) = '1' else '0'; + ymem_ctrl_in.data_in <= rf_Y_bus_data_out when pipeline_regs(ST_ADG_EX).act_array(ACT_Y_BUS_RD) = '1' or + pipeline_regs(ST_ADG_EX).act_array(ACT_L_BUS_RD) = '1' else + exec_dst_operand; + +end architecture rtl; diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/reg_file.vhd b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/reg_file.vhd new file mode 100644 index 0000000..afeeda0 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/reg_file.vhd @@ -0,0 +1,686 @@ +------------------------------------------------------------------------------ +--! @file +--! @author Matthias Alles +--! @date 01/2009 +--! @brief Global register file, including scaler and limiter +--! +------------------------------------------------------------------------------ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; +use work.constants_pkg.all; + +entity reg_file is port( + clk, rst : in std_logic; + register_file : out register_file_type; + wr_R_port_A_valid : in std_logic; + wr_R_port_A : in addr_wr_port_type; + wr_R_port_B_valid : in std_logic; + wr_R_port_B : in addr_wr_port_type; + alu_wr_valid : in std_logic; + alu_wr_addr : in std_logic; + alu_wr_data : in signed(55 downto 0); + reg_wr_addr : in std_logic_vector(5 downto 0); + reg_wr_addr_valid : in std_logic; + reg_wr_data : in std_Logic_vector(23 downto 0); + reg_rd_addr : in std_logic_vector(5 downto 0); + reg_rd_data : out std_Logic_vector(23 downto 0); + X_bus_rd_addr : in std_logic_vector(1 downto 0); + X_bus_data_out : out std_logic_vector(23 downto 0); + X_bus_wr_addr : in std_logic_vector(1 downto 0); + X_bus_wr_valid : in std_logic; + X_bus_data_in : in std_logic_vector(23 downto 0); + Y_bus_rd_addr : in std_logic_vector(1 downto 0); + Y_bus_data_out : out std_logic_vector(23 downto 0); + Y_bus_wr_addr : in std_logic_vector(1 downto 0); + Y_bus_wr_valid : in std_logic; + Y_bus_data_in : in std_logic_vector(23 downto 0); + L_bus_rd_addr : in std_logic_vector(2 downto 0); + L_bus_rd_valid : in std_logic; + L_bus_wr_addr : in std_logic_vector(2 downto 0); + L_bus_wr_valid : in std_logic; + push_stack : in push_stack_type; + pop_stack : in pop_stack_type; + set_sr : in std_logic; + new_sr : in std_logic_vector(15 downto 0); + set_omr : in std_logic; + new_omr : in std_logic_vector(7 downto 0); + dec_lc : in std_logic; + set_lc : in std_logic; + new_lc : in unsigned(15 downto 0); + set_la : in std_logic; + new_la : in unsigned(BW_ADDRESS-1 downto 0) +); +end entity; + + +architecture rtl of reg_file is + + signal addr_r : addr_array; + signal addr_m : addr_array; + signal addr_n : addr_array; + + signal loop_address : unsigned(BW_ADDRESS-1 downto 0); + signal loop_counter : unsigned(15 downto 0); + + -- condition code register + signal ccr : std_logic_vector(7 downto 0); + -- mode register + signal mr : std_logic_vector(7 downto 0); + -- status register = mode register + condition code register + signal sr : std_logic_vector(15 downto 0); + -- operation mode register + signal omr : std_logic_vector(7 downto 0); + + signal stack_pointer : unsigned(5 downto 0); + signal system_stack_ssh : stack_array_type; + signal system_stack_ssl : stack_array_type; + + signal x0 : signed(23 downto 0); + signal x1 : signed(23 downto 0); + signal y0 : signed(23 downto 0); + signal y1 : signed(23 downto 0); + + signal a0 : signed(23 downto 0); + signal a1 : signed(23 downto 0); + signal a2 : signed(7 downto 0); + + signal b0 : signed(23 downto 0); + signal b1 : signed(23 downto 0); + signal b2 : signed(7 downto 0); + + signal limited_a1 : signed(23 downto 0); + signal limited_b1 : signed(23 downto 0); + signal limited_a0 : signed(23 downto 0); + signal limited_b0 : signed(23 downto 0); + signal set_limiting_flag : std_logic; + signal X_bus_rd_limited_a : std_logic; + signal X_bus_rd_limited_b : std_logic; + signal Y_bus_rd_limited_a : std_logic; + signal Y_bus_rd_limited_b : std_logic; + signal reg_rd_limited_a : std_logic; + signal reg_rd_limited_b : std_logic; + signal rd_limited_a : std_logic; + signal rd_limited_b : std_logic; + +begin + + + + sr <= mr & ccr; + + register_file.addr_r <= addr_r; + register_file.addr_n <= addr_n; + register_file.addr_m <= addr_m; + register_file.lc <= loop_counter; + register_file.la <= loop_address; + register_file.ccr <= ccr; + register_file.mr <= mr; + register_file.sr <= sr; + register_file.omr <= omr; + register_file.stack_pointer <= stack_pointer; + register_file.current_ssh <= system_stack_ssh(to_integer(stack_pointer(3 downto 0))); + register_file.current_ssl <= system_stack_ssl(to_integer(stack_pointer(3 downto 0))); + register_file.a <= a2 & a1 & a0; + register_file.b <= b2 & b1 & b0; + register_file.x0 <= x0; + register_file.x1 <= x1; + register_file.y0 <= y0; + register_file.y1 <= y1; + + + global_register_file: process(clk) is + variable stack_pointer_plus_1 : unsigned(3 downto 0); + variable reg_addr : integer range 0 to 7; + begin + if rising_edge(clk) then + if rst = '1' then + addr_r <= (others => (others => '0')); + addr_n <= (others => (others => '0')); + addr_m <= (others => (others => '1')); + ccr <= (others => '0'); + mr <= (others => '0'); + omr <= (others => '0'); + system_stack_ssl <= (others => (others => '0')); + system_stack_ssh <= (others => (others => '0')); + stack_pointer <= (others => '0'); + loop_counter <= (others => '0'); + loop_address <= (others => '0'); + x0 <= (others => '0'); + x1 <= (others => '0'); + y0 <= (others => '0'); + y1 <= (others => '0'); + a0 <= (others => '0'); + a1 <= (others => '0'); + a2 <= (others => '0'); + b0 <= (others => '0'); + b1 <= (others => '0'); + b2 <= (others => '0'); + else + reg_addr := to_integer(unsigned(reg_wr_addr(2 downto 0))); + ----------------------------------------------------------------------- + -- General write port to register file using 6 bit addressing scheme + ----------------------------------------------------------------------- + if reg_wr_addr_valid = '1' then + case reg_wr_addr(5 downto 3) is + -- X0, X1, Y0, Y1 + when "000" => + case reg_wr_addr(2 downto 0) is + when "100" => + x0 <= signed(reg_wr_data); + when "101" => + x1 <= signed(reg_wr_data); + when "110" => + y0 <= signed(reg_wr_data); + when "111" => + y1 <= signed(reg_wr_data); + when others => + end case; + + -- A0, B0, A2, B2, A1, B1, A, B + when "001" => + case reg_wr_addr(2 downto 0) is + when "000" => + a0 <= signed(reg_wr_data); + when "001" => + b0 <= signed(reg_wr_data); + when "010" => + a2 <= signed(reg_wr_data(7 downto 0)); + when "011" => + b2 <= signed(reg_wr_data(7 downto 0)); + when "100" => + a1 <= signed(reg_wr_data); + when "101" => + b1 <= signed(reg_wr_data); + when "110" => + a2 <= (others => reg_wr_data(23)); + a1 <= signed(reg_wr_data); + a0 <= (others => '0'); + when "111" => + b2 <= (others => reg_wr_data(23)); + b1 <= signed(reg_wr_data); + b0 <= (others => '0'); + when others => + end case; + + -- R0-R7 + when "010" => + addr_r(reg_addr) <= unsigned(reg_wr_data(BW_ADDRESS-1 downto 0)); + + -- N0-N7 + when "011" => + addr_n(reg_addr) <= unsigned(reg_wr_data(BW_ADDRESS-1 downto 0)); + + -- M0-M7 + when "100" => + addr_m(reg_addr) <= unsigned(reg_wr_data(BW_ADDRESS-1 downto 0)); + + -- SR, OMR, SP, SSH, SSL, LA, LC + when "111" => + case reg_wr_addr(2 downto 0) is + -- SR + when "001" => + mr <= reg_wr_data(15 downto 8); + ccr <= reg_wr_data( 7 downto 0); + + -- OMR + when "010" => + omr <= reg_wr_data(7 downto 0); + + -- SP + when "011" => + stack_pointer <= unsigned(reg_wr_data(5 downto 0)); + + -- SSH + when "100" => + system_stack_ssh(to_integer(stack_pointer_plus_1)) <= reg_wr_data(BW_ADDRESS-1 downto 0); + -- increase stack after writing + stack_pointer(3 downto 0) <= stack_pointer_plus_1; + -- test whether stack is full, if so set the stack error flag (SE) + if stack_pointer(3 downto 0) = "1111" then + stack_pointer(4) <= '1'; + end if; + + -- SSL + when "101" => + system_stack_ssl(to_integer(stack_pointer)) <= reg_wr_data(BW_ADDRESS-1 downto 0); + + -- LA + when "110" => + loop_address <= unsigned(reg_wr_data(BW_ADDRESS-1 downto 0)); + + -- LC + when "111" => + loop_counter <= unsigned(reg_wr_data(15 downto 0)); + + when others => + end case; + when others => + end case; + end if; + + ---------------- + -- X BUS Write + ---------------- + if X_bus_wr_valid = '1' then + case X_bus_wr_addr is + when "00" => + x0 <= signed(X_bus_data_in); + when "01" => + x1 <= signed(X_bus_data_in); + when "10" => + a2 <= (others => X_bus_data_in(23)); + a1 <= signed(X_bus_data_in); + a0 <= (others => '0'); + when others => + b2 <= (others => X_bus_data_in(23)); + b1 <= signed(X_bus_data_in); + b0 <= (others => '0'); + end case; + end if; + ---------------- + -- Y BUS Write + ---------------- + if Y_bus_wr_valid = '1' then + case Y_bus_wr_addr is + when "00" => + y0 <= signed(Y_bus_data_in); + when "01" => + y1 <= signed(Y_bus_data_in); + when "10" => + a2 <= (others => Y_bus_data_in(23)); + a1 <= signed(Y_bus_data_in); + a0 <= (others => '0'); + when others => + b2 <= (others => Y_bus_data_in(23)); + b1 <= signed(Y_bus_data_in); + b0 <= (others => '0'); + end case; + end if; + ------------------ + -- L BUS Write + ------------------ + if L_bus_wr_valid = '1' then + case L_bus_wr_addr is + -- A10 + when "000" => + a1 <= signed(X_bus_data_in); + a0 <= signed(Y_bus_data_in); + -- B10 + when "001" => + b1 <= signed(X_bus_data_in); + b0 <= signed(Y_bus_data_in); + -- X + when "010" => + x1 <= signed(X_bus_data_in); + x0 <= signed(Y_bus_data_in); + -- Y + when "011" => + y1 <= signed(X_bus_data_in); + y0 <= signed(Y_bus_data_in); + -- A + when "100" => + a2 <= (others => X_bus_data_in(23)); + a1 <= signed(X_bus_data_in); + a0 <= signed(Y_bus_data_in); + -- B + when "101" => + b2 <= (others => X_bus_data_in(23)); + b1 <= signed(X_bus_data_in); + b0 <= signed(Y_bus_data_in); + -- AB + when "110" => + a2 <= (others => X_bus_data_in(23)); + a1 <= signed(X_bus_data_in); + a0 <= (others => '0'); + b2 <= (others => Y_bus_data_in(23)); + b1 <= signed(Y_bus_data_in); + b0 <= (others => '0'); + -- BA + when others => + a2 <= (others => Y_bus_data_in(23)); + a1 <= signed(Y_bus_data_in); + a0 <= (others => '0'); + b2 <= (others => X_bus_data_in(23)); + b1 <= signed(X_bus_data_in); + b0 <= (others => '0'); + end case; + end if; + + --------------------- + -- STATUS REGISTERS + --------------------- + if set_sr = '1' then + ccr <= new_sr( 7 downto 0); + mr <= new_sr(15 downto 8); + end if; + if set_omr = '1' then + omr <= new_omr; + end if; + -- data limiter active? + -- listing this statement after the set_sr test results + -- in the correct behaviour for ALU operations with parallel move + if set_limiting_flag = '1' then + ccr(6) <= '1'; + end if; + + -------------------- + -- LOOP REGISTERS + -------------------- + if set_la = '1' then + loop_address <= new_la; + end if; + if set_lc = '1' then + loop_counter <= new_lc; + end if; + if dec_lc = '1' then + loop_counter <= loop_counter - 1; + end if; + + --------------------- + -- ADDRESS REGISTER + --------------------- + if wr_R_port_A_valid = '1' then + addr_r(to_integer(wr_R_port_A.reg_number)) <= wr_R_port_A.reg_value; + end if; + if wr_R_port_B_valid = '1' then + addr_r(to_integer(wr_R_port_B.reg_number)) <= wr_R_port_B.reg_value; + end if; + + ------------------------- + -- ALU ACCUMULATOR WRITE + ------------------------- + if alu_wr_valid = '1' then + if alu_wr_addr = '0' then + a2 <= alu_wr_data(55 downto 48); + a1 <= alu_wr_data(47 downto 24); + a0 <= alu_wr_data(23 downto 0); + else + b2 <= alu_wr_data(55 downto 48); + b1 <= alu_wr_data(47 downto 24); + b0 <= alu_wr_data(23 downto 0); + end if; + end if; + + --------------------- + -- STACK CONTROLLER + --------------------- + stack_pointer_plus_1 := stack_pointer(3 downto 0) + 1; + if push_stack.valid = '1' then + -- increase stack after writing + stack_pointer(3 downto 0) <= stack_pointer_plus_1; + -- test whether stack is full, if so set the stack error flag (SE) + if stack_pointer(3 downto 0) = "1111" then + stack_pointer(4) <= '1'; + end if; + case push_stack.content is + when PC => + system_stack_ssh(to_integer(stack_pointer_plus_1)) <= std_logic_vector(push_stack.pc); + + when PC_AND_SR => + system_stack_ssh(to_integer(stack_pointer_plus_1)) <= std_logic_vector(push_stack.pc); + system_stack_ssl(to_integer(stack_pointer_plus_1)) <= SR; + + when LA_AND_LC => + system_stack_ssh(to_integer(stack_pointer_plus_1)) <= std_logic_vector(loop_address); + system_stack_ssl(to_integer(stack_pointer_plus_1)) <= std_logic_vector(loop_counter); + + end case; + end if; + + -- decrease stack pointer + if pop_stack.valid = '1' then + stack_pointer(3 downto 0) <= stack_pointer(3 downto 0) - 1; + -- if stack is empty set the underflow flag (bit 5, UF) and the stack error flag (bit 4, SE) + if stack_pointer(3 downto 0) = "0000" then + stack_pointer(5) <= '1'; + stack_pointer(4) <= '1'; + end if; + end if; + end if; + end if; + end process; + + + x_bus_rd_port: process(X_bus_rd_addr,x0,x1,a1,b1,limited_a1,limited_b1, + L_bus_rd_addr,L_bus_rd_valid,y1) is + begin + X_bus_rd_limited_a <= '0'; + X_bus_rd_limited_b <= '0'; + case X_bus_rd_addr is + when "00" => X_bus_data_out <= std_logic_vector(x0); + when "01" => X_bus_data_out <= std_logic_vector(x1); + when "10" => X_bus_data_out <= std_logic_vector(limited_a1); X_bus_rd_limited_a <= '1'; + when others => X_bus_data_out <= std_logic_vector(limited_b1); X_bus_rd_limited_b <= '1'; + end case; + if L_bus_rd_valid = '1' then + case L_bus_rd_addr is + when "000" => X_bus_data_out <= std_logic_vector(a1); + when "001" => X_bus_data_out <= std_logic_vector(b1); + when "010" => X_bus_data_out <= std_logic_vector(x1); + when "011" => X_bus_data_out <= std_logic_vector(y1); + when "100" => X_bus_data_out <= std_logic_vector(limited_a1); X_bus_rd_limited_a <= '1'; + when "101" => X_bus_data_out <= std_logic_vector(limited_b1); X_bus_rd_limited_b <= '1'; + when "110" => X_bus_data_out <= std_logic_vector(limited_a1); X_bus_rd_limited_a <= '1'; + when others => X_bus_data_out <= std_logic_vector(limited_b1); X_bus_rd_limited_b <= '1'; + end case; + end if; + end process x_bus_rd_port; + + y_bus_rd_port: process(Y_bus_rd_addr,y0,y1,a1,b1,limited_a1,limited_b1, + L_bus_rd_addr,L_bus_rd_valid,a0,b0,x0,limited_a0,limited_b0) is + begin + Y_bus_rd_limited_a <= '0'; + Y_bus_rd_limited_b <= '0'; + case Y_bus_rd_addr is + when "00" => Y_bus_data_out <= std_logic_vector(y0); + when "01" => Y_bus_data_out <= std_logic_vector(y1); + when "10" => Y_bus_data_out <= std_logic_vector(limited_a1); Y_bus_rd_limited_a <= '1'; + when others => Y_bus_data_out <= std_logic_vector(limited_b1); Y_bus_rd_limited_b <= '1'; + end case; + if L_bus_rd_valid = '1' then + case L_bus_rd_addr is + when "000" => Y_bus_data_out <= std_logic_vector(a0); + when "001" => Y_bus_data_out <= std_logic_vector(b0); + when "010" => Y_bus_data_out <= std_logic_vector(x0); + when "011" => Y_bus_data_out <= std_logic_vector(y0); + when "100" => Y_bus_data_out <= std_logic_vector(limited_a0); Y_bus_rd_limited_a <= '1'; + when "101" => Y_bus_data_out <= std_logic_vector(limited_b0); Y_bus_rd_limited_b <= '1'; + when "110" => Y_bus_data_out <= std_logic_vector(limited_b1); Y_bus_rd_limited_b <= '1'; + when others => Y_bus_data_out <= std_logic_vector(limited_a1); Y_bus_rd_limited_a <= '1'; + end case; + end if; + end process y_bus_rd_port; + + + reg_rd_port: process(reg_rd_addr, x0,x1,y0,y1,a0,a1,a2,b0,b1,b2, + omr,ccr,mr,addr_r,addr_n,addr_m,stack_pointer, + loop_address,loop_counter,system_stack_ssl,system_stack_ssh) is + variable reg_addr : integer range 0 to 7; + begin + reg_addr := to_integer(unsigned(reg_rd_addr(2 downto 0))); + reg_rd_data <= (others => '0'); + reg_rd_limited_a <= '0'; + reg_rd_limited_b <= '0'; + + case reg_rd_addr(5 downto 3) is + -- X0, X1, Y0, Y1 + when "000" => + case reg_rd_addr(2 downto 0) is + when "100" => + reg_rd_data <= std_logic_vector(x0); + when "101" => + reg_rd_data <= std_logic_vector(x1); + when "110" => + reg_rd_data <= std_logic_vector(y0); + when "111" => + reg_rd_data <= std_logic_vector(y1); + when others => + end case; + + -- A0, B0, A2, B2, A1, B1, A, B + when "001" => + case reg_rd_addr(2 downto 0) is + when "000" => + reg_rd_data <= std_logic_vector(a0); + when "001" => + reg_rd_data <= std_logic_vector(b0); + when "010" => + -- MSBs are read as zero! + reg_rd_data(23 downto 8) <= (others => '0'); + reg_rd_data(7 downto 0) <= std_logic_vector(a2); + when "011" => + -- MSBs are read as zero! + reg_rd_data(23 downto 8) <= (others => '0'); + reg_rd_data(7 downto 0) <= std_logic_vector(b2); + when "100" => + reg_rd_data <= std_logic_vector(a1); + when "101" => + reg_rd_data <= std_logic_vector(b1); + when "110" => + reg_rd_data <= std_logic_vector(limited_a1); + reg_rd_limited_a <= '1'; + when "111" => + reg_rd_data <= std_logic_vector(limited_b1); + reg_rd_limited_b <= '1'; + when others => + end case; + + -- R0-R7 + when "010" => + reg_rd_data <= std_logic_vector(resize(addr_r(reg_addr), 24)); + + -- N0-N7 + when "011" => + reg_rd_data <= std_logic_vector(resize(addr_n(reg_addr), 24)); + + -- M0-M7 + when "100" => + reg_rd_data <= std_logic_vector(resize(addr_m(reg_addr), 24)); + + -- SR, OMR, SP, SSH, SSL, LA, LC + when "111" => + case reg_wr_addr(2 downto 0) is + -- SR + when "001" => + reg_rd_data(23 downto 16) <= (others => '0'); + reg_rd_data(15 downto 0) <= mr & ccr; + + -- OMR + when "010" => + reg_rd_data(23 downto 8) <= (others => '0'); + reg_rd_data( 7 downto 0) <= omr; + + -- SP + when "011" => + reg_rd_data(23 downto 6) <= (others => '0'); + reg_rd_data(5 downto 0) <= std_logic_vector(stack_pointer); + + -- SSH + when "100" => +-- TODO! +-- system_stack_ssh(to_integer(stack_pointer_plus_1)) <= reg_wr_data(BW_ADDRESS-1 downto 0); +-- -- increase stack after writing +-- stack_pointer(3 downto 0) <= stack_pointer_plus_1; +-- -- test whether stack is full, if so set the stack error flag (SE) +-- if stack_pointer(3 downto 0) = "1111" then +-- stack_pointer(4) <= '1'; +-- end if; + + -- SSL + when "101" => + reg_rd_data <= (others => '0'); + reg_rd_data(BW_ADDRESS-1 downto 0) <= std_logic_vector(system_stack_ssl(to_integer(stack_pointer))); + + -- LA + when "110" => + reg_rd_data <= (others => '0'); + reg_rd_data(BW_ADDRESS-1 downto 0) <= std_logic_vector(loop_address); + + -- LC + when "111" => + reg_rd_data <= (others => '0'); + reg_rd_data(15 downto 0) <= std_logic_vector(loop_counter); + + when others => + end case; + when others => + end case; + end process; + + rd_limited_a <= '1' when reg_rd_limited_a = '1' or X_bus_rd_limited_a = '1' or Y_bus_rd_limited_a = '1' else '0'; + rd_limited_b <= '1' when reg_rd_limited_b = '1' or X_bus_rd_limited_b = '1' or Y_bus_rd_limited_b = '1' else '0'; + + data_shifter_limiter: process(a2,a1,a0,b2,b1,b0,sr,rd_limited_a,rd_limited_b) is + variable scaled_a : signed(55 downto 0); + variable scaled_b : signed(55 downto 0); + begin + + set_limiting_flag <= '0'; + ----------------- + -- DATA SCALING + ----------------- + -- test against scaling bits S1, S0 + case sr(11 downto 10) is + -- scale down (right shift) + when "01" => + scaled_a := a2(7) & a2 & a1 & a0(23 downto 1); + scaled_b := b2(7) & b2 & b1 & b0(23 downto 1); + -- scale up (arithmetic left shift) + when "10" => + scaled_a := a2(6 downto 0) & a1 & a0 & '0'; + scaled_b := b2(6 downto 0) & b1 & b0 & '0'; + -- "00" do not scale! + when others => + scaled_a := a2 & a1 & a0; + scaled_b := b2 & b1 & b0; + end case; + + -- only sign extension stored in a2? + -- Yes: No limiting needed! + if scaled_a(55 downto 47) = "111111111" or scaled_a(55 downto 47) = "000000000" then + limited_a1 <= scaled_a(47 downto 24); + limited_a0 <= scaled_a(23 downto 0); + else + -- positive value in a? + if scaled_a(55) = '0' then + limited_a1 <= X"7FFFFF"; + limited_a0 <= X"FFFFFF"; + -- negative value in a? + else + limited_a1 <= X"800000"; + limited_a0 <= X"000000"; + end if; + -- set the limit flag in the status register + if rd_limited_a = '1' then + set_limiting_flag <= '1'; + end if; + end if; + -- only sign extension stored in b2? + -- Yes: No limiting needed! + if scaled_b(55 downto 47) = "111111111" or scaled_b(55 downto 47) = "000000000" then + limited_b1 <= scaled_b(47 downto 24); + limited_b0 <= scaled_b(23 downto 0); + else + -- positive value in b? + if scaled_b(55) = '0' then + limited_b1 <= X"7FFFFF"; + limited_b0 <= X"FFFFFF"; + -- negative value in b? + else + limited_b1 <= X"800000"; + limited_b0 <= X"000000"; + end if; + -- set the limit flag in the status register + if rd_limited_b = '1' then + set_limiting_flag <= '1'; + end if; + end if; + + end process; + + +end architecture rtl; diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/types_pkg.vhd b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/types_pkg.vhd new file mode 100644 index 0000000..f0f1175 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/src/types_pkg.vhd @@ -0,0 +1,182 @@ +------------------------------------------------------------------------------ +--! @file +--! @author Matthias Alles +--! @date 01/2009 +--! @brief Global types +--! +------------------------------------------------------------------------------ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; + + + +package types_pkg is + + -- the different addressing modes + type ADGen_mode_type is (NOP, + POST_MIN_N, + POST_PLUS_N, + POST_MIN_1, + POST_PLUS_1, + INDEXED_N, + PRE_MIN_1, + ABSOLUTE, + IMMEDIATE); + + ------------------------ + -- Decoded instructions + ------------------------ + type instructions_type is ( + INSTR_NOP , + INSTR_RTI , + INSTR_ILLEGAL , + INSTR_SWI , + INSTR_RTS , + INSTR_RESET , + INSTR_WAIT , + INSTR_STOP , + INSTR_ENDDO , + INSTR_ANDI , + INSTR_ORI , + INSTR_DIV , + INSTR_NORM , + INSTR_LUA , + INSTR_MOVEC , + INSTR_REP , + INSTR_DO , + INSTR_MOVEM , + INSTR_MOVEP , + INSTR_PM_MOVEM, + INSTR_BCLR , + INSTR_BSET , + INSTR_JCLR , + INSTR_JSET , + INSTR_JMP , + INSTR_JCC , + INSTR_BCHG , + INSTR_BTST , + INSTR_JSCLR , + INSTR_JSSET , + INSTR_JSR , + INSTR_JSCC ); + + type addr_array is array(0 to 7) of unsigned(BW_ADDRESS-1 downto 0); + + type alu_shift_mode is (NO_SHIFT, SHIFT_LEFT, SHIFT_RIGHT, ZEROS); + type alu_ccr_flag is (DONT_TOUCH, CLEAR, MODIFY, SET); + type alu_ccr_flag_array is array(7 downto 0) of alu_ccr_flag; + + type alu_ctrl_type is record + mul_op1 : std_logic_vector(1 downto 0); -- x0,x1,y0,y1 + mul_op2 : std_logic_vector(1 downto 0); -- x0,x1,y0,y1 + shift_src : std_logic; -- a,b + shift_src_sign : std_logic_vector(1 downto 0); -- 00: pos, 01: neg, 10: sign dependant, 11: reserved + shift_mode : alu_shift_mode; + rotate : std_logic; -- 0: logical shift, 1: rotate shift + add_src_stage_1 : std_logic_vector(2 downto 0); -- x0,x1,y0,y1,x,y,a,b + add_src_stage_2 : std_logic_vector(1 downto 0); -- 00: 0 , 01: add_src_1, 10: mul_result, 11: reserved + add_src_sign : std_logic_vector(1 downto 0); -- 00: pos, 01: neg, 10: sign dependant, 11: reserved + logic_function : std_logic_vector(2 downto 0); -- 000: none, 001: and, 010: or, 011: eor, 100: not + word_24_update : std_logic; -- only accumulator bits 47 downto 24 affected? + rounding_used : std_logic_vector(1 downto 0); -- 00: no rounding, 01: rounding, 10: add carry, 11: subtract carry + store_result : std_logic; -- 0: do not update accumulator, 1: update accumulator + dst_accu : std_logic; -- 0: a, 1: b + div_instr : std_logic; -- DIV instruction? Special ALU operations needed! + norm_instr : std_logic; -- NORM instruction? Special ALU operations needed! + ccr_flags_ctrl : alu_ccr_flag_array; + end record; + + type pipeline_signals is record + instr_word: std_logic_vector(23 downto 0); + pc : unsigned(BW_ADDRESS-1 downto 0); + dble_word_instr : std_logic; + instr_array : instructions_type; + act_array : std_logic_vector(NUM_ACT_SIGNALS-1 downto 0); + dec_activate : std_logic; + adgen_mode_a : adgen_mode_type; + adgen_mode_b : adgen_mode_type; + reg_wr_addr : std_logic_vector(5 downto 0); + reg_rd_addr : std_logic_vector(5 downto 0); + x_bus_rd_addr : std_logic_vector(1 downto 0); + x_bus_wr_addr : std_logic_vector(1 downto 0); + y_bus_rd_addr : std_logic_vector(1 downto 0); + y_bus_wr_addr : std_logic_vector(1 downto 0); + l_bus_addr : std_logic_vector(2 downto 0); + adgen_address_x : unsigned(BW_ADDRESS-1 downto 0); + adgen_address_y : unsigned(BW_ADDRESS-1 downto 0); + RAM_out_x : std_logic_vector(23 downto 0); + RAM_out_y : std_logic_vector(23 downto 0); + alu_ctrl : alu_ctrl_type; + end record; + + type pipeline_type is array(0 to PIPELINE_DEPTH-1) of pipeline_signals; + + + type register_file_type is record + a : signed(55 downto 0); + b : signed(55 downto 0); + x0 : signed(23 downto 0); + x1 : signed(23 downto 0); + y0 : signed(23 downto 0); + y1 : signed(23 downto 0); + la : unsigned(BW_ADDRESS-1 downto 0); + lc : unsigned(15 downto 0); + addr_r : addr_array; + addr_n : addr_array; + addr_m : addr_array; + ccr : std_logic_vector(7 downto 0); + mr : std_logic_vector(7 downto 0); + sr : std_logic_vector(15 downto 0); + omr : std_logic_vector(7 downto 0); + stack_pointer : unsigned(5 downto 0); +-- system_stack_ssh : stack_array_type; +-- system_stack_ssl : stack_array_type; + current_ssh : std_logic_vector(BW_ADDRESS-1 downto 0); + current_ssl : std_logic_vector(BW_ADDRESS-1 downto 0); + + end record; + + type addr_wr_port_type is record +-- write_valid : std_logic; + reg_number : unsigned(2 downto 0); + reg_value : unsigned(15 downto 0); + end record; + + type mem_ctrl_type_in is record + rd_addr : unsigned(BW_ADDRESS-1 downto 0); + rd_en : std_logic; + wr_addr : unsigned(BW_ADDRESS-1 downto 0); + wr_en : std_logic; + data_in : std_logic_vector(23 downto 0); + end record; + + type mem_ctrl_type_out is record + data_out : std_logic_vector(23 downto 0); + data_out_valid : std_logic; + end record; + + type memory_type is (X_MEM, Y_MEM, P_MEM); + --------------- + -- STACK TYPES + --------------- + type stack_array_type is array(0 to 15) of std_logic_vector(BW_ADDRESS-1 downto 0); + + type push_stack_content_type is (PC, PC_AND_SR, LA_AND_LC); + + type push_stack_type is record + valid : std_logic; + pc : unsigned(BW_ADDRESS-1 downto 0); + content : push_stack_content_type; + end record; + + +-- type pop_stack_type is std_logic; + type pop_stack_type is record + valid : std_logic; +-- content : pop_stack_content_type; + end record; + +end package types_pkg; diff --git a/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/testbench/tb_pipeline.vhd b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/testbench/tb_pipeline.vhd new file mode 100644 index 0000000..e4ed829 --- /dev/null +++ b/BaS_codewarrior/FireBee/trunk/vhdl/dsp56k/testbench/tb_pipeline.vhd @@ -0,0 +1,49 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library work; +use work.parameter_pkg.all; +use work.types_pkg.all; + +entity tb_pipeline is generic ( + clk_period : time := 10 ns + ); + + +end entity tb_pipeline; + + +architecture uut of tb_pipeline is + + signal clk : std_logic := '0'; + signal rst : std_logic; + + component pipeline is port( + clk, rst : std_logic + ); + end component pipeline; + +begin + + + + uut: pipeline port map( + clk => clk, + rst => rst + ); + + clk_gen: process + begin + wait for clk_period/2; + clk <= not clk; + end process clk_gen; + + rst_gen : process + begin + rst <= '1'; + wait for 10 * clk_period; + rst <= '0'; + wait; + end process rst_gen; + +end architecture uut; diff --git a/BaS_codewarrior/firebeeV1/bin/DDRAM.elf b/BaS_codewarrior/firebeeV1/bin/DDRAM.elf new file mode 100644 index 0000000000000000000000000000000000000000..7350e7a4e20a55208e71e1cc3aa88d3cd5c13e82 GIT binary patch literal 18923 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 F{{bn(3pxM* literal 0 HcmV?d00001 diff --git a/BaS_codewarrior/firebeeV1/bin/DDRAM.elf.S19 b/BaS_codewarrior/firebeeV1/bin/DDRAM.elf.S19 new file mode 100644 index 0000000..a716ff9 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/bin/DDRAM.elf.S19 @@ -0,0 +1,289 @@ +S0030000FC +S3211FE0000060064EF9E000000846FC2700203CFF0000004E7B0C0F23C0FF10084464 +S3211FE0001C203CFF0400014E7B0008428023C0FF040000203CFF1000074E7B0C049F +S3211FE00038203CFF1010014E7B0C054FF9FF100FFC203C000C81004E7B00024E717C +S3211FE0005460FF00001E5E4E754DF9FF00860C47F9FF00890C49F9FF00890C4BF928 +S3211FE00070FF00895826BC414350464EBA018E2CBC5049432010141C8012141C8195 +S3211FE0008C14141C822CBC00000A0D16BC000141F900E0000043F9E060000045F9E7 +S3211FE000A8E07000001039FF000A2C08000006660C43F9E040000045F9E05000001F +S3211FE000C420D9B3CA6DFA1039FF000A2C08000006670000A041F889614281744011 +S3211FE000E010141C800C000081661E10141C801081114000025281B40166F010BCE0 +S3211FE000FC003F1028000252801140000261FF0000015A61FF0000032061FF0000A7 +S3211FE00118118C42B9F001000441F9FF000F0030BCAAA8103C00FE13C0F0010004A1 +S3211FE001344E7141F9FF000F0510BC00FE4E7141F9FF000F0C10BC00FF4E7141F9FD +S3211FE00150FF00070C20BCFFFFFF0041F9FF00070820BCFFFFFFFE203C0000000127 +S3211FE0016C23C0FF0400004E714E7141F9F000041020FC037002BA20FC020D020A4E +S3211FE0018820FC02A001E020FC01A0016041E8FFE020BC0107000241F8040043F833 +S3211FE001A408004298429842984298B3C86EF4704811C08007203C00E0000021C0C0 +S3211FE001C0042E203C752019F321C00420203C237698AA21C0043A203C5555AAAA3A +S3211FE001DC21C0051A203C1FE0000021C005A4203C1357BD1321C005A81039FF00B1 +S3211FE001F80A2C08000007670446FC07004EF900E000302F082F062F012F0041F991 +S3211FE00214FF00090820102C3C000AAE60602E2F082F062F012F0041F9FF00090866 +S3211FE0023020102C3C00001B5860162F082F062F012F0041F9FF00090820102C3C7F +S3211FE0024C0000014D22109280D2866AF8201F221F2C1F205F4E754E7542804E7BEA +S3211FE00268000323C0FF1008144E7B000223C0FF1008104E71203CC03FC0404E7BAC +S3211FE00284000423C0FF100818203C601FC0004E7B000523C0FF10081C203CE00187 +S3211FE002A0C0004E7B000623C0FF10082042804E7B000723C0FF100824203CFF0485 +S3211FE002BC00014E7B000823C0FF1008284E71203C0000008023C0FF0400044E71E9 +S3211FE002D8203C00000003223C0000001C74037613283C001000002A3C00D0000082 +S3211FE002F47C5E23C0FF04001423C6FF04001823C2FF04000423C3FF040004D084E4 +S3211FE00310D28423C0FF04001423C1FF04001823C2FF04000423C3FF040004D08450 +S3211FE0032CD284B2856DE023C0FF040014223C60D0009E23C1FF04001823C2FF04C9 +S3211FE003480004D08423C0FF040014223C00E0005E23C1FF04001823C2FF040004BB +S3211FE0036423C3FF040004D08423C0FF040014223CFFF0009E23C1FF04001823C26E +S3211FE00380FF040004203C1FE0000323C0FF040014223C1FE0001E23C1FF04001883 +S3211FE0039C23C2FF04000423C3FF040004203C1FF0000323C0FF040014223C1FF092 +S3211FE003B8001E23C1FF04001823C2FF04000423C0FF040014223CFFF0001E23C1D2 +S3211FE003D4FF04001823C3FF040004203CA10CA12023C0FF1008104E7B000223C07E +S3211FE003F0FF1008104E714E750280FFF0000000800000000323C0FF0400140280D3 +S3211FE0040CFFF0000000800000001C23C0FF040018700323C0FF040004701323C083 +S3211FE00428FF040004201F4E73A179FF10080042B9FF10080442B9FF10080842B950 +S3211FE00444FF10080C203CFF1000004E7B080120402448203C0000010043F91FE0D3 +S3211FE00460051A24C9538066FA20BCFF100FFC43F91FE005CE2149000443F91FE08F +S3211FE0047C05E82149000843F91FE012A22149000C43F91FE012A22149001043F9F6 +S3211FE004981FE006182149001443F91FE00B602149002043F91FE00666214900283F +S3211FE004B443F91FE0066C2149002C43F91FE006722149003843F91FE00680214964 +S3211FE004D0010443F91FE0070C2149010843F91FE007982149010C43F91FE008248D +S3211FE004EC2149011043F91FE008B02149011443F91FE0093C2149011843F91FE0C4 +S3211FE005080A342149011C43F91FE00B16214901844E7546FC2700518F48D7200176 +S3211FE005241039FF000A2C080000076600002C302F00080280000003FCD0B9FF1017 +S3211FE00540080C2A4020152A6F00042F400004302F000A08C0000D46C0201F4E7591 +S3211FE0055C4E6D4A39FF1008006600003CA179FF10080023CDFF1008082A79FF1095 +S3211FE0057808042B2F000C202F00082B0048404E650280000003FCD0B9FF10080C06 +S3211FE005942A402F55000C4CD72001508F4E732B2F000C202F000808C0000D2B00AB +S3211FE005B048404E650280000003FCD0B9FF10080C2A402F55000C4CD72001508FA5 +S3211FE005CC4E7346FC2700203C31415926B0B9000004266700FF3A4EF9E00000003D +S3211FE005E846FC27002F002039FF04000808000000660000182039FF0400100C8078 +S3211FE006041FE000006C0000084EF91FE003F8201F6000FF042F082F00206F000C7E +S3211FE00620301808000007670000045488C0B90000003F0C4000086F0000245488A0 +S3211FE0063C0C400039660000085488600000140C40003C6600000C080000076700EA +S3211FE00658000454882F48000C201F205F4E734AC84E714E714AC84E714E7146FC3D +S3211FE0067427004E714E714AC84E714E7146FC2700518F48D720014BF9FF000F0C49 +S3211FE006901ABC00021039FF000A2C08000007660000144CD72001508F2F390000DF +S3211FE006AC006446FC21004E754E6D4A39FF10080066000020A179FF10080023CDA7 +S3211FE006C8FF1008082A79FF1008042B2F000C2B2F0008600000102B2F000C2B2F3C +S3211FE006E4000808ED000500024E654BF900000064DBF9FF10080C2F55000C1F7C74 +S3211FE007000001000A4CD72001508F4E7346FC2700518F48D720014BF9FF000F0C02 +S3211FE0071C1ABC00041039FF000A2C08000007660000144CD72001508F2F39000050 +S3211FE00738006846FC22004E754E6D4A39FF10080066000020A179FF10080023CD15 +S3211FE00754FF1008082A79FF1008042B2F000C2B2F0008600000102B2F000C2B2FAF +S3211FE00770000808ED000500024E654BF900000068DBF9FF10080C2F55000C1F7CE3 +S3211FE0078C0002000A4CD72001508F4E7346FC2700518F48D720014BF9FF000F0C75 +S3211FE007A81ABC00081039FF000A2C08000007660000144CD72001508F2F390000C0 +S3211FE007C4006C46FC23004E754E6D4A39FF10080066000020A179FF10080023CD84 +S3211FE007E0FF1008082A79FF1008042B2F000C2B2F0008600000102B2F000C2B2F23 +S3211FE007FC000808ED000500024E654BF90000006CDBF9FF10080C2F55000C1F7C53 +S3211FE008180003000A4CD72001508F4E7346FC2700518F48D720014BF9FF000F0CE7 +S3211FE008341ABC00101039FF000A2C08000007660000144CD72001508F2F3900002B +S3211FE00850007046FC24004E754E6D4A39FF10080066000020A179FF10080023CDF2 +S3211FE0086CFF1008082A79FF1008042B2F000C2B2F0008600000102B2F000C2B2F96 +S3211FE00888000808ED000500024E654BF900000070DBF9FF10080C2F55000C1F7CC2 +S3211FE008A40004000A4CD72001508F4E7346FC2700518F48D720014BF9FF000F0C5A +S3211FE008C01ABC00201039FF000A2C08000007660000144CD72001508F2F3900008F +S3211FE008DC007446FC25004E754E6D4A39FF10080066000020A179FF10080023CD61 +S3211FE008F8FF1008082A79FF1008042B2F000C2B2F0008600000102B2F000C2B2F0A +S3211FE00914000808ED000500024E654BF900000074DBF9FF10080C2F55000C1F7C31 +S3211FE009300005000A4CD72001508F4E7346FC2700518F48D720014BF9FF000F0CCC +S3211FE0094C1ABC00404A39FFFFFA0B660000144A39FFFFFA0D6600000A4CD7200138 +S3211FE00968508F4E734BF9FF000A07089500044BF9000000005295201502800000F7 +S3211FE0098400806600000C4BF9FF000A0708D500041039FF000A2C08000007660038 +S3211FE009A000202A79F0020000DBF9FF10080C20152A6F00042F400004201F46FCC4 +S3211FE009BC26004E754E6D4A39FF1008006600003CA179FF10080023CDFF100808FA +S3211FE009D82A79FF1008042B2F000C2B2F00084E652A79F0020000DBF9FF10080C39 +S3211FE009F42F55000C4CD72001508F1F7C000600024E732B2F000C2B2F000808ED0E +S3211FE00A10000500024E652A79F0020000DBF9FF10080C2F55000C4CD72001508FCC +S3211FE00A2C1F7C000600024E734FEFFFF448D7030141F9F00201102268FFF42028EF +S3211FE00A48FFF86700009C08280000FFF06600003208280007FFFC6700005222D0FF +S3211FE00A6422D022D022D004800000001043E9FFF0F4E95289F4E95289F4E95289C4 +S3211FE00A80F4E943E9000D60D008280007FFFC67000022F4E95289F4E95289F4E907 +S3211FE00A9C5289F4E95789209920992099209904800000001060D62149FFF4214035 +S3211FE00AB8FFF86600000EB3FC0000DA70660000044E7141F9FF000F0C0828000705 +S3211FE00AD4FFFD6700FF6A10BC00804CD703014FEF000C4E7341F9FF000F0C10BC97 +S3211FE00AF00080306F000C2A79FF10080C4BED007C2F5500104CD703014FEF000C3B +S3211FE00B0C1F7C000700026000FA0646FC27004FEFFFEC48D7090747F9FF00890C2F +S3211FE00B2812130C0100026600002441F9FFFF896147F9FF00890C4281744016BCAF +S3211FE00B44008210811028000216805281B40166F24CD709074FEF00144E73000087 +S3211FE00B6046FC27004FEFFFF448D7210141F9FF1008004A1066000034A1504E6DA8 +S3211FE00B7C214D00082A6800042B2F00102B2F000C08ED000500024E652A68000C2F +S3211FE00B984BED00182F5500104CD721014FEF000C4E732A6F001010150C00004EE0 +S3211FE00BB4670000280C000046670002F20C000040670003900C0000F46700041E15 +S3211FE00BD00C0000F3670004964E714AC84E71102D00010C0000736700011A0C0029 +S3211FE00BEC00726700013C0C00007B670001C008000003660000400C00006067009F +S3211FE00C08007E0C0000616700007E0C0000626700007C0C0000636700007A0C004E +S3211FE00C240064670000780C000065670000760C000066670000764AC860000076E7 +S3211FE00C402A6800080C000068670000800C000069670000800C00006A6700007EE7 +S3211FE00C5C0C00006B6700007C0C00006C6700007A0C00006D670000780C00006EF2 +S3211FE00C7867000078214D00044E65600000702A6F00046000002C2A496000002665 +S3211FE00C942A4A600000202A4B6000001A2A4C600000142A6F00086000000C2A4EED +S3211FE00CB0600000062A680004214D000854AF00104CD721014FEF000C4E732F4DD2 +S3211FE00CCC000460000024224D6000001E244D60000018264D60000012284D6000EF +S3211FE00CE8000C2F4D0008600000042C4D54AF00104CD721014FEF000C4E734E6D60 +S3211FE00D042F5D000C2F5D001008AF0005000E6600000C4290214D00042A68000880 +S3211FE00D204E654CD721014FEF000C4E73102D00020280000007000C40070067002D +S3211FE00D3C006A0C4006006700005A0C4005006700004A0C4004006700003A0C40DA +S3211FE00D5803006700002A0C4002006700001A0C4001006700000A4E722000600019 +S3211FE00D7400364E7221006000002E4E722200600000264E7223006000001E4E7230 +S3211FE00D902400600000164E7225006000000E4E722600600000064E72270058AF1B +S3211FE00DAC00104CD721014FEF000C4E73302D000202800000F0000800000F660078 +S3211FE00DC800684A40660000082F17600000C60C401000660000082F01600000B82C +S3211FE00DE40C402000660000082F02600000AA0C403000660000082F036000009CC1 +S3211FE00E000C404000660000082F046000008E0C405000660000082F056000008098 +S3211FE00E1C0C406000660000082F06600000722F076000006C0C4080006600000A56 +S3211FE00E382F2F00046000005C0C409000660000082F096000004E0C40A0006600F9 +S3211FE00E5400082F0A600000400C40B000660000082F0B600000320C40C0006600F4 +S3211FE00E7000082F0C600000240C40D0006600000A2F2F0008600000140C40E00008 +S3211FE00E8C660000082F0E600000062F2F0004302D000202800000000F219F0C080E +S3211FE00EA84EB91FE010DE4E73102D00010C0000FC670000700C0000C06600000A1B +S3211FE00EC4302F0002600000580C0000C16600000830016000004A0C0000C26600AA +S3211FE00EE0000830026000003C0C0000C36600000830036000002E0C0000C46600E7 +S3211FE00EFC00083004600000200C0000C5660000083005600000120C0000C66600FB +S3211FE00F180008300660000004300754AF00106000000A58AF0010302D0002088064 +S3211FE00F34000D6600001042904E6D214D00042A6800084E653F40000E4CD72101FB +S3211FE00F504FEF000C4E73102D00010C0000E7670000862A6F000C4A1067000006EB +S3211FE00F6C4BED20000C0000C06600000A3F4D00026000005A0C0000C1660000084D +S3211FE00F88320D6000004C0C0000C266000008340D6000003E0C0000C36600000805 +S3211FE00FA4360D600000300C0000C466000008380D600000220C0000C56600000815 +S3211FE00FC03A0D600000140C0000C6660000083C0D600000063E0D4AC854AF0010F6 +S3211FE00FDC4CD721014FEF000C4E734E714AC84E7154AF0010102D00016100002240 +S3211FE00FF80C0000306D00000EF4E84CD721014FEF000C4E73F4284CD721014FEF56 +S3211FE01014000C4E7302800000000753806B00002A53806B00002A53806B0000282F +S3211FE0103053806B00002653806B00002453806B00002253806B000022204F4E75E7 +S3211FE0104C206F00044E7520494E75204A4E75204B4E75204C4E75206F00084E751D +S3211FE01068204E4E7554AF0010102D00010C0000406E00002C4EB91FE01018102D94 +S3211FE0108400010C0000206D00000E54AF0010428030280002D1C0F3104CD721019B +S3211FE010A04FEF000C4E730C00007A6700002C4EB91FE01018102D00010C00006033 +S3211FE010BC6D00000E54AF0010428030280002D1C0F3504CD721014FEF000C4E7345 +S3211FE010D8206F001060E24FEFFFF048D7010740C24E7146FC0A8C428022002040E5 +S3211FE010F4F4E841E8001052810C4101FF66F24281528020400C40000466E646C2B5 +S3211FE011104CD701074FEF00104E714E7573EF000253816400001654883F410002B3 +S3211FE0112C2F4800144CD703034FEF00104E733250D1C93F4100022F4800144CD793 +S3211FE0114803034FEF00104E7373EF000653816400001654883F4100062F480014CE +S3211FE011644CD703034FEF00104E733250D1C93F4100062F4800144CD703034FEF9E +S3211FE0118000104E7373C2538164000014548834012F4800144CD703034FEF0010E9 +S3211FE0119C4E733250D1C934012F4800144CD703034FEF00104E7373C353816400EF +S3211FE011B80014548836012F4800144CD703034FEF00104E733250D1C936012F4862 +S3211FE011D400144CD703034FEF00104E7373C4538164000014548838012F4800148B +S3211FE011F04CD703034FEF00104E733250D1C938012F4800144CD703034FEF00104F +S3211FE0120C4E7373C553816400001454883A012F4800144CD703034FEF00104E73A2 +S3211FE012283250D1C93A012F4800144CD703034FEF00104E7373C653816400001406 +S3211FE0124454883C012F4800144CD703034FEF00104E733250D1C93C012F480014C9 +S3211FE012604CD703034FEF00104E7373C753816400001454883E012F4800144CD7E6 +S3211FE0127C03034FEF00104E733250D1C93E012F4800144CD703034FEF00104E731E +S3211FE012984E714AC86572726F72204E7541F9FF00090020BCFFFFFFFF41F9FF0004 +S3211FE012B4090410BC000541F9FF00860C20BC534C542041F9FF00860C20BC4F4B40 +S3211FE012D0212041F9FF00860C20BC00000A0D4E7541F9FF000A4310BC00FF41F9B0 +S3211FE012ECFF000A4430BCF3CF41F9FF000A4830BC023F41F9FF000A4A30BC023F74 +S3211FE0130841F9FF000A4C10BC000C41F9FF000A4E10BC00FC41F9FF000A4F10BCA6 +S3211FE0132400FC41F9FF000A5030BC1FFF41F9FF000A5210BC002D41F9FF000A1727 +S3211FE0134010BC001E4E7551FC41F9FF008640421041F9FF00860410BC00DD41F99B +S3211FE0135CFF008618421041F9FF00861C10BC002441F9FF00860810BC002041F9C9 +S3211FE01378FF00860810BC003041F9FF00860810BC004041F9FF00860810BC005015 +S3211FE0139441F9FF00860810BC001041F9FF00861430BC870041F9FF00861010BCB4 +S3211FE013B0000341F9FF00860010BC00B341F9FF00860010BC001741F9FF00866812 +S3211FE013CC20BC0000000F41F9FF00868820BC0000000F41F9FF00866E30BC00F0DA +S3211FE013E841F9FF00868E30BC00F041F9FF00863810BC000141F9FF00860810BC64 +S3211FE01404000541F9FF00860C20BC00000A0D41F9FF00860C20BC5345524941F9F0 +S3211FE01420FF00860C20BC414C204F41F9FF00860C20BC4B21202041F9FF00860C24 +S3211FE0143C20BC00000A0D41F9FF008940421041F9FF00890410BC00DD41F9FF00A0 +S3211FE014588918421041F9FF00891C10BC002441F9FF00890810BC002041F9FF00C3 +S3211FE01474890810BC003041F9FF00890810BC004041F9FF00890810BC005041F9D4 +S3211FE01490FF00890810BC001041F9FF00891430BC020041F9FF00891010BC00036A +S3211FE014AC41F9FF00890010BC00B341F9FF00890010BC000741F9FF00896820BC43 +S3211FE014C80000000F41F9FF00898820BC0000000F41F9FF00896E30BC00F041F979 +S3211FE014E4FF00898E30BC00F041F9FF00893810BC000141F9FF00890810BC000593 +S3211FE0150041F9FF00076010BC003F4E7541F9FF00010420100800001C673241F9F7 +S3211FE0151CFF00860C20BC4444524141F9FF00860C20BC4D204F4B41F9FF00860CAD +S3211FE0153820BC2120202041F9FF00860C20BC00000A0D4E7543F9FF00000422BC97 +S3211FE01554000002AA43F9FF00002022BC0000001A43F9FF00002422BC0800001A18 +S3211FE0157043F9FF00002822BC1000001A43F9FF00002C22BC1800001A43F9FF003D +S3211FE0158C010822BC7362283043F9FF00010C22BC4677000020BCE10D000241F941 +S3211FE015A8FF00010020BC4001000041F9FF00010020BC048D000041F9FF00010420 +S3211FE015C420BCE10D000241F9FF00010420BCE10D000441F9FF00010420BCE10D26 +S3211FE015E0000441F9FF00010020BC008D000041F9FF00010420BC710D0F0060003C +S3211FE015FCFF1E51FC41F9FF00050020BCE000000041F9FF00050820BC00041180B3 +S3211FE0161841F9FF00050420BC007F000141F9FF00050C20BCFFF0000041F9FF00C5 +S3211FE01634051420BC0004418041F9FF00051020BC000F000141F9FF00051820BC6F +S3211FE01650F000000041F9FF00052020BC0004110041F9FF00051C20BC07FF0001FD +S3211FE0166C41F9FF00052420BCF800000041F9FF00052C20BC0004018041F9FF0023 +S3211FE01688052820BC03FF000141F9FF00053020BC4000000041F9FF00053820BC59 +S3211FE016A40000001841F9FF00053420BC3FFF000141F9FF00860C20BC46424353BB +S3211FE016C041F9FF00860C20BC204F4B2141F9FF00860C20BC00000A0D4E7551FCB9 +S3211FE016DC43F9FF000A0745F9FF000A2708910001089100020812000066FA08126A +S3211FE016F8000566F4616608D1000261600812000067FA615841F9E0700000B1FCA4 +S3211FE01714E08000006E6210187208E288650608910003600408D1000308D1000157 +S3211FE0173008910001538166E60812000567D4223C00000FA008D100014E71089145 +S3211FE0174C0001538166F2604241F9FF00090820102C3C00001B58600E41F9FF00B1 +S3211FE01768090820102C3C0000014D22109280D2866AF84E7541F9FF00860C20BC01 +S3211FE017844650474141F9FF00860C20BC204E4F54600C41F9FF00860C20BC4650C5 +S3211FE017A0474141F9FF00860C20BC204F4B2141F9FF00860C20BC00000A0D4E759D +S3211FE017BC2F082F062F012F0041F9FF00090820102C3C00001B5822109280D28650 +S3211FE017D86AF8201F221F2C1F205F4E75700B33C0F00004004E7141F960000000C6 +S3211FE017F44E7120BC000504004E7120BC000720004E7120BC000701224E7120BC0E +S3211FE01810000504004E7120BC000600004E7120BC000600004E7120BC000070124F +S3211FE0182C4E71203C0107000223C0F00004004E75203C003F003F23C0FF000C0014 +S3211FE01848203C0000200423C0FF000B0C203C1010000023C0FF000B3C203C0700FE +S3211FE01864002023C0FF000B84203C0000100081B9FF000B60203C803FFFFF424027 +S3211FE0188023C0FF000B70203CD00FFFFF424023C0FF000B7442B9FF000B78203CF5 +S3211FE0189C0309000023C0FF000B80203CFFFFFFFEC1B9FF000B6041F9FF00860CAC +S3211FE018B820BC5043492041F9FF00860C20BC4F4B212041F9FF00860C20BC00000E +S3211FE018D40A0D4E75203C8000880023C0FF000BF841F9D00000002210203C3310F5 +S3211FE018F03500B280671A41F9FF00860C20BC4E45432041F9FF00860C20BC4E4F0E +S3211FE0190C5420601C203C800088E423C0FF000BF810BC002041F9FF00860C20BC0A +S3211FE019284E454320203C000088E423C0FF000BF841F9FF00860C20BC4F4B212079 +S3211FE0194441F9FF00860C20BC00000A0D4E7551FC4FEFFFE848D740F841F9FF00FF +S3211FE019608F0410BC0034428378B07A7A7CA27E7B200352830C800000000A6E00DF +S3211FE0197C02D041F9FF008F20421041F9FF008F0842104DF9FF008F081CBC000A5E +S3211FE0199843F9FF008F10101141F9FF008F0C421041F9FF008F084210A34013C035 +S3211FE019B4FF008F201C84128561FFFFFFFDFE43F9FF008F0CBC1166A441F9FF00EE +S3211FE019D08F08B810669A10110280000000FD128041F9FF008F10421041F9FF0002 +S3211FE019EC8F0C0810000167FA10100280000000FD1080A54001F9FF008F0813C747 +S3211FE01A08FF008F1061FFFFFFFDAE43F9FF008F0C70A6B0116600FF5241F9FF0079 +S3211FE01A248F08B8106600FF4610110280000000FD128010100280000000EF108044 +S3211FE01A401039FF008F1041F9FF008F0C0810000167FA10100280000000FD108021 +S3211FE01A5CA74001F9FF008F081039FF008F1041F9FF008F0C0810000167FA12109B +S3211FE01A780281000000FD1081420241F9FF008F0842101239FF008F100C00004C95 +S3211FE01A946600FEDA13C2FF008F0813C2FF008F0C41F9FF008F0C0810000566FAC8 +S3211FE01AB013C4FF008F0813C5FF008F1061FFFFFFFCFE43F9FF008F0CBC116600D1 +S3211FE01ACCFEA441F9FF008F08B8106600FE9810110280000000FD1280700813C046 +S3211FE01AE8FF008F1041F9FF008F0C0810000167FA10100280000000FD108070BF93 +S3211FE01B0413C0FF008F1041F9FF008F0C0810000167FA10100280000000FD1080D2 +S3211FE01B2041F9FF008F08421041F9FF008F0C421041F9FF008F0C0810000566FA0B +S3211FE01B3C13C4FF008F0813C5FF008F1061FFFFFFFC7243F9FF008F0CBC116600D0 +S3211FE01B58FE1841F9FF008F08B8106600FE0C10110280000000FD1280700813C0D1 +S3211FE01B74FF008F1041F9FF008F0C0810000167FA10100280000000FD1080A54050 +S3211FE01B9001F9FF008F0813C7FF008F1061FFFFFFFC1E43F9FF008F0C70A6B01107 +S3211FE01BAC6600FDC241F9FF008F08B8106600FDB610110280000000FD12801010F0 +S3211FE01BC80280000000EF10801039FF008F1041F9FF008F0C0810000167FA1010A6 +S3211FE01BE40280000000FD1080A74001F9FF008F081039FF008F1041F9FF008F0C9F +S3211FE01C000810000167FA12100281000000FD108141F9FF008F0842101239FF00AA +S3211FE01C1C8F100C0000BF6600FD4C41F9FF00860C20BC4456492041F9FF00860C19 +S3211FE01C3820BC4F4B212041F9FF00860C20BC00000A0D602241F9FF008F08421072 +S3211FE01C5441F9FF00860C20BC4456492041F9FF00860C20BC4E4F542060C44CD7C6 +S3211FE01C7040F84FEF00184E754FEFFFEC48D700F841F9FF00860C20BC4143393727 +S3211FE01C8C41F9FF000A4D10BC00BC41F9FF008800421041F9FF008800421041F9BF +S3211FE01CA8FF00881430BC030041F9FF00884010BC0003223C0F00000023C1FF0071 +S3211FE01CC4886823C1FF008888303C00F033C0FF00886E33C0FF00888E4287762071 +S3211FE01CE078307A40AB46600000B213C3FF00880813C4FF00880813C5FF0088084C +S3211FE01CFC13C6FF008808223CE000000023C1FF00880C223C0200000023C1FF0067 +S3211FE01D18880CA540600A528041F9FF00880C42900C800000000D6DEE203CC00046 +S3211FE01D34000023C0FF00880C223C8200000023C1FF00880CA540600A528041F966 +S3211FE01D50FF00880C42900C800000000D6DEE61FFFFFFFA5C41F9FF00880C221066 +S3211FE01D6C2001028080000FFF0C8080000800661C20104A9066160281E0000FFF98 +S3211FE01D880C81E000080066080C8002000000671852870C87000186A06D00FF4803 +S3211FE01DA441F9FF00860C20BC206E6F7441F9FF00880C20BCE000000041F9FF0044 +S3211FE01DC0880C20BC1600000041F9FF00880C20BC06060000A740600A528041F96A +S3211FE01DDCFF00880C42900C800000000D6DEE41F9FF00880C20BCE000000041F9CA +S3211FE01DF8FF00880C20BC10000000A540600A528041F9FF00880C42900C800000FF +S3211FE01E14000D6DEE41F9FF00880C20BCE000000041F9FF00880C20BC1200000001 +S3211FE01E30A540600A528041F9FF00880C42900C800000000D6DEE41F9FF00880C10 +S3211FE01E4C20BCE000000041F9FF00880C20BC0600000041F9FF00880C4290A74084 +S3211FE01E68600A528041F9FF00880C42900C800000000D6DEE41F9FF008888201011 +S3211FE01E8408C0001D208041F9FF00880C429041F9FF00860C20BC204F4B2141F95D +S3211FE01EA0FF00860C20BC00000A0D4CD700F84FEF00144E75203C000C81004E7BBB +S3211FE01EBC00024E7161FFFFFFF41E61FFFFFFF3DC61FFFFFFF73261FFFFFFF63894 +S3211FE01ED81039FF000A2C08000006670C61FFFFFFF95661FFFFFFF45C61FFFFFF31 +S3211FE01EF4F7EA61FFFFFFF8EC1039FF000A2C08000006671261FFFFFFFA4A61FFA3 +S3211FE01F10FFFFF9C861FFFFFFFD6241F91FE0005CB1FCE000000065FFFFFFE1349B +S3211FE01F2C247C1FE00000264A49FAF36E24D824D824D824D8B1CC6DF44ED34E752F +S3090000000000000000F6 +S7051FE00000FB diff --git a/BaS_codewarrior/firebeeV1/bin/DDRAM.elf.xMAP b/BaS_codewarrior/firebeeV1/bin/DDRAM.elf.xMAP new file mode 100644 index 0000000..a677e37 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/bin/DDRAM.elf.xMAP @@ -0,0 +1,80 @@ + + +#>1FE00000 ___Bas_base (linker command file) +#>E0000000 ___BOOT_FLASH (linker command file) +#>00800000 ___BOOT_FLASH_SIZE (linker command file) +#>00000000 ___SDRAM (linker command file) +#>20000000 ___SDRAM_SIZE (linker command file) +#>FF000000 ___MBAR (linker command file) +#>FF040000 ___MMUBAR (linker command file) +#>FF100000 ___RAMBAR0 (linker command file) +#>00001000 ___RAMBAR0_SIZE (linker command file) +#>FF100FFC ___SUP_SP (linker command file) +#>FF101000 ___RAMBAR1 (linker command file) +#>00001000 ___RAMBAR1_SIZE (linker command file) +#>FF100800 _rt_mod (linker command file) +#>FF100804 _rt_ssp (linker command file) +#>FF100808 _rt_usp (linker command file) +#>FF10080C _rt_vbr (linker command file) +#>FF100810 _rt_cacr (linker command file) +#>FF100814 _rt_asid (linker command file) +#>FF100818 _rt_acr0 (linker command file) +#>FF10081C _rt_acr1 (linker command file) +#>FF100820 _rt_acr2 (linker command file) +#>FF100824 _rt_acr3 (linker command file) +#>FF100828 _rt_mmubar (linker command file) +#>FF100844 _rt_mbar (linker command file) +#>FF100848 _d0_save (linker command file) +#>FF10084C _a7_save (linker command file) +#>FF010000 ___SYS_SRAM (linker command file) +#>00008000 ___SYS_SRAM_SIZE (linker command file) + +# .userram + +# .code + +# .text + 1FE00000 0000005C .text _startup (startcf.c) + 1FE0005C 00000208 .text BaS (BaS.c) + 1FE00264 000001CC .text .text (mmu.s) + 1FE00264 00000000 .text mmu_init (mmu.s) + 1FE00264 000001CC .text @DummyFn3 (mmu.s) + 1FE003F8 00000000 .text mmutr_miss (mmu.s) + 1FE00430 0000072E .text @DummyFn1 (exceptions.s) + 1FE00430 00000000 .text vec_init (exceptions.s) + 1FE00430 0000072E .text .text (exceptions.s) + 1FE00B60 00000000 .text privileg_violation (supervisor.s) + 1FE00B60 000005BC .text .text (supervisor.s) + 1FE0111C 00000188 .text .text (illegal_instruction.s) + 1FE0111C 00000188 .text @DummyFn2 (illegal_instruction.s) + 1FE012A2 00000000 .text illegal_instruction (illegal_instruction.s) + 1FE012A2 00000000 .text illegal_table_make (illegal_instruction.s) + 1FE012A4 0000003C .text init_slt (sysinit.c) + 1FE012E0 00000068 .text init_gpio (sysinit.c) + 1FE01348 000001C4 .text init_seriel (sysinit.c) + 1FE0150C 000000F4 .text init_ddram (sysinit.c) + 1FE01600 000000DC .text init_fbcs (sysinit.c) + 1FE016DC 000000E0 .text init_fpga (sysinit.c) + 1FE017BC 00000028 .text warte_200us (sysinit.c) + 1FE017E4 00000058 .text init_video_ddr (sysinit.c) + 1FE0183C 0000009C .text init_PCI (sysinit.c) + 1FE018D8 0000007C .text test_upd720101 (sysinit.c) + 1FE01954 00000324 .text vdi_on (sysinit.c) + 1FE01C78 0000023C .text init_ac97 (sysinit.c) + 1FE01EB4 00000094 .text __initialize_hardware (sysinit.c) +#>1FE01F48 ___ROM_AT (linker command file) +#>1FE01F48 ___DATA_ROM (linker command file) + +# .data + 00000000 00000004 .data .data (exceptions.s) + + +# Memory map: + v_addr p_addr size name + 00000000 00000000 00000000 .userram userram + 00000000 00000000 00000004 .data userram + 1FE00000 1FE00000 00000000 .code code + 1FE00000 1FE00000 00001F48 .text code + +# Link start time: Fri Aug 13 14:25:01 2010 +# Link end time: Fri Aug 13 14:25:01 2010 diff --git a/BaS_codewarrior/firebeeV1/bin/FLASH.elf b/BaS_codewarrior/firebeeV1/bin/FLASH.elf new file mode 100644 index 0000000000000000000000000000000000000000..6dece81e82812fbcbecaa571985c914d0790038a GIT binary patch literal 24264 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 literal 0 HcmV?d00001 diff --git a/BaS_codewarrior/firebeeV1/bin/FLASH.elf.S19 b/BaS_codewarrior/firebeeV1/bin/FLASH.elf.S19 new file mode 100644 index 0000000..27a561c --- /dev/null +++ b/BaS_codewarrior/firebeeV1/bin/FLASH.elf.S19 @@ -0,0 +1,362 @@ +S0030000FC +S321E000000060064EF9E000000846FC2700203CFF0000004E7B0C0F23C0FF10084483 +S321E000001C203CFF0400014E7B0008428023C0FF040000203CFF1000074E7B0C04BE +S321E0000038203CFF1010014E7B0C054FF9FF100FFC203C000C81004E7B00024E719B +S321E000005460FF00000D0E4E7541F9FF00090020BCFFFFFFFF41F9FF00090410BC41 +S321E0000070000541F9FF00860C20BC534C542041F9FF00860C20BC4F4B212041F913 +S321E000008CFF00860C20BC00000A0D4E7541F9FF000A4310BC00FF41F9FF000A4453 +S321E00000A830BCF3CF41F9FF000A4830BC023F41F9FF000A4A30BC023F41F9FF00FD +S321E00000C40A4C10BC000C41F9FF000A4E10BC00FC41F9FF000A4F10BC00FC41F91F +S321E00000E0FF000A5030BC1FFF41F9FF000A5210BC002D41F9FF000A1710BC001EE9 +S321E00000FC4E7551FC41F9FF008640421041F9FF00860410BC00DD41F9FF0086185E +S321E0000118421041F9FF00861C10BC002441F9FF00860810BC002041F9FF0086084E +S321E000013410BC003041F9FF00860810BC004041F9FF00860810BC005041F9FF00DE +S321E0000150860810BC001041F9FF00861430BC870041F9FF00861010BC000341F925 +S321E000016CFF00860010BC00B341F9FF00860010BC000741F9FF00866820BC0000F8 +S321E0000188000F41F9FF00868820BC0000000F41F9FF00866E30BC00F041F9FF00F2 +S321E00001A4868E30BC00F041F9FF00863810BC000141F9FF00860810BC000541F9D3 +S321E00001C0FF008940421041F9FF00890410BC00DD41F9FF008918421041F9FF004F +S321E00001DC891C10BC002441F9FF00890810BC002041F9FF00890810BC003041F9D6 +S321E00001F8FF00890810BC004041F9FF00890810BC005041F9FF00890810BC0010DD +S321E000021441F9FF00891430BC020041F9FF00891010BC000341F9FF00890010BCF5 +S321E000023000B341F9FF00890010BC000741F9FF00896820BC0000000F41F9FF0036 +S321E000024C898820BC0000000F41F9FF00896E30BC00F041F9FF00898E30BC00F07C +S321E000026841F9FF00893810BC000141F9FF00890810BC000541F9FF00076010BCC6 +S321E0000284003F41F9FF00860C20BC00000A0D41F9FF00860C20BC5345524941F967 +S321E00002A0FF00860C20BC414C204F41F9FF00860C20BC4B21202041F9FF00860CD5 +S321E00002BC20BC00000A0D4E7541F9FF00860C20BC444452412039FF000104080063 +S321E00002D8001C660000B641F9FF00000420BC000002AA41F9FF00002020BC0000F2 +S321E00002F4001A41F9FF00002420BC0800001A41F9FF00002820BC1000001A41F9F2 +S321E0000310FF00002C20BC1800001A41F9FF00010820BC7362283041F9FF00010C21 +S321E000032C20BC4677000041F9FF00010420BCE10D000241F9FF00010020BC4001D5 +S321E0000348000041F9FF00010020BC048D000041F9FF00010420BCE10D000241F9C8 +S321E0000364FF00010420BCE10D000441F9FF00010420BCE10D000441F9FF0001007F +S321E000038020BC008D000041F9FF00010420BC710D0F0041F9FF00860C20BC4D2057 +S321E000039C4F4B41F9FF00860C20BC2120202041F9FF00860C20BC00000A0D4E751C +S321E00003B841F9FF00860C20BC4642435341F9FF00050020BCE000000041F9FF004B +S321E00003D4050820BC0004118041F9FF00050420BC007F000141F9FF00050C20BCE5 +S321E00003F0FFF0000041F9FF00051420BC0004218041F9FF00051020BC000F00010F +S321E000040C41F9FF00051820BCF000000041F9FF00052020BC0004210041F9FF0034 +S321E0000428051C20BC07FF000141F9FF00052420BCF800000041F9FF00052C20BC52 +S321E00004440004018041F9FF00052820BC03FF000141F9FF00053020BC4000000062 +S321E000046041F9FF00053820BC0000001841F9FF00053420BC3FFF000141F9FF006A +S321E000047C860C20BC204F4B2141F9FF00860C20BC00000A0D4E7551FC41F9FF002E +S321E0000498860C20BC4650474143F9FF000A0745F9FF000A270891000108910002E7 +S321E00004B40812000066FA0812000566F461FF000009AA08D1000261FF000009A05C +S321E00004D00812000067FA61FF0000099441F9E0700000B1FCE08000006E5610182F +S321E00004EC7208E288650608910003600408D1000308D1000108910001538166E64F +S321E00005080812000567D4223C00000FA008D100014E7108910001538166F26028A3 +S321E000052447F9FF00090820132C3C000186A04A516A0822139280D2866AF44E75F6 +S321E000054041F9FF00860C20BC204E4F5441F9FF00860C20BC204F4B2141F9FF0046 +S321E000055C860C20BC00000A0D41F9FF00860C20BC504C4C2041F9F000060043F9FD +S321E0000578F000080061A6317C001B0048619E317C000100086196317C000C00000D +S321E0000594618E317C000C00406186317C000101146100FF7E317C000101186100CD +S321E00005B0FF74317C0001011C6100FF6A317C000100106100FF60317C00010050C5 +S321E00005CC6100FF56317C000101446100FF4C317C000100446100FF42317C00A5F2 +S321E00005E800046100FF38421141F9FF00860C20BC5345542141F9FF00860C20BCC7 +S321E000060400000A0D4E7551FC700B33C0F00004004E7141F9600000004E7120BC77 +S321E0000620000504004E7120BC000720004E7120BC000701224E7120BC00050400A4 +S321E000063C4E7120BC000600004E7120BC000600004E7120BC000070124E71203C42 +S321E00006580107000223C0F00004004E7541F9FF00860C20BC50434920203C003FBE +S321E0000674003F23C0FF000C00203C0000200423C0FF000B0C203C1010000023C07F +S321E0000690FF000B3C203C0700002023C0FF000B84203C0000100081B9FF000B601E +S321E00006AC203C803FFFFF424023C0FF000B70203CD00FFFFF424023C0FF000B7438 +S321E00006C842B9FF000B78203C0309000023C0FF000B80203CFFFFFFFEC1B9FF000E +S321E00006E40B6041F9FF00860C20BC4F4B212041F9FF00860C20BC00000A0D4E75A6 +S321E000070041F9FF00860C20BC4E454320203C8000880023C0FF000BF841F9D00007 +S321E000071C00002210203C33103500B280670E41F9FF00860C20BC4E4F5420601006 +S321E0000738203C800088E423C0FF000BF810BC0020203C000088E423C0FF000BF8F9 +S321E000075441F9FF00860C20BC4F4B212041F9FF00860C20BC00000A0D4E7551FC53 +S321E00007702F0741F9FF00860C20BC4456492041F9FF008F0410BC003442872007EB +S321E000078C2E0052870C800000000A6E00035241F9FF008F20421041F9FF008F0801 +S321E00007A8421041F9FF008F0810BC000A1239FF008F1041F9FF008F0C421041F90E +S321E00007C4FF008F08421041F9FF008F2010BC000141F9FF008F0810BC00B041F910 +S321E00007E0FF008F1010BC007A61FF0000064A70A241F9FF008F0CB010669070B0C7 +S321E00007FC41F9FF008F08B010668441F9FF008F0C10100280000000FD108041F944 +S321E0000818FF008F10421041F9FF008F0C0810000167F441F9FF008F0C1010028030 +S321E0000834000000FD1080A54001F9FF008F0841F9FF008F1010BC007B61FF000041 +S321E000085005E670A641F9FF008F0CB0106600FF2C70B041F9FF008F08B01066006A +S321E000086CFF1E41F9FF008F0C10100280000000FD108041F9FF008F0810100280F8 +S321E0000888000000EF10801039FF008F1041F9FF008F0C0810000167F441F9FF0087 +S321E00008A48F0C10100280000000FD1080A74001F9FF008F0861FF0000057A1239E7 +S321E00008C0FF008F1041F9FF008F0C0810000167F441F9FF008F0C101002800000DA +S321E00008DC00FD108041F9FF008F0842101039FF008F100C01004C6600FE9641F9F7 +S321E00008F8FF008F08421041F9FF008F0C421041F9FF008F0C0810000566F441F96B +S321E0000914FF008F0810BC00B041F9FF008F1010BC007A61FF0000052870A241F9D8 +S321E0000930FF008F0CB0106600FE5270B041F9FF008F08B0106600FE4441F9FF0024 +S321E000094C8F0C10100280000000FD108041F9FF008F1010BC000841F9FF008F0C5F +S321E00009680810000167F441F9FF008F0C10100280000000FD108041F9FF008F103E +S321E000098410BC00BF41F9FF008F0C0810000167F441F9FF008F0C10100280000028 +S321E00009A000FD108041F9FF008F08421041F9FF008F0C421041F9FF008F0C081094 +S321E00009BC000566F441F9FF008F0810BC00B041F9FF008F1010BC007A61FF000010 +S321E00009D8047A70A241F9FF008F0CB0106600FDA470B041F9FF008F08B0106600DC +S321E00009F4FD9641F9FF008F0C10100280000000FD108041F9FF008F1010BC0008BF +S321E0000A1041F9FF008F0C0810000167F441F9FF008F0C10100280000000FD108099 +S321E0000A2CA54001F9FF008F0841F9FF008F1010BC007B61FF0000041070A641F970 +S321E0000A48FF008F0CB0106600FD3A70B041F9FF008F08B0106600FD2C41F9FF003D +S321E0000A648F0C10100280000000FD108041F9FF008F0810100280000000EF1080D5 +S321E0000A801039FF008F1041F9FF008F0C0810000167F441F9FF008F0C10100280CF +S321E0000A9C000000FD1080A74001F9FF008F0861FF000003A41239FF008F1041F92A +S321E0000AB8FF008F0C0810000167F441F9FF008F0C10100280000000FD108041F9F1 +S321E0000AD4FF008F0842101039FF008F100C0100BF6600FCA4601441F9FF008F083B +S321E0000AF0421041F9FF00860C20BC4E4F542041F9FF00860C20BC4F4B212041F93E +S321E0000B0CFF00860C20BC00000A0D2E1F4E7551FC2F0741F9FF00860C20BC4143A5 +S321E0000B28393741F9FF000A4D10BC00BC41F9FF008800421041F9FF00880042101D +S321E0000B4441F9FF00881430BC030041F9FF00884010BC000341F9FF00886820BC16 +S321E0000B600F00000041F9FF00888820BC0F00000041F9FF00886E30BC00F041F90B +S321E0000B7CFF00888E30BC00F04287600000C841F9FF00880810BC002041F9FF00A7 +S321E0000B98880810BC003041F9FF00880810BC004041F9FF00880810BC000541F926 +S321E0000BB4FF00880C20BCE000000041F9FF00880C20BC02000000A540600A41F9BC +S321E0000BD0FF00880C429052800C800000000D6DEE41F9FF00880C20BCC00000008F +S321E0000BEC41F9FF00880C20BC82000000A540600A41F9FF00880C429052800C8090 +S321E0000C080000000D6DEE61FF000002402239FF00880C2001028080000FFF0C8035 +S321E0000C248000080066242039FF00880C4AB9FF00880C66160281E0000FFF0C81C0 +S321E0000C40E000080066080C8002000000671852870C87000186A06D00FF3241F9E4 +S321E0000C5CFF00860C20BC204E4F5441F9FF00880C20BCE000000041F9FF00880CC2 +S321E0000C7820BC1600000041F9FF00880C20BC06060000A740600A41F9FF00880CB5 +S321E0000C94429052800C800000000D6DEE41F9FF00880C20BCE000000041F9FF0004 +S321E0000CB0880C20BC10000000A540600A41F9FF00880C429052800C800000000D69 +S321E0000CCC6DEE41F9FF00880C20BCE000000041F9FF00880C20BC12000000A540A2 +S321E0000CE8600A41F9FF00880C429052800C800000000D6DEE41F9FF00880C20BC92 +S321E0000D04E000000041F9FF00880C20BC0600000041F9FF00880C4290A740600A6E +S321E0000D2041F9FF00880C429052800C800000000D6DEE41F9FF008888201008C02B +S321E0000D3C001D208041F9FF00880C429041F9FF00860C20BC204F4B2141F9FF009E +S321E0000D58860C20BC00000A0D2E1F4E75203C000C812023C0FF1008104E7B000226 +S321E0000D744E7161FFFFFFF32061FFFFFFF38261FFFFFFF2D861FFFFFFF62E61FF70 +S321E0000D90FFFFF5341039FF000A2C08000006670661FFFFFFF8C261FFFFFFF6ECE9 +S321E0000DAC61FFFFFFF85E61FFFFFFF9BC1039FF000A2C08000006670661FFFFFF27 +S321E0000DC8F93A61FFFFFFFD5041FA002843F9E0000E8893C8247C1FE00000264ACC +S321E0000DE4D7C949F9E000274824D824D824D824D8B1CC6DF44ED34E752F002039A2 +S321E0000E00FF000908048000142440B0B9FF00090865F8201F4E7551FC2F00203937 +S321E0000E1CFF0009080480000203A0B0B9FF00090865F8201F4E7551FC2F002039EE +S321E0000E38FF000908048000003390B0B9FF00090865F8201F4E7551FC2F002039B4 +S321E0000E54FF0009080480000019C8B0B9FF00090865F8201F4E7551FC2F0020397A +S321E0000E70FF000908048000000528B0B9FF00090865F8201F4E7551FC61FF00003A +S321E0000E8C02C24A806F0661FF000002581039FF000A2C08000006675E4DF9FF0011 +S321E0000EA8860C47F9FF00890C49F9FF00890C4BF9FF00895826BC4143504661FF8C +S321E0000EC4FFFFFF382CBC5049432010141C8012141C8114141C822CBC00000A0DCB +S321E0000EE016BC000141F900E0000043F9E060000045F9E07000001039FF000A2C9B +S321E0000EFC08000006661241F900E0000043F9E040000045F9E050000020D9B3CA14 +S321E0000F186DFA1039FF000A2C08000006670000C641F889614281744010140C00ED +S321E0000F340081661C10141081114000025281B40166F210BC003F102800025280B9 +S321E0000F501140000261FF0000069661FF0000084061FF000017E242B9F00100045F +S321E0000F6C41F9FF000F0030BCAAA8203C0001010123C0FF000800703F13C0FF0033 +S321E0000F88077E103C00FE13C0F00100044E7141F9FF000F0510BC00FE4E7141F901 +S321E0000FA4FF000F0C10BC00FF4E7141F9FF00070C20BCFFFFFF0041F9FF0007083A +S321E0000FC020BCBFFFFFFE203C0000000123C0FF0400004E714E7141F88802117C87 +S321E0000FDC000EFFFE10BC008061FFFFFFFE32421041F9F000041020FC032002BAA3 +S321E0000FF820FC020C020A20FC0190015D20FC020C020A41E8FFE020BC0107000292 +S321E000101441F8040043F808004298429842984298B3C86EF4704811C08007203CA9 +S321E000103000E0000021C0042E203C752019F321C00420203C237698AA21C0043A73 +S321E000104C203C5555AAAA21C0051A203C1FE0000021C005A4203C1357BD1321C0EC +S321E000106805A81039FF000A2C08000007670446FC07004EF900E000304E7551FC31 +S321E00010842F002039FF000908048000142440B0B9FF00090865F8201F4E7551FCB1 +S321E00010A02144003408280007002C67F82A280038A168002C4E7551FC183C00FFD1 +S321E00010BC61FFFFFFFFE20C0500FF67F04E7551FC7612183C00FF61FFFFFFFFE460 +S321E00010D80C0500FE66F461FFFFFFFFC014C5538366F44E75283C082000FF41F9FF +S321E00010F4FF008A00203C385588972140000C183C00FF61FFFFFFFF98183C004020 +S321E000111061FFFFFFFF8E183C000061FFFFFFFF84183C000061FFFFFFFF7A183C3E +S321E000112C000061FFFFFFFF70183C000061FFFFFFFF66183C009561FFFFFFFF5C3B +S321E00011484E7551FC598F43F9FF00860C22BC53442D4322BC617264202A7A045AC4 +S321E0001164203C1FFFFFFF23C0FF000A5041F9FF008A0020BC802D3C00203C385564 +S321E000118088972140000C283C082000FF21C40034A168002C20BCC00D3C0061FFC3 +S321E000119CFFFFFEE820BC802D3C0061FFFFFFFEF861FFFFFFFEF261FFFFFFFEECBE +S321E00011B861FFFFFFFEE661FFFFFFFEE061FFFFFFFEDA61FFFFFFFED461FFFFFFF3 +S321E00011D4FECE61FFFFFFFEC861FFFFFFFEC220BC800D3C0061FFFFFFFEB661FFF4 +S321E00011F0FFFFFEB020BC802D3C0061FFFFFFFEA461FFFFFFFE9E61FFFFFFFE7CBA +S321E000120C2C3C00000064263C0000000A61FFFFFFFED22E3C0000000A183C00FFB3 +S321E000122861FFFFFFFE760C050001670C538766F053866700037260D8183C00FFFD +S321E000124461FFFFFFFE5A183C004861FFFFFFFE50183C000061FFFFFFFE46183C60 +S321E0001260000061FFFFFFFE3C183C000161FFFFFFFE32183C00AA61FFFFFFFE288F +S321E000127C183C008761FFFFFFFE1E61FFFFFFFE300C05000567300C05000166A8C2 +S321E000129861FFFFFFFE0661FFFFFFFE0061FFFFFFFDFA61FFFFFFFDF40C0500AA37 +S321E00012B46600013622BC5344484312BC0020183C00FF61FFFFFFFDD8183C007A59 +S321E00012D061FFFFFFFDCE183C000061FFFFFFFDC4183C000061FFFFFFFDBA183CC3 +S321E00012EC000061FFFFFFFDB0183C000061FFFFFFFDA6183C000161FFFFFFFD9C54 +S321E000130861FFFFFFFDAE2C3C566572310C05000567A80C05000166A261FFFFFF77 +S321E0001324FD7E61FFFFFFFD7861FFFFFFFD7261FFFFFFFD6C2C3C00004E20183CBB +S321E000134000FF61FFFFFFFD5C183C007761FFFFFFFD52183C000061FFFFFFFD4886 +S321E000135C183C000061FFFFFFFD3E183C000061FFFFFFFD34183C000061FFFFFF0D +S321E0001378FD2A183C009561FFFFFFFD2061FFFFFFFD320C05000567AE183C00FFDD +S321E000139461FFFFFFFD0A183C006961FFFFFFFD00183C004061FFFFFFFCF6183CA2 +S321E00013B0000061FFFFFFFCEC183C000061FFFFFFFCE2183C000061FFFFFFFCD8DF +S321E00013CC183C009561FFFFFFFCCE61FFFFFFFCE04A0567160C05000567AA538608 +S321E00013E86600FF5453836600FE28600001A6203C385511202140000C183C00FF07 +S321E000140461FFFFFFFC9A183C004A61FFFFFFFC90183C000061FFFFFFFC86183CE2 +S321E0001420000061FFFFFFFC7C183C000061FFFFFFFC72183C000061FFFFFFFC68BE +S321E000143C183C009561FFFFFFFC5E244D61FFFFFFFC8245ED00017E07129A538782 +S321E000145866FA12BC0020183C00FF61FFFFFFFC3C183C004961FFFFFFFC32183CDE +S321E0001474000061FFFFFFFC28183C000061FFFFFFFC1E183C000061FFFFFFFC1466 +S321E0001490183C000061FFFFFFFC0A183C000161FFFFFFFC00244D61FFFFFFFC2404 +S321E00014AC7195EC886624222D0006700EE0A9028100000FFF528171ED0009EE889D +S321E00014C802800000000774089480E4A9600673ED0008528148412601EC8B2E8303 +S321E00014E4E389640A22BC333247426000009CE389640A22BC313647426000008ECE +S321E0001500E389640A22BC2038474260000080E389640822BC203447426072E3899F +S321E000151C640822BC203247426066E389640822BC20314742605AE389640C12BCEE +S321E0001538003522BC31324D42604AE389640C12BC003222BC35364D42603AE38948 +S321E0001554640C12BC003122BC32384D42602AE389640822BC36344D42601EE3892C +S321E0001570640822BC33324D426012E389640822BC31364D42600622BC3C394D42D5 +S321E000158C22BC204F4B2122BC00000A0D604222BC4572726F22BC0000722122BC48 +S321E00015A800000A0D603622BC6E6F6E2122BC00000A0D60240000000000000000D1 +S321E00015C40000000000000000000000000000000000000000000000002017600688 +S321E00015E070FE6002A140588F4E7551FC42804E7B000323C0FF1008144E7B0002FA +S321E00015FC23C0FF1008104E71203CC03FC0404E7B000423C0FF100818203C601F0F +S321E0001618C0004E7B000523C0FF10081C203CE007C4004E7B000623C0FF1008203C +S321E000163442804E7B000723C0FF100824203CFF0400014E7B000823C0FF100828B1 +S321E00016504E71203C0000008023C0FF0400044E717003725E7403761323C0FF042B +S321E000166C001423C1FF04001823C2FF04000423C3FF040004203C00D0001B223CEB +S321E000168860D0001E23C0FF04001423C1FF04001823C2FF040004203C00D00003FE +S321E00016A423C3FF040004203C0000200023C0FF10083842B9FF10083C203C00E01F +S321E00016C00003223C00E0005E23C0FF04001423C1FF04001823C2FF04000423C3BE +S321E00016DCFF040004203C00F00003223CFFF0009E23C0FF04001423C1FF040018D2 +S321E00016F823C2FF04000423C3FF040004203C1FE00003223C1FE0005E23C0FF0418 +S321E0001714001423C1FF04001823C2FF04000423C3FF040004203C1FF00003223C1B +S321E00017301FF0005E23C0FF04001423C1FF04001823C2FF04000423C3FF04000478 +S321E000174C203CA10CA12023C0FF1008104E7B00024E714E7561000F900280FFF009 +S321E0001768000000800000000323C0FF0400140280FFF0000000800000005C23C0D2 +S321E0001784FF040018700323C0FF040004701323C0FF040004201F4E73A179FF1055 +S321E00017A0080042B9FF10080442B9FF10080842B9FF10080C203CFF1000004E7BBD +S321E00017BC080120402448203C0000010043FA00EE24C9538066FA20BCFF100FFCB8 +S321E00017D843FA01922149000443FA01A4214900081039FF000A2C08000007670089 +S321E00017F4007A43FA0F4C2149000C43FA0F442149001043FA01E22149001443FA86 +S321E000181009602149002043FA02242149002843FA02262149002C43FA0228214922 +S321E000182C003843FA022A214900C043FA0222214900C443FA021A214900C843FA98 +S321E00018480212214900CC43FA020A214900D043FA0202214900D443FA01FA2149B0 +S321E000186400D843FA01F2214900DC43FA01F42149010443FA02782149010843FA2C +S321E000188002FC2149010C43FA03802149011043FA04042149011443FA04882149BF +S321E000189C011843FA07102149011C43FA073E2149018043FA079C214901F84E75E3 +S321E00018B846FC2700518F48D720011039FF000A2C080000076600002C302F00081F +S321E00018D40280000003FCD0B9FF10080C2A4020152A6F00042F400004302F000ACD +S321E00018F008C0000D46C0201F4E754E6D4A39FF1008006600003CA179FF100800F1 +S321E000190C23CDFF1008082A79FF1008042B2F000C202F00082B0048404E65028067 +S321E0001928000003FCD0B9FF10080C2A402F55000C4CD72001508F4E732B2F000CCE +S321E0001944202F000808C0000D2B0048404E650280000003FCD0B9FF10080C2A4078 +S321E00019602F55000C4CD72001508F4E7346FC2700203C31415926B0B900000426C8 +S321E000197C6700FF3A4EF9E000000046FC27002F00302F0004028000000C030C808A +S321E000199800000401670000240C80000004026700001A0C8000000802670000109D +S321E00019B40C8000000C0267000006600000242039FF0400080800000166000016BD +S321E00019D02039FF0400100C801FE000006C0000066000FD7E201F6000FED046FC22 +S321E00019EC27002F082F00206F000C301808000007670000045488C0B90000003F7B +S321E0001A080C4000086F00002454880C400039660000085488600000140C40003C4E +S321E0001A246600000C080000076700000454882F48000C201F205F4E7346FC27008D +S321E0001A404AC84E714E7146FC27004AC84E714E7146FC27004AC84E714E7146FCE0 +S321E0001A5C27004AC84E714E7146FC2700518F48D720014BF9FF000F0C1ABC000212 +S321E0001A781039FF000A2C08000007660000144CD72001508F2F390000006446FC34 +S321E0001A9421004E754E6D4A39FF10080066000020A179FF10080023CDFF10080851 +S321E0001AB02A79FF1008042B2F000C2B2F0008600000102B2F000C2B2F000808ED81 +S321E0001ACC000500024E654BF900000064DBF9FF10080C2F55000C1F7C0001000A89 +S321E0001AE84CD72001508F4E7346FC2700518F48D720014BF9FF000F0C1ABC000457 +S321E0001B041039FF000A2C08000007660000144CD72001508F2F390000006846FCA3 +S321E0001B2022004E754E6D4A39FF10080066000020A179FF10080023CDFF100808C3 +S321E0001B3C2A79FF1008042B2F000C2B2F0008600000102B2F000C2B2F000808EDF4 +S321E0001B58000500024E654BF900000068DBF9FF10080C2F55000C1F7C0002000AF7 +S321E0001B744CD72001508F4E7346FC2700518F48D720014BF9FF000F0C1ABC0008C6 +S321E0001B901039FF000A2C08000007660000144CD72001508F2F390000006C46FC13 +S321E0001BAC23004E754E6D4A39FF10080066000020A179FF10080023CDFF10080836 +S321E0001BC82A79FF1008042B2F000C2B2F0008600000102B2F000C2B2F000808ED68 +S321E0001BE4000500024E654BF90000006CDBF9FF10080C2F55000C1F7C0003000A66 +S321E0001C004CD72001508F4E7346FC2700518F48D720014BF9FF000F0C1ABC001031 +S321E0001C1C1039FF000A2C08000007660000144CD72001508F2F390000007046FC82 +S321E0001C3824004E754E6D4A39FF10080066000020A179FF10080023CDFF100808A8 +S321E0001C542A79FF1008042B2F000C2B2F0008600000102B2F000C2B2F000808EDDB +S321E0001C70000500024E654BF900000070DBF9FF10080C2F55000C1F7C0004000AD4 +S321E0001C8C4CD72001508F4E7346FC2700518F48D720014BF9FF000F0C1ABC002095 +S321E0001CA81039FF000A2C08000007660000144CD72001508F2F390000007446FCF2 +S321E0001CC425004E754E6D4A39FF10080066000020A179FF10080023CDFF1008081B +S321E0001CE02A79FF1008042B2F000C2B2F0008600000102B2F000C2B2F000808ED4F +S321E0001CFC000500024E654BF900000074DBF9FF10080C2F55000C1F7C0005000A43 +S321E0001D184CD72001508F4E7346FC2700518F48D720014BF9FF000F0C1ABC0040E8 +S321E0001D342039FF10083C670000E00480700000004BF9FF000908B0956F0000CEF0 +S321E0001D504FEFFFE448D7031F428361000996200323C0FF040010283C00000106E6 +S321E0001D6C23C4FF0400044E712839FF0400044244484423C4FF04001079FC010ED0 +S321E0001D8823C4FF0400044E712839FF040014E48C0C44000666000054068000002E +S321E0001DA4000322036700000C06810000005C6000000806810000001E75FC010B35 +S321E0001DC023C0FF04001423C1FF04001823C2FF0400044E712043D1FC60000000ED +S321E0001DDC2243283C0001000022D822D822D822D8538466F44E71068300100000CA +S321E0001DF80C8300D000006D00FF5E203C0000200023C0FF10083842B9FF10083CC4 +S321E0001E144CD7031F4FEF001C4BF9FFFFFA0B08ED0007FFFC08150007670000065E +S321E0001E30610000DA4A15660000124A2D00026600000A4CD72001508F4E734BF98D +S321E0001E4CFF000A07089500044BFA00B2529520150280000000806600000C4BF918 +S321E0001E68FF000A0708D500041039FF000A2C08000007660000202A79F0020000DF +S321E0001E84DBF9FF10080C20152A6F00042F400004201F46FC26004E754E6D4A3978 +S321E0001EA0FF1008006600003CA179FF10080023CDFF1008082A79FF1008042B2F2F +S321E0001EBC000C2B2F00084E652A79F0020000DBF9FF10080C2F55000C4CD72001A3 +S321E0001ED8508F1F7C000600024E732B2F000C2B2F000808ED000500024E652A79AB +S321E0001EF4F0020000DBF9FF10080C2F55000C4CD720014E75000000002F092F0104 +S321E0001F1043F9FF00860C22BC444D412022BC494E54214BF9F0020110226DFFF47F +S321E0001F2C202DFFF86F000058082D0000FFF0660000264A2DFFFC6A00003E22D5E7 +S321E0001F4822D522D522D5722E13C1FF00860C0480000000106AE0600000224A2DD6 +S321E0001F64FFFC6A00001A2A992A992A992A99722E13C1FF00860C04800000001057 +S321E0001F806AE02B49FFF42B40FFF84A2DFFFC6B984BF9FFFFFA0B08AD00070004D0 +S321E0001F9C08950007323C0D0A33C1FF00860C221F225F4E754FEFFFF448D70101BE +S321E0001FB82079FF1000082F480008302F000C02800000F0000080000000083F4014 +S321E0001FD4000C41F9FF000F0C10BC0080201F205F4E7546FC27004FEFFFEC48D72D +S321E0001FF0090747F9FF00890C12130C0100026600004241F9FF00860C20BC5049EF +S321E000200C432020BC494E542020BC5254432120BC00000D0A41F9FFFF896147F94D +S321E0002028FF00890C4281744016BC008210811028000216805281B40166F24CD7F3 +S321E000204409074FEF00144E7346FC27004FEFFFE448D7031F71B9FFFF82010C40B5 +S321E000206000026D0000EE0C4000D06D00001041F9FF000908281023C4FF10083CCC +S321E000207CE1881039FFFF8203E1881039FFFF820D260078142400E8AA2839FF1016 +S321E0002098083805C46600007E23C4FF1008386100064A23C4FF100838028000F0CA +S321E00020B4000020402248D3FC60000000283C0001000022D822D822D822D853840D +S321E00020D066F423C0FF040010283C0000010623C4FF0400044E712839FF0400043E +S321E00020EC4244484423C4FF040010220006800000001B06816000001E75FC010BA1 +S321E000210823C0FF04001423C1FF04001823C2FF0400044E71200379F9FFFF82100C +S321E000212475F9FFFF82AA73F9FFFF82A89481C8C2D0840C8000E000006C000014AE +S321E000214078142400E8AA2839FF10083805C46700FF5A41F9FF00080008A8000031 +S321E000215C00034E7108E8000000034CD7031F4FEF001C4E7346FC27004FEFFFF4D2 +S321E000217848D7210141F9FF1008004A1066000034A1504E6D214D00082A68000427 +S321E00021942B2F00102B2F000C08ED000500024E652A68000C4BED00182F55001048 +S321E00021B04CD721014FEF000C4E732A6F001010150C00004E670000280C000046D4 +S321E00021CC670002F20C000040670003900C0000F46700041E0C0000F36700049AE3 +S321E00021E84E714AC84E71102D00010C0000736700011A0C0000726700013C0C00F8 +S321E0002204007B670001C008000003660000400C0000606700007E0C00006167005F +S321E0002220007E0C0000626700007C0C0000636700007A0C000064670000780C0042 +S321E000223C0065670000760C000066670000764AC8600000762A6800080C00006819 +S321E0002258670000800C000069670000800C00006A6700007E0C00006B6700007C8C +S321E00022740C00006C6700007A0C00006D670000780C00006E67000078214D0004EC +S321E00022904E65600000702A6F00046000002C2A49600000262A4A600000202A4B3E +S321E00022AC6000001A2A4C600000142A6F00086000000C2A4E600000062A6800044B +S321E00022C8214D000854AF00104CD721014FEF000C4E732F4D000460000024224DC8 +S321E00022E46000001E244D60000018264D60000012284D6000000C2F4D00086000E7 +S321E000230000042C4D54AF00104CD721014FEF000C4E734E6D2F5D000C2F5D00100C +S321E000231C08AF0005000E6600000C4290214D00042A6800084E654CD721014FEF6F +S321E0002338000C4E73102D00020280000007000C4007006700006A0C400600670031 +S321E0002354005A0C4005006700004A0C4004006700003A0C4003006700002A0C400E +S321E000237002006700001A0C4001006700000A4E722000600000364E722100600073 +S321E000238C002E4E722200600000264E7223006000001E4E722400600000164E723E +S321E00023A825006000000E4E722600600000064E72270058AF00104CD721014FEFD3 +S321E00023C4000C4E73302D000202800000F0000800000F660000684A40660000089C +S321E00023E02F17600000C60C401000660000082F01600000B80C40200066000008A3 +S321E00023FC2F02600000AA0C403000660000082F036000009C0C4040006600000892 +S321E00024182F046000008E0C405000660000082F05600000800C4060006600000869 +S321E00024342F06600000722F076000006C0C4080006600000A2F2F00046000005C43 +S321E00024500C409000660000082F096000004E0C40A000660000082F0A6000004027 +S321E000246C0C40B000660000082F0B600000320C40C000660000082F0C60000024FF +S321E00024880C40D0006600000A2F2F0008600000140C40E000660000082F0E6000B5 +S321E00024A400062F2F0004302D000202800000000F219F0C084EB9E00026F24E734A +S321E00024C0102D00010C0000FC670000700C0000C06600000A302F000260000058A8 +S321E00024DC0C0000C16600000830016000004A0C0000C26600000830026000003CDE +S321E00024F80C0000C36600000830036000002E0C0000C466000008300460000020F2 +S321E00025140C0000C5660000083005600000120C0000C66600000830066000000405 +S321E0002530300754AF00106000000A58AF0010302D00020880000D660000104290A2 +S321E000254C4E6D214D00042A6800084E653F40000E4CD721014FEF000C4E73102DF9 +S321E000256800010C0000E7670000862A6F000C4A10670000064BED20000C0000C000 +S321E00025846600000A3F4D00026000005A0C0000C166000008320D6000004C0C006B +S321E00025A000C266000008340D6000003E0C0000C366000008360D600000300C000E +S321E00025BC00C466000008380D600000220C0000C5660000083A0D600000140C001E +S321E00025D800C6660000083C0D600000063E0D4AC854AF00104CD721014FEF000C1F +S321E00025F44E734E714AC84E7154AF0010102D000161000026102D00010C00003042 +S321E00026106500000EF4E84CD721014FEF000C4E73F4284CD721014FEF000C4E73BD +S321E000262C02800000000753806B00002A53806B00002A53806B00002853806B00AF +S321E0002648002653806B00002453806B00002253806B000022204F4E75206F00087F +S321E00026644E7520494E75204A4E75204B4E75204C4E75206F000C4E75204E4E756C +S321E000268054AF0010102D00010C0000406E00002C4EB9E000262C102D00010C009E +S321E000269C00206D00000E54AF0010428030280002D1C0F3104CD721014FEF000C4F +S321E00026B84E730C00007A6700002C4EB9E000262C102D00010C0000606D00000EE8 +S321E00026D454AF0010428030280002D1C0F3504CD721014FEF000C4E73206F001012 +S321E00026F060E24FEFFFF048D7010740C24E7146FC2700428042812040F4E841E83E +S321E000270C001052810C41020066F24281528020400C40000466E64E712039FF1089 +S321E000272808104E7B000246C24CD701074FEF00104E7500004E714AC84E714E7139 +S30DE00027444E7500004E714E7562 +S705E00000001A diff --git a/BaS_codewarrior/firebeeV1/bin/FLASH.elf.xMAP b/BaS_codewarrior/firebeeV1/bin/FLASH.elf.xMAP new file mode 100644 index 0000000..a049441 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/bin/FLASH.elf.xMAP @@ -0,0 +1,87 @@ + + +#>1FE00000 ___Bas_base (linker command file) +#>E0000000 ___BOOT_FLASH (linker command file) +#>00800000 ___BOOT_FLASH_SIZE (linker command file) +#>00000000 ___SDRAM (linker command file) +#>20000000 ___SDRAM_SIZE (linker command file) +#>60000000 ___VRAM (linker command file) +#>FF000000 ___MBAR (linker command file) +#>FF040000 ___MMUBAR (linker command file) +#>FF100000 ___RAMBAR0 (linker command file) +#>00001000 ___RAMBAR0_SIZE (linker command file) +#>FF100FFC ___SUP_SP (linker command file) +#>FF101000 ___RAMBAR1 (linker command file) +#>00001000 ___RAMBAR1_SIZE (linker command file) +#>FF100800 _rt_mod (linker command file) +#>FF100804 _rt_ssp (linker command file) +#>FF100808 _rt_usp (linker command file) +#>FF10080C _rt_vbr (linker command file) +#>FF100810 _rt_cacr (linker command file) +#>FF100814 _rt_asid (linker command file) +#>FF100818 _rt_acr0 (linker command file) +#>FF10081C _rt_acr1 (linker command file) +#>FF100820 _rt_acr2 (linker command file) +#>FF100824 _rt_acr3 (linker command file) +#>FF100828 _rt_mmubar (linker command file) +#>FF10082C _rt_sr (linker command file) +#>FF100830 _d0_save (linker command file) +#>FF100834 _a7_save (linker command file) +#>FF100838 _video_tlb (linker command file) +#>FF10083C _video_sbt (linker command file) +#>FF100844 _rt_mbar (linker command file) +#>FF010000 ___SYS_SRAM (linker command file) +#>00008000 ___SYS_SRAM_SIZE (linker command file) + +# .code + +# .text + E0000000 0000005C .text _startup (startcf.c) + E000005C 0000003C .text init_slt (sysinit.c) + E0000098 00000068 .text init_gpio (sysinit.c) + E0000100 000001C4 .text init_seriel (sysinit.c) + E00002C4 000000F4 .text init_ddram (sysinit.c) + E00003B8 000000DC .text init_fbcs (sysinit.c) + E0000494 00000178 .text init_fpga (sysinit.c) + E000060C 00000058 .text init_video_ddr (sysinit.c) + E0000664 0000009C .text init_PCI (sysinit.c) + E0000700 00000070 .text test_upd720101 (sysinit.c) + E0000770 000003AC .text vdi_on (sysinit.c) + E0000B1C 00000248 .text init_ac97 (sysinit.c) + E0000D64 00000098 .text __initialize_hardware (sysinit.c) + E0000DFC 0000001C .text warte_10ms (BaS.c) + E0000E18 0000001C .text warte_1ms (BaS.c) + E0000E34 0000001C .text warte_100us (BaS.c) + E0000E50 0000001C .text warte_50us (BaS.c) + E0000E6C 0000001C .text warte_10us (BaS.c) + E0000E88 000001FC .text BaS (BaS.c) + E0001084 0000001C .text wait_10ms (sd_card.c) + E00010A0 00000018 .text sd_com (sd_card.c) + E00010B8 00000014 .text sd_get_status (sd_card.c) + E00010CC 00000020 .text sd_rcv_info (sd_card.c) + E00010EC 00000060 .text sd_card_idle (sd_card.c) + E000114C 000004A0 .text sd_card_init (sd_card.c) + E00015EC 000001B0 .text .text (mmu.s) + E00015EC 00000000 .text mmu_init (mmu.s) + E00015EC 000001B0 .text @DummyFn1 (mmu.s) + E0001760 00000000 .text mmutr_miss (mmu.s) + E000179C 000009D4 .text @DummyFn1 (exceptions.s) + E000179C 00000000 .text vec_init (exceptions.s) + E000179C 000009D4 .text .text (exceptions.s) + E0002170 00000000 .text privileg_violation (supervisor.s) + E0002170 000005CA .text .text (supervisor.s) + E00026F2 00000000 .text cpusha (supervisor.s) + E000273C 0000000A .text .text (illegal_instruction.s) + E000273C 0000000A .text @DummyFn3 (illegal_instruction.s) + E0002744 00000000 .text illegal_instruction (illegal_instruction.s) + E0002744 00000000 .text illegal_table_make (illegal_instruction.s) + E0002748 00000004 .text copy_end (last.c) + + +# Memory map: + v_addr p_addr size name + E0000000 E0000000 00000000 .code code + E0000000 E0000000 0000274C .text code + +# Link start time: Sat Aug 14 02:56:27 2010 +# Link end time: Sat Aug 14 02:56:27 2010 diff --git a/BaS_codewarrior/firebeeV1/cfg/DDRAM.cfg b/BaS_codewarrior/firebeeV1/cfg/DDRAM.cfg new file mode 100644 index 0000000..7545850 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/cfg/DDRAM.cfg @@ -0,0 +1,57 @@ +; This is the board specific initialization file used in CodeWarrior Embedded product for ColdFire architecture +; $RCSfile: M5475EVB.cfg,v $ +; $Revision: 1.4 $ $Date: 2008/01/09 11:46:41 $ +; Please do NOT modifiy this file. If you wish to modify this file, please keep a backup copy of this file. + +ResetHalt + +;Set VBR - debugger must know this in order +; to do exception capture +writecontrolreg 0x0801 0x00000000 + +; If MBAR changes all following writes must change +; and if a memory configuration file is used, +; the reserved areas in the register block must +; change also. +;Turn on MBAR at 0xFF00_0000 +writecontrolreg 0x0C0F 0xFF000000 + +;Turn on RAMBAR0 at address FF10_0000 +writecontrolreg 0x0C04 0xFF100035 + +;Turn on RAMBAR1 at address FF10_1000 +writecontrolreg 0x0C05 0xFF101035 + +;Init CS0 (BootFLASH @ E000_0000 - E07F_FFFF 8Mbytes) +writemem.l 0xFF000500 0xE0000000; +writemem.l 0xFF000508 0x00101980; 16-bit port +writemem.l 0xFF000504 0x007F0001; + +;SDRAM Initialization @ 0000_0000 - 1FFF_FFFF 512Mbytes +writemem.l 0xFF000004 0x000002AA; SDRAMDS configuration +writemem.l 0xFF000020 0x0000001A; SDRAM CS0 configuration (128Mbytes 0000_0000 - 07FF_FFFF) +writemem.l 0xFF000024 0x0800001A; SDRAM CS1 configuration (128Mbytes 0800_0000 - 0FFF_FFFF) +writemem.l 0xFF000028 0x1000001A; SDRAM CS2 configuration (128Mbytes 1000_0000 - 07FF_FFFF) +writemem.l 0xFF00002C 0x1800001A; SDRAM CS3 configuration (128Mbytes 1800_0000 - 1FFF_FFFF) +;writemem.l 0xFF000108 0x73611730; SDCFG1 +writemem.l 0xFF000108 0x53611730; SDCFG1 +;writemem.l 0xFF00010C 0x46770000; SDCFG2 +writemem.l 0xFF00010C 0x24730000; SDCFG2 + +;writemem.l 0xFF000104 0xE10D0002; SDCR + IPALL +writemem.l 0xFF000104 0xE10F0002; SDCR + IPALL +writemem.l 0xFF000100 0x40010000; SDMR (write to LEMR) +;writemem.l 0xFF000100 0x048D0000; SDMR (write to LMR) +writemem.l 0xFF000100 0x04890000; SDMR (write to LMR) +;writemem.l 0xFF000104 0xE10D0002; SDCR + IPALL +writemem.l 0xFF000104 0xE10F0002; SDCR + IPALL +;writemem.l 0xFF000104 0xE10D0004; SDCR + IREF (first refresh) +writemem.l 0xFF000104 0xE10F0004; SDCR + IREF (first refresh) +;writemem.l 0xFF000104 0xE10D0004; SDCR + IREF (second refresh) +writemem.l 0xFF000104 0xE10F0004; SDCR + IREF (first refresh) +;writemem.l 0xFF000100 0x008D0000; SDMR (write to LMR) +writemem.l 0xFF000100 0x00890000; SDMR (write to LMR) +;writemem.l 0xFF000104 0x71100F00; SDCR (lock SDMR and enable refresh) +writemem.l 0xFF000104 0x71100F00; SDCR (lock SDMR and enable refresh) + +delay 1000 diff --git a/BaS_codewarrior/firebeeV1/cfg/DDRAM.mem b/BaS_codewarrior/firebeeV1/cfg/DDRAM.mem new file mode 100644 index 0000000..1bc400b --- /dev/null +++ b/BaS_codewarrior/firebeeV1/cfg/DDRAM.mem @@ -0,0 +1,47 @@ +// Memory Configuration File +// +// Description: +// A memory configuration file contains commands that define the legally accessible +// areas of memory for your specific board. Useful for example when the debugger +// tries to display the content of a "char *" variable, that has not yet been initialized. +// In this case the debugger may try to read from a bogus address, which could cause a +// bus error. +// +// Board: +// LogicPD COLDARI1 +// +// Reference: +// MCF5475RM.pdf + + +// All reserved ranges read back 0xBABA... +reservedchar 0xBA + +address MBAR_BASE 0xFF000000 +address MMUBAR_BASE 0xFF040000 + +usederivative "MCF5475" + +// Memory Map: +// ---------------------------------------------------------------------- +range 0x00000000 0x1FFFFFFF 4 ReadWrite // 512MB DDR SDRAM +reserved 0x20000000 0x5FFFFFFF + +range 0x60000000 0x7FFFFFFF 4 ReadWrite + +range 0x80000000 0xCFFFFFFF 4 ReadWrite + +range 0xD0000000 0xFBFFFFFF 4 ReadWrite + +reserved 0xFC000000 $MBAR_BASE-1 + + $MBAR_BASE $MBAR_BASE+0x3FFFF // Memory Mapped Registers +range $MBAR_BASE+0x10000 $MBAR_BASE+0x17FFC 4 ReadWrite // 32K Internal SRAM + +range $MMUBAR_BASE $MMUBAR_BASE+0xFFFF +reserved $MMUBAR_BASE+1x0000 0xFF0FFFFF // Added to fill gap in MMR + +range 0xFF100000 0xFF100FFF 4 ReadWrite // 4K SRAM0 (RAMBAR0) +range 0xFF101000 0xFFFFFFFF 4 ReadWrite // 4K SRAM1 (RAMBAR1) + + diff --git a/BaS_codewarrior/firebeeV1/cfg/flash.cfg b/BaS_codewarrior/firebeeV1/cfg/flash.cfg new file mode 100644 index 0000000..cfa2772 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/cfg/flash.cfg @@ -0,0 +1,11 @@ +; This is the board specific initialization file used in CodeWarrior Embedded product for ColdFire architecture +; $RCSfile: M5475EVB.cfg,v $ +; $Revision: 1.4 $ $Date: 2008/01/09 11:46:41 $ +; Please do NOT modifiy this file. If you wish to modify this file, please keep a backup copy of this file. + + +;Init CS0 (BootFLASH @ FE00_0000 - FE7F_FFFF 8Mbytes) +writemem.l 0xFF000500 0xFE000000; +writemem.l 0xFF000508 0x00101980; 16-bit port +writemem.l 0xFF000504 0x007F0001; + diff --git a/BaS_codewarrior/firebeeV1/cfg/mem.cfg b/BaS_codewarrior/firebeeV1/cfg/mem.cfg new file mode 100644 index 0000000..20830c0 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/cfg/mem.cfg @@ -0,0 +1,48 @@ +; This is the board specific initialization file used in CodeWarrior Embedded product for ColdFire architecture +; $RCSfile: M5475EVB.cfg,v $ +; $Revision: 1.4 $ $Date: 2008/01/09 11:46:41 $ +; Please do NOT modifiy this file. If you wish to modify this file, please keep a backup copy of this file. + +ResetHalt + +;Set VBR - debugger must know this in order +; to do exception capture +writecontrolreg 0x0801 0x00000000 + +; If MBAR changes all following writes must change +; and if a memory configuration file is used, +; the reserved areas in the register block must +; change also. +;Turn on MBAR at 0xFF00_0000 +writecontrolreg 0x0C0F 0xFF000000 + +;Turn on RAMBAR0 at address FF10_0000 +writecontrolreg 0x0C04 0xFF100035 + +;Turn on RAMBAR1 at address FF10_1000 +writecontrolreg 0x0C05 0xFF101035 + +;Init CS0 (BootFLASH @ E000_0000 - E07F_FFFF 8Mbytes) +writemem.l 0xFF000500 0xE0000000; +writemem.l 0xFF000508 0x00001180; 16-bit port +writemem.l 0xFF000504 0x007F0001; + +;SDRAM Initialization @ 0000_0000 - 1FFF_FFFF 512Mbytes +writemem.l 0xFF000004 0x000002AA; SDRAMDS configuration +writemem.l 0xFF000020 0x0000001A; SDRAM CS0 configuration (128Mbytes 0000_0000 - 07FF_FFFF) +writemem.l 0xFF000024 0x0800001A; SDRAM CS1 configuration (128Mbytes 0800_0000 - 0FFF_FFFF) +writemem.l 0xFF000028 0x1000001A; SDRAM CS2 configuration (128Mbytes 1000_0000 - 17FF_FFFF) +writemem.l 0xFF00002C 0x1800001A; SDRAM CS3 configuration (128Mbytes 1800_0000 - 1FFF_FFFF) +writemem.l 0xFF000108 0x53722938; SDCFG1 +writemem.l 0xFF00010C 0x24330000; SDCFG2 + +writemem.l 0xFF000104 0xE10F0002; SDCR + IPALL +writemem.l 0xFF000100 0x40010000; SDMR (write to LEMR) +writemem.l 0xFF000100 0x05890000; SDRM (write to LMR) +writemem.l 0xFF000104 0xE10F0002; SDCR + IPALL +writemem.l 0xFF000104 0xE10F0004; SDCR + IREF (first refresh) +writemem.l 0xFF000104 0xE10F0004; SDCR + IREF (second refresh) +writemem.l 0xFF000100 0x01890000; SDMR (write to LMR) +writemem.l 0xFF000104 0x710F0F00; SDCR (lock SDMR and enable refresh) + +delay 1000 diff --git a/BaS_codewarrior/firebeeV1/cfg/mem.mem b/BaS_codewarrior/firebeeV1/cfg/mem.mem new file mode 100644 index 0000000..46bda65 --- /dev/null +++ b/BaS_codewarrior/firebeeV1/cfg/mem.mem @@ -0,0 +1,38 @@ +// Memory Configuration File +// +// Description: +// A memory configuration file contains commands that define the legally accessible +// areas of memory for your specific board. Useful for example when the debugger +// tries to display the content of a "char *" variable, that has not yet been initialized. +// In this case the debugger may try to read from a bogus address, which could cause a +// bus error. +// +// Board: +// LogicPD COLDARI1 +// +// Reference: +// MCF5475RM.pdf + + +// All reserved ranges read back 0xBABA... +reservedchar 0xBA + +address MBAR_BASE 0xFF000000 +address MMUBAR_BASE 0xFF040000 + +usederivative "MCF5475" + +// Memory Map: +// ---------------------------------------------------------------------- +range 0x00000000 0x1FFFFFFF 4 ReadWrite // 512MB DDR SDRAM +reserved 0x20000000 $MBAR_BASE-1 + + $MBAR_BASE $MBAR_BASE+0x3FFFF 4 ReadWrite // Memory Mapped Registers +range $MBAR_BASE+0x10000 $MBAR_BASE+0x17FFC 4 ReadWrite // 32K Internal SRAM +reserved $MBAR_BASE+0x17FFD $MBAR_BASE+0x1FFBF + + $MMUBAR_BASE $MMUBAR_BASE+0x001B +reserved $MMUBAR_BASE+0x001C 0xFF0FFFFF + +range 0xFF100000 0xFF100FFF 4 ReadWrite // 4K SRAM0 (RAMBAR0) +range 0xFF101000 0xFF101FFF 4 ReadWrite // 4K SRAM1 (RAMBAR1) diff --git a/BaS_codewarrior/firebeeV1/firebeeV1.mcp b/BaS_codewarrior/firebeeV1/firebeeV1.mcp new file mode 100644 index 0000000000000000000000000000000000000000..10eb377339e626f1a3a56518c42bb387e786d4aa GIT binary patch literal 110530 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 literal 0 HcmV?d00001 diff --git a/BaS_codewarrior/firebeeV1/firebeeV1_Data/CWSettingsWindows.stg b/BaS_codewarrior/firebeeV1/firebeeV1_Data/CWSettingsWindows.stg new file mode 100644 index 0000000000000000000000000000000000000000..bc8b5549ec01843ef2e78f94371de06cac440b85 GIT binary patch literal 4712 zcmeHLO=uHA6n?wg)E~rFDR`-}h)57o8=;6Gk~B6gZ8cbveJ=`zwpJoK+A7 zJ>}TVnm$>sH%M}kw9RH!SRJH{G#!V5Y|bf(24&|Qkt^sjj(pfl(k60x#Na`*M%9Ip zX+uxvEKwoDZaStgazz2^MRB*&9R9wLfxngk+!j3>z)=nSGwAvL$#w}%-Z7`(M;L_V z(Rw|PsDge^;4h-z8~9=Odj=%m%p;!%=8(B&?j_G~|CsT4($Vhn3Rrln^Cr(N*T^+< zeOxEk&2tfoDNnU!H5OUN@Fxt@^1>n-{EQe{x_rA0Ax&gI(J|_y9&J|TWc)QYj_tM> zfUD#2DTNLP9@6v5nRsICIw_0}%@`TQM~52E%zT&jguMbo_E)0tG3$sL`H8)N8+ zB$7;K;(Up>FKlnH#i4)H5rwiIubXoV{1oL?LJJuP83-BJ2?pc?cqej&IsRP+R%GdT zdMb3{tQ`KIy+$#79x21#-(x%7pwVgi)bpJ-dbf)l1f8rfsHHGEw8V?HmY7Fe8cn4M z<)rpry%%BOJT-h_0!pARs`-j={9Ud_Z-z=4o z$=_7-dkhv_PNU8`re#s+m?g|ry6{y9vn51XU3e6dDGI#Yg{Oh*z>C7E(E}HknQt}V z=L7u5JJ*v>Jo6Yh^Uv|GHeJtW{0Z<|0iJy0a>{Ac#kCjH|tCExq~yobjIJTp{Ij>gIiT?=u5Dacwfyi9Z8= bG^ppR6yX@(0WR~%+5wXZ{CE)mr6c|q$d=N6 literal 0 HcmV?d00001 diff --git a/BaS_codewarrior/firebeeV1/firebeeV1_Data/DDRAM/TargetDataWindows.tdt b/BaS_codewarrior/firebeeV1/firebeeV1_Data/DDRAM/TargetDataWindows.tdt new file mode 100644 index 0000000000000000000000000000000000000000..5e7f029773a43e31c50bd703ab24da8a5c35a94f GIT binary patch literal 1076498 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%0Au6|Ca3BzZHly!@o7l>l6(; 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